diff options
Diffstat (limited to 'src/mame/drivers/ssv.c')
-rw-r--r-- | src/mame/drivers/ssv.c | 348 |
1 files changed, 161 insertions, 187 deletions
diff --git a/src/mame/drivers/ssv.c b/src/mame/drivers/ssv.c index 8f75824342f..b7964fd3002 100644 --- a/src/mame/drivers/ssv.c +++ b/src/mame/drivers/ssv.c @@ -199,14 +199,13 @@ static IRQ_CALLBACK(ssv_irq_callback) return 0; } -static WRITE16_HANDLER( ssv_irq_ack_w ) +WRITE16_MEMBER(ssv_state::ssv_irq_ack_w) { - ssv_state *state = space->machine().driver_data<ssv_state>(); int level = ((offset * 2) & 0x70) >> 4; - state->m_requested_int &= ~(1 << level); + m_requested_int &= ~(1 << level); - update_irq_state(space->machine()); + update_irq_state(machine()); } /* @@ -227,11 +226,10 @@ static WRITE16_HANDLER( ssv_irq_ack_w ) ultrax: 40,00 at the start then 42,4a twineag2: 40,00 at the start then 42,4a */ -static WRITE16_HANDLER( ssv_irq_enable_w ) +WRITE16_MEMBER(ssv_state::ssv_irq_enable_w) { - ssv_state *state = space->machine().driver_data<ssv_state>(); - COMBINE_DATA(&state->m_irq_enable); + COMBINE_DATA(&m_irq_enable); } static TIMER_DEVICE_CALLBACK( ssv_interrupt ) @@ -294,32 +292,32 @@ static TIMER_DEVICE_CALLBACK( gdfs_interrupt ) survarts: 83 sxyreact: 80 */ -static WRITE16_HANDLER( ssv_lockout_w ) +WRITE16_MEMBER(ssv_state::ssv_lockout_w) { // popmessage("%02X",data & 0xff); if (ACCESSING_BITS_0_7) { - coin_lockout_w(space->machine(), 1,~data & 0x01); - coin_lockout_w(space->machine(), 0,~data & 0x02); - coin_counter_w(space->machine(), 1, data & 0x04); - coin_counter_w(space->machine(), 0, data & 0x08); + coin_lockout_w(machine(), 1,~data & 0x01); + coin_lockout_w(machine(), 0,~data & 0x02); + coin_counter_w(machine(), 1, data & 0x04); + coin_counter_w(machine(), 0, data & 0x08); // data & 0x40? - ssv_enable_video( space->machine(), data & 0x80); + ssv_enable_video( machine(), data & 0x80); } } /* Same as above but with inverted lockout lines */ -static WRITE16_HANDLER( ssv_lockout_inv_w ) +WRITE16_MEMBER(ssv_state::ssv_lockout_inv_w) { // popmessage("%02X",data & 0xff); if (ACCESSING_BITS_0_7) { - coin_lockout_w(space->machine(), 1, data & 0x01); - coin_lockout_w(space->machine(), 0, data & 0x02); - coin_counter_w(space->machine(), 1, data & 0x04); - coin_counter_w(space->machine(), 0, data & 0x08); + coin_lockout_w(machine(), 1, data & 0x01); + coin_lockout_w(machine(), 0, data & 0x02); + coin_counter_w(machine(), 1, data & 0x04); + coin_counter_w(machine(), 0, data & 0x08); // data & 0x40? - ssv_enable_video( space->machine(), data & 0x80); + ssv_enable_video( machine(), data & 0x80); } } @@ -348,24 +346,21 @@ static ADDRESS_MAP_START( dsp_data_map, AS_DATA, 16, ssv_state ) AM_RANGE(0x0000, 0x07ff) AM_ROM AM_REGION("dspdata", 0) ADDRESS_MAP_END -static READ16_HANDLER( dsp_dr_r ) +READ16_MEMBER(ssv_state::dsp_dr_r) { - ssv_state *state = space->machine().driver_data<ssv_state>(); - return state->m_dsp->snesdsp_read(true); + return m_dsp->snesdsp_read(true); } -static WRITE16_HANDLER( dsp_dr_w ) +WRITE16_MEMBER(ssv_state::dsp_dr_w) { - ssv_state *state = space->machine().driver_data<ssv_state>(); - state->m_dsp->snesdsp_write(true, data); + m_dsp->snesdsp_write(true, data); } -static READ16_HANDLER( dsp_r ) +READ16_MEMBER(ssv_state::dsp_r) { - ssv_state *state = space->machine().driver_data<ssv_state>(); - UINT16 temp = state->m_dsp->dataram_r(offset/2); + UINT16 temp = m_dsp->dataram_r(offset/2); UINT16 res; if (offset & 1) @@ -380,10 +375,9 @@ static READ16_HANDLER( dsp_r ) return res; } -static WRITE16_HANDLER( dsp_w ) +WRITE16_MEMBER(ssv_state::dsp_w) { - ssv_state *state = space->machine().driver_data<ssv_state>(); - UINT16 temp = state->m_dsp->dataram_r(offset/2); + UINT16 temp = m_dsp->dataram_r(offset/2); if (offset & 1) { @@ -396,7 +390,7 @@ static WRITE16_HANDLER( dsp_w ) temp |= data; } - state->m_dsp->dataram_w(offset/2, temp); + m_dsp->dataram_w(offset/2, temp); } /*************************************************************************** @@ -408,7 +402,7 @@ static WRITE16_HANDLER( dsp_w ) ***************************************************************************/ #ifdef UNUSED_FUNCTION -static READ16_HANDLER( fake_r ) { return ssv_scroll[offset]; } +READ16_MEMBER(ssv_state::fake_r){ return ssv_scroll[offset]; } #endif #define SSV_MAP( _ROM ) \ @@ -424,11 +418,11 @@ static READ16_HANDLER( fake_r ) { return ssv_scroll[offset]; } AM_RANGE(0x210008, 0x210009) AM_READ_PORT("P1") \ AM_RANGE(0x21000a, 0x21000b) AM_READ_PORT("P2") \ AM_RANGE(0x21000c, 0x21000d) AM_READ_PORT("SYSTEM") \ - AM_RANGE(0x21000e, 0x21000f) AM_READNOP AM_WRITE_LEGACY(ssv_lockout_w) /* Lockout */ \ + AM_RANGE(0x21000e, 0x21000f) AM_READNOP AM_WRITE(ssv_lockout_w) /* Lockout */ \ AM_RANGE(0x210010, 0x210011) AM_WRITENOP \ AM_RANGE(0x230000, 0x230071) AM_WRITEONLY AM_BASE(m_irq_vectors) /* IRQ Vec */ \ - AM_RANGE(0x240000, 0x240071) AM_WRITE_LEGACY(ssv_irq_ack_w ) /* IRQ Ack */ \ - AM_RANGE(0x260000, 0x260001) AM_WRITE_LEGACY(ssv_irq_enable_w) /* IRQ En */ \ + AM_RANGE(0x240000, 0x240071) AM_WRITE(ssv_irq_ack_w ) /* IRQ Ack */ \ + AM_RANGE(0x260000, 0x260001) AM_WRITE(ssv_irq_enable_w) /* IRQ En */ \ AM_RANGE(0x300000, 0x30007f) AM_DEVREADWRITE8_LEGACY("ensoniq", es5506_r, es5506_w, 0x00ff) /* Sound */ \ AM_RANGE(_ROM, 0xffffff) AM_ROMBANK("bank1") /* ROM */ \ @@ -436,20 +430,20 @@ static READ16_HANDLER( fake_r ) { return ssv_scroll[offset]; } Drift Out '94 ***************************************************************************/ -static READ16_HANDLER( drifto94_rand_r ) +READ16_MEMBER(ssv_state::drifto94_rand_r) { - return space->machine().rand() & 0xffff; + return machine().rand() & 0xffff; } static ADDRESS_MAP_START( drifto94_map, AS_PROGRAM, 16, ssv_state ) // AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 1 at the start AM_RANGE(0x400000, 0x47ffff) AM_WRITEONLY // ? - AM_RANGE(0x480000, 0x480001) AM_READWRITE_LEGACY(dsp_dr_r, dsp_dr_w) - AM_RANGE(0x482000, 0x482fff) AM_READWRITE_LEGACY(dsp_r, dsp_w) + AM_RANGE(0x480000, 0x480001) AM_READWRITE(dsp_dr_r, dsp_dr_w) + AM_RANGE(0x482000, 0x482fff) AM_READWRITE(dsp_r, dsp_w) AM_RANGE(0x483000, 0x485fff) AM_WRITENOP // ? AM_RANGE(0x500000, 0x500001) AM_WRITENOP // ?? - AM_RANGE(0x510000, 0x510001) AM_READ_LEGACY(drifto94_rand_r ) // ?? - AM_RANGE(0x520000, 0x520001) AM_READ_LEGACY(drifto94_rand_r ) // ?? + AM_RANGE(0x510000, 0x510001) AM_READ(drifto94_rand_r ) // ?? + AM_RANGE(0x520000, 0x520001) AM_READ(drifto94_rand_r ) // ?? AM_RANGE(0x580000, 0x5807ff) AM_RAM AM_SHARE("nvram") // NVRAM SSV_MAP( 0xc00000 ) ADDRESS_MAP_END @@ -498,22 +492,20 @@ static WRITE16_DEVICE_HANDLER( gdfs_eeprom_w ) } -static READ16_HANDLER( gdfs_gfxram_r ) +READ16_MEMBER(ssv_state::gdfs_gfxram_r) { - ssv_state *state = space->machine().driver_data<ssv_state>(); - return state->m_eaglshot_gfxram[offset + state->m_gdfs_gfxram_bank * 0x100000/2]; + return m_eaglshot_gfxram[offset + m_gdfs_gfxram_bank * 0x100000/2]; } -static WRITE16_HANDLER( gdfs_gfxram_w ) +WRITE16_MEMBER(ssv_state::gdfs_gfxram_w) { - ssv_state *state = space->machine().driver_data<ssv_state>(); - offset += state->m_gdfs_gfxram_bank * 0x100000/2; - COMBINE_DATA(&state->m_eaglshot_gfxram[offset]); - gfx_element_mark_dirty(space->machine().gfx[2], offset / (16*8/2)); + offset += m_gdfs_gfxram_bank * 0x100000/2; + COMBINE_DATA(&m_eaglshot_gfxram[offset]); + gfx_element_mark_dirty(machine().gfx[2], offset / (16*8/2)); } -static READ16_HANDLER( gdfs_blitram_r ) +READ16_MEMBER(ssv_state::gdfs_blitram_r) { switch (offset) { @@ -522,14 +514,13 @@ static READ16_HANDLER( gdfs_blitram_r ) return 0; } - logerror("CPU #0 PC: %06X - Blit reg read: %02X\n",cpu_get_pc(&space->device()),offset*2); + logerror("CPU #0 PC: %06X - Blit reg read: %02X\n",cpu_get_pc(&space.device()),offset*2); return 0; } -static WRITE16_HANDLER( gdfs_blitram_w ) +WRITE16_MEMBER(ssv_state::gdfs_blitram_w) { - ssv_state *state = space->machine().driver_data<ssv_state>(); - UINT16 *gdfs_blitram = state->m_gdfs_blitram; + UINT16 *gdfs_blitram = m_gdfs_blitram; COMBINE_DATA(&gdfs_blitram[offset]); @@ -538,10 +529,10 @@ static WRITE16_HANDLER( gdfs_blitram_w ) case 0x8a/2: { if (data & ~0x43) - logerror("CPU #0 PC: %06X - Unknown gdfs_gfxram_bank bit written %04X\n",cpu_get_pc(&space->device()),data); + logerror("CPU #0 PC: %06X - Unknown gdfs_gfxram_bank bit written %04X\n",cpu_get_pc(&space.device()),data); if (ACCESSING_BITS_0_7) - state->m_gdfs_gfxram_bank = data & 3; + m_gdfs_gfxram_bank = data & 3; } break; @@ -558,12 +549,12 @@ static WRITE16_HANDLER( gdfs_blitram_w ) UINT32 dst = (gdfs_blitram[0xc4/2] + (gdfs_blitram[0xc6/2] << 16)) << 4; UINT32 len = (gdfs_blitram[0xc8/2]) << 4; - UINT8 *rom = space->machine().region("gfx2")->base(); - size_t size = space->machine().region("gfx2")->bytes(); + UINT8 *rom = machine().region("gfx2")->base(); + size_t size = machine().region("gfx2")->bytes(); if ( (src+len <= size) && (dst+len <= 4 * 0x100000) ) { - memcpy( &state->m_eaglshot_gfxram[dst/2], &rom[src], len ); + memcpy( &m_eaglshot_gfxram[dst/2], &rom[src], len ); if (len % (16*8)) len = len / (16*8) + 1; else len = len / (16*8); @@ -571,19 +562,19 @@ static WRITE16_HANDLER( gdfs_blitram_w ) dst /= 16*8; while (len--) { - gfx_element_mark_dirty(space->machine().gfx[2], dst); + gfx_element_mark_dirty(machine().gfx[2], dst); dst++; } } else { - logerror("CPU #0 PC: %06X - Blit out of range: src %x, dst %x, len %x\n",cpu_get_pc(&space->device()),src,dst,len); + logerror("CPU #0 PC: %06X - Blit out of range: src %x, dst %x, len %x\n",cpu_get_pc(&space.device()),src,dst,len); } } break; default: - logerror("CPU #0 PC: %06X - Blit reg written: %02X <- %04X\n",cpu_get_pc(&space->device()),offset*2,data); + logerror("CPU #0 PC: %06X - Blit reg written: %02X <- %04X\n",cpu_get_pc(&space.device()),offset*2,data); } } @@ -595,8 +586,8 @@ static ADDRESS_MAP_START( gdfs_map, AS_PROGRAM, 16, ssv_state ) AM_RANGE(0x540000, 0x540001) AM_DEVREAD_LEGACY("eeprom", gdfs_eeprom_r) AM_RANGE(0x600000, 0x600fff) AM_RAM AM_RANGE(0x800000, 0x87ffff) AM_RAM AM_BASE(m_spriteram2) - AM_RANGE(0x8c0000, 0x8c00ff) AM_READWRITE_LEGACY(gdfs_blitram_r, gdfs_blitram_w) AM_BASE(m_gdfs_blitram) - AM_RANGE(0x900000, 0x9fffff) AM_READWRITE_LEGACY(gdfs_gfxram_r, gdfs_gfxram_w) + AM_RANGE(0x8c0000, 0x8c00ff) AM_READWRITE(gdfs_blitram_r, gdfs_blitram_w) AM_BASE(m_gdfs_blitram) + AM_RANGE(0x900000, 0x9fffff) AM_READWRITE(gdfs_gfxram_r, gdfs_gfxram_w) SSV_MAP( 0xc00000 ) ADDRESS_MAP_END @@ -613,25 +604,24 @@ ADDRESS_MAP_END rom-board, AFAIK) */ -static READ16_HANDLER( hypreact_input_r ) +READ16_MEMBER(ssv_state::hypreact_input_r) { - ssv_state *state = space->machine().driver_data<ssv_state>(); - UINT16 input_sel = *state->m_input_sel; - - if (input_sel & 0x0001) return input_port_read(space->machine(), "KEY0"); - if (input_sel & 0x0002) return input_port_read(space->machine(), "KEY1"); - if (input_sel & 0x0004) return input_port_read(space->machine(), "KEY2"); - if (input_sel & 0x0008) return input_port_read(space->machine(), "KEY3"); - logerror("CPU #0 PC %06X: unknown input read: %04X\n",cpu_get_pc(&space->device()),input_sel); + UINT16 input_sel = *m_input_sel; + + if (input_sel & 0x0001) return input_port_read(machine(), "KEY0"); + if (input_sel & 0x0002) return input_port_read(machine(), "KEY1"); + if (input_sel & 0x0004) return input_port_read(machine(), "KEY2"); + if (input_sel & 0x0008) return input_port_read(machine(), "KEY3"); + logerror("CPU #0 PC %06X: unknown input read: %04X\n",cpu_get_pc(&space.device()),input_sel); return 0xffff; } static ADDRESS_MAP_START( hypreact_map, AS_PROGRAM, 16, ssv_state ) AM_RANGE(0x210000, 0x210001) AM_READ_LEGACY(watchdog_reset16_r) // Watchdog // AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 5 at the start - AM_RANGE(0x21000e, 0x21000f) AM_WRITE_LEGACY(ssv_lockout_inv_w) // Inverted lockout lines + AM_RANGE(0x21000e, 0x21000f) AM_WRITE(ssv_lockout_inv_w) // Inverted lockout lines // AM_RANGE(0x280000, 0x280001) AM_READNOP // ? read at the start, value not used - AM_RANGE(0xc00000, 0xc00001) AM_READ_LEGACY(hypreact_input_r) // Inputs + AM_RANGE(0xc00000, 0xc00001) AM_READ(hypreact_input_r) // Inputs AM_RANGE(0xc00006, 0xc00007) AM_RAM AM_BASE(m_input_sel) // AM_RANGE(0xc00008, 0xc00009) AM_NOP // SSV_MAP( 0xf00000 ) @@ -645,10 +635,10 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( hypreac2_map, AS_PROGRAM, 16, ssv_state ) AM_RANGE(0x210000, 0x210001) AM_READ_LEGACY(watchdog_reset16_r) // Watchdog // AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 5 at the start - AM_RANGE(0x21000e, 0x21000f) AM_WRITE_LEGACY(ssv_lockout_inv_w) // Inverted lockout lines + AM_RANGE(0x21000e, 0x21000f) AM_WRITE(ssv_lockout_inv_w) // Inverted lockout lines // AM_RANGE(0x280000, 0x280001) AM_READNOP // ? read at the start, value not used - AM_RANGE(0x500000, 0x500001) AM_READ_LEGACY(hypreact_input_r) // Inputs - AM_RANGE(0x500002, 0x500003) AM_READ_LEGACY(hypreact_input_r) // (again?) + AM_RANGE(0x500000, 0x500001) AM_READ(hypreact_input_r) // Inputs + AM_RANGE(0x500002, 0x500003) AM_READ(hypreact_input_r) // (again?) AM_RANGE(0x520000, 0x520001) AM_WRITEONLY AM_BASE(m_input_sel) // Inputs // 0x540000, 0x540003 communication with other units SSV_MAP( 0xe00000 ) @@ -659,14 +649,14 @@ ADDRESS_MAP_END Jan Jan Simasyo ***************************************************************************/ -static READ16_HANDLER( srmp4_input_r ); + static ADDRESS_MAP_START( janjans1_map, AS_PROGRAM, 16, ssv_state ) AM_RANGE(0x210000, 0x210001) AM_WRITENOP // koikois2 but not janjans1 // AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 1 at the start AM_RANGE(0x210006, 0x210007) AM_READNOP AM_RANGE(0x800000, 0x800001) AM_WRITEONLY AM_BASE(m_input_sel) // Inputs - AM_RANGE(0x800002, 0x800003) AM_READ_LEGACY(srmp4_input_r) // Inputs + AM_RANGE(0x800002, 0x800003) AM_READ(srmp4_input_r) // Inputs SSV_MAP( 0xc00000 ) ADDRESS_MAP_END @@ -703,22 +693,20 @@ ADDRESS_MAP_END /* Monster Slider needs the RAM mirrored for the gameplay logic to work correctly */ -static READ16_HANDLER( ssv_mainram_r ) +READ16_MEMBER(ssv_state::ssv_mainram_r) { - ssv_state *state = space->machine().driver_data<ssv_state>(); - return state->m_mainram[offset]; + return m_mainram[offset]; } -static WRITE16_HANDLER( ssv_mainram_w ) +WRITE16_MEMBER(ssv_state::ssv_mainram_w) { - ssv_state *state = space->machine().driver_data<ssv_state>(); - COMBINE_DATA(&state->m_mainram[offset]); + COMBINE_DATA(&m_mainram[offset]); } static ADDRESS_MAP_START( mslider_map, AS_PROGRAM, 16, ssv_state ) - AM_RANGE(0x010000, 0x01ffff) AM_READWRITE_LEGACY(ssv_mainram_r, ssv_mainram_w) // RAM Mirror + AM_RANGE(0x010000, 0x01ffff) AM_READWRITE(ssv_mainram_r, ssv_mainram_w) // RAM Mirror // AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 1 at the start AM_RANGE(0x400000, 0x47ffff) AM_WRITEONLY // ? // AM_RANGE(0x500000, 0x500001) AM_WRITENOP // ? ff at the start @@ -741,23 +729,22 @@ ADDRESS_MAP_END Super Real Mahjong PIV ***************************************************************************/ -static READ16_HANDLER( srmp4_input_r ) +READ16_MEMBER(ssv_state::srmp4_input_r) { - ssv_state *state = space->machine().driver_data<ssv_state>(); - UINT16 input_sel = *state->m_input_sel; - - if (input_sel & 0x0002) return input_port_read(space->machine(), "KEY0"); - if (input_sel & 0x0004) return input_port_read(space->machine(), "KEY1"); - if (input_sel & 0x0008) return input_port_read(space->machine(), "KEY2"); - if (input_sel & 0x0010) return input_port_read(space->machine(), "KEY3"); - logerror("CPU #0 PC %06X: unknown input read: %04X\n",cpu_get_pc(&space->device()),input_sel); + UINT16 input_sel = *m_input_sel; + + if (input_sel & 0x0002) return input_port_read(machine(), "KEY0"); + if (input_sel & 0x0004) return input_port_read(machine(), "KEY1"); + if (input_sel & 0x0008) return input_port_read(machine(), "KEY2"); + if (input_sel & 0x0010) return input_port_read(machine(), "KEY3"); + logerror("CPU #0 PC %06X: unknown input read: %04X\n",cpu_get_pc(&space.device()),input_sel); return 0xffff; } static ADDRESS_MAP_START( srmp4_map, AS_PROGRAM, 16, ssv_state ) AM_RANGE(0x210000, 0x210001) AM_READ_LEGACY(watchdog_reset16_r) // Watchdog // AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 1,5 at the start - AM_RANGE(0xc0000a, 0xc0000b) AM_READ_LEGACY(srmp4_input_r) // Inputs + AM_RANGE(0xc0000a, 0xc0000b) AM_READ(srmp4_input_r) // Inputs AM_RANGE(0xc0000e, 0xc0000f) AM_WRITEONLY AM_BASE(m_input_sel) // Inputs AM_RANGE(0xc00010, 0xc00011) AM_WRITENOP // SSV_MAP( 0xf00000 ) @@ -772,16 +759,16 @@ ADDRESS_MAP_END Interrupts aren't supported by the chip emulator yet (lev 5 in this case, I guess) */ -static READ16_HANDLER( srmp7_irqv_r ) +READ16_MEMBER(ssv_state::srmp7_irqv_r) { return 0x0080; } -static WRITE16_HANDLER( srmp7_sound_bank_w ) +WRITE16_MEMBER(ssv_state::srmp7_sound_bank_w) { if (ACCESSING_BITS_0_7) { - device_t *device = space->machine().device("ensoniq"); + device_t *device = machine().device("ensoniq"); int bank = 0x400000/2 * (data & 1); // UINT16 address int voice; for (voice = 0; voice < 32; voice++) @@ -790,16 +777,15 @@ static WRITE16_HANDLER( srmp7_sound_bank_w ) // popmessage("%04X",data); } -static READ16_HANDLER( srmp7_input_r ) +READ16_MEMBER(ssv_state::srmp7_input_r) { - ssv_state *state = space->machine().driver_data<ssv_state>(); - UINT16 input_sel = *state->m_input_sel; - - if (input_sel & 0x0002) return input_port_read(space->machine(), "KEY0"); - if (input_sel & 0x0004) return input_port_read(space->machine(), "KEY1"); - if (input_sel & 0x0008) return input_port_read(space->machine(), "KEY2"); - if (input_sel & 0x0010) return input_port_read(space->machine(), "KEY3"); - logerror("CPU #0 PC %06X: unknown input read: %04X\n",cpu_get_pc(&space->device()),input_sel); + UINT16 input_sel = *m_input_sel; + + if (input_sel & 0x0002) return input_port_read(machine(), "KEY0"); + if (input_sel & 0x0004) return input_port_read(machine(), "KEY1"); + if (input_sel & 0x0008) return input_port_read(machine(), "KEY2"); + if (input_sel & 0x0010) return input_port_read(machine(), "KEY3"); + logerror("CPU #0 PC %06X: unknown input read: %04X\n",cpu_get_pc(&space.device()),input_sel); return 0xffff; } @@ -807,11 +793,11 @@ static ADDRESS_MAP_START( srmp7_map, AS_PROGRAM, 16, ssv_state ) AM_RANGE(0x010000, 0x050faf) AM_RAM // More RAM AM_RANGE(0x210000, 0x210001) AM_READ_LEGACY(watchdog_reset16_r) // Watchdog // AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 0,4 at the start - AM_RANGE(0x21000e, 0x21000f) AM_WRITE_LEGACY(ssv_lockout_inv_w) // Coin Counters / Lockouts - AM_RANGE(0x300076, 0x300077) AM_READ_LEGACY(srmp7_irqv_r) // Sound + AM_RANGE(0x21000e, 0x21000f) AM_WRITE(ssv_lockout_inv_w) // Coin Counters / Lockouts + AM_RANGE(0x300076, 0x300077) AM_READ(srmp7_irqv_r) // Sound // 0x540000, 0x540003, related to lev 5 irq? - AM_RANGE(0x580000, 0x580001) AM_WRITE_LEGACY(srmp7_sound_bank_w) // Sound Bank - AM_RANGE(0x600000, 0x600001) AM_READ_LEGACY(srmp7_input_r) // Inputs + AM_RANGE(0x580000, 0x580001) AM_WRITE(srmp7_sound_bank_w) // Sound Bank + AM_RANGE(0x600000, 0x600001) AM_READ(srmp7_input_r) // Inputs AM_RANGE(0x680000, 0x680001) AM_WRITEONLY AM_BASE(m_input_sel) // Inputs SSV_MAP( 0xc00000 ) ADDRESS_MAP_END @@ -839,48 +825,46 @@ ADDRESS_MAP_END ***************************************************************************/ -static READ16_HANDLER( sxyreact_ballswitch_r ) +READ16_MEMBER(ssv_state::sxyreact_ballswitch_r) { - return input_port_read_safe(space->machine(), "SERVICE", 0); + return input_port_read_safe(machine(), "SERVICE", 0); } -static READ16_HANDLER( sxyreact_dial_r ) +READ16_MEMBER(ssv_state::sxyreact_dial_r) { - ssv_state *state = space->machine().driver_data<ssv_state>(); - return ((state->m_sxyreact_serial >> 1) & 0x80); + return ((m_sxyreact_serial >> 1) & 0x80); } -static WRITE16_HANDLER( sxyreact_dial_w ) +WRITE16_MEMBER(ssv_state::sxyreact_dial_w) { if (ACCESSING_BITS_0_7) { - ssv_state *state = space->machine().driver_data<ssv_state>(); if (data & 0x20) - state->m_sxyreact_serial = input_port_read_safe(space->machine(), "PADDLE", 0) & 0xff; + m_sxyreact_serial = input_port_read_safe(machine(), "PADDLE", 0) & 0xff; - if ( (state->m_sxyreact_dial & 0x40) && !(data & 0x40) ) // $40 -> $00 - state->m_sxyreact_serial <<= 1; // shift 1 bit + if ( (m_sxyreact_dial & 0x40) && !(data & 0x40) ) // $40 -> $00 + m_sxyreact_serial <<= 1; // shift 1 bit - state->m_sxyreact_dial = data; + m_sxyreact_dial = data; } } -static WRITE16_HANDLER( sxyreact_motor_w ) +WRITE16_MEMBER(ssv_state::sxyreact_motor_w) { // popmessage("%04X",data); // 8 = motor on; 0 = motor off } static ADDRESS_MAP_START( sxyreact_map, AS_PROGRAM, 16, ssv_state ) -// AM_RANGE(0x020000, 0x03ffff) AM_READWRITE_LEGACY(ssv_mainram_r, ssv_mainram_w) // sxyreac2 reads / writes here, why? +// AM_RANGE(0x020000, 0x03ffff) AM_READWRITE(ssv_mainram_r, ssv_mainram_w) // sxyreac2 reads / writes here, why? AM_RANGE(0x210000, 0x210001) AM_READ_LEGACY(watchdog_reset16_r) // Watchdog // AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 1 at the start - AM_RANGE(0x21000e, 0x21000f) AM_WRITE_LEGACY(ssv_lockout_inv_w) // Inverted lockout lines - AM_RANGE(0x500002, 0x500003) AM_READ_LEGACY(sxyreact_ballswitch_r) // ? - AM_RANGE(0x500004, 0x500005) AM_READWRITE_LEGACY(sxyreact_dial_r, sxyreact_motor_w) // Dial Value (serial) - AM_RANGE(0x520000, 0x520001) AM_WRITE_LEGACY(sxyreact_dial_w) // Dial Value (advance 1 bit) + AM_RANGE(0x21000e, 0x21000f) AM_WRITE(ssv_lockout_inv_w) // Inverted lockout lines + AM_RANGE(0x500002, 0x500003) AM_READ(sxyreact_ballswitch_r) // ? + AM_RANGE(0x500004, 0x500005) AM_READWRITE(sxyreact_dial_r, sxyreact_motor_w) // Dial Value (serial) + AM_RANGE(0x520000, 0x520001) AM_WRITE(sxyreact_dial_w) // Dial Value (advance 1 bit) AM_RANGE(0x580000, 0x58ffff) AM_RAM AM_SHARE("nvram") // NVRAM SSV_MAP( 0xe00000 ) ADDRESS_MAP_END @@ -895,8 +879,8 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( twineag2_map, AS_PROGRAM, 16, ssv_state ) AM_RANGE(0x010000, 0x03ffff) AM_RAM // More RAM AM_RANGE(0x210000, 0x210001) AM_READ_LEGACY(watchdog_reset16_r) // Watchdog (also value is cmp.b with mem 8) - AM_RANGE(0x480000, 0x480001) AM_READWRITE_LEGACY(dsp_dr_r, dsp_dr_w) - AM_RANGE(0x482000, 0x482fff) AM_READWRITE_LEGACY(dsp_r, dsp_w) + AM_RANGE(0x480000, 0x480001) AM_READWRITE(dsp_dr_r, dsp_dr_w) + AM_RANGE(0x482000, 0x482fff) AM_READWRITE(dsp_r, dsp_w) SSV_MAP( 0xe00000 ) ADDRESS_MAP_END @@ -920,49 +904,45 @@ ADDRESS_MAP_END /* from st0016.c */ -static READ32_HANDLER(latch32_r) +READ32_MEMBER(ssv_state::latch32_r) { - ssv_state *state = space->machine().driver_data<ssv_state>(); if(!offset) - state->m_latches[2]&=~2; - return state->m_latches[offset]; + m_latches[2]&=~2; + return m_latches[offset]; } -static WRITE32_HANDLER(latch32_w) +WRITE32_MEMBER(ssv_state::latch32_w) { - ssv_state *state = space->machine().driver_data<ssv_state>(); if(!offset) - state->m_latches[2]|=1; - COMBINE_DATA(&state->m_latches[offset]); - space->machine().scheduler().synchronize(); + m_latches[2]|=1; + COMBINE_DATA(&m_latches[offset]); + machine().scheduler().synchronize(); } -static READ16_HANDLER(latch16_r) +READ16_MEMBER(ssv_state::latch16_r) { - ssv_state *state = space->machine().driver_data<ssv_state>(); if(!offset) - state->m_latches[2]&=~1; - return state->m_latches[offset]; + m_latches[2]&=~1; + return m_latches[offset]; } -static WRITE16_HANDLER(latch16_w) +WRITE16_MEMBER(ssv_state::latch16_w) { - ssv_state *state = space->machine().driver_data<ssv_state>(); if(!offset) - state->m_latches[2]|=2; - state->m_latches[offset]=data; - space->machine().scheduler().synchronize(); + m_latches[2]|=2; + m_latches[offset]=data; + machine().scheduler().synchronize(); } static ADDRESS_MAP_START( jsk_map, AS_PROGRAM, 16, ssv_state ) - AM_RANGE(0x050000, 0x05ffff) AM_READWRITE_LEGACY(ssv_mainram_r, ssv_mainram_w) // RAM Mirror? + AM_RANGE(0x050000, 0x05ffff) AM_READWRITE(ssv_mainram_r, ssv_mainram_w) // RAM Mirror? AM_RANGE(0x210000, 0x210001) AM_WRITE_LEGACY(watchdog_reset16_w) // Watchdog AM_RANGE(0x400000, 0x47ffff) AM_RAM // RAM? - AM_RANGE(0x900000, 0x900007) AM_READWRITE_LEGACY(latch16_r, latch16_w) + AM_RANGE(0x900000, 0x900007) AM_READWRITE(latch16_r, latch16_w) SSV_MAP( 0xf00000 ) ADDRESS_MAP_END @@ -971,7 +951,7 @@ static ADDRESS_MAP_START( jsk_v810_mem, AS_PROGRAM, 32, ssv_state ) AM_RANGE(0x00000000, 0x0001ffff) AM_RAM AM_RANGE(0x80000000, 0x8001ffff) AM_RAM AM_RANGE(0xc0000000, 0xc001ffff) AM_RAM - AM_RANGE(0x40000000, 0x4000000f) AM_READWRITE_LEGACY(latch32_r, latch32_w) + AM_RANGE(0x40000000, 0x4000000f) AM_READWRITE(latch32_r, latch32_w) AM_RANGE(0xfff80000, 0xffffffff) AM_ROM AM_REGION("sub", 0) ADDRESS_MAP_END @@ -980,13 +960,12 @@ ADDRESS_MAP_END Eagle Shot Golf ***************************************************************************/ -static READ16_HANDLER( eaglshot_gfxrom_r ) +READ16_MEMBER(ssv_state::eaglshot_gfxrom_r) { - ssv_state *state = space->machine().driver_data<ssv_state>(); - UINT8 *rom = space->machine().region("gfx1")->base(); - size_t size = space->machine().region("gfx1")->bytes(); + UINT8 *rom = machine().region("gfx1")->base(); + size_t size = machine().region("gfx1")->bytes(); - offset = offset * 2 + state->m_gfxrom_select * 0x200000; + offset = offset * 2 + m_gfxrom_select * 0x200000; if (offset > size) return 0xffff; @@ -994,69 +973,64 @@ static READ16_HANDLER( eaglshot_gfxrom_r ) return rom[offset] + (rom[offset+1]<<8); } -static WRITE16_HANDLER( eaglshot_gfxrom_w ) +WRITE16_MEMBER(ssv_state::eaglshot_gfxrom_w) { if (ACCESSING_BITS_0_7) { - ssv_state *state = space->machine().driver_data<ssv_state>(); - state->m_gfxrom_select = data; + m_gfxrom_select = data; } } -static READ16_HANDLER( eaglshot_trackball_r ) +READ16_MEMBER(ssv_state::eaglshot_trackball_r) { - ssv_state *state = space->machine().driver_data<ssv_state>(); - switch(state->m_trackball_select) + switch(m_trackball_select) { - case 0x60: return (input_port_read(space->machine(), "TRACKX") >> 8) & 0xff; - case 0x40: return (input_port_read(space->machine(), "TRACKX") >> 0) & 0xff; + case 0x60: return (input_port_read(machine(), "TRACKX") >> 8) & 0xff; + case 0x40: return (input_port_read(machine(), "TRACKX") >> 0) & 0xff; - case 0x70: return (input_port_read(space->machine(), "TRACKY") >> 8) & 0xff; - case 0x50: return (input_port_read(space->machine(), "TRACKY") >> 0) & 0xff; + case 0x70: return (input_port_read(machine(), "TRACKY") >> 8) & 0xff; + case 0x50: return (input_port_read(machine(), "TRACKY") >> 0) & 0xff; } return 0; } -static WRITE16_HANDLER( eaglshot_trackball_w ) +WRITE16_MEMBER(ssv_state::eaglshot_trackball_w) { if (ACCESSING_BITS_0_7) { - ssv_state *state = space->machine().driver_data<ssv_state>(); - state->m_trackball_select = data; + m_trackball_select = data; } } -static READ16_HANDLER( eaglshot_gfxram_r ) +READ16_MEMBER(ssv_state::eaglshot_gfxram_r) { - ssv_state *state = space->machine().driver_data<ssv_state>(); - return state->m_eaglshot_gfxram[offset + (state->m_scroll[0x76/2] & 0xf) * 0x40000/2]; + return m_eaglshot_gfxram[offset + (m_scroll[0x76/2] & 0xf) * 0x40000/2]; } -static WRITE16_HANDLER( eaglshot_gfxram_w ) +WRITE16_MEMBER(ssv_state::eaglshot_gfxram_w) { - ssv_state *state = space->machine().driver_data<ssv_state>(); - offset += (state->m_scroll[0x76/2] & 0xf) * 0x40000/2; - COMBINE_DATA(&state->m_eaglshot_gfxram[offset]); - gfx_element_mark_dirty(space->machine().gfx[0], offset / (16*8/2)); - gfx_element_mark_dirty(space->machine().gfx[1], offset / (16*8/2)); + offset += (m_scroll[0x76/2] & 0xf) * 0x40000/2; + COMBINE_DATA(&m_eaglshot_gfxram[offset]); + gfx_element_mark_dirty(machine().gfx[0], offset / (16*8/2)); + gfx_element_mark_dirty(machine().gfx[1], offset / (16*8/2)); } static ADDRESS_MAP_START( eaglshot_map, AS_PROGRAM, 16, ssv_state ) - AM_RANGE(0x180000, 0x1bffff) AM_READWRITE_LEGACY(eaglshot_gfxram_r, eaglshot_gfxram_w) + AM_RANGE(0x180000, 0x1bffff) AM_READWRITE(eaglshot_gfxram_r, eaglshot_gfxram_w) AM_RANGE(0x210000, 0x210001) AM_READNOP /*AM_READ_LEGACY(watchdog_reset16_r)*/ // Watchdog // AM_RANGE(0x210002, 0x210003) AM_WRITENOP // ? 0,4 at the start - AM_RANGE(0x21000e, 0x21000f) AM_WRITE_LEGACY(ssv_lockout_inv_w) // Inverted lockout lines - AM_RANGE(0x800000, 0x800001) AM_WRITE_LEGACY(eaglshot_gfxrom_w) - AM_RANGE(0x900000, 0x900001) AM_WRITE_LEGACY(eaglshot_trackball_w) - AM_RANGE(0xa00000, 0xbfffff) AM_READ_LEGACY(eaglshot_gfxrom_r) + AM_RANGE(0x21000e, 0x21000f) AM_WRITE(ssv_lockout_inv_w) // Inverted lockout lines + AM_RANGE(0x800000, 0x800001) AM_WRITE(eaglshot_gfxrom_w) + AM_RANGE(0x900000, 0x900001) AM_WRITE(eaglshot_trackball_w) + AM_RANGE(0xa00000, 0xbfffff) AM_READ(eaglshot_gfxrom_r) AM_RANGE(0xc00000, 0xc007ff) AM_RAM AM_SHARE("nvram") // NVRAM - AM_RANGE(0xd00000, 0xd00001) AM_READ_LEGACY(eaglshot_trackball_r) + AM_RANGE(0xd00000, 0xd00001) AM_READ(eaglshot_trackball_r) SSV_MAP( 0xf00000 ) ADDRESS_MAP_END |