diff options
Diffstat (limited to 'src/mame/drivers/suna8.c')
-rw-r--r-- | src/mame/drivers/suna8.c | 318 |
1 files changed, 150 insertions, 168 deletions
diff --git a/src/mame/drivers/suna8.c b/src/mame/drivers/suna8.c index d2d3458bd76..910b4e0a443 100644 --- a/src/mame/drivers/suna8.c +++ b/src/mame/drivers/suna8.c @@ -432,10 +432,9 @@ static DRIVER_INIT( sparkman ) Hard Head ***************************************************************************/ -static READ8_HANDLER( hardhead_protection_r ) +READ8_MEMBER(suna8_state::hardhead_protection_r) { - suna8_state *state = space->machine().driver_data<suna8_state>(); - UINT8 protection_val = state->m_protection_val; + UINT8 protection_val = m_protection_val; if (protection_val & 0x80) return ((~offset & 0x20) ? 0x20 : 0) | @@ -446,12 +445,11 @@ static READ8_HANDLER( hardhead_protection_r ) (((offset ^ protection_val) & 0x01) ? 0x84 : 0); } -static WRITE8_HANDLER( hardhead_protection_w ) +WRITE8_MEMBER(suna8_state::hardhead_protection_w) { - suna8_state *state = space->machine().driver_data<suna8_state>(); - if (data & 0x80) state->m_protection_val = data; - else state->m_protection_val = offset & 1; + if (data & 0x80) m_protection_val = data; + else m_protection_val = offset & 1; } @@ -467,18 +465,17 @@ static WRITE8_HANDLER( hardhead_protection_w ) Hard Head ***************************************************************************/ -static READ8_HANDLER( hardhead_ip_r ) +READ8_MEMBER(suna8_state::hardhead_ip_r) { - suna8_state *state = space->machine().driver_data<suna8_state>(); - switch (*state->m_hardhead_ip) + switch (*m_hardhead_ip) { - case 0: return input_port_read(space->machine(), "P1"); - case 1: return input_port_read(space->machine(), "P2"); - case 2: return input_port_read(space->machine(), "DSW1"); - case 3: return input_port_read(space->machine(), "DSW2"); + case 0: return input_port_read(machine(), "P1"); + case 1: return input_port_read(machine(), "P2"); + case 2: return input_port_read(machine(), "DSW1"); + case 3: return input_port_read(machine(), "DSW2"); default: - logerror("CPU #0 - PC %04X: Unknown IP read: %02X\n", cpu_get_pc(&space->device()), *state->m_hardhead_ip); + logerror("CPU #0 - PC %04X: Unknown IP read: %02X\n", cpu_get_pc(&space.device()), *m_hardhead_ip); return 0xff; } } @@ -488,12 +485,12 @@ static READ8_HANDLER( hardhead_ip_r ) ---4 ---- ---- 3210 ROM Bank */ -static WRITE8_HANDLER( hardhead_bankswitch_w ) +WRITE8_MEMBER(suna8_state::hardhead_bankswitch_w) { int bank = data & 0x0f; - if (data & ~0xef) logerror("CPU #0 - PC %04X: unknown bank bits: %02X\n",cpu_get_pc(&space->device()),data); - memory_set_bank(space->machine(), "bank1", bank); + if (data & ~0xef) logerror("CPU #0 - PC %04X: unknown bank bits: %02X\n",cpu_get_pc(&space.device()),data); + memory_set_bank(machine(), "bank1", bank); } @@ -503,11 +500,11 @@ static WRITE8_HANDLER( hardhead_bankswitch_w ) ---- -2-- Flip Screen ---- --10 */ -static WRITE8_HANDLER( hardhead_flipscreen_w ) +WRITE8_MEMBER(suna8_state::hardhead_flipscreen_w) { - flip_screen_set(space->machine(), data & 0x04); - coin_lockout_w ( space->machine(), 0, data & 0x08); - coin_lockout_w ( space->machine(), 1, data & 0x10); + flip_screen_set(machine(), data & 0x04); + coin_lockout_w ( machine(), 0, data & 0x08); + coin_lockout_w ( machine(), 1, data & 0x10); } static ADDRESS_MAP_START( hardhead_map, AS_PROGRAM, 8, suna8_state ) @@ -515,14 +512,14 @@ static ADDRESS_MAP_START( hardhead_map, AS_PROGRAM, 8, suna8_state ) AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") // Banked ROM AM_RANGE(0xc000, 0xd7ff) AM_RAM // RAM AM_RANGE(0xd800, 0xd9ff) AM_RAM_WRITE_LEGACY(paletteram_RRRRGGGGBBBBxxxx_be_w) AM_BASE_GENERIC(paletteram) // Palette - AM_RANGE(0xda00, 0xda00) AM_RAM_READ_LEGACY(hardhead_ip_r) AM_BASE(m_hardhead_ip) // Input Port Select - AM_RANGE(0xda80, 0xda80) AM_READWRITE_LEGACY(soundlatch2_r, hardhead_bankswitch_w ) // ROM Banking + AM_RANGE(0xda00, 0xda00) AM_RAM_READ(hardhead_ip_r) AM_BASE(m_hardhead_ip) // Input Port Select + AM_RANGE(0xda80, 0xda80) AM_READ_LEGACY(soundlatch2_r) AM_WRITE(hardhead_bankswitch_w ) // ROM Banking AM_RANGE(0xdb00, 0xdb00) AM_WRITE_LEGACY(soundlatch_w ) // To Sound CPU - AM_RANGE(0xdb80, 0xdb80) AM_WRITE_LEGACY(hardhead_flipscreen_w ) // Flip Screen + Coin Lockout + AM_RANGE(0xdb80, 0xdb80) AM_WRITE(hardhead_flipscreen_w ) // Flip Screen + Coin Lockout AM_RANGE(0xdc00, 0xdc00) AM_NOP // <- R (after bank select) AM_RANGE(0xdc80, 0xdc80) AM_NOP // <- R (after bank select) AM_RANGE(0xdd00, 0xdd00) AM_NOP // <- R (after ip select) - AM_RANGE(0xdd80, 0xddff) AM_READWRITE_LEGACY(hardhead_protection_r, hardhead_protection_w ) // Protection + AM_RANGE(0xdd80, 0xddff) AM_READWRITE(hardhead_protection_r, hardhead_protection_w ) // Protection AM_RANGE(0xe000, 0xffff) AM_RAM_WRITE_LEGACY(suna8_spriteram_w) AM_BASE(m_spriteram) // Sprites ADDRESS_MAP_END @@ -543,18 +540,18 @@ ADDRESS_MAP_END ---- 3--- ---- -210 ROM Bank */ -static WRITE8_HANDLER( rranger_bankswitch_w ) +WRITE8_MEMBER(suna8_state::rranger_bankswitch_w) { int bank = data & 0x07; if ((~data & 0x10) && (bank >= 4)) bank += 4; - if (data & ~0xf7) logerror("CPU #0 - PC %04X: unknown bank bits: %02X\n",cpu_get_pc(&space->device()),data); + if (data & ~0xf7) logerror("CPU #0 - PC %04X: unknown bank bits: %02X\n",cpu_get_pc(&space.device()),data); - memory_set_bank(space->machine(), "bank1", bank); + memory_set_bank(machine(), "bank1", bank); - flip_screen_set(space->machine(), data & 0x20); - coin_lockout_w ( space->machine(), 0, data & 0x40); - coin_lockout_w ( space->machine(), 1, data & 0x80); + flip_screen_set(machine(), data & 0x20); + coin_lockout_w ( machine(), 0, data & 0x40); + coin_lockout_w ( machine(), 1, data & 0x80); } /* @@ -565,28 +562,28 @@ static WRITE8_HANDLER( rranger_bankswitch_w ) ---- --1- 1 -> Interlude screens ---- ---0 */ -static READ8_HANDLER( rranger_soundstatus_r ) +READ8_MEMBER(suna8_state::rranger_soundstatus_r) { soundlatch2_r(space, offset); return 0x02; } -static WRITE8_HANDLER( sranger_prot_w ) +WRITE8_MEMBER(suna8_state::sranger_prot_w) { /* check code at 0x2ce2 (in sranger), protection is so dire that I can't even exactly estabilish if what I'm doing can be considered or not a kludge... -AS */ - space->write_byte(0xcd99,0xff); + space.write_byte(0xcd99,0xff); } static ADDRESS_MAP_START( rranger_map, AS_PROGRAM, 8, suna8_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") // Banked ROM AM_RANGE(0xc000, 0xc000) AM_READWRITE_LEGACY(watchdog_reset_r, soundlatch_w) // To Sound CPU - AM_RANGE(0xc002, 0xc002) AM_WRITE_LEGACY(rranger_bankswitch_w ) // ROM Banking + AM_RANGE(0xc002, 0xc002) AM_WRITE(rranger_bankswitch_w ) // ROM Banking AM_RANGE(0xc002, 0xc002) AM_READ_PORT("P1") // P1 (Inputs) AM_RANGE(0xc003, 0xc003) AM_READ_PORT("P2") // P2 - AM_RANGE(0xc004, 0xc004) AM_READ_LEGACY(rranger_soundstatus_r ) // Latch Status? - AM_RANGE(0xc200, 0xc200) AM_READNOP AM_WRITE_LEGACY(sranger_prot_w)// Protection? + AM_RANGE(0xc004, 0xc004) AM_READ(rranger_soundstatus_r ) // Latch Status? + AM_RANGE(0xc200, 0xc200) AM_READNOP AM_WRITE(sranger_prot_w)// Protection? AM_RANGE(0xc280, 0xc280) AM_WRITENOP // ? NMI Ack AM_RANGE(0xc280, 0xc280) AM_READ_PORT("DSW1") // DSW 1 AM_RANGE(0xc2c0, 0xc2c0) AM_READ_PORT("DSW2") // DSW 2 @@ -608,19 +605,18 @@ ADDRESS_MAP_END /* ? */ -static READ8_HANDLER( brickzn_c140_r ) +READ8_MEMBER(suna8_state::brickzn_c140_r) { return 0xff; } /* */ -static WRITE8_HANDLER( brickzn_palettebank_w ) +WRITE8_MEMBER(suna8_state::brickzn_palettebank_w) { - suna8_state *state = space->machine().driver_data<suna8_state>(); - state->m_palettebank = (data >> 1) & 1; - if (data & ~0x02) logerror("CPU #0 - PC %04X: unknown palettebank bits: %02X\n",cpu_get_pc(&space->device()),data); + m_palettebank = (data >> 1) & 1; + if (data & ~0x02) logerror("CPU #0 - PC %04X: unknown palettebank bits: %02X\n",cpu_get_pc(&space.device()),data); /* Also used as soundlatch - depending on c0c0? */ soundlatch_w(space,0,data); @@ -631,51 +627,48 @@ static WRITE8_HANDLER( brickzn_palettebank_w ) ---- --1- Ram Bank ---- ---0 Flip Screen */ -static WRITE8_HANDLER( brickzn_spritebank_w ) +WRITE8_MEMBER(suna8_state::brickzn_spritebank_w) { - suna8_state *state = space->machine().driver_data<suna8_state>(); - state->m_spritebank = (data >> 1) & 1; - if (data & ~0x03) logerror("CPU #0 - PC %04X: unknown spritebank bits: %02X\n",cpu_get_pc(&space->device()),data); - flip_screen_set(space->machine(), data & 0x01 ); + m_spritebank = (data >> 1) & 1; + if (data & ~0x03) logerror("CPU #0 - PC %04X: unknown spritebank bits: %02X\n",cpu_get_pc(&space.device()),data); + flip_screen_set(machine(), data & 0x01 ); } -static WRITE8_HANDLER( brickzn_unknown_w ) +WRITE8_MEMBER(suna8_state::brickzn_unknown_w) { - suna8_state *state = space->machine().driver_data<suna8_state>(); - state->m_unknown = data; + m_unknown = data; } /* 7654 ---- ---- 3210 ROM Bank */ -static WRITE8_HANDLER( brickzn_rombank_w ) +WRITE8_MEMBER(suna8_state::brickzn_rombank_w) { - suna8_state *state = space->machine().driver_data<suna8_state>(); int bank = data & 0x0f; - if (data & ~0x0f) logerror("CPU #0 - PC %04X: unknown rom bank bits: %02X\n",cpu_get_pc(&space->device()),data); + if (data & ~0x0f) logerror("CPU #0 - PC %04X: unknown rom bank bits: %02X\n",cpu_get_pc(&space.device()),data); - memory_set_bank(space->machine(), "bank1", bank); - state->m_rombank = data; + memory_set_bank(machine(), "bank1", bank); + m_rombank = data; } static ADDRESS_MAP_START( brickzn_map, AS_PROGRAM, 8, suna8_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") // Banked ROM - AM_RANGE(0xc040, 0xc040) AM_WRITE_LEGACY(brickzn_rombank_w ) // ROM Bank - AM_RANGE(0xc060, 0xc060) AM_WRITE_LEGACY(brickzn_spritebank_w ) // Sprite RAM Bank + Flip Screen - AM_RANGE(0xc0a0, 0xc0a0) AM_WRITE_LEGACY(brickzn_palettebank_w ) // Palette RAM Bank + ? - AM_RANGE(0xc0c0, 0xc0c0) AM_WRITE_LEGACY(brickzn_unknown_w ) // ??? + AM_RANGE(0xc040, 0xc040) AM_WRITE(brickzn_rombank_w ) // ROM Bank + AM_RANGE(0xc060, 0xc060) AM_WRITE(brickzn_spritebank_w ) // Sprite RAM Bank + Flip Screen + AM_RANGE(0xc0a0, 0xc0a0) AM_WRITE(brickzn_palettebank_w ) // Palette RAM Bank + ? + AM_RANGE(0xc0c0, 0xc0c0) AM_WRITE(brickzn_unknown_w ) // ??? AM_RANGE(0xc100, 0xc100) AM_READ_PORT("P1") // P1 (Buttons) AM_RANGE(0xc101, 0xc101) AM_READ_PORT("P2") // P2 AM_RANGE(0xc102, 0xc102) AM_READ_PORT("DSW1") // DSW 1 AM_RANGE(0xc103, 0xc103) AM_READ_PORT("DSW2") // DSW 2 AM_RANGE(0xc108, 0xc108) AM_READ_PORT("TRACK1") // P1 (Analog) AM_RANGE(0xc10c, 0xc10c) AM_READ_PORT("TRACK2") // P2 - AM_RANGE(0xc140, 0xc140) AM_READ_LEGACY(brickzn_c140_r) // ??? + AM_RANGE(0xc140, 0xc140) AM_READ(brickzn_c140_r) // ??? AM_RANGE(0xc600, 0xc7ff) AM_READWRITE_LEGACY(suna8_banked_paletteram_r, brickzn_banked_paletteram_w) // Palette (Banked) AM_RANGE(0xc800, 0xdfff) AM_RAM // RAM AM_RANGE(0xe000, 0xffff) AM_READWRITE_LEGACY(suna8_banked_spriteram_r, suna8_banked_spriteram_w) // Sprites (Banked) @@ -687,30 +680,29 @@ ADDRESS_MAP_END ***************************************************************************/ /* Probably wrong: */ -static WRITE8_HANDLER( hardhea2_nmi_w ) +WRITE8_MEMBER(suna8_state::hardhea2_nmi_w) { - suna8_state *state = space->machine().driver_data<suna8_state>(); - state->m_nmi_enable = data & 0x01; -// if (data & ~0x01) logerror("CPU #0 - PC %04X: unknown nmi bits: %02X\n",cpu_get_pc(&space->device()),data); + m_nmi_enable = data & 0x01; +// if (data & ~0x01) logerror("CPU #0 - PC %04X: unknown nmi bits: %02X\n",cpu_get_pc(&space.device()),data); } /* 7654 321- ---- ---0 Flip Screen */ -static WRITE8_HANDLER( hardhea2_flipscreen_w ) +WRITE8_MEMBER(suna8_state::hardhea2_flipscreen_w) { - flip_screen_set(space->machine(), data & 0x01); - if (data & ~0x01) logerror("CPU #0 - PC %04X: unknown flipscreen bits: %02X\n",cpu_get_pc(&space->device()),data); + flip_screen_set(machine(), data & 0x01); + if (data & ~0x01) logerror("CPU #0 - PC %04X: unknown flipscreen bits: %02X\n",cpu_get_pc(&space.device()),data); } -static WRITE8_HANDLER( hardhea2_leds_w ) +WRITE8_MEMBER(suna8_state::hardhea2_leds_w) { - set_led_status(space->machine(), 0, data & 0x01); - set_led_status(space->machine(), 1, data & 0x02); - coin_counter_w(space->machine(), 0, data & 0x04); - if (data & ~0x07) logerror("CPU#0 - PC %06X: unknown leds bits: %02X\n",cpu_get_pc(&space->device()),data); + set_led_status(machine(), 0, data & 0x01); + set_led_status(machine(), 1, data & 0x02); + coin_counter_w(machine(), 0, data & 0x04); + if (data & ~0x07) logerror("CPU#0 - PC %06X: unknown leds bits: %02X\n",cpu_get_pc(&space.device()),data); } /* @@ -718,51 +710,47 @@ static WRITE8_HANDLER( hardhea2_leds_w ) ---- --1- Ram Bank ---- ---0 Ram Bank? */ -static WRITE8_HANDLER( hardhea2_spritebank_w ) +WRITE8_MEMBER(suna8_state::hardhea2_spritebank_w) { - suna8_state *state = space->machine().driver_data<suna8_state>(); - state->m_spritebank = (data >> 1) & 1; - if (data & ~0x02) logerror("CPU #0 - PC %04X: unknown spritebank bits: %02X\n",cpu_get_pc(&space->device()),data); + m_spritebank = (data >> 1) & 1; + if (data & ~0x02) logerror("CPU #0 - PC %04X: unknown spritebank bits: %02X\n",cpu_get_pc(&space.device()),data); } /* 7654 ---- ---- 3210 ROM Bank */ -static WRITE8_HANDLER( hardhea2_rombank_w ) +WRITE8_MEMBER(suna8_state::hardhea2_rombank_w) { - suna8_state *state = space->machine().driver_data<suna8_state>(); int bank = data & 0x0f; - if (data & ~0x0f) logerror("CPU #0 - PC %04X: unknown rom bank bits: %02X\n",cpu_get_pc(&space->device()),data); + if (data & ~0x0f) logerror("CPU #0 - PC %04X: unknown rom bank bits: %02X\n",cpu_get_pc(&space.device()),data); - memory_set_bank(space->machine(), "bank1", bank); + memory_set_bank(machine(), "bank1", bank); - state->m_rombank = data; + m_rombank = data; } -static WRITE8_HANDLER( hardhea2_spritebank_0_w ) +WRITE8_MEMBER(suna8_state::hardhea2_spritebank_0_w) { - suna8_state *state = space->machine().driver_data<suna8_state>(); - state->m_spritebank = 0; + m_spritebank = 0; } -static WRITE8_HANDLER( hardhea2_spritebank_1_w ) +WRITE8_MEMBER(suna8_state::hardhea2_spritebank_1_w) { - suna8_state *state = space->machine().driver_data<suna8_state>(); - state->m_spritebank = 1; + m_spritebank = 1; } -static WRITE8_HANDLER( hardhea2_rambank_0_w ) +WRITE8_MEMBER(suna8_state::hardhea2_rambank_0_w) { - memory_set_bank(space->machine(), "bank2", 0); + memory_set_bank(machine(), "bank2", 0); } -static WRITE8_HANDLER( hardhea2_rambank_1_w ) +WRITE8_MEMBER(suna8_state::hardhea2_rambank_1_w) { - memory_set_bank(space->machine(), "bank2", 1); + memory_set_bank(machine(), "bank2", 1); } @@ -774,31 +762,31 @@ static ADDRESS_MAP_START( hardhea2_map, AS_PROGRAM, 8, suna8_state ) AM_RANGE(0xc002, 0xc002) AM_READ_PORT("DSW1") // DSW 1 AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW2") // DSW 2 AM_RANGE(0xc080, 0xc080) AM_READ_PORT("BUTTONS") // vblank? - AM_RANGE(0xc200, 0xc200) AM_WRITE_LEGACY(hardhea2_spritebank_w ) // Sprite RAM Bank - AM_RANGE(0xc280, 0xc280) AM_WRITE_LEGACY(hardhea2_rombank_w ) // ROM Bank (?mirrored up to c2ff?) + AM_RANGE(0xc200, 0xc200) AM_WRITE(hardhea2_spritebank_w ) // Sprite RAM Bank + AM_RANGE(0xc280, 0xc280) AM_WRITE(hardhea2_rombank_w ) // ROM Bank (?mirrored up to c2ff?) // *** Protection - AM_RANGE(0xc28c, 0xc28c) AM_WRITE_LEGACY(hardhea2_rombank_w ) + AM_RANGE(0xc28c, 0xc28c) AM_WRITE(hardhea2_rombank_w ) // Protection *** - AM_RANGE(0xc300, 0xc300) AM_WRITE_LEGACY(hardhea2_flipscreen_w ) // Flip Screen - AM_RANGE(0xc380, 0xc380) AM_WRITE_LEGACY(hardhea2_nmi_w ) // ? NMI related ? - AM_RANGE(0xc400, 0xc400) AM_WRITE_LEGACY(hardhea2_leds_w ) // Leds + Coin Counter + AM_RANGE(0xc300, 0xc300) AM_WRITE(hardhea2_flipscreen_w ) // Flip Screen + AM_RANGE(0xc380, 0xc380) AM_WRITE(hardhea2_nmi_w ) // ? NMI related ? + AM_RANGE(0xc400, 0xc400) AM_WRITE(hardhea2_leds_w ) // Leds + Coin Counter AM_RANGE(0xc480, 0xc480) AM_WRITENOP // ~ROM Bank AM_RANGE(0xc500, 0xc500) AM_WRITE_LEGACY(soundlatch_w ) // To Sound CPU // *** Protection - AM_RANGE(0xc50f, 0xc50f) AM_WRITE_LEGACY(hardhea2_spritebank_1_w ) - AM_RANGE(0xc508, 0xc508) AM_WRITE_LEGACY(hardhea2_spritebank_0_w ) + AM_RANGE(0xc50f, 0xc50f) AM_WRITE(hardhea2_spritebank_1_w ) + AM_RANGE(0xc508, 0xc508) AM_WRITE(hardhea2_spritebank_0_w ) - AM_RANGE(0xc507, 0xc507) AM_WRITE_LEGACY(hardhea2_rambank_1_w ) - AM_RANGE(0xc522, 0xc522) AM_WRITE_LEGACY(hardhea2_rambank_0_w ) + AM_RANGE(0xc507, 0xc507) AM_WRITE(hardhea2_rambank_1_w ) + AM_RANGE(0xc522, 0xc522) AM_WRITE(hardhea2_rambank_0_w ) - AM_RANGE(0xc556, 0xc556) AM_WRITE_LEGACY(hardhea2_rambank_1_w ) - AM_RANGE(0xc528, 0xc528) AM_WRITE_LEGACY(hardhea2_rambank_0_w ) + AM_RANGE(0xc556, 0xc556) AM_WRITE(hardhea2_rambank_1_w ) + AM_RANGE(0xc528, 0xc528) AM_WRITE(hardhea2_rambank_0_w ) - AM_RANGE(0xc560, 0xc560) AM_WRITE_LEGACY(hardhea2_rambank_1_w ) - AM_RANGE(0xc533, 0xc533) AM_WRITE_LEGACY(hardhea2_rambank_0_w ) + AM_RANGE(0xc560, 0xc560) AM_WRITE(hardhea2_rambank_1_w ) + AM_RANGE(0xc533, 0xc533) AM_WRITE(hardhea2_rambank_0_w ) // Protection *** AM_RANGE(0xc600, 0xc7ff) AM_RAM_WRITE_LEGACY(paletteram_RRRRGGGGBBBBxxxx_be_w) AM_BASE_GENERIC(paletteram ) // Palette (Banked??) @@ -811,19 +799,17 @@ ADDRESS_MAP_END Star Fighter ***************************************************************************/ -static WRITE8_HANDLER( starfigh_spritebank_latch_w ) +WRITE8_MEMBER(suna8_state::starfigh_spritebank_latch_w) { - suna8_state *state = space->machine().driver_data<suna8_state>(); - state->m_spritebank_latch = (data >> 2) & 1; - if (data & ~0x04) logerror("CPU #0 - PC %04X: unknown spritebank bits: %02X\n",cpu_get_pc(&space->device()),data); + m_spritebank_latch = (data >> 2) & 1; + if (data & ~0x04) logerror("CPU #0 - PC %04X: unknown spritebank bits: %02X\n",cpu_get_pc(&space.device()),data); } -static WRITE8_HANDLER( starfigh_spritebank_w ) +WRITE8_MEMBER(suna8_state::starfigh_spritebank_w) { - suna8_state *state = space->machine().driver_data<suna8_state>(); - state->m_spritebank = state->m_spritebank_latch; + m_spritebank = m_spritebank_latch; } static ADDRESS_MAP_START( starfigh_map, AS_PROGRAM, 8, suna8_state ) @@ -833,11 +819,11 @@ static ADDRESS_MAP_START( starfigh_map, AS_PROGRAM, 8, suna8_state ) AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P2") // P2 AM_RANGE(0xc002, 0xc002) AM_READ_PORT("DSW1") // DSW 1 AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW2") // DSW 2 - AM_RANGE(0xc200, 0xc200) AM_WRITE_LEGACY(starfigh_spritebank_w ) // Sprite RAM Bank - AM_RANGE(0xc380, 0xc3ff) AM_WRITE_LEGACY(starfigh_spritebank_latch_w ) // Sprite RAM Bank - AM_RANGE(0xc280, 0xc280) AM_WRITE_LEGACY(hardhea2_rombank_w ) // ROM Bank (?mirrored up to c2ff?) - AM_RANGE(0xc300, 0xc300) AM_WRITE_LEGACY(hardhea2_flipscreen_w ) // Flip Screen - AM_RANGE(0xc400, 0xc400) AM_WRITE_LEGACY(hardhea2_leds_w ) // Leds + Coin Counter + AM_RANGE(0xc200, 0xc200) AM_WRITE(starfigh_spritebank_w ) // Sprite RAM Bank + AM_RANGE(0xc380, 0xc3ff) AM_WRITE(starfigh_spritebank_latch_w ) // Sprite RAM Bank + AM_RANGE(0xc280, 0xc280) AM_WRITE(hardhea2_rombank_w ) // ROM Bank (?mirrored up to c2ff?) + AM_RANGE(0xc300, 0xc300) AM_WRITE(hardhea2_flipscreen_w ) // Flip Screen + AM_RANGE(0xc400, 0xc400) AM_WRITE(hardhea2_leds_w ) // Leds + Coin Counter AM_RANGE(0xc500, 0xc500) AM_WRITE_LEGACY(soundlatch_w ) // To Sound CPU AM_RANGE(0xc600, 0xc7ff) AM_READWRITE_LEGACY(suna8_banked_paletteram_r, paletteram_RRRRGGGGBBBBxxxx_be_w) AM_BASE_GENERIC(paletteram ) // Palette (Banked??) AM_RANGE(0xc800, 0xdfff) AM_RAM // RAM @@ -869,51 +855,49 @@ Thrash protection code snippet: */ /* This is a command-based protection. */ -static WRITE8_HANDLER( sparkman_cmd_prot_w ) +WRITE8_MEMBER(suna8_state::sparkman_cmd_prot_w) { - suna8_state *state = space->machine().driver_data<suna8_state>(); switch(data) { - case 0xa6: state->m_nmi_enable = 1; break; - case 0x00: state->m_nmi_enable = 0; break; - case 0x18: state->m_trash_prot = 0; break; - case 0xce: state->m_trash_prot = 0; break; - case 0x81: state->m_trash_prot = 1; break; - case 0x99: state->m_trash_prot = 1; break; - case 0x54: state->m_spritebank = 1; break; - default: logerror("CPU #0 - PC %04X: unknown protection command: %02X\n",cpu_get_pc(&space->device()),data); + case 0xa6: m_nmi_enable = 1; break; + case 0x00: m_nmi_enable = 0; break; + case 0x18: m_trash_prot = 0; break; + case 0xce: m_trash_prot = 0; break; + case 0x81: m_trash_prot = 1; break; + case 0x99: m_trash_prot = 1; break; + case 0x54: m_spritebank = 1; break; + default: logerror("CPU #0 - PC %04X: unknown protection command: %02X\n",cpu_get_pc(&space.device()),data); } } -static WRITE8_HANDLER( suna8_wram_w ) +WRITE8_MEMBER(suna8_state::suna8_wram_w) { - suna8_state *state = space->machine().driver_data<suna8_state>(); - if (!state->m_trash_prot) - state->m_wram[offset] = data; + if (!m_trash_prot) + m_wram[offset] = data; } /* 7654 321- ---- ---0 Flip Screen */ -static WRITE8_HANDLER( sparkman_flipscreen_w ) +WRITE8_MEMBER(suna8_state::sparkman_flipscreen_w) { - flip_screen_set(space->machine(), data & 0x01); - //if (data & ~0x01) logerror("CPU #0 - PC %04X: unknown flipscreen bits: %02X\n",cpu_get_pc(&space->device()),data); + flip_screen_set(machine(), data & 0x01); + //if (data & ~0x01) logerror("CPU #0 - PC %04X: unknown flipscreen bits: %02X\n",cpu_get_pc(&space.device()),data); } -static WRITE8_HANDLER( sparkman_leds_w ) +WRITE8_MEMBER(suna8_state::sparkman_leds_w) { - set_led_status(space->machine(), 0, data & 0x01); - set_led_status(space->machine(), 1, data & 0x02); - //if (data & ~0x03) logerror("CPU#0 - PC %06X: unknown leds bits: %02X\n",cpu_get_pc(&space->device()),data); + set_led_status(machine(), 0, data & 0x01); + set_led_status(machine(), 1, data & 0x02); + //if (data & ~0x03) logerror("CPU#0 - PC %06X: unknown leds bits: %02X\n",cpu_get_pc(&space.device()),data); } -static WRITE8_HANDLER( sparkman_coin_counter_w ) +WRITE8_MEMBER(suna8_state::sparkman_coin_counter_w) { - coin_counter_w(space->machine(), 0, data & 0x01); + coin_counter_w(machine(), 0, data & 0x01); } /* @@ -921,43 +905,40 @@ static WRITE8_HANDLER( sparkman_coin_counter_w ) ---- --1- Ram Bank ---- ---0 Ram Bank? */ -static WRITE8_HANDLER( sparkman_spritebank_w ) +WRITE8_MEMBER(suna8_state::sparkman_spritebank_w) { - suna8_state *state = space->machine().driver_data<suna8_state>(); if(data == 0xf7) //??? - state->m_spritebank = 0; + m_spritebank = 0; else - state->m_spritebank = (data) & 1; - //if (data & ~0x02) logerror("CPU #0 - PC %04X: unknown spritebank bits: %02X\n",cpu_get_pc(&space->device()),data); + m_spritebank = (data) & 1; + //if (data & ~0x02) logerror("CPU #0 - PC %04X: unknown spritebank bits: %02X\n",cpu_get_pc(&space.device()),data); } /* 7654 ---- ---- 3210 ROM Bank */ -static WRITE8_HANDLER( sparkman_rombank_w ) +WRITE8_MEMBER(suna8_state::sparkman_rombank_w) { - suna8_state *state = space->machine().driver_data<suna8_state>(); int bank = data & 0x0f; - //if (data & ~0x0f) logerror("CPU #0 - PC %04X: unknown rom bank bits: %02X\n",cpu_get_pc(&space->device()),data); + //if (data & ~0x0f) logerror("CPU #0 - PC %04X: unknown rom bank bits: %02X\n",cpu_get_pc(&space.device()),data); - memory_set_bank(space->machine(), "bank1", bank); - state->m_rombank = data; + memory_set_bank(machine(), "bank1", bank); + m_rombank = data; } -static READ8_HANDLER( sparkman_c0a3_r ) +READ8_MEMBER(suna8_state::sparkman_c0a3_r) { - return (space->machine().primary_screen->frame_number() & 1) ? 0x80 : 0; + return (machine().primary_screen->frame_number() & 1) ? 0x80 : 0; } #if 0 -static WRITE8_HANDLER( sparkman_en_trash_w ) +WRITE8_MEMBER(suna8_state::sparkman_en_trash_w) { - suna8_state *state = space->machine().driver_data<suna8_state>(); - state->m_trash_prot = 1; + m_trash_prot = 1; } #endif @@ -969,16 +950,16 @@ static ADDRESS_MAP_START( sparkman_map, AS_PROGRAM, 8, suna8_state ) AM_RANGE(0xc002, 0xc002) AM_READ_PORT("DSW1") // DSW 1 AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW2") // DSW 2 AM_RANGE(0xc080, 0xc080) AM_READ_PORT("BUTTONS") // Buttons - AM_RANGE(0xc0a3, 0xc0a3) AM_READ_LEGACY(sparkman_c0a3_r ) // ??? - AM_RANGE(0xc200, 0xc200) AM_WRITE_LEGACY(sparkman_spritebank_w ) // Sprite RAM Bank - AM_RANGE(0xc280, 0xc280) AM_WRITE_LEGACY(sparkman_rombank_w ) // ROM Bank (?mirrored up to c2ff?) - AM_RANGE(0xc300, 0xc300) AM_WRITE_LEGACY(sparkman_flipscreen_w ) // Flip Screen - AM_RANGE(0xc380, 0xc3ff) AM_WRITE_LEGACY(sparkman_cmd_prot_w ) // Protection - AM_RANGE(0xc400, 0xc400) AM_WRITE_LEGACY(sparkman_leds_w ) // Leds - AM_RANGE(0xc480, 0xc480) AM_WRITE_LEGACY(sparkman_coin_counter_w ) // Coin Counter + AM_RANGE(0xc0a3, 0xc0a3) AM_READ(sparkman_c0a3_r ) // ??? + AM_RANGE(0xc200, 0xc200) AM_WRITE(sparkman_spritebank_w ) // Sprite RAM Bank + AM_RANGE(0xc280, 0xc280) AM_WRITE(sparkman_rombank_w ) // ROM Bank (?mirrored up to c2ff?) + AM_RANGE(0xc300, 0xc300) AM_WRITE(sparkman_flipscreen_w ) // Flip Screen + AM_RANGE(0xc380, 0xc3ff) AM_WRITE(sparkman_cmd_prot_w ) // Protection + AM_RANGE(0xc400, 0xc400) AM_WRITE(sparkman_leds_w ) // Leds + AM_RANGE(0xc480, 0xc480) AM_WRITE(sparkman_coin_counter_w ) // Coin Counter AM_RANGE(0xc500, 0xc500) AM_WRITE_LEGACY(soundlatch_w ) // To Sound CPU AM_RANGE(0xc600, 0xc7ff) AM_RAM_WRITE_LEGACY(paletteram_RRRRGGGGBBBBxxxx_be_w) AM_BASE_GENERIC(paletteram ) // Palette (Banked??) - AM_RANGE(0xc800, 0xdfff) AM_RAM_WRITE_LEGACY(suna8_wram_w) AM_BASE(m_wram) // RAM + AM_RANGE(0xc800, 0xdfff) AM_RAM_WRITE(suna8_wram_w) AM_BASE(m_wram) // RAM AM_RANGE(0xe000, 0xffff) AM_READWRITE_LEGACY(suna8_banked_spriteram_r, suna8_banked_spriteram_w) // Sprites (Banked) ADDRESS_MAP_END @@ -1047,17 +1028,17 @@ static ADDRESS_MAP_START( brickzn_pcm_map, AS_PROGRAM, 8, suna8_state ) ADDRESS_MAP_END -static WRITE8_HANDLER( brickzn_pcm_w ) +WRITE8_MEMBER(suna8_state::brickzn_pcm_w) { static const char *const dacs[] = { "dac1", "dac2", "dac3", "dac4" }; - dac_signed_data_w( space->machine().device(dacs[offset & 3]), (data & 0xf) * 0x11 ); + dac_signed_data_w( machine().device(dacs[offset & 3]), (data & 0xf) * 0x11 ); } static ADDRESS_MAP_START( brickzn_pcm_io_map, AS_IO, 8, suna8_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x00) AM_READ_LEGACY(soundlatch2_r ) // From Sound CPU - AM_RANGE(0x00, 0x03) AM_WRITE_LEGACY(brickzn_pcm_w ) // 4 x DAC + AM_RANGE(0x00, 0x03) AM_WRITE(brickzn_pcm_w ) // 4 x DAC ADDRESS_MAP_END /*************************************************************************** @@ -1697,8 +1678,9 @@ static TIMER_DEVICE_CALLBACK( hardhea2_interrupt ) static MACHINE_RESET( hardhea2 ) { + suna8_state *state = machine.driver_data<suna8_state>(); address_space *space = machine.device("maincpu")->memory().space(AS_PROGRAM); - hardhea2_rambank_0_w(space,0,0); + state->hardhea2_rambank_0_w(*space,0,0); } static MACHINE_CONFIG_DERIVED( hardhea2, brickzn ) |