mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
route16: small cleanup (nw)
This commit is contained in:
parent
66b935ab69
commit
0d75d30b7d
@ -71,7 +71,8 @@ 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"
|
||||
#include "includes/route16.h"
|
||||
@ -87,11 +88,73 @@ case someone wants to revisit it).
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Shared RAM handling
|
||||
* Drivers specific initialization
|
||||
*
|
||||
*************************************/
|
||||
|
||||
MACHINE_START_MEMBER(route16_state, speakres)
|
||||
{
|
||||
save_item(NAME(m_speakres_vrx));
|
||||
}
|
||||
|
||||
MACHINE_START_MEMBER(route16_state, jongpute)
|
||||
{
|
||||
save_item(NAME(m_jongpute_port_select));
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Shared RAM handling
|
||||
*
|
||||
*************************************/
|
||||
|
||||
template<bool cpu1> WRITE8_MEMBER(route16_state::route16_sharedram_w)
|
||||
{
|
||||
@ -107,6 +170,29 @@ template<bool cpu1> WRITE8_MEMBER(route16_state::route16_sharedram_w)
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Protection handling
|
||||
*
|
||||
*************************************/
|
||||
|
||||
READ8_MEMBER(route16_state::routex_prot_read)
|
||||
{
|
||||
if (m_cpu1->pc() == 0x2f) return 0xfb;
|
||||
|
||||
logerror ("cpu '%s' (PC=%08X): unmapped prot read\n", m_cpu1->tag(), m_cpu1->pc());
|
||||
return 0x00;
|
||||
}
|
||||
|
||||
// never called, see notes.
|
||||
READ8_MEMBER(route16_state::route16_prot_read)
|
||||
{
|
||||
m_protection_data++;
|
||||
return (1 << ((m_protection_data >> 1) & 7));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Stratovox's extra sound effects
|
||||
@ -139,12 +225,10 @@ WRITE8_MEMBER(route16_state::stratvox_sn76477_w)
|
||||
|
||||
/***************************************************
|
||||
*
|
||||
* Jongputer and T.T Mahjong's multiplixed ports
|
||||
* Jongputer and T.T Mahjong's multiplexed ports
|
||||
*
|
||||
***************************************************/
|
||||
|
||||
|
||||
|
||||
WRITE8_MEMBER(route16_state::jongpute_input_port_matrix_w)
|
||||
{
|
||||
m_jongpute_port_select = data;
|
||||
@ -307,16 +391,22 @@ void route16_state::cpu1_io_map(address_map &map)
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Input ports
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static INPUT_PORTS_START( route16 )
|
||||
PORT_START("DSW") /* DSW 1 */
|
||||
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Lives ) )
|
||||
PORT_DIPSETTING( 0x00, "3" )
|
||||
PORT_DIPSETTING( 0x01, "5" )
|
||||
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) // Doesn't seem to
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) // be referenced
|
||||
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) // Doesn't seem to be referenced
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) // Doesn't seem to
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) // be referenced
|
||||
PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) // Doesn't seem to be referenced
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x04, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x18, 0x00, DEF_STR( Coinage ) )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) )
|
||||
@ -360,7 +450,7 @@ static INPUT_PORTS_START( stratvox )
|
||||
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Lives ) )
|
||||
PORT_DIPSETTING( 0x00, "3" )
|
||||
PORT_DIPSETTING( 0x01, "5" )
|
||||
PORT_DIPNAME( 0x02, 0x00, "Replenish Astronouts" )
|
||||
PORT_DIPNAME( 0x02, 0x00, "Replenish Astronauts" )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( Yes ) )
|
||||
PORT_DIPNAME( 0x0c, 0x00, "2 Attackers At Wave" )
|
||||
@ -451,7 +541,7 @@ static INPUT_PORTS_START( spacecho )
|
||||
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Lives ) )
|
||||
PORT_DIPSETTING( 0x00, "3" )
|
||||
PORT_DIPSETTING( 0x01, "5" )
|
||||
PORT_DIPNAME( 0x02, 0x00, "Replenish Astronouts" )
|
||||
PORT_DIPNAME( 0x02, 0x00, "Replenish Astronauts" )
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( No ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
|
||||
PORT_DIPNAME( 0x0c, 0x00, "2 Attackers At Wave" )
|
||||
@ -494,7 +584,7 @@ INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( jongpute )
|
||||
PORT_START("DSW") /* IN0 */
|
||||
PORT_DIPNAME( 0x0c, 0x08, "Timer Descrement Speed" )
|
||||
PORT_DIPNAME( 0x0c, 0x08, "Timer Decrement Speed" )
|
||||
PORT_DIPSETTING( 0x00, "Very Fast" )
|
||||
PORT_DIPSETTING( 0x04, "Fast" )
|
||||
PORT_DIPSETTING( 0x08, "Normal" )
|
||||
@ -581,61 +671,13 @@ static INPUT_PORTS_START( jongpute )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 )
|
||||
INPUT_PORTS_END
|
||||
|
||||
MACHINE_START_MEMBER(route16_state, speakres)
|
||||
{
|
||||
save_item(NAME(m_speakres_vrx));
|
||||
}
|
||||
|
||||
MACHINE_START_MEMBER(route16_state, jongpute)
|
||||
{
|
||||
save_item(NAME(m_jongpute_port_select));
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
/*************************************
|
||||
*
|
||||
* Machine configs
|
||||
*
|
||||
*************************************/
|
||||
|
||||
void route16_state::route16(machine_config &config)
|
||||
{
|
||||
@ -749,7 +791,7 @@ void route16_state::jongpute(machine_config &config)
|
||||
*
|
||||
*************************************/
|
||||
|
||||
ROM_START( route16 )
|
||||
ROM_START( route16 )
|
||||
ROM_REGION( 0x10000, "cpu1", 0 )
|
||||
ROM_LOAD( "tvg54.a0", 0x0000, 0x0800, CRC(aef9ffc1) SHA1(178d23e4963336ded93c13cb17940a4ae98270c5) )
|
||||
ROM_LOAD( "tvg55.a1", 0x0800, 0x0800, CRC(389bc077) SHA1(b0606f6e647e81ceae7148bda96bd4673a51e823) )
|
||||
@ -1089,38 +1131,6 @@ ROM_START( jongpute )
|
||||
ROM_END
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Protection handling
|
||||
*
|
||||
*************************************/
|
||||
|
||||
READ8_MEMBER(route16_state::routex_prot_read)
|
||||
{
|
||||
if (m_cpu1->pc() == 0x2f) return 0xfb;
|
||||
|
||||
logerror ("cpu '%s' (PC=%08X): unmapped prot read\n", m_cpu1->tag(), m_cpu1->pc());
|
||||
return 0x00;
|
||||
}
|
||||
|
||||
// never called, see notes.
|
||||
READ8_MEMBER(route16_state::route16_prot_read)
|
||||
{
|
||||
m_protection_data++;
|
||||
return (1 << ((m_protection_data >> 1) & 7));
|
||||
}
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Drivers specific initialization
|
||||
*
|
||||
*************************************/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user