inufuku.cpp: Soundlatch modernization (nw)

This commit is contained in:
AJR 2017-06-14 11:23:55 -04:00
parent 8154dd217d
commit 774032e48b
2 changed files with 5 additions and 32 deletions

View File

@ -89,25 +89,6 @@ TODO:
******************************************************************************/
WRITE16_MEMBER(inufuku_state::inufuku_soundcommand_w)
{
if (ACCESSING_BITS_0_7)
{
/* hack... sound doesn't work otherwise */
if (data == 0x08)
return;
m_pending_command = 1;
m_soundlatch->write(space, 0, data & 0xff);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
}
WRITE8_MEMBER(inufuku_state::pending_command_clear_w)
{
m_pending_command = 0;
}
WRITE8_MEMBER(inufuku_state::inufuku_soundrombank_w)
{
membank("bank1")->set_entry(data & 0x03);
@ -121,9 +102,7 @@ WRITE8_MEMBER(inufuku_state::inufuku_soundrombank_w)
CUSTOM_INPUT_MEMBER(inufuku_state::soundflag_r)
{
uint16_t soundflag = m_pending_command ? 0 : 1;
return soundflag;
return m_soundlatch->pending_r() ? 0 : 1;
}
/******************************************************************************
@ -145,7 +124,7 @@ static ADDRESS_MAP_START( inufuku_map, AS_PROGRAM, 16, inufuku_state )
AM_RANGE(0x18000a, 0x18000b) AM_READ_PORT("P3")
AM_RANGE(0x200000, 0x200001) AM_WRITE_PORT("EEPROMOUT")
AM_RANGE(0x280000, 0x280001) AM_WRITE(inufuku_soundcommand_w) // sound command
AM_RANGE(0x280000, 0x280001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) // sound command
AM_RANGE(0x300000, 0x301fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // palette ram
AM_RANGE(0x380000, 0x3801ff) AM_WRITEONLY AM_SHARE("bg_rasterram") // bg raster ram
@ -179,7 +158,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( inufuku_sound_io_map, AS_IO, 8, inufuku_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(inufuku_soundrombank_w)
AM_RANGE(0x04, 0x04) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(pending_command_clear_w)
AM_RANGE(0x04, 0x04) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, acknowledge_w)
AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
ADDRESS_MAP_END
@ -331,8 +310,6 @@ void inufuku_state::machine_start()
membank("bank1")->configure_entries(0, 4, &ROM[0x00000], 0x8000);
membank("bank1")->set_entry(0);
save_item(NAME(m_pending_command));
save_item(NAME(m_bg_scrollx));
save_item(NAME(m_bg_scrolly));
save_item(NAME(m_tx_scrollx));
@ -344,7 +321,6 @@ void inufuku_state::machine_start()
void inufuku_state::machine_reset()
{
m_pending_command = 1;
m_bg_scrollx = 0;
m_bg_scrolly = 0;
m_tx_scrollx = 0;
@ -394,6 +370,8 @@ static MACHINE_CONFIG_START( inufuku )
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_DATA_PENDING_CB(INPUTLINE("audiocpu", INPUT_LINE_NMI))
MCFG_GENERIC_LATCH_SEPARATE_ACKNOWLEDGE(true)
MCFG_SOUND_ADD("ymsnd", YM2610, 32000000/4)
MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0))

View File

@ -43,9 +43,6 @@ public:
std::unique_ptr<uint16_t[]> m_spriteram1_old;
uint32_t inufuku_tile_callback( uint32_t code );
/* misc */
uint16_t m_pending_command;
/* devices */
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
@ -54,8 +51,6 @@ public:
required_device<vsystem_spr_device> m_spr;
required_device<generic_latch_8_device> m_soundlatch;
DECLARE_WRITE16_MEMBER(inufuku_soundcommand_w);
DECLARE_WRITE8_MEMBER(pending_command_clear_w);
DECLARE_WRITE8_MEMBER(inufuku_soundrombank_w);
DECLARE_WRITE16_MEMBER(inufuku_palettereg_w);
DECLARE_WRITE16_MEMBER(inufuku_scrollreg_w);