summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/kingobox.cpp
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2017-08-14 23:39:59 -0400
committer AJR <ajrhacker@users.noreply.github.com>2017-08-14 23:39:59 -0400
commit5a225225f351a6312fd02387fd4181450c07ee59 (patch)
tree069d8f1d4d14bf00351b863f29a95efc0eeed668 /src/mame/drivers/kingobox.cpp
parent98c6e4c253c9f74c9ccbc966d1285e29311ab1d1 (diff)
kingofb, ringking: NMI modernization (nw)
Diffstat (limited to 'src/mame/drivers/kingobox.cpp')
-rw-r--r--src/mame/drivers/kingobox.cpp37
1 files changed, 20 insertions, 17 deletions
diff --git a/src/mame/drivers/kingobox.cpp b/src/mame/drivers/kingobox.cpp
index fbd8ac33a2e..d9e64990d0a 100644
--- a/src/mame/drivers/kingobox.cpp
+++ b/src/mame/drivers/kingobox.cpp
@@ -21,6 +21,7 @@ Main CPU:
#include "includes/kingobox.h"
#include "cpu/z80/z80.h"
+#include "machine/clock.h"
#include "sound/ay8910.h"
#include "sound/dac.h"
#include "sound/volt_reg.h"
@@ -442,22 +443,14 @@ static GFXDECODE_START( rk )
GFXDECODE_ENTRY( "gfx4", 0x00000, rk_bglayout, 0, 32 ) /* bg tiles */
GFXDECODE_END
-INTERRUPT_GEN_MEMBER(kingofb_state::kingofb_interrupt)
-{
- if (m_nmi_enable)
- device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
-}
-
void kingofb_state::machine_start()
{
- save_item(NAME(m_nmi_enable));
save_item(NAME(m_palette_bank));
}
void kingofb_state::machine_reset()
{
- m_nmi_enable = 0;
- m_palette_bank = 0;
+ kingofb_f800_w(machine().dummy_space(), 0, 0); // LS174 reset
}
static MACHINE_CONFIG_START( kingofb )
@@ -465,20 +458,24 @@ static MACHINE_CONFIG_START( kingofb )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, 4000000) /* 4.0 MHz */
MCFG_CPU_PROGRAM_MAP(kingobox_map)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", kingofb_state, kingofb_interrupt)
MCFG_CPU_ADD("video", Z80, 4000000) /* 4.0 MHz */
MCFG_CPU_PROGRAM_MAP(kingobox_video_map)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", kingofb_state, kingofb_interrupt)
MCFG_CPU_ADD("sprite", Z80, 4000000) /* 4.0 MHz */
MCFG_CPU_PROGRAM_MAP(kingobox_sprite_map)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", kingofb_state, kingofb_interrupt)
+
+ MCFG_INPUT_MERGER_ALL_HIGH("nmigate")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", INPUT_LINE_NMI))
+ MCFG_DEVCB_CHAIN_OUTPUT(INPUTLINE("video", INPUT_LINE_NMI))
+ MCFG_DEVCB_CHAIN_OUTPUT(INPUTLINE("sprite", INPUT_LINE_NMI))
MCFG_CPU_ADD("audiocpu", Z80, 4000000) /* 4.0 MHz */
MCFG_CPU_PROGRAM_MAP(kingobox_sound_map)
MCFG_CPU_IO_MAP(kingobox_sound_io_map)
- MCFG_CPU_PERIODIC_INT_DRIVER(kingofb_state, nmi_line_pulse, 6000) /* Hz */
+
+ MCFG_DEVICE_ADD("soundnmi", CLOCK, 6000) /* Hz */
+ MCFG_CLOCK_SIGNAL_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_NMI))
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* We really need heavy synching among the processors */
@@ -491,6 +488,7 @@ static MACHINE_CONFIG_START( kingofb )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(kingofb_state, screen_update_kingofb)
MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("nmigate", input_merger_device, in_w<0>))
MCFG_GFXDECODE_ADD("gfxdecode", "palette", kingobox)
MCFG_PALETTE_ADD("palette", 256+8*2)
@@ -519,20 +517,24 @@ static MACHINE_CONFIG_START( ringking )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, 4000000) /* 4.0 MHz */
MCFG_CPU_PROGRAM_MAP(ringking_map)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", kingofb_state, kingofb_interrupt)
MCFG_CPU_ADD("video", Z80, 4000000) /* 4.0 MHz */
MCFG_CPU_PROGRAM_MAP(ringking_video_map)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", kingofb_state, kingofb_interrupt)
MCFG_CPU_ADD("sprite", Z80, 4000000) /* 4.0 MHz */
MCFG_CPU_PROGRAM_MAP(ringking_sprite_map)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", kingofb_state, kingofb_interrupt)
+
+ MCFG_INPUT_MERGER_ANY_HIGH("nmigate")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", INPUT_LINE_NMI))
+ MCFG_DEVCB_CHAIN_OUTPUT(INPUTLINE("video", INPUT_LINE_NMI))
+ MCFG_DEVCB_CHAIN_OUTPUT(INPUTLINE("sprite", INPUT_LINE_NMI))
MCFG_CPU_ADD("audiocpu", Z80, 4000000) /* 4.0 MHz */
MCFG_CPU_PROGRAM_MAP(kingobox_sound_map)
MCFG_CPU_IO_MAP(ringking_sound_io_map)
- MCFG_CPU_PERIODIC_INT_DRIVER(kingofb_state, nmi_line_pulse, 6000) /* Hz */
+
+ MCFG_DEVICE_ADD("soundnmi", CLOCK, 6000) /* Hz */
+ MCFG_CLOCK_SIGNAL_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_NMI))
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* We really need heavy synching among the processors */
@@ -545,6 +547,7 @@ static MACHINE_CONFIG_START( ringking )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(kingofb_state, screen_update_ringking)
MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("nmigate", input_merger_device, in_w<0>))
MCFG_GFXDECODE_ADD("gfxdecode", "palette", rk)
MCFG_PALETTE_ADD("palette", 256+8*2)