diff options
author | AJR <ajrhacker@users.noreply.github.com> | 2017-07-27 11:10:58 -0400 |
---|---|---|
committer | AJR <ajrhacker@users.noreply.github.com> | 2017-07-27 11:10:58 -0400 |
commit | 30732f9be72a42b6f515c228e96f52a61ce179ae (patch) | |
tree | 2c94e4db95bb56236134971a8d2d0ad2a6c0100b | |
parent | 7901abbb7f0a707a8a3d01f30c6813123699d3c9 (diff) |
ddenlovr.cpp: More 74LS259 additions (nw)
-rw-r--r-- | src/mame/drivers/ddenlovr.cpp | 101 |
1 files changed, 50 insertions, 51 deletions
diff --git a/src/mame/drivers/ddenlovr.cpp b/src/mame/drivers/ddenlovr.cpp index 00c703222d6..719f91c3060 100644 --- a/src/mame/drivers/ddenlovr.cpp +++ b/src/mame/drivers/ddenlovr.cpp @@ -276,11 +276,11 @@ public: DECLARE_WRITE8_MEMBER(hanakanz_blitter_data_w); DECLARE_WRITE8_MEMBER(rongrong_blitter_w); DECLARE_WRITE8_MEMBER(ddenlovr_blitter_w); - DECLARE_WRITE8_MEMBER(ddenlovr_blitter_irq_ack_w); + DECLARE_WRITE_LINE_MEMBER(ddenlovr_blitter_irq_ack_w); DECLARE_READ8_MEMBER(rongrong_gfxrom_r); DECLARE_READ16_MEMBER(ddenlovr_gfxrom_r); - DECLARE_WRITE8_MEMBER(ddenlovr_coincounter_0_w); - DECLARE_WRITE8_MEMBER(ddenlovr_coincounter_1_w); + DECLARE_WRITE_LINE_MEMBER(ddenlovr_coincounter_0_w); + DECLARE_WRITE_LINE_MEMBER(ddenlovr_coincounter_1_w); DECLARE_WRITE8_MEMBER(rongrong_palette_w); DECLARE_WRITE8_MEMBER(ddenlovr_palette_base_w); DECLARE_WRITE8_MEMBER(ddenlovr_palette_base2_w); @@ -417,20 +417,20 @@ public: DECLARE_VIDEO_START(htengoku); DECLARE_WRITE8_MEMBER(htengoku_dsw_w); DECLARE_READ8_MEMBER(htengoku_dsw_r); - DECLARE_WRITE8_MEMBER( quizchq_oki_bank_w ); - DECLARE_WRITE8_MEMBER( ddenlovr_oki_bank_w ); - DECLARE_WRITE8_MEMBER( quiz365_oki_bank1_w ); - DECLARE_WRITE8_MEMBER( quiz365_oki_bank2_w ); - DECLARE_WRITE8_MEMBER( ddenlovr_select_w ); - DECLARE_READ8_MEMBER( quiz365_input_r ); - DECLARE_WRITE8_MEMBER( nettoqc_oki_bank_w ); - DECLARE_WRITE8_MEMBER( hanakanz_oki_bank_w ); - DECLARE_WRITE8_MEMBER( mjchuuka_oki_bank_w ); - DECLARE_READ8_MEMBER( hginga_dsw_r ); - DECLARE_WRITE8_MEMBER( mjflove_okibank_w ); - DECLARE_WRITE8_MEMBER( jongtei_okibank_w ); - DECLARE_READ8_MEMBER( seljan2_dsw_r ); - DECLARE_WRITE8_MEMBER( daimyojn_okibank_w ); + DECLARE_WRITE8_MEMBER(quizchq_oki_bank_w); + DECLARE_WRITE8_MEMBER(ddenlovr_oki_bank_w); + DECLARE_WRITE_LINE_MEMBER(quiz365_oki_bank1_w); + DECLARE_WRITE_LINE_MEMBER(quiz365_oki_bank2_w); + DECLARE_WRITE8_MEMBER(ddenlovr_select_w); + DECLARE_READ8_MEMBER(quiz365_input_r); + DECLARE_WRITE8_MEMBER(nettoqc_oki_bank_w); + DECLARE_WRITE8_MEMBER(hanakanz_oki_bank_w); + DECLARE_WRITE8_MEMBER(mjchuuka_oki_bank_w); + DECLARE_READ8_MEMBER(hginga_dsw_r); + DECLARE_WRITE8_MEMBER(mjflove_okibank_w); + DECLARE_WRITE8_MEMBER(jongtei_okibank_w); + DECLARE_READ8_MEMBER(seljan2_dsw_r); + DECLARE_WRITE8_MEMBER(daimyojn_okibank_w); void ddenlovr_flipscreen_w( uint8_t data ); void ddenlovr_blit_flip_w( uint8_t data ); @@ -1488,9 +1488,9 @@ WRITE8_MEMBER(ddenlovr_state::ddenlovr_blitter_w) } -WRITE8_MEMBER(ddenlovr_state::ddenlovr_blitter_irq_ack_w) +WRITE_LINE_MEMBER(ddenlovr_state::ddenlovr_blitter_irq_ack_w) { - if (data & 1) + if (state) { m_ddenlovr_blitter_irq_enable = 1; } @@ -1668,14 +1668,14 @@ CUSTOM_INPUT_MEMBER(ddenlovr_state::ddenlovr_blitter_irq_r) return m_ddenlovr_blitter_irq_flag; } -WRITE8_MEMBER(ddenlovr_state::ddenlovr_coincounter_0_w) +WRITE_LINE_MEMBER(ddenlovr_state::ddenlovr_coincounter_0_w) { - machine().bookkeeping().coin_counter_w(0, data & 1); + machine().bookkeeping().coin_counter_w(0, state); } -WRITE8_MEMBER(ddenlovr_state::ddenlovr_coincounter_1_w) +WRITE_LINE_MEMBER(ddenlovr_state::ddenlovr_coincounter_1_w) { - machine().bookkeeping().coin_counter_w(1, data & 1); + machine().bookkeeping().coin_counter_w(1, state); } @@ -1750,15 +1750,15 @@ WRITE8_MEMBER(ddenlovr_state::ddenlovr_oki_bank_w ) m_oki->set_rom_bank(data & 7); } -WRITE8_MEMBER(ddenlovr_state::quiz365_oki_bank1_w ) +WRITE_LINE_MEMBER(ddenlovr_state::quiz365_oki_bank1_w) { - m_okibank = (m_okibank & 2) | (data & 1); + m_okibank = (m_okibank & 2) | state; m_oki->set_rom_bank(m_okibank); } -WRITE8_MEMBER(ddenlovr_state::quiz365_oki_bank2_w ) +WRITE_LINE_MEMBER(ddenlovr_state::quiz365_oki_bank2_w) { - m_okibank = (m_okibank & 1) | ((data & 1) << 1); + m_okibank = (m_okibank & 1) | (state << 1); m_oki->set_rom_bank(m_okibank); } @@ -1902,9 +1902,7 @@ static ADDRESS_MAP_START( quiz365_map, AS_PROGRAM, 16, ddenlovr_state ) AM_RANGE(0x300340, 0x30035f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write,0x00ff) AM_RANGE(0x300380, 0x300383) AM_DEVWRITE8("aysnd", ay8910_device, address_data_w, 0x00ff) AM_RANGE(0x300384, 0x300385) AM_DEVREAD8("aysnd", ay8910_device, data_r, 0x00ff) - AM_RANGE(0x3003c2, 0x3003c3) AM_WRITE8(quiz365_oki_bank1_w, 0x00ff) - AM_RANGE(0x3003ca, 0x3003cb) AM_WRITE8(ddenlovr_blitter_irq_ack_w, 0x00ff) - AM_RANGE(0x3003cc, 0x3003cd) AM_WRITE8(quiz365_oki_bank2_w, 0x00ff) + AM_RANGE(0x3003c0, 0x3003cf) AM_DEVWRITE8("mainlatch", ls259_device, write_d0, 0x00ff) AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM ADDRESS_MAP_END @@ -1957,7 +1955,7 @@ static ADDRESS_MAP_START( ddenlovj_map, AS_PROGRAM, 16, ddenlovr_state ) AM_RANGE(0x300188, 0x300189) AM_WRITE8(ddenlovj_coincounter_w, 0x00ff) AM_RANGE(0x30018a, 0x30018b) AM_WRITEONLY AM_SHARE("dsw_sel16") // DSW select AM_RANGE(0x30018c, 0x30018d) AM_WRITE8(ddenlovr_oki_bank_w, 0x00ff) - AM_RANGE(0x3001ca, 0x3001cb) AM_WRITE8(ddenlovr_blitter_irq_ack_w, 0x00ff) + AM_RANGE(0x3001c0, 0x3001cf) AM_DEVWRITE8("mainlatch", ls259_device, write_d0, 0x00ff) AM_RANGE(0x300240, 0x300241) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)// Sound AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM ADDRESS_MAP_END @@ -2010,10 +2008,7 @@ static ADDRESS_MAP_START( ddenlovrk_map, AS_PROGRAM, 16, ddenlovr_state ) AM_RANGE(0xe00102, 0xe00103) AM_READ_PORT("P2") AM_RANGE(0xe00104, 0xe00105) AM_READ_PORT("SYSTEM") AM_RANGE(0xe00200, 0xe00201) AM_READ_PORT("DSW") - AM_RANGE(0xe00302, 0xe00303) AM_WRITE8(ddenlovr_blitter_irq_ack_w, 0x00ff) - AM_RANGE(0xe00308, 0xe00309) AM_WRITE8(ddenlovr_coincounter_0_w, 0x00ff) - AM_RANGE(0xe0030c, 0xe0030d) AM_WRITE8(ddenlovr_coincounter_1_w, 0x00ff) - + AM_RANGE(0xe00300, 0xe0030f) AM_DEVWRITE8("mainlatch", ls259_device, write_d0, 0x00ff) AM_RANGE(0xe00400, 0xe00403) AM_DEVWRITE8("ym2413", ym2413_device, write, 0x00ff) AM_RANGE(0xe00500, 0xe0051f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write,0x00ff) AM_RANGE(0xe00600, 0xe00603) AM_DEVWRITE8("aysnd", ay8910_device, address_data_w, 0x00ff) @@ -2048,10 +2043,7 @@ static ADDRESS_MAP_START( ddenlovr_map, AS_PROGRAM, 16, ddenlovr_state ) AM_RANGE(0xe00102, 0xe00103) AM_READ_PORT("P2") AM_RANGE(0xe00104, 0xe00105) AM_READ_PORT("SYSTEM") AM_RANGE(0xe00200, 0xe00201) AM_READ_PORT("DSW") - AM_RANGE(0xe00302, 0xe00303) AM_WRITE8(ddenlovr_blitter_irq_ack_w, 0x00ff) - AM_RANGE(0xe00308, 0xe00309) AM_WRITE8(ddenlovr_coincounter_0_w, 0x00ff) - AM_RANGE(0xe0030c, 0xe0030d) AM_WRITE8(ddenlovr_coincounter_1_w, 0x00ff) - + AM_RANGE(0xe00300, 0xe0030f) AM_DEVWRITE8("mainlatch", ls259_device, write_d0, 0x00ff) AM_RANGE(0xe00400, 0xe00403) AM_DEVWRITE8("ym2413", ym2413_device, write, 0x00ff) AM_RANGE(0xe00500, 0xe0051f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write,0x00ff) AM_RANGE(0xe00600, 0xe00603) AM_DEVWRITE8("aysnd", ay8910_device, address_data_w, 0x00ff) @@ -2130,7 +2122,7 @@ static ADDRESS_MAP_START( nettoqc_map, AS_PROGRAM, 16, ddenlovr_state ) AM_RANGE(0x300188, 0x300189) AM_WRITE8(nettoqc_coincounter_w, 0x00ff) AM_RANGE(0x30018a, 0x30018b) AM_WRITE8(ddenlovr_select_w, 0x00ff) AM_RANGE(0x30018c, 0x30018d) AM_WRITE8(nettoqc_oki_bank_w, 0x00ff) - AM_RANGE(0x3001ca, 0x3001cb) AM_WRITE8(ddenlovr_blitter_irq_ack_w, 0x00ff) + AM_RANGE(0x3001c0, 0x3001cf) AM_DEVWRITE8("mainlatch", ls259_device, write_d0, 0x00ff) AM_RANGE(0x300240, 0x300241) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM ADDRESS_MAP_END @@ -2179,10 +2171,7 @@ static ADDRESS_MAP_START( ultrchmp_map, AS_PROGRAM, 16, ddenlovr_state ) AM_RANGE(0xe00102, 0xe00103) AM_READ_PORT("P2") AM_RANGE(0xe00104, 0xe00105) AM_READ_PORT("SYSTEM") AM_RANGE(0xe00200, 0xe00201) AM_READ_PORT("DSW") - AM_RANGE(0xe00302, 0xe00303) AM_WRITE8(ddenlovr_blitter_irq_ack_w, 0x00ff) - AM_RANGE(0xe00308, 0xe00309) AM_WRITE8(ddenlovr_coincounter_0_w, 0x00ff) - AM_RANGE(0xe0030c, 0xe0030d) AM_WRITE8(ddenlovr_coincounter_1_w, 0x00ff) - + AM_RANGE(0xe00300, 0xe0030f) AM_DEVWRITE8("mainlatch", ls259_device, write_d0, 0x00ff) AM_RANGE(0xe00400, 0xe00403) AM_DEVWRITE8("ym2413", ym2413_device, write, 0x00ff) AM_RANGE(0xe00500, 0xe0051f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write,0x00ff) AM_RANGE(0xe00600, 0xe00603) AM_DEVWRITE8("aysnd", ay8910_device, address_data_w, 0x00ff) @@ -3675,12 +3664,10 @@ static ADDRESS_MAP_START( akamaru_map, AS_PROGRAM, 16, ddenlovr_state ) AM_RANGE(0xe00200, 0xe00201) AM_READ(akamaru_dsw_r) // DSW AM_RANGE(0xe00204, 0xe00205) AM_READ(akamaru_blitter_r) // Blitter Busy & IRQ - AM_RANGE(0xe00302, 0xe00303) AM_WRITE8(ddenlovr_blitter_irq_ack_w, 0x00ff) AM_RANGE(0xe00304, 0xe00307) AM_WRITEONLY AM_SHARE("dsw_sel16") // DSW select - AM_RANGE(0xe00308, 0xe00309) AM_WRITE8(ddenlovr_coincounter_0_w, 0x00ff) - AM_RANGE(0xe0030c, 0xe0030d) AM_WRITE8(ddenlovr_coincounter_1_w, 0x00ff) + AM_RANGE(0xe00300, 0xe0030f) AM_DEVWRITE8("mainlatch", ls259_device, write_d0, 0x00ff) AM_RANGE(0xe00400, 0xe00403) AM_DEVWRITE8("ym2413", ym2413_device, write, 0x00ff) AM_RANGE(0xe00500, 0xe0051f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write, 0x00ff) AM_RANGE(0xe00600, 0xe00603) AM_DEVWRITE8("aysnd", ay8910_device, address_data_w, 0x00ff) @@ -9626,6 +9613,11 @@ static MACHINE_CONFIG_START( ddenlovr ) MCFG_CPU_PROGRAM_MAP(ddenlovr_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, irq1_line_hold) + MCFG_DEVICE_ADD("mainlatch", LS259, 0) + MCFG_ADDRESSABLE_LATCH_Q1_OUT_CB(WRITELINE(ddenlovr_state, ddenlovr_blitter_irq_ack_w)) + MCFG_ADDRESSABLE_LATCH_Q4_OUT_CB(WRITELINE(ddenlovr_state, ddenlovr_coincounter_0_w)) + MCFG_ADDRESSABLE_LATCH_Q5_OUT_CB(WRITELINE(ddenlovr_state, ddenlovr_coincounter_1_w)) + MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,ddenlovr) MCFG_MACHINE_RESET_OVERRIDE(ddenlovr_state,ddenlovr) @@ -9665,6 +9657,9 @@ static MACHINE_CONFIG_DERIVED( ddenlovj, ddenlovr ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(ddenlovj_map) + MCFG_DEVICE_REPLACE("mainlatch", LS259, 0) + MCFG_ADDRESSABLE_LATCH_Q5_OUT_CB(WRITELINE(ddenlovr_state, ddenlovr_blitter_irq_ack_w)) + MCFG_DEVICE_REPLACE("rtc", RTC62421, XTAL_32_768kHz) // internal oscillator MACHINE_CONFIG_END @@ -9673,19 +9668,23 @@ static MACHINE_CONFIG_DERIVED( ddenlovrk, ddenlovr ) MCFG_CPU_PROGRAM_MAP(ddenlovrk_map) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( akamaru, ddenlovj ) +static MACHINE_CONFIG_DERIVED( akamaru, ddenlovr ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(akamaru_map) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( quiz365, ddenlovr ) +static MACHINE_CONFIG_DERIVED( quiz365, ddenlovj ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(quiz365_map) + MCFG_DEVICE_MODIFY("mainlatch") // 7D has wire mod connecting to sample ROM at 1F + MCFG_ADDRESSABLE_LATCH_Q1_OUT_CB(WRITELINE(ddenlovr_state, quiz365_oki_bank1_w)) + MCFG_ADDRESSABLE_LATCH_Q6_OUT_CB(WRITELINE(ddenlovr_state, quiz365_oki_bank2_w)) + MCFG_SOUND_REPLACE("aysnd", YM2149, XTAL_28_63636MHz / 16) // or /8 ? MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MCFG_AY8910_PORT_A_READ_CB(READ8(ddenlovr_state, quiz365_input_r)) @@ -9694,14 +9693,14 @@ static MACHINE_CONFIG_DERIVED( quiz365, ddenlovr ) MCFG_DEVICE_REPLACE("rtc", MSM6242, XTAL_32_768kHz) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( nettoqc, ddenlovr ) +static MACHINE_CONFIG_DERIVED( nettoqc, ddenlovj ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(nettoqc_map) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( ultrchmp, nettoqc ) +static MACHINE_CONFIG_DERIVED( ultrchmp, ddenlovr ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") |