diff options
author | Michael Pavone <pavone@retrodev.com> | 2017-01-10 09:29:28 -0800 |
---|---|---|
committer | Michael Pavone <pavone@retrodev.com> | 2017-01-10 09:29:28 -0800 |
commit | 588d69091052c3c27762eb73ab50ad0566a08e62 (patch) | |
tree | ad856b8d92a5cb9f423a85945c830b7b9b9e48c0 /genesis.c | |
parent | 7150bf02fb665c63a494def0738c8fc0ae41d27b (diff) |
Fix crash regression for games with some kind of mapper functionality
Diffstat (limited to 'genesis.c')
-rw-r--r-- | genesis.c | 13 |
1 files changed, 10 insertions, 3 deletions
@@ -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; } |