diff options
author | Ivan Vangelista <mesgnet@yahoo.it> | 2015-03-31 20:50:11 +0200 |
---|---|---|
committer | Ivan Vangelista <mesgnet@yahoo.it> | 2015-03-31 20:50:11 +0200 |
commit | 2123f510df1b623ef147e9274f5768bf33a9b7f1 (patch) | |
tree | 617683920dfc52f0ad00fe89101aafdb1a86d95d | |
parent | 73ee1e9042b35d4872b95c47179b7cc73ad9594b (diff) |
niyanpai.c: added save state support, configured banking and removed some trampolines (nw)
-rw-r--r-- | src/mame/drivers/niyanpai.c | 213 | ||||
-rw-r--r-- | src/mame/includes/niyanpai.h | 94 | ||||
-rw-r--r-- | src/mame/video/niyanpai.c | 81 |
3 files changed, 199 insertions, 189 deletions
diff --git a/src/mame/drivers/niyanpai.c b/src/mame/drivers/niyanpai.c index 0ed984c085a..c7dda71326e 100644 --- a/src/mame/drivers/niyanpai.c +++ b/src/mame/drivers/niyanpai.c @@ -44,58 +44,21 @@ Memo: #include "includes/niyanpai.h" -void niyanpai_state::niyanpai_soundbank_w(int data) -{ - UINT8 *SNDROM = memregion("audiocpu")->base(); - - membank("bank1")->set_base(&SNDROM[0x08000 + (0x8000 * (data & 0x03))]); -} - -READ8_MEMBER(niyanpai_state::niyanpai_sound_r) -{ - return soundlatch_byte_r(space, 0); -} - -WRITE16_MEMBER(niyanpai_state::niyanpai_sound_w) +WRITE16_MEMBER(niyanpai_state::sound_w) { soundlatch_byte_w(space, 0, ((data >> 8) & 0xff)); } -WRITE8_MEMBER(niyanpai_state::niyanpai_soundclr_w) +WRITE8_MEMBER(niyanpai_state::soundbank_w) { - soundlatch_clear_byte_w(space, 0, 0); + membank("soundbank")->set_entry(data & 0x03); } - -READ8_MEMBER(niyanpai_state::cpu_portd_r) +WRITE8_MEMBER(niyanpai_state::soundlatch_clear_w) { - return niyanpai_sound_r(space, 0); + if (!(data & 0x01)) soundlatch_clear_byte_w(space, 0, 0); } -WRITE8_MEMBER(niyanpai_state::cpu_porta_w) -{ - niyanpai_soundbank_w(data & 0x03); -} - -WRITE8_MEMBER(niyanpai_state::cpu_portb_w) -{ - m_dac1->write_unsigned8(data); -} - -WRITE8_MEMBER(niyanpai_state::cpu_portc_w) -{ - m_dac2->write_unsigned8(data); -} - -WRITE8_MEMBER(niyanpai_state::cpu_porte_w) -{ - if (!(data & 0x01)) niyanpai_soundclr_w(space, 0, 0); -} - - -void niyanpai_state::machine_reset() -{ -} DRIVER_INIT_MEMBER(niyanpai_state,niyanpai) { @@ -105,14 +68,15 @@ DRIVER_INIT_MEMBER(niyanpai_state,niyanpai) SNDROM[0x0213] = 0x00; // DI -> NOP // initialize sound rom bank - niyanpai_soundbank_w(0); + membank("soundbank")->configure_entries(0, 2, memregion("audiocpu")->base() + 0x8000, 0x8000); + membank("soundbank")->set_entry(0); // initialize out coin flag (musobana) m_musobana_outcoin_flag = 1; } -READ16_MEMBER(niyanpai_state::niyanpai_dipsw_r) +READ16_MEMBER(niyanpai_state::dipsw_r) { UINT8 dipsw_a, dipsw_b; @@ -129,6 +93,13 @@ READ16_MEMBER(niyanpai_state::niyanpai_dipsw_r) return ((dipsw_a << 8) | dipsw_b); } +MACHINE_START_MEMBER(niyanpai_state, musobana) +{ + save_item(NAME(m_motor_on)); + save_item(NAME(m_musobana_inputport)); + save_item(NAME(m_musobana_outcoin_flag)); +} + READ16_MEMBER(niyanpai_state::musobana_inputport_0_r) { int portdata; @@ -177,33 +148,33 @@ static ADDRESS_MAP_START( niyanpai_map, AS_PROGRAM, 16, niyanpai_state ) AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_RANGE(0x040000, 0x040fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x0a0000, 0x0a08ff) AM_READWRITE(niyanpai_palette_r,niyanpai_palette_w) + AM_RANGE(0x0a0000, 0x0a08ff) AM_READWRITE(palette_r,palette_w) AM_RANGE(0x0a0900, 0x0a11ff) AM_RAM // palette work ram? AM_RANGE(0x0bf800, 0x0bffff) AM_RAM - AM_RANGE(0x200000, 0x200001) AM_WRITE(niyanpai_sound_w) + AM_RANGE(0x200000, 0x200001) AM_WRITE(sound_w) AM_RANGE(0x200200, 0x200201) AM_WRITENOP // unknown AM_RANGE(0x240000, 0x240009) AM_WRITENOP // unknown AM_RANGE(0x240200, 0x2403ff) AM_WRITENOP // unknown - AM_RANGE(0x240400, 0x240403) AM_READ8(niyanpai_blitter_0_r, 0x00ff) - AM_RANGE(0x240400, 0x24041f) AM_WRITE8(niyanpai_blitter_0_w, 0x00ff) - AM_RANGE(0x240420, 0x24043f) AM_WRITE8(niyanpai_clut_0_w, 0x00ff) - AM_RANGE(0x240600, 0x240603) AM_READ8(niyanpai_blitter_1_r, 0x00ff) - AM_RANGE(0x240600, 0x24061f) AM_WRITE8(niyanpai_blitter_1_w, 0x00ff) - AM_RANGE(0x240620, 0x24063f) AM_WRITE8(niyanpai_clut_1_w, 0x00ff) - AM_RANGE(0x240800, 0x240803) AM_READ8(niyanpai_blitter_2_r, 0x00ff) - AM_RANGE(0x240800, 0x24081f) AM_WRITE8(niyanpai_blitter_2_w, 0x00ff) - AM_RANGE(0x240820, 0x24083f) AM_WRITE8(niyanpai_clut_2_w, 0x00ff) - AM_RANGE(0x280000, 0x280001) AM_READ(niyanpai_dipsw_r) + AM_RANGE(0x240400, 0x240403) AM_READ8(blitter_0_r, 0x00ff) + AM_RANGE(0x240400, 0x24041f) AM_WRITE8(blitter_0_w, 0x00ff) + AM_RANGE(0x240420, 0x24043f) AM_WRITE8(clut_0_w, 0x00ff) + AM_RANGE(0x240600, 0x240603) AM_READ8(blitter_1_r, 0x00ff) + AM_RANGE(0x240600, 0x24061f) AM_WRITE8(blitter_1_w, 0x00ff) + AM_RANGE(0x240620, 0x24063f) AM_WRITE8(clut_1_w, 0x00ff) + AM_RANGE(0x240800, 0x240803) AM_READ8(blitter_2_r, 0x00ff) + AM_RANGE(0x240800, 0x24081f) AM_WRITE8(blitter_2_w, 0x00ff) + AM_RANGE(0x240820, 0x24083f) AM_WRITE8(clut_2_w, 0x00ff) + AM_RANGE(0x280000, 0x280001) AM_READ(dipsw_r) AM_RANGE(0x280200, 0x280201) AM_READ_PORT("P1_P2") AM_RANGE(0x280400, 0x280401) AM_READ_PORT("SYSTEM") - AM_RANGE(0x240a00, 0x240a01) AM_WRITE8(niyanpai_clutsel_0_w, 0x00ff) - AM_RANGE(0x240c00, 0x240c01) AM_WRITE8(niyanpai_clutsel_1_w, 0x00ff) - AM_RANGE(0x240e00, 0x240e01) AM_WRITE8(niyanpai_clutsel_2_w, 0x00ff) + AM_RANGE(0x240a00, 0x240a01) AM_WRITE8(clutsel_0_w, 0x00ff) + AM_RANGE(0x240c00, 0x240c01) AM_WRITE8(clutsel_1_w, 0x00ff) + AM_RANGE(0x240e00, 0x240e01) AM_WRITE8(clutsel_2_w, 0x00ff) AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) // TMP68301 Registers ADDRESS_MAP_END @@ -212,34 +183,34 @@ static ADDRESS_MAP_START( musobana_map, AS_PROGRAM, 16, niyanpai_state ) AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_RANGE(0x040000, 0x040fff) AM_RAM - AM_RANGE(0x0a0000, 0x0a08ff) AM_READWRITE(niyanpai_palette_r,niyanpai_palette_w) + AM_RANGE(0x0a0000, 0x0a08ff) AM_READWRITE(palette_r,palette_w) AM_RANGE(0x0a0900, 0x0a11ff) AM_RAM // palette work ram? AM_RANGE(0x0a8000, 0x0a87ff) AM_RAM AM_SHARE("nvram") AM_RANGE(0x0bf800, 0x0bffff) AM_RAM - AM_RANGE(0x200000, 0x200001) AM_WRITE(niyanpai_sound_w) + AM_RANGE(0x200000, 0x200001) AM_WRITE(sound_w) AM_RANGE(0x200200, 0x200201) AM_WRITE(musobana_inputport_w) // inputport select AM_RANGE(0x240000, 0x240009) AM_WRITENOP // unknown AM_RANGE(0x240200, 0x2403ff) AM_WRITENOP // unknown - AM_RANGE(0x240400, 0x240403) AM_READ8(niyanpai_blitter_0_r, 0x00ff) - AM_RANGE(0x240400, 0x24041f) AM_WRITE8(niyanpai_blitter_0_w, 0x00ff) - AM_RANGE(0x240420, 0x24043f) AM_WRITE8(niyanpai_clut_0_w, 0x00ff) + AM_RANGE(0x240400, 0x240403) AM_READ8(blitter_0_r, 0x00ff) + AM_RANGE(0x240400, 0x24041f) AM_WRITE8(blitter_0_w, 0x00ff) + AM_RANGE(0x240420, 0x24043f) AM_WRITE8(clut_0_w, 0x00ff) - AM_RANGE(0x240600, 0x240603) AM_READ8(niyanpai_blitter_1_r, 0x00ff) - AM_RANGE(0x240600, 0x24061f) AM_WRITE8(niyanpai_blitter_1_w, 0x00ff) - AM_RANGE(0x240620, 0x24063f) AM_WRITE8(niyanpai_clut_1_w, 0x00ff) + AM_RANGE(0x240600, 0x240603) AM_READ8(blitter_1_r, 0x00ff) + AM_RANGE(0x240600, 0x24061f) AM_WRITE8(blitter_1_w, 0x00ff) + AM_RANGE(0x240620, 0x24063f) AM_WRITE8(clut_1_w, 0x00ff) - AM_RANGE(0x240800, 0x240803) AM_READ8(niyanpai_blitter_2_r, 0x00ff) - AM_RANGE(0x240800, 0x24081f) AM_WRITE8(niyanpai_blitter_2_w, 0x00ff) - AM_RANGE(0x240820, 0x24083f) AM_WRITE8(niyanpai_clut_2_w, 0x00ff) - AM_RANGE(0x240a00, 0x240a01) AM_WRITE8(niyanpai_clutsel_0_w, 0x00ff) - AM_RANGE(0x240c00, 0x240c01) AM_WRITE8(niyanpai_clutsel_1_w, 0x00ff) - AM_RANGE(0x240e00, 0x240e01) AM_WRITE8(niyanpai_clutsel_2_w, 0x00ff) + AM_RANGE(0x240800, 0x240803) AM_READ8(blitter_2_r, 0x00ff) + AM_RANGE(0x240800, 0x24081f) AM_WRITE8(blitter_2_w, 0x00ff) + AM_RANGE(0x240820, 0x24083f) AM_WRITE8(clut_2_w, 0x00ff) + AM_RANGE(0x240a00, 0x240a01) AM_WRITE8(clutsel_0_w, 0x00ff) + AM_RANGE(0x240c00, 0x240c01) AM_WRITE8(clutsel_1_w, 0x00ff) + AM_RANGE(0x240e00, 0x240e01) AM_WRITE8(clutsel_2_w, 0x00ff) - AM_RANGE(0x280000, 0x280001) AM_READ(niyanpai_dipsw_r) + AM_RANGE(0x280000, 0x280001) AM_READ(dipsw_r) AM_RANGE(0x280200, 0x280201) AM_READ(musobana_inputport_0_r) AM_RANGE(0x280400, 0x280401) AM_READ_PORT("SYSTEM") @@ -250,36 +221,36 @@ static ADDRESS_MAP_START( mhhonban_map, AS_PROGRAM, 16, niyanpai_state ) AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_RANGE(0x040000, 0x040fff) AM_RAM - AM_RANGE(0x060000, 0x0608ff) AM_READWRITE(niyanpai_palette_r,niyanpai_palette_w) + AM_RANGE(0x060000, 0x0608ff) AM_READWRITE(palette_r,palette_w) AM_RANGE(0x060900, 0x0611ff) AM_RAM // palette work ram? AM_RANGE(0x07f800, 0x07ffff) AM_RAM AM_RANGE(0x0a8000, 0x0a87ff) AM_RAM AM_SHARE("nvram") AM_RANGE(0x0bf000, 0x0bffff) AM_RAM - AM_RANGE(0x200000, 0x200001) AM_WRITE(niyanpai_sound_w) + AM_RANGE(0x200000, 0x200001) AM_WRITE(sound_w) AM_RANGE(0x200200, 0x200201) AM_WRITE(musobana_inputport_w) // inputport select AM_RANGE(0x240000, 0x240009) AM_WRITENOP // unknown AM_RANGE(0x240200, 0x2403ff) AM_WRITENOP // unknown - AM_RANGE(0x240400, 0x240403) AM_READ8(niyanpai_blitter_0_r, 0x00ff) - AM_RANGE(0x240400, 0x24041f) AM_WRITE8(niyanpai_blitter_0_w, 0x00ff) - AM_RANGE(0x240420, 0x24043f) AM_WRITE8(niyanpai_clut_0_w, 0x00ff) + AM_RANGE(0x240400, 0x240403) AM_READ8(blitter_0_r, 0x00ff) + AM_RANGE(0x240400, 0x24041f) AM_WRITE8(blitter_0_w, 0x00ff) + AM_RANGE(0x240420, 0x24043f) AM_WRITE8(clut_0_w, 0x00ff) - AM_RANGE(0x240600, 0x240603) AM_READ8(niyanpai_blitter_1_r, 0x00ff) - AM_RANGE(0x240600, 0x24061f) AM_WRITE8(niyanpai_blitter_1_w, 0x00ff) - AM_RANGE(0x240620, 0x24063f) AM_WRITE8(niyanpai_clut_1_w, 0x00ff) + AM_RANGE(0x240600, 0x240603) AM_READ8(blitter_1_r, 0x00ff) + AM_RANGE(0x240600, 0x24061f) AM_WRITE8(blitter_1_w, 0x00ff) + AM_RANGE(0x240620, 0x24063f) AM_WRITE8(clut_1_w, 0x00ff) - AM_RANGE(0x240800, 0x240803) AM_READ8(niyanpai_blitter_2_r, 0x00ff) - AM_RANGE(0x240800, 0x24081f) AM_WRITE8(niyanpai_blitter_2_w, 0x00ff) - AM_RANGE(0x240820, 0x24083f) AM_WRITE8(niyanpai_clut_2_w, 0x00ff) + AM_RANGE(0x240800, 0x240803) AM_READ8(blitter_2_r, 0x00ff) + AM_RANGE(0x240800, 0x24081f) AM_WRITE8(blitter_2_w, 0x00ff) + AM_RANGE(0x240820, 0x24083f) AM_WRITE8(clut_2_w, 0x00ff) - AM_RANGE(0x240a00, 0x240a01) AM_WRITE8(niyanpai_clutsel_0_w, 0x00ff) - AM_RANGE(0x240c00, 0x240c01) AM_WRITE8(niyanpai_clutsel_1_w, 0x00ff) - AM_RANGE(0x240e00, 0x240e01) AM_WRITE8(niyanpai_clutsel_2_w, 0x00ff) + AM_RANGE(0x240a00, 0x240a01) AM_WRITE8(clutsel_0_w, 0x00ff) + AM_RANGE(0x240c00, 0x240c01) AM_WRITE8(clutsel_1_w, 0x00ff) + AM_RANGE(0x240e00, 0x240e01) AM_WRITE8(clutsel_2_w, 0x00ff) - AM_RANGE(0x280000, 0x280001) AM_READ(niyanpai_dipsw_r) + AM_RANGE(0x280000, 0x280001) AM_READ(dipsw_r) AM_RANGE(0x280200, 0x280201) AM_READ(musobana_inputport_0_r) AM_RANGE(0x280400, 0x280401) AM_READ_PORT("SYSTEM") @@ -290,35 +261,35 @@ static ADDRESS_MAP_START( zokumahj_map, AS_PROGRAM, 16, niyanpai_state ) AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_RANGE(0x0ff000, 0x0fffff) AM_RAM - AM_RANGE(0x0e0000, 0x0e08ff) AM_READWRITE(niyanpai_palette_r,niyanpai_palette_w) + AM_RANGE(0x0e0000, 0x0e08ff) AM_READWRITE(palette_r,palette_w) AM_RANGE(0x0e0900, 0x0e11ff) AM_RAM // palette work ram? AM_RANGE(0x0a8000, 0x0a87ff) AM_RAM AM_SHARE("nvram") AM_RANGE(0x0c0000, 0x0cffff) AM_RAM - AM_RANGE(0x200000, 0x200001) AM_WRITE(niyanpai_sound_w) + AM_RANGE(0x200000, 0x200001) AM_WRITE(sound_w) AM_RANGE(0x200200, 0x200201) AM_WRITE(musobana_inputport_w) // inputport select AM_RANGE(0x240000, 0x240009) AM_WRITENOP // unknown AM_RANGE(0x240200, 0x2403ff) AM_WRITENOP // unknown - AM_RANGE(0x240400, 0x240403) AM_READ8(niyanpai_blitter_0_r, 0x00ff) - AM_RANGE(0x240400, 0x24041f) AM_WRITE8(niyanpai_blitter_0_w, 0x00ff) - AM_RANGE(0x240420, 0x24043f) AM_WRITE8(niyanpai_clut_0_w, 0x00ff) + AM_RANGE(0x240400, 0x240403) AM_READ8(blitter_0_r, 0x00ff) + AM_RANGE(0x240400, 0x24041f) AM_WRITE8(blitter_0_w, 0x00ff) + AM_RANGE(0x240420, 0x24043f) AM_WRITE8(clut_0_w, 0x00ff) - AM_RANGE(0x240600, 0x240603) AM_READ8(niyanpai_blitter_1_r, 0x00ff) - AM_RANGE(0x240600, 0x24061f) AM_WRITE8(niyanpai_blitter_1_w, 0x00ff) - AM_RANGE(0x240620, 0x24063f) AM_WRITE8(niyanpai_clut_1_w, 0x00ff) + AM_RANGE(0x240600, 0x240603) AM_READ8(blitter_1_r, 0x00ff) + AM_RANGE(0x240600, 0x24061f) AM_WRITE8(blitter_1_w, 0x00ff) + AM_RANGE(0x240620, 0x24063f) AM_WRITE8(clut_1_w, 0x00ff) - AM_RANGE(0x240800, 0x240803) AM_READ8(niyanpai_blitter_2_r, 0x00ff) - AM_RANGE(0x240800, 0x24081f) AM_WRITE8(niyanpai_blitter_2_w, 0x00ff) - AM_RANGE(0x240820, 0x24083f) AM_WRITE8(niyanpai_clut_2_w, 0x00ff) + AM_RANGE(0x240800, 0x240803) AM_READ8(blitter_2_r, 0x00ff) + AM_RANGE(0x240800, 0x24081f) AM_WRITE8(blitter_2_w, 0x00ff) + AM_RANGE(0x240820, 0x24083f) AM_WRITE8(clut_2_w, 0x00ff) - AM_RANGE(0x240a00, 0x240a01) AM_WRITE8(niyanpai_clutsel_0_w, 0x00ff) - AM_RANGE(0x240c00, 0x240c01) AM_WRITE8(niyanpai_clutsel_1_w, 0x00ff) - AM_RANGE(0x240e00, 0x240e01) AM_WRITE8(niyanpai_clutsel_2_w, 0x00ff) + AM_RANGE(0x240a00, 0x240a01) AM_WRITE8(clutsel_0_w, 0x00ff) + AM_RANGE(0x240c00, 0x240c01) AM_WRITE8(clutsel_1_w, 0x00ff) + AM_RANGE(0x240e00, 0x240e01) AM_WRITE8(clutsel_2_w, 0x00ff) - AM_RANGE(0x280000, 0x280001) AM_READ(niyanpai_dipsw_r) + AM_RANGE(0x280000, 0x280001) AM_READ(dipsw_r) AM_RANGE(0x280200, 0x280201) AM_READ(musobana_inputport_0_r) AM_RANGE(0x280400, 0x280401) AM_READ_PORT("SYSTEM") @@ -329,7 +300,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( niyanpai_sound_map, AS_PROGRAM, 8, niyanpai_state ) AM_RANGE(0x0000, 0x77ff) AM_ROM AM_RANGE(0x7800, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") + AM_RANGE(0x8000, 0xffff) AM_ROMBANK("soundbank") ADDRESS_MAP_END static ADDRESS_MAP_START( niyanpai_sound_io_map, AS_IO, 8, niyanpai_state ) @@ -755,7 +726,7 @@ static INPUT_PORTS_START( zokumahj ) // I don't have manual for this game. INPUT_PORTS_END -INTERRUPT_GEN_MEMBER(niyanpai_state::niyanpai_interrupt) +INTERRUPT_GEN_MEMBER(niyanpai_state::interrupt) { m_tmp68301->external_interrupt_0(); } @@ -771,7 +742,7 @@ static MACHINE_CONFIG_START( niyanpai, niyanpai_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 12288000/2) /* TMP68301, 6.144 MHz */ MCFG_CPU_PROGRAM_MAP(niyanpai_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", niyanpai_state, niyanpai_interrupt) + MCFG_CPU_VBLANK_INT_DRIVER("screen", niyanpai_state, interrupt) MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("tmp68301",tmp68301_device,irq_callback) MCFG_DEVICE_ADD("tmp68301", TMP68301, 0) @@ -781,11 +752,11 @@ static MACHINE_CONFIG_START( niyanpai, niyanpai_state ) MCFG_CPU_CONFIG(daisy_chain_sound) MCFG_CPU_PROGRAM_MAP(niyanpai_sound_map) MCFG_CPU_IO_MAP(niyanpai_sound_io_map) - MCFG_TMPZ84C011_PORTD_READ_CB(READ8(niyanpai_state, cpu_portd_r)) - MCFG_TMPZ84C011_PORTA_WRITE_CB(WRITE8(niyanpai_state, cpu_porta_w)) - MCFG_TMPZ84C011_PORTB_WRITE_CB(WRITE8(niyanpai_state, cpu_portb_w)) - MCFG_TMPZ84C011_PORTC_WRITE_CB(WRITE8(niyanpai_state, cpu_portc_w)) - MCFG_TMPZ84C011_PORTE_WRITE_CB(WRITE8(niyanpai_state, cpu_porte_w)) + MCFG_TMPZ84C011_PORTD_READ_CB(READ8(niyanpai_state, soundlatch_byte_r)) + MCFG_TMPZ84C011_PORTA_WRITE_CB(WRITE8(niyanpai_state, soundbank_w)) + MCFG_TMPZ84C011_PORTB_WRITE_CB(DEVWRITE8("dac1", dac_device, write_unsigned8)) + MCFG_TMPZ84C011_PORTC_WRITE_CB(DEVWRITE8("dac2", dac_device, write_unsigned8)) + MCFG_TMPZ84C011_PORTE_WRITE_CB(WRITE8(niyanpai_state, soundlatch_clear_w)) MCFG_TMPZ84C011_ZC0_CB(DEVWRITELINE("audiocpu", tmpz84c011_device, trg3)) MCFG_NVRAM_ADD_0FILL("nvram") @@ -796,7 +767,7 @@ static MACHINE_CONFIG_START( niyanpai, niyanpai_state ) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_SIZE(1024, 512) MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 240-1) - MCFG_SCREEN_UPDATE_DRIVER(niyanpai_state, screen_update_niyanpai) + MCFG_SCREEN_UPDATE_DRIVER(niyanpai_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", 256*3) @@ -819,16 +790,18 @@ static MACHINE_CONFIG_DERIVED( musobana, niyanpai ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(musobana_map) + + MCFG_MACHINE_START_OVERRIDE(niyanpai_state, musobana) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( mhhonban, niyanpai ) +static MACHINE_CONFIG_DERIVED( mhhonban, musobana ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(mhhonban_map) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( zokumahj, niyanpai ) +static MACHINE_CONFIG_DERIVED( zokumahj, musobana ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -930,8 +903,8 @@ ROM_START( zokumahj ) ROM_END -GAME( 1996, niyanpai, 0, niyanpai, niyanpai, niyanpai_state, niyanpai, ROT0, "Nichibutsu", "Niyanpai (Japan)", 0 ) -GAME( 1995, musobana, 0, musobana, musobana, niyanpai_state, niyanpai, ROT0, "Nichibutsu / Yubis", "Musoubana (Japan)", 0 ) -GAME( 1994, 4psimasy, 0, musobana, 4psimasy, niyanpai_state, niyanpai, ROT0, "Sphinx / AV Japan", "Mahjong 4P Simasyo (Japan)", 0 ) -GAME( 199?, mhhonban, 0, mhhonban, mhhonban, niyanpai_state, niyanpai, ROT0, "Nichibutsu?", "Mahjong Housoukyoku Honbanchuu (Japan)", 0 ) -GAME( 199?, zokumahj, mhhonban, zokumahj, zokumahj, niyanpai_state, niyanpai, ROT0, "Nichibutsu?", "Zoku Mahjong Housoukyoku (Japan)", 0 ) +GAME( 1996, niyanpai, 0, niyanpai, niyanpai, niyanpai_state, niyanpai, ROT0, "Nichibutsu", "Niyanpai (Japan)", GAME_SUPPORTS_SAVE ) +GAME( 1995, musobana, 0, musobana, musobana, niyanpai_state, niyanpai, ROT0, "Nichibutsu / Yubis", "Musoubana (Japan)", GAME_SUPPORTS_SAVE ) +GAME( 1994, 4psimasy, 0, musobana, 4psimasy, niyanpai_state, niyanpai, ROT0, "Sphinx / AV Japan", "Mahjong 4P Simasyo (Japan)", GAME_SUPPORTS_SAVE ) +GAME( 199?, mhhonban, 0, mhhonban, mhhonban, niyanpai_state, niyanpai, ROT0, "Nichibutsu?", "Mahjong Housoukyoku Honbanchuu (Japan)", GAME_SUPPORTS_SAVE ) +GAME( 199?, zokumahj, mhhonban, zokumahj, zokumahj, niyanpai_state, niyanpai, ROT0, "Nichibutsu?", "Zoku Mahjong Housoukyoku (Japan)", GAME_SUPPORTS_SAVE ) diff --git a/src/mame/includes/niyanpai.h b/src/mame/includes/niyanpai.h index ab7c9cab80b..24474ee749d 100644 --- a/src/mame/includes/niyanpai.h +++ b/src/mame/includes/niyanpai.h @@ -19,9 +19,14 @@ public: m_screen(*this, "screen"), m_palette(*this, "palette") { } - int m_musobana_inputport; - int m_musobana_outcoin_flag; + required_device<cpu_device> m_maincpu; + required_device<tmp68301_device> m_tmp68301; + required_device<dac_device> m_dac1; + required_device<dac_device> m_dac2; + required_device<screen_device> m_screen; + required_device<palette_device> m_palette; + // common int m_scrollx[VRAM_MAX]; int m_scrolly[VRAM_MAX]; int m_blitter_destx[VRAM_MAX]; @@ -45,55 +50,54 @@ public: UINT16 *m_palette_ptr; UINT8 *m_clut[VRAM_MAX]; int m_flipscreen_old[VRAM_MAX]; - DECLARE_READ8_MEMBER(niyanpai_sound_r); - DECLARE_WRITE16_MEMBER(niyanpai_sound_w); - DECLARE_WRITE8_MEMBER(niyanpai_soundclr_w); - - DECLARE_READ8_MEMBER(cpu_portd_r); - DECLARE_WRITE8_MEMBER(cpu_porta_w); - DECLARE_WRITE8_MEMBER(cpu_portb_w); - DECLARE_WRITE8_MEMBER(cpu_portc_w); - DECLARE_WRITE8_MEMBER(cpu_porte_w); - - DECLARE_READ16_MEMBER(niyanpai_dipsw_r); + emu_timer *m_blitter_timer; + + // musobana and derived machine configs + int m_musobana_inputport; + int m_musobana_outcoin_flag; + UINT8 m_motor_on; + + // common + DECLARE_WRITE16_MEMBER(sound_w); + DECLARE_WRITE8_MEMBER(soundbank_w); + DECLARE_WRITE8_MEMBER(soundlatch_clear_w); + DECLARE_READ16_MEMBER(dipsw_r); + DECLARE_READ16_MEMBER(palette_r); + DECLARE_WRITE16_MEMBER(palette_w); + DECLARE_WRITE8_MEMBER(blitter_0_w); + DECLARE_WRITE8_MEMBER(blitter_1_w); + DECLARE_WRITE8_MEMBER(blitter_2_w); + DECLARE_READ8_MEMBER(blitter_0_r); + DECLARE_READ8_MEMBER(blitter_1_r); + DECLARE_READ8_MEMBER(blitter_2_r); + DECLARE_WRITE8_MEMBER(clut_0_w); + DECLARE_WRITE8_MEMBER(clut_1_w); + DECLARE_WRITE8_MEMBER(clut_2_w); + DECLARE_WRITE8_MEMBER(clutsel_0_w); + DECLARE_WRITE8_MEMBER(clutsel_1_w); + DECLARE_WRITE8_MEMBER(clutsel_2_w); + DECLARE_WRITE16_MEMBER(tmp68301_parallel_port_w); + + // musobana and derived machine configs DECLARE_READ16_MEMBER(musobana_inputport_0_r); DECLARE_WRITE16_MEMBER(musobana_inputport_w); - DECLARE_READ16_MEMBER(niyanpai_palette_r); - DECLARE_WRITE16_MEMBER(niyanpai_palette_w); - DECLARE_WRITE8_MEMBER(niyanpai_blitter_0_w); - DECLARE_WRITE8_MEMBER(niyanpai_blitter_1_w); - DECLARE_WRITE8_MEMBER(niyanpai_blitter_2_w); - DECLARE_READ8_MEMBER(niyanpai_blitter_0_r); - DECLARE_READ8_MEMBER(niyanpai_blitter_1_r); - DECLARE_READ8_MEMBER(niyanpai_blitter_2_r); - DECLARE_WRITE8_MEMBER(niyanpai_clut_0_w); - DECLARE_WRITE8_MEMBER(niyanpai_clut_1_w); - DECLARE_WRITE8_MEMBER(niyanpai_clut_2_w); - DECLARE_WRITE8_MEMBER(niyanpai_clutsel_0_w); - DECLARE_WRITE8_MEMBER(niyanpai_clutsel_1_w); - DECLARE_WRITE8_MEMBER(niyanpai_clutsel_2_w); + DECLARE_CUSTOM_INPUT_MEMBER(musobana_outcoin_flag_r); + DECLARE_DRIVER_INIT(niyanpai); - DECLARE_WRITE16_MEMBER(tmp68301_parallel_port_w); - UINT8 m_motor_on; - virtual void machine_reset(); virtual void video_start(); - UINT32 screen_update_niyanpai(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(niyanpai_interrupt); - int niyanpai_blitter_r(int vram, int offset); - void niyanpai_blitter_w(int vram, int offset, UINT8 data); - void niyanpai_clutsel_w(int vram, UINT8 data); - void niyanpai_clut_w(int vram, int offset, UINT8 data); - void niyanpai_vramflip(int vram); + DECLARE_MACHINE_START(musobana); + + UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + int blitter_r(int vram, int offset); + void blitter_w(int vram, int offset, UINT8 data); + void clutsel_w(int vram, UINT8 data); + void clut_w(int vram, int offset, UINT8 data); + void vramflip(int vram); void update_pixel(int vram, int x, int y); - void niyanpai_gfxdraw(int vram); - void niyanpai_soundbank_w(int data); - required_device<cpu_device> m_maincpu; - required_device<tmp68301_device> m_tmp68301; - required_device<dac_device> m_dac1; - required_device<dac_device> m_dac2; - required_device<screen_device> m_screen; - required_device<palette_device> m_palette; + void gfxdraw(int vram); + + INTERRUPT_GEN_MEMBER(interrupt); protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); diff --git a/src/mame/video/niyanpai.c b/src/mame/video/niyanpai.c index cd9a7bf3b82..9e0d06c5b6a 100644 --- a/src/mame/video/niyanpai.c +++ b/src/mame/video/niyanpai.c @@ -13,12 +13,12 @@ ******************************************************************************/ -READ16_MEMBER(niyanpai_state::niyanpai_palette_r) +READ16_MEMBER(niyanpai_state::palette_r) { return m_palette_ptr[offset]; } -WRITE16_MEMBER(niyanpai_state::niyanpai_palette_w) +WRITE16_MEMBER(niyanpai_state::palette_w) { int r, g, b; int offs_h, offs_l; @@ -57,7 +57,7 @@ WRITE16_MEMBER(niyanpai_state::niyanpai_palette_w) ******************************************************************************/ -int niyanpai_state::niyanpai_blitter_r(int vram, int offset) +int niyanpai_state::blitter_r(int vram, int offset) { int ret; UINT8 *GFXROM = memregion("gfx1")->base(); @@ -72,7 +72,7 @@ int niyanpai_state::niyanpai_blitter_r(int vram, int offset) return ret; } -void niyanpai_state::niyanpai_blitter_w(int vram, int offset, UINT8 data) +void niyanpai_state::blitter_w(int vram, int offset, UINT8 data) { switch (offset) { @@ -84,7 +84,7 @@ void niyanpai_state::niyanpai_blitter_w(int vram, int offset, UINT8 data) // if (data & 0x20) popmessage("Unknown GFX Flag!! (0x20)"); m_flipscreen[vram] = (data & 0x40) ? 0 : 1; m_dispflag[vram] = (data & 0x80) ? 1 : 0; - niyanpai_vramflip(vram); + vramflip(vram); break; case 0x01: m_scrollx[vram] = (m_scrollx[vram] & 0x0100) | data; break; case 0x02: m_scrollx[vram] = (m_scrollx[vram] & 0x00ff) | ((data << 8) & 0x0100); break; @@ -99,18 +99,18 @@ void niyanpai_state::niyanpai_blitter_w(int vram, int offset, UINT8 data) case 0x0b: m_blitter_destx[vram] = (m_blitter_destx[vram] & 0x00ff) | (data << 8); break; case 0x0c: m_blitter_desty[vram] = (m_blitter_desty[vram] & 0xff00) | data; break; case 0x0d: m_blitter_desty[vram] = (m_blitter_desty[vram] & 0x00ff) | (data << 8); - niyanpai_gfxdraw(vram); + gfxdraw(vram); break; default: break; } } -void niyanpai_state::niyanpai_clutsel_w(int vram, UINT8 data) +void niyanpai_state::clutsel_w(int vram, UINT8 data) { m_clutsel[vram] = data; } -void niyanpai_state::niyanpai_clut_w(int vram, int offset, UINT8 data) +void niyanpai_state::clut_w(int vram, int offset, UINT8 data) { m_clut[vram][((m_clutsel[vram] & 0xff) * 0x10) + (offset & 0x0f)] = data; } @@ -119,7 +119,7 @@ void niyanpai_state::niyanpai_clut_w(int vram, int offset, UINT8 data) ******************************************************************************/ -void niyanpai_state::niyanpai_vramflip(int vram) +void niyanpai_state::vramflip(int vram) { int x, y; UINT16 color1, color2; @@ -172,7 +172,7 @@ void niyanpai_state::device_timer(emu_timer &timer, device_timer_id id, int para } } -void niyanpai_state::niyanpai_gfxdraw(int vram) +void niyanpai_state::gfxdraw(int vram) { UINT8 *GFX = memregion("gfx1")->base(); int width = m_screen->width(); @@ -324,28 +324,28 @@ void niyanpai_state::niyanpai_gfxdraw(int vram) } m_nb19010_busyflag = 0; - timer_set(attotime::from_nsec(1000 * m_nb19010_busyctr), TIMER_BLITTER); + m_blitter_timer->adjust(attotime::from_nsec(1000 * m_nb19010_busyctr)); } /****************************************************************************** ******************************************************************************/ -WRITE8_MEMBER(niyanpai_state::niyanpai_blitter_0_w){ niyanpai_blitter_w(0, offset, data); } -WRITE8_MEMBER(niyanpai_state::niyanpai_blitter_1_w){ niyanpai_blitter_w(1, offset, data); } -WRITE8_MEMBER(niyanpai_state::niyanpai_blitter_2_w){ niyanpai_blitter_w(2, offset, data); } +WRITE8_MEMBER(niyanpai_state::blitter_0_w){ blitter_w(0, offset, data); } +WRITE8_MEMBER(niyanpai_state::blitter_1_w){ blitter_w(1, offset, data); } +WRITE8_MEMBER(niyanpai_state::blitter_2_w){ blitter_w(2, offset, data); } -READ8_MEMBER(niyanpai_state::niyanpai_blitter_0_r){ return niyanpai_blitter_r(0, offset); } -READ8_MEMBER(niyanpai_state::niyanpai_blitter_1_r){ return niyanpai_blitter_r(1, offset); } -READ8_MEMBER(niyanpai_state::niyanpai_blitter_2_r){ return niyanpai_blitter_r(2, offset); } +READ8_MEMBER(niyanpai_state::blitter_0_r){ return blitter_r(0, offset); } +READ8_MEMBER(niyanpai_state::blitter_1_r){ return blitter_r(1, offset); } +READ8_MEMBER(niyanpai_state::blitter_2_r){ return blitter_r(2, offset); } -WRITE8_MEMBER(niyanpai_state::niyanpai_clut_0_w){ niyanpai_clut_w(0, offset, data); } -WRITE8_MEMBER(niyanpai_state::niyanpai_clut_1_w){ niyanpai_clut_w(1, offset, data); } -WRITE8_MEMBER(niyanpai_state::niyanpai_clut_2_w){ niyanpai_clut_w(2, offset, data); } +WRITE8_MEMBER(niyanpai_state::clut_0_w){ clut_w(0, offset, data); } +WRITE8_MEMBER(niyanpai_state::clut_1_w){ clut_w(1, offset, data); } +WRITE8_MEMBER(niyanpai_state::clut_2_w){ clut_w(2, offset, data); } -WRITE8_MEMBER(niyanpai_state::niyanpai_clutsel_0_w){ niyanpai_clutsel_w(0, data); } -WRITE8_MEMBER(niyanpai_state::niyanpai_clutsel_1_w){ niyanpai_clutsel_w(1, data); } -WRITE8_MEMBER(niyanpai_state::niyanpai_clutsel_2_w){ niyanpai_clutsel_w(2, data); } +WRITE8_MEMBER(niyanpai_state::clutsel_0_w){ clutsel_w(0, data); } +WRITE8_MEMBER(niyanpai_state::clutsel_1_w){ clutsel_w(1, data); } +WRITE8_MEMBER(niyanpai_state::clutsel_2_w){ clutsel_w(2, data); } /****************************************************************************** @@ -370,13 +370,46 @@ void niyanpai_state::video_start() m_clut[1] = auto_alloc_array(machine(), UINT8, 0x1000); m_clut[2] = auto_alloc_array(machine(), UINT8, 0x1000); m_nb19010_busyflag = 1; + m_blitter_timer = timer_alloc(TIMER_BLITTER); + + save_item(NAME(m_scrollx)); + save_item(NAME(m_scrolly)); + save_item(NAME(m_blitter_destx)); + save_item(NAME(m_blitter_desty)); + save_item(NAME(m_blitter_sizex)); + save_item(NAME(m_blitter_sizey)); + save_item(NAME(m_blitter_src_addr)); + save_item(NAME(m_blitter_direction_x)); + save_item(NAME(m_blitter_direction_y)); + save_item(NAME(m_dispflag)); + save_item(NAME(m_flipscreen)); + save_item(NAME(m_clutmode)); + save_item(NAME(m_transparency)); + save_item(NAME(m_clutsel)); + save_item(NAME(m_screen_refresh)); + save_item(NAME(m_nb19010_busyctr)); + save_item(NAME(m_nb19010_busyflag)); + save_item(NAME(m_flipscreen_old)); + save_pointer(NAME(m_palette_ptr), 0x480); + save_pointer(NAME(m_videoram[0]), width * height); + save_pointer(NAME(m_videoram[1]), width * height); + save_pointer(NAME(m_videoram[2]), width * height); + save_pointer(NAME(m_videoworkram[0]), width * height); + save_pointer(NAME(m_videoworkram[1]), width * height); + save_pointer(NAME(m_videoworkram[2]), width * height); + save_pointer(NAME(m_clut[0]), 0x1000); + save_pointer(NAME(m_clut[1]), 0x1000); + save_pointer(NAME(m_clut[2]), 0x1000); + save_item(NAME(m_tmpbitmap[0])); + save_item(NAME(m_tmpbitmap[1])); + save_item(NAME(m_tmpbitmap[2])); } /****************************************************************************** ******************************************************************************/ -UINT32 niyanpai_state::screen_update_niyanpai(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +UINT32 niyanpai_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { int i; int x, y; |