From a1e1b987abdb3de9fe0de7110e7c0cbd96055921 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Banaan=20Ananas?= Date: Sat, 9 Feb 2013 00:45:41 +0000 Subject: [PATCH] (small cleanup 2: port bits and diplocations) --- src/mame/drivers/namcos22.c | 636 +++++++++++------------------------ src/mame/includes/namcos22.h | 10 +- 2 files changed, 198 insertions(+), 448 deletions(-) diff --git a/src/mame/drivers/namcos22.c b/src/mame/drivers/namcos22.c index 4951a79545d..14e481e9f96 100644 --- a/src/mame/drivers/namcos22.c +++ b/src/mame/drivers/namcos22.c @@ -1168,59 +1168,6 @@ static UINT8 nthbyte( const UINT32 *pSource, int offs ) /*********************************************************************************************/ -/* TODO: REMOVE (THIS IS HANDLED BY "IOMCU") */ -static UINT16 AnalogAsDigital( running_machine &machine ) -{ - namcos22_state *state = machine.driver_data(); - UINT16 inputs = state->ioport("INPUTS")->read_safe(0); - UINT16 gas = state->ioport("GAS")->read_safe(0); - UINT16 steer = state->ioport("STEER")->read_safe(0); - UINT16 result = 0xffff; - - switch( state->m_gametype ) - { - case NAMCOS22_RAVE_RACER: - case NAMCOS22_RIDGE_RACER: - case NAMCOS22_RIDGE_RACER2: - if( gas == 0xff ) - { - result ^= 0x0100; /* CHOOSE */ - } - if( steer == 0x00 ) - { - result ^= 0x0040; /* PREV */ - } - else if( steer == 0xff ) - { - result ^= 0x0080; /* NEXT */ - } - return result; - - case NAMCOS22_ACE_DRIVER: - case NAMCOS22_VICTORY_LAP: - if( gas > 0xf0 ) - { - result ^= (state->m_gametype == NAMCOS22_VICTORY_LAP) ? 0x0100 : 0x0001; /* CHOOSE */ - } - inputs &= 3; - if( inputs == 1 ) - { - /* Stick Shift Up */ - result ^= 0x0040; /* PREV */ - } - else if( inputs == 2 ) - { - /* Stick Shift Down */ - result ^= 0x0080; /* NEXT */ - } - return result; - - default: - break; - } - return result; -} - /* TODO: REMOVE (THIS IS HANDLED BY "IOMCU") */ static void HandleCoinage(running_machine &machine, int slots, int address_is_odd) { @@ -2387,22 +2334,21 @@ WRITE32_MEMBER(namcos22_state::namcos22_keycus_w) * Other values seem to be digital versions of analog ports, for example "the gas pedal is * pressed" as a boolean flag. IO RAM supplies it as an analog value. */ -READ32_MEMBER(namcos22_state::namcos22_portbit_r) +READ16_MEMBER(namcos22_state::namcos22_portbit_r) { - UINT32 data = m_Sys22PortBits; - m_Sys22PortBits>>=1; - return data&0x10001; -} -WRITE32_MEMBER(namcos22_state::namcos22_portbit_w) -{ - unsigned dat50000008 = AnalogAsDigital(machine()); - unsigned dat5000000a = 0xffff; - m_Sys22PortBits = (dat50000008<<16)|dat5000000a; + UINT16 ret = m_portbits[offset] & 1; + m_portbits[offset] = m_portbits[offset] >> 1 | 0x8000; + return ret; } -READ32_MEMBER(namcos22_state::namcos22_dipswitch_r) +WRITE16_MEMBER(namcos22_state::namcos22_portbit_w) { - return ioport("DSW0")->read()<<16; + m_portbits[offset] = ioport((offset == 0) ? "P1" : "P2")->read_safe(0xffff); +} + +READ16_MEMBER(namcos22_state::namcos22_dipswitch_r) +{ + return ioport("DSW0")->read(); } READ32_MEMBER(namcos22_state::namcos22_mcuram_r) @@ -2435,13 +2381,11 @@ READ32_MEMBER(namcos22_state::namcos22_gun_r) } } -WRITE32_MEMBER(namcos22_state::namcos22_cpuleds_w) +WRITE16_MEMBER(namcos22_state::namcos22_cpuleds_w) { - // 8 leds on cpu board, left to right: - // GYRGYRGY green/yellow/red, 0=on 1=off - if (ACCESSING_BITS_0_15) data &= 0xff; - else data = (data>>16) & 0xff; - + // 8 leds on cpu board, 0=on 1=off + // on system 22: two rows of 4 red leds + // on super system 22: GYRGYRGY green/yellow/red for (int i = 0; i < 8; i++) output_set_lamp_value(i, (~data<