From 746521c2c47a465109342d8d4508073ee5e5db93 Mon Sep 17 00:00:00 2001 From: Mike Pavone Date: Mon, 1 Jun 2020 23:59:59 -0700 Subject: Fix handling of unmapped reads/writes to the cart/expansion port region --- genesis.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/genesis.c b/genesis.c index 3c2dc17..7733f91 100644 --- a/genesis.c +++ b/genesis.c @@ -1089,7 +1089,7 @@ static uint16_t unused_read(uint32_t location, void *vcontext) { 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 @@ static void *unused_write(uint32_t location, void *vcontext, uint16_t value) 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 @@ static void *unused_write_b(uint32_t location, void *vcontext, uint8_t value) } } 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; -- cgit v1.2.3 From 673472dbe5942700881ca52b43b8da5920802034 Mon Sep 17 00:00:00 2001 From: Mike Pavone Date: Tue, 2 Jun 2020 00:06:02 -0700 Subject: Add ROM DB entry for Sonic Delta --- rom.db | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/rom.db b/rom.db index 2507f8c..3c5e3fb 100644 --- a/rom.db +++ b/rom.db @@ -1377,3 +1377,17 @@ cda73e4caf53cbc8f0750b69e5e7f394ad3735d1 { } } } +NETO-001 { + name Sonic Delta + map { + 0 { + device ROM + last 7FFFF + } + 80000 { + device Sega mapper + last 3FFFFF + offset 80000 + } + } +} -- cgit v1.2.3