summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author angelosa <salese_corp_ltd@email.it>2015-07-23 21:30:51 +0200
committer angelosa <salese_corp_ltd@email.it>2015-07-23 21:30:51 +0200
commitb0d7f5e653ad49440ef31bdcf94f8cdc57fdafe0 (patch)
tree9fcc047d6a0226a90624ce4e550dbc90ba8eb716
parent4614cd5afc5f413847ead8dc22f55a95d36b6547 (diff)
Let's add a silly hack for now (will be disabled or behind a Machine Configuration in release build)
-rw-r--r--src/mess/drivers/saturn.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/mess/drivers/saturn.c b/src/mess/drivers/saturn.c
index 915dc0fb075..77f652983cd 100644
--- a/src/mess/drivers/saturn.c
+++ b/src/mess/drivers/saturn.c
@@ -79,6 +79,7 @@ public:
DECLARE_READ32_MEMBER(saturn_null_ram_r);
DECLARE_WRITE32_MEMBER(saturn_null_ram_w);
+ DECLARE_WRITE32_MEMBER(astal_cache_hack_w);
void saturn_init_driver(int rgn);
DECLARE_DRIVER_INIT(saturnus);
@@ -109,6 +110,20 @@ READ32_MEMBER( sat_console_state::abus_dummy_r )
return -1;
}
+/*!
+ @brief Astal hack
+
+ @discussion Slave CPU in Astal pretends to write an illegal SCU ISM register for some reason.
+ In the grandscheme of how cache really works it's probably using 0x6000348 RAM register for doing a
+ task then purge the line and recopy the right ISM buffer.
+
+ @todo stupid hack, not going to be officially released.
+ */
+WRITE32_MEMBER( sat_console_state::astal_cache_hack_w )
+{
+ m_workram_h[0x348/4] = 0xfffff77c;
+}
+
static ADDRESS_MAP_START( saturn_mem, AS_PROGRAM, 32, sat_console_state )
AM_RANGE(0x00000000, 0x0007ffff) AM_ROM AM_SHARE("share6") AM_WRITENOP // bios
AM_RANGE(0x00100000, 0x0010007f) AM_READWRITE8(saturn_SMPC_r, saturn_SMPC_w,0xffffffff)
@@ -137,6 +152,7 @@ static ADDRESS_MAP_START( saturn_mem, AS_PROGRAM, 32, sat_console_state )
AM_RANGE(0x06000000, 0x060fffff) AM_RAM AM_MIRROR(0x21f00000) AM_SHARE("workram_h")
AM_RANGE(0x20000000, 0x2007ffff) AM_ROM AM_SHARE("share6") // bios mirror
// AM_RANGE(0x22000000, 0x24ffffff) AM_ROM // Cartridge area mirror
+ AM_RANGE(0x460b7f60, 0x460b7f63) AM_WRITE(astal_cache_hack_w)
AM_RANGE(0x45000000, 0x46ffffff) AM_WRITENOP
AM_RANGE(0x60000000, 0x600003ff) AM_WRITENOP // cache address array
AM_RANGE(0xc0000000, 0xc0000fff) AM_RAM // cache data array, Dragon Ball Z sprites relies on this