summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/vigilant.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/vigilant.cpp')
-rw-r--r--src/mame/drivers/vigilant.cpp33
1 files changed, 26 insertions, 7 deletions
diff --git a/src/mame/drivers/vigilant.cpp b/src/mame/drivers/vigilant.cpp
index d1c0ad5e0ff..2dea471ef4c 100644
--- a/src/mame/drivers/vigilant.cpp
+++ b/src/mame/drivers/vigilant.cpp
@@ -26,6 +26,8 @@ Bottom board - M75-B-A (all versions regardless of mask ROM/EPROM)
#include "includes/iremipt.h"
#include "cpu/z80/z80.h"
+#include "machine/gen_latch.h"
+#include "machine/rstbuf.h"
#include "sound/2203intf.h"
#include "sound/volt_reg.h"
#include "sound/ym2151.h"
@@ -83,7 +85,7 @@ ADDRESS_MAP_END
ADDRESS_MAP_START(vigilant_state::vigilant_io_map)
ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_DEVWRITE("m72", m72_audio_device, sound_command_w) /* SD */
+ AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* SD */
AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_WRITE(vigilant_out2_w) /* OUT2 */
AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2")
AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1")
@@ -109,7 +111,7 @@ ADDRESS_MAP_START(vigilant_state::kikcubic_io_map)
AM_RANGE(0x02, 0x02) AM_READ_PORT("IN0")
AM_RANGE(0x03, 0x03) AM_READ_PORT("IN1")
AM_RANGE(0x04, 0x04) AM_READ_PORT("IN2") AM_WRITE(bank_select_w)
- AM_RANGE(0x06, 0x06) AM_DEVWRITE("m72", m72_audio_device, sound_command_w)
+ AM_RANGE(0x06, 0x06) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
// AM_RANGE(0x07, 0x07) AM_WRITENOP /* ?? */
ADDRESS_MAP_END
@@ -123,7 +125,7 @@ ADDRESS_MAP_START(vigilant_state::sound_io_map)
AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
AM_RANGE(0x80, 0x81) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("m72", m72_audio_device, vigilant_sample_addr_w) /* STL / STH */
AM_RANGE(0x82, 0x82) AM_DEVWRITE("m72", m72_audio_device, sample_w) /* COUNT UP */
- AM_RANGE(0x83, 0x83) AM_DEVWRITE("m72", m72_audio_device, sound_irq_ack_w) /* IRQ clear */
+ AM_RANGE(0x83, 0x83) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w) /* IRQ clear */
AM_RANGE(0x84, 0x84) AM_DEVREAD("m72", m72_audio_device, sample_r) /* S ROM C */
ADDRESS_MAP_END
@@ -134,7 +136,7 @@ ADDRESS_MAP_START(vigilant_state::buccanrs_sound_io_map)
AM_RANGE(0x80, 0x80) AM_DEVREAD("soundlatch", generic_latch_8_device, read) /* SDRE */
AM_RANGE(0x80, 0x81) AM_DEVWRITE("m72", m72_audio_device, vigilant_sample_addr_w) /* STL / STH */
AM_RANGE(0x82, 0x82) AM_DEVWRITE("m72", m72_audio_device, sample_w) /* COUNT UP */
- AM_RANGE(0x83, 0x83) AM_DEVWRITE("m72", m72_audio_device, sound_irq_ack_w) /* IRQ clear */
+ AM_RANGE(0x83, 0x83) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w) /* IRQ clear */
AM_RANGE(0x84, 0x84) AM_DEVREAD("m72", m72_audio_device, sample_r) /* S ROM C */
ADDRESS_MAP_END
@@ -501,11 +503,16 @@ MACHINE_CONFIG_START(vigilant_state::vigilant)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
+ MCFG_GENERIC_LATCH_DATA_PENDING_CB(DEVWRITELINE("soundirq", rst_neg_buffer_device, rst18_w))
+ MCFG_GENERIC_LATCH_SEPARATE_ACKNOWLEDGE(true)
+
+ MCFG_DEVICE_ADD("soundirq", RST_NEG_BUFFER, 0)
+ MCFG_RST_BUFFER_INT_CALLBACK(INPUTLINE("soundcpu", 0))
MCFG_SOUND_ADD("m72", IREM_M72_AUDIO, 0)
MCFG_YM2151_ADD("ymsnd", 3579645)
- MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler))
+ MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("soundirq", rst_neg_buffer_device, rst28_w))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.55)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.55)
@@ -544,11 +551,16 @@ MACHINE_CONFIG_START(vigilant_state::buccanrs)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
+ MCFG_GENERIC_LATCH_DATA_PENDING_CB(DEVWRITELINE("soundirq", rst_neg_buffer_device, rst28_w))
+ MCFG_GENERIC_LATCH_SEPARATE_ACKNOWLEDGE(true)
+
+ MCFG_DEVICE_ADD("soundirq", RST_NEG_BUFFER, 0)
+ MCFG_RST_BUFFER_INT_CALLBACK(INPUTLINE("soundcpu", 0))
MCFG_SOUND_ADD("m72", IREM_M72_AUDIO, 0)
MCFG_SOUND_ADD("ym1", YM2203, 18432000/6)
- MCFG_YM2203_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler))
+ MCFG_YM2203_IRQ_HANDLER(DEVWRITELINE("soundirq", rst_neg_buffer_device, rst30_w))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.35)
MCFG_SOUND_ROUTE(0, "rspeaker", 0.35)
MCFG_SOUND_ROUTE(1, "lspeaker", 0.35)
@@ -586,6 +598,8 @@ MACHINE_CONFIG_START(vigilant_state::kikcubic)
MCFG_CPU_IO_MAP(sound_io_map)
MCFG_CPU_PERIODIC_INT_DRIVER(vigilant_state, nmi_line_pulse, 128*55) /* clocked by V1 */
/* IRQs are generated by main Z80 and YM2151 */
+ MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("soundirq", rst_neg_buffer_device, inta_cb)
+
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(55)
@@ -603,11 +617,16 @@ MACHINE_CONFIG_START(vigilant_state::kikcubic)
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
+ MCFG_GENERIC_LATCH_DATA_PENDING_CB(DEVWRITELINE("soundirq", rst_neg_buffer_device, rst28_w))
+ MCFG_GENERIC_LATCH_SEPARATE_ACKNOWLEDGE(true)
+
+ MCFG_DEVICE_ADD("soundirq", RST_NEG_BUFFER, 0)
+ MCFG_RST_BUFFER_INT_CALLBACK(INPUTLINE("soundcpu", 0))
MCFG_SOUND_ADD("m72", IREM_M72_AUDIO, 0)
MCFG_YM2151_ADD("ymsnd", 3579645)
- MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("m72", m72_audio_device, ym2151_irq_handler))
+ MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("soundirq", rst_neg_buffer_device, rst30_w))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.55)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.55)