void GBASavedataForceType(struct GBASavedata* savedata, enum SavedataType type) { if (savedata->type == type) { return; } if (savedata->type != SAVEDATA_AUTODETECT) { struct VFile* vf = savedata->vf; int mapMode = savedata->mapMode; bool maskWriteback = savedata->maskWriteback; GBASavedataDeinit(savedata); GBASavedataInit(savedata, vf); savedata->mapMode = mapMode; savedata->maskWriteback = maskWriteback; } switch (type) { case SAVEDATA_FLASH512: case SAVEDATA_FLASH1M: savedata->type = type; GBASavedataInitFlash(savedata); break; case SAVEDATA_EEPROM: case SAVEDATA_EEPROM512: GBASavedataInitEEPROM(savedata); break; case SAVEDATA_SRAM: GBASavedataInitSRAM(savedata); break; case SAVEDATA_FORCE_NONE: savedata->type = SAVEDATA_FORCE_NONE; break; case SAVEDATA_AUTODETECT: break; } }
void GBASavedataForceType(struct GBASavedata* savedata, enum SavedataType type, bool realisticTiming) { if (savedata->type != SAVEDATA_AUTODETECT) { struct VFile* vf = savedata->vf; GBASavedataDeinit(savedata); GBASavedataInit(savedata, vf); } switch (type) { case SAVEDATA_FLASH512: case SAVEDATA_FLASH1M: savedata->type = type; GBASavedataInitFlash(savedata, realisticTiming); break; case SAVEDATA_EEPROM: GBASavedataInitEEPROM(savedata, realisticTiming); break; case SAVEDATA_SRAM: GBASavedataInitSRAM(savedata); break; case SAVEDATA_FORCE_NONE: savedata->type = SAVEDATA_FORCE_NONE; break; case SAVEDATA_AUTODETECT: break; } }