summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author MetalliC <0vetal0@gmail.com>2019-01-26 01:30:33 +0200
committer MetalliC <0vetal0@gmail.com>2019-01-26 01:30:33 +0200
commit39fd873e585bbcef5a947730f991b5f5d754dee4 (patch)
tree6f380fd08143174cad9f05151d0eebce542a3568
parent5299728ec343b902632474e224502ae172cba609 (diff)
dccons.cpp: documented Treamcast region-free modchip, removed bios soft-dump [Maddog, MetalliC]
-rw-r--r--src/mame/drivers/dccons.cpp18
-rw-r--r--src/mame/includes/dccons.h1
2 files changed, 16 insertions, 3 deletions
diff --git a/src/mame/drivers/dccons.cpp b/src/mame/drivers/dccons.cpp
index 7b0f1c5827e..fe60a5b681a 100644
--- a/src/mame/drivers/dccons.cpp
+++ b/src/mame/drivers/dccons.cpp
@@ -317,6 +317,18 @@ void dc_cons_state::init_dcjp()
init_dc();
}
+void dc_cons_state::init_tream()
+{
+ // Modchip connected to BIOS ROM chip changes 4 bytes (actually bits) as shown below, which allow to boot any region games.
+ u8 *rom = (u8 *)memregion("maincpu")->base();
+ rom[0x503] |= 0x40;
+ rom[0x50f] |= 0x40;
+ rom[0x523] |= 0x40;
+ rom[0x531] |= 0x40;
+
+ init_dcus();
+}
+
READ64_MEMBER(dc_cons_state::dc_pdtra_r )
{
uint64_t out = PCTRA<<32;
@@ -765,8 +777,8 @@ ROM_END
// unauthorised portable modification
ROM_START( dctream )
ROM_REGION(0x200000, "maincpu", 0)
- // multi-region hack of mpr-21931/1.01d BIOS, hardware checksum protection passes OK due to algorithm weakness
- ROM_LOAD( "dc_bios.bin", 0x000000, 0x200000, CRC(cff88d0d) SHA1(e3f84705b183ffded0a349ac7f2ab00be2ab74ee) ) // dumped in software way, ROM label unknown
+ // uses regular mpr-21931 BIOS chip, have region-free mod-chip installed, see driver init.
+ ROM_LOAD( "mpr-21931.ic501", 0x000000, 0x200000, CRC(89f2b1a1) SHA1(8951d1bb219ab2ff8583033d2119c899cc81f18c) )
ROM_REGION(0x020000, "dcflash", 0)
ROM_LOAD( "dc_flash.bin", 0x000000, 0x020000, CRC(9d5515c4) SHA1(78a86fd4e8b58fc9d3535eef6591178f1b97ecf9) ) // VA1 NTSC-US
@@ -796,5 +808,5 @@ ROM_END
CONS( 1999, dc, dcjp, 0, dc, dc, dc_cons_state, init_dcus, "Sega", "Dreamcast (USA, NTSC)", MACHINE_NOT_WORKING )
CONS( 1998, dcjp, 0, 0, dc, dc, dc_cons_state, init_dcjp, "Sega", "Dreamcast (Japan, NTSC)", MACHINE_NOT_WORKING )
CONS( 1999, dceu, dcjp, 0, dc, dc, dc_cons_state, init_dcus, "Sega", "Dreamcast (Europe, PAL)", MACHINE_NOT_WORKING )
-CONS( 200?, dctream, dcjp, 0, dc, dc, dc_cons_state, init_dcus, "<unknown>", "Treamcast", MACHINE_NOT_WORKING )
+CONS( 200?, dctream, dcjp, 0, dc, dc, dc_cons_state, init_tream,"<unknown>", "Treamcast", MACHINE_NOT_WORKING )
CONS( 1998, dcdev, 0, 0, dc, dc, dc_cons_state, init_dc, "Sega", "HKT-0120 Sega Dreamcast Development Box", MACHINE_NOT_WORKING )
diff --git a/src/mame/includes/dccons.h b/src/mame/includes/dccons.h
index 127c46d558d..fb2573ed057 100644
--- a/src/mame/includes/dccons.h
+++ b/src/mame/includes/dccons.h
@@ -28,6 +28,7 @@ public:
void init_dc();
void init_dcus();
void init_dcjp();
+ void init_tream();
DECLARE_READ64_MEMBER(dcus_idle_skip_r);
DECLARE_READ64_MEMBER(dcjp_idle_skip_r);