Anuncios Google

Ayuda FAT[RESUELTO]

Hola, tengo este codigo, y parece que funciona, pero a la hora de la verdad las monedas no aparecen al encender al ds, ¿Alguien ve el erroe, o lo que falta? A por cierto el archivo ,me compila correctamente y solamente he puesto la parte del FAT

// Includes
#include <PA9.h>      
#include <fat.h>   
 
u32 monedas;
int main(int argc, char ** argv)
{
	PA_Init();    // Initializes PA_Lib
	PA_InitVBL(); // Initializes a standard VBL
 
if(fatInitDefault()==0){
   PA_OutputSimpleText(1,0,0,"FAT error");
while(1){		
   PA_WaitForVBL();}
	}
 
 
if(access("RodixsTic.sav") != 1){
 FILE * salvado = fopen("RodixsTic.sav","w+");  
}
if(access("RodixsTic.sav") == 1){
FILE * salvado = fopen("RodixsTic.sav","rb");
fread(&monedas,4,sizeof(monedas), salvado);
fclose(salvado);
}
 
	while (1)
	{
 
	   if(Pad.Newpress.A){
	      FILE * salvado = fopen("RodixsTic.sav","wb");
    fwrite(&monedas,4,sizeof(monedas), salvado);
fclose(salvado);
	   }  	PA_WaitForVBL();
	}
 
 
 
 
	return 0;
 
 
}


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de eglomer

El problema probablemente lo

El problema probablemente lo tengas aquí:

 

if(access("RodixsTic.sav") != 1){
 FILE * salvado = fopen("RodixsTic.sav","w+");  
}
if(access("RodixsTic.sav") == 1){
FILE * salvado = fopen("RodixsTic.sav","rb");
fread(&monedas,4,sizeof(monedas), salvado);
fclose(salvado);
}


Deberías usar if-else, y también te recomiendo que cierres el archivo una vez creado por primera vez, porque el resto de veces lo intentas abrir y puede que te encuentres con que ya está abierto:
if(access("RodixsTic.sav") != 1){
 FILE * salvado = fopen("RodixsTic.sav","w+");
 fclose(salvado);
}else{
 FILE * salvado = fopen("RodixsTic.sav","rb");
fread(&monedas,4,sizeof(monedas), salvado);
fclose(salvado);
}


¡Saludos!

 


Proyectos en curso

El Taller de Eglomer

Imagen de Cheleon

Lo siento, pero despues de

Lo siento, pero despues de ponerlo como dices tu siguen sin guardarse las monedas...

Imagen de eglomer

Claro. Es que no has puesto

Claro. Es que no has puesto ningún valor a monedas xDD  Prueba a ponerle algún valor antes de guardar los datos en el archivo.


Proyectos en curso

El Taller de Eglomer

Imagen de Cheleon

si que le doy valor, juego,

si que le doy valor, juego, consigo unas monedas, guardo con A, y cuando la enciendo monedas sigue siendo 0

Imagen de eglomer

fread(&monedas,4,sizeof(moned

fread(&monedas,4,sizeof(monedas), salvado);
Cambia el 4 por un 1 a ver.

Imagen de exterminator

Digo yo

y sólo digo, porque FAT no es mi fuerte. ¿La función para escribir no sería fwrite? Porque estás usando fread...

Salu2

Imagen de Cheleon

sigue sin guardar...

sigue sin guardar...

Imagen de eglomer

Lo has cambiado también en el

Lo has cambiado también en el fwrite? 

 

De todas formas, podrías comprobar si se abren bien los archivos o si dan problemas con un:

if (salvado == NULL){

 // Mensaje de error

}


Proyectos en curso

El Taller de Eglomer

Imagen de Aguilera_87

prueba con esto a ver si funciona

// Includes
#include <PA9.h>      
#include <fat.h>   
 
 
FILE * salvado;
u32 monedas;
 
int main(int argc, char ** argv)
{
	PA_Init();    // Initializes PA_Lib
	PA_InitVBL(); // Initializes a standard VBL
 
	fatInitDefault();
	PA_FatInitAllBuffers();
 
 
if(access("RodixsTic.sav")){
 salvado = fopen("RodixsTic.sav","wb");
monedas=0;
fclose(salvado);  
}
else{
 salvado = fopen("RodixsTic.sav","rb");
fread(&monedas,1,sizeof(monedas), salvado);
fclose(salvado);
}
 
	while (1)
	{
 
	   if(Pad.Newpress.A){
	      salvado = fopen("RodixsTic.sav","wb");
    fwrite(&monedas,1,sizeof(monedas), salvado);
fclose(salvado);
	   }  	PA_WaitForVBL();
	}
 
 
 
 
	return 0;
 
 
}


Imagen de Cheleon

:D:D:D:D:D:D:D:D

Risatoooooooooomaaaaaaaaa si tio gracias, te quiero, gracias por resolverme la duda, joder, ya se que borraran mi comentario por poner esto pero eres el EDITADO AMO gracias por conseguir que se guarden las monedas, no sabes la alegria que me he llevado al ver que se han guardado, estoy escribiendo este comentario con una sonrisa de lado a lado

EDITADO: Si sabemos lo que pasará, es mejor prevenir que curar...

Imagen de Aguilera_87

de nada

si quisieras guardar mas de un dato en tu sav podrias hacerlo asi y guardarias y leerias todo en el .sav de golpe:

typedef struct
{
         u16 tiempo; 
	 s32 monedas;
	 u16 idioma;
	 char nombre[30];
         //tantas variables como necesites para tu sav
 
} infosave; 
 
infosave sav;
 
 
 
//sav.monedas=0; sav.idioma=2; .....

solo tendrias que cambiar en los fread y fwrite monedas por sav o el nombre que le dieses a la estructura "fwrite(&sav,1,sizeof(sav), salvado);"


Imagen de Cheleon

lo siento mucho... me deje

lo siento mucho... me deje llevar por la emoción del momento

Imagen de Cheleon

si, lo he cambiado en los

si, lo he cambiado en los dos, "ahora" comprobare si se habre bien el archivo

Imagen de kNightFox

Se te ha ocurrido abrir desde

Se te ha ocurrido abrir desde el pc el archivo que generas con el notepad, a ver si hay los datos que se supone que grabas?

Imagen de Cheleon

si, si que lo pense, guardar

si, si que lo pense, guardar en un archivo .txt y abrirlo para verlo, pero solo me salen cuadraditos

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.