mirror of
https://github.com/holub/mame
synced 2025-10-08 17:37:56 +03:00
-tnzs: Added Taito M-Chip M-001 dump for extrmatn. Also works for drtoppel and plumppop. [Caps0ff]
This commit is contained in:
parent
091b93238d
commit
b043dc7a18
@ -413,7 +413,7 @@ TODO:
|
||||
- Find out how the hardware credit-counter works (MPU)
|
||||
- Fix MCU simulation errors :
|
||||
* avoid credits to be increased when in "test mode" to avoid coin lockout
|
||||
(needed to complete special test mode in 'extermatn' and 'arknoid2')
|
||||
(needed to complete special test mode in 'extrmatn' and 'arknoid2')
|
||||
* why are credits limited to 9 in some games ?
|
||||
pressing SERVICE1 allows to go up to 100 and cause this :
|
||||
. 'plumppop' : freeze
|
||||
@ -770,12 +770,23 @@ static ADDRESS_MAP_START( sub_map, AS_PROGRAM, 8, tnzs_state )
|
||||
AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("subbank")
|
||||
AM_RANGE(0xa000, 0xa000) AM_WRITE(tnzs_bankswitch1_w)
|
||||
AM_RANGE(0xb000, 0xb001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
|
||||
AM_RANGE(0xc000, 0xc001) AM_READWRITE(tnzs_mcu_r, tnzs_mcu_w) /* not present in insectx */
|
||||
AM_RANGE(0xc000, 0xc001) AM_READWRITE(mcu_r, mcu_w) /* not present in insectx */
|
||||
AM_RANGE(0xd000, 0xdfff) AM_RAM
|
||||
AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("share1")
|
||||
AM_RANGE(0xf000, 0xf003) AM_READ(arknoid2_sh_f000_r) /* paddles in arkanoid2/plumppop. The ports are */
|
||||
/* read but not used by the other games, and are not read at */
|
||||
/* all by insectx. */
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( arknoid2_sub_map, AS_PROGRAM, 8, tnzs_state )
|
||||
AM_RANGE(0x0000, 0x7fff) AM_ROM
|
||||
AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("subbank")
|
||||
AM_RANGE(0xa000, 0xa000) AM_WRITE(arknoid2_mcu_reset_w)
|
||||
AM_RANGE(0xb000, 0xb001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
|
||||
AM_RANGE(0xc000, 0xc001) AM_READWRITE(arknoid2_mcu_r, arknoid2_mcu_w)
|
||||
AM_RANGE(0xd000, 0xdfff) AM_RAM
|
||||
AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE("share1")
|
||||
AM_RANGE(0xf000, 0xf003) AM_READ(arknoid2_sh_f000_r) /* paddles in arkanoid2/plumppop. The ports are */
|
||||
/* read but not used by the other games, and are not read at */
|
||||
/* all by insectx. */
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( kageki_sub_map, AS_PROGRAM, 8, tnzs_state )
|
||||
@ -846,14 +857,13 @@ static ADDRESS_MAP_START( tnzsb_io_map, AS_IO, 8, tnzs_state )
|
||||
AM_RANGE(0x02, 0x02) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( i8742_io_map, AS_IO, 8, tnzs_state )
|
||||
AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ(tnzs_port1_r)
|
||||
AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(tnzs_port2_r, tnzs_port2_w)
|
||||
static ADDRESS_MAP_START( i8742_map, AS_IO, 8, tnzs_state )
|
||||
AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ(mcu_port1_r)
|
||||
AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(mcu_port2_r, mcu_port2_w)
|
||||
AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ_PORT("COIN1")
|
||||
AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ_PORT("COIN2")
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( jpopnics_main_map, AS_PROGRAM, 8, tnzs_state )
|
||||
AM_RANGE(0x0000, 0x7fff) AM_ROM
|
||||
AM_RANGE(0x8000, 0xbfff) AM_DEVICE("mainbank", address_map_bank_device, amap8)
|
||||
@ -1538,101 +1548,7 @@ WRITE_LINE_MEMBER(tnzs_state::irqhandler)
|
||||
m_audiocpu->set_input_line(INPUT_LINE_NMI, state ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
static MACHINE_CONFIG_START( arknoid2, tnzs_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/2) /* verified on pcb */
|
||||
MCFG_CPU_PROGRAM_MAP(main_map)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", tnzs_state, arknoid2_interrupt)
|
||||
|
||||
MCFG_CPU_ADD("sub", Z80, XTAL_12MHz/2) /* verified on pcb */
|
||||
MCFG_CPU_PROGRAM_MAP(sub_map)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", tnzs_state, irq0_line_hold)
|
||||
|
||||
MCFG_FRAGMENT_ADD(tnzs_mainbank)
|
||||
|
||||
MCFG_QUANTUM_PERFECT_CPU("maincpu")
|
||||
|
||||
MCFG_MACHINE_START_OVERRIDE(tnzs_state,tnzs)
|
||||
MCFG_MACHINE_RESET_OVERRIDE(tnzs_state,tnzs)
|
||||
|
||||
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
|
||||
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_REFRESH_RATE(60)
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
|
||||
MCFG_SCREEN_SIZE(32*8, 32*8)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(tnzs_state, screen_update_tnzs)
|
||||
MCFG_SCREEN_VBLANK_DRIVER(tnzs_state, screen_eof_tnzs)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", tnzs)
|
||||
MCFG_PALETTE_ADD("palette", 512)
|
||||
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
|
||||
|
||||
MCFG_PALETTE_INIT_OWNER(tnzs_state,arknoid2)
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_MONO("speaker")
|
||||
|
||||
MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/4) /* verified on pcb */
|
||||
MCFG_AY8910_PORT_A_READ_CB(IOPORT("DSWA"))
|
||||
MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSWB"))
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.3)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
static MACHINE_CONFIG_START( drtoppel, tnzs_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", Z80,XTAL_12MHz/2) /* 6.0 MHz ??? - Main board Crystal is 12MHz */
|
||||
MCFG_CPU_PROGRAM_MAP(main_map)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", tnzs_state, arknoid2_interrupt)
|
||||
|
||||
MCFG_CPU_ADD("sub", Z80,XTAL_12MHz/2) /* 6.0 MHz ??? - Main board Crystal is 12MHz */
|
||||
MCFG_CPU_PROGRAM_MAP(sub_map)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", tnzs_state, irq0_line_hold)
|
||||
|
||||
MCFG_FRAGMENT_ADD(tnzs_mainbank)
|
||||
|
||||
MCFG_QUANTUM_PERFECT_CPU("maincpu")
|
||||
|
||||
MCFG_MACHINE_START_OVERRIDE(tnzs_state,tnzs)
|
||||
MCFG_MACHINE_RESET_OVERRIDE(tnzs_state,tnzs)
|
||||
|
||||
MCFG_DEVICE_ADD("spritegen", SETA001_SPRITE, 0)
|
||||
MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_REFRESH_RATE(60)
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
|
||||
MCFG_SCREEN_SIZE(32*8, 32*8)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(tnzs_state, screen_update_tnzs)
|
||||
MCFG_SCREEN_VBLANK_DRIVER(tnzs_state, screen_eof_tnzs)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", tnzs)
|
||||
MCFG_PALETTE_ADD("palette", 512)
|
||||
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
|
||||
MCFG_PALETTE_INIT_OWNER(tnzs_state,arknoid2)
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_MONO("speaker")
|
||||
|
||||
MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/4)
|
||||
MCFG_AY8910_PORT_A_READ_CB(IOPORT("DSWA"))
|
||||
MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSWB"))
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.3)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
static MACHINE_CONFIG_START( tnzs, tnzs_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", Z80,XTAL_12MHz/2) /* 6.0 MHz ??? - Main board Crystal is 12MHz */
|
||||
MCFG_CPU_PROGRAM_MAP(main_map)
|
||||
@ -1643,7 +1559,7 @@ static MACHINE_CONFIG_START( tnzs, tnzs_state )
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", tnzs_state, irq0_line_hold)
|
||||
|
||||
MCFG_CPU_ADD("mcu", I8742, 12000000/2) /* 400KHz ??? - Main board Crystal is 12MHz */
|
||||
MCFG_CPU_IO_MAP(i8742_io_map)
|
||||
MCFG_CPU_IO_MAP(i8742_map)
|
||||
|
||||
MCFG_FRAGMENT_ADD(tnzs_mainbank)
|
||||
|
||||
@ -1678,6 +1594,25 @@ static MACHINE_CONFIG_START( tnzs, tnzs_state )
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.3)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( extrmatn, tnzs )
|
||||
MCFG_PALETTE_MODIFY("palette")
|
||||
MCFG_PALETTE_INIT_OWNER(tnzs_state,arknoid2)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( arknoid2, tnzs )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_MODIFY("maincpu")
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", tnzs_state, arknoid2_interrupt)
|
||||
|
||||
MCFG_CPU_MODIFY("sub")
|
||||
MCFG_CPU_PROGRAM_MAP(arknoid2_sub_map)
|
||||
|
||||
MCFG_CPU_MODIFY("mcu")
|
||||
MCFG_DEVICE_DISABLE()
|
||||
|
||||
MCFG_PALETTE_MODIFY("palette")
|
||||
MCFG_PALETTE_INIT_OWNER(tnzs_state,arknoid2)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_START( insectx, tnzs_state )
|
||||
|
||||
@ -1907,8 +1842,8 @@ ROM_START( plumppop )
|
||||
ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the second CPU */
|
||||
ROM_LOAD( "a98-11.bin", 0x00000, 0x10000, CRC(bc56775c) SHA1(0c22c22c0e9d7ec0e34f8ab4bfe61068f65e8759) )
|
||||
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) /* M-Chip (i8742 internal ROM) */
|
||||
ROM_LOAD( "plmp8742.bin", 0x0000, 0x0800, NO_DUMP )
|
||||
ROM_REGION( 0x10000, "mcu", 0 ) /* M-Chip (i8x42 internal ROM) */
|
||||
ROM_LOAD( "b06-14.1g", 0x0000, 0x0800, CRC(28907072) SHA1(21c7017af8a8ceb8e43d7e798f48518b136fd45c) ) /* Chip label is a guess, also unknown if it actually uses the same MCU as drtoppel/extrmatn, but it appears to work fine */
|
||||
|
||||
ROM_REGION( 0x100000, "gfx1", 0 )
|
||||
ROM_LOAD( "a98-01.bin", 0x00000, 0x10000, CRC(f3033dca) SHA1(130744998f0531a82de2814231dddea3ad710f60) )
|
||||
@ -1959,8 +1894,8 @@ ROM_START( extrmatn )
|
||||
ROM_REGION( 0x10000, "sub", 0 ) /* Region 2 - sound cpu */
|
||||
ROM_LOAD( "b06-19.4e", 0x00000, 0x10000, CRC(8de43ed9) SHA1(53e6d8fa93889c38733d169e983f2caf1da71f43) )
|
||||
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) /* M-Chip (i8742 internal ROM) */
|
||||
ROM_LOAD( "extr8742.4f", 0x0000, 0x0800, NO_DUMP ) /* Labeled B06-14 */
|
||||
ROM_REGION( 0x10000, "mcu", 0 ) /* M-Chip (i8x42 internal ROM) */
|
||||
ROM_LOAD( "b06-14.1g", 0x0000, 0x0800, CRC(28907072) SHA1(21c7017af8a8ceb8e43d7e798f48518b136fd45c) ) /* Labeled B06-14 and under printed label "Taito M-001, 128P, 720100", is a mask 8042 */
|
||||
|
||||
ROM_REGION( 0x80000, "gfx1", 0 )
|
||||
ROM_LOAD( "b06-01.13a", 0x00000, 0x20000, CRC(d2afbf7e) SHA1(28b4cf94798f049a9f8375464741dbef208d7290) )
|
||||
@ -1981,8 +1916,8 @@ ROM_START( extrmatnu )
|
||||
ROM_REGION( 0x10000, "sub", 0 ) /* Region 2 - sound cpu */
|
||||
ROM_LOAD( "b06-22.4e", 0x00000, 0x10000, CRC(744f2c84) SHA1(7565c1594c2a3bae1ae45afcbf93363fe2b12d58) )
|
||||
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) /* M-Chip (i8742 internal ROM) */
|
||||
ROM_LOAD( "extr8742.4f", 0x0000, 0x0800, NO_DUMP ) /* Labeled B06-14 */
|
||||
ROM_REGION( 0x10000, "mcu", 0 ) /* M-Chip (i8x42 internal ROM) */
|
||||
ROM_LOAD( "b06-14.1g", 0x0000, 0x0800, CRC(28907072) SHA1(21c7017af8a8ceb8e43d7e798f48518b136fd45c) ) /* Labeled B06-14 and under printed label "Taito M-001, 128P, 720100", is a mask 8042 */
|
||||
|
||||
ROM_REGION( 0x80000, "gfx1", 0 )
|
||||
ROM_LOAD( "b06-01.13a", 0x00000, 0x20000, CRC(d2afbf7e) SHA1(28b4cf94798f049a9f8375464741dbef208d7290) )
|
||||
@ -2004,8 +1939,8 @@ ROM_START( extrmatnur )
|
||||
ROM_REGION( 0x10000, "sub", 0 ) /* Region 2 - sound cpu */
|
||||
ROM_LOAD( "b06_17", 0x00000, 0x10000, CRC(744f2c84) SHA1(7565c1594c2a3bae1ae45afcbf93363fe2b12d58) )
|
||||
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) /* M-Chip (i8742 internal ROM) */
|
||||
ROM_LOAD( "extr8742.4f", 0x0000, 0x0800, NO_DUMP ) /* Labeled B06-14 */
|
||||
ROM_REGION( 0x10000, "mcu", 0 ) /* M-Chip (i8x42 internal ROM) */
|
||||
ROM_LOAD( "b06-14.1g", 0x0000, 0x0800, CRC(28907072) SHA1(21c7017af8a8ceb8e43d7e798f48518b136fd45c) ) /* Labeled B06-14 and under printed label "Taito M-001, 128P, 720100", is a mask 8042 */
|
||||
|
||||
ROM_REGION( 0x80000, "gfx1", 0 )
|
||||
ROM_LOAD( "b06-01.13a", 0x00000, 0x20000, CRC(d2afbf7e) SHA1(28b4cf94798f049a9f8375464741dbef208d7290) )
|
||||
@ -2026,8 +1961,8 @@ ROM_START( extrmatnj )
|
||||
ROM_REGION( 0x10000, "sub", 0 ) /* Region 2 - sound cpu */
|
||||
ROM_LOAD( "b06-07.4e", 0x00000, 0x10000, CRC(b37fb8b3) SHA1(10696914b9e39d34d56069a69b9d641339ea2309) )
|
||||
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) /* M-Chip (i8742 internal ROM) */
|
||||
ROM_LOAD( "extr8742.4f", 0x0000, 0x0800, NO_DUMP ) /* Labeled B06-14 */
|
||||
ROM_REGION( 0x10000, "mcu", 0 ) /* M-Chip (i8x42 internal ROM) */
|
||||
ROM_LOAD( "b06-14.1g", 0x0000, 0x0800, CRC(28907072) SHA1(21c7017af8a8ceb8e43d7e798f48518b136fd45c) ) /* Labeled B06-14 and under printed label "Taito M-001, 128P, 720100", is a mask 8042 */
|
||||
|
||||
ROM_REGION( 0x80000, "gfx1", 0 )
|
||||
ROM_LOAD( "b06-01.13a", 0x00000, 0x20000, CRC(d2afbf7e) SHA1(28b4cf94798f049a9f8375464741dbef208d7290) )
|
||||
@ -2048,7 +1983,7 @@ ROM_START( arknoid2 )
|
||||
ROM_REGION( 0x10000, "sub", 0 ) /* Region 2 - sound cpu */
|
||||
ROM_LOAD( "b08_13.3e", 0x00000, 0x10000, CRC(e8035ef1) SHA1(9a54e952cff0036c4b6affd9ffb1097cdccbe255) )
|
||||
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) /* M-Chip (i8742 internal ROM) */
|
||||
ROM_REGION( 0x10000, "mcu", 0 ) /* M-Chip (i8x42 internal ROM) */
|
||||
ROM_LOAD( "ark28742.3g", 0x0000, 0x0800, NO_DUMP )
|
||||
|
||||
ROM_REGION( 0x80000, "gfx1", 0 )
|
||||
@ -2070,7 +2005,7 @@ ROM_START( arknoid2u )
|
||||
ROM_REGION( 0x10000, "sub", 0 ) /* Region 2 - sound cpu */
|
||||
ROM_LOAD( "b08_12.3e", 0x00000, 0x10000, CRC(dc84e27d) SHA1(d549d8c9fbec0521517f0c5f5cee763e27d48633) )
|
||||
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) /* M-Chip (i8742 internal ROM) */
|
||||
ROM_REGION( 0x10000, "mcu", 0 ) /* M-Chip (i8x42 internal ROM) */
|
||||
ROM_LOAD( "ark28742.3g", 0x0000, 0x0800, NO_DUMP )
|
||||
|
||||
ROM_REGION( 0x80000, "gfx1", 0 )
|
||||
@ -2092,7 +2027,7 @@ ROM_START( arknoid2j )
|
||||
ROM_REGION( 0x10000, "sub", 0 ) /* Region 2 - sound cpu */
|
||||
ROM_LOAD( "b08_06.3e", 0x00000, 0x10000, CRC(adfcd40c) SHA1(f91299407ed21e2dd244c9b1a315b27ed32f5514) )
|
||||
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) /* M-Chip (i8742 internal ROM) */
|
||||
ROM_REGION( 0x10000, "mcu", 0 ) /* M-Chip (i8x42 internal ROM) */
|
||||
ROM_LOAD( "ark28742.3g", 0x0000, 0x0800, NO_DUMP )
|
||||
|
||||
ROM_REGION( 0x80000, "gfx1", 0 )
|
||||
@ -2114,7 +2049,7 @@ ROM_START( arknoid2b )
|
||||
ROM_REGION( 0x10000, "sub", 0 ) /* Region 2 - sound cpu */
|
||||
ROM_LOAD( "b08_13.3e", 0x00000, 0x10000, CRC(e8035ef1) SHA1(9a54e952cff0036c4b6affd9ffb1097cdccbe255) )
|
||||
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) /* M-Chip (i8742 internal ROM) */
|
||||
ROM_REGION( 0x10000, "mcu", 0 ) /* M-Chip (i8x42 internal ROM) */
|
||||
ROM_LOAD( "ark28742.3g", 0x0000, 0x0800, NO_DUMP )
|
||||
|
||||
ROM_REGION( 0x80000, "gfx1", 0 )
|
||||
@ -2136,8 +2071,8 @@ ROM_START( drtoppel )
|
||||
ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the second CPU */
|
||||
ROM_LOAD( "b19-15.3e", 0x00000, 0x10000, CRC(37a0d3fb) SHA1(f65fb9382af5f5b09725c39b660c5138b3912f53) ) /* Hacked??, need correct Taito rom number */
|
||||
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) /* M-Chip (i8742 internal ROM) */
|
||||
ROM_LOAD( "drt8742.3g", 0x0000, 0x0800, NO_DUMP ) /* Labeled B06-14, reused from Extermination, under printed label "Taito M-001, 128P, 720100" */
|
||||
ROM_REGION( 0x10000, "mcu", 0 ) /* M-Chip (i8x42 internal ROM) */
|
||||
ROM_LOAD( "b06-14.1g", 0x0000, 0x0800, CRC(28907072) SHA1(21c7017af8a8ceb8e43d7e798f48518b136fd45c) ) /* Labeled B06-14 and under printed label "Taito M-001, 128P, 720100", is a mask 8042 */
|
||||
|
||||
ROM_REGION( 0x100000, "gfx1", 0 )
|
||||
ROM_LOAD( "b19-01.13a", 0x00000, 0x20000, CRC(a7e8a0c1) SHA1(a2f017ae5b6472d4202f126d0247b3fe4b1321d1) )
|
||||
@ -2162,8 +2097,8 @@ ROM_START( drtoppelu )
|
||||
ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the second CPU */
|
||||
ROM_LOAD( "b19-14.3e", 0x00000, 0x10000, CRC(05565b22) SHA1(d1aa47b438d3b44c5177337809e38b50f6445c36) ) /* Hacked??, need correct Taito rom number */
|
||||
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) /* M-Chip (i8742 internal ROM) */
|
||||
ROM_LOAD( "drt8742.3g", 0x0000, 0x0800, NO_DUMP ) /* Labeled B06-14, reused from Extermination, under printed label "Taito M-001, 128P, 720100" */
|
||||
ROM_REGION( 0x10000, "mcu", 0 ) /* M-Chip (i8x42 internal ROM) */
|
||||
ROM_LOAD( "b06-14.1g", 0x0000, 0x0800, CRC(28907072) SHA1(21c7017af8a8ceb8e43d7e798f48518b136fd45c) ) /* Labeled B06-14 and under printed label "Taito M-001, 128P, 720100", is a mask 8042 */
|
||||
|
||||
ROM_REGION( 0x100000, "gfx1", 0 )
|
||||
ROM_LOAD( "b19-01.13a", 0x00000, 0x20000, CRC(a7e8a0c1) SHA1(a2f017ae5b6472d4202f126d0247b3fe4b1321d1) )
|
||||
@ -2188,8 +2123,8 @@ ROM_START( drtoppelj )
|
||||
ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the second CPU */
|
||||
ROM_LOAD( "b19-11.3e", 0x00000, 0x10000, CRC(524dc249) SHA1(158b2de0fcd17ad16ba72bb24888122bf704e216) )
|
||||
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) /* M-Chip (i8742 internal ROM) */
|
||||
ROM_LOAD( "drt8742.3g", 0x0000, 0x0800, NO_DUMP ) /* Labeled B06-14, reused from Extermination, under printed label "Taito M-001, 128P, 720100" */
|
||||
ROM_REGION( 0x10000, "mcu", 0 ) /* M-Chip (i8x42 internal ROM) */
|
||||
ROM_LOAD( "b06-14.1g", 0x0000, 0x0800, CRC(28907072) SHA1(21c7017af8a8ceb8e43d7e798f48518b136fd45c) ) /* Labeled B06-14 and under printed label "Taito M-001, 128P, 720100", is a mask 8042 */
|
||||
|
||||
ROM_REGION( 0x100000, "gfx1", 0 )
|
||||
ROM_LOAD( "b19-01.13a", 0x00000, 0x20000, CRC(a7e8a0c1) SHA1(a2f017ae5b6472d4202f126d0247b3fe4b1321d1) )
|
||||
@ -2326,7 +2261,7 @@ ROM_START( chukatai )
|
||||
ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the second CPU */
|
||||
ROM_LOAD( "b44-12w", 0x00000, 0x10000, CRC(e80ecdca) SHA1(cd96403ca97f18f630118dcb3dc2179c01147213) ) /* Hacked??, need correct Taito rom number */
|
||||
|
||||
ROM_REGION( 0x10000, "mcu", 0 ) /* M-Chip (i8742 internal ROM) */
|
||||
ROM_REGION( 0x10000, "mcu", 0 ) /* M-Chip (i8x42 internal ROM) */
|
||||
ROM_LOAD( "b44-8742.mcu", 0x0000, 0x0800, CRC(7dff3f9f) SHA1(bbf4e036d025fe8179b053d639f9b8ad401e6e68) )
|
||||
|
||||
ROM_REGION( 0x100000, "gfx1", 0 )
|
||||
@ -2348,7 +2283,7 @@ ROM_START( chukataiu )
|
||||
ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the second CPU */
|
||||
ROM_LOAD( "b44-12u", 0x00000, 0x10000, CRC(9f09fd5c) SHA1(ae92f2e893e1e666dcabbd793f1a778c5e3d7bab) ) /* Hacked??, need correct Taito rom number */
|
||||
|
||||
ROM_REGION( 0x1000, "mcu", 0 ) /* M-Chip (i8742 internal ROM) */
|
||||
ROM_REGION( 0x1000, "mcu", 0 ) /* M-Chip (i8x42 internal ROM) */
|
||||
ROM_LOAD( "b44-8742.mcu", 0x0000, 0x0800, CRC(7dff3f9f) SHA1(bbf4e036d025fe8179b053d639f9b8ad401e6e68) )
|
||||
|
||||
ROM_REGION( 0x100000, "gfx1", 0 )
|
||||
@ -2370,7 +2305,7 @@ ROM_START( chukataij )
|
||||
ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the second CPU */
|
||||
ROM_LOAD( "b44-12", 0x00000, 0x10000, CRC(0600ace6) SHA1(3d5767b91ea63128bfbff3527ddcf90fcf43af2e) )
|
||||
|
||||
ROM_REGION( 0x10000, "mcu", 0 ) /* M-Chip (i8742 internal ROM) */
|
||||
ROM_REGION( 0x10000, "mcu", 0 ) /* M-Chip (i8x42 internal ROM) */
|
||||
ROM_LOAD( "b44-8742.mcu", 0x0000, 0x0800, CRC(7dff3f9f) SHA1(bbf4e036d025fe8179b053d639f9b8ad401e6e68) )
|
||||
|
||||
ROM_REGION( 0x100000, "gfx1", 0 )
|
||||
@ -2517,7 +2452,7 @@ Taito ID: K1100356A
|
||||
Seta ID: P0-041A
|
||||
*/
|
||||
/* This pcb is similar but not identical to the Chuka Taisen pcb;
|
||||
There is an M-chip i8742 (with Taito silkscreen) and no 3rd z80.
|
||||
There is an M-chip i8x42 (with Taito silkscreen) and no 3rd z80.
|
||||
There is no daughter-pcb like the later TNZS pcb has. */
|
||||
ROM_START( tnzsjo )
|
||||
ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k + bankswitch areas for the first CPU */
|
||||
@ -2526,7 +2461,7 @@ ROM_START( tnzsjo )
|
||||
ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the second CPU */
|
||||
ROM_LOAD( "b53-11.27c512.u38", 0x00000, 0x10000, CRC(9784d443) SHA1(bc3647aac9974031dbe4898417fbaa99841f9548) )
|
||||
|
||||
ROM_REGION( 0x10000, "mcu", 0 ) /* M-Chip (i8742 internal ROM) */
|
||||
ROM_REGION( 0x10000, "mcu", 0 ) /* M-Chip (i8x42 internal ROM) */
|
||||
ROM_LOAD( "b53-09.u46", 0x0000, 0x0800, CRC(a4bfce19) SHA1(9340862d5bdc1ad4799dc92cae9bce1428b47478) )
|
||||
|
||||
ROM_REGION( 0x100000, "gfx1", 0 )
|
||||
@ -2554,7 +2489,7 @@ ROM_START( tnzsuo )
|
||||
ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the second CPU */
|
||||
ROM_LOAD( "b53-13.27c512.u38", 0x00000, 0x10000, CRC(c09f4d28) SHA1(f1fd3202869738e17abcbb757f9ce7260707dd3d) )
|
||||
|
||||
ROM_REGION( 0x10000, "mcu", 0 ) /* M-Chip (i8742 internal ROM) */
|
||||
ROM_REGION( 0x10000, "mcu", 0 ) /* M-Chip (i8x42 internal ROM) */
|
||||
ROM_LOAD( "b53-09.u46", 0x0000, 0x0800, CRC(a4bfce19) SHA1(9340862d5bdc1ad4799dc92cae9bce1428b47478) )
|
||||
|
||||
ROM_REGION( 0x100000, "gfx1", 0 )
|
||||
@ -2574,14 +2509,14 @@ ROM_START( tnzsuo )
|
||||
ROM_LOAD( "b06-101.pal16l8a.u36.jed", 0x03000, 0x01000, NO_DUMP)
|
||||
ROM_END
|
||||
|
||||
ROM_START( tnzso )
|
||||
ROM_START( tnzso )
|
||||
ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k + bankswitch areas for the first CPU */
|
||||
ROM_LOAD( "b53-unknown.27c1001d.u32", 0x00000, 0x20000, CRC(edf3b39e) SHA1(be221c99e50795d569611dba454c3954a259a859) ) // ROM LABEL FOR THIS SET IS UNKNOWN
|
||||
|
||||
ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the second CPU */
|
||||
ROM_LOAD( "b53-unknown.27c512.u38", 0x00000, 0x10000, CRC(60340d63) SHA1(12a26d19dc8e407e502f25617a5a4c9cea131ce2) ) // ROM LABEL FOR THIS SET IS UNKNOWN
|
||||
|
||||
ROM_REGION( 0x10000, "mcu", 0 ) /* M-Chip (i8742 internal ROM) */
|
||||
ROM_REGION( 0x10000, "mcu", 0 ) /* M-Chip (i8x42 internal ROM) */
|
||||
ROM_LOAD( "b53-09.u46", 0x0000, 0x0800, CRC(a4bfce19) SHA1(9340862d5bdc1ad4799dc92cae9bce1428b47478) )
|
||||
|
||||
ROM_REGION( 0x100000, "gfx1", 0 )
|
||||
@ -2610,7 +2545,7 @@ ROM_START( tnzsop ) // prototype/location test version?
|
||||
ROM_REGION( 0x10000, "sub", 0 ) /* 64k for the second CPU */
|
||||
ROM_LOAD( "ns_e-3.27c512.u38", 0x00000, 0x10000, CRC(c7662e96) SHA1(be28298bfde4e3867cfe75633ffb0f8611dbbd8b) )
|
||||
|
||||
ROM_REGION( 0x10000, "mcu", 0 ) /* M-Chip (i8742 internal ROM) */
|
||||
ROM_REGION( 0x10000, "mcu", 0 ) /* M-Chip (i8x42 internal ROM) */
|
||||
ROM_LOAD( "b53-09.u46", 0x0000, 0x0800, CRC(a4bfce19) SHA1(9340862d5bdc1ad4799dc92cae9bce1428b47478) )
|
||||
|
||||
ROM_REGION( 0x100000, "gfx1", 0 )
|
||||
@ -2737,22 +2672,22 @@ ROM_END
|
||||
|
||||
|
||||
// YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR,COMPANY,FULLNAME,FLAGS
|
||||
GAME( 1987, plumppop, 0, drtoppel, plumppop, tnzs_state, plumpop, ROT0, "Taito Corporation", "Plump Pop (Japan)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1987, plumppop, 0, extrmatn, plumppop, tnzs_state, plumpop, ROT0, "Taito Corporation", "Plump Pop (Japan)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1992, jpopnics, 0, jpopnics, jpopnics, driver_device, 0, ROT0, "Nics", "Jumping Pop (Nics, Korean hack of Plump Pop)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
|
||||
|
||||
GAME( 1987, extrmatn, 0, arknoid2, extrmatn, tnzs_state, extrmatn, ROT270, "Taito Corporation Japan", "Extermination (World)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1987, extrmatnu, extrmatn, arknoid2, extrmatn, tnzs_state, extrmatn, ROT270, "Taito (World Games license)", "Extermination (US, World Games)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1987, extrmatnur,extrmatn, arknoid2, extrmatn, tnzs_state, extrmatn, ROT270, "Taito America Corporation (Romstar license)", "Extermination (US, Romstar)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1987, extrmatnj, extrmatn, arknoid2, extrmatn, tnzs_state, extrmatn, ROT270, "Taito Corporation", "Extermination (Japan)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1987, extrmatn, 0, extrmatn, extrmatn, tnzs_state, extrmatn, ROT270, "Taito Corporation Japan", "Extermination (World)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1987, extrmatnu, extrmatn, extrmatn, extrmatn, tnzs_state, extrmatn, ROT270, "Taito (World Games license)", "Extermination (US, World Games)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1987, extrmatnur,extrmatn, extrmatn, extrmatn, tnzs_state, extrmatn, ROT270, "Taito America Corporation (Romstar license)", "Extermination (US, Romstar)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1987, extrmatnj, extrmatn, extrmatn, extrmatn, tnzs_state, extrmatn, ROT270, "Taito Corporation", "Extermination (Japan)", MACHINE_SUPPORTS_SAVE )
|
||||
|
||||
GAME( 1987, arknoid2, 0, arknoid2, arknoid2, tnzs_state, arknoid2, ROT270, "Taito Corporation Japan", "Arkanoid - Revenge of DOH (World)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1987, arknoid2u, arknoid2, arknoid2, arknid2u, tnzs_state, arknoid2, ROT270, "Taito America Corporation (Romstar license)", "Arkanoid - Revenge of DOH (US)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1987, arknoid2j, arknoid2, arknoid2, arknid2u, tnzs_state, arknoid2, ROT270, "Taito Corporation", "Arkanoid - Revenge of DOH (Japan)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1987, arknoid2b, arknoid2, arknoid2, arknid2u, tnzs_state, arknoid2, ROT270, "bootleg", "Arkanoid - Revenge of DOH (Japan bootleg)", MACHINE_SUPPORTS_SAVE )
|
||||
|
||||
GAME( 1987, drtoppel, 0, drtoppel, drtoppel, tnzs_state, drtoppel, ROT90, "Kaneko / Taito Corporation Japan", "Dr. Toppel's Adventure (World)", MACHINE_SUPPORTS_SAVE ) /* Possible region hack */
|
||||
GAME( 1987, drtoppelu, drtoppel, drtoppel, drtopplu, tnzs_state, drtoppel, ROT90, "Kaneko / Taito America Corporation", "Dr. Toppel's Adventure (US)", MACHINE_SUPPORTS_SAVE ) /* Possible region hack */
|
||||
GAME( 1987, drtoppelj, drtoppel, drtoppel, drtopplu, tnzs_state, drtoppel, ROT90, "Kaneko / Taito Corporation", "Dr. Toppel's Tankentai (Japan)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1987, drtoppel, 0, extrmatn, drtoppel, tnzs_state, drtoppel, ROT90, "Kaneko / Taito Corporation Japan", "Dr. Toppel's Adventure (World)", MACHINE_SUPPORTS_SAVE ) /* Possible region hack */
|
||||
GAME( 1987, drtoppelu, drtoppel, extrmatn, drtopplu, tnzs_state, drtoppel, ROT90, "Kaneko / Taito America Corporation", "Dr. Toppel's Adventure (US)", MACHINE_SUPPORTS_SAVE ) /* Possible region hack */
|
||||
GAME( 1987, drtoppelj, drtoppel, extrmatn, drtopplu, tnzs_state, drtoppel, ROT90, "Kaneko / Taito Corporation", "Dr. Toppel's Tankentai (Japan)", MACHINE_SUPPORTS_SAVE )
|
||||
|
||||
GAME( 1988, kageki, 0, kageki, kageki, tnzs_state, kageki, ROT90, "Kaneko / Taito America Corporation (Romstar license)", "Kageki (US)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1988, kagekij, kageki, kageki, kagekij, tnzs_state, kageki, ROT90, "Kaneko / Taito Corporation", "Kageki (Japan)", MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -12,16 +12,12 @@
|
||||
|
||||
enum
|
||||
{
|
||||
MCU_NONE_INSECTX = 0,
|
||||
MCU_ARKANOID_SIM = 0,
|
||||
MCU_MCHIP_LLE,
|
||||
MCU_NONE_INSECTX,
|
||||
MCU_NONE_KAGEKI,
|
||||
MCU_NONE_TNZSB,
|
||||
MCU_NONE_KABUKIZ,
|
||||
MCU_EXTRMATN,
|
||||
MCU_ARKANOID,
|
||||
MCU_PLUMPOP,
|
||||
MCU_DRTOPPEL,
|
||||
MCU_CHUKATAI,
|
||||
MCU_TNZS
|
||||
MCU_NONE_KABUKIZ
|
||||
};
|
||||
|
||||
class tnzs_state : public driver_device
|
||||
@ -48,8 +44,9 @@ public:
|
||||
m_coin1(*this, "COIN1"),
|
||||
m_coin2(*this, "COIN2"),
|
||||
m_an1(*this, "AN1"),
|
||||
m_an2(*this, "AN2")
|
||||
{ }
|
||||
m_an2(*this, "AN2"),
|
||||
m_lockout_level(false)
|
||||
{ }
|
||||
|
||||
/* devices */
|
||||
required_device<cpu_device> m_maincpu;
|
||||
@ -92,23 +89,26 @@ public:
|
||||
uint8_t m_mcu_coins_b;
|
||||
uint8_t m_mcu_credits;
|
||||
int m_bank2;
|
||||
bool m_lockout_level;
|
||||
|
||||
DECLARE_READ8_MEMBER(mcu_port1_r);
|
||||
DECLARE_READ8_MEMBER(mcu_port2_r);
|
||||
DECLARE_WRITE8_MEMBER(mcu_port2_w );
|
||||
DECLARE_READ8_MEMBER(mcu_r);
|
||||
DECLARE_WRITE8_MEMBER(mcu_w);
|
||||
|
||||
DECLARE_WRITE8_MEMBER(tnzsb_sound_command_w);
|
||||
DECLARE_WRITE8_MEMBER(jpopnics_subbankswitch_w);
|
||||
DECLARE_READ8_MEMBER(tnzs_port1_r);
|
||||
DECLARE_READ8_MEMBER(tnzs_port2_r);
|
||||
DECLARE_WRITE8_MEMBER(tnzs_port2_w);
|
||||
DECLARE_WRITE8_MEMBER(extrmatn_port2_w);
|
||||
DECLARE_READ8_MEMBER(arknoid2_sh_f000_r);
|
||||
DECLARE_READ8_MEMBER(tnzs_mcu_r);
|
||||
DECLARE_WRITE8_MEMBER(tnzs_mcu_w);
|
||||
DECLARE_WRITE8_MEMBER(tnzs_ramrom_bankswitch_w);
|
||||
DECLARE_WRITE8_MEMBER(tnzs_bankswitch1_w);
|
||||
DECLARE_READ8_MEMBER(mcu_tnzs_r);
|
||||
DECLARE_WRITE8_MEMBER(mcu_tnzs_w);
|
||||
DECLARE_READ8_MEMBER(mcu_arknoid2_r);
|
||||
DECLARE_WRITE8_MEMBER(mcu_arknoid2_w);
|
||||
DECLARE_READ8_MEMBER(mcu_extrmatn_r);
|
||||
DECLARE_WRITE8_MEMBER(mcu_extrmatn_w);
|
||||
DECLARE_READ8_MEMBER(arknoid2_mcu_r);
|
||||
DECLARE_WRITE8_MEMBER(arknoid2_mcu_w);
|
||||
DECLARE_WRITE8_MEMBER(arknoid2_mcu_reset_w);
|
||||
DECLARE_READ8_MEMBER(kageki_csport_r);
|
||||
DECLARE_WRITE8_MEMBER(kageki_csport_w);
|
||||
DECLARE_WRITE8_MEMBER(kabukiz_sound_bank_w);
|
||||
@ -137,6 +137,6 @@ public:
|
||||
|
||||
INTERRUPT_GEN_MEMBER(arknoid2_interrupt);
|
||||
|
||||
void mcu_reset();
|
||||
void arknoid2_mcu_reset();
|
||||
void mcu_handle_coins(int coin);
|
||||
};
|
||||
|
@ -18,13 +18,9 @@
|
||||
#include "cpu/mcs48/mcs48.h"
|
||||
#include "includes/tnzs.h"
|
||||
|
||||
|
||||
|
||||
READ8_MEMBER(tnzs_state::mcu_tnzs_r)
|
||||
READ8_MEMBER(tnzs_state::mcu_r)
|
||||
{
|
||||
uint8_t data;
|
||||
|
||||
data = m_mcu->upi41_master_r(space, offset & 1);
|
||||
uint8_t data = m_mcu->upi41_master_r(space, offset & 1);
|
||||
space.device().execute().yield();
|
||||
|
||||
// logerror("PC %04x: read %02x from mcu $c00%01x\n", space.device().safe_pcbase(), data, offset);
|
||||
@ -32,19 +28,18 @@ READ8_MEMBER(tnzs_state::mcu_tnzs_r)
|
||||
return data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(tnzs_state::mcu_tnzs_w)
|
||||
WRITE8_MEMBER(tnzs_state::mcu_w)
|
||||
{
|
||||
// logerror("PC %04x: write %02x to mcu $c00%01x\n", space.device().safe_pcbase(), data, offset);
|
||||
|
||||
m_mcu->upi41_master_w(space, offset & 1, data);
|
||||
}
|
||||
|
||||
|
||||
READ8_MEMBER(tnzs_state::tnzs_port1_r)
|
||||
READ8_MEMBER(tnzs_state::mcu_port1_r)
|
||||
{
|
||||
int data = 0;
|
||||
|
||||
switch (m_input_select & 0x0f)
|
||||
switch (m_input_select)
|
||||
{
|
||||
case 0x0a: data = m_in2->read(); break;
|
||||
case 0x0c: data = m_in0->read(); break;
|
||||
@ -57,29 +52,21 @@ READ8_MEMBER(tnzs_state::tnzs_port1_r)
|
||||
return data;
|
||||
}
|
||||
|
||||
READ8_MEMBER(tnzs_state::tnzs_port2_r)
|
||||
READ8_MEMBER(tnzs_state::mcu_port2_r)
|
||||
{
|
||||
int data = m_in2->read();
|
||||
|
||||
// logerror("I8742:%04x Read %02x from port 2\n", space.device().safe_pcbase(), data);
|
||||
|
||||
return data;
|
||||
return m_in2->read();
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(tnzs_state::tnzs_port2_w)
|
||||
WRITE8_MEMBER(tnzs_state::mcu_port2_w)
|
||||
{
|
||||
// logerror("I8742:%04x Write %02x to port 2\n", space.device().safe_pcbase(), data);
|
||||
|
||||
machine().bookkeeping().coin_lockout_w(0, (data & 0x40));
|
||||
machine().bookkeeping().coin_lockout_w(1, (data & 0x80));
|
||||
machine().bookkeeping().coin_lockout_w(0, (data & 0x40) != 0 ? m_lockout_level : !m_lockout_level);
|
||||
machine().bookkeeping().coin_lockout_w(1, (data & 0x80) != 0 ? m_lockout_level : !m_lockout_level);
|
||||
machine().bookkeeping().coin_counter_w(0, (~data & 0x10));
|
||||
machine().bookkeeping().coin_counter_w(1, (~data & 0x20));
|
||||
|
||||
m_input_select = data;
|
||||
m_input_select = data & 0xf;
|
||||
}
|
||||
|
||||
|
||||
|
||||
READ8_MEMBER(tnzs_state::arknoid2_sh_f000_r)
|
||||
{
|
||||
// logerror("PC %04x: read input %04x\n", space.device().safe_pc(), 0xf000 + offset);
|
||||
@ -93,7 +80,7 @@ READ8_MEMBER(tnzs_state::arknoid2_sh_f000_r)
|
||||
}
|
||||
|
||||
|
||||
void tnzs_state::mcu_reset( )
|
||||
void tnzs_state::arknoid2_mcu_reset()
|
||||
{
|
||||
m_mcu_initializing = 3;
|
||||
m_mcu_coinage_init = 0;
|
||||
@ -179,248 +166,6 @@ void tnzs_state::mcu_handle_coins( int coin )
|
||||
m_insertcoin = coin;
|
||||
}
|
||||
|
||||
|
||||
READ8_MEMBER(tnzs_state::mcu_arknoid2_r)
|
||||
{
|
||||
static const char mcu_startup[] = "\x55\xaa\x5a";
|
||||
|
||||
// logerror("PC %04x: read mcu %04x\n", space.device().safe_pc(), 0xc000 + offset);
|
||||
|
||||
if (offset == 0)
|
||||
{
|
||||
/* if the mcu has just been reset, return startup code */
|
||||
if (m_mcu_initializing)
|
||||
{
|
||||
m_mcu_initializing--;
|
||||
return mcu_startup[2 - m_mcu_initializing];
|
||||
}
|
||||
|
||||
switch (m_mcu_command)
|
||||
{
|
||||
case 0x41:
|
||||
return m_mcu_credits;
|
||||
|
||||
case 0xc1:
|
||||
/* Read the credit counter or the inputs */
|
||||
if (m_mcu_readcredits == 0)
|
||||
{
|
||||
m_mcu_readcredits = 1;
|
||||
if (m_mcu_reportcoin & 0x08)
|
||||
{
|
||||
m_mcu_initializing = 3;
|
||||
return 0xee; /* tilt */
|
||||
}
|
||||
else return m_mcu_credits;
|
||||
}
|
||||
else return m_in0->read(); /* buttons */
|
||||
|
||||
default:
|
||||
logerror("error, unknown mcu command\n");
|
||||
/* should not happen */
|
||||
return 0xff;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
status bits:
|
||||
0 = mcu is ready to send data (read from c000)
|
||||
1 = mcu has read data (from c000)
|
||||
2 = unused
|
||||
3 = unused
|
||||
4-7 = coin code
|
||||
0 = nothing
|
||||
1,2,3 = coin switch pressed
|
||||
e = tilt
|
||||
*/
|
||||
if (m_mcu_reportcoin & 0x08) return 0xe1; /* tilt */
|
||||
if (m_mcu_reportcoin & 0x01) return 0x11; /* coin 1 (will trigger "coin inserted" sound) */
|
||||
if (m_mcu_reportcoin & 0x02) return 0x21; /* coin 2 (will trigger "coin inserted" sound) */
|
||||
if (m_mcu_reportcoin & 0x04) return 0x31; /* coin 3 (will trigger "coin inserted" sound) */
|
||||
return 0x01;
|
||||
}
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(tnzs_state::mcu_arknoid2_w)
|
||||
{
|
||||
if (offset == 0)
|
||||
{
|
||||
// logerror("PC %04x: write %02x to mcu %04x\n", space.device().safe_pc(), data, 0xc000 + offset);
|
||||
if (m_mcu_command == 0x41)
|
||||
{
|
||||
m_mcu_credits = (m_mcu_credits + data) & 0xff;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
0xc1: read number of credits, then buttons
|
||||
0x54+0x41: add value to number of credits
|
||||
0x15: sub 1 credit (when "Continue Play" only)
|
||||
0x84: coin 1 lockout (issued only in test mode)
|
||||
0x88: coin 2 lockout (issued only in test mode)
|
||||
0x80: release coin lockout (issued only in test mode)
|
||||
during initialization, a sequence of 4 bytes sets coin/credit settings
|
||||
*/
|
||||
// logerror("PC %04x: write %02x to mcu %04x\n", space.device().safe_pc(), data, 0xc000 + offset);
|
||||
|
||||
if (m_mcu_initializing)
|
||||
{
|
||||
/* set up coin/credit settings */
|
||||
m_mcu_coinage[m_mcu_coinage_init++] = data;
|
||||
if (m_mcu_coinage_init == 4)
|
||||
m_mcu_coinage_init = 0; /* must not happen */
|
||||
}
|
||||
|
||||
if (data == 0xc1)
|
||||
m_mcu_readcredits = 0; /* reset input port number */
|
||||
|
||||
if (data == 0x15)
|
||||
{
|
||||
m_mcu_credits = (m_mcu_credits - 1) & 0xff;
|
||||
if (m_mcu_credits == 0xff)
|
||||
m_mcu_credits = 0;
|
||||
}
|
||||
m_mcu_command = data;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
READ8_MEMBER(tnzs_state::mcu_extrmatn_r)
|
||||
{
|
||||
static const char mcu_startup[] = "\x5a\xa5\x55";
|
||||
|
||||
// logerror("PC %04x: read mcu %04x\n", space.device().safe_pc(), 0xc000 + offset);
|
||||
|
||||
if (offset == 0)
|
||||
{
|
||||
/* if the mcu has just been reset, return startup code */
|
||||
if (m_mcu_initializing)
|
||||
{
|
||||
m_mcu_initializing--;
|
||||
return mcu_startup[2 - m_mcu_initializing];
|
||||
}
|
||||
|
||||
switch (m_mcu_command)
|
||||
{
|
||||
case 0x01:
|
||||
return m_in0->read() ^ 0xff; /* player 1 joystick + buttons */
|
||||
|
||||
case 0x02:
|
||||
return m_in1->read() ^ 0xff; /* player 2 joystick + buttons */
|
||||
|
||||
case 0x1a:
|
||||
return (m_coin1->read() | (m_coin2->read() << 1));
|
||||
|
||||
case 0x21:
|
||||
return m_in2->read() & 0x0f;
|
||||
|
||||
case 0x41:
|
||||
return m_mcu_credits;
|
||||
|
||||
case 0xa0:
|
||||
/* Read the credit counter */
|
||||
if (m_mcu_reportcoin & 0x08)
|
||||
{
|
||||
m_mcu_initializing = 3;
|
||||
return 0xee; /* tilt */
|
||||
}
|
||||
else return m_mcu_credits;
|
||||
|
||||
case 0xa1:
|
||||
/* Read the credit counter or the inputs */
|
||||
if (m_mcu_readcredits == 0)
|
||||
{
|
||||
m_mcu_readcredits = 1;
|
||||
if (m_mcu_reportcoin & 0x08)
|
||||
{
|
||||
m_mcu_initializing = 3;
|
||||
return 0xee; /* tilt */
|
||||
// return 0x64; /* theres a reset input somewhere */
|
||||
}
|
||||
else return m_mcu_credits;
|
||||
}
|
||||
/* buttons */
|
||||
else return ((m_in0->read() & 0xf0) | (m_in1->read() >> 4)) ^ 0xff;
|
||||
|
||||
default:
|
||||
logerror("error, unknown mcu command\n");
|
||||
/* should not happen */
|
||||
return 0xff;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
status bits:
|
||||
0 = mcu is ready to send data (read from c000)
|
||||
1 = mcu has read data (from c000)
|
||||
2 = unused
|
||||
3 = unused
|
||||
4-7 = coin code
|
||||
0 = nothing
|
||||
1,2,3 = coin switch pressed
|
||||
e = tilt
|
||||
*/
|
||||
if (m_mcu_reportcoin & 0x08) return 0xe1; /* tilt */
|
||||
if (m_mcu_reportcoin & 0x01) return 0x11; /* coin 1 (will trigger "coin inserted" sound) */
|
||||
if (m_mcu_reportcoin & 0x02) return 0x21; /* coin 2 (will trigger "coin inserted" sound) */
|
||||
if (m_mcu_reportcoin & 0x04) return 0x31; /* coin 3 (will trigger "coin inserted" sound) */
|
||||
return 0x01;
|
||||
}
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(tnzs_state::mcu_extrmatn_w)
|
||||
{
|
||||
if (offset == 0)
|
||||
{
|
||||
// logerror("PC %04x: write %02x to mcu %04x\n", space.device().safe_pc(), data, 0xc000 + offset);
|
||||
if (m_mcu_command == 0x41)
|
||||
{
|
||||
m_mcu_credits = (m_mcu_credits + data) & 0xff;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
0xa0: read number of credits
|
||||
0xa1: read number of credits, then buttons
|
||||
0x01: read player 1 joystick + buttons
|
||||
0x02: read player 2 joystick + buttons
|
||||
0x1a: read coin switches
|
||||
0x21: read service & tilt switches
|
||||
0x4a+0x41: add value to number of credits
|
||||
0x84: coin 1 lockout (issued only in test mode)
|
||||
0x88: coin 2 lockout (issued only in test mode)
|
||||
0x80: release coin lockout (issued only in test mode)
|
||||
during initialization, a sequence of 4 bytes sets coin/credit settings
|
||||
*/
|
||||
|
||||
// logerror("PC %04x: write %02x to mcu %04x\n", space.device().safe_pc(), data, 0xc000 + offset);
|
||||
|
||||
if (m_mcu_initializing)
|
||||
{
|
||||
/* set up coin/credit settings */
|
||||
m_mcu_coinage[m_mcu_coinage_init++] = data;
|
||||
if (m_mcu_coinage_init == 4)
|
||||
m_mcu_coinage_init = 0; /* must not happen */
|
||||
}
|
||||
|
||||
if (data == 0xa1)
|
||||
m_mcu_readcredits = 0; /* reset input port number */
|
||||
|
||||
/* Dr Toppel decrements credits differently. So handle it */
|
||||
if ((data == 0x09) && (m_mcu_type == MCU_DRTOPPEL || m_mcu_type == MCU_PLUMPOP))
|
||||
m_mcu_credits = (m_mcu_credits - 1) & 0xff; /* Player 1 start */
|
||||
if ((data == 0x18) && (m_mcu_type == MCU_DRTOPPEL || m_mcu_type == MCU_PLUMPOP))
|
||||
m_mcu_credits = (m_mcu_credits - 2) & 0xff; /* Player 2 start */
|
||||
|
||||
m_mcu_command = data;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*********************************
|
||||
|
||||
TNZS sync bug kludge
|
||||
@ -482,37 +227,41 @@ WRITE8_MEMBER(tnzs_state::tnzs_sync_kludge_w)
|
||||
|
||||
DRIVER_INIT_MEMBER(tnzs_state,plumpop)
|
||||
{
|
||||
m_mcu_type = MCU_PLUMPOP;
|
||||
m_mcu_type = MCU_MCHIP_LLE;
|
||||
m_lockout_level = false;
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER(tnzs_state,extrmatn)
|
||||
{
|
||||
m_mcu_type = MCU_EXTRMATN;
|
||||
m_mcu_type = MCU_MCHIP_LLE;
|
||||
m_lockout_level = false;
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER(tnzs_state,arknoid2)
|
||||
{
|
||||
m_mcu_type = MCU_ARKANOID;
|
||||
m_mcu_type = MCU_ARKANOID_SIM;
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER(tnzs_state,drtoppel)
|
||||
{
|
||||
m_mcu_type = MCU_DRTOPPEL;
|
||||
|
||||
/* drtoppel writes to the palette RAM area even if it has PROMs! We have to patch it out. */
|
||||
m_maincpu->space(AS_PROGRAM).nop_write(0xf800, 0xfbff);
|
||||
m_lockout_level = false;
|
||||
m_mcu_type = MCU_MCHIP_LLE;
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER(tnzs_state,chukatai)
|
||||
{
|
||||
m_mcu_type = MCU_CHUKATAI;
|
||||
m_lockout_level = true;
|
||||
m_mcu_type = MCU_MCHIP_LLE;
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER(tnzs_state,tnzs)
|
||||
{
|
||||
m_mcu_type = MCU_TNZS;
|
||||
/* we need to install a kludge to avoid problems with a bug in the original code */
|
||||
// m_maincpu->space(AS_PROGRAM).install_write_handler(0xef10, 0xef10, write8_delegate(FUNC(tnzs_state::tnzs_sync_kludge_w), this));
|
||||
m_lockout_level = true;
|
||||
m_mcu_type = MCU_MCHIP_LLE;
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER(tnzs_state,tnzsb)
|
||||
@ -547,65 +296,118 @@ DRIVER_INIT_MEMBER(tnzs_state,kageki)
|
||||
}
|
||||
|
||||
|
||||
READ8_MEMBER(tnzs_state::tnzs_mcu_r)
|
||||
READ8_MEMBER(tnzs_state::arknoid2_mcu_r)
|
||||
{
|
||||
switch (m_mcu_type)
|
||||
static const char mcu_startup[] = "\x55\xaa\x5a";
|
||||
|
||||
//logerror("PC %04x: read mcu %04x\n", space.device().safe_pc(), 0xc000 + offset);
|
||||
|
||||
if (offset == 0)
|
||||
{
|
||||
case MCU_TNZS:
|
||||
case MCU_CHUKATAI:
|
||||
return mcu_tnzs_r(space, offset);
|
||||
case MCU_ARKANOID:
|
||||
return mcu_arknoid2_r(space, offset);
|
||||
case MCU_EXTRMATN:
|
||||
case MCU_DRTOPPEL:
|
||||
case MCU_PLUMPOP:
|
||||
return mcu_extrmatn_r(space, offset);
|
||||
default:
|
||||
return 0xff;
|
||||
/* if the mcu has just been reset, return startup code */
|
||||
if (m_mcu_initializing)
|
||||
{
|
||||
m_mcu_initializing--;
|
||||
return mcu_startup[2 - m_mcu_initializing];
|
||||
}
|
||||
|
||||
switch (m_mcu_command)
|
||||
{
|
||||
case 0x41:
|
||||
return m_mcu_credits;
|
||||
|
||||
case 0xc1:
|
||||
/* Read the credit counter or the inputs */
|
||||
if (m_mcu_readcredits == 0)
|
||||
{
|
||||
m_mcu_readcredits = 1;
|
||||
if (m_mcu_reportcoin & 0x08)
|
||||
{
|
||||
m_mcu_initializing = 3;
|
||||
return 0xee; /* tilt */
|
||||
}
|
||||
else return m_mcu_credits;
|
||||
}
|
||||
else return m_in0->read(); /* buttons */
|
||||
|
||||
default:
|
||||
logerror("error, unknown mcu command\n");
|
||||
/* should not happen */
|
||||
return 0xff;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
status bits:
|
||||
0 = mcu is ready to send data (read from c000)
|
||||
1 = mcu has read data (from c000)
|
||||
2 = unused
|
||||
3 = unused
|
||||
4-7 = coin code
|
||||
0 = nothing
|
||||
1,2,3 = coin switch pressed
|
||||
e = tilt
|
||||
*/
|
||||
if (m_mcu_reportcoin & 0x08) return 0xe1; /* tilt */
|
||||
if (m_mcu_reportcoin & 0x01) return 0x11; /* coin 1 (will trigger "coin inserted" sound) */
|
||||
if (m_mcu_reportcoin & 0x02) return 0x21; /* coin 2 (will trigger "coin inserted" sound) */
|
||||
if (m_mcu_reportcoin & 0x04) return 0x31; /* coin 3 (will trigger "coin inserted" sound) */
|
||||
return 0x01;
|
||||
}
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(tnzs_state::tnzs_mcu_w)
|
||||
WRITE8_MEMBER(tnzs_state::arknoid2_mcu_w)
|
||||
{
|
||||
switch (m_mcu_type)
|
||||
if (offset == 0)
|
||||
{
|
||||
case MCU_TNZS:
|
||||
case MCU_CHUKATAI:
|
||||
mcu_tnzs_w(space, offset, data);
|
||||
break;
|
||||
case MCU_ARKANOID:
|
||||
mcu_arknoid2_w(space, offset, data);
|
||||
break;
|
||||
case MCU_EXTRMATN:
|
||||
case MCU_DRTOPPEL:
|
||||
case MCU_PLUMPOP:
|
||||
mcu_extrmatn_w(space, offset, data);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
//logerror("PC %04x: write %02x to mcu %04x\n", space.device().safe_pc(), data, 0xc000 + offset);
|
||||
if (m_mcu_command == 0x41)
|
||||
{
|
||||
m_mcu_credits = (m_mcu_credits + data) & 0xff;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
0xc1: read number of credits, then buttons
|
||||
0x54+0x41: add value to number of credits
|
||||
0x15: sub 1 credit (when "Continue Play" only)
|
||||
0x84: coin 1 lockout (issued only in test mode)
|
||||
0x88: coin 2 lockout (issued only in test mode)
|
||||
0x80: release coin lockout (issued only in test mode)
|
||||
during initialization, a sequence of 4 bytes sets coin/credit settings
|
||||
*/
|
||||
//logerror("PC %04x: write %02x to mcu %04x\n", space.device().safe_pc(), data, 0xc000 + offset);
|
||||
|
||||
if (m_mcu_initializing)
|
||||
{
|
||||
/* set up coin/credit settings */
|
||||
m_mcu_coinage[m_mcu_coinage_init++] = data;
|
||||
if (m_mcu_coinage_init == 4)
|
||||
m_mcu_coinage_init = 0; /* must not happen */
|
||||
}
|
||||
|
||||
if (data == 0xc1)
|
||||
m_mcu_readcredits = 0; /* reset input port number */
|
||||
|
||||
if (data == 0x15)
|
||||
{
|
||||
m_mcu_credits = (m_mcu_credits - 1) & 0xff;
|
||||
if (m_mcu_credits == 0xff)
|
||||
m_mcu_credits = 0;
|
||||
}
|
||||
m_mcu_command = data;
|
||||
}
|
||||
}
|
||||
|
||||
INTERRUPT_GEN_MEMBER(tnzs_state::arknoid2_interrupt)
|
||||
{
|
||||
int coin;
|
||||
|
||||
switch (m_mcu_type)
|
||||
{
|
||||
case MCU_ARKANOID:
|
||||
case MCU_EXTRMATN:
|
||||
case MCU_DRTOPPEL:
|
||||
case MCU_PLUMPOP:
|
||||
coin = 0;
|
||||
coin |= ((m_coin1->read() & 1) << 0);
|
||||
coin |= ((m_coin2->read() & 1) << 1);
|
||||
coin |= ((m_in2->read() & 3) << 2);
|
||||
coin ^= 0x0c;
|
||||
mcu_handle_coins(coin);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
int coin = ((m_coin1->read() & 1) << 0);
|
||||
coin |= ((m_coin2->read() & 1) << 1);
|
||||
coin |= ((m_in2->read() & 3) << 2);
|
||||
coin ^= 0x0c;
|
||||
mcu_handle_coins(coin);
|
||||
|
||||
device.execute().set_input_line(0, HOLD_LINE);
|
||||
}
|
||||
@ -613,22 +415,12 @@ INTERRUPT_GEN_MEMBER(tnzs_state::arknoid2_interrupt)
|
||||
MACHINE_RESET_MEMBER(tnzs_state,tnzs)
|
||||
{
|
||||
/* initialize the mcu simulation */
|
||||
switch (m_mcu_type)
|
||||
{
|
||||
case MCU_ARKANOID:
|
||||
case MCU_EXTRMATN:
|
||||
case MCU_DRTOPPEL:
|
||||
case MCU_PLUMPOP:
|
||||
mcu_reset();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (m_mcu_type == MCU_ARKANOID_SIM)
|
||||
arknoid2_mcu_reset();
|
||||
|
||||
m_kageki_csport_sel = 0;
|
||||
m_input_select = 0;
|
||||
m_mcu_readcredits = 0; // this might belong to mcu_reset
|
||||
m_insertcoin = 0; // this might belong to mcu_reset
|
||||
m_mcu_readcredits = 0; // this might belong to arknoid2_mcu_reset
|
||||
m_insertcoin = 0; // this might belong to arknoid2_mcu_reset
|
||||
}
|
||||
|
||||
MACHINE_RESET_MEMBER(tnzs_state,jpopnics)
|
||||
@ -655,7 +447,6 @@ MACHINE_START_MEMBER(tnzs_state,tnzs)
|
||||
MACHINE_START_CALL_MEMBER( tnzs_common );
|
||||
|
||||
save_item(NAME(m_kageki_csport_sel));
|
||||
save_item(NAME(m_input_select));
|
||||
save_item(NAME(m_mcu_readcredits));
|
||||
save_item(NAME(m_insertcoin));
|
||||
save_item(NAME(m_mcu_initializing));
|
||||
@ -684,22 +475,26 @@ WRITE8_MEMBER(tnzs_state::tnzs_ramrom_bankswitch_w)
|
||||
m_mainbank->set_bank(data & 0x07);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(tnzs_state::arknoid2_mcu_reset_w)
|
||||
{
|
||||
if (data & 0x04)
|
||||
arknoid2_mcu_reset();
|
||||
|
||||
/* bits 0-1 select ROM bank */
|
||||
m_bank2 = data & 0x03;
|
||||
m_subbank->set_entry(m_bank2);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(tnzs_state::tnzs_bankswitch1_w)
|
||||
{
|
||||
// logerror("PC %04x: writing %02x to bankswitch 1\n", space.device().safe_pc(),data);
|
||||
|
||||
switch (m_mcu_type)
|
||||
{
|
||||
case MCU_TNZS:
|
||||
case MCU_CHUKATAI:
|
||||
/* bit 2 resets the mcu */
|
||||
if (data & 0x04)
|
||||
{
|
||||
if (m_mcu != nullptr && m_mcu->type() == I8742)
|
||||
m_mcu->set_input_line(INPUT_LINE_RESET, PULSE_LINE);
|
||||
}
|
||||
/* Coin count and lockout is handled by the i8742 */
|
||||
break;
|
||||
case MCU_MCHIP_LLE:
|
||||
if ((data & 0x04) != 0 && m_mcu != nullptr)
|
||||
m_mcu->set_input_line(INPUT_LINE_RESET, PULSE_LINE);
|
||||
break;
|
||||
case MCU_NONE_INSECTX:
|
||||
machine().bookkeeping().coin_lockout_w(0, (~data & 0x04));
|
||||
machine().bookkeeping().coin_lockout_w(1, (~data & 0x08));
|
||||
@ -718,14 +513,6 @@ WRITE8_MEMBER(tnzs_state::tnzs_bankswitch1_w)
|
||||
machine().bookkeeping().coin_counter_w(0, (data & 0x04));
|
||||
machine().bookkeeping().coin_counter_w(1, (data & 0x08));
|
||||
break;
|
||||
case MCU_ARKANOID:
|
||||
case MCU_EXTRMATN:
|
||||
case MCU_DRTOPPEL:
|
||||
case MCU_PLUMPOP:
|
||||
/* bit 2 resets the mcu */
|
||||
if (data & 0x04)
|
||||
mcu_reset();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user