# HG changeset patch # User Michael Pavone # Date 1504061018 25200 # Node ID f284ad74afe1742d40c9f53f861fd8b31bf9ec9d # Parent 9c65819afec3cf98bf15a0bebdd69cd93f94a84e Make initial bank register state stored in bank_regs match what is put in to mem_pointers for the sega/SSF2 mapper. Invalidate RAM code ranges on RAM deserialization diff -r 9c65819afec3 -r f284ad74afe1 genesis.c --- a/genesis.c Tue Aug 29 19:42:44 2017 -0700 +++ b/genesis.c Tue Aug 29 19:43:38 2017 -0700 @@ -93,6 +93,7 @@ fatal_error("State has a RAM size of %d bytes", ram_size * 2); } load_buffer16(buf, gen->work_ram, ram_size); + m68k_invalidate_code_range(gen->m68k, 0xE00000, 0x1000000); } static void zram_deserialize(deserialize_buffer *buf, void *vgen) @@ -103,6 +104,7 @@ fatal_error("State has a Z80 RAM size of %d bytes", ram_size); } load_buffer8(buf, gen->zram, ram_size); + z80_invalidate_code_range(gen->z80, 0, 0x4000); } static void update_z80_bank_pointer(genesis_context *gen) @@ -1315,6 +1317,14 @@ gen->m68k->mem_pointers[rom->map[i].ptr_index] = rom->map[i].buffer; } } + + if (gen->mapper_type == MAPPER_SEGA) { + //initialize bank registers + for (int i = 1; i < sizeof(gen->bank_regs); i++) + { + gen->bank_regs[i] = i; + } + } return gen; }