From f97085d06ec599592d17cf2821d38d23a99eb2a5 Mon Sep 17 00:00:00 2001 From: angelosa Date: Tue, 7 Nov 2017 22:29:36 +0100 Subject: [PATCH] Added flip screen to Ping Pong King (nw) --- src/mame/drivers/gladiatr.cpp | 53 ++++++++++++++++++++++++----------- src/mame/includes/gladiatr.h | 6 ++-- 2 files changed, 41 insertions(+), 18 deletions(-) diff --git a/src/mame/drivers/gladiatr.cpp b/src/mame/drivers/gladiatr.cpp index d8b5c3bc9e3..9920ce1ed19 100644 --- a/src/mame/drivers/gladiatr.cpp +++ b/src/mame/drivers/gladiatr.cpp @@ -224,7 +224,7 @@ WRITE8_MEMBER(gladiatr_state::gladiator_int_control_w) } /* YM2203 IRQ */ -WRITE_LINE_MEMBER(gladiatr_state::gladiator_ym_irq) +WRITE_LINE_MEMBER(gladiatr_state_base::gladiator_ym_irq) { /* NMI IRQ is not used by gladiator sound program */ m_subcpu->set_input_line(INPUT_LINE_NMI, state ? ASSERT_LINE : CLEAR_LINE); @@ -253,7 +253,7 @@ READ8_MEMBER(gladiatr_state::gladiator_cpu_sound_command_r) return m_soundlatch->read(space,0); } -WRITE_LINE_MEMBER(gladiatr_state::flipscreen_w) +WRITE_LINE_MEMBER(gladiatr_state_base::flipscreen_w) { flip_screen_set(state); } @@ -389,7 +389,6 @@ READ8_MEMBER(ppking_state::ppking_f1_r) **********************************/ //#include "debugger.h" - inline bool ppking_state::mcu_parity_check() { @@ -450,6 +449,7 @@ READ8_MEMBER(ppking_state::ppking_qx0_r) { m_mcu[0].rxd = ((ioport("P1")->read()) & 0x3f); m_mcu[0].rxd |= ((ioport("SYSTEM")->read()) & 0x80); + } break; @@ -470,13 +470,6 @@ READ8_MEMBER(ppking_state::ppking_qx0_r) break; } - - case 4: - { - m_mcu[0].rxd = ((ioport("P1")->read() | ioport("P2")->read()) & 0x3f); - //m_mcu[0].rxd |= ((ioport("SYSTEM")->read()) & 0x80); - break; - } } if(mcu_parity_check() == false) @@ -522,9 +515,10 @@ WRITE8_MEMBER(ppking_state::ppking_qx0_w) //m_mcu[0].state = 0; break; case 3: + m_mcu[0].rxd = 0; //m_mcu[0].rxd = (ioport("DSW1")->read() & 0x1f) << 2; m_mcu[0].rst = 1; - m_mcu[0].txd = 0; + //m_mcu[0].txd = 0; //m_mcu[0].state = 0; break; @@ -536,7 +530,7 @@ WRITE8_MEMBER(ppking_state::ppking_qx0_w) else { m_mcu[0].txd = data; - + if(m_mcu[0].txd == 0x41) { m_mcu[0].state = 1; @@ -554,7 +548,9 @@ WRITE8_MEMBER(ppking_state::ppking_qx0_w) } else { - m_mcu[0].state = 4; +// if(data != 0x60) +// printf("%02x\n",data); + //m_mcu[0].state = 0; } } } @@ -595,6 +591,20 @@ READ8_MEMBER(ppking_state::ppking_qx3_r) return machine().rand()&0xf; } +// a mirror of any of above? +READ8_MEMBER(ppking_state::ppking_qxunk_r) +{ + if(offset == 1) + return 1; + + return 0; +} + +WRITE8_MEMBER(ppking_state::ppking_qxunk_w) +{ + // ... +} + MACHINE_RESET_MEMBER(ppking_state, ppking) { m_data1 = m_data2 = 0; @@ -625,10 +635,11 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( ppking_cpu1_io, AS_IO, 8, ppking_state ) // ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xc000, 0xc000) AM_WRITE(spritebuffer_w) - AM_RANGE(0xc004, 0xc004) AM_NOP // WRITE(ppking_irq_patch_w) + AM_RANGE(0xc000, 0xc007) AM_DEVWRITE("mainlatch", ls259_device, write_d0) +// AM_RANGE(0xc004, 0xc004) AM_NOP // WRITE(ppking_irq_patch_w) AM_RANGE(0xc09e, 0xc09f) AM_READ(ppking_qx0_r) AM_WRITE(ppking_qx0_w) AM_RANGE(0xc0bf, 0xc0bf) AM_NOP + AM_RANGE(0xc0c0, 0xc0c1) AM_READ(ppking_qxunk_r) AM_WRITE(ppking_qxunk_w) ADDRESS_MAP_END static ADDRESS_MAP_START( ppking_cpu2_io, AS_IO, 8, ppking_state ) @@ -735,6 +746,7 @@ static INPUT_PORTS_START( ppking ) PORT_DIPSETTING( 0x00, DEF_STR( No ) ) PORT_BIT( 0xe0, IP_ACTIVE_HIGH, IPT_UNUSED ) + // cabinet (upright/cocktail) & coinage, not currently working (see above) PORT_START("DSW2") PORT_DIPNAME( 0x01, 0x00, "DSW2" ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) @@ -938,6 +950,14 @@ static MACHINE_CONFIG_START( ppking ) MCFG_MACHINE_RESET_OVERRIDE(ppking_state, ppking) MCFG_NVRAM_ADD_0FILL("nvram") + MCFG_DEVICE_ADD("mainlatch", LS259, 0) // 5L on main board + MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(WRITELINE(ppking_state, spritebuffer_w)) +// MCFG_ADDRESSABLE_LATCH_Q1_OUT_CB(WRITELINE(gladiatr_state, spritebank_w)) +// MCFG_ADDRESSABLE_LATCH_Q2_OUT_CB(MEMBANK("bank1")) +// MCFG_ADDRESSABLE_LATCH_Q4_OUT_CB(INPUTLINE("sub", INPUT_LINE_RESET)) // shadowed by aforementioned hack +// Q6 used + MCFG_ADDRESSABLE_LATCH_Q7_OUT_CB(WRITELINE(ppking_state, flipscreen_w)) + /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -958,6 +978,7 @@ static MACHINE_CONFIG_START( ppking ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/8) /* verified on pcb */ + MCFG_YM2203_IRQ_HANDLER(WRITELINE(gladiatr_state_base, gladiator_ym_irq)) MCFG_AY8910_PORT_A_READ_CB(READ8(ppking_state, ppking_f1_r)) MCFG_AY8910_PORT_B_READ_CB(READ8(ppking_state, ppking_f1_r)) MCFG_SOUND_ROUTE(0, "mono", 0.60) @@ -1048,7 +1069,7 @@ static MACHINE_CONFIG_START( gladiatr ) MCFG_GENERIC_LATCH_8_ADD("soundlatch") MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/8) /* verified on pcb */ - MCFG_YM2203_IRQ_HANDLER(WRITELINE(gladiatr_state, gladiator_ym_irq)) + MCFG_YM2203_IRQ_HANDLER(WRITELINE(gladiatr_state_base, gladiator_ym_irq)) MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSW3")) /* port B read */ MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(gladiatr_state, gladiator_int_control_w)) /* port A write */ MCFG_SOUND_ROUTE(0, "mono", 0.60) diff --git a/src/mame/includes/gladiatr.h b/src/mame/includes/gladiatr.h index 1a07f20ea97..69a5cd5f2ef 100644 --- a/src/mame/includes/gladiatr.h +++ b/src/mame/includes/gladiatr.h @@ -14,6 +14,8 @@ public: DECLARE_WRITE8_MEMBER(paletteram_w); DECLARE_WRITE_LINE_MEMBER(spritebuffer_w); DECLARE_WRITE8_MEMBER(spritebuffer_w); + DECLARE_WRITE_LINE_MEMBER(flipscreen_w); + DECLARE_WRITE_LINE_MEMBER(gladiator_ym_irq); protected: gladiatr_state_base(const machine_config &mconfig, device_type type, const char *tag) @@ -106,11 +108,9 @@ public: DECLARE_WRITE8_MEMBER(gladiator_cpu_sound_command_w); DECLARE_READ8_MEMBER(gladiator_cpu_sound_command_r); - DECLARE_WRITE_LINE_MEMBER(flipscreen_w); DECLARE_WRITE8_MEMBER(gladiatr_irq_patch_w); DECLARE_WRITE8_MEMBER(gladiator_int_control_w); DECLARE_WRITE8_MEMBER(gladiator_adpcm_w); - DECLARE_WRITE_LINE_MEMBER(gladiator_ym_irq); DECLARE_WRITE_LINE_MEMBER(tclk_w); DECLARE_READ8_MEMBER(cctl_p1_r); @@ -175,6 +175,8 @@ public: DECLARE_READ8_MEMBER(ppking_qx3_r); DECLARE_READ8_MEMBER(ppking_qx0_r); DECLARE_READ8_MEMBER(ppking_qx1_r); + DECLARE_READ8_MEMBER(ppking_qxunk_r); + DECLARE_WRITE8_MEMBER(ppking_qxunk_w); DECLARE_WRITE8_MEMBER(ppking_video_registers_w); DECLARE_DRIVER_INIT(ppking);