summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/slapfght.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/slapfght.cpp')
-rw-r--r--src/mame/drivers/slapfght.cpp91
1 files changed, 38 insertions, 53 deletions
diff --git a/src/mame/drivers/slapfght.cpp b/src/mame/drivers/slapfght.cpp
index 881ec6bf79d..d36e2a0c466 100644
--- a/src/mame/drivers/slapfght.cpp
+++ b/src/mame/drivers/slapfght.cpp
@@ -262,6 +262,7 @@ Stephh's notes (based on the games Z80 code and some tests) :
#include "cpu/z80/z80.h"
#include "cpu/m6805/m6805.h"
+#include "machine/74259.h"
#include "sound/ay8910.h"
#include "speaker.h"
@@ -367,82 +368,49 @@ INTERRUPT_GEN_MEMBER(slapfght_state::vblank_irq)
device.execute().set_input_line(0, ASSERT_LINE);
}
-WRITE8_MEMBER(slapfght_state::irq_enable_w)
+WRITE_LINE_MEMBER(slapfght_state::irq_enable_w)
{
- m_main_irq_enabled = offset ? true : false;
+ m_main_irq_enabled = state ? true : false;
if (!m_main_irq_enabled)
m_maincpu->set_input_line(0, CLEAR_LINE);
}
-WRITE8_MEMBER(slapfght_state::sound_reset_w)
+WRITE_LINE_MEMBER(slapfght_state::sound_reset_w)
{
- m_audiocpu->set_input_line(INPUT_LINE_RESET, offset ? CLEAR_LINE : ASSERT_LINE);
+ m_audiocpu->set_input_line(INPUT_LINE_RESET, state ? CLEAR_LINE : ASSERT_LINE);
- if (offset == 0)
+ if (state == 0)
m_sound_nmi_enabled = false;
}
-WRITE8_MEMBER(slapfght_state::prg_bank_w)
-{
- membank("bank1")->set_entry(offset);
-}
-
READ8_MEMBER(slapfght_state::vblank_r)
{
return m_screen->vblank() ? 1 : 0;
}
-static ADDRESS_MAP_START( perfrman_io_map, AS_IO, 8, slapfght_state )
+static ADDRESS_MAP_START( io_map_nomcu, AS_IO, 8, slapfght_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ(vblank_r)
- AM_RANGE(0x00, 0x01) AM_WRITE(sound_reset_w)
- AM_RANGE(0x02, 0x03) AM_WRITE(flipscreen_w)
- AM_RANGE(0x06, 0x07) AM_WRITE(irq_enable_w)
- AM_RANGE(0x0c, 0x0d) AM_WRITE(palette_bank_w)
-ADDRESS_MAP_END
-
-
-static ADDRESS_MAP_START( tigerh_io_map, AS_IO, 8, slapfght_state )
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ(tigerh_mcu_status_r)
- AM_RANGE(0x00, 0x01) AM_WRITE(sound_reset_w)
- AM_RANGE(0x02, 0x03) AM_WRITE(flipscreen_w)
- AM_RANGE(0x06, 0x07) AM_WRITE(irq_enable_w)
-ADDRESS_MAP_END
-
-static ADDRESS_MAP_START( tigerhb_io_map, AS_IO, 8, slapfght_state )
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ(vblank_r) // no MCU
- AM_IMPORT_FROM( tigerh_io_map )
+ AM_RANGE(0x00, 0x0f) AM_DEVWRITE("mainlatch", ls259_device, write_a0)
ADDRESS_MAP_END
-
-static ADDRESS_MAP_START( slapfigh_io_map, AS_IO, 8, slapfght_state )
+static ADDRESS_MAP_START( io_map_mcu, AS_IO, 8, slapfght_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ(tigerh_mcu_status_r)
- AM_RANGE(0x00, 0x01) AM_WRITE(sound_reset_w)
- AM_RANGE(0x02, 0x03) AM_WRITE(flipscreen_w)
- AM_RANGE(0x06, 0x07) AM_WRITE(irq_enable_w)
- AM_RANGE(0x08, 0x09) AM_WRITE(prg_bank_w)
+ AM_RANGE(0x00, 0x0f) AM_DEVWRITE("mainlatch", ls259_device, write_a0)
ADDRESS_MAP_END
-static ADDRESS_MAP_START( slapfighb1_io_map, AS_IO, 8, slapfght_state )
+static ADDRESS_MAP_START( getstarb1_io_map, AS_IO, 8, slapfght_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ(vblank_r) // no MCU
- AM_IMPORT_FROM( slapfigh_io_map )
+ AM_RANGE(0x00, 0x00) AM_READ(getstarb1_prot_r)
+ AM_RANGE(0x00, 0x0f) AM_DEVWRITE("mainlatch", ls259_device, write_a0)
ADDRESS_MAP_END
-static ADDRESS_MAP_START( getstar_io_map, AS_IO, 8, slapfght_state )
+static ADDRESS_MAP_START( getstarb2_io_map, AS_IO, 8, slapfght_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ(getstar_mcusim_status_r)
- AM_IMPORT_FROM( slapfigh_io_map )
-ADDRESS_MAP_END
-
-static ADDRESS_MAP_START( getstarb1_io_map, AS_IO, 8, slapfght_state )
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ(getstarb1_prot_r)
- AM_IMPORT_FROM( getstar_io_map )
+ AM_RANGE(0x00, 0x0f) AM_DEVWRITE("mainlatch", ls259_device, write_a0)
ADDRESS_MAP_END
@@ -910,9 +878,15 @@ static MACHINE_CONFIG_START( perfrman )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz/4) // 4MHz? XTAL is known, divider is guessed
MCFG_CPU_PROGRAM_MAP(perfrman_map)
- MCFG_CPU_IO_MAP(perfrman_io_map)
+ MCFG_CPU_IO_MAP(io_map_nomcu)
MCFG_CPU_VBLANK_INT_DRIVER("screen", slapfght_state, vblank_irq)
+ MCFG_DEVICE_ADD("mainlatch", LS259, 0)
+ MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(WRITELINE(slapfght_state, sound_reset_w))
+ MCFG_ADDRESSABLE_LATCH_Q1_OUT_CB(WRITELINE(slapfght_state, flipscreen_w))
+ MCFG_ADDRESSABLE_LATCH_Q3_OUT_CB(WRITELINE(slapfght_state, irq_enable_w))
+ MCFG_ADDRESSABLE_LATCH_Q6_OUT_CB(WRITELINE(slapfght_state, palette_bank_w))
+
MCFG_CPU_ADD("audiocpu", Z80, XTAL_16MHz/8) // 2MHz? XTAL is known, divider is guessed
MCFG_CPU_PROGRAM_MAP(perfrman_sound_map)
MCFG_CPU_PERIODIC_INT_DRIVER(slapfght_state, sound_nmi, 240) // music speed, verified
@@ -955,9 +929,14 @@ static MACHINE_CONFIG_START( tigerh )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, XTAL_36MHz/6) // 6MHz
MCFG_CPU_PROGRAM_MAP(tigerh_map_mcu)
- MCFG_CPU_IO_MAP(tigerh_io_map)
+ MCFG_CPU_IO_MAP(io_map_mcu)
MCFG_CPU_VBLANK_INT_DRIVER("screen", slapfght_state, vblank_irq)
+ MCFG_DEVICE_ADD("mainlatch", LS259, 0)
+ MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(WRITELINE(slapfght_state, sound_reset_w))
+ MCFG_ADDRESSABLE_LATCH_Q1_OUT_CB(WRITELINE(slapfght_state, flipscreen_w))
+ MCFG_ADDRESSABLE_LATCH_Q3_OUT_CB(WRITELINE(slapfght_state, irq_enable_w))
+
MCFG_CPU_ADD("audiocpu", Z80, XTAL_36MHz/12) // 3MHz
MCFG_CPU_PROGRAM_MAP(tigerh_sound_map)
MCFG_CPU_PERIODIC_INT_DRIVER(slapfght_state, sound_nmi, 360) // music speed, verified with pcb recording
@@ -1001,7 +980,7 @@ static MACHINE_CONFIG_DERIVED( tigerhb1, tigerh )
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(tigerhb1_map)
- MCFG_CPU_IO_MAP(tigerhb_io_map)
+ MCFG_CPU_IO_MAP(io_map_nomcu)
MCFG_DEVICE_REMOVE("bmcu")
MACHINE_CONFIG_END
@@ -1019,9 +998,15 @@ static MACHINE_CONFIG_START( slapfigh )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu",Z80, XTAL_36MHz/6) // 6MHz
MCFG_CPU_PROGRAM_MAP(slapfigh_map_mcu)
- MCFG_CPU_IO_MAP(slapfigh_io_map)
+ MCFG_CPU_IO_MAP(io_map_mcu)
MCFG_CPU_VBLANK_INT_DRIVER("screen", slapfght_state, vblank_irq)
+ MCFG_DEVICE_ADD("mainlatch", LS259, 0)
+ MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(WRITELINE(slapfght_state, sound_reset_w))
+ MCFG_ADDRESSABLE_LATCH_Q1_OUT_CB(WRITELINE(slapfght_state, flipscreen_w))
+ MCFG_ADDRESSABLE_LATCH_Q3_OUT_CB(WRITELINE(slapfght_state, irq_enable_w))
+ MCFG_ADDRESSABLE_LATCH_Q4_OUT_CB(MEMBANK("bank1"))
+
MCFG_CPU_ADD("audiocpu", Z80, XTAL_36MHz/12) // 3MHz
MCFG_CPU_PROGRAM_MAP(tigerh_sound_map)
MCFG_CPU_PERIODIC_INT_DRIVER(slapfght_state, sound_nmi, 180)
@@ -1066,7 +1051,7 @@ static MACHINE_CONFIG_DERIVED( slapfighb1, slapfigh )
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(slapfighb1_map)
- MCFG_CPU_IO_MAP(slapfighb1_io_map)
+ MCFG_CPU_IO_MAP(io_map_nomcu)
MCFG_DEVICE_REMOVE("bmcu")
MACHINE_CONFIG_END
@@ -1090,7 +1075,7 @@ static MACHINE_CONFIG_DERIVED( getstarb2, slapfighb1 )
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(getstar_map)
- MCFG_CPU_IO_MAP(getstar_io_map)
+ MCFG_CPU_IO_MAP(getstarb2_io_map)
MACHINE_CONFIG_END