summaryrefslogtreecommitdiff
path: root/genesis.c
diff options
context:
space:
mode:
authorMichael Pavone <pavone@retrodev.com>2017-08-27 18:15:00 -0700
committerMichael Pavone <pavone@retrodev.com>2017-08-27 18:15:00 -0700
commitc96509a56b532eb7aff8e589b5e76a2b7c9e943f (patch)
tree160007e470da63c1d6c9761915840937c1c0476d /genesis.c
parentcae76760c6f9167b71b5035326c74d7cecd3c3e8 (diff)
Save/restore mapper state in native save states
Diffstat (limited to 'genesis.c')
-rw-r--r--genesis.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/genesis.c b/genesis.c
index 8195ecc..8d2bebb 100644
--- a/genesis.c
+++ b/genesis.c
@@ -81,7 +81,7 @@ void genesis_serialize(genesis_context *gen, serialize_buffer *buf, uint32_t m68
save_buffer8(buf, gen->zram, Z80_RAM_BYTES);
end_section(buf);
- //TODO: mapper state
+ cart_serialize(&gen->header, buf);
}
static void ram_deserialize(deserialize_buffer *buf, void *vgen)
@@ -124,6 +124,7 @@ void genesis_deserialize(deserialize_buffer *buf, genesis_context *gen)
register_section_handler(buf, (section_handler){.fun = io_deserialize, .data = gen->io.ports + 2}, SECTION_SEGA_IO_EXT);
register_section_handler(buf, (section_handler){.fun = ram_deserialize, .data = gen}, SECTION_MAIN_RAM);
register_section_handler(buf, (section_handler){.fun = zram_deserialize, .data = gen}, SECTION_SOUND_RAM);
+ register_section_handler(buf, (section_handler){.fun = cart_deserialize, .data = gen}, SECTION_MAPPER);
//TODO: mapper state
while (buf->cur_pos < buf->size)
{
@@ -1267,7 +1268,7 @@ genesis_context *alloc_init_genesis(rom_info *rom, void *main_rom, void *lock_on
}
setup_io_devices(config, rom, &gen->io);
- gen->save_type = rom->save_type;
+ gen->mapper_type = rom->mapper_type;
gen->save_type = rom->save_type;
if (gen->save_type != SAVE_NONE) {
gen->save_ram_mask = rom->save_mask;