From 588d69091052c3c27762eb73ab50ad0566a08e62 Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Tue, 10 Jan 2017 09:29:28 -0800 Subject: Fix crash regression for games with some kind of mapper functionality --- genesis.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'genesis.c') diff --git a/genesis.c b/genesis.c index 6343986..9644fbe 100644 --- a/genesis.c +++ b/genesis.c @@ -961,13 +961,12 @@ genesis_context *alloc_init_genesis(rom_info *rom, void *main_rom, void *lock_on gen->save_storage = NULL; } + //This must happen before we generate memory access functions in init_m68k_opts for (int i = 0; i < rom->map_chunks; i++) { - if (rom->map[i].flags & MMAP_PTR_IDX) { - gen->m68k->mem_pointers[rom->map[i].ptr_index] = rom->map[i].buffer; - } if (rom->map[i].start == 0xE00000) { rom->map[i].buffer = gen->work_ram; + break; } } @@ -978,6 +977,14 @@ genesis_context *alloc_init_genesis(rom_info *rom, void *main_rom, void *lock_on gen->m68k = init_68k_context(opts, NULL); gen->m68k->system = gen; opts->address_log = (system_opts & OPT_ADDRESS_LOG) ? fopen("address.log", "w") : NULL; + + //This must happen after the 68K context has been allocated + for (int i = 0; i < rom->map_chunks; i++) + { + if (rom->map[i].flags & MMAP_PTR_IDX) { + gen->m68k->mem_pointers[rom->map[i].ptr_index] = rom->map[i].buffer; + } + } return gen; } -- cgit v1.2.3