summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/xmen.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/xmen.cpp')
-rw-r--r--src/mame/drivers/xmen.cpp36
1 files changed, 7 insertions, 29 deletions
diff --git a/src/mame/drivers/xmen.cpp b/src/mame/drivers/xmen.cpp
index c5c5332bc7a..e4ffe113fe1 100644
--- a/src/mame/drivers/xmen.cpp
+++ b/src/mame/drivers/xmen.cpp
@@ -46,7 +46,10 @@ WRITE16_MEMBER(xmen_state::eeprom_w)
/* bit 3 is clock (active high) */
/* bit 4 is cs (active low) */
/* bit 5 is enabled in IRQ3, disabled in IRQ5 (sprite DMA start?) */
+ /* bit 6 is sound irq, but with some kind of hold */
ioport("EEPROMOUT")->write(data, 0xff);
+ if(data & 0x40)
+ m_audiocpu->set_input_line(0, HOLD_LINE);
}
if (ACCESSING_BITS_8_15)
{
@@ -57,25 +60,6 @@ WRITE16_MEMBER(xmen_state::eeprom_w)
}
}
-READ16_MEMBER(xmen_state::sound_status_r)
-{
- return m_soundlatch2->read(space, 0);
-}
-
-WRITE16_MEMBER(xmen_state::sound_cmd_w)
-{
- if (ACCESSING_BITS_0_7)
- {
- data &= 0xff;
- m_soundlatch->write(space, 0, data);
- }
-}
-
-WRITE16_MEMBER(xmen_state::sound_irq_w)
-{
- m_audiocpu->set_input_line(0, HOLD_LINE);
-}
-
WRITE16_MEMBER(xmen_state::xmen_18fa00_w)
{
if(ACCESSING_BITS_0_7)
@@ -99,9 +83,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, xmen_state )
AM_RANGE(0x104000, 0x104fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x108000, 0x108001) AM_WRITE(eeprom_w)
AM_RANGE(0x108020, 0x108027) AM_DEVWRITE("k053246", k053247_device, k053246_word_w)
- AM_RANGE(0x10804c, 0x10804d) AM_WRITE(sound_cmd_w)
- AM_RANGE(0x10804e, 0x10804f) AM_WRITE(sound_irq_w)
- AM_RANGE(0x108054, 0x108055) AM_READ(sound_status_r)
+ AM_RANGE(0x108040, 0x10805f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff)
AM_RANGE(0x108060, 0x10807f) AM_DEVWRITE("k053251", k053251_device, lsb_w)
AM_RANGE(0x10a000, 0x10a001) AM_READ_PORT("P2_P4") AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
AM_RANGE(0x10a002, 0x10a003) AM_READ_PORT("P1_P3")
@@ -118,8 +100,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, xmen_state )
AM_RANGE(0xc000, 0xdfff) AM_RAM
AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("k054539", k054539_device, read, write)
AM_RANGE(0xe800, 0xe801) AM_MIRROR(0x0400) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
- AM_RANGE(0xf002, 0xf002) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
+ AM_RANGE(0xf000, 0xf003) AM_DEVICE("k054321", k054321_device, sound_map)
AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_bankswitch_w)
ADDRESS_MAP_END
@@ -134,9 +115,7 @@ static ADDRESS_MAP_START( 6p_main_map, AS_PROGRAM, 16, xmen_state )
AM_RANGE(0x104000, 0x104fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x108000, 0x108001) AM_WRITE(eeprom_w)
AM_RANGE(0x108020, 0x108027) AM_DEVWRITE("k053246", k053247_device, k053246_word_w) /* sprites */
- AM_RANGE(0x10804c, 0x10804d) AM_WRITE(sound_cmd_w)
- AM_RANGE(0x10804e, 0x10804f) AM_WRITE(sound_irq_w)
- AM_RANGE(0x108054, 0x108055) AM_READ(sound_status_r)
+ AM_RANGE(0x108040, 0x10805f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff)
AM_RANGE(0x108060, 0x10807f) AM_DEVWRITE("k053251", k053251_device, lsb_w)
AM_RANGE(0x10a000, 0x10a001) AM_READ_PORT("P2_P4") AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
AM_RANGE(0x10a002, 0x10a003) AM_READ_PORT("P1_P3")
@@ -354,8 +333,7 @@ static MACHINE_CONFIG_START( xmen, xmen_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
- MCFG_GENERIC_LATCH_8_ADD("soundlatch")
- MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
+ MCFG_K054321_ADD("k054321", ":lspeaker", ":rspeaker")
MCFG_YM2151_ADD("ymsnd", XTAL_16MHz/4) /* verified on pcb */
MCFG_SOUND_ROUTE(0, "lspeaker", 0.20)