From 9a57fb3d7918fe66289d91a0f5b050089aed28ae Mon Sep 17 00:00:00 2001 From: Robbbert Date: Fri, 3 May 2019 13:55:01 +1000 Subject: MT 07310: route16, route16a, route16c: right-side walls missing in main map --- src/mame/drivers/route16.cpp | 50 ++++++++++++++++++++++++++++++++++++++++++-- src/mame/includes/route16.h | 2 ++ 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" @@ -588,8 +592,49 @@ 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); -- cgit v1.2.3