From af83b43dd4ae52a8505d81f8ebb0060163861fce Mon Sep 17 00:00:00 2001 From: AJR Date: Tue, 22 Aug 2017 21:28:24 -0400 Subject: munchmo.cpp: Add 74LS259 latch (nw) --- src/mame/drivers/munchmo.cpp | 28 +++++++++++++--------------- src/mame/includes/munchmo.h | 8 ++++---- src/mame/video/munchmo.cpp | 13 +++++++++---- 3 files changed, 26 insertions(+), 23 deletions(-) diff --git a/src/mame/drivers/munchmo.cpp b/src/mame/drivers/munchmo.cpp index 407669ffd59..e1ed3d09a8d 100644 --- a/src/mame/drivers/munchmo.cpp +++ b/src/mame/drivers/munchmo.cpp @@ -29,6 +29,7 @@ Stephh's notes (based on the game Z80 code and some tests) : #include "includes/munchmo.h" #include "cpu/z80/z80.h" +#include "machine/74259.h" #include "sound/ay8910.h" #include "screen.h" #include "speaker.h" @@ -40,9 +41,9 @@ Stephh's notes (based on the game Z80 code and some tests) : * *************************************/ -WRITE8_MEMBER(munchmo_state::nmi_enable_w) +WRITE_LINE_MEMBER(munchmo_state::nmi_enable_w) { - m_nmi_enable = data; + m_nmi_enable = state; } /* trusted thru schematics, NMI and IRQ triggers at vblank, at the same time (!) */ @@ -103,14 +104,9 @@ static ADDRESS_MAP_START( mnchmobl_map, AS_PROGRAM, 8, munchmo_state ) AM_RANGE(0xbaba, 0xbaba) AM_WRITENOP /* ? */ AM_RANGE(0xbc00, 0xbc7f) AM_RAM AM_SHARE("status_vram") AM_RANGE(0xbe00, 0xbe00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0xbe01, 0xbe01) AM_WRITE(palette_bank_w) + AM_RANGE(0xbe01, 0xbe01) AM_SELECT(0x0070) AM_DEVWRITE_MOD("mainlatch", ls259_device, write_d0, rshift<4>) AM_RANGE(0xbe02, 0xbe02) AM_READ_PORT("DSW1") AM_RANGE(0xbe03, 0xbe03) AM_READ_PORT("DSW2") - AM_RANGE(0xbe11, 0xbe11) AM_WRITENOP /* ? */ - AM_RANGE(0xbe21, 0xbe21) AM_WRITENOP /* ? */ - AM_RANGE(0xbe31, 0xbe31) AM_WRITENOP /* ? */ - AM_RANGE(0xbe41, 0xbe41) AM_WRITE(flipscreen_w) - AM_RANGE(0xbe61, 0xbe61) AM_WRITE(nmi_enable_w) // ENI 1-10C AM_RANGE(0xbf00, 0xbf00) AM_WRITE(nmi_ack_w) // CNI 1-8C AM_RANGE(0xbf01, 0xbf01) AM_READ_PORT("SYSTEM") AM_RANGE(0xbf02, 0xbf02) AM_READ_PORT("P1") @@ -317,13 +313,6 @@ void munchmo_state::machine_start() save_item(NAME(m_nmi_enable)); } -void munchmo_state::machine_reset() -{ - m_palette_bank = 0; - m_flipscreen = 0; - m_nmi_enable = 0; -} - static MACHINE_CONFIG_START( mnchmobl ) /* basic machine hardware */ @@ -335,6 +324,15 @@ static MACHINE_CONFIG_START( mnchmobl ) MCFG_CPU_PROGRAM_MAP(sound_map) MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(munchmo_state, generic_irq_ack) // IORQ clears flip-flop at 1-7H + MCFG_DEVICE_ADD("mainlatch", LS259, 0) // 12E + MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(WRITELINE(munchmo_state, palette_bank_0_w)) // BCL0 2-11E + MCFG_ADDRESSABLE_LATCH_Q1_OUT_CB(WRITELINE(munchmo_state, palette_bank_1_w)) // BCL1 2-11E + MCFG_ADDRESSABLE_LATCH_Q2_OUT_CB(NOOP) // CL2 2-11E + MCFG_ADDRESSABLE_LATCH_Q3_OUT_CB(NOOP) // CL3 2-11E + MCFG_ADDRESSABLE_LATCH_Q4_OUT_CB(WRITELINE(munchmo_state, flipscreen_w)) // INV + MCFG_ADDRESSABLE_LATCH_Q5_OUT_CB(NOOP) // DISP + MCFG_ADDRESSABLE_LATCH_Q6_OUT_CB(WRITELINE(munchmo_state, nmi_enable_w)) // ENI 1-10C + /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(57) diff --git a/src/mame/includes/munchmo.h b/src/mame/includes/munchmo.h index 42db82cfece..e9a66cf6cf0 100644 --- a/src/mame/includes/munchmo.h +++ b/src/mame/includes/munchmo.h @@ -48,15 +48,15 @@ public: required_device m_palette; required_device m_soundlatch; - DECLARE_WRITE8_MEMBER(nmi_enable_w); + DECLARE_WRITE_LINE_MEMBER(nmi_enable_w); DECLARE_WRITE8_MEMBER(nmi_ack_w); DECLARE_WRITE8_MEMBER(sound_nmi_ack_w); - DECLARE_WRITE8_MEMBER(palette_bank_w); - DECLARE_WRITE8_MEMBER(flipscreen_w); + DECLARE_WRITE_LINE_MEMBER(palette_bank_0_w); + DECLARE_WRITE_LINE_MEMBER(palette_bank_1_w); + DECLARE_WRITE_LINE_MEMBER(flipscreen_w); DECLARE_READ8_MEMBER(ay1reset_r); DECLARE_READ8_MEMBER(ay2reset_r); virtual void machine_start() override; - virtual void machine_reset() override; virtual void video_start() override; DECLARE_PALETTE_INIT(munchmo); u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); diff --git a/src/mame/video/munchmo.cpp b/src/mame/video/munchmo.cpp index 972d23373b6..652c63a0682 100644 --- a/src/mame/video/munchmo.cpp +++ b/src/mame/video/munchmo.cpp @@ -32,14 +32,19 @@ PALETTE_INIT_MEMBER(munchmo_state, munchmo) } } -WRITE8_MEMBER(munchmo_state::palette_bank_w) +WRITE_LINE_MEMBER(munchmo_state::palette_bank_0_w) { - m_palette_bank = data & 0x3; + m_palette_bank = (state ? 1 : 0) | (m_palette_bank & 2); } -WRITE8_MEMBER(munchmo_state::flipscreen_w) +WRITE_LINE_MEMBER(munchmo_state::palette_bank_1_w) { - m_flipscreen = data; + m_palette_bank = (state ? 2 : 0) | (m_palette_bank & 1); +} + +WRITE_LINE_MEMBER(munchmo_state::flipscreen_w) +{ + m_flipscreen = state; } -- cgit v1.2.3