summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Angelo Salese <angelosa@users.noreply.github.com>2023-04-29 15:38:18 +0200
committer GitHub <noreply@github.com>2023-04-29 15:38:18 +0200
commitb49f26e7fa61f182ed3ba2c06beae96242fd2238 (patch)
tree13f013e41ef1048cf36b1f72085aaa8a2cf91800
parent2602ef1687e9ed1644108ad7ed69ac93b3592b80 (diff)
seta/seta.cpp: workaround extdwnhl ending crash (#11160)
-rw-r--r--src/mame/seta/seta.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/mame/seta/seta.cpp b/src/mame/seta/seta.cpp
index 14af5808a95..8fb2a1aba19 100644
--- a/src/mame/seta/seta.cpp
+++ b/src/mame/seta/seta.cpp
@@ -2652,6 +2652,11 @@ void setaroul_state::setaroul_map(address_map &map)
Extreme Downhill / Sokonuke
***************************************************************************/
+// TODO: open bus for unmapped I/O areas?
+// extdwnhl wants to read non-zero at POST for watchdog (?) otherwise will mangle RAM boundaries
+// and fails booting.
+// It also perform a blantantly invalid access during ending, expecting anything that isn't a 0xffff
+// to skip it. (A0=0x20434f56, https://mametesters.org/view.php?id=8614)
void seta_state::extdwnhl_map(address_map &map)
{
map.unmap_value_high();
@@ -2664,6 +2669,7 @@ void seta_state::extdwnhl_map(address_map &map)
map(0x400004, 0x400005).portr("COINS"); // Coins
map(0x400008, 0x40000b).r(FUNC(seta_state::seta_dsw_r)); // DSW
map(0x40000c, 0x40000d).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w)); // Watchdog (extdwnhl (R) & sokonuke (W) MUST RETURN $FFFF)
+ map(0x434f56, 0x434f57).lr16(NAME([]() { return 0; }));
map(0x500001, 0x500001).w(FUNC(seta_state::seta_coin_counter_w)); // Coin Counter (no lockout)
map(0x500003, 0x500003).w(FUNC(seta_state::seta_vregs_w)); // Video Registers
map(0x500004, 0x500007).noprw(); // IRQ Ack (extdwnhl (R) & sokonuke (W))