GB: Better handling of SRAM and ROM unloading/reloading
This commit is contained in:
parent
360a163ad6
commit
10eb794cfd
@ -233,7 +233,7 @@ static void GBSramDeinit(struct GB* gb) {
|
|||||||
} else if (gb->memory.sram) {
|
} else if (gb->memory.sram) {
|
||||||
mappedMemoryFree(gb->memory.sram, gb->sramSize);
|
mappedMemoryFree(gb->memory.sram, gb->sramSize);
|
||||||
}
|
}
|
||||||
gb->memory.sram = 0;
|
gb->memory.sram = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GBLoadSave(struct GB* gb, struct VFile* vf) {
|
bool GBLoadSave(struct GB* gb, struct VFile* vf) {
|
||||||
@ -342,6 +342,7 @@ void GBResizeSram(struct GB* gb, size_t size) {
|
|||||||
mappedMemoryFree(gb->memory.sram, gb->sramSize);
|
mappedMemoryFree(gb->memory.sram, gb->sramSize);
|
||||||
} else {
|
} else {
|
||||||
memset(newSram, 0xFF, size);
|
memset(newSram, 0xFF, size);
|
||||||
|
gb->sramSize = size;
|
||||||
}
|
}
|
||||||
gb->memory.sram = newSram;
|
gb->memory.sram = newSram;
|
||||||
}
|
}
|
||||||
@ -438,6 +439,8 @@ void GBUnloadROM(struct GB* gb) {
|
|||||||
gb->memory.rom = NULL;
|
gb->memory.rom = NULL;
|
||||||
gb->memory.mbcType = GB_MBC_AUTODETECT;
|
gb->memory.mbcType = GB_MBC_AUTODETECT;
|
||||||
gb->isPristine = false;
|
gb->isPristine = false;
|
||||||
|
gb->pristineRomSize = 0;
|
||||||
|
gb->memory.romSize = 0;
|
||||||
|
|
||||||
if (!gb->sramDirty) {
|
if (!gb->sramDirty) {
|
||||||
gb->sramMaskWriteback = false;
|
gb->sramMaskWriteback = false;
|
||||||
@ -447,6 +450,7 @@ void GBUnloadROM(struct GB* gb) {
|
|||||||
if (gb->sramRealVf) {
|
if (gb->sramRealVf) {
|
||||||
gb->sramRealVf->close(gb->sramRealVf);
|
gb->sramRealVf->close(gb->sramRealVf);
|
||||||
}
|
}
|
||||||
|
gb->sramSize = 0;
|
||||||
gb->sramRealVf = NULL;
|
gb->sramRealVf = NULL;
|
||||||
gb->sramVf = NULL;
|
gb->sramVf = NULL;
|
||||||
if (gb->memory.cam && gb->memory.cam->stopRequestImage) {
|
if (gb->memory.cam && gb->memory.cam->stopRequestImage) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user