There has been an issue when using Goomba Color where it doesn't save the settings for games. For instance, with the Legend of Zelda, Oracle of Ages/Seasons games, they have a GBA enhancement to them, however in order to use them, I always have to change the setting to "Identify as GBA", and then reset in the IGM to get it to reload.
I've looked over some of the source, and apparently Goomba is designed to be able to save the config into the sram file, however it looks like it's coded to only do this if running from the MoviePlayer GBA cart. I'm unsure how Omega handles passing the sram file to Goomba and how it parses it, but if it does it as expected, then what would it take to get it to also save the changed settings instead of always reverting back to default?
The key parts that seem to reference getting the configurations is located in main.c, starting at line 425, and seems to only get used if MOVIEPLAYER is defined in main.h, as well as a few other places where MOVIEPLAYER must be defined.
I've looked over some of the source, and apparently Goomba is designed to be able to save the config into the sram file, however it looks like it's coded to only do this if running from the MoviePlayer GBA cart. I'm unsure how Omega handles passing the sram file to Goomba and how it parses it, but if it does it as expected, then what would it take to get it to also save the changed settings instead of always reverting back to default?
The key parts that seem to reference getting the configurations is located in main.c, starting at line 425, and seems to only get used if MOVIEPLAYER is defined in main.h, as well as a few other places where MOVIEPLAYER must be defined.
Code:
int get_saved_sram_CF(char* sramname)
{
if(g_cartflags&2 && g_rammask!=0)
{ //if rom uses SRAM
File file;
file=FAT_fopen(sramname,"r");
if (file!=NO_FILE)
{
#if !RESIZABLE
#define XGB_sram XGB_SRAM
#endif
FAT_fread(XGB_sram,1,g_rammask+1,file);
FAT_fclose(file);
return 1;
}
return 2;
}
else
{
return 0;
}
}
int save_sram_CF(char* sramname)
{
if(g_cartflags&2 && g_rammask!=0)
{ //if rom uses SRAM
File file;
file=FAT_fopen(sramname,"r+");
if (file==NO_FILE)
file=FAT_fopen(sramname,"w");
if (file!=NO_FILE)
{
FAT_fwrite(XGB_sram,1,g_rammask+1,file);
FAT_fclose(file);
}
return 1;
}
return 0;
}
#endif
Code:
#if MOVIEPLAYER
int get_saved_sram_CF(char* sramname);
int save_sram_CF(char* sramname);
#endif