Mercurial > repos > blastem
comparison genesis.c @ 1444:14a2834d010c
Save/restore mapper state in native save states
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 27 Aug 2017 18:15:00 -0700 |
parents | 7d4483944d4d |
children | 349d50930c03 |
comparison
equal
deleted
inserted
replaced
1443:93c1b056ccdd | 1444:14a2834d010c |
---|---|
79 start_section(buf, SECTION_SOUND_RAM); | 79 start_section(buf, SECTION_SOUND_RAM); |
80 save_int8(buf, Z80_RAM_BYTES / 1024); | 80 save_int8(buf, Z80_RAM_BYTES / 1024); |
81 save_buffer8(buf, gen->zram, Z80_RAM_BYTES); | 81 save_buffer8(buf, gen->zram, Z80_RAM_BYTES); |
82 end_section(buf); | 82 end_section(buf); |
83 | 83 |
84 //TODO: mapper state | 84 cart_serialize(&gen->header, buf); |
85 } | 85 } |
86 | 86 |
87 static void ram_deserialize(deserialize_buffer *buf, void *vgen) | 87 static void ram_deserialize(deserialize_buffer *buf, void *vgen) |
88 { | 88 { |
89 genesis_context *gen = vgen; | 89 genesis_context *gen = vgen; |
122 register_section_handler(buf, (section_handler){.fun = io_deserialize, .data = gen->io.ports}, SECTION_SEGA_IO_1); | 122 register_section_handler(buf, (section_handler){.fun = io_deserialize, .data = gen->io.ports}, SECTION_SEGA_IO_1); |
123 register_section_handler(buf, (section_handler){.fun = io_deserialize, .data = gen->io.ports + 1}, SECTION_SEGA_IO_2); | 123 register_section_handler(buf, (section_handler){.fun = io_deserialize, .data = gen->io.ports + 1}, SECTION_SEGA_IO_2); |
124 register_section_handler(buf, (section_handler){.fun = io_deserialize, .data = gen->io.ports + 2}, SECTION_SEGA_IO_EXT); | 124 register_section_handler(buf, (section_handler){.fun = io_deserialize, .data = gen->io.ports + 2}, SECTION_SEGA_IO_EXT); |
125 register_section_handler(buf, (section_handler){.fun = ram_deserialize, .data = gen}, SECTION_MAIN_RAM); | 125 register_section_handler(buf, (section_handler){.fun = ram_deserialize, .data = gen}, SECTION_MAIN_RAM); |
126 register_section_handler(buf, (section_handler){.fun = zram_deserialize, .data = gen}, SECTION_SOUND_RAM); | 126 register_section_handler(buf, (section_handler){.fun = zram_deserialize, .data = gen}, SECTION_SOUND_RAM); |
127 register_section_handler(buf, (section_handler){.fun = cart_deserialize, .data = gen}, SECTION_MAPPER); | |
127 //TODO: mapper state | 128 //TODO: mapper state |
128 while (buf->cur_pos < buf->size) | 129 while (buf->cur_pos < buf->size) |
129 { | 130 { |
130 load_section(buf); | 131 load_section(buf); |
131 } | 132 } |
1265 gen->vdp->vsram[i] = rand(); | 1266 gen->vdp->vsram[i] = rand(); |
1266 } | 1267 } |
1267 } | 1268 } |
1268 setup_io_devices(config, rom, &gen->io); | 1269 setup_io_devices(config, rom, &gen->io); |
1269 | 1270 |
1270 gen->save_type = rom->save_type; | 1271 gen->mapper_type = rom->mapper_type; |
1271 gen->save_type = rom->save_type; | 1272 gen->save_type = rom->save_type; |
1272 if (gen->save_type != SAVE_NONE) { | 1273 if (gen->save_type != SAVE_NONE) { |
1273 gen->save_ram_mask = rom->save_mask; | 1274 gen->save_ram_mask = rom->save_mask; |
1274 gen->save_size = rom->save_size; | 1275 gen->save_size = rom->save_size; |
1275 gen->save_storage = rom->save_buffer; | 1276 gen->save_storage = rom->save_buffer; |