Mercurial > repos > blastem
diff genesis.c @ 1987:71732f2f6f42
Fix handling of unmapped reads/writes to the cart/expansion port region
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 01 Jun 2020 23:59:59 -0700 |
parents | 81df9aa2de9b |
children | 0740d90812ee |
line wrap: on
line diff
--- 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;