summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/bublbobl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/bublbobl.cpp')
-rw-r--r--src/mame/drivers/bublbobl.cpp64
1 files changed, 34 insertions, 30 deletions
diff --git a/src/mame/drivers/bublbobl.cpp b/src/mame/drivers/bublbobl.cpp
index 434cc015df9..63ea6bf6330 100644
--- a/src/mame/drivers/bublbobl.cpp
+++ b/src/mame/drivers/bublbobl.cpp
@@ -389,9 +389,19 @@ static ADDRESS_MAP_START( tokio_map, AS_PROGRAM, 8, bublbobl_state )
AM_RANGE(0xfb00, 0xfb00) AM_WRITE(tokio_videoctrl_w)
AM_RANGE(0xfb80, 0xfb80) AM_WRITE(bublbobl_nmitrigger_w)
AM_RANGE(0xfc00, 0xfc00) AM_READWRITE(bublbobl_sound_status_r, bublbobl_sound_command_w)
- AM_RANGE(0xfe00, 0xfe00) AM_READWRITE(tokio_mcu_r, tokio_mcu_w)
ADDRESS_MAP_END
+static ADDRESS_MAP_START( tokio_map_mcu, AS_PROGRAM, 8, bublbobl_state )
+ AM_IMPORT_FROM(tokio_map)
+ AM_RANGE(0xfe00, 0xfe00) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, mcu_r, mcu_w)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( tokio_map_bootleg, AS_PROGRAM, 8, bublbobl_state )
+ AM_IMPORT_FROM(tokio_map)
+ AM_RANGE(0xfe00, 0xfe00) AM_READ( tokiob_mcu_r )
+ADDRESS_MAP_END
+
+
static ADDRESS_MAP_START( tokio_slave_map, AS_PROGRAM, 8, bublbobl_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x97ff) AM_RAM AM_SHARE("share1")
@@ -619,7 +629,7 @@ static INPUT_PORTS_START( dland )
PORT_DIPSETTING( 0x20, "100 (Cheat)")
INPUT_PORTS_END
-static INPUT_PORTS_START( tokio )
+static INPUT_PORTS_START( tokio_base )
PORT_START("DSW0")
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW A:1")
PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
@@ -669,8 +679,8 @@ static INPUT_PORTS_START( tokio )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(1)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(1)
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, bublbobl_state,tokio_main_sent_r, nullptr)
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, bublbobl_state,tokio_mcu_sent_r, nullptr)
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) // see INPUT_PORTS_START( tokio )
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) // see INPUT_PORTS_START( tokio )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -695,7 +705,13 @@ static INPUT_PORTS_START( tokio )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
+static INPUT_PORTS_START( tokio )
+ PORT_INCLUDE( tokio_base )
+ PORT_MODIFY("IN0")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER("bmcu", taito68705_mcu_device, main_sent_r, nullptr)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER("bmcu", taito68705_mcu_device, mcu_sent_r, nullptr)
+INPUT_PORTS_END
/*************************************
*
@@ -744,15 +760,6 @@ MACHINE_RESET_MEMBER(bublbobl_state,common)
MACHINE_START_MEMBER(bublbobl_state,tokio)
{
MACHINE_START_CALL_MEMBER(common);
-
-
- save_item(NAME(m_mcu_sent));
- save_item(NAME(m_main_sent));
- save_item(NAME(m_from_main));
- save_item(NAME(m_from_mcu));
- save_item(NAME(m_from_mcu_latch));
- save_item(NAME(m_to_mcu_latch));
- save_item(NAME(m_old_portB));
}
@@ -767,7 +774,7 @@ static MACHINE_CONFIG_START( tokio, bublbobl_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, MAIN_XTAL/4) // 6 MHz
- MCFG_CPU_PROGRAM_MAP(tokio_map)
+ MCFG_CPU_PROGRAM_MAP(tokio_map_mcu)
MCFG_CPU_VBLANK_INT_DRIVER("screen", bublbobl_state, irq0_line_hold)
MCFG_CPU_ADD("slave", Z80, MAIN_XTAL/4) // 6 MHz
@@ -777,12 +784,7 @@ static MACHINE_CONFIG_START( tokio, bublbobl_state )
MCFG_CPU_ADD("audiocpu", Z80, MAIN_XTAL/8) // 3 MHz
MCFG_CPU_PROGRAM_MAP(tokio_sound_map) // NMIs are triggered by the main CPU, IRQs are triggered by the YM2203
- MCFG_CPU_ADD("mcu", M68705_NEW, MAIN_XTAL/8) // 3 Mhz
- MCFG_M68705_PORTA_R_CB(READ8(bublbobl_state, tokio_mcu_porta_r))
- MCFG_M68705_PORTA_W_CB(WRITE8(bublbobl_state, tokio_mcu_porta_w))
- MCFG_M68705_PORTB_W_CB(WRITE8(bublbobl_state, tokio_mcu_portb_w))
- MCFG_M68705_PORTC_R_CB(READ8(bublbobl_state, tokio_mcu_portc_r))
-
+ MCFG_DEVICE_ADD("bmcu", TAITO68705_MCU, MAIN_XTAL/8) // 3 Mhz
MCFG_QUANTUM_PERFECT_CPU("maincpu")
@@ -816,9 +818,16 @@ static MACHINE_CONFIG_START( tokio, bublbobl_state )
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( tokiob, tokio )
- MCFG_DEVICE_REMOVE("mcu")
+
+ MCFG_DEVICE_REMOVE("maincpu")
+ MCFG_DEVICE_REMOVE("bmcu")
+
+ MCFG_CPU_ADD("maincpu", Z80, MAIN_XTAL/4) // 6 MHz
+ MCFG_CPU_PROGRAM_MAP(tokio_map_bootleg)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", bublbobl_state, irq0_line_hold)
MACHINE_CONFIG_END
+
MACHINE_START_MEMBER(bublbobl_state,bublbobl)
{
MACHINE_START_CALL_MEMBER(common);
@@ -999,7 +1008,7 @@ ROM_START( tokio ) // newer japan set, has -1 revision of roms 02, 03 and 06
ROM_REGION( 0x10000, "audiocpu", 0 ) /* audio CPU */
ROM_LOAD( "a71-07.ic10", 0x0000, 0x08000, CRC(f298cc7b) SHA1(ebf5c804aa07b7f198ec3e1f8d1e111cd89ebdf3) )
- ROM_REGION( 0x0800, "mcu", 0 ) /* 2k for the microcontroller (68705P5) */
+ ROM_REGION( 0x0800, "bmcu:mcu", 0 ) /* 2k for the microcontroller (68705P5) */
ROM_LOAD( "a71__24.ic57", 0x0000, 0x0800, CRC(0f4b25de) SHA1(e2d82aa8d8cc6a86aaf5715ef9cb62f526fd5b11) )
ROM_REGION( 0x80000, "gfx1", ROMREGION_INVERT ) /* gfx roms, on gfx board */
@@ -1042,7 +1051,7 @@ ROM_START( tokioo ) // older japan set, has older roms 02, 03, 06
ROM_REGION( 0x10000, "audiocpu", 0 ) /* audio CPU */
ROM_LOAD( "a71-07.ic10", 0x0000, 0x08000, CRC(f298cc7b) SHA1(ebf5c804aa07b7f198ec3e1f8d1e111cd89ebdf3) )
- ROM_REGION( 0x0800, "mcu", 0 ) /* 2k for the microcontroller (68705P5) */
+ ROM_REGION( 0x0800, "bmcu:mcu", 0 ) /* 2k for the microcontroller (68705P5) */
ROM_LOAD( "a71__24.ic57", 0x0000, 0x0800, CRC(0f4b25de) SHA1(e2d82aa8d8cc6a86aaf5715ef9cb62f526fd5b11) )
ROM_REGION( 0x80000, "gfx1", ROMREGION_INVERT ) /* gfx roms, on gfx board */
@@ -1085,7 +1094,7 @@ ROM_START( tokiou )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* audio CPU */
ROM_LOAD( "a71-07.ic10", 0x0000, 0x08000, CRC(f298cc7b) SHA1(ebf5c804aa07b7f198ec3e1f8d1e111cd89ebdf3) )
- ROM_REGION( 0x0800, "mcu", 0 ) /* 2k for the microcontroller (68705P5) */
+ ROM_REGION( 0x0800, "bmcu:mcu", 0 ) /* 2k for the microcontroller (68705P5) */
ROM_LOAD( "a71__24.ic57", 0x0000, 0x0800, CRC(0f4b25de) SHA1(e2d82aa8d8cc6a86aaf5715ef9cb62f526fd5b11) )
ROM_REGION( 0x80000, "gfx1", ROMREGION_INVERT ) /* gfx roms, on gfx board */
@@ -1871,12 +1880,7 @@ DRIVER_INIT_MEMBER(bublbobl_state,tokio)
m_video_enable = 1;
}
-DRIVER_INIT_MEMBER(bublbobl_state,tokiob)
-{
- DRIVER_INIT_CALL(tokio);
- m_maincpu->space(AS_PROGRAM).install_read_handler(0xfe00, 0xfe00, read8_delegate(FUNC(bublbobl_state::tokiob_mcu_r),this) );
-}
DRIVER_INIT_MEMBER(bublbobl_state,dland)
{
@@ -1902,7 +1906,7 @@ DRIVER_INIT_MEMBER(bublbobl_state,dland)
GAME( 1986, tokio, 0, tokio, tokio, bublbobl_state, tokio, ROT90, "Taito Corporation", "Tokio / Scramble Formation (newer)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, tokioo, tokio, tokio, tokio, bublbobl_state, tokio, ROT90, "Taito Corporation", "Tokio / Scramble Formation (older)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, tokiou, tokio, tokio, tokio, bublbobl_state, tokio, ROT90, "Taito America Corporation (Romstar license)", "Tokio / Scramble Formation (US)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, tokiob, tokio, tokiob, tokio, bublbobl_state, tokiob, ROT90, "bootleg", "Tokio / Scramble Formation (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, tokiob, tokio, tokiob, tokio_base, bublbobl_state, tokio, ROT90, "bootleg", "Tokio / Scramble Formation (bootleg)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, bublbobl, 0, bublbobl, bublbobl, bublbobl_state, bublbobl, ROT0, "Taito Corporation", "Bubble Bobble (Japan, Ver 0.1)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, bublbobl1, bublbobl, bublbobl, bublbobl, bublbobl_state, bublbobl, ROT0, "Taito Corporation", "Bubble Bobble (Japan, Ver 0.0)", MACHINE_SUPPORTS_SAVE )