summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Robbbert <Robbbert@users.noreply.github.com>2019-05-03 13:55:01 +1000
committer Robbbert <Robbbert@users.noreply.github.com>2019-05-03 13:55:01 +1000
commit9a57fb3d7918fe66289d91a0f5b050089aed28ae (patch)
tree65bc5ed97f82ca9e69dedfbc4d8bba8e1a46168b
parent5e92df12cd46f3a06d984a39adb0519e5863eec6 (diff)
MT 07310: route16, route16a, route16c: right-side walls missing in main map
-rw-r--r--src/mame/drivers/route16.cpp50
-rw-r--r--src/mame/includes/route16.h2
2 files changed, 50 insertions, 2 deletions
diff --git a/src/mame/drivers/route16.cpp b/src/mame/drivers/route16.cpp
index f733a91e597..55d678d6b15 100644
--- a/src/mame/drivers/route16.cpp
+++ b/src/mame/drivers/route16.cpp
@@ -67,6 +67,10 @@
2800 DAC output (Stratovox only)
+New code to better emulate the protection was added in 0.194, but it turned
+out to harbour a bug (see MT 07310). Therefore the previous patches have been
+restored, and the protection routine has been nullified (but still there in
+case someone wants to revisit it).
***************************************************************************/
#include "emu.h"
@@ -589,7 +593,48 @@ MACHINE_START_MEMBER(route16_state, jongpute)
void route16_state::init_route16()
{
+ // hack out the protection
+ u8 *rom = memregion("cpu1")->base();
+ rom[0x105] = 0; // remove jp nz,4109
+ rom[0x106] = 0;
+ rom[0x107] = 0;
+
+ rom[0x72a] = 0; // remove jp nz,4238
+ rom[0x72b] = 0;
+ rom[0x72c] = 0;
+ init_route16c();
+}
+
+void route16_state::init_route16a()
+{
save_item(NAME(m_protection_data));
+ // hack out the protection
+ u8 *rom = memregion("cpu1")->base();
+ rom[0x105] = 0; // remove jp nz,4109
+ rom[0x106] = 0;
+ rom[0x107] = 0;
+
+ rom[0x731] = 0; // remove jp nz,4238
+ rom[0x732] = 0;
+ rom[0x733] = 0;
+
+ rom[0x0e9] = 0x3a; // remove call 2CCD
+
+ rom[0x747] = 0xc3; // skip protection checking
+ rom[0x748] = 0x56;
+ rom[0x749] = 0x07;
+}
+
+void route16_state::init_route16c()
+{
+ save_item(NAME(m_protection_data));
+ // hack out the protection
+ u8 *rom = memregion("cpu1")->base();
+ rom[0x0e9] = 0x3a; // remove call 2CD8
+
+ rom[0x754] = 0xc3; // skip protection checking
+ rom[0x755] = 0x63;
+ rom[0x756] = 0x07;
}
void route16_state::route16(machine_config &config)
@@ -1058,6 +1103,7 @@ READ8_MEMBER(route16_state::routex_prot_read)
return 0x00;
}
+// never called, see notes.
READ8_MEMBER(route16_state::route16_prot_read)
{
m_protection_data++;
@@ -1083,8 +1129,8 @@ READ8_MEMBER(route16_state::route16_prot_read)
*************************************/
GAME( 1981, route16, 0, route16, route16, route16_state, init_route16, ROT270, "Tehkan / Sun Electronics (Centuri license)", "Route 16 (set 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, route16a, route16, route16, route16, route16_state, init_route16, ROT270, "Tehkan / Sun Electronics (Centuri license)", "Route 16 (set 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, route16c, route16, route16, route16, route16_state, init_route16, ROT270, "Tehkan / Sun Electronics (Centuri license)", "Route 16 (set 3, bootleg?)", MACHINE_SUPPORTS_SAVE ) // similar to set 1 but with some protection removed?
+GAME( 1981, route16a, route16, route16, route16, route16_state, init_route16a, ROT270, "Tehkan / Sun Electronics (Centuri license)", "Route 16 (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, route16c, route16, route16, route16, route16_state, init_route16c, ROT270, "Tehkan / Sun Electronics (Centuri license)", "Route 16 (set 3, bootleg?)", MACHINE_SUPPORTS_SAVE ) // similar to set 1 but with some protection removed?
GAME( 1981, route16bl,route16, route16, route16, route16_state, empty_init, ROT270, "bootleg (Leisure and Allied)", "Route 16 (bootleg)", MACHINE_SUPPORTS_SAVE )
GAME( 1981, routex, route16, routex, route16, route16_state, empty_init, ROT270, "bootleg", "Route X (bootleg)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/includes/route16.h b/src/mame/includes/route16.h
index 4374a81ffc5..42bda56869a 100644
--- a/src/mame/includes/route16.h
+++ b/src/mame/includes/route16.h
@@ -33,6 +33,8 @@ public:
void route16(machine_config &config);
void init_route16();
+ void init_route16a();
+ void init_route16c();
private:
DECLARE_WRITE8_MEMBER(out0_w);