# HG changeset patch # User Mike Pavone # Date 1591081199 25200 # Node ID 71732f2f6f424bae1eb59e6b76f790ee09a06e8f # Parent a042e046f7f2b84d1eb604ed5383ae9ebf7e7f4f Fix handling of unmapped reads/writes to the cart/expansion port region diff -r a042e046f7f2 -r 71732f2f6f42 genesis.c --- a/genesis.c Sat May 16 10:36:58 2020 -0700 +++ b/genesis.c Mon Jun 01 23:59:59 2020 -0700 @@ -1089,7 +1089,7 @@ { m68k_context *context = vcontext; genesis_context *gen = context->system; - if ((location >= 0xA13000 && location < 0xA13100) || (location >= 0xA12000 && location < 0xA12100)) { + if (location < 0x800000 || (location >= 0xA13000 && location < 0xA13100) || (location >= 0xA12000 && location < 0xA12100)) { //Only called if the cart/exp doesn't have a more specific handler for this region return get_open_bus_value(&gen->header); } else if (location == 0xA14000 || location == 0xA14002) { @@ -1131,7 +1131,9 @@ gen->tmss_lock[location >> 1 & 1] = value; } else if (has_tmss && location == 0xA14100) { //TODO: implement TMSS control register - } else if (location < 0xA12000 || location >= 0xA13100 || (location >= 0xA12100 && location < 0xA13000)) { + } else if (location < 0x800000 || (location >= 0xA13000 && location < 0xA13100) || (location >= 0xA12000 && location < 0xA12100)) { + //these writes are ignored when no relevant hardware is present + } else { fatal_error("Machine freeze due to unmapped write to %X\n", location); } return vcontext; @@ -1153,7 +1155,9 @@ } } else if (has_tmss && (location == 0xA14100 || location == 0xA14101)) { //TODO: implement TMSS control register - } else if (location < 0xA12000 || location >= 0xA13100 || (location >= 0xA12100 && location < 0xA13000)) { + } else if (location < 0x800000 || (location >= 0xA13000 && location < 0xA13100) || (location >= 0xA12000 && location < 0xA12100)) { + //these writes are ignored when no relevant hardware is present + } else { fatal_error("Machine freeze due to unmapped byte write to %X\n", location); } return vcontext;