diff options
| author | 2012-04-03 07:01:48 +0000 | |
|---|---|---|
| committer | 2012-04-03 07:01:48 +0000 | |
| commit | 3783cf95515491d961776534fb5937b76accd464 (patch) | |
| tree | dc81476844b0b7308d5ecac1debbe6f1cc8c7443 /src | |
| parent | 03c583747e9e7475522d1a2ceb5a454a1bc4a5e4 (diff) | |
MAME going modern part 3 (no whatsnew)
Diffstat (limited to 'src')
259 files changed, 10465 insertions, 9814 deletions
diff --git a/src/mame/drivers/1945kiii.c b/src/mame/drivers/1945kiii.c index d14c5173541..6481c17d0ed 100644 --- a/src/mame/drivers/1945kiii.c +++ b/src/mame/drivers/1945kiii.c @@ -67,14 +67,17 @@ public: /* devices */ required_device<okim6295_device> m_oki1; required_device<okim6295_device> m_oki2; + DECLARE_WRITE16_MEMBER(k3_bgram_w); + DECLARE_WRITE16_MEMBER(k3_scrollx_w); + DECLARE_WRITE16_MEMBER(k3_scrolly_w); + DECLARE_WRITE16_MEMBER(k3_soundbanks_w); }; -static WRITE16_HANDLER( k3_bgram_w ) +WRITE16_MEMBER(k3_state::k3_bgram_w) { - k3_state *state = space->machine().driver_data<k3_state>(); - COMBINE_DATA(&state->m_bgram[offset]); - state->m_bg_tilemap->mark_tile_dirty(offset); + COMBINE_DATA(&m_bgram[offset]); + m_bg_tilemap->mark_tile_dirty(offset); } static TILE_GET_INFO( get_k3_bg_tile_info ) @@ -125,23 +128,20 @@ static SCREEN_UPDATE_IND16(k3) } -static WRITE16_HANDLER( k3_scrollx_w ) +WRITE16_MEMBER(k3_state::k3_scrollx_w) { - k3_state *state = space->machine().driver_data<k3_state>(); - state->m_bg_tilemap->set_scrollx(0, data); + m_bg_tilemap->set_scrollx(0, data); } -static WRITE16_HANDLER( k3_scrolly_w ) +WRITE16_MEMBER(k3_state::k3_scrolly_w) { - k3_state *state = space->machine().driver_data<k3_state>(); - state->m_bg_tilemap->set_scrolly(0, data); + m_bg_tilemap->set_scrolly(0, data); } -static WRITE16_HANDLER( k3_soundbanks_w ) +WRITE16_MEMBER(k3_state::k3_soundbanks_w) { - k3_state *state = space->machine().driver_data<k3_state>(); - state->m_oki1->set_bank_base((data & 4) ? 0x40000 : 0); - state->m_oki2->set_bank_base((data & 2) ? 0x40000 : 0); + m_oki1->set_bank_base((data & 4) ? 0x40000 : 0); + m_oki2->set_bank_base((data & 2) ? 0x40000 : 0); } static ADDRESS_MAP_START( k3_map, AS_PROGRAM, 16, k3_state ) @@ -153,10 +153,10 @@ static ADDRESS_MAP_START( k3_map, AS_PROGRAM, 16, k3_state ) AM_RANGE(0x200000, 0x200fff) AM_RAM_WRITE_LEGACY(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram) // palette AM_RANGE(0x240000, 0x240fff) AM_RAM AM_BASE(m_spriteram_1) AM_RANGE(0x280000, 0x280fff) AM_RAM AM_BASE(m_spriteram_2) - AM_RANGE(0x2c0000, 0x2c0fff) AM_RAM_WRITE_LEGACY(k3_bgram_w) AM_BASE(m_bgram) - AM_RANGE(0x340000, 0x340001) AM_WRITE_LEGACY(k3_scrollx_w) - AM_RANGE(0x380000, 0x380001) AM_WRITE_LEGACY(k3_scrolly_w) - AM_RANGE(0x3c0000, 0x3c0001) AM_WRITE_LEGACY(k3_soundbanks_w) + AM_RANGE(0x2c0000, 0x2c0fff) AM_RAM_WRITE(k3_bgram_w) AM_BASE(m_bgram) + AM_RANGE(0x340000, 0x340001) AM_WRITE(k3_scrollx_w) + AM_RANGE(0x380000, 0x380001) AM_WRITE(k3_scrolly_w) + AM_RANGE(0x3c0000, 0x3c0001) AM_WRITE(k3_soundbanks_w) AM_RANGE(0x400000, 0x400001) AM_READ_PORT("INPUTS") AM_RANGE(0x440000, 0x440001) AM_READ_PORT("SYSTEM") AM_RANGE(0x480000, 0x480001) AM_READ_PORT("DSW") diff --git a/src/mame/drivers/30test.c b/src/mame/drivers/30test.c index 394bf3cd68c..0a18a42d64f 100644 --- a/src/mame/drivers/30test.c +++ b/src/mame/drivers/30test.c @@ -56,57 +56,60 @@ public: UINT8 m_mux_data; UINT8 m_oki_bank; + DECLARE_WRITE8_MEMBER(namco_30test_led_w); + DECLARE_WRITE8_MEMBER(namco_30test_led_rank_w); + DECLARE_WRITE8_MEMBER(namco_30test_lamps_w); + DECLARE_READ8_MEMBER(namco_30test_mux_r); + DECLARE_READ8_MEMBER(hc11_mux_r); + DECLARE_WRITE8_MEMBER(hc11_mux_w); }; static const UINT8 led_map[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x67,0x77,0x7c,0x39,0x5e,0x79,0x00 }; -static WRITE8_HANDLER( namco_30test_led_w ) +WRITE8_MEMBER(namco_30test_state::namco_30test_led_w) { output_set_digit_value(0 + offset * 2, led_map[(data & 0xf0) >> 4]); output_set_digit_value(1 + offset * 2, led_map[(data & 0x0f) >> 0]); } -static WRITE8_HANDLER( namco_30test_led_rank_w ) +WRITE8_MEMBER(namco_30test_state::namco_30test_led_rank_w) { output_set_digit_value(64 + offset * 2, led_map[(data & 0xf0) >> 4]); output_set_digit_value(65 + offset * 2, led_map[(data & 0x0f) >> 0]); } -static WRITE8_HANDLER( namco_30test_lamps_w ) +WRITE8_MEMBER(namco_30test_state::namco_30test_lamps_w) { // d0-d5: ranking, d6: game over, d7: assume marquee lamp for (int i = 0; i < 8; i++) output_set_lamp_value(i, data >> i & 1); } -static READ8_HANDLER(namco_30test_mux_r) +READ8_MEMBER(namco_30test_state::namco_30test_mux_r) { - namco_30test_state *state = space->machine().driver_data<namco_30test_state>(); UINT8 res = 0xff; - switch(state->m_mux_data) + switch(m_mux_data) { - case 0x01: res = input_port_read(space->machine(), "IN0"); break; - case 0x02: res = input_port_read(space->machine(), "IN1"); break; - case 0x04: res = input_port_read(space->machine(), "IN2"); break; - case 0x08: res = input_port_read(space->machine(), "IN3"); break; + case 0x01: res = input_port_read(machine(), "IN0"); break; + case 0x02: res = input_port_read(machine(), "IN1"); break; + case 0x04: res = input_port_read(machine(), "IN2"); break; + case 0x08: res = input_port_read(machine(), "IN3"); break; } return res; } -static READ8_HANDLER(hc11_mux_r) +READ8_MEMBER(namco_30test_state::hc11_mux_r) { - namco_30test_state *state = space->machine().driver_data<namco_30test_state>(); - return state->m_mux_data; + return m_mux_data; } -static WRITE8_HANDLER(hc11_mux_w) +WRITE8_MEMBER(namco_30test_state::hc11_mux_w) { - namco_30test_state *state = space->machine().driver_data<namco_30test_state>(); - state->m_mux_data = data; + m_mux_data = data; } static READ8_DEVICE_HANDLER( hc11_okibank_r ) @@ -127,26 +130,26 @@ static WRITE8_DEVICE_HANDLER( hc11_okibank_w ) static ADDRESS_MAP_START( namco_30test_map, AS_PROGRAM, 8, namco_30test_state ) AM_RANGE(0x0000, 0x003f) AM_RAM // internal I/O - AM_RANGE(0x007c, 0x007c) AM_READWRITE_LEGACY(hc11_mux_r,hc11_mux_w) + AM_RANGE(0x007c, 0x007c) AM_READWRITE(hc11_mux_r,hc11_mux_w) AM_RANGE(0x007e, 0x007e) AM_DEVREADWRITE_LEGACY("oki",hc11_okibank_r,hc11_okibank_w) AM_RANGE(0x0040, 0x007f) AM_RAM // more internal I/O, HC11 change pending AM_RANGE(0x0080, 0x037f) AM_RAM // internal RAM AM_RANGE(0x0d80, 0x0dbf) AM_RAM // EEPROM read-back data goes there AM_RANGE(0x2000, 0x2000) AM_DEVREADWRITE("oki", okim6295_device, read, write) /* 0x401e-0x401f: time */ - AM_RANGE(0x4000, 0x401f) AM_WRITE_LEGACY(namco_30test_led_w) // 7-seg leds + AM_RANGE(0x4000, 0x401f) AM_WRITE(namco_30test_led_w) // 7-seg leds /* 0x6000: 1st place 7-seg led */ /* 0x6001: 2nd place 7-seg led */ /* 0x6002: 3rd place 7-seg led */ /* 0x6003: current / last play score */ /* 0x6004: lamps */ - AM_RANGE(0x6000, 0x6003) AM_WRITE_LEGACY(namco_30test_led_rank_w) - AM_RANGE(0x6004, 0x6004) AM_WRITE_LEGACY(namco_30test_lamps_w) + AM_RANGE(0x6000, 0x6003) AM_WRITE(namco_30test_led_rank_w) + AM_RANGE(0x6004, 0x6004) AM_WRITE(namco_30test_lamps_w) AM_RANGE(0x8000, 0xffff) AM_ROM ADDRESS_MAP_END static ADDRESS_MAP_START( namco_30test_io, AS_IO, 8, namco_30test_state ) - AM_RANGE(MC68HC11_IO_PORTA,MC68HC11_IO_PORTA) AM_READ_LEGACY(namco_30test_mux_r) + AM_RANGE(MC68HC11_IO_PORTA,MC68HC11_IO_PORTA) AM_READ(namco_30test_mux_r) // AM_RANGE(MC68HC11_IO_PORTD,MC68HC11_IO_PORTD) AM_RAM AM_RANGE(MC68HC11_IO_PORTE,MC68HC11_IO_PORTE) AM_READ_PORT("SYSTEM") ADDRESS_MAP_END diff --git a/src/mame/drivers/5clown.c b/src/mame/drivers/5clown.c index d95bcae58c1..37bd70eadac 100644 --- a/src/mame/drivers/5clown.c +++ b/src/mame/drivers/5clown.c @@ -466,6 +466,13 @@ public: UINT8 *m_colorram; tilemap_t *m_bg_tilemap; int m_mux_data; + DECLARE_WRITE8_MEMBER(fclown_videoram_w); + DECLARE_WRITE8_MEMBER(fclown_colorram_w); + DECLARE_WRITE8_MEMBER(cpu_c048_w); + DECLARE_WRITE8_MEMBER(cpu_d800_w); + DECLARE_READ8_MEMBER(snd_e06_r); + DECLARE_WRITE8_MEMBER(snd_800_w); + DECLARE_WRITE8_MEMBER(snd_a02_w); }; @@ -477,18 +484,16 @@ public: -static WRITE8_HANDLER( fclown_videoram_w ) +WRITE8_MEMBER(_5clown_state::fclown_videoram_w) { - _5clown_state *state = space->machine().driver_data<_5clown_state>(); - state->m_videoram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_videoram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( fclown_colorram_w ) +WRITE8_MEMBER(_5clown_state::fclown_colorram_w) { - _5clown_state *state = space->machine().driver_data<_5clown_state>(); - state->m_colorram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_colorram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } @@ -653,16 +658,15 @@ static READ8_DEVICE_HANDLER( pia1_b_r ) /**********************************/ -static WRITE8_HANDLER( cpu_c048_w) +WRITE8_MEMBER(_5clown_state::cpu_c048_w) { logerror("Main: Write to $C048: %02X\n", data); } -static WRITE8_HANDLER( cpu_d800_w ) +WRITE8_MEMBER(_5clown_state::cpu_d800_w) { - _5clown_state *state = space->machine().driver_data<_5clown_state>(); logerror("Main: Write to $D800: %02x\n", data); - state->m_main_latch_d800 = data; + m_main_latch_d800 = data; } @@ -681,34 +685,31 @@ static WRITE8_DEVICE_HANDLER( fclown_ay8910_w ) * SOUND R/W Handlers * ******************************/ -static READ8_HANDLER( snd_e06_r ) +READ8_MEMBER(_5clown_state::snd_e06_r) { - _5clown_state *state = space->machine().driver_data<_5clown_state>(); logerror("Sound: Read from $0E06 \n"); - return state->m_main_latch_d800; + return m_main_latch_d800; } -static WRITE8_HANDLER( snd_800_w ) +WRITE8_MEMBER(_5clown_state::snd_800_w) { - _5clown_state *state = space->machine().driver_data<_5clown_state>(); - state->m_snd_latch_0800 = data; + m_snd_latch_0800 = data; - if (state->m_snd_latch_0a02 == 0xc0) + if (m_snd_latch_0a02 == 0xc0) { - state->m_ay8910_addr = state->m_snd_latch_0800; + m_ay8910_addr = m_snd_latch_0800; } - if (state->m_snd_latch_0a02 == 0x00) + if (m_snd_latch_0a02 == 0x00) { - fclown_ay8910_w( state->m_ay8910, state->m_ay8910_addr, state->m_snd_latch_0800); + fclown_ay8910_w( m_ay8910, m_ay8910_addr, m_snd_latch_0800); } } -static WRITE8_HANDLER( snd_a02_w ) +WRITE8_MEMBER(_5clown_state::snd_a02_w) { - _5clown_state *state = space->machine().driver_data<_5clown_state>(); - state->m_snd_latch_0a02 = data & 0xff; - logerror("Sound: Write to $0A02: %02x\n", state->m_snd_latch_0a02); + m_snd_latch_0a02 = data & 0xff; + logerror("Sound: Write to $0A02: %02x\n", m_snd_latch_0a02); } @@ -722,12 +723,12 @@ static ADDRESS_MAP_START( fclown_map, AS_PROGRAM, 8, _5clown_state ) AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_device, read, write) AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE_LEGACY(fclown_videoram_w) AM_BASE(m_videoram) /* Init'ed at $2042 */ - AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE_LEGACY(fclown_colorram_w) AM_BASE(m_colorram) /* Init'ed at $2054 */ + AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(fclown_videoram_w) AM_BASE(m_videoram) /* Init'ed at $2042 */ + AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(fclown_colorram_w) AM_BASE(m_colorram) /* Init'ed at $2054 */ AM_RANGE(0x2000, 0x7fff) AM_ROM /* ROM space */ - AM_RANGE(0xc048, 0xc048) AM_WRITE_LEGACY(cpu_c048_w ) - AM_RANGE(0xd800, 0xd800) AM_WRITE_LEGACY(cpu_d800_w ) + AM_RANGE(0xc048, 0xc048) AM_WRITE(cpu_c048_w ) + AM_RANGE(0xd800, 0xd800) AM_WRITE(cpu_d800_w ) AM_RANGE(0xc400, 0xc400) AM_READ_PORT("SW1") /* DIP Switches bank */ AM_RANGE(0xcc00, 0xcc00) AM_READ_PORT("SW2") /* DIP Switches bank */ @@ -793,11 +794,11 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( fcaudio_map, AS_PROGRAM, 8, _5clown_state ) AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x0800, 0x0800) AM_WRITE_LEGACY(snd_800_w) - AM_RANGE(0x0a02, 0x0a02) AM_WRITE_LEGACY(snd_a02_w) + AM_RANGE(0x0800, 0x0800) AM_WRITE(snd_800_w) + AM_RANGE(0x0a02, 0x0a02) AM_WRITE(snd_a02_w) AM_RANGE(0x0c04, 0x0c04) AM_DEVWRITE("oki6295", okim6295_device, write) AM_RANGE(0x0c06, 0x0c06) AM_DEVREAD("oki6295", okim6295_device, read) - AM_RANGE(0x0e06, 0x0e06) AM_READ_LEGACY(snd_e06_r) + AM_RANGE(0x0e06, 0x0e06) AM_READ(snd_e06_r) AM_RANGE(0xe000, 0xffff) AM_ROM /* ROM space */ ADDRESS_MAP_END diff --git a/src/mame/drivers/ace.c b/src/mame/drivers/ace.c index fa175959d08..692e299c86c 100644 --- a/src/mame/drivers/ace.c +++ b/src/mame/drivers/ace.c @@ -56,20 +56,23 @@ public: /* input-related */ int m_objpos[8]; + DECLARE_WRITE8_MEMBER(ace_objpos_w); + DECLARE_READ8_MEMBER(ace_objpos_r); + DECLARE_WRITE8_MEMBER(ace_characterram_w); + DECLARE_WRITE8_MEMBER(ace_scoreram_w); + DECLARE_READ8_MEMBER(unk_r); }; -static WRITE8_HANDLER( ace_objpos_w ) +WRITE8_MEMBER(aceal_state::ace_objpos_w) { - aceal_state *state = space->machine().driver_data<aceal_state>(); - state->m_objpos[offset] = data; + m_objpos[offset] = data; } #if 0 -static READ8_HANDLER( ace_objpos_r ) +READ8_MEMBER(aceal_state::ace_objpos_r) { - aceal_state *state = space->machine().driver_data<aceal_state>(); - return state->m_objpos[offset]; + return m_objpos[offset]; } #endif @@ -128,33 +131,31 @@ static PALETTE_INIT( ace ) } -static WRITE8_HANDLER( ace_characterram_w ) +WRITE8_MEMBER(aceal_state::ace_characterram_w) { - aceal_state *state = space->machine().driver_data<aceal_state>(); - if (state->m_characterram[offset] != data) + if (m_characterram[offset] != data) { if (data & ~0x07) { logerror("write to %04x data = %02x\n", 0x8000 + offset, data); popmessage("write to %04x data = %02x\n", 0x8000 + offset, data); } - state->m_characterram[offset] = data; - gfx_element_mark_dirty(space->machine().gfx[1], 0); - gfx_element_mark_dirty(space->machine().gfx[2], 0); - gfx_element_mark_dirty(space->machine().gfx[3], 0); + m_characterram[offset] = data; + gfx_element_mark_dirty(machine().gfx[1], 0); + gfx_element_mark_dirty(machine().gfx[2], 0); + gfx_element_mark_dirty(machine().gfx[3], 0); } } -static WRITE8_HANDLER( ace_scoreram_w ) +WRITE8_MEMBER(aceal_state::ace_scoreram_w) { - aceal_state *state = space->machine().driver_data<aceal_state>(); - state->m_scoreram[offset] = data; - gfx_element_mark_dirty(space->machine().gfx[4], offset / 32); + m_scoreram[offset] = data; + gfx_element_mark_dirty(machine().gfx[4], offset / 32); } -static READ8_HANDLER( unk_r ) +READ8_MEMBER(aceal_state::unk_r) { - return space->machine().rand() & 0xff; + return machine().rand() & 0xff; } @@ -166,11 +167,11 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, aceal_state ) AM_RANGE(0x0000, 0x09ff) AM_ROM - AM_RANGE(0x2000, 0x20ff) AM_RAM_WRITE_LEGACY(ace_scoreram_w) AM_BASE(m_scoreram) /* 2x2101 */ + AM_RANGE(0x2000, 0x20ff) AM_RAM_WRITE(ace_scoreram_w) AM_BASE(m_scoreram) /* 2x2101 */ AM_RANGE(0x8300, 0x83ff) AM_RAM AM_BASE(m_ram2) /* 2x2101 */ - AM_RANGE(0x8000, 0x80ff) AM_RAM_WRITE_LEGACY(ace_characterram_w) AM_BASE(m_characterram) /* 3x3101 (3bits: 0, 1, 2) */ + AM_RANGE(0x8000, 0x80ff) AM_RAM_WRITE(ace_characterram_w) AM_BASE(m_characterram) /* 3x3101 (3bits: 0, 1, 2) */ - AM_RANGE(0xc000, 0xc005) AM_WRITE_LEGACY(ace_objpos_w) + AM_RANGE(0xc000, 0xc005) AM_WRITE(ace_objpos_w) /* players inputs */ AM_RANGE(0xc008, 0xc008) AM_READ_PORT("c008") @@ -184,7 +185,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, aceal_state ) AM_RANGE(0xc010, 0xc010) AM_READ_PORT("c010") AM_RANGE(0xc011, 0xc011) AM_READ_PORT("c011") - AM_RANGE(0xc012, 0xc012) AM_READ_LEGACY(unk_r) + AM_RANGE(0xc012, 0xc012) AM_READ(unk_r) /* vblank */ AM_RANGE(0xc014, 0xc014) AM_READ_PORT("c014") @@ -195,17 +196,17 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, aceal_state ) /* start (must read 1 at least once to make the game run) */ AM_RANGE(0xc016, 0xc016) AM_READ_PORT("c016") - AM_RANGE(0xc017, 0xc017) AM_READ_LEGACY(unk_r) - AM_RANGE(0xc018, 0xc018) AM_READ_LEGACY(unk_r) - AM_RANGE(0xc019, 0xc019) AM_READ_LEGACY(unk_r) - - AM_RANGE(0xc020, 0xc020) AM_READ_LEGACY(unk_r) - AM_RANGE(0xc021, 0xc021) AM_READ_LEGACY(unk_r) - AM_RANGE(0xc022, 0xc022) AM_READ_LEGACY(unk_r) - AM_RANGE(0xc023, 0xc023) AM_READ_LEGACY(unk_r) - AM_RANGE(0xc024, 0xc024) AM_READ_LEGACY(unk_r) - AM_RANGE(0xc025, 0xc025) AM_READ_LEGACY(unk_r) - AM_RANGE(0xc026, 0xc026) AM_READ_LEGACY(unk_r) + AM_RANGE(0xc017, 0xc017) AM_READ(unk_r) + AM_RANGE(0xc018, 0xc018) AM_READ(unk_r) + AM_RANGE(0xc019, 0xc019) AM_READ(unk_r) + + AM_RANGE(0xc020, 0xc020) AM_READ(unk_r) + AM_RANGE(0xc021, 0xc021) AM_READ(unk_r) + AM_RANGE(0xc022, 0xc022) AM_READ(unk_r) + AM_RANGE(0xc023, 0xc023) AM_READ(unk_r) + AM_RANGE(0xc024, 0xc024) AM_READ(unk_r) + AM_RANGE(0xc025, 0xc025) AM_READ(unk_r) + AM_RANGE(0xc026, 0xc026) AM_READ(unk_r) ADDRESS_MAP_END diff --git a/src/mame/drivers/acefruit.c b/src/mame/drivers/acefruit.c index 948b5480a52..859d4901c96 100644 --- a/src/mame/drivers/acefruit.c +++ b/src/mame/drivers/acefruit.c @@ -25,6 +25,11 @@ public: UINT8 *m_colorram; UINT8 *m_videoram; emu_timer *m_refresh_timer; + DECLARE_WRITE8_MEMBER(acefruit_colorram_w); + DECLARE_WRITE8_MEMBER(acefruit_coin_w); + DECLARE_WRITE8_MEMBER(acefruit_sound_w); + DECLARE_WRITE8_MEMBER(acefruit_lamp_w); + DECLARE_WRITE8_MEMBER(acefruit_solenoid_w); }; @@ -215,23 +220,22 @@ static CUSTOM_INPUT( starspnr_payout_r ) } } -static WRITE8_HANDLER( acefruit_colorram_w ) +WRITE8_MEMBER(acefruit_state::acefruit_colorram_w) { - acefruit_state *state = space->machine().driver_data<acefruit_state>(); - state->m_colorram[ offset ] = data & 0xf; + m_colorram[ offset ] = data & 0xf; } -static WRITE8_HANDLER( acefruit_coin_w ) +WRITE8_MEMBER(acefruit_state::acefruit_coin_w) { /* TODO: ? */ } -static WRITE8_HANDLER( acefruit_sound_w ) +WRITE8_MEMBER(acefruit_state::acefruit_sound_w) { /* TODO: ? */ } -static WRITE8_HANDLER( acefruit_lamp_w ) +WRITE8_MEMBER(acefruit_state::acefruit_lamp_w) { int i; @@ -241,7 +245,7 @@ static WRITE8_HANDLER( acefruit_lamp_w ) } } -static WRITE8_HANDLER( acefruit_solenoid_w ) +WRITE8_MEMBER(acefruit_state::acefruit_solenoid_w) { int i; @@ -278,7 +282,7 @@ static ADDRESS_MAP_START( acefruit_map, AS_PROGRAM, 8, acefruit_state ) AM_RANGE(0x0000, 0x1fff) AM_ROM AM_RANGE(0x2000, 0x20ff) AM_RAM AM_SHARE("nvram") AM_RANGE(0x4000, 0x43ff) AM_RAM AM_BASE(m_videoram) - AM_RANGE(0x4400, 0x47ff) AM_RAM_WRITE_LEGACY(acefruit_colorram_w) AM_BASE(m_colorram) + AM_RANGE(0x4400, 0x47ff) AM_RAM_WRITE(acefruit_colorram_w) AM_BASE(m_colorram) AM_RANGE(0x8000, 0x8000) AM_READ_PORT("IN0") AM_RANGE(0x8001, 0x8001) AM_READ_PORT("IN1") AM_RANGE(0x8002, 0x8002) AM_READ_PORT("IN2") @@ -288,10 +292,10 @@ static ADDRESS_MAP_START( acefruit_map, AS_PROGRAM, 8, acefruit_state ) AM_RANGE(0x8006, 0x8006) AM_READ_PORT("IN6") AM_RANGE(0x8007, 0x8007) AM_READ_PORT("IN7") AM_RANGE(0x6000, 0x6005) AM_RAM AM_BASE(m_spriteram) - AM_RANGE(0xa000, 0xa001) AM_WRITE_LEGACY(acefruit_lamp_w) - AM_RANGE(0xa002, 0xa003) AM_WRITE_LEGACY(acefruit_coin_w) - AM_RANGE(0xa004, 0xa004) AM_WRITE_LEGACY(acefruit_solenoid_w) - AM_RANGE(0xa005, 0xa006) AM_WRITE_LEGACY(acefruit_sound_w) + AM_RANGE(0xa000, 0xa001) AM_WRITE(acefruit_lamp_w) + AM_RANGE(0xa002, 0xa003) AM_WRITE(acefruit_coin_w) + AM_RANGE(0xa004, 0xa004) AM_WRITE(acefruit_solenoid_w) + AM_RANGE(0xa005, 0xa006) AM_WRITE(acefruit_sound_w) AM_RANGE(0xc000, 0xc000) AM_WRITE_LEGACY(watchdog_reset_w) AM_RANGE(0xe000, 0xffff) AM_ROM ADDRESS_MAP_END diff --git a/src/mame/drivers/acommand.c b/src/mame/drivers/acommand.c index 7203d8c85b0..8e2de798321 100644 --- a/src/mame/drivers/acommand.c +++ b/src/mame/drivers/acommand.c @@ -78,6 +78,13 @@ public: UINT16 m_ufo_sw2; UINT16 *m_spriteram; size_t m_spriteram_size; + DECLARE_WRITE16_MEMBER(ac_bgvram_w); + DECLARE_WRITE16_MEMBER(ac_txvram_w); + DECLARE_WRITE16_MEMBER(ac_bgscroll_w); + DECLARE_WRITE16_MEMBER(ac_txscroll_w); + DECLARE_READ16_MEMBER(ac_devices_r); + DECLARE_WRITE16_MEMBER(ac_devices_w); + DECLARE_WRITE16_MEMBER(ac_unk2_w); }; @@ -257,38 +264,34 @@ static SCREEN_UPDATE_IND16( acommand ) } -static WRITE16_HANDLER( ac_bgvram_w ) +WRITE16_MEMBER(acommand_state::ac_bgvram_w) { - acommand_state *state = space->machine().driver_data<acommand_state>(); - COMBINE_DATA(&state->m_ac_bgvram[offset]); - state->m_bg_tilemap->mark_tile_dirty(offset); + COMBINE_DATA(&m_ac_bgvram[offset]); + m_bg_tilemap->mark_tile_dirty(offset); } -static WRITE16_HANDLER( ac_txvram_w ) +WRITE16_MEMBER(acommand_state::ac_txvram_w) { - acommand_state *state = space->machine().driver_data<acommand_state>(); - COMBINE_DATA(&state->m_ac_txvram[offset]); - state->m_tx_tilemap->mark_tile_dirty(offset); + COMBINE_DATA(&m_ac_txvram[offset]); + m_tx_tilemap->mark_tile_dirty(offset); } -static WRITE16_HANDLER(ac_bgscroll_w) +WRITE16_MEMBER(acommand_state::ac_bgscroll_w) { - acommand_state *state = space->machine().driver_data<acommand_state>(); switch(offset) { - case 0: state->m_bg_tilemap->set_scrollx(0,data); break; - case 1: state->m_bg_tilemap->set_scrolly(0,data); break; + case 0: m_bg_tilemap->set_scrollx(0,data); break; + case 1: m_bg_tilemap->set_scrolly(0,data); break; case 2: /*BG_TILEMAP priority?*/ break; } } -static WRITE16_HANDLER(ac_txscroll_w) +WRITE16_MEMBER(acommand_state::ac_txscroll_w) { - acommand_state *state = space->machine().driver_data<acommand_state>(); switch(offset) { - case 0: state->m_tx_tilemap->set_scrollx(0,data); break; - case 1: state->m_tx_tilemap->set_scrolly(0,data); break; + case 0: m_tx_tilemap->set_scrollx(0,data); break; + case 1: m_tx_tilemap->set_scrolly(0,data); break; case 2: /*TX_TILEMAP priority?*/ break; } } @@ -296,10 +299,9 @@ static WRITE16_HANDLER(ac_txscroll_w) /******************************************************************************************/ -static READ16_HANDLER(ac_devices_r) +READ16_MEMBER(acommand_state::ac_devices_r) { - acommand_state *state = space->machine().driver_data<acommand_state>(); - logerror("(PC=%06x) read at %04x\n",cpu_get_pc(&space->device()),offset*2); + logerror("(PC=%06x) read at %04x\n",cpu_get_pc(&space.device()),offset*2); switch(offset) { @@ -316,13 +318,13 @@ static READ16_HANDLER(ac_devices_r) ---- ---- ---- --x- (Activate Test) ---- ---- ---- ---x (Advance through Tests) */ - return input_port_read(space->machine(), "IN0"); + return input_port_read(machine(), "IN0"); case 0x0014/2: case 0x0016/2: - return space->machine().device<okim6295_device>("oki1")->read(*space,0); + return machine().device<okim6295_device>("oki1")->read(*&space,0); case 0x0018/2: case 0x001a/2: - return space->machine().device<okim6295_device>("oki2")->read(*space,0); + return machine().device<okim6295_device>("oki2")->read(*&space,0); case 0x0040/2: /* "Upper switch / Under Switch" @@ -340,26 +342,26 @@ static READ16_HANDLER(ac_devices_r) */ //22dc8 { - state->m_ufo_sw1 = state->m_ac_devram[offset] & 3; - if(state->m_ac_devram[offset] & 0x10) - state->m_ufo_sw1|= 0x10; - if(state->m_ac_devram[offset] & 0x40) - state->m_ufo_sw1|= 0x20; - if(state->m_ac_devram[offset] & 0x100) - state->m_ufo_sw1|=0x100; - if(state->m_ac_devram[offset] & 0x400) - state->m_ufo_sw1|=0x200; - if(state->m_ac_devram[offset] & 0x1000) - state->m_ufo_sw1|=0x1000; - if(state->m_ac_devram[offset] & 0x4000) - state->m_ufo_sw1|=0x2000; -// if(state->m_ac_devram[0x0048/2] & 0x0001) -// state->m_ufo_sw1|=0x0040; -// if(state->m_ac_devram[0x0048/2] & 0x0004) -// state->m_ufo_sw1|=0x0400; -// if(state->m_ac_devram[0x0048/2] & 0x0100) -// state->m_ufo_sw1|=0x4000; - return state->m_ufo_sw1; + m_ufo_sw1 = m_ac_devram[offset] & 3; + if(m_ac_devram[offset] & 0x10) + m_ufo_sw1|= 0x10; + if(m_ac_devram[offset] & 0x40) + m_ufo_sw1|= 0x20; + if(m_ac_devram[offset] & 0x100) + m_ufo_sw1|=0x100; + if(m_ac_devram[offset] & 0x400) + m_ufo_sw1|=0x200; + if(m_ac_devram[offset] & 0x1000) + m_ufo_sw1|=0x1000; + if(m_ac_devram[offset] & 0x4000) + m_ufo_sw1|=0x2000; +// if(m_ac_devram[0x0048/2] & 0x0001) +// m_ufo_sw1|=0x0040; +// if(m_ac_devram[0x0048/2] & 0x0004) +// m_ufo_sw1|=0x0400; +// if(m_ac_devram[0x0048/2] & 0x0100) +// m_ufo_sw1|=0x4000; + return m_ufo_sw1; } case 0x0044/2: /* @@ -369,40 +371,39 @@ static READ16_HANDLER(ac_devices_r) ---- ---- ---- ---x Upper Switch - 4 (active low) */ { - state->m_ufo_sw2 = 0; - if(state->m_ac_devram[offset] & 0x01) - state->m_ufo_sw2|= 1; - if(state->m_ac_devram[offset] & 0x04) - state->m_ufo_sw2|= 2; - if(state->m_ac_devram[offset] & 0x10) - state->m_ufo_sw2|=0x10; - if(state->m_ac_devram[offset] & 0x40) - state->m_ufo_sw2|=0x20; - return state->m_ufo_sw2; + m_ufo_sw2 = 0; + if(m_ac_devram[offset] & 0x01) + m_ufo_sw2|= 1; + if(m_ac_devram[offset] & 0x04) + m_ufo_sw2|= 2; + if(m_ac_devram[offset] & 0x10) + m_ufo_sw2|=0x10; + if(m_ac_devram[offset] & 0x40) + m_ufo_sw2|=0x20; + return m_ufo_sw2; } case 0x0048/2: - return state->m_ac_devram[offset]; + return m_ac_devram[offset]; case 0x005c/2: /* xxxx xxxx ---- ---- DIPSW4 ---- ---- xxxx xxxx DIPSW3 */ - return input_port_read(space->machine(), "IN1"); + return input_port_read(machine(), "IN1"); } - return state->m_ac_devram[offset]; + return m_ac_devram[offset]; } -static WRITE16_HANDLER(ac_devices_w) +WRITE16_MEMBER(acommand_state::ac_devices_w) { - acommand_state *state = space->machine().driver_data<acommand_state>(); - COMBINE_DATA(&state->m_ac_devram[offset]); + COMBINE_DATA(&m_ac_devram[offset]); switch(offset) { case 0x00/2: if (ACCESSING_BITS_0_7) { - okim6295_device *oki1 = space->machine().device<okim6295_device>("oki1"); - okim6295_device *oki2 = space->machine().device<okim6295_device>("oki2"); + okim6295_device *oki1 = machine().device<okim6295_device>("oki1"); + okim6295_device *oki2 = machine().device<okim6295_device>("oki2"); oki1->set_bank_base(0x40000 * (data & 0x3)); oki2->set_bank_base(0x40000 * (data & 0x30) >> 4); } @@ -411,16 +412,16 @@ static WRITE16_HANDLER(ac_devices_w) case 0x16/2: if(ACCESSING_BITS_0_7) { - okim6295_device *oki1 = space->machine().device<okim6295_device>("oki1"); - oki1->write(*space,0,data); + okim6295_device *oki1 = machine().device<okim6295_device>("oki1"); + oki1->write(*&space,0,data); } break; case 0x18/2: case 0x1a/2: if(ACCESSING_BITS_0_7) { - okim6295_device *oki2 = space->machine().device<okim6295_device>("oki2"); - oki2->write(*space,0,data); + okim6295_device *oki2 = machine().device<okim6295_device>("oki2"); + oki2->write(*&space,0,data); } break; case 0x1c/2: @@ -433,18 +434,18 @@ static WRITE16_HANDLER(ac_devices_w) case 0x48/2: break; case 0x50/2: - state->m_led0 = state->m_ac_devram[offset]; - //popmessage("%04x",state->m_led0); + m_led0 = m_ac_devram[offset]; + //popmessage("%04x",m_led0); break; case 0x54/2: - state->m_led1 = state->m_ac_devram[offset]; - //popmessage("%04x",state->m_led0); + m_led1 = m_ac_devram[offset]; + //popmessage("%04x",m_led0); break; } } /*This is always zero ATM*/ -static WRITE16_HANDLER(ac_unk2_w) +WRITE16_MEMBER(acommand_state::ac_unk2_w) { if(data) popmessage("UNK-2 enabled %04x",data); @@ -452,16 +453,16 @@ static WRITE16_HANDLER(ac_unk2_w) static ADDRESS_MAP_START( acommand_map, AS_PROGRAM, 16, acommand_state ) AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x082000, 0x082005) AM_WRITE_LEGACY(ac_bgscroll_w) - AM_RANGE(0x082100, 0x082105) AM_WRITE_LEGACY(ac_txscroll_w) - AM_RANGE(0x082208, 0x082209) AM_WRITE_LEGACY(ac_unk2_w) - AM_RANGE(0x0a0000, 0x0a3fff) AM_RAM_WRITE_LEGACY(ac_bgvram_w) AM_BASE(m_ac_bgvram) - AM_RANGE(0x0b0000, 0x0b3fff) AM_RAM_WRITE_LEGACY(ac_txvram_w) AM_BASE(m_ac_txvram) + AM_RANGE(0x082000, 0x082005) AM_WRITE(ac_bgscroll_w) + AM_RANGE(0x082100, 0x082105) AM_WRITE(ac_txscroll_w) + AM_RANGE(0x082208, 0x082209) AM_WRITE(ac_unk2_w) + AM_RANGE(0x0a0000, 0x0a3fff) AM_RAM_WRITE(ac_bgvram_w) AM_BASE(m_ac_bgvram) + AM_RANGE(0x0b0000, 0x0b3fff) AM_RAM_WRITE(ac_txvram_w) AM_BASE(m_ac_txvram) AM_RANGE(0x0b8000, 0x0bffff) AM_RAM_WRITE_LEGACY(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x0f0000, 0x0f7fff) AM_RAM AM_RANGE(0x0f8000, 0x0f8fff) AM_RAM AM_BASE_SIZE(m_spriteram, m_spriteram_size) AM_RANGE(0x0f9000, 0x0fffff) AM_RAM - AM_RANGE(0x100000, 0x1000ff) AM_READ_LEGACY(ac_devices_r) AM_WRITE_LEGACY(ac_devices_w) AM_BASE(m_ac_devram) + AM_RANGE(0x100000, 0x1000ff) AM_READ(ac_devices_r) AM_WRITE(ac_devices_w) AM_BASE(m_ac_devram) ADDRESS_MAP_END static INPUT_PORTS_START( acommand ) diff --git a/src/mame/drivers/adp.c b/src/mame/drivers/adp.c index 3092b5c0ca0..29260f0ebe9 100644 --- a/src/mame/drivers/adp.c +++ b/src/mame/drivers/adp.c @@ -175,6 +175,10 @@ public: /* devices */ device_t *m_maincpu; device_t *m_duart; + DECLARE_READ16_MEMBER(test_r); + DECLARE_WRITE16_MEMBER(wh2_w); + DECLARE_WRITE8_MEMBER(ramdac_io_w); + DECLARE_READ8_MEMBER(h63484_rom_r); }; @@ -376,52 +380,50 @@ static PALETTE_INIT( adp ) } } -static READ16_HANDLER( test_r ) +READ16_MEMBER(adp_state::test_r) { - adp_state *state = space->machine().driver_data<adp_state>(); int value = 0xffff; - switch (state->m_mux_data) + switch (m_mux_data) { - case 0x00: value = input_port_read(space->machine(), "x0"); break; - case 0x01: value = input_port_read(space->machine(), "x1"); break; - case 0x02: value = input_port_read(space->machine(), "x2"); break; - case 0x03: value = input_port_read(space->machine(), "1P_UP"); break; - case 0x04: value = input_port_read(space->machine(), "1P_B1"); break; - case 0x05: value = input_port_read(space->machine(), "x5"); break; - case 0x06: value = input_port_read(space->machine(), "1P_RIGHT"); break; - case 0x07: value = input_port_read(space->machine(), "1P_DOWN"); break; - case 0x08: value = input_port_read(space->machine(), "1P_LEFT"); break; - case 0x09: value = input_port_read(space->machine(), "x9"); break; - case 0x0a: value = input_port_read(space->machine(), "x10"); break; - case 0x0b: value = input_port_read(space->machine(), "x11"); break; - case 0x0c: value = input_port_read(space->machine(), "x12"); break; - case 0x0d: value = input_port_read(space->machine(), "x13"); break; - case 0x0e: value = input_port_read(space->machine(), "1P_START"); break; - case 0x0f: value = input_port_read(space->machine(), "1P_COIN"); break; + case 0x00: value = input_port_read(machine(), "x0"); break; + case 0x01: value = input_port_read(machine(), "x1"); break; + case 0x02: value = input_port_read(machine(), "x2"); break; + case 0x03: value = input_port_read(machine(), "1P_UP"); break; + case 0x04: value = input_port_read(machine(), "1P_B1"); break; + case 0x05: value = input_port_read(machine(), "x5"); break; + case 0x06: value = input_port_read(machine(), "1P_RIGHT"); break; + case 0x07: value = input_port_read(machine(), "1P_DOWN"); break; + case 0x08: value = input_port_read(machine(), "1P_LEFT"); break; + case 0x09: value = input_port_read(machine(), "x9"); break; + case 0x0a: value = input_port_read(machine(), "x10"); break; + case 0x0b: value = input_port_read(machine(), "x11"); break; + case 0x0c: value = input_port_read(machine(), "x12"); break; + case 0x0d: value = input_port_read(machine(), "x13"); break; + case 0x0e: value = input_port_read(machine(), "1P_START"); break; + case 0x0f: value = input_port_read(machine(), "1P_COIN"); break; } - state->m_mux_data++; - state->m_mux_data &= 0xf; + m_mux_data++; + m_mux_data &= 0xf; /* - switch (space->machine().rand() & 3) + switch (machine().rand() & 3) { case 0: return 0; case 1: return 0xffff; default: - return space->machine().rand() & 0xffff; + return machine().rand() & 0xffff; } */ - return value | (space->machine().rand() & 0x0000); + return value | (machine().rand() & 0x0000); } /*???*/ -static WRITE16_HANDLER(wh2_w) +WRITE16_MEMBER(adp_state::wh2_w) { - adp_state *state = space->machine().driver_data<adp_state>(); - state->m_register_active = data; + m_register_active = data; } static READ8_DEVICE_HANDLER(t2_r) @@ -447,7 +449,7 @@ static ADDRESS_MAP_START( skattv_mem, AS_PROGRAM, 16, adp_state ) AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("h63484", h63484_device, status_r, address_w) AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("h63484", h63484_device, data_r, data_w) - AM_RANGE(0x800100, 0x800101) AM_READWRITE_LEGACY(test_r,wh2_w) //related to input + AM_RANGE(0x800100, 0x800101) AM_READWRITE(test_r,wh2_w) //related to input AM_RANGE(0x800140, 0x800143) AM_DEVREADWRITE8_LEGACY("aysnd", ay8910_r, ay8910_address_data_w, 0x00ff) //18b too AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8_LEGACY("duart68681", duart68681_r, duart68681_w, 0xff ) AM_RANGE(0xffc000, 0xffffff) AM_RAM @@ -472,35 +474,34 @@ static ADDRESS_MAP_START( backgamn_mem, AS_PROGRAM, 16, adp_state ) AM_RANGE(0x600006, 0x600007) AM_NOP //(r) is discarded (watchdog?) ADDRESS_MAP_END -static WRITE8_HANDLER( ramdac_io_w ) +WRITE8_MEMBER(adp_state::ramdac_io_w) { - adp_state *state = space->machine().driver_data<adp_state>(); switch(offset) { case 0: - state->m_pal.offs = data; - state->m_pal.offs_internal = 0; + m_pal.offs = data; + m_pal.offs_internal = 0; break; case 2: //mask pen reg break; case 1: - switch(state->m_pal.offs_internal) + switch(m_pal.offs_internal) { case 0: - state->m_pal.r = ((data & 0x3f) << 2) | ((data & 0x30) >> 4); - state->m_pal.offs_internal++; + m_pal.r = ((data & 0x3f) << 2) | ((data & 0x30) >> 4); + m_pal.offs_internal++; break; case 1: - state->m_pal.g = ((data & 0x3f) << 2) | ((data & 0x30) >> 4); - state->m_pal.offs_internal++; + m_pal.g = ((data & 0x3f) << 2) | ((data & 0x30) >> 4); + m_pal.offs_internal++; break; case 2: - state->m_pal.b = ((data & 0x3f) << 2) | ((data & 0x30) >> 4); - palette_set_color(space->machine(), state->m_pal.offs, MAKE_RGB(state->m_pal.r, state->m_pal.g, state->m_pal.b)); - state->m_pal.offs_internal = 0; - state->m_pal.offs++; - state->m_pal.offs&=0xff; + m_pal.b = ((data & 0x3f) << 2) | ((data & 0x30) >> 4); + palette_set_color(machine(), m_pal.offs, MAKE_RGB(m_pal.r, m_pal.g, m_pal.b)); + m_pal.offs_internal = 0; + m_pal.offs++; + m_pal.offs&=0xff; break; } @@ -512,7 +513,7 @@ static ADDRESS_MAP_START( funland_mem, AS_PROGRAM, 16, adp_state ) AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_RANGE(0x800080, 0x800081) AM_DEVREADWRITE("h63484", h63484_device, status_r, address_w) AM_RANGE(0x800082, 0x800083) AM_DEVREADWRITE("h63484", h63484_device, data_r, data_w) - AM_RANGE(0x800088, 0x80008d) AM_WRITE8_LEGACY(ramdac_io_w, 0x00ff) + AM_RANGE(0x800088, 0x80008d) AM_WRITE8(ramdac_io_w, 0x00ff) AM_RANGE(0x800100, 0x800101) AM_RAM //??? AM_RANGE(0x800140, 0x800143) AM_DEVREADWRITE8_LEGACY("aysnd", ay8910_r, ay8910_address_data_w, 0x00ff) //18b too AM_RANGE(0x800180, 0x80019f) AM_DEVREADWRITE8_LEGACY("duart68681", duart68681_r, duart68681_w, 0xff ) @@ -634,16 +635,16 @@ static const ay8910_interface ay8910_config = DEVCB_NULL }; -static READ8_HANDLER( h63484_rom_r ) +READ8_MEMBER(adp_state::h63484_rom_r) { - UINT8 *rom = space->machine().region("gfx1")->base(); + UINT8 *rom = machine().region("gfx1")->base(); return rom[offset]; } static ADDRESS_MAP_START( adp_h63484_map, AS_0, 8, adp_state ) AM_RANGE(0x00000, 0x7ffff) AM_DEVREADWRITE("h63484",h63484_device, vram_r,vram_w) - AM_RANGE(0x80000, 0xbffff) AM_READ_LEGACY(h63484_rom_r) + AM_RANGE(0x80000, 0xbffff) AM_READ(h63484_rom_r) ADDRESS_MAP_END static ADDRESS_MAP_START( fashiong_h63484_map, AS_0, 8, adp_state ) diff --git a/src/mame/drivers/albazc.c b/src/mame/drivers/albazc.c index 6cbb5633caa..0310ced5c3b 100644 --- a/src/mame/drivers/albazc.c +++ b/src/mame/drivers/albazc.c @@ -25,6 +25,10 @@ public: UINT8 * m_spriteram2; UINT8 * m_spriteram3; UINT8 m_flip_bit; + DECLARE_WRITE8_MEMBER(hanaroku_out_0_w); + DECLARE_WRITE8_MEMBER(hanaroku_out_1_w); + DECLARE_WRITE8_MEMBER(hanaroku_out_2_w); + DECLARE_WRITE8_MEMBER(albazc_vregs_w); }; @@ -84,7 +88,7 @@ static SCREEN_UPDATE_IND16(hanaroku) return 0; } -static WRITE8_HANDLER( hanaroku_out_0_w ) +WRITE8_MEMBER(albazc_state::hanaroku_out_0_w) { /* bit description @@ -99,14 +103,14 @@ static WRITE8_HANDLER( hanaroku_out_0_w ) 7 meter5 (start) */ - coin_counter_w(space->machine(), 0, data & 0x01); - coin_counter_w(space->machine(), 1, data & 0x02); - coin_counter_w(space->machine(), 2, data & 0x04); - coin_counter_w(space->machine(), 3, data & 0x08); - coin_counter_w(space->machine(), 4, data & 0x80); + coin_counter_w(machine(), 0, data & 0x01); + coin_counter_w(machine(), 1, data & 0x02); + coin_counter_w(machine(), 2, data & 0x04); + coin_counter_w(machine(), 3, data & 0x08); + coin_counter_w(machine(), 4, data & 0x80); } -static WRITE8_HANDLER( hanaroku_out_1_w ) +WRITE8_MEMBER(albazc_state::hanaroku_out_1_w) { /* bit description @@ -122,14 +126,13 @@ static WRITE8_HANDLER( hanaroku_out_1_w ) */ } -static WRITE8_HANDLER( hanaroku_out_2_w ) +WRITE8_MEMBER(albazc_state::hanaroku_out_2_w) { // unused } -static WRITE8_HANDLER( albazc_vregs_w ) +WRITE8_MEMBER(albazc_state::albazc_vregs_w) { - albazc_state *state = space->machine().driver_data<albazc_state>(); #ifdef UNUSED_FUNCTION { @@ -142,8 +145,8 @@ static WRITE8_HANDLER( albazc_vregs_w ) if(offset == 0) { /* core bug with this? */ - //flip_screen_set(space->machine(), (data & 0x40) >> 6); - state->m_flip_bit = (data & 0x40) >> 6; + //flip_screen_set(machine(), (data & 0x40) >> 6); + m_flip_bit = (data & 0x40) >> 6; } } @@ -155,16 +158,16 @@ static ADDRESS_MAP_START( hanaroku_map, AS_PROGRAM, 8, albazc_state ) AM_RANGE(0x9000, 0x97ff) AM_RAM AM_BASE(m_spriteram2) AM_RANGE(0xa000, 0xa1ff) AM_RAM AM_BASE(m_spriteram3) AM_RANGE(0xa200, 0xa2ff) AM_WRITENOP // ??? written once during P.O.S.T. - AM_RANGE(0xa300, 0xa304) AM_WRITE_LEGACY(albazc_vregs_w) // ??? + AM_RANGE(0xa300, 0xa304) AM_WRITE(albazc_vregs_w) // ??? AM_RANGE(0xb000, 0xb000) AM_WRITENOP // ??? always 0x40 AM_RANGE(0xc000, 0xc3ff) AM_RAM // main ram AM_RANGE(0xc400, 0xc4ff) AM_RAM // ??? AM_RANGE(0xd000, 0xd000) AM_DEVREAD_LEGACY("aysnd", ay8910_r) AM_RANGE(0xd000, 0xd001) AM_DEVWRITE_LEGACY("aysnd", ay8910_address_data_w) - AM_RANGE(0xe000, 0xe000) AM_READ_PORT("IN0") AM_WRITE_LEGACY(hanaroku_out_0_w) + AM_RANGE(0xe000, 0xe000) AM_READ_PORT("IN0") AM_WRITE(hanaroku_out_0_w) AM_RANGE(0xe001, 0xe001) AM_READ_PORT("IN1") - AM_RANGE(0xe002, 0xe002) AM_READ_PORT("IN2") AM_WRITE_LEGACY(hanaroku_out_1_w) - AM_RANGE(0xe004, 0xe004) AM_READ_PORT("DSW3") AM_WRITE_LEGACY(hanaroku_out_2_w) + AM_RANGE(0xe002, 0xe002) AM_READ_PORT("IN2") AM_WRITE(hanaroku_out_1_w) + AM_RANGE(0xe004, 0xe004) AM_READ_PORT("DSW3") AM_WRITE(hanaroku_out_2_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/albazg.c b/src/mame/drivers/albazg.c index 4d70dabaa7e..291d5ac1c9b 100644 --- a/src/mame/drivers/albazg.c +++ b/src/mame/drivers/albazg.c @@ -61,6 +61,11 @@ public: UINT8 m_mux_data; int m_bank; UINT8 m_prot_lock; + DECLARE_WRITE8_MEMBER(yumefuda_vram_w); + DECLARE_WRITE8_MEMBER(yumefuda_cram_w); + DECLARE_READ8_MEMBER(custom_ram_r); + DECLARE_WRITE8_MEMBER(custom_ram_w); + DECLARE_WRITE8_MEMBER(prot_lock_w); }; static TILE_GET_INFO( y_get_bg_tile_info ) @@ -108,42 +113,37 @@ static GFXDECODE_START( yumefuda ) GFXDECODE_END -static WRITE8_HANDLER( yumefuda_vram_w ) +WRITE8_MEMBER(albazg_state::yumefuda_vram_w) { - albazg_state *state = space->machine().driver_data<albazg_state>(); - state->m_videoram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_videoram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( yumefuda_cram_w ) +WRITE8_MEMBER(albazg_state::yumefuda_cram_w) { - albazg_state *state = space->machine().driver_data<albazg_state>(); - state->m_colorram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_colorram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } /*Custom RAM (Thrash Protection)*/ -static READ8_HANDLER( custom_ram_r ) +READ8_MEMBER(albazg_state::custom_ram_r) { - albazg_state *state = space->machine().driver_data<albazg_state>(); -// logerror("Custom RAM read at %02x PC = %x\n", offset + 0xaf80, cpu_get_pc(&space->device())); - return state->m_cus_ram[offset];// ^ 0x55; +// logerror("Custom RAM read at %02x PC = %x\n", offset + 0xaf80, cpu_get_pc(&space.device())); + return m_cus_ram[offset];// ^ 0x55; } -static WRITE8_HANDLER( custom_ram_w ) +WRITE8_MEMBER(albazg_state::custom_ram_w) { - albazg_state *state = space->machine().driver_data<albazg_state>(); -// logerror("Custom RAM write at %02x : %02x PC = %x\n", offset + 0xaf80, data, cpu_get_pc(&space->device())); - if(state->m_prot_lock) - state->m_cus_ram[offset] = data; +// logerror("Custom RAM write at %02x : %02x PC = %x\n", offset + 0xaf80, data, cpu_get_pc(&space.device())); + if(m_prot_lock) + m_cus_ram[offset] = data; } /*this might be used as NVRAM commands btw*/ -static WRITE8_HANDLER( prot_lock_w ) +WRITE8_MEMBER(albazg_state::prot_lock_w) { - albazg_state *state = space->machine().driver_data<albazg_state>(); -// logerror("PC %04x Prot lock value written %02x\n", cpu_get_pc(&space->device()), data); - state->m_prot_lock = data; +// logerror("PC %04x Prot lock value written %02x\n", cpu_get_pc(&space.device()), data); + m_prot_lock = data; } static READ8_DEVICE_HANDLER( mux_r ) @@ -230,13 +230,13 @@ static I8255A_INTERFACE( ppi8255_intf ) static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, albazg_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1") - AM_RANGE(0xa7fc, 0xa7fc) AM_WRITE_LEGACY(prot_lock_w) + AM_RANGE(0xa7fc, 0xa7fc) AM_WRITE(prot_lock_w) AM_RANGE(0xa7ff, 0xa7ff) AM_WRITE_PORT("EEPROMOUT") - AM_RANGE(0xaf80, 0xafff) AM_READWRITE_LEGACY(custom_ram_r, custom_ram_w) AM_BASE(m_cus_ram) + AM_RANGE(0xaf80, 0xafff) AM_READWRITE(custom_ram_r, custom_ram_w) AM_BASE(m_cus_ram) AM_RANGE(0xb000, 0xb07f) AM_RAM_WRITE_LEGACY(paletteram_xRRRRRGGGGGBBBBB_split1_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0xb080, 0xb0ff) AM_RAM_WRITE_LEGACY(paletteram_xRRRRRGGGGGBBBBB_split2_w) AM_BASE_GENERIC(paletteram2) - AM_RANGE(0xc000, 0xc3ff) AM_RAM_WRITE_LEGACY(yumefuda_vram_w) AM_BASE(m_videoram) - AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE_LEGACY(yumefuda_cram_w) AM_BASE(m_colorram) + AM_RANGE(0xc000, 0xc3ff) AM_RAM_WRITE(yumefuda_vram_w) AM_BASE(m_videoram) + AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(yumefuda_cram_w) AM_BASE(m_colorram) AM_RANGE(0xe000, 0xffff) AM_RAM ADDRESS_MAP_END diff --git a/src/mame/drivers/aristmk5.c b/src/mame/drivers/aristmk5.c index 67ddf3378f9..a8c6dbf22ea 100644 --- a/src/mame/drivers/aristmk5.c +++ b/src/mame/drivers/aristmk5.c @@ -74,6 +74,12 @@ public: emu_timer *m_mk5_VSYNC_timer; UINT8 m_ext_latch; UINT8 m_flyback; + DECLARE_WRITE32_MEMBER(Ns5w48); + DECLARE_READ32_MEMBER(Ns5x58); + DECLARE_READ32_MEMBER(mk5_ioc_r); + DECLARE_WRITE32_MEMBER(mk5_ioc_w); + DECLARE_READ32_MEMBER(Ns5r50); + DECLARE_WRITE32_MEMBER(sram_banksel_w); }; @@ -84,10 +90,9 @@ static TIMER_CALLBACK( mk5_VSYNC_callback ) state->m_mk5_VSYNC_timer->adjust(attotime::never); } -static WRITE32_HANDLER(Ns5w48) +WRITE32_MEMBER(aristmk5_state::Ns5w48) { - /* There is one writeable register which is written with the Ns5w48 strobe. It contains four bits which are taken from bits 16 to 19 of the word being written. The register is cleared whenever the chip is reset. The @@ -122,25 +127,25 @@ static WRITE32_HANDLER(Ns5w48) ROM:03400968 TST R1, #8 ; test vsync */ - aristmk5_state *state = space->machine().driver_data<aristmk5_state>(); + ioc_regs[IRQ_STATUS_A] &= ~0x08; /* bit 1 bit 0 */ if((data &~(0x02)) && (data & (0x01))) // external video crystal is enabled. 25 mhz { - state->m_mk5_VSYNC_timer->adjust(attotime::from_hz(50000)); // not sure but see above + m_mk5_VSYNC_timer->adjust(attotime::from_hz(50000)); // not sure but see above } if((data &~(0x02)) && (data &~(0x01))) // video clock is enabled. 24 mhz { - state->m_mk5_VSYNC_timer->adjust(attotime::from_hz(50000)); // not sure + m_mk5_VSYNC_timer->adjust(attotime::from_hz(50000)); // not sure } if((data & (0x02)) && (data &~(0x01))) // video clock is enabled. 36 mhz { - state->m_mk5_VSYNC_timer->adjust(attotime::from_hz(50000)); // not sure + m_mk5_VSYNC_timer->adjust(attotime::from_hz(50000)); // not sure } if((data &(0x02)) && (data &(0x01))) // video clock is enabled. 24 mhz { - state->m_mk5_VSYNC_timer->adjust(attotime::from_hz(50000)); // not sure + m_mk5_VSYNC_timer->adjust(attotime::from_hz(50000)); // not sure } } @@ -152,7 +157,7 @@ static TIMER_CALLBACK( mk5_2KHz_callback ) } -static READ32_HANDLER(Ns5x58) +READ32_MEMBER(aristmk5_state::Ns5x58) { /* 1953.125 Hz for the operating system timer interrupt @@ -172,18 +177,17 @@ static READ32_HANDLER(Ns5x58) `-------' `-------------' */ - aristmk5_state *state = space->machine().driver_data<aristmk5_state>(); + // reset 2KHz timer - state->m_mk5_2KHz_timer->adjust(attotime::from_hz(1953.125)); + m_mk5_2KHz_timer->adjust(attotime::from_hz(1953.125)); ioc_regs[IRQ_STATUS_A] &= ~0x01; - cputag_set_input_line(space->machine(), "maincpu", ARM_IRQ_LINE, CLEAR_LINE); + cputag_set_input_line(machine(), "maincpu", ARM_IRQ_LINE, CLEAR_LINE); return 0xffffffff; } /* same as plain AA but with the I2C unconnected */ -static READ32_HANDLER( mk5_ioc_r ) +READ32_MEMBER(aristmk5_state::mk5_ioc_r) { - aristmk5_state *state = space->machine().driver_data<aristmk5_state>(); UINT32 ioc_addr; ioc_addr = offset*4; @@ -194,27 +198,26 @@ static READ32_HANDLER( mk5_ioc_r ) { int vert_pos; - vert_pos = space->machine().primary_screen->vpos(); - state->m_flyback = (vert_pos <= vidc_regs[VIDC_VDSR] || vert_pos >= vidc_regs[VIDC_VDER]) ? 0x80 : 0x00; + vert_pos = machine().primary_screen->vpos(); + m_flyback = (vert_pos <= vidc_regs[VIDC_VDSR] || vert_pos >= vidc_regs[VIDC_VDER]) ? 0x80 : 0x00; - //i2c_data = (i2cmem_sda_read(space->machine().device("i2cmem")) & 1); + //i2c_data = (i2cmem_sda_read(machine().device("i2cmem")) & 1); - return (state->m_flyback) | (ioc_regs[CONTROL] & 0x7c) | (1<<1) | 1; + return (m_flyback) | (ioc_regs[CONTROL] & 0x7c) | (1<<1) | 1; } - return archimedes_ioc_r(space,offset,mem_mask); + return archimedes_ioc_r(&space,offset,mem_mask); } -static WRITE32_HANDLER( mk5_ioc_w ) +WRITE32_MEMBER(aristmk5_state::mk5_ioc_w) { - aristmk5_state *state = space->machine().driver_data<aristmk5_state>(); UINT32 ioc_addr; ioc_addr = offset*4; ioc_addr >>= 16; ioc_addr &= 0x37; - if(!state->m_ext_latch) + if(!m_ext_latch) { if(((ioc_addr == 0x20) || (ioc_addr == 0x30)) && (offset & 0x1f) == 0) { @@ -222,16 +225,16 @@ static WRITE32_HANDLER( mk5_ioc_w ) return; } else - archimedes_ioc_w(space,offset,data,mem_mask); + archimedes_ioc_w(&space,offset,data,mem_mask); } } -static READ32_HANDLER( Ns5r50 ) +READ32_MEMBER(aristmk5_state::Ns5r50) { return 0xf5; // checked inside the CPU check, unknown meaning } -static WRITE32_HANDLER( sram_banksel_w ) +WRITE32_MEMBER(aristmk5_state::sram_banksel_w) { /* @@ -245,7 +248,7 @@ static WRITE32_HANDLER( sram_banksel_w ) checked against the other to verify that the stored data is correct. Each chip is mapped to the same address, and the chip selected depends on the bank select register. Access is mutually exclusive, increasing security with only one chip - visible in the CPU address space at a time. If the CPU crashes and overwrites + visible in the CPU address &space at a time. If the CPU crashes and overwrites memory only one of the three devices can be corrupted. On reset the bank select register selects bank 0, which does not exist. The SRAMs are at banks 1,2,3. Each of the SRAM chips may be powered from a separate battery, further reducing @@ -286,8 +289,8 @@ static WRITE32_HANDLER( sram_banksel_w ) 4 pages of 32k for each sram chip. */ - memory_set_bank(space->machine(),"sram_bank", (data & 0xc0) >> 6); - memory_set_bank(space->machine(),"sram_bank_nz", (data & 0xc0) >> 6); + memory_set_bank(machine(),"sram_bank", (data & 0xc0) >> 6); + memory_set_bank(machine(),"sram_bank_nz", (data & 0xc0) >> 6); } /* U.S games have no dram emulator enabled */ @@ -296,7 +299,7 @@ static ADDRESS_MAP_START( aristmk5_map, AS_PROGRAM, 32, aristmk5_state ) AM_RANGE(0x02000000, 0x02ffffff) AM_RAM AM_BASE_LEGACY(&archimedes_memc_physmem) /* physical RAM - 16 MB for now, should be 512k for the A310 */ /* MK-5 overrides */ - AM_RANGE(0x03010420, 0x03010423) AM_WRITE_LEGACY(sram_banksel_w) // SRAM bank select write + AM_RANGE(0x03010420, 0x03010423) AM_WRITE(sram_banksel_w) // SRAM bank select write // AM_RANGE(0x0301049c, 0x0301051f) AM_DEVREADWRITE_LEGACY("eeprom", eeprom_r, eeprom_w) // eeprom ??? @@ -305,11 +308,11 @@ static ADDRESS_MAP_START( aristmk5_map, AS_PROGRAM, 32, aristmk5_state ) AM_RANGE(0x03220000, 0x0323ffff) AM_RAMBANK("sram_bank") //AM_BASE_SIZE_GENERIC(nvram) // nvram 32kbytes x 3 // bank5 slow - AM_RANGE(0x03250048, 0x0325004b) AM_WRITE_LEGACY(Ns5w48) //IOEB control register - AM_RANGE(0x03250050, 0x03250053) AM_READ_LEGACY(Ns5r50) //IOEB ID register - AM_RANGE(0x03250058, 0x0325005b) AM_READ_LEGACY(Ns5x58) //IOEB interrupt Latch + AM_RANGE(0x03250048, 0x0325004b) AM_WRITE(Ns5w48) //IOEB control register + AM_RANGE(0x03250050, 0x03250053) AM_READ(Ns5r50) //IOEB ID register + AM_RANGE(0x03250058, 0x0325005b) AM_READ(Ns5x58) //IOEB interrupt Latch - AM_RANGE(0x03000000, 0x0331ffff) AM_READWRITE_LEGACY(mk5_ioc_r, mk5_ioc_w) + AM_RANGE(0x03000000, 0x0331ffff) AM_READWRITE(mk5_ioc_r, mk5_ioc_w) AM_RANGE(0x03320000, 0x0333ffff) AM_RAMBANK("sram_bank_nz") // AM_BASE_SIZE_GENERIC(nvram) // nvram 32kbytes x 3 NZ AM_RANGE(0x03400000, 0x035fffff) AM_ROM AM_REGION("maincpu", 0) AM_WRITE_LEGACY(archimedes_vidc_w) AM_RANGE(0x03600000, 0x037fffff) AM_READWRITE_LEGACY(archimedes_memc_r, archimedes_memc_w) @@ -322,7 +325,7 @@ static ADDRESS_MAP_START( aristmk5_drame_map, AS_PROGRAM, 32, aristmk5_state ) AM_RANGE(0x02000000, 0x02ffffff) AM_RAM AM_BASE_LEGACY(&archimedes_memc_physmem) /* physical RAM - 16 MB for now, should be 512k for the A310 */ /* MK-5 overrides */ - AM_RANGE(0x03010420, 0x03010423) AM_WRITE_LEGACY(sram_banksel_w) // SRAM bank select write + AM_RANGE(0x03010420, 0x03010423) AM_WRITE(sram_banksel_w) // SRAM bank select write // AM_RANGE(0x0301049c, 0x0301051f) AM_DEVREADWRITE_LEGACY("eeprom", eeprom_r, eeprom_w) // eeprom ??? @@ -331,12 +334,12 @@ static ADDRESS_MAP_START( aristmk5_drame_map, AS_PROGRAM, 32, aristmk5_state ) AM_RANGE(0x03220000, 0x0323ffff) AM_RAMBANK("sram_bank") //AM_BASE_SIZE_GENERIC(nvram) // nvram 32kbytes x 3 // bank5 slow - AM_RANGE(0x03250048, 0x0325004b) AM_WRITE_LEGACY(Ns5w48) //IOEB control register - AM_RANGE(0x03250050, 0x03250053) AM_READ_LEGACY(Ns5r50) //IOEB ID register - AM_RANGE(0x03250058, 0x0325005b) AM_READ_LEGACY(Ns5x58) //IOEB interrupt Latch + AM_RANGE(0x03250048, 0x0325004b) AM_WRITE(Ns5w48) //IOEB control register + AM_RANGE(0x03250050, 0x03250053) AM_READ(Ns5r50) //IOEB ID register + AM_RANGE(0x03250058, 0x0325005b) AM_READ(Ns5x58) //IOEB interrupt Latch - AM_RANGE(0x03000000, 0x0331ffff) AM_READWRITE_LEGACY(mk5_ioc_r, mk5_ioc_w) + AM_RANGE(0x03000000, 0x0331ffff) AM_READWRITE(mk5_ioc_r, mk5_ioc_w) AM_RANGE(0x03320000, 0x0333ffff) AM_RAMBANK("sram_bank_nz") // AM_BASE_SIZE_GENERIC(nvram) // nvram 32kbytes x 3 NZ AM_RANGE(0x03400000, 0x035fffff) AM_ROM AM_REGION("maincpu", 0) AM_WRITE_LEGACY(archimedes_vidc_w) AM_RANGE(0x03600000, 0x037fffff) AM_READWRITE_LEGACY(archimedes_memc_r, archimedes_memc_w) diff --git a/src/mame/drivers/aristmk6.c b/src/mame/drivers/aristmk6.c index fc175fb0c73..650eb342232 100644 --- a/src/mame/drivers/aristmk6.c +++ b/src/mame/drivers/aristmk6.c @@ -20,6 +20,7 @@ public: UINT32 m_test_x,m_test_y,m_start_offs; UINT8 m_type; + DECLARE_READ64_MEMBER(test_r); }; @@ -108,7 +109,7 @@ SCREEN_UPDATE_RGB32(aristmk6) return 0; } -static READ64_HANDLER( test_r ) +READ64_MEMBER(aristmk6_state::test_r) { // bit 1 read in various places, status for something ... return -1; @@ -117,7 +118,7 @@ static READ64_HANDLER( test_r ) static ADDRESS_MAP_START( aristmk6_map, AS_PROGRAM, 64, aristmk6_state ) AM_RANGE(0x00000000, 0x003fffff) AM_ROM AM_REGION("maincpu", 0) AM_RANGE(0x0c000000, 0x0cffffff) AM_RAM // work ram - AM_RANGE(0x13800000, 0x13800007) AM_READ_LEGACY(test_r) + AM_RANGE(0x13800000, 0x13800007) AM_READ(test_r) ADDRESS_MAP_END static ADDRESS_MAP_START( aristmk6_port, AS_IO, 64, aristmk6_state ) diff --git a/src/mame/drivers/astinvad.c b/src/mame/drivers/astinvad.c index 5b24d95f887..300598d4c2b 100644 --- a/src/mame/drivers/astinvad.c +++ b/src/mame/drivers/astinvad.c @@ -62,6 +62,12 @@ public: device_t *m_ppi8255_0; device_t *m_ppi8255_1; samples_device *m_samples; + DECLARE_WRITE8_MEMBER(color_latch_w); + DECLARE_WRITE8_MEMBER(spaceint_videoram_w); + DECLARE_READ8_MEMBER(kamikaze_ppi_r); + DECLARE_WRITE8_MEMBER(kamikaze_ppi_w); + DECLARE_WRITE8_MEMBER(spaceint_sound1_w); + DECLARE_WRITE8_MEMBER(spaceint_sound2_w); }; @@ -112,18 +118,16 @@ static VIDEO_START( spaceint ) } -static WRITE8_HANDLER( color_latch_w ) +WRITE8_MEMBER(astinvad_state::color_latch_w) { - astinvad_state *state = space->machine().driver_data<astinvad_state>(); - state->m_color_latch = data & 0x0f; + m_color_latch = data & 0x0f; } -static WRITE8_HANDLER( spaceint_videoram_w ) +WRITE8_MEMBER(astinvad_state::spaceint_videoram_w) { - astinvad_state *state = space->machine().driver_data<astinvad_state>(); - state->m_videoram[offset] = data; - state->m_colorram[offset] = state->m_color_latch; + m_videoram[offset] = data; + m_colorram[offset] = m_color_latch; } @@ -288,29 +292,27 @@ static INPUT_CHANGED( spaceint_coin_inserted ) * *************************************/ -static READ8_HANDLER( kamikaze_ppi_r ) +READ8_MEMBER(astinvad_state::kamikaze_ppi_r) { - astinvad_state *state = space->machine().driver_data<astinvad_state>(); UINT8 result = 0xff; /* the address lines are used for /CS; yes, they can overlap! */ if (!(offset & 4)) - result &= ppi8255_r(state->m_ppi8255_0, offset); + result &= ppi8255_r(m_ppi8255_0, offset); if (!(offset & 8)) - result &= ppi8255_r(state->m_ppi8255_1, offset); + result &= ppi8255_r(m_ppi8255_1, offset); return result; } -static WRITE8_HANDLER( kamikaze_ppi_w ) +WRITE8_MEMBER(astinvad_state::kamikaze_ppi_w) { - astinvad_state *state = space->machine().driver_data<astinvad_state>(); /* the address lines are used for /CS; yes, they can overlap! */ if (!(offset & 4)) - ppi8255_w(state->m_ppi8255_0, offset, data); + ppi8255_w(m_ppi8255_0, offset, data); if (!(offset & 8)) - ppi8255_w(state->m_ppi8255_1, offset, data); + ppi8255_w(m_ppi8255_1, offset, data); } @@ -354,36 +356,34 @@ static WRITE8_DEVICE_HANDLER( astinvad_sound2_w ) } -static WRITE8_HANDLER( spaceint_sound1_w ) +WRITE8_MEMBER(astinvad_state::spaceint_sound1_w) { - astinvad_state *state = space->machine().driver_data<astinvad_state>(); - int bits_gone_hi = data & ~state->m_sound_state[0]; - state->m_sound_state[0] = data; - - if (bits_gone_hi & 0x01) state->m_samples->start(1, SND_SHOT); - if (bits_gone_hi & 0x02) state->m_samples->start(2, SND_BASEHIT); - if (bits_gone_hi & 0x04) state->m_samples->start(4, SND_UFOHIT); - if (bits_gone_hi & 0x08) state->m_samples->start(0, SND_UFO, true); - if (!(data & 0x08)) state->m_samples->stop(0); - - if (bits_gone_hi & 0x10) state->m_samples->start(5, SND_FLEET1); - if (bits_gone_hi & 0x20) state->m_samples->start(5, SND_FLEET2); - if (bits_gone_hi & 0x40) state->m_samples->start(5, SND_FLEET3); - if (bits_gone_hi & 0x80) state->m_samples->start(5, SND_FLEET4); + int bits_gone_hi = data & ~m_sound_state[0]; + m_sound_state[0] = data; + + if (bits_gone_hi & 0x01) m_samples->start(1, SND_SHOT); + if (bits_gone_hi & 0x02) m_samples->start(2, SND_BASEHIT); + if (bits_gone_hi & 0x04) m_samples->start(4, SND_UFOHIT); + if (bits_gone_hi & 0x08) m_samples->start(0, SND_UFO, true); + if (!(data & 0x08)) m_samples->stop(0); + + if (bits_gone_hi & 0x10) m_samples->start(5, SND_FLEET1); + if (bits_gone_hi & 0x20) m_samples->start(5, SND_FLEET2); + if (bits_gone_hi & 0x40) m_samples->start(5, SND_FLEET3); + if (bits_gone_hi & 0x80) m_samples->start(5, SND_FLEET4); } -static WRITE8_HANDLER( spaceint_sound2_w ) +WRITE8_MEMBER(astinvad_state::spaceint_sound2_w) { - astinvad_state *state = space->machine().driver_data<astinvad_state>(); - int bits_gone_hi = data & ~state->m_sound_state[1]; - state->m_sound_state[1] = data; + int bits_gone_hi = data & ~m_sound_state[1]; + m_sound_state[1] = data; - space->machine().sound().system_enable(data & 0x02); + machine().sound().system_enable(data & 0x02); - if (bits_gone_hi & 0x04) state->m_samples->start(3, SND_INVADERHIT); + if (bits_gone_hi & 0x04) m_samples->start(3, SND_INVADERHIT); - state->m_screen_flip = (input_port_read(space->machine(), "CABINET") & data & 0x80) ? 0xff : 0x00; + m_screen_flip = (input_port_read(machine(), "CABINET") & data & 0x80) ? 0xff : 0x00; } @@ -405,13 +405,13 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( spaceint_map, AS_PROGRAM, 8, astinvad_state ) AM_RANGE(0x0000, 0x1fff) AM_ROM AM_RANGE(0x2000, 0x23ff) AM_RAM - AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE_LEGACY(spaceint_videoram_w) AM_BASE_SIZE(m_videoram, m_videoram_size) + AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(spaceint_videoram_w) AM_BASE_SIZE(m_videoram, m_videoram_size) ADDRESS_MAP_END static ADDRESS_MAP_START( kamikaze_portmap, AS_IO, 8, astinvad_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0xff) AM_READWRITE_LEGACY(kamikaze_ppi_r, kamikaze_ppi_w) + AM_RANGE(0x00, 0xff) AM_READWRITE(kamikaze_ppi_r, kamikaze_ppi_w) ADDRESS_MAP_END @@ -419,9 +419,9 @@ static ADDRESS_MAP_START( spaceint_portmap, AS_IO, 8, astinvad_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_WRITE_LEGACY(spaceint_sound1_w) - AM_RANGE(0x03, 0x03) AM_WRITE_LEGACY(color_latch_w) - AM_RANGE(0x04, 0x04) AM_WRITE_LEGACY(spaceint_sound2_w) + AM_RANGE(0x02, 0x02) AM_WRITE(spaceint_sound1_w) + AM_RANGE(0x03, 0x03) AM_WRITE(color_latch_w) + AM_RANGE(0x04, 0x04) AM_WRITE(spaceint_sound2_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/astrocorp.c b/src/mame/drivers/astrocorp.c index 66020c61eb7..406332a7a6b 100644 --- a/src/mame/drivers/astrocorp.c +++ b/src/mame/drivers/astrocorp.c @@ -51,6 +51,13 @@ public: bitmap_ind16 m_bitmap; UINT16 m_screen_enable; UINT16 m_draw_sprites; + DECLARE_WRITE16_MEMBER(astrocorp_draw_sprites_w); + DECLARE_WRITE16_MEMBER(astrocorp_eeprom_w); + DECLARE_WRITE16_MEMBER(showhand_outputs_w); + DECLARE_WRITE16_MEMBER(skilldrp_outputs_w); + DECLARE_WRITE16_MEMBER(astrocorp_screen_enable_w); + DECLARE_READ16_MEMBER(astrocorp_unk_r); + DECLARE_WRITE16_MEMBER(astrocorp_palette_w); }; /*************************************************************************** @@ -155,22 +162,21 @@ static SCREEN_UPDATE_IND16(astrocorp) Memory Maps ***************************************************************************/ -static WRITE16_HANDLER( astrocorp_draw_sprites_w ) +WRITE16_MEMBER(astrocorp_state::astrocorp_draw_sprites_w) { - astrocorp_state *state = space->machine().driver_data<astrocorp_state>(); - UINT16 old = state->m_draw_sprites; - UINT16 now = COMBINE_DATA(&state->m_draw_sprites); + UINT16 old = m_draw_sprites; + UINT16 now = COMBINE_DATA(&m_draw_sprites); if (!old && now) - draw_sprites(space->machine(), state->m_bitmap, space->machine().primary_screen->visible_area()); + draw_sprites(machine(), m_bitmap, machine().primary_screen->visible_area()); } -static WRITE16_HANDLER( astrocorp_eeprom_w ) +WRITE16_MEMBER(astrocorp_state::astrocorp_eeprom_w) { if (ACCESSING_BITS_0_7) { - input_port_write(space->machine(), "EEPROMOUT", data, 0xff); + input_port_write(machine(), "EEPROMOUT", data, 0xff); } } @@ -194,27 +200,27 @@ static WRITE16_DEVICE_HANDLER( skilldrp_sound_bank_w ) } } -static WRITE16_HANDLER( showhand_outputs_w ) +WRITE16_MEMBER(astrocorp_state::showhand_outputs_w) { if (ACCESSING_BITS_0_7) { - coin_counter_w(space->machine(), 0, (data & 0x0004)); // coin counter - set_led_status(space->machine(), 0, (data & 0x0008)); // you win - if ((data & 0x0010)) increment_dispensed_tickets(space->machine(), 1); // coin out - set_led_status(space->machine(), 1, (data & 0x0020)); // coin/hopper jam + coin_counter_w(machine(), 0, (data & 0x0004)); // coin counter + set_led_status(machine(), 0, (data & 0x0008)); // you win + if ((data & 0x0010)) increment_dispensed_tickets(machine(), 1); // coin out + set_led_status(machine(), 1, (data & 0x0020)); // coin/hopper jam } if (ACCESSING_BITS_8_15) { - set_led_status(space->machine(), 2, (data & 0x0100)); // bet - set_led_status(space->machine(), 3, (data & 0x0800)); // start - set_led_status(space->machine(), 4, (data & 0x1000)); // ? select/choose - set_led_status(space->machine(), 5, (data & 0x2000)); // ? select/choose - set_led_status(space->machine(), 6, (data & 0x4000)); // look + set_led_status(machine(), 2, (data & 0x0100)); // bet + set_led_status(machine(), 3, (data & 0x0800)); // start + set_led_status(machine(), 4, (data & 0x1000)); // ? select/choose + set_led_status(machine(), 5, (data & 0x2000)); // ? select/choose + set_led_status(machine(), 6, (data & 0x4000)); // look } // popmessage("%04X",data); } -static WRITE16_HANDLER( skilldrp_outputs_w ) +WRITE16_MEMBER(astrocorp_state::skilldrp_outputs_w) { // key in (0001) // coin in (0002) @@ -234,94 +240,92 @@ static WRITE16_HANDLER( skilldrp_outputs_w ) if (ACCESSING_BITS_0_7) { - coin_counter_w(space->machine(), 0, (data & 0x0001)); // key in | - coin_counter_w(space->machine(), 0, (data & 0x0002)); // coin in |- manual shows 1 in- and 1 out- counter - coin_counter_w(space->machine(), 1, (data & 0x0004)); // key out | - ticket_dispenser_w(space->machine().device("hopper"), 0, (data & 0x0008)<<4); // hopper motor? + coin_counter_w(machine(), 0, (data & 0x0001)); // key in | + coin_counter_w(machine(), 0, (data & 0x0002)); // coin in |- manual shows 1 in- and 1 out- counter + coin_counter_w(machine(), 1, (data & 0x0004)); // key out | + ticket_dispenser_w(machine().device("hopper"), 0, (data & 0x0008)<<4); // hopper motor? // (data & 0x0010) // hopper? - set_led_status(space->machine(), 0, (data & 0x0020)); // error lamp (coin/hopper jam: "call attendant") - ticket_dispenser_w(space->machine().device("ticket"), 0, data & 0x0080); // ticket motor? + set_led_status(machine(), 0, (data & 0x0020)); // error lamp (coin/hopper jam: "call attendant") + ticket_dispenser_w(machine().device("ticket"), 0, data & 0x0080); // ticket motor? } if (ACCESSING_BITS_8_15) { // lamps: - set_led_status(space->machine(), 1, (data & 0x0100)); // select - set_led_status(space->machine(), 2, (data & 0x0400)); // take - set_led_status(space->machine(), 3, (data & 0x0800)); // bet - set_led_status(space->machine(), 4, (data & 0x1000)); // start - set_led_status(space->machine(), 5, (data & 0x4000)); // win / test - set_led_status(space->machine(), 6, (data & 0x8000)); // ticket? + set_led_status(machine(), 1, (data & 0x0100)); // select + set_led_status(machine(), 2, (data & 0x0400)); // take + set_led_status(machine(), 3, (data & 0x0800)); // bet + set_led_status(machine(), 4, (data & 0x1000)); // start + set_led_status(machine(), 5, (data & 0x4000)); // win / test + set_led_status(machine(), 6, (data & 0x8000)); // ticket? } // popmessage("%04X",data); } -static WRITE16_HANDLER( astrocorp_screen_enable_w ) +WRITE16_MEMBER(astrocorp_state::astrocorp_screen_enable_w) { - astrocorp_state *state = space->machine().driver_data<astrocorp_state>(); - COMBINE_DATA(&state->m_screen_enable); + COMBINE_DATA(&m_screen_enable); // popmessage("%04X",data); - if (state->m_screen_enable & (~1)) - logerror("CPU #0 PC %06X: screen enable = %04X\n", cpu_get_pc(&space->device()), state->m_screen_enable); + if (m_screen_enable & (~1)) + logerror("CPU #0 PC %06X: screen enable = %04X\n", cpu_get_pc(&space.device()), m_screen_enable); } -static READ16_HANDLER( astrocorp_unk_r ) +READ16_MEMBER(astrocorp_state::astrocorp_unk_r) { return 0xffff; // bit 3? } // 5-6-5 Palette: BBBBB-GGGGGG-RRRRR -static WRITE16_HANDLER( astrocorp_palette_w ) +WRITE16_MEMBER(astrocorp_state::astrocorp_palette_w) { - astrocorp_state *state = space->machine().driver_data<astrocorp_state>(); - COMBINE_DATA(&state->m_paletteram[offset]); - palette_set_color_rgb(space->machine(), offset, - pal5bit((state->m_paletteram[offset] >> 0) & 0x1f), - pal6bit((state->m_paletteram[offset] >> 5) & 0x3f), - pal5bit((state->m_paletteram[offset] >> 11) & 0x1f) + COMBINE_DATA(&m_paletteram[offset]); + palette_set_color_rgb(machine(), offset, + pal5bit((m_paletteram[offset] >> 0) & 0x1f), + pal6bit((m_paletteram[offset] >> 5) & 0x3f), + pal5bit((m_paletteram[offset] >> 11) & 0x1f) ); } static ADDRESS_MAP_START( showhand_map, AS_PROGRAM, 16, astrocorp_state ) AM_RANGE( 0x000000, 0x01ffff ) AM_ROM AM_RANGE( 0x050000, 0x050fff ) AM_RAM AM_BASE_SIZE(m_spriteram, m_spriteram_size) - AM_RANGE( 0x052000, 0x052001 ) AM_WRITE_LEGACY(astrocorp_draw_sprites_w) + AM_RANGE( 0x052000, 0x052001 ) AM_WRITE(astrocorp_draw_sprites_w) AM_RANGE( 0x054000, 0x054001 ) AM_READ_PORT("INPUTS") - AM_RANGE( 0x058000, 0x058001 ) AM_WRITE_LEGACY(astrocorp_eeprom_w) - AM_RANGE( 0x05a000, 0x05a001 ) AM_WRITE_LEGACY(showhand_outputs_w) + AM_RANGE( 0x058000, 0x058001 ) AM_WRITE(astrocorp_eeprom_w) + AM_RANGE( 0x05a000, 0x05a001 ) AM_WRITE(showhand_outputs_w) AM_RANGE( 0x05e000, 0x05e001 ) AM_READ_PORT("EEPROMIN") - AM_RANGE( 0x060000, 0x0601ff ) AM_RAM_WRITE_LEGACY(astrocorp_palette_w) AM_BASE(m_paletteram) + AM_RANGE( 0x060000, 0x0601ff ) AM_RAM_WRITE(astrocorp_palette_w) AM_BASE(m_paletteram) AM_RANGE( 0x070000, 0x073fff ) AM_RAM AM_SHARE("nvram") // battery AM_RANGE( 0x080000, 0x080001 ) AM_DEVWRITE_LEGACY("oki", astrocorp_sound_bank_w) - AM_RANGE( 0x0a0000, 0x0a0001 ) AM_WRITE_LEGACY(astrocorp_screen_enable_w) - AM_RANGE( 0x0d0000, 0x0d0001 ) AM_READ_LEGACY(astrocorp_unk_r) AM_DEVWRITE8("oki", okim6295_device, write, 0xff00) + AM_RANGE( 0x0a0000, 0x0a0001 ) AM_WRITE(astrocorp_screen_enable_w) + AM_RANGE( 0x0d0000, 0x0d0001 ) AM_READ(astrocorp_unk_r) AM_DEVWRITE8("oki", okim6295_device, write, 0xff00) ADDRESS_MAP_END static ADDRESS_MAP_START( showhanc_map, AS_PROGRAM, 16, astrocorp_state ) AM_RANGE( 0x000000, 0x01ffff ) AM_ROM - AM_RANGE( 0x060000, 0x0601ff ) AM_RAM_WRITE_LEGACY(astrocorp_palette_w) AM_BASE(m_paletteram) + AM_RANGE( 0x060000, 0x0601ff ) AM_RAM_WRITE(astrocorp_palette_w) AM_BASE(m_paletteram) AM_RANGE( 0x070000, 0x070001 ) AM_DEVWRITE_LEGACY("oki", astrocorp_sound_bank_w) AM_RANGE( 0x080000, 0x080fff ) AM_RAM AM_BASE_SIZE(m_spriteram, m_spriteram_size) - AM_RANGE( 0x082000, 0x082001 ) AM_WRITE_LEGACY(astrocorp_draw_sprites_w) + AM_RANGE( 0x082000, 0x082001 ) AM_WRITE(astrocorp_draw_sprites_w) AM_RANGE( 0x084000, 0x084001 ) AM_READ_PORT("INPUTS") - AM_RANGE( 0x088000, 0x088001 ) AM_WRITE_LEGACY(astrocorp_eeprom_w) - AM_RANGE( 0x08a000, 0x08a001 ) AM_WRITE_LEGACY(showhand_outputs_w) + AM_RANGE( 0x088000, 0x088001 ) AM_WRITE(astrocorp_eeprom_w) + AM_RANGE( 0x08a000, 0x08a001 ) AM_WRITE(showhand_outputs_w) AM_RANGE( 0x08e000, 0x08e001 ) AM_READ_PORT("EEPROMIN") AM_RANGE( 0x090000, 0x093fff ) AM_RAM AM_SHARE("nvram") // battery - AM_RANGE( 0x0a0000, 0x0a0001 ) AM_WRITE_LEGACY(astrocorp_screen_enable_w) - AM_RANGE( 0x0e0000, 0x0e0001 ) AM_READ_LEGACY(astrocorp_unk_r) AM_DEVWRITE8("oki", okim6295_device, write, 0xff00) + AM_RANGE( 0x0a0000, 0x0a0001 ) AM_WRITE(astrocorp_screen_enable_w) + AM_RANGE( 0x0e0000, 0x0e0001 ) AM_READ(astrocorp_unk_r) AM_DEVWRITE8("oki", okim6295_device, write, 0xff00) ADDRESS_MAP_END static ADDRESS_MAP_START( skilldrp_map, AS_PROGRAM, 16, astrocorp_state ) AM_RANGE( 0x000000, 0x03ffff ) AM_ROM AM_RANGE( 0x200000, 0x200fff ) AM_RAM AM_BASE_SIZE(m_spriteram, m_spriteram_size) - AM_RANGE( 0x202000, 0x202001 ) AM_WRITE_LEGACY(astrocorp_draw_sprites_w) + AM_RANGE( 0x202000, 0x202001 ) AM_WRITE(astrocorp_draw_sprites_w) AM_RANGE( 0x204000, 0x204001 ) AM_READ_PORT("INPUTS") - AM_RANGE( 0x208000, 0x208001 ) AM_WRITE_LEGACY(astrocorp_eeprom_w) - AM_RANGE( 0x20a000, 0x20a001 ) AM_WRITE_LEGACY(skilldrp_outputs_w) + AM_RANGE( 0x208000, 0x208001 ) AM_WRITE(astrocorp_eeprom_w) + AM_RANGE( 0x20a000, 0x20a001 ) AM_WRITE(skilldrp_outputs_w) AM_RANGE( 0x20e000, 0x20e001 ) AM_READ_PORT("EEPROMIN") - AM_RANGE( 0x380000, 0x3801ff ) AM_RAM_WRITE_LEGACY(astrocorp_palette_w) AM_BASE(m_paletteram) - AM_RANGE( 0x400000, 0x400001 ) AM_WRITE_LEGACY(astrocorp_screen_enable_w) + AM_RANGE( 0x380000, 0x3801ff ) AM_RAM_WRITE(astrocorp_palette_w) AM_BASE(m_paletteram) + AM_RANGE( 0x400000, 0x400001 ) AM_WRITE(astrocorp_screen_enable_w) AM_RANGE( 0x500000, 0x507fff ) AM_RAM AM_SHARE("nvram") // battery AM_RANGE( 0x580000, 0x580001 ) AM_DEVWRITE_LEGACY("oki", skilldrp_sound_bank_w) AM_RANGE( 0x600000, 0x600001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) @@ -331,13 +335,13 @@ static ADDRESS_MAP_START( speeddrp_map, AS_PROGRAM, 16, astrocorp_state ) AM_RANGE( 0x000000, 0x01ffff ) AM_ROM AM_RANGE( 0x280000, 0x283fff ) AM_RAM AM_SHARE("nvram") // battery AM_RANGE( 0x380000, 0x380fff ) AM_RAM AM_BASE_SIZE(m_spriteram, m_spriteram_size) - AM_RANGE( 0x382000, 0x382001 ) AM_WRITE_LEGACY(astrocorp_draw_sprites_w) + AM_RANGE( 0x382000, 0x382001 ) AM_WRITE(astrocorp_draw_sprites_w) AM_RANGE( 0x384000, 0x384001 ) AM_READ_PORT("INPUTS") - AM_RANGE( 0x388000, 0x388001 ) AM_WRITE_LEGACY(astrocorp_eeprom_w) - AM_RANGE( 0x38a000, 0x38a001 ) AM_WRITE_LEGACY(skilldrp_outputs_w) + AM_RANGE( 0x388000, 0x388001 ) AM_WRITE(astrocorp_eeprom_w) + AM_RANGE( 0x38a000, 0x38a001 ) AM_WRITE(skilldrp_outputs_w) AM_RANGE( 0x38e000, 0x38e001 ) AM_READ_PORT("EEPROMIN") - AM_RANGE( 0x480000, 0x4801ff ) AM_RAM_WRITE_LEGACY(astrocorp_palette_w) AM_BASE(m_paletteram) - AM_RANGE( 0x500000, 0x500001 ) AM_WRITE_LEGACY(astrocorp_screen_enable_w) + AM_RANGE( 0x480000, 0x4801ff ) AM_RAM_WRITE(astrocorp_palette_w) AM_BASE(m_paletteram) + AM_RANGE( 0x500000, 0x500001 ) AM_WRITE(astrocorp_screen_enable_w) AM_RANGE( 0x580000, 0x580001 ) AM_DEVWRITE_LEGACY("oki", skilldrp_sound_bank_w) AM_RANGE( 0x600000, 0x600001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) ADDRESS_MAP_END diff --git a/src/mame/drivers/atarisy4.c b/src/mame/drivers/atarisy4.c index 562414d1384..ac86b502c93 100644 --- a/src/mame/drivers/atarisy4.c +++ b/src/mame/drivers/atarisy4.c @@ -35,6 +35,21 @@ public: UINT16 *m_shared_ram[2]; UINT16 *m_screen_ram; poly_manager *m_poly; + DECLARE_WRITE16_MEMBER(gpu_w); + DECLARE_READ16_MEMBER(gpu_r); + DECLARE_READ16_MEMBER(m68k_shared_0_r); + DECLARE_WRITE16_MEMBER(m68k_shared_0_w); + DECLARE_READ16_MEMBER(m68k_shared_1_r); + DECLARE_WRITE16_MEMBER(m68k_shared_1_w); + DECLARE_READ16_MEMBER(dsp0_status_r); + DECLARE_WRITE16_MEMBER(dsp0_control_w); + DECLARE_READ16_MEMBER(dsp0_bio_r); + DECLARE_WRITE16_MEMBER(dsp0_bank_w); + DECLARE_READ16_MEMBER(dsp1_status_r); + DECLARE_WRITE16_MEMBER(dsp1_control_w); + DECLARE_READ16_MEMBER(dsp1_bio_r); + DECLARE_WRITE16_MEMBER(dsp1_bank_w); + DECLARE_READ16_MEMBER(analog_r); }; @@ -112,7 +127,7 @@ struct _poly_extra_data * *************************************/ -static READ16_HANDLER( analog_r ); + static MACHINE_RESET( atarisy4 ); static MACHINE_RESET( airrace ); @@ -426,7 +441,7 @@ void execute_gpu_command(running_machine &machine) } } -static WRITE16_HANDLER( gpu_w ) +WRITE16_MEMBER(atarisy4_state::gpu_w) { switch (offset) { @@ -454,7 +469,7 @@ static WRITE16_HANDLER( gpu_w ) case 0x17: { gpu.ecr = data; - execute_gpu_command(space->machine()); + execute_gpu_command(machine()); break; } case 0x1a: gpu.far = data; break; @@ -463,7 +478,7 @@ static WRITE16_HANDLER( gpu_w ) gpu.mcr = data; if (~data & 0x08) - cputag_set_input_line(space->machine(), "maincpu", 6, CLEAR_LINE); + cputag_set_input_line(machine(), "maincpu", 6, CLEAR_LINE); break; } @@ -473,7 +488,7 @@ static WRITE16_HANDLER( gpu_w ) } } -static READ16_HANDLER( gpu_r ) +READ16_MEMBER(atarisy4_state::gpu_r) { UINT16 res = 0; @@ -508,112 +523,100 @@ static INTERRUPT_GEN( vblank_int ) * *************************************/ -static READ16_HANDLER( m68k_shared_0_r ) +READ16_MEMBER(atarisy4_state::m68k_shared_0_r) { - atarisy4_state *state = space->machine().driver_data<atarisy4_state>(); - if (!BIT(state->m_csr[0], 3)) - return (state->m_shared_ram[0][offset]); + if (!BIT(m_csr[0], 3)) + return (m_shared_ram[0][offset]); else return 0xffff; } -static WRITE16_HANDLER( m68k_shared_0_w ) +WRITE16_MEMBER(atarisy4_state::m68k_shared_0_w) { - atarisy4_state *state = space->machine().driver_data<atarisy4_state>(); - if (!BIT(state->m_csr[0], 3)) - COMBINE_DATA(&state->m_shared_ram[0][offset]); + if (!BIT(m_csr[0], 3)) + COMBINE_DATA(&m_shared_ram[0][offset]); } -static READ16_HANDLER( m68k_shared_1_r ) +READ16_MEMBER(atarisy4_state::m68k_shared_1_r) { - atarisy4_state *state = space->machine().driver_data<atarisy4_state>(); - if (!BIT(state->m_csr[1], 3)) - return (state->m_shared_ram[1][offset]); + if (!BIT(m_csr[1], 3)) + return (m_shared_ram[1][offset]); else return 0xffff; } -static WRITE16_HANDLER( m68k_shared_1_w ) +WRITE16_MEMBER(atarisy4_state::m68k_shared_1_w) { - atarisy4_state *state = space->machine().driver_data<atarisy4_state>(); - if (!BIT(state->m_csr[1], 3)) - COMBINE_DATA(&state->m_shared_ram[1][offset]); + if (!BIT(m_csr[1], 3)) + COMBINE_DATA(&m_shared_ram[1][offset]); } -static READ16_HANDLER( dsp0_status_r ) +READ16_MEMBER(atarisy4_state::dsp0_status_r) { - atarisy4_state *state = space->machine().driver_data<atarisy4_state>(); - return state->m_csr[0]; + return m_csr[0]; } -static WRITE16_HANDLER( dsp0_control_w ) +WRITE16_MEMBER(atarisy4_state::dsp0_control_w) { - atarisy4_state *state = space->machine().driver_data<atarisy4_state>(); - cputag_set_input_line(space->machine(), "dsp0", INPUT_LINE_RESET, data & 0x01 ? CLEAR_LINE : ASSERT_LINE); - cputag_set_input_line(space->machine(), "dsp0", 0, data & 0x02 ? ASSERT_LINE : CLEAR_LINE); + cputag_set_input_line(machine(), "dsp0", INPUT_LINE_RESET, data & 0x01 ? CLEAR_LINE : ASSERT_LINE); + cputag_set_input_line(machine(), "dsp0", 0, data & 0x02 ? ASSERT_LINE : CLEAR_LINE); - state->m_csr[0] = data; + m_csr[0] = data; } -static READ16_HANDLER( dsp0_bio_r ) +READ16_MEMBER(atarisy4_state::dsp0_bio_r) { - atarisy4_state *state = space->machine().driver_data<atarisy4_state>(); - return BIT(state->m_csr[0], 2); + return BIT(m_csr[0], 2); } -static WRITE16_HANDLER( dsp0_bank_w ) +WRITE16_MEMBER(atarisy4_state::dsp0_bank_w) { - atarisy4_state *state = space->machine().driver_data<atarisy4_state>(); if (data & 0x4000) { /* Set TIDONE bit */ - state->m_csr[0] |= 0x10; + m_csr[0] |= 0x10; - if (BIT(state->m_csr[0], 5) == 1) + if (BIT(m_csr[0], 5) == 1) fatalerror("68000 interrupt enable was set!"); } data &= 0x3800; - memory_set_bankptr(space->machine(), "dsp0_bank1", &state->m_shared_ram[0][data]); - state->m_dsp_bank[0] = data; + memory_set_bankptr(machine(), "dsp0_bank1", &m_shared_ram[0][data]); + m_dsp_bank[0] = data; } -static READ16_HANDLER( dsp1_status_r ) +READ16_MEMBER(atarisy4_state::dsp1_status_r) { - atarisy4_state *state = space->machine().driver_data<atarisy4_state>(); - return state->m_csr[1]; + return m_csr[1]; } -static WRITE16_HANDLER( dsp1_control_w ) +WRITE16_MEMBER(atarisy4_state::dsp1_control_w) { - atarisy4_state *state = space->machine().driver_data<atarisy4_state>(); - cputag_set_input_line(space->machine(), "dsp1", INPUT_LINE_RESET, data & 0x01 ? CLEAR_LINE : ASSERT_LINE); - cputag_set_input_line(space->machine(), "dsp1", 0, data & 0x02 ? ASSERT_LINE : CLEAR_LINE); + cputag_set_input_line(machine(), "dsp1", INPUT_LINE_RESET, data & 0x01 ? CLEAR_LINE : ASSERT_LINE); + cputag_set_input_line(machine(), "dsp1", 0, data & 0x02 ? ASSERT_LINE : CLEAR_LINE); - state->m_csr[1] = data; + m_csr[1] = data; } -static READ16_HANDLER( dsp1_bio_r ) +READ16_MEMBER(atarisy4_state::dsp1_bio_r) { - atarisy4_state *state = space->machine().driver_data<atarisy4_state>(); - return BIT(state->m_csr[1], 2); + return BIT(m_csr[1], 2); } -static WRITE16_HANDLER( dsp1_bank_w ) +WRITE16_MEMBER(atarisy4_state::dsp1_bank_w) { - atarisy4_state *state = space->machine().driver_data<atarisy4_state>(); if (data & 0x4000) { /* Set TIDONE bit */ - state->m_csr[1] |= 0x10; + m_csr[1] |= 0x10; - if (BIT(state->m_csr[1], 5) == 1) + if (BIT(m_csr[1], 5) == 1) fatalerror("68000 interrupt enable was set!"); } data &= 0x3800; - memory_set_bankptr(space->machine(), "dsp1_bank1", &state->m_shared_ram[1][data]); - state->m_dsp_bank[1] = data; + memory_set_bankptr(machine(), "dsp1_bank1", &m_shared_ram[1][data]); + m_dsp_bank[1] = data; } @@ -627,14 +630,14 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, atarisy4_state ) AM_RANGE(0x000000, 0x00ffff) AM_RAM AM_BASE(m_m68k_ram) AM_RANGE(0x010000, 0x01ffff) AM_RAM AM_RANGE(0x580000, 0x580001) AM_READ_PORT("JOYSTICK") - AM_RANGE(0x588000, 0x588001) AM_READ_LEGACY(analog_r) + AM_RANGE(0x588000, 0x588001) AM_READ(analog_r) AM_RANGE(0x598000, 0x598001) AM_NOP /* Sound board */ - AM_RANGE(0x7c0000, 0x7c4fff) AM_READWRITE_LEGACY(m68k_shared_1_r, m68k_shared_1_w) - AM_RANGE(0x7c6000, 0x7c6001) AM_READWRITE_LEGACY(dsp1_status_r, dsp1_control_w) - AM_RANGE(0x7f0000, 0x7f4fff) AM_READWRITE_LEGACY(m68k_shared_0_r, m68k_shared_0_w) - AM_RANGE(0x7f6000, 0x7f6001) AM_READWRITE_LEGACY(dsp0_status_r, dsp0_control_w) + AM_RANGE(0x7c0000, 0x7c4fff) AM_READWRITE(m68k_shared_1_r, m68k_shared_1_w) + AM_RANGE(0x7c6000, 0x7c6001) AM_READWRITE(dsp1_status_r, dsp1_control_w) + AM_RANGE(0x7f0000, 0x7f4fff) AM_READWRITE(m68k_shared_0_r, m68k_shared_0_w) + AM_RANGE(0x7f6000, 0x7f6001) AM_READWRITE(dsp0_status_r, dsp0_control_w) AM_RANGE(0xa00400, 0xbfffff) AM_RAM AM_BASE(m_screen_ram) - AM_RANGE(0xff8000, 0xff8fff) AM_READWRITE_LEGACY(gpu_r, gpu_w) + AM_RANGE(0xff8000, 0xff8fff) AM_READWRITE(gpu_r, gpu_w) ADDRESS_MAP_END @@ -651,8 +654,8 @@ static ADDRESS_MAP_START( dsp0_map, AS_PROGRAM, 16, atarisy4_state ) ADDRESS_MAP_END static ADDRESS_MAP_START( dsp0_io_map, AS_IO, 16, atarisy4_state ) - AM_RANGE(0x00, 0x01) AM_WRITE_LEGACY(dsp0_bank_w) - AM_RANGE(TMS32010_BIO, TMS32010_BIO) AM_READ_LEGACY(dsp0_bio_r) + AM_RANGE(0x00, 0x01) AM_WRITE(dsp0_bank_w) + AM_RANGE(TMS32010_BIO, TMS32010_BIO) AM_READ(dsp0_bio_r) ADDRESS_MAP_END @@ -669,8 +672,8 @@ static ADDRESS_MAP_START( dsp1_map, AS_PROGRAM, 16, atarisy4_state ) ADDRESS_MAP_END static ADDRESS_MAP_START( dsp1_io_map, AS_IO, 16, atarisy4_state ) - AM_RANGE(0x00, 0x01) AM_WRITE_LEGACY(dsp1_bank_w) - AM_RANGE(TMS32010_BIO, TMS32010_BIO) AM_READ_LEGACY(dsp1_bio_r) + AM_RANGE(0x00, 0x01) AM_WRITE(dsp1_bank_w) + AM_RANGE(TMS32010_BIO, TMS32010_BIO) AM_READ(dsp1_bio_r) ADDRESS_MAP_END @@ -680,9 +683,9 @@ ADDRESS_MAP_END * *************************************/ - static READ16_HANDLER( analog_r ) +READ16_MEMBER(atarisy4_state::analog_r) { - return (input_port_read(space->machine(), "STICKX") << 8) | input_port_read(space->machine(), "STICKY"); + return (input_port_read(machine(), "STICKX") << 8) | input_port_read(machine(), "STICKY"); } static INPUT_PORTS_START( atarisy4 ) diff --git a/src/mame/drivers/attckufo.c b/src/mame/drivers/attckufo.c index fc941ff13d6..23f153a25be 100644 --- a/src/mame/drivers/attckufo.c +++ b/src/mame/drivers/attckufo.c @@ -61,6 +61,8 @@ public: /* devices */ required_device<cpu_device> m_maincpu; required_device<mos6560_device> m_mos6560; + DECLARE_READ8_MEMBER(attckufo_io_r); + DECLARE_WRITE8_MEMBER(attckufo_io_w); }; @@ -95,18 +97,18 @@ static PALETTE_INIT( attckufo ) } -static READ8_HANDLER(attckufo_io_r) +READ8_MEMBER(attckufo_state::attckufo_io_r) { switch(offset) { - case 0: return input_port_read(space->machine(), "DSW"); - case 2: return input_port_read(space->machine(), "INPUT"); + case 0: return input_port_read(machine(), "DSW"); + case 2: return input_port_read(machine(), "INPUT"); } return 0xff; } -static WRITE8_HANDLER(attckufo_io_w) +WRITE8_MEMBER(attckufo_state::attckufo_io_w) { /* offset, data: @@ -121,7 +123,7 @@ static ADDRESS_MAP_START( cpu_map, AS_PROGRAM, 8, attckufo_state ) ADDRESS_MAP_GLOBAL_MASK(0x3fff) AM_RANGE(0x0000, 0x0fff) AM_RAM AM_BASE(m_mainram) AM_RANGE(0x1000, 0x100f) AM_DEVREADWRITE_LEGACY("mos6560", mos6560_port_r, mos6560_port_w) - AM_RANGE(0x1400, 0x1403) AM_READWRITE_LEGACY(attckufo_io_r, attckufo_io_w) + AM_RANGE(0x1400, 0x1403) AM_READWRITE(attckufo_io_r, attckufo_io_w) AM_RANGE(0x1c00, 0x1fff) AM_RAM AM_BASE(m_tileram) AM_RANGE(0x2000, 0x3fff) AM_ROM ADDRESS_MAP_END diff --git a/src/mame/drivers/atvtrack.c b/src/mame/drivers/atvtrack.c index 24fc3a8cb16..49ac5e0e42a 100644 --- a/src/mame/drivers/atvtrack.c +++ b/src/mame/drivers/atvtrack.c @@ -72,6 +72,16 @@ public: atvtrack_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) { } + DECLARE_READ64_MEMBER(area1_r); + DECLARE_WRITE64_MEMBER(area1_w); + DECLARE_READ64_MEMBER(area2_r); + DECLARE_WRITE64_MEMBER(area2_w); + DECLARE_READ64_MEMBER(area3_r); + DECLARE_WRITE64_MEMBER(area3_w); + DECLARE_READ64_MEMBER(area4_r); + DECLARE_WRITE64_MEMBER(area4_w); + DECLARE_READ64_MEMBER(ioport_r); + DECLARE_WRITE64_MEMBER(ioport_w); }; static void logbinary(UINT32 data,int high=31,int low=0) @@ -104,7 +114,7 @@ static inline UINT32 decode64_32(offs_t offset64, UINT64 data, UINT64 mem_mask, return 0; } -static READ64_HANDLER( area1_r ) +READ64_MEMBER(atvtrack_state::area1_r) { UINT32 addr; @@ -117,7 +127,7 @@ static READ64_HANDLER( area1_r ) return -1; } -static WRITE64_HANDLER( area1_w ) +WRITE64_MEMBER(atvtrack_state::area1_w) { UINT32 addr, dat; //, old; @@ -127,7 +137,7 @@ static WRITE64_HANDLER( area1_w ) area1_data[addr] = dat; if (addr == (0x00020000-0x00020000)/4) { if (data & 4) { - device_execute_interface *exec = dynamic_cast<device_execute_interface *>(space->machine().device("subcpu")); + device_execute_interface *exec = dynamic_cast<device_execute_interface *>(machine().device("subcpu")); exec->set_input_line(INPUT_LINE_RESET, CLEAR_LINE); } } @@ -136,7 +146,7 @@ static WRITE64_HANDLER( area1_w ) logerror("\n"); } -static READ64_HANDLER( area2_r ) +READ64_MEMBER(atvtrack_state::area2_r) { UINT32 addr, dat; int c; @@ -159,7 +169,7 @@ static READ64_HANDLER( area2_r ) return 0; } -static WRITE64_HANDLER( area2_w ) +WRITE64_MEMBER(atvtrack_state::area2_w) { // UINT32 addr, dat; @@ -171,7 +181,7 @@ static WRITE64_HANDLER( area2_w ) // ; } -static READ64_HANDLER( area3_r ) +READ64_MEMBER(atvtrack_state::area3_r) { // UINT32 addr, dat; @@ -184,7 +194,7 @@ static READ64_HANDLER( area3_r ) return 0; } -static WRITE64_HANDLER( area3_w ) +WRITE64_MEMBER(atvtrack_state::area3_w) { UINT32 addr; //, dat; int c; @@ -217,7 +227,7 @@ static WRITE64_HANDLER( area3_w ) ; } -static READ64_HANDLER( area4_r ) +READ64_MEMBER(atvtrack_state::area4_r) { // UINT32 addr, dat; @@ -230,7 +240,7 @@ static READ64_HANDLER( area4_r ) return 0; } -static WRITE64_HANDLER( area4_w ) +WRITE64_MEMBER(atvtrack_state::area4_w) { UINT32 addr; //, dat; int c; @@ -253,11 +263,11 @@ static WRITE64_HANDLER( area4_w ) ; } -static READ64_HANDLER( ioport_r ) +READ64_MEMBER(atvtrack_state::ioport_r) { if (offset == SH4_IOPORT_16/8) { // much simplified way - if (strcmp(space->device().tag(), ":maincpu") == 0) + if (strcmp(space.device().tag(), ":maincpu") == 0) #ifndef SPECIALMODE return -1; // normal #else @@ -269,7 +279,7 @@ static READ64_HANDLER( ioport_r ) return 0; } -static WRITE64_HANDLER( ioport_w ) +WRITE64_MEMBER(atvtrack_state::ioport_w) { #ifdef SPECIALMODE UINT64 d; @@ -293,9 +303,9 @@ static WRITE64_HANDLER( ioport_w ) else d=0x11223344; if (cnt == 0) - sh4_dma_data(space->cpu,&dm); + sh4_dma_data(cpu,&dm); else - sh4_dma_data(space->cpu,&dm); + sh4_dma_data(cpu,&dm); cnt++; } #endif @@ -343,15 +353,15 @@ static MACHINE_RESET(atvtrack) static ADDRESS_MAP_START( atvtrack_main_map, AS_PROGRAM, 64, atvtrack_state ) AM_RANGE(0x00000000, 0x000003ff) AM_RAM AM_SHARE("sharedmem") - AM_RANGE(0x00020000, 0x00020007) AM_READWRITE_LEGACY(area1_r, area1_w) - AM_RANGE(0x14000000, 0x14000007) AM_READWRITE_LEGACY(area2_r, area2_w) // data - AM_RANGE(0x14100000, 0x14100007) AM_READWRITE_LEGACY(area3_r, area3_w) // command - AM_RANGE(0x14200000, 0x14200007) AM_READWRITE_LEGACY(area4_r, area4_w) // address + AM_RANGE(0x00020000, 0x00020007) AM_READWRITE(area1_r, area1_w) + AM_RANGE(0x14000000, 0x14000007) AM_READWRITE(area2_r, area2_w) // data + AM_RANGE(0x14100000, 0x14100007) AM_READWRITE(area3_r, area3_w) // command + AM_RANGE(0x14200000, 0x14200007) AM_READWRITE(area4_r, area4_w) // address AM_RANGE(0x0c000000, 0x0cffffff) AM_RAM ADDRESS_MAP_END static ADDRESS_MAP_START( atvtrack_main_port, AS_IO, 64, atvtrack_state ) - AM_RANGE(0x00, 0x1f) AM_READWRITE_LEGACY(ioport_r, ioport_w) + AM_RANGE(0x00, 0x1f) AM_READWRITE(ioport_r, ioport_w) ADDRESS_MAP_END static ADDRESS_MAP_START( atvtrack_sub_map, AS_PROGRAM, 64, atvtrack_state ) @@ -360,7 +370,7 @@ static ADDRESS_MAP_START( atvtrack_sub_map, AS_PROGRAM, 64, atvtrack_state ) ADDRESS_MAP_END static ADDRESS_MAP_START( atvtrack_sub_port, AS_IO, 64, atvtrack_state ) - /*AM_RANGE(0x00, 0x1f) AM_READWRITE_LEGACY(ioport_r, ioport_w) */ + /*AM_RANGE(0x00, 0x1f) AM_READWRITE(ioport_r, ioport_w) */ ADDRESS_MAP_END diff --git a/src/mame/drivers/avt.c b/src/mame/drivers/avt.c index cb252be4d85..480572f8d26 100644 --- a/src/mame/drivers/avt.c +++ b/src/mame/drivers/avt.c @@ -438,6 +438,7 @@ public: required_device<cpu_device> m_maincpu; required_device<mc6845_device> m_crtc; + DECLARE_WRITE8_MEMBER(debug_w); }; #define mc6845_h_char_total (state->m_crtc_vreg[0]) @@ -581,7 +582,7 @@ static PALETTE_INIT( avt ) * Read / Write Handlers * **********************************************/ -//static WRITE8_HANDLER( debug_w ) +//WRITE8_MEMBER(avt_state::debug_w) //{ // popmessage("written : %02X", data); //} diff --git a/src/mame/drivers/beaminv.c b/src/mame/drivers/beaminv.c index aa00d7846fb..371648f791c 100644 --- a/src/mame/drivers/beaminv.c +++ b/src/mame/drivers/beaminv.c @@ -74,6 +74,9 @@ public: /* devices */ device_t *m_maincpu; + DECLARE_READ8_MEMBER(v128_r); + DECLARE_WRITE8_MEMBER(controller_select_w); + DECLARE_READ8_MEMBER(controller_r); }; @@ -192,9 +195,9 @@ static SCREEN_UPDATE_RGB32( beaminv ) } -static READ8_HANDLER( v128_r ) +READ8_MEMBER(beaminv_state::v128_r) { - return (space->machine().primary_screen->vpos() >> 7) & 0x01; + return (machine().primary_screen->vpos() >> 7) & 0x01; } @@ -209,18 +212,16 @@ static READ8_HANDLER( v128_r ) #define P2_CONTROL_PORT_TAG ("CONTP2") -static WRITE8_HANDLER( controller_select_w ) +WRITE8_MEMBER(beaminv_state::controller_select_w) { - beaminv_state *state = space->machine().driver_data<beaminv_state>(); /* 0x01 (player 1) or 0x02 (player 2) */ - state->m_controller_select = data; + m_controller_select = data; } -static READ8_HANDLER( controller_r ) +READ8_MEMBER(beaminv_state::controller_r) { - beaminv_state *state = space->machine().driver_data<beaminv_state>(); - return input_port_read(space->machine(), (state->m_controller_select == 1) ? P1_CONTROL_PORT_TAG : P2_CONTROL_PORT_TAG); + return input_port_read(machine(), (m_controller_select == 1) ? P1_CONTROL_PORT_TAG : P2_CONTROL_PORT_TAG); } @@ -236,8 +237,8 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, beaminv_state ) AM_RANGE(0x1800, 0x1fff) AM_RAM AM_RANGE(0x2400, 0x2400) AM_MIRROR(0x03ff) AM_READ_PORT("DSW") AM_RANGE(0x2800, 0x2800) AM_MIRROR(0x03ff) AM_READ_PORT("INPUTS") - AM_RANGE(0x3400, 0x3400) AM_MIRROR(0x03ff) AM_READ_LEGACY(controller_r) - AM_RANGE(0x3800, 0x3800) AM_MIRROR(0x03ff) AM_READ_LEGACY(v128_r) + AM_RANGE(0x3400, 0x3400) AM_MIRROR(0x03ff) AM_READ(controller_r) + AM_RANGE(0x3800, 0x3800) AM_MIRROR(0x03ff) AM_READ(v128_r) AM_RANGE(0x4000, 0x5fff) AM_RAM AM_BASE_SIZE(m_videoram, m_videoram_size) ADDRESS_MAP_END @@ -251,7 +252,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( main_io_map, AS_IO, 8, beaminv_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE_LEGACY(controller_select_w) /* to be confirmed */ + AM_RANGE(0x00, 0x00) AM_WRITE(controller_select_w) /* to be confirmed */ ADDRESS_MAP_END diff --git a/src/mame/drivers/bestleag.c b/src/mame/drivers/bestleag.c index 0edf9c89d67..d500642fe8c 100644 --- a/src/mame/drivers/bestleag.c +++ b/src/mame/drivers/bestleag.c @@ -38,6 +38,9 @@ public: tilemap_t *m_fg_tilemap; UINT16 *m_spriteram; size_t m_spriteram_size; + DECLARE_WRITE16_MEMBER(bestleag_txram_w); + DECLARE_WRITE16_MEMBER(bestleag_bgram_w); + DECLARE_WRITE16_MEMBER(bestleag_fgram_w); }; @@ -197,25 +200,22 @@ static SCREEN_UPDATE_IND16(bestleaw) return 0; } -static WRITE16_HANDLER( bestleag_txram_w ) +WRITE16_MEMBER(bestleag_state::bestleag_txram_w) { - bestleag_state *state = space->machine().driver_data<bestleag_state>(); - state->m_txram[offset] = data; - state->m_tx_tilemap->mark_tile_dirty(offset); + m_txram[offset] = data; + m_tx_tilemap->mark_tile_dirty(offset); } -static WRITE16_HANDLER( bestleag_bgram_w ) +WRITE16_MEMBER(bestleag_state::bestleag_bgram_w) { - bestleag_state *state = space->machine().driver_data<bestleag_state>(); - state->m_bgram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_bgram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } -static WRITE16_HANDLER( bestleag_fgram_w ) +WRITE16_MEMBER(bestleag_state::bestleag_fgram_w) { - bestleag_state *state = space->machine().driver_data<bestleag_state>(); - state->m_fgram[offset] = data; - state->m_fg_tilemap->mark_tile_dirty(offset); + m_fgram[offset] = data; + m_fg_tilemap->mark_tile_dirty(offset); } static WRITE16_DEVICE_HANDLER( oki_bank_w ) @@ -230,9 +230,9 @@ static WRITE16_DEVICE_HANDLER( oki_bank_w ) static ADDRESS_MAP_START( bestleag_map, AS_PROGRAM, 16, bestleag_state ) AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_RANGE(0x0d2000, 0x0d3fff) AM_NOP // left over from the original game (only read / written in memory test) - AM_RANGE(0x0e0000, 0x0e3fff) AM_RAM_WRITE_LEGACY(bestleag_bgram_w) AM_BASE(m_bgram) - AM_RANGE(0x0e8000, 0x0ebfff) AM_RAM_WRITE_LEGACY(bestleag_fgram_w) AM_BASE(m_fgram) - AM_RANGE(0x0f0000, 0x0f3fff) AM_RAM_WRITE_LEGACY(bestleag_txram_w) AM_BASE(m_txram) + AM_RANGE(0x0e0000, 0x0e3fff) AM_RAM_WRITE(bestleag_bgram_w) AM_BASE(m_bgram) + AM_RANGE(0x0e8000, 0x0ebfff) AM_RAM_WRITE(bestleag_fgram_w) AM_BASE(m_fgram) + AM_RANGE(0x0f0000, 0x0f3fff) AM_RAM_WRITE(bestleag_txram_w) AM_BASE(m_txram) AM_RANGE(0x0f8000, 0x0f800b) AM_RAM AM_BASE(m_vregs) AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE_LEGACY(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x200000, 0x200fff) AM_RAM AM_BASE_SIZE(m_spriteram, m_spriteram_size) diff --git a/src/mame/drivers/bfcobra.c b/src/mame/drivers/bfcobra.c index 9cf1bcfe90b..38c182cd9e5 100644 --- a/src/mame/drivers/bfcobra.c +++ b/src/mame/drivers/bfcobra.c @@ -271,6 +271,19 @@ public: struct blitter_t m_blitter; struct ramdac_t m_ramdac; struct fdc_t m_fdc; + DECLARE_READ8_MEMBER(ramdac_r); + DECLARE_WRITE8_MEMBER(ramdac_w); + DECLARE_READ8_MEMBER(chipset_r); + DECLARE_WRITE8_MEMBER(chipset_w); + DECLARE_WRITE8_MEMBER(rombank_w); + DECLARE_READ8_MEMBER(fdctrl_r); + DECLARE_READ8_MEMBER(fddata_r); + DECLARE_WRITE8_MEMBER(fdctrl_w); + DECLARE_READ8_MEMBER(int_latch_r); + DECLARE_READ8_MEMBER(meter_r); + DECLARE_WRITE8_MEMBER(meter_w); + DECLARE_READ8_MEMBER(latch_r); + DECLARE_WRITE8_MEMBER(latch_w); }; @@ -718,10 +731,9 @@ static void RunBlit(address_space *space) } -static READ8_HANDLER( ramdac_r ) +READ8_MEMBER(bfcobra_state::ramdac_r) { - bfcobra_state *state = space->machine().driver_data<bfcobra_state>(); - struct ramdac_t &ramdac = state->m_ramdac; + struct ramdac_t &ramdac = m_ramdac; UINT8 val = 0xff; switch (offset & 3) @@ -733,7 +745,7 @@ static READ8_HANDLER( ramdac_r ) if (*count == 0) { rgb_t color; - color = palette_get_color(space->machine(), ramdac.addr_r); + color = palette_get_color(machine(), ramdac.addr_r); ramdac.color_r[0] = RGB_RED(color); ramdac.color_r[1] = RGB_GREEN(color); @@ -754,17 +766,16 @@ static READ8_HANDLER( ramdac_r ) } default: { - mame_printf_debug("Unhandled RAMDAC read (PC:%.4x)\n", cpu_get_previouspc(&space->device())); + mame_printf_debug("Unhandled RAMDAC read (PC:%.4x)\n", cpu_get_previouspc(&space.device())); } } return val; } -static WRITE8_HANDLER( ramdac_w ) +WRITE8_MEMBER(bfcobra_state::ramdac_w) { - bfcobra_state *state = space->machine().driver_data<bfcobra_state>(); - struct ramdac_t &ramdac = state->m_ramdac; + struct ramdac_t &ramdac = m_ramdac; switch (offset & 3) { @@ -779,7 +790,7 @@ static WRITE8_HANDLER( ramdac_w ) ramdac.color_w[ramdac.count_w] = pal6bit(data); if (++ramdac.count_w == 3) { - palette_set_color_rgb(space->machine(), ramdac.addr_w, ramdac.color_w[0], ramdac.color_w[1], ramdac.color_w[2]); + palette_set_color_rgb(machine(), ramdac.addr_w, ramdac.color_w[0], ramdac.color_w[1], ramdac.color_w[2]); ramdac.count_w = 0; ramdac.addr_w++; } @@ -859,9 +870,8 @@ static void update_irqs(running_machine &machine) } } -static READ8_HANDLER( chipset_r ) +READ8_MEMBER(bfcobra_state::chipset_r) { - bfcobra_state *state = space->machine().driver_data<bfcobra_state>(); UINT8 val = 0xff; switch(offset) @@ -870,22 +880,22 @@ static READ8_HANDLER( chipset_r ) case 2: case 3: { - val = state->m_bank_data[offset]; + val = m_bank_data[offset]; break; } case 6: { /* TODO */ - val = state->m_vblank_irq << 4; + val = m_vblank_irq << 4; break; } case 7: { - state->m_vblank_irq = 0; + m_vblank_irq = 0; val = 0x1; /* TODO */ - update_irqs(space->machine()); + update_irqs(machine()); break; } case 0x1C: @@ -897,26 +907,25 @@ static READ8_HANDLER( chipset_r ) case 0x20: { /* Seems correct - used during RLE pic decoding */ - val = state->m_blitter.dest.addr0; + val = m_blitter.dest.addr0; break; } case 0x22: { - val = 0x40 | input_port_read(space->machine(), "JOYSTICK"); + val = 0x40 | input_port_read(machine(), "JOYSTICK"); break; } default: { - mame_printf_debug("Flare One unknown read: 0x%.2x (PC:0x%.4x)\n", offset, cpu_get_previouspc(&space->device())); + mame_printf_debug("Flare One unknown read: 0x%.2x (PC:0x%.4x)\n", offset, cpu_get_previouspc(&space.device())); } } return val; } -static WRITE8_HANDLER( chipset_w ) +WRITE8_MEMBER(bfcobra_state::chipset_w) { - bfcobra_state *state = space->machine().driver_data<bfcobra_state>(); switch (offset) { case 0x01: @@ -924,68 +933,68 @@ static WRITE8_HANDLER( chipset_w ) case 0x03: { if (data > 0x3f) - popmessage("%x: Unusual bank access (%x)\n", cpu_get_previouspc(&space->device()), data); + popmessage("%x: Unusual bank access (%x)\n", cpu_get_previouspc(&space.device()), data); data &= 0x3f; - state->m_bank_data[offset] = data; - z80_bank(space->machine(), offset, data); + m_bank_data[offset] = data; + z80_bank(machine(), offset, data); break; } case 0x08: { - state->m_flip_8 = data; + m_flip_8 = data; break; } case 9: - state->m_videomode = data; + m_videomode = data; break; case 0x0B: { - state->m_h_scroll = data; + m_h_scroll = data; break; } case 0x0C: { - state->m_v_scroll = data; + m_v_scroll = data; break; } case 0x0E: { - state->m_col4bit[5] = data; - state->m_col3bit[5] = data; - state->m_col3bit[5 + 8] = data; + m_col4bit[5] = data; + m_col3bit[5] = data; + m_col3bit[5 + 8] = data; break; } case 0x0f: { - state->m_col4bit[6] = data; - state->m_col3bit[6] = data; - state->m_col3bit[6 + 8] = data; + m_col4bit[6] = data; + m_col3bit[6] = data; + m_col3bit[6 + 8] = data; break; } case 0x18: { - state->m_blitter.program.addr0 = data; + m_blitter.program.addr0 = data; break; } case 0x19: { - state->m_blitter.program.addr1 = data; + m_blitter.program.addr1 = data; break; } case 0x1A: { - state->m_blitter.program.addr2 = data; + m_blitter.program.addr2 = data; break; } case 0x20: { - state->m_blitter.command = data; + m_blitter.command = data; if (data & CMD_RUN) - RunBlit(space); + RunBlit(&space); else mame_printf_debug("Blitter stopped by IO.\n"); @@ -993,12 +1002,12 @@ static WRITE8_HANDLER( chipset_w ) } case 0x22: { - state->m_flip_22 = data; + m_flip_22 = data; break; } default: { - mame_printf_debug("Flare One unknown write: 0x%.2x with 0x%.2x (PC:0x%.4x)\n", offset, data, cpu_get_previouspc(&space->device())); + mame_printf_debug("Flare One unknown write: 0x%.2x with 0x%.2x (PC:0x%.4x)\n", offset, data, cpu_get_previouspc(&space.device())); } } } @@ -1024,13 +1033,12 @@ INLINE void z80_bank(running_machine &machine, int num, int data) } } -static WRITE8_HANDLER( rombank_w ) +WRITE8_MEMBER(bfcobra_state::rombank_w) { - bfcobra_state *state = space->machine().driver_data<bfcobra_state>(); - state->m_bank_data[0] = data; - z80_bank(space->machine(), 1, state->m_bank_data[1]); - z80_bank(space->machine(), 2, state->m_bank_data[2]); - z80_bank(space->machine(), 3, state->m_bank_data[3]); + m_bank_data[0] = data; + z80_bank(machine(), 1, m_bank_data[1]); + z80_bank(machine(), 2, m_bank_data[2]); + z80_bank(machine(), 3, m_bank_data[3]); } @@ -1088,20 +1096,18 @@ static void reset_fdc(running_machine &machine) state->m_fdc.phase = COMMAND; } -static READ8_HANDLER( fdctrl_r ) +READ8_MEMBER(bfcobra_state::fdctrl_r) { - bfcobra_state *state = space->machine().driver_data<bfcobra_state>(); UINT8 val = 0; - val = state->m_fdc.MSR; + val = m_fdc.MSR; return val; } -static READ8_HANDLER( fddata_r ) +READ8_MEMBER(bfcobra_state::fddata_r) { - bfcobra_state *state = space->machine().driver_data<bfcobra_state>(); - struct fdc_t &fdc = state->m_fdc; + struct fdc_t &fdc = m_fdc; #define BPS 1024 #define SPT 10 #define BPT 1024*10 @@ -1130,7 +1136,7 @@ static READ8_HANDLER( fddata_r ) } fdc.offset = (BPT * fdc.track*2) + (fdc.side ? BPT : 0) + (BPS * (fdc.sector-1)) + fdc.byte_pos++; - val = *(space->machine().region("user2")->base() + fdc.offset); + val = *(machine().region("user2")->base() + fdc.offset); /* Move on to next sector? */ if (fdc.byte_pos == 1024) @@ -1172,10 +1178,9 @@ static READ8_HANDLER( fddata_r ) return val; } -static WRITE8_HANDLER( fdctrl_w ) +WRITE8_MEMBER(bfcobra_state::fdctrl_w) { - bfcobra_state *state = space->machine().driver_data<bfcobra_state>(); - struct fdc_t &fdc = state->m_fdc; + struct fdc_t &fdc = m_fdc; switch (fdc.phase) { case COMMAND: @@ -1334,15 +1339,15 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( z80_io_map, AS_IO, 8, bfcobra_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x23) AM_READWRITE_LEGACY(chipset_r, chipset_w) + AM_RANGE(0x00, 0x23) AM_READWRITE(chipset_r, chipset_w) AM_RANGE(0x24, 0x24) AM_DEVWRITE("acia6850_0", acia6850_device, control_write) AM_RANGE(0x25, 0x25) AM_DEVWRITE("acia6850_0", acia6850_device, data_write) AM_RANGE(0x26, 0x26) AM_DEVREAD("acia6850_0", acia6850_device, status_read) AM_RANGE(0x27, 0x27) AM_DEVREAD("acia6850_0", acia6850_device, data_read) - AM_RANGE(0x30, 0x30) AM_READ_LEGACY(fdctrl_r) - AM_RANGE(0x31, 0x31) AM_READWRITE_LEGACY(fddata_r, fdctrl_w) - AM_RANGE(0x40, 0x40) AM_WRITE_LEGACY(rombank_w) - AM_RANGE(0x50, 0x53) AM_READWRITE_LEGACY(ramdac_r, ramdac_w) + AM_RANGE(0x30, 0x30) AM_READ(fdctrl_r) + AM_RANGE(0x31, 0x31) AM_READWRITE(fddata_r, fdctrl_w) + AM_RANGE(0x40, 0x40) AM_WRITE(rombank_w) + AM_RANGE(0x50, 0x53) AM_READWRITE(ramdac_r, ramdac_w) ADDRESS_MAP_END @@ -1368,26 +1373,24 @@ ADDRESS_MAP_END ***************************************************************************/ /* TODO */ -static READ8_HANDLER( int_latch_r ) +READ8_MEMBER(bfcobra_state::int_latch_r) { return 2 | 1; } /* TODO */ -static READ8_HANDLER( meter_r ) +READ8_MEMBER(bfcobra_state::meter_r) { - bfcobra_state *state = space->machine().driver_data<bfcobra_state>(); - return state->m_meter_latch; + return m_meter_latch; } /* TODO: This is borrowed from Scorpion 1 */ -static WRITE8_HANDLER( meter_w ) +WRITE8_MEMBER(bfcobra_state::meter_w) { - bfcobra_state *state = space->machine().driver_data<bfcobra_state>(); int i; - int changed = state->m_meter_latch ^ data; + int changed = m_meter_latch ^ data; - state->m_meter_latch = data; + m_meter_latch = data; /* When a meter is triggered, the current drawn is sensed. If a meter @@ -1398,30 +1401,28 @@ static WRITE8_HANDLER( meter_w ) if (changed & (1 << i)) { MechMtr_update(i, data & (1 << i) ); - generic_pulse_irq_line(&space->device(), M6809_FIRQ_LINE, 1); + generic_pulse_irq_line(&space.device(), M6809_FIRQ_LINE, 1); } } } /* TODO */ -static READ8_HANDLER( latch_r ) +READ8_MEMBER(bfcobra_state::latch_r) { - bfcobra_state *state = space->machine().driver_data<bfcobra_state>(); - return state->m_mux_input; + return m_mux_input; } -static WRITE8_HANDLER( latch_w ) +WRITE8_MEMBER(bfcobra_state::latch_w) { - bfcobra_state *state = space->machine().driver_data<bfcobra_state>(); /* TODO: This is borrowed from Scorpion 1 */ switch(offset) { case 0: { - int changed = state->m_mux_outputlatch ^ data; + int changed = m_mux_outputlatch ^ data; static const char *const port[] = { "STROBE0", "STROBE1", "STROBE2", "STROBE3", "STROBE4", "STROBE5", "STROBE6", "STROBE7" }; - state->m_mux_outputlatch = data; + m_mux_outputlatch = data; /* Clock has changed */ if (changed & 0x08) @@ -1430,7 +1431,7 @@ static WRITE8_HANDLER( latch_w ) /* Clock is low */ if (!(data & 0x08)) - state->m_mux_input = input_port_read(space->machine(), port[input_strobe]); + m_mux_input = input_port_read(machine(), port[input_strobe]); } break; } @@ -1463,10 +1464,10 @@ static ADDRESS_MAP_START( m6809_prog_map, AS_PROGRAM, 8, bfcobra_state ) AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("nvram") AM_RANGE(0x2000, 0x2000) AM_RAM // W 'B', 6F AM_RANGE(0x2200, 0x2200) AM_RAM // W 'F' - AM_RANGE(0x2600, 0x2600) AM_READWRITE_LEGACY(meter_r, meter_w) + AM_RANGE(0x2600, 0x2600) AM_READWRITE(meter_r, meter_w) AM_RANGE(0x2800, 0x2800) AM_RAM // W - AM_RANGE(0x2A00, 0x2A02) AM_READWRITE_LEGACY(latch_r, latch_w) - AM_RANGE(0x2E00, 0x2E00) AM_READ_LEGACY(int_latch_r) + AM_RANGE(0x2A00, 0x2A02) AM_READWRITE(latch_r, latch_w) + AM_RANGE(0x2E00, 0x2E00) AM_READ(int_latch_r) AM_RANGE(0x3001, 0x3001) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_w) AM_RANGE(0x3201, 0x3201) AM_DEVWRITE_LEGACY("aysnd", ay8910_address_w) AM_RANGE(0x3404, 0x3404) AM_DEVREADWRITE("acia6850_1", acia6850_device, status_read, control_write) diff --git a/src/mame/drivers/bfm_sc1.c b/src/mame/drivers/bfm_sc1.c index 5c678ebfa9f..51308b79ad2 100644 --- a/src/mame/drivers/bfm_sc1.c +++ b/src/mame/drivers/bfm_sc1.c @@ -128,6 +128,37 @@ public: UINT8 m_codec_data[256]; int m_defaultbank; + DECLARE_WRITE8_MEMBER(bankswitch_w); + DECLARE_READ8_MEMBER(irqlatch_r); + DECLARE_WRITE8_MEMBER(reel12_w); + DECLARE_WRITE8_MEMBER(reel34_w); + DECLARE_WRITE8_MEMBER(reel56_w); + DECLARE_WRITE8_MEMBER(mmtr_w); + DECLARE_READ8_MEMBER(mmtr_r); + DECLARE_READ8_MEMBER(dipcoin_r); + DECLARE_WRITE8_MEMBER(vfd_w); + DECLARE_READ8_MEMBER(mux1latch_r); + DECLARE_READ8_MEMBER(mux1datlo_r); + DECLARE_READ8_MEMBER(mux1dathi_r); + DECLARE_WRITE8_MEMBER(mux1latch_w); + DECLARE_WRITE8_MEMBER(mux1datlo_w); + DECLARE_WRITE8_MEMBER(mux1dathi_w); + DECLARE_READ8_MEMBER(mux2latch_r); + DECLARE_READ8_MEMBER(mux2datlo_r); + DECLARE_READ8_MEMBER(mux2dathi_r); + DECLARE_WRITE8_MEMBER(mux2latch_w); + DECLARE_WRITE8_MEMBER(mux2datlo_w); + DECLARE_WRITE8_MEMBER(mux2dathi_w); + DECLARE_WRITE8_MEMBER(aciactrl_w); + DECLARE_WRITE8_MEMBER(aciadata_w); + DECLARE_READ8_MEMBER(aciastat_r); + DECLARE_READ8_MEMBER(aciadata_r); + DECLARE_WRITE8_MEMBER(triac_w); + DECLARE_READ8_MEMBER(triac_r); + DECLARE_WRITE8_MEMBER(vid_uart_tx_w); + DECLARE_WRITE8_MEMBER(vid_uart_ctrl_w); + DECLARE_READ8_MEMBER(vid_uart_rx_r); + DECLARE_READ8_MEMBER(vid_uart_ctrl_r); }; #define VFD_RESET 0x20 @@ -158,10 +189,10 @@ static int Scorpion1_GetSwitchState(bfm_sc1_state *drvstate, int strobe, int dat #endif /////////////////////////////////////////////////////////////////////////// -static WRITE8_HANDLER( bankswitch_w ) +WRITE8_MEMBER(bfm_sc1_state::bankswitch_w) { // printf("bankswitch %02x\n", data); - memory_set_bank(space->machine(),"bank1",data & 0x03); + memory_set_bank(machine(),"bank1",data & 0x03); } /////////////////////////////////////////////////////////////////////////// @@ -182,34 +213,32 @@ static INTERRUPT_GEN( timer_irq ) /////////////////////////////////////////////////////////////////////////// -static READ8_HANDLER( irqlatch_r ) +READ8_MEMBER(bfm_sc1_state::irqlatch_r) { - bfm_sc1_state *state = space->machine().driver_data<bfm_sc1_state>(); - int result = state->m_irq_status | 0x02; + int result = m_irq_status | 0x02; - state->m_irq_status = 0; + m_irq_status = 0; return result; } /////////////////////////////////////////////////////////////////////////// -static WRITE8_HANDLER( reel12_w ) +WRITE8_MEMBER(bfm_sc1_state::reel12_w) { - bfm_sc1_state *state = space->machine().driver_data<bfm_sc1_state>(); - if ( state->m_locked & 0x01 ) + if ( m_locked & 0x01 ) { // hardware is still locked, - if ( data == 0x46 ) state->m_locked &= ~0x01; + if ( data == 0x46 ) m_locked &= ~0x01; } else { - if ( stepper_update(0, (data>>4)&0x0f) ) state->m_reel_changed |= 0x01; - if ( stepper_update(1, data&0x0f ) ) state->m_reel_changed |= 0x02; + if ( stepper_update(0, (data>>4)&0x0f) ) m_reel_changed |= 0x01; + if ( stepper_update(1, data&0x0f ) ) m_reel_changed |= 0x02; - if ( stepper_optic_state(0) ) state->m_optic_pattern |= 0x01; - else state->m_optic_pattern &= ~0x01; - if ( stepper_optic_state(1) ) state->m_optic_pattern |= 0x02; - else state->m_optic_pattern &= ~0x02; + if ( stepper_optic_state(0) ) m_optic_pattern |= 0x01; + else m_optic_pattern &= ~0x01; + if ( stepper_optic_state(1) ) m_optic_pattern |= 0x02; + else m_optic_pattern &= ~0x02; } awp_draw_reel(0); awp_draw_reel(1); @@ -217,22 +246,21 @@ static WRITE8_HANDLER( reel12_w ) /////////////////////////////////////////////////////////////////////////// -static WRITE8_HANDLER( reel34_w ) +WRITE8_MEMBER(bfm_sc1_state::reel34_w) { - bfm_sc1_state *state = space->machine().driver_data<bfm_sc1_state>(); - if ( state->m_locked & 0x02 ) + if ( m_locked & 0x02 ) { // hardware is still locked, - if ( data == 0x42 ) state->m_locked &= ~0x02; + if ( data == 0x42 ) m_locked &= ~0x02; } else { - if ( stepper_update(2, (data>>4)&0x0f) ) state->m_reel_changed |= 0x04; - if ( stepper_update(3, data&0x0f ) ) state->m_reel_changed |= 0x08; + if ( stepper_update(2, (data>>4)&0x0f) ) m_reel_changed |= 0x04; + if ( stepper_update(3, data&0x0f ) ) m_reel_changed |= 0x08; - if ( stepper_optic_state(2) ) state->m_optic_pattern |= 0x04; - else state->m_optic_pattern &= ~0x04; - if ( stepper_optic_state(3) ) state->m_optic_pattern |= 0x08; - else state->m_optic_pattern &= ~0x08; + if ( stepper_optic_state(2) ) m_optic_pattern |= 0x04; + else m_optic_pattern &= ~0x04; + if ( stepper_optic_state(3) ) m_optic_pattern |= 0x08; + else m_optic_pattern &= ~0x08; } awp_draw_reel(2); awp_draw_reel(3); @@ -240,16 +268,15 @@ static WRITE8_HANDLER( reel34_w ) /////////////////////////////////////////////////////////////////////////// -static WRITE8_HANDLER( reel56_w ) +WRITE8_MEMBER(bfm_sc1_state::reel56_w) { - bfm_sc1_state *state = space->machine().driver_data<bfm_sc1_state>(); - if ( stepper_update(4, (data>>4)&0x0f) ) state->m_reel_changed |= 0x10; - if ( stepper_update(5, data&0x0f ) ) state->m_reel_changed |= 0x20; - - if ( stepper_optic_state(4) ) state->m_optic_pattern |= 0x10; - else state->m_optic_pattern &= ~0x10; - if ( stepper_optic_state(5) ) state->m_optic_pattern |= 0x20; - else state->m_optic_pattern &= ~0x20; + if ( stepper_update(4, (data>>4)&0x0f) ) m_reel_changed |= 0x10; + if ( stepper_update(5, data&0x0f ) ) m_reel_changed |= 0x20; + + if ( stepper_optic_state(4) ) m_optic_pattern |= 0x10; + else m_optic_pattern &= ~0x10; + if ( stepper_optic_state(5) ) m_optic_pattern |= 0x20; + else m_optic_pattern &= ~0x20; awp_draw_reel(5); awp_draw_reel(6); } @@ -258,26 +285,25 @@ static WRITE8_HANDLER( reel56_w ) // mechanical meters ////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// -static WRITE8_HANDLER( mmtr_w ) +WRITE8_MEMBER(bfm_sc1_state::mmtr_w) { - bfm_sc1_state *state = space->machine().driver_data<bfm_sc1_state>(); int i; - if ( state->m_locked & 0x04 ) + if ( m_locked & 0x04 ) { // hardware is still locked, - state->m_locked &= ~0x04; + m_locked &= ~0x04; } else { - int changed = state->m_mmtr_latch ^ data; + int changed = m_mmtr_latch ^ data; - state->m_mmtr_latch = data; + m_mmtr_latch = data; for (i=0; i<8; i++) { if ( changed & (1 << i) ) { MechMtr_update(i, data & (1 << i) ); - generic_pulse_irq_line(space->machine().device("maincpu"), M6809_FIRQ_LINE, 1); + generic_pulse_irq_line(machine().device("maincpu"), M6809_FIRQ_LINE, 1); } } } @@ -285,17 +311,16 @@ static WRITE8_HANDLER( mmtr_w ) /////////////////////////////////////////////////////////////////////////// -static READ8_HANDLER( mmtr_r ) +READ8_MEMBER(bfm_sc1_state::mmtr_r) { - bfm_sc1_state *state = space->machine().driver_data<bfm_sc1_state>(); - return state->m_mmtr_latch; + return m_mmtr_latch; } /////////////////////////////////////////////////////////////////////////// -static READ8_HANDLER( dipcoin_r ) +READ8_MEMBER(bfm_sc1_state::dipcoin_r) { - return input_port_read(space->machine(),"STROBE0") & 0x1F; + return input_port_read(machine(),"STROBE0") & 0x1F; } /////////////////////////////////////////////////////////////////////////// @@ -307,12 +332,11 @@ static READ8_DEVICE_HANDLER( nec_r ) /////////////////////////////////////////////////////////////////////////// -static WRITE8_HANDLER( vfd_w ) +WRITE8_MEMBER(bfm_sc1_state::vfd_w) { - bfm_sc1_state *state = space->machine().driver_data<bfm_sc1_state>(); - int changed = state->m_vfd_latch ^ data; + int changed = m_vfd_latch ^ data; - state->m_vfd_latch = data; + m_vfd_latch = data; if ( changed ) { @@ -369,34 +393,32 @@ static const UINT8 BFM_strcnv[] = ///////////////////////////////////////////////////////////////////////////////////// -static READ8_HANDLER( mux1latch_r ) +READ8_MEMBER(bfm_sc1_state::mux1latch_r) { - bfm_sc1_state *state = space->machine().driver_data<bfm_sc1_state>(); - return state->m_mux1_input; + return m_mux1_input; } ///////////////////////////////////////////////////////////////////////////////////// -static READ8_HANDLER( mux1datlo_r ) +READ8_MEMBER(bfm_sc1_state::mux1datlo_r) { return 0; } ///////////////////////////////////////////////////////////////////////////////////// -static READ8_HANDLER( mux1dathi_r ) +READ8_MEMBER(bfm_sc1_state::mux1dathi_r) { return 0; } ///////////////////////////////////////////////////////////////////////////////////// -static WRITE8_HANDLER( mux1latch_w ) +WRITE8_MEMBER(bfm_sc1_state::mux1latch_w) { - bfm_sc1_state *state = space->machine().driver_data<bfm_sc1_state>(); - int changed = state->m_mux1_outputlatch ^ data; + int changed = m_mux1_outputlatch ^ data; static const char *const portnames[] = { "STROBE0", "STROBE1", "STROBE2", "STROBE3", "STROBE4", "STROBE5", "STROBE6", "STROBE7" }; - state->m_mux1_outputlatch = data; + m_mux1_outputlatch = data; if ( changed & 0x08 ) { // clock changed @@ -412,8 +434,8 @@ static WRITE8_HANDLER( mux1latch_w ) for ( i = 0; i < 8; i++ ) { - output_set_lamp_value(BFM_strcnv[offset ], (state->m_mux1_datalo & pattern?1:0) ); - output_set_lamp_value(BFM_strcnv[offset+8], (state->m_mux1_datahi & pattern?1:0) ); + output_set_lamp_value(BFM_strcnv[offset ], (m_mux1_datalo & pattern?1:0) ); + output_set_lamp_value(BFM_strcnv[offset+8], (m_mux1_datahi & pattern?1:0) ); pattern<<=1; offset++; } @@ -422,59 +444,55 @@ static WRITE8_HANDLER( mux1latch_w ) if ( !(data & 0x08) ) { - state->m_sc1_Inputs[ input_strobe ] = input_port_read(space->machine(),portnames[input_strobe]); + m_sc1_Inputs[ input_strobe ] = input_port_read(machine(),portnames[input_strobe]); - state->m_mux1_input = state->m_sc1_Inputs[ input_strobe ]; + m_mux1_input = m_sc1_Inputs[ input_strobe ]; } } } ///////////////////////////////////////////////////////////////////////////////////// -static WRITE8_HANDLER( mux1datlo_w ) +WRITE8_MEMBER(bfm_sc1_state::mux1datlo_w) { - bfm_sc1_state *state = space->machine().driver_data<bfm_sc1_state>(); - state->m_mux1_datalo = data; + m_mux1_datalo = data; } ///////////////////////////////////////////////////////////////////////////////////// -static WRITE8_HANDLER( mux1dathi_w ) +WRITE8_MEMBER(bfm_sc1_state::mux1dathi_w) { - bfm_sc1_state *state = space->machine().driver_data<bfm_sc1_state>(); - state->m_mux1_datahi = data; + m_mux1_datahi = data; } ///////////////////////////////////////////////////////////////////////////////////// -static READ8_HANDLER( mux2latch_r ) +READ8_MEMBER(bfm_sc1_state::mux2latch_r) { - bfm_sc1_state *state = space->machine().driver_data<bfm_sc1_state>(); - return state->m_mux2_input; + return m_mux2_input; } ///////////////////////////////////////////////////////////////////////////////////// -static READ8_HANDLER( mux2datlo_r ) +READ8_MEMBER(bfm_sc1_state::mux2datlo_r) { return 0; } ///////////////////////////////////////////////////////////////////////////////////// -static READ8_HANDLER( mux2dathi_r ) +READ8_MEMBER(bfm_sc1_state::mux2dathi_r) { return 0; } ///////////////////////////////////////////////////////////////////////////////////// -static WRITE8_HANDLER( mux2latch_w ) +WRITE8_MEMBER(bfm_sc1_state::mux2latch_w) { - bfm_sc1_state *state = space->machine().driver_data<bfm_sc1_state>(); - int changed = state->m_mux2_outputlatch ^ data; + int changed = m_mux2_outputlatch ^ data; - state->m_mux2_outputlatch = data; + m_mux2_outputlatch = data; if ( changed & 0x08 ) { // clock changed @@ -489,8 +507,8 @@ static WRITE8_HANDLER( mux2latch_w ) for ( i = 0; i < 8; i++ ) { - output_set_lamp_value(BFM_strcnv[offset ], (state->m_mux2_datalo & pattern?1:0) ); - output_set_lamp_value(BFM_strcnv[offset+8], (state->m_mux2_datahi & pattern?1:0) ); + output_set_lamp_value(BFM_strcnv[offset ], (m_mux2_datalo & pattern?1:0) ); + output_set_lamp_value(BFM_strcnv[offset+8], (m_mux2_datahi & pattern?1:0) ); pattern<<=1; offset++; } @@ -498,52 +516,49 @@ static WRITE8_HANDLER( mux2latch_w ) if ( !(data & 0x08) ) { - state->m_mux2_input = 0x3F ^ state->m_optic_pattern; + m_mux2_input = 0x3F ^ m_optic_pattern; } } } ///////////////////////////////////////////////////////////////////////////////////// -static WRITE8_HANDLER( mux2datlo_w ) +WRITE8_MEMBER(bfm_sc1_state::mux2datlo_w) { - bfm_sc1_state *state = space->machine().driver_data<bfm_sc1_state>(); - state->m_mux2_datalo = data; + m_mux2_datalo = data; } ///////////////////////////////////////////////////////////////////////////////////// -static WRITE8_HANDLER( mux2dathi_w ) +WRITE8_MEMBER(bfm_sc1_state::mux2dathi_w) { - bfm_sc1_state *state = space->machine().driver_data<bfm_sc1_state>(); - state->m_mux2_datahi = data; + m_mux2_datahi = data; } ///////////////////////////////////////////////////////////////////////////////////// // serial port ////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////// -static WRITE8_HANDLER( aciactrl_w ) +WRITE8_MEMBER(bfm_sc1_state::aciactrl_w) { } ///////////////////////////////////////////////////////////////////////////////////// -static WRITE8_HANDLER( aciadata_w ) +WRITE8_MEMBER(bfm_sc1_state::aciadata_w) { } ///////////////////////////////////////////////////////////////////////////////////// -static READ8_HANDLER( aciastat_r ) +READ8_MEMBER(bfm_sc1_state::aciastat_r) { - bfm_sc1_state *state = space->machine().driver_data<bfm_sc1_state>(); - return state->m_acia_status; + return m_acia_status; } ///////////////////////////////////////////////////////////////////////////////////// -static READ8_HANDLER( aciadata_r ) +READ8_MEMBER(bfm_sc1_state::aciadata_r) { return 0; } @@ -552,18 +567,16 @@ static READ8_HANDLER( aciadata_r ) // payslide triacs ////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////// -static WRITE8_HANDLER( triac_w ) +WRITE8_MEMBER(bfm_sc1_state::triac_w) { - bfm_sc1_state *state = space->machine().driver_data<bfm_sc1_state>(); - state->m_triac_latch = data; + m_triac_latch = data; } ///////////////////////////////////////////////////////////////////////////////////// -static READ8_HANDLER( triac_r ) +READ8_MEMBER(bfm_sc1_state::triac_r) { - bfm_sc1_state *state = space->machine().driver_data<bfm_sc1_state>(); - return state->m_triac_latch; + return m_triac_latch; } ///////////////////////////////////////////////////////////////////////////////////// @@ -584,28 +597,28 @@ static WRITE8_DEVICE_HANDLER( nec_latch_w ) ///////////////////////////////////////////////////////////////////////////////////// -static WRITE8_HANDLER( vid_uart_tx_w ) +WRITE8_MEMBER(bfm_sc1_state::vid_uart_tx_w) { adder2_send(data); - cputag_set_input_line(space->machine(), "adder2", M6809_IRQ_LINE, ASSERT_LINE );//HOLD_LINE);// trigger IRQ + cputag_set_input_line(machine(), "adder2", M6809_IRQ_LINE, ASSERT_LINE );//HOLD_LINE);// trigger IRQ } /////////////////////////////////////////////////////////////////////////// -static WRITE8_HANDLER( vid_uart_ctrl_w ) +WRITE8_MEMBER(bfm_sc1_state::vid_uart_ctrl_w) { } /////////////////////////////////////////////////////////////////////////// -static READ8_HANDLER( vid_uart_rx_r ) +READ8_MEMBER(bfm_sc1_state::vid_uart_rx_r) { return adder2_receive(); } /////////////////////////////////////////////////////////////////////////// -static READ8_HANDLER( vid_uart_ctrl_r ) +READ8_MEMBER(bfm_sc1_state::vid_uart_ctrl_r) { return adder2_status(); } @@ -669,32 +682,32 @@ static MACHINE_RESET( bfm_sc1 ) static ADDRESS_MAP_START( sc1_base, AS_PROGRAM, 8, bfm_sc1_state ) AM_RANGE(0x0000, 0x1FFF) AM_RAM AM_SHARE("nvram") //8k RAM - AM_RANGE(0x2000, 0x21FF) AM_WRITE_LEGACY(reel34_w) // reel 2+3 latch - AM_RANGE(0x2200, 0x23FF) AM_WRITE_LEGACY(reel12_w) // reel 1+2 latch - AM_RANGE(0x2400, 0x25FF) AM_WRITE_LEGACY(vfd_w) // vfd latch + AM_RANGE(0x2000, 0x21FF) AM_WRITE(reel34_w) // reel 2+3 latch + AM_RANGE(0x2200, 0x23FF) AM_WRITE(reel12_w) // reel 1+2 latch + AM_RANGE(0x2400, 0x25FF) AM_WRITE(vfd_w) // vfd latch - AM_RANGE(0x2600, 0x27FF) AM_READWRITE_LEGACY(mmtr_r,mmtr_w) // mechanical meters - AM_RANGE(0x2800, 0x2800) AM_READWRITE_LEGACY(triac_r,triac_w) // payslide triacs + AM_RANGE(0x2600, 0x27FF) AM_READWRITE(mmtr_r,mmtr_w) // mechanical meters + AM_RANGE(0x2800, 0x2800) AM_READWRITE(triac_r,triac_w) // payslide triacs - AM_RANGE(0x2A00, 0x2A00) AM_READWRITE_LEGACY(mux1latch_r,mux1latch_w) // mux1 - AM_RANGE(0x2A01, 0x2A01) AM_READWRITE_LEGACY(mux1datlo_r,mux1datlo_w) - AM_RANGE(0x2A02, 0x2A02) AM_READWRITE_LEGACY(mux1dathi_r,mux1dathi_w) + AM_RANGE(0x2A00, 0x2A00) AM_READWRITE(mux1latch_r,mux1latch_w) // mux1 + AM_RANGE(0x2A01, 0x2A01) AM_READWRITE(mux1datlo_r,mux1datlo_w) + AM_RANGE(0x2A02, 0x2A02) AM_READWRITE(mux1dathi_r,mux1dathi_w) - AM_RANGE(0x2E00, 0x2E00) AM_READ_LEGACY(irqlatch_r) // irq latch + AM_RANGE(0x2E00, 0x2E00) AM_READ(irqlatch_r) // irq latch AM_RANGE(0x3001, 0x3001) AM_READ_LEGACY(soundlatch_r) AM_RANGE(0x3001, 0x3001) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_w) AM_RANGE(0x3101, 0x3201) AM_DEVWRITE_LEGACY("aysnd", ay8910_address_w) - AM_RANGE(0x3406, 0x3406) AM_READWRITE_LEGACY(aciastat_r,aciactrl_w) // MC6850 status register - AM_RANGE(0x3407, 0x3407) AM_READWRITE_LEGACY(aciadata_r,aciadata_w) // MC6850 data register + AM_RANGE(0x3406, 0x3406) AM_READWRITE(aciastat_r,aciactrl_w) // MC6850 status register + AM_RANGE(0x3407, 0x3407) AM_READWRITE(aciadata_r,aciadata_w) // MC6850 data register - AM_RANGE(0x3408, 0x3408) AM_READWRITE_LEGACY(mux2latch_r,mux2latch_w) // mux2 - AM_RANGE(0x3409, 0x3409) AM_READWRITE_LEGACY(mux2datlo_r,mux2datlo_w) - AM_RANGE(0x340A, 0x340A) AM_READWRITE_LEGACY(mux2dathi_r,mux2dathi_w) + AM_RANGE(0x3408, 0x3408) AM_READWRITE(mux2latch_r,mux2latch_w) // mux2 + AM_RANGE(0x3409, 0x3409) AM_READWRITE(mux2datlo_r,mux2datlo_w) + AM_RANGE(0x340A, 0x340A) AM_READWRITE(mux2dathi_r,mux2dathi_w) - AM_RANGE(0x3600, 0x3600) AM_WRITE_LEGACY(bankswitch_w) // write bank - AM_RANGE(0x3800, 0x39FF) AM_WRITE_LEGACY(reel56_w) // reel 5+6 latch + AM_RANGE(0x3600, 0x3600) AM_WRITE(bankswitch_w) // write bank + AM_RANGE(0x3800, 0x39FF) AM_WRITE(reel56_w) // reel 5+6 latch AM_RANGE(0x4000, 0x5FFF) AM_ROM // 8k ROM AM_RANGE(0x6000, 0x7FFF) AM_ROMBANK("bank1") // 8k paged ROM (4 pages) @@ -709,8 +722,8 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( sc1_adder2, AS_PROGRAM, 8, bfm_sc1_state ) AM_IMPORT_FROM( sc1_base ) - AM_RANGE(0x3E00, 0x3E00) AM_READWRITE_LEGACY(vid_uart_ctrl_r,vid_uart_ctrl_w) // video uart control reg read - AM_RANGE(0x3E01, 0x3E01) AM_READWRITE_LEGACY(vid_uart_rx_r,vid_uart_tx_w) // video uart receive reg + AM_RANGE(0x3E00, 0x3E00) AM_READWRITE(vid_uart_ctrl_r,vid_uart_ctrl_w) // video uart control reg read + AM_RANGE(0x3E01, 0x3E01) AM_READWRITE(vid_uart_rx_r,vid_uart_tx_w) // video uart receive reg ADDRESS_MAP_END @@ -721,7 +734,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( sc1_viper, AS_PROGRAM, 8, bfm_sc1_state ) AM_IMPORT_FROM( sc1_base ) - AM_RANGE(0x3404, 0x3404) AM_READ_LEGACY(dipcoin_r ) // coin input on gamecard + AM_RANGE(0x3404, 0x3404) AM_READ(dipcoin_r ) // coin input on gamecard AM_RANGE(0x3801, 0x3801) AM_DEVREAD_LEGACY("upd", nec_r) AM_RANGE(0x3800, 0x39FF) AM_DEVWRITE_LEGACY("upd", nec_latch_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/bfmsys85.c b/src/mame/drivers/bfmsys85.c index f57a8700da4..1c3998976b4 100644 --- a/src/mame/drivers/bfmsys85.c +++ b/src/mame/drivers/bfmsys85.c @@ -90,6 +90,20 @@ public: UINT8 m_codec_data[256]; UINT8 m_sys85_data_line_r; UINT8 m_sys85_data_line_t; + DECLARE_WRITE8_MEMBER(watchdog_w); + DECLARE_READ8_MEMBER(irqlatch_r); + DECLARE_WRITE8_MEMBER(reel12_w); + DECLARE_WRITE8_MEMBER(reel34_w); + DECLARE_WRITE8_MEMBER(mmtr_w); + DECLARE_READ8_MEMBER(mmtr_r); + DECLARE_WRITE8_MEMBER(vfd_w); + DECLARE_WRITE8_MEMBER(mux_ctrl_w); + DECLARE_READ8_MEMBER(mux_ctrl_r); + DECLARE_WRITE8_MEMBER(mux_data_w); + DECLARE_READ8_MEMBER(mux_data_r); + DECLARE_WRITE8_MEMBER(mux_enable_w); + DECLARE_WRITE8_MEMBER(triac_w); + DECLARE_READ8_MEMBER(triac_r); }; @@ -160,7 +174,7 @@ static MACHINE_RESET( bfm_sys85 ) /////////////////////////////////////////////////////////////////////////// -static WRITE8_HANDLER( watchdog_w ) +WRITE8_MEMBER(bfmsys85_state::watchdog_w) { } @@ -178,44 +192,41 @@ static INTERRUPT_GEN( timer_irq ) /////////////////////////////////////////////////////////////////////////// -static READ8_HANDLER( irqlatch_r ) +READ8_MEMBER(bfmsys85_state::irqlatch_r) { - bfmsys85_state *state = space->machine().driver_data<bfmsys85_state>(); - int result = state->m_irq_status | 0x02; + int result = m_irq_status | 0x02; - state->m_irq_status = 0; + m_irq_status = 0; return result; } /////////////////////////////////////////////////////////////////////////// -static WRITE8_HANDLER( reel12_w ) +WRITE8_MEMBER(bfmsys85_state::reel12_w) { - bfmsys85_state *state = space->machine().driver_data<bfmsys85_state>(); - if ( stepper_update(0, (data>>4)&0x0f) ) state->m_reel_changed |= 0x01; - if ( stepper_update(1, data&0x0f ) ) state->m_reel_changed |= 0x02; - - if ( stepper_optic_state(0) ) state->m_optic_pattern |= 0x01; - else state->m_optic_pattern &= ~0x01; - if ( stepper_optic_state(1) ) state->m_optic_pattern |= 0x02; - else state->m_optic_pattern &= ~0x02; + if ( stepper_update(0, (data>>4)&0x0f) ) m_reel_changed |= 0x01; + if ( stepper_update(1, data&0x0f ) ) m_reel_changed |= 0x02; + + if ( stepper_optic_state(0) ) m_optic_pattern |= 0x01; + else m_optic_pattern &= ~0x01; + if ( stepper_optic_state(1) ) m_optic_pattern |= 0x02; + else m_optic_pattern &= ~0x02; awp_draw_reel(0); awp_draw_reel(1); } /////////////////////////////////////////////////////////////////////////// -static WRITE8_HANDLER( reel34_w ) +WRITE8_MEMBER(bfmsys85_state::reel34_w) { - bfmsys85_state *state = space->machine().driver_data<bfmsys85_state>(); - if ( stepper_update(2, (data>>4)&0x0f) ) state->m_reel_changed |= 0x04; - if ( stepper_update(3, data&0x0f ) ) state->m_reel_changed |= 0x08; - - if ( stepper_optic_state(2) ) state->m_optic_pattern |= 0x04; - else state->m_optic_pattern &= ~0x04; - if ( stepper_optic_state(3) ) state->m_optic_pattern |= 0x08; - else state->m_optic_pattern &= ~0x08; + if ( stepper_update(2, (data>>4)&0x0f) ) m_reel_changed |= 0x04; + if ( stepper_update(3, data&0x0f ) ) m_reel_changed |= 0x08; + + if ( stepper_optic_state(2) ) m_optic_pattern |= 0x04; + else m_optic_pattern &= ~0x04; + if ( stepper_optic_state(3) ) m_optic_pattern |= 0x08; + else m_optic_pattern &= ~0x08; awp_draw_reel(2); awp_draw_reel(3); } @@ -224,34 +235,31 @@ static WRITE8_HANDLER( reel34_w ) // mechanical meters ////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// -static WRITE8_HANDLER( mmtr_w ) +WRITE8_MEMBER(bfmsys85_state::mmtr_w) { - bfmsys85_state *state = space->machine().driver_data<bfmsys85_state>(); int i; - int changed = state->m_mmtr_latch ^ data; + int changed = m_mmtr_latch ^ data; - state->m_mmtr_latch = data; + m_mmtr_latch = data; for (i=0; i<8; i++) if ( changed & (1 << i) ) MechMtr_update(i, data & (1 << i) ); - if ( data ) generic_pulse_irq_line(space->machine().device("maincpu"), M6809_FIRQ_LINE, 1); + if ( data ) generic_pulse_irq_line(machine().device("maincpu"), M6809_FIRQ_LINE, 1); } /////////////////////////////////////////////////////////////////////////// -static READ8_HANDLER( mmtr_r ) +READ8_MEMBER(bfmsys85_state::mmtr_r) { - bfmsys85_state *state = space->machine().driver_data<bfmsys85_state>(); - return state->m_mmtr_latch; + return m_mmtr_latch; } /////////////////////////////////////////////////////////////////////////// -static WRITE8_HANDLER( vfd_w ) +WRITE8_MEMBER(bfmsys85_state::vfd_w) { - bfmsys85_state *state = space->machine().driver_data<bfmsys85_state>(); - int changed = state->m_vfd_latch ^ data; + int changed = m_vfd_latch ^ data; - state->m_vfd_latch = data; + m_vfd_latch = data; if ( changed ) { @@ -280,9 +288,8 @@ static WRITE8_HANDLER( vfd_w ) // input / output multiplexers /////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////// -static WRITE8_HANDLER( mux_ctrl_w ) +WRITE8_MEMBER(bfmsys85_state::mux_ctrl_w) { - bfmsys85_state *state = space->machine().driver_data<bfmsys85_state>(); switch ( data & 0xF0 ) { case 0x10: @@ -295,15 +302,15 @@ static WRITE8_HANDLER( mux_ctrl_w ) case 0x40: //logerror(" sys85 mux: read strobe"); - state->m_mux_input_strobe = data & 0x07; + m_mux_input_strobe = data & 0x07; - if ( state->m_mux_input_strobe == 5 ) state->m_Inputs[5] = 0xFF ^ state->m_optic_pattern; + if ( m_mux_input_strobe == 5 ) m_Inputs[5] = 0xFF ^ m_optic_pattern; - state->m_mux_input = ~state->m_Inputs[state->m_mux_input_strobe]; + m_mux_input = ~m_Inputs[m_mux_input_strobe]; break; case 0x80: - state->m_mux_output_strobe = data & 0x0F; + m_mux_output_strobe = data & 0x0F; break; case 0xC0: @@ -316,18 +323,17 @@ static WRITE8_HANDLER( mux_ctrl_w ) } } -static READ8_HANDLER( mux_ctrl_r ) +READ8_MEMBER(bfmsys85_state::mux_ctrl_r) { // software waits for bit7 to become low return 0; } -static WRITE8_HANDLER( mux_data_w ) +WRITE8_MEMBER(bfmsys85_state::mux_data_w) { - bfmsys85_state *state = space->machine().driver_data<bfmsys85_state>(); int pattern = 0x01, i, - off = state->m_mux_output_strobe<<4; + off = m_mux_output_strobe<<4; for ( i = 0; i < 8; i++ ) { @@ -337,15 +343,14 @@ static WRITE8_HANDLER( mux_data_w ) } } -static READ8_HANDLER( mux_data_r ) +READ8_MEMBER(bfmsys85_state::mux_data_r) { - bfmsys85_state *state = space->machine().driver_data<bfmsys85_state>(); - return state->m_mux_input; + return m_mux_input; } /////////////////////////////////////////////////////////////////////////// -static WRITE8_HANDLER( mux_enable_w ) +WRITE8_MEMBER(bfmsys85_state::mux_enable_w) { } @@ -353,18 +358,16 @@ static WRITE8_HANDLER( mux_enable_w ) // payslide triacs //////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// -static WRITE8_HANDLER( triac_w ) +WRITE8_MEMBER(bfmsys85_state::triac_w) { - bfmsys85_state *state = space->machine().driver_data<bfmsys85_state>(); - state->m_triac_latch = data; + m_triac_latch = data; } /////////////////////////////////////////////////////////////////////////// -static READ8_HANDLER( triac_r ) +READ8_MEMBER(bfmsys85_state::triac_r) { - bfmsys85_state *state = space->machine().driver_data<bfmsys85_state>(); - return state->m_triac_latch; + return m_triac_latch; } // machine start (called only once) //////////////////////////////////////// @@ -387,17 +390,17 @@ static MACHINE_START( bfm_sys85 ) static ADDRESS_MAP_START( memmap, AS_PROGRAM, 8, bfmsys85_state ) AM_RANGE(0x0000, 0x1fff) AM_RAM AM_SHARE("nvram") //8k RAM - AM_RANGE(0x2000, 0x21FF) AM_WRITE_LEGACY(reel34_w) // reel 3+4 latch - AM_RANGE(0x2200, 0x23FF) AM_WRITE_LEGACY(reel12_w) // reel 1+2 latch - AM_RANGE(0x2400, 0x25FF) AM_WRITE_LEGACY(vfd_w) // vfd latch + AM_RANGE(0x2000, 0x21FF) AM_WRITE(reel34_w) // reel 3+4 latch + AM_RANGE(0x2200, 0x23FF) AM_WRITE(reel12_w) // reel 1+2 latch + AM_RANGE(0x2400, 0x25FF) AM_WRITE(vfd_w) // vfd latch - AM_RANGE(0x2600, 0x27FF) AM_READWRITE_LEGACY(mmtr_r,mmtr_w)// mechanical meter latch - AM_RANGE(0x2800, 0x2800) AM_READ_LEGACY(triac_r) // payslide triacs - AM_RANGE(0x2800, 0x29FF) AM_WRITE_LEGACY(triac_w) // triacs + AM_RANGE(0x2600, 0x27FF) AM_READWRITE(mmtr_r,mmtr_w)// mechanical meter latch + AM_RANGE(0x2800, 0x2800) AM_READ(triac_r) // payslide triacs + AM_RANGE(0x2800, 0x29FF) AM_WRITE(triac_w) // triacs - AM_RANGE(0x2A00, 0x2A00) AM_READWRITE_LEGACY(mux_data_r,mux_data_w)// mux - AM_RANGE(0x2A01, 0x2A01) AM_READWRITE_LEGACY(mux_ctrl_r,mux_ctrl_w)// mux status register - AM_RANGE(0x2E00, 0x2E00) AM_READ_LEGACY(irqlatch_r) // irq latch ( MC6850 / timer ) + AM_RANGE(0x2A00, 0x2A00) AM_READWRITE(mux_data_r,mux_data_w)// mux + AM_RANGE(0x2A01, 0x2A01) AM_READWRITE(mux_ctrl_r,mux_ctrl_w)// mux status register + AM_RANGE(0x2E00, 0x2E00) AM_READ(irqlatch_r) // irq latch ( MC6850 / timer ) AM_RANGE(0x3000, 0x3000) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_w) AM_RANGE(0x3001, 0x3001) AM_READNOP //sound latch @@ -409,10 +412,10 @@ static ADDRESS_MAP_START( memmap, AS_PROGRAM, 8, bfmsys85_state ) AM_RANGE(0x3406, 0x3406) AM_DEVREAD("acia6850_0", acia6850_device, status_read) AM_RANGE(0x3407, 0x3407) AM_DEVREAD("acia6850_0", acia6850_device, data_read) - AM_RANGE(0x3600, 0x3600) AM_WRITE_LEGACY(mux_enable_w) // mux enable + AM_RANGE(0x3600, 0x3600) AM_WRITE(mux_enable_w) // mux enable AM_RANGE(0x4000, 0xffff) AM_ROM // 48K ROM - AM_RANGE(0x8000, 0xFFFF) AM_WRITE_LEGACY(watchdog_w) // kick watchdog + AM_RANGE(0x8000, 0xFFFF) AM_WRITE(watchdog_w) // kick watchdog ADDRESS_MAP_END diff --git a/src/mame/drivers/big10.c b/src/mame/drivers/big10.c index f4e40a9d34e..df2ea5f0307 100644 --- a/src/mame/drivers/big10.c +++ b/src/mame/drivers/big10.c @@ -72,6 +72,7 @@ public: required_device<v9938_device> m_v9938; UINT8 m_mux_data; + DECLARE_READ8_MEMBER(mux_r); }; @@ -114,17 +115,16 @@ static WRITE8_DEVICE_HANDLER( mux_w ) state->m_mux_data = ~data; } -static READ8_HANDLER( mux_r ) +READ8_MEMBER(big10_state::mux_r) { - big10_state *state = space->machine().driver_data<big10_state>(); - switch(state->m_mux_data) + switch(m_mux_data) { - case 1: return input_port_read(space->machine(), "IN1"); - case 2: return input_port_read(space->machine(), "IN2"); - case 4: return input_port_read(space->machine(), "IN3"); + case 1: return input_port_read(machine(), "IN1"); + case 2: return input_port_read(machine(), "IN2"); + case 4: return input_port_read(machine(), "IN3"); } - return state->m_mux_data; + return m_mux_data; } @@ -140,7 +140,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( main_io, AS_IO, 8, big10_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_LEGACY(mux_r) /* present in test mode */ + AM_RANGE(0x00, 0x00) AM_READ(mux_r) /* present in test mode */ AM_RANGE(0x02, 0x02) AM_READ_PORT("SYSTEM") /* coins and service */ AM_RANGE(0x98, 0x9b) AM_DEVREADWRITE("v9938", v9938_device, read, write) AM_RANGE(0xa0, 0xa1) AM_DEVWRITE_LEGACY("aysnd", ay8910_address_data_w) diff --git a/src/mame/drivers/bingoc.c b/src/mame/drivers/bingoc.c index 25a06f6f3a1..447d5dd0f6c 100644 --- a/src/mame/drivers/bingoc.c +++ b/src/mame/drivers/bingoc.c @@ -41,6 +41,9 @@ public: : driver_device(mconfig, type, tag) { } UINT8 m_x; + DECLARE_READ16_MEMBER(bingoc_rand_r); + DECLARE_READ8_MEMBER(sound_test_r); + DECLARE_WRITE16_MEMBER(main_sound_latch_w); }; @@ -56,7 +59,7 @@ static SCREEN_UPDATE_IND16(bingoc) return 0; } -static READ16_HANDLER( bingoc_rand_r ) +READ16_MEMBER(bingoc_state::bingoc_rand_r) { return 0xffff; } @@ -68,27 +71,26 @@ static READ16_HANDLER( bingoc_rand_r ) 0x80-0x85 ym2151 bgm 0x90-0x9b ym2151 sfx */ -static READ8_HANDLER( sound_test_r ) +READ8_MEMBER(bingoc_state::sound_test_r) { - bingoc_state *state = space->machine().driver_data<bingoc_state>(); - if(space->machine().input().code_pressed_once(KEYCODE_Z)) - state->m_x++; + if(machine().input().code_pressed_once(KEYCODE_Z)) + m_x++; - if(space->machine().input().code_pressed_once(KEYCODE_X)) - state->m_x--; + if(machine().input().code_pressed_once(KEYCODE_X)) + m_x--; - if(space->machine().input().code_pressed_once(KEYCODE_A)) + if(machine().input().code_pressed_once(KEYCODE_A)) return 0xff; - popmessage("%02x",state->m_x); - return state->m_x; + popmessage("%02x",m_x); + return m_x; } #else -static WRITE16_HANDLER( main_sound_latch_w ) +WRITE16_MEMBER(bingoc_state::main_sound_latch_w) { soundlatch_w(space,0,data&0xff); - cputag_set_input_line(space->machine(), "soundcpu", INPUT_LINE_NMI, PULSE_LINE); + cputag_set_input_line(machine(), "soundcpu", INPUT_LINE_NMI, PULSE_LINE); } #endif @@ -106,10 +108,10 @@ static WRITE8_DEVICE_HANDLER( bingoc_play_w ) static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, bingoc_state ) AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x10007f) AM_READ_LEGACY(bingoc_rand_r) //comms? lamps? - AM_RANGE(0x180000, 0x18007f) AM_READ_LEGACY(bingoc_rand_r) //comms? lamps? + AM_RANGE(0x100000, 0x10007f) AM_READ(bingoc_rand_r) //comms? lamps? + AM_RANGE(0x180000, 0x18007f) AM_READ(bingoc_rand_r) //comms? lamps? #if !SOUND_TEST - AM_RANGE(0x180010, 0x180011) AM_WRITE_LEGACY(main_sound_latch_w) //WRONG there... + AM_RANGE(0x180010, 0x180011) AM_WRITE(main_sound_latch_w) //WRONG there... #endif AM_RANGE(0xff8000, 0xffffff) AM_RAM ADDRESS_MAP_END @@ -127,7 +129,7 @@ static ADDRESS_MAP_START( sound_io, AS_IO, 8, bingoc_state ) #if !SOUND_TEST AM_RANGE(0xc0, 0xc0) AM_READ_LEGACY(soundlatch_r) //soundlatch #else - AM_RANGE(0xc0, 0xc0) AM_READ_LEGACY(sound_test_r) + AM_RANGE(0xc0, 0xc0) AM_READ(sound_test_r) #endif ADDRESS_MAP_END diff --git a/src/mame/drivers/bingor.c b/src/mame/drivers/bingor.c index 11a20d0a67d..dc93b534500 100644 --- a/src/mame/drivers/bingor.c +++ b/src/mame/drivers/bingor.c @@ -450,6 +450,8 @@ public: : driver_device(mconfig, type, tag) { } UINT16 *m_blit_ram; + DECLARE_READ16_MEMBER(test_r); + DECLARE_READ8_MEMBER(test8_r); }; @@ -500,9 +502,9 @@ static SCREEN_UPDATE_RGB32(bingor) } #if 0 -static READ16_HANDLER( test_r ) +READ16_MEMBER(bingor_state::test_r) { - return space->machine().rand(); + return machine().rand(); } #endif @@ -515,19 +517,19 @@ static ADDRESS_MAP_START( bingor_map, AS_PROGRAM, 16, bingor_state ) ADDRESS_MAP_END static ADDRESS_MAP_START( bingor_io, AS_IO, 16, bingor_state ) -// AM_RANGE(0x0000, 0x00ff) AM_READ_LEGACY(test_r ) +// AM_RANGE(0x0000, 0x00ff) AM_READ(test_r ) AM_RANGE(0x0100, 0x0101) AM_DEVWRITE8_LEGACY("saa", saa1099_data_w, 0x00ff) AM_RANGE(0x0102, 0x0103) AM_DEVWRITE8_LEGACY("saa", saa1099_control_w, 0x00ff) -// AM_RANGE(0x0200, 0x0201) AM_READ_LEGACY(test_r ) +// AM_RANGE(0x0200, 0x0201) AM_READ(test_r ) ADDRESS_MAP_END -static READ8_HANDLER( test8_r ) +READ8_MEMBER(bingor_state::test8_r) { - return space->machine().rand(); + return machine().rand(); } static ADDRESS_MAP_START( pic_io_map, AS_IO, 8, bingor_state ) - AM_RANGE(0x02, 0x02) AM_READ_LEGACY(test8_r) + AM_RANGE(0x02, 0x02) AM_READ(test8_r) AM_RANGE(0x10, 0x10) AM_READNOP ADDRESS_MAP_END diff --git a/src/mame/drivers/blackt96.c b/src/mame/drivers/blackt96.c index c0a8ee5656f..d54c03705b6 100644 --- a/src/mame/drivers/blackt96.c +++ b/src/mame/drivers/blackt96.c @@ -61,6 +61,14 @@ public: UINT16* m_tilemapram; UINT16* m_tilemapram2; + DECLARE_WRITE16_MEMBER(blackt96_c0000_w); + DECLARE_WRITE16_MEMBER(blackt96_80000_w); + DECLARE_READ8_MEMBER(PIC16C5X_T0_clk_r); + DECLARE_WRITE8_MEMBER(blackt96_soundio_port00_w); + DECLARE_READ8_MEMBER(blackt96_soundio_port01_r); + DECLARE_WRITE8_MEMBER(blackt96_soundio_port01_w); + DECLARE_READ8_MEMBER(blackt96_soundio_port02_r); + DECLARE_WRITE8_MEMBER(blackt96_soundio_port02_w); }; @@ -156,12 +164,12 @@ static SCREEN_UPDATE_IND16( blackt96 ) } -static WRITE16_HANDLER( blackt96_c0000_w ) +WRITE16_MEMBER(blackt96_state::blackt96_c0000_w) { printf("blackt96_c0000_w %04x %04x\n",data,mem_mask); } -static WRITE16_HANDLER( blackt96_80000_w ) +WRITE16_MEMBER(blackt96_state::blackt96_80000_w) { // TO sound MCU? printf("blackt96_80000_w %04x %04x\n",data,mem_mask); @@ -170,8 +178,8 @@ static WRITE16_HANDLER( blackt96_80000_w ) static ADDRESS_MAP_START( blackt96_map, AS_PROGRAM, 16, blackt96_state ) AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x080001) AM_READ_PORT("P1_P2") AM_WRITE_LEGACY(blackt96_80000_w) - AM_RANGE(0x0c0000, 0x0c0001) AM_READ_PORT("IN1") AM_WRITE_LEGACY(blackt96_c0000_w) // COIN INPUT + AM_RANGE(0x080000, 0x080001) AM_READ_PORT("P1_P2") AM_WRITE(blackt96_80000_w) + AM_RANGE(0x0c0000, 0x0c0001) AM_READ_PORT("IN1") AM_WRITE(blackt96_c0000_w) // COIN INPUT AM_RANGE(0x0e0000, 0x0e0001) AM_READ_PORT("IN2") AM_RANGE(0x0e8000, 0x0e8001) AM_READ_PORT("IN3") AM_RANGE(0x0f0000, 0x0f0001) AM_READ_PORT("DSW1") @@ -443,41 +451,38 @@ static GFXDECODE_START( blackt96 ) GFXDECODE_END -static READ8_HANDLER( PIC16C5X_T0_clk_r ) +READ8_MEMBER(blackt96_state::PIC16C5X_T0_clk_r) { return 0; } -static WRITE8_HANDLER( blackt96_soundio_port00_w ) +WRITE8_MEMBER(blackt96_state::blackt96_soundio_port00_w) { - } -static READ8_HANDLER( blackt96_soundio_port01_r ) +READ8_MEMBER(blackt96_state::blackt96_soundio_port01_r) { - return space->machine().rand(); + return machine().rand(); } -static WRITE8_HANDLER( blackt96_soundio_port01_w ) +WRITE8_MEMBER(blackt96_state::blackt96_soundio_port01_w) { - } -static READ8_HANDLER( blackt96_soundio_port02_r ) +READ8_MEMBER(blackt96_state::blackt96_soundio_port02_r) { - return space->machine().rand(); + return machine().rand(); } -static WRITE8_HANDLER( blackt96_soundio_port02_w ) +WRITE8_MEMBER(blackt96_state::blackt96_soundio_port02_w) { - } static ADDRESS_MAP_START( sound_io_map, AS_IO, 8, blackt96_state ) - AM_RANGE(0x00, 0x00) AM_WRITE_LEGACY(blackt96_soundio_port00_w ) - AM_RANGE(0x01, 0x01) AM_READWRITE_LEGACY(blackt96_soundio_port01_r, blackt96_soundio_port01_w ) - AM_RANGE(0x02, 0x02) AM_READWRITE_LEGACY(blackt96_soundio_port02_r, blackt96_soundio_port02_w ) - AM_RANGE(PIC16C5x_T0, PIC16C5x_T0) AM_READ_LEGACY(PIC16C5X_T0_clk_r) + AM_RANGE(0x00, 0x00) AM_WRITE(blackt96_soundio_port00_w ) + AM_RANGE(0x01, 0x01) AM_READWRITE(blackt96_soundio_port01_r, blackt96_soundio_port01_w ) + AM_RANGE(0x02, 0x02) AM_READWRITE(blackt96_soundio_port02_r, blackt96_soundio_port02_w ) + AM_RANGE(PIC16C5x_T0, PIC16C5x_T0) AM_READ(PIC16C5X_T0_clk_r) ADDRESS_MAP_END diff --git a/src/mame/drivers/blitz.c b/src/mame/drivers/blitz.c index 2d9e8133082..a5f77881a0b 100644 --- a/src/mame/drivers/blitz.c +++ b/src/mame/drivers/blitz.c @@ -302,6 +302,8 @@ public: UINT8 *m_colorram; tilemap_t *m_bg_tilemap; int m_mux_data; + DECLARE_WRITE8_MEMBER(megadpkr_videoram_w); + DECLARE_WRITE8_MEMBER(megadpkr_colorram_w); }; @@ -311,18 +313,16 @@ public: *********************************************/ -static WRITE8_HANDLER( megadpkr_videoram_w ) +WRITE8_MEMBER(blitz_state::megadpkr_videoram_w) { - blitz_state *state = space->machine().driver_data<blitz_state>(); - state->m_videoram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_videoram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( megadpkr_colorram_w ) +WRITE8_MEMBER(blitz_state::megadpkr_colorram_w) { - blitz_state *state = space->machine().driver_data<blitz_state>(); - state->m_colorram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_colorram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } @@ -485,8 +485,8 @@ static ADDRESS_MAP_START( megadpkr_map, AS_PROGRAM, 8, blitz_state ) AM_RANGE(0x10f8, 0x10fb) AM_DEVREADWRITE("pia1", pia6821_device, read, write) */ - AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE_LEGACY(megadpkr_videoram_w) AM_BASE(m_videoram) - AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE_LEGACY(megadpkr_colorram_w) AM_BASE(m_colorram) + AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(megadpkr_videoram_w) AM_BASE(m_videoram) + AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(megadpkr_colorram_w) AM_BASE(m_colorram) AM_RANGE(0xc000, 0xffff) AM_ROM ADDRESS_MAP_END diff --git a/src/mame/drivers/bmcbowl.c b/src/mame/drivers/bmcbowl.c index 84694f79957..810083b37c2 100644 --- a/src/mame/drivers/bmcbowl.c +++ b/src/mame/drivers/bmcbowl.c @@ -120,6 +120,11 @@ public: size_t m_stats_ram_size; int m_clr_offset; int m_bmc_input; + DECLARE_READ16_MEMBER(bmc_random_read); + DECLARE_READ16_MEMBER(bmc_protection_r); + DECLARE_WRITE16_MEMBER(bmc_RAMDAC_offset_w); + DECLARE_WRITE16_MEMBER(bmc_RAMDAC_color_w); + DECLARE_WRITE16_MEMBER(scroll_w); }; @@ -181,17 +186,17 @@ static SCREEN_UPDATE_IND16( bmcbowl ) return 0; } -static READ16_HANDLER( bmc_random_read ) +READ16_MEMBER(bmcbowl_state::bmc_random_read) { - return space->machine().rand(); + return machine().rand(); } -static READ16_HANDLER( bmc_protection_r ) +READ16_MEMBER(bmcbowl_state::bmc_protection_r) { - switch(cpu_get_previouspc(&space->device())) + switch(cpu_get_previouspc(&space.device())) { case 0xca68: - switch(cpu_get_reg(&space->device(), M68K_D2)) + switch(cpu_get_reg(&space.device(), M68K_D2)) { case 0: return 0x37<<8; case 0x1013: return 0; @@ -199,25 +204,23 @@ static READ16_HANDLER( bmc_protection_r ) } break; } - logerror("Protection read @ %X\n",cpu_get_previouspc(&space->device())); - return space->machine().rand(); + logerror("Protection read @ %X\n",cpu_get_previouspc(&space.device())); + return machine().rand(); } -static WRITE16_HANDLER( bmc_RAMDAC_offset_w ) +WRITE16_MEMBER(bmcbowl_state::bmc_RAMDAC_offset_w) { - bmcbowl_state *state = space->machine().driver_data<bmcbowl_state>(); - state->m_clr_offset=data*3; + m_clr_offset=data*3; } -static WRITE16_HANDLER( bmc_RAMDAC_color_w ) +WRITE16_MEMBER(bmcbowl_state::bmc_RAMDAC_color_w) { - bmcbowl_state *state = space->machine().driver_data<bmcbowl_state>(); - state->m_bmc_colorram[state->m_clr_offset]=data; - palette_set_color_rgb(space->machine(),state->m_clr_offset/3,pal6bit(state->m_bmc_colorram[(state->m_clr_offset/3)*3]),pal6bit(state->m_bmc_colorram[(state->m_clr_offset/3)*3+1]),pal6bit(state->m_bmc_colorram[(state->m_clr_offset/3)*3+2])); - state->m_clr_offset=(state->m_clr_offset+1)%768; + m_bmc_colorram[m_clr_offset]=data; + palette_set_color_rgb(machine(),m_clr_offset/3,pal6bit(m_bmc_colorram[(m_clr_offset/3)*3]),pal6bit(m_bmc_colorram[(m_clr_offset/3)*3+1]),pal6bit(m_bmc_colorram[(m_clr_offset/3)*3+2])); + m_clr_offset=(m_clr_offset+1)%768; } -static WRITE16_HANDLER( scroll_w ) +WRITE16_MEMBER(bmcbowl_state::scroll_w) { //TODO - scroll } @@ -326,13 +329,13 @@ static NVRAM_HANDLER( bmcbowl ) static ADDRESS_MAP_START( bmcbowl_mem, AS_PROGRAM, 16, bmcbowl_state ) AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x090000, 0x090001) AM_WRITE_LEGACY(bmc_RAMDAC_offset_w) - AM_RANGE(0x090002, 0x090003) AM_WRITE_LEGACY(bmc_RAMDAC_color_w) + AM_RANGE(0x090000, 0x090001) AM_WRITE(bmc_RAMDAC_offset_w) + AM_RANGE(0x090002, 0x090003) AM_WRITE(bmc_RAMDAC_color_w) AM_RANGE(0x090004, 0x090005) AM_WRITENOP//RAMDAC AM_RANGE(0x090800, 0x090803) AM_WRITENOP AM_RANGE(0x091000, 0x091001) AM_WRITENOP - AM_RANGE(0x091800, 0x091801) AM_WRITE_LEGACY(scroll_w) + AM_RANGE(0x091800, 0x091801) AM_WRITE(scroll_w) AM_RANGE(0x092000, 0x09201f) AM_DEVREADWRITE8("via6522_0", via6522_device, read, write, 0x00ff) @@ -354,9 +357,9 @@ static ADDRESS_MAP_START( bmcbowl_mem, AS_PROGRAM, 16, bmcbowl_state ) AM_RANGE(0x30c040, 0x30c041) AM_WRITENOP AM_RANGE(0x30c080, 0x30c081) AM_WRITENOP AM_RANGE(0x30c0c0, 0x30c0c1) AM_WRITENOP - AM_RANGE(0x30c100, 0x30c101) AM_READ_LEGACY(bmc_protection_r) + AM_RANGE(0x30c100, 0x30c101) AM_READ(bmc_protection_r) AM_RANGE(0x30c140, 0x30c141) AM_WRITENOP - AM_RANGE(0x30ca00, 0x30ca01) AM_READ_LEGACY(bmc_random_read) AM_WRITENOP + AM_RANGE(0x30ca00, 0x30ca01) AM_READ(bmc_random_read) AM_WRITENOP ADDRESS_MAP_END diff --git a/src/mame/drivers/bnstars.c b/src/mame/drivers/bnstars.c index e953e7efaf2..d8a8d21b218 100644 --- a/src/mame/drivers/bnstars.c +++ b/src/mame/drivers/bnstars.c @@ -120,6 +120,19 @@ public: int m_ms32_reverse_sprite_order; int m_flipscreen; UINT16 m_irqreq; + DECLARE_WRITE32_MEMBER(ms32_tx0_ram_w); + DECLARE_WRITE32_MEMBER(ms32_tx1_ram_w); + DECLARE_WRITE32_MEMBER(ms32_bg0_ram_w); + DECLARE_WRITE32_MEMBER(ms32_bg1_ram_w); + DECLARE_WRITE32_MEMBER(ms32_roz0_ram_w); + DECLARE_WRITE32_MEMBER(ms32_roz1_ram_w); + DECLARE_WRITE32_MEMBER(ms32_pal0_ram_w); + DECLARE_WRITE32_MEMBER(ms32_pal1_ram_w); + DECLARE_WRITE32_MEMBER(ms32_spramx_w); + DECLARE_READ32_MEMBER(bnstars1_r); + DECLARE_READ32_MEMBER(bnstars2_r); + DECLARE_READ32_MEMBER(bnstars3_r); + DECLARE_WRITE32_MEMBER(bnstars1_mahjong_select_w); }; @@ -146,18 +159,16 @@ static TILE_GET_INFO( get_ms32_tx1_tile_info ) SET_TILE_INFO(7,tileno,colour,0); } -static WRITE32_HANDLER( ms32_tx0_ram_w ) +WRITE32_MEMBER(bnstars_state::ms32_tx0_ram_w) { - bnstars_state *state = space->machine().driver_data<bnstars_state>(); - COMBINE_DATA(&state->m_ms32_tx0_ram[offset]); - state->m_ms32_tx_tilemap[0]->mark_tile_dirty(offset/2); + COMBINE_DATA(&m_ms32_tx0_ram[offset]); + m_ms32_tx_tilemap[0]->mark_tile_dirty(offset/2); } -static WRITE32_HANDLER( ms32_tx1_ram_w ) +WRITE32_MEMBER(bnstars_state::ms32_tx1_ram_w) { - bnstars_state *state = space->machine().driver_data<bnstars_state>(); - COMBINE_DATA(&state->m_ms32_tx1_ram[offset]); - state->m_ms32_tx_tilemap[1]->mark_tile_dirty(offset/2); + COMBINE_DATA(&m_ms32_tx1_ram[offset]); + m_ms32_tx_tilemap[1]->mark_tile_dirty(offset/2); } /* BG Layers */ @@ -184,18 +195,16 @@ static TILE_GET_INFO( get_ms32_bg1_tile_info ) SET_TILE_INFO(6,tileno,colour,0); } -static WRITE32_HANDLER( ms32_bg0_ram_w ) +WRITE32_MEMBER(bnstars_state::ms32_bg0_ram_w) { - bnstars_state *state = space->machine().driver_data<bnstars_state>(); - COMBINE_DATA(&state->m_ms32_bg0_ram[offset]); - state->m_ms32_bg_tilemap[0]->mark_tile_dirty(offset/2); + COMBINE_DATA(&m_ms32_bg0_ram[offset]); + m_ms32_bg_tilemap[0]->mark_tile_dirty(offset/2); } -static WRITE32_HANDLER( ms32_bg1_ram_w ) +WRITE32_MEMBER(bnstars_state::ms32_bg1_ram_w) { - bnstars_state *state = space->machine().driver_data<bnstars_state>(); - COMBINE_DATA(&state->m_ms32_bg1_ram[offset]); - state->m_ms32_bg_tilemap[1]->mark_tile_dirty(offset/2); + COMBINE_DATA(&m_ms32_bg1_ram[offset]); + m_ms32_bg_tilemap[1]->mark_tile_dirty(offset/2); } /* ROZ Layers */ @@ -308,18 +317,16 @@ static TILE_GET_INFO( get_ms32_roz1_tile_info ) SET_TILE_INFO(5,tileno,colour,0); } -static WRITE32_HANDLER( ms32_roz0_ram_w ) +WRITE32_MEMBER(bnstars_state::ms32_roz0_ram_w) { - bnstars_state *state = space->machine().driver_data<bnstars_state>(); - COMBINE_DATA(&state->m_ms32_roz0_ram[offset]); - state->m_ms32_roz_tilemap[0]->mark_tile_dirty(offset/2); + COMBINE_DATA(&m_ms32_roz0_ram[offset]); + m_ms32_roz_tilemap[0]->mark_tile_dirty(offset/2); } -static WRITE32_HANDLER( ms32_roz1_ram_w ) +WRITE32_MEMBER(bnstars_state::ms32_roz1_ram_w) { - bnstars_state *state = space->machine().driver_data<bnstars_state>(); - COMBINE_DATA(&state->m_ms32_roz1_ram[offset]); - state->m_ms32_roz_tilemap[1]->mark_tile_dirty(offset/2); + COMBINE_DATA(&m_ms32_roz1_ram[offset]); + m_ms32_roz_tilemap[1]->mark_tile_dirty(offset/2); } @@ -335,18 +342,16 @@ static void update_color(running_machine &machine, int color, int screen) palette_set_color(machine,color+screen*0x8000,MAKE_RGB(r,g,b)); } -static WRITE32_HANDLER( ms32_pal0_ram_w ) +WRITE32_MEMBER(bnstars_state::ms32_pal0_ram_w) { - bnstars_state *state = space->machine().driver_data<bnstars_state>(); - COMBINE_DATA(&state->m_ms32_pal_ram[0][offset]); - update_color(space->machine(), offset/2, 0); + COMBINE_DATA(&m_ms32_pal_ram[0][offset]); + update_color(machine(), offset/2, 0); } -static WRITE32_HANDLER( ms32_pal1_ram_w ) +WRITE32_MEMBER(bnstars_state::ms32_pal1_ram_w) { - bnstars_state *state = space->machine().driver_data<bnstars_state>(); - COMBINE_DATA(&state->m_ms32_pal_ram[1][offset]); - update_color(space->machine(), offset/2, 1); + COMBINE_DATA(&m_ms32_pal_ram[1][offset]); + update_color(machine(), offset/2, 1); } @@ -479,10 +484,9 @@ static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const r -static WRITE32_HANDLER( ms32_spramx_w ) +WRITE32_MEMBER(bnstars_state::ms32_spramx_w) { - bnstars_state *state = space->machine().driver_data<bnstars_state>(); - COMBINE_DATA(&state->m_ms32_spram[offset]); + COMBINE_DATA(&m_ms32_spram[offset]); } @@ -1220,53 +1224,51 @@ static GFXDECODE_START( bnstars ) GFXDECODE_END -static READ32_HANDLER( bnstars1_r ) +READ32_MEMBER(bnstars_state::bnstars1_r) { - bnstars_state *state = space->machine().driver_data<bnstars_state>(); - switch (state->m_bnstars1_mahjong_select & 0x2080) + switch (m_bnstars1_mahjong_select & 0x2080) { default: - printf("unk bnstars1_r %08x\n",state->m_bnstars1_mahjong_select); + printf("unk bnstars1_r %08x\n",m_bnstars1_mahjong_select); return 0xffffffff; case 0x0000: - return input_port_read(space->machine(), "IN0"); + return input_port_read(machine(), "IN0"); case 0x0080: - return input_port_read(space->machine(), "IN1"); + return input_port_read(machine(), "IN1"); case 0x2000: - return input_port_read(space->machine(), "IN2"); + return input_port_read(machine(), "IN2"); case 0x2080: - return input_port_read(space->machine(), "IN3"); + return input_port_read(machine(), "IN3"); } } -static READ32_HANDLER( bnstars2_r ) +READ32_MEMBER(bnstars_state::bnstars2_r) { - return input_port_read(space->machine(), "IN4"); + return input_port_read(machine(), "IN4"); } -static READ32_HANDLER( bnstars3_r ) +READ32_MEMBER(bnstars_state::bnstars3_r) { - return input_port_read(space->machine(), "IN5"); + return input_port_read(machine(), "IN5"); } -static WRITE32_HANDLER( bnstars1_mahjong_select_w ) +WRITE32_MEMBER(bnstars_state::bnstars1_mahjong_select_w) { - bnstars_state *state = space->machine().driver_data<bnstars_state>(); - state->m_bnstars1_mahjong_select = data; -// printf("%08x\n",state->m_bnstars1_mahjong_select); + m_bnstars1_mahjong_select = data; +// printf("%08x\n",m_bnstars1_mahjong_select); } static ADDRESS_MAP_START( bnstars_map, AS_PROGRAM, 32, bnstars_state ) AM_RANGE(0x00000000, 0x001fffff) AM_ROM - AM_RANGE(0xfcc00004, 0xfcc00007) AM_READ_LEGACY(bnstars1_r ) - AM_RANGE(0xfcc00008, 0xfcc0000b) AM_READ_LEGACY(bnstars2_r ) - AM_RANGE(0xfcc00010, 0xfcc00013) AM_READ_LEGACY(bnstars3_r ) + AM_RANGE(0xfcc00004, 0xfcc00007) AM_READ(bnstars1_r ) + AM_RANGE(0xfcc00008, 0xfcc0000b) AM_READ(bnstars2_r ) + AM_RANGE(0xfcc00010, 0xfcc00013) AM_READ(bnstars3_r ) AM_RANGE(0xfce00034, 0xfce00037) AM_WRITENOP @@ -1281,20 +1283,20 @@ static ADDRESS_MAP_START( bnstars_map, AS_PROGRAM, 32, bnstars_state ) AM_RANGE(0xfce00c00, 0xfce00c17) AM_WRITEONLY AM_BASE(m_ms32_tx1_scroll) AM_RANGE(0xfce00c20, 0xfce00c37) AM_WRITEONLY AM_BASE(m_ms32_bg1_scroll) - AM_RANGE(0xfce00e00, 0xfce00e03) AM_WRITE_LEGACY(bnstars1_mahjong_select_w) // ? + AM_RANGE(0xfce00e00, 0xfce00e03) AM_WRITE(bnstars1_mahjong_select_w) // ? /* wrote together */ AM_RANGE(0xfd040000, 0xfd047fff) AM_RAM // priority ram AM_RANGE(0xfd080000, 0xfd087fff) AM_RAM - AM_RANGE(0xfd200000, 0xfd237fff) AM_RAM_WRITE_LEGACY(ms32_pal1_ram_w) AM_BASE(m_ms32_pal_ram[1]) - AM_RANGE(0xfd400000, 0xfd437fff) AM_RAM_WRITE_LEGACY(ms32_pal0_ram_w) AM_BASE(m_ms32_pal_ram[0]) - AM_RANGE(0xfe000000, 0xfe01ffff) AM_RAM_WRITE_LEGACY(ms32_roz1_ram_w) AM_BASE(m_ms32_roz1_ram) - AM_RANGE(0xfe400000, 0xfe41ffff) AM_RAM_WRITE_LEGACY(ms32_roz0_ram_w) AM_BASE(m_ms32_roz0_ram) - AM_RANGE(0xfe800000, 0xfe83ffff) AM_RAM_WRITE_LEGACY(ms32_spramx_w) AM_BASE(m_ms32_spram) - AM_RANGE(0xfea00000, 0xfea07fff) AM_RAM_WRITE_LEGACY(ms32_tx1_ram_w) AM_BASE(m_ms32_tx1_ram) - AM_RANGE(0xfea08000, 0xfea0ffff) AM_RAM_WRITE_LEGACY(ms32_bg1_ram_w) AM_BASE(m_ms32_bg1_ram) - AM_RANGE(0xfec00000, 0xfec07fff) AM_RAM_WRITE_LEGACY(ms32_tx0_ram_w) AM_BASE(m_ms32_tx0_ram) - AM_RANGE(0xfec08000, 0xfec0ffff) AM_RAM_WRITE_LEGACY(ms32_bg0_ram_w) AM_BASE(m_ms32_bg0_ram) + AM_RANGE(0xfd200000, 0xfd237fff) AM_RAM_WRITE(ms32_pal1_ram_w) AM_BASE(m_ms32_pal_ram[1]) + AM_RANGE(0xfd400000, 0xfd437fff) AM_RAM_WRITE(ms32_pal0_ram_w) AM_BASE(m_ms32_pal_ram[0]) + AM_RANGE(0xfe000000, 0xfe01ffff) AM_RAM_WRITE(ms32_roz1_ram_w) AM_BASE(m_ms32_roz1_ram) + AM_RANGE(0xfe400000, 0xfe41ffff) AM_RAM_WRITE(ms32_roz0_ram_w) AM_BASE(m_ms32_roz0_ram) + AM_RANGE(0xfe800000, 0xfe83ffff) AM_RAM_WRITE(ms32_spramx_w) AM_BASE(m_ms32_spram) + AM_RANGE(0xfea00000, 0xfea07fff) AM_RAM_WRITE(ms32_tx1_ram_w) AM_BASE(m_ms32_tx1_ram) + AM_RANGE(0xfea08000, 0xfea0ffff) AM_RAM_WRITE(ms32_bg1_ram_w) AM_BASE(m_ms32_bg1_ram) + AM_RANGE(0xfec00000, 0xfec07fff) AM_RAM_WRITE(ms32_tx0_ram_w) AM_BASE(m_ms32_tx0_ram) + AM_RANGE(0xfec08000, 0xfec0ffff) AM_RAM_WRITE(ms32_bg0_ram_w) AM_BASE(m_ms32_bg0_ram) AM_RANGE(0xfee00000, 0xfee1ffff) AM_RAM AM_RANGE(0xffe00000, 0xffffffff) AM_ROMBANK("bank1") diff --git a/src/mame/drivers/boxer.c b/src/mame/drivers/boxer.c index 353ba5ef184..30acd34be9a 100644 --- a/src/mame/drivers/boxer.c +++ b/src/mame/drivers/boxer.c @@ -36,6 +36,14 @@ public: /* devices */ device_t *m_maincpu; + DECLARE_READ8_MEMBER(boxer_input_r); + DECLARE_READ8_MEMBER(boxer_misc_r); + DECLARE_WRITE8_MEMBER(boxer_bell_w); + DECLARE_WRITE8_MEMBER(boxer_sound_w); + DECLARE_WRITE8_MEMBER(boxer_pot_w); + DECLARE_WRITE8_MEMBER(boxer_irq_reset_w); + DECLARE_WRITE8_MEMBER(boxer_crowd_w); + DECLARE_WRITE8_MEMBER(boxer_led_w); }; /************************************* @@ -191,38 +199,37 @@ static SCREEN_UPDATE_IND16( boxer ) * *************************************/ -static READ8_HANDLER( boxer_input_r ) +READ8_MEMBER(boxer_state::boxer_input_r) { - UINT8 val = input_port_read(space->machine(), "IN0"); + UINT8 val = input_port_read(machine(), "IN0"); - if (input_port_read(space->machine(), "IN3") < space->machine().primary_screen->vpos()) + if (input_port_read(machine(), "IN3") < machine().primary_screen->vpos()) val |= 0x02; return (val << ((offset & 7) ^ 7)) & 0x80; } -static READ8_HANDLER( boxer_misc_r ) +READ8_MEMBER(boxer_state::boxer_misc_r) { - boxer_state *state = space->machine().driver_data<boxer_state>(); UINT8 val = 0; switch (offset & 3) { case 0: - val = state->m_pot_state & state->m_pot_latch; + val = m_pot_state & m_pot_latch; break; case 1: - val = space->machine().primary_screen->vpos(); + val = machine().primary_screen->vpos(); break; case 2: - val = input_port_read(space->machine(), "IN1"); + val = input_port_read(machine(), "IN1"); break; case 3: - val = input_port_read(space->machine(), "IN2"); + val = input_port_read(machine(), "IN2"); break; } @@ -232,19 +239,18 @@ static READ8_HANDLER( boxer_misc_r ) -static WRITE8_HANDLER( boxer_bell_w ) +WRITE8_MEMBER(boxer_state::boxer_bell_w) { } -static WRITE8_HANDLER( boxer_sound_w ) +WRITE8_MEMBER(boxer_state::boxer_sound_w) { } -static WRITE8_HANDLER( boxer_pot_w ) +WRITE8_MEMBER(boxer_state::boxer_pot_w) { - boxer_state *state = space->machine().driver_data<boxer_state>(); /* BIT0 => HPOT1 */ /* BIT1 => VPOT1 */ /* BIT2 => RPOT1 */ @@ -252,34 +258,33 @@ static WRITE8_HANDLER( boxer_pot_w ) /* BIT4 => VPOT2 */ /* BIT5 => RPOT2 */ - state->m_pot_latch = data & 0x3f; + m_pot_latch = data & 0x3f; - device_set_input_line(state->m_maincpu, INPUT_LINE_NMI, CLEAR_LINE); + device_set_input_line(m_maincpu, INPUT_LINE_NMI, CLEAR_LINE); } -static WRITE8_HANDLER( boxer_irq_reset_w ) +WRITE8_MEMBER(boxer_state::boxer_irq_reset_w) { - boxer_state *state = space->machine().driver_data<boxer_state>(); - device_set_input_line(state->m_maincpu, 0, CLEAR_LINE); + device_set_input_line(m_maincpu, 0, CLEAR_LINE); } -static WRITE8_HANDLER( boxer_crowd_w ) +WRITE8_MEMBER(boxer_state::boxer_crowd_w) { /* BIT0 => ATTRACT */ /* BIT1 => CROWD-1 */ /* BIT2 => CROWD-2 */ /* BIT3 => CROWD-3 */ - coin_lockout_global_w(space->machine(), data & 1); + coin_lockout_global_w(machine(), data & 1); } -static WRITE8_HANDLER( boxer_led_w ) +WRITE8_MEMBER(boxer_state::boxer_led_w) { - set_led_status(space->machine(), 1, !(data & 1)); - set_led_status(space->machine(), 0, !(data & 2)); + set_led_status(machine(), 1, !(data & 1)); + set_led_status(machine(), 0, !(data & 2)); } @@ -293,14 +298,14 @@ static ADDRESS_MAP_START( boxer_map, AS_PROGRAM, 8, boxer_state ) ADDRESS_MAP_GLOBAL_MASK(0x3fff) AM_RANGE(0x0000, 0x01ff) AM_RAM AM_RANGE(0x0200, 0x03ff) AM_RAM AM_BASE(m_tile_ram) - AM_RANGE(0x0800, 0x08ff) AM_READ_LEGACY(boxer_input_r) - AM_RANGE(0x1000, 0x17ff) AM_READ_LEGACY(boxer_misc_r) - AM_RANGE(0x1800, 0x1800) AM_WRITE_LEGACY(boxer_pot_w) - AM_RANGE(0x1900, 0x19ff) AM_WRITE_LEGACY(boxer_led_w) - AM_RANGE(0x1a00, 0x1aff) AM_WRITE_LEGACY(boxer_sound_w) - AM_RANGE(0x1b00, 0x1bff) AM_WRITE_LEGACY(boxer_crowd_w) - AM_RANGE(0x1c00, 0x1cff) AM_WRITE_LEGACY(boxer_irq_reset_w) - AM_RANGE(0x1d00, 0x1dff) AM_WRITE_LEGACY(boxer_bell_w) + AM_RANGE(0x0800, 0x08ff) AM_READ(boxer_input_r) + AM_RANGE(0x1000, 0x17ff) AM_READ(boxer_misc_r) + AM_RANGE(0x1800, 0x1800) AM_WRITE(boxer_pot_w) + AM_RANGE(0x1900, 0x19ff) AM_WRITE(boxer_led_w) + AM_RANGE(0x1a00, 0x1aff) AM_WRITE(boxer_sound_w) + AM_RANGE(0x1b00, 0x1bff) AM_WRITE(boxer_crowd_w) + AM_RANGE(0x1c00, 0x1cff) AM_WRITE(boxer_irq_reset_w) + AM_RANGE(0x1d00, 0x1dff) AM_WRITE(boxer_bell_w) AM_RANGE(0x1e00, 0x1eff) AM_WRITEONLY AM_BASE(m_sprite_ram) AM_RANGE(0x1f00, 0x1fff) AM_WRITE_LEGACY(watchdog_reset_w) AM_RANGE(0x3000, 0x3fff) AM_ROM diff --git a/src/mame/drivers/buster.c b/src/mame/drivers/buster.c index 72113e5a740..aab2b9294f9 100644 --- a/src/mame/drivers/buster.c +++ b/src/mame/drivers/buster.c @@ -19,6 +19,7 @@ public: : driver_device(mconfig, type, tag) { } UINT8 *m_vram; + DECLARE_READ8_MEMBER(test_r); }; @@ -50,9 +51,9 @@ static SCREEN_UPDATE_IND16(buster) } #if 0 -static READ8_HANDLER( test_r ) +READ8_MEMBER(buster_state::test_r) { - return space->machine().rand(); + return machine().rand(); } #endif @@ -71,7 +72,7 @@ static ADDRESS_MAP_START( mainmap, AS_PROGRAM, 8, buster_state ) AM_RANGE(0x7c8c, 0x7c8c) AM_READ_PORT("IN6") AM_RANGE(0x7c8e, 0x7c8e) AM_READ_PORT("IN7") AM_RANGE(0x7c00, 0x7cff) AM_RAM // ??? - AM_RANGE(0x8800, 0x8fff) AM_RAM AM_SHARE("wram")//AM_READ_LEGACY(test_r) // ??? + AM_RANGE(0x8800, 0x8fff) AM_RAM AM_SHARE("wram")//AM_READ(test_r) // ??? AM_RANGE(0xa000, 0xa0ff) AM_RAM // nvram? ADDRESS_MAP_END diff --git a/src/mame/drivers/bwidow.c b/src/mame/drivers/bwidow.c index 835f97d8289..b7b2ff07ec7 100644 --- a/src/mame/drivers/bwidow.c +++ b/src/mame/drivers/bwidow.c @@ -231,6 +231,9 @@ public: : driver_device(mconfig, type, tag) { } int m_lastdata; + DECLARE_READ8_MEMBER(spacduel_IN3_r); + DECLARE_WRITE8_MEMBER(bwidow_misc_w); + DECLARE_WRITE8_MEMBER(irq_ack_w); }; @@ -263,16 +266,16 @@ Typically, only the high 2 bits are read. */ -static READ8_HANDLER( spacduel_IN3_r ) +READ8_MEMBER(bwidow_state::spacduel_IN3_r) { int res; int res1; int res2; int res3; - res1 = input_port_read(space->machine(), "IN3"); - res2 = input_port_read(space->machine(), "IN4"); - res3 = input_port_read_safe(space->machine(), "DSW2", 0); + res1 = input_port_read(machine(), "IN3"); + res2 = input_port_read(machine(), "IN4"); + res3 = input_port_read_safe(machine(), "DSW2", 0); res = 0x00; switch (offset & 0x07) @@ -326,9 +329,8 @@ static CUSTOM_INPUT( clock_r ) * *************************************/ -static WRITE8_HANDLER( bwidow_misc_w ) +WRITE8_MEMBER(bwidow_state::bwidow_misc_w) { - bwidow_state *state = space->machine().driver_data<bwidow_state>(); /* 0x10 = p1 led 0x20 = p2 led @@ -336,12 +338,12 @@ static WRITE8_HANDLER( bwidow_misc_w ) 0x02 = coin counter 2 */ - if (data == state->m_lastdata) return; - set_led_status(space->machine(), 0,~data & 0x10); - set_led_status(space->machine(), 1,~data & 0x20); - coin_counter_w(space->machine(), 0, data & 0x01); - coin_counter_w(space->machine(), 1, data & 0x02); - state->m_lastdata = data; + if (data == m_lastdata) return; + set_led_status(machine(), 0,~data & 0x10); + set_led_status(machine(), 1,~data & 0x20); + coin_counter_w(machine(), 0, data & 0x01); + coin_counter_w(machine(), 1, data & 0x02); + m_lastdata = data; } /************************************* @@ -350,9 +352,9 @@ static WRITE8_HANDLER( bwidow_misc_w ) * *************************************/ -static WRITE8_HANDLER( irq_ack_w ) +WRITE8_MEMBER(bwidow_state::irq_ack_w) { - cputag_set_input_line(space->machine(), "maincpu", 0, CLEAR_LINE); + cputag_set_input_line(machine(), "maincpu", 0, CLEAR_LINE); } @@ -372,10 +374,10 @@ static ADDRESS_MAP_START( bwidow_map, AS_PROGRAM, 8, bwidow_state ) AM_RANGE(0x7800, 0x7800) AM_READ_PORT("IN0") AM_RANGE(0x8000, 0x8000) AM_READ_PORT("IN3") AM_RANGE(0x8800, 0x8800) AM_READ_PORT("IN4") - AM_RANGE(0x8800, 0x8800) AM_WRITE_LEGACY(bwidow_misc_w) /* coin counters, leds */ + AM_RANGE(0x8800, 0x8800) AM_WRITE(bwidow_misc_w) /* coin counters, leds */ AM_RANGE(0x8840, 0x8840) AM_WRITE_LEGACY(avgdvg_go_w) AM_RANGE(0x8880, 0x8880) AM_WRITE_LEGACY(avgdvg_reset_w) - AM_RANGE(0x88c0, 0x88c0) AM_WRITE_LEGACY(irq_ack_w) /* interrupt acknowledge */ + AM_RANGE(0x88c0, 0x88c0) AM_WRITE(irq_ack_w) /* interrupt acknowledge */ AM_RANGE(0x8900, 0x8900) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w) AM_RANGE(0x8940, 0x897f) AM_DEVWRITE("earom", atari_vg_earom_device, write) AM_RANGE(0x8980, 0x89ed) AM_WRITENOP /* watchdog clear */ @@ -386,14 +388,14 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( spacduel_map, AS_PROGRAM, 8, bwidow_state ) AM_RANGE(0x0000, 0x03ff) AM_RAM AM_RANGE(0x0800, 0x0800) AM_READ_PORT("IN0") - AM_RANGE(0x0900, 0x0907) AM_READ_LEGACY(spacduel_IN3_r) /* IN1 */ + AM_RANGE(0x0900, 0x0907) AM_READ(spacduel_IN3_r) /* IN1 */ AM_RANGE(0x0905, 0x0906) AM_WRITENOP /* ignore? */ AM_RANGE(0x0a00, 0x0a00) AM_DEVREAD("earom", atari_vg_earom_device, read) // AM_RANGE(0x0c00, 0x0c00) AM_WRITE_LEGACY(coin_counter_w) /* coin out */ AM_RANGE(0x0c80, 0x0c80) AM_WRITE_LEGACY(avgdvg_go_w) AM_RANGE(0x0d00, 0x0d00) AM_WRITENOP /* watchdog clear */ AM_RANGE(0x0d80, 0x0d80) AM_WRITE_LEGACY(avgdvg_reset_w) - AM_RANGE(0x0e00, 0x0e00) AM_WRITE_LEGACY(irq_ack_w) /* interrupt acknowledge */ + AM_RANGE(0x0e00, 0x0e00) AM_WRITE(irq_ack_w) /* interrupt acknowledge */ AM_RANGE(0x0e80, 0x0e80) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w) AM_RANGE(0x0f00, 0x0f3f) AM_DEVWRITE("earom", atari_vg_earom_device, write) AM_RANGE(0x1000, 0x100f) AM_DEVREADWRITE_LEGACY("pokey1", pokey_r, pokey_w) diff --git a/src/mame/drivers/calorie.c b/src/mame/drivers/calorie.c index 585184e9693..0cceb7142a5 100644 --- a/src/mame/drivers/calorie.c +++ b/src/mame/drivers/calorie.c @@ -98,6 +98,11 @@ public: tilemap_t *m_bg_tilemap; tilemap_t *m_fg_tilemap; UINT8 m_bg_bank; + DECLARE_WRITE8_MEMBER(fg_ram_w); + DECLARE_WRITE8_MEMBER(bg_bank_w); + DECLARE_WRITE8_MEMBER(calorie_flipscreen_w); + DECLARE_READ8_MEMBER(calorie_soundlatch_r); + DECLARE_WRITE8_MEMBER(bogus_w); }; @@ -198,35 +203,33 @@ static SCREEN_UPDATE_IND16( calorie ) * *************************************/ -static WRITE8_HANDLER( fg_ram_w ) +WRITE8_MEMBER(calorie_state::fg_ram_w) { - calorie_state *state = space->machine().driver_data<calorie_state>(); - state->m_fg_ram[offset] = data; - state->m_fg_tilemap->mark_tile_dirty(offset & 0x3ff); + m_fg_ram[offset] = data; + m_fg_tilemap->mark_tile_dirty(offset & 0x3ff); } -static WRITE8_HANDLER( bg_bank_w ) +WRITE8_MEMBER(calorie_state::bg_bank_w) { - calorie_state *state = space->machine().driver_data<calorie_state>(); - if((state->m_bg_bank & ~0x10) != (data & ~0x10)) - state->m_bg_tilemap->mark_all_dirty(); + if((m_bg_bank & ~0x10) != (data & ~0x10)) + m_bg_tilemap->mark_all_dirty(); - state->m_bg_bank = data; + m_bg_bank = data; } -static WRITE8_HANDLER( calorie_flipscreen_w ) +WRITE8_MEMBER(calorie_state::calorie_flipscreen_w) { - flip_screen_set(space->machine(), data & 1); + flip_screen_set(machine(), data & 1); } -static READ8_HANDLER( calorie_soundlatch_r ) +READ8_MEMBER(calorie_state::calorie_soundlatch_r) { UINT8 latch = soundlatch_r(space, 0); soundlatch_clear_w(space, 0, 0); return latch; } -static WRITE8_HANDLER( bogus_w ) +WRITE8_MEMBER(calorie_state::bogus_w) { popmessage("written to 3rd sound chip: data = %02X port = %02X", data, offset); } @@ -241,14 +244,14 @@ static ADDRESS_MAP_START( calorie_map, AS_PROGRAM, 8, calorie_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0xbfff) AM_ROM AM_RANGE(0xc000, 0xcfff) AM_RAM - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE_LEGACY(fg_ram_w) AM_BASE(m_fg_ram) + AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(fg_ram_w) AM_BASE(m_fg_ram) AM_RANGE(0xd800, 0xdbff) AM_RAM AM_BASE(m_sprites) AM_RANGE(0xdc00, 0xdcff) AM_RAM_WRITE_LEGACY(paletteram_xxxxBBBBGGGGRRRR_le_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0xde00, 0xde00) AM_WRITE_LEGACY(bg_bank_w) + AM_RANGE(0xde00, 0xde00) AM_WRITE(bg_bank_w) AM_RANGE(0xf000, 0xf000) AM_READ_PORT("P1") AM_RANGE(0xf001, 0xf001) AM_READ_PORT("P2") AM_RANGE(0xf002, 0xf002) AM_READ_PORT("SYSTEM") - AM_RANGE(0xf004, 0xf004) AM_READ_PORT("DSW1") AM_WRITE_LEGACY(calorie_flipscreen_w) + AM_RANGE(0xf004, 0xf004) AM_READ_PORT("DSW1") AM_WRITE(calorie_flipscreen_w) AM_RANGE(0xf005, 0xf005) AM_READ_PORT("DSW2") AM_RANGE(0xf800, 0xf800) AM_WRITE_LEGACY(soundlatch_w) ADDRESS_MAP_END @@ -257,7 +260,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( calorie_sound_map, AS_PROGRAM, 8, calorie_state ) AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xc000, 0xc000) AM_READ_LEGACY(calorie_soundlatch_r) + AM_RANGE(0xc000, 0xc000) AM_READ(calorie_soundlatch_r) ADDRESS_MAP_END static ADDRESS_MAP_START( calorie_sound_io_map, AS_IO, 8, calorie_state ) @@ -267,7 +270,7 @@ static ADDRESS_MAP_START( calorie_sound_io_map, AS_IO, 8, calorie_state ) AM_RANGE(0x10, 0x11) AM_DEVWRITE_LEGACY("ay2", ay8910_address_data_w) AM_RANGE(0x11, 0x11) AM_DEVREAD_LEGACY("ay2", ay8910_r) // 3rd ? - AM_RANGE(0x00, 0xff) AM_WRITE_LEGACY(bogus_w) + AM_RANGE(0x00, 0xff) AM_WRITE(bogus_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/cardline.c b/src/mame/drivers/cardline.c index 17e11631c3e..beb62b1275a 100644 --- a/src/mame/drivers/cardline.c +++ b/src/mame/drivers/cardline.c @@ -33,6 +33,11 @@ public: UINT8 *m_videoram; UINT8 *m_colorram; int m_var; + DECLARE_WRITE8_MEMBER(vram_w); + DECLARE_WRITE8_MEMBER(attr_w); + DECLARE_WRITE8_MEMBER(video_w); + DECLARE_READ8_MEMBER(unk_r); + DECLARE_WRITE8_MEMBER(lamps_w); }; @@ -70,35 +75,31 @@ static SCREEN_UPDATE_IND16( cardline ) return 0; } -static WRITE8_HANDLER(vram_w) +WRITE8_MEMBER(cardline_state::vram_w) { - cardline_state *state = space->machine().driver_data<cardline_state>(); - offset+=0x1000*((state->m_video&2)>>1); - state->m_videoram[offset]=data; + offset+=0x1000*((m_video&2)>>1); + m_videoram[offset]=data; } -static WRITE8_HANDLER(attr_w) +WRITE8_MEMBER(cardline_state::attr_w) { - cardline_state *state = space->machine().driver_data<cardline_state>(); - offset+=0x1000*((state->m_video&2)>>1); - state->m_colorram[offset]=data; + offset+=0x1000*((m_video&2)>>1); + m_colorram[offset]=data; } -static WRITE8_HANDLER(video_w) +WRITE8_MEMBER(cardline_state::video_w) { - cardline_state *state = space->machine().driver_data<cardline_state>(); - state->m_video=data; + m_video=data; } -static READ8_HANDLER(unk_r) +READ8_MEMBER(cardline_state::unk_r) { - cardline_state *state = space->machine().driver_data<cardline_state>(); - state->m_var^=0x10; - //printf("var %d\n",state->m_var); - return state->m_var; + m_var^=0x10; + //printf("var %d\n",m_var); + return m_var; } -static WRITE8_HANDLER(lamps_w) +WRITE8_MEMBER(cardline_state::lamps_w) { /* button lamps 1-8 (collect, card 1-5, bet, start) */ output_set_lamp_value(5,(data >> 0) & 1); @@ -120,7 +121,7 @@ static ADDRESS_MAP_START( mem_io, AS_IO, 8, cardline_state ) AM_RANGE(0x2003, 0x2003) AM_READ_PORT("IN0") AM_RANGE(0x2005, 0x2005) AM_READ_PORT("IN1") AM_RANGE(0x2006, 0x2006) AM_READ_PORT("DSW") - AM_RANGE(0x2007, 0x2007) AM_WRITE_LEGACY(lamps_w) + AM_RANGE(0x2007, 0x2007) AM_WRITE(lamps_w) AM_RANGE(0x2008, 0x2008) AM_NOP AM_RANGE(0x2080, 0x213f) AM_NOP AM_RANGE(0x2400, 0x2400) AM_DEVREADWRITE("oki", okim6295_device, read, write) @@ -128,10 +129,10 @@ static ADDRESS_MAP_START( mem_io, AS_IO, 8, cardline_state ) AM_RANGE(0x2840, 0x2840) AM_NOP AM_RANGE(0x2880, 0x2880) AM_NOP AM_RANGE(0x3003, 0x3003) AM_NOP - AM_RANGE(0xc000, 0xdfff) AM_WRITE_LEGACY(vram_w) AM_BASE(m_videoram) - AM_RANGE(0xe000, 0xffff) AM_WRITE_LEGACY(attr_w) AM_BASE(m_colorram) + AM_RANGE(0xc000, 0xdfff) AM_WRITE(vram_w) AM_BASE(m_videoram) + AM_RANGE(0xe000, 0xffff) AM_WRITE(attr_w) AM_BASE(m_colorram) /* Ports */ - AM_RANGE(MCS51_PORT_P1, MCS51_PORT_P1) AM_READWRITE_LEGACY(unk_r, video_w) + AM_RANGE(MCS51_PORT_P1, MCS51_PORT_P1) AM_READWRITE(unk_r, video_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/caswin.c b/src/mame/drivers/caswin.c index 0db63bb5627..4a452894d65 100644 --- a/src/mame/drivers/caswin.c +++ b/src/mame/drivers/caswin.c @@ -56,6 +56,13 @@ public: UINT8 *m_sc0_vram; UINT8 *m_sc0_attr; tilemap_t *m_sc0_tilemap; + DECLARE_WRITE8_MEMBER(sc0_vram_w); + DECLARE_WRITE8_MEMBER(sc0_attr_w); + DECLARE_WRITE8_MEMBER(vvillage_scroll_w); + DECLARE_WRITE8_MEMBER(vvillage_vregs_w); + DECLARE_READ8_MEMBER(vvillage_rng_r); + DECLARE_WRITE8_MEMBER(vvillage_output_w); + DECLARE_WRITE8_MEMBER(vvillage_lamps_w); }; @@ -86,31 +93,29 @@ static SCREEN_UPDATE_IND16(vvillage) return 0; } -static WRITE8_HANDLER( sc0_vram_w ) +WRITE8_MEMBER(caswin_state::sc0_vram_w) { - caswin_state *state = space->machine().driver_data<caswin_state>(); - state->m_sc0_vram[offset] = data; - state->m_sc0_tilemap->mark_tile_dirty(offset); + m_sc0_vram[offset] = data; + m_sc0_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( sc0_attr_w ) +WRITE8_MEMBER(caswin_state::sc0_attr_w) { - caswin_state *state = space->machine().driver_data<caswin_state>(); - state->m_sc0_attr[offset] = data; - state->m_sc0_tilemap->mark_tile_dirty(offset); + m_sc0_attr[offset] = data; + m_sc0_tilemap->mark_tile_dirty(offset); } /*These two are tested during the two cherry sub-games.I really don't know what is supposed to do...*/ -static WRITE8_HANDLER( vvillage_scroll_w ) +WRITE8_MEMBER(caswin_state::vvillage_scroll_w) { //... } /*---- --x- window effect? */ /*---- ---x flip screen */ -static WRITE8_HANDLER( vvillage_vregs_w ) +WRITE8_MEMBER(caswin_state::vvillage_vregs_w) { - flip_screen_set(space->machine(), data & 1); + flip_screen_set(machine(), data & 1); } /********************** @@ -119,21 +124,21 @@ static WRITE8_HANDLER( vvillage_vregs_w ) * **********************/ -static READ8_HANDLER( vvillage_rng_r ) +READ8_MEMBER(caswin_state::vvillage_rng_r) { - return space->machine().rand(); + return machine().rand(); } -static WRITE8_HANDLER( vvillage_output_w ) +WRITE8_MEMBER(caswin_state::vvillage_output_w) { - coin_counter_w(space->machine(), 0,data & 1); - coin_counter_w(space->machine(), 1,data & 1); + coin_counter_w(machine(), 0,data & 1); + coin_counter_w(machine(), 1,data & 1); // data & 4 payout counter - coin_lockout_w(space->machine(), 0,data & 0x20); - coin_lockout_w(space->machine(), 1,data & 0x20); + coin_lockout_w(machine(), 0,data & 0x20); + coin_lockout_w(machine(), 1,data & 0x20); } -static WRITE8_HANDLER( vvillage_lamps_w ) +WRITE8_MEMBER(caswin_state::vvillage_lamps_w) { /* ---x ---- lamp button 5 @@ -142,19 +147,19 @@ static WRITE8_HANDLER( vvillage_lamps_w ) ---- --x- lamp button 2 ---- ---x lamp button 1 */ - set_led_status(space->machine(), 0, data & 0x01); - set_led_status(space->machine(), 1, data & 0x02); - set_led_status(space->machine(), 2, data & 0x04); - set_led_status(space->machine(), 3, data & 0x08); - set_led_status(space->machine(), 4, data & 0x10); + set_led_status(machine(), 0, data & 0x01); + set_led_status(machine(), 1, data & 0x02); + set_led_status(machine(), 2, data & 0x04); + set_led_status(machine(), 3, data & 0x08); + set_led_status(machine(), 4, data & 0x10); } static ADDRESS_MAP_START( vvillage_mem, AS_PROGRAM, 8, caswin_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xa000, 0xa000) AM_READ_LEGACY(vvillage_rng_r) //accessed by caswin only + AM_RANGE(0xa000, 0xa000) AM_READ(vvillage_rng_r) //accessed by caswin only AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE_LEGACY(sc0_vram_w) AM_BASE(m_sc0_vram) - AM_RANGE(0xf800, 0xfbff) AM_RAM_WRITE_LEGACY(sc0_attr_w) AM_BASE(m_sc0_attr) + AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(sc0_vram_w) AM_BASE(m_sc0_vram) + AM_RANGE(0xf800, 0xfbff) AM_RAM_WRITE(sc0_attr_w) AM_BASE(m_sc0_attr) ADDRESS_MAP_END static ADDRESS_MAP_START( vvillage_io, AS_IO, 8, caswin_state ) @@ -163,10 +168,10 @@ static ADDRESS_MAP_START( vvillage_io, AS_IO, 8, caswin_state ) AM_RANGE(0x02,0x03) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_address_w) AM_RANGE(0x10,0x10) AM_READ_PORT("IN0") AM_RANGE(0x11,0x11) AM_READ_PORT("IN1") - AM_RANGE(0x10,0x10) AM_WRITE_LEGACY(vvillage_scroll_w) - AM_RANGE(0x11,0x11) AM_WRITE_LEGACY(vvillage_vregs_w) - AM_RANGE(0x12,0x12) AM_WRITE_LEGACY(vvillage_lamps_w) - AM_RANGE(0x13,0x13) AM_WRITE_LEGACY(vvillage_output_w) + AM_RANGE(0x10,0x10) AM_WRITE(vvillage_scroll_w) + AM_RANGE(0x11,0x11) AM_WRITE(vvillage_vregs_w) + AM_RANGE(0x12,0x12) AM_WRITE(vvillage_lamps_w) + AM_RANGE(0x13,0x13) AM_WRITE(vvillage_output_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/cball.c b/src/mame/drivers/cball.c index 11b758d7d66..2d52981d9ed 100644 --- a/src/mame/drivers/cball.c +++ b/src/mame/drivers/cball.c @@ -22,6 +22,9 @@ public: /* devices */ device_t *m_maincpu; + DECLARE_WRITE8_MEMBER(cball_vram_w); + DECLARE_READ8_MEMBER(cball_wram_r); + DECLARE_WRITE8_MEMBER(cball_wram_w); }; @@ -34,12 +37,11 @@ static TILE_GET_INFO( get_tile_info ) } -static WRITE8_HANDLER( cball_vram_w ) +WRITE8_MEMBER(cball_state::cball_vram_w) { - cball_state *state = space->machine().driver_data<cball_state>(); - state->m_video_ram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_video_ram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } @@ -107,19 +109,17 @@ static PALETTE_INIT( cball ) } -static READ8_HANDLER( cball_wram_r ) +READ8_MEMBER(cball_state::cball_wram_r) { - cball_state *state = space->machine().driver_data<cball_state>(); - return state->m_video_ram[0x380 + offset]; + return m_video_ram[0x380 + offset]; } -static WRITE8_HANDLER( cball_wram_w ) +WRITE8_MEMBER(cball_state::cball_wram_w) { - cball_state *state = space->machine().driver_data<cball_state>(); - state->m_video_ram[0x380 + offset] = data; + m_video_ram[0x380 + offset] = data; } @@ -127,7 +127,7 @@ static WRITE8_HANDLER( cball_wram_w ) static ADDRESS_MAP_START( cpu_map, AS_PROGRAM, 8, cball_state ) ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x03ff) AM_READ_LEGACY(cball_wram_r) AM_MASK(0x7f) + AM_RANGE(0x0000, 0x03ff) AM_READ(cball_wram_r) AM_MASK(0x7f) AM_RANGE(0x0400, 0x07ff) AM_READONLY AM_RANGE(0x1001, 0x1001) AM_READ_PORT("1001") AM_RANGE(0x1003, 0x1003) AM_READ_PORT("1003") @@ -137,8 +137,8 @@ static ADDRESS_MAP_START( cpu_map, AS_PROGRAM, 8, cball_state ) AM_RANGE(0x2000, 0x2001) AM_NOP AM_RANGE(0x2800, 0x2800) AM_READ_PORT("2800") - AM_RANGE(0x0000, 0x03ff) AM_WRITE_LEGACY(cball_wram_w) AM_MASK(0x7f) - AM_RANGE(0x0400, 0x07ff) AM_WRITE_LEGACY(cball_vram_w) AM_BASE(m_video_ram) + AM_RANGE(0x0000, 0x03ff) AM_WRITE(cball_wram_w) AM_MASK(0x7f) + AM_RANGE(0x0400, 0x07ff) AM_WRITE(cball_vram_w) AM_BASE(m_video_ram) AM_RANGE(0x1800, 0x1800) AM_NOP /* watchdog? */ AM_RANGE(0x1810, 0x1811) AM_NOP AM_RANGE(0x1820, 0x1821) AM_NOP diff --git a/src/mame/drivers/chanbara.c b/src/mame/drivers/chanbara.c index 3c139821315..acef87fc3bd 100644 --- a/src/mame/drivers/chanbara.c +++ b/src/mame/drivers/chanbara.c @@ -74,6 +74,10 @@ public: /* devices */ device_t *m_maincpu; + DECLARE_WRITE8_MEMBER(chanbara_videoram_w); + DECLARE_WRITE8_MEMBER(chanbara_colorram_w); + DECLARE_WRITE8_MEMBER(chanbara_videoram2_w); + DECLARE_WRITE8_MEMBER(chanbara_colorram2_w); }; @@ -91,36 +95,32 @@ static PALETTE_INIT( chanbara ) } } -static WRITE8_HANDLER( chanbara_videoram_w ) +WRITE8_MEMBER(chanbara_state::chanbara_videoram_w) { - chanbara_state *state = space->machine().driver_data<chanbara_state>(); - state->m_videoram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_videoram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( chanbara_colorram_w ) +WRITE8_MEMBER(chanbara_state::chanbara_colorram_w) { - chanbara_state *state = space->machine().driver_data<chanbara_state>(); - state->m_colorram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_colorram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( chanbara_videoram2_w ) +WRITE8_MEMBER(chanbara_state::chanbara_videoram2_w) { - chanbara_state *state = space->machine().driver_data<chanbara_state>(); - state->m_videoram2[offset] = data; - state->m_bg2_tilemap->mark_tile_dirty(offset); + m_videoram2[offset] = data; + m_bg2_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( chanbara_colorram2_w ) +WRITE8_MEMBER(chanbara_state::chanbara_colorram2_w) { - chanbara_state *state = space->machine().driver_data<chanbara_state>(); - state->m_colorram2[offset] = data; - state->m_bg2_tilemap->mark_tile_dirty(offset); + m_colorram2[offset] = data; + m_bg2_tilemap->mark_tile_dirty(offset); } @@ -209,11 +209,11 @@ static SCREEN_UPDATE_IND16( chanbara ) static ADDRESS_MAP_START( chanbara_map, AS_PROGRAM, 8, chanbara_state ) AM_RANGE(0x0000, 0x07ff) AM_RAM - AM_RANGE(0x0800, 0x0bff) AM_RAM_WRITE_LEGACY(chanbara_videoram_w) AM_BASE(m_videoram) - AM_RANGE(0x0c00, 0x0fff) AM_RAM_WRITE_LEGACY(chanbara_colorram_w) AM_BASE(m_colorram) + AM_RANGE(0x0800, 0x0bff) AM_RAM_WRITE(chanbara_videoram_w) AM_BASE(m_videoram) + AM_RANGE(0x0c00, 0x0fff) AM_RAM_WRITE(chanbara_colorram_w) AM_BASE(m_colorram) AM_RANGE(0x1000, 0x10ff) AM_RAM AM_BASE(m_spriteram) - AM_RANGE(0x1800, 0x19ff) AM_RAM_WRITE_LEGACY(chanbara_videoram2_w) AM_BASE(m_videoram2) - AM_RANGE(0x1a00, 0x1bff) AM_RAM_WRITE_LEGACY(chanbara_colorram2_w) AM_BASE(m_colorram2) + AM_RANGE(0x1800, 0x19ff) AM_RAM_WRITE(chanbara_videoram2_w) AM_BASE(m_videoram2) + AM_RANGE(0x1a00, 0x1bff) AM_RAM_WRITE(chanbara_colorram2_w) AM_BASE(m_colorram2) AM_RANGE(0x2000, 0x2000) AM_READ_PORT("DSW1") AM_RANGE(0x2001, 0x2001) AM_READ_PORT("SYSTEM") AM_RANGE(0x2002, 0x2002) AM_READ_PORT("P2") diff --git a/src/mame/drivers/chinsan.c b/src/mame/drivers/chinsan.c index eb6267fa55c..e9c4c00f7d3 100644 --- a/src/mame/drivers/chinsan.c +++ b/src/mame/drivers/chinsan.c @@ -62,6 +62,10 @@ public: UINT8 m_adpcm_idle; UINT8 m_adpcm_data; UINT8 m_trigger; + DECLARE_WRITE8_MEMBER(ctrl_w); + DECLARE_WRITE8_MEMBER(chinsan_port00_w); + DECLARE_READ8_MEMBER(chinsan_input_port_0_r); + DECLARE_READ8_MEMBER(chinsan_input_port_1_r); }; @@ -112,9 +116,9 @@ static SCREEN_UPDATE_IND16( chinsan ) * *************************************/ -static WRITE8_HANDLER( ctrl_w ) +WRITE8_MEMBER(chinsan_state::ctrl_w) { - memory_set_bank(space->machine(), "bank1", data >> 6); + memory_set_bank(machine(), "bank1", data >> 6); } static WRITE8_DEVICE_HANDLER( ym_port_w1 ) @@ -141,11 +145,10 @@ static const ym2203_interface ym2203_config = }, }; -static WRITE8_HANDLER( chinsan_port00_w ) +WRITE8_MEMBER(chinsan_state::chinsan_port00_w) { - chinsan_state *state = space->machine().driver_data<chinsan_state>(); - state->m_port_select = data; + m_port_select = data; if ( (data != 0x40) && @@ -159,68 +162,66 @@ static WRITE8_HANDLER( chinsan_port00_w ) } -static READ8_HANDLER( chinsan_input_port_0_r ) +READ8_MEMBER(chinsan_state::chinsan_input_port_0_r) { - chinsan_state *state = space->machine().driver_data<chinsan_state>(); //return 0xff; // the inputs don't seem to work, so just return ff for now - switch (state->m_port_select) + switch (m_port_select) { /* i doubt these are both really the same.. */ case 0x40: case 0x4f: - return input_port_read(space->machine(), "MAHJONG_P2_1"); + return input_port_read(machine(), "MAHJONG_P2_1"); case 0x53: - return input_port_read(space->machine(), "MAHJONG_P2_2"); + return input_port_read(machine(), "MAHJONG_P2_2"); case 0x57: - return input_port_read(space->machine(), "MAHJONG_P2_3"); + return input_port_read(machine(), "MAHJONG_P2_3"); case 0x5b: - return input_port_read(space->machine(), "MAHJONG_P2_4"); + return input_port_read(machine(), "MAHJONG_P2_4"); case 0x5d: - return input_port_read(space->machine(), "MAHJONG_P2_5"); + return input_port_read(machine(), "MAHJONG_P2_5"); case 0x5e: - return input_port_read(space->machine(), "MAHJONG_P2_6"); + return input_port_read(machine(), "MAHJONG_P2_6"); } - printf("chinsan_input_port_0_r unk_r %02x\n", state->m_port_select); - return space->machine().rand(); + printf("chinsan_input_port_0_r unk_r %02x\n", m_port_select); + return machine().rand(); } -static READ8_HANDLER( chinsan_input_port_1_r ) +READ8_MEMBER(chinsan_state::chinsan_input_port_1_r) { - chinsan_state *state = space->machine().driver_data<chinsan_state>(); - switch (state->m_port_select) + switch (m_port_select) { /* i doubt these are both really the same.. */ case 0x40: case 0x4f: - return input_port_read(space->machine(), "MAHJONG_P1_1"); + return input_port_read(machine(), "MAHJONG_P1_1"); case 0x53: - return input_port_read(space->machine(), "MAHJONG_P1_2"); + return input_port_read(machine(), "MAHJONG_P1_2"); case 0x57: - return input_port_read(space->machine(), "MAHJONG_P1_3"); + return input_port_read(machine(), "MAHJONG_P1_3"); case 0x5b: - return input_port_read(space->machine(), "MAHJONG_P1_4"); + return input_port_read(machine(), "MAHJONG_P1_4"); case 0x5d: - return input_port_read(space->machine(), "MAHJONG_P1_5"); + return input_port_read(machine(), "MAHJONG_P1_5"); case 0x5e: - return input_port_read(space->machine(), "MAHJONG_P1_6"); + return input_port_read(machine(), "MAHJONG_P1_6"); } - printf("chinsan_input_port_1_r unk_r %02x\n", state->m_port_select); - return space->machine().rand(); + printf("chinsan_input_port_1_r unk_r %02x\n", m_port_select); + return machine().rand(); } static WRITE8_DEVICE_HANDLER( chin_adpcm_w ) @@ -246,12 +247,12 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( chinsan_io, AS_IO, 8, chinsan_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE_LEGACY(chinsan_port00_w) - AM_RANGE(0x01, 0x01) AM_READ_LEGACY(chinsan_input_port_0_r) - AM_RANGE(0x02, 0x02) AM_READ_LEGACY(chinsan_input_port_1_r) + AM_RANGE(0x00, 0x00) AM_WRITE(chinsan_port00_w) + AM_RANGE(0x01, 0x01) AM_READ(chinsan_input_port_0_r) + AM_RANGE(0x02, 0x02) AM_READ(chinsan_input_port_1_r) AM_RANGE(0x10, 0x11) AM_DEVREADWRITE_LEGACY("ymsnd", ym2203_r, ym2203_w) AM_RANGE(0x20, 0x20) AM_DEVWRITE_LEGACY("adpcm", chin_adpcm_w) - AM_RANGE(0x30, 0x30) AM_WRITE_LEGACY(ctrl_w) // ROM bank + unknown stuff (input mutliplex?) + AM_RANGE(0x30, 0x30) AM_WRITE(ctrl_w) // ROM bank + unknown stuff (input mutliplex?) ADDRESS_MAP_END diff --git a/src/mame/drivers/clayshoo.c b/src/mame/drivers/clayshoo.c index 0d15b31353c..7a23e9b65a6 100644 --- a/src/mame/drivers/clayshoo.c +++ b/src/mame/drivers/clayshoo.c @@ -31,6 +31,8 @@ public: emu_timer *m_analog_timer_1, *m_analog_timer_2; UINT8 m_input_port_select; UINT8 m_analog_port_val; + DECLARE_WRITE8_MEMBER(analog_reset_w); + DECLARE_READ8_MEMBER(analog_r); }; @@ -107,25 +109,23 @@ static attotime compute_duration( device_t *device, int analog_pos ) } -static WRITE8_HANDLER( analog_reset_w ) +WRITE8_MEMBER(clayshoo_state::analog_reset_w) { - clayshoo_state *state = space->machine().driver_data<clayshoo_state>(); /* reset the analog value, and start the two times that will fire off in a short period proportional to the position of the analog control and set the appropriate bit. */ - state->m_analog_port_val = 0xff; + m_analog_port_val = 0xff; - state->m_analog_timer_1->adjust(compute_duration(&space->device(), input_port_read(space->machine(), "AN1")), 0x02); - state->m_analog_timer_2->adjust(compute_duration(&space->device(), input_port_read(space->machine(), "AN2")), 0x01); + m_analog_timer_1->adjust(compute_duration(&space.device(), input_port_read(machine(), "AN1")), 0x02); + m_analog_timer_2->adjust(compute_duration(&space.device(), input_port_read(machine(), "AN2")), 0x01); } -static READ8_HANDLER( analog_r ) +READ8_MEMBER(clayshoo_state::analog_r) { - clayshoo_state *state = space->machine().driver_data<clayshoo_state>(); - return state->m_analog_port_val; + return m_analog_port_val; } @@ -222,7 +222,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, clayshoo_state ) AM_RANGE(0x4000, 0x47ff) AM_ROM AM_RANGE(0x8000, 0x97ff) AM_RAM AM_BASE_SIZE(m_videoram, m_videoram_size) /* 6k of video ram according to readme */ AM_RANGE(0x9800, 0xa800) AM_WRITENOP /* not really mapped, but cleared */ - AM_RANGE(0xc800, 0xc800) AM_READWRITE_LEGACY(analog_r, analog_reset_w) + AM_RANGE(0xc800, 0xc800) AM_READWRITE(analog_r, analog_reset_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/cliffhgr.c b/src/mame/drivers/cliffhgr.c index 0384741cc5b..e488e1be9ea 100644 --- a/src/mame/drivers/cliffhgr.c +++ b/src/mame/drivers/cliffhgr.c @@ -99,60 +99,66 @@ public: UINT32 m_phillips_code; emu_timer *m_irq_timer; + DECLARE_WRITE8_MEMBER(cliff_test_led_w); + DECLARE_WRITE8_MEMBER(cliff_port_bank_w); + DECLARE_READ8_MEMBER(cliff_port_r); + DECLARE_READ8_MEMBER(cliff_phillips_code_r); + DECLARE_WRITE8_MEMBER(cliff_phillips_clear_w); + DECLARE_WRITE8_MEMBER(cliff_coin_counter_w); + DECLARE_READ8_MEMBER(cliff_irq_ack_r); + DECLARE_WRITE8_MEMBER(cliff_ldwire_w); }; /********************************************************/ -static WRITE8_HANDLER( cliff_test_led_w ) +WRITE8_MEMBER(cliffhgr_state::cliff_test_led_w) { - set_led_status(space->machine(), 0, offset ^ 1); + set_led_status(machine(), 0, offset ^ 1); } -static WRITE8_HANDLER( cliff_port_bank_w ) +WRITE8_MEMBER(cliffhgr_state::cliff_port_bank_w) { - cliffhgr_state *state = space->machine().driver_data<cliffhgr_state>(); /* writing 0x0f clears the LS174 flip flop */ if (data == 0x0f) - state->m_port_bank = 0; + m_port_bank = 0; else - state->m_port_bank = data & 0x0f; /* only D3-D0 are connected */ + m_port_bank = data & 0x0f; /* only D3-D0 are connected */ } -static READ8_HANDLER( cliff_port_r ) +READ8_MEMBER(cliffhgr_state::cliff_port_r) { static const char *const banknames[] = { "BANK0", "BANK1", "BANK2", "BANK3", "BANK4", "BANK5", "BANK6" }; - cliffhgr_state *state = space->machine().driver_data<cliffhgr_state>(); - if (state->m_port_bank < 7) - return input_port_read(space->machine(), banknames[state->m_port_bank]); + + if (m_port_bank < 7) + return input_port_read(machine(), banknames[m_port_bank]); /* output is pulled up for non-mapped ports */ return 0xff; } -static READ8_HANDLER( cliff_phillips_code_r ) +READ8_MEMBER(cliffhgr_state::cliff_phillips_code_r) { - cliffhgr_state *state = space->machine().driver_data<cliffhgr_state>(); - return (state->m_phillips_code >> (8 * offset)) & 0xff; + return (m_phillips_code >> (8 * offset)) & 0xff; } -static WRITE8_HANDLER( cliff_phillips_clear_w ) +WRITE8_MEMBER(cliffhgr_state::cliff_phillips_clear_w) { /* reset serial to parallel converters */ } -static WRITE8_HANDLER( cliff_coin_counter_w ) +WRITE8_MEMBER(cliffhgr_state::cliff_coin_counter_w) { - coin_counter_w(space->machine(), 0, (data & 0x40) ? 1 : 0 ); + coin_counter_w(machine(), 0, (data & 0x40) ? 1 : 0 ); } -static READ8_HANDLER( cliff_irq_ack_r ) +READ8_MEMBER(cliffhgr_state::cliff_irq_ack_r) { /* deassert IRQ on the CPU */ - cputag_set_input_line(space->machine(), "maincpu", 0, CLEAR_LINE); + cputag_set_input_line(machine(), "maincpu", 0, CLEAR_LINE); return 0x00; } @@ -166,10 +172,9 @@ static WRITE8_DEVICE_HANDLER( cliff_sound_overlay_w ) // bit 4 (data & 0x10) is overlay related? } -static WRITE8_HANDLER( cliff_ldwire_w ) +WRITE8_MEMBER(cliffhgr_state::cliff_ldwire_w) { - cliffhgr_state *state = space->machine().driver_data<cliffhgr_state>(); - state->m_laserdisc->control_w((data & 1) ? ASSERT_LINE : CLEAR_LINE); + m_laserdisc->control_w((data & 1) ? ASSERT_LINE : CLEAR_LINE); } @@ -237,18 +242,18 @@ static ADDRESS_MAP_START( mainport, AS_IO, 8, cliffhgr_state ) AM_RANGE(0x44, 0x44) AM_DEVWRITE("tms9928a", tms9928a_device, vram_write) AM_RANGE(0x45, 0x45) AM_DEVREAD("tms9928a", tms9928a_device, vram_read) AM_RANGE(0x46, 0x46) AM_DEVWRITE_LEGACY("discrete", cliff_sound_overlay_w) - AM_RANGE(0x50, 0x52) AM_READ_LEGACY(cliff_phillips_code_r) - AM_RANGE(0x53, 0x53) AM_READ_LEGACY(cliff_irq_ack_r) + AM_RANGE(0x50, 0x52) AM_READ(cliff_phillips_code_r) + AM_RANGE(0x53, 0x53) AM_READ(cliff_irq_ack_r) AM_RANGE(0x54, 0x54) AM_DEVWRITE("tms9928a", tms9928a_device, register_write) AM_RANGE(0x55, 0x55) AM_DEVREAD("tms9928a", tms9928a_device, register_read) - AM_RANGE(0x57, 0x57) AM_WRITE_LEGACY(cliff_phillips_clear_w) - AM_RANGE(0x60, 0x60) AM_WRITE_LEGACY(cliff_port_bank_w) - AM_RANGE(0x62, 0x62) AM_READ_LEGACY(cliff_port_r) + AM_RANGE(0x57, 0x57) AM_WRITE(cliff_phillips_clear_w) + AM_RANGE(0x60, 0x60) AM_WRITE(cliff_port_bank_w) + AM_RANGE(0x62, 0x62) AM_READ(cliff_port_r) AM_RANGE(0x64, 0x64) AM_WRITENOP /* unused in schematics, may be used as timing delay for IR interface */ - AM_RANGE(0x66, 0x66) AM_WRITE_LEGACY(cliff_ldwire_w) - AM_RANGE(0x68, 0x68) AM_WRITE_LEGACY(cliff_coin_counter_w) + AM_RANGE(0x66, 0x66) AM_WRITE(cliff_ldwire_w) + AM_RANGE(0x68, 0x68) AM_WRITE(cliff_coin_counter_w) AM_RANGE(0x6a, 0x6a) AM_WRITENOP /* /LAMP0 (Infrared?) */ - AM_RANGE(0x6e, 0x6f) AM_WRITE_LEGACY(cliff_test_led_w) + AM_RANGE(0x6e, 0x6f) AM_WRITE(cliff_test_led_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/cmmb.c b/src/mame/drivers/cmmb.c index ec4bb5e96d9..3f801e278e2 100644 --- a/src/mame/drivers/cmmb.c +++ b/src/mame/drivers/cmmb.c @@ -53,6 +53,12 @@ public: UINT8 *m_videoram; UINT8 m_irq_mask; + DECLARE_READ8_MEMBER(cmmb_charram_r); + DECLARE_WRITE8_MEMBER(cmmb_charram_w); + DECLARE_WRITE8_MEMBER(cmmb_paletteram_w); + DECLARE_READ8_MEMBER(cmmb_input_r); + DECLARE_WRITE8_MEMBER(cmmb_output_w); + DECLARE_READ8_MEMBER(kludge_r); }; @@ -86,42 +92,42 @@ static SCREEN_UPDATE_IND16( cmmb ) return 0; } -static READ8_HANDLER( cmmb_charram_r ) +READ8_MEMBER(cmmb_state::cmmb_charram_r) { - UINT8 *GFX = space->machine().region("gfx")->base(); + UINT8 *GFX = machine().region("gfx")->base(); return GFX[offset]; } -static WRITE8_HANDLER( cmmb_charram_w ) +WRITE8_MEMBER(cmmb_state::cmmb_charram_w) { - UINT8 *GFX = space->machine().region("gfx")->base(); + UINT8 *GFX = machine().region("gfx")->base(); GFX[offset] = data; offset&=0xfff; /* dirty char */ - gfx_element_mark_dirty(space->machine().gfx[0], offset >> 4); - gfx_element_mark_dirty(space->machine().gfx[1], offset >> 5); + gfx_element_mark_dirty(machine().gfx[0], offset >> 4); + gfx_element_mark_dirty(machine().gfx[1], offset >> 5); } -static WRITE8_HANDLER( cmmb_paletteram_w ) +WRITE8_MEMBER(cmmb_state::cmmb_paletteram_w) { /* RGB output is inverted */ paletteram_RRRGGGBB_w(space,offset,~data); } -static READ8_HANDLER( cmmb_input_r ) +READ8_MEMBER(cmmb_state::cmmb_input_r) { //printf("%02x R\n",offset); switch(offset) { - case 0x00: return input_port_read(space->machine(), "IN2"); + case 0x00: return input_port_read(machine(), "IN2"); case 0x03: return 4; //eeprom? - case 0x0e: return input_port_read(space->machine(), "IN0"); - case 0x0f: return input_port_read(space->machine(), "IN1"); + case 0x0e: return input_port_read(machine(), "IN0"); + case 0x0f: return input_port_read(machine(), "IN1"); } return 0xff; @@ -138,32 +144,31 @@ static READ8_HANDLER( cmmb_input_r ) } */ -static WRITE8_HANDLER( cmmb_output_w ) +WRITE8_MEMBER(cmmb_state::cmmb_output_w) { - cmmb_state *state = space->machine().driver_data<cmmb_state>(); //printf("%02x -> [%02x] W\n",data,offset); switch(offset) { case 0x01: { - UINT8 *ROM = space->machine().region("maincpu")->base(); + UINT8 *ROM = machine().region("maincpu")->base(); UINT32 bankaddress; bankaddress = 0x1c000 + (0x10000 * (data & 0x03)); - memory_set_bankptr(space->machine(), "bank1", &ROM[bankaddress]); + memory_set_bankptr(machine(), "bank1", &ROM[bankaddress]); } break; case 0x03: - state->m_irq_mask = data & 0x80; + m_irq_mask = data & 0x80; break; case 0x07: break; } } -static READ8_HANDLER( kludge_r ) +READ8_MEMBER(cmmb_state::kludge_r) { - return space->machine().rand(); + return machine().rand(); } /* overlap empty addresses */ @@ -172,13 +177,13 @@ static ADDRESS_MAP_START( cmmb_map, AS_PROGRAM, 8, cmmb_state ) AM_RANGE(0x0000, 0x01ff) AM_RAM /* zero page address */ // AM_RANGE(0x13c0, 0x13ff) AM_RAM //spriteram AM_RANGE(0x1000, 0x13ff) AM_RAM AM_BASE(m_videoram) - AM_RANGE(0x2480, 0x249f) AM_RAM_WRITE_LEGACY(cmmb_paletteram_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x4000, 0x400f) AM_READWRITE_LEGACY(cmmb_input_r,cmmb_output_w) //i/o - AM_RANGE(0x4900, 0x4900) AM_READ_LEGACY(kludge_r) + AM_RANGE(0x2480, 0x249f) AM_RAM_WRITE(cmmb_paletteram_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x4000, 0x400f) AM_READWRITE(cmmb_input_r,cmmb_output_w) //i/o + AM_RANGE(0x4900, 0x4900) AM_READ(kludge_r) AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") AM_RANGE(0xa000, 0xafff) AM_RAM - AM_RANGE(0xb000, 0xbfff) AM_READWRITE_LEGACY(cmmb_charram_r,cmmb_charram_w) - AM_RANGE(0xc000, 0xc00f) AM_READWRITE_LEGACY(cmmb_input_r,cmmb_output_w) //i/o + AM_RANGE(0xb000, 0xbfff) AM_READWRITE(cmmb_charram_r,cmmb_charram_w) + AM_RANGE(0xc000, 0xc00f) AM_READWRITE(cmmb_input_r,cmmb_output_w) //i/o AM_RANGE(0x8000, 0xffff) AM_ROM ADDRESS_MAP_END diff --git a/src/mame/drivers/cntsteer.c b/src/mame/drivers/cntsteer.c index 0924d381864..f2ec23df6b3 100644 --- a/src/mame/drivers/cntsteer.c +++ b/src/mame/drivers/cntsteer.c @@ -62,6 +62,19 @@ public: device_t *m_maincpu; device_t *m_audiocpu; device_t *m_subcpu; + DECLARE_WRITE8_MEMBER(zerotrgt_vregs_w); + DECLARE_WRITE8_MEMBER(cntsteer_vregs_w); + DECLARE_WRITE8_MEMBER(cntsteer_foreground_vram_w); + DECLARE_WRITE8_MEMBER(cntsteer_foreground_attr_w); + DECLARE_WRITE8_MEMBER(cntsteer_background_w); + DECLARE_WRITE8_MEMBER(gekitsui_sub_irq_ack); + DECLARE_WRITE8_MEMBER(cntsteer_sound_w); + DECLARE_WRITE8_MEMBER(zerotrgt_ctrl_w); + DECLARE_WRITE8_MEMBER(cntsteer_sub_irq_w); + DECLARE_WRITE8_MEMBER(cntsteer_sub_nmi_w); + DECLARE_WRITE8_MEMBER(cntsteer_main_irq_w); + DECLARE_READ8_MEMBER(cntsteer_adx_r); + DECLARE_WRITE8_MEMBER(nmimask_w); }; @@ -365,9 +378,8 @@ static SCREEN_UPDATE_IND16( cntsteer ) ---- ---x rotation sign (landscape should be turning right (0) == / , turning left (1) == \) [4] = xxxx xxxx rotation factor? */ -static WRITE8_HANDLER(zerotrgt_vregs_w) +WRITE8_MEMBER(cntsteer_state::zerotrgt_vregs_w) { - cntsteer_state *state = space->machine().driver_data<cntsteer_state>(); // static UINT8 test[5]; // test[offset] = data; @@ -375,25 +387,24 @@ static WRITE8_HANDLER(zerotrgt_vregs_w) switch (offset) { - case 0: state->m_scrolly = data; break; - case 1: state->m_scrollx = data; break; - case 2: state->m_bg_bank = (data & 0x30) << 4; - state->m_bg_color_bank = (data & 7); - state->m_disable_roz = (data & 0x40); - state->m_bg_tilemap->mark_all_dirty(); + case 0: m_scrolly = data; break; + case 1: m_scrollx = data; break; + case 2: m_bg_bank = (data & 0x30) << 4; + m_bg_color_bank = (data & 7); + m_disable_roz = (data & 0x40); + m_bg_tilemap->mark_all_dirty(); break; - case 3: state->m_rotation_sign = (data & 1); - flip_screen_set(space->machine(), !(data & 4)); - state->m_scrolly_hi = (data & 0x30) << 4; - state->m_scrollx_hi = (data & 0xc0) << 2; + case 3: m_rotation_sign = (data & 1); + flip_screen_set(machine(), !(data & 4)); + m_scrolly_hi = (data & 0x30) << 4; + m_scrollx_hi = (data & 0xc0) << 2; break; - case 4: state->m_rotation_x = data; break; + case 4: m_rotation_x = data; break; } } -static WRITE8_HANDLER(cntsteer_vregs_w) +WRITE8_MEMBER(cntsteer_state::cntsteer_vregs_w) { - cntsteer_state *state = space->machine().driver_data<cntsteer_state>(); // static UINT8 test[5]; // test[offset] = data; @@ -401,40 +412,37 @@ static WRITE8_HANDLER(cntsteer_vregs_w) switch(offset) { - case 0: state->m_scrolly = data; break; - case 1: state->m_scrollx = data; break; - case 2: state->m_bg_bank = (data & 0x01) << 8; - state->m_bg_color_bank = (data & 6) >> 1; - state->m_bg_tilemap->mark_all_dirty(); + case 0: m_scrolly = data; break; + case 1: m_scrollx = data; break; + case 2: m_bg_bank = (data & 0x01) << 8; + m_bg_color_bank = (data & 6) >> 1; + m_bg_tilemap->mark_all_dirty(); break; - case 3: state->m_rotation_sign = (data & 7); - state->m_disable_roz = (~data & 0x08); - state->m_scrolly_hi = (data & 0x30) << 4; - state->m_scrollx_hi = (data & 0xc0) << 2; + case 3: m_rotation_sign = (data & 7); + m_disable_roz = (~data & 0x08); + m_scrolly_hi = (data & 0x30) << 4; + m_scrollx_hi = (data & 0xc0) << 2; break; - case 4: state->m_rotation_x = data; break; + case 4: m_rotation_x = data; break; } } -static WRITE8_HANDLER( cntsteer_foreground_vram_w ) +WRITE8_MEMBER(cntsteer_state::cntsteer_foreground_vram_w) { - cntsteer_state *state = space->machine().driver_data<cntsteer_state>(); - state->m_videoram[offset] = data; - state->m_fg_tilemap->mark_tile_dirty(offset); + m_videoram[offset] = data; + m_fg_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( cntsteer_foreground_attr_w ) +WRITE8_MEMBER(cntsteer_state::cntsteer_foreground_attr_w) { - cntsteer_state *state = space->machine().driver_data<cntsteer_state>(); - state->m_colorram[offset] = data; - state->m_fg_tilemap->mark_tile_dirty(offset); + m_colorram[offset] = data; + m_fg_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( cntsteer_background_w ) +WRITE8_MEMBER(cntsteer_state::cntsteer_background_w) { - cntsteer_state *state = space->machine().driver_data<cntsteer_state>(); - state->m_videoram2[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_videoram2[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } /************************************* @@ -443,56 +451,51 @@ static WRITE8_HANDLER( cntsteer_background_w ) * *************************************/ -static WRITE8_HANDLER( gekitsui_sub_irq_ack ) +WRITE8_MEMBER(cntsteer_state::gekitsui_sub_irq_ack) { - cntsteer_state *state = space->machine().driver_data<cntsteer_state>(); - device_set_input_line(state->m_subcpu, M6809_IRQ_LINE, CLEAR_LINE); + device_set_input_line(m_subcpu, M6809_IRQ_LINE, CLEAR_LINE); } -static WRITE8_HANDLER( cntsteer_sound_w ) +WRITE8_MEMBER(cntsteer_state::cntsteer_sound_w) { - cntsteer_state *state = space->machine().driver_data<cntsteer_state>(); soundlatch_w(space, 0, data); - device_set_input_line(state->m_audiocpu, 0, HOLD_LINE); + device_set_input_line(m_audiocpu, 0, HOLD_LINE); } -static WRITE8_HANDLER( zerotrgt_ctrl_w ) +WRITE8_MEMBER(cntsteer_state::zerotrgt_ctrl_w) { - cntsteer_state *state = space->machine().driver_data<cntsteer_state>(); /*TODO: check this.*/ - logerror("CTRL: %04x: %04x: %04x\n", cpu_get_pc(&space->device()), offset, data); -// if (offset == 0) device_set_input_line(state->m_subcpu, INPUT_LINE_RESET, ASSERT_LINE); + logerror("CTRL: %04x: %04x: %04x\n", cpu_get_pc(&space.device()), offset, data); +// if (offset == 0) device_set_input_line(m_subcpu, INPUT_LINE_RESET, ASSERT_LINE); // Wrong - bits 0 & 1 used on this - if (offset == 1) device_set_input_line(state->m_subcpu, M6809_IRQ_LINE, ASSERT_LINE); -// if (offset == 2) device_set_input_line(state->m_subcpu, INPUT_LINE_RESET, CLEAR_LINE); + if (offset == 1) device_set_input_line(m_subcpu, M6809_IRQ_LINE, ASSERT_LINE); +// if (offset == 2) device_set_input_line(m_subcpu, INPUT_LINE_RESET, CLEAR_LINE); } -static WRITE8_HANDLER( cntsteer_sub_irq_w ) +WRITE8_MEMBER(cntsteer_state::cntsteer_sub_irq_w) { - cntsteer_state *state = space->machine().driver_data<cntsteer_state>(); - device_set_input_line(state->m_subcpu, M6809_IRQ_LINE, ASSERT_LINE); + device_set_input_line(m_subcpu, M6809_IRQ_LINE, ASSERT_LINE); // printf("%02x IRQ\n", data); } -static WRITE8_HANDLER( cntsteer_sub_nmi_w ) +WRITE8_MEMBER(cntsteer_state::cntsteer_sub_nmi_w) { // if (data) -// device_set_input_line(state->m_subcpu, INPUT_LINE_NMI, PULSE_LINE); +// device_set_input_line(m_subcpu, INPUT_LINE_NMI, PULSE_LINE); // popmessage("%02x", data); } -static WRITE8_HANDLER( cntsteer_main_irq_w ) +WRITE8_MEMBER(cntsteer_state::cntsteer_main_irq_w) { - cntsteer_state *state = space->machine().driver_data<cntsteer_state>(); - device_set_input_line(state->m_maincpu, M6809_IRQ_LINE, HOLD_LINE); + device_set_input_line(m_maincpu, M6809_IRQ_LINE, HOLD_LINE); } /* Convert weird input handling with MAME standards.*/ -static READ8_HANDLER( cntsteer_adx_r ) +READ8_MEMBER(cntsteer_state::cntsteer_adx_r) { UINT8 res = 0, adx_val; - adx_val = input_port_read(space->machine(), "AN_STEERING"); + adx_val = input_port_read(machine(), "AN_STEERING"); if (adx_val >= 0x70 && adx_val <= 0x90) res = 0xff; @@ -528,57 +531,56 @@ static ADDRESS_MAP_START( gekitsui_cpu1_map, AS_PROGRAM, 8, cntsteer_state ) AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1") AM_RANGE(0x1000, 0x11ff) AM_RAM AM_BASE(m_spriteram) AM_RANGE(0x1200, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE_LEGACY(cntsteer_foreground_vram_w) AM_BASE(m_videoram) - AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE_LEGACY(cntsteer_foreground_attr_w) AM_BASE(m_colorram) - AM_RANGE(0x3000, 0x3003) AM_WRITE_LEGACY(zerotrgt_ctrl_w) + AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(cntsteer_foreground_vram_w) AM_BASE(m_videoram) + AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE(cntsteer_foreground_attr_w) AM_BASE(m_colorram) + AM_RANGE(0x3000, 0x3003) AM_WRITE(zerotrgt_ctrl_w) AM_RANGE(0x8000, 0xffff) AM_ROM ADDRESS_MAP_END static ADDRESS_MAP_START( gekitsui_cpu2_map, AS_PROGRAM, 8, cntsteer_state ) AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE_LEGACY(cntsteer_background_w) AM_BASE(m_videoram2) + AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(cntsteer_background_w) AM_BASE(m_videoram2) AM_RANGE(0x3000, 0x3000) AM_READ_PORT("DSW0") AM_RANGE(0x3001, 0x3001) AM_READ_PORT("P2") AM_RANGE(0x3002, 0x3002) AM_READ_PORT("P1") AM_RANGE(0x3003, 0x3003) AM_READ_PORT("COINS") - AM_RANGE(0x3000, 0x3004) AM_WRITE_LEGACY(zerotrgt_vregs_w) - AM_RANGE(0x3005, 0x3005) AM_WRITE_LEGACY(gekitsui_sub_irq_ack) - AM_RANGE(0x3007, 0x3007) AM_WRITE_LEGACY(cntsteer_sound_w) + AM_RANGE(0x3000, 0x3004) AM_WRITE(zerotrgt_vregs_w) + AM_RANGE(0x3005, 0x3005) AM_WRITE(gekitsui_sub_irq_ack) + AM_RANGE(0x3007, 0x3007) AM_WRITE(cntsteer_sound_w) AM_RANGE(0x4000, 0xffff) AM_ROM ADDRESS_MAP_END static ADDRESS_MAP_START( cntsteer_cpu1_map, AS_PROGRAM, 8, cntsteer_state ) AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1") AM_RANGE(0x1000, 0x11ff) AM_RAM AM_BASE(m_spriteram) - AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE_LEGACY(cntsteer_foreground_vram_w) AM_BASE(m_videoram) - AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE_LEGACY(cntsteer_foreground_attr_w) AM_BASE(m_colorram) - AM_RANGE(0x3000, 0x3000) AM_WRITE_LEGACY(cntsteer_sub_nmi_w) - AM_RANGE(0x3001, 0x3001) AM_WRITE_LEGACY(cntsteer_sub_irq_w) + AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(cntsteer_foreground_vram_w) AM_BASE(m_videoram) + AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE(cntsteer_foreground_attr_w) AM_BASE(m_colorram) + AM_RANGE(0x3000, 0x3000) AM_WRITE(cntsteer_sub_nmi_w) + AM_RANGE(0x3001, 0x3001) AM_WRITE(cntsteer_sub_irq_w) AM_RANGE(0x8000, 0xffff) AM_ROM ADDRESS_MAP_END static ADDRESS_MAP_START( cntsteer_cpu2_map, AS_PROGRAM, 8, cntsteer_state ) AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE_LEGACY(cntsteer_background_w) AM_BASE(m_videoram2) AM_SHARE("share3") - AM_RANGE(0x2000, 0x2fff) AM_RAM_WRITE_LEGACY(cntsteer_background_w) AM_SHARE("share3") + AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(cntsteer_background_w) AM_BASE(m_videoram2) AM_SHARE("share3") + AM_RANGE(0x2000, 0x2fff) AM_RAM_WRITE(cntsteer_background_w) AM_SHARE("share3") AM_RANGE(0x3000, 0x3000) AM_READ_PORT("DSW0") - AM_RANGE(0x3001, 0x3001) AM_READ_LEGACY(cntsteer_adx_r) + AM_RANGE(0x3001, 0x3001) AM_READ(cntsteer_adx_r) AM_RANGE(0x3002, 0x3002) AM_READ_PORT("P1") AM_RANGE(0x3003, 0x3003) AM_READ_PORT("COINS") - AM_RANGE(0x3000, 0x3004) AM_WRITE_LEGACY(cntsteer_vregs_w) - AM_RANGE(0x3005, 0x3005) AM_WRITE_LEGACY(gekitsui_sub_irq_ack) - AM_RANGE(0x3006, 0x3006) AM_WRITE_LEGACY(cntsteer_main_irq_w) - AM_RANGE(0x3007, 0x3007) AM_WRITE_LEGACY(cntsteer_sound_w) + AM_RANGE(0x3000, 0x3004) AM_WRITE(cntsteer_vregs_w) + AM_RANGE(0x3005, 0x3005) AM_WRITE(gekitsui_sub_irq_ack) + AM_RANGE(0x3006, 0x3006) AM_WRITE(cntsteer_main_irq_w) + AM_RANGE(0x3007, 0x3007) AM_WRITE(cntsteer_sound_w) AM_RANGE(0x3007, 0x3007) AM_READNOP //m6809 bug. AM_RANGE(0x4000, 0xffff) AM_ROM ADDRESS_MAP_END /***************************************************************************/ -static WRITE8_HANDLER( nmimask_w ) +WRITE8_MEMBER(cntsteer_state::nmimask_w) { - cntsteer_state *state = space->machine().driver_data<cntsteer_state>(); - state->m_nmimask = data & 0x80; + m_nmimask = data & 0x80; } static INTERRUPT_GEN ( sound_interrupt ) @@ -596,7 +598,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, cntsteer_state ) AM_RANGE(0x6000, 0x6000) AM_DEVWRITE_LEGACY("ay2", ay8910_data_w) AM_RANGE(0x8000, 0x8000) AM_DEVWRITE_LEGACY("ay2", ay8910_address_w) AM_RANGE(0xa000, 0xa000) AM_READ_LEGACY(soundlatch_r) - AM_RANGE(0xd000, 0xd000) AM_WRITE_LEGACY(nmimask_w) + AM_RANGE(0xd000, 0xd000) AM_WRITE(nmimask_w) AM_RANGE(0xe000, 0xffff) AM_ROM ADDRESS_MAP_END diff --git a/src/mame/drivers/coinmstr.c b/src/mame/drivers/coinmstr.c index b1bebd37815..507e5b8aafb 100644 --- a/src/mame/drivers/coinmstr.c +++ b/src/mame/drivers/coinmstr.c @@ -41,17 +41,23 @@ public: UINT8 *m_attr_ram3; tilemap_t *m_bg_tilemap; UINT8 m_question_adr[4]; + DECLARE_WRITE8_MEMBER(quizmstr_bg_w); + DECLARE_WRITE8_MEMBER(quizmstr_attr1_w); + DECLARE_WRITE8_MEMBER(quizmstr_attr2_w); + DECLARE_WRITE8_MEMBER(quizmstr_attr3_w); + DECLARE_READ8_MEMBER(question_r); + DECLARE_WRITE8_MEMBER(question_w); + DECLARE_READ8_MEMBER(ff_r); }; -static WRITE8_HANDLER( quizmstr_bg_w ) +WRITE8_MEMBER(coinmstr_state::quizmstr_bg_w) { - coinmstr_state *state = space->machine().driver_data<coinmstr_state>(); - UINT8 *videoram = state->m_videoram; + UINT8 *videoram = m_videoram; videoram[offset] = data; if(offset >= 0x0240) - state->m_bg_tilemap->mark_tile_dirty(offset - 0x0240); + m_bg_tilemap->mark_tile_dirty(offset - 0x0240); } @@ -88,110 +94,105 @@ static void coinmstr_set_pal(running_machine &machine, UINT32 paldat, int col) } -static WRITE8_HANDLER( quizmstr_attr1_w ) +WRITE8_MEMBER(coinmstr_state::quizmstr_attr1_w) { - coinmstr_state *state = space->machine().driver_data<coinmstr_state>(); - state->m_attr_ram1[offset] = data; + m_attr_ram1[offset] = data; if(offset >= 0x0240) { // the later games also use attr3 for something.. - UINT32 paldata = (state->m_attr_ram1[offset] & 0x7f) | ((state->m_attr_ram2[offset] & 0x7f) << 7); - state->m_bg_tilemap->mark_tile_dirty(offset - 0x0240); + UINT32 paldata = (m_attr_ram1[offset] & 0x7f) | ((m_attr_ram2[offset] & 0x7f) << 7); + m_bg_tilemap->mark_tile_dirty(offset - 0x0240); - coinmstr_set_pal(space->machine(), paldata, offset - 0x240); + coinmstr_set_pal(machine(), paldata, offset - 0x240); } } -static WRITE8_HANDLER( quizmstr_attr2_w ) +WRITE8_MEMBER(coinmstr_state::quizmstr_attr2_w) { - coinmstr_state *state = space->machine().driver_data<coinmstr_state>(); - state->m_attr_ram2[offset] = data; + m_attr_ram2[offset] = data; if(offset >= 0x0240) { // the later games also use attr3 for something.. - UINT32 paldata = (state->m_attr_ram1[offset] & 0x7f) | ((state->m_attr_ram2[offset] & 0x7f) << 7); - state->m_bg_tilemap->mark_tile_dirty(offset - 0x0240); + UINT32 paldata = (m_attr_ram1[offset] & 0x7f) | ((m_attr_ram2[offset] & 0x7f) << 7); + m_bg_tilemap->mark_tile_dirty(offset - 0x0240); - coinmstr_set_pal(space->machine(), paldata, offset - 0x240); + coinmstr_set_pal(machine(), paldata, offset - 0x240); } } -static WRITE8_HANDLER( quizmstr_attr3_w ) +WRITE8_MEMBER(coinmstr_state::quizmstr_attr3_w) { - coinmstr_state *state = space->machine().driver_data<coinmstr_state>(); - state->m_attr_ram3[offset] = data; + m_attr_ram3[offset] = data; if(offset >= 0x0240) - state->m_bg_tilemap->mark_tile_dirty(offset - 0x0240); + m_bg_tilemap->mark_tile_dirty(offset - 0x0240); } -static READ8_HANDLER( question_r ) +READ8_MEMBER(coinmstr_state::question_r) { - coinmstr_state *state = space->machine().driver_data<coinmstr_state>(); int address; - UINT8 *questions = space->machine().region("user1")->base(); + UINT8 *questions = machine().region("user1")->base(); - switch(state->m_question_adr[2]) + switch(m_question_adr[2]) { - case 0x38: address = 0x00000; break; // state->m_question_adr[3] == 7 - case 0x39: address = 0x08000; break; // state->m_question_adr[3] == 7 - case 0x3a: address = 0x10000; break; // state->m_question_adr[3] == 7 - case 0x3b: address = 0x18000; break; // state->m_question_adr[3] == 7 - case 0x3c: address = 0x20000; break; // state->m_question_adr[3] == 7 - case 0x3d: address = 0x28000; break; // state->m_question_adr[3] == 7 - case 0x3e: address = 0x30000; break; // state->m_question_adr[3] == 7 - case 0x07: address = 0x38000; break; // state->m_question_adr[3] == 7 - case 0x0f: address = 0x40000; break; // state->m_question_adr[3] == 7 - case 0x17: address = 0x48000; break; // state->m_question_adr[3] == 7 - case 0x1f: address = 0x50000; break; // state->m_question_adr[3] == 7 - case 0x27: address = 0x58000; break; // state->m_question_adr[3] == 7 - case 0x2f: address = 0x60000; break; // state->m_question_adr[3] == 7 - case 0x37: address = 0x68000; break; // state->m_question_adr[3] == 7 - case 0x3f: address = 0x70000 + state->m_question_adr[3] * 0x8000; break; + case 0x38: address = 0x00000; break; // m_question_adr[3] == 7 + case 0x39: address = 0x08000; break; // m_question_adr[3] == 7 + case 0x3a: address = 0x10000; break; // m_question_adr[3] == 7 + case 0x3b: address = 0x18000; break; // m_question_adr[3] == 7 + case 0x3c: address = 0x20000; break; // m_question_adr[3] == 7 + case 0x3d: address = 0x28000; break; // m_question_adr[3] == 7 + case 0x3e: address = 0x30000; break; // m_question_adr[3] == 7 + case 0x07: address = 0x38000; break; // m_question_adr[3] == 7 + case 0x0f: address = 0x40000; break; // m_question_adr[3] == 7 + case 0x17: address = 0x48000; break; // m_question_adr[3] == 7 + case 0x1f: address = 0x50000; break; // m_question_adr[3] == 7 + case 0x27: address = 0x58000; break; // m_question_adr[3] == 7 + case 0x2f: address = 0x60000; break; // m_question_adr[3] == 7 + case 0x37: address = 0x68000; break; // m_question_adr[3] == 7 + case 0x3f: address = 0x70000 + m_question_adr[3] * 0x8000; break; default: address = 0; - logerror("unknown question rom # = %02X\n",state->m_question_adr[2]); + logerror("unknown question rom # = %02X\n",m_question_adr[2]); } - if(state->m_question_adr[3] == 6 || state->m_question_adr[3] > 7) - logerror("question_adr[3] = %02X\n",state->m_question_adr[3]); + if(m_question_adr[3] == 6 || m_question_adr[3] > 7) + logerror("question_adr[3] = %02X\n",m_question_adr[3]); /* in these offsets they set 0x80... why? - if( (state->m_question_adr[0] & 0x5f) == 0x00 || - (state->m_question_adr[0] & 0x5f) == 0x01 || - (state->m_question_adr[0] & 0x5f) == 0x0f || - (state->m_question_adr[0] & 0x5f) == 0x56 ) + if( (m_question_adr[0] & 0x5f) == 0x00 || + (m_question_adr[0] & 0x5f) == 0x01 || + (m_question_adr[0] & 0x5f) == 0x0f || + (m_question_adr[0] & 0x5f) == 0x56 ) */ // don't know... -// address |= ((state->m_question_adr[0] & 0x7f) << 8) | state->m_question_adr[1]; - address |= (state->m_question_adr[1] << 7) | (state->m_question_adr[0] & 0x7f); +// address |= ((m_question_adr[0] & 0x7f) << 8) | m_question_adr[1]; + address |= (m_question_adr[1] << 7) | (m_question_adr[0] & 0x7f); return questions[address]; } -static WRITE8_HANDLER( question_w ) +WRITE8_MEMBER(coinmstr_state::question_w) { - coinmstr_state *state = space->machine().driver_data<coinmstr_state>(); - if(data != state->m_question_adr[offset]) + if(data != m_question_adr[offset]) { logerror("offset = %d data = %02X\n",offset,data); } - state->m_question_adr[offset] = data; + m_question_adr[offset] = data; } -static READ8_HANDLER( ff_r ) +READ8_MEMBER(coinmstr_state::ff_r) { return 0xff; } @@ -201,10 +202,10 @@ static READ8_HANDLER( ff_r ) static ADDRESS_MAP_START( coinmstr_map, AS_PROGRAM, 8, coinmstr_state ) AM_RANGE(0x0000, 0xbfff) AM_ROM AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE_LEGACY(quizmstr_bg_w) AM_BASE(m_videoram) - AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE_LEGACY(quizmstr_attr1_w) AM_BASE(m_attr_ram1) - AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE_LEGACY(quizmstr_attr2_w) AM_BASE(m_attr_ram2) - AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE_LEGACY(quizmstr_attr3_w) AM_BASE(m_attr_ram3) + AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(quizmstr_bg_w) AM_BASE(m_videoram) + AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(quizmstr_attr1_w) AM_BASE(m_attr_ram1) + AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(quizmstr_attr2_w) AM_BASE(m_attr_ram2) + AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(quizmstr_attr3_w) AM_BASE(m_attr_ram3) ADDRESS_MAP_END // Different I/O mappping for every game @@ -212,8 +213,8 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( quizmstr_io_map, AS_IO, 8, coinmstr_state ) ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_LEGACY(question_r) - AM_RANGE(0x00, 0x03) AM_WRITE_LEGACY(question_w) + AM_RANGE(0x00, 0x00) AM_READ(question_r) + AM_RANGE(0x00, 0x03) AM_WRITE(question_w) AM_RANGE(0x40, 0x41) AM_DEVWRITE_LEGACY("aysnd", ay8910_address_data_w) AM_RANGE(0x41, 0x41) AM_DEVREAD_LEGACY("aysnd", ay8910_r) AM_RANGE(0x48, 0x4b) AM_DEVREADWRITE("pia0", pia6821_device, read, write) @@ -228,8 +229,8 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( trailblz_io_map, AS_IO, 8, coinmstr_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_LEGACY(question_r) - AM_RANGE(0x00, 0x03) AM_WRITE_LEGACY(question_w) + AM_RANGE(0x00, 0x00) AM_READ(question_r) + AM_RANGE(0x00, 0x03) AM_WRITE(question_w) AM_RANGE(0x40, 0x40) AM_DEVWRITE("crtc", mc6845_device, address_w) AM_RANGE(0x41, 0x41) AM_DEVWRITE("crtc", mc6845_device, register_w) AM_RANGE(0x48, 0x49) AM_DEVWRITE_LEGACY("aysnd", ay8910_address_data_w) @@ -243,8 +244,8 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( supnudg2_io_map, AS_IO, 8, coinmstr_state ) ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_LEGACY(question_r) - AM_RANGE(0x00, 0x03) AM_WRITE_LEGACY(question_w) + AM_RANGE(0x00, 0x00) AM_READ(question_r) + AM_RANGE(0x00, 0x03) AM_WRITE(question_w) AM_RANGE(0x40, 0x41) AM_READNOP AM_RANGE(0x40, 0x43) AM_WRITENOP AM_RANGE(0x43, 0x43) AM_READNOP @@ -271,7 +272,7 @@ static ADDRESS_MAP_START( pokeroul_io_map, AS_IO, 8, coinmstr_state ) AM_RANGE(0x58, 0x5b) AM_DEVREADWRITE("pia0", pia6821_device, read, write) /* confirmed */ AM_RANGE(0x68, 0x6b) AM_DEVREADWRITE("pia1", pia6821_device, read, write) /* confirmed */ AM_RANGE(0x78, 0x7b) AM_DEVREADWRITE("pia2", pia6821_device, read, write) /* confirmed */ - AM_RANGE(0xc0, 0xc1) AM_READ_LEGACY(ff_r) /* needed to boot */ + AM_RANGE(0xc0, 0xc1) AM_READ(ff_r) /* needed to boot */ ADDRESS_MAP_END diff --git a/src/mame/drivers/coinmvga.c b/src/mame/drivers/coinmvga.c index 52aebc59425..5c36fab0bfb 100644 --- a/src/mame/drivers/coinmvga.c +++ b/src/mame/drivers/coinmvga.c @@ -227,6 +227,10 @@ public: UINT16 *m_vram; struct { int r,g,b,offs,offs_internal; } m_bgpal, m_fgpal; + DECLARE_WRITE8_MEMBER(debug_w); + DECLARE_WRITE16_MEMBER(ramdac_bg_w); + DECLARE_WRITE16_MEMBER(ramdac_fg_w); + DECLARE_READ16_MEMBER(test_r); }; @@ -276,76 +280,74 @@ static PALETTE_INIT( coinmvga ) * Read / Write Handlers * **************************/ -//static WRITE8_HANDLER( debug_w ) +//WRITE8_MEMBER(coinmvga_state::debug_w) //{ // popmessage("written : %02X", data); //} -static WRITE16_HANDLER( ramdac_bg_w ) +WRITE16_MEMBER(coinmvga_state::ramdac_bg_w) { - coinmvga_state *state = space->machine().driver_data<coinmvga_state>(); if(ACCESSING_BITS_8_15) { - state->m_bgpal.offs = data >> 8; - state->m_bgpal.offs_internal = 0; + m_bgpal.offs = data >> 8; + m_bgpal.offs_internal = 0; } else //if(mem_mask == 0x00ff) { - switch(state->m_bgpal.offs_internal) + switch(m_bgpal.offs_internal) { case 0: - state->m_bgpal.r = ((data & 0x3f) << 2) | ((data & 0x30) >> 4); - state->m_bgpal.offs_internal++; + m_bgpal.r = ((data & 0x3f) << 2) | ((data & 0x30) >> 4); + m_bgpal.offs_internal++; break; case 1: - state->m_bgpal.g = ((data & 0x3f) << 2) | ((data & 0x30) >> 4); - state->m_bgpal.offs_internal++; + m_bgpal.g = ((data & 0x3f) << 2) | ((data & 0x30) >> 4); + m_bgpal.offs_internal++; break; case 2: - state->m_bgpal.b = ((data & 0x3f) << 2) | ((data & 0x30) >> 4); - palette_set_color(space->machine(), state->m_bgpal.offs, MAKE_RGB(state->m_bgpal.r, state->m_bgpal.g, state->m_bgpal.b)); - state->m_bgpal.offs_internal = 0; - state->m_bgpal.offs++; + m_bgpal.b = ((data & 0x3f) << 2) | ((data & 0x30) >> 4); + palette_set_color(machine(), m_bgpal.offs, MAKE_RGB(m_bgpal.r, m_bgpal.g, m_bgpal.b)); + m_bgpal.offs_internal = 0; + m_bgpal.offs++; break; } } } -static WRITE16_HANDLER( ramdac_fg_w ) +WRITE16_MEMBER(coinmvga_state::ramdac_fg_w) { - coinmvga_state *state = space->machine().driver_data<coinmvga_state>(); if(ACCESSING_BITS_8_15) { - state->m_fgpal.offs = data >> 8; - state->m_fgpal.offs_internal = 0; + m_fgpal.offs = data >> 8; + m_fgpal.offs_internal = 0; } else { - switch(state->m_fgpal.offs_internal) + switch(m_fgpal.offs_internal) { case 0: - state->m_fgpal.r = ((data & 0x3f) << 2) | ((data & 0x30) >> 4); - state->m_fgpal.offs_internal++; + m_fgpal.r = ((data & 0x3f) << 2) | ((data & 0x30) >> 4); + m_fgpal.offs_internal++; break; case 1: - state->m_fgpal.g = ((data & 0x3f) << 2) | ((data & 0x30) >> 4); - state->m_fgpal.offs_internal++; + m_fgpal.g = ((data & 0x3f) << 2) | ((data & 0x30) >> 4); + m_fgpal.offs_internal++; break; case 2: - state->m_fgpal.b = ((data & 0x3f) << 2) | ((data & 0x30) >> 4); - palette_set_color(space->machine(), 0x100+state->m_fgpal.offs, MAKE_RGB(state->m_fgpal.r, state->m_fgpal.g, state->m_fgpal.b)); - state->m_fgpal.offs_internal = 0; - state->m_fgpal.offs++; + m_fgpal.b = ((data & 0x3f) << 2) | ((data & 0x30) >> 4); + palette_set_color(machine(), 0x100+m_fgpal.offs, MAKE_RGB(m_fgpal.r, m_fgpal.g, m_fgpal.b)); + m_fgpal.offs_internal = 0; + m_fgpal.offs++; break; } } } /* -static READ16_HANDLER( test_r ) +READ16_MEMBER(coinmvga_state::test_r) { - return space->machine().rand(); + return machine().rand(); }*/ /************************* @@ -359,12 +361,12 @@ static ADDRESS_MAP_START( coinmvga_map, AS_PROGRAM, 16, coinmvga_state ) // AM_RANGE(0x0a0000, 0x0fffff) AM_RAM // AM_RANGE(0x100000, 0x1fffff) AM_RAM //colorama AM_RANGE(0x210000, 0x21ffff) AM_RAM AM_BASE(m_vram) -// AM_RANGE(0x40746e, 0x40746f) AM_READ_LEGACY(test_r) AM_WRITENOP //touch screen related, colorama -// AM_RANGE(0x403afa, 0x403afb) AM_READ_LEGACY(test_r) AM_WRITENOP //touch screen related, cmrltv75 +// AM_RANGE(0x40746e, 0x40746f) AM_READ(test_r) AM_WRITENOP //touch screen related, colorama +// AM_RANGE(0x403afa, 0x403afb) AM_READ(test_r) AM_WRITENOP //touch screen related, cmrltv75 AM_RANGE(0x400000, 0x40ffff) AM_RAM - AM_RANGE(0x600000, 0x600001) AM_WRITE_LEGACY(ramdac_bg_w) - AM_RANGE(0x600004, 0x600005) AM_WRITE_LEGACY(ramdac_fg_w) + AM_RANGE(0x600000, 0x600001) AM_WRITE(ramdac_bg_w) + AM_RANGE(0x600004, 0x600005) AM_WRITE(ramdac_fg_w) AM_RANGE(0x600008, 0x600009) AM_DEVREADWRITE8_LEGACY("ymz", ymz280b_r, ymz280b_w, 0xffff) AM_RANGE(0x610000, 0x61000f) AM_RAM //touch screen i/o diff --git a/src/mame/drivers/cshooter.c b/src/mame/drivers/cshooter.c index a5112a68efc..31d07496341 100644 --- a/src/mame/drivers/cshooter.c +++ b/src/mame/drivers/cshooter.c @@ -101,6 +101,16 @@ public: int m_counter; UINT8 *m_spriteram; size_t m_spriteram_size; + DECLARE_WRITE8_MEMBER(cshooter_txram_w); + DECLARE_READ8_MEMBER(cshooter_coin_r); + DECLARE_WRITE8_MEMBER(cshooter_c500_w); + DECLARE_WRITE8_MEMBER(cshooter_c700_w); + DECLARE_WRITE8_MEMBER(bank_w); + DECLARE_WRITE8_MEMBER(pal_w); + DECLARE_WRITE8_MEMBER(pal2_w); + DECLARE_READ8_MEMBER(pal_r); + DECLARE_READ8_MEMBER(seibu_sound_comms_r); + DECLARE_WRITE8_MEMBER(seibu_sound_comms_w); }; @@ -121,11 +131,10 @@ static TILE_GET_INFO( get_cstx_tile_info ) 0); } -static WRITE8_HANDLER(cshooter_txram_w) +WRITE8_MEMBER(cshooter_state::cshooter_txram_w) { - cshooter_state *state = space->machine().driver_data<cshooter_state>(); - state->m_txram[offset] = data; - state->m_txtilemap->mark_tile_dirty(offset/2); + m_txram[offset] = data; + m_txtilemap->mark_tile_dirty(offset/2); } static VIDEO_START(cshooter) @@ -210,76 +219,75 @@ static MACHINE_RESET( airraid ) MACHINE_RESET_CALL(seibu_sound); } -static READ8_HANDLER ( cshooter_coin_r ) +READ8_MEMBER(cshooter_state::cshooter_coin_r) { - cshooter_state *state = space->machine().driver_data<cshooter_state>(); /* Even reads must return 0xff - Odd reads must return the contents of input port 5. Code at 0x5061 is executed once during P.O.S.T. where there is one read. Code at 0x50b4 is then executed each frame (not sure) where there are 2 reads. */ - return ( (state->m_counter++ & 1) ? 0xff : input_port_read(space->machine(), "COIN") ); + return ( (m_counter++ & 1) ? 0xff : input_port_read(machine(), "COIN") ); } -static WRITE8_HANDLER ( cshooter_c500_w ) +WRITE8_MEMBER(cshooter_state::cshooter_c500_w) { } -static WRITE8_HANDLER ( cshooter_c700_w ) +WRITE8_MEMBER(cshooter_state::cshooter_c700_w) { } -static WRITE8_HANDLER ( bank_w ) +WRITE8_MEMBER(cshooter_state::bank_w) { - memory_set_bankptr(space->machine(), "bank1",&space->machine().region("user1")->base()[0x4000*((data>>4)&3)]); + memory_set_bankptr(machine(), "bank1",&machine().region("user1")->base()[0x4000*((data>>4)&3)]); } -static WRITE8_HANDLER(pal_w) +WRITE8_MEMBER(cshooter_state::pal_w) { - space->machine().generic.paletteram.u8[offset]=data; + machine().generic.paletteram.u8[offset]=data; offset&=0xff; - palette_set_color_rgb(space->machine(), offset, pal4bit(space->machine().generic.paletteram.u8[offset] >> 4), pal4bit(space->machine().generic.paletteram.u8[offset]), pal4bit(space->machine().generic.paletteram.u8[offset+0x100])); + palette_set_color_rgb(machine(), offset, pal4bit(machine().generic.paletteram.u8[offset] >> 4), pal4bit(machine().generic.paletteram.u8[offset]), pal4bit(machine().generic.paletteram.u8[offset+0x100])); } -static WRITE8_HANDLER(pal2_w) +WRITE8_MEMBER(cshooter_state::pal2_w) { - space->machine().generic.paletteram.u8[offset]=data; + machine().generic.paletteram.u8[offset]=data; offset&=0x1ff; - palette_set_color_rgb(space->machine(), offset, pal4bit(space->machine().generic.paletteram.u8[offset] >> 4), pal4bit(space->machine().generic.paletteram.u8[offset]), pal4bit(space->machine().generic.paletteram.u8[offset+0x200])); + palette_set_color_rgb(machine(), offset, pal4bit(machine().generic.paletteram.u8[offset] >> 4), pal4bit(machine().generic.paletteram.u8[offset]), pal4bit(machine().generic.paletteram.u8[offset+0x200])); } -static READ8_HANDLER(pal_r) +READ8_MEMBER(cshooter_state::pal_r) { - return space->machine().generic.paletteram.u8[offset]; + return machine().generic.paletteram.u8[offset]; } static ADDRESS_MAP_START( cshooter_map, AS_PROGRAM, 8, cshooter_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0xafff) AM_READ_BANK("bank1") AM_WRITEONLY AM_RANGE(0xb000, 0xb0ff) AM_READONLY // sound related ? - AM_RANGE(0xc000, 0xc1ff) AM_WRITE_LEGACY(pal_w) AM_READ_LEGACY(pal_r) AM_BASE_GENERIC(paletteram) + AM_RANGE(0xc000, 0xc1ff) AM_WRITE(pal_w) AM_READ(pal_r) AM_BASE_GENERIC(paletteram) AM_RANGE(0xc200, 0xc200) AM_READ_PORT("IN0") AM_RANGE(0xc201, 0xc201) AM_READ_PORT("IN1") AM_RANGE(0xc202, 0xc202) AM_READ_PORT("IN2") AM_RANGE(0xc203, 0xc203) AM_READ_PORT("DSW2") AM_RANGE(0xc204, 0xc204) AM_READ_PORT("DSW1") - AM_RANGE(0xc205, 0xc205) AM_READ_LEGACY(cshooter_coin_r) // hack until I understand - AM_RANGE(0xc500, 0xc500) AM_WRITE_LEGACY(cshooter_c500_w) + AM_RANGE(0xc205, 0xc205) AM_READ(cshooter_coin_r) // hack until I understand + AM_RANGE(0xc500, 0xc500) AM_WRITE(cshooter_c500_w) AM_RANGE(0xc600, 0xc600) AM_WRITENOP // see notes - AM_RANGE(0xc700, 0xc700) AM_WRITE_LEGACY(cshooter_c700_w) + AM_RANGE(0xc700, 0xc700) AM_WRITE(cshooter_c700_w) AM_RANGE(0xc801, 0xc801) AM_WRITENOP // see notes - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE_LEGACY(cshooter_txram_w) AM_BASE(m_txram) + AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(cshooter_txram_w) AM_BASE(m_txram) AM_RANGE(0xd800, 0xdfff) AM_RAM AM_RANGE(0xe000, 0xffff) AM_RAM ADDRESS_MAP_END -static READ8_HANDLER( seibu_sound_comms_r ) +READ8_MEMBER(cshooter_state::seibu_sound_comms_r) { - return seibu_main_word_r(space,offset,0x00ff); + return seibu_main_word_r(&space,offset,0x00ff); } -static WRITE8_HANDLER( seibu_sound_comms_w ) +WRITE8_MEMBER(cshooter_state::seibu_sound_comms_w) { - seibu_main_word_w(space,offset,data,0x00ff); + seibu_main_word_w(&space,offset,data,0x00ff); } static ADDRESS_MAP_START( airraid_map, AS_PROGRAM, 8, cshooter_state ) @@ -292,15 +300,15 @@ static ADDRESS_MAP_START( airraid_map, AS_PROGRAM, 8, cshooter_state ) AM_RANGE(0xc002, 0xc002) AM_READ_PORT("IN2") AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW2") AM_RANGE(0xc004, 0xc004) AM_READ_PORT("DSW1") - AM_RANGE(0xc500, 0xc500) AM_WRITE_LEGACY(cshooter_c500_w) + AM_RANGE(0xc500, 0xc500) AM_WRITE(cshooter_c500_w) AM_RANGE(0xc600, 0xc600) AM_WRITENOP // see notes - AM_RANGE(0xc700, 0xc700) AM_WRITE_LEGACY(cshooter_c700_w) + AM_RANGE(0xc700, 0xc700) AM_WRITE(cshooter_c700_w) AM_RANGE(0xc801, 0xc801) AM_WRITENOP // see notes - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE_LEGACY(cshooter_txram_w) AM_BASE(m_txram) - AM_RANGE(0xd800, 0xdbff) AM_WRITE_LEGACY(pal2_w) AM_READ_LEGACY(pal_r) AM_BASE_GENERIC(paletteram) - AM_RANGE(0xdc11, 0xdc11) AM_WRITE_LEGACY(bank_w) + AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(cshooter_txram_w) AM_BASE(m_txram) + AM_RANGE(0xd800, 0xdbff) AM_WRITE(pal2_w) AM_READ(pal_r) AM_BASE_GENERIC(paletteram) + AM_RANGE(0xdc11, 0xdc11) AM_WRITE(bank_w) AM_RANGE(0xdc00, 0xdc1f) AM_RAM //video registers - AM_RANGE(0xde00, 0xde0f) AM_READWRITE_LEGACY(seibu_sound_comms_r,seibu_sound_comms_w) + AM_RANGE(0xde00, 0xde0f) AM_READWRITE(seibu_sound_comms_r,seibu_sound_comms_w) AM_RANGE(0xe000, 0xfdff) AM_RAM AM_BASE(m_mainram) AM_RANGE(0xfe00, 0xffff) AM_RAM AM_BASE_SIZE(m_spriteram, m_spriteram_size) ADDRESS_MAP_END diff --git a/src/mame/drivers/cubeqst.c b/src/mame/drivers/cubeqst.c index 35c407f4833..931ac6c41b8 100644 --- a/src/mame/drivers/cubeqst.c +++ b/src/mame/drivers/cubeqst.c @@ -38,6 +38,20 @@ public: UINT8 m_reset_latch; required_device<simutrek_special_device> m_laserdisc; rgb_t *m_colormap; + DECLARE_WRITE16_MEMBER(palette_w); + DECLARE_READ16_MEMBER(line_r); + DECLARE_WRITE16_MEMBER(laserdisc_w); + DECLARE_READ16_MEMBER(laserdisc_r); + DECLARE_WRITE16_MEMBER(ldaud_w); + DECLARE_WRITE16_MEMBER(control_w); + DECLARE_WRITE16_MEMBER(reset_w); + DECLARE_WRITE16_MEMBER(io_w); + DECLARE_READ16_MEMBER(io_r); + DECLARE_READ16_MEMBER(chop_r); + DECLARE_READ16_MEMBER(read_rotram); + DECLARE_WRITE16_MEMBER(write_rotram); + DECLARE_READ16_MEMBER(read_sndram); + DECLARE_WRITE16_MEMBER(write_sndram); }; @@ -87,10 +101,10 @@ static PALETTE_INIT( cubeqst ) } } -static WRITE16_HANDLER( palette_w ) +WRITE16_MEMBER(cubeqst_state::palette_w) { - space->machine().primary_screen->update_now(); - COMBINE_DATA(&space->machine().generic.paletteram.u16[offset]); + machine().primary_screen->update_now(); + COMBINE_DATA(&machine().generic.paletteram.u16[offset]); } /* TODO: This is a simplified version of what actually happens */ @@ -170,10 +184,10 @@ static SCREEN_UPDATE_RGB32( cubeqst ) return 0; } -static READ16_HANDLER( line_r ) +READ16_MEMBER(cubeqst_state::line_r) { /* I think this is unusued */ - return space->machine().primary_screen->vpos(); + return machine().primary_screen->vpos(); } static INTERRUPT_GEN( vblank ) @@ -194,31 +208,28 @@ static INTERRUPT_GEN( vblank ) * *************************************/ -static WRITE16_HANDLER( laserdisc_w ) +WRITE16_MEMBER(cubeqst_state::laserdisc_w) { - cubeqst_state *state = space->machine().driver_data<cubeqst_state>(); - state->m_laserdisc->data_w(data & 0xff); + m_laserdisc->data_w(data & 0xff); } /* D0: Command acknowledge D1: Seek status (0 = searching, 1 = ready) */ -static READ16_HANDLER( laserdisc_r ) +READ16_MEMBER(cubeqst_state::laserdisc_r) { - cubeqst_state *state = space->machine().driver_data<cubeqst_state>(); - int ldp_command_flag = (state->m_laserdisc->ready_r() == ASSERT_LINE) ? 0 : 1; - int ldp_seek_status = (state->m_laserdisc->status_r() == ASSERT_LINE) ? 1 : 0; + int ldp_command_flag = (m_laserdisc->ready_r() == ASSERT_LINE) ? 0 : 1; + int ldp_seek_status = (m_laserdisc->status_r() == ASSERT_LINE) ? 1 : 0; return (ldp_seek_status << 1) | ldp_command_flag; } /* LDP audio squelch control */ -static WRITE16_HANDLER( ldaud_w ) +WRITE16_MEMBER(cubeqst_state::ldaud_w) { - cubeqst_state *state = space->machine().driver_data<cubeqst_state>(); - state->m_laserdisc->set_external_audio_squelch(data & 1 ? ASSERT_LINE : CLEAR_LINE); + m_laserdisc->set_external_audio_squelch(data & 1 ? ASSERT_LINE : CLEAR_LINE); } /* @@ -231,10 +242,9 @@ static WRITE16_HANDLER( ldaud_w ) Note: Can only be written during VBLANK (as with palette RAM) */ -static WRITE16_HANDLER( control_w ) +WRITE16_MEMBER(cubeqst_state::control_w) { - cubeqst_state *state = space->machine().driver_data<cubeqst_state>(); - state->m_laserdisc->video_enable(data & 1); + m_laserdisc->video_enable(data & 1); } @@ -268,21 +278,20 @@ static void swap_linecpu_banks(running_machine &machine) D1: /Sound D2: /Disk */ -static WRITE16_HANDLER( reset_w ) +WRITE16_MEMBER(cubeqst_state::reset_w) { - cubeqst_state *state = space->machine().driver_data<cubeqst_state>(); - cputag_set_input_line(space->machine(), "rotate_cpu", INPUT_LINE_RESET, data & 1 ? CLEAR_LINE : ASSERT_LINE); - cputag_set_input_line(space->machine(), "line_cpu", INPUT_LINE_RESET, data & 1 ? CLEAR_LINE : ASSERT_LINE); - cputag_set_input_line(space->machine(), "sound_cpu", INPUT_LINE_RESET, data & 2 ? CLEAR_LINE : ASSERT_LINE); + cputag_set_input_line(machine(), "rotate_cpu", INPUT_LINE_RESET, data & 1 ? CLEAR_LINE : ASSERT_LINE); + cputag_set_input_line(machine(), "line_cpu", INPUT_LINE_RESET, data & 1 ? CLEAR_LINE : ASSERT_LINE); + cputag_set_input_line(machine(), "sound_cpu", INPUT_LINE_RESET, data & 2 ? CLEAR_LINE : ASSERT_LINE); /* Swap stack and pointer RAM banks on rising edge of display reset */ - if (!BIT(state->m_reset_latch, 0) && BIT(data, 0)) - swap_linecpu_banks(space->machine()); + if (!BIT(m_reset_latch, 0) && BIT(data, 0)) + swap_linecpu_banks(machine()); if (!BIT(data, 2)) - state->m_laserdisc->reset(); + m_laserdisc->reset(); - state->m_reset_latch = data & 0xff; + m_reset_latch = data & 0xff; } @@ -292,9 +301,8 @@ static WRITE16_HANDLER( reset_w ) * *************************************/ -static WRITE16_HANDLER( io_w ) +WRITE16_MEMBER(cubeqst_state::io_w) { - cubeqst_state *state = space->machine().driver_data<cubeqst_state>(); /* 0: Spare lamp 1: Spare driver @@ -307,7 +315,7 @@ static WRITE16_HANDLER( io_w ) */ /* TODO: On rising edge of Q7, status LED latch is written */ - if ( !BIT(state->m_io_latch, 7) && BIT(data, 7) ) + if ( !BIT(m_io_latch, 7) && BIT(data, 7) ) { /* 0: Battery failure @@ -316,13 +324,12 @@ static WRITE16_HANDLER( io_w ) */ } - state->m_io_latch = data; + m_io_latch = data; } -static READ16_HANDLER( io_r ) +READ16_MEMBER(cubeqst_state::io_r) { - cubeqst_state *state = space->machine().driver_data<cubeqst_state>(); - UINT16 port_data = input_port_read(space->machine(), "IO"); + UINT16 port_data = input_port_read(machine(), "IO"); /* Certain bits depend on Q7 of the IO latch: @@ -333,7 +340,7 @@ static READ16_HANDLER( io_r ) 10: Spare / Trackball V data */ - if ( !BIT(state->m_io_latch, 7) ) + if ( !BIT(m_io_latch, 7) ) return port_data; else /* Return zeroes for the trackball signals for now */ @@ -341,9 +348,9 @@ static READ16_HANDLER( io_r ) } /* Trackball ('CHOP') */ -static READ16_HANDLER( chop_r ) +READ16_MEMBER(cubeqst_state::chop_r) { - return (input_port_read(space->machine(), "TRACK_X") << 8) | input_port_read(space->machine(), "TRACK_Y"); + return (input_port_read(machine(), "TRACK_X") << 8) | input_port_read(machine(), "TRACK_Y"); } @@ -382,37 +389,37 @@ INPUT_PORTS_END * *************************************/ -static READ16_HANDLER( read_rotram ) +READ16_MEMBER(cubeqst_state::read_rotram) { - return cubeqcpu_rotram_r(space->machine().device("rotate_cpu"), offset, mem_mask); + return cubeqcpu_rotram_r(machine().device("rotate_cpu"), offset, mem_mask); } -static WRITE16_HANDLER( write_rotram ) +WRITE16_MEMBER(cubeqst_state::write_rotram) { - cubeqcpu_rotram_w(space->machine().device("rotate_cpu"), offset, data, mem_mask); + cubeqcpu_rotram_w(machine().device("rotate_cpu"), offset, data, mem_mask); } -static READ16_HANDLER( read_sndram ) +READ16_MEMBER(cubeqst_state::read_sndram) { - return cubeqcpu_sndram_r(space->machine().device("sound_cpu"), offset, mem_mask); + return cubeqcpu_sndram_r(machine().device("sound_cpu"), offset, mem_mask); } -static WRITE16_HANDLER( write_sndram ) +WRITE16_MEMBER(cubeqst_state::write_sndram) { - cubeqcpu_sndram_w(space->machine().device("sound_cpu"), offset, data, mem_mask); + cubeqcpu_sndram_w(machine().device("sound_cpu"), offset, data, mem_mask); } static ADDRESS_MAP_START( m68k_program_map, AS_PROGRAM, 16, cubeqst_state ) ADDRESS_MAP_GLOBAL_MASK(0x03ffff) AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x020000, 0x027fff) AM_READWRITE_LEGACY(read_rotram, write_rotram) - AM_RANGE(0x028000, 0x028fff) AM_READWRITE_LEGACY(read_sndram, write_sndram) - AM_RANGE(0x038000, 0x038001) AM_READWRITE_LEGACY(io_r, io_w) - AM_RANGE(0x038002, 0x038003) AM_READWRITE_LEGACY(chop_r, ldaud_w) - AM_RANGE(0x038008, 0x038009) AM_READWRITE_LEGACY(line_r, reset_w) - AM_RANGE(0x03800e, 0x03800f) AM_READWRITE_LEGACY(laserdisc_r, laserdisc_w) - AM_RANGE(0x03c800, 0x03c9ff) AM_RAM_WRITE_LEGACY(palette_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x03cc00, 0x03cc01) AM_WRITE_LEGACY(control_w) + AM_RANGE(0x020000, 0x027fff) AM_READWRITE(read_rotram, write_rotram) + AM_RANGE(0x028000, 0x028fff) AM_READWRITE(read_sndram, write_sndram) + AM_RANGE(0x038000, 0x038001) AM_READWRITE(io_r, io_w) + AM_RANGE(0x038002, 0x038003) AM_READWRITE(chop_r, ldaud_w) + AM_RANGE(0x038008, 0x038009) AM_READWRITE(line_r, reset_w) + AM_RANGE(0x03800e, 0x03800f) AM_READWRITE(laserdisc_r, laserdisc_w) + AM_RANGE(0x03c800, 0x03c9ff) AM_RAM_WRITE(palette_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x03cc00, 0x03cc01) AM_WRITE(control_w) AM_RANGE(0x03e000, 0x03efff) AM_RAM AM_SHARE("nvram") AM_RANGE(0x03f000, 0x03ffff) AM_RAM ADDRESS_MAP_END diff --git a/src/mame/drivers/cultures.c b/src/mame/drivers/cultures.c index d54521effa4..d52b58795e8 100644 --- a/src/mame/drivers/cultures.c +++ b/src/mame/drivers/cultures.c @@ -39,6 +39,10 @@ public: int m_bg1_bank; int m_bg2_bank; int m_old_bank; + DECLARE_WRITE8_MEMBER(cpu_bankswitch_w); + DECLARE_WRITE8_MEMBER(bg0_videoram_w); + DECLARE_WRITE8_MEMBER(misc_w); + DECLARE_WRITE8_MEMBER(bg_bank_w); }; @@ -115,75 +119,71 @@ static SCREEN_UPDATE_IND16( cultures ) return 0; } -static WRITE8_HANDLER( cpu_bankswitch_w ) +WRITE8_MEMBER(cultures_state::cpu_bankswitch_w) { - cultures_state *state = space->machine().driver_data<cultures_state>(); - memory_set_bank(space->machine(), "bank1", data & 0x0f); - state->m_video_bank = ~data & 0x20; + memory_set_bank(machine(), "bank1", data & 0x0f); + m_video_bank = ~data & 0x20; } -static WRITE8_HANDLER( bg0_videoram_w ) +WRITE8_MEMBER(cultures_state::bg0_videoram_w) { - cultures_state *state = space->machine().driver_data<cultures_state>(); - if (state->m_video_bank == 0) + if (m_video_bank == 0) { int r, g, b, datax; - state->m_paletteram[offset] = data; + m_paletteram[offset] = data; offset >>= 1; - datax = state->m_paletteram[offset * 2] + 256 * state->m_paletteram[offset * 2 + 1]; + datax = m_paletteram[offset * 2] + 256 * m_paletteram[offset * 2 + 1]; r = ((datax >> 7) & 0x1e) | ((datax & 0x4000) ? 0x1 : 0); g = ((datax >> 3) & 0x1e) | ((datax & 0x2000) ? 0x1 : 0); b = ((datax << 1) & 0x1e) | ((datax & 0x1000) ? 0x1 : 0); - palette_set_color_rgb(space->machine(), offset, pal5bit(r), pal5bit(g), pal5bit(b)); + palette_set_color_rgb(machine(), offset, pal5bit(r), pal5bit(g), pal5bit(b)); } else { - state->m_bg0_videoram[offset] = data; - state->m_bg0_tilemap->mark_tile_dirty(offset >> 1); + m_bg0_videoram[offset] = data; + m_bg0_tilemap->mark_tile_dirty(offset >> 1); } } -static WRITE8_HANDLER( misc_w ) +WRITE8_MEMBER(cultures_state::misc_w) { - cultures_state *state = space->machine().driver_data<cultures_state>(); int new_bank = data & 0xf; - if (state->m_old_bank != new_bank) + if (m_old_bank != new_bank) { // oki banking - UINT8 *src = space->machine().region("oki")->base() + 0x40000 + 0x20000 * new_bank; - UINT8 *dst = space->machine().region("oki")->base() + 0x20000; + UINT8 *src = machine().region("oki")->base() + 0x40000 + 0x20000 * new_bank; + UINT8 *dst = machine().region("oki")->base() + 0x20000; memcpy(dst, src, 0x20000); - state->m_old_bank = new_bank; + m_old_bank = new_bank; } - state->m_irq_enable = data & 0x80; + m_irq_enable = data & 0x80; } -static WRITE8_HANDLER( bg_bank_w ) +WRITE8_MEMBER(cultures_state::bg_bank_w) { - cultures_state *state = space->machine().driver_data<cultures_state>(); - if (state->m_bg1_bank != (data & 3)) + if (m_bg1_bank != (data & 3)) { - state->m_bg1_bank = data & 3; - state->m_bg1_tilemap->mark_all_dirty(); + m_bg1_bank = data & 3; + m_bg1_tilemap->mark_all_dirty(); } - if (state->m_bg2_bank != ((data & 0xc) >> 2)) + if (m_bg2_bank != ((data & 0xc) >> 2)) { - state->m_bg2_bank = (data & 0xc) >> 2; - state->m_bg2_tilemap->mark_all_dirty(); + m_bg2_bank = (data & 0xc) >> 2; + m_bg2_tilemap->mark_all_dirty(); } - coin_counter_w(space->machine(), 0, data & 0x10); + coin_counter_w(machine(), 0, data & 0x10); } static ADDRESS_MAP_START( cultures_map, AS_PROGRAM, 8, cultures_state ) AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0xbfff) AM_RAM_WRITE_LEGACY(bg0_videoram_w) AM_BASE(m_bg0_videoram) + AM_RANGE(0x8000, 0xbfff) AM_RAM_WRITE(bg0_videoram_w) AM_BASE(m_bg0_videoram) AM_RANGE(0xc000, 0xdfff) AM_RAM AM_RANGE(0xf000, 0xffff) AM_RAM ADDRESS_MAP_END @@ -198,9 +198,9 @@ static ADDRESS_MAP_START( cultures_io_map, AS_IO, 8, cultures_state ) AM_RANGE(0x50, 0x53) AM_RAM AM_BASE(m_bg1_regs_y) AM_RANGE(0x60, 0x63) AM_RAM AM_BASE(m_bg2_regs_x) AM_RANGE(0x70, 0x73) AM_RAM AM_BASE(m_bg2_regs_y) - AM_RANGE(0x80, 0x80) AM_WRITE_LEGACY(cpu_bankswitch_w) - AM_RANGE(0x90, 0x90) AM_WRITE_LEGACY(misc_w) - AM_RANGE(0xa0, 0xa0) AM_WRITE_LEGACY(bg_bank_w) + AM_RANGE(0x80, 0x80) AM_WRITE(cpu_bankswitch_w) + AM_RANGE(0x90, 0x90) AM_WRITE(misc_w) + AM_RANGE(0xa0, 0xa0) AM_WRITE(bg_bank_w) AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("oki", okim6295_device, read, write) AM_RANGE(0xd0, 0xd0) AM_READ_PORT("SW1_A") AM_RANGE(0xd1, 0xd1) AM_READ_PORT("SW1_B") diff --git a/src/mame/drivers/cybertnk.c b/src/mame/drivers/cybertnk.c index ed50d8f14b7..2af5a715c2e 100644 --- a/src/mame/drivers/cybertnk.c +++ b/src/mame/drivers/cybertnk.c @@ -183,10 +183,14 @@ public: int m_test_y; int m_start_offs; int m_color_pen; + DECLARE_WRITE16_MEMBER(tx_vram_w); + DECLARE_READ16_MEMBER(io_r); + DECLARE_WRITE16_MEMBER(io_w); + DECLARE_READ8_MEMBER(soundport_r); }; -#define LOG_UNKNOWN_WRITE logerror("unknown io write CPU '%s':%08x 0x%08x 0x%04x & 0x%04x\n", space->device().tag(), cpu_get_pc(&space->device()), offset*2, data, mem_mask); +#define LOG_UNKNOWN_WRITE logerror("unknown io write CPU '%s':%08x 0x%08x 0x%04x & 0x%04x\n", space.device().tag(), cpu_get_pc(&space.device()), offset*2, data, mem_mask); static TILE_GET_INFO( get_tx_tile_info ) { @@ -510,37 +514,35 @@ static SCREEN_UPDATE_IND16( cybertnk_left ) { return update_screen(screen, bitma static SCREEN_UPDATE_IND16( cybertnk_right ) { return update_screen(screen, bitmap, cliprect, -256); } -static WRITE16_HANDLER( tx_vram_w ) +WRITE16_MEMBER(cybertnk_state::tx_vram_w) { - cybertnk_state *state = space->machine().driver_data<cybertnk_state>(); - COMBINE_DATA(&state->m_tx_vram[offset]); - state->m_tx_tilemap->mark_tile_dirty(offset); + COMBINE_DATA(&m_tx_vram[offset]); + m_tx_tilemap->mark_tile_dirty(offset); } -static READ16_HANDLER( io_r ) +READ16_MEMBER(cybertnk_state::io_r) { - cybertnk_state *state = space->machine().driver_data<cybertnk_state>(); switch( offset ) { case 2/2: - return input_port_read(space->machine(), "DSW1"); + return input_port_read(machine(), "DSW1"); // 0x00110007 is controller device select // 0x001100D5 is controller data // 0x00110004 low is controller data ready case 4/2: - switch( (state->m_io_ram[6/2]) & 0xff ) + switch( (m_io_ram[6/2]) & 0xff ) { case 0: - state->m_io_ram[0xd4/2] = input_port_read(space->machine(), "TRAVERSE"); + m_io_ram[0xd4/2] = input_port_read(machine(), "TRAVERSE"); break; case 0x20: - state->m_io_ram[0xd4/2] = input_port_read(space->machine(), "ELEVATE"); + m_io_ram[0xd4/2] = input_port_read(machine(), "ELEVATE"); break; case 0x40: - state->m_io_ram[0xd4/2] = input_port_read(space->machine(), "ACCEL"); + m_io_ram[0xd4/2] = input_port_read(machine(), "ACCEL"); break; case 0x42: @@ -548,11 +550,11 @@ static READ16_HANDLER( io_r ) // controller return value is stored in $42(a6) // but I don't see it referenced again. //popmessage("unknown controller device 0x42"); - state->m_io_ram[0xd4/2] = 0; + m_io_ram[0xd4/2] = 0; break; case 0x60: - state->m_io_ram[0xd4/2] = input_port_read(space->machine(), "HANDLE"); + m_io_ram[0xd4/2] = input_port_read(machine(), "HANDLE"); break; //default: @@ -561,36 +563,35 @@ static READ16_HANDLER( io_r ) return 0; case 6/2: - return input_port_read(space->machine(), "IN0"); // high half + return input_port_read(machine(), "IN0"); // high half case 8/2: - return input_port_read(space->machine(), "IN0"); // low half + return input_port_read(machine(), "IN0"); // low half case 0xa/2: - return input_port_read(space->machine(), "DSW2"); + return input_port_read(machine(), "DSW2"); case 0xd4/2: - return state->m_io_ram[offset]; // controller data + return m_io_ram[offset]; // controller data default: { //popmessage("unknown io read 0x%08x", offset); - return state->m_io_ram[offset]; + return m_io_ram[offset]; } } } -static WRITE16_HANDLER( io_w ) +WRITE16_MEMBER(cybertnk_state::io_w) { - cybertnk_state *state = space->machine().driver_data<cybertnk_state>(); - COMBINE_DATA(&state->m_io_ram[offset]); + COMBINE_DATA(&m_io_ram[offset]); switch( offset ) { case 0/2: // sound data if (ACCESSING_BITS_0_7) - cputag_set_input_line(space->machine(), "audiocpu", 0, HOLD_LINE); + cputag_set_input_line(machine(), "audiocpu", 0, HOLD_LINE); else LOG_UNKNOWN_WRITE break; @@ -644,7 +645,7 @@ static WRITE16_HANDLER( io_w ) case 0x80/2: case 0x82/2: case 0x84/2: - popmessage("%02x %02x %02x %02x %02x %02x %02x",state->m_io_ram[0x40/2],state->m_io_ram[0x42/2],state->m_io_ram[0x44/2],state->m_io_ram[0x46/2],state->m_io_ram[0x48/2],state->m_io_ram[0x4a/2],state->m_io_ram[0x4c/2]); + popmessage("%02x %02x %02x %02x %02x %02x %02x",m_io_ram[0x40/2],m_io_ram[0x42/2],m_io_ram[0x44/2],m_io_ram[0x46/2],m_io_ram[0x48/2],m_io_ram[0x4a/2],m_io_ram[0x4c/2]); break; default: @@ -653,22 +654,21 @@ static WRITE16_HANDLER( io_w ) } } -static READ8_HANDLER( soundport_r ) +READ8_MEMBER(cybertnk_state::soundport_r) { - cybertnk_state *state = space->machine().driver_data<cybertnk_state>(); - return state->m_io_ram[0] & 0xff; + return m_io_ram[0] & 0xff; } static ADDRESS_MAP_START( master_mem, AS_PROGRAM, 16, cybertnk_state ) AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_RANGE(0x080000, 0x087fff) AM_RAM /*Work RAM*/ AM_RANGE(0x0a0000, 0x0a0fff) AM_RAM AM_BASE(m_spr_ram) // non-tile based sprite ram - AM_RANGE(0x0c0000, 0x0c1fff) AM_RAM_WRITE_LEGACY(tx_vram_w) AM_BASE(m_tx_vram) + AM_RANGE(0x0c0000, 0x0c1fff) AM_RAM_WRITE(tx_vram_w) AM_BASE(m_tx_vram) AM_RANGE(0x0c4000, 0x0c5fff) AM_RAM AM_BASE(m_bg_vram) AM_RANGE(0x0c8000, 0x0c9fff) AM_RAM AM_BASE(m_fg_vram) AM_RANGE(0x0e0000, 0x0e0fff) AM_RAM AM_SHARE("sharedram") AM_RANGE(0x100000, 0x107fff) AM_RAM_WRITE_LEGACY(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x110000, 0x1101ff) AM_READWRITE_LEGACY(io_r,io_w) AM_BASE(m_io_ram) + AM_RANGE(0x110000, 0x1101ff) AM_READWRITE(io_r,io_w) AM_BASE(m_io_ram) ADDRESS_MAP_END static ADDRESS_MAP_START( slave_mem, AS_PROGRAM, 16, cybertnk_state ) @@ -682,7 +682,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( sound_mem, AS_PROGRAM, 8, cybertnk_state ) AM_RANGE(0x0000, 0x7fff ) AM_ROM AM_RANGE(0x8000, 0x9fff ) AM_RAM - AM_RANGE(0xa001, 0xa001 ) AM_READ_LEGACY(soundport_r) + AM_RANGE(0xa001, 0xa001 ) AM_READ(soundport_r) AM_RANGE(0xa005, 0xa006 ) AM_NOP AM_RANGE(0xa000, 0xa001 ) AM_DEVREADWRITE_LEGACY("ym1", y8950_r, y8950_w) AM_RANGE(0xc000, 0xc001 ) AM_DEVREADWRITE_LEGACY("ym2", y8950_r, y8950_w) diff --git a/src/mame/drivers/d9final.c b/src/mame/drivers/d9final.c index e4405a5efac..6fa13b054a6 100644 --- a/src/mame/drivers/d9final.c +++ b/src/mame/drivers/d9final.c @@ -34,6 +34,11 @@ public: UINT8 *m_hi_vram; UINT8 *m_cram; tilemap_t *m_sc0_tilemap; + DECLARE_WRITE8_MEMBER(sc0_lovram); + DECLARE_WRITE8_MEMBER(sc0_hivram); + DECLARE_WRITE8_MEMBER(sc0_cram); + DECLARE_WRITE8_MEMBER(d9final_bank_w); + DECLARE_READ8_MEMBER(prot_latch_r); }; @@ -64,40 +69,37 @@ static SCREEN_UPDATE_IND16(d9final) return 0; } -static WRITE8_HANDLER( sc0_lovram ) +WRITE8_MEMBER(d9final_state::sc0_lovram) { - d9final_state *state = space->machine().driver_data<d9final_state>(); - state->m_lo_vram[offset] = data; - state->m_sc0_tilemap->mark_tile_dirty(offset); + m_lo_vram[offset] = data; + m_sc0_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( sc0_hivram ) +WRITE8_MEMBER(d9final_state::sc0_hivram) { - d9final_state *state = space->machine().driver_data<d9final_state>(); - state->m_hi_vram[offset] = data; - state->m_sc0_tilemap->mark_tile_dirty(offset); + m_hi_vram[offset] = data; + m_sc0_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( sc0_cram ) +WRITE8_MEMBER(d9final_state::sc0_cram) { - d9final_state *state = space->machine().driver_data<d9final_state>(); - state->m_cram[offset] = data; - state->m_sc0_tilemap->mark_tile_dirty(offset); + m_cram[offset] = data; + m_sc0_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( d9final_bank_w ) +WRITE8_MEMBER(d9final_state::d9final_bank_w) { - UINT8 *ROM = space->machine().region("maincpu")->base(); + UINT8 *ROM = machine().region("maincpu")->base(); UINT32 bankaddress; bankaddress = 0x10000+(0x4000 * (data & 0x7)); - memory_set_bankptr(space->machine(), "bank1", &ROM[bankaddress]); + memory_set_bankptr(machine(), "bank1", &ROM[bankaddress]); } /* game checks this after three attract cycles, otherwise coin inputs stop to work. */ -static READ8_HANDLER( prot_latch_r ) +READ8_MEMBER(d9final_state::prot_latch_r) { -// printf("PC=%06x\n",cpu_get_pc(&space->device())); +// printf("PC=%06x\n",cpu_get_pc(&space.device())); return 0x04; } @@ -109,10 +111,10 @@ static ADDRESS_MAP_START( d9final_map, AS_PROGRAM, 8, d9final_state ) AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_RANGE(0xc800, 0xcbff) AM_RAM_WRITE_LEGACY(paletteram_xxxxBBBBRRRRGGGG_split1_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0xcc00, 0xcfff) AM_RAM_WRITE_LEGACY(paletteram_xxxxBBBBRRRRGGGG_split2_w) AM_BASE_GENERIC(paletteram2) - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE_LEGACY(sc0_lovram) AM_BASE(m_lo_vram) - AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE_LEGACY(sc0_hivram) AM_BASE(m_hi_vram) - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE_LEGACY(sc0_cram) AM_BASE(m_cram) - AM_RANGE(0xf000, 0xf000) AM_READ_LEGACY(prot_latch_r) + AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(sc0_lovram) AM_BASE(m_lo_vram) + AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(sc0_hivram) AM_BASE(m_hi_vram) + AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(sc0_cram) AM_BASE(m_cram) + AM_RANGE(0xf000, 0xf000) AM_READ(prot_latch_r) ADDRESS_MAP_END static ADDRESS_MAP_START( d9final_io, AS_IO, 8, d9final_state ) @@ -124,7 +126,7 @@ static ADDRESS_MAP_START( d9final_io, AS_IO, 8, d9final_state ) AM_RANGE(0x40, 0x41) AM_DEVWRITE_LEGACY("ymsnd",ym2413_w) AM_RANGE(0x60, 0x60) AM_READ_PORT("DSWD") AM_RANGE(0x80, 0x80) AM_READ_PORT("IN0") - AM_RANGE(0xa0, 0xa0) AM_READ_PORT("IN1") AM_WRITE_LEGACY(d9final_bank_w) + AM_RANGE(0xa0, 0xa0) AM_READ_PORT("IN1") AM_WRITE(d9final_bank_w) AM_RANGE(0xe0, 0xe0) AM_READ_PORT("IN2") ADDRESS_MAP_END diff --git a/src/mame/drivers/dacholer.c b/src/mame/drivers/dacholer.c index c4b3d1a739a..23295946434 100644 --- a/src/mame/drivers/dacholer.c +++ b/src/mame/drivers/dacholer.c @@ -69,6 +69,18 @@ public: /* devices */ required_device<cpu_device> m_maincpu; required_device<cpu_device> m_audiocpu; + DECLARE_WRITE8_MEMBER(bg_scroll_x_w); + DECLARE_WRITE8_MEMBER(bg_scroll_y_w); + DECLARE_WRITE8_MEMBER(background_w); + DECLARE_WRITE8_MEMBER(foreground_w); + DECLARE_WRITE8_MEMBER(bg_bank_w); + DECLARE_WRITE8_MEMBER(coins_w); + DECLARE_WRITE8_MEMBER(snd_w); + DECLARE_WRITE8_MEMBER(main_irq_ack_w); + DECLARE_WRITE8_MEMBER(adpcm_w); + DECLARE_WRITE8_MEMBER(snd_ack_w); + DECLARE_WRITE8_MEMBER(snd_irq_w); + DECLARE_WRITE8_MEMBER(music_irq_w); }; static TILE_GET_INFO( get_bg_tile_info ) @@ -92,16 +104,14 @@ static VIDEO_START( dacholer ) state->m_fg_tilemap->set_transparent_pen(0); } -static WRITE8_HANDLER( bg_scroll_x_w ) +WRITE8_MEMBER(dacholer_state::bg_scroll_x_w) { - dacholer_state *state = space->machine().driver_data<dacholer_state>(); - state->m_scroll_x = data; + m_scroll_x = data; } -static WRITE8_HANDLER( bg_scroll_y_w ) +WRITE8_MEMBER(dacholer_state::bg_scroll_y_w) { - dacholer_state *state = space->machine().driver_data<dacholer_state>(); - state->m_scroll_y = data; + m_scroll_y = data; } static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect ) @@ -157,61 +167,56 @@ static SCREEN_UPDATE_IND16(dacholer) return 0; } -static WRITE8_HANDLER( background_w ) +WRITE8_MEMBER(dacholer_state::background_w) { - dacholer_state *state = space->machine().driver_data<dacholer_state>(); - state->m_bgvideoram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_bgvideoram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( foreground_w ) +WRITE8_MEMBER(dacholer_state::foreground_w) { - dacholer_state *state = space->machine().driver_data<dacholer_state>(); - state->m_fgvideoram[offset] = data; - state->m_fg_tilemap->mark_tile_dirty(offset); + m_fgvideoram[offset] = data; + m_fg_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( bg_bank_w ) +WRITE8_MEMBER(dacholer_state::bg_bank_w) { - dacholer_state *state = space->machine().driver_data<dacholer_state>(); - if ((data & 3) != state->m_bg_bank) + if ((data & 3) != m_bg_bank) { - state->m_bg_bank = data & 3; - state->m_bg_tilemap->mark_all_dirty(); + m_bg_bank = data & 3; + m_bg_tilemap->mark_all_dirty(); } - flip_screen_set(space->machine(), data & 0xc); // probably one bit for flipx and one for flipy + flip_screen_set(machine(), data & 0xc); // probably one bit for flipx and one for flipy } -static WRITE8_HANDLER( coins_w ) +WRITE8_MEMBER(dacholer_state::coins_w) { - coin_counter_w(space->machine(), 0, data & 1); - coin_counter_w(space->machine(), 1, data & 2); + coin_counter_w(machine(), 0, data & 1); + coin_counter_w(machine(), 1, data & 2); - set_led_status(space->machine(), 0, data & 4); - set_led_status(space->machine(), 1, data & 8); + set_led_status(machine(), 0, data & 4); + set_led_status(machine(), 1, data & 8); } -static WRITE8_HANDLER(snd_w) +WRITE8_MEMBER(dacholer_state::snd_w) { - dacholer_state *state = space->machine().driver_data<dacholer_state>(); soundlatch_w(space, offset, data); - device_set_input_line(state->m_audiocpu, INPUT_LINE_NMI, PULSE_LINE); + device_set_input_line(m_audiocpu, INPUT_LINE_NMI, PULSE_LINE); } -static WRITE8_HANDLER( main_irq_ack_w ) +WRITE8_MEMBER(dacholer_state::main_irq_ack_w) { - dacholer_state *state = space->machine().driver_data<dacholer_state>(); - device_set_input_line(state->m_maincpu, 0, CLEAR_LINE); + device_set_input_line(m_maincpu, 0, CLEAR_LINE); } static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, dacholer_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8800, 0x97ff) AM_RAM - AM_RANGE(0xc000, 0xc3ff) AM_MIRROR(0x400) AM_RAM_WRITE_LEGACY(background_w) AM_BASE(m_bgvideoram) - AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE_LEGACY(foreground_w) AM_BASE(m_fgvideoram) + AM_RANGE(0xc000, 0xc3ff) AM_MIRROR(0x400) AM_RAM_WRITE(background_w) AM_BASE(m_bgvideoram) + AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(foreground_w) AM_BASE(m_fgvideoram) AM_RANGE(0xe000, 0xe0ff) AM_RAM AM_BASE_SIZE(m_spriteram, m_spriteram_size) ADDRESS_MAP_END @@ -229,12 +234,12 @@ static ADDRESS_MAP_START( main_io_map, AS_IO, 8, dacholer_state ) AM_RANGE(0x03, 0x03) AM_READ_PORT("DSWA") AM_RANGE(0x04, 0x04) AM_READ_PORT("DSWB") AM_RANGE(0x05, 0x05) AM_READNOP // watchdog in itaten - AM_RANGE(0x20, 0x20) AM_WRITE_LEGACY(coins_w) - AM_RANGE(0x21, 0x21) AM_WRITE_LEGACY(bg_bank_w) - AM_RANGE(0x22, 0x22) AM_WRITE_LEGACY(bg_scroll_x_w) - AM_RANGE(0x23, 0x23) AM_WRITE_LEGACY(bg_scroll_y_w) - AM_RANGE(0x24, 0x24) AM_WRITE_LEGACY(main_irq_ack_w) - AM_RANGE(0x27, 0x27) AM_WRITE_LEGACY(snd_w) + AM_RANGE(0x20, 0x20) AM_WRITE(coins_w) + AM_RANGE(0x21, 0x21) AM_WRITE(bg_bank_w) + AM_RANGE(0x22, 0x22) AM_WRITE(bg_scroll_x_w) + AM_RANGE(0x23, 0x23) AM_WRITE(bg_scroll_y_w) + AM_RANGE(0x24, 0x24) AM_WRITE(main_irq_ack_w) + AM_RANGE(0x27, 0x27) AM_WRITE(snd_w) ADDRESS_MAP_END @@ -250,17 +255,15 @@ static ADDRESS_MAP_START( itaten_snd_map, AS_PROGRAM, 8, dacholer_state ) ADDRESS_MAP_END -static WRITE8_HANDLER( adpcm_w ) +WRITE8_MEMBER(dacholer_state::adpcm_w) { - dacholer_state *state = space->machine().driver_data<dacholer_state>(); - state->m_msm_data = data; - state->m_msm_toggle = 0; + m_msm_data = data; + m_msm_toggle = 0; } -static WRITE8_HANDLER( snd_ack_w ) +WRITE8_MEMBER(dacholer_state::snd_ack_w) { - dacholer_state *state = space->machine().driver_data<dacholer_state>(); - state->m_snd_ack = data; + m_snd_ack = data; } static CUSTOM_INPUT( snd_ack_r ) @@ -269,25 +272,23 @@ static CUSTOM_INPUT( snd_ack_r ) return state->m_snd_ack; //guess ... } -static WRITE8_HANDLER( snd_irq_w ) +WRITE8_MEMBER(dacholer_state::snd_irq_w) { - dacholer_state *state = space->machine().driver_data<dacholer_state>(); - state->m_snd_interrupt_enable = data; + m_snd_interrupt_enable = data; } -static WRITE8_HANDLER( music_irq_w ) +WRITE8_MEMBER(dacholer_state::music_irq_w) { - dacholer_state *state = space->machine().driver_data<dacholer_state>(); - state->m_music_interrupt_enable = data; + m_music_interrupt_enable = data; } static ADDRESS_MAP_START( snd_io_map, AS_IO, 8, dacholer_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x00) AM_READWRITE_LEGACY(soundlatch_r, soundlatch_clear_w ) - AM_RANGE(0x04, 0x04) AM_WRITE_LEGACY(music_irq_w) - AM_RANGE(0x08, 0x08) AM_WRITE_LEGACY(snd_irq_w) - AM_RANGE(0x0c, 0x0c) AM_WRITE_LEGACY(snd_ack_w) - AM_RANGE(0x80, 0x80) AM_WRITE_LEGACY(adpcm_w) + AM_RANGE(0x04, 0x04) AM_WRITE(music_irq_w) + AM_RANGE(0x08, 0x08) AM_WRITE(snd_irq_w) + AM_RANGE(0x0c, 0x0c) AM_WRITE(snd_ack_w) + AM_RANGE(0x80, 0x80) AM_WRITE(adpcm_w) AM_RANGE(0x86, 0x87) AM_DEVWRITE_LEGACY("ay1", ay8910_data_address_w) AM_RANGE(0x8a, 0x8b) AM_DEVWRITE_LEGACY("ay2", ay8910_data_address_w) AM_RANGE(0x8e, 0x8f) AM_DEVWRITE_LEGACY("ay3", ay8910_data_address_w) diff --git a/src/mame/drivers/darkhors.c b/src/mame/drivers/darkhors.c index 5bc888a35b3..d9cba7c0743 100644 --- a/src/mame/drivers/darkhors.c +++ b/src/mame/drivers/darkhors.c @@ -83,6 +83,13 @@ public: UINT32 *m_spriteram; required_device<cpu_device> m_maincpu; + DECLARE_WRITE32_MEMBER(darkhors_tmapram_w); + DECLARE_WRITE32_MEMBER(darkhors_tmapram2_w); + DECLARE_WRITE32_MEMBER(paletteram32_xBBBBBGGGGGRRRRR_dword_w); + DECLARE_WRITE32_MEMBER(darkhors_input_sel_w); + DECLARE_READ32_MEMBER(darkhors_input_sel_r); + DECLARE_WRITE32_MEMBER(darkhors_unk1_w); + DECLARE_WRITE32_MEMBER(jclub2_tileram_w); }; @@ -116,17 +123,15 @@ static TILE_GET_INFO( get_tile_info_1 ) SET_TILE_INFO(0, tile/2, (color & 0x200) ? (color & 0x1ff) : ((color & 0x0ff) * 4) , 0); } -static WRITE32_HANDLER( darkhors_tmapram_w ) +WRITE32_MEMBER(darkhors_state::darkhors_tmapram_w) { - darkhors_state *state = space->machine().driver_data<darkhors_state>(); - COMBINE_DATA(&state->m_tmapram[offset]); - state->m_tmap->mark_tile_dirty(offset); + COMBINE_DATA(&m_tmapram[offset]); + m_tmap->mark_tile_dirty(offset); } -static WRITE32_HANDLER( darkhors_tmapram2_w ) +WRITE32_MEMBER(darkhors_state::darkhors_tmapram2_w) { - darkhors_state *state = space->machine().driver_data<darkhors_state>(); - COMBINE_DATA(&state->m_tmapram2[offset]); - state->m_tmap2->mark_tile_dirty(offset); + COMBINE_DATA(&m_tmapram2[offset]); + m_tmap2->mark_tile_dirty(offset); } static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect) @@ -263,16 +268,15 @@ static WRITE32_DEVICE_HANDLER( darkhors_eeprom_w ) } } -static WRITE32_HANDLER( paletteram32_xBBBBBGGGGGRRRRR_dword_w ) +WRITE32_MEMBER(darkhors_state::paletteram32_xBBBBBGGGGGRRRRR_dword_w) { if (ACCESSING_BITS_16_31) paletteram16_xBBBBBGGGGGRRRRR_word_w(space, offset*2, data >> 16, mem_mask >> 16); if (ACCESSING_BITS_0_15) paletteram16_xBBBBBGGGGGRRRRR_word_w(space, offset*2+1, data, mem_mask); } -static WRITE32_HANDLER( darkhors_input_sel_w ) +WRITE32_MEMBER(darkhors_state::darkhors_input_sel_w) { - darkhors_state *state = space->machine().driver_data<darkhors_state>(); - COMBINE_DATA(&state->m_input_sel); + COMBINE_DATA(&m_input_sel); // if (ACCESSING_BITS_16_31) popmessage("%04X",data >> 16); } @@ -292,19 +296,18 @@ static int mask_to_bit( int mask ) } } -static READ32_HANDLER( darkhors_input_sel_r ) +READ32_MEMBER(darkhors_state::darkhors_input_sel_r) { - darkhors_state *state = space->machine().driver_data<darkhors_state>(); // from bit mask to bit number - int bit_p1 = mask_to_bit((state->m_input_sel & 0x00ff0000) >> 16); - int bit_p2 = mask_to_bit((state->m_input_sel & 0xff000000) >> 24); + int bit_p1 = mask_to_bit((m_input_sel & 0x00ff0000) >> 16); + int bit_p2 = mask_to_bit((m_input_sel & 0xff000000) >> 24); static const char *const portnames[] = { "IN0", "IN1", "IN2", "IN3", "IN4", "IN5", "IN6", "IN7" }; - return (input_port_read(space->machine(), portnames[bit_p1]) & 0x00ffffff) | - (input_port_read(space->machine(), portnames[bit_p2]) & 0xff000000) ; + return (input_port_read(machine(), portnames[bit_p1]) & 0x00ffffff) | + (input_port_read(machine(), portnames[bit_p2]) & 0xff000000) ; } -static WRITE32_HANDLER( darkhors_unk1_w ) +WRITE32_MEMBER(darkhors_state::darkhors_unk1_w) { // 0x1000 lockout // if (ACCESSING_BITS_16_31) popmessage("%04X",data >> 16); @@ -315,34 +318,33 @@ static ADDRESS_MAP_START( darkhors_map, AS_PROGRAM, 32, darkhors_state ) AM_RANGE(0x400000, 0x41ffff) AM_RAM AM_RANGE(0x490040, 0x490043) AM_DEVWRITE_LEGACY("eeprom", darkhors_eeprom_w) - AM_RANGE(0x4e0080, 0x4e0083) AM_READ_PORT("4e0080") AM_WRITE_LEGACY(darkhors_unk1_w) + AM_RANGE(0x4e0080, 0x4e0083) AM_READ_PORT("4e0080") AM_WRITE(darkhors_unk1_w) AM_RANGE(0x580000, 0x580003) AM_READ_PORT("580000") AM_RANGE(0x580004, 0x580007) AM_READ_PORT("580004") - AM_RANGE(0x580008, 0x58000b) AM_READ_LEGACY(darkhors_input_sel_r) - AM_RANGE(0x58000c, 0x58000f) AM_WRITE_LEGACY(darkhors_input_sel_w) + AM_RANGE(0x580008, 0x58000b) AM_READ(darkhors_input_sel_r) + AM_RANGE(0x58000c, 0x58000f) AM_WRITE(darkhors_input_sel_w) AM_RANGE(0x580084, 0x580087) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0xff000000) AM_RANGE(0x580200, 0x580203) AM_READNOP AM_RANGE(0x580400, 0x580403) AM_READ_PORT("580400") AM_RANGE(0x580420, 0x580423) AM_READ_PORT("580420") AM_RANGE(0x800000, 0x86bfff) AM_RAM - AM_RANGE(0x86c000, 0x86ffff) AM_RAM_WRITE_LEGACY(darkhors_tmapram_w) AM_BASE(m_tmapram) - AM_RANGE(0x870000, 0x873fff) AM_RAM_WRITE_LEGACY(darkhors_tmapram2_w) AM_BASE(m_tmapram2) + AM_RANGE(0x86c000, 0x86ffff) AM_RAM_WRITE(darkhors_tmapram_w) AM_BASE(m_tmapram) + AM_RANGE(0x870000, 0x873fff) AM_RAM_WRITE(darkhors_tmapram2_w) AM_BASE(m_tmapram2) AM_RANGE(0x874000, 0x87dfff) AM_RAM AM_RANGE(0x87e000, 0x87ffff) AM_RAM AM_BASE(m_spriteram) - AM_RANGE(0x880000, 0x89ffff) AM_WRITE_LEGACY(paletteram32_xBBBBBGGGGGRRRRR_dword_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x880000, 0x89ffff) AM_WRITE(paletteram32_xBBBBBGGGGGRRRRR_dword_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x8a0000, 0x8bffff) AM_WRITEONLY // this should still be palette ram! AM_RANGE(0x8c0120, 0x8c012f) AM_WRITEONLY AM_BASE(m_tmapscroll) AM_RANGE(0x8c0130, 0x8c013f) AM_WRITEONLY AM_BASE(m_tmapscroll2) ADDRESS_MAP_END -static WRITE32_HANDLER( jclub2_tileram_w ) +WRITE32_MEMBER(darkhors_state::jclub2_tileram_w) { - darkhors_state *state = space->machine().driver_data<darkhors_state>(); - COMBINE_DATA(&state->m_jclub2_tileram[offset]); - gfx_element_mark_dirty(space->machine().gfx[state->m_jclub2_gfx_index], offset/(256/4)); + COMBINE_DATA(&m_jclub2_tileram[offset]); + gfx_element_mark_dirty(machine().gfx[m_jclub2_gfx_index], offset/(256/4)); } @@ -351,25 +353,25 @@ static ADDRESS_MAP_START( jclub2_map, AS_PROGRAM, 32, darkhors_state ) AM_RANGE(0x400000, 0x41ffff) AM_RAM AM_RANGE(0x490040, 0x490043) AM_DEVWRITE_LEGACY("eeprom", darkhors_eeprom_w) - AM_RANGE(0x4e0080, 0x4e0083) AM_READ_PORT("4e0080") AM_WRITE_LEGACY(darkhors_unk1_w) + AM_RANGE(0x4e0080, 0x4e0083) AM_READ_PORT("4e0080") AM_WRITE(darkhors_unk1_w) AM_RANGE(0x580000, 0x580003) AM_READ_PORT("580000") AM_RANGE(0x580004, 0x580007) AM_READ_PORT("580004") - AM_RANGE(0x580008, 0x58000b) AM_READ_LEGACY(darkhors_input_sel_r) - AM_RANGE(0x58000c, 0x58000f) AM_WRITE_LEGACY(darkhors_input_sel_w) + AM_RANGE(0x580008, 0x58000b) AM_READ(darkhors_input_sel_r) + AM_RANGE(0x58000c, 0x58000f) AM_WRITE(darkhors_input_sel_w) AM_RANGE(0x580200, 0x580203) AM_READNOP AM_RANGE(0x580400, 0x580403) AM_READ_PORT("580400") AM_RANGE(0x580420, 0x580423) AM_READ_PORT("580420") AM_RANGE(0x800000, 0x87ffff) AM_RAM AM_BASE(m_spriteram) - AM_RANGE(0x880000, 0x89ffff) AM_WRITE_LEGACY(paletteram32_xBBBBBGGGGGRRRRR_dword_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x880000, 0x89ffff) AM_WRITE(paletteram32_xBBBBBGGGGGRRRRR_dword_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x8a0000, 0x8bffff) AM_WRITEONLY // this should still be palette ram! AM_RANGE(0x8C0000, 0x8C01ff) AM_RAM AM_RANGE(0x8E0000, 0x8E01ff) AM_RAM - AM_RANGE(0x900000, 0x90ffff) AM_RAM_WRITE_LEGACY(jclub2_tileram_w) AM_BASE(m_jclub2_tileram) // tile data gets decompressed here by main cpu? + AM_RANGE(0x900000, 0x90ffff) AM_RAM_WRITE(jclub2_tileram_w) AM_BASE(m_jclub2_tileram) // tile data gets decompressed here by main cpu? ADDRESS_MAP_END diff --git a/src/mame/drivers/dblewing.c b/src/mame/drivers/dblewing.c index f2d80f27d73..334cba9f60d 100644 --- a/src/mame/drivers/dblewing.c +++ b/src/mame/drivers/dblewing.c @@ -75,6 +75,9 @@ public: device_t *m_maincpu; device_t *m_audiocpu; device_t *m_deco_tilegen1; + DECLARE_READ16_MEMBER(dblewing_prot_r); + DECLARE_WRITE16_MEMBER(dblewing_prot_w); + DECLARE_READ8_MEMBER(irq_latch_r); }; UINT16 dblwings_pri_callback(UINT16 x) @@ -120,32 +123,31 @@ static SCREEN_UPDATE_IND16(dblewing) we need to log the PC of each read/write and check to see if the code makes any of them move obvious */ -static READ16_HANDLER ( dblewing_prot_r ) +READ16_MEMBER(dblewing_state::dblewing_prot_r) { - dblewing_state *state = space->machine().driver_data<dblewing_state>(); switch (offset * 2) { - case 0x16a: return state->m_boss_move; // boss 1 movement - case 0x6d6: return state->m_boss_move; // boss 1 2nd pilot - case 0x748: return state->m_boss_move; // boss 1 3rd pilot + case 0x16a: return m_boss_move; // boss 1 movement + case 0x6d6: return m_boss_move; // boss 1 2nd pilot + case 0x748: return m_boss_move; // boss 1 3rd pilot case 0x566: return 0x0009; // boss BGM,might be a variable one (read->write to the sound latch) - case 0x1ea: return state->m_boss_shoot_type; // boss 1 shoot type - case 0x596: return state->m_boss_3_data; // boss 3 appearing - case 0x692: return state->m_boss_4_data; - case 0x6b0: return state->m_boss_5_data; - case 0x51e: return state->m_boss_5sx_data; - case 0x784: return state->m_boss_6_data; + case 0x1ea: return m_boss_shoot_type; // boss 1 shoot type + case 0x596: return m_boss_3_data; // boss 3 appearing + case 0x692: return m_boss_4_data; + case 0x6b0: return m_boss_5_data; + case 0x51e: return m_boss_5sx_data; + case 0x784: return m_boss_6_data; case 0x330: return 0; // controls bonuses such as shoot type,bombs etc. - case 0x1d4: return state->m_70c_data; //controls restart points + case 0x1d4: return m_70c_data; //controls restart points - case 0x0ac: return (input_port_read(space->machine(), "DSW") & 0x40) << 4;//flip screen - case 0x4b0: return state->m_608_data;//coinage + case 0x0ac: return (input_port_read(machine(), "DSW") & 0x40) << 4;//flip screen + case 0x4b0: return m_608_data;//coinage case 0x068: { - switch (input_port_read(space->machine(), "DSW") & 0x0300) //I don't know how to relationate this... + switch (input_port_read(machine(), "DSW") & 0x0300) //I don't know how to relationate this... { case 0x0000: return 0x000;//0 case 0x0100: return 0x060;//3 @@ -153,155 +155,154 @@ static READ16_HANDLER ( dblewing_prot_r ) case 0x0300: return 0x160;//b } } - case 0x094: return state->m_104_data;// p1 inputs select screen OK - case 0x24c: return state->m_008_data;//read DSW (mirror for coinage/territory) - case 0x298: return input_port_read(space->machine(), "SYSTEM");//vblank - case 0x476: return input_port_read(space->machine(), "SYSTEM");//mirror for coins - case 0x506: return input_port_read(space->machine(), "DSW"); - case 0x5d8: return state->m_406_data; - case 0x2b4: return input_port_read(space->machine(), "P1_P2"); - case 0x1a8: return (input_port_read(space->machine(), "DSW") & 0x4000) >> 12;//allow continue - case 0x3ec: return state->m_70c_data; //score entry - case 0x246: return state->m_580_data; // these three controls "perfect bonus" I suppose... - case 0x52e: return state->m_580_data; - case 0x532: return state->m_580_data; + case 0x094: return m_104_data;// p1 inputs select screen OK + case 0x24c: return m_008_data;//read DSW (mirror for coinage/territory) + case 0x298: return input_port_read(machine(), "SYSTEM");//vblank + case 0x476: return input_port_read(machine(), "SYSTEM");//mirror for coins + case 0x506: return input_port_read(machine(), "DSW"); + case 0x5d8: return m_406_data; + case 0x2b4: return input_port_read(machine(), "P1_P2"); + case 0x1a8: return (input_port_read(machine(), "DSW") & 0x4000) >> 12;//allow continue + case 0x3ec: return m_70c_data; //score entry + case 0x246: return m_580_data; // these three controls "perfect bonus" I suppose... + case 0x52e: return m_580_data; + case 0x532: return m_580_data; } -// printf("dblewing prot r %08x, %04x, %04x\n", cpu_get_pc(&space->device()), offset * 2, mem_mask); +// printf("dblewing prot r %08x, %04x, %04x\n", cpu_get_pc(&space.device()), offset * 2, mem_mask); - if ((offset*2) == 0x0f8) return 0; // state->m_080_data; + if ((offset*2) == 0x0f8) return 0; // m_080_data; if ((offset*2) == 0x104) return 0; if ((offset*2) == 0x10e) return 0; - if ((offset*2) == 0x206) return 0; // state->m_70c_data; + if ((offset*2) == 0x206) return 0; // m_70c_data; if ((offset*2) == 0x25c) return 0; if ((offset*2) == 0x284) return 0; // 3rd player 2nd boss if ((offset*2) == 0x432) return 0; // boss on water level? if ((offset*2) == 0x54a) return 0; // 3rd player 2nd boss if ((offset*2) == 0x786) return 0; - mame_printf_debug("dblewing prot r %08x, %04x, %04x\n", cpu_get_pc(&space->device()), offset * 2, mem_mask); + mame_printf_debug("dblewing prot r %08x, %04x, %04x\n", cpu_get_pc(&space.device()), offset * 2, mem_mask); - return 0;//space->machine().rand(); + return 0;//machine().rand(); } -static WRITE16_HANDLER( dblewing_prot_w ) +WRITE16_MEMBER(dblewing_state::dblewing_prot_w) { - dblewing_state *state = space->machine().driver_data<dblewing_state>(); // if (offset * 2 != 0x380) -// printf("dblewing prot w %08x, %04x, %04x %04x\n", cpu_get_pc(&space->device()), offset * 2, mem_mask, data); +// printf("dblewing prot w %08x, %04x, %04x %04x\n", cpu_get_pc(&space.device()), offset * 2, mem_mask, data); switch (offset * 2) { case 0x088: - state->m_088_data = data; - if(state->m_088_data == 0) { state->m_boss_4_data = 0; } - else if(state->m_088_data & 0x8000) { state->m_boss_4_data = 0x50; } - else { state->m_boss_4_data = 0x40; } + m_088_data = data; + if(m_088_data == 0) { m_boss_4_data = 0; } + else if(m_088_data & 0x8000) { m_boss_4_data = 0x50; } + else { m_boss_4_data = 0x40; } return; case 0x104: - state->m_104_data = data; + m_104_data = data; return; // p1 inputs select screen OK case 0x18a: - state->m_18a_data = data; - switch (state->m_18a_data) + m_18a_data = data; + switch (m_18a_data) { - case 0x6b94: state->m_boss_5_data = 0x10; break; //initialize - case 0x7c68: state->m_boss_5_data = 0x60; break; //go up - case 0xfb1d: state->m_boss_5_data = 0x50; break; - case 0x977c: state->m_boss_5_data = 0x50; break; - case 0x8a49: state->m_boss_5_data = 0x60; break; + case 0x6b94: m_boss_5_data = 0x10; break; //initialize + case 0x7c68: m_boss_5_data = 0x60; break; //go up + case 0xfb1d: m_boss_5_data = 0x50; break; + case 0x977c: m_boss_5_data = 0x50; break; + case 0x8a49: m_boss_5_data = 0x60; break; } return; case 0x200: - state->m_200_data = data; - switch (state->m_200_data) + m_200_data = data; + switch (m_200_data) { - case 0x5a19: state->m_boss_move = 1; break; - case 0x3b28: state->m_boss_move = 2; break; - case 0x1d4d: state->m_boss_move = 1; break; + case 0x5a19: m_boss_move = 1; break; + case 0x3b28: m_boss_move = 2; break; + case 0x1d4d: m_boss_move = 1; break; } - //popmessage("%04x",state->m_200_data); + //popmessage("%04x",m_200_data); return; case 0x280: - state->m_280_data = data; - switch (state->m_280_data) + m_280_data = data; + switch (m_280_data) { - case 0x6b94: state->m_boss_5sx_data = 0x10; break; - case 0x7519: state->m_boss_5sx_data = 0x60; break; - case 0xfc68: state->m_boss_5sx_data = 0x50; break; - case 0x02dd: state->m_boss_5sx_data = 0x50; break; - case 0x613c: state->m_boss_5sx_data = 0x50; break; + case 0x6b94: m_boss_5sx_data = 0x10; break; + case 0x7519: m_boss_5sx_data = 0x60; break; + case 0xfc68: m_boss_5sx_data = 0x50; break; + case 0x02dd: m_boss_5sx_data = 0x50; break; + case 0x613c: m_boss_5sx_data = 0x50; break; } - //printf("%04x\n",state->m_280_data); + //printf("%04x\n",m_280_data); return; case 0x380: // sound write soundlatch_w(space, 0, data & 0xff); - state->m_sound_irq |= 0x02; - device_set_input_line(state->m_audiocpu, 0, (state->m_sound_irq != 0) ? ASSERT_LINE : CLEAR_LINE); + m_sound_irq |= 0x02; + device_set_input_line(m_audiocpu, 0, (m_sound_irq != 0) ? ASSERT_LINE : CLEAR_LINE); return; case 0x384: - state->m_384_data = data; - switch(state->m_384_data) + m_384_data = data; + switch(m_384_data) { - case 0xaa41: state->m_boss_6_data = 1; break; - case 0x5a97: state->m_boss_6_data = 2; break; - case 0xbac5: state->m_boss_6_data = 3; break; - case 0x0afb: state->m_boss_6_data = 4; break; - case 0x6a99: state->m_boss_6_data = 5; break; - case 0xda8f: state->m_boss_6_data = 6; break; + case 0xaa41: m_boss_6_data = 1; break; + case 0x5a97: m_boss_6_data = 2; break; + case 0xbac5: m_boss_6_data = 3; break; + case 0x0afb: m_boss_6_data = 4; break; + case 0x6a99: m_boss_6_data = 5; break; + case 0xda8f: m_boss_6_data = 6; break; } return; case 0x38e: - state->m_38e_data = data; - switch(state->m_38e_data) + m_38e_data = data; + switch(m_38e_data) { - case 0x6c13: state->m_boss_shoot_type = 3; break; - case 0xc311: state->m_boss_shoot_type = 0; break; - case 0x1593: state->m_boss_shoot_type = 1; break; - case 0xf9db: state->m_boss_shoot_type = 2; break; - case 0xf742: state->m_boss_shoot_type = 3; break; - - case 0xeff5: state->m_boss_move = 1; break; - case 0xd2f1: state->m_boss_move = 2; break; - //default: printf("%04x\n",state->m_38e_data); break; - //case 0xe65a: state->m_boss_shoot_type = 0; break; + case 0x6c13: m_boss_shoot_type = 3; break; + case 0xc311: m_boss_shoot_type = 0; break; + case 0x1593: m_boss_shoot_type = 1; break; + case 0xf9db: m_boss_shoot_type = 2; break; + case 0xf742: m_boss_shoot_type = 3; break; + + case 0xeff5: m_boss_move = 1; break; + case 0xd2f1: m_boss_move = 2; break; + //default: printf("%04x\n",m_38e_data); break; + //case 0xe65a: m_boss_shoot_type = 0; break; } return; case 0x58c: // 3rd player 1st level - state->m_58c_data = data; - if(state->m_58c_data == 0) { state->m_boss_move = 5; } - else { state->m_boss_move = 2; } + m_58c_data = data; + if(m_58c_data == 0) { m_boss_move = 5; } + else { m_boss_move = 2; } return; case 0x60a: - state->m_60a_data = data; - if(state->m_60a_data & 0x8000) { state->m_boss_3_data = 2; } - else { state->m_boss_3_data = 9; } + m_60a_data = data; + if(m_60a_data & 0x8000) { m_boss_3_data = 2; } + else { m_boss_3_data = 9; } return; case 0x580: - state->m_580_data = data; + m_580_data = data; return; case 0x406: - state->m_406_data = data; + m_406_data = data; return; // p2 inputs select screen OK } -// printf("dblewing prot w %08x, %04x, %04x %04x\n", cpu_get_pc(&space->device()), offset * 2, mem_mask, data); - - if ((offset * 2) == 0x008) { state->m_008_data = data; return; } - if ((offset * 2) == 0x080) { state->m_080_data = data; return; } // p3 3rd boss? - if ((offset * 2) == 0x28c) { state->m_28c_data = data; return; } - if ((offset * 2) == 0x408) { state->m_408_data = data; return; } // 3rd player 1st level? - if ((offset * 2) == 0x40e) { state->m_40e_data = data; return; } // 3rd player 2nd level? - if ((offset * 2) == 0x608) { state->m_608_data = data; return; } - if ((offset * 2) == 0x70c) { state->m_70c_data = data; return; } - if ((offset * 2) == 0x78a) { state->m_78a_data = data; return; } - if ((offset * 2) == 0x788) { state->m_788_data = data; return; } +// printf("dblewing prot w %08x, %04x, %04x %04x\n", cpu_get_pc(&space.device()), offset * 2, mem_mask, data); + + if ((offset * 2) == 0x008) { m_008_data = data; return; } + if ((offset * 2) == 0x080) { m_080_data = data; return; } // p3 3rd boss? + if ((offset * 2) == 0x28c) { m_28c_data = data; return; } + if ((offset * 2) == 0x408) { m_408_data = data; return; } // 3rd player 1st level? + if ((offset * 2) == 0x40e) { m_40e_data = data; return; } // 3rd player 2nd level? + if ((offset * 2) == 0x608) { m_608_data = data; return; } + if ((offset * 2) == 0x70c) { m_70c_data = data; return; } + if ((offset * 2) == 0x78a) { m_78a_data = data; return; } + if ((offset * 2) == 0x788) { m_788_data = data; return; } } static ADDRESS_MAP_START( dblewing_map, AS_PROGRAM, 16, dblewing_state ) @@ -321,7 +322,7 @@ static ADDRESS_MAP_START( dblewing_map, AS_PROGRAM, 16, dblewing_state ) // AM_RANGE(0x280330, 0x280331) AM_READNOP // sound? // AM_RANGE(0x280380, 0x280381) AM_WRITENOP // sound - AM_RANGE(0x280000, 0x2807ff) AM_READWRITE_LEGACY(dblewing_prot_r, dblewing_prot_w) + AM_RANGE(0x280000, 0x2807ff) AM_READWRITE(dblewing_prot_r, dblewing_prot_w) AM_RANGE(0x284000, 0x284001) AM_RAM @@ -332,14 +333,13 @@ static ADDRESS_MAP_START( dblewing_map, AS_PROGRAM, 16, dblewing_state ) AM_RANGE(0xff0000, 0xff3fff) AM_MIRROR(0xc000) AM_RAM ADDRESS_MAP_END -static READ8_HANDLER(irq_latch_r) +READ8_MEMBER(dblewing_state::irq_latch_r) { - dblewing_state *state = space->machine().driver_data<dblewing_state>(); /* bit 1 of dblewing_sound_irq specifies IRQ command writes */ - state->m_sound_irq &= ~0x02; - device_set_input_line(state->m_audiocpu, 0, (state->m_sound_irq != 0) ? ASSERT_LINE : CLEAR_LINE); - return state->m_sound_irq; + m_sound_irq &= ~0x02; + device_set_input_line(m_audiocpu, 0, (m_sound_irq != 0) ? ASSERT_LINE : CLEAR_LINE); + return m_sound_irq; } static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, dblewing_state ) @@ -348,7 +348,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, dblewing_state ) AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_status_port_r,ym2151_w) AM_RANGE(0xb000, 0xb000) AM_DEVREADWRITE("oki", okim6295_device, read, write) AM_RANGE(0xc000, 0xc000) AM_READ_LEGACY(soundlatch_r) - AM_RANGE(0xd000, 0xd000) AM_READ_LEGACY(irq_latch_r) //timing? sound latch? + AM_RANGE(0xd000, 0xd000) AM_READ(irq_latch_r) //timing? sound latch? AM_RANGE(0xf000, 0xf000) AM_DEVREADWRITE("oki", okim6295_device, read, write) ADDRESS_MAP_END diff --git a/src/mame/drivers/deco_ld.c b/src/mame/drivers/deco_ld.c index 42113d01045..c024167e44e 100644 --- a/src/mame/drivers/deco_ld.c +++ b/src/mame/drivers/deco_ld.c @@ -119,6 +119,12 @@ public: required_device<pioneer_ldv1000_device> m_laserdisc; UINT8 m_laserdisc_data; int m_nmimask; + DECLARE_WRITE8_MEMBER(rblaster_sound_w); + DECLARE_WRITE8_MEMBER(rblaster_vram_bank_w); + DECLARE_READ8_MEMBER(laserdisc_r); + DECLARE_WRITE8_MEMBER(laserdisc_w); + DECLARE_READ8_MEMBER(test_r); + DECLARE_WRITE8_MEMBER(nmimask_w); }; @@ -148,51 +154,48 @@ static SCREEN_UPDATE_IND16( rblaster ) } #if 0 -static WRITE8_HANDLER( rblaster_sound_w ) +WRITE8_MEMBER(deco_ld_state::rblaster_sound_w) { soundlatch_w(space,0,data); - device_set_input_line(space->machine().cpu[1], 0, HOLD_LINE); + device_set_input_line(machine().cpu[1], 0, HOLD_LINE); } #endif -static WRITE8_HANDLER( rblaster_vram_bank_w ) +WRITE8_MEMBER(deco_ld_state::rblaster_vram_bank_w) { - deco_ld_state *state = space->machine().driver_data<deco_ld_state>(); - state->m_vram_bank = data; + m_vram_bank = data; } -static READ8_HANDLER( laserdisc_r ) +READ8_MEMBER(deco_ld_state::laserdisc_r) { - deco_ld_state *state = space->machine().driver_data<deco_ld_state>(); - UINT8 result = state->m_laserdisc->status_r(); + UINT8 result = m_laserdisc->status_r(); // mame_printf_debug("laserdisc_r = %02X\n", result); return result; } -static WRITE8_HANDLER( laserdisc_w ) +WRITE8_MEMBER(deco_ld_state::laserdisc_w) { - deco_ld_state *state = space->machine().driver_data<deco_ld_state>(); - state->m_laserdisc_data = data; + m_laserdisc_data = data; } -static READ8_HANDLER( test_r ) +READ8_MEMBER(deco_ld_state::test_r) { - return space->machine().rand(); + return machine().rand(); } static ADDRESS_MAP_START( begas_map, AS_PROGRAM, 8, deco_ld_state ) AM_RANGE(0x0000, 0x0fff) AM_RAM // AM_RANGE(0x1000, 0x1007) AM_NOP - AM_RANGE(0x1000, 0x1000) AM_READ_LEGACY(test_r) - AM_RANGE(0x1001, 0x1001) AM_READ_LEGACY(test_r) - AM_RANGE(0x1002, 0x1002) AM_READ_LEGACY(test_r) - AM_RANGE(0x1003, 0x1003) AM_READ_LEGACY(test_r) + AM_RANGE(0x1000, 0x1000) AM_READ(test_r) + AM_RANGE(0x1001, 0x1001) AM_READ(test_r) + AM_RANGE(0x1002, 0x1002) AM_READ(test_r) + AM_RANGE(0x1003, 0x1003) AM_READ(test_r) AM_RANGE(0x1001, 0x1001) AM_WRITENOP //??? // AM_RANGE(0x1003, 0x1003) AM_READ_PORT("IN0") - AM_RANGE(0x1003, 0x1003) AM_WRITE_LEGACY(rblaster_vram_bank_w) //might be 1001 + AM_RANGE(0x1003, 0x1003) AM_WRITE(rblaster_vram_bank_w) //might be 1001 AM_RANGE(0x1006, 0x1006) AM_NOP //ld status / command - AM_RANGE(0x1007, 0x1007) AM_READWRITE_LEGACY(laserdisc_r,laserdisc_w) // ld data + AM_RANGE(0x1007, 0x1007) AM_READWRITE(laserdisc_r,laserdisc_w) // ld data AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE_LEGACY(paletteram_RRRGGGBB_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x2000, 0x27ff) AM_RAM AM_RANGE(0x2800, 0x2fff) AM_RAM AM_BASE(m_videoram) @@ -203,14 +206,14 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( cobra_map, AS_PROGRAM, 8, deco_ld_state ) AM_RANGE(0x0000, 0x0fff) AM_RAM AM_RANGE(0x1000, 0x1000) AM_READ_PORT("IN1") - AM_RANGE(0x1001, 0x1001) AM_READ_LEGACY(test_r)//_PORT("IN2") - AM_RANGE(0x1002, 0x1002) AM_READ_LEGACY(test_r)//_PORT("IN3") - AM_RANGE(0x1003, 0x1003) AM_READ_LEGACY(test_r)//AM_READ_PORT("IN0") -// AM_RANGE(0x1004, 0x1004) AM_READ_LEGACY(test_r)//_PORT("IN4") -// AM_RANGE(0x1005, 0x1005) AM_READ_LEGACY(test_r)//_PORT("IN5") - AM_RANGE(0x1004, 0x1004) AM_WRITE_LEGACY(rblaster_vram_bank_w) //might be 1001 + AM_RANGE(0x1001, 0x1001) AM_READ(test_r)//_PORT("IN2") + AM_RANGE(0x1002, 0x1002) AM_READ(test_r)//_PORT("IN3") + AM_RANGE(0x1003, 0x1003) AM_READ(test_r)//AM_READ_PORT("IN0") +// AM_RANGE(0x1004, 0x1004) AM_READ(test_r)//_PORT("IN4") +// AM_RANGE(0x1005, 0x1005) AM_READ(test_r)//_PORT("IN5") + AM_RANGE(0x1004, 0x1004) AM_WRITE(rblaster_vram_bank_w) //might be 1001 AM_RANGE(0x1006, 0x1006) AM_NOP //ld status / command - AM_RANGE(0x1007, 0x1007) AM_READWRITE_LEGACY(laserdisc_r,laserdisc_w) // ld data + AM_RANGE(0x1007, 0x1007) AM_READWRITE(laserdisc_r,laserdisc_w) // ld data AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE_LEGACY(paletteram_RRRGGGBB_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x2000, 0x2fff) AM_RAM AM_RANGE(0x3000, 0x37ff) AM_RAM //vram attr? @@ -224,9 +227,9 @@ static ADDRESS_MAP_START( rblaster_map, AS_PROGRAM, 8, deco_ld_state ) // AM_RANGE(0x1000, 0x1007) AM_NOP AM_RANGE(0x1001, 0x1001) AM_WRITENOP //??? AM_RANGE(0x1003, 0x1003) AM_READ_PORT("IN0") - AM_RANGE(0x1003, 0x1003) AM_WRITE_LEGACY(rblaster_vram_bank_w) //might be 1001 + AM_RANGE(0x1003, 0x1003) AM_WRITE(rblaster_vram_bank_w) //might be 1001 AM_RANGE(0x1006, 0x1006) AM_NOP //ld status / command - AM_RANGE(0x1007, 0x1007) AM_READWRITE_LEGACY(laserdisc_r,laserdisc_w) // ld data + AM_RANGE(0x1007, 0x1007) AM_READWRITE(laserdisc_r,laserdisc_w) // ld data AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE_LEGACY(paletteram_RRRGGGBB_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x2800, 0x2fff) AM_RAM AM_BASE(m_videoram) AM_RANGE(0x3000, 0x3fff) AM_RAM @@ -236,10 +239,9 @@ ADDRESS_MAP_END /* sound arrangement is pratically identical to Zero Target. */ #ifdef UNUSED_FUNCTION -static WRITE8_HANDLER( nmimask_w ) +WRITE8_MEMBER(deco_ld_state::nmimask_w) { - deco_ld_state *state = space->machine().driver_data<deco_ld_state>(); - state->m_nmimask = data & 0x80; + m_nmimask = data & 0x80; } #endif diff --git a/src/mame/drivers/destroyr.c b/src/mame/drivers/destroyr.c index 665fab41148..0de5323268c 100644 --- a/src/mame/drivers/destroyr.c +++ b/src/mame/drivers/destroyr.c @@ -39,6 +39,12 @@ public: /* devices */ device_t *m_maincpu; + DECLARE_WRITE8_MEMBER(destroyr_misc_w); + DECLARE_WRITE8_MEMBER(destroyr_cursor_load_w); + DECLARE_WRITE8_MEMBER(destroyr_interrupt_ack_w); + DECLARE_WRITE8_MEMBER(destroyr_output_w); + DECLARE_READ8_MEMBER(destroyr_input_r); + DECLARE_READ8_MEMBER(destroyr_scanline_r); }; @@ -160,49 +166,46 @@ static MACHINE_RESET( destroyr ) } -static WRITE8_HANDLER( destroyr_misc_w ) +WRITE8_MEMBER(destroyr_state::destroyr_misc_w) { - destroyr_state *state = space->machine().driver_data<destroyr_state>(); /* bits 0 to 2 connect to the sound circuits */ - state->m_attract = data & 0x01; - state->m_noise = data & 0x02; - state->m_motor_speed = data & 0x04; - state->m_potmask[0] = data & 0x08; - state->m_wavemod = data & 0x10; - state->m_potmask[1] = data & 0x20; - - coin_lockout_w(space->machine(), 0, !state->m_attract); - coin_lockout_w(space->machine(), 1, !state->m_attract); + m_attract = data & 0x01; + m_noise = data & 0x02; + m_motor_speed = data & 0x04; + m_potmask[0] = data & 0x08; + m_wavemod = data & 0x10; + m_potmask[1] = data & 0x20; + + coin_lockout_w(machine(), 0, !m_attract); + coin_lockout_w(machine(), 1, !m_attract); } -static WRITE8_HANDLER( destroyr_cursor_load_w ) +WRITE8_MEMBER(destroyr_state::destroyr_cursor_load_w) { - destroyr_state *state = space->machine().driver_data<destroyr_state>(); - state->m_cursor = data; + m_cursor = data; watchdog_reset_w(space, offset, data); } -static WRITE8_HANDLER( destroyr_interrupt_ack_w ) +WRITE8_MEMBER(destroyr_state::destroyr_interrupt_ack_w) { - destroyr_state *state = space->machine().driver_data<destroyr_state>(); - device_set_input_line(state->m_maincpu, 0, CLEAR_LINE); + device_set_input_line(m_maincpu, 0, CLEAR_LINE); } -static WRITE8_HANDLER( destroyr_output_w ) +WRITE8_MEMBER(destroyr_state::destroyr_output_w) { if (offset & 8) destroyr_misc_w(space, 8, data); else switch (offset & 7) { case 0: - set_led_status(space->machine(), 0, data & 1); + set_led_status(machine(), 0, data & 1); break; case 1: - set_led_status(space->machine(), 1, data & 1); /* no second LED present on cab */ + set_led_status(machine(), 1, data & 1); /* no second LED present on cab */ break; case 2: /* bit 0 => songate */ @@ -226,22 +229,21 @@ static WRITE8_HANDLER( destroyr_output_w ) } -static READ8_HANDLER( destroyr_input_r ) +READ8_MEMBER(destroyr_state::destroyr_input_r) { - destroyr_state *state = space->machine().driver_data<destroyr_state>(); if (offset & 1) { - return input_port_read(space->machine(), "IN1"); + return input_port_read(machine(), "IN1"); } else { - UINT8 ret = input_port_read(space->machine(), "IN0"); + UINT8 ret = input_port_read(machine(), "IN0"); - if (state->m_potsense[0] && state->m_potmask[0]) + if (m_potsense[0] && m_potmask[0]) ret |= 4; - if (state->m_potsense[1] && state->m_potmask[1]) + if (m_potsense[1] && m_potmask[1]) ret |= 8; return ret; @@ -249,23 +251,23 @@ static READ8_HANDLER( destroyr_input_r ) } -static READ8_HANDLER( destroyr_scanline_r ) +READ8_MEMBER(destroyr_state::destroyr_scanline_r) { - return space->machine().primary_screen->vpos(); + return machine().primary_screen->vpos(); } static ADDRESS_MAP_START( destroyr_map, AS_PROGRAM, 8, destroyr_state ) ADDRESS_MAP_GLOBAL_MASK(0x7fff) AM_RANGE(0x0000, 0x00ff) AM_MIRROR(0xf00) AM_RAM - AM_RANGE(0x1000, 0x1fff) AM_READWRITE_LEGACY(destroyr_input_r, destroyr_output_w) + AM_RANGE(0x1000, 0x1fff) AM_READWRITE(destroyr_input_r, destroyr_output_w) AM_RANGE(0x2000, 0x2fff) AM_READ_PORT("IN2") AM_RANGE(0x3000, 0x30ff) AM_MIRROR(0xf00) AM_WRITEONLY AM_BASE(m_alpha_num_ram) AM_RANGE(0x4000, 0x401f) AM_MIRROR(0xfe0) AM_WRITEONLY AM_BASE(m_major_obj_ram) - AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xff8) AM_WRITE_LEGACY(destroyr_cursor_load_w) - AM_RANGE(0x5001, 0x5001) AM_MIRROR(0xff8) AM_WRITE_LEGACY(destroyr_interrupt_ack_w) + AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xff8) AM_WRITE(destroyr_cursor_load_w) + AM_RANGE(0x5001, 0x5001) AM_MIRROR(0xff8) AM_WRITE(destroyr_interrupt_ack_w) AM_RANGE(0x5002, 0x5007) AM_MIRROR(0xff8) AM_WRITEONLY AM_BASE(m_minor_obj_ram) - AM_RANGE(0x6000, 0x6fff) AM_READ_LEGACY(destroyr_scanline_r) + AM_RANGE(0x6000, 0x6fff) AM_READ(destroyr_scanline_r) AM_RANGE(0x7000, 0x7fff) AM_ROM ADDRESS_MAP_END diff --git a/src/mame/drivers/dgpix.c b/src/mame/drivers/dgpix.c index 0e8ad8a49a1..209b20e7b7a 100644 --- a/src/mame/drivers/dgpix.c +++ b/src/mame/drivers/dgpix.c @@ -65,32 +65,38 @@ public: int m_old_vbuf; UINT32 m_flash_cmd; INT32 m_first_offset; + DECLARE_READ32_MEMBER(flash_r); + DECLARE_WRITE32_MEMBER(flash_w); + DECLARE_WRITE32_MEMBER(vram_w); + DECLARE_READ32_MEMBER(vram_r); + DECLARE_WRITE32_MEMBER(vbuffer_w); + DECLARE_WRITE32_MEMBER(coin_w); + DECLARE_READ32_MEMBER(vblank_r); }; -static READ32_HANDLER( flash_r ) +READ32_MEMBER(dgpix_state::flash_r) { - dgpix_state *state = space->machine().driver_data<dgpix_state>(); - UINT32 *ROM = (UINT32 *)space->machine().region("user1")->base(); + UINT32 *ROM = (UINT32 *)machine().region("user1")->base(); - if(offset >= (0x2000000 - state->m_flash_roms * 0x400000) / 4) + if(offset >= (0x2000000 - m_flash_roms * 0x400000) / 4) { - if(state->m_flash_cmd == 0x90900000) + if(m_flash_cmd == 0x90900000) { //read maker ID and chip ID return 0x00890014; } - else if(state->m_flash_cmd == 0x00700000) + else if(m_flash_cmd == 0x00700000) { //read status return 0x80<<16; } - else if(state->m_flash_cmd == 0x70700000) + else if(m_flash_cmd == 0x70700000) { //read status and ? return 0x82<<16; } - else if(state->m_flash_cmd == 0xe8e80000) + else if(m_flash_cmd == 0xe8e80000) { //read status ? return 0x80<<16; @@ -100,34 +106,33 @@ static READ32_HANDLER( flash_r ) return ROM[offset]; } -static WRITE32_HANDLER( flash_w ) +WRITE32_MEMBER(dgpix_state::flash_w) { - dgpix_state *state = space->machine().driver_data<dgpix_state>(); - if(state->m_flash_cmd == 0x20200000) + if(m_flash_cmd == 0x20200000) { // erase game settings if(data == 0xd0d00000) { // point to game settings - UINT8 *rom = (UINT8 *)space->machine().region("user1")->base() + offset*4; + UINT8 *rom = (UINT8 *)machine().region("user1")->base() + offset*4; // erase one block memset(rom, 0xff, 0x10000); - state->m_flash_cmd = 0; + m_flash_cmd = 0; } } - else if(state->m_flash_cmd == 0x0f0f0000) + else if(m_flash_cmd == 0x0f0f0000) { - if(data == 0xd0d00000 && offset == state->m_first_offset) + if(data == 0xd0d00000 && offset == m_first_offset) { // finished - state->m_flash_cmd = 0; - state->m_first_offset = -1; + m_flash_cmd = 0; + m_first_offset = -1; } else { - UINT16 *rom = (UINT16 *)space->machine().region("user1")->base(); + UINT16 *rom = (UINT16 *)machine().region("user1")->base(); // write game settings @@ -139,19 +144,18 @@ static WRITE32_HANDLER( flash_w ) } else { - state->m_flash_cmd = data; + m_flash_cmd = data; - if(state->m_flash_cmd == 0x0f0f0000 && state->m_first_offset == -1) + if(m_flash_cmd == 0x0f0f0000 && m_first_offset == -1) { - state->m_first_offset = offset; + m_first_offset = offset; } } } -static WRITE32_HANDLER( vram_w ) +WRITE32_MEMBER(dgpix_state::vram_w) { - dgpix_state *state = space->machine().driver_data<dgpix_state>(); - UINT32 *dest = &state->m_vram[offset+(0x40000/4)*state->m_vbuffer]; + UINT32 *dest = &m_vram[offset+(0x40000/4)*m_vbuffer]; if (mem_mask == 0xffffffff) { @@ -166,49 +170,47 @@ static WRITE32_HANDLER( vram_w ) COMBINE_DATA(dest); } -static READ32_HANDLER( vram_r ) +READ32_MEMBER(dgpix_state::vram_r) { - dgpix_state *state = space->machine().driver_data<dgpix_state>(); - return state->m_vram[offset+(0x40000/4)*state->m_vbuffer]; + return m_vram[offset+(0x40000/4)*m_vbuffer]; } -static WRITE32_HANDLER( vbuffer_w ) +WRITE32_MEMBER(dgpix_state::vbuffer_w) { - dgpix_state *state = space->machine().driver_data<dgpix_state>(); - if(state->m_old_vbuf == 3 && (data & 3) == 2) + if(m_old_vbuf == 3 && (data & 3) == 2) { - state->m_vbuffer ^= 1; + m_vbuffer ^= 1; } - state->m_old_vbuf = data & 3; + m_old_vbuf = data & 3; } -static WRITE32_HANDLER( coin_w ) +WRITE32_MEMBER(dgpix_state::coin_w) { - coin_counter_w(space->machine(), 0, data & 1); - coin_counter_w(space->machine(), 1, data & 2); + coin_counter_w(machine(), 0, data & 1); + coin_counter_w(machine(), 1, data & 2); } -static READ32_HANDLER( vblank_r ) +READ32_MEMBER(dgpix_state::vblank_r) { /* burn a bunch of cycles because this is polled frequently during busy loops */ - device_eat_cycles(&space->device(), 100); - return input_port_read(space->machine(), "VBLANK"); + device_eat_cycles(&space.device(), 100); + return input_port_read(machine(), "VBLANK"); } static ADDRESS_MAP_START( cpu_map, AS_PROGRAM, 32, dgpix_state ) AM_RANGE(0x00000000, 0x007fffff) AM_RAM - AM_RANGE(0x40000000, 0x4003ffff) AM_READWRITE_LEGACY(vram_r, vram_w) - AM_RANGE(0xe0000000, 0xe1ffffff) AM_READWRITE_LEGACY(flash_r, flash_w) - AM_RANGE(0xe2000000, 0xe3ffffff) AM_READWRITE_LEGACY(flash_r, flash_w) + AM_RANGE(0x40000000, 0x4003ffff) AM_READWRITE(vram_r, vram_w) + AM_RANGE(0xe0000000, 0xe1ffffff) AM_READWRITE(flash_r, flash_w) + AM_RANGE(0xe2000000, 0xe3ffffff) AM_READWRITE(flash_r, flash_w) AM_RANGE(0xffc00000, 0xffffffff) AM_ROM AM_REGION("user1", 0x1c00000) ADDRESS_MAP_END static ADDRESS_MAP_START( io_map, AS_IO, 32, dgpix_state ) AM_RANGE(0x0200, 0x0203) AM_READNOP // used to sync with the protecion PIC? tested bits 0 and 1 - AM_RANGE(0x0400, 0x0403) AM_READWRITE_LEGACY(vblank_r, vbuffer_w) + AM_RANGE(0x0400, 0x0403) AM_READWRITE(vblank_r, vbuffer_w) AM_RANGE(0x0a10, 0x0a13) AM_READ_PORT("INPUTS") - AM_RANGE(0x0200, 0x0203) AM_WRITE_LEGACY(coin_w) + AM_RANGE(0x0200, 0x0203) AM_WRITE(coin_w) AM_RANGE(0x0c00, 0x0c03) AM_WRITENOP // writes only: 1, 0, 1 at startup AM_RANGE(0x0c80, 0x0c83) AM_WRITENOP // sound commands / latches AM_RANGE(0x0c80, 0x0c83) AM_READNOP //read at startup -> cmp 0xFE diff --git a/src/mame/drivers/discoboy.c b/src/mame/drivers/discoboy.c index 0dc46d82580..5a3ce8824d0 100644 --- a/src/mame/drivers/discoboy.c +++ b/src/mame/drivers/discoboy.c @@ -68,6 +68,19 @@ public: UINT8 m_ram_3[0x1000]; UINT8 m_ram_4[0x1000]; UINT8 m_ram_att[0x800]; + DECLARE_WRITE8_MEMBER(rambank_select_w); + DECLARE_WRITE8_MEMBER(discoboy_port_00_w); + DECLARE_WRITE8_MEMBER(discoboy_port_01_w); + DECLARE_WRITE8_MEMBER(discoboy_port_03_w); + DECLARE_WRITE8_MEMBER(discoboy_port_06_w); + DECLARE_WRITE8_MEMBER(rambank_w); + DECLARE_READ8_MEMBER(rambank_r); + DECLARE_READ8_MEMBER(rambank2_r); + DECLARE_WRITE8_MEMBER(rambank2_w); + DECLARE_READ8_MEMBER(discoboy_ram_att_r); + DECLARE_WRITE8_MEMBER(discoboy_ram_att_w); + DECLARE_READ8_MEMBER(discoboy_port_06_r); + DECLARE_WRITE8_MEMBER(yunsung8_adpcm_w); }; @@ -192,131 +205,121 @@ void discoboy_setrombank( running_machine &machine, UINT8 data ) } #endif -static WRITE8_HANDLER( rambank_select_w ) +WRITE8_MEMBER(discoboy_state::rambank_select_w) { - discoboy_state *state = space->machine().driver_data<discoboy_state>(); - state->m_ram_bank = data; + m_ram_bank = data; if (data &= 0x83) logerror("rambank_select_w !!!!!"); } -static WRITE8_HANDLER( discoboy_port_00_w ) +WRITE8_MEMBER(discoboy_state::discoboy_port_00_w) { - discoboy_state *state = space->machine().driver_data<discoboy_state>(); if (data & 0xfe) logerror("unk discoboy_port_00_w %02x\n",data); - state->m_port_00 = data; + m_port_00 = data; } -static WRITE8_HANDLER( discoboy_port_01_w ) +WRITE8_MEMBER(discoboy_state::discoboy_port_01_w) { - discoboy_state *state = space->machine().driver_data<discoboy_state>(); // 00 10 20 30 during gameplay 1,2,3 other times?? title screen bit 0x40 toggle //printf("unk discoboy_port_01_w %02x\n",data); // discoboy gfxbank - state->m_gfxbank = data & 0xf0; + m_gfxbank = data & 0xf0; - memory_set_bank(space->machine(), "bank1", data & 0x07); + memory_set_bank(machine(), "bank1", data & 0x07); } -static WRITE8_HANDLER( discoboy_port_03_w ) // sfx? (to sound cpu) +WRITE8_MEMBER(discoboy_state::discoboy_port_03_w)// sfx? (to sound cpu) { - discoboy_state *state = space->machine().driver_data<discoboy_state>(); // printf("unk discoboy_port_03_w %02x\n", data); - // device_set_input_line(state->m_audiocpu, INPUT_LINE_NMI, HOLD_LINE); + // device_set_input_line(m_audiocpu, INPUT_LINE_NMI, HOLD_LINE); soundlatch_w(space, 0, data); - device_set_input_line(state->m_audiocpu, 0, HOLD_LINE); + device_set_input_line(m_audiocpu, 0, HOLD_LINE); } -static WRITE8_HANDLER( discoboy_port_06_w ) +WRITE8_MEMBER(discoboy_state::discoboy_port_06_w) { //printf("unk discoboy_port_06_w %02x\n",data); if (data != 0) logerror("port 06!!!! %02x\n",data); } -static WRITE8_HANDLER( rambank_w ) +WRITE8_MEMBER(discoboy_state::rambank_w) { - discoboy_state *state = space->machine().driver_data<discoboy_state>(); - if (state->m_ram_bank & 0x20) - state->m_ram_2[offset] = data; + if (m_ram_bank & 0x20) + m_ram_2[offset] = data; else - state->m_ram_1[offset] = data; + m_ram_1[offset] = data; } -static READ8_HANDLER( rambank_r ) +READ8_MEMBER(discoboy_state::rambank_r) { - discoboy_state *state = space->machine().driver_data<discoboy_state>(); - if (state->m_ram_bank & 0x20) - return state->m_ram_2[offset]; + if (m_ram_bank & 0x20) + return m_ram_2[offset]; else - return state->m_ram_1[offset]; + return m_ram_1[offset]; } -static READ8_HANDLER( rambank2_r ) +READ8_MEMBER(discoboy_state::rambank2_r) { - discoboy_state *state = space->machine().driver_data<discoboy_state>(); - if (state->m_port_00 == 0x00) - return state->m_ram_3[offset]; - else if (state->m_port_00 == 0x01) - return state->m_ram_4[offset]; + if (m_port_00 == 0x00) + return m_ram_3[offset]; + else if (m_port_00 == 0x01) + return m_ram_4[offset]; else printf("unk rb2_r\n"); - return space->machine().rand(); + return machine().rand(); } -static WRITE8_HANDLER( rambank2_w ) +WRITE8_MEMBER(discoboy_state::rambank2_w) { - discoboy_state *state = space->machine().driver_data<discoboy_state>(); - if (state->m_port_00 == 0x00) - state->m_ram_3[offset] = data; - else if (state->m_port_00 == 0x01) - state->m_ram_4[offset] = data; + if (m_port_00 == 0x00) + m_ram_3[offset] = data; + else if (m_port_00 == 0x01) + m_ram_4[offset] = data; else printf("unk rb2_w\n"); } -static READ8_HANDLER( discoboy_ram_att_r ) +READ8_MEMBER(discoboy_state::discoboy_ram_att_r) { - discoboy_state *state = space->machine().driver_data<discoboy_state>(); - return state->m_ram_att[offset]; + return m_ram_att[offset]; } -static WRITE8_HANDLER( discoboy_ram_att_w ) +WRITE8_MEMBER(discoboy_state::discoboy_ram_att_w) { - discoboy_state *state = space->machine().driver_data<discoboy_state>(); - state->m_ram_att[offset] = data; + m_ram_att[offset] = data; } static ADDRESS_MAP_START( discoboy_map, AS_PROGRAM, 8, discoboy_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xc7ff) AM_READWRITE_LEGACY(rambank_r, rambank_w) - AM_RANGE(0xc800, 0xcfff) AM_READWRITE_LEGACY(discoboy_ram_att_r, discoboy_ram_att_w) - AM_RANGE(0xd000, 0xdfff) AM_READWRITE_LEGACY(rambank2_r, rambank2_w) + AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(rambank_r, rambank_w) + AM_RANGE(0xc800, 0xcfff) AM_READWRITE(discoboy_ram_att_r, discoboy_ram_att_w) + AM_RANGE(0xd000, 0xdfff) AM_READWRITE(rambank2_r, rambank2_w) AM_RANGE(0xe000, 0xefff) AM_RAM AM_RANGE(0xf000, 0xffff) AM_RAM ADDRESS_MAP_END -static READ8_HANDLER( discoboy_port_06_r ) +READ8_MEMBER(discoboy_state::discoboy_port_06_r) { return 0x00; } static ADDRESS_MAP_START( io_map, AS_IO, 8, discoboy_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("DSWA") AM_WRITE_LEGACY(discoboy_port_00_w) - AM_RANGE(0x01, 0x01) AM_READ_PORT("SYSTEM") AM_WRITE_LEGACY(discoboy_port_01_w) + AM_RANGE(0x00, 0x00) AM_READ_PORT("DSWA") AM_WRITE(discoboy_port_00_w) + AM_RANGE(0x01, 0x01) AM_READ_PORT("SYSTEM") AM_WRITE(discoboy_port_01_w) AM_RANGE(0x02, 0x02) AM_READ_PORT("P1") - AM_RANGE(0x03, 0x03) AM_READ_PORT("P2") AM_WRITE_LEGACY(discoboy_port_03_w) + AM_RANGE(0x03, 0x03) AM_READ_PORT("P2") AM_WRITE(discoboy_port_03_w) AM_RANGE(0x04, 0x04) AM_READ_PORT("DSWB") - AM_RANGE(0x06, 0x06) AM_READWRITE_LEGACY(discoboy_port_06_r, discoboy_port_06_w) // ??? - AM_RANGE(0x07, 0x07) AM_WRITE_LEGACY(rambank_select_w) // 0x20 is palette bank bit.. others? + AM_RANGE(0x06, 0x06) AM_READWRITE(discoboy_port_06_r, discoboy_port_06_w) // ??? + AM_RANGE(0x07, 0x07) AM_WRITE(rambank_select_w) // 0x20 is palette bank bit.. others? ADDRESS_MAP_END /* Sound */ @@ -332,19 +335,18 @@ static WRITE8_DEVICE_HANDLER( yunsung8_sound_bankswitch_w ) logerror("%s: Bank %02X\n", device->machine().describe_context(), data); } -static WRITE8_HANDLER( yunsung8_adpcm_w ) +WRITE8_MEMBER(discoboy_state::yunsung8_adpcm_w) { - discoboy_state *state = space->machine().driver_data<discoboy_state>(); /* Swap the nibbles */ - state->m_adpcm = ((data & 0xf) << 4) | ((data >> 4) & 0xf); + m_adpcm = ((data & 0xf) << 4) | ((data >> 4) & 0xf); } static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, discoboy_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("sndbank") AM_RANGE(0xe000, 0xe000) AM_DEVWRITE_LEGACY("msm",yunsung8_sound_bankswitch_w) - AM_RANGE(0xe400, 0xe400) AM_WRITE_LEGACY(yunsung8_adpcm_w) + AM_RANGE(0xe400, 0xe400) AM_WRITE(yunsung8_adpcm_w) AM_RANGE(0xec00, 0xec01) AM_DEVWRITE_LEGACY("ymsnd", ym3812_w) AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_RANGE(0xf800, 0xf800) AM_READ_LEGACY(soundlatch_r) diff --git a/src/mame/drivers/diverboy.c b/src/mame/drivers/diverboy.c index 4d36a85dc79..9d576f22dd5 100644 --- a/src/mame/drivers/diverboy.c +++ b/src/mame/drivers/diverboy.c @@ -66,6 +66,7 @@ public: /* devices */ device_t *m_audiocpu; + DECLARE_WRITE16_MEMBER(soundcmd_w); }; @@ -117,14 +118,13 @@ static SCREEN_UPDATE_IND16(diverboy) } -static WRITE16_HANDLER( soundcmd_w ) +WRITE16_MEMBER(diverboy_state::soundcmd_w) { - diverboy_state *state = space->machine().driver_data<diverboy_state>(); if (ACCESSING_BITS_0_7) { soundlatch_w(space, 0, data & 0xff); - device_set_input_line(state->m_audiocpu, 0, HOLD_LINE); + device_set_input_line(m_audiocpu, 0, HOLD_LINE); } } @@ -143,7 +143,7 @@ static ADDRESS_MAP_START( diverboy_map, AS_PROGRAM, 16, diverboy_state ) AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_RANGE(0x040000, 0x04ffff) AM_RAM AM_RANGE(0x080000, 0x083fff) AM_RAM AM_BASE_SIZE(m_spriteram, m_spriteram_size) - AM_RANGE(0x100000, 0x100001) AM_WRITE_LEGACY(soundcmd_w) + AM_RANGE(0x100000, 0x100001) AM_WRITE(soundcmd_w) AM_RANGE(0x140000, 0x1407ff) AM_WRITE_LEGACY(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x180000, 0x180001) AM_READ_PORT("P1_P2") AM_RANGE(0x180002, 0x180003) AM_READ_PORT("DSW") diff --git a/src/mame/drivers/dlair.c b/src/mame/drivers/dlair.c index baa266f497a..06812a597ff 100644 --- a/src/mame/drivers/dlair.c +++ b/src/mame/drivers/dlair.c @@ -99,6 +99,12 @@ public: optional_device<phillips_22vp932_device> m_22vp932; UINT8 m_last_misc; UINT8 m_laserdisc_data; + DECLARE_WRITE8_MEMBER(misc_w); + DECLARE_WRITE8_MEMBER(dleuro_misc_w); + DECLARE_WRITE8_MEMBER(led_den1_w); + DECLARE_WRITE8_MEMBER(led_den2_w); + DECLARE_READ8_MEMBER(laserdisc_r); + DECLARE_WRITE8_MEMBER(laserdisc_w); }; @@ -285,9 +291,8 @@ static INTERRUPT_GEN( vblank_callback ) * *************************************/ -static WRITE8_HANDLER( misc_w ) +WRITE8_MEMBER(dlair_state::misc_w) { - dlair_state *state = space->machine().driver_data<dlair_state>(); /* D0-D3 = B0-B3 D4 = coin counter @@ -295,23 +300,22 @@ static WRITE8_HANDLER( misc_w ) D6 = ENTER D7 = INT/EXT */ - UINT8 diff = data ^ state->m_last_misc; - state->m_last_misc = data; + UINT8 diff = data ^ m_last_misc; + m_last_misc = data; - coin_counter_w(space->machine(), 0, (~data >> 4) & 1); + coin_counter_w(machine(), 0, (~data >> 4) & 1); /* on bit 5 going low, push the data out to the laserdisc player */ if ((diff & 0x20) && !(data & 0x20)) - state->laserdisc_data_w(state->m_laserdisc_data); + laserdisc_data_w(m_laserdisc_data); /* on bit 6 going low, we need to signal enter */ - state->laserdisc_enter_w((data & 0x40) ? CLEAR_LINE : ASSERT_LINE); + laserdisc_enter_w((data & 0x40) ? CLEAR_LINE : ASSERT_LINE); } -static WRITE8_HANDLER( dleuro_misc_w ) +WRITE8_MEMBER(dlair_state::dleuro_misc_w) { - dlair_state *state = space->machine().driver_data<dlair_state>(); /* D0 = CHAR GEN ON+ D1 = KILL VIDEO+ @@ -322,28 +326,28 @@ static WRITE8_HANDLER( dleuro_misc_w ) D6 = ENTER D7 = INT/EXT */ - UINT8 diff = data ^ state->m_last_misc; - state->m_last_misc = data; + UINT8 diff = data ^ m_last_misc; + m_last_misc = data; - coin_counter_w(space->machine(), 1, (~data >> 3) & 1); - coin_counter_w(space->machine(), 0, (~data >> 4) & 1); + coin_counter_w(machine(), 1, (~data >> 3) & 1); + coin_counter_w(machine(), 0, (~data >> 4) & 1); /* on bit 5 going low, push the data out to the laserdisc player */ if ((diff & 0x20) && !(data & 0x20)) - state->laserdisc_data_w(state->m_laserdisc_data); + laserdisc_data_w(m_laserdisc_data); /* on bit 6 going low, we need to signal enter */ - state->laserdisc_enter_w((data & 0x40) ? CLEAR_LINE : ASSERT_LINE); + laserdisc_enter_w((data & 0x40) ? CLEAR_LINE : ASSERT_LINE); } -static WRITE8_HANDLER( led_den1_w ) +WRITE8_MEMBER(dlair_state::led_den1_w) { output_set_digit_value(0 + (offset & 7), led_map[data & 0x0f]); } -static WRITE8_HANDLER( led_den2_w ) +WRITE8_MEMBER(dlair_state::led_den2_w) { output_set_digit_value(8 + (offset & 7), led_map[data & 0x0f]); } @@ -370,19 +374,17 @@ static CUSTOM_INPUT( laserdisc_command_r ) } -static READ8_HANDLER( laserdisc_r ) +READ8_MEMBER(dlair_state::laserdisc_r) { - dlair_state *state = space->machine().driver_data<dlair_state>(); - UINT8 result = state->laserdisc_data_r(); + UINT8 result = laserdisc_data_r(); mame_printf_debug("laserdisc_r = %02X\n", result); return result; } -static WRITE8_HANDLER( laserdisc_w ) +WRITE8_MEMBER(dlair_state::laserdisc_w) { - dlair_state *state = space->machine().driver_data<dlair_state>(); - state->m_laserdisc_data = data; + m_laserdisc_data = data; } @@ -400,13 +402,13 @@ static ADDRESS_MAP_START( dlus_map, AS_PROGRAM, 8, dlair_state ) AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fc7) AM_DEVREAD_LEGACY("aysnd", ay8910_r) AM_RANGE(0xc008, 0xc008) AM_MIRROR(0x1fc7) AM_READ_PORT("CONTROLS") AM_RANGE(0xc010, 0xc010) AM_MIRROR(0x1fc7) AM_READ_PORT("SERVICE") - AM_RANGE(0xc020, 0xc020) AM_MIRROR(0x1fc7) AM_READ_LEGACY(laserdisc_r) + AM_RANGE(0xc020, 0xc020) AM_MIRROR(0x1fc7) AM_READ(laserdisc_r) AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1fc7) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_w) - AM_RANGE(0xe008, 0xe008) AM_MIRROR(0x1fc7) AM_WRITE_LEGACY(misc_w) + AM_RANGE(0xe008, 0xe008) AM_MIRROR(0x1fc7) AM_WRITE(misc_w) AM_RANGE(0xe010, 0xe010) AM_MIRROR(0x1fc7) AM_DEVWRITE_LEGACY("aysnd", ay8910_address_w) - AM_RANGE(0xe020, 0xe020) AM_MIRROR(0x1fc7) AM_WRITE_LEGACY(laserdisc_w) - AM_RANGE(0xe030, 0xe037) AM_MIRROR(0x1fc0) AM_WRITE_LEGACY(led_den2_w) - AM_RANGE(0xe038, 0xe03f) AM_MIRROR(0x1fc0) AM_WRITE_LEGACY(led_den1_w) + AM_RANGE(0xe020, 0xe020) AM_MIRROR(0x1fc7) AM_WRITE(laserdisc_w) + AM_RANGE(0xe030, 0xe037) AM_MIRROR(0x1fc0) AM_WRITE(led_den2_w) + AM_RANGE(0xe038, 0xe03f) AM_MIRROR(0x1fc0) AM_WRITE(led_den1_w) ADDRESS_MAP_END @@ -424,16 +426,16 @@ static ADDRESS_MAP_START( dleuro_map, AS_PROGRAM, 8, dlair_state ) AM_RANGE(0xc000, 0xc7ff) AM_MIRROR(0x1800) AM_RAM AM_BASE(m_videoram) AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1f47) // WT LED 1 AM_RANGE(0xe008, 0xe008) AM_MIRROR(0x1f47) // WT LED 2 - AM_RANGE(0xe010, 0xe010) AM_MIRROR(0x1f47) AM_WRITE_LEGACY(led_den1_w) // WT EXT LED 1 - AM_RANGE(0xe018, 0xe018) AM_MIRROR(0x1f47) AM_WRITE_LEGACY(led_den2_w) // WT EXT LED 2 - AM_RANGE(0xe020, 0xe020) AM_MIRROR(0x1f47) AM_WRITE_LEGACY(laserdisc_w) // DISC WT - AM_RANGE(0xe028, 0xe028) AM_MIRROR(0x1f47) AM_WRITE_LEGACY(dleuro_misc_w) // WT MISC + AM_RANGE(0xe010, 0xe010) AM_MIRROR(0x1f47) AM_WRITE(led_den1_w) // WT EXT LED 1 + AM_RANGE(0xe018, 0xe018) AM_MIRROR(0x1f47) AM_WRITE(led_den2_w) // WT EXT LED 2 + AM_RANGE(0xe020, 0xe020) AM_MIRROR(0x1f47) AM_WRITE(laserdisc_w) // DISC WT + AM_RANGE(0xe028, 0xe028) AM_MIRROR(0x1f47) AM_WRITE(dleuro_misc_w) // WT MISC AM_RANGE(0xe030, 0xe030) AM_MIRROR(0x1f47) AM_WRITE_LEGACY(watchdog_reset_w) // CLR WDOG AM_RANGE(0xe080, 0xe080) AM_MIRROR(0x1f47) AM_READ_PORT("P1") // CP A AM_RANGE(0xe088, 0xe088) AM_MIRROR(0x1f47) AM_READ_PORT("SYSTEM") // CP B AM_RANGE(0xe090, 0xe090) AM_MIRROR(0x1f47) AM_READ_PORT("DSW1") // OPT SW A AM_RANGE(0xe098, 0xe098) AM_MIRROR(0x1f47) AM_READ_PORT("DSW2") // OPT SW B - AM_RANGE(0xe0a0, 0xe0a0) AM_MIRROR(0x1f47) AM_READ_LEGACY(laserdisc_r) // RD DISC DATA + AM_RANGE(0xe0a0, 0xe0a0) AM_MIRROR(0x1f47) AM_READ(laserdisc_r) // RD DISC DATA ADDRESS_MAP_END diff --git a/src/mame/drivers/dmndrby.c b/src/mame/drivers/dmndrby.c index 8eead8caf1d..dc55f2046e1 100644 --- a/src/mame/drivers/dmndrby.c +++ b/src/mame/drivers/dmndrby.c @@ -70,36 +70,38 @@ public: tilemap_t *m_racetrack_tilemap; UINT8 m_io_port[8]; int m_bg; + DECLARE_WRITE8_MEMBER(dderby_sound_w); + DECLARE_READ8_MEMBER(input_r); + DECLARE_WRITE8_MEMBER(output_w); }; -static WRITE8_HANDLER( dderby_sound_w ) +WRITE8_MEMBER(dmndrby_state::dderby_sound_w) { soundlatch_w(space,0,data); - cputag_set_input_line(space->machine(), "audiocpu", 0, HOLD_LINE); + cputag_set_input_line(machine(), "audiocpu", 0, HOLD_LINE); } -static READ8_HANDLER( input_r ) +READ8_MEMBER(dmndrby_state::input_r) { switch(offset & 7) { - case 0: return input_port_read(space->machine(), "IN0"); - case 1: return input_port_read(space->machine(), "IN1"); - case 2: return input_port_read(space->machine(), "IN2"); - case 3: return input_port_read(space->machine(), "IN3"); - case 4: return input_port_read(space->machine(), "IN4"); - case 5: return input_port_read(space->machine(), "IN5"); - case 6: return input_port_read(space->machine(), "IN6"); - case 7: return input_port_read(space->machine(), "IN7"); + case 0: return input_port_read(machine(), "IN0"); + case 1: return input_port_read(machine(), "IN1"); + case 2: return input_port_read(machine(), "IN2"); + case 3: return input_port_read(machine(), "IN3"); + case 4: return input_port_read(machine(), "IN4"); + case 5: return input_port_read(machine(), "IN5"); + case 6: return input_port_read(machine(), "IN6"); + case 7: return input_port_read(machine(), "IN7"); } return 0xff; } -static WRITE8_HANDLER( output_w ) +WRITE8_MEMBER(dmndrby_state::output_w) { - dmndrby_state *state = space->machine().driver_data<dmndrby_state>(); /* ---- x--- refill meter [4] ---- x--- token out meter [5] @@ -111,20 +113,20 @@ static WRITE8_HANDLER( output_w ) ---- --x- coin lockout [0-3] ---- ---x lamp [0-6] */ - state->m_io_port[offset] = data; -// popmessage("%02x|%02x|%02x|%02x|%02x|%02x|%02x|%02x|",state->m_io_port[0],state->m_io_port[1],state->m_io_port[2],state->m_io_port[3],state->m_io_port[4],state->m_io_port[5],state->m_io_port[6],state->m_io_port[7]); + m_io_port[offset] = data; +// popmessage("%02x|%02x|%02x|%02x|%02x|%02x|%02x|%02x|",m_io_port[0],m_io_port[1],m_io_port[2],m_io_port[3],m_io_port[4],m_io_port[5],m_io_port[6],m_io_port[7]); } static ADDRESS_MAP_START( memmap, AS_PROGRAM, 8, dmndrby_state ) AM_RANGE(0x0000, 0x5fff) AM_ROM AM_RANGE(0x8000, 0x8fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xc000, 0xc007) AM_READ_LEGACY(input_r) - AM_RANGE(0xc000, 0xc007) AM_WRITE_LEGACY(output_w) + AM_RANGE(0xc000, 0xc007) AM_READ(input_r) + AM_RANGE(0xc000, 0xc007) AM_WRITE(output_w) AM_RANGE(0xc802, 0xc802) AM_READ_PORT("DSW1") AM_RANGE(0xc803, 0xc803) AM_READ_PORT("DSW2") AM_RANGE(0xca00, 0xca00) AM_WRITENOP//(vblank_irq_w) //??? AM_RANGE(0xca01, 0xca01) AM_WRITENOP //watchdog - AM_RANGE(0xca02, 0xca02) AM_RAM_WRITE_LEGACY(dderby_sound_w) + AM_RANGE(0xca02, 0xca02) AM_RAM_WRITE(dderby_sound_w) AM_RANGE(0xca03, 0xca03) AM_WRITENOP//(timer_irq_w) //??? AM_RANGE(0xcc00, 0xcc05) AM_RAM AM_BASE(m_scroll_ram) AM_RANGE(0xce08, 0xce1f) AM_RAM AM_BASE(m_sprite_ram) // horse sprites diff --git a/src/mame/drivers/dominob.c b/src/mame/drivers/dominob.c index 37117fc2cc1..febf207142d 100644 --- a/src/mame/drivers/dominob.c +++ b/src/mame/drivers/dominob.c @@ -80,6 +80,8 @@ public: /* input-related */ //UINT8 m_paddle_select; //UINT8 m_paddle_value; + DECLARE_WRITE8_MEMBER(dominob_d008_w); + DECLARE_READ8_MEMBER(dominob_unk_port02_r); }; static VIDEO_START( dominob ) @@ -159,7 +161,7 @@ static SCREEN_UPDATE_IND16( dominob ) } -static WRITE8_HANDLER( dominob_d008_w ) +WRITE8_MEMBER(dominob_state::dominob_d008_w) { /* is there a purpose on this ? always set to 0x00 (read from 0xc47b in RAM) */ } @@ -170,7 +172,7 @@ static ADDRESS_MAP_START( memmap, AS_PROGRAM, 8, dominob_state ) AM_RANGE(0xd000, 0xd001) AM_DEVWRITE_LEGACY("aysnd", ay8910_address_data_w) AM_RANGE(0xd001, 0xd001) AM_DEVREAD_LEGACY("aysnd", ay8910_r) - AM_RANGE(0xd008, 0xd008) AM_WRITE_LEGACY(dominob_d008_w) + AM_RANGE(0xd008, 0xd008) AM_WRITE(dominob_d008_w) AM_RANGE(0xd00c, 0xd00c) AM_READ_PORT("IN0") AM_RANGE(0xd010, 0xd010) AM_READ_PORT("IN1") AM_WRITENOP AM_RANGE(0xd018, 0xd018) AM_READ_PORT("IN2") AM_WRITENOP @@ -185,14 +187,14 @@ static ADDRESS_MAP_START( memmap, AS_PROGRAM, 8, dominob_state ) ADDRESS_MAP_END /* I don't know if this has a purpose - also read in 'arkatayt' but not handled */ -static READ8_HANDLER( dominob_unk_port02_r ) +READ8_MEMBER(dominob_state::dominob_unk_port02_r) { return 0xff; } static ADDRESS_MAP_START( portmap, AS_IO, 8, dominob_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x02, 0x02) AM_READ_LEGACY(dominob_unk_port02_r) + AM_RANGE(0x02, 0x02) AM_READ(dominob_unk_port02_r) ADDRESS_MAP_END diff --git a/src/mame/drivers/dorachan.c b/src/mame/drivers/dorachan.c index 2ddf66e4330..143038693f9 100644 --- a/src/mame/drivers/dorachan.c +++ b/src/mame/drivers/dorachan.c @@ -30,6 +30,7 @@ public: /* devices */ device_t *m_main_cpu; + DECLARE_WRITE8_MEMBER(dorachan_ctrl_w); }; @@ -120,10 +121,9 @@ static SCREEN_UPDATE_RGB32( dorachan ) } -static WRITE8_HANDLER(dorachan_ctrl_w) +WRITE8_MEMBER(dorachan_state::dorachan_ctrl_w) { - dorachan_state *state = space->machine().driver_data<dorachan_state>(); - state->m_flip_screen = (data >> 6) & 0x01; + m_flip_screen = (data >> 6) & 0x01; } @@ -167,7 +167,7 @@ static ADDRESS_MAP_START( dorachan_io_map, AS_IO, 8, dorachan_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x01, 0x01) AM_WRITENOP AM_RANGE(0x02, 0x02) AM_WRITENOP - AM_RANGE(0x03, 0x03) AM_WRITE_LEGACY(dorachan_ctrl_w) + AM_RANGE(0x03, 0x03) AM_WRITE(dorachan_ctrl_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/dotrikun.c b/src/mame/drivers/dotrikun.c index 427e8d495a5..7b076c1b503 100644 --- a/src/mame/drivers/dotrikun.c +++ b/src/mame/drivers/dotrikun.c @@ -35,6 +35,7 @@ public: /* video-related */ UINT8 m_color; + DECLARE_WRITE8_MEMBER(dotrikun_color_w); }; @@ -44,9 +45,8 @@ public: * *************************************/ -static WRITE8_HANDLER( dotrikun_color_w ) +WRITE8_MEMBER(dotrikun_state::dotrikun_color_w) { - dotrikun_state *state = space->machine().driver_data<dotrikun_state>(); /* x--- ---- screen color swap? ---- -x-- B @@ -54,8 +54,8 @@ static WRITE8_HANDLER( dotrikun_color_w ) ---- ---x R */ - state->m_color = data; - space->machine().primary_screen->update_partial(space->machine().primary_screen->vpos()); + m_color = data; + machine().primary_screen->update_partial(machine().primary_screen->vpos()); } @@ -104,7 +104,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( io_map, AS_IO, 8, dotrikun_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("INPUTS") AM_WRITE_LEGACY(dotrikun_color_w) + AM_RANGE(0x00, 0x00) AM_READ_PORT("INPUTS") AM_WRITE(dotrikun_color_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/dreamwld.c b/src/mame/drivers/dreamwld.c index ae6081285ad..d7ce4e84aab 100644 --- a/src/mame/drivers/dreamwld.c +++ b/src/mame/drivers/dreamwld.c @@ -146,6 +146,12 @@ public: /* misc */ int m_protindex; + DECLARE_WRITE32_MEMBER(dreamwld_bg_videoram_w); + DECLARE_WRITE32_MEMBER(dreamwld_bg2_videoram_w); + DECLARE_READ32_MEMBER(dreamwld_protdata_r); + DECLARE_WRITE32_MEMBER(dreamwld_6295_0_bank_w); + DECLARE_WRITE32_MEMBER(dreamwld_6295_1_bank_w); + DECLARE_WRITE32_MEMBER(dreamwld_palette_w); }; @@ -215,12 +221,11 @@ static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const } -static WRITE32_HANDLER( dreamwld_bg_videoram_w ) +WRITE32_MEMBER(dreamwld_state::dreamwld_bg_videoram_w) { - dreamwld_state *state = space->machine().driver_data<dreamwld_state>(); - COMBINE_DATA(&state->m_bg_videoram[offset]); - state->m_bg_tilemap->mark_tile_dirty(offset * 2); - state->m_bg_tilemap->mark_tile_dirty(offset * 2 + 1); + COMBINE_DATA(&m_bg_videoram[offset]); + m_bg_tilemap->mark_tile_dirty(offset * 2); + m_bg_tilemap->mark_tile_dirty(offset * 2 + 1); } static TILE_GET_INFO( get_dreamwld_bg_tile_info ) @@ -234,12 +239,11 @@ static TILE_GET_INFO( get_dreamwld_bg_tile_info ) } -static WRITE32_HANDLER( dreamwld_bg2_videoram_w ) +WRITE32_MEMBER(dreamwld_state::dreamwld_bg2_videoram_w) { - dreamwld_state *state = space->machine().driver_data<dreamwld_state>(); - COMBINE_DATA(&state->m_bg2_videoram[offset]); - state->m_bg2_tilemap->mark_tile_dirty(offset * 2); - state->m_bg2_tilemap->mark_tile_dirty(offset * 2 + 1); + COMBINE_DATA(&m_bg2_videoram[offset]); + m_bg2_tilemap->mark_tile_dirty(offset * 2); + m_bg2_tilemap->mark_tile_dirty(offset * 2 + 1); } static TILE_GET_INFO( get_dreamwld_bg2_tile_info ) @@ -389,17 +393,17 @@ static SCREEN_UPDATE_IND16( dreamwld ) -static READ32_HANDLER( dreamwld_protdata_r ) +READ32_MEMBER(dreamwld_state::dreamwld_protdata_r) { //static int count = 0; - dreamwld_state *state = space->machine().driver_data<dreamwld_state>(); + //printf("protection read %04x\n", count); //count++; - UINT8 *protdata = space->machine().region("user1")->base(); - size_t protsize = space->machine().region("user1")->bytes(); - UINT8 dat = protdata[(state->m_protindex++) % protsize]; + UINT8 *protdata = machine().region("user1")->base(); + size_t protsize = machine().region("user1")->bytes(); + UINT8 dat = protdata[(m_protindex++) % protsize]; // real hw returns 00 after end of data, I haven't checked if it's possible to overflow the read counter // and read out the internal rom. @@ -408,9 +412,9 @@ static READ32_HANDLER( dreamwld_protdata_r ) } -static WRITE32_HANDLER( dreamwld_6295_0_bank_w ) +WRITE32_MEMBER(dreamwld_state::dreamwld_6295_0_bank_w) { - UINT8 *sound = space->machine().region("oki1")->base(); + UINT8 *sound = machine().region("oki1")->base(); if (ACCESSING_BITS_0_7) memcpy(sound + 0x30000, sound + 0xb0000 + 0x10000 * (data&0x3), 0x10000); @@ -418,9 +422,9 @@ static WRITE32_HANDLER( dreamwld_6295_0_bank_w ) logerror("OKI0: unk bank write %x mem_mask %8x\n", data, mem_mask); } -static WRITE32_HANDLER( dreamwld_6295_1_bank_w ) +WRITE32_MEMBER(dreamwld_state::dreamwld_6295_1_bank_w) { - UINT8 *sound = space->machine().region("oki2")->base(); + UINT8 *sound = machine().region("oki2")->base(); if (ACCESSING_BITS_0_7) memcpy(sound + 0x30000, sound + 0xb0000 + 0x10000 * (data&0x3), 0x10000); @@ -430,20 +434,19 @@ static WRITE32_HANDLER( dreamwld_6295_1_bank_w ) // why doesn't using paletteram16_xRRRRRGGGGGBBBBB_word_w with a 16-bit handler work? colours are // severely corrupt on dream world's semicom screen + many sprites, seems palette values get duplicated. -static WRITE32_HANDLER( dreamwld_palette_w ) +WRITE32_MEMBER(dreamwld_state::dreamwld_palette_w) { - dreamwld_state *state = space->machine().driver_data<dreamwld_state>(); UINT16 dat; int color; - COMBINE_DATA(&state->m_paletteram[offset]); + COMBINE_DATA(&m_paletteram[offset]); color = offset * 2; - dat = state->m_paletteram[offset] & 0x7fff; - palette_set_color_rgb(space->machine(), color+1, pal5bit(dat >> 10), pal5bit(dat >> 5), pal5bit(dat >> 0)); + dat = m_paletteram[offset] & 0x7fff; + palette_set_color_rgb(machine(), color+1, pal5bit(dat >> 10), pal5bit(dat >> 5), pal5bit(dat >> 0)); - dat = (state->m_paletteram[offset] >> 16) & 0x7fff; - palette_set_color_rgb(space->machine(), color, pal5bit(dat >> 10), pal5bit(dat >> 5), pal5bit(dat >> 0)); + dat = (m_paletteram[offset] >> 16) & 0x7fff; + palette_set_color_rgb(machine(), color, pal5bit(dat >> 10), pal5bit(dat >> 5), pal5bit(dat >> 0)); } @@ -452,18 +455,18 @@ static ADDRESS_MAP_START( baryon_map, AS_PROGRAM, 32, dreamwld_state ) AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_WRITENOP AM_RANGE(0x400000, 0x401fff) AM_RAM AM_BASE(m_spriteram) - AM_RANGE(0x600000, 0x601fff) AM_RAM AM_WRITE_LEGACY(dreamwld_palette_w) AM_BASE(m_paletteram) - AM_RANGE(0x800000, 0x801fff) AM_RAM_WRITE_LEGACY(dreamwld_bg_videoram_w ) AM_BASE(m_bg_videoram) - AM_RANGE(0x802000, 0x803fff) AM_RAM_WRITE_LEGACY(dreamwld_bg2_videoram_w ) AM_BASE(m_bg2_videoram) + AM_RANGE(0x600000, 0x601fff) AM_RAM AM_WRITE(dreamwld_palette_w) AM_BASE(m_paletteram) + AM_RANGE(0x800000, 0x801fff) AM_RAM_WRITE(dreamwld_bg_videoram_w ) AM_BASE(m_bg_videoram) + AM_RANGE(0x802000, 0x803fff) AM_RAM_WRITE(dreamwld_bg2_videoram_w ) AM_BASE(m_bg2_videoram) AM_RANGE(0x804000, 0x805fff) AM_RAM AM_BASE(m_vregs) // scroll regs etc. AM_RANGE(0xc00000, 0xc00003) AM_READ_PORT("INPUTS") AM_RANGE(0xc00004, 0xc00007) AM_READ_PORT("c00004") - AM_RANGE(0xc0000c, 0xc0000f) AM_WRITE_LEGACY(dreamwld_6295_0_bank_w) // sfx + AM_RANGE(0xc0000c, 0xc0000f) AM_WRITE(dreamwld_6295_0_bank_w) // sfx AM_RANGE(0xc00018, 0xc0001b) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0xff000000) // sfx - AM_RANGE(0xc00030, 0xc00033) AM_READ_LEGACY(dreamwld_protdata_r) // it reads protection data (irq code) from here and puts it at ffd000 + AM_RANGE(0xc00030, 0xc00033) AM_READ(dreamwld_protdata_r) // it reads protection data (irq code) from here and puts it at ffd000 AM_RANGE(0xfe0000, 0xffffff) AM_RAM AM_BASE(m_workram) // work ram ADDRESS_MAP_END @@ -471,7 +474,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( dreamwld_map, AS_PROGRAM, 32, dreamwld_state ) AM_IMPORT_FROM( baryon_map ) - AM_RANGE(0xc0002c, 0xc0002f) AM_WRITE_LEGACY(dreamwld_6295_1_bank_w) // sfx + AM_RANGE(0xc0002c, 0xc0002f) AM_WRITE(dreamwld_6295_1_bank_w) // sfx AM_RANGE(0xc00028, 0xc0002b) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0xff000000) // sfx ADDRESS_MAP_END diff --git a/src/mame/drivers/drtomy.c b/src/mame/drivers/drtomy.c index 53062f994a9..100240a8758 100644 --- a/src/mame/drivers/drtomy.c +++ b/src/mame/drivers/drtomy.c @@ -29,6 +29,8 @@ public: /* misc */ int m_oki_bank; + DECLARE_WRITE16_MEMBER(drtomy_vram_fg_w); + DECLARE_WRITE16_MEMBER(drtomy_vram_bg_w); }; @@ -133,18 +135,16 @@ static SCREEN_UPDATE_IND16( drtomy ) return 0; } -static WRITE16_HANDLER( drtomy_vram_fg_w ) +WRITE16_MEMBER(drtomy_state::drtomy_vram_fg_w) { - drtomy_state *state = space->machine().driver_data<drtomy_state>(); - COMBINE_DATA(&state->m_videoram_fg[offset]); - state->m_tilemap_fg->mark_tile_dirty(offset); + COMBINE_DATA(&m_videoram_fg[offset]); + m_tilemap_fg->mark_tile_dirty(offset); } -static WRITE16_HANDLER( drtomy_vram_bg_w ) +WRITE16_MEMBER(drtomy_state::drtomy_vram_bg_w) { - drtomy_state *state = space->machine().driver_data<drtomy_state>(); - COMBINE_DATA(&state->m_videoram_bg[offset]); - state->m_tilemap_bg->mark_tile_dirty(offset); + COMBINE_DATA(&m_videoram_bg[offset]); + m_tilemap_bg->mark_tile_dirty(offset); } static WRITE16_DEVICE_HANDLER( drtomy_okibank_w ) @@ -162,8 +162,8 @@ static WRITE16_DEVICE_HANDLER( drtomy_okibank_w ) static ADDRESS_MAP_START( drtomy_map, AS_PROGRAM, 16, drtomy_state ) AM_RANGE(0x000000, 0x03ffff) AM_ROM /* ROM */ - AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE_LEGACY(drtomy_vram_fg_w) AM_BASE(m_videoram_fg) /* Video RAM FG */ - AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE_LEGACY(drtomy_vram_bg_w) AM_BASE(m_videoram_bg) /* Video RAM BG */ + AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(drtomy_vram_fg_w) AM_BASE(m_videoram_fg) /* Video RAM FG */ + AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(drtomy_vram_bg_w) AM_BASE(m_videoram_bg) /* Video RAM BG */ AM_RANGE(0x200000, 0x2007ff) AM_RAM_WRITE_LEGACY(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram) /* Palette */ AM_RANGE(0x440000, 0x440fff) AM_RAM AM_BASE(m_spriteram) /* Sprite RAM */ AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW1") diff --git a/src/mame/drivers/drw80pkr.c b/src/mame/drivers/drw80pkr.c index 64dd824eedc..a8f31139740 100644 --- a/src/mame/drivers/drw80pkr.c +++ b/src/mame/drivers/drw80pkr.c @@ -50,6 +50,21 @@ public: UINT8 m_pkr_io_ram[0x100]; UINT16 m_video_ram[0x0400]; UINT8 m_color_ram[0x0400]; + DECLARE_WRITE8_MEMBER(t0_w); + DECLARE_WRITE8_MEMBER(t1_w); + DECLARE_WRITE8_MEMBER(p0_w); + DECLARE_WRITE8_MEMBER(p1_w); + DECLARE_WRITE8_MEMBER(p2_w); + DECLARE_WRITE8_MEMBER(prog_w); + DECLARE_WRITE8_MEMBER(bus_w); + DECLARE_WRITE8_MEMBER(drw80pkr_io_w); + DECLARE_READ8_MEMBER(t0_r); + DECLARE_READ8_MEMBER(t1_r); + DECLARE_READ8_MEMBER(p0_r); + DECLARE_READ8_MEMBER(p1_r); + DECLARE_READ8_MEMBER(p2_r); + DECLARE_READ8_MEMBER(bus_r); + DECLARE_READ8_MEMBER(drw80pkr_io_r); }; @@ -67,77 +82,69 @@ static MACHINE_START( drw80pkr ) * Write Handlers * ******************/ -static WRITE8_HANDLER( t0_w ) +WRITE8_MEMBER(drw80pkr_state::t0_w) { - drw80pkr_state *state = space->machine().driver_data<drw80pkr_state>(); - state->m_t0 = data; + m_t0 = data; } -static WRITE8_HANDLER( t1_w ) +WRITE8_MEMBER(drw80pkr_state::t1_w) { - drw80pkr_state *state = space->machine().driver_data<drw80pkr_state>(); - state->m_t1 = data; + m_t1 = data; } -static WRITE8_HANDLER( p0_w ) +WRITE8_MEMBER(drw80pkr_state::p0_w) { - drw80pkr_state *state = space->machine().driver_data<drw80pkr_state>(); - state->m_p0 = data; + m_p0 = data; } -static WRITE8_HANDLER( p1_w ) +WRITE8_MEMBER(drw80pkr_state::p1_w) { - drw80pkr_state *state = space->machine().driver_data<drw80pkr_state>(); - state->m_p1 = data; + m_p1 = data; } -static WRITE8_HANDLER( p2_w ) +WRITE8_MEMBER(drw80pkr_state::p2_w) { - drw80pkr_state *state = space->machine().driver_data<drw80pkr_state>(); - state->m_p2 = data; + m_p2 = data; } -static WRITE8_HANDLER( prog_w ) +WRITE8_MEMBER(drw80pkr_state::prog_w) { - drw80pkr_state *state = space->machine().driver_data<drw80pkr_state>(); - state->m_prog = data; + m_prog = data; // Bankswitch Program Memory - if (state->m_prog == 0x01) + if (m_prog == 0x01) { - state->m_active_bank = state->m_active_bank ^ 0x01; + m_active_bank = m_active_bank ^ 0x01; - memory_set_bank(space->machine(), "bank1", state->m_active_bank); + memory_set_bank(machine(), "bank1", m_active_bank); } } -static WRITE8_HANDLER( bus_w ) +WRITE8_MEMBER(drw80pkr_state::bus_w) { - drw80pkr_state *state = space->machine().driver_data<drw80pkr_state>(); - state->m_bus = data; + m_bus = data; } -static WRITE8_HANDLER( drw80pkr_io_w ) +WRITE8_MEMBER(drw80pkr_state::drw80pkr_io_w) { - drw80pkr_state *state = space->machine().driver_data<drw80pkr_state>(); UINT16 n_offs; - if (state->m_p2 == 0x3f || state->m_p2 == 0x7f) + if (m_p2 == 0x3f || m_p2 == 0x7f) { - n_offs = ((state->m_p1 & 0xc0) << 2 ) + offset; + n_offs = ((m_p1 & 0xc0) << 2 ) + offset; - if (state->m_p2 == 0x3f) + if (m_p2 == 0x3f) { - state->m_video_ram[n_offs] = data; // low address + m_video_ram[n_offs] = data; // low address } else { - state->m_color_ram[n_offs] = data & 0x0f; // color palette - state->m_video_ram[n_offs] += ((data & 0xf0) << 4 ); // high address + m_color_ram[n_offs] = data & 0x0f; // color palette + m_video_ram[n_offs] += ((data & 0xf0) << 4 ); // high address } - state->m_bg_tilemap->mark_tile_dirty(n_offs); + m_bg_tilemap->mark_tile_dirty(n_offs); } - if (state->m_p2 == 0xc7) + if (m_p2 == 0xc7) { // CRTC Register // R0 = 0x1f(31) Horizontal Total @@ -161,34 +168,34 @@ static WRITE8_HANDLER( drw80pkr_io_w ) // R13 = 0x00 Display Start Address (Low) } - if (state->m_p2 == 0xd7) + if (m_p2 == 0xd7) { // CRTC Address } - if (state->m_p2 == 0xfb) { - state->m_pkr_io_ram[offset] = data; + if (m_p2 == 0xfb) { + m_pkr_io_ram[offset] = data; } - if (state->m_p2 == 0xff) + if (m_p2 == 0xff) { - if (state->m_p1 == 0xdf) + if (m_p1 == 0xdf) { - state->m_attract_mode = data; // Latch this for use in input reads (0x01 = attract mode, 0x00 = game in progress) + m_attract_mode = data; // Latch this for use in input reads (0x01 = attract mode, 0x00 = game in progress) } - if (state->m_p1 == 0xdb || state->m_p1 == 0xef || state->m_p1 == 0xf7 || state->m_p1 == 0xfb) + if (m_p1 == 0xdb || m_p1 == 0xef || m_p1 == 0xf7 || m_p1 == 0xfb) { // unknown, most likely lamps, meters, hopper etc. } // ay8910 control port - if (state->m_p1 == 0xfc) - ay8910_address_w(space->machine().device("aysnd"), 0, data); + if (m_p1 == 0xfc) + ay8910_address_w(machine().device("aysnd"), 0, data); // ay8910_write_port_0_w - if (state->m_p1 == 0xfe) - ay8910_data_w(space->machine().device("aysnd"), 0, data); + if (m_p1 == 0xfe) + ay8910_data_w(machine().device("aysnd"), 0, data); } } @@ -196,78 +203,71 @@ static WRITE8_HANDLER( drw80pkr_io_w ) * Read Handlers * ****************/ -static READ8_HANDLER( t0_r ) +READ8_MEMBER(drw80pkr_state::t0_r) { - drw80pkr_state *state = space->machine().driver_data<drw80pkr_state>(); - return state->m_t0; + return m_t0; } -static READ8_HANDLER( t1_r ) +READ8_MEMBER(drw80pkr_state::t1_r) { - drw80pkr_state *state = space->machine().driver_data<drw80pkr_state>(); - return state->m_t1; + return m_t1; } -static READ8_HANDLER( p0_r ) +READ8_MEMBER(drw80pkr_state::p0_r) { - drw80pkr_state *state = space->machine().driver_data<drw80pkr_state>(); - return state->m_p0; + return m_p0; } -static READ8_HANDLER( p1_r ) +READ8_MEMBER(drw80pkr_state::p1_r) { - drw80pkr_state *state = space->machine().driver_data<drw80pkr_state>(); - return state->m_p1; + return m_p1; } -static READ8_HANDLER( p2_r ) +READ8_MEMBER(drw80pkr_state::p2_r) { - drw80pkr_state *state = space->machine().driver_data<drw80pkr_state>(); - return state->m_p2; + return m_p2; } -static READ8_HANDLER( bus_r ) +READ8_MEMBER(drw80pkr_state::bus_r) { - drw80pkr_state *state = space->machine().driver_data<drw80pkr_state>(); - return state->m_bus; + return m_bus; } -static READ8_HANDLER( drw80pkr_io_r ) +READ8_MEMBER(drw80pkr_state::drw80pkr_io_r) { - drw80pkr_state *state = space->machine().driver_data<drw80pkr_state>(); UINT8 ret; UINT16 kbdin; ret = 0x00; - if (state->m_p2 == 0x3b) + if (m_p2 == 0x3b) { // unknown } - if (state->m_p2 == 0x7b) + if (m_p2 == 0x7b) { - ret = state->m_pkr_io_ram[offset]; + ret = m_pkr_io_ram[offset]; } - if (state->m_p2 == 0xf7) + if (m_p2 == 0xf7) { // unknown } - if (state->m_p2 == 0xfb) + if (m_p2 == 0xfb) { - ret = state->m_pkr_io_ram[offset]; + ret = m_pkr_io_ram[offset]; } - if (state->m_p2 == 0xff) + if (m_p2 == 0xff) { - if (state->m_p1 == 0x5f || state->m_p1 == 0x9f || state->m_p1 == 0xdb) + if (m_p1 == 0x5f || m_p1 == 0x9f || m_p1 == 0xdb) { // unknown } - if (state->m_p1 == 0xfe) + if (m_p1 == 0xfe) { // Dip switches tied to sound chip // @@ -280,11 +280,11 @@ static READ8_HANDLER( drw80pkr_io_r ) ret = 0x77; // double-up with credit payout } - if ((state->m_attract_mode == 0x01 && state->m_p1 == 0xef) || state->m_p1 == 0xf7) + if ((m_attract_mode == 0x01 && m_p1 == 0xef) || m_p1 == 0xf7) { // TODO: Get Input Port Values - kbdin = ((input_port_read(space->machine(), "IN1") & 0xaf ) << 8) + input_port_read(space->machine(), "IN0"); + kbdin = ((input_port_read(machine(), "IN1") & 0xaf ) << 8) + input_port_read(machine(), "IN0"); switch (kbdin) { @@ -417,14 +417,14 @@ static ADDRESS_MAP_START( drw80pkr_map, AS_PROGRAM, 8, drw80pkr_state ) ADDRESS_MAP_END static ADDRESS_MAP_START( drw80pkr_io_map, AS_IO, 8, drw80pkr_state ) - AM_RANGE(0x00, 0xff) AM_READWRITE_LEGACY(drw80pkr_io_r, drw80pkr_io_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READWRITE_LEGACY(t0_r, t0_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READWRITE_LEGACY(t1_r, t1_w) - AM_RANGE(MCS48_PORT_P0, MCS48_PORT_P0) AM_READWRITE_LEGACY(p0_r, p0_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE_LEGACY(p1_r, p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE_LEGACY(p2_r, p2_w) - AM_RANGE(MCS48_PORT_PROG, MCS48_PORT_PROG) AM_RAM_WRITE_LEGACY(prog_w) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READWRITE_LEGACY(bus_r, bus_w) + AM_RANGE(0x00, 0xff) AM_READWRITE(drw80pkr_io_r, drw80pkr_io_w) + AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READWRITE(t0_r, t0_w) + AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READWRITE(t1_r, t1_w) + AM_RANGE(MCS48_PORT_P0, MCS48_PORT_P0) AM_READWRITE(p0_r, p0_w) + AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(p1_r, p1_w) + AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(p2_r, p2_w) + AM_RANGE(MCS48_PORT_PROG, MCS48_PORT_PROG) AM_RAM_WRITE(prog_w) + AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READWRITE(bus_r, bus_w) ADDRESS_MAP_END /************************* diff --git a/src/mame/drivers/dwarfd.c b/src/mame/drivers/dwarfd.c index a08fe486d2e..574b528d9ad 100644 --- a/src/mame/drivers/dwarfd.c +++ b/src/mame/drivers/dwarfd.c @@ -333,6 +333,15 @@ public: UINT8 m_videobuf[0x8000]; required_device<cpu_device> m_maincpu; + DECLARE_WRITE8_MEMBER(i8275_preg_w); + DECLARE_READ8_MEMBER(i8275_preg_r); + DECLARE_WRITE8_MEMBER(i8275_creg_w); + DECLARE_READ8_MEMBER(i8275_sreg_r); + DECLARE_READ8_MEMBER(dwarfd_ram_r); + DECLARE_WRITE8_MEMBER(dwarfd_ram_w); + DECLARE_WRITE8_MEMBER(output1_w); + DECLARE_WRITE8_MEMBER(output2_w); + DECLARE_READ8_MEMBER(qc_b8_r); }; @@ -373,76 +382,75 @@ enum }; -static WRITE8_HANDLER (i8275_preg_w) //param reg +WRITE8_MEMBER(dwarfd_state::i8275_preg_w)//param reg { - dwarfd_state *state = space->machine().driver_data<dwarfd_state>(); - switch (state->m_i8275Command) + switch (m_i8275Command) { case I8275_COMMAND_RESET: { - switch (state->m_i8275CommandSeqCnt) + switch (m_i8275CommandSeqCnt) { case 4: { //screen byte comp byte 1 - state->m_i8275SpacedRows = data >> 7; - state->m_i8275HorizontalCharactersRow = (data & 0x7f) + 1; - if (state->m_i8275HorizontalCharactersRow > 80) + m_i8275SpacedRows = data >> 7; + m_i8275HorizontalCharactersRow = (data & 0x7f) + 1; + if (m_i8275HorizontalCharactersRow > 80) { - logerror("i8275 Undefined num of characters/Row! = %d\n", state->m_i8275HorizontalCharactersRow); - state->m_i8275HorizontalCharactersRow = CHARACTERS_UNDEFINED; + logerror("i8275 Undefined num of characters/Row! = %d\n", m_i8275HorizontalCharactersRow); + m_i8275HorizontalCharactersRow = CHARACTERS_UNDEFINED; } else { - logerror("i8275 %d characters/row\n", state->m_i8275HorizontalCharactersRow); + logerror("i8275 %d characters/row\n", m_i8275HorizontalCharactersRow); } - if (state->m_i8275SpacedRows & 1) + if (m_i8275SpacedRows & 1) { - logerror("i8275 spaced rows\n"); + logerror("i8275 &spaced rows\n"); } else { logerror("i8275 normal rows\n"); } - state->m_i8275CommandSeqCnt--; + m_i8275CommandSeqCnt--; } break; case 3: { //screen byte comp byte 2 - state->m_i8275VerticalRows = (data & 0x3f) + 1; - state->m_i8275VerticalRetraceRows = (data >> 6) + 1; + m_i8275VerticalRows = (data & 0x3f) + 1; + m_i8275VerticalRetraceRows = (data >> 6) + 1; - logerror("i8275 %d rows\n", state->m_i8275VerticalRows); - logerror("i8275 %d vertical retrace rows\n", state->m_i8275VerticalRetraceRows); + logerror("i8275 %d rows\n", m_i8275VerticalRows); + logerror("i8275 %d vertical retrace rows\n", m_i8275VerticalRetraceRows); - state->m_i8275CommandSeqCnt--; + m_i8275CommandSeqCnt--; } break; case 2: { //screen byte comp byte 3 - state->m_i8275Underline = (data >> 4) + 1; - state->m_i8275Lines = (data & 0xf) + 1; - logerror("i8275 underline placement: %d\n", state->m_i8275Underline); - logerror("i8275 %d lines/row\n", state->m_i8275Lines); + m_i8275Underline = (data >> 4) + 1; + m_i8275Lines = (data & 0xf) + 1; + logerror("i8275 underline placement: %d\n", m_i8275Underline); + logerror("i8275 %d lines/row\n", m_i8275Lines); - state->m_i8275CommandSeqCnt--; + m_i8275CommandSeqCnt--; } break; case 1: { //screen byte comp byte 4 - state->m_i8275LineCounterMode = data >> 7; - state->m_i8275FieldAttributeMode = (data >> 6) & 1; - state->m_i8275CursorFormat = (data >> 4) & 3; - state->m_i8275HorizontalRetrace = ((data & 0xf) + 1) << 1; - logerror("i8275 line counter mode: %d\n", state->m_i8275LineCounterMode); - if (state->m_i8275FieldAttributeMode) + m_i8275LineCounterMode = data >> 7; + m_i8275FieldAttributeMode = (data >> 6) & 1; + m_i8275CursorFormat = (data >> 4) & 3; + m_i8275HorizontalRetrace = ((data & 0xf) + 1) << 1; + logerror("i8275 line counter mode: %d\n", m_i8275LineCounterMode); + if (m_i8275FieldAttributeMode) { logerror("i8275 field attribute mode non-transparent\n"); } @@ -451,7 +459,7 @@ static WRITE8_HANDLER (i8275_preg_w) //param reg logerror("i8275 field attribute mode transparent\n"); } - switch (state->m_i8275CursorFormat) + switch (m_i8275CursorFormat) { case 0: {logerror("i8275 cursor format - blinking reverse video block\n");} break; case 1: {logerror("i8275 cursor format - blinking underline\n");}break; @@ -459,8 +467,8 @@ static WRITE8_HANDLER (i8275_preg_w) //param reg case 3: {logerror("i8275 cursor format - nonblinking underline\n");}break; } - logerror("i8275 %d chars for horizontal retrace\n",state->m_i8275HorizontalRetrace ); - state->m_i8275CommandSeqCnt--; + logerror("i8275 %d chars for horizontal retrace\n",m_i8275HorizontalRetrace ); + m_i8275CommandSeqCnt--; } break; @@ -489,79 +497,76 @@ static WRITE8_HANDLER (i8275_preg_w) //param reg } -static READ8_HANDLER (i8275_preg_r) //param reg +READ8_MEMBER(dwarfd_state::i8275_preg_r)//param reg { return 0; } -static WRITE8_HANDLER (i8275_creg_w) //comand reg +WRITE8_MEMBER(dwarfd_state::i8275_creg_w)//comand reg { - dwarfd_state *state = space->machine().driver_data<dwarfd_state>(); switch (data>>5) { case 0: { /* reset */ - state->m_i8275Command = I8275_COMMAND_RESET; - state->m_i8275CommandSeqCnt = I8275_COMMAND_RESET_LENGTH; + m_i8275Command = I8275_COMMAND_RESET; + m_i8275CommandSeqCnt = I8275_COMMAND_RESET_LENGTH; } break; case 5: { /* enable interrupt */ - state->m_i8275Command = I8275_COMMAND_EI; - state->m_i8275CommandSeqCnt = I8275_COMMAND_EI_LENGTH; + m_i8275Command = I8275_COMMAND_EI; + m_i8275CommandSeqCnt = I8275_COMMAND_EI_LENGTH; } break; case 6: { /* disable interrupt */ - state->m_i8275Command = I8275_COMMAND_DI; - state->m_i8275CommandSeqCnt = I8275_COMMAND_DI_LENGTH; + m_i8275Command = I8275_COMMAND_DI; + m_i8275CommandSeqCnt = I8275_COMMAND_DI_LENGTH; } break; case 7: { /* preset counters */ - state->m_i8275CommandSeqCnt = I8275_COMMAND_PRESET_LENGTH; + m_i8275CommandSeqCnt = I8275_COMMAND_PRESET_LENGTH; } break; } } -static READ8_HANDLER (i8275_sreg_r) //status +READ8_MEMBER(dwarfd_state::i8275_sreg_r)//status { return 0; } -static READ8_HANDLER(dwarfd_ram_r) +READ8_MEMBER(dwarfd_state::dwarfd_ram_r) { - dwarfd_state *state = space->machine().driver_data<dwarfd_state>(); - if (state->m_crt_access == 0) + if (m_crt_access == 0) { - return state->m_dw_ram[offset]; + return m_dw_ram[offset]; } else { - state->m_videobuf[state->m_line * 256 + state->m_idx] = state->m_dw_ram[offset]; - state->m_idx++; - return state->m_dw_ram[offset]; + m_videobuf[m_line * 256 + m_idx] = m_dw_ram[offset]; + m_idx++; + return m_dw_ram[offset]; } } -static WRITE8_HANDLER(dwarfd_ram_w) +WRITE8_MEMBER(dwarfd_state::dwarfd_ram_w) { - dwarfd_state *state = space->machine().driver_data<dwarfd_state>(); - state->m_dw_ram[offset] = data; + m_dw_ram[offset] = data; } -static WRITE8_HANDLER(output1_w) +WRITE8_MEMBER(dwarfd_state::output1_w) { /* bits: @@ -576,7 +581,7 @@ static WRITE8_HANDLER(output1_w) */ } -static WRITE8_HANDLER(output2_w) +WRITE8_MEMBER(dwarfd_state::output2_w) { /* bits: @@ -592,14 +597,14 @@ static WRITE8_HANDLER(output2_w) } -static READ8_HANDLER(qc_b8_r) +READ8_MEMBER(dwarfd_state::qc_b8_r) { - return space->machine().rand(); + return machine().rand(); } static ADDRESS_MAP_START( mem_map, AS_PROGRAM, 8, dwarfd_state ) AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x4fff) AM_READWRITE_LEGACY(dwarfd_ram_r, dwarfd_ram_w) + AM_RANGE(0x4000, 0x4fff) AM_READWRITE(dwarfd_ram_r, dwarfd_ram_w) ADDRESS_MAP_END static ADDRESS_MAP_START( io_map, AS_IO, 8, dwarfd_state ) @@ -607,24 +612,24 @@ static ADDRESS_MAP_START( io_map, AS_IO, 8, dwarfd_state ) AM_RANGE(0x01, 0x01) AM_DEVREAD_LEGACY("aysnd", ay8910_r) AM_RANGE(0x02, 0x03) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_address_w) - AM_RANGE(0x20, 0x20) AM_READWRITE_LEGACY(i8275_preg_r, i8275_preg_w) - AM_RANGE(0x21, 0x21) AM_READWRITE_LEGACY(i8275_sreg_r, i8275_creg_w) + AM_RANGE(0x20, 0x20) AM_READWRITE(i8275_preg_r, i8275_preg_w) + AM_RANGE(0x21, 0x21) AM_READWRITE(i8275_sreg_r, i8275_creg_w) AM_RANGE(0x40, 0x40) AM_WRITENOP // unknown - AM_RANGE(0x60, 0x60) AM_WRITE_LEGACY(output1_w) - AM_RANGE(0x80, 0x80) AM_WRITE_LEGACY(output2_w) + AM_RANGE(0x60, 0x60) AM_WRITE(output1_w) + AM_RANGE(0x80, 0x80) AM_WRITE(output2_w) AM_RANGE(0xc0, 0xc0) AM_READ_PORT("DSW1") AM_RANGE(0xc1, 0xc1) AM_READ_PORT("DSW2") ADDRESS_MAP_END static ADDRESS_MAP_START( qc_map, AS_PROGRAM, 8, dwarfd_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8fff) AM_READWRITE_LEGACY(dwarfd_ram_r, dwarfd_ram_w) + AM_RANGE(0x8000, 0x8fff) AM_READWRITE(dwarfd_ram_r, dwarfd_ram_w) ADDRESS_MAP_END static ADDRESS_MAP_START( qc_io_map, AS_IO, 8, dwarfd_state ) AM_IMPORT_FROM( io_map ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xb8, 0xb8) AM_READ_LEGACY(qc_b8_r) + AM_RANGE(0xb8, 0xb8) AM_READ(qc_b8_r) ADDRESS_MAP_END static INPUT_PORTS_START( dwarfd ) diff --git a/src/mame/drivers/dynadice.c b/src/mame/drivers/dynadice.c index a31eab83ee5..82dac1d45ff 100644 --- a/src/mame/drivers/dynadice.c +++ b/src/mame/drivers/dynadice.c @@ -55,21 +55,21 @@ public: /* misc */ int m_ay_data; + DECLARE_WRITE8_MEMBER(dynadice_videoram_w); + DECLARE_WRITE8_MEMBER(sound_data_w); }; -static WRITE8_HANDLER( dynadice_videoram_w ) +WRITE8_MEMBER(dynadice_state::dynadice_videoram_w) { - dynadice_state *state = space->machine().driver_data<dynadice_state>(); - state->m_videoram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); - state->m_top_tilemap->mark_all_dirty(); + m_videoram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); + m_top_tilemap->mark_all_dirty(); } -static WRITE8_HANDLER( sound_data_w ) +WRITE8_MEMBER(dynadice_state::sound_data_w) { - dynadice_state *state = space->machine().driver_data<dynadice_state>(); - state->m_ay_data = data; + m_ay_data = data; } static WRITE8_DEVICE_HANDLER( sound_control_w ) @@ -94,7 +94,7 @@ static WRITE8_DEVICE_HANDLER( sound_control_w ) static ADDRESS_MAP_START( dynadice_map, AS_PROGRAM, 8, dynadice_state ) AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE_LEGACY(dynadice_videoram_w) AM_BASE(m_videoram) + AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(dynadice_videoram_w) AM_BASE(m_videoram) AM_RANGE(0x4000, 0x40ff) AM_RAM AM_SHARE("nvram") ADDRESS_MAP_END @@ -116,7 +116,7 @@ static ADDRESS_MAP_START( dynadice_sound_io_map, AS_IO, 8, dynadice_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x00) AM_READ_LEGACY(soundlatch_r) AM_RANGE(0x01, 0x01) AM_WRITE_LEGACY(soundlatch_clear_w) - AM_RANGE(0x02, 0x02) AM_WRITE_LEGACY(sound_data_w) + AM_RANGE(0x02, 0x02) AM_WRITE(sound_data_w) AM_RANGE(0x03, 0x03) AM_DEVWRITE_LEGACY("aysnd", sound_control_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/ecoinf2.c b/src/mame/drivers/ecoinf2.c index cbd0b2330b2..06fd31a9341 100644 --- a/src/mame/drivers/ecoinf2.c +++ b/src/mame/drivers/ecoinf2.c @@ -16,10 +16,11 @@ class ecoinf2_state : public driver_device public: ecoinf2_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) { } + DECLARE_WRITE8_MEMBER(ox_port5c_out_w); }; -static WRITE8_HANDLER( ox_port5c_out_w ) +WRITE8_MEMBER(ecoinf2_state::ox_port5c_out_w) { // Watchdog? } @@ -31,7 +32,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( oxo_portmap, AS_IO, 8, ecoinf2_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x5c, 0x5c) AM_WRITE_LEGACY(ox_port5c_out_w) + AM_RANGE(0x5c, 0x5c) AM_WRITE(ox_port5c_out_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/ecoinf3.c b/src/mame/drivers/ecoinf3.c index f0bc83f3f8b..8a484211eeb 100644 --- a/src/mame/drivers/ecoinf3.c +++ b/src/mame/drivers/ecoinf3.c @@ -8,9 +8,10 @@ class ecoinf3_state : public driver_device public: ecoinf3_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) { } + DECLARE_WRITE8_MEMBER(py_port58_out_w); }; -static WRITE8_HANDLER( py_port58_out_w ) +WRITE8_MEMBER(ecoinf3_state::py_port58_out_w) { // Watchdog? } @@ -23,7 +24,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( pyramid_portmap, AS_IO, 8, ecoinf3_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x58, 0x58) AM_WRITE_LEGACY(py_port58_out_w) + AM_RANGE(0x58, 0x58) AM_WRITE(py_port58_out_w) ADDRESS_MAP_END /* diff --git a/src/mame/drivers/egghunt.c b/src/mame/drivers/egghunt.c index 408ecdb69a4..17be0cc1f08 100644 --- a/src/mame/drivers/egghunt.c +++ b/src/mame/drivers/egghunt.c @@ -66,6 +66,12 @@ public: UINT8 * m_atram; UINT8 m_bgram[0x1000]; UINT8 m_spram[0x1000]; + DECLARE_READ8_MEMBER(egghunt_bgram_r); + DECLARE_WRITE8_MEMBER(egghunt_bgram_w); + DECLARE_WRITE8_MEMBER(egghunt_atram_w); + DECLARE_WRITE8_MEMBER(egghunt_gfx_banking_w); + DECLARE_WRITE8_MEMBER(egghunt_vidram_bank_w); + DECLARE_WRITE8_MEMBER(egghunt_soundlatch_w); }; @@ -127,38 +133,35 @@ static TILE_GET_INFO( get_bg_tile_info ) SET_TILE_INFO(0, code, colour, 0); } -static READ8_HANDLER( egghunt_bgram_r ) +READ8_MEMBER(egghunt_state::egghunt_bgram_r) { - egghunt_state *state = space->machine().driver_data<egghunt_state>(); - if (state->m_vidram_bank) + if (m_vidram_bank) { - return state->m_spram[offset]; + return m_spram[offset]; } else { - return state->m_bgram[offset]; + return m_bgram[offset]; } } -static WRITE8_HANDLER( egghunt_bgram_w ) +WRITE8_MEMBER(egghunt_state::egghunt_bgram_w) { - egghunt_state *state = space->machine().driver_data<egghunt_state>(); - if (state->m_vidram_bank) + if (m_vidram_bank) { - state->m_spram[offset] = data; + m_spram[offset] = data; } else { - state->m_bgram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset / 2); + m_bgram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset / 2); } } -static WRITE8_HANDLER( egghunt_atram_w ) +WRITE8_MEMBER(egghunt_state::egghunt_atram_w) { - egghunt_state *state = space->machine().driver_data<egghunt_state>(); - state->m_atram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_atram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } @@ -180,27 +183,24 @@ static SCREEN_UPDATE_IND16(egghunt) return 0; } -static WRITE8_HANDLER( egghunt_gfx_banking_w ) +WRITE8_MEMBER(egghunt_state::egghunt_gfx_banking_w) { - egghunt_state *state = space->machine().driver_data<egghunt_state>(); // data & 0x03 is used for tile banking // data & 0x30 is used for sprites banking - state->m_gfx_banking = data & 0x33; + m_gfx_banking = data & 0x33; - state->m_bg_tilemap->mark_all_dirty(); + m_bg_tilemap->mark_all_dirty(); } -static WRITE8_HANDLER( egghunt_vidram_bank_w ) +WRITE8_MEMBER(egghunt_state::egghunt_vidram_bank_w) { - egghunt_state *state = space->machine().driver_data<egghunt_state>(); - state->m_vidram_bank = data & 1; + m_vidram_bank = data & 1; } -static WRITE8_HANDLER( egghunt_soundlatch_w ) +WRITE8_MEMBER(egghunt_state::egghunt_soundlatch_w) { - egghunt_state *state = space->machine().driver_data<egghunt_state>(); soundlatch_w(space, 0, data); - device_set_input_line(state->m_audiocpu, 0, HOLD_LINE); + device_set_input_line(m_audiocpu, 0, HOLD_LINE); } static READ8_DEVICE_HANDLER( egghunt_okibanking_r ) @@ -220,18 +220,18 @@ static WRITE8_DEVICE_HANDLER( egghunt_okibanking_w ) static ADDRESS_MAP_START( egghunt_map, AS_PROGRAM, 8, egghunt_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE_LEGACY(paletteram_xRRRRRGGGGGBBBBB_le_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE_LEGACY(egghunt_atram_w) AM_BASE(m_atram) - AM_RANGE(0xd000, 0xdfff) AM_READWRITE_LEGACY(egghunt_bgram_r, egghunt_bgram_w) + AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(egghunt_atram_w) AM_BASE(m_atram) + AM_RANGE(0xd000, 0xdfff) AM_READWRITE(egghunt_bgram_r, egghunt_bgram_w) AM_RANGE(0xe000, 0xffff) AM_RAM ADDRESS_MAP_END static ADDRESS_MAP_START( io_map, AS_IO, 8, egghunt_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1") AM_WRITE_LEGACY(egghunt_vidram_bank_w) - AM_RANGE(0x01, 0x01) AM_READ_PORT("SYSTEM") AM_WRITE_LEGACY(egghunt_gfx_banking_w) + AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1") AM_WRITE(egghunt_vidram_bank_w) + AM_RANGE(0x01, 0x01) AM_READ_PORT("SYSTEM") AM_WRITE(egghunt_gfx_banking_w) AM_RANGE(0x02, 0x02) AM_READ_PORT("P1") - AM_RANGE(0x03, 0x03) AM_READ_PORT("P2") AM_WRITE_LEGACY(egghunt_soundlatch_w) + AM_RANGE(0x03, 0x03) AM_READ_PORT("P2") AM_WRITE(egghunt_soundlatch_w) AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2") AM_RANGE(0x06, 0x06) AM_READ_PORT("UNK") AM_WRITENOP AM_RANGE(0x07, 0x07) AM_WRITENOP diff --git a/src/mame/drivers/embargo.c b/src/mame/drivers/embargo.c index 63fc3d08299..7653b4ce7a9 100644 --- a/src/mame/drivers/embargo.c +++ b/src/mame/drivers/embargo.c @@ -22,6 +22,11 @@ public: UINT8 m_dial_enable_1; UINT8 m_dial_enable_2; UINT8 m_input_select; + DECLARE_READ8_MEMBER(input_port_bit_r); + DECLARE_READ8_MEMBER(dial_r); + DECLARE_WRITE8_MEMBER(port_1_w); + DECLARE_WRITE8_MEMBER(port_2_w); + DECLARE_WRITE8_MEMBER(input_select_w); }; @@ -65,16 +70,14 @@ static SCREEN_UPDATE_RGB32( embargo ) * *************************************/ -static READ8_HANDLER( input_port_bit_r ) +READ8_MEMBER(embargo_state::input_port_bit_r) { - embargo_state *state = space->machine().driver_data<embargo_state>(); - return (input_port_read(space->machine(), "IN1") << (7 - state->m_input_select)) & 0x80; + return (input_port_read(machine(), "IN1") << (7 - m_input_select)) & 0x80; } -static READ8_HANDLER( dial_r ) +READ8_MEMBER(embargo_state::dial_r) { - embargo_state *state = space->machine().driver_data<embargo_state>(); UINT8 lo = 0; UINT8 hi = 0; @@ -92,16 +95,16 @@ static READ8_HANDLER( dial_r ) 0x09, 0x0a, 0x08, 0x09, 0x08, 0x05, 0x07, 0x06 }; - if (state->m_dial_enable_1 && !state->m_dial_enable_2) + if (m_dial_enable_1 && !m_dial_enable_2) { - lo = input_port_read(space->machine(), "DIAL0"); - hi = input_port_read(space->machine(), "DIAL1"); + lo = input_port_read(machine(), "DIAL0"); + hi = input_port_read(machine(), "DIAL1"); } - if (state->m_dial_enable_2 && !state->m_dial_enable_1) + if (m_dial_enable_2 && !m_dial_enable_1) { - lo = input_port_read(space->machine(), "DIAL2"); - hi = input_port_read(space->machine(), "DIAL3"); + lo = input_port_read(machine(), "DIAL2"); + hi = input_port_read(machine(), "DIAL3"); } lo = 12 * lo / 256; @@ -124,24 +127,21 @@ static READ8_HANDLER( dial_r ) } -static WRITE8_HANDLER( port_1_w ) +WRITE8_MEMBER(embargo_state::port_1_w) { - embargo_state *state = space->machine().driver_data<embargo_state>(); - state->m_dial_enable_1 = data & 0x01; /* other bits unknown */ + m_dial_enable_1 = data & 0x01; /* other bits unknown */ } -static WRITE8_HANDLER( port_2_w ) +WRITE8_MEMBER(embargo_state::port_2_w) { - embargo_state *state = space->machine().driver_data<embargo_state>(); - state->m_dial_enable_2 = data & 0x01; /* other bits unknown */ + m_dial_enable_2 = data & 0x01; /* other bits unknown */ } -static WRITE8_HANDLER( input_select_w ) +WRITE8_MEMBER(embargo_state::input_select_w) { - embargo_state *state = space->machine().driver_data<embargo_state>(); - state->m_input_select = data & 0x07; + m_input_select = data & 0x07; } @@ -167,11 +167,11 @@ ADDRESS_MAP_END *************************************/ static ADDRESS_MAP_START( main_io_map, AS_IO, 8, embargo_state ) - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN0") AM_WRITE_LEGACY(port_1_w) - AM_RANGE(0x02, 0x02) AM_READWRITE_LEGACY(dial_r, port_2_w) + AM_RANGE(0x01, 0x01) AM_READ_PORT("IN0") AM_WRITE(port_1_w) + AM_RANGE(0x02, 0x02) AM_READWRITE(dial_r, port_2_w) AM_RANGE(0x03, 0x03) AM_WRITENOP /* always 0xFE */ AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READ_PORT("IN2") - AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_READWRITE_LEGACY(input_port_bit_r, input_select_w) + AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_READWRITE(input_port_bit_r, input_select_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/enigma2.c b/src/mame/drivers/enigma2.c index 817dd875a5c..7d137b92fc1 100644 --- a/src/mame/drivers/enigma2.c +++ b/src/mame/drivers/enigma2.c @@ -78,6 +78,9 @@ public: /* devices */ device_t *m_maincpu; device_t *m_audiocpu; + DECLARE_READ8_MEMBER(dip_switch_r); + DECLARE_WRITE8_MEMBER(sound_data_w); + DECLARE_WRITE8_MEMBER(enigma2_flip_screen_w); }; @@ -346,25 +349,24 @@ static SCREEN_UPDATE_RGB32( enigma2a ) -static READ8_HANDLER( dip_switch_r ) +READ8_MEMBER(enigma2_state::dip_switch_r) { - enigma2_state *state = space->machine().driver_data<enigma2_state>(); UINT8 ret = 0x00; - if (LOG_PROT) logerror("DIP SW Read: %x at %x (prot data %x)\n", offset, cpu_get_pc(&space->device()), state->m_protection_data); + if (LOG_PROT) logerror("DIP SW Read: %x at %x (prot data %x)\n", offset, cpu_get_pc(&space.device()), m_protection_data); switch (offset) { case 0x01: /* For the DIP switches to be read, protection_data must be 0xff on reset. The AY8910 reset ensures this. */ - if (state->m_protection_data != 0xff) - ret = state->m_protection_data ^ 0x88; + if (m_protection_data != 0xff) + ret = m_protection_data ^ 0x88; else - ret = input_port_read(space->machine(), "DSW"); + ret = input_port_read(machine(), "DSW"); break; case 0x02: - if (cpu_get_pc(&space->device()) == 0x07e5) + if (cpu_get_pc(&space.device()) == 0x07e5) ret = 0xaa; else ret = 0xf4; @@ -379,16 +381,15 @@ static READ8_HANDLER( dip_switch_r ) } -static WRITE8_HANDLER( sound_data_w ) +WRITE8_MEMBER(enigma2_state::sound_data_w) { - enigma2_state *state = space->machine().driver_data<enigma2_state>(); /* clock sound latch shift register on rising edge of D2 */ - if (!(data & 0x04) && (state->m_last_sound_data & 0x04)) - state->m_sound_latch = (state->m_sound_latch << 1) | (~data & 0x01); + if (!(data & 0x04) && (m_last_sound_data & 0x04)) + m_sound_latch = (m_sound_latch << 1) | (~data & 0x01); - device_set_input_line(state->m_audiocpu, INPUT_LINE_NMI, (data & 0x02) ? ASSERT_LINE : CLEAR_LINE); + device_set_input_line(m_audiocpu, INPUT_LINE_NMI, (data & 0x02) ? ASSERT_LINE : CLEAR_LINE); - state->m_last_sound_data = data; + m_last_sound_data = data; } @@ -407,10 +408,9 @@ static WRITE8_DEVICE_HANDLER( protection_data_w ) } -static WRITE8_HANDLER( enigma2_flip_screen_w ) +WRITE8_MEMBER(enigma2_state::enigma2_flip_screen_w) { - enigma2_state *state = space->machine().driver_data<enigma2_state>(); - state->m_flip_screen = ((data >> 5) & 0x01) && ((input_port_read(space->machine(), "DSW") & 0x20) == 0x20); + m_flip_screen = ((data >> 5) & 0x01) && ((input_port_read(machine(), "DSW") & 0x20) == 0x20); } @@ -448,13 +448,13 @@ static ADDRESS_MAP_START( engima2_main_cpu_map, AS_PROGRAM, 8, enigma2_state ) AM_RANGE(0x0000, 0x1fff) AM_ROM AM_WRITENOP AM_RANGE(0x2000, 0x3fff) AM_MIRROR(0x4000) AM_RAM AM_BASE(m_videoram) AM_RANGE(0x4000, 0x4fff) AM_ROM AM_WRITENOP - AM_RANGE(0x5000, 0x57ff) AM_READ_LEGACY(dip_switch_r) AM_WRITENOP + AM_RANGE(0x5000, 0x57ff) AM_READ(dip_switch_r) AM_WRITENOP AM_RANGE(0x5800, 0x5800) AM_MIRROR(0x07f8) AM_NOP AM_RANGE(0x5801, 0x5801) AM_MIRROR(0x07f8) AM_READ_PORT("IN0") AM_WRITENOP AM_RANGE(0x5802, 0x5802) AM_MIRROR(0x07f8) AM_READ_PORT("IN1") AM_WRITENOP - AM_RANGE(0x5803, 0x5803) AM_MIRROR(0x07f8) AM_READNOP AM_WRITE_LEGACY(sound_data_w) + AM_RANGE(0x5803, 0x5803) AM_MIRROR(0x07f8) AM_READNOP AM_WRITE(sound_data_w) AM_RANGE(0x5804, 0x5804) AM_MIRROR(0x07f8) AM_NOP - AM_RANGE(0x5805, 0x5805) AM_MIRROR(0x07f8) AM_READNOP AM_WRITE_LEGACY(enigma2_flip_screen_w) + AM_RANGE(0x5805, 0x5805) AM_MIRROR(0x07f8) AM_READNOP AM_WRITE(enigma2_flip_screen_w) AM_RANGE(0x5806, 0x5807) AM_MIRROR(0x07f8) AM_NOP ADDRESS_MAP_END @@ -463,7 +463,7 @@ static ADDRESS_MAP_START( engima2a_main_cpu_map, AS_PROGRAM, 8, enigma2_state ) AM_RANGE(0x0000, 0x1fff) AM_ROM AM_WRITENOP AM_RANGE(0x2000, 0x3fff) AM_MIRROR(0x4000) AM_RAM AM_BASE(m_videoram) AM_RANGE(0x4000, 0x4fff) AM_ROM AM_WRITENOP - AM_RANGE(0x5000, 0x57ff) AM_READ_LEGACY(dip_switch_r) AM_WRITENOP + AM_RANGE(0x5000, 0x57ff) AM_READ(dip_switch_r) AM_WRITENOP AM_RANGE(0x5800, 0x5fff) AM_NOP ADDRESS_MAP_END @@ -473,9 +473,9 @@ static ADDRESS_MAP_START( engima2a_main_cpu_io_map, AS_IO, 8, enigma2_state ) AM_RANGE(0x00, 0x00) AM_NOP AM_RANGE(0x01, 0x01) AM_READ_PORT("IN0") AM_WRITENOP AM_RANGE(0x02, 0x02) AM_READ_PORT("IN1") AM_WRITENOP - AM_RANGE(0x03, 0x03) AM_READNOP AM_WRITE_LEGACY(sound_data_w) + AM_RANGE(0x03, 0x03) AM_READNOP AM_WRITE(sound_data_w) AM_RANGE(0x04, 0x04) AM_NOP - AM_RANGE(0x05, 0x05) AM_READNOP AM_WRITE_LEGACY(enigma2_flip_screen_w) + AM_RANGE(0x05, 0x05) AM_READNOP AM_WRITE(enigma2_flip_screen_w) AM_RANGE(0x06, 0x07) AM_NOP ADDRESS_MAP_END diff --git a/src/mame/drivers/eolith16.c b/src/mame/drivers/eolith16.c index dea9f00357f..26e0c8e2638 100644 --- a/src/mame/drivers/eolith16.c +++ b/src/mame/drivers/eolith16.c @@ -24,6 +24,10 @@ public: UINT16 *m_vram; int m_vbuffer; + DECLARE_WRITE16_MEMBER(eeprom_w); + DECLARE_READ16_MEMBER(eolith16_custom_r); + DECLARE_WRITE16_MEMBER(vram_w); + DECLARE_READ16_MEMBER(vram_r); }; @@ -40,45 +44,42 @@ static const eeprom_interface eeprom_interface_93C66 = "*10011xxxxxx" // unlock 100 11xxxxxxx }; -static WRITE16_HANDLER( eeprom_w ) +WRITE16_MEMBER(eolith16_state::eeprom_w) { - eolith16_state *state = space->machine().driver_data<eolith16_state>(); - state->m_vbuffer = (data & 0x80) >> 7; - coin_counter_w(space->machine(), 0, data & 1); + m_vbuffer = (data & 0x80) >> 7; + coin_counter_w(machine(), 0, data & 1); - input_port_write(space->machine(), "EEPROMOUT", data, 0xff); + input_port_write(machine(), "EEPROMOUT", data, 0xff); //data & 0x100 and data & 0x004 always set } -static READ16_HANDLER( eolith16_custom_r ) +READ16_MEMBER(eolith16_state::eolith16_custom_r) { - eolith_speedup_read(space); - return input_port_read(space->machine(), "SPECIAL"); + eolith_speedup_read(&space); + return input_port_read(machine(), "SPECIAL"); } -static WRITE16_HANDLER( vram_w ) +WRITE16_MEMBER(eolith16_state::vram_w) { - eolith16_state *state = space->machine().driver_data<eolith16_state>(); - COMBINE_DATA(&state->m_vram[offset + (0x10000/2) * state->m_vbuffer]); + COMBINE_DATA(&m_vram[offset + (0x10000/2) * m_vbuffer]); } -static READ16_HANDLER( vram_r ) +READ16_MEMBER(eolith16_state::vram_r) { - eolith16_state *state = space->machine().driver_data<eolith16_state>(); - return state->m_vram[offset + (0x10000/2) * state->m_vbuffer]; + return m_vram[offset + (0x10000/2) * m_vbuffer]; } static ADDRESS_MAP_START( eolith16_map, AS_PROGRAM, 16, eolith16_state ) AM_RANGE(0x00000000, 0x001fffff) AM_RAM - AM_RANGE(0x50000000, 0x5000ffff) AM_READWRITE_LEGACY(vram_r, vram_w) + AM_RANGE(0x50000000, 0x5000ffff) AM_READWRITE(vram_r, vram_w) AM_RANGE(0x90000000, 0x9000002f) AM_WRITENOP //? AM_RANGE(0xff000000, 0xff1fffff) AM_ROM AM_REGION("user2", 0) AM_RANGE(0xffe40000, 0xffe40001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0xffe80000, 0xffe80001) AM_WRITE_LEGACY(eeprom_w) - AM_RANGE(0xffea0000, 0xffea0001) AM_READ_LEGACY(eolith16_custom_r) + AM_RANGE(0xffe80000, 0xffe80001) AM_WRITE(eeprom_w) + AM_RANGE(0xffea0000, 0xffea0001) AM_READ(eolith16_custom_r) AM_RANGE(0xffea0002, 0xffea0003) AM_READ_PORT("SYSTEM") AM_RANGE(0xffec0000, 0xffec0001) AM_READNOP // not used? AM_RANGE(0xffec0002, 0xffec0003) AM_READ_PORT("INPUTS") diff --git a/src/mame/drivers/ertictac.c b/src/mame/drivers/ertictac.c index cd22dcd61e2..1a315378fe2 100644 --- a/src/mame/drivers/ertictac.c +++ b/src/mame/drivers/ertictac.c @@ -32,20 +32,21 @@ public: ertictac_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) { } + DECLARE_READ32_MEMBER(ertictac_podule_r); }; -static READ32_HANDLER( ertictac_podule_r ) +READ32_MEMBER(ertictac_state::ertictac_podule_r) { ioc_regs[IRQ_STATUS_B] &= ~ARCHIMEDES_IRQB_PODULE_IRQ; switch(offset) { - case 0x04/4: return input_port_read(space->machine(), "DSW1") & 0xff; - case 0x08/4: return input_port_read(space->machine(), "DSW2") & 0xff; - case 0x10/4: return input_port_read(space->machine(), "SYSTEM") & 0xff; - case 0x14/4: return input_port_read(space->machine(), "P2") & 0xff; - case 0x18/4: return input_port_read(space->machine(), "P1") & 0xff; + case 0x04/4: return input_port_read(machine(), "DSW1") & 0xff; + case 0x08/4: return input_port_read(machine(), "DSW2") & 0xff; + case 0x10/4: return input_port_read(machine(), "SYSTEM") & 0xff; + case 0x14/4: return input_port_read(machine(), "P2") & 0xff; + case 0x18/4: return input_port_read(machine(), "P1") & 0xff; } return 0; @@ -55,8 +56,8 @@ static ADDRESS_MAP_START( ertictac_map, AS_PROGRAM, 32, ertictac_state ) AM_RANGE(0x00000000, 0x01ffffff) AM_READWRITE_LEGACY(archimedes_memc_logical_r, archimedes_memc_logical_w) AM_RANGE(0x02000000, 0x02ffffff) AM_RAM AM_BASE_LEGACY(&archimedes_memc_physmem) /* physical RAM - 16 MB for now, should be 512k for the A310 */ - AM_RANGE(0x03340000, 0x0334001f) AM_READ_LEGACY(ertictac_podule_r) - AM_RANGE(0x033c0000, 0x033c001f) AM_READ_LEGACY(ertictac_podule_r) + AM_RANGE(0x03340000, 0x0334001f) AM_READ(ertictac_podule_r) + AM_RANGE(0x033c0000, 0x033c001f) AM_READ(ertictac_podule_r) AM_RANGE(0x03000000, 0x033fffff) AM_READWRITE_LEGACY(archimedes_ioc_r, archimedes_ioc_w) AM_RANGE(0x03400000, 0x035fffff) AM_READWRITE_LEGACY(archimedes_vidc_r, archimedes_vidc_w) diff --git a/src/mame/drivers/esh.c b/src/mame/drivers/esh.c index bdbd7cdeadd..6456e31cbfd 100644 --- a/src/mame/drivers/esh.c +++ b/src/mame/drivers/esh.c @@ -39,6 +39,11 @@ public: UINT8 *m_tile_ram; UINT8 *m_tile_control_ram; UINT8 m_ld_video_visible; + DECLARE_READ8_MEMBER(ldp_read); + DECLARE_WRITE8_MEMBER(ldp_write); + DECLARE_WRITE8_MEMBER(misc_write); + DECLARE_WRITE8_MEMBER(led_writes); + DECLARE_WRITE8_MEMBER(nmi_line_w); }; @@ -81,34 +86,31 @@ static SCREEN_UPDATE_IND16( esh ) /* MEMORY HANDLERS */ -static READ8_HANDLER(ldp_read) +READ8_MEMBER(esh_state::ldp_read) { - esh_state *state = space->machine().driver_data<esh_state>(); - return state->m_laserdisc->status_r(); + return m_laserdisc->status_r(); } -static WRITE8_HANDLER(ldp_write) +WRITE8_MEMBER(esh_state::ldp_write) { - esh_state *state = space->machine().driver_data<esh_state>(); - state->m_laserdisc->data_w(data); + m_laserdisc->data_w(data); } -static WRITE8_HANDLER(misc_write) +WRITE8_MEMBER(esh_state::misc_write) { - esh_state *state = space->machine().driver_data<esh_state>(); /* Bit 0 unknown */ if (data & 0x02) logerror("BEEP!\n"); /* Bit 2 unknown */ - state->m_ld_video_visible = !((data & 0x08) >> 3); + m_ld_video_visible = !((data & 0x08) >> 3); /* Bits 4-7 unknown */ /* They cycle through a repeating pattern though */ } -static WRITE8_HANDLER(led_writes) +WRITE8_MEMBER(esh_state::led_writes) { switch(offset) { @@ -139,12 +141,12 @@ static WRITE8_HANDLER(led_writes) } } -static WRITE8_HANDLER(nmi_line_w) +WRITE8_MEMBER(esh_state::nmi_line_w) { if (data == 0x00) - cputag_set_input_line(space->machine(), "maincpu", INPUT_LINE_NMI, ASSERT_LINE); + cputag_set_input_line(machine(), "maincpu", INPUT_LINE_NMI, ASSERT_LINE); if (data == 0x01) - cputag_set_input_line(space->machine(), "maincpu", INPUT_LINE_NMI, CLEAR_LINE); + cputag_set_input_line(machine(), "maincpu", INPUT_LINE_NMI, CLEAR_LINE); if (data != 0x00 && data != 0x01) logerror("NMI line got a weird value!\n"); @@ -167,10 +169,10 @@ static ADDRESS_MAP_START( z80_0_io, AS_IO, 8, esh_state ) AM_RANGE(0xf1,0xf1) AM_READ_PORT("IN1") AM_RANGE(0xf2,0xf2) AM_READ_PORT("IN2") AM_RANGE(0xf3,0xf3) AM_READ_PORT("IN3") - AM_RANGE(0xf4,0xf4) AM_READWRITE_LEGACY(ldp_read,ldp_write) - AM_RANGE(0xf5,0xf5) AM_WRITE_LEGACY(misc_write) /* Continuously writes repeating patterns */ - AM_RANGE(0xf8,0xfd) AM_WRITE_LEGACY(led_writes) - AM_RANGE(0xfe,0xfe) AM_WRITE_LEGACY(nmi_line_w) /* Both 0xfe and 0xff flip quickly between 0 and 1 */ + AM_RANGE(0xf4,0xf4) AM_READWRITE(ldp_read,ldp_write) + AM_RANGE(0xf5,0xf5) AM_WRITE(misc_write) /* Continuously writes repeating patterns */ + AM_RANGE(0xf8,0xfd) AM_WRITE(led_writes) + AM_RANGE(0xfe,0xfe) AM_WRITE(nmi_line_w) /* Both 0xfe and 0xff flip quickly between 0 and 1 */ AM_RANGE(0xff,0xff) AM_NOP /* (they're probably not NMI enables - likely LED's like their neighbors :) */ ADDRESS_MAP_END /* (someday 0xf8-0xff will probably be a single handler) */ diff --git a/src/mame/drivers/ettrivia.c b/src/mame/drivers/ettrivia.c index b24ac4c7b19..20c4784cf66 100644 --- a/src/mame/drivers/ettrivia.c +++ b/src/mame/drivers/ettrivia.c @@ -47,104 +47,104 @@ public: UINT8 *m_fg_videoram; tilemap_t *m_bg_tilemap; tilemap_t *m_fg_tilemap; + DECLARE_WRITE8_MEMBER(ettrivia_fg_w); + DECLARE_WRITE8_MEMBER(ettrivia_bg_w); + DECLARE_WRITE8_MEMBER(ettrivia_control_w); + DECLARE_READ8_MEMBER(ettrivia_question_r); + DECLARE_WRITE8_MEMBER(b000_w); + DECLARE_READ8_MEMBER(b000_r); + DECLARE_WRITE8_MEMBER(b800_w); }; -static WRITE8_HANDLER( ettrivia_fg_w ) +WRITE8_MEMBER(ettrivia_state::ettrivia_fg_w) { - ettrivia_state *state = space->machine().driver_data<ettrivia_state>(); - state->m_fg_videoram[offset] = data; - state->m_fg_tilemap->mark_tile_dirty(offset); + m_fg_videoram[offset] = data; + m_fg_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( ettrivia_bg_w ) +WRITE8_MEMBER(ettrivia_state::ettrivia_bg_w) { - ettrivia_state *state = space->machine().driver_data<ettrivia_state>(); - state->m_bg_videoram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_bg_videoram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( ettrivia_control_w ) +WRITE8_MEMBER(ettrivia_state::ettrivia_control_w) { - ettrivia_state *state = space->machine().driver_data<ettrivia_state>(); - space->machine().tilemap().mark_all_dirty(); + machine().tilemap().mark_all_dirty(); - state->m_palreg = (data >> 1) & 3; - state->m_gfx_bank = (data >> 2) & 1; + m_palreg = (data >> 1) & 3; + m_gfx_bank = (data >> 2) & 1; - state->m_question_bank = (data >> 3) & 3; + m_question_bank = (data >> 3) & 3; - coin_counter_w(space->machine(), 0, data & 0x80); + coin_counter_w(machine(), 0, data & 0x80); - flip_screen_set(space->machine(), data & 1); + flip_screen_set(machine(), data & 1); } -static READ8_HANDLER( ettrivia_question_r ) +READ8_MEMBER(ettrivia_state::ettrivia_question_r) { - ettrivia_state *state = space->machine().driver_data<ettrivia_state>(); - UINT8 *QUESTIONS = space->machine().region("user1")->base(); - return QUESTIONS[offset + 0x10000 * state->m_question_bank]; + UINT8 *QUESTIONS = machine().region("user1")->base(); + return QUESTIONS[offset + 0x10000 * m_question_bank]; } -static WRITE8_HANDLER( b000_w ) +WRITE8_MEMBER(ettrivia_state::b000_w) { - ettrivia_state *state = space->machine().driver_data<ettrivia_state>(); - state->m_b000_val = data; + m_b000_val = data; } -static READ8_HANDLER( b000_r ) +READ8_MEMBER(ettrivia_state::b000_r) { - ettrivia_state *state = space->machine().driver_data<ettrivia_state>(); - if(state->m_b800_prev) - return state->m_b000_ret; + if(m_b800_prev) + return m_b000_ret; else - return state->m_b000_val; + return m_b000_val; } -static WRITE8_HANDLER( b800_w ) +WRITE8_MEMBER(ettrivia_state::b800_w) { - ettrivia_state *state = space->machine().driver_data<ettrivia_state>(); switch(data) { /* special case to return the value written to 0xb000 */ /* does it reset the chips too ? */ case 0: break; - case 0xc4: state->m_b000_ret = ay8910_r(space->machine().device("ay1"), 0); break; - case 0x94: state->m_b000_ret = ay8910_r(space->machine().device("ay2"), 0); break; - case 0x86: state->m_b000_ret = ay8910_r(space->machine().device("ay3"), 0); break; + case 0xc4: m_b000_ret = ay8910_r(machine().device("ay1"), 0); break; + case 0x94: m_b000_ret = ay8910_r(machine().device("ay2"), 0); break; + case 0x86: m_b000_ret = ay8910_r(machine().device("ay3"), 0); break; case 0x80: - switch(state->m_b800_prev) + switch(m_b800_prev) { - case 0xe0: ay8910_address_w(space->machine().device("ay1"),0,state->m_b000_val); break; - case 0x98: ay8910_address_w(space->machine().device("ay2"),0,state->m_b000_val); break; - case 0x83: ay8910_address_w(space->machine().device("ay3"),0,state->m_b000_val); break; + case 0xe0: ay8910_address_w(machine().device("ay1"),0,m_b000_val); break; + case 0x98: ay8910_address_w(machine().device("ay2"),0,m_b000_val); break; + case 0x83: ay8910_address_w(machine().device("ay3"),0,m_b000_val); break; - case 0xa0: ay8910_data_w(space->machine().device("ay1"),0,state->m_b000_val); break; - case 0x88: ay8910_data_w(space->machine().device("ay2"),0,state->m_b000_val); break; - case 0x81: ay8910_data_w(space->machine().device("ay3"),0,state->m_b000_val); break; + case 0xa0: ay8910_data_w(machine().device("ay1"),0,m_b000_val); break; + case 0x88: ay8910_data_w(machine().device("ay2"),0,m_b000_val); break; + case 0x81: ay8910_data_w(machine().device("ay3"),0,m_b000_val); break; } break; } - state->m_b800_prev = data; + m_b800_prev = data; } static ADDRESS_MAP_START( cpu_map, AS_PROGRAM, 8, ettrivia_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x9000, 0x9000) AM_WRITE_LEGACY(ettrivia_control_w) + AM_RANGE(0x9000, 0x9000) AM_WRITE(ettrivia_control_w) AM_RANGE(0x9800, 0x9800) AM_WRITENOP AM_RANGE(0xa000, 0xa000) AM_WRITENOP - AM_RANGE(0xb000, 0xb000) AM_READ_LEGACY(b000_r) AM_WRITE_LEGACY(b000_w) - AM_RANGE(0xb800, 0xb800) AM_WRITE_LEGACY(b800_w) - AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE_LEGACY(ettrivia_fg_w) AM_BASE(m_fg_videoram) - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE_LEGACY(ettrivia_bg_w) AM_BASE(m_bg_videoram) + AM_RANGE(0xb000, 0xb000) AM_READ(b000_r) AM_WRITE(b000_w) + AM_RANGE(0xb800, 0xb800) AM_WRITE(b800_w) + AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(ettrivia_fg_w) AM_BASE(m_fg_videoram) + AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(ettrivia_bg_w) AM_BASE(m_bg_videoram) ADDRESS_MAP_END static ADDRESS_MAP_START( io_map, AS_IO, 8, ettrivia_state ) - AM_RANGE(0x0000, 0xffff) AM_READ_LEGACY(ettrivia_question_r) + AM_RANGE(0x0000, 0xffff) AM_READ(ettrivia_question_r) ADDRESS_MAP_END static INPUT_PORTS_START( ettrivia ) diff --git a/src/mame/drivers/f-32.c b/src/mame/drivers/f-32.c index 584760d7c67..5f1347941b3 100644 --- a/src/mame/drivers/f-32.c +++ b/src/mame/drivers/f-32.c @@ -27,6 +27,7 @@ public: /* memory pointers */ required_device<e132xn_device> m_maincpu; UINT32 * m_videoram; + DECLARE_READ32_MEMBER(f32_input_port_1_r); }; @@ -59,15 +60,15 @@ static ADDRESS_MAP_START( common_map, AS_PROGRAM, 32, mosaicf2_state ) AM_RANGE(0xfff00000, 0xffffffff) AM_ROM AM_REGION("user1",0) ADDRESS_MAP_END -static READ32_HANDLER( f32_input_port_1_r ) +READ32_MEMBER(mosaicf2_state::f32_input_port_1_r) { /* burn a bunch of cycles because this is polled frequently during busy loops */ - mosaicf2_state *state = space->machine().driver_data<mosaicf2_state>(); - offs_t pc = state->m_maincpu->pc(); + + offs_t pc = m_maincpu->pc(); if ((pc == 0x000379de) || (pc == 0x000379cc) ) - state->m_maincpu->eat_cycles(100); + m_maincpu->eat_cycles(100); //else printf("PC %08x\n", pc ); - return input_port_read(space->machine(), "SYSTEM_P2"); + return input_port_read(machine(), "SYSTEM_P2"); } @@ -75,7 +76,7 @@ static ADDRESS_MAP_START( mosaicf2_io, AS_IO, 32, mosaicf2_state ) AM_RANGE(0x4000, 0x4003) AM_DEVREAD8("oki", okim6295_device, read, 0x000000ff) AM_RANGE(0x4810, 0x4813) AM_DEVREAD8_LEGACY("ymsnd", ym2151_status_port_r, 0x000000ff) AM_RANGE(0x5000, 0x5003) AM_READ_PORT("P1") - AM_RANGE(0x5200, 0x5203) AM_READ_LEGACY(f32_input_port_1_r) + AM_RANGE(0x5200, 0x5203) AM_READ(f32_input_port_1_r) AM_RANGE(0x5400, 0x5403) AM_READ_PORT("EEPROMIN") AM_RANGE(0x6000, 0x6003) AM_DEVWRITE8("oki", okim6295_device, write, 0x000000ff) AM_RANGE(0x6800, 0x6803) AM_DEVWRITE8_LEGACY("ymsnd", ym2151_data_port_w, 0x000000ff) diff --git a/src/mame/drivers/feversoc.c b/src/mame/drivers/feversoc.c index fbd8e9f5a25..202ce16fcf4 100644 --- a/src/mame/drivers/feversoc.c +++ b/src/mame/drivers/feversoc.c @@ -72,6 +72,9 @@ public: UINT16 m_x; UINT32 *m_spriteram; + DECLARE_WRITE32_MEMBER(fs_paletteram_w); + DECLARE_READ32_MEMBER(in0_r); + DECLARE_WRITE32_MEMBER(output_w); }; @@ -112,50 +115,49 @@ static SCREEN_UPDATE_IND16( feversoc ) return 0; } -static WRITE32_HANDLER( fs_paletteram_w ) +WRITE32_MEMBER(feversoc_state::fs_paletteram_w) { int r,g,b; - COMBINE_DATA(&space->machine().generic.paletteram.u32[offset]); + COMBINE_DATA(&machine().generic.paletteram.u32[offset]); - r = ((space->machine().generic.paletteram.u32[offset] & 0x001f0000)>>16) << 3; - g = ((space->machine().generic.paletteram.u32[offset] & 0x03e00000)>>16) >> 2; - b = ((space->machine().generic.paletteram.u32[offset] & 0x7c000000)>>16) >> 7; + r = ((machine().generic.paletteram.u32[offset] & 0x001f0000)>>16) << 3; + g = ((machine().generic.paletteram.u32[offset] & 0x03e00000)>>16) >> 2; + b = ((machine().generic.paletteram.u32[offset] & 0x7c000000)>>16) >> 7; - palette_set_color(space->machine(),offset*2+0,MAKE_RGB(r,g,b)); + palette_set_color(machine(),offset*2+0,MAKE_RGB(r,g,b)); - r = (space->machine().generic.paletteram.u32[offset] & 0x001f) << 3; - g = (space->machine().generic.paletteram.u32[offset] & 0x03e0) >> 2; - b = (space->machine().generic.paletteram.u32[offset] & 0x7c00) >> 7; + r = (machine().generic.paletteram.u32[offset] & 0x001f) << 3; + g = (machine().generic.paletteram.u32[offset] & 0x03e0) >> 2; + b = (machine().generic.paletteram.u32[offset] & 0x7c00) >> 7; - palette_set_color(space->machine(),offset*2+1,MAKE_RGB(r,g,b)); + palette_set_color(machine(),offset*2+1,MAKE_RGB(r,g,b)); } -static READ32_HANDLER( in0_r ) +READ32_MEMBER(feversoc_state::in0_r) { - feversoc_state *state = space->machine().driver_data<feversoc_state>(); - state->m_x^=0x40; //vblank? eeprom read bit? - return (input_port_read(space->machine(), "IN0") | state->m_x) | (input_port_read(space->machine(), "IN1")<<16); + m_x^=0x40; //vblank? eeprom read bit? + return (input_port_read(machine(), "IN0") | m_x) | (input_port_read(machine(), "IN1")<<16); } -static WRITE32_HANDLER( output_w ) +WRITE32_MEMBER(feversoc_state::output_w) { if(ACCESSING_BITS_16_31) { /* probably eeprom stuff too */ - coin_lockout_w(space->machine(), 0,~data>>16 & 0x40); - coin_lockout_w(space->machine(), 1,~data>>16 & 0x40); - coin_counter_w(space->machine(), 0,data>>16 & 1); + coin_lockout_w(machine(), 0,~data>>16 & 0x40); + coin_lockout_w(machine(), 1,~data>>16 & 0x40); + coin_counter_w(machine(), 0,data>>16 & 1); //data>>16 & 2 coin out - coin_counter_w(space->machine(), 1,data>>16 & 4); + coin_counter_w(machine(), 1,data>>16 & 4); //data>>16 & 8 coin hopper - okim6295_device *oki = space->machine().device<okim6295_device>("oki"); + okim6295_device *oki = machine().device<okim6295_device>("oki"); oki->set_bank_base(0x40000 * (((data>>16) & 0x20)>>5)); } if(ACCESSING_BITS_0_15) { /* -xxx xxxx lamps*/ - coin_counter_w(space->machine(), 2,data & 0x2000); //key in + coin_counter_w(machine(), 2,data & 0x2000); //key in //data & 0x4000 key out } } @@ -164,12 +166,12 @@ static ADDRESS_MAP_START( feversoc_map, AS_PROGRAM, 32, feversoc_state ) AM_RANGE(0x00000000, 0x0003ffff) AM_ROM AM_RANGE(0x02000000, 0x0203dfff) AM_RAM //work ram AM_RANGE(0x0203e000, 0x0203ffff) AM_RAM AM_BASE(m_spriteram) - AM_RANGE(0x06000000, 0x06000003) AM_WRITE_LEGACY(output_w) + AM_RANGE(0x06000000, 0x06000003) AM_WRITE(output_w) AM_RANGE(0x06000004, 0x06000007) AM_WRITENOP //??? - AM_RANGE(0x06000008, 0x0600000b) AM_READ_LEGACY(in0_r) + AM_RANGE(0x06000008, 0x0600000b) AM_READ(in0_r) AM_RANGE(0x0600000c, 0x0600000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff0000) // AM_RANGE(0x06010000, 0x06017fff) AM_RAM //contains RISE11 keys and other related stuff. - AM_RANGE(0x06018000, 0x06019fff) AM_RAM_WRITE_LEGACY(fs_paletteram_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x06018000, 0x06019fff) AM_RAM_WRITE(fs_paletteram_w) AM_BASE_GENERIC(paletteram) ADDRESS_MAP_END static const gfx_layout spi_spritelayout = diff --git a/src/mame/drivers/flyball.c b/src/mame/drivers/flyball.c index 85e57eb3cef..b43ae53f21c 100644 --- a/src/mame/drivers/flyball.c +++ b/src/mame/drivers/flyball.c @@ -42,6 +42,16 @@ public: /* devices */ device_t *m_maincpu; + DECLARE_READ8_MEMBER(flyball_input_r); + DECLARE_READ8_MEMBER(flyball_scanline_r); + DECLARE_READ8_MEMBER(flyball_potsense_r); + DECLARE_WRITE8_MEMBER(flyball_potmask_w); + DECLARE_WRITE8_MEMBER(flyball_pitcher_pic_w); + DECLARE_WRITE8_MEMBER(flyball_ball_vert_w); + DECLARE_WRITE8_MEMBER(flyball_ball_horz_w); + DECLARE_WRITE8_MEMBER(flyball_pitcher_vert_w); + DECLARE_WRITE8_MEMBER(flyball_pitcher_horz_w); + DECLARE_WRITE8_MEMBER(flyball_misc_w); }; @@ -159,66 +169,59 @@ static TIMER_CALLBACK( flyball_quarter_callback ) *************************************/ /* two physical buttons (start game and stop runner) share the same port bit */ -static READ8_HANDLER( flyball_input_r ) +READ8_MEMBER(flyball_state::flyball_input_r) { - return input_port_read(space->machine(), "IN0") & input_port_read(space->machine(), "IN1"); + return input_port_read(machine(), "IN0") & input_port_read(machine(), "IN1"); } -static READ8_HANDLER( flyball_scanline_r ) +READ8_MEMBER(flyball_state::flyball_scanline_r) { - return space->machine().primary_screen->vpos() & 0x3f; + return machine().primary_screen->vpos() & 0x3f; } -static READ8_HANDLER( flyball_potsense_r ) +READ8_MEMBER(flyball_state::flyball_potsense_r) { - flyball_state *state = space->machine().driver_data<flyball_state>(); - return state->m_potsense & ~state->m_potmask; + return m_potsense & ~m_potmask; } -static WRITE8_HANDLER( flyball_potmask_w ) +WRITE8_MEMBER(flyball_state::flyball_potmask_w) { - flyball_state *state = space->machine().driver_data<flyball_state>(); - state->m_potmask |= data & 0xf; + m_potmask |= data & 0xf; } -static WRITE8_HANDLER( flyball_pitcher_pic_w ) +WRITE8_MEMBER(flyball_state::flyball_pitcher_pic_w) { - flyball_state *state = space->machine().driver_data<flyball_state>(); - state->m_pitcher_pic = data & 0xf; + m_pitcher_pic = data & 0xf; } -static WRITE8_HANDLER( flyball_ball_vert_w ) +WRITE8_MEMBER(flyball_state::flyball_ball_vert_w) { - flyball_state *state = space->machine().driver_data<flyball_state>(); - state->m_ball_vert = data; + m_ball_vert = data; } -static WRITE8_HANDLER( flyball_ball_horz_w ) +WRITE8_MEMBER(flyball_state::flyball_ball_horz_w) { - flyball_state *state = space->machine().driver_data<flyball_state>(); - state->m_ball_horz = data; + m_ball_horz = data; } -static WRITE8_HANDLER( flyball_pitcher_vert_w ) +WRITE8_MEMBER(flyball_state::flyball_pitcher_vert_w) { - flyball_state *state = space->machine().driver_data<flyball_state>(); - state->m_pitcher_vert = data; + m_pitcher_vert = data; } -static WRITE8_HANDLER( flyball_pitcher_horz_w ) +WRITE8_MEMBER(flyball_state::flyball_pitcher_horz_w) { - flyball_state *state = space->machine().driver_data<flyball_state>(); - state->m_pitcher_horz = data; + m_pitcher_horz = data; } -static WRITE8_HANDLER( flyball_misc_w ) +WRITE8_MEMBER(flyball_state::flyball_misc_w) { int bit = ~data & 1; switch (offset) { case 0: - set_led_status(space->machine(), 0, bit); + set_led_status(machine(), 0, bit); break; case 1: /* crowd very loud */ @@ -249,16 +252,16 @@ static ADDRESS_MAP_START( flyball_map, AS_PROGRAM, 8, flyball_state ) ADDRESS_MAP_GLOBAL_MASK(0x1fff) AM_RANGE(0x0000, 0x00ff) AM_MIRROR(0x100) AM_RAM AM_RANGE(0x0800, 0x0800) AM_NOP - AM_RANGE(0x0801, 0x0801) AM_WRITE_LEGACY(flyball_pitcher_pic_w) - AM_RANGE(0x0802, 0x0802) AM_READ_LEGACY(flyball_scanline_r) - AM_RANGE(0x0803, 0x0803) AM_READ_LEGACY(flyball_potsense_r) - AM_RANGE(0x0804, 0x0804) AM_WRITE_LEGACY(flyball_ball_vert_w) - AM_RANGE(0x0805, 0x0805) AM_WRITE_LEGACY(flyball_ball_horz_w) - AM_RANGE(0x0806, 0x0806) AM_WRITE_LEGACY(flyball_pitcher_vert_w) - AM_RANGE(0x0807, 0x0807) AM_WRITE_LEGACY(flyball_pitcher_horz_w) - AM_RANGE(0x0900, 0x0900) AM_WRITE_LEGACY(flyball_potmask_w) - AM_RANGE(0x0a00, 0x0a07) AM_WRITE_LEGACY(flyball_misc_w) - AM_RANGE(0x0b00, 0x0b00) AM_READ_LEGACY(flyball_input_r) + AM_RANGE(0x0801, 0x0801) AM_WRITE(flyball_pitcher_pic_w) + AM_RANGE(0x0802, 0x0802) AM_READ(flyball_scanline_r) + AM_RANGE(0x0803, 0x0803) AM_READ(flyball_potsense_r) + AM_RANGE(0x0804, 0x0804) AM_WRITE(flyball_ball_vert_w) + AM_RANGE(0x0805, 0x0805) AM_WRITE(flyball_ball_horz_w) + AM_RANGE(0x0806, 0x0806) AM_WRITE(flyball_pitcher_vert_w) + AM_RANGE(0x0807, 0x0807) AM_WRITE(flyball_pitcher_horz_w) + AM_RANGE(0x0900, 0x0900) AM_WRITE(flyball_potmask_w) + AM_RANGE(0x0a00, 0x0a07) AM_WRITE(flyball_misc_w) + AM_RANGE(0x0b00, 0x0b00) AM_READ(flyball_input_r) AM_RANGE(0x0d00, 0x0eff) AM_WRITEONLY AM_BASE(m_playfield_ram) AM_RANGE(0x1000, 0x1fff) AM_ROM AM_BASE(m_rombase) /* program */ ADDRESS_MAP_END diff --git a/src/mame/drivers/gal3.c b/src/mame/drivers/gal3.c index a20397c37f8..2cd2482b81f 100644 --- a/src/mame/drivers/gal3.c +++ b/src/mame/drivers/gal3.c @@ -147,6 +147,16 @@ public: UINT16 *m_rsoSharedRAM; UINT32 m_led_mst; UINT32 m_led_slv; + DECLARE_READ32_MEMBER(led_mst_r); + DECLARE_WRITE32_MEMBER(led_mst_w); + DECLARE_READ32_MEMBER(led_slv_r); + DECLARE_WRITE32_MEMBER(led_slv_w); + DECLARE_READ32_MEMBER(paletteram32_r); + DECLARE_WRITE32_MEMBER(paletteram32_w); + DECLARE_READ32_MEMBER(namcos21_video_enable_r); + DECLARE_WRITE32_MEMBER(namcos21_video_enable_w); + DECLARE_READ32_MEMBER(rso_r); + DECLARE_WRITE32_MEMBER(rso_w); }; @@ -270,83 +280,75 @@ static NVRAM_HANDLER( gal3 ) /***************************************************************************************/ -static READ32_HANDLER( led_mst_r ) +READ32_MEMBER(gal3_state::led_mst_r) { - gal3_state *state = space->machine().driver_data<gal3_state>(); - return state->m_led_mst; + return m_led_mst; } -static WRITE32_HANDLER( led_mst_w ) +WRITE32_MEMBER(gal3_state::led_mst_w) { - gal3_state *state = space->machine().driver_data<gal3_state>(); - COMBINE_DATA(&state->m_led_mst); + COMBINE_DATA(&m_led_mst); } -static READ32_HANDLER( led_slv_r ) +READ32_MEMBER(gal3_state::led_slv_r) { - gal3_state *state = space->machine().driver_data<gal3_state>(); - return state->m_led_slv; + return m_led_slv; } -static WRITE32_HANDLER( led_slv_w ) +WRITE32_MEMBER(gal3_state::led_slv_w) { - gal3_state *state = space->machine().driver_data<gal3_state>(); - COMBINE_DATA(&state->m_led_slv); + COMBINE_DATA(&m_led_slv); } /* palette memory handlers */ -static READ32_HANDLER( paletteram32_r ) +READ32_MEMBER(gal3_state::paletteram32_r) { offset *= 2; - return (space->machine().generic.paletteram.u16[offset]<<16)|space->machine().generic.paletteram.u16[offset+1]; + return (machine().generic.paletteram.u16[offset]<<16)|machine().generic.paletteram.u16[offset+1]; } -static WRITE32_HANDLER( paletteram32_w ) +WRITE32_MEMBER(gal3_state::paletteram32_w) { UINT32 v; offset *= 2; - v = (space->machine().generic.paletteram.u16[offset]<<16)|space->machine().generic.paletteram.u16[offset+1]; + v = (machine().generic.paletteram.u16[offset]<<16)|machine().generic.paletteram.u16[offset+1]; COMBINE_DATA( &v ); - space->machine().generic.paletteram.u16[offset+0] = v>>16; - space->machine().generic.paletteram.u16[offset+1] = v&0xffff; + machine().generic.paletteram.u16[offset+0] = v>>16; + machine().generic.paletteram.u16[offset+1] = v&0xffff; } -static READ32_HANDLER(namcos21_video_enable_r) +READ32_MEMBER(gal3_state::namcos21_video_enable_r) { - gal3_state *state = space->machine().driver_data<gal3_state>(); - return state->m_namcos21_video_enable<<16; + return m_namcos21_video_enable<<16; } -static WRITE32_HANDLER(namcos21_video_enable_w) +WRITE32_MEMBER(gal3_state::namcos21_video_enable_w) { - gal3_state *state = space->machine().driver_data<gal3_state>(); UINT32 v; - v = state->m_namcos21_video_enable<<16; + v = m_namcos21_video_enable<<16; COMBINE_DATA( &v ); // 0xff53, instead of 0x40 in namcos21 - state->m_namcos21_video_enable = v>>16; + m_namcos21_video_enable = v>>16; } -static READ32_HANDLER(rso_r) +READ32_MEMBER(gal3_state::rso_r) { - gal3_state *state = space->machine().driver_data<gal3_state>(); /*store $5555 @$0046, and readback @$0000 read @$0144 and store at A6_21e & A4_5c Check @$009a==1 to start DEMO HACK*/ offset *= 2; - return (state->m_rsoSharedRAM[offset]<<16)|state->m_rsoSharedRAM[offset+1]; + return (m_rsoSharedRAM[offset]<<16)|m_rsoSharedRAM[offset+1]; } -static WRITE32_HANDLER(rso_w) +WRITE32_MEMBER(gal3_state::rso_w) { - gal3_state *state = space->machine().driver_data<gal3_state>(); UINT32 v; offset *= 2; - v = (state->m_rsoSharedRAM[offset]<<16)|state->m_rsoSharedRAM[offset+1]; + v = (m_rsoSharedRAM[offset]<<16)|m_rsoSharedRAM[offset+1]; COMBINE_DATA( &v ); - state->m_rsoSharedRAM[offset+0] = v>>16; - state->m_rsoSharedRAM[offset+1] = v&0xffff; + m_rsoSharedRAM[offset+0] = v>>16; + m_rsoSharedRAM[offset+1] = v&0xffff; } @@ -355,7 +357,7 @@ static ADDRESS_MAP_START( cpu_mst_map, AS_PROGRAM, 32, gal3_state ) AM_RANGE(0x20000000, 0x20001fff) AM_RAM AM_BASE(m_nvmem) AM_SIZE(m_nvmem_size) //NVRAM /// AM_RANGE(0x40000000, 0x4000ffff) AM_WRITE_LEGACY() // AM_RANGE(0x44000000, 0x44000003) AM_READ_PORT("DSW_CPU_mst" ) - AM_RANGE(0x44800000, 0x44800003) AM_READ_LEGACY(led_mst_r) AM_WRITE_LEGACY(led_mst_w) //LEDs + AM_RANGE(0x44800000, 0x44800003) AM_READ(led_mst_r) AM_WRITE(led_mst_w) //LEDs AM_RANGE(0x48000000, 0x48000003) AM_READNOP //irq1 v-blank ack AM_RANGE(0x4c000000, 0x4c000003) AM_READNOP //irq3 ack AM_RANGE(0x60000000, 0x60007fff) AM_RAM AM_SHARE("share1") //CRAM @@ -364,14 +366,14 @@ static ADDRESS_MAP_START( cpu_mst_map, AS_PROGRAM, 32, gal3_state ) /// AM_RANGE(0xc0000000, 0xc000000b) AM_WRITENOP //upload? AM_RANGE(0xc000000c, 0xc000000f) AM_READNOP //irq2 ack /// AM_RANGE(0xd8000000, 0xd800000f) AM_RAM // protection or 68681? - AM_RANGE(0xf2800000, 0xf2800fff) AM_READWRITE_LEGACY(rso_r, rso_w) //RSO PCB + AM_RANGE(0xf2800000, 0xf2800fff) AM_READWRITE(rso_r, rso_w) //RSO PCB ADDRESS_MAP_END static ADDRESS_MAP_START( cpu_slv_map, AS_PROGRAM, 32, gal3_state ) AM_RANGE(0x00000000, 0x0007ffff) AM_ROM /// AM_RANGE(0x40000000, 0x4000ffff) AM_WRITE_LEGACY() // AM_RANGE(0x44000000, 0x44000003) AM_READ_PORT("DSW_CPU_slv" ) - AM_RANGE(0x44800000, 0x44800003) AM_READ_LEGACY(led_slv_r) AM_WRITE_LEGACY(led_slv_w) //LEDs + AM_RANGE(0x44800000, 0x44800003) AM_READ(led_slv_r) AM_WRITE(led_slv_w) //LEDs AM_RANGE(0x48000000, 0x48000003) AM_READNOP //irq1 ack /// AM_RANGE(0x50000000, 0x50000003) AM_READ_LEGACY() AM_WRITE_LEGACY() /// AM_RANGE(0x54000000, 0x54000003) AM_READ_LEGACY() AM_WRITE_LEGACY() @@ -386,14 +388,14 @@ static ADDRESS_MAP_START( cpu_slv_map, AS_PROGRAM, 32, gal3_state ) /// AM_RANGE(0xf1480000, 0xf14807ff) AM_READWRITE_LEGACY(namcos21_depthcue_r,namcos21_depthcue_w) AM_RANGE(0xf1700000, 0xf170ffff) AM_READWRITE_LEGACY(namco_obj32_r,namco_obj32_w) AM_RANGE(0xf1720000, 0xf1720007) AM_READWRITE_LEGACY(namco_spritepos32_r,namco_spritepos32_w) - AM_RANGE(0xf1740000, 0xf175ffff) AM_READWRITE_LEGACY(paletteram32_r,paletteram32_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0xf1760000, 0xf1760003) AM_READWRITE_LEGACY(namcos21_video_enable_r,namcos21_video_enable_w) + AM_RANGE(0xf1740000, 0xf175ffff) AM_READWRITE(paletteram32_r,paletteram32_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0xf1760000, 0xf1760003) AM_READWRITE(namcos21_video_enable_r,namcos21_video_enable_w) AM_RANGE(0xf2200000, 0xf220ffff) AM_RAM AM_RANGE(0xf2700000, 0xf270ffff) AM_RAM //AM_READWRITE_LEGACY(namco_obj16_r,namco_obj16_w) AM_RANGE(0xf2720000, 0xf2720007) AM_RAM //AM_READWRITE_LEGACY(namco_spritepos16_r,namco_spritepos16_w) AM_RANGE(0xf2740000, 0xf275ffff) AM_RAM //AM_READWRITE_LEGACY(paletteram16_r,paletteram16_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0xf2760000, 0xf2760003) AM_RAM //AM_READWRITE_LEGACY(namcos21_video_enable_r,namcos21_video_enable_w) + AM_RANGE(0xf2760000, 0xf2760003) AM_RAM //AM_READWRITE(namcos21_video_enable_r,namcos21_video_enable_w) ADDRESS_MAP_END static ADDRESS_MAP_START( rs_cpu_map, AS_PROGRAM, 16, gal3_state ) diff --git a/src/mame/drivers/galaxi.c b/src/mame/drivers/galaxi.c index 469648c77db..3a84b02361d 100644 --- a/src/mame/drivers/galaxi.c +++ b/src/mame/drivers/galaxi.c @@ -71,6 +71,14 @@ public: int m_hopper; int m_ticket; UINT16 m_out[3]; + DECLARE_WRITE16_MEMBER(galaxi_bg1_w); + DECLARE_WRITE16_MEMBER(galaxi_bg2_w); + DECLARE_WRITE16_MEMBER(galaxi_bg3_w); + DECLARE_WRITE16_MEMBER(galaxi_bg4_w); + DECLARE_WRITE16_MEMBER(galaxi_fg_w); + DECLARE_WRITE16_MEMBER(galaxi_500000_w); + DECLARE_WRITE16_MEMBER(galaxi_500002_w); + DECLARE_WRITE16_MEMBER(galaxi_500004_w); }; @@ -113,39 +121,34 @@ static TILE_GET_INFO( get_fg_tile_info ) SET_TILE_INFO(1, code, 0x20 + (code >> 12), 0); } -static WRITE16_HANDLER( galaxi_bg1_w ) +WRITE16_MEMBER(galaxi_state::galaxi_bg1_w) { - galaxi_state *state = space->machine().driver_data<galaxi_state>(); - COMBINE_DATA(&state->m_bg1_ram[offset]); - state->m_bg1_tmap->mark_tile_dirty(offset); + COMBINE_DATA(&m_bg1_ram[offset]); + m_bg1_tmap->mark_tile_dirty(offset); } -static WRITE16_HANDLER( galaxi_bg2_w ) +WRITE16_MEMBER(galaxi_state::galaxi_bg2_w) { - galaxi_state *state = space->machine().driver_data<galaxi_state>(); - COMBINE_DATA(&state->m_bg2_ram[offset]); - state->m_bg2_tmap->mark_tile_dirty(offset); + COMBINE_DATA(&m_bg2_ram[offset]); + m_bg2_tmap->mark_tile_dirty(offset); } -static WRITE16_HANDLER( galaxi_bg3_w ) +WRITE16_MEMBER(galaxi_state::galaxi_bg3_w) { - galaxi_state *state = space->machine().driver_data<galaxi_state>(); - COMBINE_DATA(&state->m_bg3_ram[offset]); - state->m_bg3_tmap->mark_tile_dirty(offset); + COMBINE_DATA(&m_bg3_ram[offset]); + m_bg3_tmap->mark_tile_dirty(offset); } -static WRITE16_HANDLER( galaxi_bg4_w ) +WRITE16_MEMBER(galaxi_state::galaxi_bg4_w) { - galaxi_state *state = space->machine().driver_data<galaxi_state>(); - COMBINE_DATA(&state->m_bg4_ram[offset]); - state->m_bg4_tmap->mark_tile_dirty(offset); + COMBINE_DATA(&m_bg4_ram[offset]); + m_bg4_tmap->mark_tile_dirty(offset); } -static WRITE16_HANDLER( galaxi_fg_w ) +WRITE16_MEMBER(galaxi_state::galaxi_fg_w) { - galaxi_state *state = space->machine().driver_data<galaxi_state>(); - COMBINE_DATA(&state->m_fg_ram[offset]); - state->m_fg_tmap->mark_tile_dirty(offset); + COMBINE_DATA(&m_fg_ram[offset]); + m_fg_tmap->mark_tile_dirty(offset); } static VIDEO_START(galaxi) @@ -208,23 +211,20 @@ static void show_out( running_machine &machine ) // popmessage("%04x %04x %04x", state->m_out[0], state->m_out[1], state->m_out[2]); } -static WRITE16_HANDLER( galaxi_500000_w ) +WRITE16_MEMBER(galaxi_state::galaxi_500000_w) { - galaxi_state *state = space->machine().driver_data<galaxi_state>(); - COMBINE_DATA(&state->m_out[0]); - show_out(space->machine()); + COMBINE_DATA(&m_out[0]); + show_out(machine()); } -static WRITE16_HANDLER( galaxi_500002_w ) +WRITE16_MEMBER(galaxi_state::galaxi_500002_w) { - galaxi_state *state = space->machine().driver_data<galaxi_state>(); - COMBINE_DATA(&state->m_out[1]); - show_out(space->machine()); + COMBINE_DATA(&m_out[1]); + show_out(machine()); } -static WRITE16_HANDLER( galaxi_500004_w ) +WRITE16_MEMBER(galaxi_state::galaxi_500004_w) { - galaxi_state *state = space->machine().driver_data<galaxi_state>(); if (ACCESSING_BITS_0_7) { @@ -250,13 +250,13 @@ static WRITE16_HANDLER( galaxi_500004_w ) } if (ACCESSING_BITS_8_15) { - state->m_ticket = data & 0x0100; - state->m_hopper = data & 0x1000; - coin_counter_w(space->machine(), 0, data & 0x2000); // coins + m_ticket = data & 0x0100; + m_hopper = data & 0x1000; + coin_counter_w(machine(), 0, data & 0x2000); // coins } - COMBINE_DATA(&state->m_out[2]); - show_out(space->machine()); + COMBINE_DATA(&m_out[2]); + show_out(machine()); } static CUSTOM_INPUT( ticket_r ) @@ -275,20 +275,20 @@ static CUSTOM_INPUT( hopper_r ) static ADDRESS_MAP_START( galaxi_map, AS_PROGRAM, 16, galaxi_state ) AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x1003ff) AM_RAM_WRITE_LEGACY(galaxi_bg1_w) AM_BASE(m_bg1_ram) - AM_RANGE(0x100400, 0x1007ff) AM_RAM_WRITE_LEGACY(galaxi_bg2_w) AM_BASE(m_bg2_ram) - AM_RANGE(0x100800, 0x100bff) AM_RAM_WRITE_LEGACY(galaxi_bg3_w) AM_BASE(m_bg3_ram) - AM_RANGE(0x100c00, 0x100fff) AM_RAM_WRITE_LEGACY(galaxi_bg4_w) AM_BASE(m_bg4_ram) + AM_RANGE(0x100000, 0x1003ff) AM_RAM_WRITE(galaxi_bg1_w) AM_BASE(m_bg1_ram) + AM_RANGE(0x100400, 0x1007ff) AM_RAM_WRITE(galaxi_bg2_w) AM_BASE(m_bg2_ram) + AM_RANGE(0x100800, 0x100bff) AM_RAM_WRITE(galaxi_bg3_w) AM_BASE(m_bg3_ram) + AM_RANGE(0x100c00, 0x100fff) AM_RAM_WRITE(galaxi_bg4_w) AM_BASE(m_bg4_ram) - AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE_LEGACY(galaxi_fg_w ) AM_BASE(m_fg_ram) + AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(galaxi_fg_w ) AM_BASE(m_fg_ram) AM_RANGE(0x102000, 0x1047ff) AM_READNOP // unknown AM_RANGE(0x300000, 0x3007ff) AM_RAM_WRITE_LEGACY(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x500000, 0x500001) AM_READ_PORT("INPUTS") - AM_RANGE(0x500000, 0x500001) AM_WRITE_LEGACY(galaxi_500000_w) - AM_RANGE(0x500002, 0x500003) AM_WRITE_LEGACY(galaxi_500002_w) - AM_RANGE(0x500004, 0x500005) AM_WRITE_LEGACY(galaxi_500004_w) + AM_RANGE(0x500000, 0x500001) AM_WRITE(galaxi_500000_w) + AM_RANGE(0x500002, 0x500003) AM_WRITE(galaxi_500002_w) + AM_RANGE(0x500004, 0x500005) AM_WRITE(galaxi_500004_w) AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) diff --git a/src/mame/drivers/galgame.c b/src/mame/drivers/galgame.c index 791eef2193c..2ffa906da3e 100644 --- a/src/mame/drivers/galgame.c +++ b/src/mame/drivers/galgame.c @@ -37,6 +37,13 @@ public: int m_point_work_list_index; int m_point_display_list_index; int m_interrupt; + DECLARE_READ16_MEMBER(ke_r); + DECLARE_WRITE16_MEMBER(ke_w); + DECLARE_READ16_MEMBER(x_r); + DECLARE_WRITE16_MEMBER(x_w); + DECLARE_READ16_MEMBER(y_r); + DECLARE_WRITE16_MEMBER(y_w); + DECLARE_WRITE16_MEMBER(clk_w); }; /************************************* @@ -45,9 +52,8 @@ public: * *************************************/ -static READ16_HANDLER(ke_r) +READ16_MEMBER(galaxygame_state::ke_r) { - galaxygame_state *state = space->machine().driver_data<galaxygame_state>(); UINT16 ret; @@ -57,10 +63,10 @@ static READ16_HANDLER(ke_r) ret = 0; break; case 1: // AC - ret = state->m_ac; + ret = m_ac; break; case 2: // MQ - ret = state->m_mq; + ret = m_mq; break; case 7: // ASH ret = 0; @@ -73,9 +79,8 @@ static READ16_HANDLER(ke_r) return ret; } -static WRITE16_HANDLER(ke_w) +WRITE16_MEMBER(galaxygame_state::ke_w) { - galaxygame_state *state = space->machine().driver_data<galaxygame_state>(); switch( offset ) { @@ -83,42 +88,42 @@ static WRITE16_HANDLER(ke_w) { if ( data != 0 ) { - INT32 dividend = (INT32)((UINT32)((UINT16)state->m_ac << 16) | (UINT16)(state->m_mq)); - state->m_mq = dividend / (INT16)data; - state->m_ac = dividend % (INT16)data; + INT32 dividend = (INT32)((UINT32)((UINT16)m_ac << 16) | (UINT16)(m_mq)); + m_mq = dividend / (INT16)data; + m_ac = dividend % (INT16)data; } else { - state->m_mq = 0; - state->m_ac = 0; + m_mq = 0; + m_ac = 0; } } break; case 1: // AC - state->m_ac = (INT16)data; + m_ac = (INT16)data; break; case 2: // MQ - state->m_mq = (INT16)data; - if (state->m_mq < 0) + m_mq = (INT16)data; + if (m_mq < 0) { - state->m_ac = -1; + m_ac = -1; } else { - state->m_ac = 0; + m_ac = 0; } break; case 3: // X { - INT32 mulres = (INT32)state->m_mq*(INT32)(INT16)data; - state->m_ac = mulres >> 16; - state->m_mq = mulres & 0xffff; + INT32 mulres = (INT32)m_mq*(INT32)(INT16)data; + m_ac = mulres >> 16; + m_mq = mulres & 0xffff; } break; case 6: // LSH { data &= 63; - INT32 val = (INT32)((UINT32)((UINT16)state->m_ac << 16) | (UINT16)(state->m_mq)); + INT32 val = (INT32)((UINT32)((UINT16)m_ac << 16) | (UINT16)(m_mq)); if ( data < 32 ) { val = val << data; @@ -127,14 +132,14 @@ static WRITE16_HANDLER(ke_w) { val = val >> (64 - data); } - state->m_mq = val & 0xffff; - state->m_ac = (val >> 16) & 0xffff; + m_mq = val & 0xffff; + m_ac = (val >> 16) & 0xffff; } break; case 7: // ASH { data &= 63; - INT32 val = (INT32)((UINT32)((UINT16)state->m_ac << 16) | (UINT16)(state->m_mq)); + INT32 val = (INT32)((UINT32)((UINT16)m_ac << 16) | (UINT16)(m_mq)); if ( data < 32 ) { val = val << data; @@ -143,8 +148,8 @@ static WRITE16_HANDLER(ke_w) { val = val >> (64 - data); } - state->m_mq = val & 0xffff; - state->m_ac = (val >> 16) & 0xffff; + m_mq = val & 0xffff; + m_ac = (val >> 16) & 0xffff; } break; default: @@ -171,55 +176,51 @@ static SCREEN_UPDATE_IND16( galaxygame ) return 0; } -static READ16_HANDLER(x_r) +READ16_MEMBER(galaxygame_state::x_r) { - galaxygame_state *state = space->machine().driver_data<galaxygame_state>(); - return state->m_x; + return m_x; } -static WRITE16_HANDLER(x_w) +WRITE16_MEMBER(galaxygame_state::x_w) { - galaxygame_state *state = space->machine().driver_data<galaxygame_state>(); - state->m_x = data; + m_x = data; } -static READ16_HANDLER(y_r) +READ16_MEMBER(galaxygame_state::y_r) { - galaxygame_state *state = space->machine().driver_data<galaxygame_state>(); - return state->m_y; + return m_y; } -static WRITE16_HANDLER(y_w) +WRITE16_MEMBER(galaxygame_state::y_w) { - galaxygame_state *state = space->machine().driver_data<galaxygame_state>(); - state->m_y = data; + m_y = data; if ( data == 0x0101 ) { // send points list to display device // seems to happen on first 0x0101 write after interrupt - if ( state->m_interrupt ) + if ( m_interrupt ) { - for ( int i = 0; i < state->m_point_work_list_index ; i++ ) + for ( int i = 0; i < m_point_work_list_index ; i++ ) { - state->m_point_display_list[i].x = state->m_point_work_list[i].x; - state->m_point_display_list[i].y = state->m_point_work_list[i].y; + m_point_display_list[i].x = m_point_work_list[i].x; + m_point_display_list[i].y = m_point_work_list[i].y; } - state->m_point_display_list_index = state->m_point_work_list_index; - state->m_point_work_list_index = 0; - state->m_interrupt = 0; + m_point_display_list_index = m_point_work_list_index; + m_point_work_list_index = 0; + m_interrupt = 0; } } else { - if ( state->m_point_work_list_index >= MAX_POINTS ) + if ( m_point_work_list_index >= MAX_POINTS ) { logerror("Work list overflow\n"); } else { - state->m_point_work_list[state->m_point_work_list_index].x = state->m_x; - state->m_point_work_list[state->m_point_work_list_index].y = state->m_y; - state->m_point_work_list_index++; + m_point_work_list[m_point_work_list_index].x = m_x; + m_point_work_list[m_point_work_list_index].y = m_y; + m_point_work_list_index++; } } } @@ -269,20 +270,19 @@ INPUT_PORTS_END * *************************************/ -static WRITE16_HANDLER(clk_w) +WRITE16_MEMBER(galaxygame_state::clk_w) { - galaxygame_state *state = space->machine().driver_data<galaxygame_state>(); - state->m_clk = data; + m_clk = data; } static ADDRESS_MAP_START( galaxygame_map, AS_PROGRAM, 16, galaxygame_state ) AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0xfec0, 0xfecf) AM_READWRITE_LEGACY(ke_r, ke_w) - AM_RANGE(0xff52, 0xff53) AM_READWRITE_LEGACY(y_r, y_w) // 177522 Y + AM_RANGE(0xfec0, 0xfecf) AM_READWRITE(ke_r, ke_w) + AM_RANGE(0xff52, 0xff53) AM_READWRITE(y_r, y_w) // 177522 Y AM_RANGE(0xff54, 0xff55) AM_READ_PORT("COINAC") // 177524 COINAC - AM_RANGE(0xff5a, 0xff5b) AM_READWRITE_LEGACY(x_r, x_w) // 177532 X + AM_RANGE(0xff5a, 0xff5b) AM_READWRITE(x_r, x_w) // 177532 X AM_RANGE(0xff5c, 0xff5d) AM_READ_PORT("SR") // 177534 SR - AM_RANGE(0xff66, 0xff67) AM_WRITE_LEGACY(clk_w) // 177546 KW11 line frequency clock + AM_RANGE(0xff66, 0xff67) AM_WRITE(clk_w) // 177546 KW11 line frequency clock ADDRESS_MAP_END diff --git a/src/mame/drivers/gei.c b/src/mame/drivers/gei.c index 88cce41e1dc..3da999280e3 100644 --- a/src/mame/drivers/gei.c +++ b/src/mame/drivers/gei.c @@ -92,37 +92,63 @@ public: int m_signature_answer; int m_signature_pos; UINT8 m_nmi_mask; + DECLARE_WRITE8_MEMBER(gei_drawctrl_w); + DECLARE_WRITE8_MEMBER(gei_bitmap_w); + DECLARE_READ8_MEMBER(catchall); + DECLARE_WRITE8_MEMBER(banksel_main_w); + DECLARE_WRITE8_MEMBER(banksel_1_w); + DECLARE_WRITE8_MEMBER(banksel_2_w); + DECLARE_WRITE8_MEMBER(banksel_3_w); + DECLARE_WRITE8_MEMBER(banksel_4_w); + DECLARE_WRITE8_MEMBER(banksel_5_w); + DECLARE_WRITE8_MEMBER(banksel_1_1_w); + DECLARE_WRITE8_MEMBER(banksel_2_1_w); + DECLARE_WRITE8_MEMBER(banksel_3_1_w); + DECLARE_WRITE8_MEMBER(banksel_4_1_w); + DECLARE_WRITE8_MEMBER(banksel_5_1_w); + DECLARE_WRITE8_MEMBER(banksel_1_2_w); + DECLARE_WRITE8_MEMBER(banksel_2_2_w); + DECLARE_WRITE8_MEMBER(banksel_3_2_w); + DECLARE_WRITE8_MEMBER(banksel_4_2_w); + DECLARE_WRITE8_MEMBER(banksel_5_2_w); + DECLARE_WRITE8_MEMBER(geimulti_bank_w); + DECLARE_READ8_MEMBER(banksel_1_r); + DECLARE_READ8_MEMBER(banksel_2_r); + DECLARE_READ8_MEMBER(banksel_3_r); + DECLARE_READ8_MEMBER(banksel_4_r); + DECLARE_READ8_MEMBER(banksel_5_r); + DECLARE_READ8_MEMBER(signature_r); + DECLARE_WRITE8_MEMBER(signature_w); + DECLARE_WRITE8_MEMBER(signature2_w); }; -static WRITE8_HANDLER( gei_drawctrl_w ) +WRITE8_MEMBER(gei_state::gei_drawctrl_w) { - gei_state *state = space->machine().driver_data<gei_state>(); - state->m_drawctrl[offset] = data; + m_drawctrl[offset] = data; if (offset == 2) { int i; for (i = 0; i < 8; i++) - if (BIT(state->m_drawctrl[1],i)) state->m_color[i] = state->m_drawctrl[0] & 7; + if (BIT(m_drawctrl[1],i)) m_color[i] = m_drawctrl[0] & 7; } } -static WRITE8_HANDLER( gei_bitmap_w ) +WRITE8_MEMBER(gei_state::gei_bitmap_w) { - gei_state *state = space->machine().driver_data<gei_state>(); int sx,sy; int i; - state->m_yadd = (offset==state->m_prevoffset) ? (state->m_yadd+1):0; - state->m_prevoffset = offset; + m_yadd = (offset==m_prevoffset) ? (m_yadd+1):0; + m_prevoffset = offset; sx = 8 * (offset % 64); sy = offset / 64; - sy = (sy + state->m_yadd) & 0xff; + sy = (sy + m_yadd) & 0xff; for (i = 0; i < 8; i++) - state->m_bitmap.pix16(sy, sx+i) = state->m_color[8-i-1]; + m_bitmap.pix16(sy, sx+i) = m_color[8-i-1]; } static PALETTE_INIT(gei) @@ -226,9 +252,9 @@ static WRITE8_DEVICE_HANDLER( nmi_w ) state->m_nmi_mask = data & 0x40; } -static READ8_HANDLER( catchall ) +READ8_MEMBER(gei_state::catchall) { - int pc = cpu_get_pc(&space->device()); + int pc = cpu_get_pc(&space.device()); if (pc != 0x3c74 && pc != 0x0364 && pc != 0x036d) /* weed out spurious blit reads */ logerror("%04x: unmapped memory read from %04x\n",pc,offset); @@ -241,73 +267,73 @@ static READ8_DEVICE_HANDLER( portC_r ) return 4; } -static WRITE8_HANDLER( banksel_main_w ) +WRITE8_MEMBER(gei_state::banksel_main_w) { - memory_set_bankptr(space->machine(), "bank1",space->machine().region("maincpu")->base() + 0x8000); + memory_set_bankptr(machine(), "bank1",machine().region("maincpu")->base() + 0x8000); } -static WRITE8_HANDLER( banksel_1_w ) +WRITE8_MEMBER(gei_state::banksel_1_w) { - memory_set_bankptr(space->machine(), "bank1",space->machine().region("maincpu")->base() + 0x10000); + memory_set_bankptr(machine(), "bank1",machine().region("maincpu")->base() + 0x10000); } -static WRITE8_HANDLER( banksel_2_w ) +WRITE8_MEMBER(gei_state::banksel_2_w) { - memory_set_bankptr(space->machine(), "bank1",space->machine().region("maincpu")->base() + 0x18000); + memory_set_bankptr(machine(), "bank1",machine().region("maincpu")->base() + 0x18000); } -static WRITE8_HANDLER( banksel_3_w ) +WRITE8_MEMBER(gei_state::banksel_3_w) { - memory_set_bankptr(space->machine(), "bank1",space->machine().region("maincpu")->base() + 0x20000); + memory_set_bankptr(machine(), "bank1",machine().region("maincpu")->base() + 0x20000); } -static WRITE8_HANDLER( banksel_4_w ) +WRITE8_MEMBER(gei_state::banksel_4_w) { - memory_set_bankptr(space->machine(), "bank1",space->machine().region("maincpu")->base() + 0x28000); + memory_set_bankptr(machine(), "bank1",machine().region("maincpu")->base() + 0x28000); } -static WRITE8_HANDLER( banksel_5_w ) +WRITE8_MEMBER(gei_state::banksel_5_w) { - memory_set_bankptr(space->machine(), "bank1",space->machine().region("maincpu")->base() + 0x30000); + memory_set_bankptr(machine(), "bank1",machine().region("maincpu")->base() + 0x30000); } -static WRITE8_HANDLER( banksel_1_1_w ) +WRITE8_MEMBER(gei_state::banksel_1_1_w) { - memory_set_bankptr(space->machine(), "bank1",space->machine().region("maincpu")->base() + 0x10000); + memory_set_bankptr(machine(), "bank1",machine().region("maincpu")->base() + 0x10000); } -static WRITE8_HANDLER( banksel_2_1_w ) +WRITE8_MEMBER(gei_state::banksel_2_1_w) { - memory_set_bankptr(space->machine(), "bank1",space->machine().region("maincpu")->base() + 0x14000); + memory_set_bankptr(machine(), "bank1",machine().region("maincpu")->base() + 0x14000); } -static WRITE8_HANDLER( banksel_3_1_w ) +WRITE8_MEMBER(gei_state::banksel_3_1_w) { - memory_set_bankptr(space->machine(), "bank1",space->machine().region("maincpu")->base() + 0x18000); + memory_set_bankptr(machine(), "bank1",machine().region("maincpu")->base() + 0x18000); } -static WRITE8_HANDLER( banksel_4_1_w ) +WRITE8_MEMBER(gei_state::banksel_4_1_w) { - memory_set_bankptr(space->machine(), "bank1",space->machine().region("maincpu")->base() + 0x1c000); + memory_set_bankptr(machine(), "bank1",machine().region("maincpu")->base() + 0x1c000); } -static WRITE8_HANDLER( banksel_5_1_w ) +WRITE8_MEMBER(gei_state::banksel_5_1_w) { - memory_set_bankptr(space->machine(), "bank1",space->machine().region("maincpu")->base() + 0x20000); + memory_set_bankptr(machine(), "bank1",machine().region("maincpu")->base() + 0x20000); } -static WRITE8_HANDLER( banksel_1_2_w ) +WRITE8_MEMBER(gei_state::banksel_1_2_w) { - memory_set_bankptr(space->machine(), "bank1",space->machine().region("maincpu")->base() + 0x12000); + memory_set_bankptr(machine(), "bank1",machine().region("maincpu")->base() + 0x12000); } -static WRITE8_HANDLER( banksel_2_2_w ) +WRITE8_MEMBER(gei_state::banksel_2_2_w) { - memory_set_bankptr(space->machine(), "bank1",space->machine().region("maincpu")->base() + 0x16000); + memory_set_bankptr(machine(), "bank1",machine().region("maincpu")->base() + 0x16000); } -static WRITE8_HANDLER( banksel_3_2_w ) +WRITE8_MEMBER(gei_state::banksel_3_2_w) { - memory_set_bankptr(space->machine(), "bank1",space->machine().region("maincpu")->base() + 0x1a000); + memory_set_bankptr(machine(), "bank1",machine().region("maincpu")->base() + 0x1a000); } -static WRITE8_HANDLER( banksel_4_2_w ) +WRITE8_MEMBER(gei_state::banksel_4_2_w) { - memory_set_bankptr(space->machine(), "bank1",space->machine().region("maincpu")->base() + 0x1e000); + memory_set_bankptr(machine(), "bank1",machine().region("maincpu")->base() + 0x1e000); } -static WRITE8_HANDLER( banksel_5_2_w ) +WRITE8_MEMBER(gei_state::banksel_5_2_w) { - memory_set_bankptr(space->machine(), "bank1",space->machine().region("maincpu")->base() + 0x22000); + memory_set_bankptr(machine(), "bank1",machine().region("maincpu")->base() + 0x22000); } -static WRITE8_HANDLER(geimulti_bank_w) +WRITE8_MEMBER(gei_state::geimulti_bank_w) { int bank = -1; @@ -332,72 +358,69 @@ static WRITE8_HANDLER(geimulti_bank_w) } if (bank != -1) - memory_set_bankptr(space->machine(), "bank1", space->machine().region("bank")->base() + bank*0x8000); + memory_set_bankptr(machine(), "bank1", machine().region("bank")->base() + bank*0x8000); } -static READ8_HANDLER(banksel_1_r) +READ8_MEMBER(gei_state::banksel_1_r) { - memory_set_bankptr(space->machine(), "bank1",space->machine().region("maincpu")->base() + 0x10000); + memory_set_bankptr(machine(), "bank1",machine().region("maincpu")->base() + 0x10000); return 0x03; }; -static READ8_HANDLER(banksel_2_r) +READ8_MEMBER(gei_state::banksel_2_r) { - memory_set_bankptr(space->machine(), "bank1",space->machine().region("maincpu")->base() + 0x18000); + memory_set_bankptr(machine(), "bank1",machine().region("maincpu")->base() + 0x18000); return 0x03; } -static READ8_HANDLER(banksel_3_r) +READ8_MEMBER(gei_state::banksel_3_r) { - memory_set_bankptr(space->machine(), "bank1",space->machine().region("maincpu")->base() + 0x20000); + memory_set_bankptr(machine(), "bank1",machine().region("maincpu")->base() + 0x20000); return 0x03; } -static READ8_HANDLER(banksel_4_r) +READ8_MEMBER(gei_state::banksel_4_r) { - memory_set_bankptr(space->machine(), "bank1",space->machine().region("maincpu")->base() + 0x28000); + memory_set_bankptr(machine(), "bank1",machine().region("maincpu")->base() + 0x28000); return 0x03; } -static READ8_HANDLER(banksel_5_r) +READ8_MEMBER(gei_state::banksel_5_r) { - memory_set_bankptr(space->machine(), "bank1",space->machine().region("maincpu")->base() + 0x30000); + memory_set_bankptr(machine(), "bank1",machine().region("maincpu")->base() + 0x30000); return 0x03; } /* This signature is used to validate the ROMs in sportauth. Simple protection check? */ -static READ8_HANDLER( signature_r ) +READ8_MEMBER(gei_state::signature_r) { - gei_state *state = space->machine().driver_data<gei_state>(); - return state->m_signature_answer; + return m_signature_answer; } -static WRITE8_HANDLER( signature_w ) +WRITE8_MEMBER(gei_state::signature_w) { - gei_state *state = space->machine().driver_data<gei_state>(); - if (data == 0) state->m_signature_pos = 0; + if (data == 0) m_signature_pos = 0; else { static const UINT8 signature[8] = { 0xff, 0x01, 0xfd, 0x05, 0xf5, 0x15, 0xd5, 0x55 }; - state->m_signature_answer = signature[state->m_signature_pos++]; + m_signature_answer = signature[m_signature_pos++]; - state->m_signature_pos &= 7; /* safety; shouldn't happen */ + m_signature_pos &= 7; /* safety; shouldn't happen */ } } -static WRITE8_HANDLER( signature2_w ) +WRITE8_MEMBER(gei_state::signature2_w) { - gei_state *state = space->machine().driver_data<gei_state>(); - if (data == 0) state->m_signature_pos = 0; + if (data == 0) m_signature_pos = 0; else { static const UINT8 signature[8] = { 0xff, 0x01, 0xf7, 0x11, 0xd7, 0x51, 0x57, 0x51 }; - state->m_signature_answer = signature[state->m_signature_pos++]; + m_signature_answer = signature[m_signature_pos++]; - state->m_signature_pos &= 7; /* safety; shouldn't happen */ + m_signature_pos &= 7; /* safety; shouldn't happen */ } } @@ -407,34 +430,34 @@ static ADDRESS_MAP_START( getrivia_map, AS_PROGRAM, 8, gei_state ) AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram") AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w) AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w) - AM_RANGE(0x600f, 0x600f) AM_WRITE_LEGACY(banksel_5_1_w) - AM_RANGE(0x6017, 0x6017) AM_WRITE_LEGACY(banksel_4_1_w) - AM_RANGE(0x601b, 0x601b) AM_WRITE_LEGACY(banksel_3_1_w) - AM_RANGE(0x601d, 0x601d) AM_WRITE_LEGACY(banksel_2_1_w) - AM_RANGE(0x601e, 0x601e) AM_WRITE_LEGACY(banksel_1_1_w) - AM_RANGE(0x608f, 0x608f) AM_WRITE_LEGACY(banksel_5_2_w) - AM_RANGE(0x6097, 0x6097) AM_WRITE_LEGACY(banksel_4_2_w) - AM_RANGE(0x609b, 0x609b) AM_WRITE_LEGACY(banksel_3_2_w) - AM_RANGE(0x609d, 0x609d) AM_WRITE_LEGACY(banksel_2_2_w) - AM_RANGE(0x609e, 0x609e) AM_WRITE_LEGACY(banksel_1_2_w) - AM_RANGE(0x8000, 0x8002) AM_WRITE_LEGACY(gei_drawctrl_w) + AM_RANGE(0x600f, 0x600f) AM_WRITE(banksel_5_1_w) + AM_RANGE(0x6017, 0x6017) AM_WRITE(banksel_4_1_w) + AM_RANGE(0x601b, 0x601b) AM_WRITE(banksel_3_1_w) + AM_RANGE(0x601d, 0x601d) AM_WRITE(banksel_2_1_w) + AM_RANGE(0x601e, 0x601e) AM_WRITE(banksel_1_1_w) + AM_RANGE(0x608f, 0x608f) AM_WRITE(banksel_5_2_w) + AM_RANGE(0x6097, 0x6097) AM_WRITE(banksel_4_2_w) + AM_RANGE(0x609b, 0x609b) AM_WRITE(banksel_3_2_w) + AM_RANGE(0x609d, 0x609d) AM_WRITE(banksel_2_2_w) + AM_RANGE(0x609e, 0x609e) AM_WRITE(banksel_1_2_w) + AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w) AM_RANGE(0x8000, 0x9fff) AM_ROM /* space for diagnostic ROM? */ AM_RANGE(0xa000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE_LEGACY(gei_bitmap_w) + AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE(gei_bitmap_w) ADDRESS_MAP_END static ADDRESS_MAP_START( gselect_map, AS_PROGRAM, 8, gei_state ) AM_RANGE(0x0000, 0x1fff) AM_ROM AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1") AM_RANGE(0x4000, 0x40ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x4400, 0x4400) AM_WRITE_LEGACY(banksel_1_1_w) - AM_RANGE(0x4401, 0x4401) AM_WRITE_LEGACY(banksel_1_2_w) - AM_RANGE(0x4402, 0x4402) AM_WRITE_LEGACY(banksel_2_1_w) - AM_RANGE(0x4403, 0x4403) AM_WRITE_LEGACY(banksel_2_2_w) + AM_RANGE(0x4400, 0x4400) AM_WRITE(banksel_1_1_w) + AM_RANGE(0x4401, 0x4401) AM_WRITE(banksel_1_2_w) + AM_RANGE(0x4402, 0x4402) AM_WRITE(banksel_2_1_w) + AM_RANGE(0x4403, 0x4403) AM_WRITE(banksel_2_2_w) AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w) AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w) - AM_RANGE(0x8000, 0x8002) AM_WRITE_LEGACY(gei_drawctrl_w) - AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE_LEGACY(gei_bitmap_w) + AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w) + AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE(gei_bitmap_w) ADDRESS_MAP_END // TODO: where are mapped the lower 0x2000 bytes of the banks? @@ -444,14 +467,14 @@ static ADDRESS_MAP_START( amuse_map, AS_PROGRAM, 8, gei_state ) AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram") AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w) AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w) - AM_RANGE(0x606f, 0x606f) AM_WRITE_LEGACY(banksel_5_1_w) - AM_RANGE(0x6077, 0x6077) AM_WRITE_LEGACY(banksel_4_1_w) - AM_RANGE(0x607b, 0x607b) AM_WRITE_LEGACY(banksel_3_1_w) - AM_RANGE(0x607d, 0x607d) AM_WRITE_LEGACY(banksel_2_1_w) - AM_RANGE(0x607e, 0x607e) AM_WRITE_LEGACY(banksel_1_1_w) - AM_RANGE(0x8000, 0x8002) AM_WRITE_LEGACY(gei_drawctrl_w) + AM_RANGE(0x606f, 0x606f) AM_WRITE(banksel_5_1_w) + AM_RANGE(0x6077, 0x6077) AM_WRITE(banksel_4_1_w) + AM_RANGE(0x607b, 0x607b) AM_WRITE(banksel_3_1_w) + AM_RANGE(0x607d, 0x607d) AM_WRITE(banksel_2_1_w) + AM_RANGE(0x607e, 0x607e) AM_WRITE(banksel_1_1_w) + AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w) AM_RANGE(0x8000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE_LEGACY(gei_bitmap_w) + AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE(gei_bitmap_w) ADDRESS_MAP_END static ADDRESS_MAP_START( gepoker_map, AS_PROGRAM, 8, gei_state ) @@ -460,32 +483,32 @@ static ADDRESS_MAP_START( gepoker_map, AS_PROGRAM, 8, gei_state ) AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram") AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w) AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w) - AM_RANGE(0x60ef, 0x60ef) AM_WRITE_LEGACY(banksel_3_1_w) - AM_RANGE(0x60f7, 0x60f7) AM_WRITE_LEGACY(banksel_2_2_w) - AM_RANGE(0x60fb, 0x60fb) AM_WRITE_LEGACY(banksel_2_1_w) - AM_RANGE(0x60fd, 0x60fd) AM_WRITE_LEGACY(banksel_1_2_w) - AM_RANGE(0x60fe, 0x60fe) AM_WRITE_LEGACY(banksel_1_1_w) - AM_RANGE(0x8000, 0x8002) AM_WRITE_LEGACY(gei_drawctrl_w) + AM_RANGE(0x60ef, 0x60ef) AM_WRITE(banksel_3_1_w) + AM_RANGE(0x60f7, 0x60f7) AM_WRITE(banksel_2_2_w) + AM_RANGE(0x60fb, 0x60fb) AM_WRITE(banksel_2_1_w) + AM_RANGE(0x60fd, 0x60fd) AM_WRITE(banksel_1_2_w) + AM_RANGE(0x60fe, 0x60fe) AM_WRITE(banksel_1_1_w) + AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w) AM_RANGE(0x8000, 0xbfff) AM_ROM /* space for diagnostic ROM? */ AM_RANGE(0xe000, 0xffff) AM_ROM - AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE_LEGACY(gei_bitmap_w) + AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE(gei_bitmap_w) ADDRESS_MAP_END static ADDRESS_MAP_START( amuse1_map, AS_PROGRAM, 8, gei_state ) AM_RANGE(0x0000, 0x1fff) AM_ROM AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1") AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x4400, 0x4400) AM_WRITE_LEGACY(banksel_1_1_w) - AM_RANGE(0x4401, 0x4401) AM_WRITE_LEGACY(banksel_2_1_w) - AM_RANGE(0x4402, 0x4402) AM_WRITE_LEGACY(banksel_3_1_w) - AM_RANGE(0x4403, 0x4403) AM_WRITE_LEGACY(banksel_4_1_w) + AM_RANGE(0x4400, 0x4400) AM_WRITE(banksel_1_1_w) + AM_RANGE(0x4401, 0x4401) AM_WRITE(banksel_2_1_w) + AM_RANGE(0x4402, 0x4402) AM_WRITE(banksel_3_1_w) + AM_RANGE(0x4403, 0x4403) AM_WRITE(banksel_4_1_w) AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w) AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w) AM_RANGE(0x5800, 0x5fff) AM_ROM - AM_RANGE(0x8000, 0x8002) AM_WRITE_LEGACY(gei_drawctrl_w) + AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w) AM_RANGE(0x8000, 0xbfff) AM_ROM /* space for diagnostic ROM? */ AM_RANGE(0xe000, 0xffff) AM_ROM - AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE_LEGACY(gei_bitmap_w) + AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE(gei_bitmap_w) ADDRESS_MAP_END static ADDRESS_MAP_START( findout_map, AS_PROGRAM, 8, gei_state ) @@ -494,19 +517,19 @@ static ADDRESS_MAP_START( findout_map, AS_PROGRAM, 8, gei_state ) AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r,ppi8255_w) AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r,ppi8255_w) /* banked ROMs are enabled by low 6 bits of the address */ - AM_RANGE(0x601f, 0x601f) AM_WRITE_LEGACY(banksel_main_w) - AM_RANGE(0x602f, 0x602f) AM_WRITE_LEGACY(banksel_5_w) - AM_RANGE(0x6037, 0x6037) AM_WRITE_LEGACY(banksel_4_w) - AM_RANGE(0x603b, 0x603b) AM_WRITE_LEGACY(banksel_3_w) - AM_RANGE(0x603d, 0x603d) AM_WRITE_LEGACY(banksel_2_w) - AM_RANGE(0x603e, 0x603e) AM_WRITE_LEGACY(banksel_1_w) - AM_RANGE(0x6200, 0x6200) AM_WRITE_LEGACY(signature_w) - AM_RANGE(0x6400, 0x6400) AM_READ_LEGACY(signature_r) + AM_RANGE(0x601f, 0x601f) AM_WRITE(banksel_main_w) + AM_RANGE(0x602f, 0x602f) AM_WRITE(banksel_5_w) + AM_RANGE(0x6037, 0x6037) AM_WRITE(banksel_4_w) + AM_RANGE(0x603b, 0x603b) AM_WRITE(banksel_3_w) + AM_RANGE(0x603d, 0x603d) AM_WRITE(banksel_2_w) + AM_RANGE(0x603e, 0x603e) AM_WRITE(banksel_1_w) + AM_RANGE(0x6200, 0x6200) AM_WRITE(signature_w) + AM_RANGE(0x6400, 0x6400) AM_READ(signature_r) AM_RANGE(0x7800, 0x7fff) AM_ROM /*space for diagnostic ROM?*/ AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0x8002) AM_WRITE_LEGACY(gei_drawctrl_w) - AM_RANGE(0xc000, 0xffff) AM_WRITE_LEGACY(gei_bitmap_w) - AM_RANGE(0x0000, 0xffff) AM_READ_LEGACY(catchall) + AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w) + AM_RANGE(0xc000, 0xffff) AM_WRITE(gei_bitmap_w) + AM_RANGE(0x0000, 0xffff) AM_READ(catchall) ADDRESS_MAP_END static ADDRESS_MAP_START( quizvid_map, AS_PROGRAM, 8, gei_state ) @@ -515,16 +538,16 @@ static ADDRESS_MAP_START( quizvid_map, AS_PROGRAM, 8, gei_state ) AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r,ppi8255_w) AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r,ppi8255_w) /* banked ROMs are enabled by low 6 bits of the address */ - AM_RANGE(0x602f, 0x602f) AM_READ_LEGACY(banksel_5_r) - AM_RANGE(0x6037, 0x6037) AM_READ_LEGACY(banksel_4_r) - AM_RANGE(0x603b, 0x603b) AM_READ_LEGACY(banksel_3_r) - AM_RANGE(0x603d, 0x603d) AM_READ_LEGACY(banksel_2_r) - AM_RANGE(0x603e, 0x603e) AM_READ_LEGACY(banksel_1_r) + AM_RANGE(0x602f, 0x602f) AM_READ(banksel_5_r) + AM_RANGE(0x6037, 0x6037) AM_READ(banksel_4_r) + AM_RANGE(0x603b, 0x603b) AM_READ(banksel_3_r) + AM_RANGE(0x603d, 0x603d) AM_READ(banksel_2_r) + AM_RANGE(0x603e, 0x603e) AM_READ(banksel_1_r) AM_RANGE(0x7800, 0x7fff) AM_ROM /*space for diagnostic ROM?*/ AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0x8002) AM_WRITE_LEGACY(gei_drawctrl_w) - AM_RANGE(0xc000, 0xffff) AM_WRITE_LEGACY(gei_bitmap_w) - AM_RANGE(0x0000, 0xffff) AM_READ_LEGACY(catchall) + AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w) + AM_RANGE(0xc000, 0xffff) AM_WRITE(gei_bitmap_w) + AM_RANGE(0x0000, 0xffff) AM_READ(catchall) ADDRESS_MAP_END static ADDRESS_MAP_START( suprpokr_map, AS_PROGRAM, 8, gei_state ) @@ -532,10 +555,10 @@ static ADDRESS_MAP_START( suprpokr_map, AS_PROGRAM, 8, gei_state ) AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram") AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w) AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w) - AM_RANGE(0x6200, 0x6200) AM_WRITE_LEGACY(signature2_w) - AM_RANGE(0x6400, 0x6400) AM_READ_LEGACY(signature_r) - AM_RANGE(0x8000, 0x8002) AM_WRITE_LEGACY(gei_drawctrl_w) - AM_RANGE(0xc000, 0xffff) AM_WRITE_LEGACY(gei_bitmap_w) + AM_RANGE(0x6200, 0x6200) AM_WRITE(signature2_w) + AM_RANGE(0x6400, 0x6400) AM_READ(signature_r) + AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w) + AM_RANGE(0xc000, 0xffff) AM_WRITE(gei_bitmap_w) AM_RANGE(0x8000, 0xffff) AM_ROM ADDRESS_MAP_END @@ -545,11 +568,11 @@ static ADDRESS_MAP_START( geimulti_map, AS_PROGRAM, 8, gei_state ) AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w) AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w) AM_RANGE(0x5800, 0x5fff) AM_ROM - AM_RANGE(0x5a00, 0x5cff) AM_WRITE_LEGACY(geimulti_bank_w) + AM_RANGE(0x5a00, 0x5cff) AM_WRITE(geimulti_bank_w) AM_RANGE(0x6000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8002) AM_WRITE_LEGACY(gei_drawctrl_w) + AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w) AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE_LEGACY(gei_bitmap_w) + AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE(gei_bitmap_w) ADDRESS_MAP_END static ADDRESS_MAP_START( sprtauth_map, AS_PROGRAM, 8, gei_state ) @@ -557,13 +580,13 @@ static ADDRESS_MAP_START( sprtauth_map, AS_PROGRAM, 8, gei_state ) AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram") AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w) AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w) - AM_RANGE(0x5600, 0x5600) AM_READ_LEGACY(signature_r) - AM_RANGE(0x5800, 0x5800) AM_WRITE_LEGACY(signature_w) - AM_RANGE(0x5a00, 0x5cff) AM_WRITE_LEGACY(geimulti_bank_w) + AM_RANGE(0x5600, 0x5600) AM_READ(signature_r) + AM_RANGE(0x5800, 0x5800) AM_WRITE(signature_w) + AM_RANGE(0x5a00, 0x5cff) AM_WRITE(geimulti_bank_w) AM_RANGE(0x6000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x8002) AM_WRITE_LEGACY(gei_drawctrl_w) + AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w) AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE_LEGACY(gei_bitmap_w) + AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE(gei_bitmap_w) ADDRESS_MAP_END static INPUT_PORTS_START(reelfun_standard) diff --git a/src/mame/drivers/ggconnie.c b/src/mame/drivers/ggconnie.c index 09ae2e85991..41ebba92cf3 100644 --- a/src/mame/drivers/ggconnie.c +++ b/src/mame/drivers/ggconnie.c @@ -29,6 +29,8 @@ public: ggconnie_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) { } + DECLARE_WRITE8_MEMBER(lamp_w); + DECLARE_WRITE8_MEMBER(output_w); }; @@ -113,12 +115,12 @@ static INPUT_PORTS_START(ggconnie) INPUT_PORTS_END -static WRITE8_HANDLER(lamp_w) +WRITE8_MEMBER(ggconnie_state::lamp_w) { output_set_value("lamp", !BIT(data,0)); } -static WRITE8_HANDLER(output_w) +WRITE8_MEMBER(ggconnie_state::output_w) { // written in "Output Test" in test mode } @@ -132,14 +134,14 @@ static ADDRESS_MAP_START( sgx_mem , AS_PROGRAM, 8, ggconnie_state ) AM_RANGE( 0x1f7100, 0x1f7100) AM_READ_PORT("SWB") AM_RANGE( 0x1f7200, 0x1f7200) AM_READ_PORT("SWC") AM_RANGE( 0x1f7700, 0x1f7700) AM_READ_PORT("IN1") - AM_RANGE( 0x1f7800, 0x1f7800) AM_WRITE_LEGACY(output_w) + AM_RANGE( 0x1f7800, 0x1f7800) AM_WRITE(output_w) AM_RANGE( 0x1fe000, 0x1fe007) AM_READWRITE_LEGACY(vdc_0_r, vdc_0_w) AM_MIRROR(0x03e0) AM_RANGE( 0x1fe008, 0x1fe00f) AM_READWRITE_LEGACY(vpc_r, vpc_w) AM_MIRROR(0x03e0) AM_RANGE( 0x1fe010, 0x1fe017) AM_READWRITE_LEGACY(vdc_1_r, vdc_1_w) AM_MIRROR(0x03e0) AM_RANGE( 0x1fe400, 0x1fe7ff) AM_READWRITE_LEGACY(vce_r, vce_w) AM_RANGE( 0x1fe800, 0x1febff) AM_DEVREADWRITE_LEGACY("c6280", c6280_r, c6280_w) AM_RANGE( 0x1fec00, 0x1fefff) AM_READWRITE_LEGACY(h6280_timer_r, h6280_timer_w) - AM_RANGE( 0x1ff000, 0x1ff000) AM_READ_PORT("IN0") AM_WRITE_LEGACY(lamp_w) + AM_RANGE( 0x1ff000, 0x1ff000) AM_READ_PORT("IN0") AM_WRITE(lamp_w) AM_RANGE( 0x1ff400, 0x1ff7ff) AM_READWRITE_LEGACY(h6280_irq_status_r, h6280_irq_status_w ) ADDRESS_MAP_END diff --git a/src/mame/drivers/go2000.c b/src/mame/drivers/go2000.c index 4c2466561da..5d900951d55 100644 --- a/src/mame/drivers/go2000.c +++ b/src/mame/drivers/go2000.c @@ -47,14 +47,15 @@ public: /* devices */ device_t *m_soundcpu; + DECLARE_WRITE16_MEMBER(sound_cmd_w); + DECLARE_WRITE8_MEMBER(go2000_pcm_1_bankswitch_w); }; -static WRITE16_HANDLER( sound_cmd_w ) +WRITE16_MEMBER(go2000_state::sound_cmd_w) { - go2000_state *state = space->machine().driver_data<go2000_state>(); soundlatch_w(space, offset, data & 0xff); - device_set_input_line(state->m_soundcpu, 0, HOLD_LINE); + device_set_input_line(m_soundcpu, 0, HOLD_LINE); } static ADDRESS_MAP_START( go2000_map, AS_PROGRAM, 16, go2000_state ) @@ -65,15 +66,15 @@ static ADDRESS_MAP_START( go2000_map, AS_PROGRAM, 16, go2000_state ) AM_RANGE(0x800000, 0x800fff) AM_RAM_WRITE_LEGACY(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0xa00000, 0xa00001) AM_READ_PORT("INPUTS") AM_RANGE(0xa00002, 0xa00003) AM_READ_PORT("DSW") - AM_RANGE(0x620002, 0x620003) AM_WRITE_LEGACY(sound_cmd_w) + AM_RANGE(0x620002, 0x620003) AM_WRITE(sound_cmd_w) // AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // AM_RANGE(0xe00010, 0xe00011) AM_WRITENOP // AM_RANGE(0xe00020, 0xe00021) AM_WRITENOP ADDRESS_MAP_END -static WRITE8_HANDLER( go2000_pcm_1_bankswitch_w ) +WRITE8_MEMBER(go2000_state::go2000_pcm_1_bankswitch_w) { - memory_set_bank(space->machine(), "bank1", data & 0x07); + memory_set_bank(machine(), "bank1", data & 0x07); } static ADDRESS_MAP_START( go2000_sound_map, AS_PROGRAM, 8, go2000_state ) @@ -85,7 +86,7 @@ static ADDRESS_MAP_START( go2000_sound_io, AS_IO, 8, go2000_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x00) AM_READ_LEGACY(soundlatch_r) AM_RANGE(0x00, 0x00) AM_DEVWRITE_LEGACY("dac1", dac_w) - AM_RANGE(0x03, 0x03) AM_WRITE_LEGACY(go2000_pcm_1_bankswitch_w) + AM_RANGE(0x03, 0x03) AM_WRITE(go2000_pcm_1_bankswitch_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/goldngam.c b/src/mame/drivers/goldngam.c index 83b5b7117a6..ecee781372e 100644 --- a/src/mame/drivers/goldngam.c +++ b/src/mame/drivers/goldngam.c @@ -244,6 +244,7 @@ public: : driver_device(mconfig, type, tag) { } UINT16 *m_videoram; + DECLARE_READ16_MEMBER(unk_r); }; @@ -289,9 +290,9 @@ static PALETTE_INIT( goldngam ) * Memory Map Information * *************************/ -static READ16_HANDLER(unk_r) +READ16_MEMBER(goldngam_state::unk_r) { - int test1 = (space->machine().rand() & 0xae00); + int test1 = (machine().rand() & 0xae00); // popmessage("VAL = %02x", test1); return test1; @@ -301,7 +302,7 @@ static ADDRESS_MAP_START( swisspkr_map, AS_PROGRAM, 16, goldngam_state ) AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_RANGE(0x400002, 0x400003) AM_NOP // hopper status read ? - AM_RANGE(0x40000c, 0x40000d) AM_READ_LEGACY(unk_r) + AM_RANGE(0x40000c, 0x40000d) AM_READ(unk_r) AM_RANGE(0x40000e, 0x40000f) AM_READ_PORT("DSW2") // not sure... AM_RANGE(0x402000, 0x402001) AM_DEVREAD8_LEGACY("aysnd", ay8910_r, 0x00ff) AM_RANGE(0x402000, 0x402003) AM_DEVWRITE8_LEGACY("aysnd", ay8910_address_data_w, 0x00ff) //wrong diff --git a/src/mame/drivers/goldnpkr.c b/src/mame/drivers/goldnpkr.c index 5829165b6ae..8b8dedd9da5 100644 --- a/src/mame/drivers/goldnpkr.c +++ b/src/mame/drivers/goldnpkr.c @@ -966,6 +966,8 @@ public: tilemap_t *m_bg_tilemap; UINT8 m_mux_data; UINT8 m_pia0_PA_data; + DECLARE_WRITE8_MEMBER(goldnpkr_videoram_w); + DECLARE_WRITE8_MEMBER(goldnpkr_colorram_w); }; @@ -974,18 +976,16 @@ public: *********************************************/ -static WRITE8_HANDLER( goldnpkr_videoram_w ) +WRITE8_MEMBER(goldnpkr_state::goldnpkr_videoram_w) { - goldnpkr_state *state = space->machine().driver_data<goldnpkr_state>(); - state->m_videoram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_videoram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( goldnpkr_colorram_w ) +WRITE8_MEMBER(goldnpkr_state::goldnpkr_colorram_w) { - goldnpkr_state *state = space->machine().driver_data<goldnpkr_state>(); - state->m_colorram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_colorram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } static TILE_GET_INFO( get_bg_tile_info ) @@ -1345,8 +1345,8 @@ static ADDRESS_MAP_START( goldnpkr_map, AS_PROGRAM, 8, goldnpkr_state ) AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_device, read, write) AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE_LEGACY(goldnpkr_videoram_w) AM_BASE(m_videoram) - AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE_LEGACY(goldnpkr_colorram_w) AM_BASE(m_colorram) + AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(goldnpkr_videoram_w) AM_BASE(m_videoram) + AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(goldnpkr_colorram_w) AM_BASE(m_colorram) AM_RANGE(0x2000, 0x7fff) AM_ROM /* superdbl uses 0x2000..0x3fff address space */ ADDRESS_MAP_END @@ -1357,8 +1357,8 @@ static ADDRESS_MAP_START( pottnpkr_map, AS_PROGRAM, 8, goldnpkr_state ) AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_device, read, write) AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE_LEGACY(goldnpkr_videoram_w) AM_BASE(m_videoram) - AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE_LEGACY(goldnpkr_colorram_w) AM_BASE(m_colorram) + AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(goldnpkr_videoram_w) AM_BASE(m_videoram) + AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(goldnpkr_colorram_w) AM_BASE(m_colorram) AM_RANGE(0x2000, 0x3fff) AM_ROM ADDRESS_MAP_END @@ -1369,8 +1369,8 @@ static ADDRESS_MAP_START( witchcrd_map, AS_PROGRAM, 8, goldnpkr_state ) AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_device, read, write) AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE_LEGACY(goldnpkr_videoram_w) AM_BASE(m_videoram) - AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE_LEGACY(goldnpkr_colorram_w) AM_BASE(m_colorram) + AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(goldnpkr_videoram_w) AM_BASE(m_videoram) + AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(goldnpkr_colorram_w) AM_BASE(m_colorram) AM_RANGE(0x2000, 0x2000) AM_READ_PORT("SW2") // AM_RANGE(0x2108, 0x210b) AM_NOP /* unknown 40-pin device */ AM_RANGE(0x2800, 0x2fff) AM_RAM @@ -1394,8 +1394,8 @@ static ADDRESS_MAP_START( witchcrd_falcon_map, AS_PROGRAM, 8, goldnpkr_state ) AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */ AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_device, read, write) AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE_LEGACY(goldnpkr_videoram_w) AM_BASE(m_videoram) - AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE_LEGACY(goldnpkr_colorram_w) AM_BASE(m_colorram) + AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(goldnpkr_videoram_w) AM_BASE(m_videoram) + AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(goldnpkr_colorram_w) AM_BASE(m_colorram) AM_RANGE(0x2000, 0x2000) AM_READ_PORT("SW2") AM_RANGE(0x2100, 0x2100) AM_DEVWRITE("crtc", mc6845_device, address_w) AM_RANGE(0x2101, 0x2101) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) @@ -1409,8 +1409,8 @@ static ADDRESS_MAP_START( wildcard_map, AS_PROGRAM, 8, goldnpkr_state ) AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_device, read, write) AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE_LEGACY(goldnpkr_videoram_w) AM_BASE(m_videoram) - AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE_LEGACY(goldnpkr_colorram_w) AM_BASE(m_colorram) + AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(goldnpkr_videoram_w) AM_BASE(m_videoram) + AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(goldnpkr_colorram_w) AM_BASE(m_colorram) AM_RANGE(0x2000, 0x2000) AM_READ_PORT("SW2") AM_RANGE(0x2200, 0x27ff) AM_ROM /* for VK set */ AM_RANGE(0x2800, 0x2fff) AM_RAM /* for VK set */ @@ -1430,8 +1430,8 @@ static ADDRESS_MAP_START( wcrdxtnd_map, AS_PROGRAM, 8, goldnpkr_state ) AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_device, read, write) AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE_LEGACY(goldnpkr_videoram_w) AM_BASE(m_videoram) - AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE_LEGACY(goldnpkr_colorram_w) AM_BASE(m_colorram) + AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(goldnpkr_videoram_w) AM_BASE(m_videoram) + AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(goldnpkr_colorram_w) AM_BASE(m_colorram) AM_RANGE(0x2000, 0x2000) AM_READ_PORT("SW2") AM_RANGE(0x2200, 0x27ff) AM_ROM /* for VK hardware */ AM_RANGE(0x2800, 0x2fff) AM_RAM AM_SHARE("nvram") /* Dallas ds1210 + battery backed RAM */ @@ -1449,8 +1449,8 @@ static ADDRESS_MAP_START( wildcrdb_map, AS_PROGRAM, 8, goldnpkr_state ) AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */ AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_device, read, write) AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE_LEGACY(goldnpkr_videoram_w) AM_BASE(m_videoram) - AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE_LEGACY(goldnpkr_colorram_w) AM_BASE(m_colorram) + AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(goldnpkr_videoram_w) AM_BASE(m_videoram) + AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(goldnpkr_colorram_w) AM_BASE(m_colorram) AM_RANGE(0x2000, 0x2000) AM_READ_PORT("SW2") AM_RANGE(0x2100, 0x2100) AM_DEVWRITE("crtc", mc6845_device, address_w) AM_RANGE(0x2101, 0x2101) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) @@ -1484,8 +1484,8 @@ static ADDRESS_MAP_START( genie_map, AS_PROGRAM, 8, goldnpkr_state ) AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE("pia0", pia6821_device, read, write) AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE("pia1", pia6821_device, read, write) - AM_RANGE(0x1000, 0x17ff) AM_RAM_WRITE_LEGACY(goldnpkr_videoram_w) AM_BASE(m_videoram) - AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE_LEGACY(goldnpkr_colorram_w) AM_BASE(m_colorram) + AM_RANGE(0x1000, 0x17ff) AM_RAM_WRITE(goldnpkr_videoram_w) AM_BASE(m_videoram) + AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(goldnpkr_colorram_w) AM_BASE(m_colorram) AM_RANGE(0x2000, 0x3fff) AM_ROM ADDRESS_MAP_END diff --git a/src/mame/drivers/good.c b/src/mame/drivers/good.c index ca6e88b44f3..5e84008e3cb 100644 --- a/src/mame/drivers/good.c +++ b/src/mame/drivers/good.c @@ -50,14 +50,15 @@ public: /* video-related */ tilemap_t *m_bg_tilemap; tilemap_t *m_fg_tilemap; + DECLARE_WRITE16_MEMBER(fg_tilemapram_w); + DECLARE_WRITE16_MEMBER(bg_tilemapram_w); }; -static WRITE16_HANDLER( fg_tilemapram_w ) +WRITE16_MEMBER(good_state::fg_tilemapram_w) { - good_state *state = space->machine().driver_data<good_state>(); - COMBINE_DATA(&state->m_fg_tilemapram[offset]); - state->m_fg_tilemap->mark_tile_dirty(offset / 2); + COMBINE_DATA(&m_fg_tilemapram[offset]); + m_fg_tilemap->mark_tile_dirty(offset / 2); } static TILE_GET_INFO( get_fg_tile_info ) @@ -68,11 +69,10 @@ static TILE_GET_INFO( get_fg_tile_info ) SET_TILE_INFO(0, tileno, attr, 0); } -static WRITE16_HANDLER( bg_tilemapram_w ) +WRITE16_MEMBER(good_state::bg_tilemapram_w) { - good_state *state = space->machine().driver_data<good_state>(); - COMBINE_DATA(&state->m_bg_tilemapram[offset]); - state->m_bg_tilemap->mark_tile_dirty(offset / 2); + COMBINE_DATA(&m_bg_tilemapram[offset]); + m_bg_tilemap->mark_tile_dirty(offset / 2); } static TILE_GET_INFO( get_bg_tile_info ) @@ -113,8 +113,8 @@ static ADDRESS_MAP_START( good_map, AS_PROGRAM, 16, good_state ) AM_RANGE(0x800000, 0x8007ff) AM_RAM_WRITE_LEGACY(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x820000, 0x820fff) AM_RAM_WRITE_LEGACY(fg_tilemapram_w) AM_BASE(m_fg_tilemapram) - AM_RANGE(0x822000, 0x822fff) AM_RAM_WRITE_LEGACY(bg_tilemapram_w) AM_BASE(m_bg_tilemapram) + AM_RANGE(0x820000, 0x820fff) AM_RAM_WRITE(fg_tilemapram_w) AM_BASE(m_fg_tilemapram) + AM_RANGE(0x822000, 0x822fff) AM_RAM_WRITE(bg_tilemapram_w) AM_BASE(m_bg_tilemapram) AM_RANGE(0xff0000, 0xffefff) AM_RAM ADDRESS_MAP_END diff --git a/src/mame/drivers/goodejan.c b/src/mame/drivers/goodejan.c index 857c4a20368..a3622f40124 100644 --- a/src/mame/drivers/goodejan.c +++ b/src/mame/drivers/goodejan.c @@ -64,6 +64,9 @@ public: : driver_device(mconfig, type, tag) { } UINT16 m_mux_data; + DECLARE_WRITE16_MEMBER(goodejan_gfxbank_w); + DECLARE_READ16_MEMBER(mahjong_panel_r); + DECLARE_WRITE16_MEMBER(mahjong_panel_w); }; @@ -72,34 +75,32 @@ public: #define GOODEJAN_MHZ3 12000000 -static WRITE16_HANDLER( goodejan_gfxbank_w ) +WRITE16_MEMBER(goodejan_state::goodejan_gfxbank_w) { seibucrtc_sc0bank_w((data & 0x100)>>8);// = (data & 0x100)>>8; } /* Multiplexer device for the mahjong panel */ -static READ16_HANDLER( mahjong_panel_r ) +READ16_MEMBER(goodejan_state::mahjong_panel_r) { - goodejan_state *state = space->machine().driver_data<goodejan_state>(); UINT16 ret; ret = 0xffff; - switch(state->m_mux_data) + switch(m_mux_data) { - case 1: ret = input_port_read(space->machine(), "KEY0"); break; - case 2: ret = input_port_read(space->machine(), "KEY1"); break; - case 4: ret = input_port_read(space->machine(), "KEY2"); break; - case 8: ret = input_port_read(space->machine(), "KEY3"); break; - case 0x10: ret = input_port_read(space->machine(), "KEY4"); break; + case 1: ret = input_port_read(machine(), "KEY0"); break; + case 2: ret = input_port_read(machine(), "KEY1"); break; + case 4: ret = input_port_read(machine(), "KEY2"); break; + case 8: ret = input_port_read(machine(), "KEY3"); break; + case 0x10: ret = input_port_read(machine(), "KEY4"); break; } return ret; } -static WRITE16_HANDLER( mahjong_panel_w ) +WRITE16_MEMBER(goodejan_state::mahjong_panel_w) { - goodejan_state *state = space->machine().driver_data<goodejan_state>(); - state->m_mux_data = data; + m_mux_data = data; } static ADDRESS_MAP_START( goodejan_map, AS_PROGRAM, 16, goodejan_state ) @@ -116,12 +117,12 @@ ADDRESS_MAP_END /*totmejan CRT is at 8000-804f,goodejan is at 8040-807f(808f but not tested)*/ static ADDRESS_MAP_START( common_io_map, AS_IO, 16, goodejan_state ) - AM_RANGE(0x9000, 0x9001) AM_WRITE_LEGACY(goodejan_gfxbank_w) + AM_RANGE(0x9000, 0x9001) AM_WRITE(goodejan_gfxbank_w) AM_RANGE(0xb000, 0xb003) AM_WRITENOP - AM_RANGE(0xb004, 0xb005) AM_WRITE_LEGACY(mahjong_panel_w) + AM_RANGE(0xb004, 0xb005) AM_WRITE(mahjong_panel_w) AM_RANGE(0xc000, 0xc001) AM_READ_PORT("DSW1") - AM_RANGE(0xc002, 0xc003) AM_READ_LEGACY(mahjong_panel_r) + AM_RANGE(0xc002, 0xc003) AM_READ(mahjong_panel_r) AM_RANGE(0xc004, 0xc005) AM_READ_PORT("DSW2") // switches AM_RANGE(0xd000, 0xd00f) AM_READWRITE_LEGACY(seibu_main_word_r, seibu_main_word_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/gpworld.c b/src/mame/drivers/gpworld.c index 72c8da8c621..173a7ebf9aa 100644 --- a/src/mame/drivers/gpworld.c +++ b/src/mame/drivers/gpworld.c @@ -60,6 +60,12 @@ public: UINT8* m_sprite_RAM; UINT8* m_palette_RAM; required_device<pioneer_ldv1000_device> m_laserdisc; + DECLARE_READ8_MEMBER(ldp_read); + DECLARE_READ8_MEMBER(pedal_in); + DECLARE_WRITE8_MEMBER(ldp_write); + DECLARE_WRITE8_MEMBER(misc_io_write); + DECLARE_WRITE8_MEMBER(brake_gas_write); + DECLARE_WRITE8_MEMBER(palette_write); }; @@ -230,78 +236,72 @@ static MACHINE_START( gpworld ) /* MEMORY HANDLERS */ /* READS */ -static READ8_HANDLER( ldp_read ) +READ8_MEMBER(gpworld_state::ldp_read) { - gpworld_state *state = space->machine().driver_data<gpworld_state>(); - return state->m_ldp_read_latch; + return m_ldp_read_latch; } -static READ8_HANDLER( pedal_in ) +READ8_MEMBER(gpworld_state::pedal_in) { - gpworld_state *state = space->machine().driver_data<gpworld_state>(); - if (state->m_brake_gas) - return input_port_read(space->machine(), "INACCEL"); + if (m_brake_gas) + return input_port_read(machine(), "INACCEL"); - return input_port_read(space->machine(), "INBRAKE"); + return input_port_read(machine(), "INBRAKE"); } /* WRITES */ -static WRITE8_HANDLER( ldp_write ) +WRITE8_MEMBER(gpworld_state::ldp_write) { - gpworld_state *state = space->machine().driver_data<gpworld_state>(); - state->m_ldp_write_latch = data; + m_ldp_write_latch = data; } -static WRITE8_HANDLER( misc_io_write ) +WRITE8_MEMBER(gpworld_state::misc_io_write) { - gpworld_state *state = space->machine().driver_data<gpworld_state>(); - state->m_start_lamp = (data & 0x04) >> 1; - state->m_nmi_enable = (data & 0x40) >> 6; + m_start_lamp = (data & 0x04) >> 1; + m_nmi_enable = (data & 0x40) >> 6; /* dunno = (data & 0x80) >> 7; */ //coin counter??? - logerror("NMI : %x (0x%x)\n", state->m_nmi_enable, data); + logerror("NMI : %x (0x%x)\n", m_nmi_enable, data); } -static WRITE8_HANDLER( brake_gas_write ) +WRITE8_MEMBER(gpworld_state::brake_gas_write) { - gpworld_state *state = space->machine().driver_data<gpworld_state>(); - state->m_brake_gas = data & 0x01; + m_brake_gas = data & 0x01; } -static WRITE8_HANDLER( palette_write ) +WRITE8_MEMBER(gpworld_state::palette_write) { - gpworld_state *state = space->machine().driver_data<gpworld_state>(); /* This is all just a (bad) guess */ int pal_index, r, g, b, a; - state->m_palette_RAM[offset] = data; + m_palette_RAM[offset] = data; /* "Round down" to the nearest palette entry */ pal_index = offset & 0xffe; - g = (state->m_palette_RAM[pal_index] & 0xf0) << 0; - b = (state->m_palette_RAM[pal_index] & 0x0f) << 4; - r = (state->m_palette_RAM[pal_index+1] & 0x0f) << 4; - a = (state->m_palette_RAM[pal_index+1] & 0x80) ? 0 : 255; /* guess */ + g = (m_palette_RAM[pal_index] & 0xf0) << 0; + b = (m_palette_RAM[pal_index] & 0x0f) << 4; + r = (m_palette_RAM[pal_index+1] & 0x0f) << 4; + a = (m_palette_RAM[pal_index+1] & 0x80) ? 0 : 255; /* guess */ /* logerror("PAL WRITE index : %x rgb : %d %d %d (real %x) at %x\n", pal_index, r,g,b, data, offset); */ - palette_set_color(space->machine(), (pal_index & 0xffe) >> 1, MAKE_ARGB(a, r, g, b)); + palette_set_color(machine(), (pal_index & 0xffe) >> 1, MAKE_ARGB(a, r, g, b)); } /* PROGRAM MAP */ static ADDRESS_MAP_START( mainmem, AS_PROGRAM, 8, gpworld_state ) AM_RANGE(0x0000,0xbfff) AM_ROM AM_RANGE(0xc000,0xc7ff) AM_RAM AM_BASE(m_sprite_RAM) - AM_RANGE(0xc800,0xcfff) AM_WRITE_LEGACY(palette_write) AM_BASE(m_palette_RAM) /* The memory test reads at 0xc800 */ + AM_RANGE(0xc800,0xcfff) AM_WRITE(palette_write) AM_BASE(m_palette_RAM) /* The memory test reads at 0xc800 */ AM_RANGE(0xd000,0xd7ff) AM_RAM AM_BASE(m_tile_RAM) - AM_RANGE(0xd800,0xd800) AM_READWRITE_LEGACY(ldp_read,ldp_write) + AM_RANGE(0xd800,0xd800) AM_READWRITE(ldp_read,ldp_write) /* AM_RANGE(0xd801,0xd801) AM_READ_LEGACY(???) */ AM_RANGE(0xda00,0xda00) AM_READ_PORT("INWHEEL") //8255 here.... /* AM_RANGE(0xda01,0xda01) AM_WRITE_LEGACY(???) */ /* These inputs are interesting - there are writes and reads all over these addr's */ - AM_RANGE(0xda02,0xda02) AM_WRITE_LEGACY(brake_gas_write) /*bit 0 select gas/brake input */ - AM_RANGE(0xda20,0xda20) AM_READ_LEGACY(pedal_in) + AM_RANGE(0xda02,0xda02) AM_WRITE(brake_gas_write) /*bit 0 select gas/brake input */ + AM_RANGE(0xda20,0xda20) AM_READ(pedal_in) AM_RANGE(0xe000,0xffff) AM_RAM /* Potentially not all work RAM? */ ADDRESS_MAP_END @@ -310,7 +310,7 @@ ADDRESS_MAP_END /* I/O MAP */ static ADDRESS_MAP_START( mainport, AS_IO, 8, gpworld_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x01,0x01) AM_WRITE_LEGACY(misc_io_write) + AM_RANGE(0x01,0x01) AM_WRITE(misc_io_write) AM_RANGE(0x80,0x80) AM_READ_PORT("IN0") AM_RANGE(0x81,0x81) AM_READ_PORT("IN1") AM_RANGE(0x82,0x82) AM_READ_PORT("DSW1") diff --git a/src/mame/drivers/gticlub.c b/src/mame/drivers/gticlub.c index d82a66a148e..3243a0a26d6 100644 --- a/src/mame/drivers/gticlub.c +++ b/src/mame/drivers/gticlub.c @@ -244,14 +244,27 @@ public: UINT32 *m_work_ram; UINT32 *m_sharc_dataram_0; UINT32 *m_sharc_dataram_1; + DECLARE_WRITE32_MEMBER(paletteram32_w); + DECLARE_READ32_MEMBER(gticlub_k001604_tile_r); + DECLARE_WRITE32_MEMBER(gticlub_k001604_tile_w); + DECLARE_READ32_MEMBER(gticlub_k001604_char_r); + DECLARE_WRITE32_MEMBER(gticlub_k001604_char_w); + DECLARE_READ32_MEMBER(gticlub_k001604_reg_r); + DECLARE_WRITE32_MEMBER(gticlub_k001604_reg_w); + DECLARE_READ8_MEMBER(sysreg_r); + DECLARE_WRITE8_MEMBER(sysreg_w); + DECLARE_READ32_MEMBER(dsp_dataram0_r); + DECLARE_WRITE32_MEMBER(dsp_dataram0_w); + DECLARE_READ32_MEMBER(dsp_dataram1_r); + DECLARE_WRITE32_MEMBER(dsp_dataram1_w); }; -static WRITE32_HANDLER( paletteram32_w ) +WRITE32_MEMBER(gticlub_state::paletteram32_w) { - COMBINE_DATA(&space->machine().generic.paletteram.u32[offset]); - data = space->machine().generic.paletteram.u32[offset]; - palette_set_color_rgb(space->machine(), offset, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0)); + COMBINE_DATA(&machine().generic.paletteram.u32[offset]); + data = machine().generic.paletteram.u32[offset]; + palette_set_color_rgb(machine(), offset, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0)); } static void voodoo_vblank_0(device_t *device, int param) @@ -264,40 +277,40 @@ static void voodoo_vblank_1(device_t *device, int param) cputag_set_input_line(device->machine(), "maincpu", INPUT_LINE_IRQ1, param ? ASSERT_LINE : CLEAR_LINE); } -static READ32_HANDLER( gticlub_k001604_tile_r ) +READ32_MEMBER(gticlub_state::gticlub_k001604_tile_r) { - device_t *k001604 = space->machine().device(get_cgboard_id() ? "k001604_2" : "k001604_1"); + device_t *k001604 = machine().device(get_cgboard_id() ? "k001604_2" : "k001604_1"); return k001604_tile_r(k001604, offset, mem_mask); } -static WRITE32_HANDLER( gticlub_k001604_tile_w ) +WRITE32_MEMBER(gticlub_state::gticlub_k001604_tile_w) { - device_t *k001604 = space->machine().device(get_cgboard_id() ? "k001604_2" : "k001604_1"); + device_t *k001604 = machine().device(get_cgboard_id() ? "k001604_2" : "k001604_1"); k001604_tile_w(k001604, offset, data, mem_mask); } -static READ32_HANDLER( gticlub_k001604_char_r ) +READ32_MEMBER(gticlub_state::gticlub_k001604_char_r) { - device_t *k001604 = space->machine().device(get_cgboard_id() ? "k001604_2" : "k001604_1"); + device_t *k001604 = machine().device(get_cgboard_id() ? "k001604_2" : "k001604_1"); return k001604_char_r(k001604, offset, mem_mask); } -static WRITE32_HANDLER( gticlub_k001604_char_w ) +WRITE32_MEMBER(gticlub_state::gticlub_k001604_char_w) { - device_t *k001604 = space->machine().device(get_cgboard_id() ? "k001604_2" : "k001604_1"); + device_t *k001604 = machine().device(get_cgboard_id() ? "k001604_2" : "k001604_1"); k001604_char_w(k001604, offset, data, mem_mask); } -static READ32_HANDLER( gticlub_k001604_reg_r ) +READ32_MEMBER(gticlub_state::gticlub_k001604_reg_r) { - device_t *k001604 = space->machine().device(get_cgboard_id() ? "k001604_2" : "k001604_1"); + device_t *k001604 = machine().device(get_cgboard_id() ? "k001604_2" : "k001604_1"); return k001604_reg_r(k001604, offset, mem_mask); } -static WRITE32_HANDLER( gticlub_k001604_reg_w ) +WRITE32_MEMBER(gticlub_state::gticlub_k001604_reg_w) { - device_t *k001604 = space->machine().device(get_cgboard_id() ? "k001604_2" : "k001604_1"); + device_t *k001604 = machine().device(get_cgboard_id() ? "k001604_2" : "k001604_1"); k001604_reg_w(k001604, offset, data, mem_mask); } @@ -318,18 +331,18 @@ static const eeprom_interface eeprom_intf = 0 /* reset_delay */ }; -static READ8_HANDLER( sysreg_r ) +READ8_MEMBER(gticlub_state::sysreg_r) { static const char *const portnames[] = { "IN0", "IN1", "IN2", "IN3" }; - device_t *adc1038 = space->machine().device("adc1038"); - eeprom_device *eeprom = space->machine().device<eeprom_device>("eeprom"); + device_t *adc1038 = machine().device("adc1038"); + eeprom_device *eeprom = machine().device<eeprom_device>("eeprom"); switch (offset) { case 0: case 1: case 3: - return input_port_read(space->machine(), portnames[offset]); + return input_port_read(machine(), portnames[offset]); case 2: return adc1038_sars_read(adc1038) << 7; @@ -354,10 +367,10 @@ static READ8_HANDLER( sysreg_r ) return 0; } -static WRITE8_HANDLER( sysreg_w ) +WRITE8_MEMBER(gticlub_state::sysreg_w) { - device_t *adc1038 = space->machine().device("adc1038"); - eeprom_device *eeprom = space->machine().device<eeprom_device>("eeprom"); + device_t *adc1038 = machine().device("adc1038"); + eeprom_device *eeprom = machine().device<eeprom_device>("eeprom"); switch (offset) { @@ -374,10 +387,10 @@ static WRITE8_HANDLER( sysreg_w ) case 4: if (data & 0x80) /* CG Board 1 IRQ Ack */ - cputag_set_input_line(space->machine(), "maincpu", INPUT_LINE_IRQ1, CLEAR_LINE); + cputag_set_input_line(machine(), "maincpu", INPUT_LINE_IRQ1, CLEAR_LINE); if (data & 0x40) /* CG Board 0 IRQ Ack */ - cputag_set_input_line(space->machine(), "maincpu", INPUT_LINE_IRQ0, CLEAR_LINE); + cputag_set_input_line(machine(), "maincpu", INPUT_LINE_IRQ0, CLEAR_LINE); adc1038_di_write(adc1038, (data >> 0) & 1); adc1038_clk_write(adc1038, (data >> 1) & 1); @@ -402,15 +415,15 @@ static MACHINE_START( gticlub ) static ADDRESS_MAP_START( gticlub_map, AS_PROGRAM, 32, gticlub_state ) AM_RANGE(0x00000000, 0x000fffff) AM_RAM AM_BASE(m_work_ram) /* Work RAM */ - AM_RANGE(0x74000000, 0x740000ff) AM_READWRITE_LEGACY(gticlub_k001604_reg_r, gticlub_k001604_reg_w) - AM_RANGE(0x74010000, 0x7401ffff) AM_RAM_WRITE_LEGACY(paletteram32_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x74020000, 0x7403ffff) AM_READWRITE_LEGACY(gticlub_k001604_tile_r, gticlub_k001604_tile_w) - AM_RANGE(0x74040000, 0x7407ffff) AM_READWRITE_LEGACY(gticlub_k001604_char_r, gticlub_k001604_char_w) + AM_RANGE(0x74000000, 0x740000ff) AM_READWRITE(gticlub_k001604_reg_r, gticlub_k001604_reg_w) + AM_RANGE(0x74010000, 0x7401ffff) AM_RAM_WRITE(paletteram32_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x74020000, 0x7403ffff) AM_READWRITE(gticlub_k001604_tile_r, gticlub_k001604_tile_w) + AM_RANGE(0x74040000, 0x7407ffff) AM_READWRITE(gticlub_k001604_char_r, gticlub_k001604_char_w) AM_RANGE(0x78000000, 0x7800ffff) AM_READWRITE_LEGACY(cgboard_dsp_shared_r_ppc, cgboard_dsp_shared_w_ppc) AM_RANGE(0x78040000, 0x7804000f) AM_READWRITE_LEGACY(K001006_0_r, K001006_0_w) AM_RANGE(0x78080000, 0x7808000f) AM_READWRITE_LEGACY(K001006_1_r, K001006_1_w) AM_RANGE(0x780c0000, 0x780c0003) AM_READWRITE_LEGACY(cgboard_dsp_comm_r_ppc, cgboard_dsp_comm_w_ppc) - AM_RANGE(0x7e000000, 0x7e003fff) AM_READWRITE8_LEGACY(sysreg_r, sysreg_w, 0xffffffff) + AM_RANGE(0x7e000000, 0x7e003fff) AM_READWRITE8(sysreg_r, sysreg_w, 0xffffffff) AM_RANGE(0x7e008000, 0x7e009fff) AM_DEVREADWRITE8_LEGACY("k056230", k056230_r, k056230_w, 0xffffffff) AM_RANGE(0x7e00a000, 0x7e00bfff) AM_DEVREADWRITE_LEGACY("k056230", lanc_ram_r, lanc_ram_w) AM_RANGE(0x7e00c000, 0x7e00c007) AM_DEVWRITE_LEGACY("k056800", k056800_host_w) @@ -434,40 +447,36 @@ ADDRESS_MAP_END /*****************************************************************************/ -static READ32_HANDLER( dsp_dataram0_r ) +READ32_MEMBER(gticlub_state::dsp_dataram0_r) { - gticlub_state *state = space->machine().driver_data<gticlub_state>(); - return state->m_sharc_dataram_0[offset] & 0xffff; + return m_sharc_dataram_0[offset] & 0xffff; } -static WRITE32_HANDLER( dsp_dataram0_w ) +WRITE32_MEMBER(gticlub_state::dsp_dataram0_w) { - gticlub_state *state = space->machine().driver_data<gticlub_state>(); - state->m_sharc_dataram_0[offset] = data; + m_sharc_dataram_0[offset] = data; } -static READ32_HANDLER( dsp_dataram1_r ) +READ32_MEMBER(gticlub_state::dsp_dataram1_r) { - gticlub_state *state = space->machine().driver_data<gticlub_state>(); - return state->m_sharc_dataram_1[offset] & 0xffff; + return m_sharc_dataram_1[offset] & 0xffff; } -static WRITE32_HANDLER( dsp_dataram1_w ) +WRITE32_MEMBER(gticlub_state::dsp_dataram1_w) { - gticlub_state *state = space->machine().driver_data<gticlub_state>(); - state->m_sharc_dataram_1[offset] = data; + m_sharc_dataram_1[offset] = data; } static ADDRESS_MAP_START( sharc_map, AS_DATA, 32, gticlub_state ) AM_RANGE(0x400000, 0x41ffff) AM_READWRITE_LEGACY(cgboard_0_shared_sharc_r, cgboard_0_shared_sharc_w) - AM_RANGE(0x500000, 0x5fffff) AM_READWRITE_LEGACY(dsp_dataram0_r, dsp_dataram0_w) + AM_RANGE(0x500000, 0x5fffff) AM_READWRITE(dsp_dataram0_r, dsp_dataram0_w) AM_RANGE(0x600000, 0x6fffff) AM_READWRITE_LEGACY(K001005_r, K001005_w) AM_RANGE(0x700000, 0x7000ff) AM_READWRITE_LEGACY(cgboard_0_comm_sharc_r, cgboard_0_comm_sharc_w) ADDRESS_MAP_END static ADDRESS_MAP_START( hangplt_sharc0_map, AS_DATA, 32, gticlub_state ) AM_RANGE(0x0400000, 0x041ffff) AM_READWRITE_LEGACY(cgboard_0_shared_sharc_r, cgboard_0_shared_sharc_w) - AM_RANGE(0x0500000, 0x05fffff) AM_READWRITE_LEGACY(dsp_dataram0_r, dsp_dataram0_w) + AM_RANGE(0x0500000, 0x05fffff) AM_READWRITE(dsp_dataram0_r, dsp_dataram0_w) AM_RANGE(0x1400000, 0x14fffff) AM_RAM AM_RANGE(0x2400000, 0x27fffff) AM_DEVREADWRITE_LEGACY("voodoo0", nwk_voodoo_0_r, voodoo_w) AM_RANGE(0x3400000, 0x34000ff) AM_READWRITE_LEGACY(cgboard_0_comm_sharc_r, cgboard_0_comm_sharc_w) @@ -478,7 +487,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( hangplt_sharc1_map, AS_DATA, 32, gticlub_state ) AM_RANGE(0x0400000, 0x041ffff) AM_READWRITE_LEGACY(cgboard_1_shared_sharc_r, cgboard_1_shared_sharc_w) - AM_RANGE(0x0500000, 0x05fffff) AM_READWRITE_LEGACY(dsp_dataram1_r, dsp_dataram1_w) + AM_RANGE(0x0500000, 0x05fffff) AM_READWRITE(dsp_dataram1_r, dsp_dataram1_w) AM_RANGE(0x1400000, 0x14fffff) AM_RAM AM_RANGE(0x2400000, 0x27fffff) AM_DEVREADWRITE_LEGACY("voodoo1", nwk_voodoo_1_r, voodoo_w) AM_RANGE(0x3400000, 0x34000ff) AM_READWRITE_LEGACY(cgboard_1_comm_sharc_r, cgboard_1_comm_sharc_w) diff --git a/src/mame/drivers/guab.c b/src/mame/drivers/guab.c index 4e6dc1b29cc..67d918b0d40 100644 --- a/src/mame/drivers/guab.c +++ b/src/mame/drivers/guab.c @@ -81,6 +81,14 @@ public: struct ef9369 m_pal; emu_timer *m_fdc_timer; struct wd1770 m_fdc; + DECLARE_WRITE16_MEMBER(guab_tms34061_w); + DECLARE_READ16_MEMBER(guab_tms34061_r); + DECLARE_WRITE16_MEMBER(ef9369_w); + DECLARE_READ16_MEMBER(ef9369_r); + DECLARE_WRITE16_MEMBER(wd1770_w); + DECLARE_READ16_MEMBER(wd1770_r); + DECLARE_READ16_MEMBER(io_r); + DECLARE_WRITE16_MEMBER(io_w); }; @@ -128,7 +136,7 @@ static const struct tms34061_interface tms34061intf = }; -static WRITE16_HANDLER( guab_tms34061_w ) +WRITE16_MEMBER(guab_state::guab_tms34061_w) { int func = (offset >> 19) & 3; int row = (offset >> 7) & 0xff; @@ -140,14 +148,14 @@ static WRITE16_HANDLER( guab_tms34061_w ) col = offset <<= 1; if (ACCESSING_BITS_8_15) - tms34061_w(space, col, row, func, data >> 8); + tms34061_w(&space, col, row, func, data >> 8); if (ACCESSING_BITS_0_7) - tms34061_w(space, col | 1, row, func, data & 0xff); + tms34061_w(&space, col | 1, row, func, data & 0xff); } -static READ16_HANDLER( guab_tms34061_r ) +READ16_MEMBER(guab_state::guab_tms34061_r) { UINT16 data = 0; int func = (offset >> 19) & 3; @@ -160,10 +168,10 @@ static READ16_HANDLER( guab_tms34061_r ) col = offset <<= 1; if (ACCESSING_BITS_8_15) - data |= tms34061_r(space, col, row, func) << 8; + data |= tms34061_r(&space, col, row, func) << 8; if (ACCESSING_BITS_0_7) - data |= tms34061_r(space, col | 1, row, func); + data |= tms34061_r(&space, col | 1, row, func); return data; } @@ -175,10 +183,9 @@ static READ16_HANDLER( guab_tms34061_r ) ****************************/ /* Non-multiplexed mode */ -static WRITE16_HANDLER( ef9369_w ) +WRITE16_MEMBER(guab_state::ef9369_w) { - guab_state *state = space->machine().driver_data<guab_state>(); - struct ef9369 &pal = state->m_pal; + struct ef9369 &pal = m_pal; data &= 0x00ff; /* Address register */ @@ -207,7 +214,7 @@ static WRITE16_HANDLER( ef9369_w ) col = pal.clut[entry] & 0xfff; /* Update the MAME palette */ - palette_set_color_rgb(space->machine(), entry, pal4bit(col >> 0), pal4bit(col >> 4), pal4bit(col >> 8)); + palette_set_color_rgb(machine(), entry, pal4bit(col >> 0), pal4bit(col >> 4), pal4bit(col >> 8)); } /* Address register auto-increment */ @@ -216,10 +223,9 @@ static WRITE16_HANDLER( ef9369_w ) } } -static READ16_HANDLER( ef9369_r ) +READ16_MEMBER(guab_state::ef9369_r) { - guab_state *state = space->machine().driver_data<guab_state>(); - struct ef9369 &pal = state->m_pal; + struct ef9369 &pal = m_pal; if ((offset & 1) == 0) { UINT16 col = pal.clut[pal.addr >> 1]; @@ -372,10 +378,9 @@ static TIMER_CALLBACK( fdc_data_callback ) } -static WRITE16_HANDLER( wd1770_w ) +WRITE16_MEMBER(guab_state::wd1770_w) { - guab_state *state = space->machine().driver_data<guab_state>(); - struct wd1770 &fdc = state->m_fdc; + struct wd1770 &fdc = m_fdc; data &= 0xff; switch (offset) @@ -445,7 +450,7 @@ static WRITE16_HANDLER( wd1770_w ) fdc.sector)); /* Set the data read timer */ - state->m_fdc_timer->adjust(attotime::from_usec(USEC_DELAY)); + m_fdc_timer->adjust(attotime::from_usec(USEC_DELAY)); break; } @@ -464,7 +469,7 @@ static WRITE16_HANDLER( wd1770_w ) fdc.sector)); /* Trigger a DRQ interrupt on the CPU */ - cputag_set_input_line(space->machine(), "maincpu", INT_FLOPPYCTRL, ASSERT_LINE); + cputag_set_input_line(machine(), "maincpu", INT_FLOPPYCTRL, ASSERT_LINE); fdc.status |= DATA_REQUEST; break; } @@ -482,7 +487,7 @@ static WRITE16_HANDLER( wd1770_w ) case 13: { /* Stop any operation in progress */ - state->m_fdc_timer->reset(); + m_fdc_timer->reset(); fdc.status &= ~BUSY; FDC_LOG(("Force Interrupt\n")); break; @@ -509,21 +514,20 @@ static WRITE16_HANDLER( wd1770_w ) fdc.data = data; /* Clear the DRQ */ - cputag_set_input_line(space->machine(), "maincpu", INT_FLOPPYCTRL, CLEAR_LINE); + cputag_set_input_line(machine(), "maincpu", INT_FLOPPYCTRL, CLEAR_LINE); /* Queue an event to write the data if write command was specified */ if (fdc.cmd & 0x20) - state->m_fdc_timer->adjust(attotime::from_usec(USEC_DELAY)); + m_fdc_timer->adjust(attotime::from_usec(USEC_DELAY)); break; } } } -static READ16_HANDLER( wd1770_r ) +READ16_MEMBER(guab_state::wd1770_r) { - guab_state *state = space->machine().driver_data<guab_state>(); - struct wd1770 &fdc = state->m_fdc; + struct wd1770 &fdc = m_fdc; UINT16 retval = 0; switch (offset) @@ -548,7 +552,7 @@ static READ16_HANDLER( wd1770_r ) retval = fdc.data; /* Clear the DRQ */ - cputag_set_input_line(space->machine(), "maincpu", INT_FLOPPYCTRL, CLEAR_LINE); + cputag_set_input_line(machine(), "maincpu", INT_FLOPPYCTRL, CLEAR_LINE); fdc.status &= ~DATA_REQUEST; break; } @@ -564,7 +568,7 @@ static READ16_HANDLER( wd1770_r ) * ****************************************/ -static READ16_HANDLER( io_r ) +READ16_MEMBER(guab_state::io_r) { static const char *const portnames[] = { "IN0", "IN1", "IN2" }; @@ -574,7 +578,7 @@ static READ16_HANDLER( io_r ) case 0x01: case 0x02: { - return input_port_read(space->machine(), portnames[offset]); + return input_port_read(machine(), portnames[offset]); } case 0x30: { @@ -608,10 +612,9 @@ static INPUT_CHANGED( coin_inserted ) * ****************************************/ -static WRITE16_HANDLER( io_w ) +WRITE16_MEMBER(guab_state::io_w) { - guab_state *state = space->machine().driver_data<guab_state>(); - struct wd1770 &fdc = state->m_fdc; + struct wd1770 &fdc = m_fdc; switch (offset) { case 0x10: @@ -646,7 +649,7 @@ static WRITE16_HANDLER( io_w ) } case 0x30: { - sn76496_w(space->machine().device("snsnd"), 0, data & 0xff); + sn76496_w(machine().device("snsnd"), 0, data & 0xff); break; } case 0x31: @@ -682,14 +685,14 @@ static WRITE16_HANDLER( io_w ) static ADDRESS_MAP_START( guab_map, AS_PROGRAM, 16, guab_state ) AM_RANGE(0x000000, 0x00ffff) AM_ROM AM_RANGE(0x040000, 0x04ffff) AM_ROM AM_REGION("maincpu", 0x10000) - AM_RANGE(0x0c0000, 0x0c007f) AM_READWRITE_LEGACY(io_r, io_w) + AM_RANGE(0x0c0000, 0x0c007f) AM_READWRITE(io_r, io_w) AM_RANGE(0x0c0080, 0x0c0083) AM_NOP /* ACIA 1 */ AM_RANGE(0x0c00a0, 0x0c00a3) AM_NOP /* ACIA 2 */ AM_RANGE(0x0c00c0, 0x0c00cf) AM_DEVREADWRITE8("6840ptm", ptm6840_device, read, write, 0xff) - AM_RANGE(0x0c00e0, 0x0c00e7) AM_READWRITE_LEGACY(wd1770_r, wd1770_w) + AM_RANGE(0x0c00e0, 0x0c00e7) AM_READWRITE(wd1770_r, wd1770_w) AM_RANGE(0x080000, 0x080fff) AM_RAM - AM_RANGE(0x100000, 0x100003) AM_READWRITE_LEGACY(ef9369_r, ef9369_w) - AM_RANGE(0x800000, 0xb0ffff) AM_READWRITE_LEGACY(guab_tms34061_r, guab_tms34061_w) + AM_RANGE(0x100000, 0x100003) AM_READWRITE(ef9369_r, ef9369_w) + AM_RANGE(0x800000, 0xb0ffff) AM_READWRITE(guab_tms34061_r, guab_tms34061_w) AM_RANGE(0xb10000, 0xb1ffff) AM_RAM AM_RANGE(0xb80000, 0xb8ffff) AM_RAM AM_RANGE(0xb90000, 0xb9ffff) AM_RAM diff --git a/src/mame/drivers/gunpey.c b/src/mame/drivers/gunpey.c index 0a92bd9c19d..35b4bfe67cb 100644 --- a/src/mame/drivers/gunpey.c +++ b/src/mame/drivers/gunpey.c @@ -59,6 +59,10 @@ public: UINT16 *m_blit_buffer; UINT16 m_blit_ram[0x10]; + DECLARE_WRITE8_MEMBER(gunpey_status_w); + DECLARE_READ8_MEMBER(gunpey_status_r); + DECLARE_READ8_MEMBER(gunpey_inputs_r); + DECLARE_WRITE8_MEMBER(gunpey_blitter_w); }; @@ -100,11 +104,11 @@ static SCREEN_UPDATE_RGB32( gunpey ) return 0; } -static WRITE8_HANDLER( gunpey_status_w ) +WRITE8_MEMBER(gunpey_state::gunpey_status_w) { } -static READ8_HANDLER( gunpey_status_r ) +READ8_MEMBER(gunpey_state::gunpey_status_r) { if(offset == 1) return 0x54; @@ -112,26 +116,25 @@ static READ8_HANDLER( gunpey_status_r ) return 0x00; } -static READ8_HANDLER( gunpey_inputs_r ) +READ8_MEMBER(gunpey_state::gunpey_inputs_r) { switch(offset+0x7f40) { - case 0x7f40: return input_port_read(space->machine(), "DSW1"); - case 0x7f41: return input_port_read(space->machine(), "DSW2"); - case 0x7f42: return input_port_read(space->machine(), "P1"); - case 0x7f43: return input_port_read(space->machine(), "P2"); - case 0x7f44: return input_port_read(space->machine(), "SYSTEM"); + case 0x7f40: return input_port_read(machine(), "DSW1"); + case 0x7f41: return input_port_read(machine(), "DSW2"); + case 0x7f42: return input_port_read(machine(), "P1"); + case 0x7f43: return input_port_read(machine(), "P2"); + case 0x7f44: return input_port_read(machine(), "SYSTEM"); } return 0xff; } -static WRITE8_HANDLER( gunpey_blitter_w ) +WRITE8_MEMBER(gunpey_state::gunpey_blitter_w) { - gunpey_state *state = space->machine().driver_data<gunpey_state>(); - UINT16 *blit_buffer = state->m_blit_buffer; - UINT16 *blit_ram = state->m_blit_ram; - UINT8 *blit_rom = space->machine().region("blit_data")->base(); + UINT16 *blit_buffer = m_blit_buffer; + UINT16 *blit_ram = m_blit_ram; + UINT8 *blit_rom = machine().region("blit_data")->base(); int x,y; blit_ram[offset] = data; @@ -189,15 +192,15 @@ static ADDRESS_MAP_START( mem_map, AS_PROGRAM, 16, gunpey_state ) ADDRESS_MAP_END static ADDRESS_MAP_START( io_map, AS_IO, 16, gunpey_state ) - AM_RANGE(0x7f40, 0x7f45) AM_READ8_LEGACY(gunpey_inputs_r,0xffff) + AM_RANGE(0x7f40, 0x7f45) AM_READ8(gunpey_inputs_r,0xffff) // AM_RANGE(0x7f48, 0x7f48) AM_WRITE_LEGACY(output_w) AM_RANGE(0x7f80, 0x7f81) AM_DEVREADWRITE8_LEGACY("ymz", ymz280b_r, ymz280b_w, 0xffff) AM_RANGE(0x7f88, 0x7f89) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0xff00) - AM_RANGE(0x7fc8, 0x7fc9) AM_READWRITE8_LEGACY(gunpey_status_r, gunpey_status_w, 0xffff ) - AM_RANGE(0x7fd0, 0x7fdf) AM_WRITE8_LEGACY(gunpey_blitter_w, 0xffff ) + AM_RANGE(0x7fc8, 0x7fc9) AM_READWRITE8(gunpey_status_r, gunpey_status_w, 0xffff ) + AM_RANGE(0x7fd0, 0x7fdf) AM_WRITE8(gunpey_blitter_w, 0xffff ) ADDRESS_MAP_END diff --git a/src/mame/drivers/hitpoker.c b/src/mame/drivers/hitpoker.c index ae030b11ec6..f8880d40804 100644 --- a/src/mame/drivers/hitpoker.c +++ b/src/mame/drivers/hitpoker.c @@ -62,6 +62,18 @@ public: UINT8 m_eeprom_data[0x200]; UINT16 m_eeprom_index; UINT8 m_tmp; + DECLARE_READ8_MEMBER(hitpoker_vram_r); + DECLARE_WRITE8_MEMBER(hitpoker_vram_w); + DECLARE_READ8_MEMBER(hitpoker_cram_r); + DECLARE_WRITE8_MEMBER(hitpoker_cram_w); + DECLARE_READ8_MEMBER(hitpoker_paletteram_r); + DECLARE_WRITE8_MEMBER(hitpoker_paletteram_w); + DECLARE_READ8_MEMBER(rtc_r); + DECLARE_WRITE8_MEMBER(eeprom_w); + DECLARE_READ8_MEMBER(eeprom_r); + DECLARE_READ8_MEMBER(hitpoker_pic_r); + DECLARE_WRITE8_MEMBER(hitpoker_pic_w); + DECLARE_READ8_MEMBER(test_r); }; @@ -102,137 +114,127 @@ static SCREEN_UPDATE_IND16(hitpoker) return 0; } -static READ8_HANDLER( hitpoker_vram_r ) +READ8_MEMBER(hitpoker_state::hitpoker_vram_r) { - hitpoker_state *state = space->machine().driver_data<hitpoker_state>(); - UINT8 *ROM = space->machine().region("maincpu")->base(); + UINT8 *ROM = machine().region("maincpu")->base(); - if(state->m_pic_data & 0x10) - return state->m_videoram[offset]; + if(m_pic_data & 0x10) + return m_videoram[offset]; else return ROM[offset+0x8000]; } -static WRITE8_HANDLER( hitpoker_vram_w ) +WRITE8_MEMBER(hitpoker_state::hitpoker_vram_w) { - hitpoker_state *state = space->machine().driver_data<hitpoker_state>(); -// UINT8 *ROM = space->machine().region("maincpu")->base(); +// UINT8 *ROM = machine().region("maincpu")->base(); -// if(state->m_sys_regs[0x00] & 0x10) - state->m_videoram[offset] = data; +// if(m_sys_regs[0x00] & 0x10) + m_videoram[offset] = data; } -static READ8_HANDLER( hitpoker_cram_r ) +READ8_MEMBER(hitpoker_state::hitpoker_cram_r) { - hitpoker_state *state = space->machine().driver_data<hitpoker_state>(); - UINT8 *ROM = space->machine().region("maincpu")->base(); + UINT8 *ROM = machine().region("maincpu")->base(); - if(state->m_pic_data & 0x10) - return state->m_colorram[offset]; + if(m_pic_data & 0x10) + return m_colorram[offset]; else return ROM[offset+0xc000]; } -static WRITE8_HANDLER( hitpoker_cram_w ) +WRITE8_MEMBER(hitpoker_state::hitpoker_cram_w) { - hitpoker_state *state = space->machine().driver_data<hitpoker_state>(); - state->m_colorram[offset] = data; + m_colorram[offset] = data; } -static READ8_HANDLER( hitpoker_paletteram_r ) +READ8_MEMBER(hitpoker_state::hitpoker_paletteram_r) { - hitpoker_state *state = space->machine().driver_data<hitpoker_state>(); - UINT8 *ROM = space->machine().region("maincpu")->base(); + UINT8 *ROM = machine().region("maincpu")->base(); - if(state->m_pic_data & 0x10) - return state->m_paletteram[offset]; + if(m_pic_data & 0x10) + return m_paletteram[offset]; else return ROM[offset+0xe000]; } -static WRITE8_HANDLER( hitpoker_paletteram_w ) +WRITE8_MEMBER(hitpoker_state::hitpoker_paletteram_w) { - hitpoker_state *state = space->machine().driver_data<hitpoker_state>(); int r,g,b,datax; - state->m_paletteram[offset] = data; + m_paletteram[offset] = data; offset>>=1; - datax=256*state->m_paletteram[offset*2]+state->m_paletteram[offset*2+1]; + datax=256*m_paletteram[offset*2]+m_paletteram[offset*2+1]; /* RGB565 */ b = ((datax)&0xf800)>>11; g = ((datax)&0x07e0)>>5; r = ((datax)&0x001f)>>0; - palette_set_color_rgb(space->machine(), offset, pal5bit(r), pal6bit(g), pal5bit(b)); + palette_set_color_rgb(machine(), offset, pal5bit(r), pal6bit(g), pal5bit(b)); } -static READ8_HANDLER( rtc_r ) +READ8_MEMBER(hitpoker_state::rtc_r) { return 0x80; //kludge it for now } /* tests 0x180, what EEPROM is this one??? */ -static WRITE8_HANDLER( eeprom_w ) +WRITE8_MEMBER(hitpoker_state::eeprom_w) { - hitpoker_state *state = space->machine().driver_data<hitpoker_state>(); if(offset == 0) { - state->m_eeprom_index = (state->m_eeprom_index & 0x100)|(data & 0xff); + m_eeprom_index = (m_eeprom_index & 0x100)|(data & 0xff); //printf("W INDEX %02x\n",data); } if(offset == 1) { - state->m_eeprom_index = (state->m_eeprom_index & 0xff)|((data & 0x1)<<8); + m_eeprom_index = (m_eeprom_index & 0xff)|((data & 0x1)<<8); //data & 0x4: eeprom clock //printf("W CLOCK + INDEX %02x\n",data); } } -static READ8_HANDLER( eeprom_r ) +READ8_MEMBER(hitpoker_state::eeprom_r) { - hitpoker_state *state = space->machine().driver_data<hitpoker_state>(); - state->m_tmp = state->m_eeprom_data[state->m_eeprom_index]; - if((state->m_eeprom_index & 0x1f) == 0x1f) - state->m_tmp = 0xaa; - //printf("%02x\n",state->m_eeprom_index); - state->m_eeprom_index++; - //state->m_eeprom_index&=0x1f; - return state->m_tmp; + m_tmp = m_eeprom_data[m_eeprom_index]; + if((m_eeprom_index & 0x1f) == 0x1f) + m_tmp = 0xaa; + //printf("%02x\n",m_eeprom_index); + m_eeprom_index++; + //m_eeprom_index&=0x1f; + return m_tmp; } -static READ8_HANDLER( hitpoker_pic_r ) +READ8_MEMBER(hitpoker_state::hitpoker_pic_r) { - hitpoker_state *state = space->machine().driver_data<hitpoker_state>(); // logerror("R\n"); if(offset == 0) { - if(cpu_get_pc(&space->device()) == 0x3143 || - cpu_get_pc(&space->device()) == 0x314e || - cpu_get_pc(&space->device()) == 0x3164 || - cpu_get_pc(&space->device()) == 0x3179) - return state->m_pic_data; + if(cpu_get_pc(&space.device()) == 0x3143 || + cpu_get_pc(&space.device()) == 0x314e || + cpu_get_pc(&space.device()) == 0x3164 || + cpu_get_pc(&space.device()) == 0x3179) + return m_pic_data; - return (state->m_pic_data & 0x7f) | (state->m_pic_data & 0x40 ? 0x80 : 0x00); + return (m_pic_data & 0x7f) | (m_pic_data & 0x40 ? 0x80 : 0x00); } - return state->m_sys_regs[offset]; + return m_sys_regs[offset]; } -static WRITE8_HANDLER( hitpoker_pic_w ) +WRITE8_MEMBER(hitpoker_state::hitpoker_pic_w) { - hitpoker_state *state = space->machine().driver_data<hitpoker_state>(); if(offset == 0) - state->m_pic_data = (data & 0xff);// | (data & 0x40) ? 0x80 : 0x00; + m_pic_data = (data & 0xff);// | (data & 0x40) ? 0x80 : 0x00; // logerror("%02x W\n",data); - state->m_sys_regs[offset] = data; + m_sys_regs[offset] = data; } #if 0 -static READ8_HANDLER( test_r ) +READ8_MEMBER(hitpoker_state::test_r) { - return space->machine().rand(); + return machine().rand(); } #endif @@ -240,27 +242,27 @@ static READ8_HANDLER( test_r ) static ADDRESS_MAP_START( hitpoker_map, AS_PROGRAM, 8, hitpoker_state ) AM_RANGE(0x0000, 0x00ff) AM_RAM // stack ram AM_RANGE(0x1000, 0x103f) AM_RAM // internal I/O - AM_RANGE(0x8000, 0xb5ff) AM_READWRITE_LEGACY(hitpoker_vram_r,hitpoker_vram_w) + AM_RANGE(0x8000, 0xb5ff) AM_READWRITE(hitpoker_vram_r,hitpoker_vram_w) AM_RANGE(0xb600, 0xbdff) AM_RAM AM_RANGE(0xbe0a, 0xbe0a) AM_READ_PORT("IN0") AM_RANGE(0xbe0c, 0xbe0c) AM_READ_PORT("IN2") //irq ack? - AM_RANGE(0xbe0d, 0xbe0d) AM_READ_LEGACY(rtc_r) + AM_RANGE(0xbe0d, 0xbe0d) AM_READ(rtc_r) AM_RANGE(0xbe0e, 0xbe0e) AM_READ_PORT("IN1") - AM_RANGE(0xbe50, 0xbe51) AM_WRITE_LEGACY(eeprom_w) - AM_RANGE(0xbe53, 0xbe53) AM_READ_LEGACY(eeprom_r) + AM_RANGE(0xbe50, 0xbe51) AM_WRITE(eeprom_w) + AM_RANGE(0xbe53, 0xbe53) AM_READ(eeprom_r) AM_RANGE(0xbe80, 0xbe80) AM_DEVWRITE("crtc", mc6845_device, address_w) AM_RANGE(0xbe81, 0xbe81) AM_DEVWRITE("crtc", mc6845_device, register_w) AM_RANGE(0xbe90, 0xbe91) AM_DEVREADWRITE_LEGACY("aysnd", ay8910_r,ay8910_address_data_w) AM_RANGE(0xbea0, 0xbea0) AM_READ_PORT("VBLANK") //probably other bits as well -// AM_RANGE(0xbe00, 0xbeff) AM_READ_LEGACY(test_r) - AM_RANGE(0xc000, 0xdfff) AM_READWRITE_LEGACY(hitpoker_cram_r,hitpoker_cram_w) - AM_RANGE(0xe000, 0xefff) AM_READWRITE_LEGACY(hitpoker_paletteram_r,hitpoker_paletteram_w) +// AM_RANGE(0xbe00, 0xbeff) AM_READ(test_r) + AM_RANGE(0xc000, 0xdfff) AM_READWRITE(hitpoker_cram_r,hitpoker_cram_w) + AM_RANGE(0xe000, 0xefff) AM_READWRITE(hitpoker_paletteram_r,hitpoker_paletteram_w) AM_RANGE(0x0000, 0xbdff) AM_ROM AM_RANGE(0xbf00, 0xffff) AM_ROM ADDRESS_MAP_END static ADDRESS_MAP_START( hitpoker_io, AS_IO, 8, hitpoker_state ) - AM_RANGE(MC68HC11_IO_PORTA, MC68HC11_IO_PORTA) AM_READWRITE_LEGACY(hitpoker_pic_r,hitpoker_pic_w) AM_BASE(m_sys_regs) + AM_RANGE(MC68HC11_IO_PORTA, MC68HC11_IO_PORTA) AM_READWRITE(hitpoker_pic_r,hitpoker_pic_w) AM_BASE(m_sys_regs) ADDRESS_MAP_END static INPUT_PORTS_START( hitpoker ) diff --git a/src/mame/drivers/hornet.c b/src/mame/drivers/hornet.c index f9523d462a5..b07b51b0501 100644 --- a/src/mame/drivers/hornet.c +++ b/src/mame/drivers/hornet.c @@ -339,45 +339,65 @@ public: UINT16 m_gn680_latch; UINT16 m_gn680_ret0; UINT16 m_gn680_ret1; + DECLARE_READ32_MEMBER(hornet_k037122_sram_r); + DECLARE_WRITE32_MEMBER(hornet_k037122_sram_w); + DECLARE_READ32_MEMBER(hornet_k037122_char_r); + DECLARE_WRITE32_MEMBER(hornet_k037122_char_w); + DECLARE_READ32_MEMBER(hornet_k037122_reg_r); + DECLARE_WRITE32_MEMBER(hornet_k037122_reg_w); + DECLARE_READ8_MEMBER(sysreg_r); + DECLARE_WRITE8_MEMBER(sysreg_w); + DECLARE_WRITE32_MEMBER(comm1_w); + DECLARE_WRITE32_MEMBER(comm_rombank_w); + DECLARE_READ32_MEMBER(comm0_unk_r); + DECLARE_READ32_MEMBER(gun_r); + DECLARE_WRITE32_MEMBER(gun_w); + DECLARE_WRITE16_MEMBER(gn680_sysctrl); + DECLARE_READ16_MEMBER(gn680_latch_r); + DECLARE_WRITE16_MEMBER(gn680_latch_w); + DECLARE_READ32_MEMBER(dsp_dataram0_r); + DECLARE_WRITE32_MEMBER(dsp_dataram0_w); + DECLARE_READ32_MEMBER(dsp_dataram1_r); + DECLARE_WRITE32_MEMBER(dsp_dataram1_w); }; -static READ32_HANDLER( hornet_k037122_sram_r ) +READ32_MEMBER(hornet_state::hornet_k037122_sram_r) { - device_t *k037122 = space->machine().device(get_cgboard_id() ? "k037122_2" : "k037122_1"); + device_t *k037122 = machine().device(get_cgboard_id() ? "k037122_2" : "k037122_1"); return k037122_sram_r(k037122, offset, mem_mask); } -static WRITE32_HANDLER( hornet_k037122_sram_w ) +WRITE32_MEMBER(hornet_state::hornet_k037122_sram_w) { - device_t *k037122 = space->machine().device(get_cgboard_id() ? "k037122_2" : "k037122_1"); + device_t *k037122 = machine().device(get_cgboard_id() ? "k037122_2" : "k037122_1"); k037122_sram_w(k037122, offset, data, mem_mask); } -static READ32_HANDLER( hornet_k037122_char_r ) +READ32_MEMBER(hornet_state::hornet_k037122_char_r) { - device_t *k037122 = space->machine().device(get_cgboard_id() ? "k037122_2" : "k037122_1"); + device_t *k037122 = machine().device(get_cgboard_id() ? "k037122_2" : "k037122_1"); return k037122_char_r(k037122, offset, mem_mask); } -static WRITE32_HANDLER( hornet_k037122_char_w ) +WRITE32_MEMBER(hornet_state::hornet_k037122_char_w) { - device_t *k037122 = space->machine().device(get_cgboard_id() ? "k037122_2" : "k037122_1"); + device_t *k037122 = machine().device(get_cgboard_id() ? "k037122_2" : "k037122_1"); k037122_char_w(k037122, offset, data, mem_mask); } -static READ32_HANDLER( hornet_k037122_reg_r ) +READ32_MEMBER(hornet_state::hornet_k037122_reg_r) { - device_t *k037122 = space->machine().device(get_cgboard_id() ? "k037122_2" : "k037122_1"); + device_t *k037122 = machine().device(get_cgboard_id() ? "k037122_2" : "k037122_1"); return k037122_reg_r(k037122, offset, mem_mask); } -static WRITE32_HANDLER( hornet_k037122_reg_w ) +WRITE32_MEMBER(hornet_state::hornet_k037122_reg_w) { - device_t *k037122 = space->machine().device(get_cgboard_id() ? "k037122_2" : "k037122_1"); + device_t *k037122 = machine().device(get_cgboard_id() ? "k037122_2" : "k037122_1"); k037122_reg_w(k037122, offset, data, mem_mask); } @@ -435,19 +455,19 @@ static SCREEN_UPDATE_RGB32( hornet_2board ) /*****************************************************************************/ -static READ8_HANDLER( sysreg_r ) +READ8_MEMBER(hornet_state::sysreg_r) { UINT8 r = 0; static const char *const portnames[] = { "IN0", "IN1", "IN2" }; - device_t *adc12138 = space->machine().device("adc12138"); - eeprom_device *eeprom = space->machine().device<eeprom_device>("eeprom"); + device_t *adc12138 = machine().device("adc12138"); + eeprom_device *eeprom = machine().device<eeprom_device>("eeprom"); switch (offset) { case 0: /* I/O port 0 */ case 1: /* I/O port 1 */ case 2: /* I/O port 2 */ - r = input_port_read(space->machine(), portnames[offset]); + r = input_port_read(machine(), portnames[offset]); break; case 3: /* I/O port 3 */ @@ -465,25 +485,24 @@ static READ8_HANDLER( sysreg_r ) break; case 4: /* I/O port 4 - DIP switches */ - r = input_port_read(space->machine(), "DSW"); + r = input_port_read(machine(), "DSW"); break; } return r; } -static WRITE8_HANDLER( sysreg_w ) +WRITE8_MEMBER(hornet_state::sysreg_w) { - hornet_state *state = space->machine().driver_data<hornet_state>(); - device_t *adc12138 = space->machine().device("adc12138"); + device_t *adc12138 = machine().device("adc12138"); switch (offset) { case 0: /* LED Register 0 */ - state->m_led_reg0 = data; + m_led_reg0 = data; break; case 1: /* LED Register 1 */ - state->m_led_reg1 = data; + m_led_reg1 = data; break; case 2: /* Parallel data register */ @@ -501,7 +520,7 @@ static WRITE8_HANDLER( sysreg_w ) 0x02 = LAMP1 0x01 = LAMP0 */ - input_port_write(space->machine(), "EEPROMOUT", data, 0xff); + input_port_write(machine(), "EEPROMOUT", data, 0xff); mame_printf_debug("System register 0 = %02X\n", data); break; @@ -521,7 +540,7 @@ static WRITE8_HANDLER( sysreg_w ) adc1213x_di_w(adc12138, 0, (data >> 1) & 0x1); adc1213x_sclk_w(adc12138, 0, data & 0x1); - cputag_set_input_line(space->machine(), "audiocpu", INPUT_LINE_RESET, (data & 0x80) ? CLEAR_LINE : ASSERT_LINE); + cputag_set_input_line(machine(), "audiocpu", INPUT_LINE_RESET, (data & 0x80) ? CLEAR_LINE : ASSERT_LINE); mame_printf_debug("System register 1 = %02X\n", data); break; @@ -544,7 +563,7 @@ static WRITE8_HANDLER( sysreg_w ) 0x80 = WDTCLK */ if (data & 0x80) - watchdog_reset(space->machine()); + watchdog_reset(machine()); break; case 7: /* CG Control Register */ @@ -556,9 +575,9 @@ static WRITE8_HANDLER( sysreg_w ) 0x01 = EXRGB */ if (data & 0x80) - cputag_set_input_line(space->machine(), "maincpu", INPUT_LINE_IRQ1, CLEAR_LINE); + cputag_set_input_line(machine(), "maincpu", INPUT_LINE_IRQ1, CLEAR_LINE); if (data & 0x40) - cputag_set_input_line(space->machine(), "maincpu", INPUT_LINE_IRQ0, CLEAR_LINE); + cputag_set_input_line(machine(), "maincpu", INPUT_LINE_IRQ0, CLEAR_LINE); set_cgboard_id((data >> 4) & 3); break; } @@ -566,39 +585,37 @@ static WRITE8_HANDLER( sysreg_w ) /*****************************************************************************/ -static WRITE32_HANDLER( comm1_w ) +WRITE32_MEMBER(hornet_state::comm1_w) { printf("comm1_w: %08X, %08X, %08X\n", offset, data, mem_mask); } -static WRITE32_HANDLER( comm_rombank_w ) +WRITE32_MEMBER(hornet_state::comm_rombank_w) { int bank = data >> 24; - UINT8 *usr3 = space->machine().region("user3")->base(); + UINT8 *usr3 = machine().region("user3")->base(); if (usr3 != NULL) - memory_set_bank(space->machine(), "bank1", bank & 0x7f); + memory_set_bank(machine(), "bank1", bank & 0x7f); } -static READ32_HANDLER( comm0_unk_r ) +READ32_MEMBER(hornet_state::comm0_unk_r) { // printf("comm0_unk_r: %08X, %08X\n", offset, mem_mask); return 0xffffffff; } -static READ32_HANDLER(gun_r) +READ32_MEMBER(hornet_state::gun_r) { - hornet_state *state = space->machine().driver_data<hornet_state>(); - return state->m_gn680_ret0<<16 | state->m_gn680_ret1; + return m_gn680_ret0<<16 | m_gn680_ret1; } -static WRITE32_HANDLER(gun_w) +WRITE32_MEMBER(hornet_state::gun_w) { - hornet_state *state = space->machine().driver_data<hornet_state>(); if (mem_mask == 0xffff0000) { - state->m_gn680_latch = data>>16; - cputag_set_input_line(space->machine(), "gn680", M68K_IRQ_6, HOLD_LINE); + m_gn680_latch = data>>16; + cputag_set_input_line(machine(), "gn680", M68K_IRQ_6, HOLD_LINE); } } @@ -606,20 +623,20 @@ static WRITE32_HANDLER(gun_w) static ADDRESS_MAP_START( hornet_map, AS_PROGRAM, 32, hornet_state ) AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_BASE(m_workram) /* Work RAM */ - AM_RANGE(0x74000000, 0x740000ff) AM_READWRITE_LEGACY(hornet_k037122_reg_r, hornet_k037122_reg_w) - AM_RANGE(0x74020000, 0x7403ffff) AM_READWRITE_LEGACY(hornet_k037122_sram_r, hornet_k037122_sram_w) - AM_RANGE(0x74040000, 0x7407ffff) AM_READWRITE_LEGACY(hornet_k037122_char_r, hornet_k037122_char_w) - AM_RANGE(0x74080000, 0x7408000f) AM_READWRITE_LEGACY(gun_r, gun_w) + AM_RANGE(0x74000000, 0x740000ff) AM_READWRITE(hornet_k037122_reg_r, hornet_k037122_reg_w) + AM_RANGE(0x74020000, 0x7403ffff) AM_READWRITE(hornet_k037122_sram_r, hornet_k037122_sram_w) + AM_RANGE(0x74040000, 0x7407ffff) AM_READWRITE(hornet_k037122_char_r, hornet_k037122_char_w) + AM_RANGE(0x74080000, 0x7408000f) AM_READWRITE(gun_r, gun_w) AM_RANGE(0x78000000, 0x7800ffff) AM_READWRITE_LEGACY(cgboard_dsp_shared_r_ppc, cgboard_dsp_shared_w_ppc) AM_RANGE(0x780c0000, 0x780c0003) AM_READWRITE_LEGACY(cgboard_dsp_comm_r_ppc, cgboard_dsp_comm_w_ppc) - AM_RANGE(0x7d000000, 0x7d00ffff) AM_READ8_LEGACY(sysreg_r, 0xffffffff) - AM_RANGE(0x7d010000, 0x7d01ffff) AM_WRITE8_LEGACY(sysreg_w, 0xffffffff) + AM_RANGE(0x7d000000, 0x7d00ffff) AM_READ8(sysreg_r, 0xffffffff) + AM_RANGE(0x7d010000, 0x7d01ffff) AM_WRITE8(sysreg_w, 0xffffffff) AM_RANGE(0x7d020000, 0x7d021fff) AM_DEVREADWRITE8_LEGACY("m48t58", timekeeper_r, timekeeper_w, 0xffffffff) /* M48T58Y RTC/NVRAM */ AM_RANGE(0x7d030000, 0x7d030007) AM_DEVREADWRITE_LEGACY("k056800", k056800_host_r, k056800_host_w) AM_RANGE(0x7d042000, 0x7d043fff) AM_RAM /* COMM BOARD 0 */ - AM_RANGE(0x7d044000, 0x7d044007) AM_READ_LEGACY(comm0_unk_r) - AM_RANGE(0x7d048000, 0x7d048003) AM_WRITE_LEGACY(comm1_w) - AM_RANGE(0x7d04a000, 0x7d04a003) AM_WRITE_LEGACY(comm_rombank_w) + AM_RANGE(0x7d044000, 0x7d044007) AM_READ(comm0_unk_r) + AM_RANGE(0x7d048000, 0x7d048003) AM_WRITE(comm1_w) + AM_RANGE(0x7d04a000, 0x7d04a003) AM_WRITE(comm_rombank_w) AM_RANGE(0x7d050000, 0x7d05ffff) AM_ROMBANK("bank1") /* COMM BOARD 1 */ AM_RANGE(0x7e000000, 0x7e7fffff) AM_ROM AM_REGION("user2", 0) /* Data ROM */ AM_RANGE(0x7f000000, 0x7f3fffff) AM_ROM AM_SHARE("share2") @@ -641,30 +658,28 @@ ADDRESS_MAP_END /*****************************************************************************/ -static WRITE16_HANDLER(gn680_sysctrl) +WRITE16_MEMBER(hornet_state::gn680_sysctrl) { // bit 15 = watchdog toggle // lower 4 bits = LEDs? } -static READ16_HANDLER(gn680_latch_r) +READ16_MEMBER(hornet_state::gn680_latch_r) { - hornet_state *state = space->machine().driver_data<hornet_state>(); - cputag_set_input_line(space->machine(), "gn680", M68K_IRQ_6, CLEAR_LINE); + cputag_set_input_line(machine(), "gn680", M68K_IRQ_6, CLEAR_LINE); - return state->m_gn680_latch; + return m_gn680_latch; } -static WRITE16_HANDLER(gn680_latch_w) +WRITE16_MEMBER(hornet_state::gn680_latch_w) { - hornet_state *state = space->machine().driver_data<hornet_state>(); if (offset) { - state->m_gn680_ret1 = data; + m_gn680_ret1 = data; } else { - state->m_gn680_ret0 = data; + m_gn680_ret0 = data; } } @@ -674,41 +689,37 @@ static WRITE16_HANDLER(gn680_latch_w) static ADDRESS_MAP_START( gn680_memmap, AS_PROGRAM, 16, hornet_state ) AM_RANGE(0x000000, 0x01ffff) AM_ROM AM_RANGE(0x200000, 0x203fff) AM_RAM - AM_RANGE(0x300000, 0x300001) AM_WRITE_LEGACY(gn680_sysctrl) + AM_RANGE(0x300000, 0x300001) AM_WRITE(gn680_sysctrl) AM_RANGE(0x314000, 0x317fff) AM_RAM - AM_RANGE(0x400000, 0x400003) AM_READWRITE_LEGACY(gn680_latch_r, gn680_latch_w) + AM_RANGE(0x400000, 0x400003) AM_READWRITE(gn680_latch_r, gn680_latch_w) AM_RANGE(0x400008, 0x400009) AM_WRITENOP // writes 0001 00fe each time IRQ 6 triggers ADDRESS_MAP_END /*****************************************************************************/ -static READ32_HANDLER( dsp_dataram0_r ) +READ32_MEMBER(hornet_state::dsp_dataram0_r) { - hornet_state *state = space->machine().driver_data<hornet_state>(); - return state->m_sharc_dataram[0][offset] & 0xffff; + return m_sharc_dataram[0][offset] & 0xffff; } -static WRITE32_HANDLER( dsp_dataram0_w ) +WRITE32_MEMBER(hornet_state::dsp_dataram0_w) { - hornet_state *state = space->machine().driver_data<hornet_state>(); - state->m_sharc_dataram[0][offset] = data; + m_sharc_dataram[0][offset] = data; } -static READ32_HANDLER( dsp_dataram1_r ) +READ32_MEMBER(hornet_state::dsp_dataram1_r) { - hornet_state *state = space->machine().driver_data<hornet_state>(); - return state->m_sharc_dataram[1][offset] & 0xffff; + return m_sharc_dataram[1][offset] & 0xffff; } -static WRITE32_HANDLER( dsp_dataram1_w ) +WRITE32_MEMBER(hornet_state::dsp_dataram1_w) { - hornet_state *state = space->machine().driver_data<hornet_state>(); - state->m_sharc_dataram[1][offset] = data; + m_sharc_dataram[1][offset] = data; } static ADDRESS_MAP_START( sharc0_map, AS_DATA, 32, hornet_state ) AM_RANGE(0x0400000, 0x041ffff) AM_READWRITE_LEGACY(cgboard_0_shared_sharc_r, cgboard_0_shared_sharc_w) - AM_RANGE(0x0500000, 0x05fffff) AM_READWRITE_LEGACY(dsp_dataram0_r, dsp_dataram0_w) AM_BASE(m_sharc_dataram[0]) + AM_RANGE(0x0500000, 0x05fffff) AM_READWRITE(dsp_dataram0_r, dsp_dataram0_w) AM_BASE(m_sharc_dataram[0]) AM_RANGE(0x1400000, 0x14fffff) AM_RAM AM_RANGE(0x2400000, 0x27fffff) AM_DEVREADWRITE_LEGACY("voodoo0", voodoo_r, voodoo_w) AM_RANGE(0x3400000, 0x34000ff) AM_READWRITE_LEGACY(cgboard_0_comm_sharc_r, cgboard_0_comm_sharc_w) @@ -718,7 +729,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( sharc1_map, AS_DATA, 32, hornet_state ) AM_RANGE(0x0400000, 0x041ffff) AM_READWRITE_LEGACY(cgboard_1_shared_sharc_r, cgboard_1_shared_sharc_w) - AM_RANGE(0x0500000, 0x05fffff) AM_READWRITE_LEGACY(dsp_dataram1_r, dsp_dataram1_w) AM_BASE(m_sharc_dataram[1]) + AM_RANGE(0x0500000, 0x05fffff) AM_READWRITE(dsp_dataram1_r, dsp_dataram1_w) AM_BASE(m_sharc_dataram[1]) AM_RANGE(0x1400000, 0x14fffff) AM_RAM AM_RANGE(0x2400000, 0x27fffff) AM_DEVREADWRITE_LEGACY("voodoo1", voodoo_r, voodoo_w) AM_RANGE(0x3400000, 0x34000ff) AM_READWRITE_LEGACY(cgboard_1_comm_sharc_r, cgboard_1_comm_sharc_w) diff --git a/src/mame/drivers/hotblock.c b/src/mame/drivers/hotblock.c index 2603c741d44..42ec8220f7c 100644 --- a/src/mame/drivers/hotblock.c +++ b/src/mame/drivers/hotblock.c @@ -60,72 +60,75 @@ public: /* memory */ UINT8 m_pal[0x10000]; + DECLARE_READ8_MEMBER(hotblock_video_read); + DECLARE_READ8_MEMBER(hotblock_port4_r); + DECLARE_WRITE8_MEMBER(hotblock_port4_w); + DECLARE_WRITE8_MEMBER(hotblock_port0_w); + DECLARE_WRITE8_MEMBER(hotblock_video_write); }; -static READ8_HANDLER( hotblock_video_read ) +READ8_MEMBER(hotblock_state::hotblock_video_read) { - hotblock_state *state = space->machine().driver_data<hotblock_state>(); /* right?, anything else?? */ - if (state->m_port0 & 0x20) // port 0 = a8 e8 -- palette + if (m_port0 & 0x20) // port 0 = a8 e8 -- palette { - return state->m_pal[offset]; + return m_pal[offset]; } else // port 0 = 88 c8 { - return state->m_vram[offset]; + return m_vram[offset]; } } /* port 4 is some kind of eeprom / storage .. used to store the scores */ -static READ8_HANDLER( hotblock_port4_r ) +READ8_MEMBER(hotblock_state::hotblock_port4_r) { // mame_printf_debug("port4_r\n"); return 0x00; } -static WRITE8_HANDLER( hotblock_port4_w ) +WRITE8_MEMBER(hotblock_state::hotblock_port4_w) { -// mame_printf_debug("port4_w: pc = %06x : data %04x\n", cpu_get_pc(&space->device()), data); -// popmessage("port4_w: pc = %06x : data %04x", cpu_get_pc(&space->device()), data); - hotblock_state *state = space->machine().driver_data<hotblock_state>(); - state->m_port4 = data; +// mame_printf_debug("port4_w: pc = %06x : data %04x\n", cpu_get_pc(&space.device()), data); +// popmessage("port4_w: pc = %06x : data %04x", cpu_get_pc(&space.device()), data); + + m_port4 = data; } -static WRITE8_HANDLER( hotblock_port0_w ) +WRITE8_MEMBER(hotblock_state::hotblock_port0_w) { -// popmessage("port4_w: pc = %06x : data %04x", cpu_get_pc(&space->device()), data); - hotblock_state *state = space->machine().driver_data<hotblock_state>(); - state->m_port0 = data; +// popmessage("port4_w: pc = %06x : data %04x", cpu_get_pc(&space.device()), data); + + m_port0 = data; } -static WRITE8_HANDLER( hotblock_video_write ) +WRITE8_MEMBER(hotblock_state::hotblock_video_write) { - hotblock_state *state = space->machine().driver_data<hotblock_state>(); /* right?, anything else?? */ - if (state->m_port0 & 0x20) // port 0 = a8 e8 -- palette + if (m_port0 & 0x20) // port 0 = a8 e8 -- palette { - state->m_pal[offset] = data; + m_pal[offset] = data; } else // port 0 = 88 c8 { - state->m_vram[offset] = data; + m_vram[offset] = data; } } static ADDRESS_MAP_START( hotblock_map, AS_PROGRAM, 8, hotblock_state ) AM_RANGE(0x00000, 0x0ffff) AM_RAM - AM_RANGE(0x10000, 0x1ffff) AM_READWRITE_LEGACY(hotblock_video_read, hotblock_video_write) AM_BASE(m_vram) + AM_RANGE(0x10000, 0x1ffff) AM_READWRITE(hotblock_video_read, hotblock_video_write) AM_BASE(m_vram) AM_RANGE(0x20000, 0xfffff) AM_ROM ADDRESS_MAP_END static ADDRESS_MAP_START( hotblock_io, AS_IO, 8, hotblock_state ) - AM_RANGE(0x0000, 0x0000) AM_WRITE_LEGACY(hotblock_port0_w) - AM_RANGE(0x0004, 0x0004) AM_READWRITE_LEGACY(hotblock_port4_r, hotblock_port4_w) + AM_RANGE(0x0000, 0x0000) AM_WRITE(hotblock_port0_w) + AM_RANGE(0x0004, 0x0004) AM_READWRITE(hotblock_port4_r, hotblock_port4_w) AM_RANGE(0x8000, 0x8001) AM_DEVWRITE_LEGACY("aysnd", ay8910_address_data_w) AM_RANGE(0x8001, 0x8001) AM_DEVREAD_LEGACY("aysnd", ay8910_r) ADDRESS_MAP_END diff --git a/src/mame/drivers/hotstuff.c b/src/mame/drivers/hotstuff.c index 5ad9a65d08a..3d89f3ae855 100644 --- a/src/mame/drivers/hotstuff.c +++ b/src/mame/drivers/hotstuff.c @@ -15,6 +15,10 @@ public: { UINT8 index; }m_ioboard; + DECLARE_READ8_MEMBER(ioboard_status_r); + DECLARE_READ8_MEMBER(ioboard_unk_r); + DECLARE_WRITE8_MEMBER(ioboard_data_w); + DECLARE_WRITE8_MEMBER(ioboard_reg_w); }; @@ -67,39 +71,37 @@ SCREEN_UPDATE_RGB32( hotstuff ) } /* TODO: identify this ... */ -static READ8_HANDLER( ioboard_status_r ) +READ8_MEMBER(hotstuff_state::ioboard_status_r) { - hotstuff_state *state = space->machine().driver_data<hotstuff_state>(); UINT8 res; printf("STATUS R\n"); - switch(state->m_ioboard.index) + switch(m_ioboard.index) { case 0x0c: res = 0x80|0x10; break; - default: res = 0; break;//space->machine().rand(); break; + default: res = 0; break;//machine().rand(); break; } return res; } -static READ8_HANDLER( ioboard_unk_r ) +READ8_MEMBER(hotstuff_state::ioboard_unk_r) { printf("UNK R\n"); return 0xff; } -static WRITE8_HANDLER( ioboard_data_w ) +WRITE8_MEMBER(hotstuff_state::ioboard_data_w) { printf("DATA %02x\n",data); } -static WRITE8_HANDLER( ioboard_reg_w ) +WRITE8_MEMBER(hotstuff_state::ioboard_reg_w) { - hotstuff_state *state = space->machine().driver_data<hotstuff_state>(); - state->m_ioboard.index = data; + m_ioboard.index = data; printf("REG %02x\n",data); } @@ -109,8 +111,8 @@ static ADDRESS_MAP_START( hotstuff_map, AS_PROGRAM, 16, hotstuff_state ) AM_RANGE(0x400000, 0x40ffff) AM_RAM - AM_RANGE(0x680000, 0x680001) AM_READWRITE8_LEGACY(ioboard_status_r,ioboard_data_w,0xff00) - AM_RANGE(0x680000, 0x680001) AM_READWRITE8_LEGACY(ioboard_unk_r,ioboard_reg_w,0x00ff) + AM_RANGE(0x680000, 0x680001) AM_READWRITE8(ioboard_status_r,ioboard_data_w,0xff00) + AM_RANGE(0x680000, 0x680001) AM_READWRITE8(ioboard_unk_r,ioboard_reg_w,0x00ff) AM_RANGE(0x980000, 0x9bffff) AM_RAM AM_BASE(m_bitmapram) ADDRESS_MAP_END diff --git a/src/mame/drivers/hvyunit.c b/src/mame/drivers/hvyunit.c index 0a69fbbd3fd..34cf30dee63 100644 --- a/src/mame/drivers/hvyunit.c +++ b/src/mame/drivers/hvyunit.c @@ -99,6 +99,27 @@ public: device_t *m_sound_cpu; device_t *m_mermaid; device_t *m_pandora; + DECLARE_WRITE8_MEMBER(trigger_nmi_on_slave_cpu); + DECLARE_WRITE8_MEMBER(master_bankswitch_w); + DECLARE_WRITE8_MEMBER(mermaid_data_w); + DECLARE_READ8_MEMBER(mermaid_data_r); + DECLARE_READ8_MEMBER(mermaid_status_r); + DECLARE_WRITE8_MEMBER(trigger_nmi_on_sound_cpu2); + DECLARE_WRITE8_MEMBER(hu_videoram_w); + DECLARE_WRITE8_MEMBER(hu_colorram_w); + DECLARE_WRITE8_MEMBER(slave_bankswitch_w); + DECLARE_WRITE8_MEMBER(hu_scrollx_w); + DECLARE_WRITE8_MEMBER(hu_scrolly_w); + DECLARE_WRITE8_MEMBER(coin_count_w); + DECLARE_WRITE8_MEMBER(sound_bankswitch_w); + DECLARE_READ8_MEMBER(mermaid_p0_r); + DECLARE_WRITE8_MEMBER(mermaid_p0_w); + DECLARE_READ8_MEMBER(mermaid_p1_r); + DECLARE_WRITE8_MEMBER(mermaid_p1_w); + DECLARE_READ8_MEMBER(mermaid_p2_r); + DECLARE_WRITE8_MEMBER(mermaid_p2_w); + DECLARE_READ8_MEMBER(mermaid_p3_r); + DECLARE_WRITE8_MEMBER(mermaid_p3_w); }; @@ -186,43 +207,39 @@ static SCREEN_VBLANK( hvyunit ) * *************************************/ -static WRITE8_HANDLER( trigger_nmi_on_slave_cpu ) +WRITE8_MEMBER(hvyunit_state::trigger_nmi_on_slave_cpu) { - hvyunit_state *state = space->machine().driver_data<hvyunit_state>(); - device_set_input_line(state->m_slave_cpu, INPUT_LINE_NMI, PULSE_LINE); + device_set_input_line(m_slave_cpu, INPUT_LINE_NMI, PULSE_LINE); } -static WRITE8_HANDLER( master_bankswitch_w ) +WRITE8_MEMBER(hvyunit_state::master_bankswitch_w) { - unsigned char *ROM = space->machine().region("master")->base(); + unsigned char *ROM = machine().region("master")->base(); int bank = data & 7; ROM = &ROM[0x4000 * bank]; - memory_set_bankptr(space->machine(), "bank1", ROM); + memory_set_bankptr(machine(), "bank1", ROM); } -static WRITE8_HANDLER( mermaid_data_w ) +WRITE8_MEMBER(hvyunit_state::mermaid_data_w) { - hvyunit_state *state = space->machine().driver_data<hvyunit_state>(); - state->m_data_to_mermaid = data; - state->m_z80_to_mermaid_full = 1; - state->m_mermaid_int0_l = 0; - device_set_input_line(state->m_mermaid, INPUT_LINE_IRQ0, ASSERT_LINE); + m_data_to_mermaid = data; + m_z80_to_mermaid_full = 1; + m_mermaid_int0_l = 0; + device_set_input_line(m_mermaid, INPUT_LINE_IRQ0, ASSERT_LINE); } -static READ8_HANDLER( mermaid_data_r ) +READ8_MEMBER(hvyunit_state::mermaid_data_r) { - hvyunit_state *state = space->machine().driver_data<hvyunit_state>(); - state->m_mermaid_to_z80_full = 0; - return state->m_data_to_z80; + m_mermaid_to_z80_full = 0; + return m_data_to_z80; } -static READ8_HANDLER( mermaid_status_r ) +READ8_MEMBER(hvyunit_state::mermaid_status_r) { - hvyunit_state *state = space->machine().driver_data<hvyunit_state>(); - return (!state->m_mermaid_to_z80_full << 2) | (state->m_z80_to_mermaid_full << 3); + return (!m_mermaid_to_z80_full << 2) | (m_z80_to_mermaid_full << 3); } @@ -232,58 +249,52 @@ static READ8_HANDLER( mermaid_status_r ) * *************************************/ -static WRITE8_HANDLER( trigger_nmi_on_sound_cpu2 ) +WRITE8_MEMBER(hvyunit_state::trigger_nmi_on_sound_cpu2) { - hvyunit_state *state = space->machine().driver_data<hvyunit_state>(); soundlatch_w(space, 0, data); - device_set_input_line(state->m_sound_cpu, INPUT_LINE_NMI, PULSE_LINE); + device_set_input_line(m_sound_cpu, INPUT_LINE_NMI, PULSE_LINE); } -static WRITE8_HANDLER( hu_videoram_w ) +WRITE8_MEMBER(hvyunit_state::hu_videoram_w) { - hvyunit_state *state = space->machine().driver_data<hvyunit_state>(); - state->m_videoram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_videoram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( hu_colorram_w ) +WRITE8_MEMBER(hvyunit_state::hu_colorram_w) { - hvyunit_state *state = space->machine().driver_data<hvyunit_state>(); - state->m_colorram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_colorram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( slave_bankswitch_w ) +WRITE8_MEMBER(hvyunit_state::slave_bankswitch_w) { - hvyunit_state *state = space->machine().driver_data<hvyunit_state>(); - unsigned char *ROM = space->machine().region("slave")->base(); + unsigned char *ROM = machine().region("slave")->base(); int bank = (data & 0x03); - state->m_port0_data = data; + m_port0_data = data; ROM = &ROM[0x4000 * bank]; - memory_set_bankptr(space->machine(), "bank2", ROM); + memory_set_bankptr(machine(), "bank2", ROM); } -static WRITE8_HANDLER( hu_scrollx_w ) +WRITE8_MEMBER(hvyunit_state::hu_scrollx_w) { - hvyunit_state *state = space->machine().driver_data<hvyunit_state>(); - state->m_scrollx = data; + m_scrollx = data; } -static WRITE8_HANDLER( hu_scrolly_w ) +WRITE8_MEMBER(hvyunit_state::hu_scrolly_w) { - hvyunit_state *state = space->machine().driver_data<hvyunit_state>(); - state->m_scrolly = data; + m_scrolly = data; } -static WRITE8_HANDLER( coin_count_w ) +WRITE8_MEMBER(hvyunit_state::coin_count_w) { - coin_counter_w(space->machine(), 0, data & 1); - coin_counter_w(space->machine(), 1, data & 2); + coin_counter_w(machine(), 0, data & 1); + coin_counter_w(machine(), 1, data & 2); } @@ -293,13 +304,13 @@ static WRITE8_HANDLER( coin_count_w ) * *************************************/ -static WRITE8_HANDLER( sound_bankswitch_w ) +WRITE8_MEMBER(hvyunit_state::sound_bankswitch_w) { - unsigned char *ROM = space->machine().region("soundcpu")->base(); + unsigned char *ROM = machine().region("soundcpu")->base(); int bank = data & 0x3; ROM = &ROM[0x4000 * bank]; - memory_set_bankptr(space->machine(), "bank3", ROM); + memory_set_bankptr(machine(), "bank3", ROM); } @@ -309,80 +320,74 @@ static WRITE8_HANDLER( sound_bankswitch_w ) * *************************************/ -static READ8_HANDLER( mermaid_p0_r ) +READ8_MEMBER(hvyunit_state::mermaid_p0_r) { // ? return 0; } -static WRITE8_HANDLER( mermaid_p0_w ) +WRITE8_MEMBER(hvyunit_state::mermaid_p0_w) { - hvyunit_state *state = space->machine().driver_data<hvyunit_state>(); - if (!BIT(state->m_mermaid_p[0], 1) && BIT(data, 1)) + if (!BIT(m_mermaid_p[0], 1) && BIT(data, 1)) { - state->m_mermaid_to_z80_full = 1; - state->m_data_to_z80 = state->m_mermaid_p[1]; + m_mermaid_to_z80_full = 1; + m_data_to_z80 = m_mermaid_p[1]; } if (BIT(data, 0) == 1) - state->m_z80_to_mermaid_full = 0; + m_z80_to_mermaid_full = 0; - state->m_mermaid_p[0] = data; + m_mermaid_p[0] = data; } -static READ8_HANDLER( mermaid_p1_r ) +READ8_MEMBER(hvyunit_state::mermaid_p1_r) { - hvyunit_state *state = space->machine().driver_data<hvyunit_state>(); - if (BIT(state->m_mermaid_p[0], 0) == 0) - return state->m_data_to_mermaid; + if (BIT(m_mermaid_p[0], 0) == 0) + return m_data_to_mermaid; else return 0; // ? } -static WRITE8_HANDLER( mermaid_p1_w ) +WRITE8_MEMBER(hvyunit_state::mermaid_p1_w) { - hvyunit_state *state = space->machine().driver_data<hvyunit_state>(); if (data == 0xff) { - state->m_mermaid_int0_l = 1; - device_set_input_line(state->m_mermaid, INPUT_LINE_IRQ0, CLEAR_LINE); + m_mermaid_int0_l = 1; + device_set_input_line(m_mermaid, INPUT_LINE_IRQ0, CLEAR_LINE); } - state->m_mermaid_p[1] = data; + m_mermaid_p[1] = data; } -static READ8_HANDLER( mermaid_p2_r ) +READ8_MEMBER(hvyunit_state::mermaid_p2_r) { - hvyunit_state *state = space->machine().driver_data<hvyunit_state>(); - switch ((state->m_mermaid_p[0] >> 2) & 3) + switch ((m_mermaid_p[0] >> 2) & 3) { - case 0: return input_port_read(space->machine(), "IN1"); - case 1: return input_port_read(space->machine(), "IN2"); - case 2: return input_port_read(space->machine(), "IN0"); + case 0: return input_port_read(machine(), "IN1"); + case 1: return input_port_read(machine(), "IN2"); + case 2: return input_port_read(machine(), "IN0"); default: return 0xff; } } -static WRITE8_HANDLER( mermaid_p2_w ) +WRITE8_MEMBER(hvyunit_state::mermaid_p2_w) { - hvyunit_state *state = space->machine().driver_data<hvyunit_state>(); - state->m_mermaid_p[2] = data; + m_mermaid_p[2] = data; } -static READ8_HANDLER( mermaid_p3_r ) +READ8_MEMBER(hvyunit_state::mermaid_p3_r) { - hvyunit_state *state = space->machine().driver_data<hvyunit_state>(); UINT8 dsw = 0; - UINT8 dsw1 = input_port_read(space->machine(), "DSW1"); - UINT8 dsw2 = input_port_read(space->machine(), "DSW2"); + UINT8 dsw1 = input_port_read(machine(), "DSW1"); + UINT8 dsw2 = input_port_read(machine(), "DSW2"); - switch ((state->m_mermaid_p[0] >> 5) & 3) + switch ((m_mermaid_p[0] >> 5) & 3) { case 0: dsw = (BIT(dsw2, 4) << 3) | (BIT(dsw2, 0) << 2) | (BIT(dsw1, 4) << 1) | BIT(dsw1, 0); break; case 1: dsw = (BIT(dsw2, 5) << 3) | (BIT(dsw2, 1) << 2) | (BIT(dsw1, 5) << 1) | BIT(dsw1, 1); break; @@ -390,15 +395,14 @@ static READ8_HANDLER( mermaid_p3_r ) case 3: dsw = (BIT(dsw2, 7) << 3) | (BIT(dsw2, 3) << 2) | (BIT(dsw1, 7) << 1) | BIT(dsw1, 3); break; } - return (dsw << 4) | (state->m_mermaid_int0_l << 2) | (state->m_mermaid_to_z80_full << 3); + return (dsw << 4) | (m_mermaid_int0_l << 2) | (m_mermaid_to_z80_full << 3); } -static WRITE8_HANDLER( mermaid_p3_w ) +WRITE8_MEMBER(hvyunit_state::mermaid_p3_w) { - hvyunit_state *state = space->machine().driver_data<hvyunit_state>(); - state->m_mermaid_p[3] = data; - device_set_input_line(state->m_slave_cpu, INPUT_LINE_RESET, data & 2 ? CLEAR_LINE : ASSERT_LINE); + m_mermaid_p[3] = data; + device_set_input_line(m_slave_cpu, INPUT_LINE_RESET, data & 2 ? CLEAR_LINE : ASSERT_LINE); } @@ -418,17 +422,17 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( master_io, AS_IO, 8, hvyunit_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE_LEGACY(master_bankswitch_w) - AM_RANGE(0x01, 0x01) AM_WRITE_LEGACY(master_bankswitch_w) // correct? - AM_RANGE(0x02, 0x02) AM_WRITE_LEGACY(trigger_nmi_on_slave_cpu) + AM_RANGE(0x00, 0x00) AM_WRITE(master_bankswitch_w) + AM_RANGE(0x01, 0x01) AM_WRITE(master_bankswitch_w) // correct? + AM_RANGE(0x02, 0x02) AM_WRITE(trigger_nmi_on_slave_cpu) ADDRESS_MAP_END static ADDRESS_MAP_START( slave_memory, AS_PROGRAM, 8, hvyunit_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2") - AM_RANGE(0xc000, 0xc3ff) AM_RAM_WRITE_LEGACY(hu_videoram_w) AM_BASE(m_videoram) - AM_RANGE(0xc400, 0xc7ff) AM_RAM_WRITE_LEGACY(hu_colorram_w) AM_BASE(m_colorram) + AM_RANGE(0xc000, 0xc3ff) AM_RAM_WRITE(hu_videoram_w) AM_BASE(m_videoram) + AM_RANGE(0xc400, 0xc7ff) AM_RAM_WRITE(hu_colorram_w) AM_BASE(m_colorram) AM_RANGE(0xd000, 0xd1ff) AM_RAM_WRITE_LEGACY(paletteram_xxxxRRRRGGGGBBBB_split2_w) AM_BASE_GENERIC(paletteram2) AM_RANGE(0xd800, 0xd9ff) AM_RAM_WRITE_LEGACY(paletteram_xxxxRRRRGGGGBBBB_split1_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0xd000, 0xdfff) AM_RAM @@ -437,13 +441,13 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( slave_io, AS_IO, 8, hvyunit_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE_LEGACY(slave_bankswitch_w) - AM_RANGE(0x02, 0x02) AM_WRITE_LEGACY(trigger_nmi_on_sound_cpu2) - AM_RANGE(0x04, 0x04) AM_READWRITE_LEGACY(mermaid_data_r, mermaid_data_w) - AM_RANGE(0x06, 0x06) AM_WRITE_LEGACY(hu_scrolly_w) - AM_RANGE(0x08, 0x08) AM_WRITE_LEGACY(hu_scrollx_w) - AM_RANGE(0x0c, 0x0c) AM_READ_LEGACY(mermaid_status_r) - AM_RANGE(0x0e, 0x0e) AM_WRITE_LEGACY(coin_count_w) + AM_RANGE(0x00, 0x00) AM_WRITE(slave_bankswitch_w) + AM_RANGE(0x02, 0x02) AM_WRITE(trigger_nmi_on_sound_cpu2) + AM_RANGE(0x04, 0x04) AM_READWRITE(mermaid_data_r, mermaid_data_w) + AM_RANGE(0x06, 0x06) AM_WRITE(hu_scrolly_w) + AM_RANGE(0x08, 0x08) AM_WRITE(hu_scrollx_w) + AM_RANGE(0x0c, 0x0c) AM_READ(mermaid_status_r) + AM_RANGE(0x0e, 0x0e) AM_WRITE(coin_count_w) // AM_RANGE(0x22, 0x22) AM_READ_LEGACY(hu_scrolly_hi_reset) //22/a2 taken from ram $f065 // AM_RANGE(0xa2, 0xa2) AM_READ_LEGACY(hu_scrolly_hi_set) @@ -458,17 +462,17 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( sound_io, AS_IO, 8, hvyunit_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE_LEGACY(sound_bankswitch_w) + AM_RANGE(0x00, 0x00) AM_WRITE(sound_bankswitch_w) AM_RANGE(0x02, 0x03) AM_DEVREADWRITE_LEGACY("ymsnd", ym2203_r, ym2203_w) AM_RANGE(0x04, 0x04) AM_READ_LEGACY(soundlatch_r) ADDRESS_MAP_END static ADDRESS_MAP_START( mcu_io, AS_IO, 8, hvyunit_state ) - AM_RANGE(MCS51_PORT_P0, MCS51_PORT_P0) AM_READWRITE_LEGACY(mermaid_p0_r, mermaid_p0_w) - AM_RANGE(MCS51_PORT_P1, MCS51_PORT_P1) AM_READWRITE_LEGACY(mermaid_p1_r, mermaid_p1_w) - AM_RANGE(MCS51_PORT_P2, MCS51_PORT_P2) AM_READWRITE_LEGACY(mermaid_p2_r, mermaid_p2_w) - AM_RANGE(MCS51_PORT_P3, MCS51_PORT_P3) AM_READWRITE_LEGACY(mermaid_p3_r, mermaid_p3_w) + AM_RANGE(MCS51_PORT_P0, MCS51_PORT_P0) AM_READWRITE(mermaid_p0_r, mermaid_p0_w) + AM_RANGE(MCS51_PORT_P1, MCS51_PORT_P1) AM_READWRITE(mermaid_p1_r, mermaid_p1_w) + AM_RANGE(MCS51_PORT_P2, MCS51_PORT_P2) AM_READWRITE(mermaid_p2_r, mermaid_p2_w) + AM_RANGE(MCS51_PORT_P3, MCS51_PORT_P3) AM_READWRITE(mermaid_p3_r, mermaid_p3_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/igs017.c b/src/mame/drivers/igs017.c index 97caecc2c2b..a2002bc50b8 100644 --- a/src/mame/drivers/igs017.c +++ b/src/mame/drivers/igs017.c @@ -78,6 +78,35 @@ public: UINT8 *m_spriteram; required_device<cpu_device> m_maincpu; + DECLARE_WRITE8_MEMBER(video_disable_w); + DECLARE_WRITE16_MEMBER(video_disable_lsb_w); + DECLARE_WRITE8_MEMBER(fg_w); + DECLARE_WRITE8_MEMBER(bg_w); + DECLARE_READ16_MEMBER(fg_lsb_r); + DECLARE_WRITE16_MEMBER(fg_lsb_w); + DECLARE_READ16_MEMBER(bg_lsb_r); + DECLARE_WRITE16_MEMBER(bg_lsb_w); + DECLARE_READ16_MEMBER(spriteram_lsb_r); + DECLARE_WRITE16_MEMBER(spriteram_lsb_w); + DECLARE_WRITE8_MEMBER(nmi_enable_w); + DECLARE_WRITE8_MEMBER(irq_enable_w); + DECLARE_WRITE8_MEMBER(input_select_w); + DECLARE_READ8_MEMBER(input_r); + DECLARE_WRITE16_MEMBER(mgcs_magic_w); + DECLARE_READ16_MEMBER(mgcs_magic_r); + DECLARE_WRITE16_MEMBER(irq1_enable_w); + DECLARE_WRITE16_MEMBER(irq2_enable_w); + DECLARE_WRITE16_MEMBER(mgcs_paletteram_w); + DECLARE_WRITE16_MEMBER(sdmg2_paletteram_w); + DECLARE_READ8_MEMBER(sdmg2_keys_r); + DECLARE_WRITE16_MEMBER(sdmg2_magic_w); + DECLARE_READ16_MEMBER(sdmg2_magic_r); + DECLARE_READ8_MEMBER(mgdh_keys_r); + DECLARE_WRITE16_MEMBER(mgdha_magic_w); + DECLARE_READ16_MEMBER(mgdha_magic_r); + DECLARE_WRITE8_MEMBER(tjsb_paletteram_w); + DECLARE_WRITE8_MEMBER(tjsb_output_w); + DECLARE_READ8_MEMBER(tjsb_input_r); }; @@ -86,15 +115,14 @@ public: Video Hardware ***************************************************************************/ -static WRITE8_HANDLER( video_disable_w ) +WRITE8_MEMBER(igs017_state::video_disable_w) { - igs017_state *state = space->machine().driver_data<igs017_state>(); - state->m_video_disable = data & 1; + m_video_disable = data & 1; if (data & (~1)) - logerror("PC %06X: unknown bits of video_disable written = %02x\n",cpu_get_pc(&space->device()),data); + logerror("PC %06X: unknown bits of video_disable written = %02x\n",cpu_get_pc(&space.device()),data); // popmessage("VIDEO %02X",data); } -static WRITE16_HANDLER( video_disable_lsb_w ) +WRITE16_MEMBER(igs017_state::video_disable_lsb_w) { if (ACCESSING_BITS_0_7) video_disable_w(space,offset,data); @@ -124,54 +152,48 @@ static TILE_GET_INFO( get_bg_tile_info ) SET_TILE_INFO(0, code, COLOR(attr)+8, TILE_FLIPXY( attr >> 5 )); } -static WRITE8_HANDLER( fg_w ) +WRITE8_MEMBER(igs017_state::fg_w) { - igs017_state *state = space->machine().driver_data<igs017_state>(); - state->m_fg_videoram[offset] = data; - state->m_fg_tilemap->mark_tile_dirty(offset/4); + m_fg_videoram[offset] = data; + m_fg_tilemap->mark_tile_dirty(offset/4); } -static WRITE8_HANDLER( bg_w ) +WRITE8_MEMBER(igs017_state::bg_w) { - igs017_state *state = space->machine().driver_data<igs017_state>(); - state->m_bg_videoram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset/4); + m_bg_videoram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset/4); } // 16-bit handlers for an 8-bit chip -static READ16_HANDLER( fg_lsb_r ) +READ16_MEMBER(igs017_state::fg_lsb_r) { - igs017_state *state = space->machine().driver_data<igs017_state>(); - return state->m_fg_videoram[offset]; + return m_fg_videoram[offset]; } -static WRITE16_HANDLER( fg_lsb_w ) +WRITE16_MEMBER(igs017_state::fg_lsb_w) { if (ACCESSING_BITS_0_7) fg_w(space,offset,data); } -static READ16_HANDLER( bg_lsb_r ) +READ16_MEMBER(igs017_state::bg_lsb_r) { - igs017_state *state = space->machine().driver_data<igs017_state>(); - return state->m_bg_videoram[offset]; + return m_bg_videoram[offset]; } -static WRITE16_HANDLER( bg_lsb_w ) +WRITE16_MEMBER(igs017_state::bg_lsb_w) { if (ACCESSING_BITS_0_7) bg_w(space,offset,data); } -static READ16_HANDLER( spriteram_lsb_r ) +READ16_MEMBER(igs017_state::spriteram_lsb_r) { - igs017_state *state = space->machine().driver_data<igs017_state>(); - return state->m_spriteram[offset]; + return m_spriteram[offset]; } -static WRITE16_HANDLER( spriteram_lsb_w ) +WRITE16_MEMBER(igs017_state::spriteram_lsb_w) { - igs017_state *state = space->machine().driver_data<igs017_state>(); if (ACCESSING_BITS_0_7) - state->m_spriteram[offset] = data; + m_spriteram[offset] = data; } @@ -1099,36 +1121,32 @@ static ADDRESS_MAP_START( iqblocka_map, AS_PROGRAM, 8, igs017_state ) AM_RANGE( 0x10000, 0x3ffff ) AM_ROM ADDRESS_MAP_END -static WRITE8_HANDLER( nmi_enable_w ) +WRITE8_MEMBER(igs017_state::nmi_enable_w) { - igs017_state *state = space->machine().driver_data<igs017_state>(); - state->m_nmi_enable = data & 1; + m_nmi_enable = data & 1; if (data & (~1)) - logerror("PC %06X: nmi_enable = %02x\n",cpu_get_pc(&space->device()),data); + logerror("PC %06X: nmi_enable = %02x\n",cpu_get_pc(&space.device()),data); } -static WRITE8_HANDLER( irq_enable_w ) +WRITE8_MEMBER(igs017_state::irq_enable_w) { - igs017_state *state = space->machine().driver_data<igs017_state>(); - state->m_irq_enable = data & 1; + m_irq_enable = data & 1; if (data & (~1)) - logerror("PC %06X: irq_enable = %02x\n",cpu_get_pc(&space->device()),data); + logerror("PC %06X: irq_enable = %02x\n",cpu_get_pc(&space.device()),data); } -static WRITE8_HANDLER( input_select_w ) +WRITE8_MEMBER(igs017_state::input_select_w) { - igs017_state *state = space->machine().driver_data<igs017_state>(); - state->m_input_select = data; + m_input_select = data; } -static READ8_HANDLER( input_r ) +READ8_MEMBER(igs017_state::input_r) { - igs017_state *state = space->machine().driver_data<igs017_state>(); - switch (state->m_input_select) + switch (m_input_select) { - case 0x00: return input_port_read(space->machine(), "PLAYER1"); - case 0x01: return input_port_read(space->machine(), "PLAYER2"); - case 0x02: return input_port_read(space->machine(), "COINS"); + case 0x00: return input_port_read(machine(), "PLAYER1"); + case 0x01: return input_port_read(machine(), "PLAYER2"); + case 0x02: return input_port_read(machine(), "COINS"); case 0x03: return 01; @@ -1155,7 +1173,7 @@ static READ8_HANDLER( input_r ) case 0x34: return 0x32; default: - logerror("PC %06X: input %02x read\n",cpu_get_pc(&space->device()),state->m_input_select); + logerror("PC %06X: input %02x read\n",cpu_get_pc(&space.device()),m_input_select); return 0xff; } } @@ -1170,16 +1188,16 @@ static ADDRESS_MAP_START( iqblocka_io, AS_IO, 8, igs017_state ) // AM_RANGE(0x200a, 0x200a) AM_WRITENOP AM_RANGE( 0x2010, 0x2013 ) AM_DEVREAD_LEGACY("ppi8255", ppi8255_r) - AM_RANGE( 0x2012, 0x2012 ) AM_WRITE_LEGACY(video_disable_w ) + AM_RANGE( 0x2012, 0x2012 ) AM_WRITE(video_disable_w ) - AM_RANGE( 0x2014, 0x2014 ) AM_WRITE_LEGACY(nmi_enable_w ) - AM_RANGE( 0x2015, 0x2015 ) AM_WRITE_LEGACY(irq_enable_w ) + AM_RANGE( 0x2014, 0x2014 ) AM_WRITE(nmi_enable_w ) + AM_RANGE( 0x2015, 0x2015 ) AM_WRITE(irq_enable_w ) - AM_RANGE( 0x4000, 0x5fff ) AM_RAM_WRITE_LEGACY(fg_w ) AM_BASE(m_fg_videoram ) - AM_RANGE( 0x6000, 0x7fff ) AM_RAM_WRITE_LEGACY(bg_w ) AM_BASE(m_bg_videoram ) + AM_RANGE( 0x4000, 0x5fff ) AM_RAM_WRITE(fg_w ) AM_BASE(m_fg_videoram ) + AM_RANGE( 0x6000, 0x7fff ) AM_RAM_WRITE(bg_w ) AM_BASE(m_bg_videoram ) - AM_RANGE( 0x8000, 0x8000 ) AM_WRITE_LEGACY(input_select_w ) - AM_RANGE( 0x8001, 0x8001 ) AM_READ_LEGACY(input_r ) + AM_RANGE( 0x8000, 0x8000 ) AM_WRITE(input_select_w ) + AM_RANGE( 0x8001, 0x8001 ) AM_READ(input_r ) AM_RANGE( 0x9000, 0x9000 ) AM_DEVREADWRITE("oki", okim6295_device, read, write) @@ -1192,30 +1210,29 @@ ADDRESS_MAP_END // mgcs -static WRITE16_HANDLER( mgcs_magic_w ) +WRITE16_MEMBER(igs017_state::mgcs_magic_w) { - igs017_state *state = space->machine().driver_data<igs017_state>(); - COMBINE_DATA(&state->m_igs_magic[offset]); + COMBINE_DATA(&m_igs_magic[offset]); if (offset == 0) return; - switch(state->m_igs_magic[0]) + switch(m_igs_magic[0]) { case 0x00: if (ACCESSING_BITS_0_7) { - state->m_input_select = data & 0xff; + m_input_select = data & 0xff; } - if ( state->m_input_select & ~0xf8 ) - logerror("%06x: warning, unknown bits written in input_select = %02x\n", cpu_get_pc(&space->device()), state->m_input_select); + if ( m_input_select & ~0xf8 ) + logerror("%06x: warning, unknown bits written in input_select = %02x\n", cpu_get_pc(&space.device()), m_input_select); break; case 0x01: if (ACCESSING_BITS_0_7) { - state->m_scramble_data = data & 0xff; + m_scramble_data = data & 0xff; } break; @@ -1223,20 +1240,19 @@ static WRITE16_HANDLER( mgcs_magic_w ) // case 0x03: ? default: - logerror("%06x: warning, writing to igs_magic %02x = %02x\n", cpu_get_pc(&space->device()), state->m_igs_magic[0], data); + logerror("%06x: warning, writing to igs_magic %02x = %02x\n", cpu_get_pc(&space.device()), m_igs_magic[0], data); } } -static READ16_HANDLER( mgcs_magic_r ) +READ16_MEMBER(igs017_state::mgcs_magic_r) { - igs017_state *state = space->machine().driver_data<igs017_state>(); - switch(state->m_igs_magic[0]) + switch(m_igs_magic[0]) { case 0x01: - return BITSWAP8(state->m_scramble_data, 4,5,6,7, 0,1,2,3); + return BITSWAP8(m_scramble_data, 4,5,6,7, 0,1,2,3); default: - logerror("%06x: warning, reading with igs_magic = %02x\n", cpu_get_pc(&space->device()), state->m_igs_magic[0]); + logerror("%06x: warning, reading with igs_magic = %02x\n", cpu_get_pc(&space.device()), m_igs_magic[0]); break; } @@ -1256,51 +1272,49 @@ static READ8_DEVICE_HANDLER( mgcs_keys_r ) return 0xff; } -static WRITE16_HANDLER( irq1_enable_w ) +WRITE16_MEMBER(igs017_state::irq1_enable_w) { - igs017_state *state = space->machine().driver_data<igs017_state>(); if (ACCESSING_BITS_0_7) - state->m_irq1_enable = data & 1; + m_irq1_enable = data & 1; if (data != 0 && data != 0xff) - logerror("PC %06X: irq1_enable = %04x\n",cpu_get_pc(&space->device()),data); + logerror("PC %06X: irq1_enable = %04x\n",cpu_get_pc(&space.device()),data); } -static WRITE16_HANDLER( irq2_enable_w ) +WRITE16_MEMBER(igs017_state::irq2_enable_w) { - igs017_state *state = space->machine().driver_data<igs017_state>(); if (ACCESSING_BITS_0_7) - state->m_irq2_enable = data & 1; + m_irq2_enable = data & 1; if (data != 0 && data != 0xff) - logerror("PC %06X: irq2_enable = %04x\n",cpu_get_pc(&space->device()),data); + logerror("PC %06X: irq2_enable = %04x\n",cpu_get_pc(&space.device()),data); } -static WRITE16_HANDLER( mgcs_paletteram_w ) +WRITE16_MEMBER(igs017_state::mgcs_paletteram_w) { - COMBINE_DATA(&space->machine().generic.paletteram.u16[offset]); + COMBINE_DATA(&machine().generic.paletteram.u16[offset]); - int bgr = ((space->machine().generic.paletteram.u16[offset/2*2+0] & 0xff) << 8) | (space->machine().generic.paletteram.u16[offset/2*2+1] & 0xff); + int bgr = ((machine().generic.paletteram.u16[offset/2*2+0] & 0xff) << 8) | (machine().generic.paletteram.u16[offset/2*2+1] & 0xff); // bitswap bgr = BITSWAP16(bgr, 7,8,9,2,14,3,13,15,12,11,10,0,1,4,5,6); - palette_set_color_rgb(space->machine(), offset/2, pal5bit(bgr >> 0), pal5bit(bgr >> 5), pal5bit(bgr >> 10)); + palette_set_color_rgb(machine(), offset/2, pal5bit(bgr >> 0), pal5bit(bgr >> 5), pal5bit(bgr >> 10)); } static ADDRESS_MAP_START( mgcs, AS_PROGRAM, 16, igs017_state ) AM_RANGE( 0x000000, 0x07ffff ) AM_ROM AM_RANGE( 0x300000, 0x303fff ) AM_RAM - AM_RANGE( 0x49c000, 0x49c003 ) AM_WRITE_LEGACY(mgcs_magic_w ) - AM_RANGE( 0x49c002, 0x49c003 ) AM_READ_LEGACY(mgcs_magic_r ) - AM_RANGE( 0xa02000, 0xa02fff ) AM_READWRITE_LEGACY(spriteram_lsb_r, spriteram_lsb_w ) AM_BASE(m_spriteram) - AM_RANGE( 0xa03000, 0xa037ff ) AM_RAM_WRITE_LEGACY(mgcs_paletteram_w ) AM_BASE_GENERIC( paletteram ) + AM_RANGE( 0x49c000, 0x49c003 ) AM_WRITE(mgcs_magic_w ) + AM_RANGE( 0x49c002, 0x49c003 ) AM_READ(mgcs_magic_r ) + AM_RANGE( 0xa02000, 0xa02fff ) AM_READWRITE(spriteram_lsb_r, spriteram_lsb_w ) AM_BASE(m_spriteram) + AM_RANGE( 0xa03000, 0xa037ff ) AM_RAM_WRITE(mgcs_paletteram_w ) AM_BASE_GENERIC( paletteram ) AM_RANGE( 0xa04020, 0xa04027 ) AM_DEVREAD8_LEGACY("ppi8255", ppi8255_r, 0x00ff ) - AM_RANGE( 0xa04024, 0xa04025 ) AM_WRITE_LEGACY(video_disable_lsb_w ) - AM_RANGE( 0xa04028, 0xa04029 ) AM_WRITE_LEGACY(irq2_enable_w ) - AM_RANGE( 0xa0402a, 0xa0402b ) AM_WRITE_LEGACY(irq1_enable_w ) - AM_RANGE( 0xa08000, 0xa0bfff ) AM_READWRITE_LEGACY(fg_lsb_r, fg_lsb_w ) AM_BASE(m_fg_videoram ) - AM_RANGE( 0xa0c000, 0xa0ffff ) AM_READWRITE_LEGACY(bg_lsb_r, bg_lsb_w ) AM_BASE(m_bg_videoram ) + AM_RANGE( 0xa04024, 0xa04025 ) AM_WRITE(video_disable_lsb_w ) + AM_RANGE( 0xa04028, 0xa04029 ) AM_WRITE(irq2_enable_w ) + AM_RANGE( 0xa0402a, 0xa0402b ) AM_WRITE(irq1_enable_w ) + AM_RANGE( 0xa08000, 0xa0bfff ) AM_READWRITE(fg_lsb_r, fg_lsb_w ) AM_BASE(m_fg_videoram ) + AM_RANGE( 0xa0c000, 0xa0ffff ) AM_READWRITE(bg_lsb_r, bg_lsb_w ) AM_BASE(m_bg_videoram ) AM_RANGE( 0xa12000, 0xa12001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff ) // oki banking through protection (code at $1a350)? ADDRESS_MAP_END @@ -1308,81 +1322,78 @@ ADDRESS_MAP_END // sdmg2 -static WRITE16_HANDLER( sdmg2_paletteram_w ) +WRITE16_MEMBER(igs017_state::sdmg2_paletteram_w) { - COMBINE_DATA(&space->machine().generic.paletteram.u16[offset]); + COMBINE_DATA(&machine().generic.paletteram.u16[offset]); - int bgr = ((space->machine().generic.paletteram.u16[offset/2*2+1] & 0xff) << 8) | (space->machine().generic.paletteram.u16[offset/2*2+0] & 0xff); + int bgr = ((machine().generic.paletteram.u16[offset/2*2+1] & 0xff) << 8) | (machine().generic.paletteram.u16[offset/2*2+0] & 0xff); - palette_set_color_rgb(space->machine(), offset/2, pal5bit(bgr >> 0), pal5bit(bgr >> 5), pal5bit(bgr >> 10)); + palette_set_color_rgb(machine(), offset/2, pal5bit(bgr >> 0), pal5bit(bgr >> 5), pal5bit(bgr >> 10)); } -static READ8_HANDLER( sdmg2_keys_r ) +READ8_MEMBER(igs017_state::sdmg2_keys_r) { - igs017_state *state = space->machine().driver_data<igs017_state>(); - if (~state->m_input_select & 0x01) return input_port_read(space->machine(), "KEY0"); - if (~state->m_input_select & 0x02) return input_port_read(space->machine(), "KEY1"); - if (~state->m_input_select & 0x04) return input_port_read(space->machine(), "KEY2"); - if (~state->m_input_select & 0x08) return input_port_read(space->machine(), "KEY3"); - if (~state->m_input_select & 0x10) return input_port_read(space->machine(), "KEY4"); + if (~m_input_select & 0x01) return input_port_read(machine(), "KEY0"); + if (~m_input_select & 0x02) return input_port_read(machine(), "KEY1"); + if (~m_input_select & 0x04) return input_port_read(machine(), "KEY2"); + if (~m_input_select & 0x08) return input_port_read(machine(), "KEY3"); + if (~m_input_select & 0x10) return input_port_read(machine(), "KEY4"); - if (state->m_input_select == 0x1f) return input_port_read(space->machine(), "KEY0"); // in joystick mode + if (m_input_select == 0x1f) return input_port_read(machine(), "KEY0"); // in joystick mode - logerror("%s: warning, reading key with input_select = %02x\n", space->machine().describe_context(), state->m_input_select); + logerror("%s: warning, reading key with input_select = %02x\n", machine().describe_context(), m_input_select); return 0xff; } -static WRITE16_HANDLER( sdmg2_magic_w ) +WRITE16_MEMBER(igs017_state::sdmg2_magic_w) { - igs017_state *state = space->machine().driver_data<igs017_state>(); - COMBINE_DATA(&state->m_igs_magic[offset]); + COMBINE_DATA(&m_igs_magic[offset]); if (offset == 0) return; - switch(state->m_igs_magic[0]) + switch(m_igs_magic[0]) { // case 0x00: ? 0x80 case 0x01: if (ACCESSING_BITS_0_7) { - state->m_input_select = data & 0x1f; - coin_counter_w(space->machine(), 0, data & 0x20); + m_input_select = data & 0x1f; + coin_counter_w(machine(), 0, data & 0x20); // coin out data & 0x40 - state->m_hopper = data & 0x80; + m_hopper = data & 0x80; } break; case 0x02: if (ACCESSING_BITS_0_7) { - okim6295_device *oki = space->machine().device<okim6295_device>("oki"); + okim6295_device *oki = machine().device<okim6295_device>("oki"); oki->set_bank_base((data & 0x80) ? 0x40000 : 0); } break; default: - logerror("%06x: warning, writing to igs_magic %02x = %02x\n", cpu_get_pc(&space->device()), state->m_igs_magic[0], data); + logerror("%06x: warning, writing to igs_magic %02x = %02x\n", cpu_get_pc(&space.device()), m_igs_magic[0], data); } } -static READ16_HANDLER( sdmg2_magic_r ) +READ16_MEMBER(igs017_state::sdmg2_magic_r) { - igs017_state *state = space->machine().driver_data<igs017_state>(); - switch(state->m_igs_magic[0]) + switch(m_igs_magic[0]) { case 0x00: { - UINT16 hopper_bit = (state->m_hopper && ((space->machine().primary_screen->frame_number()/10)&1)) ? 0x0000 : 0x0001; - return input_port_read(space->machine(), "COINS") | hopper_bit; + UINT16 hopper_bit = (m_hopper && ((machine().primary_screen->frame_number()/10)&1)) ? 0x0000 : 0x0001; + return input_port_read(machine(), "COINS") | hopper_bit; } case 0x02: return sdmg2_keys_r(space, 0); default: - logerror("%06x: warning, reading with igs_magic = %02x\n", cpu_get_pc(&space->device()), state->m_igs_magic[0]); + logerror("%06x: warning, reading with igs_magic = %02x\n", cpu_get_pc(&space.device()), m_igs_magic[0]); break; } @@ -1392,68 +1403,66 @@ static READ16_HANDLER( sdmg2_magic_r ) static ADDRESS_MAP_START( sdmg2, AS_PROGRAM, 16, igs017_state ) AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_RANGE(0x1f0000, 0x1fffff) AM_RAM - AM_RANGE(0x202000, 0x202fff) AM_READWRITE_LEGACY(spriteram_lsb_r, spriteram_lsb_w ) AM_BASE(m_spriteram) - AM_RANGE(0x203000, 0x2037ff) AM_RAM_WRITE_LEGACY(sdmg2_paletteram_w ) AM_BASE_GENERIC( paletteram ) + AM_RANGE(0x202000, 0x202fff) AM_READWRITE(spriteram_lsb_r, spriteram_lsb_w ) AM_BASE(m_spriteram) + AM_RANGE(0x203000, 0x2037ff) AM_RAM_WRITE(sdmg2_paletteram_w ) AM_BASE_GENERIC( paletteram ) AM_RANGE(0x204020, 0x204027) AM_DEVREAD8_LEGACY("ppi8255", ppi8255_r, 0x00ff ) - AM_RANGE(0x204024, 0x204025) AM_WRITE_LEGACY(video_disable_lsb_w ) - AM_RANGE(0x204028, 0x204029) AM_WRITE_LEGACY(irq2_enable_w ) - AM_RANGE(0x20402a, 0x20402b) AM_WRITE_LEGACY(irq1_enable_w ) - AM_RANGE(0x208000, 0x20bfff) AM_READWRITE_LEGACY(fg_lsb_r, fg_lsb_w ) AM_BASE(m_fg_videoram ) - AM_RANGE(0x20c000, 0x20ffff) AM_READWRITE_LEGACY(bg_lsb_r, bg_lsb_w ) AM_BASE(m_bg_videoram ) + AM_RANGE(0x204024, 0x204025) AM_WRITE(video_disable_lsb_w ) + AM_RANGE(0x204028, 0x204029) AM_WRITE(irq2_enable_w ) + AM_RANGE(0x20402a, 0x20402b) AM_WRITE(irq1_enable_w ) + AM_RANGE(0x208000, 0x20bfff) AM_READWRITE(fg_lsb_r, fg_lsb_w ) AM_BASE(m_fg_videoram ) + AM_RANGE(0x20c000, 0x20ffff) AM_READWRITE(bg_lsb_r, bg_lsb_w ) AM_BASE(m_bg_videoram ) AM_RANGE(0x210000, 0x210001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff ) - AM_RANGE(0x300000, 0x300003) AM_WRITE_LEGACY(sdmg2_magic_w ) - AM_RANGE(0x300002, 0x300003) AM_READ_LEGACY(sdmg2_magic_r ) + AM_RANGE(0x300000, 0x300003) AM_WRITE(sdmg2_magic_w ) + AM_RANGE(0x300002, 0x300003) AM_READ(sdmg2_magic_r ) ADDRESS_MAP_END // mgdh, mgdha -static READ8_HANDLER( mgdh_keys_r ) +READ8_MEMBER(igs017_state::mgdh_keys_r) { - igs017_state *state = space->machine().driver_data<igs017_state>(); - if (~state->m_input_select & 0x04) return input_port_read(space->machine(), "KEY0"); - if (~state->m_input_select & 0x08) return input_port_read(space->machine(), "KEY1"); - if (~state->m_input_select & 0x10) return input_port_read(space->machine(), "KEY2"); - if (~state->m_input_select & 0x20) return input_port_read(space->machine(), "KEY3"); - if (~state->m_input_select & 0x40) return input_port_read(space->machine(), "KEY4"); + if (~m_input_select & 0x04) return input_port_read(machine(), "KEY0"); + if (~m_input_select & 0x08) return input_port_read(machine(), "KEY1"); + if (~m_input_select & 0x10) return input_port_read(machine(), "KEY2"); + if (~m_input_select & 0x20) return input_port_read(machine(), "KEY3"); + if (~m_input_select & 0x40) return input_port_read(machine(), "KEY4"); - if ((state->m_input_select & 0xfc) == 0xfc) return input_port_read(space->machine(), "DSW1"); + if ((m_input_select & 0xfc) == 0xfc) return input_port_read(machine(), "DSW1"); - logerror("%s: warning, reading key with input_select = %02x\n", space->machine().describe_context(), state->m_input_select); + logerror("%s: warning, reading key with input_select = %02x\n", machine().describe_context(), m_input_select); return 0xff; } -static WRITE16_HANDLER( mgdha_magic_w ) +WRITE16_MEMBER(igs017_state::mgdha_magic_w) { - igs017_state *state = space->machine().driver_data<igs017_state>(); - COMBINE_DATA(&state->m_igs_magic[offset]); + COMBINE_DATA(&m_igs_magic[offset]); if (offset == 0) return; - switch(state->m_igs_magic[0]) + switch(m_igs_magic[0]) { case 0x00: if (ACCESSING_BITS_0_7) { // coin out data & 0x40 - coin_counter_w(space->machine(), 0, data & 0x80); + coin_counter_w(machine(), 0, data & 0x80); } if ( data & ~0xc0 ) - logerror("%06x: warning, unknown bits written to igs_magic 00 = %02x\n", cpu_get_pc(&space->device()), data); + logerror("%06x: warning, unknown bits written to igs_magic 00 = %02x\n", cpu_get_pc(&space.device()), data); break; case 0x01: if (ACCESSING_BITS_0_7) { - state->m_input_select = data & 0xff; - state->m_hopper = data & 0x01; + m_input_select = data & 0xff; + m_hopper = data & 0x01; } - if ( state->m_input_select & ~0xfd ) - logerror("%06x: warning, unknown bits written in input_select = %02x\n", cpu_get_pc(&space->device()), state->m_input_select); + if ( m_input_select & ~0xfd ) + logerror("%06x: warning, unknown bits written in input_select = %02x\n", cpu_get_pc(&space.device()), m_input_select); break; @@ -1461,7 +1470,7 @@ static WRITE16_HANDLER( mgdha_magic_w ) if (ACCESSING_BITS_0_7) { // bit 7? - okim6295_device *oki = space->machine().device<okim6295_device>("oki"); + okim6295_device *oki = machine().device<okim6295_device>("oki"); oki->set_bank_base((data & 0x40) ? 0x40000 : 0); } break; @@ -1478,32 +1487,31 @@ static WRITE16_HANDLER( mgdha_magic_w ) 04ac10: warning, writing to igs_magic 06 = ff 04ac20: warning, writing to igs_magic 07 = 3f */ - logerror("%06x: warning, writing to igs_magic %02x = %02x\n", cpu_get_pc(&space->device()), state->m_igs_magic[0], data); + logerror("%06x: warning, writing to igs_magic %02x = %02x\n", cpu_get_pc(&space.device()), m_igs_magic[0], data); } } -static READ16_HANDLER( mgdha_magic_r ) +READ16_MEMBER(igs017_state::mgdha_magic_r) { - igs017_state *state = space->machine().driver_data<igs017_state>(); - switch(state->m_igs_magic[0]) + switch(m_igs_magic[0]) { case 0x00: return mgdh_keys_r(space, 0); case 0x01: - return input_port_read(space->machine(), "BUTTONS"); + return input_port_read(machine(), "BUTTONS"); case 0x02: - return BITSWAP8(input_port_read(space->machine(), "DSW2"), 0,1,2,3,4,5,6,7); + return BITSWAP8(input_port_read(machine(), "DSW2"), 0,1,2,3,4,5,6,7); case 0x03: { - UINT16 hopper_bit = (state->m_hopper && ((space->machine().primary_screen->frame_number()/10)&1)) ? 0x0000 : 0x0001; - return input_port_read(space->machine(), "COINS") | hopper_bit; + UINT16 hopper_bit = (m_hopper && ((machine().primary_screen->frame_number()/10)&1)) ? 0x0000 : 0x0001; + return input_port_read(machine(), "COINS") | hopper_bit; } default: - logerror("%06x: warning, reading with igs_magic = %02x\n", cpu_get_pc(&space->device()), state->m_igs_magic[0]); + logerror("%06x: warning, reading with igs_magic = %02x\n", cpu_get_pc(&space.device()), m_igs_magic[0]); break; } @@ -1513,90 +1521,88 @@ static READ16_HANDLER( mgdha_magic_r ) static ADDRESS_MAP_START( mgdha_map, AS_PROGRAM, 16, igs017_state ) AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_RANGE(0x600000, 0x603fff) AM_RAM - AM_RANGE(0x876000, 0x876003) AM_WRITE_LEGACY(mgdha_magic_w ) - AM_RANGE(0x876002, 0x876003) AM_READ_LEGACY(mgdha_magic_r ) - AM_RANGE(0xa02000, 0xa02fff) AM_READWRITE_LEGACY(spriteram_lsb_r, spriteram_lsb_w ) AM_BASE(m_spriteram) - AM_RANGE(0xa03000, 0xa037ff) AM_RAM_WRITE_LEGACY(sdmg2_paletteram_w ) AM_BASE_GENERIC( paletteram ) + AM_RANGE(0x876000, 0x876003) AM_WRITE(mgdha_magic_w ) + AM_RANGE(0x876002, 0x876003) AM_READ(mgdha_magic_r ) + AM_RANGE(0xa02000, 0xa02fff) AM_READWRITE(spriteram_lsb_r, spriteram_lsb_w ) AM_BASE(m_spriteram) + AM_RANGE(0xa03000, 0xa037ff) AM_RAM_WRITE(sdmg2_paletteram_w ) AM_BASE_GENERIC( paletteram ) // AM_RANGE(0xa04014, 0xa04015) // written with FF at boot AM_RANGE(0xa04020, 0xa04027) AM_DEVREAD8_LEGACY("ppi8255", ppi8255_r, 0x00ff ) - AM_RANGE(0xa04024, 0xa04025) AM_WRITE_LEGACY(video_disable_lsb_w ) - AM_RANGE(0xa04028, 0xa04029) AM_WRITE_LEGACY(irq2_enable_w ) - AM_RANGE(0xa0402a, 0xa0402b) AM_WRITE_LEGACY(irq1_enable_w ) - AM_RANGE(0xa08000, 0xa0bfff) AM_READWRITE_LEGACY(fg_lsb_r, fg_lsb_w ) AM_BASE(m_fg_videoram ) - AM_RANGE(0xa0c000, 0xa0ffff) AM_READWRITE_LEGACY(bg_lsb_r, bg_lsb_w ) AM_BASE(m_bg_videoram ) + AM_RANGE(0xa04024, 0xa04025) AM_WRITE(video_disable_lsb_w ) + AM_RANGE(0xa04028, 0xa04029) AM_WRITE(irq2_enable_w ) + AM_RANGE(0xa0402a, 0xa0402b) AM_WRITE(irq1_enable_w ) + AM_RANGE(0xa08000, 0xa0bfff) AM_READWRITE(fg_lsb_r, fg_lsb_w ) AM_BASE(m_fg_videoram ) + AM_RANGE(0xa0c000, 0xa0ffff) AM_READWRITE(bg_lsb_r, bg_lsb_w ) AM_BASE(m_bg_videoram ) AM_RANGE(0xa10000, 0xa10001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff ) ADDRESS_MAP_END // tjsb -static WRITE8_HANDLER( tjsb_paletteram_w ) +WRITE8_MEMBER(igs017_state::tjsb_paletteram_w) { - space->machine().generic.paletteram.u8[offset] = data; - int bgr = (space->machine().generic.paletteram.u8[offset/2*2+1] << 8) | space->machine().generic.paletteram.u8[offset/2*2+0]; + machine().generic.paletteram.u8[offset] = data; + int bgr = (machine().generic.paletteram.u8[offset/2*2+1] << 8) | machine().generic.paletteram.u8[offset/2*2+0]; // bitswap bgr = BITSWAP16(bgr, 15, 12,3,6,10,5, 4,2,9,13,8, 7,11,1,0,14); - palette_set_color_rgb(space->machine(), offset/2, pal5bit(bgr >> 0), pal5bit(bgr >> 5), pal5bit(bgr >> 10)); + palette_set_color_rgb(machine(), offset/2, pal5bit(bgr >> 0), pal5bit(bgr >> 5), pal5bit(bgr >> 10)); } -static WRITE8_HANDLER( tjsb_output_w ) +WRITE8_MEMBER(igs017_state::tjsb_output_w) { - igs017_state *state = space->machine().driver_data<igs017_state>(); - switch(state->m_input_select) + switch(m_input_select) { case 0x00: - coin_counter_w(space->machine(), 0, data & 0x80); // coin in + coin_counter_w(machine(), 0, data & 0x80); // coin in if (!(data & ~0x80)) return; break; case 0x01: - coin_counter_w(space->machine(), 1, data & 0x01); // coin out + coin_counter_w(machine(), 1, data & 0x01); // coin out if (!(data & ~0x01)) return; break; case 0x02: - space->machine().device<okim6295_device>("oki")->set_bank_base((data & 0x10) ? 0x40000 : 0); // oki bank (0x20/0x30) + machine().device<okim6295_device>("oki")->set_bank_base((data & 0x10) ? 0x40000 : 0); // oki bank (0x20/0x30) if (!(data & ~0x30)) return; break; case 0x03: - state->m_hopper = data & 0x40; + m_hopper = data & 0x40; if (!(data & ~0x40)) return; break; } - logerror("%06x: warning, writing to igs_magic %02x = %02x\n", cpu_get_pc(&space->device()), state->m_input_select, data); + logerror("%06x: warning, writing to igs_magic %02x = %02x\n", cpu_get_pc(&space.device()), m_input_select, data); } -static READ8_HANDLER( tjsb_input_r ) +READ8_MEMBER(igs017_state::tjsb_input_r) { - igs017_state *state = space->machine().driver_data<igs017_state>(); - switch (state->m_input_select) + switch (m_input_select) { - case 0x00: return input_port_read(space->machine(), "PLAYER1"); - case 0x01: return input_port_read(space->machine(), "PLAYER2"); - case 0x02: return input_port_read(space->machine(), "COINS"); + case 0x00: return input_port_read(machine(), "PLAYER1"); + case 0x01: return input_port_read(machine(), "PLAYER2"); + case 0x02: return input_port_read(machine(), "COINS"); case 0x03: { - UINT8 hopper_bit = (state->m_hopper && ((space->machine().primary_screen->frame_number()/10)&1)) ? 0x00 : 0x20; - return input_port_read(space->machine(), "HOPPER") | hopper_bit; + UINT8 hopper_bit = (m_hopper && ((machine().primary_screen->frame_number()/10)&1)) ? 0x00 : 0x20; + return input_port_read(machine(), "HOPPER") | hopper_bit; } default: - logerror("PC %06X: input %02x read\n",cpu_get_pc(&space->device()),state->m_input_select); + logerror("PC %06X: input %02x read\n",cpu_get_pc(&space.device()),m_input_select); return 0xff; } } static ADDRESS_MAP_START( tjsb_map, AS_PROGRAM, 8, igs017_state ) AM_RANGE( 0x00000, 0x0dfff ) AM_ROM - AM_RANGE( 0x0e000, 0x0e000 ) AM_WRITE_LEGACY(input_select_w ) - AM_RANGE( 0x0e001, 0x0e001 ) AM_READWRITE_LEGACY(tjsb_input_r, tjsb_output_w ) + AM_RANGE( 0x0e000, 0x0e000 ) AM_WRITE(input_select_w ) + AM_RANGE( 0x0e001, 0x0e001 ) AM_READWRITE(tjsb_input_r, tjsb_output_w ) AM_RANGE( 0x0e002, 0x0efff ) AM_RAM AM_RANGE( 0x0f000, 0x0ffff ) AM_RAM AM_RANGE( 0x10000, 0x3ffff ) AM_ROM @@ -1606,19 +1612,19 @@ static ADDRESS_MAP_START( tjsb_io, AS_IO, 8, igs017_state ) AM_RANGE( 0x0000, 0x003f ) AM_RAM // internal regs AM_RANGE( 0x1000, 0x17ff ) AM_RAM AM_BASE(m_spriteram) - AM_RANGE( 0x1800, 0x1bff ) AM_RAM_WRITE_LEGACY(tjsb_paletteram_w ) AM_BASE_GENERIC(paletteram) + AM_RANGE( 0x1800, 0x1bff ) AM_RAM_WRITE(tjsb_paletteram_w ) AM_BASE_GENERIC(paletteram) AM_RANGE( 0x1c00, 0x1fff ) AM_RAM // AM_RANGE(0x200a, 0x200a) AM_WRITENOP AM_RANGE( 0x2010, 0x2013 ) AM_DEVREAD_LEGACY("ppi8255", ppi8255_r) - AM_RANGE( 0x2012, 0x2012 ) AM_WRITE_LEGACY(video_disable_w ) + AM_RANGE( 0x2012, 0x2012 ) AM_WRITE(video_disable_w ) - AM_RANGE( 0x2014, 0x2014 ) AM_WRITE_LEGACY(nmi_enable_w ) - AM_RANGE( 0x2015, 0x2015 ) AM_WRITE_LEGACY(irq_enable_w ) + AM_RANGE( 0x2014, 0x2014 ) AM_WRITE(nmi_enable_w ) + AM_RANGE( 0x2015, 0x2015 ) AM_WRITE(irq_enable_w ) - AM_RANGE( 0x4000, 0x5fff ) AM_RAM_WRITE_LEGACY(fg_w ) AM_BASE(m_fg_videoram ) - AM_RANGE( 0x6000, 0x7fff ) AM_RAM_WRITE_LEGACY(bg_w ) AM_BASE(m_bg_videoram ) + AM_RANGE( 0x4000, 0x5fff ) AM_RAM_WRITE(fg_w ) AM_BASE(m_fg_videoram ) + AM_RANGE( 0x6000, 0x7fff ) AM_RAM_WRITE(bg_w ) AM_BASE(m_bg_videoram ) AM_RANGE( 0x9000, 0x9000 ) AM_DEVREADWRITE("oki", okim6295_device, read, write) diff --git a/src/mame/drivers/igs_m027.c b/src/mame/drivers/igs_m027.c index 11e651f276f..2a99be4d362 100644 --- a/src/mame/drivers/igs_m027.c +++ b/src/mame/drivers/igs_m027.c @@ -33,6 +33,10 @@ public: UINT32 *m_igs_palette32; tilemap_t *m_igs_tx_tilemap; tilemap_t *m_igs_bg_tilemap; + DECLARE_WRITE32_MEMBER(igs_cg_videoram_w); + DECLARE_WRITE32_MEMBER(igs_tx_videoram_w); + DECLARE_WRITE32_MEMBER(igs_bg_videoram_w); + DECLARE_WRITE32_MEMBER(igs_palette32_w); }; @@ -52,12 +56,11 @@ public: /* CGLayer */ -static WRITE32_HANDLER( igs_cg_videoram_w ) +WRITE32_MEMBER(igs_m027_state::igs_cg_videoram_w) { - igs_m027_state *state = space->machine().driver_data<igs_m027_state>(); - COMBINE_DATA(&state->m_igs_cg_videoram[offset]); + COMBINE_DATA(&m_igs_cg_videoram[offset]); //if(data!=0) - logerror("PC(%08X) CG @%x = %x!\n",cpu_get_pc(&space->device()),offset ,state->m_igs_cg_videoram[offset]); + logerror("PC(%08X) CG @%x = %x!\n",cpu_get_pc(&space.device()),offset ,m_igs_cg_videoram[offset]); @@ -96,13 +99,12 @@ static WRITE32_HANDLER( igs_cg_videoram_w ) /* TX Layer */ -static WRITE32_HANDLER( igs_tx_videoram_w ) +WRITE32_MEMBER(igs_m027_state::igs_tx_videoram_w) { - igs_m027_state *state = space->machine().driver_data<igs_m027_state>(); - COMBINE_DATA(&state->m_igs_tx_videoram[offset]); - state->m_igs_tx_tilemap->mark_tile_dirty(offset); + COMBINE_DATA(&m_igs_tx_videoram[offset]); + m_igs_tx_tilemap->mark_tile_dirty(offset); //if(data!=0) - //logerror( "TX VIDEO RAM OFFSET %x ,data %x!\n",offset ,state->m_igs_tx_videoram[offset]); + //logerror( "TX VIDEO RAM OFFSET %x ,data %x!\n",offset ,m_igs_tx_videoram[offset]); } static TILE_GET_INFO( get_tx_tilemap_tile_info ) @@ -117,13 +119,12 @@ static TILE_GET_INFO( get_tx_tilemap_tile_info ) } /* BG Layer */ -static WRITE32_HANDLER( igs_bg_videoram_w ) +WRITE32_MEMBER(igs_m027_state::igs_bg_videoram_w) { - igs_m027_state *state = space->machine().driver_data<igs_m027_state>(); - COMBINE_DATA(&state->m_igs_bg_videoram[offset]); - state->m_igs_bg_tilemap->mark_tile_dirty(offset); + COMBINE_DATA(&m_igs_bg_videoram[offset]); + m_igs_bg_tilemap->mark_tile_dirty(offset); //if(data!=0) - logerror("BG VIDEO RAM OFFSET %x ,data %x!\n",offset ,state->m_igs_bg_videoram[offset]); + logerror("BG VIDEO RAM OFFSET %x ,data %x!\n",offset ,m_igs_bg_videoram[offset]); } static TILE_GET_INFO( get_bg_tilemap_tile_info ) @@ -139,15 +140,14 @@ static TILE_GET_INFO( get_bg_tilemap_tile_info ) /* Palette Layer */ -static WRITE32_HANDLER( igs_palette32_w ) +WRITE32_MEMBER(igs_m027_state::igs_palette32_w) { - igs_m027_state *state = space->machine().driver_data<igs_m027_state>(); - space->machine().generic.paletteram.u16=(UINT16 *)state->m_igs_palette32; - COMBINE_DATA(&state->m_igs_palette32[offset]); - //paletteram16_xGGGGGRRRRRBBBBB_word_w(offset*2,space->machine().generic.paletteram.u16[offset*2],0); - //paletteram16_xGGGGGRRRRRBBBBB_word_w(offset*2+1,space->machine().generic.paletteram.u16[offset*2+1],0); + machine().generic.paletteram.u16=(UINT16 *)m_igs_palette32; + COMBINE_DATA(&m_igs_palette32[offset]); + //paletteram16_xGGGGGRRRRRBBBBB_word_w(offset*2,machine().generic.paletteram.u16[offset*2],0); + //paletteram16_xGGGGGRRRRRBBBBB_word_w(offset*2+1,machine().generic.paletteram.u16[offset*2+1],0); //if(data!=0) - //fprintf(stdout,"PALETTE RAM OFFSET %x ,data %x!\n",offset ,state->m_igs_palette32[offset]); + //fprintf(stdout,"PALETTE RAM OFFSET %x ,data %x!\n",offset ,m_igs_palette32[offset]); } @@ -197,11 +197,11 @@ static ADDRESS_MAP_START( igs_majhong_map, AS_PROGRAM, 32, igs_m027_state ) AM_RANGE(0x10000000, 0x100003ff) AM_RAM AM_BASE(m_igs_mainram)// main ram for asic? AM_RANGE(0x18000000, 0x18007fff) AM_RAM - AM_RANGE(0x38001000, 0x380017ff) AM_RAM_WRITE_LEGACY(igs_cg_videoram_w) AM_BASE(m_igs_cg_videoram) //0x200 * 1 CG PALETTE? - AM_RANGE(0x38001800, 0x38001fff) AM_RAM_WRITE_LEGACY(igs_palette32_w) AM_BASE(m_igs_palette32) //0x200 * 1 + AM_RANGE(0x38001000, 0x380017ff) AM_RAM_WRITE(igs_cg_videoram_w) AM_BASE(m_igs_cg_videoram) //0x200 * 1 CG PALETTE? + AM_RANGE(0x38001800, 0x38001fff) AM_RAM_WRITE(igs_palette32_w) AM_BASE(m_igs_palette32) //0x200 * 1 - AM_RANGE(0x38004000, 0x38005FFF) AM_RAM_WRITE_LEGACY(igs_tx_videoram_w) AM_BASE(m_igs_tx_videoram) /* Text Layer */ - AM_RANGE(0x38006000, 0x38007FFF) AM_RAM_WRITE_LEGACY(igs_bg_videoram_w) AM_BASE(m_igs_bg_videoram) /* CG Layer */ + AM_RANGE(0x38004000, 0x38005FFF) AM_RAM_WRITE(igs_tx_videoram_w) AM_BASE(m_igs_tx_videoram) /* Text Layer */ + AM_RANGE(0x38006000, 0x38007FFF) AM_RAM_WRITE(igs_bg_videoram_w) AM_BASE(m_igs_bg_videoram) /* CG Layer */ AM_RANGE(0x38002010, 0x38002017) AM_RAM //?????????????? diff --git a/src/mame/drivers/imolagp.c b/src/mame/drivers/imolagp.c index 7706ef095a4..f1bf447fbbd 100644 --- a/src/mame/drivers/imolagp.c +++ b/src/mame/drivers/imolagp.c @@ -113,23 +113,34 @@ public: UINT8 m_videoram[3][0x4000]; required_device<cpu_device> m_maincpu; + DECLARE_WRITE8_MEMBER(transmit_data_w); + DECLARE_READ8_MEMBER(trigger_slave_nmi_r); + DECLARE_READ8_MEMBER(receive_data_r); + DECLARE_WRITE8_MEMBER(imola_ledram_w); + DECLARE_READ8_MEMBER(steerlatch_r); + DECLARE_WRITE8_MEMBER(screenram_w); + DECLARE_READ8_MEMBER(imola_slave_port05r); + DECLARE_READ8_MEMBER(imola_slave_port06r); + DECLARE_READ8_MEMBER(imola_slave_port81r); + DECLARE_READ8_MEMBER(imola_slave_port82r); + DECLARE_WRITE8_MEMBER(vreg_control_w); + DECLARE_WRITE8_MEMBER(vreg_data_w); }; #ifdef HLE_COM -static WRITE8_HANDLER( transmit_data_w ) +WRITE8_MEMBER(imolagp_state::transmit_data_w) { - imolagp_state *state = space->machine().driver_data<imolagp_state>(); - state->m_mComData[state->m_mComCount++] = data; + m_mComData[m_mComCount++] = data; } -static READ8_HANDLER( trigger_slave_nmi_r ) +READ8_MEMBER(imolagp_state::trigger_slave_nmi_r) { return 0; } -static READ8_HANDLER( receive_data_r ) +READ8_MEMBER(imolagp_state::receive_data_r) { return 0; } @@ -138,22 +149,19 @@ static READ8_HANDLER( receive_data_r ) /* the master cpu transmits data to the slave CPU one word at a time using a rapid sequence of triggered NMIs * the slave cpu pauses as it enters its irq, awaiting this burst of data */ -static WRITE8_HANDLER( transmit_data_w ) +WRITE8_MEMBER(imolagp_state::transmit_data_w) { - imolagp_state *state = space->machine().driver_data<imolagp_state>(); - state->m_mLatchedData[offset] = data; + m_mLatchedData[offset] = data; } -static READ8_HANDLER( trigger_slave_nmi_r ) +READ8_MEMBER(imolagp_state::trigger_slave_nmi_r) { - imolagp_state *state = space->machine().driver_data<imolagp_state>(); - device_set_input_line(state->m_slave, INPUT_LINE_NMI, PULSE_LINE); + device_set_input_line(m_slave, INPUT_LINE_NMI, PULSE_LINE); return 0; } -static READ8_HANDLER( receive_data_r ) +READ8_MEMBER(imolagp_state::receive_data_r) { - imolagp_state *state = space->machine().driver_data<imolagp_state>(); - return state->m_mLatchedData[offset]; + return m_mLatchedData[offset]; } #endif @@ -229,7 +237,7 @@ static SCREEN_UPDATE_IND16( imolagp ) return 0; } -static WRITE8_HANDLER( imola_ledram_w ) +WRITE8_MEMBER(imolagp_state::imola_ledram_w) { data &= 0xf; @@ -276,110 +284,102 @@ static WRITE8_HANDLER( imola_ledram_w ) } } -static READ8_HANDLER( steerlatch_r ) +READ8_MEMBER(imolagp_state::steerlatch_r) { - imolagp_state *state = space->machine().driver_data<imolagp_state>(); - return state->m_steerlatch; + return m_steerlatch; } -static WRITE8_HANDLER( screenram_w ) +WRITE8_MEMBER(imolagp_state::screenram_w) { /* ?! */ - imolagp_state *state = space->machine().driver_data<imolagp_state>(); - switch (state->m_draw_mode) + switch (m_draw_mode) { case 0x82: case 0x81: case 0x05: - state->m_videoram[1][offset] = data; + m_videoram[1][offset] = data; break; case 0x06: - state->m_videoram[0][offset] = data; + m_videoram[0][offset] = data; break; default: break; } } -static READ8_HANDLER( imola_slave_port05r ) +READ8_MEMBER(imolagp_state::imola_slave_port05r) { - imolagp_state *state = space->machine().driver_data<imolagp_state>(); - memcpy(state->m_videoram[2], state->m_videoram[1], 0x4000); /* hack! capture before sprite plane is erased */ - state->m_draw_mode = 0x05; + memcpy(m_videoram[2], m_videoram[1], 0x4000); /* hack! capture before sprite plane is erased */ + m_draw_mode = 0x05; return 0; } -static READ8_HANDLER( imola_slave_port06r ) +READ8_MEMBER(imolagp_state::imola_slave_port06r) { - imolagp_state *state = space->machine().driver_data<imolagp_state>(); - state->m_draw_mode = 0x06; + m_draw_mode = 0x06; return 0; } -static READ8_HANDLER( imola_slave_port81r ) +READ8_MEMBER(imolagp_state::imola_slave_port81r) { - imolagp_state *state = space->machine().driver_data<imolagp_state>(); - state->m_draw_mode = 0x81; - memcpy(state->m_videoram[2], state->m_videoram[1], 0x4000); /* hack! capture before sprite plane is erased */ + m_draw_mode = 0x81; + memcpy(m_videoram[2], m_videoram[1], 0x4000); /* hack! capture before sprite plane is erased */ return 0; } -static READ8_HANDLER( imola_slave_port82r ) +READ8_MEMBER(imolagp_state::imola_slave_port82r) { - imolagp_state *state = space->machine().driver_data<imolagp_state>(); - state->m_draw_mode = 0x82; + m_draw_mode = 0x82; return 0; } -static WRITE8_HANDLER( vreg_control_w ) +WRITE8_MEMBER(imolagp_state::vreg_control_w) { - imolagp_state *state = space->machine().driver_data<imolagp_state>(); - state->m_control = data; + m_control = data; } -static WRITE8_HANDLER( vreg_data_w ) +WRITE8_MEMBER(imolagp_state::vreg_data_w) { - imolagp_state *state = space->machine().driver_data<imolagp_state>(); - switch (state->m_control) + switch (m_control) { case 0x0e: - state->m_scroll = data; + m_scroll = data; break; case 0x07: /* always 0xff? */ case 0x0f: /* 0xff or 0x00 */ default: - logerror("vreg[0x%02x]:=0x%02x\n", state->m_control, data); + logerror("vreg[0x%02x]:=0x%02x\n", m_control, data); break; } } static ADDRESS_MAP_START( readport_master, AS_IO, 8, imolagp_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_LEGACY(trigger_slave_nmi_r) + AM_RANGE(0x00, 0x00) AM_READ(trigger_slave_nmi_r) ADDRESS_MAP_END static ADDRESS_MAP_START( imolagp_master, AS_PROGRAM, 8, imolagp_state ) AM_RANGE(0x0000, 0x1fff) AM_ROM AM_RANGE(0x2000, 0x23ff) AM_RAM AM_RANGE(0x2800, 0x2800) AM_READ_PORT("2800") /* gas */ - AM_RANGE(0x2802, 0x2802) AM_READ_LEGACY(steerlatch_r) AM_WRITENOP + AM_RANGE(0x2802, 0x2802) AM_READ(steerlatch_r) AM_WRITENOP /* AM_RANGE(0x2803, 0x2803) ? */ - AM_RANGE(0x3000, 0x3000) AM_WRITE_LEGACY(vreg_control_w) + AM_RANGE(0x3000, 0x3000) AM_WRITE(vreg_control_w) AM_RANGE(0x37f0, 0x37f0) AM_DEVWRITE_LEGACY("aysnd", ay8910_address_w) /* AM_RANGE(0x37f7, 0x37f7) ? */ - AM_RANGE(0x3800, 0x3800) AM_WRITE_LEGACY(vreg_data_w) + AM_RANGE(0x3800, 0x3800) AM_WRITE(vreg_data_w) AM_RANGE(0x3810, 0x3810) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_w) AM_RANGE(0x4000, 0x4000) AM_READ_PORT("DSWA") /* DSWA */ - AM_RANGE(0x5000, 0x50ff) AM_WRITE_LEGACY(imola_ledram_w) - AM_RANGE(0x47ff, 0x4800) AM_WRITE_LEGACY(transmit_data_w) + AM_RANGE(0x5000, 0x50ff) AM_WRITE(imola_ledram_w) + AM_RANGE(0x47ff, 0x4800) AM_WRITE(transmit_data_w) AM_RANGE(0x6000, 0x6000) AM_READ_PORT("DSWB") /* DSWB */ ADDRESS_MAP_END static ADDRESS_MAP_START( readport_slave, AS_IO, 8, imolagp_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x05,0x05) AM_READ_LEGACY(imola_slave_port05r) - AM_RANGE(0x06,0x06) AM_READ_LEGACY(imola_slave_port06r) - AM_RANGE(0x81,0x81) AM_READ_LEGACY(imola_slave_port81r) - AM_RANGE(0x82,0x82) AM_READ_LEGACY(imola_slave_port82r) + AM_RANGE(0x05,0x05) AM_READ(imola_slave_port05r) + AM_RANGE(0x06,0x06) AM_READ(imola_slave_port06r) + AM_RANGE(0x81,0x81) AM_READ(imola_slave_port81r) + AM_RANGE(0x82,0x82) AM_READ(imola_slave_port82r) ADDRESS_MAP_END static ADDRESS_MAP_START( imolagp_slave, AS_PROGRAM, 8, imolagp_state ) @@ -388,8 +388,8 @@ static ADDRESS_MAP_START( imolagp_slave, AS_PROGRAM, 8, imolagp_state ) AM_RANGE(0x1000, 0x13ff) AM_ROM AM_RANGE(0x1c00, 0x3fff) AM_ROM AM_RANGE(0x4000, 0x43ff) AM_RAM AM_BASE(m_slave_workram) - AM_RANGE(0x9fff, 0xa000) AM_READ_LEGACY(receive_data_r) - AM_RANGE(0xc000, 0xffff) AM_WRITE_LEGACY(screenram_w) + AM_RANGE(0x9fff, 0xa000) AM_READ(receive_data_r) + AM_RANGE(0xc000, 0xffff) AM_WRITE(screenram_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/intrscti.c b/src/mame/drivers/intrscti.c index ab7a588e4ac..ce887f46540 100644 --- a/src/mame/drivers/intrscti.c +++ b/src/mame/drivers/intrscti.c @@ -22,12 +22,13 @@ public: : driver_device(mconfig, type, tag) { } UINT8 *m_ram; + DECLARE_READ8_MEMBER(unk_r); }; -static READ8_HANDLER( unk_r ) +READ8_MEMBER(intrscti_state::unk_r) { - return space->machine().rand(); + return machine().rand(); } static ADDRESS_MAP_START( intrscti_map, AS_PROGRAM, 8, intrscti_state ) @@ -39,8 +40,8 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( readport, AS_IO, 8, intrscti_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_LEGACY(unk_r ) - AM_RANGE(0x01, 0x01) AM_READ_LEGACY(unk_r ) + AM_RANGE(0x00, 0x00) AM_READ(unk_r ) + AM_RANGE(0x01, 0x01) AM_READ(unk_r ) ADDRESS_MAP_END diff --git a/src/mame/drivers/istellar.c b/src/mame/drivers/istellar.c index 856e018dc2c..ce76eb4f4fd 100644 --- a/src/mame/drivers/istellar.c +++ b/src/mame/drivers/istellar.c @@ -39,6 +39,14 @@ public: UINT8 m_ldp_latch1; UINT8 m_ldp_latch2; UINT8 m_z80_2_nmi_enable; + DECLARE_READ8_MEMBER(z80_0_latch1_read); + DECLARE_WRITE8_MEMBER(z80_0_latch2_write); + DECLARE_READ8_MEMBER(z80_2_ldp_read); + DECLARE_READ8_MEMBER(z80_2_latch2_read); + DECLARE_READ8_MEMBER(z80_2_nmienable); + DECLARE_READ8_MEMBER(z80_2_unknown_read); + DECLARE_WRITE8_MEMBER(z80_2_latch1_write); + DECLARE_WRITE8_MEMBER(z80_2_ldp_write); }; @@ -93,25 +101,23 @@ static MACHINE_START( istellar ) /* MEMORY HANDLERS */ /* Z80 0 R/W */ -static READ8_HANDLER(z80_0_latch1_read) +READ8_MEMBER(istellar_state::z80_0_latch1_read) { - istellar_state *state = space->machine().driver_data<istellar_state>(); - /*logerror("CPU0 : reading LDP status latch (%x)\n", state->m_ldp_latch1);*/ - return state->m_ldp_latch1; + /*logerror("CPU0 : reading LDP status latch (%x)\n", m_ldp_latch1);*/ + return m_ldp_latch1; } -static WRITE8_HANDLER(z80_0_latch2_write) +WRITE8_MEMBER(istellar_state::z80_0_latch2_write) { - istellar_state *state = space->machine().driver_data<istellar_state>(); /*logerror("CPU0 : writing cpu_latch2 (%x). Potentially followed by an IRQ.\n", data);*/ - state->m_ldp_latch2 = data; + m_ldp_latch2 = data; /* A CPU2 NMI */ - if (state->m_z80_2_nmi_enable) + if (m_z80_2_nmi_enable) { logerror("Executing an NMI on CPU2\n"); - cputag_set_input_line(space->machine(), "sub", INPUT_LINE_NMI, PULSE_LINE); /* Maybe this is a ASSERT_LINE, CLEAR_LINE combo? */ - state->m_z80_2_nmi_enable = 0; + cputag_set_input_line(machine(), "sub", INPUT_LINE_NMI, PULSE_LINE); /* Maybe this is a ASSERT_LINE, CLEAR_LINE combo? */ + m_z80_2_nmi_enable = 0; } } @@ -120,47 +126,42 @@ static WRITE8_HANDLER(z80_0_latch2_write) /* Z80 2 R/W */ -static READ8_HANDLER(z80_2_ldp_read) +READ8_MEMBER(istellar_state::z80_2_ldp_read) { - istellar_state *state = space->machine().driver_data<istellar_state>(); - UINT8 readResult = state->m_laserdisc->status_r(); + UINT8 readResult = m_laserdisc->status_r(); logerror("CPU2 : reading LDP : %x\n", readResult); return readResult; } -static READ8_HANDLER(z80_2_latch2_read) +READ8_MEMBER(istellar_state::z80_2_latch2_read) { - istellar_state *state = space->machine().driver_data<istellar_state>(); - logerror("CPU2 : reading latch2 (%x)\n", state->m_ldp_latch2); - return state->m_ldp_latch2; + logerror("CPU2 : reading latch2 (%x)\n", m_ldp_latch2); + return m_ldp_latch2; } -static READ8_HANDLER(z80_2_nmienable) +READ8_MEMBER(istellar_state::z80_2_nmienable) { - istellar_state *state = space->machine().driver_data<istellar_state>(); logerror("CPU2 : ENABLING NMI\n"); - state->m_z80_2_nmi_enable = 1; + m_z80_2_nmi_enable = 1; return 0x00; } -static READ8_HANDLER(z80_2_unknown_read) +READ8_MEMBER(istellar_state::z80_2_unknown_read) { logerror("CPU2 : c000!\n"); return 0x00; } -static WRITE8_HANDLER(z80_2_latch1_write) +WRITE8_MEMBER(istellar_state::z80_2_latch1_write) { - istellar_state *state = space->machine().driver_data<istellar_state>(); logerror("CPU2 : writing latch1 (%x)\n", data); - state->m_ldp_latch1 = data; + m_ldp_latch1 = data; } -static WRITE8_HANDLER(z80_2_ldp_write) +WRITE8_MEMBER(istellar_state::z80_2_ldp_write) { - istellar_state *state = space->machine().driver_data<istellar_state>(); logerror("CPU2 : writing LDP : 0x%x\n", data); - state->m_laserdisc->data_w(data); + m_laserdisc->data_w(data); } @@ -182,7 +183,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( z80_2_mem, AS_PROGRAM, 8, istellar_state ) AM_RANGE(0x0000,0x17ff) AM_ROM AM_RANGE(0x1800,0x1fff) AM_RAM - AM_RANGE(0xc000,0xc000) AM_READ_LEGACY(z80_2_unknown_read) /* Seems to be thrown away every time it's read - maybe interrupt related? */ + AM_RANGE(0xc000,0xc000) AM_READ(z80_2_unknown_read) /* Seems to be thrown away every time it's read - maybe interrupt related? */ ADDRESS_MAP_END @@ -193,7 +194,7 @@ static ADDRESS_MAP_START( z80_0_io, AS_IO, 8, istellar_state ) AM_RANGE(0x02,0x02) AM_READ_PORT("DSW1") AM_RANGE(0x03,0x03) AM_READ_PORT("DSW2") /*AM_RANGE(0x04,0x04) AM_WRITE_LEGACY(volatile_palette_write)*/ - AM_RANGE(0x05,0x05) AM_READWRITE_LEGACY(z80_0_latch1_read,z80_0_latch2_write) + AM_RANGE(0x05,0x05) AM_READWRITE(z80_0_latch1_read,z80_0_latch2_write) ADDRESS_MAP_END static ADDRESS_MAP_START( z80_1_io, AS_IO, 8, istellar_state ) @@ -205,9 +206,9 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( z80_2_io, AS_IO, 8, istellar_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00,0x00) AM_READWRITE_LEGACY(z80_2_ldp_read,z80_2_ldp_write) - AM_RANGE(0x01,0x01) AM_READWRITE_LEGACY(z80_2_latch2_read,z80_2_latch1_write) - AM_RANGE(0x02,0x02) AM_READ_LEGACY(z80_2_nmienable) + AM_RANGE(0x00,0x00) AM_READWRITE(z80_2_ldp_read,z80_2_ldp_write) + AM_RANGE(0x01,0x01) AM_READWRITE(z80_2_latch2_read,z80_2_latch1_write) + AM_RANGE(0x02,0x02) AM_READ(z80_2_nmienable) /* AM_RANGE(0x03,0x03) AM_WRITE_LEGACY(z80_2_ldtrans_write)*/ ADDRESS_MAP_END diff --git a/src/mame/drivers/jackpool.c b/src/mame/drivers/jackpool.c index 59e30314971..9a949e8b1aa 100644 --- a/src/mame/drivers/jackpool.c +++ b/src/mame/drivers/jackpool.c @@ -30,6 +30,9 @@ public: UINT16 *m_vram; UINT8 m_map_vreg; UINT16 *m_io; + DECLARE_READ16_MEMBER(jackpool_ff_r); + DECLARE_READ16_MEMBER(jackpool_io_r); + DECLARE_WRITE16_MEMBER(jackpool_io_w); }; @@ -83,45 +86,43 @@ static SCREEN_UPDATE_IND16(jackpool) } /*Communication ram*/ -static READ16_HANDLER( jackpool_ff_r ) +READ16_MEMBER(jackpool_state::jackpool_ff_r) { return 0xffff; } -static READ16_HANDLER( jackpool_io_r ) +READ16_MEMBER(jackpool_state::jackpool_io_r) { - jackpool_state *state = space->machine().driver_data<jackpool_state>(); switch(offset*2) { - case 0x00: return input_port_read(space->machine(),"COIN1"); - case 0x04: return input_port_read(space->machine(),"UNK1"); - case 0x06: return input_port_read(space->machine(),"UNK2"); - case 0x08: return input_port_read(space->machine(),"SERVICE1"); - case 0x0a: return input_port_read(space->machine(),"SERVICE2");//probably not a button, remote? - case 0x0c: return input_port_read(space->machine(),"PAYOUT"); - case 0x0e: return input_port_read(space->machine(),"START2"); - case 0x10: return input_port_read(space->machine(),"HOLD3"); - case 0x12: return input_port_read(space->machine(),"HOLD4"); - case 0x14: return input_port_read(space->machine(),"HOLD2"); - case 0x16: return input_port_read(space->machine(),"HOLD1"); - case 0x18: return input_port_read(space->machine(),"HOLD5"); - case 0x1a: return input_port_read(space->machine(),"START1"); - case 0x1c: return input_port_read(space->machine(),"BET"); + case 0x00: return input_port_read(machine(),"COIN1"); + case 0x04: return input_port_read(machine(),"UNK1"); + case 0x06: return input_port_read(machine(),"UNK2"); + case 0x08: return input_port_read(machine(),"SERVICE1"); + case 0x0a: return input_port_read(machine(),"SERVICE2");//probably not a button, remote? + case 0x0c: return input_port_read(machine(),"PAYOUT"); + case 0x0e: return input_port_read(machine(),"START2"); + case 0x10: return input_port_read(machine(),"HOLD3"); + case 0x12: return input_port_read(machine(),"HOLD4"); + case 0x14: return input_port_read(machine(),"HOLD2"); + case 0x16: return input_port_read(machine(),"HOLD1"); + case 0x18: return input_port_read(machine(),"HOLD5"); + case 0x1a: return input_port_read(machine(),"START1"); + case 0x1c: return input_port_read(machine(),"BET"); case 0x1e: return 0xff; //ticket motor case 0x20: return 0xff; //hopper motor - case 0x2c: return space->machine().device<eeprom_device>("eeprom")->read_bit(); - case 0x2e: return space->machine().device<eeprom_device>("eeprom")->read_bit(); + case 0x2c: return machine().device<eeprom_device>("eeprom")->read_bit(); + case 0x2e: return machine().device<eeprom_device>("eeprom")->read_bit(); // default: printf("R %02x\n",offset*2); break; } // printf("R %02x\n",offset*2); - return state->m_io[offset]; + return m_io[offset]; } -static WRITE16_HANDLER( jackpool_io_w ) +WRITE16_MEMBER(jackpool_state::jackpool_io_w) { - jackpool_state *state = space->machine().driver_data<jackpool_state>(); - COMBINE_DATA(&state->m_io[offset]); + COMBINE_DATA(&m_io[offset]); switch(offset*2) { @@ -137,12 +138,12 @@ static WRITE16_HANDLER( jackpool_io_w ) case 0x46: /* ---- ---x coin counter */break; case 0x4a: /* ---- ---x Ticket motor */break; case 0x4c: /* ---- ---x Hopper motor */break; - case 0x4e: state->m_map_vreg = data & 1; break; - case 0x50: space->machine().device<eeprom_device>("eeprom")->set_cs_line((data & 1) ? CLEAR_LINE : ASSERT_LINE ); break; - case 0x52: space->machine().device<eeprom_device>("eeprom")->set_clock_line((data & 1) ? ASSERT_LINE : CLEAR_LINE ); break; - case 0x54: space->machine().device<eeprom_device>("eeprom")->write_bit(data & 1); break; -// case 0x5a: space->machine().device<eeprom_device>("eeprom")->set_cs_line((data & 1) ? CLEAR_LINE : ASSERT_LINE ); break; -// case 0x5c: space->machine().device<eeprom_device>("eeprom")->set_cs_line((data & 1) ? CLEAR_LINE : ASSERT_LINE ); break; + case 0x4e: m_map_vreg = data & 1; break; + case 0x50: machine().device<eeprom_device>("eeprom")->set_cs_line((data & 1) ? CLEAR_LINE : ASSERT_LINE ); break; + case 0x52: machine().device<eeprom_device>("eeprom")->set_clock_line((data & 1) ? ASSERT_LINE : CLEAR_LINE ); break; + case 0x54: machine().device<eeprom_device>("eeprom")->write_bit(data & 1); break; +// case 0x5a: machine().device<eeprom_device>("eeprom")->set_cs_line((data & 1) ? CLEAR_LINE : ASSERT_LINE ); break; +// case 0x5c: machine().device<eeprom_device>("eeprom")->set_cs_line((data & 1) ? CLEAR_LINE : ASSERT_LINE ); break; case 0x60: break; // default: printf("[%02x] <- %02x W\n",offset*2,data); break; } @@ -151,17 +152,17 @@ static WRITE16_HANDLER( jackpool_io_w ) if(offset*2 == 0x54) { printf("Write bit %02x\n",data); - space->machine().device<eeprom_device>("eeprom")->write_bit(data & 1); + machine().device<eeprom_device>("eeprom")->write_bit(data & 1); } if(offset*2 == 0x52) { printf("Clock bit %02x\n",data); - space->machine().device<eeprom_device>("eeprom")->set_clock_line((data & 1) ? ASSERT_LINE : CLEAR_LINE ); + machine().device<eeprom_device>("eeprom")->set_clock_line((data & 1) ? ASSERT_LINE : CLEAR_LINE ); } if(offset*2 == 0x50) { printf("chip select bit %02x\n",data); - space->machine().device<eeprom_device>("eeprom")->set_cs_line((data & 1) ? CLEAR_LINE : ASSERT_LINE ); + machine().device<eeprom_device>("eeprom")->set_cs_line((data & 1) ? CLEAR_LINE : ASSERT_LINE ); } #endif } @@ -174,9 +175,9 @@ static ADDRESS_MAP_START( jackpool_mem, AS_PROGRAM, 16, jackpool_state ) AM_RANGE(0x348000, 0x34ffff) AM_RAM //<- vram banks 2 & 3? AM_RANGE(0x360000, 0x3603ff) AM_RAM_WRITE_LEGACY(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x380000, 0x380061) AM_READWRITE_LEGACY(jackpool_io_r,jackpool_io_w) AM_BASE(m_io)//AM_READ_LEGACY(jackpool_io_r) + AM_RANGE(0x380000, 0x380061) AM_READWRITE(jackpool_io_r,jackpool_io_w) AM_BASE(m_io)//AM_READ(jackpool_io_r) - AM_RANGE(0x800000, 0x80000f) AM_READ_LEGACY(jackpool_ff_r) AM_WRITENOP //UART + AM_RANGE(0x800000, 0x80000f) AM_READ(jackpool_ff_r) AM_WRITENOP //UART AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) ADDRESS_MAP_END diff --git a/src/mame/drivers/jantotsu.c b/src/mame/drivers/jantotsu.c index 2f0b294dee9..4146d98b700 100644 --- a/src/mame/drivers/jantotsu.c +++ b/src/mame/drivers/jantotsu.c @@ -119,6 +119,12 @@ public: UINT8 m_col_bank; UINT8 m_display_on; UINT8 m_bitmap[0x8000]; + DECLARE_READ8_MEMBER(jantotsu_bitmap_r); + DECLARE_WRITE8_MEMBER(jantotsu_bitmap_w); + DECLARE_WRITE8_MEMBER(bankaddr_w); + DECLARE_READ8_MEMBER(jantotsu_mux_r); + DECLARE_WRITE8_MEMBER(jantotsu_mux_w); + DECLARE_READ8_MEMBER(jantotsu_dsw2_r); }; @@ -170,25 +176,22 @@ static SCREEN_UPDATE_RGB32(jantotsu) } /* banked vram */ -static READ8_HANDLER( jantotsu_bitmap_r ) +READ8_MEMBER(jantotsu_state::jantotsu_bitmap_r) { - jantotsu_state *state = space->machine().driver_data<jantotsu_state>(); - return state->m_bitmap[offset + ((state->m_vram_bank & 3) * 0x2000)]; + return m_bitmap[offset + ((m_vram_bank & 3) * 0x2000)]; } -static WRITE8_HANDLER( jantotsu_bitmap_w ) +WRITE8_MEMBER(jantotsu_state::jantotsu_bitmap_w) { - jantotsu_state *state = space->machine().driver_data<jantotsu_state>(); - state->m_bitmap[offset + ((state->m_vram_bank & 3) * 0x2000)] = data; + m_bitmap[offset + ((m_vram_bank & 3) * 0x2000)] = data; } -static WRITE8_HANDLER( bankaddr_w ) +WRITE8_MEMBER(jantotsu_state::bankaddr_w) { - jantotsu_state *state = space->machine().driver_data<jantotsu_state>(); - state->m_vram_bank = ((data & 0xc0) >> 6); + m_vram_bank = ((data & 0xc0) >> 6); - state->m_display_on = (data & 2); + m_display_on = (data & 2); /* bit 0 is unknown */ if(data & 0x3c) @@ -227,38 +230,36 @@ static PALETTE_INIT( jantotsu ) *************************************/ /*Multiplexer is mapped as 6-bits reads,bits 6 & 7 are always connected to the coin mechs.*/ -static READ8_HANDLER( jantotsu_mux_r ) +READ8_MEMBER(jantotsu_state::jantotsu_mux_r) { - jantotsu_state *state = space->machine().driver_data<jantotsu_state>(); const char *const portnames[] = { "PL1_1", "PL1_2", "PL1_3", "PL1_4", "PL2_1", "PL2_2", "PL2_3", "PL2_4" }; UINT8 i,res; - // printf("%02x\n", state->m_mux_data); - res = input_port_read(space->machine(), "COINS"); + // printf("%02x\n", m_mux_data); + res = input_port_read(machine(), "COINS"); for(i=0;i<8;i++) { - if((~state->m_mux_data) & (1 << i)) - res |= input_port_read(space->machine(), portnames[i]); + if((~m_mux_data) & (1 << i)) + res |= input_port_read(machine(), portnames[i]); } return res; } -static WRITE8_HANDLER( jantotsu_mux_w ) +WRITE8_MEMBER(jantotsu_state::jantotsu_mux_w) { - jantotsu_state *state = space->machine().driver_data<jantotsu_state>(); - state->m_mux_data = data; + m_mux_data = data; } /*If bits 6 & 7 doesn't return 0x80,the game hangs until this bit is set, so I'm guessing that these bits can't be read by the z80 at all but directly hard-wired to the video chip. However I need the schematics / pcb snaps and/or a side-by-side test (to know if the background colors really works) to be sure. */ -static READ8_HANDLER( jantotsu_dsw2_r ) +READ8_MEMBER(jantotsu_state::jantotsu_dsw2_r) { - return (input_port_read(space->machine(), "DSW2") & 0x3f) | 0x80; + return (input_port_read(machine(), "DSW2") & 0x3f) | 0x80; } static WRITE8_DEVICE_HANDLER( jan_adpcm_w ) @@ -322,16 +323,16 @@ static void jan_adpcm_int( device_t *device ) static ADDRESS_MAP_START( jantotsu_map, AS_PROGRAM, 8, jantotsu_state ) AM_RANGE(0x0000, 0xbfff) AM_ROM AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xe000, 0xffff) AM_READWRITE_LEGACY(jantotsu_bitmap_r, jantotsu_bitmap_w) + AM_RANGE(0xe000, 0xffff) AM_READWRITE(jantotsu_bitmap_r, jantotsu_bitmap_w) ADDRESS_MAP_END static ADDRESS_MAP_START( jantotsu_io, AS_IO, 8, jantotsu_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1") AM_DEVWRITE_LEGACY("sn1", sn76496_w) - AM_RANGE(0x01, 0x01) AM_READ_LEGACY(jantotsu_dsw2_r) AM_DEVWRITE_LEGACY("sn2", sn76496_w) + AM_RANGE(0x01, 0x01) AM_READ(jantotsu_dsw2_r) AM_DEVWRITE_LEGACY("sn2", sn76496_w) AM_RANGE(0x02, 0x03) AM_DEVWRITE_LEGACY("adpcm", jan_adpcm_w) - AM_RANGE(0x04, 0x04) AM_READWRITE_LEGACY(jantotsu_mux_r, jantotsu_mux_w) - AM_RANGE(0x07, 0x07) AM_WRITE_LEGACY(bankaddr_w) + AM_RANGE(0x04, 0x04) AM_READWRITE(jantotsu_mux_r, jantotsu_mux_w) + AM_RANGE(0x07, 0x07) AM_WRITE(bankaddr_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/jokrwild.c b/src/mame/drivers/jokrwild.c index f68ef81ac4c..b6a82f39e4f 100644 --- a/src/mame/drivers/jokrwild.c +++ b/src/mame/drivers/jokrwild.c @@ -106,6 +106,9 @@ public: UINT8 *m_videoram; UINT8 *m_colorram; tilemap_t *m_bg_tilemap; + DECLARE_WRITE8_MEMBER(jokrwild_videoram_w); + DECLARE_WRITE8_MEMBER(jokrwild_colorram_w); + DECLARE_READ8_MEMBER(rng_r); }; @@ -114,19 +117,17 @@ public: *************************/ -static WRITE8_HANDLER( jokrwild_videoram_w ) +WRITE8_MEMBER(jokrwild_state::jokrwild_videoram_w) { - jokrwild_state *state = space->machine().driver_data<jokrwild_state>(); - state->m_videoram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_videoram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( jokrwild_colorram_w ) +WRITE8_MEMBER(jokrwild_state::jokrwild_colorram_w) { - jokrwild_state *state = space->machine().driver_data<jokrwild_state>(); - state->m_colorram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_colorram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } @@ -176,15 +177,15 @@ static PALETTE_INIT( jokrwild ) * Read/Write Handlers * *****************************/ -static READ8_HANDLER( rng_r ) +READ8_MEMBER(jokrwild_state::rng_r) { - if(cpu_get_pc(&space->device()) == 0xab32) + if(cpu_get_pc(&space.device()) == 0xab32) return (offset == 0) ? 0x9e : 0x27; - if(cpu_get_pc(&space->device()) == 0xab3a) + if(cpu_get_pc(&space.device()) == 0xab3a) return (offset == 2) ? 0x49 : 0x92; - return space->machine().rand() & 0xff; + return machine().rand() & 0xff; } /************************* @@ -192,9 +193,9 @@ static READ8_HANDLER( rng_r ) *************************/ static ADDRESS_MAP_START( jokrwild_map, AS_PROGRAM, 8, jokrwild_state ) - AM_RANGE(0x0000, 0x03ff) AM_RAM_WRITE_LEGACY(jokrwild_videoram_w) AM_BASE(m_videoram) + AM_RANGE(0x0000, 0x03ff) AM_RAM_WRITE(jokrwild_videoram_w) AM_BASE(m_videoram) AM_RANGE(0x0400, 0x07ff) AM_RAM //FIXME: backup RAM - AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE_LEGACY(jokrwild_colorram_w) AM_BASE(m_colorram) + AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(jokrwild_colorram_w) AM_BASE(m_colorram) AM_RANGE(0x2400, 0x27ff) AM_RAM //stack RAM AM_RANGE(0x4004, 0x4007) AM_DEVREADWRITE("pia0", pia6821_device, read, write) AM_RANGE(0x4008, 0x400b) AM_DEVREADWRITE("pia1", pia6821_device, read, write) //optical sensor is here @@ -202,7 +203,7 @@ static ADDRESS_MAP_START( jokrwild_map, AS_PROGRAM, 8, jokrwild_state ) AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("crtc", mc6845_device, address_w) AM_RANGE(0x6001, 0x6001) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) AM_RANGE(0x6100, 0x6100) AM_READ_PORT("SW1") - AM_RANGE(0x6200, 0x6203) AM_READ_LEGACY(rng_r)//another PIA? + AM_RANGE(0x6200, 0x6203) AM_READ(rng_r)//another PIA? AM_RANGE(0x6300, 0x6300) AM_READ_PORT("SW2") AM_RANGE(0x8000, 0xffff) AM_ROM ADDRESS_MAP_END diff --git a/src/mame/drivers/jollyjgr.c b/src/mame/drivers/jollyjgr.c index 5645dc7a8fe..316b39dd8cc 100644 --- a/src/mame/drivers/jollyjgr.c +++ b/src/mame/drivers/jollyjgr.c @@ -125,6 +125,10 @@ public: UINT8 m_bitmap_disable; UINT8 m_tilemap_bank; UINT8 m_pri; + DECLARE_WRITE8_MEMBER(jollyjgr_videoram_w); + DECLARE_WRITE8_MEMBER(jollyjgr_attrram_w); + DECLARE_WRITE8_MEMBER(jollyjgr_misc_w); + DECLARE_WRITE8_MEMBER(jollyjgr_coin_lookout_w); }; @@ -134,16 +138,14 @@ public: * *************************************/ -static WRITE8_HANDLER( jollyjgr_videoram_w ) +WRITE8_MEMBER(jollyjgr_state::jollyjgr_videoram_w) { - jollyjgr_state *state = space->machine().driver_data<jollyjgr_state>(); - state->m_videoram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_videoram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( jollyjgr_attrram_w ) +WRITE8_MEMBER(jollyjgr_state::jollyjgr_attrram_w) { - jollyjgr_state *state = space->machine().driver_data<jollyjgr_state>(); if (offset & 1) { @@ -151,38 +153,37 @@ static WRITE8_HANDLER( jollyjgr_attrram_w ) int i; for (i = offset >> 1; i < 0x0400; i += 32) - state->m_bg_tilemap->mark_tile_dirty(i); + m_bg_tilemap->mark_tile_dirty(i); } else { - state->m_bg_tilemap->set_scrolly(offset >> 1, data); + m_bg_tilemap->set_scrolly(offset >> 1, data); } - state->m_colorram[offset] = data; + m_colorram[offset] = data; } -static WRITE8_HANDLER( jollyjgr_misc_w ) +WRITE8_MEMBER(jollyjgr_state::jollyjgr_misc_w) { - jollyjgr_state *state = space->machine().driver_data<jollyjgr_state>(); // they could be swapped, because it always set "data & 3" - state->m_flip_x = data & 1; - state->m_flip_y = data & 2; + m_flip_x = data & 1; + m_flip_y = data & 2; // same for these two (used by Frog & Spiders) - state->m_bitmap_disable = data & 0x40; - state->m_tilemap_bank = data & 0x20; + m_bitmap_disable = data & 0x40; + m_tilemap_bank = data & 0x20; - state->m_pri = data & 4; + m_pri = data & 4; - state->m_bg_tilemap->set_flip((state->m_flip_x ? TILEMAP_FLIPX : 0) | (state->m_flip_y ? TILEMAP_FLIPY : 0)); + m_bg_tilemap->set_flip((m_flip_x ? TILEMAP_FLIPX : 0) | (m_flip_y ? TILEMAP_FLIPY : 0)); - state->m_nmi_enable = data & 0x80; + m_nmi_enable = data & 0x80; } -static WRITE8_HANDLER( jollyjgr_coin_lookout_w ) +WRITE8_MEMBER(jollyjgr_state::jollyjgr_coin_lookout_w) { - coin_lockout_global_w(space->machine(), data & 1); + coin_lockout_global_w(machine(), data & 1); /* bits 4, 5, 6 and 7 are used too */ } @@ -200,11 +201,11 @@ static ADDRESS_MAP_START( jollyjgr_map, AS_PROGRAM, 8, jollyjgr_state ) AM_RANGE(0x8ff9, 0x8ff9) AM_READ_PORT("INPUTS") AM_RANGE(0x8ff8, 0x8ff8) AM_DEVWRITE_LEGACY("aysnd", ay8910_address_w) AM_RANGE(0x8ffa, 0x8ffa) AM_READ_PORT("SYSTEM") AM_DEVWRITE_LEGACY("aysnd", ay8910_data_w) - AM_RANGE(0x8ffc, 0x8ffc) AM_WRITE_LEGACY(jollyjgr_misc_w) - AM_RANGE(0x8ffd, 0x8ffd) AM_WRITE_LEGACY(jollyjgr_coin_lookout_w) + AM_RANGE(0x8ffc, 0x8ffc) AM_WRITE(jollyjgr_misc_w) + AM_RANGE(0x8ffd, 0x8ffd) AM_WRITE(jollyjgr_coin_lookout_w) AM_RANGE(0x8fff, 0x8fff) AM_READ_PORT("DSW2") - AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE_LEGACY(jollyjgr_videoram_w) AM_BASE(m_videoram) - AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE_LEGACY(jollyjgr_attrram_w) AM_BASE(m_colorram) + AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(jollyjgr_videoram_w) AM_BASE(m_videoram) + AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(jollyjgr_attrram_w) AM_BASE(m_colorram) AM_RANGE(0x9840, 0x987f) AM_RAM AM_BASE(m_spriteram) AM_RANGE(0x9880, 0x9bff) AM_RAM AM_RANGE(0xa000, 0xffff) AM_RAM AM_BASE(m_bitmap) @@ -217,11 +218,11 @@ static ADDRESS_MAP_START( fspider_map, AS_PROGRAM, 8, jollyjgr_state ) AM_RANGE(0x8ff9, 0x8ff9) AM_READ_PORT("INPUTS") AM_RANGE(0x8ff8, 0x8ff8) AM_DEVWRITE_LEGACY("aysnd", ay8910_address_w) AM_RANGE(0x8ffa, 0x8ffa) AM_READ_PORT("SYSTEM") AM_DEVWRITE_LEGACY("aysnd", ay8910_data_w) - AM_RANGE(0x8ffc, 0x8ffc) AM_WRITE_LEGACY(jollyjgr_misc_w) - AM_RANGE(0x8ffd, 0x8ffd) AM_WRITE_LEGACY(jollyjgr_coin_lookout_w) + AM_RANGE(0x8ffc, 0x8ffc) AM_WRITE(jollyjgr_misc_w) + AM_RANGE(0x8ffd, 0x8ffd) AM_WRITE(jollyjgr_coin_lookout_w) AM_RANGE(0x8fff, 0x8fff) AM_READ_PORT("DSW2") - AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE_LEGACY(jollyjgr_videoram_w) AM_BASE(m_videoram) - AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE_LEGACY(jollyjgr_attrram_w) AM_BASE(m_colorram) + AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(jollyjgr_videoram_w) AM_BASE(m_videoram) + AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(jollyjgr_attrram_w) AM_BASE(m_colorram) AM_RANGE(0x9840, 0x987f) AM_RAM AM_BASE(m_spriteram) AM_RANGE(0x9880, 0x989f) AM_RAM // ? AM_RANGE(0x98a0, 0x98af) AM_RAM AM_BASE(m_bulletram) diff --git a/src/mame/drivers/jongkyo.c b/src/mame/drivers/jongkyo.c index 076b9fe7349..4fd273d213a 100644 --- a/src/mame/drivers/jongkyo.c +++ b/src/mame/drivers/jongkyo.c @@ -45,6 +45,11 @@ public: /* memory pointers */ UINT8 * m_videoram; UINT8 m_videoram2[0x4000]; + DECLARE_WRITE8_MEMBER(bank_select_w); + DECLARE_WRITE8_MEMBER(mux_w); + DECLARE_WRITE8_MEMBER(jongkyo_coin_counter_w); + DECLARE_WRITE8_MEMBER(videoram2_w); + DECLARE_WRITE8_MEMBER(unknown_w); }; @@ -109,30 +114,28 @@ static SCREEN_UPDATE_IND16( jongkyo ) * *************************************/ -static WRITE8_HANDLER( bank_select_w ) +WRITE8_MEMBER(jongkyo_state::bank_select_w) { - jongkyo_state *state = space->machine().driver_data<jongkyo_state>(); int mask = 1 << (offset >> 1); - state->m_rom_bank &= ~mask; + m_rom_bank &= ~mask; if (offset & 1) - state->m_rom_bank |= mask; + m_rom_bank |= mask; - memory_set_bank(space->machine(), "bank1", state->m_rom_bank); + memory_set_bank(machine(), "bank1", m_rom_bank); } -static WRITE8_HANDLER( mux_w ) +WRITE8_MEMBER(jongkyo_state::mux_w) { - jongkyo_state *state = space->machine().driver_data<jongkyo_state>(); - state->m_mux_data = ~data; - // printf("%02x\n", state->m_mux_data); + m_mux_data = ~data; + // printf("%02x\n", m_mux_data); } -static WRITE8_HANDLER( jongkyo_coin_counter_w ) +WRITE8_MEMBER(jongkyo_state::jongkyo_coin_counter_w) { /* bit 1 = coin counter */ - coin_counter_w(space->machine(), 0, data & 2); + coin_counter_w(machine(), 0, data & 2); /* bit 2 always set? */ } @@ -177,13 +180,12 @@ static READ8_DEVICE_HANDLER( input_2p_r ) input_port_read(device->machine(), "PL2_4") & input_port_read(device->machine(), "PL2_5") & input_port_read(device->machine(), "PL2_6")) | coin_port; } -static WRITE8_HANDLER( videoram2_w ) +WRITE8_MEMBER(jongkyo_state::videoram2_w) { - jongkyo_state *state = space->machine().driver_data<jongkyo_state>(); - state->m_videoram2[offset] = data; + m_videoram2[offset] = data; } -static WRITE8_HANDLER( unknown_w ) +WRITE8_MEMBER(jongkyo_state::unknown_w) { switch (offset) { @@ -218,7 +220,7 @@ static WRITE8_HANDLER( unknown_w ) *************************************/ static ADDRESS_MAP_START( jongkyo_memmap, AS_PROGRAM, 8, jongkyo_state ) - AM_RANGE(0x0000, 0x3fff) AM_ROM AM_WRITE_LEGACY(videoram2_w) // wrong, this doesn't seem to be video ram on write.. + AM_RANGE(0x0000, 0x3fff) AM_ROM AM_WRITE(videoram2_w) // wrong, this doesn't seem to be video ram on write.. AM_RANGE(0x4000, 0x6bff) AM_ROM // fixed rom AM_RANGE(0x6c00, 0x6fff) AM_ROMBANK("bank1") // banked (8 banks) AM_RANGE(0x7000, 0x77ff) AM_RAM @@ -232,11 +234,11 @@ static ADDRESS_MAP_START( jongkyo_portmap, AS_IO, 8, jongkyo_state ) AM_RANGE(0x01, 0x01) AM_DEVREAD_LEGACY("aysnd", ay8910_r) AM_RANGE(0x02, 0x03) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_address_w) - AM_RANGE(0x10, 0x10) AM_READ_PORT("DSW") AM_WRITE_LEGACY(jongkyo_coin_counter_w) - AM_RANGE(0x11, 0x11) AM_READ_PORT("IN0") AM_WRITE_LEGACY(mux_w) + AM_RANGE(0x10, 0x10) AM_READ_PORT("DSW") AM_WRITE(jongkyo_coin_counter_w) + AM_RANGE(0x11, 0x11) AM_READ_PORT("IN0") AM_WRITE(mux_w) // W 11 select keyboard row (fe fd fb f7) - AM_RANGE(0x40, 0x45) AM_WRITE_LEGACY(bank_select_w) - AM_RANGE(0x46, 0x4f) AM_WRITE_LEGACY(unknown_w) + AM_RANGE(0x40, 0x45) AM_WRITE(bank_select_w) + AM_RANGE(0x46, 0x4f) AM_WRITE(unknown_w) ADDRESS_MAP_END /************************************* diff --git a/src/mame/drivers/jpmsys5.c b/src/mame/drivers/jpmsys5.c index 4e731211895..cdf059acd80 100644 --- a/src/mame/drivers/jpmsys5.c +++ b/src/mame/drivers/jpmsys5.c @@ -69,6 +69,15 @@ public: UINT8 m_a2_acia_dcd; UINT8 m_a2_data_out; UINT8 m_a2_data_in; + DECLARE_WRITE16_MEMBER(sys5_tms34061_w); + DECLARE_READ16_MEMBER(sys5_tms34061_r); + DECLARE_WRITE16_MEMBER(ramdac_w); + DECLARE_WRITE16_MEMBER(rombank_w); + DECLARE_READ16_MEMBER(coins_r); + DECLARE_WRITE16_MEMBER(coins_w); + DECLARE_READ16_MEMBER(unk_r); + DECLARE_WRITE16_MEMBER(mux_w); + DECLARE_READ16_MEMBER(mux_r); }; @@ -110,7 +119,7 @@ static const struct tms34061_interface tms34061intf = tms_interrupt /* Interrupt gen callback */ }; -static WRITE16_HANDLER( sys5_tms34061_w ) +WRITE16_MEMBER(jpmsys5_state::sys5_tms34061_w) { int func = (offset >> 19) & 3; int row = (offset >> 7) & 0x1ff; @@ -127,13 +136,13 @@ static WRITE16_HANDLER( sys5_tms34061_w ) } if (ACCESSING_BITS_8_15) - tms34061_w(space, col, row, func, data >> 8); + tms34061_w(&space, col, row, func, data >> 8); if (ACCESSING_BITS_0_7) - tms34061_w(space, col | 1, row, func, data & 0xff); + tms34061_w(&space, col | 1, row, func, data & 0xff); } -static READ16_HANDLER( sys5_tms34061_r ) +READ16_MEMBER(jpmsys5_state::sys5_tms34061_r) { UINT16 data = 0; int func = (offset >> 19) & 3; @@ -151,32 +160,31 @@ static READ16_HANDLER( sys5_tms34061_r ) } if (ACCESSING_BITS_8_15) - data |= tms34061_r(space, col, row, func) << 8; + data |= tms34061_r(&space, col, row, func) << 8; if (ACCESSING_BITS_0_7) - data |= tms34061_r(space, col | 1, row, func); + data |= tms34061_r(&space, col | 1, row, func); return data; } -static WRITE16_HANDLER( ramdac_w ) +WRITE16_MEMBER(jpmsys5_state::ramdac_w) { - jpmsys5_state *state = space->machine().driver_data<jpmsys5_state>(); if (offset == 0) { - state->m_pal_addr = data; - state->m_pal_idx = 0; + m_pal_addr = data; + m_pal_idx = 0; } else if (offset == 1) { - state->m_palette[state->m_pal_addr][state->m_pal_idx] = data; + m_palette[m_pal_addr][m_pal_idx] = data; - if (++state->m_pal_idx == 3) + if (++m_pal_idx == 3) { /* Update the MAME palette */ - palette_set_color_rgb(space->machine(), state->m_pal_addr, pal6bit(state->m_palette[state->m_pal_addr][0]), pal6bit(state->m_palette[state->m_pal_addr][1]), pal6bit(state->m_palette[state->m_pal_addr][2])); - state->m_pal_addr++; - state->m_pal_idx = 0; + palette_set_color_rgb(machine(), m_pal_addr, pal6bit(m_palette[m_pal_addr][0]), pal6bit(m_palette[m_pal_addr][1]), pal6bit(m_palette[m_pal_addr][2])); + m_pal_addr++; + m_pal_idx = 0; } } else @@ -238,41 +246,40 @@ static void sys5_draw_lamps(jpmsys5_state *state) * ****************************************/ -static WRITE16_HANDLER( rombank_w ) +WRITE16_MEMBER(jpmsys5_state::rombank_w) { - UINT8 *rom = space->machine().region("maincpu")->base(); + UINT8 *rom = machine().region("maincpu")->base(); data &= 0x1f; - memory_set_bankptr(space->machine(), "bank1", &rom[0x20000 + 0x20000 * data]); + memory_set_bankptr(machine(), "bank1", &rom[0x20000 + 0x20000 * data]); } -static READ16_HANDLER( coins_r ) +READ16_MEMBER(jpmsys5_state::coins_r) { if (offset == 2) - return input_port_read(space->machine(), "COINS") << 8; + return input_port_read(machine(), "COINS") << 8; else return 0xffff; } -static WRITE16_HANDLER( coins_w ) +WRITE16_MEMBER(jpmsys5_state::coins_w) { /* TODO */ } -static READ16_HANDLER( unk_r ) +READ16_MEMBER(jpmsys5_state::unk_r) { return 0xffff; } -static WRITE16_HANDLER( mux_w ) +WRITE16_MEMBER(jpmsys5_state::mux_w) { - jpmsys5_state *state = space->machine().driver_data<jpmsys5_state>(); - state->m_muxram[offset]=data; + m_muxram[offset]=data; } -static READ16_HANDLER( mux_r ) +READ16_MEMBER(jpmsys5_state::mux_r) { if (offset == 0x81/2) - return input_port_read(space->machine(), "DSW"); + return input_port_read(machine(), "DSW"); return 0xffff; } @@ -310,7 +317,7 @@ static READ16_DEVICE_HANDLER( jpm_upd7759_r ) static ADDRESS_MAP_START( 68000_map, AS_PROGRAM, 16, jpmsys5_state ) AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x01fffe, 0x01ffff) AM_WRITE_LEGACY(rombank_w) + AM_RANGE(0x01fffe, 0x01ffff) AM_WRITE(rombank_w) AM_RANGE(0x020000, 0x03ffff) AM_ROMBANK("bank1") AM_RANGE(0x040000, 0x043fff) AM_RAM AM_SHARE("nvram") AM_RANGE(0x046000, 0x046001) AM_WRITENOP @@ -323,17 +330,17 @@ static ADDRESS_MAP_START( 68000_map, AS_PROGRAM, 16, jpmsys5_state ) AM_RANGE(0x046066, 0x046067) AM_WRITENOP AM_RANGE(0x046080, 0x046081) AM_DEVREADWRITE8("acia6850_1", acia6850_device, status_read, control_write, 0xff) AM_RANGE(0x046082, 0x046083) AM_DEVREADWRITE8("acia6850_1", acia6850_device, data_read, data_write, 0xff) - AM_RANGE(0x046084, 0x046085) AM_READ_LEGACY(unk_r) // PIA? - AM_RANGE(0x046088, 0x046089) AM_READ_LEGACY(unk_r) // PIA? + AM_RANGE(0x046084, 0x046085) AM_READ(unk_r) // PIA? + AM_RANGE(0x046088, 0x046089) AM_READ(unk_r) // PIA? AM_RANGE(0x04608c, 0x04608d) AM_DEVREADWRITE8("acia6850_2", acia6850_device, status_read, control_write, 0xff) AM_RANGE(0x04608e, 0x04608f) AM_DEVREADWRITE8("acia6850_2", acia6850_device, data_read, data_write, 0xff) AM_RANGE(0x0460a0, 0x0460a3) AM_DEVWRITE8_LEGACY("ym2413", ym2413_w, 0x00ff) AM_RANGE(0x0460c0, 0x0460c1) AM_WRITENOP - AM_RANGE(0x0460e0, 0x0460e5) AM_WRITE_LEGACY(ramdac_w) - AM_RANGE(0x048000, 0x04801f) AM_READWRITE_LEGACY(coins_r, coins_w) - AM_RANGE(0x04c000, 0x04c0ff) AM_READ_LEGACY(mux_r) AM_WRITE_LEGACY(mux_w) + AM_RANGE(0x0460e0, 0x0460e5) AM_WRITE(ramdac_w) + AM_RANGE(0x048000, 0x04801f) AM_READWRITE(coins_r, coins_w) + AM_RANGE(0x04c000, 0x04c0ff) AM_READ(mux_r) AM_WRITE(mux_w) AM_RANGE(0x04c100, 0x04c105) AM_DEVREADWRITE_LEGACY("upd7759", jpm_upd7759_r, jpm_upd7759_w) - AM_RANGE(0x800000, 0xcfffff) AM_READWRITE_LEGACY(sys5_tms34061_r, sys5_tms34061_w) + AM_RANGE(0x800000, 0xcfffff) AM_READWRITE(sys5_tms34061_r, sys5_tms34061_w) ADDRESS_MAP_END @@ -694,7 +701,7 @@ MACHINE_CONFIG_END static ADDRESS_MAP_START( 68000_awp_map, AS_PROGRAM, 16, jpmsys5_state ) AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x01fffe, 0x01ffff) AM_WRITE_LEGACY(rombank_w) + AM_RANGE(0x01fffe, 0x01ffff) AM_WRITE(rombank_w) AM_RANGE(0x020000, 0x03ffff) AM_ROMBANK("bank1") AM_RANGE(0x040000, 0x043fff) AM_RAM AM_SHARE("nvram") AM_RANGE(0x046000, 0x046001) AM_WRITENOP @@ -707,14 +714,14 @@ static ADDRESS_MAP_START( 68000_awp_map, AS_PROGRAM, 16, jpmsys5_state ) AM_RANGE(0x046066, 0x046067) AM_WRITENOP AM_RANGE(0x046080, 0x046081) AM_DEVREADWRITE8("acia6850_1", acia6850_device, status_read, control_write, 0xff) AM_RANGE(0x046082, 0x046083) AM_DEVREADWRITE8("acia6850_1", acia6850_device, data_read, data_write, 0xff) - AM_RANGE(0x046084, 0x046085) AM_READ_LEGACY(unk_r) // PIA? - AM_RANGE(0x046088, 0x046089) AM_READ_LEGACY(unk_r) // PIA? + AM_RANGE(0x046084, 0x046085) AM_READ(unk_r) // PIA? + AM_RANGE(0x046088, 0x046089) AM_READ(unk_r) // PIA? AM_RANGE(0x04608c, 0x04608d) AM_DEVREADWRITE8("acia6850_2", acia6850_device, status_read, control_write, 0xff) AM_RANGE(0x04608e, 0x04608f) AM_DEVREADWRITE8("acia6850_2", acia6850_device, data_read, data_write, 0xff) AM_RANGE(0x0460a0, 0x0460a3) AM_DEVWRITE8_LEGACY("ym2413", ym2413_w, 0x00ff) AM_RANGE(0x0460c0, 0x0460c1) AM_WRITENOP - AM_RANGE(0x048000, 0x04801f) AM_READWRITE_LEGACY(coins_r, coins_w) - AM_RANGE(0x04c000, 0x04c0ff) AM_READ_LEGACY(mux_r) AM_WRITE_LEGACY(mux_w) + AM_RANGE(0x048000, 0x04801f) AM_READWRITE(coins_r, coins_w) + AM_RANGE(0x04c000, 0x04c0ff) AM_READ(mux_r) AM_WRITE(mux_w) AM_RANGE(0x04c100, 0x04c105) AM_DEVREADWRITE_LEGACY("upd7759", jpm_upd7759_r, jpm_upd7759_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/jubilee.c b/src/mame/drivers/jubilee.c index 5ee9f2e3f92..d5ed9787128 100644 --- a/src/mame/drivers/jubilee.c +++ b/src/mame/drivers/jubilee.c @@ -98,6 +98,8 @@ public: UINT8 *m_videoram; tilemap_t *m_bg_tilemap; + DECLARE_WRITE8_MEMBER(jubileep_videoram_w); + DECLARE_READ8_MEMBER(unk_r); }; @@ -106,11 +108,10 @@ public: *************************/ -static WRITE8_HANDLER( jubileep_videoram_w ) +WRITE8_MEMBER(jubilee_state::jubileep_videoram_w) { - jubilee_state *state = space->machine().driver_data<jubilee_state>(); - state->m_videoram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_videoram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } @@ -163,7 +164,7 @@ static INTERRUPT_GEN( jubileep_interrupt ) static ADDRESS_MAP_START( jubileep_map, AS_PROGRAM, 8, jubilee_state ) ADDRESS_MAP_GLOBAL_MASK(0x3fff) AM_RANGE(0x0000, 0x2fff) AM_ROM - AM_RANGE(0x3000, 0x30ff) AM_WRITE_LEGACY(jubileep_videoram_w) AM_BASE(m_videoram) /* wrong... just placed somewhere */ + AM_RANGE(0x3000, 0x30ff) AM_WRITE(jubileep_videoram_w) AM_BASE(m_videoram) /* wrong... just placed somewhere */ AM_RANGE(0x3100, 0x3fff) AM_RAM ADDRESS_MAP_END @@ -177,16 +178,16 @@ ADDRESS_MAP_END */ -static READ8_HANDLER(unk_r) +READ8_MEMBER(jubilee_state::unk_r) { - return (space->machine().rand() & 0xff); + return (machine().rand() & 0xff); } static ADDRESS_MAP_START( jubileep_cru_map, AS_IO, 8, jubilee_state ) -// AM_RANGE(0x0000, 0xffff) AM_READ_LEGACY(unk_r) +// AM_RANGE(0x0000, 0xffff) AM_READ(unk_r) // AM_RANGE(0x00, 0x00) AM_DEVREADWRITE_LEGACY("crtc", mc6845_status_r, mc6845_address_w) // AM_RANGE(0x01, 0x01) AM_DEVREADWRITE_LEGACY("crtc", mc6845_register_r, mc6845_register_w) - AM_RANGE(0xc8, 0xc8) AM_READ_LEGACY(unk_r) + AM_RANGE(0xc8, 0xc8) AM_READ(unk_r) ADDRESS_MAP_END /* I/O byte R/W diff --git a/src/mame/drivers/kas89.c b/src/mame/drivers/kas89.c index 047e0db6b1b..167284e490f 100644 --- a/src/mame/drivers/kas89.c +++ b/src/mame/drivers/kas89.c @@ -218,6 +218,13 @@ public: device_t *m_audiocpu; required_device<v9938_device> m_v9938; + DECLARE_WRITE8_MEMBER(mux_w); + DECLARE_READ8_MEMBER(mux_r); + DECLARE_WRITE8_MEMBER(control_w); + DECLARE_WRITE8_MEMBER(sound_comm_w); + DECLARE_WRITE8_MEMBER(int_ack_w); + DECLARE_WRITE8_MEMBER(led_mux_data_w); + DECLARE_WRITE8_MEMBER(led_mux_select_w); }; #define VDP_MEM 0x40000 @@ -267,7 +274,7 @@ static MACHINE_RESET(kas89) * Input Ports Demux & Common Routines * ****************************************/ -static WRITE8_HANDLER( mux_w ) +WRITE8_MEMBER(kas89_state::mux_w) { /* - bits - 7654 3210 @@ -275,32 +282,31 @@ static WRITE8_HANDLER( mux_w ) Writes: 1-2-4-8-10-20-40-3f. Only 80 (for DSW) at very begining... */ - kas89_state *state = space->machine().driver_data<kas89_state>(); - state->m_mux_data = data; + + m_mux_data = data; } -static READ8_HANDLER( mux_r ) +READ8_MEMBER(kas89_state::mux_r) { - kas89_state *state = space->machine().driver_data<kas89_state>(); - switch(state->m_mux_data) + switch(m_mux_data) { - case 0x01: return input_port_read(space->machine(), "PL1"); - case 0x02: return input_port_read(space->machine(), "PL2"); - case 0x04: return input_port_read(space->machine(), "PL3"); - case 0x08: return input_port_read(space->machine(), "PL4"); - case 0x10: return input_port_read(space->machine(), "PL5"); - case 0x20: return input_port_read(space->machine(), "PL6"); + case 0x01: return input_port_read(machine(), "PL1"); + case 0x02: return input_port_read(machine(), "PL2"); + case 0x04: return input_port_read(machine(), "PL3"); + case 0x08: return input_port_read(machine(), "PL4"); + case 0x10: return input_port_read(machine(), "PL5"); + case 0x20: return input_port_read(machine(), "PL6"); case 0x40: { - output_set_lamp_value(37, 1 - ((input_port_read(space->machine(), "SVC") >> 5) & 1)); /* Operator Key LAMP */ - return input_port_read(space->machine(), "SVC"); + output_set_lamp_value(37, 1 - ((input_port_read(machine(), "SVC") >> 5) & 1)); /* Operator Key LAMP */ + return input_port_read(machine(), "SVC"); } - case 0x80: return input_port_read(space->machine(), "DSW"); /* Polled at $162a through NMI routine */ - case 0x3f: return input_port_read(space->machine(), "UNK"); + case 0x80: return input_port_read(machine(), "DSW"); /* Polled at $162a through NMI routine */ + case 0x3f: return input_port_read(machine(), "UNK"); } - logerror("Mux_data %02X\n", state->m_mux_data); - return state->m_mux_data; + logerror("Mux_data %02X\n", m_mux_data); + return m_mux_data; } static TIMER_DEVICE_CALLBACK ( kas89_nmi_cb ) @@ -319,7 +325,7 @@ static TIMER_DEVICE_CALLBACK ( kas89_sound_nmi_cb ) } -static WRITE8_HANDLER( control_w ) +WRITE8_MEMBER(kas89_state::control_w) { /* - bits - 7654 3210 @@ -329,14 +335,14 @@ static WRITE8_HANDLER( control_w ) -x-- ---- NMI enable. Active high. x-xx x--- Unused. */ - kas89_state *state = space->machine().driver_data<kas89_state>(); - state->m_main_nmi_enable = data & 0x40; - coin_counter_w(space->machine(), 0, (data ^ 0xff) & 0x01); /* Credits In counter */ - coin_counter_w(space->machine(), 1, (data ^ 0xff) & 0x02); /* Credits Out counter */ + m_main_nmi_enable = data & 0x40; + + coin_counter_w(machine(), 0, (data ^ 0xff) & 0x01); /* Credits In counter */ + coin_counter_w(machine(), 1, (data ^ 0xff) & 0x02); /* Credits Out counter */ } -static WRITE8_HANDLER( sound_comm_w ) +WRITE8_MEMBER(kas89_state::sound_comm_w) { /* This port is used mainly for sound latch, but bit6 activates a sort of output port (maybe for a sign?) @@ -351,13 +357,13 @@ static WRITE8_HANDLER( sound_comm_w ) is written to the outport... (maybe to clear the possible sign). */ - kas89_state *state = space->machine().driver_data<kas89_state>(); + if (data & 0x40) { - state->m_outdata = (data ^ 0x40); /* Pure data. Without the activator bit */ + m_outdata = (data ^ 0x40); /* Pure data. Without the activator bit */ - if (state->m_outdata == 0x3f) + if (m_outdata == 0x3f) { UINT8 i; for ( i = 0; i < 37; i++ ) @@ -366,20 +372,19 @@ static WRITE8_HANDLER( sound_comm_w ) } } - logerror("Outdata: Write %02x\n", state->m_outdata); + logerror("Outdata: Write %02x\n", m_outdata); } else { soundlatch_w(space, 0, data); - device_set_input_line(state->m_audiocpu, 0, ASSERT_LINE ); + device_set_input_line(m_audiocpu, 0, ASSERT_LINE ); } } -static WRITE8_HANDLER( int_ack_w ) +WRITE8_MEMBER(kas89_state::int_ack_w) { - kas89_state *state = space->machine().driver_data<kas89_state>(); - device_set_input_line(state->m_audiocpu, 0, CLEAR_LINE ); + device_set_input_line(m_audiocpu, 0, CLEAR_LINE ); } @@ -387,24 +392,24 @@ static WRITE8_HANDLER( int_ack_w ) * Output Ports Demux & LEDs Support * ****************************************/ -static WRITE8_HANDLER( led_mux_data_w ) +WRITE8_MEMBER(kas89_state::led_mux_data_w) { /* - bits - 7654 3210 xxxx xxxx LEDs data. */ - kas89_state *state = space->machine().driver_data<kas89_state>(); - state->m_leds_mux_data = data; + + m_leds_mux_data = data; } -static WRITE8_HANDLER( led_mux_select_w ) +WRITE8_MEMBER(kas89_state::led_mux_select_w) { /* - bits - 7654 3210 ---x xxxx LEDs Set selector. */ - kas89_state *state = space->machine().driver_data<kas89_state>(); - state->m_leds_mux_selector = data; + + m_leds_mux_selector = data; UINT8 i; for ( i = 0; i < 37; i++ ) @@ -424,63 +429,63 @@ static WRITE8_HANDLER( led_mux_select_w ) case 0x01: { - output_set_lamp_value(11, (state->m_leds_mux_data >> 0) & 1); /* Number 11 LED */ - output_set_lamp_value(36, (state->m_leds_mux_data >> 1) & 1); /* Number 36 LED */ - output_set_lamp_value(13, (state->m_leds_mux_data >> 2) & 1); /* Number 13 LED */ - output_set_lamp_value(27, (state->m_leds_mux_data >> 3) & 1); /* Number 27 LED */ - output_set_lamp_value(06, (state->m_leds_mux_data >> 4) & 1); /* Number 6 LED */ - output_set_lamp_value(34, (state->m_leds_mux_data >> 5) & 1); /* Number 34 LED */ - output_set_lamp_value(17, (state->m_leds_mux_data >> 6) & 1); /* Number 17 LED */ - output_set_lamp_value(25, (state->m_leds_mux_data >> 7) & 1); /* Number 25 LED */ + output_set_lamp_value(11, (m_leds_mux_data >> 0) & 1); /* Number 11 LED */ + output_set_lamp_value(36, (m_leds_mux_data >> 1) & 1); /* Number 36 LED */ + output_set_lamp_value(13, (m_leds_mux_data >> 2) & 1); /* Number 13 LED */ + output_set_lamp_value(27, (m_leds_mux_data >> 3) & 1); /* Number 27 LED */ + output_set_lamp_value(06, (m_leds_mux_data >> 4) & 1); /* Number 6 LED */ + output_set_lamp_value(34, (m_leds_mux_data >> 5) & 1); /* Number 34 LED */ + output_set_lamp_value(17, (m_leds_mux_data >> 6) & 1); /* Number 17 LED */ + output_set_lamp_value(25, (m_leds_mux_data >> 7) & 1); /* Number 25 LED */ break; } case 0x02: { - output_set_lamp_value( 2, (state->m_leds_mux_data >> 0) & 1); /* Number 2 LED */ - output_set_lamp_value(21, (state->m_leds_mux_data >> 1) & 1); /* Number 21 LED */ - output_set_lamp_value( 4, (state->m_leds_mux_data >> 2) & 1); /* Number 4 LED */ - output_set_lamp_value(19, (state->m_leds_mux_data >> 3) & 1); /* Number 19 LED */ - output_set_lamp_value(15, (state->m_leds_mux_data >> 4) & 1); /* Number 15 LED */ - output_set_lamp_value(32, (state->m_leds_mux_data >> 5) & 1); /* Number 32 LED */ - output_set_lamp_value( 0, (state->m_leds_mux_data >> 6) & 1); /* Number 0 LED */ - output_set_lamp_value(26, (state->m_leds_mux_data >> 7) & 1); /* Number 26 LED */ + output_set_lamp_value( 2, (m_leds_mux_data >> 0) & 1); /* Number 2 LED */ + output_set_lamp_value(21, (m_leds_mux_data >> 1) & 1); /* Number 21 LED */ + output_set_lamp_value( 4, (m_leds_mux_data >> 2) & 1); /* Number 4 LED */ + output_set_lamp_value(19, (m_leds_mux_data >> 3) & 1); /* Number 19 LED */ + output_set_lamp_value(15, (m_leds_mux_data >> 4) & 1); /* Number 15 LED */ + output_set_lamp_value(32, (m_leds_mux_data >> 5) & 1); /* Number 32 LED */ + output_set_lamp_value( 0, (m_leds_mux_data >> 6) & 1); /* Number 0 LED */ + output_set_lamp_value(26, (m_leds_mux_data >> 7) & 1); /* Number 26 LED */ break; } case 0x04: { - output_set_lamp_value( 3, (state->m_leds_mux_data >> 0) & 1); /* Number 3 LED */ - output_set_lamp_value(35, (state->m_leds_mux_data >> 1) & 1); /* Number 35 LED */ - output_set_lamp_value(12, (state->m_leds_mux_data >> 2) & 1); /* Number 12 LED */ - output_set_lamp_value(28, (state->m_leds_mux_data >> 3) & 1); /* Number 28 LED */ - output_set_lamp_value( 7, (state->m_leds_mux_data >> 4) & 1); /* Number 7 LED */ - output_set_lamp_value(29, (state->m_leds_mux_data >> 5) & 1); /* Number 29 LED */ - output_set_lamp_value(18, (state->m_leds_mux_data >> 6) & 1); /* Number 18 LED */ + output_set_lamp_value( 3, (m_leds_mux_data >> 0) & 1); /* Number 3 LED */ + output_set_lamp_value(35, (m_leds_mux_data >> 1) & 1); /* Number 35 LED */ + output_set_lamp_value(12, (m_leds_mux_data >> 2) & 1); /* Number 12 LED */ + output_set_lamp_value(28, (m_leds_mux_data >> 3) & 1); /* Number 28 LED */ + output_set_lamp_value( 7, (m_leds_mux_data >> 4) & 1); /* Number 7 LED */ + output_set_lamp_value(29, (m_leds_mux_data >> 5) & 1); /* Number 29 LED */ + output_set_lamp_value(18, (m_leds_mux_data >> 6) & 1); /* Number 18 LED */ break; } case 0x08: { - output_set_lamp_value(22, (state->m_leds_mux_data >> 0) & 1); /* Number 22 LED */ - output_set_lamp_value( 9, (state->m_leds_mux_data >> 1) & 1); /* Number 9 LED */ - output_set_lamp_value(31, (state->m_leds_mux_data >> 2) & 1); /* Number 31 LED */ - output_set_lamp_value(14, (state->m_leds_mux_data >> 3) & 1); /* Number 14 LED */ - output_set_lamp_value(20, (state->m_leds_mux_data >> 4) & 1); /* Number 20 LED */ - output_set_lamp_value( 1, (state->m_leds_mux_data >> 5) & 1); /* Number 1 LED */ - output_set_lamp_value(33, (state->m_leds_mux_data >> 6) & 1); /* Number 33 LED */ + output_set_lamp_value(22, (m_leds_mux_data >> 0) & 1); /* Number 22 LED */ + output_set_lamp_value( 9, (m_leds_mux_data >> 1) & 1); /* Number 9 LED */ + output_set_lamp_value(31, (m_leds_mux_data >> 2) & 1); /* Number 31 LED */ + output_set_lamp_value(14, (m_leds_mux_data >> 3) & 1); /* Number 14 LED */ + output_set_lamp_value(20, (m_leds_mux_data >> 4) & 1); /* Number 20 LED */ + output_set_lamp_value( 1, (m_leds_mux_data >> 5) & 1); /* Number 1 LED */ + output_set_lamp_value(33, (m_leds_mux_data >> 6) & 1); /* Number 33 LED */ break; } case 0x10: { - output_set_lamp_value(16, (state->m_leds_mux_data >> 0) & 1); /* Number 16 LED */ - output_set_lamp_value(24, (state->m_leds_mux_data >> 1) & 1); /* Number 24 LED */ - output_set_lamp_value( 5, (state->m_leds_mux_data >> 2) & 1); /* Number 5 LED */ - output_set_lamp_value(10, (state->m_leds_mux_data >> 3) & 1); /* Number 10 LED */ - output_set_lamp_value(23, (state->m_leds_mux_data >> 4) & 1); /* Number 23 LED */ - output_set_lamp_value( 8, (state->m_leds_mux_data >> 5) & 1); /* Number 8 LED */ - output_set_lamp_value(30, (state->m_leds_mux_data >> 6) & 1); /* Number 30 LED */ + output_set_lamp_value(16, (m_leds_mux_data >> 0) & 1); /* Number 16 LED */ + output_set_lamp_value(24, (m_leds_mux_data >> 1) & 1); /* Number 24 LED */ + output_set_lamp_value( 5, (m_leds_mux_data >> 2) & 1); /* Number 5 LED */ + output_set_lamp_value(10, (m_leds_mux_data >> 3) & 1); /* Number 10 LED */ + output_set_lamp_value(23, (m_leds_mux_data >> 4) & 1); /* Number 23 LED */ + output_set_lamp_value( 8, (m_leds_mux_data >> 5) & 1); /* Number 8 LED */ + output_set_lamp_value(30, (m_leds_mux_data >> 6) & 1); /* Number 30 LED */ break; } @@ -517,12 +522,12 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( kas89_io, AS_IO, 8, kas89_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("v9938", v9938_device, read, write) - AM_RANGE(0x80, 0x80) AM_WRITE_LEGACY(mux_w) - AM_RANGE(0x81, 0x81) AM_READ_LEGACY(mux_r) - AM_RANGE(0x82, 0x82) AM_WRITE_LEGACY(control_w) /* Bit6 trigger the 138Hz osc. tied to main Z80's NMI.*/ - AM_RANGE(0x83, 0x83) AM_WRITE_LEGACY(led_mux_data_w) - AM_RANGE(0x84, 0x84) AM_WRITE_LEGACY(led_mux_select_w) - AM_RANGE(0x85, 0x85) AM_WRITE_LEGACY(sound_comm_w) + AM_RANGE(0x80, 0x80) AM_WRITE(mux_w) + AM_RANGE(0x81, 0x81) AM_READ(mux_r) + AM_RANGE(0x82, 0x82) AM_WRITE(control_w) /* Bit6 trigger the 138Hz osc. tied to main Z80's NMI.*/ + AM_RANGE(0x83, 0x83) AM_WRITE(led_mux_data_w) + AM_RANGE(0x84, 0x84) AM_WRITE(led_mux_select_w) + AM_RANGE(0x85, 0x85) AM_WRITE(sound_comm_w) ADDRESS_MAP_END /* @@ -570,7 +575,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( audio_io, AS_IO, 8, kas89_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE_LEGACY(int_ack_w) // comm out (1st Z80). seems to write here the value previously read through soundlatch (port 0x02). + AM_RANGE(0x00, 0x00) AM_WRITE(int_ack_w) // comm out (1st Z80). seems to write here the value previously read through soundlatch (port 0x02). AM_RANGE(0x02, 0x02) AM_READ_LEGACY(soundlatch_r) AM_RANGE(0x04, 0x04) AM_DEVREAD_LEGACY("aysnd", ay8910_r) AM_RANGE(0x04, 0x05) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_address_w) diff --git a/src/mame/drivers/kingdrby.c b/src/mame/drivers/kingdrby.c index 1f5c4afa20c..936e2adb2e3 100644 --- a/src/mame/drivers/kingdrby.c +++ b/src/mame/drivers/kingdrby.c @@ -90,6 +90,10 @@ public: UINT8 m_p2_hopper; UINT8 m_mux_data; UINT8 *m_spriteram; + DECLARE_WRITE8_MEMBER(sc0_vram_w); + DECLARE_WRITE8_MEMBER(sc0_attr_w); + DECLARE_WRITE8_MEMBER(led_array_w); + DECLARE_WRITE8_MEMBER(kingdrbb_lamps_w); }; @@ -233,22 +237,20 @@ static SCREEN_UPDATE_IND16(kingdrby) return 0; } -static WRITE8_HANDLER( sc0_vram_w ) +WRITE8_MEMBER(kingdrby_state::sc0_vram_w) { - kingdrby_state *state = space->machine().driver_data<kingdrby_state>(); - state->m_vram[offset] = data; - state->m_sc0_tilemap->mark_tile_dirty(offset); - state->m_sc0w_tilemap->mark_tile_dirty(offset); - state->m_sc1_tilemap->mark_tile_dirty(offset); + m_vram[offset] = data; + m_sc0_tilemap->mark_tile_dirty(offset); + m_sc0w_tilemap->mark_tile_dirty(offset); + m_sc1_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( sc0_attr_w ) +WRITE8_MEMBER(kingdrby_state::sc0_attr_w) { - kingdrby_state *state = space->machine().driver_data<kingdrby_state>(); - state->m_attr[offset] = data; - state->m_sc0_tilemap->mark_tile_dirty(offset); - state->m_sc0w_tilemap->mark_tile_dirty(offset); - state->m_sc1_tilemap->mark_tile_dirty(offset); + m_attr[offset] = data; + m_sc0_tilemap->mark_tile_dirty(offset); + m_sc0w_tilemap->mark_tile_dirty(offset); + m_sc1_tilemap->mark_tile_dirty(offset); } /************************************* @@ -361,7 +363,7 @@ static READ8_DEVICE_HANDLER( sound_cmd_r ) static const UINT8 led_map[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x67,0x77,0x7c,0x39,0x5e,0x79,0x00 }; -static WRITE8_HANDLER( led_array_w ) +WRITE8_MEMBER(kingdrby_state::led_array_w) { /* offset = directly tied with the button (i.e. offset 1 = 1-2, offset 2 = 1-3 etc.) @@ -384,8 +386,8 @@ static WRITE8_HANDLER( led_array_w ) static ADDRESS_MAP_START( master_map, AS_PROGRAM, 8, kingdrby_state ) AM_RANGE(0x0000, 0x2fff) AM_ROM AM_RANGE(0x3000, 0x33ff) AM_RAM AM_MIRROR(0xc00) AM_SHARE("share1") - AM_RANGE(0x4000, 0x43ff) AM_RAM_WRITE_LEGACY(sc0_vram_w) AM_BASE(m_vram) - AM_RANGE(0x5000, 0x53ff) AM_RAM_WRITE_LEGACY(sc0_attr_w) AM_BASE(m_attr) + AM_RANGE(0x4000, 0x43ff) AM_RAM_WRITE(sc0_vram_w) AM_BASE(m_vram) + AM_RANGE(0x5000, 0x53ff) AM_RAM_WRITE(sc0_attr_w) AM_BASE(m_attr) ADDRESS_MAP_END static ADDRESS_MAP_START( master_io_map, AS_IO, 8, kingdrby_state ) @@ -403,12 +405,12 @@ static ADDRESS_MAP_START( slave_map, AS_PROGRAM, 8, kingdrby_state ) AM_RANGE(0x7400, 0x74ff) AM_RAM AM_BASE(m_spriteram) AM_RANGE(0x7600, 0x7600) AM_DEVWRITE("crtc", mc6845_device, address_w) AM_RANGE(0x7601, 0x7601) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x7801, 0x780f) AM_WRITE_LEGACY(led_array_w) + AM_RANGE(0x7801, 0x780f) AM_WRITE(led_array_w) AM_RANGE(0x7a00, 0x7a00) AM_RAM //buffer for the key matrix AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("DSW") ADDRESS_MAP_END -static WRITE8_HANDLER( kingdrbb_lamps_w ) +WRITE8_MEMBER(kingdrby_state::kingdrbb_lamps_w) { // (same as the inputs but active high) } @@ -427,7 +429,7 @@ static ADDRESS_MAP_START( slave_1986_map, AS_PROGRAM, 8, kingdrby_state ) AM_RANGE(0x7801, 0x7801) AM_READ_PORT("KEY1") AM_RANGE(0x7802, 0x7802) AM_READ_PORT("KEY2") AM_RANGE(0x7803, 0x7803) AM_READ_PORT("KEY3") - AM_RANGE(0x7800, 0x7803) AM_WRITE_LEGACY(kingdrbb_lamps_w) + AM_RANGE(0x7800, 0x7803) AM_WRITE(kingdrbb_lamps_w) AM_RANGE(0x7a00, 0x7a00) AM_READ_PORT("SYSTEM") AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("DSW") ADDRESS_MAP_END diff --git a/src/mame/drivers/kingpin.c b/src/mame/drivers/kingpin.c index 5ced2c6d91e..210188748b4 100644 --- a/src/mame/drivers/kingpin.c +++ b/src/mame/drivers/kingpin.c @@ -33,10 +33,11 @@ public: : driver_device(mconfig, type, tag) { } UINT8 *m_code_base; + DECLARE_READ8_MEMBER(io_read_missing_dips); }; -static READ8_HANDLER( io_read_missing_dips ) +READ8_MEMBER(kingpin_state::io_read_missing_dips) { return 0x00; } @@ -106,9 +107,9 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( kingpin_io_map, AS_IO, 8, kingpin_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_LEGACY(io_read_missing_dips) + AM_RANGE(0x00, 0x00) AM_READ(io_read_missing_dips) AM_RANGE(0x01, 0x01) AM_READ_PORT("DSW") -/* AM_RANGE(0x02, 0x02) AM_READ_LEGACY(io_read_missing_dips) */ +/* AM_RANGE(0x02, 0x02) AM_READ(io_read_missing_dips) */ /* AM_RANGE(0x02, 0x02) AM_WRITE_LEGACY(NO IDEA) */ AM_RANGE(0x10, 0x10) AM_READ_PORT("IN0") AM_RANGE(0x11, 0x11) AM_READ_PORT("IN1") diff --git a/src/mame/drivers/kinst.c b/src/mame/drivers/kinst.c index 8757126d47e..99fb470bbfe 100644 --- a/src/mame/drivers/kinst.c +++ b/src/mame/drivers/kinst.c @@ -148,6 +148,8 @@ public: UINT32 *m_video_base; UINT32 *m_control; const UINT8 *m_control_map; + DECLARE_READ32_MEMBER(kinst_control_r); + DECLARE_WRITE32_MEMBER(kinst_control_w); }; @@ -320,35 +322,34 @@ static WRITE32_DEVICE_HANDLER( kinst_ide_extra_w ) * *************************************/ -static READ32_HANDLER( kinst_control_r ) +READ32_MEMBER(kinst_state::kinst_control_r) { - kinst_state *state = space->machine().driver_data<kinst_state>(); UINT32 result; static const char *const portnames[] = { "P1", "P2", "VOLUME", "UNUSED", "DSW" }; /* apply shuffling */ - offset = state->m_control_map[offset / 2]; - result = state->m_control[offset]; + offset = m_control_map[offset / 2]; + result = m_control[offset]; switch (offset) { case 2: /* $90 -- sound return */ - result = input_port_read(space->machine(), portnames[offset]); + result = input_port_read(machine(), portnames[offset]); result &= ~0x0002; - if (dcs_control_r(space->machine()) & 0x800) + if (dcs_control_r(machine()) & 0x800) result |= 0x0002; break; case 0: /* $80 */ case 1: /* $88 */ case 3: /* $98 */ - result = input_port_read(space->machine(), portnames[offset]); + result = input_port_read(machine(), portnames[offset]); break; case 4: /* $a0 */ - result = input_port_read(space->machine(), portnames[offset]); - if (cpu_get_pc(&space->device()) == 0x802d428) - device_spin_until_interrupt(&space->device()); + result = input_port_read(machine(), portnames[offset]); + if (cpu_get_pc(&space.device()) == 0x802d428) + device_spin_until_interrupt(&space.device()); break; } @@ -356,32 +357,31 @@ static READ32_HANDLER( kinst_control_r ) } -static WRITE32_HANDLER( kinst_control_w ) +WRITE32_MEMBER(kinst_state::kinst_control_w) { - kinst_state *state = space->machine().driver_data<kinst_state>(); UINT32 olddata; /* apply shuffling */ - offset = state->m_control_map[offset / 2]; - olddata = state->m_control[offset]; - COMBINE_DATA(&state->m_control[offset]); + offset = m_control_map[offset / 2]; + olddata = m_control[offset]; + COMBINE_DATA(&m_control[offset]); switch (offset) { case 0: /* $80 - VRAM buffer control */ if (data & 4) - state->m_video_base = &state->m_rambase[0x58000/4]; + m_video_base = &m_rambase[0x58000/4]; else - state->m_video_base = &state->m_rambase[0x30000/4]; + m_video_base = &m_rambase[0x30000/4]; break; case 1: /* $88 - sound reset */ - dcs_reset_w(space->machine(), ~data & 0x01); + dcs_reset_w(machine(), ~data & 0x01); break; case 2: /* $90 - sound control */ - if (!(olddata & 0x02) && (state->m_control[offset] & 0x02)) - dcs_data_w(space->machine(), state->m_control[3]); + if (!(olddata & 0x02) && (m_control[offset] & 0x02)) + dcs_data_w(machine(), m_control[3]); break; case 3: /* $98 - sound data */ @@ -401,7 +401,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 32, kinst_state ) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x00000000, 0x0007ffff) AM_RAM AM_BASE(m_rambase) AM_RANGE(0x08000000, 0x087fffff) AM_RAM AM_BASE(m_rambase2) - AM_RANGE(0x10000080, 0x100000ff) AM_READWRITE_LEGACY(kinst_control_r, kinst_control_w) AM_BASE(m_control) + AM_RANGE(0x10000080, 0x100000ff) AM_READWRITE(kinst_control_r, kinst_control_w) AM_BASE(m_control) AM_RANGE(0x10000100, 0x1000013f) AM_DEVREADWRITE_LEGACY("ide", kinst_ide_r, kinst_ide_w) AM_RANGE(0x10000170, 0x10000173) AM_DEVREADWRITE_LEGACY("ide", kinst_ide_extra_r, kinst_ide_extra_w) AM_RANGE(0x1fc00000, 0x1fc7ffff) AM_ROM AM_REGION("user1", 0) AM_BASE(m_rombase) diff --git a/src/mame/drivers/koftball.c b/src/mame/drivers/koftball.c index 5c624556306..2256a449be8 100644 --- a/src/mame/drivers/koftball.c +++ b/src/mame/drivers/koftball.c @@ -51,6 +51,14 @@ public: UINT16 m_prot_data; required_device<cpu_device> m_maincpu; + DECLARE_WRITE16_MEMBER(bmc_RAMDAC_offset_w); + DECLARE_WRITE16_MEMBER(bmc_RAMDAC_color_w); + DECLARE_READ16_MEMBER(bmc_RAMDAC_color_r); + DECLARE_READ16_MEMBER(random_number_r); + DECLARE_READ16_MEMBER(prot_r); + DECLARE_WRITE16_MEMBER(prot_w); + DECLARE_WRITE16_MEMBER(bmc_1_videoram_w); + DECLARE_WRITE16_MEMBER(bmc_2_videoram_w); }; @@ -93,36 +101,32 @@ static SCREEN_UPDATE_IND16( koftball ) return 0; } -static WRITE16_HANDLER( bmc_RAMDAC_offset_w ) +WRITE16_MEMBER(koftball_state::bmc_RAMDAC_offset_w) { - koftball_state *state = space->machine().driver_data<koftball_state>(); - state->m_clr_offset=data*3; + m_clr_offset=data*3; } -static WRITE16_HANDLER( bmc_RAMDAC_color_w ) +WRITE16_MEMBER(koftball_state::bmc_RAMDAC_color_w) { - koftball_state *state = space->machine().driver_data<koftball_state>(); - state->m_bmc_colorram[state->m_clr_offset]=data; - palette_set_color_rgb(space->machine(),state->m_clr_offset/3,pal6bit(state->m_bmc_colorram[(state->m_clr_offset/3)*3]),pal6bit(state->m_bmc_colorram[(state->m_clr_offset/3)*3+1]),pal6bit(state->m_bmc_colorram[(state->m_clr_offset/3)*3+2])); - state->m_clr_offset=(state->m_clr_offset+1)%768; + m_bmc_colorram[m_clr_offset]=data; + palette_set_color_rgb(machine(),m_clr_offset/3,pal6bit(m_bmc_colorram[(m_clr_offset/3)*3]),pal6bit(m_bmc_colorram[(m_clr_offset/3)*3+1]),pal6bit(m_bmc_colorram[(m_clr_offset/3)*3+2])); + m_clr_offset=(m_clr_offset+1)%768; } -static READ16_HANDLER( bmc_RAMDAC_color_r ) +READ16_MEMBER(koftball_state::bmc_RAMDAC_color_r) { - koftball_state *state = space->machine().driver_data<koftball_state>(); - return state->m_bmc_colorram[state->m_clr_offset]; + return m_bmc_colorram[m_clr_offset]; } -static READ16_HANDLER(random_number_r) +READ16_MEMBER(koftball_state::random_number_r) { - return space->machine().rand(); + return machine().rand(); } -static READ16_HANDLER(prot_r) +READ16_MEMBER(koftball_state::prot_r) { - koftball_state *state = space->machine().driver_data<koftball_state>(); - switch(state->m_prot_data) + switch(m_prot_data) { case 0x0000: return 0x0d00; case 0xff00: return 0x8d00; @@ -130,56 +134,53 @@ static READ16_HANDLER(prot_r) case 0x8000: return 0x0f0f; } - logerror("unk prot r %x %x\n",state->m_prot_data, cpu_get_previouspc(&space->device())); - return space->machine().rand(); + logerror("unk prot r %x %x\n",m_prot_data, cpu_get_previouspc(&space.device())); + return machine().rand(); } -static WRITE16_HANDLER(prot_w) +WRITE16_MEMBER(koftball_state::prot_w) { - koftball_state *state = space->machine().driver_data<koftball_state>(); - COMBINE_DATA(&state->m_prot_data); + COMBINE_DATA(&m_prot_data); } -static WRITE16_HANDLER(bmc_1_videoram_w) +WRITE16_MEMBER(koftball_state::bmc_1_videoram_w) { - koftball_state *state = space->machine().driver_data<koftball_state>(); - COMBINE_DATA(&state->m_bmc_1_videoram[offset]); - state->m_tilemap_1->mark_tile_dirty(offset); + COMBINE_DATA(&m_bmc_1_videoram[offset]); + m_tilemap_1->mark_tile_dirty(offset); } -static WRITE16_HANDLER(bmc_2_videoram_w) +WRITE16_MEMBER(koftball_state::bmc_2_videoram_w) { - koftball_state *state = space->machine().driver_data<koftball_state>(); - COMBINE_DATA(&state->m_bmc_2_videoram[offset]); - state->m_tilemap_2->mark_tile_dirty(offset); + COMBINE_DATA(&m_bmc_2_videoram[offset]); + m_tilemap_2->mark_tile_dirty(offset); } static ADDRESS_MAP_START( koftball_mem, AS_PROGRAM, 16, koftball_state ) AM_RANGE(0x000000, 0x01ffff) AM_ROM AM_RANGE(0x220000, 0x22ffff) AM_RAM AM_BASE(m_main_ram) - AM_RANGE(0x260000, 0x260fff) AM_WRITE_LEGACY(bmc_1_videoram_w) AM_BASE(m_bmc_1_videoram) - AM_RANGE(0x261000, 0x261fff) AM_WRITE_LEGACY(bmc_2_videoram_w) AM_BASE(m_bmc_2_videoram) + AM_RANGE(0x260000, 0x260fff) AM_WRITE(bmc_1_videoram_w) AM_BASE(m_bmc_1_videoram) + AM_RANGE(0x261000, 0x261fff) AM_WRITE(bmc_2_videoram_w) AM_BASE(m_bmc_2_videoram) AM_RANGE(0x262000, 0x26ffff) AM_RAM AM_RANGE(0x280000, 0x28ffff) AM_RAM /* unused ? */ AM_RANGE(0x2a0000, 0x2a001f) AM_WRITENOP - AM_RANGE(0x2a0000, 0x2a001f) AM_READ_LEGACY(random_number_r) - AM_RANGE(0x2b0000, 0x2b0003) AM_READ_LEGACY(random_number_r) - AM_RANGE(0x2d8000, 0x2d8001) AM_READ_LEGACY(random_number_r) + AM_RANGE(0x2a0000, 0x2a001f) AM_READ(random_number_r) + AM_RANGE(0x2b0000, 0x2b0003) AM_READ(random_number_r) + AM_RANGE(0x2d8000, 0x2d8001) AM_READ(random_number_r) /*sound chip or mcu comm ? maybe just i/o (offset 0xe=lamps?)*/ AM_RANGE(0x2da000, 0x2da001) AM_WRITENOP /* offset ? */ AM_RANGE(0x2da002, 0x2da003) AM_WRITENOP /* data ? */ - AM_RANGE(0x2db000, 0x2db001) AM_WRITE_LEGACY(bmc_RAMDAC_offset_w) - AM_RANGE(0x2db002, 0x2db003) AM_READWRITE_LEGACY(bmc_RAMDAC_color_r, bmc_RAMDAC_color_w) + AM_RANGE(0x2db000, 0x2db001) AM_WRITE(bmc_RAMDAC_offset_w) + AM_RANGE(0x2db002, 0x2db003) AM_READWRITE(bmc_RAMDAC_color_r, bmc_RAMDAC_color_w) AM_RANGE(0x2db004, 0x2db005) AM_WRITENOP AM_RANGE(0x2dc000, 0x2dc001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0xff00) AM_RANGE(0x2f0000, 0x2f0003) AM_READ_PORT("INPUTS") AM_RANGE(0x300000, 0x300001) AM_WRITENOP AM_RANGE(0x320000, 0x320001) AM_WRITENOP - AM_RANGE(0x340000, 0x340001) AM_READ_LEGACY(prot_r) - AM_RANGE(0x360000, 0x360001) AM_WRITE_LEGACY(prot_w) + AM_RANGE(0x340000, 0x340001) AM_READ(prot_r) + AM_RANGE(0x360000, 0x360001) AM_WRITE(prot_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/koikoi.c b/src/mame/drivers/koikoi.c index 66f219c545a..0d384b2331a 100644 --- a/src/mame/drivers/koikoi.c +++ b/src/mame/drivers/koikoi.c @@ -62,6 +62,9 @@ public: int m_inputval; int m_inputlen; int m_ioram[8]; + DECLARE_WRITE8_MEMBER(vram_w); + DECLARE_READ8_MEMBER(io_r); + DECLARE_WRITE8_MEMBER(io_w); }; @@ -145,11 +148,10 @@ static SCREEN_UPDATE_IND16(koikoi) * *************************************/ -static WRITE8_HANDLER( vram_w ) +WRITE8_MEMBER(koikoi_state::vram_w) { - koikoi_state *state = space->machine().driver_data<koikoi_state>(); - state->m_videoram[offset] = data; - state->m_tmap->mark_tile_dirty(offset & 0x3ff); + m_videoram[offset] = data; + m_tmap->mark_tile_dirty(offset & 0x3ff); } static READ8_DEVICE_HANDLER( input_r ) @@ -195,22 +197,20 @@ static WRITE8_DEVICE_HANDLER( unknown_w ) //xor'ed mux select, player 1 = 1,2,4,8, player 2 = 0x10, 0x20, 0x40, 0x80 } -static READ8_HANDLER( io_r ) +READ8_MEMBER(koikoi_state::io_r) { - koikoi_state *state = space->machine().driver_data<koikoi_state>(); if (!offset) - return input_port_read(space->machine(), "IN0") ^ state->m_ioram[4]; //coin + return input_port_read(machine(), "IN0") ^ m_ioram[4]; //coin return 0; } -static WRITE8_HANDLER( io_w ) +WRITE8_MEMBER(koikoi_state::io_w) { - koikoi_state *state = space->machine().driver_data<koikoi_state>(); if (offset == 7 && data == 0) - state->m_inputcnt = 0; //reset read cycle counter + m_inputcnt = 0; //reset read cycle counter - state->m_ioram[offset] = data; + m_ioram[offset] = data; } /************************************* @@ -222,9 +222,9 @@ static WRITE8_HANDLER( io_w ) static ADDRESS_MAP_START( koikoi_map, AS_PROGRAM, 8, koikoi_state ) AM_RANGE(0x0000, 0x2fff) AM_ROM AM_RANGE(0x6000, 0x67ff) AM_RAM - AM_RANGE(0x7000, 0x77ff) AM_RAM_WRITE_LEGACY(vram_w) AM_BASE(m_videoram) + AM_RANGE(0x7000, 0x77ff) AM_RAM_WRITE(vram_w) AM_BASE(m_videoram) AM_RANGE(0x8000, 0x8000) AM_READ_PORT("DSW") - AM_RANGE(0x9000, 0x9007) AM_READWRITE_LEGACY(io_r, io_w) + AM_RANGE(0x9000, 0x9007) AM_READWRITE(io_r, io_w) ADDRESS_MAP_END static ADDRESS_MAP_START( koikoi_io_map, AS_IO, 8, koikoi_state ) diff --git a/src/mame/drivers/konamim2.c b/src/mame/drivers/konamim2.c index 2dcbd5be8f2..08b301728d5 100644 --- a/src/mame/drivers/konamim2.c +++ b/src/mame/drivers/konamim2.c @@ -226,6 +226,26 @@ public: int m_cde_qchannel_offset; cdrom_toc m_cde_toc; CDE_DMA m_cde_dma[2]; + DECLARE_READ64_MEMBER(irq_enable_r); + DECLARE_WRITE64_MEMBER(irq_enable_w); + DECLARE_READ64_MEMBER(irq_active_r); + DECLARE_READ64_MEMBER(unk1_r); + DECLARE_READ64_MEMBER(unk2_r); + DECLARE_READ64_MEMBER(unk3_r); + DECLARE_READ64_MEMBER(unk4_r); + DECLARE_WRITE64_MEMBER(unk4_w); + DECLARE_READ64_MEMBER(unk30000_r); + DECLARE_READ64_MEMBER(unk30030_r); + DECLARE_WRITE64_MEMBER(video_w); + DECLARE_WRITE64_MEMBER(video_irq_ack_w); + DECLARE_READ64_MEMBER(unk4000280_r); + DECLARE_WRITE64_MEMBER(unk4000010_w); + DECLARE_WRITE64_MEMBER(unk4000418_w); + DECLARE_WRITE64_MEMBER(reset_w); + DECLARE_READ64_MEMBER(cde_r); + DECLARE_WRITE64_MEMBER(cde_w); + DECLARE_READ64_MEMBER(device2_r); + DECLARE_READ64_MEMBER(cpu_r); }; @@ -264,36 +284,33 @@ static SCREEN_UPDATE_IND16( m2 ) return 0; } -static READ64_HANDLER(irq_enable_r) +READ64_MEMBER(konamim2_state::irq_enable_r) { - konamim2_state *state = space->machine().driver_data<konamim2_state>(); UINT64 r = 0; if (ACCESSING_BITS_32_63) { - r |= (UINT64)(state->m_irq_enable) << 32; + r |= (UINT64)(m_irq_enable) << 32; } return r; } -static WRITE64_HANDLER(irq_enable_w) +WRITE64_MEMBER(konamim2_state::irq_enable_w) { - konamim2_state *state = space->machine().driver_data<konamim2_state>(); if (ACCESSING_BITS_32_63) { - state->m_irq_enable |= (UINT32)(data >> 32); + m_irq_enable |= (UINT32)(data >> 32); } } -static READ64_HANDLER(irq_active_r) +READ64_MEMBER(konamim2_state::irq_active_r) { - konamim2_state *state = space->machine().driver_data<konamim2_state>(); UINT64 r = 0; if (ACCESSING_BITS_32_63) { - r |= (UINT64)(state->m_irq_active) << 32; + r |= (UINT64)(m_irq_active) << 32; } return r; @@ -301,14 +318,14 @@ static READ64_HANDLER(irq_active_r) -static READ64_HANDLER(unk1_r) +READ64_MEMBER(konamim2_state::unk1_r) { return U64(0xffffffffffffffff); //return 0; } #ifdef UNUSED_FUNCTION -static READ64_HANDLER(unk2_r) +READ64_MEMBER(konamim2_state::unk2_r) { if (ACCESSING_BITS_32_63) { @@ -318,18 +335,16 @@ static READ64_HANDLER(unk2_r) } #endif -static READ64_HANDLER(unk3_r) +READ64_MEMBER(konamim2_state::unk3_r) { - konamim2_state *state = space->machine().driver_data<konamim2_state>(); //return U64(0xffffffffffffffff); - return state->m_unk3; + return m_unk3; } -static READ64_HANDLER(unk4_r) +READ64_MEMBER(konamim2_state::unk4_r) { - konamim2_state *state = space->machine().driver_data<konamim2_state>(); UINT64 r = 0; -// logerror("unk4_r: %08X, %08X%08X at %08X\n", offset, (UINT32)(mem_mask>>32), (UINT32)(mem_mask), cpu_get_pc(&space->device())); +// logerror("unk4_r: %08X, %08X%08X at %08X\n", offset, (UINT32)(mem_mask>>32), (UINT32)(mem_mask), cpu_get_pc(&space.device())); if (ACCESSING_BITS_32_63) { @@ -338,38 +353,36 @@ static READ64_HANDLER(unk4_r) } if (ACCESSING_BITS_0_31) { - r |= state->m_unk20004 & ~0x800000; + r |= m_unk20004 & ~0x800000; } return r; } -static WRITE64_HANDLER(unk4_w) +WRITE64_MEMBER(konamim2_state::unk4_w) { - konamim2_state *state = space->machine().driver_data<konamim2_state>(); // logerror("unk4_w: %08X%08X, %08X, %08X%08X at %08X\n", (UINT32)(data >> 32), (UINT32)(data), -// offset, (UINT32)(mem_mask>>32), (UINT32)(mem_mask), cpu_get_pc(&space->device())); +// offset, (UINT32)(mem_mask>>32), (UINT32)(mem_mask), cpu_get_pc(&space.device())); if (ACCESSING_BITS_0_31) { if (data & 0x800000) { -// mame_printf_debug("CPU '%s': CPU1 IRQ at %08X\n", space->device().tag(), cpu_get_pc(&space->device())); - cputag_set_input_line(space->machine(), "sub", INPUT_LINE_IRQ0, ASSERT_LINE); +// mame_printf_debug("CPU '%s': CPU1 IRQ at %08X\n", device().tag(), cpu_get_pc(&space.device())); + cputag_set_input_line(machine(), "sub", INPUT_LINE_IRQ0, ASSERT_LINE); } - state->m_unk20004 = (UINT32)(data); + m_unk20004 = (UINT32)(data); return; } } -static READ64_HANDLER(unk30000_r) +READ64_MEMBER(konamim2_state::unk30000_r) { - konamim2_state *state = space->machine().driver_data<konamim2_state>(); - state->m_counter1++; - return (UINT64)(state->m_counter1 & 0x7f) << 32; + m_counter1++; + return (UINT64)(m_counter1 & 0x7f) << 32; } -static READ64_HANDLER(unk30030_r) +READ64_MEMBER(konamim2_state::unk30030_r) { if (ACCESSING_BITS_0_31) { @@ -378,34 +391,32 @@ static READ64_HANDLER(unk30030_r) return 0; } -static WRITE64_HANDLER(video_w) +WRITE64_MEMBER(konamim2_state::video_w) { - konamim2_state *state = space->machine().driver_data<konamim2_state>(); if (ACCESSING_BITS_32_63) { - state->m_vdl0_address = (UINT32)(data >> 32); + m_vdl0_address = (UINT32)(data >> 32); } if (ACCESSING_BITS_0_31) { - state->m_vdl1_address = (UINT32)(data); + m_vdl1_address = (UINT32)(data); } } -static WRITE64_HANDLER(video_irq_ack_w) +WRITE64_MEMBER(konamim2_state::video_irq_ack_w) { - konamim2_state *state = space->machine().driver_data<konamim2_state>(); if (ACCESSING_BITS_32_63) { if ((data >> 32) & 0x8000) { - state->m_irq_active &= ~0x800000; + m_irq_active &= ~0x800000; } } } -static READ64_HANDLER(unk4000280_r) +READ64_MEMBER(konamim2_state::unk4000280_r) { // SysCfg @@ -429,7 +440,7 @@ static READ64_HANDLER(unk4000280_r) } -static WRITE64_HANDLER(unk4000010_w) +WRITE64_MEMBER(konamim2_state::unk4000010_w) { if ((data & 0xff) == 0xd) { @@ -441,19 +452,18 @@ static WRITE64_HANDLER(unk4000010_w) } } -static WRITE64_HANDLER(unk4000418_w) +WRITE64_MEMBER(konamim2_state::unk4000418_w) { } -static WRITE64_HANDLER(reset_w) +WRITE64_MEMBER(konamim2_state::reset_w) { - konamim2_state *state = space->machine().driver_data<konamim2_state>(); if (ACCESSING_BITS_32_63) { if (data & U64(0x100000000)) { - cputag_set_input_line(space->machine(), "maincpu", INPUT_LINE_RESET, PULSE_LINE); - state->m_unk3 = 0; + cputag_set_input_line(machine(), "maincpu", INPUT_LINE_RESET, PULSE_LINE); + m_unk3 = 0; } } } @@ -832,9 +842,8 @@ static void cde_dma_transfer(address_space *space, int channel, int next) } } -static READ64_HANDLER(cde_r) +READ64_MEMBER(konamim2_state::cde_r) { - konamim2_state *state = space->machine().driver_data<konamim2_state>(); UINT32 r = 0; int reg = offset * 2; @@ -852,36 +861,36 @@ static READ64_HANDLER(cde_r) { r = 0x100038; - r |= state->m_cde_dma[0].dma_done ? 0x400 : 0; - r |= state->m_cde_dma[1].dma_done ? 0x800 : 0; + r |= m_cde_dma[0].dma_done ? 0x400 : 0; + r |= m_cde_dma[1].dma_done ? 0x800 : 0; break; } case 0x02c/4: { - r = state->m_cde_status_bytes[state->m_cde_status_byte_ptr++]; + r = m_cde_status_bytes[m_cde_status_byte_ptr++]; - if (state->m_cde_status_byte_ptr <= state->m_cde_num_status_bytes) + if (m_cde_status_byte_ptr <= m_cde_num_status_bytes) { r |= 0x100; } else { //if (cde_enable_reports && - // !state->m_cde_response && - // state->m_cde_command_bytes[0] != ((cde_report_type >> 8) & 0xff)) + // !m_cde_response && + // m_cde_command_bytes[0] != ((cde_report_type >> 8) & 0xff)) - if (!state->m_cde_response) + if (!m_cde_response) { - cde_handle_reports(space->machine()); + cde_handle_reports(machine()); - // state->m_cde_command_byte_ptr = 0; - // state->m_cde_command_bytes[state->m_cde_command_byte_ptr++] = 0x1c; + // m_cde_command_byte_ptr = 0; + // m_cde_command_bytes[m_cde_command_byte_ptr++] = 0x1c; - // state->m_cde_response = 1; + // m_cde_response = 1; } } - // printf("status byte %d\n", state->m_cde_status_byte_ptr); + // printf("status byte %d\n", m_cde_status_byte_ptr); break; } @@ -893,7 +902,7 @@ static READ64_HANDLER(cde_r) default: { -// mame_printf_debug("cde_r: %08X at %08X\n", reg*4, cpu_get_pc(&space->device())); +// mame_printf_debug("cde_r: %08X at %08X\n", reg*4, cpu_get_pc(&space.device())); break; } } @@ -908,9 +917,8 @@ static READ64_HANDLER(cde_r) } } -static WRITE64_HANDLER(cde_w) +WRITE64_MEMBER(konamim2_state::cde_w) { - konamim2_state *state = space->machine().driver_data<konamim2_state>(); int reg = offset * 2; UINT32 d; @@ -928,32 +936,32 @@ static WRITE64_HANDLER(cde_w) { case 0x028/4: // Command write { - //printf("cde_w: %08X, %08X at %08X\n", d, reg*4, cpu_get_pc(&space->device())); + //printf("cde_w: %08X, %08X at %08X\n", d, reg*4, cpu_get_pc(&space.device())); if (d == 0x0180) { - if (state->m_cde_response) + if (m_cde_response) { - cde_handle_command(space->machine()); + cde_handle_command(machine()); - state->m_cde_response = 0; + m_cde_response = 0; } - state->m_cde_command_byte_ptr = 0; + m_cde_command_byte_ptr = 0; } - else if (state->m_cde_command_byte_ptr == 0) + else if (m_cde_command_byte_ptr == 0) { - state->m_cde_num_status_bytes = 1; + m_cde_num_status_bytes = 1; - state->m_cde_status_bytes[0] = d & 0xff; - state->m_cde_status_byte_ptr = 0; + m_cde_status_bytes[0] = d & 0xff; + m_cde_status_byte_ptr = 0; - state->m_cde_response = 1; + m_cde_response = 1; } if (d != 0x180) { - state->m_cde_command_bytes[state->m_cde_command_byte_ptr++] = d; + m_cde_command_bytes[m_cde_command_byte_ptr++] = d; } break; @@ -965,15 +973,15 @@ static WRITE64_HANDLER(cde_w) if (d & 0x20) { - state->m_cde_dma[0].dma_done = 1; + m_cde_dma[0].dma_done = 1; - cde_dma_transfer(space, 0, 0); + cde_dma_transfer(&space, 0, 0); } if (d & 0x40) { - state->m_cde_dma[0].dma_done = 1; + m_cde_dma[0].dma_done = 1; - cde_dma_transfer(space, 0, 1); + cde_dma_transfer(&space, 0, 1); } break; } @@ -981,28 +989,28 @@ static WRITE64_HANDLER(cde_w) { // mame_printf_debug("CDE: DMA0 dst addr %08X\n", d); - state->m_cde_dma[0].dst_addr = d; + m_cde_dma[0].dst_addr = d; break; } case 0x30c/4: // DMA Channel 0 length? { // mame_printf_debug("CDE: DMA0 length %08X\n", d); - state->m_cde_dma[0].length = d; + m_cde_dma[0].length = d; break; } case 0x318/4: // DMA Channel 0 next destination address { // mame_printf_debug("CDE: DMA0 next dst addr %08X\n", d); - state->m_cde_dma[0].next_dst_addr = d; + m_cde_dma[0].next_dst_addr = d; break; } case 0x31c/4: // DMA Channel 0 next length? { // mame_printf_debug("CDE: DMA0 next length %08X\n", d); - state->m_cde_dma[0].next_length = d; + m_cde_dma[0].next_length = d; break; } @@ -1015,28 +1023,28 @@ static WRITE64_HANDLER(cde_w) { // mame_printf_debug("CDE: DMA1 dst addr %08X\n", d); - state->m_cde_dma[1].dst_addr = d; + m_cde_dma[1].dst_addr = d; break; } case 0x32c/4: // DMA Channel 1 length? { // mame_printf_debug("CDE: DMA1 length %08X\n", d); - state->m_cde_dma[1].length = d; + m_cde_dma[1].length = d; break; } case 0x338/4: // DMA Channel 1 next destination address { // mame_printf_debug("CDE: DMA1 next dst addr %08X\n", d); - state->m_cde_dma[1].next_dst_addr = d; + m_cde_dma[1].next_dst_addr = d; break; } case 0x33c/4: // DMA Channel 1 next length? { // mame_printf_debug("CDE: DMA1 next length %08X\n", d); - state->m_cde_dma[1].next_length = d; + m_cde_dma[1].next_length = d; break; } @@ -1044,25 +1052,25 @@ static WRITE64_HANDLER(cde_w) { if (d & 0x80000000) { - state->m_irq_active &= ~0x8; + m_irq_active &= ~0x8; } if (d & 0x60000000) { - state->m_cde_dma[0].dma_done = 0; - state->m_cde_dma[1].dma_done = 0; + m_cde_dma[0].dma_done = 0; + m_cde_dma[1].dma_done = 0; } break; } default: { -// mame_printf_debug("cde_w: %08X, %08X at %08X\n", d, reg*4, cpu_get_pc(&space->device())); +// mame_printf_debug("cde_w: %08X, %08X at %08X\n", d, reg*4, cpu_get_pc(&space.device())); break; } } } -static READ64_HANDLER(device2_r) +READ64_MEMBER(konamim2_state::device2_r) { UINT32 r = 0; int reg = offset * 2; @@ -1093,13 +1101,13 @@ static READ64_HANDLER(device2_r) } } -static READ64_HANDLER(cpu_r) +READ64_MEMBER(konamim2_state::cpu_r) { UINT64 r = 0; if (ACCESSING_BITS_32_63) { - r = (UINT64)((&space->device() != space->machine().device("maincpu")) ? 0x80000000 : 0); + r = (UINT64)((&space.device() != machine().device("maincpu")) ? 0x80000000 : 0); //r |= 0x40000000; // sets Video-LowRes !? return r << 32; } @@ -1108,22 +1116,22 @@ static READ64_HANDLER(cpu_r) } static ADDRESS_MAP_START( m2_main, AS_PROGRAM, 64, konamim2_state ) - AM_RANGE(0x00010040, 0x00010047) AM_READWRITE_LEGACY(irq_enable_r, irq_enable_w) - AM_RANGE(0x00010050, 0x00010057) AM_READ_LEGACY(irq_active_r) - AM_RANGE(0x00020000, 0x00020007) AM_READWRITE_LEGACY(unk4_r, unk4_w) - AM_RANGE(0x00030000, 0x00030007) AM_READ_LEGACY(unk30000_r) - AM_RANGE(0x00030010, 0x00030017) AM_WRITE_LEGACY(video_w) - AM_RANGE(0x00030030, 0x00030037) AM_READ_LEGACY(unk30030_r) - AM_RANGE(0x00030400, 0x00030407) AM_WRITE_LEGACY(video_irq_ack_w) - AM_RANGE(0x01000000, 0x01000fff) AM_READWRITE_LEGACY(cde_r, cde_w) - AM_RANGE(0x02000000, 0x02000fff) AM_READ_LEGACY(device2_r) - AM_RANGE(0x04000010, 0x04000017) AM_WRITE_LEGACY(unk4000010_w) - AM_RANGE(0x04000018, 0x0400001f) AM_READ_LEGACY(unk1_r) - AM_RANGE(0x04000020, 0x04000027) AM_WRITE_LEGACY(reset_w) - AM_RANGE(0x04000418, 0x0400041f) AM_WRITE_LEGACY(unk4000418_w) - AM_RANGE(0x04000208, 0x0400020f) AM_READ_LEGACY(unk3_r) - AM_RANGE(0x04000280, 0x04000287) AM_READ_LEGACY(unk4000280_r) - AM_RANGE(0x10000000, 0x10000007) AM_READ_LEGACY(cpu_r) + AM_RANGE(0x00010040, 0x00010047) AM_READWRITE(irq_enable_r, irq_enable_w) + AM_RANGE(0x00010050, 0x00010057) AM_READ(irq_active_r) + AM_RANGE(0x00020000, 0x00020007) AM_READWRITE(unk4_r, unk4_w) + AM_RANGE(0x00030000, 0x00030007) AM_READ(unk30000_r) + AM_RANGE(0x00030010, 0x00030017) AM_WRITE(video_w) + AM_RANGE(0x00030030, 0x00030037) AM_READ(unk30030_r) + AM_RANGE(0x00030400, 0x00030407) AM_WRITE(video_irq_ack_w) + AM_RANGE(0x01000000, 0x01000fff) AM_READWRITE(cde_r, cde_w) + AM_RANGE(0x02000000, 0x02000fff) AM_READ(device2_r) + AM_RANGE(0x04000010, 0x04000017) AM_WRITE(unk4000010_w) + AM_RANGE(0x04000018, 0x0400001f) AM_READ(unk1_r) + AM_RANGE(0x04000020, 0x04000027) AM_WRITE(reset_w) + AM_RANGE(0x04000418, 0x0400041f) AM_WRITE(unk4000418_w) + AM_RANGE(0x04000208, 0x0400020f) AM_READ(unk3_r) + AM_RANGE(0x04000280, 0x04000287) AM_READ(unk4000280_r) + AM_RANGE(0x10000000, 0x10000007) AM_READ(cpu_r) AM_RANGE(0x10000008, 0x10001007) AM_NOP // ??? AM_RANGE(0x20000000, 0x201fffff) AM_ROM AM_SHARE("share2") AM_RANGE(0x40000000, 0x407fffff) AM_RAM AM_SHARE("share3") AM_BASE(m_main_ram) diff --git a/src/mame/drivers/kongambl.c b/src/mame/drivers/kongambl.c index 0684ff55747..81d019006e0 100644 --- a/src/mame/drivers/kongambl.c +++ b/src/mame/drivers/kongambl.c @@ -25,6 +25,8 @@ public: kongambl_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) { } + DECLARE_READ32_MEMBER(eeprom_r); + DECLARE_WRITE32_MEMBER(eeprom_w); }; @@ -53,11 +55,11 @@ static SCREEN_UPDATE_IND16(kongambl) return 0; } -static READ32_HANDLER( eeprom_r ) +READ32_MEMBER(kongambl_state::eeprom_r) { if (ACCESSING_BITS_0_7) { - UINT32 rv = input_port_read(space->machine(), "SYSTEM") & ~0x1; + UINT32 rv = input_port_read(machine(), "SYSTEM") & ~0x1; return rv; // bit 0 freezes the game if 1 } @@ -65,11 +67,11 @@ static READ32_HANDLER( eeprom_r ) return 0; } -static WRITE32_HANDLER( eeprom_w ) +WRITE32_MEMBER(kongambl_state::eeprom_w) { if (ACCESSING_BITS_8_15) { - input_port_write(space->machine(), "EEPROMOUT", (data>>8)&0xf, 0xff); + input_port_write(machine(), "EEPROMOUT", (data>>8)&0xf, 0xff); } } @@ -87,8 +89,8 @@ static ADDRESS_MAP_START( kongambl_map, AS_PROGRAM, 32, kongambl_state ) AM_RANGE(0x480000, 0x48003f) AM_DEVWRITE_LEGACY("k056832", k056832_long_w) - AM_RANGE(0x700000, 0x700003) AM_READ_LEGACY(eeprom_r ) - AM_RANGE(0x780000, 0x780003) AM_WRITE_LEGACY(eeprom_w ) + AM_RANGE(0x700000, 0x700003) AM_READ(eeprom_r ) + AM_RANGE(0x780000, 0x780003) AM_WRITE(eeprom_w ) ADDRESS_MAP_END diff --git a/src/mame/drivers/laserbas.c b/src/mame/drivers/laserbas.c index a8be0c000f8..311b294cad5 100644 --- a/src/mame/drivers/laserbas.c +++ b/src/mame/drivers/laserbas.c @@ -49,6 +49,12 @@ public: UINT8 m_vram1[0x8000]; UINT8 m_vram2[0x8000]; UINT8 *m_protram; + DECLARE_READ8_MEMBER(vram_r); + DECLARE_WRITE8_MEMBER(vram_w); + DECLARE_READ8_MEMBER(read_unk); + DECLARE_WRITE8_MEMBER(vrambank_w); + DECLARE_READ8_MEMBER(protram_r); + DECLARE_WRITE8_MEMBER(protram_w); }; @@ -81,65 +87,59 @@ static SCREEN_UPDATE_IND16(laserbas) return 0; } -static READ8_HANDLER(vram_r) +READ8_MEMBER(laserbas_state::vram_r) { - laserbas_state *state = space->machine().driver_data<laserbas_state>(); - if(!state->m_vrambank) - return state->m_vram1[offset]; + if(!m_vrambank) + return m_vram1[offset]; else - return state->m_vram2[offset]; + return m_vram2[offset]; } -static WRITE8_HANDLER(vram_w) +WRITE8_MEMBER(laserbas_state::vram_w) { - laserbas_state *state = space->machine().driver_data<laserbas_state>(); - if(!state->m_vrambank) - state->m_vram1[offset] = data; + if(!m_vrambank) + m_vram1[offset] = data; else - state->m_vram2[offset] = data; + m_vram2[offset] = data; } #if 0 -static READ8_HANDLER( read_unk ) +READ8_MEMBER(laserbas_state::read_unk) { - laserbas_state *state = space->machine().driver_data<laserbas_state>(); - state->m_count ^= 0x80; - return state->m_count | 0x7f; + m_count ^= 0x80; + return m_count | 0x7f; } #endif -static WRITE8_HANDLER(vrambank_w) +WRITE8_MEMBER(laserbas_state::vrambank_w) { - laserbas_state *state = space->machine().driver_data<laserbas_state>(); /* either bit 2 or 3 controls flip screen */ - state->m_vrambank = data & 0x40; + m_vrambank = data & 0x40; } -static READ8_HANDLER( protram_r ) +READ8_MEMBER(laserbas_state::protram_r) { - laserbas_state *state = space->machine().driver_data<laserbas_state>(); - return state->m_protram[offset]; + return m_protram[offset]; } -static WRITE8_HANDLER( protram_w ) +WRITE8_MEMBER(laserbas_state::protram_w) { - laserbas_state *state = space->machine().driver_data<laserbas_state>(); - state->m_protram[offset] = data; + m_protram[offset] = data; } static ADDRESS_MAP_START( laserbas_memory, AS_PROGRAM, 8, laserbas_state ) //ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0xbfff) AM_READWRITE_LEGACY(vram_r, vram_w) + AM_RANGE(0x4000, 0xbfff) AM_READWRITE(vram_r, vram_w) AM_RANGE(0xc000, 0xf7ff) AM_ROM - AM_RANGE(0xf800, 0xfbff) AM_READWRITE_LEGACY(protram_r, protram_w) AM_BASE(m_protram) /* protection device */ + AM_RANGE(0xf800, 0xfbff) AM_READWRITE(protram_r, protram_w) AM_BASE(m_protram) /* protection device */ AM_RANGE(0xfc00, 0xffff) AM_RAM ADDRESS_MAP_END @@ -147,7 +147,7 @@ static ADDRESS_MAP_START( laserbas_io, AS_IO, 8, laserbas_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x00) AM_DEVWRITE("crtc", mc6845_device, address_w) AM_RANGE(0x01, 0x01) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0x10, 0x10) AM_WRITE_LEGACY(vrambank_w) + AM_RANGE(0x10, 0x10) AM_WRITE(vrambank_w) AM_RANGE(0x20, 0x20) AM_READ_PORT("IN1") // DSW + something else? AM_RANGE(0x21, 0x21) AM_READ_PORT("IN0") AM_RANGE(0x22, 0x22) AM_READ_PORT("IN2") diff --git a/src/mame/drivers/lastfght.c b/src/mame/drivers/lastfght.c index afc89e6864b..eeafb46f5c6 100644 --- a/src/mame/drivers/lastfght.c +++ b/src/mame/drivers/lastfght.c @@ -102,6 +102,24 @@ public: /* memory */ UINT8 m_colorram[256 * 3]; + DECLARE_WRITE16_MEMBER(colordac_w); + DECLARE_WRITE16_MEMBER(lastfght_hi_w); + DECLARE_WRITE16_MEMBER(lastfght_x_w); + DECLARE_WRITE16_MEMBER(lastfght_yw_w); + DECLARE_WRITE16_MEMBER(lastfght_h_w); + DECLARE_WRITE16_MEMBER(lastfght_sx_w); + DECLARE_WRITE16_MEMBER(lastfght_sy_w); + DECLARE_WRITE16_MEMBER(lastfght_sr_w); + DECLARE_WRITE16_MEMBER(lastfght_sd_w); + DECLARE_WRITE16_MEMBER(lastfght_blit_w); + DECLARE_WRITE16_MEMBER(lastfght_dest_w); + DECLARE_READ16_MEMBER(lastfght_c00000_r); + DECLARE_READ16_MEMBER(lastfght_c00002_r); + DECLARE_READ16_MEMBER(lastfght_c00004_r); + DECLARE_READ16_MEMBER(lastfght_c00006_r); + DECLARE_WRITE16_MEMBER(lastfght_c00006_w); + DECLARE_READ16_MEMBER(lastfght_sound_r); + DECLARE_WRITE16_MEMBER(lastfght_sound_w); }; @@ -165,204 +183,193 @@ static SCREEN_UPDATE_IND16( lastfght ) // Palette: HMC HM86171 VGA 256 colour RAMDAC -static WRITE16_HANDLER( colordac_w ) +WRITE16_MEMBER(lastfght_state::colordac_w) { - lastfght_state *state = space->machine().driver_data<lastfght_state>(); if (ACCESSING_BITS_0_7) { - state->m_colorram[state->m_clr_offset] = data; - palette_set_color_rgb(space->machine(), state->m_clr_offset / 3, - pal6bit(state->m_colorram[(state->m_clr_offset / 3) * 3 + 0]), - pal6bit(state->m_colorram[(state->m_clr_offset / 3) * 3 + 1]), - pal6bit(state->m_colorram[(state->m_clr_offset / 3) * 3 + 2]) + m_colorram[m_clr_offset] = data; + palette_set_color_rgb(machine(), m_clr_offset / 3, + pal6bit(m_colorram[(m_clr_offset / 3) * 3 + 0]), + pal6bit(m_colorram[(m_clr_offset / 3) * 3 + 1]), + pal6bit(m_colorram[(m_clr_offset / 3) * 3 + 2]) ); - state->m_clr_offset = (state->m_clr_offset + 1) % (256 * 3); + m_clr_offset = (m_clr_offset + 1) % (256 * 3); } if (ACCESSING_BITS_8_15) { - state->m_clr_offset = (data >> 8) * 3; + m_clr_offset = (data >> 8) * 3; } } // Blitter (supports zooming) // high byte of a 16 bit register -static WRITE16_HANDLER( lastfght_hi_w ) +WRITE16_MEMBER(lastfght_state::lastfght_hi_w) { - lastfght_state *state = space->machine().driver_data<lastfght_state>(); if (ACCESSING_BITS_8_15) - logerror("%06x: 600000.b = %02x\n", cpu_get_pc(&space->device()), data >> 8); + logerror("%06x: 600000.b = %02x\n", cpu_get_pc(&space.device()), data >> 8); if (ACCESSING_BITS_0_7) { - state->m_hi = data << 8; - //logerror("%06x: lastfght_hi = %02x\n", cpu_get_pc(&space->device()), data); + m_hi = data << 8; + //logerror("%06x: lastfght_hi = %02x\n", cpu_get_pc(&space.device()), data); } } // screen x -static WRITE16_HANDLER( lastfght_x_w ) +WRITE16_MEMBER(lastfght_state::lastfght_x_w) { - lastfght_state *state = space->machine().driver_data<lastfght_state>(); if (ACCESSING_BITS_8_15) - logerror("%06x: 800008.b = %02x\n", cpu_get_pc(&space->device()), data >> 8); + logerror("%06x: 800008.b = %02x\n", cpu_get_pc(&space.device()), data >> 8); if (ACCESSING_BITS_0_7) { - state->m_x = state->m_hi | data; - //logerror("%06x: lastfght_x = %02x\n", cpu_get_pc(&space->device()),data); + m_x = m_hi | data; + //logerror("%06x: lastfght_x = %02x\n", cpu_get_pc(&space.device()),data); } } // screen y, screen width - 1 -static WRITE16_HANDLER( lastfght_yw_w ) +WRITE16_MEMBER(lastfght_state::lastfght_yw_w) { - lastfght_state *state = space->machine().driver_data<lastfght_state>(); if (ACCESSING_BITS_8_15) { - state->m_y = state->m_hi | (data >> 8); - //logerror("%06x: lastfght_y = %02x\n", cpu_get_pc(&space->device()), data >> 8); + m_y = m_hi | (data >> 8); + //logerror("%06x: lastfght_y = %02x\n", cpu_get_pc(&space.device()), data >> 8); } if (ACCESSING_BITS_0_7) { - state->m_w = state->m_hi | data; - //logerror("%06x: lastfght_w = %02x\n", cpu_get_pc(&space->device()), data); + m_w = m_hi | data; + //logerror("%06x: lastfght_w = %02x\n", cpu_get_pc(&space.device()), data); } } // screen height - 1 -static WRITE16_HANDLER( lastfght_h_w ) +WRITE16_MEMBER(lastfght_state::lastfght_h_w) { - lastfght_state *state = space->machine().driver_data<lastfght_state>(); if (ACCESSING_BITS_8_15) { - state->m_h = state->m_hi | (data >> 8); - //logerror("%06x: lastfght_h = %02x\n", cpu_get_pc(&space->device()), data >> 8); + m_h = m_hi | (data >> 8); + //logerror("%06x: lastfght_h = %02x\n", cpu_get_pc(&space.device()), data >> 8); } if (ACCESSING_BITS_0_7) - logerror("%06x: 80000d.b = %02x\n", cpu_get_pc(&space->device()), data); + logerror("%06x: 80000d.b = %02x\n", cpu_get_pc(&space.device()), data); } // source delta x << 6, source x << 6 -static WRITE16_HANDLER( lastfght_sx_w ) +WRITE16_MEMBER(lastfght_state::lastfght_sx_w) { - lastfght_state *state = space->machine().driver_data<lastfght_state>(); if (ACCESSING_BITS_8_15) { - state->m_dsx = state->m_hi | (data >> 8); - //logerror("%06x: lastfght_dsx = %02x\n", cpu_get_pc(&space->device()), data >> 8); + m_dsx = m_hi | (data >> 8); + //logerror("%06x: lastfght_dsx = %02x\n", cpu_get_pc(&space.device()), data >> 8); } if (ACCESSING_BITS_0_7) { - state->m_sx = state->m_hi | data; - //logerror("%06x: lastfght_sx = %02x\n", cpu_get_pc(&space->device()), data); + m_sx = m_hi | data; + //logerror("%06x: lastfght_sx = %02x\n", cpu_get_pc(&space.device()), data); } } // source y << 6, source y1 << 6 -static WRITE16_HANDLER( lastfght_sy_w ) +WRITE16_MEMBER(lastfght_state::lastfght_sy_w) { - lastfght_state *state = space->machine().driver_data<lastfght_state>(); if (ACCESSING_BITS_8_15) { - state->m_sy = state->m_hi | (data >> 8); - //logerror("%06x: lastfght_sy = %02x\n", cpu_get_pc(&space->device()), data >> 8); + m_sy = m_hi | (data >> 8); + //logerror("%06x: lastfght_sy = %02x\n", cpu_get_pc(&space.device()), data >> 8); } if (ACCESSING_BITS_0_7) { - state->m_sy1 = state->m_hi | data; - //logerror("%06x: lastfght_sy1 = %02x\n", cpu_get_pc(&space->device()), data); + m_sy1 = m_hi | data; + //logerror("%06x: lastfght_sy1 = %02x\n", cpu_get_pc(&space.device()), data); } } // source rom (0x200000 bytes), source page (512x256 bytes) -static WRITE16_HANDLER( lastfght_sr_w ) +WRITE16_MEMBER(lastfght_state::lastfght_sr_w) { - lastfght_state *state = space->machine().driver_data<lastfght_state>(); if (ACCESSING_BITS_8_15) { - state->m_sp = (state->m_hi >> 8) >> 4; - //logerror("%06x: lastfght_sp = %02x\n", cpu_get_pc(&space->device()), data >> 8); + m_sp = (m_hi >> 8) >> 4; + //logerror("%06x: lastfght_sp = %02x\n", cpu_get_pc(&space.device()), data >> 8); } if (ACCESSING_BITS_0_7) { - state->m_sr = data; - //logerror("%06x: lastfght_sr = %02x\n", cpu_get_pc(&space->device()), data); + m_sr = data; + //logerror("%06x: lastfght_sr = %02x\n", cpu_get_pc(&space.device()), data); } } // source x1 << 6, source delta y << 6 -static WRITE16_HANDLER( lastfght_sd_w ) +WRITE16_MEMBER(lastfght_state::lastfght_sd_w) { - lastfght_state *state = space->machine().driver_data<lastfght_state>(); if (ACCESSING_BITS_8_15) { - state->m_sx1 = state->m_hi | (data >> 8); - //logerror("%06x: lastfght_sx1 = %02x\n", cpu_get_pc(&space->device()), data >> 8); + m_sx1 = m_hi | (data >> 8); + //logerror("%06x: lastfght_sx1 = %02x\n", cpu_get_pc(&space.device()), data >> 8); } if (ACCESSING_BITS_0_7) { - state->m_dsy = state->m_hi | data; - //logerror("%06x: lastfght_dsy = %02x\n", cpu_get_pc(&space->device()), data); + m_dsy = m_hi | data; + //logerror("%06x: lastfght_dsy = %02x\n", cpu_get_pc(&space.device()), data); } } // start blit -static WRITE16_HANDLER( lastfght_blit_w ) +WRITE16_MEMBER(lastfght_state::lastfght_blit_w) { - lastfght_state *state = space->machine().driver_data<lastfght_state>(); if (ACCESSING_BITS_8_15) { int x, y, addr; - UINT8 *gfxdata = space->machine().region( "gfx1" )->base(); - bitmap_ind16 &dest = state->m_bitmap[state->m_dest]; + UINT8 *gfxdata = machine().region( "gfx1" )->base(); + bitmap_ind16 &dest = m_bitmap[m_dest]; #if 0 - logerror("%06x: blit x %03x, y %03x, w %03x, h %03x, sx %03x.%02x, sx1 %03x.%02x, dsx %03x.%02x, sy %03x.%02x, sy1 %03x.%02x, dsy %03x.%02x, sp %02x, sr %02x, data %02x\n", cpu_get_pc(&space->device()), - state->m_x, state->m_y, state->m_w + 1, state->m_h + 1, - state->m_sx >> 6, state->m_sx & 0x3f, state->m_sx1 >> 6, state->m_dsx & 0x3f, state->m_sx1 >> 6, state->m_sx1 & 0x3f, - state->m_sy >> 6, state->m_sy & 0x3f, state->m_sy1 >> 6, state->m_dsy & 0x3f, state->m_sy1 >> 6, state->m_sy1 & 0x3f, - state->m_sp, state->m_sr, + logerror("%06x: blit x %03x, y %03x, w %03x, h %03x, sx %03x.%02x, sx1 %03x.%02x, dsx %03x.%02x, sy %03x.%02x, sy1 %03x.%02x, dsy %03x.%02x, sp %02x, sr %02x, data %02x\n", cpu_get_pc(&space.device()), + m_x, m_y, m_w + 1, m_h + 1, + m_sx >> 6, m_sx & 0x3f, m_sx1 >> 6, m_dsx & 0x3f, m_sx1 >> 6, m_sx1 & 0x3f, + m_sy >> 6, m_sy & 0x3f, m_sy1 >> 6, m_dsy & 0x3f, m_sy1 >> 6, m_sy1 & 0x3f, + m_sp, m_sr, data >> 8); #endif - for (y = 0; y <= state->m_h; y++) + for (y = 0; y <= m_h; y++) { - for (x = 0; x <= state->m_w; x++) + for (x = 0; x <= m_w; x++) { - addr = (((state->m_sx + state->m_sx1 + state->m_dsx * x) >> 6) & 0x1ff) + - (((state->m_sy + state->m_sy1 + state->m_dsy * y) >> 6) & 0xff) * 0x200 + - state->m_sp * 0x200 * 0x100 + state->m_sr * 0x200000; + addr = (((m_sx + m_sx1 + m_dsx * x) >> 6) & 0x1ff) + + (((m_sy + m_sy1 + m_dsy * y) >> 6) & 0xff) * 0x200 + + m_sp * 0x200 * 0x100 + m_sr * 0x200000; data = gfxdata[addr]; - if (data && (state->m_x + x >= 0) && (state->m_x + x < 512) && (state->m_y + y >= 0) && (state->m_y + y < 256)) - dest.pix16(state->m_y + y, state->m_x + x) = data; + if (data && (m_x + x >= 0) && (m_x + x < 512) && (m_y + y >= 0) && (m_y + y < 256)) + dest.pix16(m_y + y, m_x + x) = data; } } } if (ACCESSING_BITS_0_7) - logerror("%06x: 600007.b = %02x\n", cpu_get_pc(&space->device()), data); + logerror("%06x: 600007.b = %02x\n", cpu_get_pc(&space.device()), data); } // toggle framebuffer -static WRITE16_HANDLER( lastfght_dest_w ) +WRITE16_MEMBER(lastfght_state::lastfght_dest_w) { - lastfght_state *state = space->machine().driver_data<lastfght_state>(); if (ACCESSING_BITS_0_7) - state->m_dest ^= 1; + m_dest ^= 1; } -static READ16_HANDLER( lastfght_c00000_r ) +READ16_MEMBER(lastfght_state::lastfght_c00000_r) { // high byte: // bit 7 = blitter busy @@ -371,46 +378,45 @@ static READ16_HANDLER( lastfght_c00000_r ) } -static READ16_HANDLER( lastfght_c00002_r ) +READ16_MEMBER(lastfght_state::lastfght_c00002_r) { // high byte: // mask 0x1c: from sound? - return (space->machine().rand() & 0x1c00) | input_port_read(space->machine(), "IN0"); + return (machine().rand() & 0x1c00) | input_port_read(machine(), "IN0"); } -static READ16_HANDLER( lastfght_c00004_r ) +READ16_MEMBER(lastfght_state::lastfght_c00004_r) { - return input_port_read(space->machine(), "IN1"); + return input_port_read(machine(), "IN1"); } -static READ16_HANDLER( lastfght_c00006_r ) +READ16_MEMBER(lastfght_state::lastfght_c00006_r) { // low byte: // bit 7 = protection? // bit 5 = blitter? - return input_port_read(space->machine(), "IN2"); + return input_port_read(machine(), "IN2"); } -static WRITE16_HANDLER( lastfght_c00006_w ) +WRITE16_MEMBER(lastfght_state::lastfght_c00006_w) { - lastfght_state *state = space->machine().driver_data<lastfght_state>(); - COMBINE_DATA(&state->m_c00006); - // popmessage("%04x", state->m_c00006); + COMBINE_DATA(&m_c00006); + // popmessage("%04x", m_c00006); } -static READ16_HANDLER( lastfght_sound_r ) +READ16_MEMBER(lastfght_state::lastfght_sound_r) { // low byte: // bit 3 return 8; } -static WRITE16_HANDLER( lastfght_sound_w ) +WRITE16_MEMBER(lastfght_state::lastfght_sound_w) { if (ACCESSING_BITS_8_15) - logerror("%06x: sound_w msb = %02x\n", cpu_get_pc(&space->device()), data >> 8); + logerror("%06x: sound_w msb = %02x\n", cpu_get_pc(&space.device()), data >> 8); if (ACCESSING_BITS_0_7) - logerror("%06x: sound_w lsb = %02x\n", cpu_get_pc(&space->device()), data); + logerror("%06x: sound_w lsb = %02x\n", cpu_get_pc(&space.device()), data); } /*************************************************************************** @@ -425,26 +431,26 @@ static ADDRESS_MAP_START( lastfght_map, AS_PROGRAM, 16, lastfght_state ) AM_RANGE( 0x200000, 0x20ffff ) AM_RAM AM_SHARE("nvram") // battery - AM_RANGE( 0x600000, 0x600001 ) AM_WRITE_LEGACY(lastfght_hi_w ) - AM_RANGE( 0x600002, 0x600003 ) AM_READWRITE_LEGACY(lastfght_sound_r, lastfght_sound_w ) - AM_RANGE( 0x600006, 0x600007 ) AM_WRITE_LEGACY(lastfght_blit_w ) - AM_RANGE( 0x600008, 0x600009 ) AM_WRITE_LEGACY(colordac_w ) + AM_RANGE( 0x600000, 0x600001 ) AM_WRITE(lastfght_hi_w ) + AM_RANGE( 0x600002, 0x600003 ) AM_READWRITE(lastfght_sound_r, lastfght_sound_w ) + AM_RANGE( 0x600006, 0x600007 ) AM_WRITE(lastfght_blit_w ) + AM_RANGE( 0x600008, 0x600009 ) AM_WRITE(colordac_w ) AM_RANGE( 0x60000a, 0x60000b ) AM_WRITENOP // colordac? - AM_RANGE( 0x800000, 0x800001 ) AM_WRITE_LEGACY(lastfght_sx_w ) - AM_RANGE( 0x800002, 0x800003 ) AM_WRITE_LEGACY(lastfght_sd_w ) - AM_RANGE( 0x800004, 0x800005 ) AM_WRITE_LEGACY(lastfght_sy_w ) - AM_RANGE( 0x800006, 0x800007 ) AM_WRITE_LEGACY(lastfght_sr_w ) - AM_RANGE( 0x800008, 0x800009 ) AM_WRITE_LEGACY(lastfght_x_w ) - AM_RANGE( 0x80000a, 0x80000b ) AM_WRITE_LEGACY(lastfght_yw_w ) - AM_RANGE( 0x80000c, 0x80000d ) AM_WRITE_LEGACY(lastfght_h_w ) + AM_RANGE( 0x800000, 0x800001 ) AM_WRITE(lastfght_sx_w ) + AM_RANGE( 0x800002, 0x800003 ) AM_WRITE(lastfght_sd_w ) + AM_RANGE( 0x800004, 0x800005 ) AM_WRITE(lastfght_sy_w ) + AM_RANGE( 0x800006, 0x800007 ) AM_WRITE(lastfght_sr_w ) + AM_RANGE( 0x800008, 0x800009 ) AM_WRITE(lastfght_x_w ) + AM_RANGE( 0x80000a, 0x80000b ) AM_WRITE(lastfght_yw_w ) + AM_RANGE( 0x80000c, 0x80000d ) AM_WRITE(lastfght_h_w ) - AM_RANGE( 0x800014, 0x800015 ) AM_WRITE_LEGACY(lastfght_dest_w ) + AM_RANGE( 0x800014, 0x800015 ) AM_WRITE(lastfght_dest_w ) - AM_RANGE( 0xc00000, 0xc00001 ) AM_READ_LEGACY(lastfght_c00000_r ) - AM_RANGE( 0xc00002, 0xc00003 ) AM_READ_LEGACY(lastfght_c00002_r ) - AM_RANGE( 0xc00004, 0xc00005 ) AM_READ_LEGACY(lastfght_c00004_r ) - AM_RANGE( 0xc00006, 0xc00007 ) AM_READWRITE_LEGACY(lastfght_c00006_r, lastfght_c00006_w ) + AM_RANGE( 0xc00000, 0xc00001 ) AM_READ(lastfght_c00000_r ) + AM_RANGE( 0xc00002, 0xc00003 ) AM_READ(lastfght_c00002_r ) + AM_RANGE( 0xc00004, 0xc00005 ) AM_READ(lastfght_c00004_r ) + AM_RANGE( 0xc00006, 0xc00007 ) AM_READWRITE(lastfght_c00006_r, lastfght_c00006_w ) AM_RANGE( 0xff0000, 0xffffff ) AM_RAM ADDRESS_MAP_END diff --git a/src/mame/drivers/lgp.c b/src/mame/drivers/lgp.c index 49cd0de50ec..d9042f89c6a 100644 --- a/src/mame/drivers/lgp.c +++ b/src/mame/drivers/lgp.c @@ -80,6 +80,8 @@ public: UINT8 *m_tile_ram; UINT8 *m_tile_control_ram; emu_timer *m_irq_timer; + DECLARE_READ8_MEMBER(ldp_read); + DECLARE_WRITE8_MEMBER(ldp_write); }; @@ -122,16 +124,14 @@ static SCREEN_UPDATE_IND16( lgp ) /* MEMORY HANDLERS */ /* Main Z80 R/W */ -static READ8_HANDLER(ldp_read) +READ8_MEMBER(lgp_state::ldp_read) { - lgp_state *state = space->machine().driver_data<lgp_state>(); - return state->m_laserdisc->status_r(); + return m_laserdisc->status_r(); } -static WRITE8_HANDLER(ldp_write) +WRITE8_MEMBER(lgp_state::ldp_write) { - lgp_state *state = space->machine().driver_data<lgp_state>(); - state->m_laserdisc->data_w(data); + m_laserdisc->data_w(data); } @@ -145,8 +145,8 @@ static ADDRESS_MAP_START( main_program_map, AS_PROGRAM, 8, lgp_state ) AM_RANGE(0xe400,0xe7ff) AM_RAM AM_BASE(m_tile_control_ram) // AM_RANGE(0xef00,0xef00) AM_READ_PORT("IN_TEST") - AM_RANGE(0xef80,0xef80) AM_READWRITE_LEGACY(ldp_read,ldp_write) - AM_RANGE(0xefb8,0xefb8) AM_READ_LEGACY(ldp_read) /* Likely not right, calms it down though */ + AM_RANGE(0xef80,0xef80) AM_READWRITE(ldp_read,ldp_write) + AM_RANGE(0xefb8,0xefb8) AM_READ(ldp_read) /* Likely not right, calms it down though */ AM_RANGE(0xefc0,0xefc0) AM_READ_PORT("DSWA") /* Not tested */ AM_RANGE(0xefc8,0xefc8) AM_READ_PORT("DSWB") AM_RANGE(0xefd0,0xefd0) AM_READ_PORT("DSWC") diff --git a/src/mame/drivers/littlerb.c b/src/mame/drivers/littlerb.c index 530cc4ed05e..f8046c0c0aa 100644 --- a/src/mame/drivers/littlerb.c +++ b/src/mame/drivers/littlerb.c @@ -100,16 +100,21 @@ public: required_device<cpu_device> m_maincpu; required_device<dac_device> m_dacl; required_device<dac_device> m_dacr; + DECLARE_WRITE16_MEMBER(region4_w); + DECLARE_READ16_MEMBER(buffer_status_r); + DECLARE_READ16_MEMBER(littlerb_vdp_r); + DECLARE_WRITE16_MEMBER(littlerb_vdp_w); + DECLARE_WRITE16_MEMBER(littlerb_l_sound_w); + DECLARE_WRITE16_MEMBER(littlerb_r_sound_w); }; -static WRITE16_HANDLER( region4_w ) +WRITE16_MEMBER(littlerb_state::region4_w) { - littlerb_state *state = space->machine().driver_data<littlerb_state>(); - COMBINE_DATA(&state->m_region4[offset]); + COMBINE_DATA(&m_region4[offset]); } -static READ16_HANDLER( buffer_status_r ) +READ16_MEMBER(littlerb_state::buffer_status_r) { return 0; } @@ -125,9 +130,9 @@ static ADDRESS_MAP_START( littlerb_vdp_map8, AS_0, 16, littlerb_state ) AM_RANGE(0x00800002 ,0x00800003) AM_DEVWRITE8("^ramdac", ramdac_device, pal_w, 0x00ff) AM_RANGE(0x00800004 ,0x00800005) AM_DEVWRITE8("^ramdac", ramdac_device, mask_w, 0x00ff) - AM_RANGE(0x1ff80804, 0x1ff80805) AM_READ_LEGACY(buffer_status_r) + AM_RANGE(0x1ff80804, 0x1ff80805) AM_READ(buffer_status_r) // most gfx end up here including the sprite list - AM_RANGE(0x1ff80000, 0x1fffffff) AM_RAM_WRITE_LEGACY(region4_w) AM_BASE(m_region4) + AM_RANGE(0x1ff80000, 0x1fffffff) AM_RAM_WRITE(region4_w) AM_BASE(m_region4) ADDRESS_MAP_END static ADDRESS_MAP_START( ramdac_map, AS_0, 8, littlerb_state ) @@ -223,60 +228,58 @@ static void littlerb_recalc_address(running_machine &machine) state->m_write_address = state->m_vdp_address_low | state->m_vdp_address_high<<16; } -static READ16_HANDLER( littlerb_vdp_r ) +READ16_MEMBER(littlerb_state::littlerb_vdp_r) { - littlerb_state *state = space->machine().driver_data<littlerb_state>(); - logerror("%06x littlerb_vdp_r offs %04x mask %04x (address %08x)\n", cpu_get_pc(&space->device()), offset, mem_mask, state->m_write_address); + logerror("%06x littlerb_vdp_r offs %04x mask %04x (address %08x)\n", cpu_get_pc(&space.device()), offset, mem_mask, m_write_address); UINT16 res; switch (offset & 3) { - case 0: res = state->m_vdp_address_low; break; - case 1: res = state->m_vdp_address_high; break; - case 2: res = littlerb_data_read(space->machine(), mem_mask); break; - case 3: res = state->m_vdp_writemode; break; + case 0: res = m_vdp_address_low; break; + case 1: res = m_vdp_address_high; break; + case 2: res = littlerb_data_read(machine(), mem_mask); break; + case 3: res = m_vdp_writemode; break; } return res; } #define LOG_VDP 0 -static WRITE16_HANDLER( littlerb_vdp_w ) +WRITE16_MEMBER(littlerb_state::littlerb_vdp_w) { - littlerb_state *state = space->machine().driver_data<littlerb_state>(); if (offset!=2) { - if (state->m_type2_writes) + if (m_type2_writes) { - if (state->m_type2_writes>2) + if (m_type2_writes>2) { if (LOG_VDP) logerror("******************************* BIG WRITE OCCURRED BEFORE THIS!!! ****************************\n"); - printf("big write occured with start %08x end %08x\n", state->m_write_address_laststart >> 3, state->m_write_address_lastend >> 3); + printf("big write occured with start %08x end %08x\n", m_write_address_laststart >> 3, m_write_address_lastend >> 3); } - if (LOG_VDP) logerror("~%06x previously wrote %08x data bytes\n", state->m_lasttype2pc, state->m_type2_writes*2); - state->m_type2_writes = 0; + if (LOG_VDP) logerror("~%06x previously wrote %08x data bytes\n", m_lasttype2pc, m_type2_writes*2); + m_type2_writes = 0; } - if (LOG_VDP) logerror("%06x littlerb_vdp_w offs %04x data %04x mask %04x\n", cpu_get_pc(&space->device()), offset, data, mem_mask); + if (LOG_VDP) logerror("%06x littlerb_vdp_w offs %04x data %04x mask %04x\n", cpu_get_pc(&space.device()), offset, data, mem_mask); } else { if (mem_mask==0xffff) { - if (state->m_type2_writes==0) + if (m_type2_writes==0) { - if (LOG_VDP) logerror("data write started %06x %04x data %04x mask %04x\n", cpu_get_pc(&space->device()), offset, data, mem_mask); + if (LOG_VDP) logerror("data write started %06x %04x data %04x mask %04x\n", cpu_get_pc(&space.device()), offset, data, mem_mask); } - if (state->m_type2_writes==0) state->m_write_address_laststart = state->m_write_address; - state->m_write_address_lastend = state->m_write_address; - state->m_type2_writes++; - state->m_lasttype2pc = cpu_get_pc(&space->device()); + if (m_type2_writes==0) m_write_address_laststart = m_write_address; + m_write_address_lastend = m_write_address; + m_type2_writes++; + m_lasttype2pc = cpu_get_pc(&space.device()); } else { - if (LOG_VDP) logerror("xxx %06x littlerb_vdp_w offs %04x data %04x mask %04x\n", cpu_get_pc(&space->device()), offset, data, mem_mask); + if (LOG_VDP) logerror("xxx %06x littlerb_vdp_w offs %04x data %04x mask %04x\n", cpu_get_pc(&space.device()), offset, data, mem_mask); } } @@ -284,23 +287,23 @@ static WRITE16_HANDLER( littlerb_vdp_w ) switch (offset) { case 0: - COMBINE_DATA(&state->m_vdp_address_low); - littlerb_recalc_address(space->machine()); + COMBINE_DATA(&m_vdp_address_low); + littlerb_recalc_address(machine()); break; case 1: - COMBINE_DATA(&state->m_vdp_address_high); - littlerb_recalc_address(space->machine()); + COMBINE_DATA(&m_vdp_address_high); + littlerb_recalc_address(machine()); break; case 2: - littlerb_data_write(space->machine(), data, mem_mask); + littlerb_data_write(machine(), data, mem_mask); break; case 3: - COMBINE_DATA(&state->m_vdp_writemode); - int mode = state->m_vdp_writemode; + COMBINE_DATA(&m_vdp_writemode); + int mode = m_vdp_writemode; if ((mode!=0x3800) && (mode !=0x2000)) printf("WRITE MODE CHANGED TO %04x\n",mode); break; @@ -315,20 +318,18 @@ static UINT8 sound_data_shift(running_machine &machine) } /* l is SFX, r is BGM (they doesn't seem to share the same data ROM) */ -static WRITE16_HANDLER( littlerb_l_sound_w ) +WRITE16_MEMBER(littlerb_state::littlerb_l_sound_w) { - littlerb_state *state = space->machine().driver_data<littlerb_state>(); - state->m_sound_index_l = (data >> sound_data_shift(space->machine())) & 0xff; - state->m_sound_pointer_l = 0; - //popmessage("%04x %04x",state->m_sound_index_l,state->m_sound_index_r); + m_sound_index_l = (data >> sound_data_shift(machine())) & 0xff; + m_sound_pointer_l = 0; + //popmessage("%04x %04x",m_sound_index_l,m_sound_index_r); } -static WRITE16_HANDLER( littlerb_r_sound_w ) +WRITE16_MEMBER(littlerb_state::littlerb_r_sound_w) { - littlerb_state *state = space->machine().driver_data<littlerb_state>(); - state->m_sound_index_r = (data >> sound_data_shift(space->machine())) & 0xff; - state->m_sound_pointer_r = 0; - //popmessage("%04x %04x",state->m_sound_index_l,state->m_sound_index_r); + m_sound_index_r = (data >> sound_data_shift(machine())) & 0xff; + m_sound_pointer_r = 0; + //popmessage("%04x %04x",m_sound_index_l,m_sound_index_r); } static ADDRESS_MAP_START( littlerb_main, AS_PROGRAM, 16, littlerb_state ) @@ -338,9 +339,9 @@ static ADDRESS_MAP_START( littlerb_main, AS_PROGRAM, 16, littlerb_state ) AM_RANGE(0x060004, 0x060007) AM_WRITENOP AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_RANGE(0x200000, 0x203fff) AM_RAM // main ram? - AM_RANGE(0x700000, 0x700007) AM_READ_LEGACY(littlerb_vdp_r) AM_WRITE_LEGACY(littlerb_vdp_w) - AM_RANGE(0x740000, 0x740001) AM_WRITE_LEGACY(littlerb_l_sound_w) - AM_RANGE(0x760000, 0x760001) AM_WRITE_LEGACY(littlerb_r_sound_w) + AM_RANGE(0x700000, 0x700007) AM_READ(littlerb_vdp_r) AM_WRITE(littlerb_vdp_w) + AM_RANGE(0x740000, 0x740001) AM_WRITE(littlerb_l_sound_w) + AM_RANGE(0x760000, 0x760001) AM_WRITE(littlerb_r_sound_w) AM_RANGE(0x780000, 0x780001) AM_WRITENOP // generic outputs AM_RANGE(0x7c0000, 0x7c0001) AM_READ_PORT("DSW") AM_RANGE(0x7e0000, 0x7e0001) AM_READ_PORT("P1") diff --git a/src/mame/drivers/ltcasino.c b/src/mame/drivers/ltcasino.c index 64a5dfc4207..edd72506a98 100644 --- a/src/mame/drivers/ltcasino.c +++ b/src/mame/drivers/ltcasino.c @@ -27,6 +27,8 @@ public: UINT8 *m_tile_num_ram; UINT8 *m_tile_atr_ram; tilemap_t *m_tilemap; + DECLARE_WRITE8_MEMBER(ltcasino_tile_num_w); + DECLARE_WRITE8_MEMBER(ltcasino_tile_atr_w); }; @@ -52,27 +54,25 @@ static VIDEO_START(ltcasino) } -static WRITE8_HANDLER( ltcasino_tile_num_w ) +WRITE8_MEMBER(ltcasino_state::ltcasino_tile_num_w) { - ltcasino_state *state = space->machine().driver_data<ltcasino_state>(); - state->m_tile_num_ram[offset] = data; - state->m_tilemap->mark_tile_dirty(offset); + m_tile_num_ram[offset] = data; + m_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( ltcasino_tile_atr_w ) +WRITE8_MEMBER(ltcasino_state::ltcasino_tile_atr_w) { - ltcasino_state *state = space->machine().driver_data<ltcasino_state>(); - state->m_tile_atr_ram[offset] = data; - state->m_tilemap->mark_tile_dirty(offset); + m_tile_atr_ram[offset] = data; + m_tilemap->mark_tile_dirty(offset); } static ADDRESS_MAP_START( ltcasino_map, AS_PROGRAM, 8, ltcasino_state ) AM_RANGE(0x0000, 0x7fff) AM_RAM AM_RANGE(0x8000, 0xcfff) AM_ROM - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE_LEGACY(ltcasino_tile_num_w) AM_BASE(m_tile_num_ram) + AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(ltcasino_tile_num_w) AM_BASE(m_tile_num_ram) AM_RANGE(0xd800, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE_LEGACY(ltcasino_tile_atr_w) AM_BASE(m_tile_atr_ram) + AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(ltcasino_tile_atr_w) AM_BASE(m_tile_atr_ram) AM_RANGE(0xe800, 0xebff) AM_RAM AM_RANGE(0xec00, 0xec00) AM_READ_PORT("IN0") diff --git a/src/mame/drivers/luckgrln.c b/src/mame/drivers/luckgrln.c index c96cdff4ddb..c5aab11dbaa 100644 --- a/src/mame/drivers/luckgrln.c +++ b/src/mame/drivers/luckgrln.c @@ -111,21 +111,36 @@ public: UINT8* m_reel4_attr; int m_palette_count; UINT8 m_palette_ram[0x10000]; + DECLARE_WRITE8_MEMBER(luckgrln_reel1_ram_w); + DECLARE_WRITE8_MEMBER(luckgrln_reel1_attr_w); + DECLARE_WRITE8_MEMBER(luckgrln_reel2_ram_w); + DECLARE_WRITE8_MEMBER(luckgrln_reel2_attr_w); + DECLARE_WRITE8_MEMBER(luckgrln_reel3_ram_w); + DECLARE_WRITE8_MEMBER(luckgrln_reel3_attr_w); + DECLARE_WRITE8_MEMBER(luckgrln_reel4_ram_w); + DECLARE_WRITE8_MEMBER(luckgrln_reel4_attr_w); + DECLARE_WRITE8_MEMBER(output_w); + DECLARE_WRITE8_MEMBER(palette_offset_low_w); + DECLARE_WRITE8_MEMBER(palette_offset_high_w); + DECLARE_WRITE8_MEMBER(palette_w); + DECLARE_READ8_MEMBER(rtc_r); + DECLARE_WRITE8_MEMBER(lamps_a_w); + DECLARE_WRITE8_MEMBER(lamps_b_w); + DECLARE_WRITE8_MEMBER(counters_w); + DECLARE_READ8_MEMBER(test_r); }; -static WRITE8_HANDLER( luckgrln_reel1_ram_w ) +WRITE8_MEMBER(luckgrln_state::luckgrln_reel1_ram_w) { - luckgrln_state *state = space->machine().driver_data<luckgrln_state>(); - state->m_reel1_ram[offset] = data; - state->m_reel1_tilemap->mark_tile_dirty(offset); + m_reel1_ram[offset] = data; + m_reel1_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( luckgrln_reel1_attr_w ) +WRITE8_MEMBER(luckgrln_state::luckgrln_reel1_attr_w) { - luckgrln_state *state = space->machine().driver_data<luckgrln_state>(); - state->m_reel1_attr[offset] = data; - state->m_reel1_tilemap->mark_tile_dirty(offset); + m_reel1_attr[offset] = data; + m_reel1_tilemap->mark_tile_dirty(offset); } @@ -148,18 +163,16 @@ static TILE_GET_INFO( get_luckgrln_reel1_tile_info ) } -static WRITE8_HANDLER( luckgrln_reel2_ram_w ) +WRITE8_MEMBER(luckgrln_state::luckgrln_reel2_ram_w) { - luckgrln_state *state = space->machine().driver_data<luckgrln_state>(); - state->m_reel2_ram[offset] = data; - state->m_reel2_tilemap->mark_tile_dirty(offset); + m_reel2_ram[offset] = data; + m_reel2_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( luckgrln_reel2_attr_w ) +WRITE8_MEMBER(luckgrln_state::luckgrln_reel2_attr_w) { - luckgrln_state *state = space->machine().driver_data<luckgrln_state>(); - state->m_reel2_attr[offset] = data; - state->m_reel2_tilemap->mark_tile_dirty(offset); + m_reel2_attr[offset] = data; + m_reel2_tilemap->mark_tile_dirty(offset); } @@ -180,18 +193,16 @@ static TILE_GET_INFO( get_luckgrln_reel2_tile_info ) 0); } -static WRITE8_HANDLER( luckgrln_reel3_ram_w ) +WRITE8_MEMBER(luckgrln_state::luckgrln_reel3_ram_w) { - luckgrln_state *state = space->machine().driver_data<luckgrln_state>(); - state->m_reel3_ram[offset] = data; - state->m_reel3_tilemap->mark_tile_dirty(offset); + m_reel3_ram[offset] = data; + m_reel3_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( luckgrln_reel3_attr_w ) +WRITE8_MEMBER(luckgrln_state::luckgrln_reel3_attr_w) { - luckgrln_state *state = space->machine().driver_data<luckgrln_state>(); - state->m_reel3_attr[offset] = data; - state->m_reel3_tilemap->mark_tile_dirty(offset); + m_reel3_attr[offset] = data; + m_reel3_tilemap->mark_tile_dirty(offset); } @@ -211,18 +222,16 @@ static TILE_GET_INFO( get_luckgrln_reel3_tile_info ) 0); } -static WRITE8_HANDLER( luckgrln_reel4_ram_w ) +WRITE8_MEMBER(luckgrln_state::luckgrln_reel4_ram_w) { - luckgrln_state *state = space->machine().driver_data<luckgrln_state>(); - state->m_reel4_ram[offset] = data; - state->m_reel4_tilemap->mark_tile_dirty(offset); + m_reel4_ram[offset] = data; + m_reel4_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( luckgrln_reel4_attr_w ) +WRITE8_MEMBER(luckgrln_state::luckgrln_reel4_attr_w) { - luckgrln_state *state = space->machine().driver_data<luckgrln_state>(); - state->m_reel4_attr[offset] = data; - state->m_reel4_tilemap->mark_tile_dirty(offset); + m_reel4_attr[offset] = data; + m_reel4_tilemap->mark_tile_dirty(offset); } @@ -363,20 +372,20 @@ static ADDRESS_MAP_START( mainmap, AS_PROGRAM, 8, luckgrln_state ) AM_RANGE(0x10000, 0x1ffff) AM_ROM AM_REGION("rom_data",0x10000) AM_RANGE(0x20000, 0x2ffff) AM_ROM AM_REGION("rom_data",0x00000) - AM_RANGE(0x0c000, 0x0c1ff) AM_RAM_WRITE_LEGACY(luckgrln_reel1_ram_w) AM_BASE(m_reel1_ram) // only written to half way - AM_RANGE(0x0c800, 0x0c9ff) AM_RAM_WRITE_LEGACY(luckgrln_reel1_attr_w) AM_BASE(m_reel1_attr) + AM_RANGE(0x0c000, 0x0c1ff) AM_RAM_WRITE(luckgrln_reel1_ram_w) AM_BASE(m_reel1_ram) // only written to half way + AM_RANGE(0x0c800, 0x0c9ff) AM_RAM_WRITE(luckgrln_reel1_attr_w) AM_BASE(m_reel1_attr) AM_RANGE(0x0d000, 0x0d03f) AM_RAM AM_BASE(m_reel1_scroll) AM_MIRROR(0x000c0) - AM_RANGE(0x0c200, 0x0c3ff) AM_RAM_WRITE_LEGACY(luckgrln_reel2_ram_w) AM_BASE(m_reel2_ram) - AM_RANGE(0x0ca00, 0x0cbff) AM_RAM_WRITE_LEGACY(luckgrln_reel2_attr_w) AM_BASE(m_reel2_attr) + AM_RANGE(0x0c200, 0x0c3ff) AM_RAM_WRITE(luckgrln_reel2_ram_w) AM_BASE(m_reel2_ram) + AM_RANGE(0x0ca00, 0x0cbff) AM_RAM_WRITE(luckgrln_reel2_attr_w) AM_BASE(m_reel2_attr) AM_RANGE(0x0d200, 0x0d23f) AM_RAM AM_BASE(m_reel2_scroll) AM_MIRROR(0x000c0) - AM_RANGE(0x0c400, 0x0c5ff) AM_RAM_WRITE_LEGACY(luckgrln_reel3_ram_w ) AM_BASE(m_reel3_ram) - AM_RANGE(0x0cc00, 0x0cdff) AM_RAM_WRITE_LEGACY(luckgrln_reel3_attr_w) AM_BASE(m_reel3_attr) + AM_RANGE(0x0c400, 0x0c5ff) AM_RAM_WRITE(luckgrln_reel3_ram_w ) AM_BASE(m_reel3_ram) + AM_RANGE(0x0cc00, 0x0cdff) AM_RAM_WRITE(luckgrln_reel3_attr_w) AM_BASE(m_reel3_attr) AM_RANGE(0x0d400, 0x0d43f) AM_RAM AM_BASE(m_reel3_scroll) AM_MIRROR(0x000c0) - AM_RANGE(0x0c600, 0x0c7ff) AM_RAM_WRITE_LEGACY(luckgrln_reel4_ram_w ) AM_BASE(m_reel4_ram) - AM_RANGE(0x0ce00, 0x0cfff) AM_RAM_WRITE_LEGACY(luckgrln_reel4_attr_w) AM_BASE(m_reel4_attr) + AM_RANGE(0x0c600, 0x0c7ff) AM_RAM_WRITE(luckgrln_reel4_ram_w ) AM_BASE(m_reel4_ram) + AM_RANGE(0x0ce00, 0x0cfff) AM_RAM_WRITE(luckgrln_reel4_attr_w) AM_BASE(m_reel4_attr) AM_RANGE(0x0d600, 0x0d63f) AM_RAM AM_BASE(m_reel4_scroll) // AM_RANGE(0x0d200, 0x0d2ff) AM_RAM @@ -400,62 +409,58 @@ static ADDRESS_MAP_START( _7smash_map, AS_PROGRAM, 8, luckgrln_state ) AM_RANGE(0xf0000, 0xfffff) AM_UNMAP ADDRESS_MAP_END -static WRITE8_HANDLER( output_w ) +WRITE8_MEMBER(luckgrln_state::output_w) { - luckgrln_state *state = space->machine().driver_data<luckgrln_state>(); /* correct? */ if (data==0x84) - state->m_nmi_enable = 0; + m_nmi_enable = 0; else if (data==0x85) - state->m_nmi_enable = 1; + m_nmi_enable = 1; else printf("output_w unk data %02x\n",data); } -static WRITE8_HANDLER( palette_offset_low_w ) +WRITE8_MEMBER(luckgrln_state::palette_offset_low_w) { - luckgrln_state *state = space->machine().driver_data<luckgrln_state>(); - state->m_palette_count = data<<1; + m_palette_count = data<<1; } -static WRITE8_HANDLER( palette_offset_high_w ) +WRITE8_MEMBER(luckgrln_state::palette_offset_high_w) { - luckgrln_state *state = space->machine().driver_data<luckgrln_state>(); - state->m_palette_count = state->m_palette_count | data<<9; + m_palette_count = m_palette_count | data<<9; } -static WRITE8_HANDLER( palette_w ) +WRITE8_MEMBER(luckgrln_state::palette_w) { - luckgrln_state *state = space->machine().driver_data<luckgrln_state>(); - state->m_palette_ram[state->m_palette_count] = data; + m_palette_ram[m_palette_count] = data; { int r,g,b; int offs; UINT16 dat; - offs = state->m_palette_count&~0x1; - dat = state->m_palette_ram[offs] | state->m_palette_ram[offs+1]<<8; + offs = m_palette_count&~0x1; + dat = m_palette_ram[offs] | m_palette_ram[offs+1]<<8; r = (dat >> 0) & 0x1f; g = (dat >> 5) & 0x1f; b = (dat >> 10) & 0x1f; - palette_set_color_rgb(space->machine(), offs/2, pal5bit(r), pal5bit(g), pal5bit(b)); + palette_set_color_rgb(machine(), offs/2, pal5bit(r), pal5bit(g), pal5bit(b)); } - state->m_palette_count++; + m_palette_count++; } // Oki M62X428 is a 4-bit RTC, doesn't seem to be millennium bug proof ... -static READ8_HANDLER( rtc_r ) +READ8_MEMBER(luckgrln_state::rtc_r) { system_time systime; - space->machine().base_datetime(systime); + machine().base_datetime(systime); switch(offset) { @@ -479,7 +484,7 @@ static READ8_HANDLER( rtc_r ) } /* Analizing the lamps, the game should has a 12-buttons control layout */ -static WRITE8_HANDLER(lamps_a_w) +WRITE8_MEMBER(luckgrln_state::lamps_a_w) { /* LAMPS A: @@ -504,7 +509,7 @@ static WRITE8_HANDLER(lamps_a_w) output_set_lamp_value(7, (data >> 7) & 1); /* TAKE */ } -static WRITE8_HANDLER(lamps_b_w) +WRITE8_MEMBER(luckgrln_state::lamps_b_w) { /* LAMPS B: @@ -523,7 +528,7 @@ static WRITE8_HANDLER(lamps_b_w) output_set_lamp_value(11, (data >> 3) & 1); /* CANCEL */ } -static WRITE8_HANDLER(counters_w) +WRITE8_MEMBER(luckgrln_state::counters_w) { /* COUNTERS: @@ -535,10 +540,10 @@ static WRITE8_HANDLER(counters_w) xxxx ---- unused */ - coin_counter_w(space->machine(), 0, data & 0x01); /* COIN 1 */ - coin_counter_w(space->machine(), 1, data & 0x04); /* COIN 2 */ - coin_counter_w(space->machine(), 2, data & 0x08); /* COIN 3 */ - coin_counter_w(space->machine(), 3, data & 0x02); /* KEY IN */ + coin_counter_w(machine(), 0, data & 0x01); /* COIN 1 */ + coin_counter_w(machine(), 1, data & 0x04); /* COIN 2 */ + coin_counter_w(machine(), 2, data & 0x08); /* COIN 3 */ + coin_counter_w(machine(), 3, data & 0x02); /* KEY IN */ } @@ -546,21 +551,21 @@ static WRITE8_HANDLER(counters_w) static ADDRESS_MAP_START( portmap, AS_IO, 8, luckgrln_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x0000, 0x003f) AM_RAM // Z180 internal regs - AM_RANGE(0x0060, 0x0060) AM_WRITE_LEGACY(output_w) + AM_RANGE(0x0060, 0x0060) AM_WRITE(output_w) - AM_RANGE(0x0090, 0x009f) AM_READ_LEGACY(rtc_r) //AM_WRITENOP + AM_RANGE(0x0090, 0x009f) AM_READ(rtc_r) //AM_WRITENOP - AM_RANGE(0x00a0, 0x00a0) AM_WRITE_LEGACY(palette_offset_low_w) - AM_RANGE(0x00a1, 0x00a1) AM_WRITE_LEGACY(palette_offset_high_w) - AM_RANGE(0x00a2, 0x00a2) AM_WRITE_LEGACY(palette_w) + AM_RANGE(0x00a0, 0x00a0) AM_WRITE(palette_offset_low_w) + AM_RANGE(0x00a1, 0x00a1) AM_WRITE(palette_offset_high_w) + AM_RANGE(0x00a2, 0x00a2) AM_WRITE(palette_w) AM_RANGE(0x00b0, 0x00b0) AM_DEVWRITE("crtc", mc6845_device, address_w) AM_RANGE(0x00b1, 0x00b1) AM_DEVWRITE("crtc", mc6845_device, register_w) AM_RANGE(0x00b8, 0x00b8) AM_READ_PORT("IN0") - AM_RANGE(0x00b9, 0x00b9) AM_READ_PORT("IN1") AM_WRITE_LEGACY(counters_w) - AM_RANGE(0x00ba, 0x00ba) AM_READ_PORT("IN2") AM_WRITE_LEGACY(lamps_a_w) - AM_RANGE(0x00bb, 0x00bb) AM_READ_PORT("IN3") AM_WRITE_LEGACY(lamps_b_w) + AM_RANGE(0x00b9, 0x00b9) AM_READ_PORT("IN1") AM_WRITE(counters_w) + AM_RANGE(0x00ba, 0x00ba) AM_READ_PORT("IN2") AM_WRITE(lamps_a_w) + AM_RANGE(0x00bb, 0x00bb) AM_READ_PORT("IN3") AM_WRITE(lamps_b_w) AM_RANGE(0x00bc, 0x00bc) AM_READ_PORT("DSW1") AM_RANGE(0x00c0, 0x00c3) AM_WRITENOP @@ -598,13 +603,13 @@ static ADDRESS_MAP_START( portmap, AS_IO, 8, luckgrln_state ) ADDRESS_MAP_END /* reads a bit 1 status there after every round played */ -static READ8_HANDLER( test_r ) +READ8_MEMBER(luckgrln_state::test_r) { return 0xff; } static ADDRESS_MAP_START( _7smash_io, AS_IO, 8, luckgrln_state ) - AM_RANGE(0x66, 0x66) AM_READ_LEGACY(test_r) + AM_RANGE(0x66, 0x66) AM_READ(test_r) AM_IMPORT_FROM( portmap ) ADDRESS_MAP_END diff --git a/src/mame/drivers/m14.c b/src/mame/drivers/m14.c index 5b5eedfb3b3..8dd96a145ac 100644 --- a/src/mame/drivers/m14.c +++ b/src/mame/drivers/m14.c @@ -70,6 +70,12 @@ public: /* devices */ device_t *m_maincpu; + DECLARE_WRITE8_MEMBER(m14_vram_w); + DECLARE_WRITE8_MEMBER(m14_cram_w); + DECLARE_READ8_MEMBER(m14_rng_r); + DECLARE_READ8_MEMBER(input_buttons_r); + DECLARE_WRITE8_MEMBER(test_w); + DECLARE_WRITE8_MEMBER(hopper_w); }; @@ -129,20 +135,18 @@ static SCREEN_UPDATE_IND16( m14 ) } -static WRITE8_HANDLER( m14_vram_w ) +WRITE8_MEMBER(m14_state::m14_vram_w) { - m14_state *state = space->machine().driver_data<m14_state>(); - state->m_video_ram[offset] = data; - state->m_m14_tilemap->mark_tile_dirty(offset); + m_video_ram[offset] = data; + m_m14_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( m14_cram_w ) +WRITE8_MEMBER(m14_state::m14_cram_w) { - m14_state *state = space->machine().driver_data<m14_state>(); - state->m_color_ram[offset] = data; - state->m_m14_tilemap->mark_tile_dirty(offset); + m_color_ram[offset] = data; + m_m14_tilemap->mark_tile_dirty(offset); } /************************************* @@ -151,28 +155,27 @@ static WRITE8_HANDLER( m14_cram_w ) * *************************************/ -static READ8_HANDLER( m14_rng_r ) +READ8_MEMBER(m14_state::m14_rng_r) { /* graphic artifacts happens if this doesn't return random values. */ - return (space->machine().rand() & 0x0f) | 0xf0; /* | (input_port_read(space->machine(), "IN1") & 0x80)*/; + return (machine().rand() & 0x0f) | 0xf0; /* | (input_port_read(machine(), "IN1") & 0x80)*/; } /* Here routes the hopper & the inputs */ -static READ8_HANDLER( input_buttons_r ) +READ8_MEMBER(m14_state::input_buttons_r) { - m14_state *state = space->machine().driver_data<m14_state>(); - if (state->m_hop_mux) + if (m_hop_mux) { - state->m_hop_mux = 0; + m_hop_mux = 0; return 0; //0x43 status bits } else - return input_port_read(space->machine(), "IN0"); + return input_port_read(machine(), "IN0"); } #if 0 -static WRITE8_HANDLER( test_w ) +WRITE8_MEMBER(m14_state::test_w) { static UINT8 x[5]; @@ -182,13 +185,12 @@ static WRITE8_HANDLER( test_w ) } #endif -static WRITE8_HANDLER( hopper_w ) +WRITE8_MEMBER(m14_state::hopper_w) { - m14_state *state = space->machine().driver_data<m14_state>(); /* ---- x--- coin out */ /* ---- --x- hopper/input mux? */ - state->m_hop_mux = data & 2; + m_hop_mux = data & 2; //popmessage("%02x",data); } @@ -201,16 +203,16 @@ static WRITE8_HANDLER( hopper_w ) static ADDRESS_MAP_START( m14_map, AS_PROGRAM, 8, m14_state ) AM_RANGE(0x0000, 0x1fff) AM_ROM AM_RANGE(0x2000, 0x23ff) AM_RAM - AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE_LEGACY(m14_vram_w) AM_BASE(m_video_ram) - AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE_LEGACY(m14_cram_w) AM_BASE(m_color_ram) + AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(m14_vram_w) AM_BASE(m_video_ram) + AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE(m14_cram_w) AM_BASE(m_color_ram) ADDRESS_MAP_END static ADDRESS_MAP_START( m14_io_map, AS_IO, 8, m14_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0xf8, 0xf8) AM_READ_PORT("AN_PADDLE") AM_WRITENOP - AM_RANGE(0xf9, 0xf9) AM_READ_LEGACY(input_buttons_r) AM_WRITENOP - AM_RANGE(0xfa, 0xfa) AM_READ_LEGACY(m14_rng_r) AM_WRITENOP - AM_RANGE(0xfb, 0xfb) AM_READ_PORT("DSW") AM_WRITE_LEGACY(hopper_w) + AM_RANGE(0xf9, 0xf9) AM_READ(input_buttons_r) AM_WRITENOP + AM_RANGE(0xfa, 0xfa) AM_READ(m14_rng_r) AM_WRITENOP + AM_RANGE(0xfb, 0xfb) AM_READ_PORT("DSW") AM_WRITE(hopper_w) AM_RANGE(0xf8, 0xfc) AM_WRITENOP ADDRESS_MAP_END diff --git a/src/mame/drivers/m63.c b/src/mame/drivers/m63.c index df3b49506c1..7a23843d2d6 100644 --- a/src/mame/drivers/m63.c +++ b/src/mame/drivers/m63.c @@ -155,6 +155,22 @@ public: device_t *m_ay1; device_t *m_ay2; samples_device *m_samples; + DECLARE_WRITE8_MEMBER(m63_videoram_w); + DECLARE_WRITE8_MEMBER(m63_colorram_w); + DECLARE_WRITE8_MEMBER(m63_videoram2_w); + DECLARE_WRITE8_MEMBER(m63_palbank_w); + DECLARE_WRITE8_MEMBER(m63_flipscreen_w); + DECLARE_WRITE8_MEMBER(fghtbskt_flipscreen_w); + DECLARE_WRITE8_MEMBER(coin_w); + DECLARE_WRITE8_MEMBER(snd_irq_w); + DECLARE_WRITE8_MEMBER(snddata_w); + DECLARE_WRITE8_MEMBER(p1_w); + DECLARE_WRITE8_MEMBER(p2_w); + DECLARE_READ8_MEMBER(snd_status_r); + DECLARE_READ8_MEMBER(irq_r); + DECLARE_READ8_MEMBER(snddata_r); + DECLARE_WRITE8_MEMBER(fghtbskt_samples_w); + DECLARE_WRITE8_MEMBER(nmi_mask_w); }; @@ -213,56 +229,51 @@ static PALETTE_INIT( m63 ) } } -static WRITE8_HANDLER( m63_videoram_w ) +WRITE8_MEMBER(m63_state::m63_videoram_w) { - m63_state *state = space->machine().driver_data<m63_state>(); - state->m_videoram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_videoram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( m63_colorram_w ) +WRITE8_MEMBER(m63_state::m63_colorram_w) { - m63_state *state = space->machine().driver_data<m63_state>(); - state->m_colorram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_colorram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( m63_videoram2_w ) +WRITE8_MEMBER(m63_state::m63_videoram2_w) { - m63_state *state = space->machine().driver_data<m63_state>(); - state->m_videoram2[offset] = data; - state->m_fg_tilemap->mark_tile_dirty(offset); + m_videoram2[offset] = data; + m_fg_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( m63_palbank_w ) +WRITE8_MEMBER(m63_state::m63_palbank_w) { - m63_state *state = space->machine().driver_data<m63_state>(); - if (state->m_pal_bank != (data & 0x01)) + if (m_pal_bank != (data & 0x01)) { - state->m_pal_bank = data & 0x01; - state->m_bg_tilemap->mark_all_dirty(); + m_pal_bank = data & 0x01; + m_bg_tilemap->mark_all_dirty(); } } -static WRITE8_HANDLER( m63_flipscreen_w ) +WRITE8_MEMBER(m63_state::m63_flipscreen_w) { - if (flip_screen_get(space->machine()) != (~data & 0x01)) + if (flip_screen_get(machine()) != (~data & 0x01)) { - flip_screen_set(space->machine(), ~data & 0x01); - space->machine().tilemap().mark_all_dirty(); + flip_screen_set(machine(), ~data & 0x01); + machine().tilemap().mark_all_dirty(); } } -static WRITE8_HANDLER( fghtbskt_flipscreen_w ) +WRITE8_MEMBER(m63_state::fghtbskt_flipscreen_w) { - m63_state *state = space->machine().driver_data<m63_state>(); - flip_screen_set(space->machine(), data); - state->m_fg_flag = flip_screen_get(space->machine()) ? TILE_FLIPX : 0; + flip_screen_set(machine(), data); + m_fg_flag = flip_screen_get(machine()) ? TILE_FLIPX : 0; } @@ -354,93 +365,84 @@ static SCREEN_UPDATE_IND16( m63 ) } -static WRITE8_HANDLER( coin_w ) +WRITE8_MEMBER(m63_state::coin_w) { - coin_counter_w(space->machine(), offset, data & 0x01); + coin_counter_w(machine(), offset, data & 0x01); } -static WRITE8_HANDLER( snd_irq_w ) +WRITE8_MEMBER(m63_state::snd_irq_w) { - m63_state *state = space->machine().driver_data<m63_state>(); - device_set_input_line(state->m_soundcpu, 0, ASSERT_LINE); - space->machine().scheduler().synchronize(); + device_set_input_line(m_soundcpu, 0, ASSERT_LINE); + machine().scheduler().synchronize(); } -static WRITE8_HANDLER( snddata_w ) +WRITE8_MEMBER(m63_state::snddata_w) { - m63_state *state = space->machine().driver_data<m63_state>(); - - if ((state->m_p2 & 0xf0) == 0xe0) - ay8910_address_w(state->m_ay1, 0, offset); - else if ((state->m_p2 & 0xf0) == 0xa0) - ay8910_data_w(state->m_ay1, 0, offset); - else if (state->m_ay2 != NULL && (state->m_p1 & 0xe0) == 0x60) - ay8910_address_w(state->m_ay2, 0, offset); - else if (state->m_ay2 != NULL && (state->m_p1 & 0xe0) == 0x40) - ay8910_data_w(state->m_ay2, 0, offset); - else if ((state->m_p2 & 0xf0) == 0x70 ) - state->m_sound_status = offset; + + if ((m_p2 & 0xf0) == 0xe0) + ay8910_address_w(m_ay1, 0, offset); + else if ((m_p2 & 0xf0) == 0xa0) + ay8910_data_w(m_ay1, 0, offset); + else if (m_ay2 != NULL && (m_p1 & 0xe0) == 0x60) + ay8910_address_w(m_ay2, 0, offset); + else if (m_ay2 != NULL && (m_p1 & 0xe0) == 0x40) + ay8910_data_w(m_ay2, 0, offset); + else if ((m_p2 & 0xf0) == 0x70 ) + m_sound_status = offset; } -static WRITE8_HANDLER( p1_w ) +WRITE8_MEMBER(m63_state::p1_w) { - m63_state *state = space->machine().driver_data<m63_state>(); - state->m_p1 = data; + m_p1 = data; } -static WRITE8_HANDLER( p2_w ) +WRITE8_MEMBER(m63_state::p2_w) { - m63_state *state = space->machine().driver_data<m63_state>(); - state->m_p2 = data; - if((state->m_p2 & 0xf0) == 0x50) + m_p2 = data; + if((m_p2 & 0xf0) == 0x50) { - device_set_input_line(state->m_soundcpu, 0, CLEAR_LINE); + device_set_input_line(m_soundcpu, 0, CLEAR_LINE); } } -static READ8_HANDLER( snd_status_r ) +READ8_MEMBER(m63_state::snd_status_r) { - m63_state *state = space->machine().driver_data<m63_state>(); - return state->m_sound_status; + return m_sound_status; } -static READ8_HANDLER( irq_r ) +READ8_MEMBER(m63_state::irq_r) { - m63_state *state = space->machine().driver_data<m63_state>(); - if (state->m_sound_irq) + if (m_sound_irq) { - state->m_sound_irq = 0; + m_sound_irq = 0; return 1; } return 0; } -static READ8_HANDLER( snddata_r ) +READ8_MEMBER(m63_state::snddata_r) { - m63_state *state = space->machine().driver_data<m63_state>(); - switch (state->m_p2 & 0xf0) + switch (m_p2 & 0xf0) { case 0x60: return soundlatch_r(space, 0); ; - case 0x70: return space->machine().region("user1")->base()[((state->m_p1 & 0x1f) << 8) | offset]; + case 0x70: return machine().region("user1")->base()[((m_p1 & 0x1f) << 8) | offset]; } return 0xff; } -static WRITE8_HANDLER( fghtbskt_samples_w ) +WRITE8_MEMBER(m63_state::fghtbskt_samples_w) { - m63_state *state = space->machine().driver_data<m63_state>(); if (data & 1) - state->m_samples->start_raw(0, state->m_samplebuf + ((data & 0xf0) << 8), 0x2000, 8000); + m_samples->start_raw(0, m_samplebuf + ((data & 0xf0) << 8), 0x2000, 8000); } -static WRITE8_HANDLER( nmi_mask_w ) +WRITE8_MEMBER(m63_state::nmi_mask_w) { - m63_state *state = space->machine().driver_data<m63_state>(); - state->m_nmi_mask = data & 1; + m_nmi_mask = data & 1; } @@ -450,17 +452,17 @@ static ADDRESS_MAP_START( m63_map, AS_PROGRAM, 8, m63_state ) AM_RANGE(0xe000, 0xe1ff) AM_RAM AM_RANGE(0xe200, 0xe2ff) AM_RAM AM_BASE_SIZE(m_spriteram, m_spriteram_size) AM_RANGE(0xe300, 0xe3ff) AM_RAM AM_BASE(m_scrollram) - AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE_LEGACY(m63_videoram2_w) AM_BASE(m_videoram2) - AM_RANGE(0xe800, 0xebff) AM_RAM_WRITE_LEGACY(m63_videoram_w) AM_BASE(m_videoram) - AM_RANGE(0xec00, 0xefff) AM_RAM_WRITE_LEGACY(m63_colorram_w) AM_BASE(m_colorram) - AM_RANGE(0xf000, 0xf000) AM_WRITE_LEGACY(nmi_mask_w) - AM_RANGE(0xf002, 0xf002) AM_WRITE_LEGACY(m63_flipscreen_w) - AM_RANGE(0xf003, 0xf003) AM_WRITE_LEGACY(m63_palbank_w) - AM_RANGE(0xf006, 0xf007) AM_WRITE_LEGACY(coin_w) + AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE(m63_videoram2_w) AM_BASE(m_videoram2) + AM_RANGE(0xe800, 0xebff) AM_RAM_WRITE(m63_videoram_w) AM_BASE(m_videoram) + AM_RANGE(0xec00, 0xefff) AM_RAM_WRITE(m63_colorram_w) AM_BASE(m_colorram) + AM_RANGE(0xf000, 0xf000) AM_WRITE(nmi_mask_w) + AM_RANGE(0xf002, 0xf002) AM_WRITE(m63_flipscreen_w) + AM_RANGE(0xf003, 0xf003) AM_WRITE(m63_palbank_w) + AM_RANGE(0xf006, 0xf007) AM_WRITE(coin_w) AM_RANGE(0xf800, 0xf800) AM_READ_PORT("P1") AM_WRITE_LEGACY(soundlatch_w) AM_RANGE(0xf801, 0xf801) AM_READ_PORT("P2") AM_WRITENOP /* continues game when in stop mode (cleared by NMI handler) */ AM_RANGE(0xf802, 0xf802) AM_READ_PORT("DSW1") - AM_RANGE(0xf803, 0xf803) AM_WRITE_LEGACY(snd_irq_w) + AM_RANGE(0xf803, 0xf803) AM_WRITE(snd_irq_w) AM_RANGE(0xf806, 0xf806) AM_READ_PORT("DSW2") ADDRESS_MAP_END @@ -471,24 +473,24 @@ static ADDRESS_MAP_START( fghtbskt_map, AS_PROGRAM, 8, m63_state ) AM_RANGE(0xd000, 0xd1ff) AM_RAM AM_RANGE(0xd200, 0xd2ff) AM_RAM AM_BASE_SIZE(m_spriteram, m_spriteram_size) AM_RANGE(0xd300, 0xd3ff) AM_RAM AM_BASE(m_scrollram) - AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE_LEGACY(m63_videoram2_w) AM_BASE(m_videoram2) - AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE_LEGACY(m63_videoram_w) AM_BASE(m_videoram) - AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE_LEGACY(m63_colorram_w) AM_BASE(m_colorram) - AM_RANGE(0xf000, 0xf000) AM_READ_LEGACY(snd_status_r) + AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(m63_videoram2_w) AM_BASE(m_videoram2) + AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(m63_videoram_w) AM_BASE(m_videoram) + AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(m63_colorram_w) AM_BASE(m_colorram) + AM_RANGE(0xf000, 0xf000) AM_READ(snd_status_r) AM_RANGE(0xf001, 0xf001) AM_READ_PORT("P1") AM_RANGE(0xf002, 0xf002) AM_READ_PORT("P2") AM_RANGE(0xf003, 0xf003) AM_READ_PORT("DSW") - AM_RANGE(0xf000, 0xf000) AM_WRITE_LEGACY(snd_irq_w) + AM_RANGE(0xf000, 0xf000) AM_WRITE(snd_irq_w) AM_RANGE(0xf001, 0xf001) AM_WRITENOP AM_RANGE(0xf002, 0xf002) AM_WRITE_LEGACY(soundlatch_w) AM_RANGE(0xf800, 0xf800) AM_WRITENOP - AM_RANGE(0xf801, 0xf801) AM_WRITE_LEGACY(nmi_mask_w) - AM_RANGE(0xf802, 0xf802) AM_WRITE_LEGACY(fghtbskt_flipscreen_w) + AM_RANGE(0xf801, 0xf801) AM_WRITE(nmi_mask_w) + AM_RANGE(0xf802, 0xf802) AM_WRITE(fghtbskt_flipscreen_w) AM_RANGE(0xf803, 0xf803) AM_WRITENOP AM_RANGE(0xf804, 0xf804) AM_WRITENOP AM_RANGE(0xf805, 0xf805) AM_WRITENOP AM_RANGE(0xf806, 0xf806) AM_WRITENOP - AM_RANGE(0xf807, 0xf807) AM_WRITE_LEGACY(fghtbskt_samples_w) + AM_RANGE(0xf807, 0xf807) AM_WRITE(fghtbskt_samples_w) ADDRESS_MAP_END static ADDRESS_MAP_START( i8039_map, AS_PROGRAM, 8, m63_state ) @@ -497,10 +499,10 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( i8039_port_map, AS_IO, 8, m63_state ) - AM_RANGE(0x00, 0xff) AM_READWRITE_LEGACY(snddata_r, snddata_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE_LEGACY(p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE_LEGACY(p2_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ_LEGACY(irq_r) + AM_RANGE(0x00, 0xff) AM_READWRITE(snddata_r, snddata_w) + AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(p1_w) + AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(p2_w) + AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(irq_r) ADDRESS_MAP_END diff --git a/src/mame/drivers/m79amb.c b/src/mame/drivers/m79amb.c index 8fe82adf5d2..3850a42d40a 100644 --- a/src/mame/drivers/m79amb.c +++ b/src/mame/drivers/m79amb.c @@ -71,13 +71,16 @@ public: /* misc */ UINT8 m_lut_gun1[0x100]; UINT8 m_lut_gun2[0x100]; + DECLARE_WRITE8_MEMBER(ramtek_videoram_w); + DECLARE_READ8_MEMBER(gray5bit_controller0_r); + DECLARE_READ8_MEMBER(gray5bit_controller1_r); + DECLARE_WRITE8_MEMBER(m79amb_8002_w); }; -static WRITE8_HANDLER( ramtek_videoram_w ) +WRITE8_MEMBER(m79amb_state::ramtek_videoram_w) { - m79amb_state *state = space->machine().driver_data<m79amb_state>(); - state->m_videoram[offset] = data & ~*state->m_mask; + m_videoram[offset] = data & ~*m_mask; } static SCREEN_UPDATE_RGB32( ramtek ) @@ -107,25 +110,23 @@ static SCREEN_UPDATE_RGB32( ramtek ) } -static READ8_HANDLER( gray5bit_controller0_r ) +READ8_MEMBER(m79amb_state::gray5bit_controller0_r) { - m79amb_state *state = space->machine().driver_data<m79amb_state>(); - UINT8 port_data = input_port_read(space->machine(), "8004"); - UINT8 gun_pos = input_port_read(space->machine(), "GUN1"); + UINT8 port_data = input_port_read(machine(), "8004"); + UINT8 gun_pos = input_port_read(machine(), "GUN1"); - return (port_data & 0xe0) | state->m_lut_gun1[gun_pos]; + return (port_data & 0xe0) | m_lut_gun1[gun_pos]; } -static READ8_HANDLER( gray5bit_controller1_r ) +READ8_MEMBER(m79amb_state::gray5bit_controller1_r) { - m79amb_state *state = space->machine().driver_data<m79amb_state>(); - UINT8 port_data = input_port_read(space->machine(), "8005"); - UINT8 gun_pos = input_port_read(space->machine(), "GUN2"); + UINT8 port_data = input_port_read(machine(), "8005"); + UINT8 gun_pos = input_port_read(machine(), "GUN2"); - return (port_data & 0xe0) | state->m_lut_gun2[gun_pos]; + return (port_data & 0xe0) | m_lut_gun2[gun_pos]; } -static WRITE8_HANDLER( m79amb_8002_w ) +WRITE8_MEMBER(m79amb_state::m79amb_8002_w) { /* D1 may also be watchdog reset */ /* port goes to 0x7f to turn on explosion lamp */ @@ -134,14 +135,14 @@ static WRITE8_HANDLER( m79amb_8002_w ) static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, m79amb_state ) AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE_LEGACY(ramtek_videoram_w) AM_BASE(m_videoram) + AM_RANGE(0x4000, 0x5fff) AM_RAM_WRITE(ramtek_videoram_w) AM_BASE(m_videoram) AM_RANGE(0x6000, 0x63ff) AM_RAM /* ?? */ AM_RANGE(0x8000, 0x8000) AM_READ_PORT("8000") AM_DEVWRITE_LEGACY("discrete", m79amb_8000_w) AM_RANGE(0x8001, 0x8001) AM_WRITEONLY AM_BASE(m_mask) - AM_RANGE(0x8002, 0x8002) AM_READ_PORT("8002") AM_WRITE_LEGACY(m79amb_8002_w) + AM_RANGE(0x8002, 0x8002) AM_READ_PORT("8002") AM_WRITE(m79amb_8002_w) AM_RANGE(0x8003, 0x8003) AM_DEVWRITE_LEGACY("discrete", m79amb_8003_w) - AM_RANGE(0x8004, 0x8004) AM_READ_LEGACY(gray5bit_controller0_r) - AM_RANGE(0x8005, 0x8005) AM_READ_LEGACY(gray5bit_controller1_r) + AM_RANGE(0x8004, 0x8004) AM_READ(gray5bit_controller0_r) + AM_RANGE(0x8005, 0x8005) AM_READ(gray5bit_controller1_r) AM_RANGE(0xc000, 0xc07f) AM_RAM /* ?? */ AM_RANGE(0xc200, 0xc27f) AM_RAM /* ?? */ ADDRESS_MAP_END diff --git a/src/mame/drivers/macs.c b/src/mame/drivers/macs.c index d45ac41c8e8..1245111a8c5 100644 --- a/src/mame/drivers/macs.c +++ b/src/mame/drivers/macs.c @@ -71,6 +71,10 @@ public: UINT8 m_rev; UINT8 *m_ram1; UINT8 *m_ram2; + DECLARE_WRITE8_MEMBER(rambank_w); + DECLARE_READ8_MEMBER(macs_input_r); + DECLARE_WRITE8_MEMBER(macs_rom_bank_w); + DECLARE_WRITE8_MEMBER(macs_output_w); }; @@ -91,57 +95,54 @@ static ADDRESS_MAP_START( macs_mem, AS_PROGRAM, 8, macs_state ) AM_RANGE(0xf800, 0xffff) AM_RAMBANK("bank2") /* common /backup ram ?*/ ADDRESS_MAP_END -static WRITE8_HANDLER(rambank_w) +WRITE8_MEMBER(macs_state::rambank_w) { - macs_state *state = space->machine().driver_data<macs_state>(); - memory_set_bankptr(space->machine(), "bank3", &state->m_ram1[0x10000+(data&1)*0x800] ); + memory_set_bankptr(machine(), "bank3", &m_ram1[0x10000+(data&1)*0x800] ); } -static READ8_HANDLER( macs_input_r ) +READ8_MEMBER(macs_state::macs_input_r) { - macs_state *state = space->machine().driver_data<macs_state>(); switch(offset) { case 0: { /*It's bit-wise*/ - switch(state->m_mux_data&0x0f) + switch(m_mux_data&0x0f) { - case 0x00: return input_port_read(space->machine(), "IN0"); - case 0x01: return input_port_read(space->machine(), "IN1"); - case 0x02: return input_port_read(space->machine(), "IN2"); - case 0x04: return input_port_read(space->machine(), "IN3"); - case 0x08: return input_port_read(space->machine(), "IN4"); + case 0x00: return input_port_read(machine(), "IN0"); + case 0x01: return input_port_read(machine(), "IN1"); + case 0x02: return input_port_read(machine(), "IN2"); + case 0x04: return input_port_read(machine(), "IN3"); + case 0x08: return input_port_read(machine(), "IN4"); default: - logerror("Unmapped mahjong panel mux data %02x\n",state->m_mux_data); + logerror("Unmapped mahjong panel mux data %02x\n",m_mux_data); return 0xff; } } - case 1: return input_port_read(space->machine(), "SYS0"); - case 2: return input_port_read(space->machine(), "DSW0"); - case 3: return input_port_read(space->machine(), "DSW1"); - case 4: return input_port_read(space->machine(), "DSW2"); - case 5: return input_port_read(space->machine(), "DSW3"); - case 6: return input_port_read(space->machine(), "DSW4"); - case 7: return input_port_read(space->machine(), "SYS1"); - default: popmessage("Unmapped I/O read at PC = %06x offset = %02x",cpu_get_pc(&space->device()),offset+0xc0); + case 1: return input_port_read(machine(), "SYS0"); + case 2: return input_port_read(machine(), "DSW0"); + case 3: return input_port_read(machine(), "DSW1"); + case 4: return input_port_read(machine(), "DSW2"); + case 5: return input_port_read(machine(), "DSW3"); + case 6: return input_port_read(machine(), "DSW4"); + case 7: return input_port_read(machine(), "SYS1"); + default: popmessage("Unmapped I/O read at PC = %06x offset = %02x",cpu_get_pc(&space.device()),offset+0xc0); } return 0xff; } -static WRITE8_HANDLER( macs_rom_bank_w ) +WRITE8_MEMBER(macs_state::macs_rom_bank_w) { - memory_set_bankptr(space->machine(), "bank1", space->machine().region("maincpu")->base() + (data* 0x4000) + 0x10000 + macs_cart_slot*0x400000 ); + memory_set_bankptr(machine(), "bank1", machine().region("maincpu")->base() + (data* 0x4000) + 0x10000 + macs_cart_slot*0x400000 ); st0016_rom_bank=data; } -static WRITE8_HANDLER( macs_output_w ) +WRITE8_MEMBER(macs_state::macs_output_w) { - macs_state *state = space->machine().driver_data<macs_state>(); - UINT8 *ROM = space->machine().region("maincpu")->base(); + UINT8 *ROM = machine().region("maincpu")->base(); switch(offset) { @@ -152,20 +153,20 @@ static WRITE8_HANDLER( macs_output_w ) ---- --x- Cassette A slot */ - if(state->m_rev == 1) + if(m_rev == 1) { /* FIXME: dunno if this RAM bank is right, DASM tracking made on the POST screens indicates that there's just one RAM bank, but then MACS2 games locks up. */ - memory_set_bankptr(space->machine(), "bank3", &state->m_ram1[((data&0x20)>>5)*0x1000+0x000] ); + memory_set_bankptr(machine(), "bank3", &m_ram1[((data&0x20)>>5)*0x1000+0x000] ); macs_cart_slot = (data & 0xc) >> 2; - memory_set_bankptr(space->machine(), "bank4", &ROM[macs_cart_slot*0x400000+0x10000] ); + memory_set_bankptr(machine(), "bank4", &ROM[macs_cart_slot*0x400000+0x10000] ); } - memory_set_bankptr(space->machine(), "bank2", &state->m_ram1[((data&0x20)>>5)*0x1000+0x800] ); + memory_set_bankptr(machine(), "bank2", &m_ram1[((data&0x20)>>5)*0x1000+0x800] ); break; - case 2: state->m_mux_data = data; break; + case 2: m_mux_data = data; break; } } @@ -173,13 +174,13 @@ static WRITE8_HANDLER( macs_output_w ) static ADDRESS_MAP_START( macs_io, AS_IO, 8, macs_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0xbf) AM_READ_LEGACY(st0016_vregs_r) AM_WRITE_LEGACY(st0016_vregs_w) /* video/crt regs ? */ - AM_RANGE(0xc0, 0xc7) AM_READWRITE_LEGACY(macs_input_r,macs_output_w) + AM_RANGE(0xc0, 0xc7) AM_READWRITE(macs_input_r,macs_output_w) AM_RANGE(0xe0, 0xe0) AM_WRITENOP /* renju = $40, neratte = 0 */ - AM_RANGE(0xe1, 0xe1) AM_WRITE_LEGACY(macs_rom_bank_w) + AM_RANGE(0xe1, 0xe1) AM_WRITE(macs_rom_bank_w) AM_RANGE(0xe2, 0xe2) AM_WRITE_LEGACY(st0016_sprite_bank_w) AM_RANGE(0xe3, 0xe4) AM_WRITE_LEGACY(st0016_character_bank_w) AM_RANGE(0xe5, 0xe5) AM_WRITE_LEGACY(st0016_palette_bank_w) - AM_RANGE(0xe6, 0xe6) AM_WRITE_LEGACY(rambank_w) /* banking ? ram bank ? shared rambank ? */ + AM_RANGE(0xe6, 0xe6) AM_WRITE(rambank_w) /* banking ? ram bank ? shared rambank ? */ AM_RANGE(0xe7, 0xe7) AM_WRITENOP /* watchdog */ AM_RANGE(0xf0, 0xf0) AM_READ_LEGACY(st0016_dma_r) ADDRESS_MAP_END diff --git a/src/mame/drivers/magic10.c b/src/mame/drivers/magic10.c index 14af200215b..057bdbae98a 100644 --- a/src/mame/drivers/magic10.c +++ b/src/mame/drivers/magic10.c @@ -100,6 +100,14 @@ public: int m_layer2_offset[2]; UINT16 *m_vregs; UINT16 m_magic102_ret; + DECLARE_WRITE16_MEMBER(layer0_videoram_w); + DECLARE_WRITE16_MEMBER(layer1_videoram_w); + DECLARE_WRITE16_MEMBER(layer2_videoram_w); + DECLARE_WRITE16_MEMBER(paletteram_w); + DECLARE_READ16_MEMBER(magic102_r); + DECLARE_READ16_MEMBER(hotslot_copro_r); + DECLARE_WRITE16_MEMBER(hotslot_copro_w); + DECLARE_WRITE16_MEMBER(magic10_out_w); }; @@ -107,31 +115,28 @@ public: * Video Hardware * ***************************/ -static WRITE16_HANDLER( layer0_videoram_w ) +WRITE16_MEMBER(magic10_state::layer0_videoram_w) { - magic10_state *state = space->machine().driver_data<magic10_state>(); - COMBINE_DATA(&state->m_layer0_videoram[offset]); - state->m_layer0_tilemap->mark_tile_dirty(offset >> 1); + COMBINE_DATA(&m_layer0_videoram[offset]); + m_layer0_tilemap->mark_tile_dirty(offset >> 1); } -static WRITE16_HANDLER( layer1_videoram_w ) +WRITE16_MEMBER(magic10_state::layer1_videoram_w) { - magic10_state *state = space->machine().driver_data<magic10_state>(); - COMBINE_DATA(&state->m_layer1_videoram[offset]); - state->m_layer1_tilemap->mark_tile_dirty(offset >> 1); + COMBINE_DATA(&m_layer1_videoram[offset]); + m_layer1_tilemap->mark_tile_dirty(offset >> 1); } -static WRITE16_HANDLER( layer2_videoram_w ) +WRITE16_MEMBER(magic10_state::layer2_videoram_w) { - magic10_state *state = space->machine().driver_data<magic10_state>(); - COMBINE_DATA(&state->m_layer2_videoram[offset]); - state->m_layer2_tilemap->mark_tile_dirty(offset >> 1); + COMBINE_DATA(&m_layer2_videoram[offset]); + m_layer2_tilemap->mark_tile_dirty(offset >> 1); } -static WRITE16_HANDLER( paletteram_w ) +WRITE16_MEMBER(magic10_state::paletteram_w) { - data = COMBINE_DATA(&space->machine().generic.paletteram.u16[offset]); - palette_set_color_rgb( space->machine(), offset, pal4bit(data >> 4), pal4bit(data >> 0), pal4bit(data >> 8)); + data = COMBINE_DATA(&machine().generic.paletteram.u16[offset]); + palette_set_color_rgb( machine(), offset, pal4bit(data >> 4), pal4bit(data >> 0), pal4bit(data >> 8)); } @@ -209,24 +214,23 @@ static SCREEN_UPDATE_IND16( magic10 ) * R/W Handlers * ***************************/ -static READ16_HANDLER( magic102_r ) +READ16_MEMBER(magic10_state::magic102_r) { - magic10_state *state = space->machine().driver_data<magic10_state>(); - state->m_magic102_ret ^= 0x20; - return state->m_magic102_ret; + m_magic102_ret ^= 0x20; + return m_magic102_ret; } -static READ16_HANDLER( hotslot_copro_r ) +READ16_MEMBER(magic10_state::hotslot_copro_r) { return 0x80; } -static WRITE16_HANDLER( hotslot_copro_w ) +WRITE16_MEMBER(magic10_state::hotslot_copro_w) { logerror("Writing to copro: %d \n", data); } -static WRITE16_HANDLER( magic10_out_w ) +WRITE16_MEMBER(magic10_state::magic10_out_w) { /* ---------------------------------------------- @@ -275,7 +279,7 @@ static WRITE16_HANDLER( magic10_out_w ) output_set_lamp_value(7, (data >> 6) & 1); /* Lamp 7 - PLAY (BET/TAKE/CANCEL) */ output_set_lamp_value(8, (data >> 8) & 1); /* Lamp 8 - PAYOUT/SUPERGAME */ - coin_counter_w(space->machine(), 0, data & 0x400); + coin_counter_w(machine(), 0, data & 0x400); } /*************************** @@ -284,14 +288,14 @@ static WRITE16_HANDLER( magic10_out_w ) static ADDRESS_MAP_START( magic10_map, AS_PROGRAM, 16, magic10_state ) AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE_LEGACY(layer1_videoram_w) AM_BASE(m_layer1_videoram) - AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE_LEGACY(layer0_videoram_w) AM_BASE(m_layer0_videoram) - AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE_LEGACY(layer2_videoram_w) AM_BASE(m_layer2_videoram) + AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(layer1_videoram_w) AM_BASE(m_layer1_videoram) + AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(layer0_videoram_w) AM_BASE(m_layer0_videoram) + AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(layer2_videoram_w) AM_BASE(m_layer2_videoram) AM_RANGE(0x200000, 0x2007ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x300000, 0x3001ff) AM_RAM_WRITE_LEGACY(paletteram_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x300000, 0x3001ff) AM_RAM_WRITE(paletteram_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x400000, 0x400001) AM_READ_PORT("INPUTS") AM_RANGE(0x400002, 0x400003) AM_READ_PORT("DSW") - AM_RANGE(0x400008, 0x400009) AM_WRITE_LEGACY(magic10_out_w) + AM_RANGE(0x400008, 0x400009) AM_WRITE(magic10_out_w) AM_RANGE(0x40000a, 0x40000b) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) AM_RANGE(0x40000e, 0x40000f) AM_WRITENOP AM_RANGE(0x400080, 0x400087) AM_RAM AM_BASE(m_vregs) @@ -300,14 +304,14 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( magic10a_map, AS_PROGRAM, 16, magic10_state ) AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE_LEGACY(layer1_videoram_w) AM_BASE(m_layer1_videoram) - AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE_LEGACY(layer0_videoram_w) AM_BASE(m_layer0_videoram) - AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE_LEGACY(layer2_videoram_w) AM_BASE(m_layer2_videoram) + AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(layer1_videoram_w) AM_BASE(m_layer1_videoram) + AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(layer0_videoram_w) AM_BASE(m_layer0_videoram) + AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(layer2_videoram_w) AM_BASE(m_layer2_videoram) AM_RANGE(0x200000, 0x2007ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x300000, 0x3001ff) AM_RAM_WRITE_LEGACY(paletteram_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x300000, 0x3001ff) AM_RAM_WRITE(paletteram_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x500000, 0x500001) AM_READ_PORT("INPUTS") AM_RANGE(0x500002, 0x500003) AM_READ_PORT("DSW") - AM_RANGE(0x500008, 0x500009) AM_WRITE_LEGACY(magic10_out_w) + AM_RANGE(0x500008, 0x500009) AM_WRITE(magic10_out_w) AM_RANGE(0x50000a, 0x50000b) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) AM_RANGE(0x50000e, 0x50000f) AM_WRITENOP AM_RANGE(0x500080, 0x500087) AM_RAM AM_BASE(m_vregs) // video registers? @@ -316,12 +320,12 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( magic102_map, AS_PROGRAM, 16, magic10_state ) AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE_LEGACY(layer1_videoram_w) AM_BASE(m_layer1_videoram) - AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE_LEGACY(layer0_videoram_w) AM_BASE(m_layer0_videoram) - AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE_LEGACY(layer2_videoram_w) AM_BASE(m_layer2_videoram) + AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(layer1_videoram_w) AM_BASE(m_layer1_videoram) + AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(layer0_videoram_w) AM_BASE(m_layer0_videoram) + AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(layer2_videoram_w) AM_BASE(m_layer2_videoram) AM_RANGE(0x200000, 0x2007ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x400000, 0x4001ff) AM_RAM_WRITE_LEGACY(paletteram_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x500000, 0x500001) AM_READ_LEGACY(magic102_r) + AM_RANGE(0x400000, 0x4001ff) AM_RAM_WRITE(paletteram_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x500000, 0x500001) AM_READ(magic102_r) AM_RANGE(0x500004, 0x500005) AM_READNOP // gives credits AM_RANGE(0x500006, 0x500007) AM_READNOP // gives credits AM_RANGE(0x50001a, 0x50001b) AM_READ_PORT("IN0") @@ -335,12 +339,12 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( hotslot_map, AS_PROGRAM, 16, magic10_state ) AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE_LEGACY(layer1_videoram_w) AM_BASE(m_layer1_videoram) - AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE_LEGACY(layer0_videoram_w) AM_BASE(m_layer0_videoram) - AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE_LEGACY(layer2_videoram_w) AM_BASE(m_layer2_videoram) + AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(layer1_videoram_w) AM_BASE(m_layer1_videoram) + AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(layer0_videoram_w) AM_BASE(m_layer0_videoram) + AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(layer2_videoram_w) AM_BASE(m_layer2_videoram) AM_RANGE(0x200000, 0x2007ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x400000, 0x4001ff) AM_RAM_WRITE_LEGACY(paletteram_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x500004, 0x500005) AM_READWRITE_LEGACY(hotslot_copro_r, hotslot_copro_w) // copro comm + AM_RANGE(0x400000, 0x4001ff) AM_RAM_WRITE(paletteram_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x500004, 0x500005) AM_READWRITE(hotslot_copro_r, hotslot_copro_w) // copro comm AM_RANGE(0x500006, 0x500011) AM_RAM AM_RANGE(0x500012, 0x500013) AM_READ_PORT("IN0") AM_RANGE(0x500014, 0x500015) AM_READ_PORT("IN1") @@ -354,13 +358,13 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( sgsafari_map, AS_PROGRAM, 16, magic10_state ) AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE_LEGACY(layer1_videoram_w) AM_BASE(m_layer1_videoram) - AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE_LEGACY(layer0_videoram_w) AM_BASE(m_layer0_videoram) - AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE_LEGACY(layer2_videoram_w) AM_BASE(m_layer2_videoram) + AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(layer1_videoram_w) AM_BASE(m_layer1_videoram) + AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(layer0_videoram_w) AM_BASE(m_layer0_videoram) + AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(layer2_videoram_w) AM_BASE(m_layer2_videoram) AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x300000, 0x3001ff) AM_RAM_WRITE_LEGACY(paletteram_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x300000, 0x3001ff) AM_RAM_WRITE(paletteram_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x500002, 0x500003) AM_READ_PORT("DSW1") - AM_RANGE(0x500008, 0x500009) AM_WRITE_LEGACY(magic10_out_w) + AM_RANGE(0x500008, 0x500009) AM_WRITE(magic10_out_w) AM_RANGE(0x50000a, 0x50000b) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) AM_RANGE(0x50000e, 0x50000f) AM_READ_PORT("IN0") AM_RANGE(0x500080, 0x500087) AM_RAM AM_BASE(m_vregs) // video registers? diff --git a/src/mame/drivers/magicard.c b/src/mame/drivers/magicard.c index a844e16d31f..c821681999b 100644 --- a/src/mame/drivers/magicard.c +++ b/src/mame/drivers/magicard.c @@ -184,6 +184,26 @@ public: UINT16 *m_scc68070_dma_ch2_regs; UINT16 *m_scc68070_mmu_regs; struct { int r,g,b,offs,offs_internal; } m_pal; + DECLARE_READ16_MEMBER(test_r); + DECLARE_WRITE16_MEMBER(paletteram_io_w); + DECLARE_READ16_MEMBER(philips_66470_r); + DECLARE_WRITE16_MEMBER(philips_66470_w); + DECLARE_READ16_MEMBER(scc68070_ext_irqc_r); + DECLARE_WRITE16_MEMBER(scc68070_ext_irqc_w); + DECLARE_READ16_MEMBER(scc68070_iic_r); + DECLARE_WRITE16_MEMBER(scc68070_iic_w); + DECLARE_READ16_MEMBER(scc68070_uart_r); + DECLARE_WRITE16_MEMBER(scc68070_uart_w); + DECLARE_READ16_MEMBER(scc68070_timer_r); + DECLARE_WRITE16_MEMBER(scc68070_timer_w); + DECLARE_READ16_MEMBER(scc68070_int_irqc_r); + DECLARE_WRITE16_MEMBER(scc68070_int_irqc_w); + DECLARE_READ16_MEMBER(scc68070_dma_ch1_r); + DECLARE_WRITE16_MEMBER(scc68070_dma_ch1_w); + DECLARE_READ16_MEMBER(scc68070_dma_ch2_r); + DECLARE_WRITE16_MEMBER(scc68070_dma_ch2_w); + DECLARE_READ16_MEMBER(scc68070_mmu_r); + DECLARE_WRITE16_MEMBER(scc68070_mmu_w); }; @@ -455,38 +475,37 @@ static SCREEN_UPDATE_RGB32(magicard) * R/W Handlers * *************************/ -static READ16_HANDLER( test_r ) +READ16_MEMBER(magicard_state::test_r) { - return space->machine().rand(); + return machine().rand(); } -static WRITE16_HANDLER( paletteram_io_w ) +WRITE16_MEMBER(magicard_state::paletteram_io_w) { - magicard_state *state = space->machine().driver_data<magicard_state>(); switch(offset*2) { case 0: - state->m_pal.offs = data; - state->m_pal.offs_internal = 0; + m_pal.offs = data; + m_pal.offs_internal = 0; break; case 4: break; case 2: - switch(state->m_pal.offs_internal) + switch(m_pal.offs_internal) { case 0: - state->m_pal.r = ((data & 0x3f) << 2) | ((data & 0x30) >> 4); - state->m_pal.offs_internal++; + m_pal.r = ((data & 0x3f) << 2) | ((data & 0x30) >> 4); + m_pal.offs_internal++; break; case 1: - state->m_pal.g = ((data & 0x3f) << 2) | ((data & 0x30) >> 4); - state->m_pal.offs_internal++; + m_pal.g = ((data & 0x3f) << 2) | ((data & 0x30) >> 4); + m_pal.offs_internal++; break; case 2: - state->m_pal.b = ((data & 0x3f) << 2) | ((data & 0x30) >> 4); - palette_set_color(space->machine(), state->m_pal.offs, MAKE_RGB(state->m_pal.r, state->m_pal.g, state->m_pal.b)); - state->m_pal.offs_internal = 0; - state->m_pal.offs++; + m_pal.b = ((data & 0x3f) << 2) | ((data & 0x30) >> 4); + palette_set_color(machine(), m_pal.offs, MAKE_RGB(m_pal.r, m_pal.g, m_pal.b)); + m_pal.offs_internal = 0; + m_pal.offs++; break; } @@ -494,143 +513,125 @@ static WRITE16_HANDLER( paletteram_io_w ) } } -static READ16_HANDLER( philips_66470_r ) +READ16_MEMBER(magicard_state::philips_66470_r) { - magicard_state *state = space->machine().driver_data<magicard_state>(); switch(offset) { // case 0/2: -// return space->machine().rand(); //TODO +// return machine().rand(); //TODO } //printf("[%04x]\n",offset*2); - return state->m_pcab_vregs[offset]; + return m_pcab_vregs[offset]; } -static WRITE16_HANDLER( philips_66470_w ) +WRITE16_MEMBER(magicard_state::philips_66470_w) { - magicard_state *state = space->machine().driver_data<magicard_state>(); - COMBINE_DATA(&state->m_pcab_vregs[offset]); + COMBINE_DATA(&m_pcab_vregs[offset]); // if(offset == 0x10/2) // { - //printf("%04x %04x %04x\n",data,state->m_pcab_vregs[0x12/2],state->m_pcab_vregs[0x14/2]); - //state->m_pcab_vregs[0x12/2] = state->m_pcab_vregs[0x10/2]; + //printf("%04x %04x %04x\n",data,m_pcab_vregs[0x12/2],m_pcab_vregs[0x14/2]); + //m_pcab_vregs[0x12/2] = m_pcab_vregs[0x10/2]; // } } /* scc68070 specific stuff (to be moved) */ -static READ16_HANDLER( scc68070_ext_irqc_r ) +READ16_MEMBER(magicard_state::scc68070_ext_irqc_r) { - magicard_state *state = space->machine().driver_data<magicard_state>(); - return state->m_scc68070_ext_irqc_regs[offset]; + return m_scc68070_ext_irqc_regs[offset]; } -static WRITE16_HANDLER( scc68070_ext_irqc_w ) +WRITE16_MEMBER(magicard_state::scc68070_ext_irqc_w) { - magicard_state *state = space->machine().driver_data<magicard_state>(); - state->m_scc68070_ext_irqc_regs[offset] = data; + m_scc68070_ext_irqc_regs[offset] = data; } -static READ16_HANDLER( scc68070_iic_r ) +READ16_MEMBER(magicard_state::scc68070_iic_r) { - magicard_state *state = space->machine().driver_data<magicard_state>(); //printf("%04x\n",offset*2); switch(offset) { - case 0x04/2: return state->m_scc68070_iic_regs[offset] & 0xef; //iic status register, bit 4 = pending irq + case 0x04/2: return m_scc68070_iic_regs[offset] & 0xef; //iic status register, bit 4 = pending irq } - return state->m_scc68070_iic_regs[offset]; + return m_scc68070_iic_regs[offset]; } -static WRITE16_HANDLER( scc68070_iic_w ) +WRITE16_MEMBER(magicard_state::scc68070_iic_w) { - magicard_state *state = space->machine().driver_data<magicard_state>(); - state->m_scc68070_iic_regs[offset] = data; + m_scc68070_iic_regs[offset] = data; } -static READ16_HANDLER( scc68070_uart_r ) +READ16_MEMBER(magicard_state::scc68070_uart_r) { - magicard_state *state = space->machine().driver_data<magicard_state>(); //printf("%02x\n",offset*2); switch(offset) { - case 0x02/2: return space->machine().rand(); //uart mode register + case 0x02/2: return machine().rand(); //uart mode register } - return state->m_scc68070_uart_regs[offset]; + return m_scc68070_uart_regs[offset]; } -static WRITE16_HANDLER( scc68070_uart_w ) +WRITE16_MEMBER(magicard_state::scc68070_uart_w) { - magicard_state *state = space->machine().driver_data<magicard_state>(); - state->m_scc68070_uart_regs[offset] = data; + m_scc68070_uart_regs[offset] = data; } -static READ16_HANDLER( scc68070_timer_r ) +READ16_MEMBER(magicard_state::scc68070_timer_r) { - magicard_state *state = space->machine().driver_data<magicard_state>(); - return state->m_scc68070_timer_regs[offset]; + return m_scc68070_timer_regs[offset]; } -static WRITE16_HANDLER( scc68070_timer_w ) +WRITE16_MEMBER(magicard_state::scc68070_timer_w) { - magicard_state *state = space->machine().driver_data<magicard_state>(); - state->m_scc68070_timer_regs[offset] = data; + m_scc68070_timer_regs[offset] = data; } -static READ16_HANDLER( scc68070_int_irqc_r ) +READ16_MEMBER(magicard_state::scc68070_int_irqc_r) { - magicard_state *state = space->machine().driver_data<magicard_state>(); - return state->m_scc68070_int_irqc_regs[offset]; + return m_scc68070_int_irqc_regs[offset]; } -static WRITE16_HANDLER( scc68070_int_irqc_w ) +WRITE16_MEMBER(magicard_state::scc68070_int_irqc_w) { - magicard_state *state = space->machine().driver_data<magicard_state>(); - state->m_scc68070_int_irqc_regs[offset] = data; + m_scc68070_int_irqc_regs[offset] = data; } -static READ16_HANDLER( scc68070_dma_ch1_r ) +READ16_MEMBER(magicard_state::scc68070_dma_ch1_r) { - magicard_state *state = space->machine().driver_data<magicard_state>(); - return state->m_scc68070_dma_ch1_regs[offset]; + return m_scc68070_dma_ch1_regs[offset]; } -static WRITE16_HANDLER( scc68070_dma_ch1_w ) +WRITE16_MEMBER(magicard_state::scc68070_dma_ch1_w) { - magicard_state *state = space->machine().driver_data<magicard_state>(); - state->m_scc68070_dma_ch1_regs[offset] = data; + m_scc68070_dma_ch1_regs[offset] = data; } -static READ16_HANDLER( scc68070_dma_ch2_r ) +READ16_MEMBER(magicard_state::scc68070_dma_ch2_r) { - magicard_state *state = space->machine().driver_data<magicard_state>(); - return state->m_scc68070_dma_ch2_regs[offset]; + return m_scc68070_dma_ch2_regs[offset]; } -static WRITE16_HANDLER( scc68070_dma_ch2_w ) +WRITE16_MEMBER(magicard_state::scc68070_dma_ch2_w) { - magicard_state *state = space->machine().driver_data<magicard_state>(); - state->m_scc68070_dma_ch2_regs[offset] = data; + m_scc68070_dma_ch2_regs[offset] = data; } -static READ16_HANDLER( scc68070_mmu_r ) +READ16_MEMBER(magicard_state::scc68070_mmu_r) { - magicard_state *state = space->machine().driver_data<magicard_state>(); - return state->m_scc68070_mmu_regs[offset]; + return m_scc68070_mmu_regs[offset]; } -static WRITE16_HANDLER( scc68070_mmu_w ) +WRITE16_MEMBER(magicard_state::scc68070_mmu_w) { - magicard_state *state = space->machine().driver_data<magicard_state>(); - state->m_scc68070_mmu_regs[offset] = data; + m_scc68070_mmu_regs[offset] = data; switch(offset) { @@ -651,23 +652,23 @@ static ADDRESS_MAP_START( magicard_mem, AS_PROGRAM, 16, magicard_state ) AM_RANGE(0x00000000, 0x0017ffff) AM_MIRROR(0x7fe00000) AM_RAM AM_BASE(m_magicram) /*only 0-7ffff accessed in Magic Card*/ AM_RANGE(0x00180000, 0x001ffbff) AM_MIRROR(0x7fe00000) AM_RAM AM_REGION("maincpu", 0) /* 001ffc00-001ffdff System I/O */ - AM_RANGE(0x001ffc00, 0x001ffc01) AM_MIRROR(0x7fe00000) AM_READ_LEGACY(test_r) - AM_RANGE(0x001ffc40, 0x001ffc41) AM_MIRROR(0x7fe00000) AM_READ_LEGACY(test_r) - AM_RANGE(0x001ffd00, 0x001ffd05) AM_MIRROR(0x7fe00000) AM_WRITE_LEGACY(paletteram_io_w) //RAMDAC + AM_RANGE(0x001ffc00, 0x001ffc01) AM_MIRROR(0x7fe00000) AM_READ(test_r) + AM_RANGE(0x001ffc40, 0x001ffc41) AM_MIRROR(0x7fe00000) AM_READ(test_r) + AM_RANGE(0x001ffd00, 0x001ffd05) AM_MIRROR(0x7fe00000) AM_WRITE(paletteram_io_w) //RAMDAC /*not the right sound chip,unknown type,it should be an ADPCM with 8 channels.*/ AM_RANGE(0x001ffd40, 0x001ffd43) AM_MIRROR(0x7fe00000) AM_DEVWRITE8_LEGACY("ymsnd", ym2413_w, 0x00ff) - AM_RANGE(0x001ffd80, 0x001ffd81) AM_MIRROR(0x7fe00000) AM_READ_LEGACY(test_r) + AM_RANGE(0x001ffd80, 0x001ffd81) AM_MIRROR(0x7fe00000) AM_READ(test_r) AM_RANGE(0x001ffd80, 0x001ffd81) AM_MIRROR(0x7fe00000) AM_WRITENOP //? AM_RANGE(0x001fff80, 0x001fffbf) AM_MIRROR(0x7fe00000) AM_RAM //DRAM I/O, not accessed by this game, CD buffer? - AM_RANGE(0x001fffe0, 0x001fffff) AM_MIRROR(0x7fe00000) AM_READWRITE_LEGACY(philips_66470_r,philips_66470_w) AM_BASE(m_pcab_vregs) //video registers - AM_RANGE(0x80001000, 0x8000100f) AM_READWRITE_LEGACY(scc68070_ext_irqc_r,scc68070_ext_irqc_w) AM_BASE(m_scc68070_ext_irqc_regs) //lir - AM_RANGE(0x80002000, 0x8000200f) AM_READWRITE_LEGACY(scc68070_iic_r,scc68070_iic_w) AM_BASE(m_scc68070_iic_regs) //i2c - AM_RANGE(0x80002010, 0x8000201f) AM_READWRITE_LEGACY(scc68070_uart_r,scc68070_uart_w) AM_BASE(m_scc68070_uart_regs) - AM_RANGE(0x80002020, 0x8000202f) AM_READWRITE_LEGACY(scc68070_timer_r,scc68070_timer_w) AM_BASE(m_scc68070_timer_regs) - AM_RANGE(0x80002040, 0x8000204f) AM_READWRITE_LEGACY(scc68070_int_irqc_r,scc68070_int_irqc_w) AM_BASE(m_scc68070_int_irqc_regs) - AM_RANGE(0x80004000, 0x8000403f) AM_READWRITE_LEGACY(scc68070_dma_ch1_r,scc68070_dma_ch1_w) AM_BASE(m_scc68070_dma_ch1_regs) - AM_RANGE(0x80004040, 0x8000407f) AM_READWRITE_LEGACY(scc68070_dma_ch2_r,scc68070_dma_ch2_w) AM_BASE(m_scc68070_dma_ch2_regs) - AM_RANGE(0x80008000, 0x8000807f) AM_READWRITE_LEGACY(scc68070_mmu_r,scc68070_mmu_w) AM_BASE(m_scc68070_mmu_regs) + AM_RANGE(0x001fffe0, 0x001fffff) AM_MIRROR(0x7fe00000) AM_READWRITE(philips_66470_r,philips_66470_w) AM_BASE(m_pcab_vregs) //video registers + AM_RANGE(0x80001000, 0x8000100f) AM_READWRITE(scc68070_ext_irqc_r,scc68070_ext_irqc_w) AM_BASE(m_scc68070_ext_irqc_regs) //lir + AM_RANGE(0x80002000, 0x8000200f) AM_READWRITE(scc68070_iic_r,scc68070_iic_w) AM_BASE(m_scc68070_iic_regs) //i2c + AM_RANGE(0x80002010, 0x8000201f) AM_READWRITE(scc68070_uart_r,scc68070_uart_w) AM_BASE(m_scc68070_uart_regs) + AM_RANGE(0x80002020, 0x8000202f) AM_READWRITE(scc68070_timer_r,scc68070_timer_w) AM_BASE(m_scc68070_timer_regs) + AM_RANGE(0x80002040, 0x8000204f) AM_READWRITE(scc68070_int_irqc_r,scc68070_int_irqc_w) AM_BASE(m_scc68070_int_irqc_regs) + AM_RANGE(0x80004000, 0x8000403f) AM_READWRITE(scc68070_dma_ch1_r,scc68070_dma_ch1_w) AM_BASE(m_scc68070_dma_ch1_regs) + AM_RANGE(0x80004040, 0x8000407f) AM_READWRITE(scc68070_dma_ch2_r,scc68070_dma_ch2_w) AM_BASE(m_scc68070_dma_ch2_regs) + AM_RANGE(0x80008000, 0x8000807f) AM_READWRITE(scc68070_mmu_r,scc68070_mmu_w) AM_BASE(m_scc68070_mmu_regs) ADDRESS_MAP_END diff --git a/src/mame/drivers/magicfly.c b/src/mame/drivers/magicfly.c index 60956c94e8c..3d43c8d68de 100644 --- a/src/mame/drivers/magicfly.c +++ b/src/mame/drivers/magicfly.c @@ -427,6 +427,10 @@ public: UINT8 *m_colorram; tilemap_t *m_bg_tilemap; int m_input_selector; + DECLARE_WRITE8_MEMBER(magicfly_videoram_w); + DECLARE_WRITE8_MEMBER(magicfly_colorram_w); + DECLARE_READ8_MEMBER(mux_port_r); + DECLARE_WRITE8_MEMBER(mux_port_w); }; @@ -435,18 +439,16 @@ public: *************************/ -static WRITE8_HANDLER( magicfly_videoram_w ) +WRITE8_MEMBER(magicfly_state::magicfly_videoram_w) { - magicfly_state *state = space->machine().driver_data<magicfly_state>(); - state->m_videoram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_videoram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( magicfly_colorram_w ) +WRITE8_MEMBER(magicfly_state::magicfly_colorram_w) { - magicfly_state *state = space->machine().driver_data<magicfly_state>(); - state->m_colorram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_colorram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } static TILE_GET_INFO( get_magicfly_tile_info ) @@ -553,23 +555,21 @@ static PALETTE_INIT( magicfly ) ******************************/ -static READ8_HANDLER( mux_port_r ) +READ8_MEMBER(magicfly_state::mux_port_r) { - magicfly_state *state = space->machine().driver_data<magicfly_state>(); - switch( state->m_input_selector ) + switch( m_input_selector ) { - case 0x01: return input_port_read(space->machine(), "IN0-0"); - case 0x02: return input_port_read(space->machine(), "IN0-1"); - case 0x04: return input_port_read(space->machine(), "IN0-2"); - case 0x08: return input_port_read(space->machine(), "IN0-3"); - case 0x00: return input_port_read(space->machine(), "DSW0"); + case 0x01: return input_port_read(machine(), "IN0-0"); + case 0x02: return input_port_read(machine(), "IN0-1"); + case 0x04: return input_port_read(machine(), "IN0-2"); + case 0x08: return input_port_read(machine(), "IN0-3"); + case 0x00: return input_port_read(machine(), "DSW0"); } return 0xff; } -static WRITE8_HANDLER( mux_port_w ) +WRITE8_MEMBER(magicfly_state::mux_port_w) { - magicfly_state *state = space->machine().driver_data<magicfly_state>(); /* - bits - 7654 3210 ---- xxxx Input selector. @@ -579,13 +579,13 @@ static WRITE8_HANDLER( mux_port_w ) x--- ---- Sound DAC. */ - state->m_input_selector = data & 0x0f; /* Input Selector */ + m_input_selector = data & 0x0f; /* Input Selector */ - dac_data_w(space->machine().device("dac"), data & 0x80); /* Sound DAC */ + dac_data_w(machine().device("dac"), data & 0x80); /* Sound DAC */ - coin_counter_w(space->machine(), 0, data & 0x40); /* Coin1 */ - coin_counter_w(space->machine(), 1, data & 0x10); /* Coin2 */ - coin_counter_w(space->machine(), 2, data & 0x20); /* Payout */ + coin_counter_w(machine(), 0, data & 0x40); /* Coin1 */ + coin_counter_w(machine(), 1, data & 0x10); /* Coin2 */ + coin_counter_w(machine(), 2, data & 0x20); /* Payout */ } @@ -597,10 +597,10 @@ static ADDRESS_MAP_START( magicfly_map, AS_PROGRAM, 8, magicfly_state ) AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* MK48Z02B NVRAM */ AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("crtc", mc6845_device, address_w) AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE_LEGACY(magicfly_videoram_w) AM_BASE(m_videoram) /* HM6116LP #1 (2K x 8) RAM (only 1st half used) */ - AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE_LEGACY(magicfly_colorram_w) AM_BASE(m_colorram) /* HM6116LP #2 (2K x 8) RAM (only 1st half used) */ - AM_RANGE(0x2800, 0x2800) AM_READ_LEGACY(mux_port_r) /* multiplexed input port */ - AM_RANGE(0x3000, 0x3000) AM_WRITE_LEGACY(mux_port_w) /* output port */ + AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(magicfly_videoram_w) AM_BASE(m_videoram) /* HM6116LP #1 (2K x 8) RAM (only 1st half used) */ + AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(magicfly_colorram_w) AM_BASE(m_colorram) /* HM6116LP #2 (2K x 8) RAM (only 1st half used) */ + AM_RANGE(0x2800, 0x2800) AM_READ(mux_port_r) /* multiplexed input port */ + AM_RANGE(0x3000, 0x3000) AM_WRITE(mux_port_w) /* output port */ AM_RANGE(0xc000, 0xffff) AM_ROM /* ROM space */ ADDRESS_MAP_END diff --git a/src/mame/drivers/majorpkr.c b/src/mame/drivers/majorpkr.c index a2db1186786..0aff6294ded 100644 --- a/src/mame/drivers/majorpkr.c +++ b/src/mame/drivers/majorpkr.c @@ -473,6 +473,20 @@ public: required_device<okim6295_device> oki; + DECLARE_WRITE8_MEMBER(rom_bank_w); + DECLARE_WRITE8_MEMBER(palette_bank_w); + DECLARE_READ8_MEMBER(paletteram_r); + DECLARE_WRITE8_MEMBER(paletteram_w); + DECLARE_WRITE8_MEMBER(vram_bank_w); + DECLARE_READ8_MEMBER(vram_r); + DECLARE_WRITE8_MEMBER(vram_w); + DECLARE_WRITE8_MEMBER(vidreg_w); + DECLARE_READ8_MEMBER(mux_port_r); + DECLARE_READ8_MEMBER(mux_port2_r); + DECLARE_WRITE8_MEMBER(mux_sel_w); + DECLARE_WRITE8_MEMBER(lamps_a_w); + DECLARE_WRITE8_MEMBER(lamps_b_w); + DECLARE_WRITE8_MEMBER(pulses_w); }; @@ -552,74 +566,67 @@ static SCREEN_UPDATE_IND16(majorpkr) * R/W Handlers * ******************************/ -static WRITE8_HANDLER(rom_bank_w) +WRITE8_MEMBER(majorpkr_state::rom_bank_w) { - memory_set_bank(space->machine(), "rom_bank", data & 0x3); + memory_set_bank(machine(), "rom_bank", data & 0x3); } -static WRITE8_HANDLER(palette_bank_w) +WRITE8_MEMBER(majorpkr_state::palette_bank_w) { - majorpkr_state *state = space->machine().driver_data<majorpkr_state>(); - state->m_palette_bank=data; + m_palette_bank=data; } -static READ8_HANDLER(paletteram_r) +READ8_MEMBER(majorpkr_state::paletteram_r) { - majorpkr_state *state = space->machine().driver_data<majorpkr_state>(); - return state->machine().generic.paletteram.u8[state->m_palette_bank * 0x800 + offset]; + return machine().generic.paletteram.u8[m_palette_bank * 0x800 + offset]; } -static WRITE8_HANDLER(paletteram_w) +WRITE8_MEMBER(majorpkr_state::paletteram_w) { - majorpkr_state *state = space->machine().driver_data<majorpkr_state>(); - state->machine().generic.paletteram.u8[state->m_palette_bank * 0x800 + offset] = data; + machine().generic.paletteram.u8[m_palette_bank * 0x800 + offset] = data; offset >>= 1; - int color = state->machine().generic.paletteram.u8[state->m_palette_bank * 0x800 + offset * 2] + state->machine().generic.paletteram.u8[state->m_palette_bank * 0x800 + offset * 2 + 1] * 256; - palette_set_color(space->machine(), offset + state->m_palette_bank * 256 * 4, MAKE_RGB(pal5bit(color >> 5), pal5bit(color >> 10), pal5bit(color))); + int color = machine().generic.paletteram.u8[m_palette_bank * 0x800 + offset * 2] + machine().generic.paletteram.u8[m_palette_bank * 0x800 + offset * 2 + 1] * 256; + palette_set_color(machine(), offset + m_palette_bank * 256 * 4, MAKE_RGB(pal5bit(color >> 5), pal5bit(color >> 10), pal5bit(color))); } -static WRITE8_HANDLER(vram_bank_w) +WRITE8_MEMBER(majorpkr_state::vram_bank_w) { - majorpkr_state *state = space->machine().driver_data<majorpkr_state>(); - state->m_vram_bank = data; + m_vram_bank = data; } -static READ8_HANDLER(vram_r) +READ8_MEMBER(majorpkr_state::vram_r) { - majorpkr_state *state = space->machine().driver_data<majorpkr_state>(); - return state->m_videoram[state->m_vram_bank * 0x800 + offset]; + return m_videoram[m_vram_bank * 0x800 + offset]; } -static WRITE8_HANDLER(vram_w) +WRITE8_MEMBER(majorpkr_state::vram_w) { - majorpkr_state *state = space->machine().driver_data<majorpkr_state>(); - state->m_videoram[state->m_vram_bank * 0x800 + offset] = data; + m_videoram[m_vram_bank * 0x800 + offset] = data; - if (state->m_vram_bank == 0) + if (m_vram_bank == 0) { - state->m_fg_tilemap->mark_tile_dirty(offset >> 1); + m_fg_tilemap->mark_tile_dirty(offset >> 1); } else { - if (state->m_vram_bank == 1) + if (m_vram_bank == 1) { - state->m_bg_tilemap->mark_tile_dirty(offset >> 1); + m_bg_tilemap->mark_tile_dirty(offset >> 1); } else { - //logerror("accessing vram bank %d (offset = %x , data = %x )\n", state->m_vram_bank, offset,data); + //logerror("accessing vram bank %d (offset = %x , data = %x )\n", m_vram_bank, offset,data); } } } -static WRITE8_HANDLER(vidreg_w) +WRITE8_MEMBER(majorpkr_state::vidreg_w) { - majorpkr_state *state = space->machine().driver_data<majorpkr_state>(); /* If bit6 is active, the screen is drawn upside down. (also 0xfc and 0x11 are written to the CRTC registers 0xc0 and 0xd0) @@ -628,7 +635,7 @@ static WRITE8_HANDLER(vidreg_w) if (data & 0x40) { /* upside down screen */ - state->m_flip_state = 1; + m_flip_state = 1; } /* If bit6 is not active, the screen is drawn normally. @@ -638,47 +645,44 @@ static WRITE8_HANDLER(vidreg_w) else { /* normal screen */ - state->m_flip_state = 0; + m_flip_state = 0; } } /***** Multiplexed Ports *****/ -static READ8_HANDLER( mux_port_r ) +READ8_MEMBER(majorpkr_state::mux_port_r) { - majorpkr_state *state = space->machine().driver_data<majorpkr_state>(); - switch( (state->m_mux_data & 0xf0) ) /* 00-10-20-30-0F-1F-2F-3F */ + switch( (m_mux_data & 0xf0) ) /* 00-10-20-30-0F-1F-2F-3F */ { - case 0x00: return input_port_read(space->machine(), "DSW1"); /* confirmed */ - case 0x10: return input_port_read(space->machine(), "DSW2"); /* confirmed */ - case 0x20: return input_port_read(space->machine(), "DSW3"); /* confirmed */ - case 0x30: return input_port_read(space->machine(), "DSW4"); /* confirmed */ + case 0x00: return input_port_read(machine(), "DSW1"); /* confirmed */ + case 0x10: return input_port_read(machine(), "DSW2"); /* confirmed */ + case 0x20: return input_port_read(machine(), "DSW3"); /* confirmed */ + case 0x30: return input_port_read(machine(), "DSW4"); /* confirmed */ } return 0xff; } -static READ8_HANDLER( mux_port2_r ) +READ8_MEMBER(majorpkr_state::mux_port2_r) { - majorpkr_state *state = space->machine().driver_data<majorpkr_state>(); - if ((state->m_mux_data & 0x0f) == 4) + if ((m_mux_data & 0x0f) == 4) { - return input_port_read(space->machine(), "IN0-1"); + return input_port_read(machine(), "IN0-1"); } else { - return input_port_read(space->machine(), "IN0-0"); + return input_port_read(machine(), "IN0-0"); } } -static WRITE8_HANDLER( mux_sel_w ) +WRITE8_MEMBER(majorpkr_state::mux_sel_w) { - majorpkr_state *state = space->machine().driver_data<majorpkr_state>(); - state->m_mux_data = data; /* 00-10-20-30-0F-1F-2F-3F */ + m_mux_data = data; /* 00-10-20-30-0F-1F-2F-3F */ } @@ -686,7 +690,7 @@ static WRITE8_HANDLER( mux_sel_w ) * Lamps and Pulses * *************************/ -static WRITE8_HANDLER( lamps_a_w ) +WRITE8_MEMBER(majorpkr_state::lamps_a_w) { /* Lamps - Array A. @@ -713,7 +717,7 @@ static WRITE8_HANDLER( lamps_a_w ) logerror("Lamps A: Write to 13h: %02x\n", data); } -static WRITE8_HANDLER( lamps_b_w ) +WRITE8_MEMBER(majorpkr_state::lamps_b_w) { /* Lamps - Array B. @@ -738,7 +742,7 @@ static WRITE8_HANDLER( lamps_b_w ) logerror("Lamps B: Write to 14h: %02x\n", data); } -static WRITE8_HANDLER( pulses_w ) +WRITE8_MEMBER(majorpkr_state::pulses_w) { /* Pulses... @@ -751,10 +755,10 @@ static WRITE8_HANDLER( pulses_w ) ---x ---- Watchdog? (constant writes). xxx- ---- Unknown. */ - coin_counter_w(space->machine(), 3, data & 0x01); /* Credits Out (all) */ - coin_counter_w(space->machine(), 2, data & 0x02); /* Credits 3 */ - coin_counter_w(space->machine(), 0, data & 0x04); /* Credits 1 */ - coin_counter_w(space->machine(), 1, data & 0x08); /* Credits 2 */ + coin_counter_w(machine(), 3, data & 0x01); /* Credits Out (all) */ + coin_counter_w(machine(), 2, data & 0x02); /* Credits 3 */ + coin_counter_w(machine(), 0, data & 0x04); /* Credits 1 */ + coin_counter_w(machine(), 1, data & 0x08); /* Credits 2 */ if (data & 0xe0) logerror("Pulse: Write to 10h: %02x\n", data); @@ -769,8 +773,8 @@ static ADDRESS_MAP_START( map, AS_PROGRAM, 8, majorpkr_state ) AM_RANGE(0x0000, 0xdfff) AM_ROM AM_RANGE(0xe000, 0xe7ff) AM_ROM AM_ROMBANK("rom_bank") AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xf000, 0xf7ff) AM_READWRITE_LEGACY(paletteram_r, paletteram_w) /* 4*4 palettes - 4 banks? */ - AM_RANGE(0xf800, 0xffff) AM_READWRITE_LEGACY(vram_r, vram_w) /* two tilemaps - 2 banks? */ + AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(paletteram_r, paletteram_w) /* 4*4 palettes - 4 banks? */ + AM_RANGE(0xf800, 0xffff) AM_READWRITE(vram_r, vram_w) /* two tilemaps - 2 banks? */ ADDRESS_MAP_END /* @@ -796,20 +800,20 @@ ADDRESS_MAP_END */ static ADDRESS_MAP_START( portmap, AS_IO, 8, majorpkr_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE_LEGACY(rom_bank_w) - AM_RANGE(0x01, 0x01) AM_WRITE_LEGACY(palette_bank_w) - AM_RANGE(0x02, 0x02) AM_WRITE_LEGACY(vram_bank_w) + AM_RANGE(0x00, 0x00) AM_WRITE(rom_bank_w) + AM_RANGE(0x01, 0x01) AM_WRITE(palette_bank_w) + AM_RANGE(0x02, 0x02) AM_WRITE(vram_bank_w) - AM_RANGE(0x10, 0x10) AM_READ_LEGACY(mux_port2_r) /* muxed set of controls */ - AM_RANGE(0x10, 0x10) AM_WRITE_LEGACY(pulses_w) /* kind of watchdog on bit4... mech counters on bits 0-1-2-3 */ + AM_RANGE(0x10, 0x10) AM_READ(mux_port2_r) /* muxed set of controls */ + AM_RANGE(0x10, 0x10) AM_WRITE(pulses_w) /* kind of watchdog on bit4... mech counters on bits 0-1-2-3 */ AM_RANGE(0x11, 0x11) AM_READ_PORT("IN1") - AM_RANGE(0x11, 0x11) AM_WRITE_LEGACY(mux_sel_w) /* multiplexer selector */ + AM_RANGE(0x11, 0x11) AM_WRITE(mux_sel_w) /* multiplexer selector */ AM_RANGE(0x12, 0x12) AM_READ_PORT("IN2") - AM_RANGE(0x12, 0x12) AM_WRITE_LEGACY(vidreg_w) /* video registers: normal or up down screen */ - AM_RANGE(0x13, 0x13) AM_READ_LEGACY(mux_port_r) /* all 4 DIP switches banks multiplexed */ - AM_RANGE(0x13, 0x13) AM_WRITE_LEGACY(lamps_a_w) /* lamps a out */ + AM_RANGE(0x12, 0x12) AM_WRITE(vidreg_w) /* video registers: normal or up down screen */ + AM_RANGE(0x13, 0x13) AM_READ(mux_port_r) /* all 4 DIP switches banks multiplexed */ + AM_RANGE(0x13, 0x13) AM_WRITE(lamps_a_w) /* lamps a out */ AM_RANGE(0x14, 0x14) AM_READ_PORT("TEST") /* "freeze" switch */ - AM_RANGE(0x14, 0x14) AM_WRITE_LEGACY(lamps_b_w) /* lamps b out */ + AM_RANGE(0x14, 0x14) AM_WRITE(lamps_b_w) /* lamps b out */ AM_RANGE(0x30, 0x30) AM_DEVWRITE("crtc", mc6845_device, address_w) AM_RANGE(0x31, 0x31) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) diff --git a/src/mame/drivers/mastboy.c b/src/mame/drivers/mastboy.c index 75a43d4b15a..56ef0f3639c 100644 --- a/src/mame/drivers/mastboy.c +++ b/src/mame/drivers/mastboy.c @@ -459,6 +459,18 @@ public: int m_m5205_part; int m_m5205_sambit0; int m_m5205_sambit1; + DECLARE_READ8_MEMBER(banked_ram_r); + DECLARE_WRITE8_MEMBER(banked_ram_w); + DECLARE_WRITE8_MEMBER(mastboy_bank_w); + DECLARE_READ8_MEMBER(mastboy_backupram_r); + DECLARE_WRITE8_MEMBER(mastboy_backupram_w); + DECLARE_WRITE8_MEMBER(backupram_enable_w); + DECLARE_WRITE8_MEMBER(msm5205_mastboy_m5205_sambit0_w); + DECLARE_WRITE8_MEMBER(msm5205_mastboy_m5205_sambit1_w); + DECLARE_WRITE8_MEMBER(mastboy_msm5205_data_w); + DECLARE_WRITE8_MEMBER(mastboy_irq0_ack_w); + DECLARE_READ8_MEMBER(mastboy_port_38_read); + DECLARE_READ8_MEMBER(mastboy_nmi_read); }; @@ -517,18 +529,17 @@ static SCREEN_UPDATE_IND16(mastboy) /* Access to Banked RAM */ -static READ8_HANDLER(banked_ram_r) +READ8_MEMBER(mastboy_state::banked_ram_r) { - mastboy_state *state = space->machine().driver_data<mastboy_state>(); - if ((state->m_bank&0x80) == 0x00) + if ((m_bank&0x80) == 0x00) { int bank; - bank = state->m_bank & 0x07; - //if (state->m_bank&0xf8) printf("invalid bank bits in vram/vrom read\n"); + bank = m_bank & 0x07; + //if (m_bank&0xf8) printf("invalid bank bits in vram/vrom read\n"); if (bank>0x3) // ROM access { - UINT8 *src = space->machine().region( "gfx1" )->base(); + UINT8 *src = machine().region( "gfx1" )->base(); bank &=0x3; return src[offset+(bank*0x4000)]; } @@ -536,26 +547,25 @@ static READ8_HANDLER(banked_ram_r) { bank &=0x3; /* we have to invert the data for the GFX decode */ - return state->m_vram[offset+(bank*0x4000)]^0xff; + return m_vram[offset+(bank*0x4000)]^0xff; } } else { UINT8 *src; int bank; - bank = state->m_bank & 0x7f; - src = space->machine().region ( "user1" )->base() + bank * 0x4000; + bank = m_bank & 0x7f; + src = machine().region ( "user1" )->base() + bank * 0x4000; return src[offset]; } } -static WRITE8_HANDLER( banked_ram_w ) +WRITE8_MEMBER(mastboy_state::banked_ram_w) { - mastboy_state *state = space->machine().driver_data<mastboy_state>(); - if ((state->m_bank&0x80) == 0x00) + if ((m_bank&0x80) == 0x00) { int bank; - bank = state->m_bank & 0x07; + bank = m_bank & 0x07; //if (data&0xf8) printf("invalid bank bits in vram/vrom write\n"); if (bank>0x3) // ROM access @@ -571,10 +581,10 @@ static WRITE8_HANDLER( banked_ram_w ) offs = offset+(bank*0x4000); /* we have to invert the data for the GFX decode */ - state->m_vram[offs] = data^0xff; + m_vram[offs] = data^0xff; /* Decode the new tile */ - gfx_element_mark_dirty(space->machine().gfx[0], offs/32); + gfx_element_mark_dirty(machine().gfx[0], offs/32); } } else @@ -583,27 +593,24 @@ static WRITE8_HANDLER( banked_ram_w ) } } -static WRITE8_HANDLER( mastboy_bank_w ) +WRITE8_MEMBER(mastboy_state::mastboy_bank_w) { - mastboy_state *state = space->machine().driver_data<mastboy_state>(); // controls access to banked ram / rom - state->m_bank = data; + m_bank = data; } /* Backup RAM access */ -static READ8_HANDLER( mastboy_backupram_r ) +READ8_MEMBER(mastboy_state::mastboy_backupram_r) { - mastboy_state *state = space->machine().driver_data<mastboy_state>(); - return state->m_nvram[offset]; + return m_nvram[offset]; } -static WRITE8_HANDLER( mastboy_backupram_w ) +WRITE8_MEMBER(mastboy_state::mastboy_backupram_w) { - mastboy_state *state = space->machine().driver_data<mastboy_state>(); -// if (state->m_backupram_enabled) +// if (m_backupram_enabled) // { - state->m_nvram[offset] = data; + m_nvram[offset] = data; // } // else // { @@ -611,35 +618,32 @@ static WRITE8_HANDLER( mastboy_backupram_w ) // } } -static WRITE8_HANDLER( backupram_enable_w ) +WRITE8_MEMBER(mastboy_state::backupram_enable_w) { - mastboy_state *state = space->machine().driver_data<mastboy_state>(); /* This is some kind of enable / disable control for backup ram (see Charles's notes) but I'm not sure how it works in practice, if we use it then it writes a lot of data with it disabled */ - state->m_backupram_enabled = data&1; + m_backupram_enabled = data&1; } /* MSM5205 Related */ -static WRITE8_HANDLER( msm5205_mastboy_m5205_sambit0_w ) +WRITE8_MEMBER(mastboy_state::msm5205_mastboy_m5205_sambit0_w) { - mastboy_state *state = space->machine().driver_data<mastboy_state>(); - device_t *adpcm = space->machine().device("msm"); + device_t *adpcm = machine().device("msm"); - state->m_m5205_sambit0 = data & 1; - msm5205_playmode_w(adpcm, (1 << 2) | (state->m_m5205_sambit1 << 1) | (state->m_m5205_sambit0) ); + m_m5205_sambit0 = data & 1; + msm5205_playmode_w(adpcm, (1 << 2) | (m_m5205_sambit1 << 1) | (m_m5205_sambit0) ); logerror("msm5205 samplerate bit 0, set to %02x\n",data); } -static WRITE8_HANDLER( msm5205_mastboy_m5205_sambit1_w ) +WRITE8_MEMBER(mastboy_state::msm5205_mastboy_m5205_sambit1_w) { - mastboy_state *state = space->machine().driver_data<mastboy_state>(); - device_t *adpcm = space->machine().device("msm"); + device_t *adpcm = machine().device("msm"); - state->m_m5205_sambit1 = data & 1; + m_m5205_sambit1 = data & 1; - msm5205_playmode_w(adpcm, (1 << 2) | (state->m_m5205_sambit1 << 1) | (state->m_m5205_sambit0) ); + msm5205_playmode_w(adpcm, (1 << 2) | (m_m5205_sambit1 << 1) | (m_m5205_sambit0) ); logerror("msm5205 samplerate bit 0, set to %02x\n",data); } @@ -651,10 +655,9 @@ static WRITE8_DEVICE_HANDLER( mastboy_msm5205_reset_w ) msm5205_reset_w(device,data&1); } -static WRITE8_HANDLER( mastboy_msm5205_data_w ) +WRITE8_MEMBER(mastboy_state::mastboy_msm5205_data_w) { - mastboy_state *state = space->machine().driver_data<mastboy_state>(); - state->m_m5205_next = data; + m_m5205_next = data; } static void mastboy_adpcm_int(device_t *device) @@ -677,12 +680,11 @@ static const msm5205_interface msm5205_config = /* Interrupt Handling */ -static WRITE8_HANDLER( mastboy_irq0_ack_w ) +WRITE8_MEMBER(mastboy_state::mastboy_irq0_ack_w) { - mastboy_state *state = space->machine().driver_data<mastboy_state>(); - state->m_irq0_ack = data; + m_irq0_ack = data; if ((data & 1) == 1) - cputag_set_input_line(space->machine(), "maincpu", 0, CLEAR_LINE); + cputag_set_input_line(machine(), "maincpu", 0, CLEAR_LINE); } static INTERRUPT_GEN( mastboy_interrupt ) @@ -704,44 +706,44 @@ static ADDRESS_MAP_START( mastboy_map, AS_PROGRAM, 8, mastboy_state ) AM_RANGE(0x9000, 0x9fff) AM_RAM AM_BASE(m_tileram)// tilemap ram AM_RANGE(0xa000, 0xa1ff) AM_RAM AM_BASE(m_colram) AM_MIRROR(0x0e00) // colour ram - AM_RANGE(0xc000, 0xffff) AM_READWRITE_LEGACY(banked_ram_r,banked_ram_w) // mastboy bank area read / write + AM_RANGE(0xc000, 0xffff) AM_READWRITE(banked_ram_r,banked_ram_w) // mastboy bank area read / write - AM_RANGE(0xff000, 0xff7ff) AM_READWRITE_LEGACY(mastboy_backupram_r,mastboy_backupram_w) AM_SHARE("nvram") + AM_RANGE(0xff000, 0xff7ff) AM_READWRITE(mastboy_backupram_r,mastboy_backupram_w) AM_SHARE("nvram") AM_RANGE(0xff800, 0xff807) AM_READ_PORT("P1") AM_RANGE(0xff808, 0xff80f) AM_READ_PORT("P2") AM_RANGE(0xff810, 0xff817) AM_READ_PORT("DSW1") AM_RANGE(0xff818, 0xff81f) AM_READ_PORT("DSW2") - AM_RANGE(0xff820, 0xff827) AM_WRITE_LEGACY(mastboy_bank_w) + AM_RANGE(0xff820, 0xff827) AM_WRITE(mastboy_bank_w) AM_RANGE(0xff828, 0xff828) AM_DEVWRITE_LEGACY("saa", saa1099_data_w) AM_RANGE(0xff829, 0xff829) AM_DEVWRITE_LEGACY("saa", saa1099_control_w) - AM_RANGE(0xff830, 0xff830) AM_WRITE_LEGACY(mastboy_msm5205_data_w) - AM_RANGE(0xff838, 0xff838) AM_WRITE_LEGACY(mastboy_irq0_ack_w) - AM_RANGE(0xff839, 0xff839) AM_WRITE_LEGACY(msm5205_mastboy_m5205_sambit0_w) - AM_RANGE(0xff83a, 0xff83a) AM_WRITE_LEGACY(msm5205_mastboy_m5205_sambit1_w) + AM_RANGE(0xff830, 0xff830) AM_WRITE(mastboy_msm5205_data_w) + AM_RANGE(0xff838, 0xff838) AM_WRITE(mastboy_irq0_ack_w) + AM_RANGE(0xff839, 0xff839) AM_WRITE(msm5205_mastboy_m5205_sambit0_w) + AM_RANGE(0xff83a, 0xff83a) AM_WRITE(msm5205_mastboy_m5205_sambit1_w) AM_RANGE(0xff83b, 0xff83b) AM_DEVWRITE_LEGACY("msm", mastboy_msm5205_reset_w) - AM_RANGE(0xff83c, 0xff83c) AM_WRITE_LEGACY(backupram_enable_w) + AM_RANGE(0xff83c, 0xff83c) AM_WRITE(backupram_enable_w) AM_RANGE(0xffc00, 0xfffff) AM_RAM // Internal RAM ADDRESS_MAP_END /* Ports */ -static READ8_HANDLER( mastboy_port_38_read ) +READ8_MEMBER(mastboy_state::mastboy_port_38_read) { return 0x00; } -static READ8_HANDLER( mastboy_nmi_read ) +READ8_MEMBER(mastboy_state::mastboy_nmi_read) { // this is read in the NMI, it's related to the Z180 MMU I think, must return right value or game jumps to 0000 return 0x00; } static ADDRESS_MAP_START( mastboy_io_map, AS_IO, 8, mastboy_state ) - AM_RANGE(0x38, 0x38) AM_READ_LEGACY(mastboy_port_38_read) - AM_RANGE(0x39, 0x39) AM_READ_LEGACY(mastboy_nmi_read) + AM_RANGE(0x38, 0x38) AM_READ(mastboy_port_38_read) + AM_RANGE(0x39, 0x39) AM_READ(mastboy_nmi_read) ADDRESS_MAP_END /* Input Ports */ diff --git a/src/mame/drivers/maxaflex.c b/src/mame/drivers/maxaflex.c index 381e6151676..db41b01d9b7 100644 --- a/src/mame/drivers/maxaflex.c +++ b/src/mame/drivers/maxaflex.c @@ -40,6 +40,20 @@ public: UINT8 m_tdr; UINT8 m_tcr; timer_device *m_mcu_timer; + DECLARE_READ8_MEMBER(mcu_portA_r); + DECLARE_WRITE8_MEMBER(mcu_portA_w); + DECLARE_READ8_MEMBER(mcu_portB_r); + DECLARE_WRITE8_MEMBER(mcu_portB_w); + DECLARE_READ8_MEMBER(mcu_portC_r); + DECLARE_WRITE8_MEMBER(mcu_portC_w); + DECLARE_READ8_MEMBER(mcu_ddr_r); + DECLARE_WRITE8_MEMBER(mcu_portA_ddr_w); + DECLARE_WRITE8_MEMBER(mcu_portB_ddr_w); + DECLARE_WRITE8_MEMBER(mcu_portC_ddr_w); + DECLARE_READ8_MEMBER(mcu_tdr_r); + DECLARE_WRITE8_MEMBER(mcu_tdr_w); + DECLARE_READ8_MEMBER(mcu_tcr_r); + DECLARE_WRITE8_MEMBER(mcu_tcr_w); }; @@ -58,18 +72,16 @@ public: 7 (out) AUDIO */ -static READ8_HANDLER( mcu_portA_r ) +READ8_MEMBER(maxaflex_state::mcu_portA_r) { - maxaflex_state *state = space->machine().driver_data<maxaflex_state>(); - state->m_portA_in = input_port_read(space->machine(), "dsw") | (input_port_read(space->machine(), "coin") << 4) | (input_port_read(space->machine(), "console") << 5); - return (state->m_portA_in & ~state->m_ddrA) | (state->m_portA_out & state->m_ddrA); + m_portA_in = input_port_read(machine(), "dsw") | (input_port_read(machine(), "coin") << 4) | (input_port_read(machine(), "console") << 5); + return (m_portA_in & ~m_ddrA) | (m_portA_out & m_ddrA); } -static WRITE8_HANDLER( mcu_portA_w ) +WRITE8_MEMBER(maxaflex_state::mcu_portA_w) { - maxaflex_state *state = space->machine().driver_data<maxaflex_state>(); - state->m_portA_out = data; - speaker_level_w(space->machine().device("speaker"), data >> 7); + m_portA_out = data; + speaker_level_w(machine().device("speaker"), data >> 7); } /* Port B: @@ -83,36 +95,34 @@ static WRITE8_HANDLER( mcu_portA_w ) 7 (out) TOFF - enables/disables user controls */ -static READ8_HANDLER( mcu_portB_r ) +READ8_MEMBER(maxaflex_state::mcu_portB_r) { - maxaflex_state *state = space->machine().driver_data<maxaflex_state>(); - return (state->m_portB_in & ~state->m_ddrB) | (state->m_portB_out & state->m_ddrB); + return (m_portB_in & ~m_ddrB) | (m_portB_out & m_ddrB); } -static WRITE8_HANDLER( mcu_portB_w ) +WRITE8_MEMBER(maxaflex_state::mcu_portB_w) { - maxaflex_state *state = space->machine().driver_data<maxaflex_state>(); - UINT8 diff = data ^ state->m_portB_out; - state->m_portB_out = data; + UINT8 diff = data ^ m_portB_out; + m_portB_out = data; /* clear coin interrupt */ if (data & 0x04) - cputag_set_input_line(space->machine(), "mcu", M6805_IRQ_LINE, CLEAR_LINE ); + cputag_set_input_line(machine(), "mcu", M6805_IRQ_LINE, CLEAR_LINE ); /* AUDMUTE */ - space->machine().sound().system_enable((data >> 5) & 1); + machine().sound().system_enable((data >> 5) & 1); /* RES600 */ if (diff & 0x10) - cputag_set_input_line(space->machine(), "maincpu", INPUT_LINE_RESET, (data & 0x10) ? CLEAR_LINE : ASSERT_LINE); + cputag_set_input_line(machine(), "maincpu", INPUT_LINE_RESET, (data & 0x10) ? CLEAR_LINE : ASSERT_LINE); /* latch for lamps */ if ((diff & 0x40) && !(data & 0x40)) { - output_set_lamp_value(0, (state->m_portC_out >> 0) & 1); - output_set_lamp_value(1, (state->m_portC_out >> 1) & 1); - output_set_lamp_value(2, (state->m_portC_out >> 2) & 1); - output_set_lamp_value(3, (state->m_portC_out >> 3) & 1); + output_set_lamp_value(0, (m_portC_out >> 0) & 1); + output_set_lamp_value(1, (m_portC_out >> 1) & 1); + output_set_lamp_value(2, (m_portC_out >> 2) & 1); + output_set_lamp_value(3, (m_portC_out >> 3) & 1); } } @@ -122,52 +132,47 @@ static WRITE8_HANDLER( mcu_portB_w ) 2 (out) lamp START 3 (out) lamp OVER */ -static READ8_HANDLER( mcu_portC_r ) +READ8_MEMBER(maxaflex_state::mcu_portC_r) { - maxaflex_state *state = space->machine().driver_data<maxaflex_state>(); - return (state->m_portC_in & ~state->m_ddrC) | (state->m_portC_out & state->m_ddrC); + return (m_portC_in & ~m_ddrC) | (m_portC_out & m_ddrC); } -static WRITE8_HANDLER( mcu_portC_w ) +WRITE8_MEMBER(maxaflex_state::mcu_portC_w) { - maxaflex_state *state = space->machine().driver_data<maxaflex_state>(); /* uses a 7447A, which is equivalent to an LS47/48 */ static const UINT8 ls48_map[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x67,0x58,0x4c,0x62,0x69,0x78,0x00 }; - state->m_portC_out = data & 0x0f; + m_portC_out = data & 0x0f; /* displays */ - switch( state->m_portB_out & 0x3 ) + switch( m_portB_out & 0x3 ) { - case 0x0: output_set_digit_value(0, ls48_map[state->m_portC_out]); break; - case 0x1: output_set_digit_value(1, ls48_map[state->m_portC_out]); break; - case 0x2: output_set_digit_value(2, ls48_map[state->m_portC_out]); break; + case 0x0: output_set_digit_value(0, ls48_map[m_portC_out]); break; + case 0x1: output_set_digit_value(1, ls48_map[m_portC_out]); break; + case 0x2: output_set_digit_value(2, ls48_map[m_portC_out]); break; case 0x3: break; } } -static READ8_HANDLER( mcu_ddr_r ) +READ8_MEMBER(maxaflex_state::mcu_ddr_r) { return 0xff; } -static WRITE8_HANDLER( mcu_portA_ddr_w ) +WRITE8_MEMBER(maxaflex_state::mcu_portA_ddr_w) { - maxaflex_state *state = space->machine().driver_data<maxaflex_state>(); - state->m_ddrA = data; + m_ddrA = data; } -static WRITE8_HANDLER( mcu_portB_ddr_w ) +WRITE8_MEMBER(maxaflex_state::mcu_portB_ddr_w) { - maxaflex_state *state = space->machine().driver_data<maxaflex_state>(); - state->m_ddrB = data; + m_ddrB = data; } -static WRITE8_HANDLER( mcu_portC_ddr_w ) +WRITE8_MEMBER(maxaflex_state::mcu_portC_ddr_w) { - maxaflex_state *state = space->machine().driver_data<maxaflex_state>(); - state->m_ddrC = data; + m_ddrC = data; } static TIMER_DEVICE_CALLBACK( mcu_timer_proc ) @@ -184,35 +189,31 @@ static TIMER_DEVICE_CALLBACK( mcu_timer_proc ) } /* Timer Data Reg */ -static READ8_HANDLER( mcu_tdr_r ) +READ8_MEMBER(maxaflex_state::mcu_tdr_r) { - maxaflex_state *state = space->machine().driver_data<maxaflex_state>(); - return state->m_tdr; + return m_tdr; } -static WRITE8_HANDLER( mcu_tdr_w ) +WRITE8_MEMBER(maxaflex_state::mcu_tdr_w) { - maxaflex_state *state = space->machine().driver_data<maxaflex_state>(); - state->m_tdr = data; + m_tdr = data; } /* Timer control reg */ -static READ8_HANDLER( mcu_tcr_r ) +READ8_MEMBER(maxaflex_state::mcu_tcr_r) { - maxaflex_state *state = space->machine().driver_data<maxaflex_state>(); - return state->m_tcr & ~0x08; + return m_tcr & ~0x08; } -static WRITE8_HANDLER( mcu_tcr_w ) +WRITE8_MEMBER(maxaflex_state::mcu_tcr_w) { - maxaflex_state *state = space->machine().driver_data<maxaflex_state>(); - state->m_tcr = data; - if ( (state->m_tcr & 0x40) == 0 ) + m_tcr = data; + if ( (m_tcr & 0x40) == 0 ) { int divider; attotime period; - if ( !(state->m_tcr & 0x20) ) + if ( !(m_tcr & 0x20) ) { /* internal clock / 4*/ divider = 4; @@ -223,14 +224,14 @@ static WRITE8_HANDLER( mcu_tcr_w ) divider = 1; } - if ( state->m_tcr & 0x07 ) + if ( m_tcr & 0x07 ) { /* use prescaler */ - divider = divider * (1 << (state->m_tcr & 0x7)); + divider = divider * (1 << (m_tcr & 0x7)); } period = attotime::from_hz(3579545) * divider; - state->m_mcu_timer->adjust(period, 0, period); + m_mcu_timer->adjust(period, 0, period); } } @@ -282,14 +283,14 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( mcu_mem, AS_PROGRAM, 8, maxaflex_state ) ADDRESS_MAP_GLOBAL_MASK(0x7ff) - AM_RANGE(0x0000, 0x0000) AM_READ_LEGACY(mcu_portA_r ) AM_WRITE_LEGACY(mcu_portA_w ) - AM_RANGE(0x0001, 0x0001) AM_READ_LEGACY(mcu_portB_r ) AM_WRITE_LEGACY(mcu_portB_w ) - AM_RANGE(0x0002, 0x0002) AM_READ_LEGACY(mcu_portC_r ) AM_WRITE_LEGACY(mcu_portC_w ) - AM_RANGE(0x0004, 0x0004) AM_READ_LEGACY(mcu_ddr_r ) AM_WRITE_LEGACY(mcu_portA_ddr_w ) - AM_RANGE(0x0005, 0x0005) AM_READ_LEGACY(mcu_ddr_r ) AM_WRITE_LEGACY(mcu_portB_ddr_w ) - AM_RANGE(0x0006, 0x0006) AM_READ_LEGACY(mcu_ddr_r ) AM_WRITE_LEGACY(mcu_portC_ddr_w ) - AM_RANGE(0x0008, 0x0008) AM_READ_LEGACY(mcu_tdr_r ) AM_WRITE_LEGACY(mcu_tdr_w ) - AM_RANGE(0x0009, 0x0009) AM_READ_LEGACY(mcu_tcr_r ) AM_WRITE_LEGACY(mcu_tcr_w ) + AM_RANGE(0x0000, 0x0000) AM_READ(mcu_portA_r ) AM_WRITE(mcu_portA_w ) + AM_RANGE(0x0001, 0x0001) AM_READ(mcu_portB_r ) AM_WRITE(mcu_portB_w ) + AM_RANGE(0x0002, 0x0002) AM_READ(mcu_portC_r ) AM_WRITE(mcu_portC_w ) + AM_RANGE(0x0004, 0x0004) AM_READ(mcu_ddr_r ) AM_WRITE(mcu_portA_ddr_w ) + AM_RANGE(0x0005, 0x0005) AM_READ(mcu_ddr_r ) AM_WRITE(mcu_portB_ddr_w ) + AM_RANGE(0x0006, 0x0006) AM_READ(mcu_ddr_r ) AM_WRITE(mcu_portC_ddr_w ) + AM_RANGE(0x0008, 0x0008) AM_READ(mcu_tdr_r ) AM_WRITE(mcu_tdr_w ) + AM_RANGE(0x0009, 0x0009) AM_READ(mcu_tcr_r ) AM_WRITE(mcu_tcr_w ) AM_RANGE(0x0010, 0x007f) AM_RAM AM_RANGE(0x0080, 0x07ff) AM_ROM ADDRESS_MAP_END diff --git a/src/mame/drivers/maygayv1.c b/src/mame/drivers/maygayv1.c index 3b105e5ac34..54a579291cc 100644 --- a/src/mame/drivers/maygayv1.c +++ b/src/mame/drivers/maygayv1.c @@ -226,15 +226,23 @@ public: device_t *m_duart68681; i82716_t m_i82716; i8279_t m_i8279; + DECLARE_WRITE16_MEMBER(i82716_w); + DECLARE_READ16_MEMBER(i82716_r); + DECLARE_WRITE16_MEMBER(write_odd); + DECLARE_READ16_MEMBER(read_odd); + DECLARE_READ16_MEMBER(maygay_8279_r); + DECLARE_WRITE16_MEMBER(maygay_8279_w); + DECLARE_WRITE16_MEMBER(vsync_int_ctrl); + DECLARE_READ8_MEMBER(mcu_r); + DECLARE_WRITE8_MEMBER(mcu_w); }; -static WRITE16_HANDLER( i82716_w ) +WRITE16_MEMBER(maygayv1_state::i82716_w) { - maygayv1_state *state = space->machine().driver_data<maygayv1_state>(); - i82716_t &i82716 = state->m_i82716; + i82716_t &i82716 = m_i82716; // Accessing register window? if ((VREG(RWBA) & 0xfff0) == (offset & 0xfff0)) { @@ -251,10 +259,9 @@ static WRITE16_HANDLER( i82716_w ) } } -static READ16_HANDLER( i82716_r ) +READ16_MEMBER(maygayv1_state::i82716_r) { - maygayv1_state *state = space->machine().driver_data<maygayv1_state>(); - i82716_t &i82716 = state->m_i82716; + i82716_t &i82716 = m_i82716; // Accessing register window? if ((VREG(RWBA) & ~0xf) == (offset & ~0xf)) { @@ -469,12 +476,12 @@ static SCREEN_VBLANK( maygayv1 ) -static WRITE16_HANDLER( write_odd ) +WRITE16_MEMBER(maygayv1_state::write_odd) { } //;860008 is a latch of some sort -static READ16_HANDLER( read_odd ) +READ16_MEMBER(maygayv1_state::read_odd) { return 0; } @@ -509,10 +516,9 @@ static void update_outputs(i8279_t &i8279, UINT16 which) } } -static READ16_HANDLER( maygay_8279_r ) +READ16_MEMBER(maygayv1_state::maygay_8279_r) { - maygayv1_state *state = space->machine().driver_data<maygayv1_state>(); - i8279_t &i8279 = state->m_i8279; + i8279_t &i8279 = m_i8279; static const char *const portnames[] = { "STROBE1","STROBE2","STROBE3","STROBE4","STROBE5","STROBE6","STROBE7","STROBE8" }; UINT8 result = 0xff; UINT8 addr; @@ -526,7 +532,7 @@ static READ16_HANDLER( maygay_8279_r ) case 0x40: addr = i8279.command & 0x07; - result = input_port_read(space->machine(), portnames[addr]); + result = input_port_read(machine(), portnames[addr]); /* handle autoincrement */ if (i8279.command & 0x10) @@ -557,10 +563,9 @@ static READ16_HANDLER( maygay_8279_r ) } -static WRITE16_HANDLER( maygay_8279_w ) +WRITE16_MEMBER(maygayv1_state::maygay_8279_w) { - maygayv1_state *state = space->machine().driver_data<maygayv1_state>(); - i8279_t &i8279 = state->m_i8279; + i8279_t &i8279 = m_i8279; UINT8 addr; data >>= 8; @@ -660,25 +665,24 @@ static WRITE16_HANDLER( maygay_8279_w ) -static WRITE16_HANDLER( vsync_int_ctrl ) +WRITE16_MEMBER(maygayv1_state::vsync_int_ctrl) { - maygayv1_state *state = space->machine().driver_data<maygayv1_state>(); - state->m_vsync_latch_preset = data & 0x0100; + m_vsync_latch_preset = data & 0x0100; // Active low - if (!(state->m_vsync_latch_preset)) - cputag_set_input_line(space->machine(), "maincpu", 3, CLEAR_LINE); + if (!(m_vsync_latch_preset)) + cputag_set_input_line(machine(), "maincpu", 3, CLEAR_LINE); } static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, maygayv1_state ) AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_RANGE(0x080000, 0x083fff) AM_RAM AM_SHARE("nvram") AM_RANGE(0x100000, 0x17ffff) AM_ROM AM_REGION("maincpu", 0x80000) - AM_RANGE(0x820000, 0x820003) AM_READWRITE_LEGACY(maygay_8279_r, maygay_8279_w) + AM_RANGE(0x820000, 0x820003) AM_READWRITE(maygay_8279_r, maygay_8279_w) AM_RANGE(0x800000, 0x800003) AM_DEVWRITE8_LEGACY("ymsnd", ym2413_w, 0xff00 ) - AM_RANGE(0x860000, 0x86000d) AM_READWRITE_LEGACY(read_odd, write_odd) - AM_RANGE(0x86000e, 0x86000f) AM_WRITE_LEGACY(vsync_int_ctrl) - AM_RANGE(0x880000, 0x89ffff) AM_READWRITE_LEGACY(i82716_r, i82716_w) + AM_RANGE(0x860000, 0x86000d) AM_READWRITE(read_odd, write_odd) + AM_RANGE(0x86000e, 0x86000f) AM_WRITE(vsync_int_ctrl) + AM_RANGE(0x880000, 0x89ffff) AM_READWRITE(i82716_r, i82716_w) AM_RANGE(0x8a0000, 0x8a001f) AM_DEVREADWRITE8_LEGACY("duart68681", duart68681_r, duart68681_w, 0xff) AM_RANGE(0x8c0000, 0x8c000f) AM_DEVREADWRITE8("pia", pia6821_device, read, write, 0xff) ADDRESS_MAP_END @@ -719,15 +723,14 @@ ADDRESS_MAP_END */ -static READ8_HANDLER( mcu_r ) +READ8_MEMBER(maygayv1_state::mcu_r) { - maygayv1_state *state = space->machine().driver_data<maygayv1_state>(); switch (offset) { case 1: { - if ( !BIT(state->m_p3, 4) ) - return (input_port_read(space->machine(), "REEL")); // Reels??? + if ( !BIT(m_p3, 4) ) + return (input_port_read(machine(), "REEL")); // Reels??? else return 0; } @@ -737,26 +740,25 @@ static READ8_HANDLER( mcu_r ) return 0; } -static WRITE8_HANDLER( mcu_w ) +WRITE8_MEMBER(maygayv1_state::mcu_w) { - maygayv1_state *state = space->machine().driver_data<maygayv1_state>(); logerror("O %x D %x",offset,data); switch (offset) { // Bottom nibble = UPD case 1: - state->m_p1 = data; + m_p1 = data; // upd7759_msg_w(0, data);//? break; case 3: upd7759_reset_w (0, BIT(data, 2)); upd7759_start_w(0, BIT(data, 6)); -// if ( !BIT(state->m_p3, 7) && BIT(data, 7) ) +// if ( !BIT(m_p3, 7) && BIT(data, 7) ) // P1 propagates to outputs - state->m_p3 = data; + m_p3 = data; break; } } @@ -771,7 +773,7 @@ static ADDRESS_MAP_START( sound_data, AS_DATA, 8, maygayv1_state ) ADDRESS_MAP_END static ADDRESS_MAP_START( sound_io, AS_IO, 8, maygayv1_state ) - AM_RANGE(0x00, 0xff) AM_READWRITE_LEGACY(mcu_r, mcu_w) + AM_RANGE(0x00, 0xff) AM_READWRITE(mcu_r, mcu_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/mayumi.c b/src/mame/drivers/mayumi.c index ab3b009521c..eb6412ed7da 100644 --- a/src/mame/drivers/mayumi.c +++ b/src/mame/drivers/mayumi.c @@ -30,6 +30,10 @@ public: /* misc */ int m_int_enable; int m_input_sel; + DECLARE_WRITE8_MEMBER(mayumi_videoram_w); + DECLARE_WRITE8_MEMBER(bank_sel_w); + DECLARE_WRITE8_MEMBER(input_sel_w); + DECLARE_READ8_MEMBER(key_matrix_r); }; @@ -54,11 +58,10 @@ static VIDEO_START( mayumi ) state->m_tilemap = tilemap_create(machine, get_tile_info, tilemap_scan_rows, 8, 8, 64, 32); } -static WRITE8_HANDLER( mayumi_videoram_w ) +WRITE8_MEMBER(mayumi_state::mayumi_videoram_w) { - mayumi_state *state = space->machine().driver_data<mayumi_state>(); - state->m_videoram[offset] = data; - state->m_tilemap->mark_tile_dirty(offset & 0x7ff); + m_videoram[offset] = data; + m_tilemap->mark_tile_dirty(offset & 0x7ff); } static SCREEN_UPDATE_IND16( mayumi ) @@ -88,27 +91,24 @@ static INTERRUPT_GEN( mayumi_interrupt ) * *************************************/ -static WRITE8_HANDLER( bank_sel_w ) +WRITE8_MEMBER(mayumi_state::bank_sel_w) { - mayumi_state *state = space->machine().driver_data<mayumi_state>(); int bank = BIT(data, 7) | (BIT(data, 6) << 1); - memory_set_bank(space->machine(), "bank1", bank); + memory_set_bank(machine(), "bank1", bank); - state->m_int_enable = data & 1; + m_int_enable = data & 1; - flip_screen_set(space->machine(), data & 2); + flip_screen_set(machine(), data & 2); } -static WRITE8_HANDLER( input_sel_w ) +WRITE8_MEMBER(mayumi_state::input_sel_w) { - mayumi_state *state = space->machine().driver_data<mayumi_state>(); - state->m_input_sel = data; + m_input_sel = data; } -static READ8_HANDLER( key_matrix_r ) +READ8_MEMBER(mayumi_state::key_matrix_r) { - mayumi_state *state = space->machine().driver_data<mayumi_state>(); int p, i, ret; static const char *const keynames[2][5] = { @@ -118,12 +118,12 @@ static READ8_HANDLER( key_matrix_r ) ret = 0xff; - p = ~state->m_input_sel & 0x1f; + p = ~m_input_sel & 0x1f; for (i = 0; i < 5; i++) { if (BIT(p, i)) - ret &= input_port_read(space->machine(), keynames[offset][i]); + ret &= input_port_read(machine(), keynames[offset][i]); } return ret; @@ -139,15 +139,15 @@ static ADDRESS_MAP_START( mayumi_map, AS_PROGRAM, 8, mayumi_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xe000, 0xf7ff) AM_RAM_WRITE_LEGACY(mayumi_videoram_w) AM_BASE(m_videoram) + AM_RANGE(0xe000, 0xf7ff) AM_RAM_WRITE(mayumi_videoram_w) AM_BASE(m_videoram) ADDRESS_MAP_END static ADDRESS_MAP_START( mayumi_io_map, AS_IO, 8, mayumi_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x30, 0x30) AM_READ_PORT("IN0") AM_WRITE_LEGACY(bank_sel_w) - AM_RANGE(0xc0, 0xc0) AM_WRITE_LEGACY(input_sel_w) - AM_RANGE(0xc1, 0xc2) AM_READ_LEGACY(key_matrix_r) // 0xc0-c3 8255ppi + AM_RANGE(0x30, 0x30) AM_READ_PORT("IN0") AM_WRITE(bank_sel_w) + AM_RANGE(0xc0, 0xc0) AM_WRITE(input_sel_w) + AM_RANGE(0xc1, 0xc2) AM_READ(key_matrix_r) // 0xc0-c3 8255ppi AM_RANGE(0xc3, 0xc3) AM_WRITENOP // 0xc0-c3 8255ppi AM_RANGE(0xd0, 0xd1) AM_DEVREADWRITE_LEGACY("ymsnd", ym2203_r, ym2203_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/mazerbla.c b/src/mame/drivers/mazerbla.c index ba0a9d108b9..56518ee4e51 100644 --- a/src/mame/drivers/mazerbla.c +++ b/src/mame/drivers/mazerbla.c @@ -109,6 +109,31 @@ public: int m_planes_enabled[4]; #endif + DECLARE_WRITE8_MEMBER(cfb_backgnd_color_w); + DECLARE_WRITE8_MEMBER(cfb_vbank_w); + DECLARE_WRITE8_MEMBER(cfb_rom_bank_sel_w); + DECLARE_WRITE8_MEMBER(cfb_rom_bank_sel_w_gg); + DECLARE_READ8_MEMBER(cfb_port_02_r); + DECLARE_WRITE8_MEMBER(vcu_video_reg_w); + DECLARE_READ8_MEMBER(vcu_set_cmd_param_r); + DECLARE_READ8_MEMBER(vcu_set_gfx_addr_r); + DECLARE_READ8_MEMBER(vcu_set_clr_addr_r); + DECLARE_WRITE8_MEMBER(cfb_zpu_int_req_set_w); + DECLARE_READ8_MEMBER(cfb_zpu_int_req_clr); + DECLARE_READ8_MEMBER(ls670_0_r); + DECLARE_WRITE8_MEMBER(ls670_0_w); + DECLARE_READ8_MEMBER(ls670_1_r); + DECLARE_WRITE8_MEMBER(ls670_1_w); + DECLARE_WRITE8_MEMBER(zpu_bcd_decoder_w); + DECLARE_READ8_MEMBER(zpu_inputs_r); + DECLARE_WRITE8_MEMBER(zpu_led_w); + DECLARE_WRITE8_MEMBER(zpu_lamps_w); + DECLARE_WRITE8_MEMBER(zpu_coin_counter_w); + DECLARE_WRITE8_MEMBER(cfb_led_w); + DECLARE_WRITE8_MEMBER(vsb_ls273_audio_control_w); + DECLARE_WRITE8_MEMBER(main_sound_w); + DECLARE_WRITE8_MEMBER(sound_int_clear_w); + DECLARE_WRITE8_MEMBER(sound_nmi_clear_w); }; @@ -291,157 +316,149 @@ static SCREEN_UPDATE_IND16( mazerbla ) } -static WRITE8_HANDLER( cfb_backgnd_color_w ) +WRITE8_MEMBER(mazerbla_state::cfb_backgnd_color_w) { - mazerbla_state *state = space->machine().driver_data<mazerbla_state>(); - if (state->m_bknd_col != data) + if (m_bknd_col != data) { int r, g, b, bit0, bit1, bit2; - state->m_bknd_col = data; + m_bknd_col = data; /* red component */ bit1 = BIT(data, 7); bit0 = BIT(data, 6); - r = combine_2_weights(state->m_weights_r, bit0, bit1); + r = combine_2_weights(m_weights_r, bit0, bit1); /* green component */ bit2 = BIT(data, 5); bit1 = BIT(data, 4); bit0 = BIT(data, 3); - g = combine_3_weights(state->m_weights_g, bit0, bit1, bit2); + g = combine_3_weights(m_weights_g, bit0, bit1, bit2); /* blue component */ bit2 = BIT(data, 2); bit1 = BIT(data, 1); bit0 = BIT(data, 0); - b = combine_3_weights(state->m_weights_b, bit0, bit1, bit2); + b = combine_3_weights(m_weights_b, bit0, bit1, bit2); - palette_set_color(space->machine(), 255, MAKE_RGB(r, g, b)); + palette_set_color(machine(), 255, MAKE_RGB(r, g, b)); //logerror("background color (port 01) write=%02x\n",data); } } -static WRITE8_HANDLER( cfb_vbank_w ) +WRITE8_MEMBER(mazerbla_state::cfb_vbank_w) { - mazerbla_state *state = space->machine().driver_data<mazerbla_state>(); /* only bit 6 connected */ - state->m_vbank = BIT(data, 6); + m_vbank = BIT(data, 6); } -static WRITE8_HANDLER( cfb_rom_bank_sel_w ) /* mazer blazer */ +WRITE8_MEMBER(mazerbla_state::cfb_rom_bank_sel_w)/* mazer blazer */ { - mazerbla_state *state = space->machine().driver_data<mazerbla_state>(); - state->m_gfx_rom_bank = data; + m_gfx_rom_bank = data; - memory_set_bankptr(space->machine(), "bank1", space->machine().region("sub2")->base() + (state->m_gfx_rom_bank * 0x2000) + 0x10000); + memory_set_bankptr(machine(), "bank1", machine().region("sub2")->base() + (m_gfx_rom_bank * 0x2000) + 0x10000); } -static WRITE8_HANDLER( cfb_rom_bank_sel_w_gg ) /* great guns */ +WRITE8_MEMBER(mazerbla_state::cfb_rom_bank_sel_w_gg)/* great guns */ { - mazerbla_state *state = space->machine().driver_data<mazerbla_state>(); - state->m_gfx_rom_bank = data >> 1; + m_gfx_rom_bank = data >> 1; - memory_set_bankptr(space->machine(), "bank1", space->machine().region("sub2")->base() + (state->m_gfx_rom_bank * 0x2000) + 0x10000); + memory_set_bankptr(machine(), "bank1", machine().region("sub2")->base() + (m_gfx_rom_bank * 0x2000) + 0x10000); } /* VCU status? */ -static READ8_HANDLER( cfb_port_02_r ) +READ8_MEMBER(mazerbla_state::cfb_port_02_r) { - mazerbla_state *state = space->machine().driver_data<mazerbla_state>(); - state->m_port02_status ^= 0xff; - return state->m_port02_status; + m_port02_status ^= 0xff; + return m_port02_status; } -static WRITE8_HANDLER( vcu_video_reg_w ) +WRITE8_MEMBER(mazerbla_state::vcu_video_reg_w) { - mazerbla_state *state = space->machine().driver_data<mazerbla_state>(); - if (state->m_vcu_video_reg[offset] != data) + if (m_vcu_video_reg[offset] != data) { - state->m_vcu_video_reg[offset] = data; - //popmessage("video_reg= %02x %02x %02x %02x", state->m_vcu_video_reg[0], state->m_vcu_video_reg[1], state->m_vcu_video_reg[2], state->m_vcu_video_reg[3]); - //logerror("video_reg= %02x %02x %02x %02x\n", state->m_vcu_video_reg[0], state->m_vcu_video_reg[1], state->m_vcu_video_reg[2], state->m_vcu_video_reg[3]); + m_vcu_video_reg[offset] = data; + //popmessage("video_reg= %02x %02x %02x %02x", m_vcu_video_reg[0], m_vcu_video_reg[1], m_vcu_video_reg[2], m_vcu_video_reg[3]); + //logerror("video_reg= %02x %02x %02x %02x\n", m_vcu_video_reg[0], m_vcu_video_reg[1], m_vcu_video_reg[2], m_vcu_video_reg[3]); } } -static READ8_HANDLER( vcu_set_cmd_param_r ) +READ8_MEMBER(mazerbla_state::vcu_set_cmd_param_r) { - mazerbla_state *state = space->machine().driver_data<mazerbla_state>(); - state->m_vcu_gfx_param_addr = offset; + m_vcu_gfx_param_addr = offset; /* offset = 0 is not known */ - state->m_xpos = state->m_cfb_ram[state->m_vcu_gfx_param_addr + 1] | (state->m_cfb_ram[state->m_vcu_gfx_param_addr + 2]<<8); - state->m_ypos = state->m_cfb_ram[state->m_vcu_gfx_param_addr + 3] | (state->m_cfb_ram[state->m_vcu_gfx_param_addr + 4]<<8); - state->m_color1 = state->m_cfb_ram[state->m_vcu_gfx_param_addr + 5]; - state->m_color2 = state->m_cfb_ram[state->m_vcu_gfx_param_addr + 6]; - state->m_mode = state->m_cfb_ram[state->m_vcu_gfx_param_addr + 7]; - state->m_pix_xsize = state->m_cfb_ram[state->m_vcu_gfx_param_addr + 8]; - state->m_pix_ysize = state->m_cfb_ram[state->m_vcu_gfx_param_addr + 9]; + m_xpos = m_cfb_ram[m_vcu_gfx_param_addr + 1] | (m_cfb_ram[m_vcu_gfx_param_addr + 2]<<8); + m_ypos = m_cfb_ram[m_vcu_gfx_param_addr + 3] | (m_cfb_ram[m_vcu_gfx_param_addr + 4]<<8); + m_color1 = m_cfb_ram[m_vcu_gfx_param_addr + 5]; + m_color2 = m_cfb_ram[m_vcu_gfx_param_addr + 6]; + m_mode = m_cfb_ram[m_vcu_gfx_param_addr + 7]; + m_pix_xsize = m_cfb_ram[m_vcu_gfx_param_addr + 8]; + m_pix_ysize = m_cfb_ram[m_vcu_gfx_param_addr + 9]; - state->m_plane = state->m_mode & 3; + m_plane = m_mode & 3; return 0; } -static READ8_HANDLER( vcu_set_gfx_addr_r ) +READ8_MEMBER(mazerbla_state::vcu_set_gfx_addr_r) { - mazerbla_state *state = space->machine().driver_data<mazerbla_state>(); - UINT8 * rom = space->machine().region("sub2")->base() + (state->m_gfx_rom_bank * 0x2000) + 0x10000; + UINT8 * rom = machine().region("sub2")->base() + (m_gfx_rom_bank * 0x2000) + 0x10000; int offs; int x, y; int bits = 0; UINT8 color_base = 0; - if (state->m_game_id == MAZERBLA) + if (m_game_id == MAZERBLA) color_base = 0x80; /* 0x80 - good for Mazer Blazer: (only in game, CRT test mode is bad) */ - if (state->m_game_id == GREATGUN) + if (m_game_id == GREATGUN) color_base = 0x00; /* 0x00 - good for Great Guns: (both in game and CRT test mode) */ /* if ((mode <= 0x07) || (mode >= 0x10)) { logerror("paradr="); - logerror("%3x ", state->m_vcu_gfx_param_addr ); - - logerror("%02x ", state->m_cfb_ram[vcu_gfx_param_addr + 0] ); - logerror("x=%04x ", state->m_xpos ); //1,2 - logerror("y=%04x ", state->m_ypos ); //3,4 - logerror("color1=%02x ", state->m_color1); //5 - logerror("color2=%02x ", state->m_color2); //6 - logerror("mode=%02x ", state->m_mode ); //7 - logerror("xpix=%02x ", state->m_pix_xsize ); //8 - logerror("ypix=%02x ", state->m_pix_ysize ); //9 - - logerror("addr=%4i bank=%1i\n", offset, state->m_gfx_rom_bank); + logerror("%3x ", m_vcu_gfx_param_addr ); + + logerror("%02x ", m_cfb_ram[vcu_gfx_param_addr + 0] ); + logerror("x=%04x ", m_xpos ); //1,2 + logerror("y=%04x ", m_ypos ); //3,4 + logerror("color1=%02x ", m_color1); //5 + logerror("color2=%02x ", m_color2); //6 + logerror("mode=%02x ", m_mode ); //7 + logerror("xpix=%02x ", m_pix_xsize ); //8 + logerror("ypix=%02x ", m_pix_ysize ); //9 + + logerror("addr=%4i bank=%1i\n", offset, m_gfx_rom_bank); } */ - state->m_vcu_gfx_addr = offset; + m_vcu_gfx_addr = offset; /* draw */ - offs = state->m_vcu_gfx_addr; + offs = m_vcu_gfx_addr; - switch(state->m_mode) + switch(m_mode) { /* 2 bits per pixel */ case 0x0f: case 0x0e: case 0x0d: case 0x0c: -// if (state->m_dbg_gfx_e) +// if (m_dbg_gfx_e) // { -// if (state->m_vbank == state->m_dbg_vbank) +// if (m_vbank == m_dbg_vbank) { - for (y = 0; y <= state->m_pix_ysize; y++) + for (y = 0; y <= m_pix_ysize; y++) { - for (x = 0; x <= state->m_pix_xsize; x++) + for (x = 0; x <= m_pix_xsize; x++) { UINT8 pixeldata = rom[(offs + (bits >> 3)) % 0x2000]; UINT8 data = (pixeldata >> (6 - (bits & 7))) & 3; @@ -450,21 +467,21 @@ static READ8_HANDLER( vcu_set_gfx_addr_r ) switch(data) { case 0: - col = color_base | ((state->m_color1 & 0x0f)); //background PEN + col = color_base | ((m_color1 & 0x0f)); //background PEN break; case 1: - col = color_base | ((state->m_color1 & 0xf0) >> 4); //foreground PEN + col = color_base | ((m_color1 & 0xf0) >> 4); //foreground PEN break; case 2: - col = color_base | ((state->m_color2 & 0x0f)); //background PEN2 + col = color_base | ((m_color2 & 0x0f)); //background PEN2 break; case 3: - col = color_base | ((state->m_color2 & 0xf0) >> 4); //foreground PEN2 + col = color_base | ((m_color2 & 0xf0) >> 4); //foreground PEN2 break; } - if (((state->m_xpos + x) < 256) && ((state->m_ypos + y) < 256) ) - state->m_tmpbitmaps[state->m_plane].pix16(state->m_ypos + y, state->m_xpos + x) = col; + if (((m_xpos + x) < 256) && ((m_ypos + y) < 256) ) + m_tmpbitmaps[m_plane].pix16(m_ypos + y, m_xpos + x) = col; bits += 2; } @@ -478,22 +495,22 @@ static READ8_HANDLER( vcu_set_gfx_addr_r ) case 0x0a:/* verified - 1bpp */ case 0x09:/* verified - 1bpp: gun crosshair */ case 0x08:/* */ -// if (state->m_dbg_gfx_e) +// if (m_dbg_gfx_e) // { -// if (state->m_vbank == state->m_dbg_vbank) +// if (m_vbank == m_dbg_vbank) { - for (y = 0; y <= state->m_pix_ysize; y++) + for (y = 0; y <= m_pix_ysize; y++) { - for (x = 0; x <= state->m_pix_xsize; x++) + for (x = 0; x <= m_pix_xsize; x++) { UINT8 pixeldata = rom[(offs + (bits >> 3)) % 0x2000]; UINT8 data = (pixeldata >> (7 - (bits & 7))) & 1; /* color = 4 MSB = front PEN, 4 LSB = background PEN */ - if (((state->m_xpos + x) < 256) && ((state->m_ypos + y) < 256)) - state->m_tmpbitmaps[state->m_plane].pix16(state->m_ypos + y, state->m_xpos + x) = data ? color_base | ((state->m_color1 & 0xf0) >> 4): color_base | ((state->m_color1 & 0x0f)); + if (((m_xpos + x) < 256) && ((m_ypos + y) < 256)) + m_tmpbitmaps[m_plane].pix16(m_ypos + y, m_xpos + x) = data ? color_base | ((m_color1 & 0xf0) >> 4): color_base | ((m_color1 & 0x0f)); bits += 1; } @@ -506,13 +523,13 @@ static READ8_HANDLER( vcu_set_gfx_addr_r ) case 0x03: case 0x01: case 0x00: -// if (state->m_dbg_gfx_e) +// if (m_dbg_gfx_e) // { -// if (state->m_vbank == state->m_dbg_vbank) +// if (m_vbank == m_dbg_vbank) { - for (y = 0; y <= state->m_pix_ysize; y++) + for (y = 0; y <= m_pix_ysize; y++) { - for (x = 0; x <= state->m_pix_xsize; x++) + for (x = 0; x <= m_pix_xsize; x++) { UINT8 pixeldata = rom[(offs + (bits >> 3)) % 0x2000]; UINT8 data = (pixeldata >> (4 - (bits & 7))) & 15; @@ -520,8 +537,8 @@ static READ8_HANDLER( vcu_set_gfx_addr_r ) col = color_base | data; - if (((state->m_xpos + x) < 256) && ((state->m_ypos + y) < 256)) - state->m_tmpbitmaps[state->m_plane].pix16(state->m_ypos + y, state->m_xpos + x) = col; + if (((m_xpos + x) < 256) && ((m_ypos + y) < 256)) + m_tmpbitmaps[m_plane].pix16(m_ypos + y, m_xpos + x) = col; bits += 4; } @@ -530,17 +547,16 @@ static READ8_HANDLER( vcu_set_gfx_addr_r ) // } break; default: - popmessage("not supported VCU drawing mode=%2x", state->m_mode); + popmessage("not supported VCU drawing mode=%2x", m_mode); break; } return 0; } -static READ8_HANDLER( vcu_set_clr_addr_r ) +READ8_MEMBER(mazerbla_state::vcu_set_clr_addr_r) { - mazerbla_state *state = space->machine().driver_data<mazerbla_state>(); - UINT8 * rom = space->machine().region("sub2")->base() + (state->m_gfx_rom_bank * 0x2000) + 0x10000; + UINT8 * rom = machine().region("sub2")->base() + (m_gfx_rom_bank * 0x2000) + 0x10000; int offs; int x, y; int bits = 0; @@ -552,25 +568,25 @@ static READ8_HANDLER( vcu_set_clr_addr_r ) //if (0) //(mode != 0x07) { logerror("paladr="); - logerror("%3x ", state->m_vcu_gfx_param_addr ); + logerror("%3x ", m_vcu_gfx_param_addr ); - logerror("%02x ", state->m_cfb_ram[state->m_vcu_gfx_param_addr + 0] ); - logerror("x=%04x ", state->m_xpos ); //1,2 - logerror("y=%04x ", state->m_ypos ); //3,4 - logerror("color1=%02x ", state->m_color1); //5 - logerror("color2=%02x ", state->m_color2 ); //6 - logerror("mode=%02x ", state->m_mode ); //7 - logerror("xpix=%02x ", state->m_pix_xsize ); //8 - logerror("ypix=%02x ", state->m_pix_ysize ); //9 + logerror("%02x ", m_cfb_ram[m_vcu_gfx_param_addr + 0] ); + logerror("x=%04x ", m_xpos ); //1,2 + logerror("y=%04x ", m_ypos ); //3,4 + logerror("color1=%02x ", m_color1); //5 + logerror("color2=%02x ", m_color2 ); //6 + logerror("mode=%02x ", m_mode ); //7 + logerror("xpix=%02x ", m_pix_xsize ); //8 + logerror("ypix=%02x ", m_pix_ysize ); //9 - logerror("addr=%4i bank=%1i\n", offset, state->m_gfx_rom_bank); + logerror("addr=%4i bank=%1i\n", offset, m_gfx_rom_bank); for (y = 0; y < 16; y++) { logerror("%04x: ", offset + y * 16); for (x = 0; x < 16; x++) { - logerror("%02x ", state->m_cfb_ram[offset + x + y * 16]); + logerror("%02x ", m_cfb_ram[offset + x + y * 16]); } logerror("\n"); } @@ -581,25 +597,25 @@ static READ8_HANDLER( vcu_set_clr_addr_r ) /* copy palette / CLUT(???) */ - switch (state->m_mode) + switch (m_mode) { case 0x13: /* draws sprites?? in mazer blazer and ... wrong sprite in place of targeting-cross and UFO laser */ case 0x03: /* ... this may proove that there is really only one area and that the draw command/palette selector is done via the 'mode' only ... */ - //if (state->m_dbg_clr_e) + //if (m_dbg_clr_e) { - offs = state->m_vcu_gfx_addr; + offs = m_vcu_gfx_addr; - if (state->m_game_id == MAZERBLA) + if (m_game_id == MAZERBLA) color_base = 0x80; /* 0x80 constant: matches Mazer Blazer movie */ - if (state->m_game_id == GREATGUN) + if (m_game_id == GREATGUN) color_base = 0x00; - for (y = 0; y <= state->m_pix_ysize; y++) + for (y = 0; y <= m_pix_ysize; y++) { - for (x = 0; x <= state->m_pix_xsize; x++) + for (x = 0; x <= m_pix_xsize; x++) { UINT8 pixeldata = rom[(offs + (bits >> 3)) % 0x2000]; UINT8 data = (pixeldata >> (6 - (bits & 7))) & 3; @@ -608,21 +624,21 @@ static READ8_HANDLER( vcu_set_clr_addr_r ) switch(data) { case 0: - col = color_base | ((state->m_color1 & 0x0f)); //background PEN + col = color_base | ((m_color1 & 0x0f)); //background PEN break; case 1: - col = color_base | ((state->m_color1 & 0xf0) >> 4); //foreground PEN + col = color_base | ((m_color1 & 0xf0) >> 4); //foreground PEN break; case 2: - col = color_base | ((state->m_color2 & 0x0f)); //background PEN2 + col = color_base | ((m_color2 & 0x0f)); //background PEN2 break; case 3: - col = color_base | ((state->m_color2 & 0xf0) >> 4); //foreground PEN2 + col = color_base | ((m_color2 & 0xf0) >> 4); //foreground PEN2 break; } - if (((state->m_xpos + x) < 256) && ((state->m_ypos + y) < 256)) - state->m_tmpbitmaps[state->m_plane].pix16(state->m_ypos + y, state->m_xpos + x) = col; + if (((m_xpos + x) < 256) && ((m_ypos + y) < 256)) + m_tmpbitmaps[m_plane].pix16(m_ypos + y, m_xpos + x) = col; bits += 2; } @@ -634,97 +650,97 @@ static READ8_HANDLER( vcu_set_clr_addr_r ) case 0x07: offs = offset; - switch(state->m_ypos) + switch(m_ypos) { case 6: //seems to encode palette write { int r, g, b, bit0, bit1, bit2; //pix_xsize and pix_ysize seem to be related to palette length ? (divide by 2) - int lookup_offs = (state->m_ypos >> 1) * 256; //=3*256 + int lookup_offs = (m_ypos >> 1) * 256; //=3*256 for (y = 0; y < 16; y++) { for (x = 0; x < 16; x++) { - UINT8 colour = state->m_cfb_ram[offs + x + y * 16]; + UINT8 colour = m_cfb_ram[offs + x + y * 16]; /* red component */ bit1 = (colour >> 7) & 0x01; bit0 = (colour >> 6) & 0x01; - r = combine_2_weights(state->m_weights_r, bit0, bit1); + r = combine_2_weights(m_weights_r, bit0, bit1); /* green component */ bit2 = (colour >> 5) & 0x01; bit1 = (colour >> 4) & 0x01; bit0 = (colour >> 3) & 0x01; - g = combine_3_weights(state->m_weights_g, bit0, bit1, bit2); + g = combine_3_weights(m_weights_g, bit0, bit1, bit2); /* blue component */ bit2 = (colour >> 2) & 0x01; bit1 = (colour >> 1) & 0x01; bit0 = (colour >> 0) & 0x01; - b = combine_3_weights(state->m_weights_b, bit0, bit1, bit2); + b = combine_3_weights(m_weights_b, bit0, bit1, bit2); if ((x + y * 16) < 255)//keep color 255 free for use as background color - palette_set_color(space->machine(), x + y * 16, MAKE_RGB(r, g, b)); + palette_set_color(machine(), x + y * 16, MAKE_RGB(r, g, b)); - state->m_lookup_ram[lookup_offs + x + y * 16] = colour; + m_lookup_ram[lookup_offs + x + y * 16] = colour; } } } break; case 4: //seems to encode lookup???? table write { - int lookup_offs = (state->m_ypos >> 1) * 256; //=2*256 + int lookup_offs = (m_ypos >> 1) * 256; //=2*256 for (y = 0; y < 16; y++) { for (x = 0; x < 16; x++) { - UINT8 dat = state->m_cfb_ram[offs + x + y * 16]; - state->m_lookup_ram[lookup_offs + x + y * 16] = dat; + UINT8 dat = m_cfb_ram[offs + x + y * 16]; + m_lookup_ram[lookup_offs + x + y * 16] = dat; } } } break; case 2: //seems to encode lookup???? table write { - int lookup_offs = (state->m_ypos >> 1) * 256; //=1*256 + int lookup_offs = (m_ypos >> 1) * 256; //=1*256 for (y = 0; y < 16; y++) { for (x = 0; x < 16; x++) { - UINT8 dat = state->m_cfb_ram[offs + x + y * 16]; - state->m_lookup_ram[lookup_offs + x + y * 16] = dat; + UINT8 dat = m_cfb_ram[offs + x + y * 16]; + m_lookup_ram[lookup_offs + x + y * 16] = dat; } } } break; case 0: //seems to encode lookup???? table write { - int lookup_offs = (state->m_ypos >> 1) * 256; //=0*256 + int lookup_offs = (m_ypos >> 1) * 256; //=0*256 for (y = 0; y < 16; y++) { for (x = 0; x < 16; x++) { - UINT8 dat = state->m_cfb_ram[offs + x + y * 16]; - state->m_lookup_ram[lookup_offs + x + y * 16] = dat; + UINT8 dat = m_cfb_ram[offs + x + y * 16]; + m_lookup_ram[lookup_offs + x + y * 16] = dat; } } } break; default: - popmessage("not supported lookup/color write mode=%2x", state->m_ypos); + popmessage("not supported lookup/color write mode=%2x", m_ypos); break; } break; default: - popmessage("not supported VCU color mode=%2x", state->m_mode); + popmessage("not supported VCU color mode=%2x", m_mode); break; } @@ -737,36 +753,33 @@ static READ8_HANDLER( vcu_set_clr_addr_r ) * *************************************/ -static WRITE8_HANDLER( cfb_zpu_int_req_set_w ) +WRITE8_MEMBER(mazerbla_state::cfb_zpu_int_req_set_w) { - mazerbla_state *state = space->machine().driver_data<mazerbla_state>(); - state->m_zpu_int_vector &= ~2; /* clear D1 on INTA (interrupt acknowledge) */ + m_zpu_int_vector &= ~2; /* clear D1 on INTA (interrupt acknowledge) */ - device_set_input_line(state->m_maincpu, 0, ASSERT_LINE); /* main cpu interrupt (comes from CFB (generated at the start of INT routine on CFB) - vblank?) */ + device_set_input_line(m_maincpu, 0, ASSERT_LINE); /* main cpu interrupt (comes from CFB (generated at the start of INT routine on CFB) - vblank?) */ } -static READ8_HANDLER( cfb_zpu_int_req_clr ) +READ8_MEMBER(mazerbla_state::cfb_zpu_int_req_clr) { - mazerbla_state *state = space->machine().driver_data<mazerbla_state>(); - state->m_zpu_int_vector |= 2; + m_zpu_int_vector |= 2; /* clear the INT line when there are no more interrupt requests */ - if (state->m_zpu_int_vector == 0xff) - device_set_input_line(state->m_maincpu, 0, CLEAR_LINE); + if (m_zpu_int_vector == 0xff) + device_set_input_line(m_maincpu, 0, CLEAR_LINE); return 0; } -static READ8_HANDLER( ls670_0_r ) +READ8_MEMBER(mazerbla_state::ls670_0_r) { - mazerbla_state *state = space->machine().driver_data<mazerbla_state>(); /* set a timer to force synchronization after the read */ - space->machine().scheduler().synchronize(); + machine().scheduler().synchronize(); - return state->m_ls670_0[offset]; + return m_ls670_0[offset]; } static TIMER_CALLBACK( deferred_ls670_0_w ) @@ -778,20 +791,19 @@ static TIMER_CALLBACK( deferred_ls670_0_w ) state->m_ls670_0[offset] = data; } -static WRITE8_HANDLER( ls670_0_w ) +WRITE8_MEMBER(mazerbla_state::ls670_0_w) { /* do this on a timer to let the CPUs synchronize */ - space->machine().scheduler().synchronize(FUNC(deferred_ls670_0_w), (offset << 8) | data); + machine().scheduler().synchronize(FUNC(deferred_ls670_0_w), (offset << 8) | data); } -static READ8_HANDLER( ls670_1_r ) +READ8_MEMBER(mazerbla_state::ls670_1_r) { - mazerbla_state *state = space->machine().driver_data<mazerbla_state>(); /* set a timer to force synchronization after the read */ - space->machine().scheduler().synchronize(); + machine().scheduler().synchronize(); - return state->m_ls670_1[offset]; + return m_ls670_1[offset]; } static TIMER_CALLBACK( deferred_ls670_1_w ) @@ -803,10 +815,10 @@ static TIMER_CALLBACK( deferred_ls670_1_w ) state->m_ls670_1[offset] = data; } -static WRITE8_HANDLER( ls670_1_w ) +WRITE8_MEMBER(mazerbla_state::ls670_1_w) { /* do this on a timer to let the CPUs synchronize */ - space->machine().scheduler().synchronize(FUNC(deferred_ls670_1_w), (offset << 8) | data); + machine().scheduler().synchronize(FUNC(deferred_ls670_1_w), (offset << 8) | data); } @@ -862,53 +874,51 @@ Vertical movement of gun is Strobe 9, Bits 0-7. */ -static WRITE8_HANDLER( zpu_bcd_decoder_w ) +WRITE8_MEMBER(mazerbla_state::zpu_bcd_decoder_w) { - mazerbla_state *state = space->machine().driver_data<mazerbla_state>(); /* bcd decoder used a input select (a mux) for reads from port 0x62 */ - state->m_bcd_7445 = data & 0xf; + m_bcd_7445 = data & 0xf; } -static READ8_HANDLER( zpu_inputs_r ) +READ8_MEMBER(mazerbla_state::zpu_inputs_r) { - mazerbla_state *state = space->machine().driver_data<mazerbla_state>(); static const char *const strobenames[] = { "ZPU", "DSW0", "DSW1", "DSW2", "DSW3", "BUTTONS", "STICK0_X", "STICK0_Y", "STICK1_X", "STICK1_Y", "UNUSED", "UNUSED", "UNUSED", "UNUSED", "UNUSED", "UNUSED" }; UINT8 ret = 0; - ret = input_port_read(space->machine(), strobenames[state->m_bcd_7445]); + ret = input_port_read(machine(), strobenames[m_bcd_7445]); return ret; } -static WRITE8_HANDLER( zpu_led_w ) +WRITE8_MEMBER(mazerbla_state::zpu_led_w) { /* 0x6e - reset (offset = 0)*/ /* 0x6f - set */ - set_led_status(space->machine(), 0, offset & 1); + set_led_status(machine(), 0, offset & 1); } -static WRITE8_HANDLER( zpu_lamps_w) +WRITE8_MEMBER(mazerbla_state::zpu_lamps_w) { /* bit 4 = /LAMP0 */ /* bit 5 = /LAMP1 */ - /*set_led_status(space->machine(), 0, (data & 0x10) >> 4);*/ - /*set_led_status(space->machine(), 1, (data & 0x20) >> 4);*/ + /*set_led_status(machine(), 0, (data & 0x10) >> 4);*/ + /*set_led_status(machine(), 1, (data & 0x20) >> 4);*/ } -static WRITE8_HANDLER( zpu_coin_counter_w ) +WRITE8_MEMBER(mazerbla_state::zpu_coin_counter_w) { /* bit 6 = coin counter */ - coin_counter_w(space->machine(), offset, BIT(data, 6)); + coin_counter_w(machine(), offset, BIT(data, 6)); } -static WRITE8_HANDLER(cfb_led_w) +WRITE8_MEMBER(mazerbla_state::cfb_led_w) { /* bit 7 - led on */ - set_led_status(space->machine(), 2, BIT(data, 7)); + set_led_status(machine(), 2, BIT(data, 7)); } static WRITE8_DEVICE_HANDLER( gg_led_ctrl_w ) @@ -924,13 +934,12 @@ static WRITE8_DEVICE_HANDLER( gg_led_ctrl_w ) * *************************************/ -static WRITE8_HANDLER( vsb_ls273_audio_control_w ) +WRITE8_MEMBER(mazerbla_state::vsb_ls273_audio_control_w) { - mazerbla_state *state = space->machine().driver_data<mazerbla_state>(); - state->m_vsb_ls273 = data; + m_vsb_ls273 = data; /* bit 5 - led on */ - set_led_status(space->machine(), 1, BIT(data, 5)); + set_led_status(machine(), 1, BIT(data, 5)); } static READ8_DEVICE_HANDLER( soundcommand_r ) @@ -948,21 +957,19 @@ static TIMER_CALLBACK( delayed_sound_w ) device_set_input_line(state->m_subcpu, INPUT_LINE_NMI, ASSERT_LINE); } -static WRITE8_HANDLER( main_sound_w ) +WRITE8_MEMBER(mazerbla_state::main_sound_w) { - space->machine().scheduler().synchronize(FUNC(delayed_sound_w), data & 0xff); + machine().scheduler().synchronize(FUNC(delayed_sound_w), data & 0xff); } -static WRITE8_HANDLER( sound_int_clear_w ) +WRITE8_MEMBER(mazerbla_state::sound_int_clear_w) { - mazerbla_state *state = space->machine().driver_data<mazerbla_state>(); - device_set_input_line(state->m_subcpu, 0, CLEAR_LINE); + device_set_input_line(m_subcpu, 0, CLEAR_LINE); } -static WRITE8_HANDLER( sound_nmi_clear_w ) +WRITE8_MEMBER(mazerbla_state::sound_nmi_clear_w) { - mazerbla_state *state = space->machine().driver_data<mazerbla_state>(); - device_set_input_line(state->m_subcpu, INPUT_LINE_NMI, CLEAR_LINE); + device_set_input_line(m_subcpu, INPUT_LINE_NMI, CLEAR_LINE); } @@ -975,19 +982,19 @@ static WRITE8_HANDLER( sound_nmi_clear_w ) static ADDRESS_MAP_START( mazerbla_map, AS_PROGRAM, 8, mazerbla_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("share1") - AM_RANGE(0xd800, 0xd800) AM_READ_LEGACY(cfb_zpu_int_req_clr) + AM_RANGE(0xd800, 0xd800) AM_READ(cfb_zpu_int_req_clr) AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_BASE_SIZE(m_videoram, m_videoram_size) AM_RANGE(0xe800, 0xefff) AM_RAM ADDRESS_MAP_END static ADDRESS_MAP_START( mazerbla_io_map, AS_IO, 8, mazerbla_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x4c, 0x4f) AM_READWRITE_LEGACY(ls670_1_r, ls670_0_w) - AM_RANGE(0x60, 0x60) AM_WRITE_LEGACY(zpu_bcd_decoder_w) - AM_RANGE(0x62, 0x62) AM_READ_LEGACY(zpu_inputs_r) - AM_RANGE(0x68, 0x68) AM_WRITE_LEGACY(zpu_coin_counter_w) - AM_RANGE(0x6a, 0x6a) AM_WRITE_LEGACY(zpu_lamps_w) - AM_RANGE(0x6e, 0x6f) AM_WRITE_LEGACY(zpu_led_w) + AM_RANGE(0x4c, 0x4f) AM_READWRITE(ls670_1_r, ls670_0_w) + AM_RANGE(0x60, 0x60) AM_WRITE(zpu_bcd_decoder_w) + AM_RANGE(0x62, 0x62) AM_READ(zpu_inputs_r) + AM_RANGE(0x68, 0x68) AM_WRITE(zpu_coin_counter_w) + AM_RANGE(0x6a, 0x6a) AM_WRITE(zpu_lamps_w) + AM_RANGE(0x6e, 0x6f) AM_WRITE(zpu_led_w) ADDRESS_MAP_END static ADDRESS_MAP_START( mazerbla_cpu2_map, AS_PROGRAM, 8, mazerbla_state ) @@ -998,28 +1005,28 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( mazerbla_cpu2_io_map, AS_IO, 8, mazerbla_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE_LEGACY(vsb_ls273_audio_control_w) - AM_RANGE(0x80, 0x83) AM_READWRITE_LEGACY(ls670_0_r, ls670_1_w) + AM_RANGE(0x00, 0x00) AM_WRITE(vsb_ls273_audio_control_w) + AM_RANGE(0x80, 0x83) AM_READWRITE(ls670_0_r, ls670_1_w) ADDRESS_MAP_END static ADDRESS_MAP_START( mazerbla_cpu3_map, AS_PROGRAM, 8, mazerbla_state ) AM_RANGE(0x0000, 0x37ff) AM_ROM AM_RANGE(0x3800, 0x3fff) AM_RAM AM_SHARE("share1") AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("bank1") /* GFX roms */ - AM_RANGE(0x4000, 0x4003) AM_WRITE_LEGACY(vcu_video_reg_w) + AM_RANGE(0x4000, 0x4003) AM_WRITE(vcu_video_reg_w) AM_RANGE(0x6000, 0x67ff) AM_RAM AM_BASE(m_cfb_ram) /* Color Frame Buffer PCB, a.k.a. RAM for VCU commands and parameters */ - AM_RANGE(0xa000, 0xa7ff) AM_READ_LEGACY(vcu_set_cmd_param_r) /* VCU command and parameters LOAD */ - AM_RANGE(0xc000, 0xdfff) AM_READ_LEGACY(vcu_set_gfx_addr_r) /* gfx LOAD (blit) */ - AM_RANGE(0xe000, 0xffff) AM_READ_LEGACY(vcu_set_clr_addr_r) /* palette? LOAD */ + AM_RANGE(0xa000, 0xa7ff) AM_READ(vcu_set_cmd_param_r) /* VCU command and parameters LOAD */ + AM_RANGE(0xc000, 0xdfff) AM_READ(vcu_set_gfx_addr_r) /* gfx LOAD (blit) */ + AM_RANGE(0xe000, 0xffff) AM_READ(vcu_set_clr_addr_r) /* palette? LOAD */ ADDRESS_MAP_END static ADDRESS_MAP_START( mazerbla_cpu3_io_map, AS_IO, 8, mazerbla_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x01, 0x01) AM_WRITE_LEGACY(cfb_backgnd_color_w) - AM_RANGE(0x02, 0x02) AM_READWRITE_LEGACY(cfb_port_02_r, cfb_led_w) /* Read = VCU status ? */ - AM_RANGE(0x03, 0x03) AM_WRITE_LEGACY(cfb_zpu_int_req_set_w) - AM_RANGE(0x04, 0x04) AM_WRITE_LEGACY(cfb_rom_bank_sel_w) - AM_RANGE(0x05, 0x05) AM_WRITE_LEGACY(cfb_vbank_w) //visible/writable videopage select? + AM_RANGE(0x01, 0x01) AM_WRITE(cfb_backgnd_color_w) + AM_RANGE(0x02, 0x02) AM_READWRITE(cfb_port_02_r, cfb_led_w) /* Read = VCU status ? */ + AM_RANGE(0x03, 0x03) AM_WRITE(cfb_zpu_int_req_set_w) + AM_RANGE(0x04, 0x04) AM_WRITE(cfb_rom_bank_sel_w) + AM_RANGE(0x05, 0x05) AM_WRITE(cfb_vbank_w) //visible/writable videopage select? ADDRESS_MAP_END @@ -1031,23 +1038,23 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( greatgun_io_map, AS_IO, 8, mazerbla_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x4c, 0x4c) AM_WRITE_LEGACY(main_sound_w) - AM_RANGE(0x60, 0x60) AM_WRITE_LEGACY(zpu_bcd_decoder_w) - AM_RANGE(0x62, 0x62) AM_READ_LEGACY(zpu_inputs_r) + AM_RANGE(0x4c, 0x4c) AM_WRITE(main_sound_w) + AM_RANGE(0x60, 0x60) AM_WRITE(zpu_bcd_decoder_w) + AM_RANGE(0x62, 0x62) AM_READ(zpu_inputs_r) AM_RANGE(0x66, 0x66) AM_WRITENOP AM_RANGE(0x68, 0x68) AM_WRITENOP - AM_RANGE(0x6e, 0x6f) AM_WRITE_LEGACY(zpu_led_w) + AM_RANGE(0x6e, 0x6f) AM_WRITE(zpu_led_w) ADDRESS_MAP_END /* Great Guns has a little different banking layout */ static ADDRESS_MAP_START( greatgun_cpu3_io_map, AS_IO, 8, mazerbla_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x00) AM_WRITENOP - AM_RANGE(0x01, 0x01) AM_WRITE_LEGACY(cfb_backgnd_color_w) - AM_RANGE(0x02, 0x02) AM_READWRITE_LEGACY(cfb_port_02_r, cfb_led_w) /* Read = VCU status ? */ - AM_RANGE(0x03, 0x03) AM_WRITE_LEGACY(cfb_zpu_int_req_set_w) - AM_RANGE(0x04, 0x04) AM_WRITE_LEGACY(cfb_rom_bank_sel_w_gg) - AM_RANGE(0x05, 0x05) AM_WRITE_LEGACY(cfb_vbank_w) //visible/writable videopage select? + AM_RANGE(0x01, 0x01) AM_WRITE(cfb_backgnd_color_w) + AM_RANGE(0x02, 0x02) AM_READWRITE(cfb_port_02_r, cfb_led_w) /* Read = VCU status ? */ + AM_RANGE(0x03, 0x03) AM_WRITE(cfb_zpu_int_req_set_w) + AM_RANGE(0x04, 0x04) AM_WRITE(cfb_rom_bank_sel_w_gg) + AM_RANGE(0x05, 0x05) AM_WRITE(cfb_vbank_w) //visible/writable videopage select? ADDRESS_MAP_END static ADDRESS_MAP_START( greatgun_sound_map, AS_PROGRAM, 8, mazerbla_state ) @@ -1056,8 +1063,8 @@ static ADDRESS_MAP_START( greatgun_sound_map, AS_PROGRAM, 8, mazerbla_state ) AM_RANGE(0x4000, 0x4000) AM_DEVREAD_LEGACY("ay1", ay8910_r) AM_RANGE(0x4000, 0x4001) AM_DEVWRITE_LEGACY("ay1", ay8910_address_data_w) AM_RANGE(0x6000, 0x6001) AM_DEVWRITE_LEGACY("ay2", ay8910_address_data_w) - AM_RANGE(0x8000, 0x8000) AM_WRITE_LEGACY(sound_int_clear_w) - AM_RANGE(0xa000, 0xa000) AM_WRITE_LEGACY(sound_nmi_clear_w) + AM_RANGE(0x8000, 0x8000) AM_WRITE(sound_int_clear_w) + AM_RANGE(0xa000, 0xa000) AM_WRITE(sound_nmi_clear_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/meijinsn.c b/src/mame/drivers/meijinsn.c index af736bcda7d..08c7a8c9cf3 100644 --- a/src/mame/drivers/meijinsn.c +++ b/src/mame/drivers/meijinsn.c @@ -89,78 +89,79 @@ public: int m_mcu_latch; required_device<cpu_device> m_maincpu; + DECLARE_WRITE16_MEMBER(sound_w); + DECLARE_READ16_MEMBER(alpha_mcu_r); }; -static WRITE16_HANDLER( sound_w ) +WRITE16_MEMBER(meijinsn_state::sound_w) { if (ACCESSING_BITS_0_7) soundlatch_w(space, 0, data & 0xff); } -static READ16_HANDLER( alpha_mcu_r ) +READ16_MEMBER(meijinsn_state::alpha_mcu_r) { - meijinsn_state *state = space->machine().driver_data<meijinsn_state>(); static const UINT8 coinage1[2][2] = {{1,1}, {1,2}}; static const UINT8 coinage2[2][2] = {{1,5}, {2,1}}; - int source = state->m_shared_ram[offset]; + int source = m_shared_ram[offset]; switch (offset) { case 0: /* Dipswitch 2 */ - state->m_shared_ram[0] = (source & 0xff00) | input_port_read(space->machine(), "DSW"); + m_shared_ram[0] = (source & 0xff00) | input_port_read(machine(), "DSW"); return 0; case 0x22: /* Coin value */ - state->m_shared_ram[0x22] = (source & 0xff00) | (state->m_credits & 0x00ff); + m_shared_ram[0x22] = (source & 0xff00) | (m_credits & 0x00ff); return 0; case 0x29: /* Query microcontroller for coin insert */ - state->m_credits = 0; + m_credits = 0; - if ((input_port_read(space->machine(), "COINS") & 0x3) == 3) - state->m_mcu_latch = 0; + if ((input_port_read(machine(), "COINS") & 0x3) == 3) + m_mcu_latch = 0; - if ((input_port_read(space->machine(), "COINS") & 0x1) == 0 && !state->m_mcu_latch) + if ((input_port_read(machine(), "COINS") & 0x1) == 0 && !m_mcu_latch) { - state->m_shared_ram[0x29] = (source & 0xff00) | 0x22; // coinA - state->m_shared_ram[0x22] = (source & 0xff00) | 0x00; - state->m_mcu_latch = 1; + m_shared_ram[0x29] = (source & 0xff00) | 0x22; // coinA + m_shared_ram[0x22] = (source & 0xff00) | 0x00; + m_mcu_latch = 1; - state->m_coinvalue = (~input_port_read(space->machine(), "DSW")>>3) & 1; + m_coinvalue = (~input_port_read(machine(), "DSW")>>3) & 1; - state->m_deposits1++; - if (state->m_deposits1 == coinage1[state->m_coinvalue][0]) + m_deposits1++; + if (m_deposits1 == coinage1[m_coinvalue][0]) { - state->m_credits = coinage1[state->m_coinvalue][1]; - state->m_deposits1 = 0; + m_credits = coinage1[m_coinvalue][1]; + m_deposits1 = 0; } else - state->m_credits = 0; + m_credits = 0; } - else if ((input_port_read(space->machine(), "COINS") & 0x2) == 0 && !state->m_mcu_latch) + else if ((input_port_read(machine(), "COINS") & 0x2) == 0 && !m_mcu_latch) { - state->m_shared_ram[0x29] = (source & 0xff00) | 0x22; // coinA - state->m_shared_ram[0x22] = (source & 0xff00) | 0x00; - state->m_mcu_latch = 1; + m_shared_ram[0x29] = (source & 0xff00) | 0x22; // coinA + m_shared_ram[0x22] = (source & 0xff00) | 0x00; + m_mcu_latch = 1; - state->m_coinvalue = (~input_port_read(space->machine(), "DSW") >> 3) & 1; + m_coinvalue = (~input_port_read(machine(), "DSW") >> 3) & 1; - state->m_deposits2++; - if (state->m_deposits2 == coinage2[state->m_coinvalue][0]) + m_deposits2++; + if (m_deposits2 == coinage2[m_coinvalue][0]) { - state->m_credits = coinage2[state->m_coinvalue][1]; - state->m_deposits2 = 0; + m_credits = coinage2[m_coinvalue][1]; + m_deposits2 = 0; } else - state->m_credits = 0; + m_credits = 0; } else { - state->m_shared_ram[0x29] = (source & 0xff00) | 0x22; + m_shared_ram[0x29] = (source & 0xff00) | 0x22; } return 0; } @@ -171,13 +172,13 @@ static READ16_HANDLER( alpha_mcu_r ) static ADDRESS_MAP_START( meijinsn_map, AS_PROGRAM, 16, meijinsn_state ) AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080e00, 0x080fff) AM_READ_LEGACY(alpha_mcu_r) AM_WRITENOP + AM_RANGE(0x080e00, 0x080fff) AM_READ(alpha_mcu_r) AM_WRITENOP AM_RANGE(0x100000, 0x107fff) AM_RAM AM_BASE(m_videoram) AM_RANGE(0x180000, 0x180dff) AM_RAM AM_RANGE(0x180e00, 0x180fff) AM_RAM AM_BASE(m_shared_ram) AM_RANGE(0x181000, 0x181fff) AM_RAM AM_RANGE(0x1c0000, 0x1c0001) AM_READ_PORT("P2") - AM_RANGE(0x1a0000, 0x1a0001) AM_READ_PORT("P1") AM_WRITE_LEGACY(sound_w) + AM_RANGE(0x1a0000, 0x1a0001) AM_READ_PORT("P1") AM_WRITE(sound_w) ADDRESS_MAP_END static ADDRESS_MAP_START( meijinsn_sound_map, AS_PROGRAM, 8, meijinsn_state ) diff --git a/src/mame/drivers/merit.c b/src/mame/drivers/merit.c index 9775be5208c..cb0742802e8 100644 --- a/src/mame/drivers/merit.c +++ b/src/mame/drivers/merit.c @@ -70,6 +70,13 @@ public: int m_question_address; int m_decryption_key; UINT8 *m_backup_ram; + DECLARE_READ8_MEMBER(questions_r); + DECLARE_WRITE8_MEMBER(low_offset_w); + DECLARE_WRITE8_MEMBER(med_offset_w); + DECLARE_WRITE8_MEMBER(high_offset_w); + DECLARE_READ8_MEMBER(palette_r); + DECLARE_WRITE8_MEMBER(palette_w); + DECLARE_WRITE8_MEMBER(casino5_bank_w); }; @@ -87,13 +94,12 @@ static MACHINE_START(merit) } -static READ8_HANDLER( questions_r ) +READ8_MEMBER(merit_state::questions_r) { - merit_state *state = space->machine().driver_data<merit_state>(); - UINT8 *questions = space->machine().region("user1")->base(); + UINT8 *questions = machine().region("user1")->base(); int address; - switch(state->m_question_address >> 16) + switch(m_question_address >> 16) { case 0x30: address = 0x00000; break; @@ -131,57 +137,52 @@ static READ8_HANDLER( questions_r ) * break; */ - default: logerror("read unknown question rom: %02X\n",state->m_question_address >> 16); + default: logerror("read unknown question rom: %02X\n",m_question_address >> 16); return 0xff; } - address |= state->m_question_address & 0xffff; + address |= m_question_address & 0xffff; return questions[address]; } -static WRITE8_HANDLER( low_offset_w ) +WRITE8_MEMBER(merit_state::low_offset_w) { - merit_state *state = space->machine().driver_data<merit_state>(); - offset = (offset & 0xf0) | ((offset - state->m_decryption_key) & 0x0f); + offset = (offset & 0xf0) | ((offset - m_decryption_key) & 0x0f); offset = BITSWAP8(offset,7,6,5,4,0,1,2,3); - state->m_question_address = (state->m_question_address & 0xffff00) | offset; + m_question_address = (m_question_address & 0xffff00) | offset; } -static WRITE8_HANDLER( med_offset_w ) +WRITE8_MEMBER(merit_state::med_offset_w) { - merit_state *state = space->machine().driver_data<merit_state>(); - offset = (offset & 0xf0) | ((offset - state->m_decryption_key) & 0x0f); + offset = (offset & 0xf0) | ((offset - m_decryption_key) & 0x0f); offset = BITSWAP8(offset,7,6,5,4,0,1,2,3); - state->m_question_address = (state->m_question_address & 0xff00ff) | (offset << 8); + m_question_address = (m_question_address & 0xff00ff) | (offset << 8); } -static WRITE8_HANDLER( high_offset_w ) +WRITE8_MEMBER(merit_state::high_offset_w) { - merit_state *state = space->machine().driver_data<merit_state>(); offset = BITSWAP8(offset,7,6,5,4,0,1,2,3); - state->m_question_address = (state->m_question_address & 0x00ffff) | (offset << 16); + m_question_address = (m_question_address & 0x00ffff) | (offset << 16); } -static READ8_HANDLER( palette_r ) +READ8_MEMBER(merit_state::palette_r) { - merit_state *state = space->machine().driver_data<merit_state>(); int co; - co = ((state->m_ram_attr[offset] & 0x7F) << 3) | (offset & 0x07); - return state->m_ram_palette[co]; + co = ((m_ram_attr[offset] & 0x7F) << 3) | (offset & 0x07); + return m_ram_palette[co]; } -static WRITE8_HANDLER( palette_w ) +WRITE8_MEMBER(merit_state::palette_w) { - merit_state *state = space->machine().driver_data<merit_state>(); int co; - space->machine().primary_screen->update_now(); + machine().primary_screen->update_now(); data &= 0x0f; - co = ((state->m_ram_attr[offset] & 0x7F) << 3) | (offset & 0x07); - state->m_ram_palette[co] = data; + co = ((m_ram_attr[offset] & 0x7F) << 3) | (offset & 0x07); + m_ram_palette[co] = data; } @@ -326,17 +327,17 @@ static WRITE8_DEVICE_HANDLER( misc_couple_w ) state->m_backup_ram[0x1011] = 0xc9; //ret } -static WRITE8_HANDLER(casino5_bank_w) +WRITE8_MEMBER(merit_state::casino5_bank_w) { if ( data == 0 ) { - memory_set_bank(space->machine(), "bank1", 1); - memory_set_bank(space->machine(), "bank2", 1); + memory_set_bank(machine(), "bank1", 1); + memory_set_bank(machine(), "bank2", 1); } else if ( data == 0xff ) { - memory_set_bank(space->machine(), "bank1", 0); - memory_set_bank(space->machine(), "bank2", 0); + memory_set_bank(machine(), "bank1", 0); + memory_set_bank(machine(), "bank2", 0); } else { @@ -358,7 +359,7 @@ static ADDRESS_MAP_START( pitboss_map, AS_PROGRAM, 8, merit_state ) AM_RANGE(0xe001, 0xe001) AM_DEVWRITE("crtc", mc6845_device, register_w) AM_RANGE(0xe800, 0xefff) AM_RAM AM_BASE(m_ram_attr) AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_BASE(m_ram_video) - AM_RANGE(0xf800, 0xfbff) AM_READWRITE_LEGACY(palette_r, palette_w) + AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w) ADDRESS_MAP_END static ADDRESS_MAP_START( casino5_map, AS_PROGRAM, 8, merit_state ) @@ -366,7 +367,7 @@ static ADDRESS_MAP_START( casino5_map, AS_PROGRAM, 8, merit_state ) AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1") AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("bank2") AM_RANGE(0x6000, 0x6fff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x7000, 0x7000) AM_WRITE_LEGACY(casino5_bank_w) + AM_RANGE(0x7000, 0x7000) AM_WRITE(casino5_bank_w) AM_RANGE(0x7001, 0x7fff) AM_RAM AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w) AM_RANGE(0xc000, 0xc003) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w) @@ -374,7 +375,7 @@ static ADDRESS_MAP_START( casino5_map, AS_PROGRAM, 8, merit_state ) AM_RANGE(0xe001, 0xe001) AM_DEVWRITE("crtc", mc6845_device, register_w) AM_RANGE(0xe800, 0xefff) AM_RAM AM_BASE(m_ram_attr) AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_BASE(m_ram_video) - AM_RANGE(0xf800, 0xfbff) AM_READWRITE_LEGACY(palette_r, palette_w) + AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w) ADDRESS_MAP_END static ADDRESS_MAP_START( bigappg_map, AS_PROGRAM, 8, merit_state ) @@ -386,7 +387,7 @@ static ADDRESS_MAP_START( bigappg_map, AS_PROGRAM, 8, merit_state ) AM_RANGE(0xe001, 0xe001) AM_DEVWRITE("crtc", mc6845_device, register_w) AM_RANGE(0xe800, 0xefff) AM_RAM AM_BASE(m_ram_attr) AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_BASE(m_ram_video) - AM_RANGE(0xf800, 0xfbff) AM_READWRITE_LEGACY(palette_r, palette_w) + AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w) ADDRESS_MAP_END static ADDRESS_MAP_START( dodge_map, AS_PROGRAM, 8, merit_state ) @@ -398,7 +399,7 @@ static ADDRESS_MAP_START( dodge_map, AS_PROGRAM, 8, merit_state ) AM_RANGE(0xe001, 0xe001) AM_DEVWRITE("crtc", mc6845_device, register_w) AM_RANGE(0xe800, 0xefff) AM_RAM AM_BASE(m_ram_attr) AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_BASE(m_ram_video) - AM_RANGE(0xf800, 0xfbff) AM_READWRITE_LEGACY(palette_r, palette_w) + AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w) ADDRESS_MAP_END /* Address decoding is done by prom u13 on crt200a hardware. It decodes @@ -408,9 +409,9 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( trvwhiz_map, AS_PROGRAM, 8, merit_state ) AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4c00, 0x4cff) AM_READWRITE_LEGACY(questions_r, high_offset_w) - AM_RANGE(0x5400, 0x54ff) AM_WRITE_LEGACY(low_offset_w) - AM_RANGE(0x5800, 0x58ff) AM_WRITE_LEGACY(med_offset_w) + AM_RANGE(0x4c00, 0x4cff) AM_READWRITE(questions_r, high_offset_w) + AM_RANGE(0x5400, 0x54ff) AM_WRITE(low_offset_w) + AM_RANGE(0x5800, 0x58ff) AM_WRITE(med_offset_w) AM_RANGE(0x6000, 0x67ff) AM_RAM AM_RANGE(0xa000, 0xa003) AM_MIRROR(0x1df0) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w) AM_RANGE(0xc000, 0xc003) AM_MIRROR(0x1df0) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w) @@ -418,7 +419,7 @@ static ADDRESS_MAP_START( trvwhiz_map, AS_PROGRAM, 8, merit_state ) AM_RANGE(0xe001, 0xe001) AM_MIRROR(0x05f0) AM_DEVWRITE("crtc", mc6845_device, register_w) AM_RANGE(0xe800, 0xefff) AM_RAM AM_BASE(m_ram_attr) AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_BASE(m_ram_video) - AM_RANGE(0xf800, 0xfbff) AM_READWRITE_LEGACY(palette_r, palette_w) + AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w) ADDRESS_MAP_END static ADDRESS_MAP_START( trvwhiz_io_map, AS_IO, 8, merit_state ) @@ -432,14 +433,14 @@ static ADDRESS_MAP_START( phrcraze_map, AS_PROGRAM, 8, merit_state ) AM_RANGE(0xa000, 0xbfff) AM_RAM AM_RANGE(0xc008, 0xc00b) AM_MIRROR(0x1df0) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w) AM_RANGE(0xc00c, 0xc00f) AM_MIRROR(0x1df0) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w) - AM_RANGE(0xce00, 0xceff) AM_READWRITE_LEGACY(questions_r, high_offset_w) - AM_RANGE(0xd600, 0xd6ff) AM_WRITE_LEGACY(low_offset_w) - AM_RANGE(0xda00, 0xdaff) AM_WRITE_LEGACY(med_offset_w) + AM_RANGE(0xce00, 0xceff) AM_READWRITE(questions_r, high_offset_w) + AM_RANGE(0xd600, 0xd6ff) AM_WRITE(low_offset_w) + AM_RANGE(0xda00, 0xdaff) AM_WRITE(med_offset_w) AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x05f0) AM_DEVWRITE("crtc", mc6845_device, address_w) AM_RANGE(0xe001, 0xe001) AM_MIRROR(0x05f0) AM_DEVWRITE("crtc", mc6845_device, register_w) AM_RANGE(0xe800, 0xefff) AM_RAM AM_BASE(m_ram_attr) AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_BASE(m_ram_video) - AM_RANGE(0xf800, 0xfbff) AM_READWRITE_LEGACY(palette_r, palette_w) + AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w) ADDRESS_MAP_END static ADDRESS_MAP_START( phrcraze_io_map, AS_IO, 8, merit_state ) @@ -453,14 +454,14 @@ static ADDRESS_MAP_START( tictac_map, AS_PROGRAM, 8, merit_state ) AM_RANGE(0x8000, 0x9fff) AM_RAM AM_RANGE(0xc004, 0xc007) AM_MIRROR(0x1df0) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w) AM_RANGE(0xc008, 0xc00b) AM_MIRROR(0x1df0) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w) - AM_RANGE(0xce00, 0xceff) AM_READWRITE_LEGACY(questions_r, high_offset_w) - AM_RANGE(0xd600, 0xd6ff) AM_WRITE_LEGACY(low_offset_w) - AM_RANGE(0xda00, 0xdaff) AM_WRITE_LEGACY(med_offset_w) + AM_RANGE(0xce00, 0xceff) AM_READWRITE(questions_r, high_offset_w) + AM_RANGE(0xd600, 0xd6ff) AM_WRITE(low_offset_w) + AM_RANGE(0xda00, 0xdaff) AM_WRITE(med_offset_w) AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x05f0) AM_DEVWRITE("crtc", mc6845_device, address_w) AM_RANGE(0xe001, 0xe001) AM_MIRROR(0x05f0) AM_DEVWRITE("crtc", mc6845_device, register_w) AM_RANGE(0xe800, 0xefff) AM_RAM AM_BASE(m_ram_attr) AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_BASE(m_ram_video) - AM_RANGE(0xf800, 0xfbff) AM_READWRITE_LEGACY(palette_r, palette_w) + AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w) ADDRESS_MAP_END static ADDRESS_MAP_START( tictac_io_map, AS_IO, 8, merit_state ) @@ -474,14 +475,14 @@ static ADDRESS_MAP_START( trvwhziv_map, AS_PROGRAM, 8, merit_state ) AM_RANGE(0xa000, 0xbfff) AM_RAM AM_RANGE(0xc004, 0xc007) AM_MIRROR(0x1df0) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w) AM_RANGE(0xc008, 0xc00b) AM_MIRROR(0x1df0) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w) - AM_RANGE(0xce00, 0xceff) AM_READWRITE_LEGACY(questions_r, high_offset_w) - AM_RANGE(0xd600, 0xd6ff) AM_WRITE_LEGACY(low_offset_w) - AM_RANGE(0xda00, 0xdaff) AM_WRITE_LEGACY(med_offset_w) + AM_RANGE(0xce00, 0xceff) AM_READWRITE(questions_r, high_offset_w) + AM_RANGE(0xd600, 0xd6ff) AM_WRITE(low_offset_w) + AM_RANGE(0xda00, 0xdaff) AM_WRITE(med_offset_w) AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x05f0) AM_DEVWRITE("crtc", mc6845_device, address_w) AM_RANGE(0xe001, 0xe001) AM_MIRROR(0x05f0) AM_DEVWRITE("crtc", mc6845_device, register_w) AM_RANGE(0xe800, 0xefff) AM_RAM AM_BASE(m_ram_attr) AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_BASE(m_ram_video) - AM_RANGE(0xf800, 0xfbff) AM_READWRITE_LEGACY(palette_r, palette_w) + AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w) ADDRESS_MAP_END static ADDRESS_MAP_START( dtrvwz5_map, AS_PROGRAM, 8, merit_state ) @@ -490,14 +491,14 @@ static ADDRESS_MAP_START( dtrvwz5_map, AS_PROGRAM, 8, merit_state ) AM_RANGE(0xb000, 0xb0ff) AM_ROM /* protection? code jumps here */ AM_RANGE(0xc004, 0xc007) AM_MIRROR(0x1df0) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w) AM_RANGE(0xc008, 0xc00b) AM_MIRROR(0x1df0) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w) - AM_RANGE(0xce00, 0xceff) AM_READWRITE_LEGACY(questions_r, high_offset_w) - AM_RANGE(0xd600, 0xd6ff) AM_WRITE_LEGACY(low_offset_w) - AM_RANGE(0xda00, 0xdaff) AM_WRITE_LEGACY(med_offset_w) + AM_RANGE(0xce00, 0xceff) AM_READWRITE(questions_r, high_offset_w) + AM_RANGE(0xd600, 0xd6ff) AM_WRITE(low_offset_w) + AM_RANGE(0xda00, 0xdaff) AM_WRITE(med_offset_w) AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x05f0) AM_DEVWRITE("crtc", mc6845_device, address_w) AM_RANGE(0xe001, 0xe001) AM_MIRROR(0x05f0) AM_DEVWRITE("crtc", mc6845_device, register_w) AM_RANGE(0xe800, 0xefff) AM_RAM AM_BASE(m_ram_attr) AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_BASE(m_ram_video) - AM_RANGE(0xf800, 0xfbff) AM_READWRITE_LEGACY(palette_r, palette_w) + AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w) ADDRESS_MAP_END static ADDRESS_MAP_START( couple_map, AS_PROGRAM, 8, merit_state ) @@ -510,7 +511,7 @@ static ADDRESS_MAP_START( couple_map, AS_PROGRAM, 8, merit_state ) AM_RANGE(0xe001, 0xe001) AM_DEVWRITE("crtc", mc6845_device, register_w) AM_RANGE(0xe800, 0xefff) AM_RAM AM_BASE(m_ram_attr) AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_BASE(m_ram_video) - AM_RANGE(0xf800, 0xfbff) AM_READWRITE_LEGACY(palette_r, palette_w) + AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/mgolf.c b/src/mame/drivers/mgolf.c index 6cb8d2e7a26..5eac162b082 100644 --- a/src/mame/drivers/mgolf.c +++ b/src/mame/drivers/mgolf.c @@ -27,6 +27,11 @@ public: /* devices */ device_t *m_maincpu; + DECLARE_WRITE8_MEMBER(mgolf_vram_w); + DECLARE_READ8_MEMBER(mgolf_wram_r); + DECLARE_READ8_MEMBER(mgolf_dial_r); + DECLARE_READ8_MEMBER(mgolf_misc_r); + DECLARE_WRITE8_MEMBER(mgolf_wram_w); }; @@ -39,11 +44,10 @@ static TILE_GET_INFO( get_tile_info ) } -static WRITE8_HANDLER( mgolf_vram_w ) +WRITE8_MEMBER(mgolf_state::mgolf_vram_w) { - mgolf_state *state = space->machine().driver_data<mgolf_state>(); - state->m_video_ram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_video_ram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } @@ -130,22 +134,21 @@ static double calc_plunger_pos(running_machine &machine) } -static READ8_HANDLER( mgolf_wram_r ) +READ8_MEMBER(mgolf_state::mgolf_wram_r) { - mgolf_state *state = space->machine().driver_data<mgolf_state>(); - return state->m_video_ram[0x380 + offset]; + return m_video_ram[0x380 + offset]; } -static READ8_HANDLER( mgolf_dial_r ) +READ8_MEMBER(mgolf_state::mgolf_dial_r) { - UINT8 val = input_port_read(space->machine(), "41"); + UINT8 val = input_port_read(machine(), "41"); - if ((input_port_read(space->machine(), "DIAL") + 0x00) & 0x20) + if ((input_port_read(machine(), "DIAL") + 0x00) & 0x20) { val |= 0x01; } - if ((input_port_read(space->machine(), "DIAL") + 0x10) & 0x20) + if ((input_port_read(machine(), "DIAL") + 0x10) & 0x20) { val |= 0x02; } @@ -154,11 +157,11 @@ static READ8_HANDLER( mgolf_dial_r ) } -static READ8_HANDLER( mgolf_misc_r ) +READ8_MEMBER(mgolf_state::mgolf_misc_r) { - double plunger = calc_plunger_pos(space->machine()); /* see Video Pinball */ + double plunger = calc_plunger_pos(machine()); /* see Video Pinball */ - UINT8 val = input_port_read(space->machine(), "61"); + UINT8 val = input_port_read(machine(), "61"); if (plunger >= 0.000 && plunger <= 0.001) { @@ -173,10 +176,9 @@ static READ8_HANDLER( mgolf_misc_r ) } -static WRITE8_HANDLER( mgolf_wram_w ) +WRITE8_MEMBER(mgolf_state::mgolf_wram_w) { - mgolf_state *state = space->machine().driver_data<mgolf_state>(); - state->m_video_ram[0x380 + offset] = data; + m_video_ram[0x380 + offset] = data; } @@ -185,11 +187,11 @@ static ADDRESS_MAP_START( cpu_map, AS_PROGRAM, 8, mgolf_state ) ADDRESS_MAP_GLOBAL_MASK(0x3fff) AM_RANGE(0x0040, 0x0040) AM_READ_PORT("40") - AM_RANGE(0x0041, 0x0041) AM_READ_LEGACY(mgolf_dial_r) + AM_RANGE(0x0041, 0x0041) AM_READ(mgolf_dial_r) AM_RANGE(0x0060, 0x0060) AM_READ_PORT("60") - AM_RANGE(0x0061, 0x0061) AM_READ_LEGACY(mgolf_misc_r) - AM_RANGE(0x0080, 0x00ff) AM_READ_LEGACY(mgolf_wram_r) - AM_RANGE(0x0180, 0x01ff) AM_READ_LEGACY(mgolf_wram_r) + AM_RANGE(0x0061, 0x0061) AM_READ(mgolf_misc_r) + AM_RANGE(0x0080, 0x00ff) AM_READ(mgolf_wram_r) + AM_RANGE(0x0180, 0x01ff) AM_READ(mgolf_wram_r) AM_RANGE(0x0800, 0x0bff) AM_READONLY AM_RANGE(0x0000, 0x0009) AM_WRITENOP @@ -203,9 +205,9 @@ static ADDRESS_MAP_START( cpu_map, AS_PROGRAM, 8, mgolf_state ) AM_RANGE(0x006a, 0x006a) AM_WRITENOP AM_RANGE(0x006c, 0x006c) AM_WRITENOP AM_RANGE(0x006d, 0x006d) AM_WRITENOP - AM_RANGE(0x0080, 0x00ff) AM_WRITE_LEGACY(mgolf_wram_w) - AM_RANGE(0x0180, 0x01ff) AM_WRITE_LEGACY(mgolf_wram_w) - AM_RANGE(0x0800, 0x0bff) AM_WRITE_LEGACY(mgolf_vram_w) AM_BASE(m_video_ram) + AM_RANGE(0x0080, 0x00ff) AM_WRITE(mgolf_wram_w) + AM_RANGE(0x0180, 0x01ff) AM_WRITE(mgolf_wram_w) + AM_RANGE(0x0800, 0x0bff) AM_WRITE(mgolf_vram_w) AM_BASE(m_video_ram) AM_RANGE(0x2000, 0x3fff) AM_ROM ADDRESS_MAP_END diff --git a/src/mame/drivers/midas.c b/src/mame/drivers/midas.c index 2316fb20ff2..f40d5079382 100644 --- a/src/mame/drivers/midas.c +++ b/src/mame/drivers/midas.c @@ -66,6 +66,13 @@ public: UINT16 *m_gfxram; UINT16 *m_gfxregs; tilemap_t *m_tmap; + DECLARE_READ16_MEMBER(ret_ffff); + DECLARE_WRITE16_MEMBER(midas_gfxregs_w); + DECLARE_WRITE16_MEMBER(livequiz_coin_w); + DECLARE_READ16_MEMBER(hammer_sensor_r); + DECLARE_WRITE16_MEMBER(hammer_coin_w); + DECLARE_WRITE16_MEMBER(hammer_motor_w); + DECLARE_WRITE16_MEMBER(hammer_led_w); }; @@ -214,25 +221,24 @@ static WRITE16_DEVICE_HANDLER( midas_eeprom_w ) } } -static READ16_HANDLER( ret_ffff ) +READ16_MEMBER(midas_state::ret_ffff) { return 0xffff; } -static WRITE16_HANDLER( midas_gfxregs_w ) +WRITE16_MEMBER(midas_state::midas_gfxregs_w) { - midas_state *state = space->machine().driver_data<midas_state>(); - COMBINE_DATA( state->m_gfxregs + offset ); + COMBINE_DATA( m_gfxregs + offset ); switch( offset ) { case 1: { - UINT16 addr = state->m_gfxregs[0]; - state->m_gfxram[addr] = data; - state->m_gfxregs[0] += state->m_gfxregs[2]; + UINT16 addr = m_gfxregs[0]; + m_gfxram[addr] = data; + m_gfxregs[0] += m_gfxregs[2]; - if ( addr >= 0x7000 && addr <= 0x7fff ) state->m_tmap->mark_tile_dirty(addr - 0x7000); + if ( addr >= 0x7000 && addr <= 0x7fff ) m_tmap->mark_tile_dirty(addr - 0x7000); break; } @@ -243,11 +249,11 @@ static WRITE16_HANDLER( midas_gfxregs_w ) Live Quiz Show ***************************************************************************************/ -static WRITE16_HANDLER( livequiz_coin_w ) +WRITE16_MEMBER(midas_state::livequiz_coin_w) { if (ACCESSING_BITS_0_7) { - coin_counter_w(space->machine(), 0, data & 0x0001); + coin_counter_w(machine(), 0, data & 0x0001); } #ifdef MAME_DEBUG // popmessage("coin %04X", data); @@ -262,19 +268,19 @@ static ADDRESS_MAP_START( livequiz_map, AS_PROGRAM, 16, midas_state ) AM_RANGE(0x940000, 0x940001) AM_READ_PORT("PLAYER2") AM_RANGE(0x980000, 0x980001) AM_READ_PORT("START") - AM_RANGE(0x980000, 0x980001) AM_WRITE_LEGACY(livequiz_coin_w ) + AM_RANGE(0x980000, 0x980001) AM_WRITE(livequiz_coin_w ) AM_RANGE(0x9a0000, 0x9a0001) AM_DEVWRITE_LEGACY("eeprom", midas_eeprom_w ) - AM_RANGE(0x9c0000, 0x9c0005) AM_WRITE_LEGACY(midas_gfxregs_w ) AM_BASE(m_gfxregs ) + AM_RANGE(0x9c0000, 0x9c0005) AM_WRITE(midas_gfxregs_w ) AM_BASE(m_gfxregs ) AM_RANGE(0xa00000, 0xa3ffff) AM_RAM_WRITE_LEGACY(paletteram16_xrgb_word_be_w ) AM_BASE_GENERIC( paletteram ) AM_RANGE(0xa40000, 0xa7ffff) AM_RAM - AM_RANGE(0xb00000, 0xb00001) AM_READ_LEGACY(ret_ffff ) - AM_RANGE(0xb20000, 0xb20001) AM_READ_LEGACY(ret_ffff ) - AM_RANGE(0xb40000, 0xb40001) AM_READ_LEGACY(ret_ffff ) - AM_RANGE(0xb60000, 0xb60001) AM_READ_LEGACY(ret_ffff ) + AM_RANGE(0xb00000, 0xb00001) AM_READ(ret_ffff ) + AM_RANGE(0xb20000, 0xb20001) AM_READ(ret_ffff ) + AM_RANGE(0xb40000, 0xb40001) AM_READ(ret_ffff ) + AM_RANGE(0xb60000, 0xb60001) AM_READ(ret_ffff ) AM_RANGE(0xb80008, 0xb8000b) AM_DEVREADWRITE8_LEGACY("ymz", ymz280b_r, ymz280b_w, 0x00ff ) @@ -290,33 +296,33 @@ ADDRESS_MAP_END Hammer ***************************************************************************************/ -static READ16_HANDLER( hammer_sensor_r ) +READ16_MEMBER(midas_state::hammer_sensor_r) { - if (input_port_read(space->machine(), "HAMMER") & 0x80) + if (input_port_read(machine(), "HAMMER") & 0x80) return 0xffff; - return (input_port_read(space->machine(), "SENSORY") << 8) | input_port_read(space->machine(), "SENSORX"); + return (input_port_read(machine(), "SENSORY") << 8) | input_port_read(machine(), "SENSORX"); } -static WRITE16_HANDLER( hammer_coin_w ) +WRITE16_MEMBER(midas_state::hammer_coin_w) { if (ACCESSING_BITS_0_7) { - coin_counter_w(space->machine(), 0, data & 0x0001); - coin_counter_w(space->machine(), 1, data & 0x0002); + coin_counter_w(machine(), 0, data & 0x0001); + coin_counter_w(machine(), 1, data & 0x0002); } #ifdef MAME_DEBUG // popmessage("coin %04X", data); #endif } -static WRITE16_HANDLER( hammer_motor_w ) +WRITE16_MEMBER(midas_state::hammer_motor_w) { if (ACCESSING_BITS_0_7) { - ticket_dispenser_w(space->machine().device("prize1"), 0, (data & 0x0001) << 7); - ticket_dispenser_w(space->machine().device("prize2"), 0, (data & 0x0002) << 6); - ticket_dispenser_w(space->machine().device("ticket"), 0, (data & 0x0010) << 3); + ticket_dispenser_w(machine().device("prize1"), 0, (data & 0x0001) << 7); + ticket_dispenser_w(machine().device("prize2"), 0, (data & 0x0002) << 6); + ticket_dispenser_w(machine().device("ticket"), 0, (data & 0x0010) << 3); // data & 0x0080 ? } #ifdef MAME_DEBUG @@ -324,7 +330,7 @@ static WRITE16_HANDLER( hammer_motor_w ) #endif } -static WRITE16_HANDLER( hammer_led_w ) +WRITE16_MEMBER(midas_state::hammer_led_w) { #ifdef MAME_DEBUG // popmessage("led %04X", data); @@ -339,30 +345,30 @@ static ADDRESS_MAP_START( hammer_map, AS_PROGRAM, 16, midas_state ) AM_RANGE(0x940000, 0x940001) AM_READ_PORT("IN0") AM_RANGE(0x980000, 0x980001) AM_READ_PORT("TILT") - AM_RANGE(0x980000, 0x980001) AM_WRITE_LEGACY(hammer_coin_w ) + AM_RANGE(0x980000, 0x980001) AM_WRITE(hammer_coin_w ) AM_RANGE(0x9c000c, 0x9c000d) AM_WRITENOP // IRQ Ack - AM_RANGE(0x9c000e, 0x9c000f) AM_WRITE_LEGACY(hammer_led_w ) + AM_RANGE(0x9c000e, 0x9c000f) AM_WRITE(hammer_led_w ) AM_RANGE(0x9a0000, 0x9a0001) AM_DEVWRITE_LEGACY("eeprom", midas_eeprom_w ) - AM_RANGE(0x9c0000, 0x9c0005) AM_WRITE_LEGACY(midas_gfxregs_w ) AM_BASE(m_gfxregs ) + AM_RANGE(0x9c0000, 0x9c0005) AM_WRITE(midas_gfxregs_w ) AM_BASE(m_gfxregs ) AM_RANGE(0xa00000, 0xa3ffff) AM_RAM_WRITE_LEGACY(paletteram16_xrgb_word_be_w ) AM_BASE_GENERIC( paletteram ) AM_RANGE(0xa40000, 0xa7ffff) AM_RAM - AM_RANGE(0xb00000, 0xb00001) AM_READ_LEGACY(ret_ffff ) - AM_RANGE(0xb20000, 0xb20001) AM_READ_LEGACY(ret_ffff ) - AM_RANGE(0xb40000, 0xb40001) AM_READ_LEGACY(ret_ffff ) - AM_RANGE(0xb60000, 0xb60001) AM_READ_LEGACY(ret_ffff ) + AM_RANGE(0xb00000, 0xb00001) AM_READ(ret_ffff ) + AM_RANGE(0xb20000, 0xb20001) AM_READ(ret_ffff ) + AM_RANGE(0xb40000, 0xb40001) AM_READ(ret_ffff ) + AM_RANGE(0xb60000, 0xb60001) AM_READ(ret_ffff ) AM_RANGE(0xb80008, 0xb8000b) AM_DEVREADWRITE8_LEGACY("ymz", ymz280b_r, ymz280b_w, 0x00ff ) AM_RANGE(0xba0000, 0xba0001) AM_READ_PORT("IN1") AM_RANGE(0xbc0000, 0xbc0001) AM_READ_PORT("HAMMER") - AM_RANGE(0xbc0002, 0xbc0003) AM_WRITE_LEGACY(hammer_motor_w ) + AM_RANGE(0xbc0002, 0xbc0003) AM_WRITE(hammer_motor_w ) - AM_RANGE(0xbc0004, 0xbc0005) AM_READ_LEGACY(hammer_sensor_r ) + AM_RANGE(0xbc0004, 0xbc0005) AM_READ(hammer_sensor_r ) AM_RANGE(0xd00000, 0xd1ffff) AM_RAM // zoom table? diff --git a/src/mame/drivers/mil4000.c b/src/mame/drivers/mil4000.c index a0d53ec5635..79e947e5f7d 100644 --- a/src/mame/drivers/mil4000.c +++ b/src/mame/drivers/mil4000.c @@ -107,6 +107,12 @@ public: tilemap_t *m_sc3_tilemap; UINT16 m_vblank; UINT16 m_hblank; + DECLARE_READ16_MEMBER(hvretrace_r); + DECLARE_WRITE16_MEMBER(sc0_vram_w); + DECLARE_WRITE16_MEMBER(sc1_vram_w); + DECLARE_WRITE16_MEMBER(sc2_vram_w); + DECLARE_WRITE16_MEMBER(sc3_vram_w); + DECLARE_WRITE16_MEMBER(output_w); }; @@ -190,54 +196,49 @@ static SCREEN_UPDATE_IND16(mil4000) } /*TODO*/ -static READ16_HANDLER( hvretrace_r ) +READ16_MEMBER(mil4000_state::hvretrace_r) { - mil4000_state *state = space->machine().driver_data<mil4000_state>(); UINT16 res; res = 0; - state->m_vblank^=1; - state->m_hblank^=1; + m_vblank^=1; + m_hblank^=1; /*V-Blank*/ - if (state->m_vblank) + if (m_vblank) res|= 0x80; /*H-Blank*/ - if (state->m_hblank) + if (m_hblank) res|= 0x40; return res; } -static WRITE16_HANDLER( sc0_vram_w ) +WRITE16_MEMBER(mil4000_state::sc0_vram_w) { - mil4000_state *state = space->machine().driver_data<mil4000_state>(); - state->m_sc0_vram[offset] = data; - state->m_sc0_tilemap->mark_tile_dirty(offset/2); + m_sc0_vram[offset] = data; + m_sc0_tilemap->mark_tile_dirty(offset/2); } -static WRITE16_HANDLER( sc1_vram_w ) +WRITE16_MEMBER(mil4000_state::sc1_vram_w) { - mil4000_state *state = space->machine().driver_data<mil4000_state>(); - state->m_sc1_vram[offset] = data; - state->m_sc1_tilemap->mark_tile_dirty(offset/2); + m_sc1_vram[offset] = data; + m_sc1_tilemap->mark_tile_dirty(offset/2); } -static WRITE16_HANDLER( sc2_vram_w ) +WRITE16_MEMBER(mil4000_state::sc2_vram_w) { - mil4000_state *state = space->machine().driver_data<mil4000_state>(); - state->m_sc2_vram[offset] = data; - state->m_sc2_tilemap->mark_tile_dirty(offset/2); + m_sc2_vram[offset] = data; + m_sc2_tilemap->mark_tile_dirty(offset/2); } -static WRITE16_HANDLER( sc3_vram_w ) +WRITE16_MEMBER(mil4000_state::sc3_vram_w) { - mil4000_state *state = space->machine().driver_data<mil4000_state>(); - state->m_sc3_vram[offset] = data; - state->m_sc3_tilemap->mark_tile_dirty(offset/2); + m_sc3_vram[offset] = data; + m_sc3_tilemap->mark_tile_dirty(offset/2); } /*end of video stuff*/ @@ -252,12 +253,12 @@ static WRITE16_HANDLER( sc3_vram_w ) ---- ---- ---- --x- Hold 2 ---- ---- ---- ---x Hold 1 */ -static WRITE16_HANDLER( output_w ) +WRITE16_MEMBER(mil4000_state::output_w) { int i; for(i=0;i<3;i++) - coin_counter_w(space->machine(), i, data & 0x2000); + coin_counter_w(machine(), i, data & 0x2000); output_set_lamp_value(0, (data) & 1); /* HOLD1 */ output_set_lamp_value(1, (data >> 1) & 1); /* HOLD2 */ @@ -272,16 +273,16 @@ static WRITE16_HANDLER( output_w ) static ADDRESS_MAP_START( mil4000_map, AS_PROGRAM, 16, mil4000_state ) AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x500000, 0x503fff) AM_RAM_WRITE_LEGACY(sc0_vram_w) AM_BASE(m_sc0_vram) // CY62256L-70, U77 - AM_RANGE(0x504000, 0x507fff) AM_RAM_WRITE_LEGACY(sc1_vram_w) AM_BASE(m_sc1_vram) // CY62256L-70, U77 - AM_RANGE(0x508000, 0x50bfff) AM_RAM_WRITE_LEGACY(sc2_vram_w) AM_BASE(m_sc2_vram) // CY62256L-70, U78 - AM_RANGE(0x50c000, 0x50ffff) AM_RAM_WRITE_LEGACY(sc3_vram_w) AM_BASE(m_sc3_vram) // CY62256L-70, U78 + AM_RANGE(0x500000, 0x503fff) AM_RAM_WRITE(sc0_vram_w) AM_BASE(m_sc0_vram) // CY62256L-70, U77 + AM_RANGE(0x504000, 0x507fff) AM_RAM_WRITE(sc1_vram_w) AM_BASE(m_sc1_vram) // CY62256L-70, U77 + AM_RANGE(0x508000, 0x50bfff) AM_RAM_WRITE(sc2_vram_w) AM_BASE(m_sc2_vram) // CY62256L-70, U78 + AM_RANGE(0x50c000, 0x50ffff) AM_RAM_WRITE(sc3_vram_w) AM_BASE(m_sc3_vram) // CY62256L-70, U78 AM_RANGE(0x708000, 0x708001) AM_READ_PORT("IN0") AM_RANGE(0x708002, 0x708003) AM_READ_PORT("IN1") - AM_RANGE(0x708004, 0x708005) AM_READ_LEGACY(hvretrace_r) + AM_RANGE(0x708004, 0x708005) AM_READ(hvretrace_r) AM_RANGE(0x708006, 0x708007) AM_READ_PORT("IN2") - AM_RANGE(0x708008, 0x708009) AM_WRITE_LEGACY(output_w) + AM_RANGE(0x708008, 0x708009) AM_WRITE(output_w) AM_RANGE(0x708010, 0x708011) AM_NOP //touch screen AM_RANGE(0x70801e, 0x70801f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) diff --git a/src/mame/drivers/miniboy7.c b/src/mame/drivers/miniboy7.c index 480e373c0e7..6e5e4d1597d 100644 --- a/src/mame/drivers/miniboy7.c +++ b/src/mame/drivers/miniboy7.c @@ -161,6 +161,8 @@ public: UINT8 *m_videoram; UINT8 *m_colorram; tilemap_t *m_bg_tilemap; + DECLARE_WRITE8_MEMBER(miniboy7_videoram_w); + DECLARE_WRITE8_MEMBER(miniboy7_colorram_w); }; @@ -168,18 +170,16 @@ public: * Video Hardware * ***********************************/ -static WRITE8_HANDLER( miniboy7_videoram_w ) +WRITE8_MEMBER(miniboy7_state::miniboy7_videoram_w) { - miniboy7_state *state = space->machine().driver_data<miniboy7_state>(); - state->m_videoram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_videoram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( miniboy7_colorram_w ) +WRITE8_MEMBER(miniboy7_state::miniboy7_colorram_w) { - miniboy7_state *state = space->machine().driver_data<miniboy7_state>(); - state->m_colorram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_colorram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } static TILE_GET_INFO( get_bg_tile_info ) @@ -268,8 +268,8 @@ static PALETTE_INIT( miniboy7 ) static ADDRESS_MAP_START( miniboy7_map, AS_PROGRAM, 8, miniboy7_state ) AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM? */ - AM_RANGE(0x0800, 0x0fff) AM_RAM_WRITE_LEGACY(miniboy7_videoram_w) AM_BASE(m_videoram) - AM_RANGE(0x1000, 0x17ff) AM_RAM_WRITE_LEGACY(miniboy7_colorram_w) AM_BASE(m_colorram) + AM_RANGE(0x0800, 0x0fff) AM_RAM_WRITE(miniboy7_videoram_w) AM_BASE(m_videoram) + AM_RANGE(0x1000, 0x17ff) AM_RAM_WRITE(miniboy7_colorram_w) AM_BASE(m_colorram) AM_RANGE(0x1800, 0x25ff) AM_RAM /* looks like videoram */ AM_RANGE(0x2600, 0x27ff) AM_RAM AM_RANGE(0x2800, 0x2800) AM_DEVWRITE("crtc", mc6845_device, address_w) diff --git a/src/mame/drivers/mirage.c b/src/mame/drivers/mirage.c index 0d17806a305..4db79ab20b2 100644 --- a/src/mame/drivers/mirage.c +++ b/src/mame/drivers/mirage.c @@ -67,6 +67,10 @@ public: required_device<okim6295_device> m_oki_sfx; required_device<okim6295_device> m_oki_bgm; required_device<buffered_spriteram16_device> m_spriteram; + DECLARE_WRITE16_MEMBER(mirage_mux_w); + DECLARE_READ16_MEMBER(mirage_input_r); + DECLARE_WRITE16_MEMBER(okim1_rombank_w); + DECLARE_WRITE16_MEMBER(okim0_rombank_w); }; static VIDEO_START( mirage ) @@ -96,39 +100,35 @@ static SCREEN_UPDATE_RGB32( mirage ) } -static WRITE16_HANDLER( mirage_mux_w ) +WRITE16_MEMBER(miragemi_state::mirage_mux_w) { - miragemi_state *state = space->machine().driver_data<miragemi_state>(); - state->m_mux_data = data & 0x1f; + m_mux_data = data & 0x1f; } -static READ16_HANDLER( mirage_input_r ) +READ16_MEMBER(miragemi_state::mirage_input_r) { - miragemi_state *state = space->machine().driver_data<miragemi_state>(); - switch (state->m_mux_data & 0x1f) + switch (m_mux_data & 0x1f) { - case 0x01: return input_port_read(space->machine(), "KEY0"); - case 0x02: return input_port_read(space->machine(), "KEY1"); - case 0x04: return input_port_read(space->machine(), "KEY2"); - case 0x08: return input_port_read(space->machine(), "KEY3"); - case 0x10: return input_port_read(space->machine(), "KEY4"); + case 0x01: return input_port_read(machine(), "KEY0"); + case 0x02: return input_port_read(machine(), "KEY1"); + case 0x04: return input_port_read(machine(), "KEY2"); + case 0x08: return input_port_read(machine(), "KEY3"); + case 0x10: return input_port_read(machine(), "KEY4"); } return 0xffff; } -static WRITE16_HANDLER( okim1_rombank_w ) +WRITE16_MEMBER(miragemi_state::okim1_rombank_w) { - miragemi_state *state = space->machine().driver_data<miragemi_state>(); - state->m_oki_sfx->set_bank_base(0x40000 * (data & 0x3)); + m_oki_sfx->set_bank_base(0x40000 * (data & 0x3)); } -static WRITE16_HANDLER( okim0_rombank_w ) +WRITE16_MEMBER(miragemi_state::okim0_rombank_w) { - miragemi_state *state = space->machine().driver_data<miragemi_state>(); /*bits 4-6 used on POST? */ - state->m_oki_bgm->set_bank_base(0x40000 * (data & 0x7)); + m_oki_bgm->set_bank_base(0x40000 * (data & 0x7)); } static ADDRESS_MAP_START( mirage_map, AS_PROGRAM, 16, miragemi_state ) @@ -148,10 +148,10 @@ static ADDRESS_MAP_START( mirage_map, AS_PROGRAM, 16, miragemi_state ) AM_RANGE(0x160000, 0x160001) AM_WRITENOP AM_RANGE(0x168000, 0x16800f) AM_DEVWRITE_LEGACY("tilegen1", deco16ic_pf_control_w) AM_RANGE(0x16a000, 0x16a001) AM_WRITENOP - AM_RANGE(0x16c000, 0x16c001) AM_WRITE_LEGACY(okim1_rombank_w) - AM_RANGE(0x16c002, 0x16c003) AM_WRITE_LEGACY(okim0_rombank_w) - AM_RANGE(0x16c004, 0x16c005) AM_WRITE_LEGACY(mirage_mux_w) - AM_RANGE(0x16c006, 0x16c007) AM_READ_LEGACY(mirage_input_r) + AM_RANGE(0x16c000, 0x16c001) AM_WRITE(okim1_rombank_w) + AM_RANGE(0x16c002, 0x16c003) AM_WRITE(okim0_rombank_w) + AM_RANGE(0x16c004, 0x16c005) AM_WRITE(mirage_mux_w) + AM_RANGE(0x16c006, 0x16c007) AM_READ(mirage_input_r) AM_RANGE(0x16e000, 0x16e001) AM_WRITENOP AM_RANGE(0x16e002, 0x16e003) AM_READ_PORT("SYSTEM_IN") AM_RANGE(0x170000, 0x173fff) AM_RAM diff --git a/src/mame/drivers/mirax.c b/src/mame/drivers/mirax.c index 45e3e6b22ac..dc33325e558 100644 --- a/src/mame/drivers/mirax.c +++ b/src/mame/drivers/mirax.c @@ -83,6 +83,11 @@ public: UINT8 m_nmi_mask; UINT8 *m_videoram; UINT8 *m_colorram; + DECLARE_WRITE8_MEMBER(audio_w); + DECLARE_READ8_MEMBER(unk_r); + DECLARE_WRITE8_MEMBER(nmi_mask_w); + DECLARE_WRITE8_MEMBER(mirax_sound_cmd_w); + DECLARE_WRITE8_MEMBER(coin_lockout_w); }; @@ -177,11 +182,10 @@ static SOUND_START(mirax) state->m_nAyCtrl = 0x00; } -static WRITE8_HANDLER(audio_w) +WRITE8_MEMBER(mirax_state::audio_w) { - mirax_state *state = space->machine().driver_data<mirax_state>(); - state->m_nAyCtrl=offset; + m_nAyCtrl=offset; } static WRITE8_DEVICE_HANDLER(ay_sel) @@ -194,30 +198,29 @@ static WRITE8_DEVICE_HANDLER(ay_sel) } } -static READ8_HANDLER( unk_r ) +READ8_MEMBER(mirax_state::unk_r) { return 0xff; } -static WRITE8_HANDLER( nmi_mask_w ) +WRITE8_MEMBER(mirax_state::nmi_mask_w) { - mirax_state *state = space->machine().driver_data<mirax_state>(); - state->m_nmi_mask = data & 1; + m_nmi_mask = data & 1; if(data & 0xfe) printf("Warning: %02x written at $f501\n",data); } -static WRITE8_HANDLER( mirax_sound_cmd_w ) +WRITE8_MEMBER(mirax_state::mirax_sound_cmd_w) { soundlatch_w(space, 0, data & 0xff); - cputag_set_input_line(space->machine(), "audiocpu", INPUT_LINE_NMI, PULSE_LINE); + cputag_set_input_line(machine(), "audiocpu", INPUT_LINE_NMI, PULSE_LINE); } /* might be coin counter instead */ -static WRITE8_HANDLER( coin_lockout_w ) +WRITE8_MEMBER(mirax_state::coin_lockout_w) { - coin_lockout_w(space->machine(), 0,data & 1); - coin_lockout_w(space->machine(), 1,data & 1); + coin_lockout_w(space, 0,data & 1); + coin_lockout_w(space, 1,data & 1); } static ADDRESS_MAP_START( mirax_main_map, AS_PROGRAM, 8, mirax_state ) @@ -229,13 +232,13 @@ static ADDRESS_MAP_START( mirax_main_map, AS_PROGRAM, 8, mirax_state ) AM_RANGE(0xf000, 0xf000) AM_READ_PORT("P1") AM_RANGE(0xf100, 0xf100) AM_READ_PORT("P2") AM_RANGE(0xf200, 0xf200) AM_READ_PORT("DSW1") - AM_RANGE(0xf300, 0xf300) AM_READ_LEGACY(unk_r) //watchdog? value is always read then discarded + AM_RANGE(0xf300, 0xf300) AM_READ(unk_r) //watchdog? value is always read then discarded AM_RANGE(0xf400, 0xf400) AM_READ_PORT("DSW2") - AM_RANGE(0xf500, 0xf500) AM_WRITE_LEGACY(coin_lockout_w) - AM_RANGE(0xf501, 0xf501) AM_WRITE_LEGACY(nmi_mask_w) + AM_RANGE(0xf500, 0xf500) AM_WRITE(coin_lockout_w) + AM_RANGE(0xf501, 0xf501) AM_WRITE(nmi_mask_w) // AM_RANGE(0xf506, 0xf506) // AM_RANGE(0xf507, 0xf507) - AM_RANGE(0xf800, 0xf800) AM_WRITE_LEGACY(mirax_sound_cmd_w) + AM_RANGE(0xf800, 0xf800) AM_WRITE(mirax_sound_cmd_w) // AM_RANGE(0xf900, 0xf900) //sound cmd mirror? ack? ADDRESS_MAP_END @@ -252,7 +255,7 @@ static ADDRESS_MAP_START( mirax_sound_map, AS_PROGRAM, 8, mirax_state ) AM_RANGE(0xe401, 0xe401) AM_WRITENOP AM_RANGE(0xe403, 0xe403) AM_DEVWRITE_LEGACY("ay2", ay_sel) //2nd ay ? - AM_RANGE(0xf900, 0xf9ff) AM_WRITE_LEGACY(audio_w) + AM_RANGE(0xf900, 0xf9ff) AM_WRITE(audio_w) ADDRESS_MAP_END static const gfx_layout layout16 = diff --git a/src/mame/drivers/missile.c b/src/mame/drivers/missile.c index 48be1bfd8cc..1e1733cc3bb 100644 --- a/src/mame/drivers/missile.c +++ b/src/mame/drivers/missile.c @@ -367,6 +367,8 @@ public: UINT8 m_flipscreen; UINT8 m_madsel_delay; UINT16 m_madsel_lastpc; + DECLARE_WRITE8_MEMBER(missile_w); + DECLARE_READ8_MEMBER(missile_r); }; @@ -707,14 +709,13 @@ static SCREEN_UPDATE_IND16( missile ) * *************************************/ -static WRITE8_HANDLER( missile_w ) +WRITE8_MEMBER(missile_state::missile_w) { - missile_state *state = space->machine().driver_data<missile_state>(); - UINT8 *videoram = state->m_videoram; + UINT8 *videoram = m_videoram; /* if we're in MADSEL mode, write to video RAM */ - if (get_madsel(space)) + if (get_madsel(&space)) { - write_vram(space, offset, data); + write_vram(&space, offset, data); return; } @@ -727,53 +728,52 @@ static WRITE8_HANDLER( missile_w ) /* POKEY */ else if (offset < 0x4800) - pokey_w(space->machine().device("pokey"), offset & 0x0f, data); + pokey_w(machine().device("pokey"), offset & 0x0f, data); /* OUT0 */ else if (offset < 0x4900) { - state->m_flipscreen = ~data & 0x40; - coin_counter_w(space->machine(), 0, data & 0x20); - coin_counter_w(space->machine(), 1, data & 0x10); - coin_counter_w(space->machine(), 2, data & 0x08); - set_led_status(space->machine(), 1, ~data & 0x04); - set_led_status(space->machine(), 0, ~data & 0x02); - state->m_ctrld = data & 1; + m_flipscreen = ~data & 0x40; + coin_counter_w(machine(), 0, data & 0x20); + coin_counter_w(machine(), 1, data & 0x10); + coin_counter_w(machine(), 2, data & 0x08); + set_led_status(machine(), 1, ~data & 0x04); + set_led_status(machine(), 0, ~data & 0x02); + m_ctrld = data & 1; } /* color RAM */ else if (offset >= 0x4b00 && offset < 0x4c00) - palette_set_color_rgb(space->machine(), offset & 7, pal1bit(~data >> 3), pal1bit(~data >> 2), pal1bit(~data >> 1)); + palette_set_color_rgb(machine(), offset & 7, pal1bit(~data >> 3), pal1bit(~data >> 2), pal1bit(~data >> 1)); /* watchdog */ else if (offset >= 0x4c00 && offset < 0x4d00) - watchdog_reset(space->machine()); + watchdog_reset(machine()); /* interrupt ack */ else if (offset >= 0x4d00 && offset < 0x4e00) { - if (state->m_irq_state) + if (m_irq_state) { - cputag_set_input_line(space->machine(), "maincpu", 0, CLEAR_LINE); - state->m_irq_state = 0; + cputag_set_input_line(machine(), "maincpu", 0, CLEAR_LINE); + m_irq_state = 0; } } /* anything else */ else - logerror("%04X:Unknown write to %04X = %02X\n", cpu_get_pc(&space->device()), offset, data); + logerror("%04X:Unknown write to %04X = %02X\n", cpu_get_pc(&space.device()), offset, data); } -static READ8_HANDLER( missile_r ) +READ8_MEMBER(missile_state::missile_r) { - missile_state *state = space->machine().driver_data<missile_state>(); - UINT8 *videoram = state->m_videoram; + UINT8 *videoram = m_videoram; UINT8 result = 0xff; /* if we're in MADSEL mode, read from video RAM */ - if (get_madsel(space)) - return read_vram(space, offset); + if (get_madsel(&space)) + return read_vram(&space, offset); /* otherwise, strip A15 and handle manually */ offset &= 0x7fff; @@ -784,37 +784,37 @@ static READ8_HANDLER( missile_r ) /* ROM */ else if (offset >= 0x5000) - result = space->machine().region("maincpu")->base()[offset]; + result = machine().region("maincpu")->base()[offset]; /* POKEY */ else if (offset < 0x4800) - result = pokey_r(space->machine().device("pokey"), offset & 0x0f); + result = pokey_r(machine().device("pokey"), offset & 0x0f); /* IN0 */ else if (offset < 0x4900) { - if (state->m_ctrld) /* trackball */ + if (m_ctrld) /* trackball */ { - if (!state->m_flipscreen) - result = ((input_port_read(space->machine(), "TRACK0_Y") << 4) & 0xf0) | (input_port_read(space->machine(), "TRACK0_X") & 0x0f); + if (!m_flipscreen) + result = ((input_port_read(machine(), "TRACK0_Y") << 4) & 0xf0) | (input_port_read(machine(), "TRACK0_X") & 0x0f); else - result = ((input_port_read(space->machine(), "TRACK1_Y") << 4) & 0xf0) | (input_port_read(space->machine(), "TRACK1_X") & 0x0f); + result = ((input_port_read(machine(), "TRACK1_Y") << 4) & 0xf0) | (input_port_read(machine(), "TRACK1_X") & 0x0f); } else /* buttons */ - result = input_port_read(space->machine(), "IN0"); + result = input_port_read(machine(), "IN0"); } /* IN1 */ else if (offset < 0x4a00) - result = input_port_read(space->machine(), "IN1"); + result = input_port_read(machine(), "IN1"); /* IN2 */ else if (offset < 0x4b00) - result = input_port_read(space->machine(), "R10"); + result = input_port_read(machine(), "R10"); /* anything else */ else - logerror("%04X:Unknown read from %04X\n", cpu_get_pc(&space->device()), offset); + logerror("%04X:Unknown read from %04X\n", cpu_get_pc(&space.device()), offset); return result; } @@ -828,7 +828,7 @@ static READ8_HANDLER( missile_r ) /* complete memory map derived from schematics (implemented above) */ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, missile_state ) - AM_RANGE(0x0000, 0xffff) AM_READWRITE_LEGACY(missile_r, missile_w) AM_BASE(m_videoram) + AM_RANGE(0x0000, 0xffff) AM_READWRITE(missile_r, missile_w) AM_BASE(m_videoram) ADDRESS_MAP_END diff --git a/src/mame/drivers/mjsister.c b/src/mame/drivers/mjsister.c index ca12a2c6c7f..29ed49174cd 100644 --- a/src/mame/drivers/mjsister.c +++ b/src/mame/drivers/mjsister.c @@ -49,6 +49,14 @@ public: /* memory */ UINT8 m_videoram0[0x8000]; UINT8 m_videoram1[0x8000]; + DECLARE_WRITE8_MEMBER(mjsister_videoram_w); + DECLARE_WRITE8_MEMBER(mjsister_dac_adr_s_w); + DECLARE_WRITE8_MEMBER(mjsister_dac_adr_e_w); + DECLARE_WRITE8_MEMBER(mjsister_banksel1_w); + DECLARE_WRITE8_MEMBER(mjsister_banksel2_w); + DECLARE_WRITE8_MEMBER(mjsister_input_sel1_w); + DECLARE_WRITE8_MEMBER(mjsister_input_sel2_w); + DECLARE_READ8_MEMBER(mjsister_keys_r); }; @@ -103,18 +111,17 @@ static void mjsister_plot1( running_machine &machine, int offset, UINT8 data ) state->m_tmpbitmap1->pix16(y, x * 2 + 1) = c2; } -static WRITE8_HANDLER( mjsister_videoram_w ) +WRITE8_MEMBER(mjsister_state::mjsister_videoram_w) { - mjsister_state *state = space->machine().driver_data<mjsister_state>(); - if (state->m_vrambank) + if (m_vrambank) { - state->m_videoram1[offset] = data; - mjsister_plot1(space->machine(), offset, data); + m_videoram1[offset] = data; + mjsister_plot1(machine(), offset, data); } else { - state->m_videoram0[offset] = data; - mjsister_plot0(space->machine(), offset, data); + m_videoram0[offset] = data; + mjsister_plot0(machine(), offset, data); } } @@ -169,104 +176,97 @@ static TIMER_CALLBACK( dac_callback ) state->m_dac_busy = 0; } -static WRITE8_HANDLER( mjsister_dac_adr_s_w ) +WRITE8_MEMBER(mjsister_state::mjsister_dac_adr_s_w) { - mjsister_state *state = space->machine().driver_data<mjsister_state>(); - state->m_dac_adr_s = data; + m_dac_adr_s = data; } -static WRITE8_HANDLER( mjsister_dac_adr_e_w ) +WRITE8_MEMBER(mjsister_state::mjsister_dac_adr_e_w) { - mjsister_state *state = space->machine().driver_data<mjsister_state>(); - state->m_dac_adr_e = data; - state->m_dac_adr = state->m_dac_adr_s << 8; + m_dac_adr_e = data; + m_dac_adr = m_dac_adr_s << 8; - if (state->m_dac_busy == 0) - space->machine().scheduler().synchronize(FUNC(dac_callback)); + if (m_dac_busy == 0) + machine().scheduler().synchronize(FUNC(dac_callback)); - state->m_dac_busy = 1; + m_dac_busy = 1; } -static WRITE8_HANDLER( mjsister_banksel1_w ) +WRITE8_MEMBER(mjsister_state::mjsister_banksel1_w) { - mjsister_state *state = space->machine().driver_data<mjsister_state>(); - int tmp = state->m_colorbank; + int tmp = m_colorbank; switch (data) { - case 0x0: state->m_rombank0 = 0 ; break; - case 0x1: state->m_rombank0 = 1 ; break; + case 0x0: m_rombank0 = 0 ; break; + case 0x1: m_rombank0 = 1 ; break; - case 0x2: state->m_flip_screen = 0 ; break; - case 0x3: state->m_flip_screen = 1 ; break; + case 0x2: m_flip_screen = 0 ; break; + case 0x3: m_flip_screen = 1 ; break; - case 0x4: state->m_colorbank &= 0xfe; break; - case 0x5: state->m_colorbank |= 0x01; break; - case 0x6: state->m_colorbank &= 0xfd; break; - case 0x7: state->m_colorbank |= 0x02; break; - case 0x8: state->m_colorbank &= 0xfb; break; - case 0x9: state->m_colorbank |= 0x04; break; + case 0x4: m_colorbank &= 0xfe; break; + case 0x5: m_colorbank |= 0x01; break; + case 0x6: m_colorbank &= 0xfd; break; + case 0x7: m_colorbank |= 0x02; break; + case 0x8: m_colorbank &= 0xfb; break; + case 0x9: m_colorbank |= 0x04; break; - case 0xa: state->m_video_enable = 0 ; break; - case 0xb: state->m_video_enable = 1 ; break; + case 0xa: m_video_enable = 0 ; break; + case 0xb: m_video_enable = 1 ; break; - case 0xe: state->m_vrambank = 0 ; break; - case 0xf: state->m_vrambank = 1 ; break; + case 0xe: m_vrambank = 0 ; break; + case 0xf: m_vrambank = 1 ; break; default: - logerror("%04x p30_w:%02x\n", cpu_get_pc(&space->device()), data); + logerror("%04x p30_w:%02x\n", cpu_get_pc(&space.device()), data); } - if (tmp != state->m_colorbank) - state->m_screen_redraw = 1; + if (tmp != m_colorbank) + m_screen_redraw = 1; - memory_set_bank(space->machine(), "bank1", state->m_rombank0 * 2 + state->m_rombank1); + memory_set_bank(machine(), "bank1", m_rombank0 * 2 + m_rombank1); } -static WRITE8_HANDLER( mjsister_banksel2_w ) +WRITE8_MEMBER(mjsister_state::mjsister_banksel2_w) { - mjsister_state *state = space->machine().driver_data<mjsister_state>(); switch (data) { - case 0xa: state->m_dac_bank = 0; break; - case 0xb: state->m_dac_bank = 1; break; + case 0xa: m_dac_bank = 0; break; + case 0xb: m_dac_bank = 1; break; - case 0xc: state->m_rombank1 = 0; break; - case 0xd: state->m_rombank1 = 1; break; + case 0xc: m_rombank1 = 0; break; + case 0xd: m_rombank1 = 1; break; default: - logerror("%04x p31_w:%02x\n", cpu_get_pc(&space->device()), data); + logerror("%04x p31_w:%02x\n", cpu_get_pc(&space.device()), data); } - memory_set_bank(space->machine(), "bank1", state->m_rombank0 * 2 + state->m_rombank1); + memory_set_bank(machine(), "bank1", m_rombank0 * 2 + m_rombank1); } -static WRITE8_HANDLER( mjsister_input_sel1_w ) +WRITE8_MEMBER(mjsister_state::mjsister_input_sel1_w) { - mjsister_state *state = space->machine().driver_data<mjsister_state>(); - state->m_input_sel1 = data; + m_input_sel1 = data; } -static WRITE8_HANDLER( mjsister_input_sel2_w ) +WRITE8_MEMBER(mjsister_state::mjsister_input_sel2_w) { - mjsister_state *state = space->machine().driver_data<mjsister_state>(); - state->m_input_sel2 = data; + m_input_sel2 = data; } -static READ8_HANDLER( mjsister_keys_r ) +READ8_MEMBER(mjsister_state::mjsister_keys_r) { - mjsister_state *state = space->machine().driver_data<mjsister_state>(); int p, i, ret = 0; static const char *const keynames[] = { "KEY0", "KEY1", "KEY2", "KEY3", "KEY4", "KEY5" }; - p = state->m_input_sel1 & 0x3f; - // p |= ((state->m_input_sel2 & 8) << 4) | ((state->m_input_sel2 & 0x20) << 1); + p = m_input_sel1 & 0x3f; + // p |= ((m_input_sel2 & 8) << 4) | ((m_input_sel2 & 0x20) << 1); for (i = 0; i < 6; i++) { if (BIT(p, i)) - ret |= input_port_read(space->machine(), keynames[i]); + ret |= input_port_read(machine(), keynames[i]); } return ret; @@ -281,7 +281,7 @@ static READ8_HANDLER( mjsister_keys_r ) static ADDRESS_MAP_START( mjsister_map, AS_PROGRAM, 8, mjsister_state ) AM_RANGE(0x0000, 0x77ff) AM_ROM AM_RANGE(0x7800, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") AM_WRITE_LEGACY(mjsister_videoram_w) + AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") AM_WRITE(mjsister_videoram_w) ADDRESS_MAP_END static ADDRESS_MAP_START( mjsister_io_map, AS_IO, 8, mjsister_state ) @@ -290,14 +290,14 @@ static ADDRESS_MAP_START( mjsister_io_map, AS_IO, 8, mjsister_state ) AM_RANGE(0x10, 0x10) AM_DEVWRITE_LEGACY("aysnd", ay8910_address_w) AM_RANGE(0x11, 0x11) AM_DEVREAD_LEGACY("aysnd", ay8910_r) AM_RANGE(0x12, 0x12) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_w) - AM_RANGE(0x20, 0x20) AM_READ_LEGACY(mjsister_keys_r) + AM_RANGE(0x20, 0x20) AM_READ(mjsister_keys_r) AM_RANGE(0x21, 0x21) AM_READ_PORT("IN0") - AM_RANGE(0x30, 0x30) AM_WRITE_LEGACY(mjsister_banksel1_w) - AM_RANGE(0x31, 0x31) AM_WRITE_LEGACY(mjsister_banksel2_w) - AM_RANGE(0x32, 0x32) AM_WRITE_LEGACY(mjsister_input_sel1_w) - AM_RANGE(0x33, 0x33) AM_WRITE_LEGACY(mjsister_input_sel2_w) - AM_RANGE(0x34, 0x34) AM_WRITE_LEGACY(mjsister_dac_adr_s_w) - AM_RANGE(0x35, 0x35) AM_WRITE_LEGACY(mjsister_dac_adr_e_w) + AM_RANGE(0x30, 0x30) AM_WRITE(mjsister_banksel1_w) + AM_RANGE(0x31, 0x31) AM_WRITE(mjsister_banksel2_w) + AM_RANGE(0x32, 0x32) AM_WRITE(mjsister_input_sel1_w) + AM_RANGE(0x33, 0x33) AM_WRITE(mjsister_input_sel2_w) + AM_RANGE(0x34, 0x34) AM_WRITE(mjsister_dac_adr_s_w) + AM_RANGE(0x35, 0x35) AM_WRITE(mjsister_dac_adr_e_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/mlanding.c b/src/mame/drivers/mlanding.c index 3b35882a617..cea3c19bafa 100644 --- a/src/mame/drivers/mlanding.c +++ b/src/mame/drivers/mlanding.c @@ -46,6 +46,27 @@ public: UINT16 m_dsp_HOLD_signal; UINT8 *m_mecha_ram; UINT8 m_trigger; + DECLARE_WRITE16_MEMBER(ml_tileram_w); + DECLARE_READ16_MEMBER(ml_tileram_r); + DECLARE_READ16_MEMBER(io1_r); + DECLARE_WRITE16_MEMBER(ml_output_w); + DECLARE_WRITE16_MEMBER(ml_sub_reset_w); + DECLARE_WRITE16_MEMBER(ml_to_sound_w); + DECLARE_WRITE8_MEMBER(ml_sound_to_main_w); + DECLARE_READ16_MEMBER(ml_analog1_lsb_r); + DECLARE_READ16_MEMBER(ml_analog2_lsb_r); + DECLARE_READ16_MEMBER(ml_analog3_lsb_r); + DECLARE_READ16_MEMBER(ml_analog1_msb_r); + DECLARE_READ16_MEMBER(ml_analog2_msb_r); + DECLARE_READ16_MEMBER(ml_analog3_msb_r); + DECLARE_WRITE16_MEMBER(ml_nmi_to_sound_w); + DECLARE_READ16_MEMBER(ml_mecha_ram_r); + DECLARE_WRITE16_MEMBER(ml_mecha_ram_w); + DECLARE_WRITE8_MEMBER(ml_msm_start_msb_w); + DECLARE_READ16_MEMBER(ml_dotram_r); + DECLARE_WRITE16_MEMBER(ml_dotram_w); + DECLARE_READ16_MEMBER(dsp_HOLD_signal_r); + DECLARE_READ8_MEMBER(test_r); }; @@ -200,22 +221,19 @@ static int start_dma(running_machine &machine) return 1; } -static WRITE16_HANDLER(ml_tileram_w) +WRITE16_MEMBER(mlanding_state::ml_tileram_w) { - mlanding_state *state = space->machine().driver_data<mlanding_state>(); - COMBINE_DATA(&state->m_ml_tileram[offset]); + COMBINE_DATA(&m_ml_tileram[offset]); } -static READ16_HANDLER(ml_tileram_r) +READ16_MEMBER(mlanding_state::ml_tileram_r) { - mlanding_state *state = space->machine().driver_data<mlanding_state>(); - return state->m_ml_tileram[offset]; + return m_ml_tileram[offset]; } -static READ16_HANDLER( io1_r ) //240006 +READ16_MEMBER(mlanding_state::io1_r)//240006 { - mlanding_state *state = space->machine().driver_data<mlanding_state>(); /* fedcba9876543210 x - mecha driver status @@ -227,14 +245,13 @@ static READ16_HANDLER( io1_r ) //240006 */ // multiplexed? or just overriden? - int retval = (state->m_dma_active << 15) | (input_port_read(space->machine(), "DSW") & 0x7fff); + int retval = (m_dma_active << 15) | (input_port_read(machine(), "DSW") & 0x7fff); return retval; } /* output */ -static WRITE16_HANDLER(ml_output_w) +WRITE16_MEMBER(mlanding_state::ml_output_w) { - mlanding_state *state = space->machine().driver_data<mlanding_state>(); /* x--- ---- palette fg bankswitch ---x ---- coin lockout? @@ -243,7 +260,7 @@ static WRITE16_HANDLER(ml_output_w) */ // popmessage("%04x",data); - state->m_pal_fg_bank = (data & 0x80)>>7; + m_pal_fg_bank = (data & 0x80)>>7; } static WRITE8_DEVICE_HANDLER( sound_bankswitch_w ) @@ -292,69 +309,68 @@ static TIMER_CALLBACK( dma_complete ) } /* TODO: this uses many bits */ -static WRITE16_HANDLER( ml_sub_reset_w ) +WRITE16_MEMBER(mlanding_state::ml_sub_reset_w) { - mlanding_state *state = space->machine().driver_data<mlanding_state>(); int pixels; // Return the number of pixels drawn? - pixels = start_dma(space->machine()); + pixels = start_dma(machine()); if (pixels) { - state->m_dma_active = 1; - space->machine().scheduler().timer_set(attotime::from_msec(20), FUNC(dma_complete)); + m_dma_active = 1; + machine().scheduler().timer_set(attotime::from_msec(20), FUNC(dma_complete)); } if(!(data & 0x40)) // unknown line used - cputag_set_input_line(space->machine(), "sub", INPUT_LINE_RESET, CLEAR_LINE); + cputag_set_input_line(machine(), "sub", INPUT_LINE_RESET, CLEAR_LINE); //data & 0x20 sound cpu? if(!(data & 0x80)) // unknown line used { - cputag_set_input_line(space->machine(), "dsp", INPUT_LINE_RESET, CLEAR_LINE); - state->m_dsp_HOLD_signal = data & 0x80; + cputag_set_input_line(machine(), "dsp", INPUT_LINE_RESET, CLEAR_LINE); + m_dsp_HOLD_signal = data & 0x80; } } -static WRITE16_HANDLER( ml_to_sound_w ) +WRITE16_MEMBER(mlanding_state::ml_to_sound_w) { - device_t *tc0140syt = space->machine().device("tc0140syt"); + device_t *tc0140syt = machine().device("tc0140syt"); if (offset == 0) tc0140syt_port_w(tc0140syt, 0, data & 0xff); else if (offset == 1) { - //cputag_set_input_line(space->machine(), "audiocpu", INPUT_LINE_NMI, ASSERT_LINE); + //cputag_set_input_line(machine(), "audiocpu", INPUT_LINE_NMI, ASSERT_LINE); tc0140syt_comm_w(tc0140syt, 0, data & 0xff); } } -static WRITE8_HANDLER( ml_sound_to_main_w ) +WRITE8_MEMBER(mlanding_state::ml_sound_to_main_w) { - device_t *tc0140syt = space->machine().device("tc0140syt"); + device_t *tc0140syt = machine().device("tc0140syt"); if (offset == 0) tc0140syt_slave_port_w(tc0140syt, 0, data & 0xff); else if (offset == 1) { - //cputag_set_input_line(space->machine(), "audiocpu", INPUT_LINE_NMI, CLEAR_LINE); + //cputag_set_input_line(machine(), "audiocpu", INPUT_LINE_NMI, CLEAR_LINE); tc0140syt_slave_comm_w(tc0140syt, 0, data & 0xff); } } -static READ16_HANDLER( ml_analog1_lsb_r ) +READ16_MEMBER(mlanding_state::ml_analog1_lsb_r) { - return input_port_read(space->machine(), "STICKX") & 0xff; + return input_port_read(machine(), "STICKX") & 0xff; } -static READ16_HANDLER( ml_analog2_lsb_r ) +READ16_MEMBER(mlanding_state::ml_analog2_lsb_r) { - return input_port_read(space->machine(), "STICKY") & 0xff; + return input_port_read(machine(), "STICKY") & 0xff; } -static READ16_HANDLER( ml_analog3_lsb_r ) +READ16_MEMBER(mlanding_state::ml_analog3_lsb_r) { - return (input_port_read(space->machine(), "STICKZ") & 0xff); + return (input_port_read(machine(), "STICKZ") & 0xff); } /* @@ -378,18 +394,18 @@ static READ16_HANDLER( ml_analog3_lsb_r ) */ /* high bits of analog inputs + "limiters"/ADC converters. */ -static READ16_HANDLER( ml_analog1_msb_r ) +READ16_MEMBER(mlanding_state::ml_analog1_msb_r) { - return ((input_port_read(space->machine(), "STICKY") & 0xf00)>>8) | (input_port_read(space->machine(), "IN2") & 0xf0); + return ((input_port_read(machine(), "STICKY") & 0xf00)>>8) | (input_port_read(machine(), "IN2") & 0xf0); } -static READ16_HANDLER( ml_analog2_msb_r ) +READ16_MEMBER(mlanding_state::ml_analog2_msb_r) { UINT8 res; UINT16 y_adc,x_adc; - y_adc = input_port_read(space->machine(), "STICKY"); - x_adc = input_port_read(space->machine(), "STICKZ"); + y_adc = input_port_read(machine(), "STICKY"); + x_adc = input_port_read(machine(), "STICKZ"); res = 0; @@ -405,16 +421,16 @@ static READ16_HANDLER( ml_analog2_msb_r ) // popmessage("%04x %04x",x_adc,y_adc); - return ((input_port_read(space->machine(), "STICKZ") & 0xf00)>>8) | res; + return ((input_port_read(machine(), "STICKZ") & 0xf00)>>8) | res; } -static READ16_HANDLER( ml_analog3_msb_r ) +READ16_MEMBER(mlanding_state::ml_analog3_msb_r) { UINT8 z_adc,res; UINT16 x_adc; - z_adc = input_port_read(space->machine(), "STICKX"); - x_adc = input_port_read(space->machine(), "STICKZ"); + z_adc = input_port_read(machine(), "STICKX"); + x_adc = input_port_read(machine(), "STICKZ"); res = 0; @@ -428,27 +444,25 @@ static READ16_HANDLER( ml_analog3_msb_r ) if(x_adc & 0x800 || x_adc == 0) res|= 0x10; - return ((input_port_read(space->machine(), "STICKX") & 0xf00)>>8) | res; + return ((input_port_read(machine(), "STICKX") & 0xf00)>>8) | res; } -static WRITE16_HANDLER( ml_nmi_to_sound_w ) +WRITE16_MEMBER(mlanding_state::ml_nmi_to_sound_w) { -// cputag_set_input_line(space->machine(), "audiocpu", INPUT_LINE_RESET, CLEAR_LINE); +// cputag_set_input_line(machine(), "audiocpu", INPUT_LINE_RESET, CLEAR_LINE); } -static READ16_HANDLER( ml_mecha_ram_r ) +READ16_MEMBER(mlanding_state::ml_mecha_ram_r) { - mlanding_state *state = space->machine().driver_data<mlanding_state>(); - return (state->m_mecha_ram[offset*2]<<8)|state->m_mecha_ram[offset*2+1]; + return (m_mecha_ram[offset*2]<<8)|m_mecha_ram[offset*2+1]; } -static WRITE16_HANDLER( ml_mecha_ram_w ) +WRITE16_MEMBER(mlanding_state::ml_mecha_ram_w) { - mlanding_state *state = space->machine().driver_data<mlanding_state>(); - COMBINE_DATA(state->m_mecha_ram+offset*2+1); + COMBINE_DATA(m_mecha_ram+offset*2+1); data >>= 8; mem_mask >>= 8; - COMBINE_DATA(state->m_mecha_ram+offset*2); + COMBINE_DATA(m_mecha_ram+offset*2); } static ADDRESS_MAP_START( mlanding_mem, AS_PROGRAM, 16, mlanding_state ) @@ -456,34 +470,34 @@ static ADDRESS_MAP_START( mlanding_mem, AS_PROGRAM, 16, mlanding_state ) AM_RANGE(0x080000, 0x08ffff) AM_RAM AM_RANGE(0x100000, 0x17ffff) AM_RAM AM_BASE(m_g_ram)// 512kB G RAM - enough here for double buffered 512x400x8 frame - AM_RANGE(0x180000, 0x1bffff) AM_READWRITE_LEGACY(ml_tileram_r, ml_tileram_w) AM_BASE(m_ml_tileram) + AM_RANGE(0x180000, 0x1bffff) AM_READWRITE(ml_tileram_r, ml_tileram_w) AM_BASE(m_ml_tileram) AM_RANGE(0x1c0000, 0x1c3fff) AM_RAM AM_SHARE("share2") AM_BASE(m_dma_ram) AM_RANGE(0x1c4000, 0x1cffff) AM_RAM AM_SHARE("share1") - AM_RANGE(0x1d0000, 0x1d0001) AM_WRITE_LEGACY(ml_sub_reset_w) - AM_RANGE(0x1d0002, 0x1d0003) AM_WRITE_LEGACY(ml_nmi_to_sound_w) //sound reset ?? + AM_RANGE(0x1d0000, 0x1d0001) AM_WRITE(ml_sub_reset_w) + AM_RANGE(0x1d0002, 0x1d0003) AM_WRITE(ml_nmi_to_sound_w) //sound reset ?? - AM_RANGE(0x2d0000, 0x2d0003) AM_WRITE_LEGACY(ml_to_sound_w) + AM_RANGE(0x2d0000, 0x2d0003) AM_WRITE(ml_to_sound_w) AM_RANGE(0x2d0000, 0x2d0001) AM_READNOP AM_RANGE(0x2d0002, 0x2d0003) AM_DEVREAD8_LEGACY("tc0140syt", tc0140syt_comm_r, 0x00ff) AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE_LEGACY(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x280000, 0x2807ff) AM_READWRITE_LEGACY(ml_mecha_ram_r,ml_mecha_ram_w) + AM_RANGE(0x280000, 0x2807ff) AM_READWRITE(ml_mecha_ram_r,ml_mecha_ram_w) AM_RANGE(0x290000, 0x290001) AM_READ_PORT("IN1") AM_RANGE(0x290002, 0x290003) AM_READ_PORT("IN0") AM_RANGE(0x240004, 0x240005) AM_NOP //watchdog ?? - AM_RANGE(0x240006, 0x240007) AM_READ_LEGACY(io1_r) // vblank ? - AM_RANGE(0x2a0000, 0x2a0001) AM_WRITE_LEGACY(ml_output_w) + AM_RANGE(0x240006, 0x240007) AM_READ(io1_r) // vblank ? + AM_RANGE(0x2a0000, 0x2a0001) AM_WRITE(ml_output_w) /* */ - AM_RANGE(0x2b0000, 0x2b0001) AM_READ_LEGACY(ml_analog1_lsb_r) //-40 .. 40 analog controls ? - AM_RANGE(0x2b0004, 0x2b0005) AM_READ_LEGACY(ml_analog2_lsb_r) //-40 .. 40 analog controls ? - AM_RANGE(0x2b0006, 0x2b0007) AM_READ_LEGACY(ml_analog1_msb_r) // tested in service mode, dips? - AM_RANGE(0x2c0000, 0x2c0001) AM_READ_LEGACY(ml_analog3_lsb_r) //-60 .. 60 analog controls ? - AM_RANGE(0x2c0002, 0x2c0003) AM_READ_LEGACY(ml_analog2_msb_r) - AM_RANGE(0x2b0002, 0x2b0003) AM_READ_LEGACY(ml_analog3_msb_r) // IN2/IN3 could be switched + AM_RANGE(0x2b0000, 0x2b0001) AM_READ(ml_analog1_lsb_r) //-40 .. 40 analog controls ? + AM_RANGE(0x2b0004, 0x2b0005) AM_READ(ml_analog2_lsb_r) //-40 .. 40 analog controls ? + AM_RANGE(0x2b0006, 0x2b0007) AM_READ(ml_analog1_msb_r) // tested in service mode, dips? + AM_RANGE(0x2c0000, 0x2c0001) AM_READ(ml_analog3_lsb_r) //-60 .. 60 analog controls ? + AM_RANGE(0x2c0002, 0x2c0003) AM_READ(ml_analog2_msb_r) + AM_RANGE(0x2b0002, 0x2b0003) AM_READ(ml_analog3_msb_r) // IN2/IN3 could be switched ADDRESS_MAP_END @@ -507,10 +521,9 @@ static WRITE8_DEVICE_HANDLER( ml_msm_start_lsb_w ) state->m_adpcm_end = (state->m_adpcm_pos+0x800); } -static WRITE8_HANDLER( ml_msm_start_msb_w ) +WRITE8_MEMBER(mlanding_state::ml_msm_start_msb_w) { - mlanding_state *state = space->machine().driver_data<mlanding_state>(); - state->m_adpcm_pos = (state->m_adpcm_pos & 0x00ff00) | ((data & 0x0f)<<16) | 0x20; + m_adpcm_pos = (m_adpcm_pos & 0x00ff00) | ((data & 0x0f)<<16) | 0x20; } static ADDRESS_MAP_START( mlanding_z80_mem, AS_PROGRAM, 8, mlanding_state ) @@ -518,7 +531,7 @@ static ADDRESS_MAP_START( mlanding_z80_mem, AS_PROGRAM, 8, mlanding_state ) AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") AM_RANGE(0x8000, 0x8fff) AM_RAM AM_RANGE(0x9000, 0x9001) AM_MIRROR(0x00fe) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w) - AM_RANGE(0xa000, 0xa001) AM_WRITE_LEGACY(ml_sound_to_main_w) + AM_RANGE(0xa000, 0xa001) AM_WRITE(ml_sound_to_main_w) AM_RANGE(0xa001, 0xa001) AM_DEVREAD_LEGACY("tc0140syt", tc0140syt_slave_comm_r) // AM_RANGE(0xb000, 0xb000) AM_WRITE_LEGACY(ml_msm5205_address_w) //guess @@ -526,31 +539,28 @@ static ADDRESS_MAP_START( mlanding_z80_mem, AS_PROGRAM, 8, mlanding_state ) // AM_RANGE(0xd000, 0xd000) AM_DEVWRITE_LEGACY("msm", ml_msm5205_stop_w) AM_RANGE(0xf000, 0xf000) AM_DEVWRITE_LEGACY("msm",ml_msm_start_lsb_w) - AM_RANGE(0xf200, 0xf200) AM_WRITE_LEGACY(ml_msm_start_msb_w) + AM_RANGE(0xf200, 0xf200) AM_WRITE(ml_msm_start_msb_w) ADDRESS_MAP_END -static READ16_HANDLER( ml_dotram_r ) +READ16_MEMBER(mlanding_state::ml_dotram_r) { - mlanding_state *state = space->machine().driver_data<mlanding_state>(); - return state->m_ml_dotram[offset]; + return m_ml_dotram[offset]; } -static WRITE16_HANDLER( ml_dotram_w ) +WRITE16_MEMBER(mlanding_state::ml_dotram_w) { - mlanding_state *state = space->machine().driver_data<mlanding_state>(); - state->m_ml_dotram[offset] = data; + m_ml_dotram[offset] = data; } -static READ16_HANDLER( dsp_HOLD_signal_r ) +READ16_MEMBER(mlanding_state::dsp_HOLD_signal_r) { - mlanding_state *state = space->machine().driver_data<mlanding_state>(); - return state->m_dsp_HOLD_signal; + return m_dsp_HOLD_signal; } -static READ8_HANDLER( test_r ) +READ8_MEMBER(mlanding_state::test_r) { - return space->machine().rand(); + return machine().rand(); } //mecha driver ? @@ -559,8 +569,8 @@ static ADDRESS_MAP_START( mlanding_z80_sub_mem, AS_PROGRAM, 8, mlanding_state ) AM_RANGE(0x8000, 0x87ff) AM_RAM AM_BASE(m_mecha_ram) AM_RANGE(0x8800, 0x8fff) AM_RAM - AM_RANGE(0x9000, 0x9001) AM_READ_LEGACY(test_r) - AM_RANGE(0x9800, 0x9803) AM_READ_LEGACY(test_r) + AM_RANGE(0x9000, 0x9001) AM_READ(test_r) + AM_RANGE(0x9800, 0x9803) AM_READ(test_r) ADDRESS_MAP_END static ADDRESS_MAP_START( DSP_map_program, AS_PROGRAM, 16, mlanding_state ) @@ -568,11 +578,11 @@ static ADDRESS_MAP_START( DSP_map_program, AS_PROGRAM, 16, mlanding_state ) ADDRESS_MAP_END static ADDRESS_MAP_START( DSP_map_data, AS_DATA, 16, mlanding_state ) - AM_RANGE(0x0000, 0x1fff) AM_READWRITE_LEGACY(ml_dotram_r,ml_dotram_w) + AM_RANGE(0x0000, 0x1fff) AM_READWRITE(ml_dotram_r,ml_dotram_w) ADDRESS_MAP_END static ADDRESS_MAP_START( DSP_map_io, AS_IO, 16, mlanding_state ) - AM_RANGE(TMS32025_HOLD, TMS32025_HOLD) AM_READ_LEGACY(dsp_HOLD_signal_r) + AM_RANGE(TMS32025_HOLD, TMS32025_HOLD) AM_READ(dsp_HOLD_signal_r) // AM_RANGE(TMS32025_HOLDA, TMS32025_HOLDA) AM_WRITE_LEGACY(dsp_HOLDA_signal_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/mogura.c b/src/mame/drivers/mogura.c index 89391ba0b4f..2b52af029eb 100644 --- a/src/mame/drivers/mogura.c +++ b/src/mame/drivers/mogura.c @@ -22,6 +22,9 @@ public: device_t *m_maincpu; device_t *m_dac1; device_t *m_dac2; + DECLARE_WRITE8_MEMBER(mogura_tileram_w); + DECLARE_WRITE8_MEMBER(mogura_dac_w); + DECLARE_WRITE8_MEMBER(mogura_gfxram_w); }; @@ -97,35 +100,32 @@ static SCREEN_UPDATE_IND16( mogura ) return 0; } -static WRITE8_HANDLER( mogura_tileram_w ) +WRITE8_MEMBER(mogura_state::mogura_tileram_w) { - mogura_state *state = space->machine().driver_data<mogura_state>(); - state->m_tileram[offset] = data; - state->m_tilemap->mark_tile_dirty(offset & 0x7ff); + m_tileram[offset] = data; + m_tilemap->mark_tile_dirty(offset & 0x7ff); } -static WRITE8_HANDLER(mogura_dac_w) +WRITE8_MEMBER(mogura_state::mogura_dac_w) { - mogura_state *state = space->machine().driver_data<mogura_state>(); - dac_data_w(state->m_dac1, data & 0xf0); /* left */ - dac_data_w(state->m_dac2, (data & 0x0f) << 4); /* right */ + dac_data_w(m_dac1, data & 0xf0); /* left */ + dac_data_w(m_dac2, (data & 0x0f) << 4); /* right */ } -static WRITE8_HANDLER ( mogura_gfxram_w ) +WRITE8_MEMBER(mogura_state::mogura_gfxram_w) { - mogura_state *state = space->machine().driver_data<mogura_state>(); - state->m_gfxram[offset] = data ; + m_gfxram[offset] = data ; - gfx_element_mark_dirty(space->machine().gfx[0], offset / 16); + gfx_element_mark_dirty(machine().gfx[0], offset / 16); } static ADDRESS_MAP_START( mogura_map, AS_PROGRAM, 8, mogura_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0xc000, 0xdfff) AM_RAM // main ram - AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE_LEGACY(mogura_gfxram_w) AM_BASE(m_gfxram) // ram based characters - AM_RANGE(0xf000, 0xffff) AM_RAM_WRITE_LEGACY(mogura_tileram_w) AM_BASE(m_tileram) // tilemap + AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(mogura_gfxram_w) AM_BASE(m_gfxram) // ram based characters + AM_RANGE(0xf000, 0xffff) AM_RAM_WRITE(mogura_tileram_w) AM_BASE(m_tileram) // tilemap ADDRESS_MAP_END static ADDRESS_MAP_START( mogura_io_map, AS_IO, 8, mogura_state ) @@ -137,7 +137,7 @@ static ADDRESS_MAP_START( mogura_io_map, AS_IO, 8, mogura_state ) AM_RANGE(0x0e, 0x0e) AM_READ_PORT("P3") AM_RANGE(0x0f, 0x0f) AM_READ_PORT("P4") AM_RANGE(0x10, 0x10) AM_READ_PORT("SERVICE") - AM_RANGE(0x14, 0x14) AM_WRITE_LEGACY(mogura_dac_w) /* 4 bit DAC x 2. MSB = left, LSB = right */ + AM_RANGE(0x14, 0x14) AM_WRITE(mogura_dac_w) /* 4 bit DAC x 2. MSB = left, LSB = right */ ADDRESS_MAP_END static INPUT_PORTS_START( mogura ) diff --git a/src/mame/drivers/mole.c b/src/mame/drivers/mole.c index 8067d4c6b16..7e0beef96be 100644 --- a/src/mame/drivers/mole.c +++ b/src/mame/drivers/mole.c @@ -65,6 +65,10 @@ public: /* memory */ UINT16 m_tileram[0x400]; + DECLARE_WRITE8_MEMBER(mole_videoram_w); + DECLARE_WRITE8_MEMBER(mole_tilebank_w); + DECLARE_WRITE8_MEMBER(mole_flipscreen_w); + DECLARE_READ8_MEMBER(mole_protection_r); }; @@ -99,25 +103,23 @@ static VIDEO_START( mole ) state->save_item(NAME(state->m_tileram)); } -static WRITE8_HANDLER( mole_videoram_w ) +WRITE8_MEMBER(mole_state::mole_videoram_w) { - mole_state *state = space->machine().driver_data<mole_state>(); - state->m_tileram[offset] = data | (state->m_tile_bank << 8); - state->m_bg_tilemap->mark_tile_dirty(offset); + m_tileram[offset] = data | (m_tile_bank << 8); + m_bg_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( mole_tilebank_w ) +WRITE8_MEMBER(mole_state::mole_tilebank_w) { - mole_state *state = space->machine().driver_data<mole_state>(); - state->m_tile_bank = data; - state->m_bg_tilemap->mark_all_dirty(); + m_tile_bank = data; + m_bg_tilemap->mark_all_dirty(); } -static WRITE8_HANDLER( mole_flipscreen_w ) +WRITE8_MEMBER(mole_state::mole_flipscreen_w) { - flip_screen_set(space->machine(), data & 0x01); + flip_screen_set(machine(), data & 0x01); } static SCREEN_UPDATE_IND16( mole ) @@ -136,9 +138,8 @@ static SCREEN_UPDATE_IND16( mole ) * *************************************/ -static READ8_HANDLER( mole_protection_r ) +READ8_MEMBER(mole_state::mole_protection_r) { - /* Following are all known examples of Mole Attack ** code reading from the protection circuitry: ** @@ -164,7 +165,7 @@ static READ8_HANDLER( mole_protection_r ) { case 0x08: return 0xb0; /* random mole placement */ case 0x26: - if (cpu_get_pc(&space->device()) == 0x53d7) + if (cpu_get_pc(&space.device()) == 0x53d7) { return 0x06; /* bonus round */ } @@ -194,12 +195,12 @@ static READ8_HANDLER( mole_protection_r ) static ADDRESS_MAP_START( mole_map, AS_PROGRAM, 8, mole_state ) AM_RANGE(0x0000, 0x03ff) AM_RAM - AM_RANGE(0x0800, 0x08ff) AM_READ_LEGACY(mole_protection_r) + AM_RANGE(0x0800, 0x08ff) AM_READ(mole_protection_r) AM_RANGE(0x0800, 0x0800) AM_WRITENOP // ??? AM_RANGE(0x0820, 0x0820) AM_WRITENOP // ??? AM_RANGE(0x5000, 0x7fff) AM_MIRROR(0x8000) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE_LEGACY(mole_videoram_w) - AM_RANGE(0x8400, 0x8400) AM_WRITE_LEGACY(mole_tilebank_w) + AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(mole_videoram_w) + AM_RANGE(0x8400, 0x8400) AM_WRITE(mole_tilebank_w) AM_RANGE(0x8c00, 0x8c01) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_address_w) AM_RANGE(0x8c40, 0x8c40) AM_WRITENOP // ??? AM_RANGE(0x8c80, 0x8c80) AM_WRITENOP // ??? @@ -207,7 +208,7 @@ static ADDRESS_MAP_START( mole_map, AS_PROGRAM, 8, mole_state ) AM_RANGE(0x8d00, 0x8d00) AM_READ_PORT("DSW") AM_WRITE_LEGACY(watchdog_reset_w) AM_RANGE(0x8d40, 0x8d40) AM_READ_PORT("IN0") AM_RANGE(0x8d80, 0x8d80) AM_READ_PORT("IN1") - AM_RANGE(0x8dc0, 0x8dc0) AM_READ_PORT("IN2") AM_WRITE_LEGACY(mole_flipscreen_w) + AM_RANGE(0x8dc0, 0x8dc0) AM_READ_PORT("IN2") AM_WRITE(mole_flipscreen_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/monzagp.c b/src/mame/drivers/monzagp.c index 2597c8b127a..7333547ec9f 100644 --- a/src/mame/drivers/monzagp.c +++ b/src/mame/drivers/monzagp.c @@ -47,6 +47,12 @@ public: UINT8 *m_vram; int m_screenw; int m_bank; + DECLARE_READ8_MEMBER(rng_r); + DECLARE_WRITE8_MEMBER(port_w); + DECLARE_WRITE8_MEMBER(port0_w); + DECLARE_WRITE8_MEMBER(port1_w); + DECLARE_WRITE8_MEMBER(port2_w); + DECLARE_WRITE8_MEMBER(port3_w); }; @@ -115,22 +121,21 @@ static ADDRESS_MAP_START( monzagp_map, AS_PROGRAM, 8, monzagp_state ) AM_RANGE(0x0000, 0x0fff) AM_ROM ADDRESS_MAP_END -static READ8_HANDLER(rng_r) +READ8_MEMBER(monzagp_state::rng_r) { - return space->machine().rand(); + return machine().rand(); } -static WRITE8_HANDLER(port_w) +WRITE8_MEMBER(monzagp_state::port_w) { - monzagp_state *state = space->machine().driver_data<monzagp_state>(); - state->m_coordx=offset;//-0xc0; - //state->m_vram[state->m_coordy*state->m_screenw+state->m_coordx]=data; + m_coordx=offset;//-0xc0; + //m_vram[m_coordy*m_screenw+m_coordx]=data; //if(output==0xfe) { // if(data>='A' && data <='Z') - // printf("%.2x %.2x %c %c\n",state->m_coordy, offset,data, znaki[data-'A']); - //state->m_vram[state->m_coordy*state->m_screenw+state->m_coordx]=data; - state->m_vram[(state->m_coordx*256+state->m_coordy)&0x7ff]=data; + // printf("%.2x %.2x %c %c\n",m_coordy, offset,data, znaki[data-'A']); + //m_vram[m_coordy*m_screenw+m_coordx]=data; + m_vram[(m_coordx*256+m_coordy)&0x7ff]=data; } } /* @@ -172,25 +177,24 @@ static WRITE8_HANDLER(port_w) -static WRITE8_HANDLER(port0_w) +WRITE8_MEMBER(monzagp_state::port0_w) { -// printf("P0 %x = %x\n",cpu_get_pc(&space->device()),data); +// printf("P0 %x = %x\n",cpu_get_pc(&space.device()),data); } -static WRITE8_HANDLER(port1_w) +WRITE8_MEMBER(monzagp_state::port1_w) { -// printf("P1 %x = %x\n",cpu_get_pc(&space->device()),data); +// printf("P1 %x = %x\n",cpu_get_pc(&space.device()),data); } -static WRITE8_HANDLER(port2_w) +WRITE8_MEMBER(monzagp_state::port2_w) { - monzagp_state *state = space->machine().driver_data<monzagp_state>(); -// printf("P2 %x = %x\n",cpu_get_pc(&space->device()),data); - state->m_coordy=data; +// printf("P2 %x = %x\n",cpu_get_pc(&space.device()),data); + m_coordy=data; } #if 0 -static WRITE8_HANDLER(port3_w) +WRITE8_MEMBER(monzagp_state::port3_w) { output=data; } @@ -212,11 +216,11 @@ static WRITE8_HANDLER(port3_w) */ static ADDRESS_MAP_START( monzagp_io, AS_IO, 8, monzagp_state ) - AM_RANGE(0x00, 0xff) AM_READWRITE_LEGACY(rng_r,port_w) - AM_RANGE(0x100, 0x100) AM_WRITE_LEGACY(port0_w) - AM_RANGE(0x101, 0x101) AM_WRITE_LEGACY(port1_w) - AM_RANGE(0x102, 0x102) AM_WRITE_LEGACY(port2_w) - AM_RANGE(0x104, 0x104) AM_READ_LEGACY(rng_r) + AM_RANGE(0x00, 0xff) AM_READWRITE(rng_r,port_w) + AM_RANGE(0x100, 0x100) AM_WRITE(port0_w) + AM_RANGE(0x101, 0x101) AM_WRITE(port1_w) + AM_RANGE(0x102, 0x102) AM_WRITE(port2_w) + AM_RANGE(0x104, 0x104) AM_READ(rng_r) ADDRESS_MAP_END static INPUT_PORTS_START( monzagp ) diff --git a/src/mame/drivers/mpoker.c b/src/mame/drivers/mpoker.c index 4acaee4b19b..2351aa2a6f4 100644 --- a/src/mame/drivers/mpoker.c +++ b/src/mame/drivers/mpoker.c @@ -183,6 +183,17 @@ public: UINT8 m_output[8]; UINT8* m_video; int m_mixdata; + DECLARE_READ8_MEMBER(mixport_r); + DECLARE_WRITE8_MEMBER(muxed_w); + DECLARE_WRITE8_MEMBER(outport0_w); + DECLARE_WRITE8_MEMBER(outport1_w); + DECLARE_WRITE8_MEMBER(outport2_w); + DECLARE_WRITE8_MEMBER(outport3_w); + DECLARE_WRITE8_MEMBER(outport4_w); + DECLARE_WRITE8_MEMBER(outport5_w); + DECLARE_WRITE8_MEMBER(outport6_w); + DECLARE_WRITE8_MEMBER(outport7_w); + DECLARE_WRITE8_MEMBER(sound_w); }; @@ -230,9 +241,8 @@ static PALETTE_INIT(mpoker) } } -static READ8_HANDLER( mixport_r ) +READ8_MEMBER(mpoker_state::mixport_r) { - mpoker_state *state = space->machine().driver_data<mpoker_state>(); /* - bits - 7654 3210 ---- ---x Unknown. @@ -247,9 +257,9 @@ static READ8_HANDLER( mixport_r ) If you change the status *every* read, the HW stucks. */ - state->m_mixdata = (input_port_read(space->machine(), "SW2") & 0xfd) | (space->machine().rand() & 0x02); + m_mixdata = (input_port_read(machine(), "SW2") & 0xfd) | (machine().rand() & 0x02); - return state->m_mixdata; + return m_mixdata; } /***** Port 0158 ***** @@ -264,7 +274,7 @@ static READ8_HANDLER( mixport_r ) xxx- ---- Unknown. */ -//static WRITE8_HANDLER( muxed_w ) +//WRITE8_MEMBER(mpoker_state::muxed_w) //{ // popmessage("written : %02X %02X %02X %02X %02X %02X %02X %02X", data & 0x01, data & 0x02, data & 0x04, data & 0x08, data & 0x10, data & 0x20, data & 0x40, data & 0x80); //} @@ -281,14 +291,13 @@ static READ8_HANDLER( mixport_r ) xxx- ---- Unknown. */ -static WRITE8_HANDLER( outport0_w ) +WRITE8_MEMBER(mpoker_state::outport0_w) { - mpoker_state *state = space->machine().driver_data<mpoker_state>(); output_set_lamp_value(1, (data & 1)); /* Lamp 1 - BET */ output_set_lamp_value(5, (data >> 1) & 1); /* Lamp 5 - HOLD 1 */ - state->m_output[0] = data; - popmessage("outport0 : %02X %02X %02X %02X %02X %02X %02X %02X", state->m_output[0], state->m_output[1], state->m_output[2], state->m_output[3], state->m_output[4], state->m_output[5], state->m_output[6], state->m_output[7]); + m_output[0] = data; + popmessage("outport0 : %02X %02X %02X %02X %02X %02X %02X %02X", m_output[0], m_output[1], m_output[2], m_output[3], m_output[4], m_output[5], m_output[6], m_output[7]); } /***** Port 8001 ***** @@ -303,14 +312,13 @@ static WRITE8_HANDLER( outport0_w ) xxx- ---- Unknown. */ -static WRITE8_HANDLER( outport1_w ) +WRITE8_MEMBER(mpoker_state::outport1_w) { - mpoker_state *state = space->machine().driver_data<mpoker_state>(); output_set_lamp_value(2, (data & 1)); /* Lamp 2 - DEAL */ output_set_lamp_value(6, (data >> 1) & 1); /* Lamp 6 - HOLD 2 */ - state->m_output[1] = data; - popmessage("outport1 : %02X %02X %02X %02X %02X %02X %02X %02X", state->m_output[0], state->m_output[1], state->m_output[2], state->m_output[3], state->m_output[4], state->m_output[5], state->m_output[6], state->m_output[7]); + m_output[1] = data; + popmessage("outport1 : %02X %02X %02X %02X %02X %02X %02X %02X", m_output[0], m_output[1], m_output[2], m_output[3], m_output[4], m_output[5], m_output[6], m_output[7]); } /***** Port 8002 ***** @@ -325,14 +333,13 @@ static WRITE8_HANDLER( outport1_w ) xxx- ---- Unknown. */ -static WRITE8_HANDLER( outport2_w ) +WRITE8_MEMBER(mpoker_state::outport2_w) { - mpoker_state *state = space->machine().driver_data<mpoker_state>(); output_set_lamp_value(3, (data & 1)); /* Lamp 3 - CANCEL */ output_set_lamp_value(7, (data >> 1) & 1); /* Lamp 7 - HOLD 3 */ - state->m_output[2] = data; - popmessage("outport2 : %02X %02X %02X %02X %02X %02X %02X %02X", state->m_output[0], state->m_output[1], state->m_output[2], state->m_output[3], state->m_output[4], state->m_output[5], state->m_output[6], state->m_output[7]); + m_output[2] = data; + popmessage("outport2 : %02X %02X %02X %02X %02X %02X %02X %02X", m_output[0], m_output[1], m_output[2], m_output[3], m_output[4], m_output[5], m_output[6], m_output[7]); } /***** Port 8003 ***** @@ -347,14 +354,13 @@ static WRITE8_HANDLER( outport2_w ) xxx- ---- Unknown. */ -static WRITE8_HANDLER( outport3_w ) +WRITE8_MEMBER(mpoker_state::outport3_w) { - mpoker_state *state = space->machine().driver_data<mpoker_state>(); output_set_lamp_value(4, (data & 1)); /* Lamp 4 - STAND */ output_set_lamp_value(8, (data >> 1) & 1); /* Lamp 8 - HOLD 4 */ - state->m_output[3] = data; - popmessage("outport3 : %02X %02X %02X %02X %02X %02X %02X %02X", state->m_output[0], state->m_output[1], state->m_output[2], state->m_output[3], state->m_output[4], state->m_output[5], state->m_output[6], state->m_output[7]); + m_output[3] = data; + popmessage("outport3 : %02X %02X %02X %02X %02X %02X %02X %02X", m_output[0], m_output[1], m_output[2], m_output[3], m_output[4], m_output[5], m_output[6], m_output[7]); } /***** Port 8004 ***** @@ -369,13 +375,12 @@ static WRITE8_HANDLER( outport3_w ) xxx- ---- Unknown. */ -static WRITE8_HANDLER( outport4_w ) +WRITE8_MEMBER(mpoker_state::outport4_w) { - mpoker_state *state = space->machine().driver_data<mpoker_state>(); output_set_lamp_value(9, (data >> 1) & 1); /* Lamp 9 - HOLD 5 */ - state->m_output[4] = data; - popmessage("outport4 : %02X %02X %02X %02X %02X %02X %02X %02X", state->m_output[0], state->m_output[1], state->m_output[2], state->m_output[3], state->m_output[4], state->m_output[5], state->m_output[6], state->m_output[7]); + m_output[4] = data; + popmessage("outport4 : %02X %02X %02X %02X %02X %02X %02X %02X", m_output[0], m_output[1], m_output[2], m_output[3], m_output[4], m_output[5], m_output[6], m_output[7]); } /***** Port 8005 ***** @@ -390,11 +395,10 @@ static WRITE8_HANDLER( outport4_w ) xxx- ---- Unknown. */ -static WRITE8_HANDLER( outport5_w ) +WRITE8_MEMBER(mpoker_state::outport5_w) { - mpoker_state *state = space->machine().driver_data<mpoker_state>(); - state->m_output[5] = data; - popmessage("outport5 : %02X %02X %02X %02X %02X %02X %02X %02X", state->m_output[0], state->m_output[1], state->m_output[2], state->m_output[3], state->m_output[4], state->m_output[5], state->m_output[6], state->m_output[7]); + m_output[5] = data; + popmessage("outport5 : %02X %02X %02X %02X %02X %02X %02X %02X", m_output[0], m_output[1], m_output[2], m_output[3], m_output[4], m_output[5], m_output[6], m_output[7]); } /***** Port 8006 ***** @@ -409,13 +413,12 @@ static WRITE8_HANDLER( outport5_w ) xxx- ---- Unknown. */ -static WRITE8_HANDLER( outport6_w ) +WRITE8_MEMBER(mpoker_state::outport6_w) { - mpoker_state *state = space->machine().driver_data<mpoker_state>(); - coin_counter_w(space->machine(), 1, data & 0x02); /* Payout pulse */ + coin_counter_w(machine(), 1, data & 0x02); /* Payout pulse */ - state->m_output[6] = data; - popmessage("outport6 : %02X %02X %02X %02X %02X %02X %02X %02X", state->m_output[0], state->m_output[1], state->m_output[2], state->m_output[3], state->m_output[4], state->m_output[5], state->m_output[6], state->m_output[7]); + m_output[6] = data; + popmessage("outport6 : %02X %02X %02X %02X %02X %02X %02X %02X", m_output[0], m_output[1], m_output[2], m_output[3], m_output[4], m_output[5], m_output[6], m_output[7]); } /***** Port 8007 ***** @@ -430,13 +433,12 @@ static WRITE8_HANDLER( outport6_w ) xxx- ---- Unknown. */ -static WRITE8_HANDLER( outport7_w ) +WRITE8_MEMBER(mpoker_state::outport7_w) { - mpoker_state *state = space->machine().driver_data<mpoker_state>(); - coin_counter_w(space->machine(), 0, data & 0x02); /* Coin pulse */ + coin_counter_w(machine(), 0, data & 0x02); /* Coin pulse */ - state->m_output[7] = data; - popmessage("outport7 : %02X %02X %02X %02X %02X %02X %02X %02X", state->m_output[0], state->m_output[1], state->m_output[2], state->m_output[3], state->m_output[4], state->m_output[5], state->m_output[6], state->m_output[7]); + m_output[7] = data; + popmessage("outport7 : %02X %02X %02X %02X %02X %02X %02X %02X", m_output[0], m_output[1], m_output[2], m_output[3], m_output[4], m_output[5], m_output[6], m_output[7]); } @@ -462,9 +464,9 @@ static WRITE8_HANDLER( outport7_w ) 05 | ---- | ---- | ---- | bit2 -//static WRITE8_HANDLER( sound_w ) +WRITE8_MEMBER(mpoker_state::sound_w) //{ -// dac_data_w(space->machine().device("dac"), data); +// dac_data_w(machine().device("dac"), data); //} */ @@ -474,17 +476,17 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, mpoker_state ) AM_RANGE(0x3800, 0x38ff) AM_RAM AM_SHARE("nvram") /* NVRAM = 2x SCM5101E */ AM_RANGE(0x4000, 0x47ff) AM_RAM AM_BASE(m_video) /* 4x MM2114N-3 */ AM_RANGE(0x8000, 0x8000) AM_READ_PORT("SW1") - AM_RANGE(0x8001, 0x8001) AM_READ_LEGACY(mixport_r) /* DIP switch bank 2 + a sort of watchdog */ + AM_RANGE(0x8001, 0x8001) AM_READ(mixport_r) /* DIP switch bank 2 + a sort of watchdog */ AM_RANGE(0x8002, 0x8002) AM_READ_PORT("IN1") AM_RANGE(0x8003, 0x8003) AM_READ_PORT("IN2") - AM_RANGE(0x8000, 0x8000) AM_WRITE_LEGACY(outport0_w) - AM_RANGE(0x8001, 0x8001) AM_WRITE_LEGACY(outport1_w) - AM_RANGE(0x8002, 0x8002) AM_WRITE_LEGACY(outport2_w) - AM_RANGE(0x8003, 0x8003) AM_WRITE_LEGACY(outport3_w) - AM_RANGE(0x8004, 0x8004) AM_WRITE_LEGACY(outport4_w) - AM_RANGE(0x8005, 0x8005) AM_WRITE_LEGACY(outport5_w) - AM_RANGE(0x8006, 0x8006) AM_WRITE_LEGACY(outport6_w) - AM_RANGE(0x8007, 0x8007) AM_WRITE_LEGACY(outport7_w) + AM_RANGE(0x8000, 0x8000) AM_WRITE(outport0_w) + AM_RANGE(0x8001, 0x8001) AM_WRITE(outport1_w) + AM_RANGE(0x8002, 0x8002) AM_WRITE(outport2_w) + AM_RANGE(0x8003, 0x8003) AM_WRITE(outport3_w) + AM_RANGE(0x8004, 0x8004) AM_WRITE(outport4_w) + AM_RANGE(0x8005, 0x8005) AM_WRITE(outport5_w) + AM_RANGE(0x8006, 0x8006) AM_WRITE(outport6_w) + AM_RANGE(0x8007, 0x8007) AM_WRITE(outport7_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/multfish.c b/src/mame/drivers/multfish.c index fa19ee8f8b0..13b98dbbc0a 100644 --- a/src/mame/drivers/multfish.c +++ b/src/mame/drivers/multfish.c @@ -197,6 +197,20 @@ public: UINT8 m_hopper; UINT8 m_vid[multfish_VIDRAM_SIZE]; + DECLARE_WRITE8_MEMBER(multfish_vid_w); + DECLARE_WRITE8_MEMBER(multfish_bank_w); + DECLARE_READ8_MEMBER(bankedram_r); + DECLARE_WRITE8_MEMBER(bankedram_w); + DECLARE_WRITE8_MEMBER(multfish_rambank_w); + DECLARE_READ8_MEMBER(ray_r); + DECLARE_WRITE8_MEMBER(multfish_hopper_w); + DECLARE_WRITE8_MEMBER(rollfr_hopper_w); + DECLARE_WRITE8_MEMBER(multfish_lamps1_w); + DECLARE_WRITE8_MEMBER(multfish_lamps2_w); + DECLARE_WRITE8_MEMBER(multfish_lamps3_w); + DECLARE_WRITE8_MEMBER(multfish_counters_w); + DECLARE_WRITE8_MEMBER(multfish_f3_w); + DECLARE_WRITE8_MEMBER(multfish_dispenable_w); }; static TILE_GET_INFO( get_multfish_tile_info ) @@ -267,39 +281,38 @@ static SCREEN_UPDATE_IND16(multfish) return 0; } -static WRITE8_HANDLER( multfish_vid_w ) +WRITE8_MEMBER(multfish_state::multfish_vid_w) { - multfish_state *state = space->machine().driver_data<multfish_state>(); - state->m_vid[offset]=data; + m_vid[offset]=data; // 0x0000 - 0x1fff is normal tilemap if (offset < 0x2000) { - state->m_tilemap->mark_tile_dirty((offset&0xfff)/2); + m_tilemap->mark_tile_dirty((offset&0xfff)/2); } // 0x2000 - 0x2fff is for the reels else if (offset < 0x4000) { - state->m_reel_tilemap->mark_tile_dirty((offset&0x1fff)/2); + m_reel_tilemap->mark_tile_dirty((offset&0x1fff)/2); } else if (offset < 0x6000) { int r,g,b; int coldat; - coldat = state->m_vid[(offset&0xfffe)] | (state->m_vid[(offset&0xfffe)^1] << 8); + coldat = m_vid[(offset&0xfffe)] | (m_vid[(offset&0xfffe)^1] << 8); /* xor and bitswap palette */ - switch (state->m_xor_paltype) { + switch (m_xor_paltype) { case 1: - coldat ^= state->m_xor_palette; + coldat ^= m_xor_palette; coldat ^= ((coldat&0x2) >>1) | ((coldat&0x80) >>3) ; coldat = BITSWAP16(coldat,10,15,5,13,8,12,11,2,0,4,7,14,9,3,1,6); break; case 2: - coldat ^= state->m_xor_palette; + coldat ^= m_xor_palette; coldat ^= ((coldat&0x0001) <<1) ^ ((coldat&0x0010) <<1) ^ ((coldat&0x0010) <<2) ^ ((coldat&0x0020) <<1) ^ ((coldat&0x0080) >>1); coldat = BITSWAP16(coldat,4,10,13,14,8,11,15,12,2,6,5,0,7,3,1,9); break; @@ -309,7 +322,7 @@ static WRITE8_HANDLER( multfish_vid_w ) b = ( (coldat &0x00e0)>> (5)); b|= ( (coldat &0xe000)>> (8+5-3)); - palette_set_color_rgb(space->machine(), (offset-0x4000)/2, r<<3, g<<3, b<<2); + palette_set_color_rgb(machine(), (offset-0x4000)/2, r<<3, g<<3, b<<2); } else { @@ -317,9 +330,9 @@ static WRITE8_HANDLER( multfish_vid_w ) } } -static WRITE8_HANDLER( multfish_bank_w ) +WRITE8_MEMBER(multfish_state::multfish_bank_w) { - memory_set_bank(space->machine(), "bank1", data & 0x0f); + memory_set_bank(machine(), "bank1", data & 0x0f); } static READ8_DEVICE_HANDLER( multfish_timekeeper_r ) @@ -332,48 +345,45 @@ static WRITE8_DEVICE_HANDLER( multfish_timekeeper_w ) timekeeper_w(device, offset + 0x6000, data); } -static READ8_HANDLER( bankedram_r ) +READ8_MEMBER(multfish_state::bankedram_r) { - multfish_state *state = space->machine().driver_data<multfish_state>(); - if ((state->m_rambk & 0x80) == 0x00) + if ((m_rambk & 0x80) == 0x00) { - return timekeeper_r(space->machine().device("m48t35"), offset + 0x2000*(state->m_rambk & 0x03)); + return timekeeper_r(machine().device("m48t35"), offset + 0x2000*(m_rambk & 0x03)); } else { - return state->m_vid[offset+0x2000*(state->m_rambk & 0x03)]; + return m_vid[offset+0x2000*(m_rambk & 0x03)]; } } -static WRITE8_HANDLER( bankedram_w ) +WRITE8_MEMBER(multfish_state::bankedram_w) { - multfish_state *state = space->machine().driver_data<multfish_state>(); - if ((state->m_rambk & 0x80) == 0x00) + if ((m_rambk & 0x80) == 0x00) { - timekeeper_w(space->machine().device("m48t35"), offset + 0x2000*(state->m_rambk & 0x03), data); + timekeeper_w(machine().device("m48t35"), offset + 0x2000*(m_rambk & 0x03), data); } else { - multfish_vid_w(space, offset+0x2000*(state->m_rambk & 0x03), data); + multfish_vid_w(space, offset+0x2000*(m_rambk & 0x03), data); } } -static WRITE8_HANDLER( multfish_rambank_w ) +WRITE8_MEMBER(multfish_state::multfish_rambank_w) { - multfish_state *state = space->machine().driver_data<multfish_state>(); - state->m_rambk = data; + m_rambk = data; } -static READ8_HANDLER( ray_r ) +READ8_MEMBER(multfish_state::ray_r) { // the games read the raster beam position as part of the hardware checks.. // with a 6mhz clock and 640x480 resolution this seems to give the right results. - return space->machine().primary_screen->vpos(); + return machine().primary_screen->vpos(); } static CUSTOM_INPUT( multfish_hopper_r ) @@ -391,7 +401,7 @@ static CUSTOM_INPUT( multfish_hopper_r ) } } -static WRITE8_HANDLER( multfish_hopper_w ) +WRITE8_MEMBER(multfish_state::multfish_hopper_w) { /* Port 0x33 @@ -400,35 +410,35 @@ static WRITE8_HANDLER( multfish_hopper_w ) ---- -X-- Bill Acceptor Lock 24B ---X ---- Hopper Motor 33B */ - multfish_state *state = space->machine().driver_data<multfish_state>(); - - state->m_hopper_motor = data & 0x10; - coin_lockout_w(space->machine(), 0, data & 0x01); - coin_lockout_w(space->machine(), 1, data & 0x01); - coin_lockout_w(space->machine(), 2, data & 0x01); - coin_lockout_w(space->machine(), 3, data & 0x01); - coin_lockout_w(space->machine(), 4, data & 0x04); - coin_lockout_w(space->machine(), 5, data & 0x04); - coin_lockout_w(space->machine(), 6, data & 0x04); - coin_lockout_w(space->machine(), 7, data & 0x04); + + + m_hopper_motor = data & 0x10; + coin_lockout_w(machine(), 0, data & 0x01); + coin_lockout_w(machine(), 1, data & 0x01); + coin_lockout_w(machine(), 2, data & 0x01); + coin_lockout_w(machine(), 3, data & 0x01); + coin_lockout_w(machine(), 4, data & 0x04); + coin_lockout_w(machine(), 5, data & 0x04); + coin_lockout_w(machine(), 6, data & 0x04); + coin_lockout_w(machine(), 7, data & 0x04); } -static WRITE8_HANDLER( rollfr_hopper_w ) +WRITE8_MEMBER(multfish_state::rollfr_hopper_w) { /* By default RollFruit use inverted coinlock bit. */ - multfish_state *state = space->machine().driver_data<multfish_state>(); - - state->m_hopper_motor = data & 0x10; - coin_lockout_w(space->machine(), 0, !data & 0x01); - coin_lockout_w(space->machine(), 1, !data & 0x01); - coin_lockout_w(space->machine(), 2, !data & 0x01); - coin_lockout_w(space->machine(), 3, !data & 0x01); - coin_lockout_w(space->machine(), 4, data & 0x04); - coin_lockout_w(space->machine(), 5, data & 0x04); - coin_lockout_w(space->machine(), 6, data & 0x04); - coin_lockout_w(space->machine(), 7, data & 0x04); + + + m_hopper_motor = data & 0x10; + coin_lockout_w(machine(), 0, !data & 0x01); + coin_lockout_w(machine(), 1, !data & 0x01); + coin_lockout_w(machine(), 2, !data & 0x01); + coin_lockout_w(machine(), 3, !data & 0x01); + coin_lockout_w(machine(), 4, data & 0x04); + coin_lockout_w(machine(), 5, data & 0x04); + coin_lockout_w(machine(), 6, data & 0x04); + coin_lockout_w(machine(), 7, data & 0x04); } DRIVER_INIT( customl ) @@ -669,10 +679,10 @@ DRIVER_INIT( lhauntent ) } static ADDRESS_MAP_START( multfish_map, AS_PROGRAM, 8, multfish_state ) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_WRITE_LEGACY(multfish_vid_w) + AM_RANGE(0x0000, 0x7fff) AM_ROM AM_WRITE(multfish_vid_w) AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") AM_RANGE(0xc000, 0xdfff) AM_DEVREADWRITE_LEGACY("m48t35", multfish_timekeeper_r, multfish_timekeeper_w) - AM_RANGE(0xe000, 0xffff) AM_READWRITE_LEGACY(bankedram_r, bankedram_w) + AM_RANGE(0xe000, 0xffff) AM_READWRITE(bankedram_r, bankedram_w) ADDRESS_MAP_END // According to control panel the user buttons are arranged as @@ -820,7 +830,7 @@ static INPUT_PORTS_START( rollfr ) INPUT_PORTS_END -static WRITE8_HANDLER( multfish_lamps1_w ) +WRITE8_MEMBER(multfish_state::multfish_lamps1_w) { /* Port 0x30 @@ -844,7 +854,7 @@ static WRITE8_HANDLER( multfish_lamps1_w ) output_set_lamp_value(0, ((data >> 7) & 1)); /* Bet/Double Lamp */ } -static WRITE8_HANDLER( multfish_lamps2_w ) +WRITE8_MEMBER(multfish_state::multfish_lamps2_w) { /* Port 0x34 @@ -860,7 +870,7 @@ static WRITE8_HANDLER( multfish_lamps2_w ) output_set_lamp_value(10, ((data >> 4) & 1)); /* Upper Lamp Green */ } -static WRITE8_HANDLER( multfish_lamps3_w ) +WRITE8_MEMBER(multfish_state::multfish_lamps3_w) { /* Port 0x35 @@ -870,7 +880,7 @@ static WRITE8_HANDLER( multfish_lamps3_w ) output_set_lamp_value(11, ((data >> 1) & 1)); /* Upper Lamp Red */ } -static WRITE8_HANDLER( multfish_counters_w ) +WRITE8_MEMBER(multfish_state::multfish_counters_w) { /* Port 0x31 @@ -882,24 +892,23 @@ static WRITE8_HANDLER( multfish_counters_w ) -X-- ---- Key Out Counter 27A X--- ---- Total Bet Counter 28B */ - coin_counter_w(space->machine(), 0, data & 0x01); - coin_counter_w(space->machine(), 1, data & 0x02); - coin_counter_w(space->machine(), 2, data & 0x04); - coin_counter_w(space->machine(), 3, data & 0x10); - coin_counter_w(space->machine(), 4, data & 0x40); - coin_counter_w(space->machine(), 5, data & 0x80); + coin_counter_w(machine(), 0, data & 0x01); + coin_counter_w(machine(), 1, data & 0x02); + coin_counter_w(machine(), 2, data & 0x04); + coin_counter_w(machine(), 3, data & 0x10); + coin_counter_w(machine(), 4, data & 0x40); + coin_counter_w(machine(), 5, data & 0x80); } -static WRITE8_HANDLER( multfish_f3_w ) +WRITE8_MEMBER(multfish_state::multfish_f3_w) { //popmessage("multfish_f3_w %02x",data); } -static WRITE8_HANDLER( multfish_dispenable_w ) +WRITE8_MEMBER(multfish_state::multfish_dispenable_w) { - multfish_state *state = space->machine().driver_data<multfish_state>(); //popmessage("multfish_f4_w %02x",data); // display enable? - state->m_disp_enable = data; + m_disp_enable = data; } static ADDRESS_MAP_START( multfish_portmap, AS_IO, 8, multfish_state ) @@ -914,52 +923,52 @@ static ADDRESS_MAP_START( multfish_portmap, AS_IO, 8, multfish_state ) AM_RANGE(0x17, 0x17) AM_READ_PORT("IN7") /* Write ports not hooked up yet */ - AM_RANGE(0x30, 0x30) AM_WRITE_LEGACY(multfish_lamps1_w) - AM_RANGE(0x31, 0x31) AM_WRITE_LEGACY(multfish_counters_w) + AM_RANGE(0x30, 0x30) AM_WRITE(multfish_lamps1_w) + AM_RANGE(0x31, 0x31) AM_WRITE(multfish_counters_w) // AM_RANGE(0x32, 0x32) AM_WRITE_LEGACY(multfish_port32_w) - AM_RANGE(0x33, 0x33) AM_WRITE_LEGACY(multfish_hopper_w) - AM_RANGE(0x34, 0x34) AM_WRITE_LEGACY(multfish_lamps2_w) - AM_RANGE(0x35, 0x35) AM_WRITE_LEGACY(multfish_lamps3_w) + AM_RANGE(0x33, 0x33) AM_WRITE(multfish_hopper_w) + AM_RANGE(0x34, 0x34) AM_WRITE(multfish_lamps2_w) + AM_RANGE(0x35, 0x35) AM_WRITE(multfish_lamps3_w) // AM_RANGE(0x36, 0x36) AM_WRITE_LEGACY(multfish_port36_w) AM_RANGE(0x37, 0x37) AM_WRITE_LEGACY(watchdog_reset_w) AM_RANGE(0x38, 0x38) AM_DEVWRITE_LEGACY("aysnd", ay8910_address_w) AM_RANGE(0x39, 0x39) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_w) AM_RANGE(0x3a, 0x3a) AM_DEVREAD_LEGACY("aysnd", ay8910_r) - AM_RANGE(0x60, 0x60) AM_WRITE_LEGACY(multfish_dispenable_w) // display enable mirror for lottery sets - - AM_RANGE(0x90, 0x90) AM_READ_LEGACY(ray_r) - - AM_RANGE(0xa0, 0xa0) AM_WRITE_LEGACY(multfish_bank_w) // Crazy Monkey 2 banking - AM_RANGE(0xb0, 0xb0) AM_WRITE_LEGACY(multfish_bank_w) // Fruit Cocktail 2 lottery banking - AM_RANGE(0xb1, 0xb1) AM_WRITE_LEGACY(multfish_bank_w) // Crazy Monkey Ent banking - AM_RANGE(0xb2, 0xb2) AM_WRITE_LEGACY(multfish_bank_w) // Lacky Haunter Ent banking - AM_RANGE(0xb6, 0xb6) AM_WRITE_LEGACY(multfish_bank_w) // Resident Ent banking - AM_RANGE(0xbf, 0xbf) AM_WRITE_LEGACY(multfish_bank_w) // Gnome Ent banking - AM_RANGE(0xc7, 0xc7) AM_WRITE_LEGACY(multfish_bank_w) // Resident lottery banking - AM_RANGE(0xca, 0xca) AM_WRITE_LEGACY(multfish_bank_w) // Gnome lottery banking - AM_RANGE(0xcb, 0xcb) AM_WRITE_LEGACY(multfish_bank_w) // Keks lottery banking - AM_RANGE(0xcc, 0xcc) AM_WRITE_LEGACY(multfish_bank_w) // Sweet Life 2 lottery banking - AM_RANGE(0xcd, 0xcd) AM_WRITE_LEGACY(multfish_bank_w) // Island 2 lottery banking - AM_RANGE(0xce, 0xce) AM_WRITE_LEGACY(multfish_bank_w) // Pirate 2 lottery banking - AM_RANGE(0xd0, 0xd0) AM_WRITE_LEGACY(multfish_bank_w) // rollfr_4 banking - AM_RANGE(0xe1, 0xe1) AM_WRITE_LEGACY(multfish_bank_w) // Island 2 banking - AM_RANGE(0xe5, 0xe5) AM_WRITE_LEGACY(multfish_bank_w) // Gnome banking - AM_RANGE(0xe8, 0xe8) AM_WRITE_LEGACY(multfish_bank_w) // Sweet Life 2 banking - AM_RANGE(0xea, 0xea) AM_WRITE_LEGACY(multfish_bank_w) // Fruit Cocktail 2 banking - AM_RANGE(0xec, 0xec) AM_WRITE_LEGACY(multfish_bank_w) // Crazy Monkey lottery banking - - AM_RANGE(0xf0, 0xf0) AM_WRITE_LEGACY(multfish_bank_w) // Gold Fish banking - AM_RANGE(0xf1, 0xf1) AM_WRITE_LEGACY(multfish_rambank_w) - AM_RANGE(0xf3, 0xf3) AM_WRITE_LEGACY(multfish_f3_w) // from 00->01 at startup, irq enable maybe? - AM_RANGE(0xf4, 0xf4) AM_WRITE_LEGACY(multfish_dispenable_w) // display enable + AM_RANGE(0x60, 0x60) AM_WRITE(multfish_dispenable_w) // display enable mirror for lottery sets + + AM_RANGE(0x90, 0x90) AM_READ(ray_r) + + AM_RANGE(0xa0, 0xa0) AM_WRITE(multfish_bank_w) // Crazy Monkey 2 banking + AM_RANGE(0xb0, 0xb0) AM_WRITE(multfish_bank_w) // Fruit Cocktail 2 lottery banking + AM_RANGE(0xb1, 0xb1) AM_WRITE(multfish_bank_w) // Crazy Monkey Ent banking + AM_RANGE(0xb2, 0xb2) AM_WRITE(multfish_bank_w) // Lacky Haunter Ent banking + AM_RANGE(0xb6, 0xb6) AM_WRITE(multfish_bank_w) // Resident Ent banking + AM_RANGE(0xbf, 0xbf) AM_WRITE(multfish_bank_w) // Gnome Ent banking + AM_RANGE(0xc7, 0xc7) AM_WRITE(multfish_bank_w) // Resident lottery banking + AM_RANGE(0xca, 0xca) AM_WRITE(multfish_bank_w) // Gnome lottery banking + AM_RANGE(0xcb, 0xcb) AM_WRITE(multfish_bank_w) // Keks lottery banking + AM_RANGE(0xcc, 0xcc) AM_WRITE(multfish_bank_w) // Sweet Life 2 lottery banking + AM_RANGE(0xcd, 0xcd) AM_WRITE(multfish_bank_w) // Island 2 lottery banking + AM_RANGE(0xce, 0xce) AM_WRITE(multfish_bank_w) // Pirate 2 lottery banking + AM_RANGE(0xd0, 0xd0) AM_WRITE(multfish_bank_w) // rollfr_4 banking + AM_RANGE(0xe1, 0xe1) AM_WRITE(multfish_bank_w) // Island 2 banking + AM_RANGE(0xe5, 0xe5) AM_WRITE(multfish_bank_w) // Gnome banking + AM_RANGE(0xe8, 0xe8) AM_WRITE(multfish_bank_w) // Sweet Life 2 banking + AM_RANGE(0xea, 0xea) AM_WRITE(multfish_bank_w) // Fruit Cocktail 2 banking + AM_RANGE(0xec, 0xec) AM_WRITE(multfish_bank_w) // Crazy Monkey lottery banking + + AM_RANGE(0xf0, 0xf0) AM_WRITE(multfish_bank_w) // Gold Fish banking + AM_RANGE(0xf1, 0xf1) AM_WRITE(multfish_rambank_w) + AM_RANGE(0xf3, 0xf3) AM_WRITE(multfish_f3_w) // from 00->01 at startup, irq enable maybe? + AM_RANGE(0xf4, 0xf4) AM_WRITE(multfish_dispenable_w) // display enable /* mirrors of the rom banking */ - AM_RANGE(0xf8, 0xfd) AM_WRITE_LEGACY(multfish_bank_w) + AM_RANGE(0xf8, 0xfd) AM_WRITE(multfish_bank_w) ADDRESS_MAP_END static ADDRESS_MAP_START( rollfr_portmap, AS_IO, 8, multfish_state ) - AM_RANGE(0x33, 0x33) AM_WRITE_LEGACY(rollfr_hopper_w) + AM_RANGE(0x33, 0x33) AM_WRITE(rollfr_hopper_w) AM_IMPORT_FROM(multfish_portmap) ADDRESS_MAP_END diff --git a/src/mame/drivers/murogem.c b/src/mame/drivers/murogem.c index 2bbdabf66ea..0aae5add620 100644 --- a/src/mame/drivers/murogem.c +++ b/src/mame/drivers/murogem.c @@ -117,10 +117,11 @@ public: : driver_device(mconfig, type, tag) { } UINT8 *m_videoram; + DECLARE_WRITE8_MEMBER(outport_w); }; -static WRITE8_HANDLER( outport_w ) +WRITE8_MEMBER(murogem_state::outport_w) { /* It's a Delta-Sigma DAC (1-bit/Bitstream) @@ -129,7 +130,7 @@ static WRITE8_HANDLER( outport_w ) 7654 3210 ---- x--- Sound DAC. */ - dac_data_w(space->machine().device("dac"), data & 0x08); + dac_data_w(machine().device("dac"), data & 0x08); } @@ -139,7 +140,7 @@ static ADDRESS_MAP_START( murogem_map, AS_PROGRAM, 8, murogem_state ) AM_RANGE(0x4001, 0x4001) AM_DEVWRITE("crtc", mc6845_device, register_w) AM_RANGE(0x5000, 0x5000) AM_READ_PORT("IN0") AM_RANGE(0x5800, 0x5800) AM_READ_PORT("IN1") - AM_RANGE(0x7000, 0x7000) AM_WRITE_LEGACY(outport_w) /* output port */ + AM_RANGE(0x7000, 0x7000) AM_WRITE(outport_w) /* output port */ AM_RANGE(0x8000, 0x87ff) AM_RAM AM_BASE(m_videoram) AM_RANGE(0xf000, 0xffff) AM_ROM ADDRESS_MAP_END diff --git a/src/mame/drivers/mw18w.c b/src/mame/drivers/mw18w.c index 07d51798f99..7a41063736e 100644 --- a/src/mame/drivers/mw18w.c +++ b/src/mame/drivers/mw18w.c @@ -25,27 +25,32 @@ public: mw18w_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) { } + DECLARE_WRITE8_MEMBER(mw18w_sound0_w); + DECLARE_WRITE8_MEMBER(mw18w_sound1_w); + DECLARE_WRITE8_MEMBER(mw18w_lamps_w); + DECLARE_WRITE8_MEMBER(mw18w_led_display_w); + DECLARE_WRITE8_MEMBER(mw18w_irq0_clear_w); }; -static WRITE8_HANDLER( mw18w_sound0_w ) +WRITE8_MEMBER(mw18w_state::mw18w_sound0_w) { // sound write (airhorn, brake, crash) plus motor speed for backdrop, and coin counter - coin_counter_w(space->machine(), 0, data&1); + coin_counter_w(machine(), 0, data&1); } -static WRITE8_HANDLER( mw18w_sound1_w ) +WRITE8_MEMBER(mw18w_state::mw18w_sound1_w) { // sound write (bell, engine) plus lamp dim control for backdrop lamp ; } -static WRITE8_HANDLER( mw18w_lamps_w ) +WRITE8_MEMBER(mw18w_state::mw18w_lamps_w) { ; } -static WRITE8_HANDLER( mw18w_led_display_w ) +WRITE8_MEMBER(mw18w_state::mw18w_led_display_w) { // d0-3: 7448 (BCD to LED segment) const UINT8 ls48_map[16] = @@ -56,9 +61,9 @@ static WRITE8_HANDLER( mw18w_led_display_w ) output_set_digit_value(data>>4, ls48_map[data&0xf]); } -static WRITE8_HANDLER( mw18w_irq0_clear_w ) +WRITE8_MEMBER(mw18w_state::mw18w_irq0_clear_w) { - cputag_set_input_line(space->machine(), "maincpu", 0, CLEAR_LINE); + cputag_set_input_line(machine(), "maincpu", 0, CLEAR_LINE); } static CUSTOM_INPUT( mw18w_sensors_r ) @@ -79,13 +84,13 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( mw18w_portmap, AS_IO, 8, mw18w_state ) ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE_LEGACY(mw18w_sound0_w) - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_WRITE_LEGACY(mw18w_sound1_w) - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_WRITE_LEGACY(mw18w_lamps_w) - AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW") AM_WRITE_LEGACY(mw18w_led_display_w) + AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(mw18w_sound0_w) + AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_WRITE(mw18w_sound1_w) + AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_WRITE(mw18w_lamps_w) + AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW") AM_WRITE(mw18w_led_display_w) AM_RANGE(0x04, 0x04) AM_READ_PORT("IN4") AM_RANGE(0x06, 0x06) AM_WRITE_LEGACY(watchdog_reset_w) - AM_RANGE(0x07, 0x07) AM_WRITE_LEGACY(mw18w_irq0_clear_w) + AM_RANGE(0x07, 0x07) AM_WRITE(mw18w_irq0_clear_w) ADDRESS_MAP_END static const UINT32 mw18w_controller_table[] = diff --git a/src/mame/drivers/mwarr.c b/src/mame/drivers/mwarr.c index 16530b43b31..493e5581e53 100644 --- a/src/mame/drivers/mwarr.c +++ b/src/mame/drivers/mwarr.c @@ -75,6 +75,12 @@ public: int m_which; UINT16 m_sprites_buffer[0x800]; + DECLARE_WRITE16_MEMBER(bg_videoram_w); + DECLARE_WRITE16_MEMBER(mlow_videoram_w); + DECLARE_WRITE16_MEMBER(mhigh_videoram_w); + DECLARE_WRITE16_MEMBER(tx_videoram_w); + DECLARE_WRITE16_MEMBER(sprites_commands_w); + DECLARE_WRITE16_MEMBER(mwarr_brightness_w); }; @@ -84,36 +90,32 @@ public: * *************************************/ -static WRITE16_HANDLER( bg_videoram_w ) +WRITE16_MEMBER(mwarr_state::bg_videoram_w) { - mwarr_state *state = space->machine().driver_data<mwarr_state>(); - COMBINE_DATA(&state->m_bg_videoram[offset]); - state->m_bg_tilemap->mark_tile_dirty(offset); + COMBINE_DATA(&m_bg_videoram[offset]); + m_bg_tilemap->mark_tile_dirty(offset); } -static WRITE16_HANDLER( mlow_videoram_w ) +WRITE16_MEMBER(mwarr_state::mlow_videoram_w) { - mwarr_state *state = space->machine().driver_data<mwarr_state>(); - COMBINE_DATA(&state->m_mlow_videoram[offset]); - state->m_mlow_tilemap->mark_tile_dirty(offset); + COMBINE_DATA(&m_mlow_videoram[offset]); + m_mlow_tilemap->mark_tile_dirty(offset); } -static WRITE16_HANDLER( mhigh_videoram_w ) +WRITE16_MEMBER(mwarr_state::mhigh_videoram_w) { - mwarr_state *state = space->machine().driver_data<mwarr_state>(); - COMBINE_DATA(&state->m_mhigh_videoram[offset]); - state->m_mhigh_tilemap->mark_tile_dirty(offset); + COMBINE_DATA(&m_mhigh_videoram[offset]); + m_mhigh_tilemap->mark_tile_dirty(offset); } -static WRITE16_HANDLER( tx_videoram_w ) +WRITE16_MEMBER(mwarr_state::tx_videoram_w) { - mwarr_state *state = space->machine().driver_data<mwarr_state>(); - COMBINE_DATA(&state->m_tx_videoram[offset]); - state->m_tx_tilemap->mark_tile_dirty(offset); + COMBINE_DATA(&m_tx_videoram[offset]); + m_tx_tilemap->mark_tile_dirty(offset); } static WRITE16_DEVICE_HANDLER( oki1_bank_w ) @@ -121,11 +123,10 @@ static WRITE16_DEVICE_HANDLER( oki1_bank_w ) downcast<okim6295_device *>(device)->set_bank_base(0x40000 * (data & 3)); } -static WRITE16_HANDLER( sprites_commands_w ) +WRITE16_MEMBER(mwarr_state::sprites_commands_w) { - mwarr_state *state = space->machine().driver_data<mwarr_state>(); - if (state->m_which) + if (m_which) { int i; @@ -135,9 +136,9 @@ static WRITE16_HANDLER( sprites_commands_w ) /* clear sprites on screen */ for (i = 0; i < 0x800; i++) { - state->m_sprites_buffer[i] = 0; + m_sprites_buffer[i] = 0; } - state->m_which = 0; + m_which = 0; break; default: @@ -146,7 +147,7 @@ static WRITE16_HANDLER( sprites_commands_w ) /* refresh sprites on screen */ for (i = 0; i < 0x800; i++) { - state->m_sprites_buffer[i] = state->m_spriteram[i]; + m_sprites_buffer[i] = m_spriteram[i]; } break; @@ -156,21 +157,20 @@ static WRITE16_HANDLER( sprites_commands_w ) } } - state->m_which ^= 1; + m_which ^= 1; } -static WRITE16_HANDLER( mwarr_brightness_w ) +WRITE16_MEMBER(mwarr_state::mwarr_brightness_w) { - mwarr_state *state = space->machine().driver_data<mwarr_state>(); int i; double brightness; - COMBINE_DATA(&state->m_mwarr_ram[0x14 / 2]); + COMBINE_DATA(&m_mwarr_ram[0x14 / 2]); brightness = (double)(data & 0xff); for (i = 0; i < 0x800; i++) { - palette_set_pen_contrast(space->machine(), i, brightness/255); + palette_set_pen_contrast(machine(), i, brightness/255); } } @@ -183,10 +183,10 @@ static WRITE16_HANDLER( mwarr_brightness_w ) static ADDRESS_MAP_START( mwarr_map, AS_PROGRAM, 16, mwarr_state ) AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x1007ff) AM_RAM_WRITE_LEGACY(bg_videoram_w) AM_BASE(m_bg_videoram) - AM_RANGE(0x100800, 0x100fff) AM_RAM_WRITE_LEGACY(mlow_videoram_w) AM_BASE(m_mlow_videoram) - AM_RANGE(0x101000, 0x1017ff) AM_RAM_WRITE_LEGACY(mhigh_videoram_w) AM_BASE(m_mhigh_videoram) - AM_RANGE(0x101800, 0x1027ff) AM_RAM_WRITE_LEGACY(tx_videoram_w) AM_BASE(m_tx_videoram) + AM_RANGE(0x100000, 0x1007ff) AM_RAM_WRITE(bg_videoram_w) AM_BASE(m_bg_videoram) + AM_RANGE(0x100800, 0x100fff) AM_RAM_WRITE(mlow_videoram_w) AM_BASE(m_mlow_videoram) + AM_RANGE(0x101000, 0x1017ff) AM_RAM_WRITE(mhigh_videoram_w) AM_BASE(m_mhigh_videoram) + AM_RANGE(0x101800, 0x1027ff) AM_RAM_WRITE(tx_videoram_w) AM_BASE(m_tx_videoram) AM_RANGE(0x103000, 0x1033ff) AM_RAM AM_BASE(m_bg_scrollram) AM_RANGE(0x103400, 0x1037ff) AM_RAM AM_BASE(m_mlow_scrollram) AM_RANGE(0x103800, 0x103bff) AM_RAM AM_BASE(m_mhigh_scrollram) @@ -197,8 +197,8 @@ static ADDRESS_MAP_START( mwarr_map, AS_PROGRAM, 16, mwarr_state ) AM_RANGE(0x110002, 0x110003) AM_READ_PORT("SYSTEM") AM_RANGE(0x110004, 0x110005) AM_READ_PORT("DSW") AM_RANGE(0x110010, 0x110011) AM_DEVWRITE_LEGACY("oki2", oki1_bank_w) - AM_RANGE(0x110014, 0x110015) AM_WRITE_LEGACY(mwarr_brightness_w) - AM_RANGE(0x110016, 0x110017) AM_WRITE_LEGACY(sprites_commands_w) + AM_RANGE(0x110014, 0x110015) AM_WRITE(mwarr_brightness_w) + AM_RANGE(0x110016, 0x110017) AM_WRITE(sprites_commands_w) AM_RANGE(0x110000, 0x11ffff) AM_RAM AM_BASE(m_mwarr_ram) AM_RANGE(0x180000, 0x180001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) AM_RANGE(0x190000, 0x190001) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) diff --git a/src/mame/drivers/namcos2.c b/src/mame/drivers/namcos2.c index 3ce2a967a7b..73f90cf8a62 100644 --- a/src/mame/drivers/namcos2.c +++ b/src/mame/drivers/namcos2.c @@ -473,6 +473,10 @@ public: namcos2_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) { } + DECLARE_READ16_MEMBER(namcos2_68k_dpram_word_r); + DECLARE_WRITE16_MEMBER(namcos2_68k_dpram_word_w); + DECLARE_READ8_MEMBER(namcos2_dpram_byte_r); + DECLARE_WRITE8_MEMBER(namcos2_dpram_byte_w); }; static UINT8 *namcos2_dpram; /* 2Kx8 */ @@ -536,12 +540,12 @@ GollyGhostUpdateDiorama_c0( int data ) } } -static READ16_HANDLER( namcos2_68k_dpram_word_r ) +READ16_MEMBER(namcos2_state::namcos2_68k_dpram_word_r) { return namcos2_dpram[offset]; } -static WRITE16_HANDLER( namcos2_68k_dpram_word_w ) +WRITE16_MEMBER(namcos2_state::namcos2_68k_dpram_word_w) { if( ACCESSING_BITS_0_7 ) { @@ -570,12 +574,12 @@ static WRITE16_HANDLER( namcos2_68k_dpram_word_w ) } -static READ8_HANDLER( namcos2_dpram_byte_r ) +READ8_MEMBER(namcos2_state::namcos2_dpram_byte_r) { return namcos2_dpram[offset]; } -static WRITE8_HANDLER( namcos2_dpram_byte_w ) +WRITE8_MEMBER(namcos2_state::namcos2_dpram_byte_w) { namcos2_dpram[offset] = data; } @@ -601,8 +605,8 @@ static ADDRESS_MAP_START( namcos2_68k_default_cpu_board_am, AS_PROGRAM, 16, namc AM_RANGE(0x400000, 0x41ffff) AM_READWRITE_LEGACY(namco_tilemapvideoram16_r,namco_tilemapvideoram16_w) AM_RANGE(0x420000, 0x42003f) AM_READWRITE_LEGACY(namco_tilemapcontrol16_r,namco_tilemapcontrol16_w) AM_RANGE(0x440000, 0x44ffff) AM_READWRITE_LEGACY(namcos2_68k_video_palette_r,namcos2_68k_video_palette_w) AM_BASE_LEGACY(&namcos2_68k_palette_ram) AM_SIZE_LEGACY(&namcos2_68k_palette_size) - AM_RANGE(0x460000, 0x460fff) AM_READWRITE_LEGACY(namcos2_68k_dpram_word_r,namcos2_68k_dpram_word_w) - AM_RANGE(0x468000, 0x468fff) AM_READWRITE_LEGACY(namcos2_68k_dpram_word_r,namcos2_68k_dpram_word_w) /* mirror */ + AM_RANGE(0x460000, 0x460fff) AM_READWRITE(namcos2_68k_dpram_word_r,namcos2_68k_dpram_word_w) + AM_RANGE(0x468000, 0x468fff) AM_READWRITE(namcos2_68k_dpram_word_r,namcos2_68k_dpram_word_w) /* mirror */ AM_RANGE(0x480000, 0x483fff) AM_READWRITE_LEGACY(namcos2_68k_serial_comms_ram_r,namcos2_68k_serial_comms_ram_w) AM_BASE_LEGACY(&namcos2_68k_serial_comms_ram) AM_RANGE(0x4a0000, 0x4a000f) AM_READWRITE_LEGACY(namcos2_68k_serial_comms_ctrl_r,namcos2_68k_serial_comms_ctrl_w) ADDRESS_MAP_END @@ -747,8 +751,8 @@ static ADDRESS_MAP_START( sound_default_am, AS_PROGRAM, 8, namcos2_state ) AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank6") /* banked */ AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r,ym2151_w) AM_RANGE(0x5000, 0x6fff) AM_DEVREADWRITE_LEGACY("c140", c140_r,c140_w) - AM_RANGE(0x7000, 0x77ff) AM_READWRITE_LEGACY(namcos2_dpram_byte_r,namcos2_dpram_byte_w) AM_BASE_LEGACY(&namcos2_dpram) - AM_RANGE(0x7800, 0x7fff) AM_READWRITE_LEGACY(namcos2_dpram_byte_r,namcos2_dpram_byte_w) /* mirror */ + AM_RANGE(0x7000, 0x77ff) AM_READWRITE(namcos2_dpram_byte_r,namcos2_dpram_byte_w) AM_BASE_LEGACY(&namcos2_dpram) + AM_RANGE(0x7800, 0x7fff) AM_READWRITE(namcos2_dpram_byte_r,namcos2_dpram_byte_w) /* mirror */ AM_RANGE(0x8000, 0x9fff) AM_RAM AM_RANGE(0xa000, 0xbfff) AM_WRITENOP /* Amplifier enable on 1st write */ AM_RANGE(0xc000, 0xc001) AM_WRITE_LEGACY(namcos2_sound_bankselect_w) @@ -779,7 +783,7 @@ static ADDRESS_MAP_START( mcu_default_am, AS_PROGRAM, 8, namcos2_state ) AM_RANGE(0x3001, 0x3001) AM_READ_PORT("MCUDI1") AM_RANGE(0x3002, 0x3002) AM_READ_PORT("MCUDI2") AM_RANGE(0x3003, 0x3003) AM_READ_PORT("MCUDI3") - AM_RANGE(0x5000, 0x57ff) AM_READWRITE_LEGACY(namcos2_dpram_byte_r,namcos2_dpram_byte_w) AM_BASE_LEGACY(&namcos2_dpram) + AM_RANGE(0x5000, 0x57ff) AM_READWRITE(namcos2_dpram_byte_r,namcos2_dpram_byte_w) AM_BASE_LEGACY(&namcos2_dpram) AM_RANGE(0x6000, 0x6fff) AM_READNOP /* watchdog */ AM_RANGE(0x8000, 0xffff) AM_ROM ADDRESS_MAP_END diff --git a/src/mame/drivers/namcos23.c b/src/mame/drivers/namcos23.c index 98b2529e527..ef6458b071e 100644 --- a/src/mame/drivers/namcos23.c +++ b/src/mame/drivers/namcos23.c @@ -1377,6 +1377,54 @@ public: UINT8 m_im_rd; UINT8 m_im_wr; UINT8 m_s23_tssio_port_4; + DECLARE_WRITE32_MEMBER(namcos23_textram_w); + DECLARE_WRITE32_MEMBER(s23_txtchar_w); + DECLARE_WRITE32_MEMBER(namcos23_paletteram_w); + DECLARE_READ16_MEMBER(s23_c417_r); + DECLARE_WRITE16_MEMBER(s23_c417_w); + DECLARE_READ16_MEMBER(s23_c412_ram_r); + DECLARE_WRITE16_MEMBER(s23_c412_ram_w); + DECLARE_READ16_MEMBER(s23_c412_r); + DECLARE_WRITE16_MEMBER(s23_c412_w); + DECLARE_READ16_MEMBER(s23_c421_ram_r); + DECLARE_WRITE16_MEMBER(s23_c421_ram_w); + DECLARE_READ16_MEMBER(s23_c421_r); + DECLARE_WRITE16_MEMBER(s23_c421_w); + DECLARE_WRITE16_MEMBER(s23_ctl_w); + DECLARE_READ16_MEMBER(s23_ctl_r); + DECLARE_WRITE16_MEMBER(s23_c361_w); + DECLARE_READ16_MEMBER(s23_c361_r); + DECLARE_READ16_MEMBER(s23_c422_r); + DECLARE_WRITE16_MEMBER(s23_c422_w); + DECLARE_WRITE32_MEMBER(s23_mcuen_w); + DECLARE_READ32_MEMBER(gorgon_sharedram_r); + DECLARE_WRITE32_MEMBER(gorgon_sharedram_w); + DECLARE_READ32_MEMBER(s23_unk_status_r); + DECLARE_READ32_MEMBER(p3d_r); + DECLARE_WRITE32_MEMBER(p3d_w); + DECLARE_READ32_MEMBER(gmen_trigger_sh2); + DECLARE_READ32_MEMBER(sh2_shared_r); + DECLARE_WRITE32_MEMBER(sh2_shared_w); + DECLARE_WRITE16_MEMBER(sharedram_sub_w); + DECLARE_READ16_MEMBER(sharedram_sub_r); + DECLARE_WRITE16_MEMBER(sub_interrupt_main_w); + DECLARE_READ8_MEMBER(s23_mcu_p8_r); + DECLARE_READ8_MEMBER(s23_mcu_pa_r); + DECLARE_WRITE8_MEMBER(s23_mcu_pa_w); + DECLARE_READ8_MEMBER(s23_mcu_rtc_r); + DECLARE_READ8_MEMBER(s23_mcu_portB_r); + DECLARE_WRITE8_MEMBER(s23_mcu_portB_w); + DECLARE_WRITE8_MEMBER(s23_mcu_settings_w); + DECLARE_READ8_MEMBER(s23_mcu_iob_r); + DECLARE_WRITE8_MEMBER(s23_mcu_iob_w); + DECLARE_READ8_MEMBER(s23_mcu_p6_r); + DECLARE_WRITE8_MEMBER(s23_mcu_p6_w); + DECLARE_READ8_MEMBER(s23_iob_mcu_r); + DECLARE_WRITE8_MEMBER(s23_iob_mcu_w); + DECLARE_READ8_MEMBER(s23_iob_p4_r); + DECLARE_WRITE8_MEMBER(s23_iob_p4_w); + DECLARE_READ8_MEMBER(s23_gun_r); + DECLARE_READ8_MEMBER(iob_r); }; @@ -1400,19 +1448,17 @@ static TILE_GET_INFO( TextTilemapGetInfo ) SET_TILE_INFO( 0, data&0x03ff, data>>12, TILE_FLIPYX((data&0x0c00)>>10) ); } /* TextTilemapGetInfo */ -static WRITE32_HANDLER( namcos23_textram_w ) +WRITE32_MEMBER(namcos23_state::namcos23_textram_w) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); - COMBINE_DATA( &state->m_textram[offset] ); - state->m_bgtilemap->mark_tile_dirty(offset*2); - state->m_bgtilemap->mark_tile_dirty((offset*2)+1); + COMBINE_DATA( &m_textram[offset] ); + m_bgtilemap->mark_tile_dirty(offset*2); + m_bgtilemap->mark_tile_dirty((offset*2)+1); } -static WRITE32_HANDLER( s23_txtchar_w ) +WRITE32_MEMBER(namcos23_state::s23_txtchar_w) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); - COMBINE_DATA(&state->m_charram[offset]); - gfx_element_mark_dirty(space->machine().gfx[0], offset/32); + COMBINE_DATA(&m_charram[offset]); + gfx_element_mark_dirty(machine().gfx[0], offset/32); } static UINT8 nthbyte( const UINT32 *pSource, int offs ) @@ -1437,17 +1483,16 @@ INLINE void UpdatePalette( running_machine &machine, int entry ) /* each LONGWORD is 2 colors. each OFFSET is 2 colors */ -static WRITE32_HANDLER( namcos23_paletteram_w ) +WRITE32_MEMBER(namcos23_state::namcos23_paletteram_w) { - COMBINE_DATA( &space->machine().generic.paletteram.u32[offset] ); + COMBINE_DATA( &machine().generic.paletteram.u32[offset] ); - UpdatePalette(space->machine(), (offset % (0x10000/4))*2); + UpdatePalette(machine(), (offset % (0x10000/4))*2); } -static READ16_HANDLER(s23_c417_r) +READ16_MEMBER(namcos23_state::s23_c417_r) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); - c417_t &c417 = state->m_c417; + c417_t &c417 = m_c417; switch(offset) { /* According to timecrs2c, +0 is the status word with bits being: @@ -1464,30 +1509,29 @@ static READ16_HANDLER(s23_c417_r) 1: 1st c435 busy (inverted) 0: xcpreq */ - case 0: return 0x8e | (space->machine().primary_screen->vblank() ? 0x0000 : 0x8000); + case 0: return 0x8e | (machine().primary_screen->vblank() ? 0x0000 : 0x8000); case 1: return c417.adr; case 4: - // logerror("c417_r %04x = %04x (%08x, %08x)\n", c417.adr, c417.ram[c417.adr], cpu_get_pc(&space->device()), (unsigned int)cpu_get_reg(&space->device(), MIPS3_R31)); + // logerror("c417_r %04x = %04x (%08x, %08x)\n", c417.adr, c417.ram[c417.adr], cpu_get_pc(&space.device()), (unsigned int)cpu_get_reg(&space.device(), MIPS3_R31)); return c417.ram[c417.adr]; case 5: - if(c417.pointrom_adr >= state->m_ptrom_limit) + if(c417.pointrom_adr >= m_ptrom_limit) return 0xffff; - return state->m_ptrom[c417.pointrom_adr] >> 16; + return m_ptrom[c417.pointrom_adr] >> 16; case 6: - if(c417.pointrom_adr >= state->m_ptrom_limit) + if(c417.pointrom_adr >= m_ptrom_limit) return 0xffff; - return state->m_ptrom[c417.pointrom_adr]; + return m_ptrom[c417.pointrom_adr]; } - logerror("c417_r %x @ %04x (%08x, %08x)\n", offset, mem_mask, cpu_get_pc(&space->device()), (unsigned int)cpu_get_reg(&space->device(), MIPS3_R31)); + logerror("c417_r %x @ %04x (%08x, %08x)\n", offset, mem_mask, cpu_get_pc(&space.device()), (unsigned int)cpu_get_reg(&space.device(), MIPS3_R31)); return 0; } -static WRITE16_HANDLER(s23_c417_w) +WRITE16_MEMBER(namcos23_state::s23_c417_w) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); - c417_t &c417 = state->m_c417; + c417_t &c417 = m_c417; switch(offset) { case 0: @@ -1503,25 +1547,24 @@ static WRITE16_HANDLER(s23_c417_w) c417.pointrom_adr = 0; break; case 4: - // logerror("c417_w %04x = %04x (%08x, %08x)\n", c417.adr, data, cpu_get_pc(&space->device()), (unsigned int)cpu_get_reg(&space->device(), MIPS3_R31)); + // logerror("c417_w %04x = %04x (%08x, %08x)\n", c417.adr, data, cpu_get_pc(&space.device()), (unsigned int)cpu_get_reg(&space.device(), MIPS3_R31)); COMBINE_DATA(c417.ram + c417.adr); break; case 7: logerror("c417_w: ack IRQ 2 (%x)\n", data); - cputag_set_input_line(space->machine(), "maincpu", MIPS3_IRQ2, CLEAR_LINE); + cputag_set_input_line(machine(), "maincpu", MIPS3_IRQ2, CLEAR_LINE); break; default: - logerror("c417_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, cpu_get_pc(&space->device()), (unsigned int)cpu_get_reg(&space->device(), MIPS3_R31)); + logerror("c417_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, cpu_get_pc(&space.device()), (unsigned int)cpu_get_reg(&space.device(), MIPS3_R31)); break; } } -static READ16_HANDLER(s23_c412_ram_r) +READ16_MEMBER(namcos23_state::s23_c412_ram_r) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); - c412_t &c412 = state->m_c412; + c412_t &c412 = m_c412; - // logerror("c412_ram_r %06x (%08x, %08x)\n", offset, cpu_get_pc(&space->device()), (unsigned int)cpu_get_reg(&space->device(), MIPS3_R31)); + // logerror("c412_ram_r %06x (%08x, %08x)\n", offset, cpu_get_pc(&space.device()), (unsigned int)cpu_get_reg(&space.device(), MIPS3_R31)); if(offset < 0x100000) return c412.sdram_a[offset & 0xfffff]; else if(offset < 0x200000) @@ -1534,12 +1577,11 @@ static READ16_HANDLER(s23_c412_ram_r) return 0xffff; } -static WRITE16_HANDLER(s23_c412_ram_w) +WRITE16_MEMBER(namcos23_state::s23_c412_ram_w) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); - c412_t &c412 = state->m_c412; + c412_t &c412 = m_c412; - // logerror("c412_ram_w %06x = %04x (%08x, %08x)\n", offset, data, cpu_get_pc(&space->device()), (unsigned int)cpu_get_reg(&space->device(), MIPS3_R31)); + // logerror("c412_ram_w %06x = %04x (%08x, %08x)\n", offset, data, cpu_get_pc(&space.device()), (unsigned int)cpu_get_reg(&space.device(), MIPS3_R31)); if(offset < 0x100000) COMBINE_DATA(c412.sdram_a + (offset & 0xfffff)); else if(offset < 0x200000) @@ -1550,10 +1592,9 @@ static WRITE16_HANDLER(s23_c412_ram_w) COMBINE_DATA(c412.pczram + (offset & 0x001ff)); } -static READ16_HANDLER(s23_c412_r) +READ16_MEMBER(namcos23_state::s23_c412_r) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); - c412_t &c412 = state->m_c412; + c412_t &c412 = m_c412; switch(offset) { case 3: @@ -1564,31 +1605,29 @@ static READ16_HANDLER(s23_c412_r) case 10: return s23_c412_ram_r(space, c412.adr, mem_mask); } - logerror("c412_r %x @ %04x (%08x, %08x)\n", offset, mem_mask, cpu_get_pc(&space->device()), (unsigned int)cpu_get_reg(&space->device(), MIPS3_R31)); + logerror("c412_r %x @ %04x (%08x, %08x)\n", offset, mem_mask, cpu_get_pc(&space.device()), (unsigned int)cpu_get_reg(&space.device(), MIPS3_R31)); return 0; } -static WRITE16_HANDLER(s23_c412_w) +WRITE16_MEMBER(namcos23_state::s23_c412_w) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); - c412_t &c412 = state->m_c412; + c412_t &c412 = m_c412; switch(offset) { case 8: c412.adr = (data & mem_mask) | (c412.adr & (0xffffffff ^ mem_mask)); break; case 9: c412.adr = ((data & mem_mask) << 16) | (c412.adr & (0xffffffff ^ (mem_mask << 16))); break; case 10: s23_c412_ram_w(space, c412.adr, data, mem_mask); c412.adr += 2; break; default: - logerror("c412_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, cpu_get_pc(&space->device()), (unsigned int)cpu_get_reg(&space->device(), MIPS3_R31)); + logerror("c412_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, cpu_get_pc(&space.device()), (unsigned int)cpu_get_reg(&space.device(), MIPS3_R31)); break; } } -static READ16_HANDLER(s23_c421_ram_r) +READ16_MEMBER(namcos23_state::s23_c421_ram_r) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); - c421_t &c421 = state->m_c421; + c421_t &c421 = m_c421; - // logerror("c421_ram_r %06x (%08x, %08x)\n", offset, cpu_get_pc(&space->device()), (unsigned int)cpu_get_reg(&space->device(), MIPS3_R31)); + // logerror("c421_ram_r %06x (%08x, %08x)\n", offset, cpu_get_pc(&space.device()), (unsigned int)cpu_get_reg(&space.device(), MIPS3_R31)); if(offset < 0x40000) return c421.dram_a[offset & 0x3ffff]; else if(offset < 0x80000) @@ -1599,12 +1638,11 @@ static READ16_HANDLER(s23_c421_ram_r) return 0xffff; } -static WRITE16_HANDLER(s23_c421_ram_w) +WRITE16_MEMBER(namcos23_state::s23_c421_ram_w) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); - c421_t &c421 = state->m_c421; + c421_t &c421 = m_c421; - // logerror("c421_ram_w %06x = %04x (%08x, %08x)\n", offset, data, cpu_get_pc(&space->device()), (unsigned int)cpu_get_reg(&space->device(), MIPS3_R31)); + // logerror("c421_ram_w %06x = %04x (%08x, %08x)\n", offset, data, cpu_get_pc(&space.device()), (unsigned int)cpu_get_reg(&space.device(), MIPS3_R31)); if(offset < 0x40000) COMBINE_DATA(c421.dram_a + (offset & 0x3ffff)); else if(offset < 0x80000) @@ -1613,10 +1651,9 @@ static WRITE16_HANDLER(s23_c421_ram_w) COMBINE_DATA(c421.sram + (offset & 0x07fff)); } -static READ16_HANDLER(s23_c421_r) +READ16_MEMBER(namcos23_state::s23_c421_r) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); - c421_t &c421 = state->m_c421; + c421_t &c421 = m_c421; switch(offset) { case 0: return s23_c421_ram_r(space, c421.adr & 0xfffff, mem_mask); @@ -1624,79 +1661,76 @@ static READ16_HANDLER(s23_c421_r) case 3: return c421.adr; } - logerror("c421_r %x @ %04x (%08x, %08x)\n", offset, mem_mask, cpu_get_pc(&space->device()), (unsigned int)cpu_get_reg(&space->device(), MIPS3_R31)); + logerror("c421_r %x @ %04x (%08x, %08x)\n", offset, mem_mask, cpu_get_pc(&space.device()), (unsigned int)cpu_get_reg(&space.device(), MIPS3_R31)); return 0; } -static WRITE16_HANDLER(s23_c421_w) +WRITE16_MEMBER(namcos23_state::s23_c421_w) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); - c421_t &c421 = state->m_c421; + c421_t &c421 = m_c421; switch(offset) { case 0: s23_c421_ram_w(space, c421.adr & 0xfffff, data, mem_mask); c421.adr += 2; break; case 2: c421.adr = ((data & mem_mask) << 16) | (c421.adr & (0xffffffff ^ (mem_mask << 16))); break; case 3: c421.adr = (data & mem_mask) | (c421.adr & (0xffffffff ^ mem_mask)); break; default: - logerror("c421_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, cpu_get_pc(&space->device()), (unsigned int)cpu_get_reg(&space->device(), MIPS3_R31)); + logerror("c421_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, cpu_get_pc(&space.device()), (unsigned int)cpu_get_reg(&space.device(), MIPS3_R31)); break; } } -static WRITE16_HANDLER(s23_ctl_w) +WRITE16_MEMBER(namcos23_state::s23_ctl_w) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); switch(offset) { case 0: { - if(state->m_ctl_led != (data & 0xff)) { - state->m_ctl_led = data; + if(m_ctl_led != (data & 0xff)) { + m_ctl_led = data; /* logerror("LEDS %c%c%c%c%c%c%c%c\n", - state->m_ctl_led & 0x80 ? '.' : '#', - state->m_ctl_led & 0x40 ? '.' : '#', - state->m_ctl_led & 0x20 ? '.' : '#', - state->m_ctl_led & 0x10 ? '.' : '#', - state->m_ctl_led & 0x08 ? '.' : '#', - state->m_ctl_led & 0x04 ? '.' : '#', - state->m_ctl_led & 0x02 ? '.' : '#', - state->m_ctl_led & 0x01 ? '.' : '#');*/ + m_ctl_led & 0x80 ? '.' : '#', + m_ctl_led & 0x40 ? '.' : '#', + m_ctl_led & 0x20 ? '.' : '#', + m_ctl_led & 0x10 ? '.' : '#', + m_ctl_led & 0x08 ? '.' : '#', + m_ctl_led & 0x04 ? '.' : '#', + m_ctl_led & 0x02 ? '.' : '#', + m_ctl_led & 0x01 ? '.' : '#');*/ } break; } case 2: case 3: // These may be coming from another CPU, in particular the I/O one - state->m_ctl_inp_buffer[offset-2] = input_port_read(space->machine(), offset == 2 ? "P1" : "P2"); + m_ctl_inp_buffer[offset-2] = input_port_read(machine(), offset == 2 ? "P1" : "P2"); break; case 5: - if(state->m_ctl_vbl_active) { - state->m_ctl_vbl_active = false; - device_set_input_line(&space->device(), MIPS3_IRQ0, CLEAR_LINE); + if(m_ctl_vbl_active) { + m_ctl_vbl_active = false; + device_set_input_line(&space.device(), MIPS3_IRQ0, CLEAR_LINE); } break; case 6: // gmen wars spams this heavily with 0 prior to starting the GMEN board test if (data != 0) - logerror("ctl_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, cpu_get_pc(&space->device()), (unsigned int)cpu_get_reg(&space->device(), MIPS3_R31)); + logerror("ctl_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, cpu_get_pc(&space.device()), (unsigned int)cpu_get_reg(&space.device(), MIPS3_R31)); break; default: - logerror("ctl_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, cpu_get_pc(&space->device()), (unsigned int)cpu_get_reg(&space->device(), MIPS3_R31)); + logerror("ctl_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, cpu_get_pc(&space.device()), (unsigned int)cpu_get_reg(&space.device(), MIPS3_R31)); } } -static READ16_HANDLER(s23_ctl_r) +READ16_MEMBER(namcos23_state::s23_ctl_r) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); switch(offset) { // 0100 set freezes gorgon (polygon fifo flag) - case 1: return 0x0000 | input_port_read(space->machine(), "DSW"); + case 1: return 0x0000 | input_port_read(machine(), "DSW"); case 2: case 3: { - UINT16 res = state->m_ctl_inp_buffer[offset-2] & 0x800 ? 0xffff : 0x0000; - state->m_ctl_inp_buffer[offset-2] = (state->m_ctl_inp_buffer[offset-2] << 1) | 1; + UINT16 res = m_ctl_inp_buffer[offset-2] & 0x800 ? 0xffff : 0x0000; + m_ctl_inp_buffer[offset-2] = (m_ctl_inp_buffer[offset-2] << 1) | 1; return res; } } - logerror("ctl_r %x @ %04x (%08x, %08x)\n", offset, mem_mask, cpu_get_pc(&space->device()), (unsigned int)cpu_get_reg(&space->device(), MIPS3_R31)); + logerror("ctl_r %x @ %04x (%08x, %08x)\n", offset, mem_mask, cpu_get_pc(&space.device()), (unsigned int)cpu_get_reg(&space.device(), MIPS3_R31)); return 0xffff; } @@ -1713,71 +1747,68 @@ static TIMER_CALLBACK( c361_timer_cb ) } } -static WRITE16_HANDLER(s23_c361_w) +WRITE16_MEMBER(namcos23_state::s23_c361_w) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); - c361_t &c361 = state->m_c361; + c361_t &c361 = m_c361; switch(offset) { case 0: - state->m_bgtilemap->set_scrollx(0, data&0xfff); + m_bgtilemap->set_scrollx(0, data&0xfff); break; case 1: - state->m_bgtilemap->set_scrolly(0, data&0xfff); + m_bgtilemap->set_scrolly(0, data&0xfff); break; case 4: // interrupt control c361.scanline = data; if (data == 0x1ff) { - cputag_set_input_line(space->machine(), "maincpu", MIPS3_IRQ1, CLEAR_LINE); + cputag_set_input_line(machine(), "maincpu", MIPS3_IRQ1, CLEAR_LINE); c361.timer->adjust(attotime::never); } else { - c361.timer->adjust(space->machine().primary_screen->time_until_pos(c361.scanline)); + c361.timer->adjust(machine().primary_screen->time_until_pos(c361.scanline)); } break; default: - logerror("c361_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, cpu_get_pc(&space->device()), (unsigned int)cpu_get_reg(&space->device(), MIPS3_R31)); + logerror("c361_w %x, %04x @ %04x (%08x, %08x)\n", offset, data, mem_mask, cpu_get_pc(&space.device()), (unsigned int)cpu_get_reg(&space.device(), MIPS3_R31)); } } -static READ16_HANDLER(s23_c361_r) +READ16_MEMBER(namcos23_state::s23_c361_r) { switch(offset) { - case 5: return space->machine().primary_screen->vpos()*2 | (space->machine().primary_screen->vblank() ? 1 : 0); - case 6: return space->machine().primary_screen->vblank(); + case 5: return machine().primary_screen->vpos()*2 | (machine().primary_screen->vblank() ? 1 : 0); + case 6: return machine().primary_screen->vblank(); } - logerror("c361_r %x @ %04x (%08x, %08x)\n", offset, mem_mask, cpu_get_pc(&space->device()), (unsigned int)cpu_get_reg(&space->device(), MIPS3_R31)); + logerror("c361_r %x @ %04x (%08x, %08x)\n", offset, mem_mask, cpu_get_pc(&space.device()), (unsigned int)cpu_get_reg(&space.device(), MIPS3_R31)); return 0xffff; } -static READ16_HANDLER(s23_c422_r) +READ16_MEMBER(namcos23_state::s23_c422_r) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); - c422_t &c422 = state->m_c422; + c422_t &c422 = m_c422; return c422.regs[offset]; } -static WRITE16_HANDLER(s23_c422_w) +WRITE16_MEMBER(namcos23_state::s23_c422_w) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); - c422_t &c422 = state->m_c422; + c422_t &c422 = m_c422; switch (offset) { case 1: if (data == 0xfffb) { logerror("c422_w: raise IRQ 3\n"); - cputag_set_input_line(space->machine(), "maincpu", MIPS3_IRQ3, ASSERT_LINE); + cputag_set_input_line(machine(), "maincpu", MIPS3_IRQ3, ASSERT_LINE); } else if (data == 0x000f) { logerror("c422_w: ack IRQ 3\n"); - cputag_set_input_line(space->machine(), "maincpu", MIPS3_IRQ3, CLEAR_LINE); + cputag_set_input_line(machine(), "maincpu", MIPS3_IRQ3, CLEAR_LINE); } break; @@ -1791,9 +1822,8 @@ static WRITE16_HANDLER(s23_c422_w) } // as with System 22, we need to halt the MCU while checking shared RAM -static WRITE32_HANDLER( s23_mcuen_w ) +WRITE32_MEMBER(namcos23_state::s23_mcuen_w) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); logerror("mcuen_w: mask %08x, data %08x\n", mem_mask, data); if (mem_mask == 0x0000ffff) { @@ -1802,19 +1832,19 @@ static WRITE32_HANDLER( s23_mcuen_w ) logerror("S23: booting H8/3002\n"); // Panic Park: writing 1 when it's already running means reboot? - if (state->m_s23_subcpu_running) + if (m_s23_subcpu_running) { - cputag_set_input_line(space->machine(), "audiocpu", INPUT_LINE_RESET, ASSERT_LINE); + cputag_set_input_line(machine(), "audiocpu", INPUT_LINE_RESET, ASSERT_LINE); } - cputag_set_input_line(space->machine(), "audiocpu", INPUT_LINE_RESET, CLEAR_LINE); - state->m_s23_subcpu_running = 1; + cputag_set_input_line(machine(), "audiocpu", INPUT_LINE_RESET, CLEAR_LINE); + m_s23_subcpu_running = 1; } else { logerror("S23: stopping H8/3002\n"); - cputag_set_input_line(space->machine(), "audiocpu", INPUT_LINE_RESET, ASSERT_LINE); - state->m_s23_subcpu_running = 0; + cputag_set_input_line(machine(), "audiocpu", INPUT_LINE_RESET, ASSERT_LINE); + m_s23_subcpu_running = 0; } } } @@ -1825,27 +1855,25 @@ static WRITE32_HANDLER( s23_mcuen_w ) off into the weeds, so we intercept */ -static READ32_HANDLER( gorgon_sharedram_r ) +READ32_MEMBER(namcos23_state::gorgon_sharedram_r) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); - return state->m_shared_ram[offset]; + return m_shared_ram[offset]; } -static WRITE32_HANDLER( gorgon_sharedram_w ) +WRITE32_MEMBER(namcos23_state::gorgon_sharedram_w) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); - COMBINE_DATA(&state->m_shared_ram[offset]); + COMBINE_DATA(&m_shared_ram[offset]); // hack for final furlong if ((offset == 0x6000/4) && (data == 0) && (mem_mask == 0xff000000)) { logerror("S23: Final Furlong hack stopping H8/3002\n"); - cputag_set_input_line(space->machine(), "audiocpu", INPUT_LINE_RESET, ASSERT_LINE); + cputag_set_input_line(machine(), "audiocpu", INPUT_LINE_RESET, ASSERT_LINE); } } // Panic Park sits in a tight loop waiting for this AND 0002 to be non-zero (at PC=BFC02F00) -static READ32_HANDLER( s23_unk_status_r ) +READ32_MEMBER(namcos23_state::s23_unk_status_r) { return 0x00020002; } @@ -2145,32 +2173,31 @@ static void p3d_dma(address_space *space, UINT32 adr, UINT32 size) } } -static READ32_HANDLER( p3d_r ) +READ32_MEMBER(namcos23_state::p3d_r) { switch(offset) { case 0xa: return 1; // Busy flag } - logerror("p3d_r %02x @ %08x (%08x, %08x)\n", offset, mem_mask, cpu_get_pc(&space->device()), (unsigned int)cpu_get_reg(&space->device(), MIPS3_R31)); + logerror("p3d_r %02x @ %08x (%08x, %08x)\n", offset, mem_mask, cpu_get_pc(&space.device()), (unsigned int)cpu_get_reg(&space.device(), MIPS3_R31)); return 0; } -static WRITE32_HANDLER( p3d_w) +WRITE32_MEMBER(namcos23_state::p3d_w) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); switch(offset) { - case 0x7: COMBINE_DATA(&state->m_p3d_address); return; - case 0x8: COMBINE_DATA(&state->m_p3d_size); return; + case 0x7: COMBINE_DATA(&m_p3d_address); return; + case 0x8: COMBINE_DATA(&m_p3d_size); return; case 0x9: if(data & 1) - p3d_dma(space, state->m_p3d_address, state->m_p3d_size); + p3d_dma(&space, m_p3d_address, m_p3d_size); return; case 0x17: - cputag_set_input_line(space->machine(), "maincpu", MIPS3_IRQ1, CLEAR_LINE); - state->m_c361.timer->adjust(attotime::never); + cputag_set_input_line(machine(), "maincpu", MIPS3_IRQ1, CLEAR_LINE); + m_c361.timer->adjust(attotime::never); return; } - logerror("p3d_w %02x, %08x @ %08x (%08x, %08x)\n", offset, data, mem_mask, cpu_get_pc(&space->device()), (unsigned int)cpu_get_reg(&space->device(), MIPS3_R31)); + logerror("p3d_w %02x, %08x @ %08x (%08x, %08x)\n", offset, data, mem_mask, cpu_get_pc(&space.device()), (unsigned int)cpu_get_reg(&space.device(), MIPS3_R31)); } static void render_apply_transform(INT32 xi, INT32 yi, INT32 zi, const namcos23_render_entry *re, poly_vertex &pv) @@ -2422,28 +2449,28 @@ static MACHINE_START( s23 ) static ADDRESS_MAP_START( gorgon_map, AS_PROGRAM, 32, namcos23_state ) ADDRESS_MAP_GLOBAL_MASK(0xfffffff) AM_RANGE(0x00000000, 0x003fffff) AM_RAM - AM_RANGE(0x01000000, 0x010000ff) AM_READWRITE_LEGACY(p3d_r, p3d_w ) - AM_RANGE(0x02000000, 0x0200000f) AM_READWRITE16_LEGACY(s23_c417_r, s23_c417_w, 0xffffffff ) - AM_RANGE(0x04400000, 0x0440ffff) AM_READWRITE_LEGACY(gorgon_sharedram_r, gorgon_sharedram_w ) AM_BASE(m_shared_ram) + AM_RANGE(0x01000000, 0x010000ff) AM_READWRITE(p3d_r, p3d_w ) + AM_RANGE(0x02000000, 0x0200000f) AM_READWRITE16(s23_c417_r, s23_c417_w, 0xffffffff ) + AM_RANGE(0x04400000, 0x0440ffff) AM_READWRITE(gorgon_sharedram_r, gorgon_sharedram_w ) AM_BASE(m_shared_ram) - AM_RANGE(0x04c3ff08, 0x04c3ff0b) AM_WRITE_LEGACY(s23_mcuen_w ) + AM_RANGE(0x04c3ff08, 0x04c3ff0b) AM_WRITE(s23_mcuen_w ) AM_RANGE(0x04c3ff0c, 0x04c3ff0f) AM_RAM AM_RANGE(0x06080000, 0x06081fff) AM_RAM AM_RANGE(0x06108000, 0x061087ff) AM_RAM // GAMMA (C404-3S) - AM_RANGE(0x06110000, 0x0613ffff) AM_RAM_WRITE_LEGACY(namcos23_paletteram_w ) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x06400000, 0x06403fff) AM_RAM_WRITE_LEGACY(s23_txtchar_w ) AM_BASE(m_charram) // text layer characters + AM_RANGE(0x06110000, 0x0613ffff) AM_RAM_WRITE(namcos23_paletteram_w ) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x06400000, 0x06403fff) AM_RAM_WRITE(s23_txtchar_w ) AM_BASE(m_charram) // text layer characters AM_RANGE(0x06404000, 0x0641dfff) AM_RAM - AM_RANGE(0x0641e000, 0x0641ffff) AM_RAM_WRITE_LEGACY(namcos23_textram_w ) AM_BASE(m_textram) + AM_RANGE(0x0641e000, 0x0641ffff) AM_RAM_WRITE(namcos23_textram_w ) AM_BASE(m_textram) AM_RANGE(0x08000000, 0x087fffff) AM_ROM AM_REGION("data", 0) // data ROMs AM_RANGE(0x0c000000, 0x0c00ffff) AM_RAM AM_SHARE("nvram") // BACKUP - AM_RANGE(0x0d000000, 0x0d00000f) AM_READWRITE16_LEGACY(s23_ctl_r, s23_ctl_w, 0xffffffff ) // write for LEDs at d000000, watchdog at d000004 + AM_RANGE(0x0d000000, 0x0d00000f) AM_READWRITE16(s23_ctl_r, s23_ctl_w, 0xffffffff ) // write for LEDs at d000000, watchdog at d000004 - AM_RANGE(0x0f000000, 0x0f000003) AM_READ_LEGACY(s23_unk_status_r ) + AM_RANGE(0x0f000000, 0x0f000003) AM_READ(s23_unk_status_r ) AM_RANGE(0x0f200000, 0x0f201fff) AM_RAM @@ -2453,53 +2480,51 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( ss23_map, AS_PROGRAM, 32, namcos23_state ) ADDRESS_MAP_GLOBAL_MASK(0xfffffff) AM_RANGE(0x00000000, 0x00ffffff) AM_RAM - AM_RANGE(0x01000000, 0x010000ff) AM_READWRITE_LEGACY(p3d_r, p3d_w ) - AM_RANGE(0x02000000, 0x0200000f) AM_READWRITE16_LEGACY(s23_c417_r, s23_c417_w, 0xffffffff ) + AM_RANGE(0x01000000, 0x010000ff) AM_READWRITE(p3d_r, p3d_w ) + AM_RANGE(0x02000000, 0x0200000f) AM_READWRITE16(s23_c417_r, s23_c417_w, 0xffffffff ) AM_RANGE(0x04400000, 0x0440ffff) AM_RAM AM_BASE(m_shared_ram) - AM_RANGE(0x04c3ff08, 0x04c3ff0b) AM_WRITE_LEGACY(s23_mcuen_w ) + AM_RANGE(0x04c3ff08, 0x04c3ff0b) AM_WRITE(s23_mcuen_w ) AM_RANGE(0x04c3ff0c, 0x04c3ff0f) AM_RAM AM_RANGE(0x06000000, 0x0600ffff) AM_RAM AM_SHARE("nvram") // Backup AM_RANGE(0x06200000, 0x06203fff) AM_RAM // C422 - AM_RANGE(0x06400000, 0x0640000f) AM_READWRITE16_LEGACY(s23_c422_r, s23_c422_w, 0xffffffff ) // C422 registers - AM_RANGE(0x06800000, 0x06807fff) AM_RAM_WRITE_LEGACY(s23_txtchar_w ) AM_BASE(m_charram) // text layer characters (shown as CGRAM in POST) + AM_RANGE(0x06400000, 0x0640000f) AM_READWRITE16(s23_c422_r, s23_c422_w, 0xffffffff ) // C422 registers + AM_RANGE(0x06800000, 0x06807fff) AM_RAM_WRITE(s23_txtchar_w ) AM_BASE(m_charram) // text layer characters (shown as CGRAM in POST) AM_RANGE(0x06804000, 0x0681dfff) AM_RAM - AM_RANGE(0x0681e000, 0x0681ffff) AM_RAM_WRITE_LEGACY(namcos23_textram_w ) AM_BASE(m_textram) - AM_RANGE(0x06820000, 0x0682000f) AM_READWRITE16_LEGACY(s23_c361_r, s23_c361_w, 0xffffffff ) // C361 + AM_RANGE(0x0681e000, 0x0681ffff) AM_RAM_WRITE(namcos23_textram_w ) AM_BASE(m_textram) + AM_RANGE(0x06820000, 0x0682000f) AM_READWRITE16(s23_c361_r, s23_c361_w, 0xffffffff ) // C361 AM_RANGE(0x06a08000, 0x06a087ff) AM_RAM // Blending control & GAMMA (C404) - AM_RANGE(0x06a10000, 0x06a3ffff) AM_RAM_WRITE_LEGACY(namcos23_paletteram_w ) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x06a10000, 0x06a3ffff) AM_RAM_WRITE(namcos23_paletteram_w ) AM_BASE_GENERIC(paletteram) AM_RANGE(0x08000000, 0x08ffffff) AM_ROM AM_REGION("data", 0x0000000) AM_MIRROR(0x1000000) // data ROMs AM_RANGE(0x0a000000, 0x0affffff) AM_ROM AM_REGION("data", 0x1000000) AM_MIRROR(0x1000000) - AM_RANGE(0x0c000000, 0x0c00001f) AM_READWRITE16_LEGACY(s23_c412_r, s23_c412_w, 0xffffffff ) - AM_RANGE(0x0c400000, 0x0c400007) AM_READWRITE16_LEGACY(s23_c421_r, s23_c421_w, 0xffffffff ) - AM_RANGE(0x0d000000, 0x0d00000f) AM_READWRITE16_LEGACY(s23_ctl_r, s23_ctl_w, 0xffffffff ) - AM_RANGE(0x0e800000, 0x0e800003) AM_READ_LEGACY(s23_unk_status_r ) + AM_RANGE(0x0c000000, 0x0c00001f) AM_READWRITE16(s23_c412_r, s23_c412_w, 0xffffffff ) + AM_RANGE(0x0c400000, 0x0c400007) AM_READWRITE16(s23_c421_r, s23_c421_w, 0xffffffff ) + AM_RANGE(0x0d000000, 0x0d00000f) AM_READWRITE16(s23_ctl_r, s23_ctl_w, 0xffffffff ) + AM_RANGE(0x0e800000, 0x0e800003) AM_READ(s23_unk_status_r ) AM_RANGE(0x0fc00000, 0x0fffffff) AM_WRITENOP AM_ROM AM_REGION("user1", 0) ADDRESS_MAP_END -static READ32_HANDLER( gmen_trigger_sh2 ) +READ32_MEMBER(namcos23_state::gmen_trigger_sh2) { logerror("gmen_trigger_sh2: booting SH-2\n"); - cputag_set_input_line(space->machine(), "gmen", INPUT_LINE_RESET, CLEAR_LINE); + cputag_set_input_line(machine(), "gmen", INPUT_LINE_RESET, CLEAR_LINE); return 0; } -static READ32_HANDLER( sh2_shared_r ) +READ32_MEMBER(namcos23_state::sh2_shared_r) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); - return state->m_gmen_sh2_shared[offset]; + return m_gmen_sh2_shared[offset]; } -static WRITE32_HANDLER( sh2_shared_w ) +WRITE32_MEMBER(namcos23_state::sh2_shared_w) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); - COMBINE_DATA(&state->m_gmen_sh2_shared[offset]); + COMBINE_DATA(&m_gmen_sh2_shared[offset]); } static ADDRESS_MAP_START( gmen_mips_map, AS_PROGRAM, 32, namcos23_state ) AM_IMPORT_FROM(ss23_map) - AM_RANGE(0x0e400000, 0x0e400003) AM_READ_LEGACY(gmen_trigger_sh2 ) - AM_RANGE(0x0e700000, 0x0e707fff) AM_READWRITE_LEGACY(sh2_shared_r, sh2_shared_w ) + AM_RANGE(0x0e400000, 0x0e400003) AM_READ(gmen_trigger_sh2 ) + AM_RANGE(0x0e700000, 0x0e707fff) AM_READWRITE(sh2_shared_r, sh2_shared_w ) ADDRESS_MAP_END @@ -2514,13 +2539,12 @@ static MACHINE_RESET(gmen) cputag_set_input_line(machine, "gmen", INPUT_LINE_RESET, ASSERT_LINE); } -static WRITE16_HANDLER( sharedram_sub_w ) +WRITE16_MEMBER(namcos23_state::sharedram_sub_w) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); - UINT16 *shared16 = (UINT16 *)state->m_shared_ram; + UINT16 *shared16 = (UINT16 *)m_shared_ram; // fake that an I/O board is connected for games w/o a dump or that aren't properly communicating with it yet - if (!state->m_has_jvsio) + if (!m_has_jvsio) { if ((offset == 0x4052/2) && (data == 0x78)) { @@ -2531,19 +2555,18 @@ static WRITE16_HANDLER( sharedram_sub_w ) COMBINE_DATA(&shared16[BYTE_XOR_BE(offset)]); } -static READ16_HANDLER( sharedram_sub_r ) +READ16_MEMBER(namcos23_state::sharedram_sub_r) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); - UINT16 *shared16 = (UINT16 *)state->m_shared_ram; + UINT16 *shared16 = (UINT16 *)m_shared_ram; return shared16[BYTE_XOR_BE(offset)]; } -static WRITE16_HANDLER( sub_interrupt_main_w ) +WRITE16_MEMBER(namcos23_state::sub_interrupt_main_w) { if ((mem_mask == 0xffff) && (data == 0x3170)) { - cputag_set_input_line(space->machine(), "maincpu", MIPS3_IRQ1, ASSERT_LINE); + cputag_set_input_line(machine(), "maincpu", MIPS3_IRQ1, ASSERT_LINE); } else { @@ -2554,15 +2577,15 @@ static WRITE16_HANDLER( sub_interrupt_main_w ) /* H8/3002 MCU stuff */ static ADDRESS_MAP_START( s23h8rwmap, AS_PROGRAM, 16, namcos23_state ) AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x08ffff) AM_READWRITE_LEGACY(sharedram_sub_r, sharedram_sub_w ) + AM_RANGE(0x080000, 0x08ffff) AM_READWRITE(sharedram_sub_r, sharedram_sub_w ) AM_RANGE(0x280000, 0x287fff) AM_DEVREADWRITE("c352", c352_device, read, write) AM_RANGE(0x300000, 0x300003) AM_NOP // seems to be more inputs, maybe false leftover code from System 12? AM_RANGE(0x300010, 0x300011) AM_NOP - AM_RANGE(0x300020, 0x300021) AM_WRITE_LEGACY(sub_interrupt_main_w ) + AM_RANGE(0x300020, 0x300021) AM_WRITE(sub_interrupt_main_w ) AM_RANGE(0x300030, 0x300031) AM_WRITENOP // timecrs2 writes this when writing to the sync shared ram location, motoxgo doesn't ADDRESS_MAP_END -static READ8_HANDLER( s23_mcu_p8_r ) +READ8_MEMBER(namcos23_state::s23_mcu_p8_r) { return 0x02; } @@ -2572,23 +2595,21 @@ static READ8_HANDLER( s23_mcu_p8_r ) // the actual I/O takes place through the H8/3002's serial port B. -static READ8_HANDLER( s23_mcu_pa_r ) +READ8_MEMBER(namcos23_state::s23_mcu_pa_r) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); - return state->m_s23_porta; + return m_s23_porta; } -static WRITE8_HANDLER( s23_mcu_pa_w ) +WRITE8_MEMBER(namcos23_state::s23_mcu_pa_w) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); // bit 0 = chip enable for the RTC // reset the state on the rising edge of the bit - if ((!(state->m_s23_porta & 1)) && (data & 1)) + if ((!(m_s23_porta & 1)) && (data & 1)) { - state->m_s23_rtcstate = 0; + m_s23_rtcstate = 0; } - state->m_s23_porta = data; + m_s23_porta = data; } INLINE UINT8 make_bcd(UINT8 data) @@ -2596,16 +2617,15 @@ INLINE UINT8 make_bcd(UINT8 data) return ((data / 10) << 4) | (data % 10); } -static READ8_HANDLER( s23_mcu_rtc_r ) +READ8_MEMBER(namcos23_state::s23_mcu_rtc_r) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); UINT8 ret = 0; system_time systime; static const int weekday[7] = { 7, 1, 2, 3, 4, 5, 6 }; - space->machine().current_datetime(systime); + machine().current_datetime(systime); - switch (state->m_s23_rtcstate) + switch (m_s23_rtcstate) { case 0: ret = make_bcd(systime.local_time.second); // seconds (BCD, 0-59) in bits 0-6, bit 7 = battery low @@ -2633,85 +2653,80 @@ static READ8_HANDLER( s23_mcu_rtc_r ) break; } - state->m_s23_rtcstate++; + m_s23_rtcstate++; return ret; } -static READ8_HANDLER( s23_mcu_portB_r ) +READ8_MEMBER(namcos23_state::s23_mcu_portB_r) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); - state->m_s23_lastpB ^= 0x80; - return state->m_s23_lastpB; + m_s23_lastpB ^= 0x80; + return m_s23_lastpB; } -static WRITE8_HANDLER( s23_mcu_portB_w ) +WRITE8_MEMBER(namcos23_state::s23_mcu_portB_w) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); // bit 7 = chip enable for the video settings controller if (data & 0x80) { - state->m_s23_setstate = 0; + m_s23_setstate = 0; } - state->m_s23_lastpB = data; + m_s23_lastpB = data; } -static WRITE8_HANDLER( s23_mcu_settings_w ) +WRITE8_MEMBER(namcos23_state::s23_mcu_settings_w) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); - if (state->m_s23_setstate) + if (m_s23_setstate) { // data - state->m_s23_settings[state->m_s23_setnum] = data; + m_s23_settings[m_s23_setnum] = data; - if (state->m_s23_setnum == 7) + if (m_s23_setnum == 7) { logerror("S23 video settings: Contrast: %02x R: %02x G: %02x B: %02x\n", - BITSWAP8(state->m_s23_settings[0], 0, 1, 2, 3, 4, 5, 6, 7), - BITSWAP8(state->m_s23_settings[1], 0, 1, 2, 3, 4, 5, 6, 7), - BITSWAP8(state->m_s23_settings[2], 0, 1, 2, 3, 4, 5, 6, 7), - BITSWAP8(state->m_s23_settings[3], 0, 1, 2, 3, 4, 5, 6, 7)); + BITSWAP8(m_s23_settings[0], 0, 1, 2, 3, 4, 5, 6, 7), + BITSWAP8(m_s23_settings[1], 0, 1, 2, 3, 4, 5, 6, 7), + BITSWAP8(m_s23_settings[2], 0, 1, 2, 3, 4, 5, 6, 7), + BITSWAP8(m_s23_settings[3], 0, 1, 2, 3, 4, 5, 6, 7)); } } else { // setting number - state->m_s23_setnum = (data >> 4)-1; + m_s23_setnum = (data >> 4)-1; } - state->m_s23_setstate ^= 1; + m_s23_setstate ^= 1; } -static READ8_HANDLER( s23_mcu_iob_r ) +READ8_MEMBER(namcos23_state::s23_mcu_iob_r) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); - UINT8 ret = state->m_iotomain[state->m_im_rd]; + UINT8 ret = m_iotomain[m_im_rd]; - state->m_im_rd++; - state->m_im_rd &= 0x7f; + m_im_rd++; + m_im_rd &= 0x7f; - if (state->m_im_rd == state->m_im_wr) + if (m_im_rd == m_im_wr) { - cputag_set_input_line(space->machine(), "audiocpu", H8_SCI_0_RX, CLEAR_LINE); + cputag_set_input_line(machine(), "audiocpu", H8_SCI_0_RX, CLEAR_LINE); } else { - cputag_set_input_line(space->machine(), "audiocpu", H8_SCI_0_RX, CLEAR_LINE); - cputag_set_input_line(space->machine(), "audiocpu", H8_SCI_0_RX, ASSERT_LINE); + cputag_set_input_line(machine(), "audiocpu", H8_SCI_0_RX, CLEAR_LINE); + cputag_set_input_line(machine(), "audiocpu", H8_SCI_0_RX, ASSERT_LINE); } return ret; } -static WRITE8_HANDLER( s23_mcu_iob_w ) +WRITE8_MEMBER(namcos23_state::s23_mcu_iob_w) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); - state->m_maintoio[state->m_mi_wr++] = data; - state->m_mi_wr &= 0x7f; + m_maintoio[m_mi_wr++] = data; + m_mi_wr &= 0x7f; - cputag_set_input_line(space->machine(), "ioboard", H8_SCI_0_RX, ASSERT_LINE); + cputag_set_input_line(machine(), "ioboard", H8_SCI_0_RX, ASSERT_LINE); } static INPUT_PORTS_START( gorgon ) @@ -2893,27 +2908,26 @@ static INPUT_PORTS_START( ss23 ) INPUT_PORTS_END -static READ8_HANDLER(s23_mcu_p6_r) +READ8_MEMBER(namcos23_state::s23_mcu_p6_r) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); // bit 1 = JVS cable present sense (1 = I/O board plugged in) - return (state->m_jvssense << 1) | 0xfd; + return (m_jvssense << 1) | 0xfd; } -static WRITE8_HANDLER(s23_mcu_p6_w) +WRITE8_MEMBER(namcos23_state::s23_mcu_p6_w) { // printf("%02x to port 6\n", data); } static ADDRESS_MAP_START( s23h8iomap, AS_IO, 8, namcos23_state ) - AM_RANGE(H8_PORT_6, H8_PORT_6) AM_READWRITE_LEGACY(s23_mcu_p6_r, s23_mcu_p6_w ) + AM_RANGE(H8_PORT_6, H8_PORT_6) AM_READWRITE(s23_mcu_p6_r, s23_mcu_p6_w ) AM_RANGE(H8_PORT_7, H8_PORT_7) AM_READ_PORT( "H8PORT" ) - AM_RANGE(H8_PORT_8, H8_PORT_8) AM_READ_LEGACY(s23_mcu_p8_r ) AM_WRITENOP + AM_RANGE(H8_PORT_8, H8_PORT_8) AM_READ(s23_mcu_p8_r ) AM_WRITENOP AM_RANGE(H8_PORT_9, H8_PORT_9) AM_NOP // read on Gorgon, purpose unknown - AM_RANGE(H8_PORT_A, H8_PORT_A) AM_READWRITE_LEGACY(s23_mcu_pa_r, s23_mcu_pa_w ) - AM_RANGE(H8_PORT_B, H8_PORT_B) AM_READWRITE_LEGACY(s23_mcu_portB_r, s23_mcu_portB_w ) - AM_RANGE(H8_SERIAL_0, H8_SERIAL_0) AM_READWRITE_LEGACY(s23_mcu_iob_r, s23_mcu_iob_w ) - AM_RANGE(H8_SERIAL_1, H8_SERIAL_1) AM_READWRITE_LEGACY(s23_mcu_rtc_r, s23_mcu_settings_w ) + AM_RANGE(H8_PORT_A, H8_PORT_A) AM_READWRITE(s23_mcu_pa_r, s23_mcu_pa_w ) + AM_RANGE(H8_PORT_B, H8_PORT_B) AM_READWRITE(s23_mcu_portB_r, s23_mcu_portB_w ) + AM_RANGE(H8_SERIAL_0, H8_SERIAL_0) AM_READWRITE(s23_mcu_iob_r, s23_mcu_iob_w ) + AM_RANGE(H8_SERIAL_1, H8_SERIAL_1) AM_READWRITE(s23_mcu_rtc_r, s23_mcu_settings_w ) AM_RANGE(H8_ADC_0_H, H8_ADC_0_L) AM_NOP AM_RANGE(H8_ADC_1_H, H8_ADC_1_L) AM_NOP AM_RANGE(H8_ADC_2_H, H8_ADC_2_L) AM_NOP @@ -2922,12 +2936,12 @@ ADDRESS_MAP_END // version without serial hookup to I/O board for games where the PIC isn't dumped static ADDRESS_MAP_START( s23h8noiobmap, AS_IO, 8, namcos23_state ) - AM_RANGE(H8_PORT_6, H8_PORT_6) AM_READWRITE_LEGACY(s23_mcu_p6_r, s23_mcu_p6_w ) + AM_RANGE(H8_PORT_6, H8_PORT_6) AM_READWRITE(s23_mcu_p6_r, s23_mcu_p6_w ) AM_RANGE(H8_PORT_7, H8_PORT_7) AM_READ_PORT( "H8PORT" ) - AM_RANGE(H8_PORT_8, H8_PORT_8) AM_READ_LEGACY(s23_mcu_p8_r ) AM_WRITENOP - AM_RANGE(H8_PORT_A, H8_PORT_A) AM_READWRITE_LEGACY(s23_mcu_pa_r, s23_mcu_pa_w ) - AM_RANGE(H8_PORT_B, H8_PORT_B) AM_READWRITE_LEGACY(s23_mcu_portB_r, s23_mcu_portB_w ) - AM_RANGE(H8_SERIAL_1, H8_SERIAL_1) AM_READWRITE_LEGACY(s23_mcu_rtc_r, s23_mcu_settings_w ) + AM_RANGE(H8_PORT_8, H8_PORT_8) AM_READ(s23_mcu_p8_r ) AM_WRITENOP + AM_RANGE(H8_PORT_A, H8_PORT_A) AM_READWRITE(s23_mcu_pa_r, s23_mcu_pa_w ) + AM_RANGE(H8_PORT_B, H8_PORT_B) AM_READWRITE(s23_mcu_portB_r, s23_mcu_portB_w ) + AM_RANGE(H8_SERIAL_1, H8_SERIAL_1) AM_READWRITE(s23_mcu_rtc_r, s23_mcu_settings_w ) AM_RANGE(H8_ADC_0_H, H8_ADC_0_L) AM_NOP AM_RANGE(H8_ADC_1_H, H8_ADC_1_L) AM_NOP AM_RANGE(H8_ADC_2_H, H8_ADC_2_L) AM_NOP @@ -2935,50 +2949,46 @@ static ADDRESS_MAP_START( s23h8noiobmap, AS_IO, 8, namcos23_state ) ADDRESS_MAP_END -static READ8_HANDLER( s23_iob_mcu_r ) +READ8_MEMBER(namcos23_state::s23_iob_mcu_r) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); - UINT8 ret = state->m_maintoio[state->m_mi_rd]; + UINT8 ret = m_maintoio[m_mi_rd]; - state->m_mi_rd++; - state->m_mi_rd &= 0x7f; + m_mi_rd++; + m_mi_rd &= 0x7f; - if (state->m_mi_rd == state->m_mi_wr) + if (m_mi_rd == m_mi_wr) { - cputag_set_input_line(space->machine(), "ioboard", H8_SCI_0_RX, CLEAR_LINE); + cputag_set_input_line(machine(), "ioboard", H8_SCI_0_RX, CLEAR_LINE); } return ret; } -static WRITE8_HANDLER( s23_iob_mcu_w ) +WRITE8_MEMBER(namcos23_state::s23_iob_mcu_w) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); - state->m_iotomain[state->m_im_wr++] = data; - state->m_im_wr &= 0x7f; + m_iotomain[m_im_wr++] = data; + m_im_wr &= 0x7f; - cputag_set_input_line(space->machine(), "audiocpu", H8_SCI_0_RX, ASSERT_LINE); + cputag_set_input_line(machine(), "audiocpu", H8_SCI_0_RX, ASSERT_LINE); } -static READ8_HANDLER( s23_iob_p4_r ) +READ8_MEMBER(namcos23_state::s23_iob_p4_r) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); - return state->m_s23_tssio_port_4; + return m_s23_tssio_port_4; } -static WRITE8_HANDLER( s23_iob_p4_w ) +WRITE8_MEMBER(namcos23_state::s23_iob_p4_w) { - namcos23_state *state = space->machine().driver_data<namcos23_state>(); - state->m_s23_tssio_port_4 = data; + m_s23_tssio_port_4 = data; - state->m_jvssense = (data & 0x04) ? 0 : 1; + m_jvssense = (data & 0x04) ? 0 : 1; } -static READ8_HANDLER( s23_gun_r ) +READ8_MEMBER(namcos23_state::s23_gun_r) { - UINT16 xpos = input_port_read_safe(space->machine(), "LIGHTX", 0) * 640 / 0xff + 0x80; - UINT16 ypos = input_port_read_safe(space->machine(), "LIGHTY", 0) * 240 / 0xff + 0x20; + UINT16 xpos = input_port_read_safe(machine(), "LIGHTX", 0) * 640 / 0xff + 0x80; + UINT16 ypos = input_port_read_safe(machine(), "LIGHTY", 0) * 240 / 0xff + 0x20; // note: will need angle adjustments for accurate aiming at screen sides switch(offset) @@ -2995,9 +3005,9 @@ static READ8_HANDLER( s23_gun_r ) return 0; } -static READ8_HANDLER(iob_r) +READ8_MEMBER(namcos23_state::iob_r) { - return space->machine().rand(); + return machine().rand(); } /* H8/3334 (Namco C78) I/O board MCU */ @@ -3005,10 +3015,10 @@ static ADDRESS_MAP_START( s23iobrdmap, AS_PROGRAM, 8, namcos23_state ) AM_RANGE(0x0000, 0x1fff) AM_ROM AM_REGION("ioboard", 0) AM_RANGE(0x6000, 0x6000) AM_READ_PORT("TC2P0") // 0-1 = coin 0-3 = coin connect, 0-5 = test 0-6 = down select, 0-7 = up select, 0-8 = enter AM_RANGE(0x6001, 0x6001) AM_READ_PORT("TC2P1") // 1-1 = gun trigger 1-2 = foot pedal - AM_RANGE(0x6002, 0x6003) AM_READ_LEGACY(iob_r ) + AM_RANGE(0x6002, 0x6003) AM_READ(iob_r ) AM_RANGE(0x6004, 0x6005) AM_WRITENOP AM_RANGE(0x6006, 0x6007) AM_NOP - AM_RANGE(0x7000, 0x700f) AM_READ_LEGACY(iob_r ) + AM_RANGE(0x7000, 0x700f) AM_READ(iob_r ) AM_RANGE(0xc000, 0xf7ff) AM_RAM ADDRESS_MAP_END @@ -3019,7 +3029,7 @@ static ADDRESS_MAP_START( timecrs2iobrdmap, AS_PROGRAM, 8, namcos23_state ) AM_RANGE(0x6001, 0x6001) AM_READ_PORT("TC2P1") AM_RANGE(0x6002, 0x6005) AM_WRITENOP AM_RANGE(0x6006, 0x6007) AM_NOP - AM_RANGE(0x7000, 0x700f) AM_READ_LEGACY(s23_gun_r ) + AM_RANGE(0x7000, 0x700f) AM_READ(s23_gun_r ) AM_RANGE(0xc000, 0xf7ff) AM_RAM ADDRESS_MAP_END @@ -3032,7 +3042,7 @@ static ADDRESS_MAP_START( gorgoniobrdmap, AS_PROGRAM, 8, namcos23_state ) AM_RANGE(0x6003, 0x6003) AM_READ_PORT("RRP3") // 1-1 = button? 1-4 = start? AM_RANGE(0x6004, 0x6005) AM_WRITENOP AM_RANGE(0x6006, 0x6007) AM_NOP - AM_RANGE(0x7000, 0x700f) AM_READ_LEGACY(iob_r ) + AM_RANGE(0x7000, 0x700f) AM_READ(iob_r ) AM_RANGE(0xc000, 0xf7ff) AM_RAM ADDRESS_MAP_END @@ -3042,12 +3052,12 @@ ADDRESS_MAP_END port 4 bit 2 = SENSE line back to main (0 = asserted, 1 = dropped) */ static ADDRESS_MAP_START( s23iobrdiomap, AS_IO, 8, namcos23_state ) - AM_RANGE(H8_PORT_4, H8_PORT_4) AM_READWRITE_LEGACY(s23_iob_p4_r, s23_iob_p4_w ) + AM_RANGE(H8_PORT_4, H8_PORT_4) AM_READWRITE(s23_iob_p4_r, s23_iob_p4_w ) AM_RANGE(H8_PORT_5, H8_PORT_5) AM_NOP // status LED in bit 2 AM_RANGE(H8_PORT_6, H8_PORT_6) AM_NOP // unknown AM_RANGE(H8_PORT_8, H8_PORT_8) AM_NOP // unknown - used on ASCA-5 only AM_RANGE(H8_PORT_9, H8_PORT_9) AM_NOP // unknown - used on ASCA-5 only - AM_RANGE(H8_SERIAL_0, H8_SERIAL_0) AM_READWRITE_LEGACY(s23_iob_mcu_r, s23_iob_mcu_w ) + AM_RANGE(H8_SERIAL_0, H8_SERIAL_0) AM_READWRITE(s23_iob_mcu_r, s23_iob_mcu_w ) AM_RANGE(H8_ADC_0_H, H8_ADC_3_L) AM_NOP ADDRESS_MAP_END diff --git a/src/mame/drivers/neoprint.c b/src/mame/drivers/neoprint.c index 3b971cf5526..c0cee305e28 100644 --- a/src/mame/drivers/neoprint.c +++ b/src/mame/drivers/neoprint.c @@ -37,6 +37,17 @@ public: UINT8 m_audio_result; UINT8 m_bank_val; UINT8 m_vblank; + DECLARE_READ16_MEMBER(neoprint_calendar_r); + DECLARE_WRITE16_MEMBER(neoprint_calendar_w); + DECLARE_READ8_MEMBER(neoprint_unk_r); + DECLARE_READ16_MEMBER(neoprint_audio_result_r); + DECLARE_WRITE8_MEMBER(audio_cpu_clear_nmi_w); + DECLARE_WRITE16_MEMBER(audio_command_w); + DECLARE_READ8_MEMBER(audio_command_r); + DECLARE_WRITE8_MEMBER(audio_result_w); + DECLARE_WRITE16_MEMBER(nprsp_palette_w); + DECLARE_WRITE8_MEMBER(nprsp_bank_w); + DECLARE_READ16_MEMBER(rom_window_r); }; @@ -113,39 +124,37 @@ SCREEN_UPDATE_IND16(nprsp) } -static READ16_HANDLER( neoprint_calendar_r ) +READ16_MEMBER(neoprint_state::neoprint_calendar_r) { - //if(cpu_get_pc(&space->device()) != 0x4b38 )//&& cpu_get_pc(&space->device()) != 0x5f86 && cpu_get_pc(&space->device()) != 0x5f90) - // printf("%08x\n",cpu_get_pc(&space->device())); + //if(cpu_get_pc(&space.device()) != 0x4b38 )//&& cpu_get_pc(&space.device()) != 0x5f86 && cpu_get_pc(&space.device()) != 0x5f90) + // printf("%08x\n",cpu_get_pc(&space.device())); - return (upd4990a_databit_r(space->machine().device("upd4990a"), 0) << 15); + return (upd4990a_databit_r(machine().device("upd4990a"), 0) << 15); } -static WRITE16_HANDLER( neoprint_calendar_w ) +WRITE16_MEMBER(neoprint_state::neoprint_calendar_w) { - upd4990a_control_16_w(space->machine().device("upd4990a"), 0, ((data >> 8) & 7), mem_mask); + upd4990a_control_16_w(machine().device("upd4990a"), 0, ((data >> 8) & 7), mem_mask); } -static READ8_HANDLER( neoprint_unk_r ) +READ8_MEMBER(neoprint_state::neoprint_unk_r) { - neoprint_state *state = space->machine().driver_data<neoprint_state>(); /* ---x ---- tested in irq routine, odd/even field number? */ /* ---- xx-- one of these two must be high */ /* ---- --xx checked right before entering into attract mode, presumably printer/camera related */ - state->m_vblank = (space->machine().primary_screen->frame_number() & 0x1) ? 0x10 : 0x00; + m_vblank = (machine().primary_screen->frame_number() & 0x1) ? 0x10 : 0x00; - //if(cpu_get_pc(&space->device()) != 0x1504 && cpu_get_pc(&space->device()) != 0x5f86 && cpu_get_pc(&space->device()) != 0x5f90) - // printf("%08x\n",cpu_get_pc(&space->device())); + //if(cpu_get_pc(&space.device()) != 0x1504 && cpu_get_pc(&space.device()) != 0x5f86 && cpu_get_pc(&space.device()) != 0x5f90) + // printf("%08x\n",cpu_get_pc(&space.device())); - return state->m_vblank| 4 | 3; + return m_vblank| 4 | 3; } -static READ16_HANDLER( neoprint_audio_result_r ) +READ16_MEMBER(neoprint_state::neoprint_audio_result_r) { - neoprint_state *state = space->machine().driver_data<neoprint_state>(); - return (state->m_audio_result << 8) | 0x00; + return (m_audio_result << 8) | 0x00; } static void audio_cpu_assert_nmi(running_machine &machine) @@ -154,33 +163,33 @@ static void audio_cpu_assert_nmi(running_machine &machine) } -static WRITE8_HANDLER( audio_cpu_clear_nmi_w ) +WRITE8_MEMBER(neoprint_state::audio_cpu_clear_nmi_w) { - cputag_set_input_line(space->machine(), "audiocpu", INPUT_LINE_NMI, CLEAR_LINE); + cputag_set_input_line(machine(), "audiocpu", INPUT_LINE_NMI, CLEAR_LINE); } -static WRITE16_HANDLER( audio_command_w ) +WRITE16_MEMBER(neoprint_state::audio_command_w) { /* accessing the LSB only is not mapped */ if (mem_mask != 0x00ff) { soundlatch_w(space, 0, data >> 8); - audio_cpu_assert_nmi(space->machine()); + audio_cpu_assert_nmi(machine()); /* boost the interleave to let the audio CPU read the command */ - space->machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(50)); + machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(50)); - //if (LOG_CPU_COMM) logerror("MAIN CPU PC %06x: audio_command_w %04x - %04x\n", cpu_get_pc(&space->device()), data, mem_mask); + //if (LOG_CPU_COMM) logerror("MAIN CPU PC %06x: audio_command_w %04x - %04x\n", cpu_get_pc(&space.device()), data, mem_mask); } } -static READ8_HANDLER( audio_command_r ) +READ8_MEMBER(neoprint_state::audio_command_r) { UINT8 ret = soundlatch_r(space, 0); - //if (LOG_CPU_COMM) logerror(" AUD CPU PC %04x: audio_command_r %02x\n", cpu_get_pc(&space->device()), ret); + //if (LOG_CPU_COMM) logerror(" AUD CPU PC %04x: audio_command_r %02x\n", cpu_get_pc(&space.device()), ret); /* this is a guess */ audio_cpu_clear_nmi_w(space, 0, 0); @@ -190,14 +199,13 @@ static READ8_HANDLER( audio_command_r ) -static WRITE8_HANDLER( audio_result_w ) +WRITE8_MEMBER(neoprint_state::audio_result_w) { - neoprint_state *state = space->machine().driver_data<neoprint_state>(); - //neogeo_state *state = space->machine().driver_data<neogeo_state>(); - //if (LOG_CPU_COMM && (state->m_audio_result != data)) logerror(" AUD CPU PC %04x: audio_result_w %02x\n", cpu_get_pc(&space->device()), data); - state->m_audio_result = data; + //if (LOG_CPU_COMM && (m_audio_result != data)) logerror(" AUD CPU PC %04x: audio_result_w %02x\n", cpu_get_pc(&space.device()), data); + + m_audio_result = data; } static ADDRESS_MAP_START( neoprint_map, AS_PROGRAM, 16, neoprint_state ) @@ -207,12 +215,12 @@ static ADDRESS_MAP_START( neoprint_map, AS_PROGRAM, 16, neoprint_state ) AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("nvram") AM_RANGE(0x400000, 0x43ffff) AM_RAM AM_BASE(m_npvidram) AM_RANGE(0x500000, 0x51ffff) AM_RAM_WRITE_LEGACY(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x600000, 0x600001) AM_READWRITE_LEGACY(neoprint_audio_result_r,audio_command_w) - AM_RANGE(0x600002, 0x600003) AM_READWRITE_LEGACY(neoprint_calendar_r,neoprint_calendar_w) + AM_RANGE(0x600000, 0x600001) AM_READWRITE(neoprint_audio_result_r,audio_command_w) + AM_RANGE(0x600002, 0x600003) AM_READWRITE(neoprint_calendar_r,neoprint_calendar_w) AM_RANGE(0x600004, 0x600005) AM_READ_PORT("SYSTEM") AM_WRITENOP AM_RANGE(0x600006, 0x600007) AM_READ_PORT("IN") AM_WRITENOP AM_RANGE(0x600008, 0x600009) AM_READ_PORT("DSW1") - AM_RANGE(0x60000a, 0x60000b) AM_READ8_LEGACY(neoprint_unk_r,0xff00) + AM_RANGE(0x60000a, 0x60000b) AM_READ8(neoprint_unk_r,0xff00) AM_RANGE(0x60000c, 0x60000d) AM_READ_PORT("DSW2") AM_RANGE(0x60000e, 0x60000f) AM_WRITENOP @@ -221,16 +229,16 @@ static ADDRESS_MAP_START( neoprint_map, AS_PROGRAM, 16, neoprint_state ) AM_RANGE(0x70001e, 0x70001f) AM_WRITENOP //watchdog ADDRESS_MAP_END -static WRITE16_HANDLER( nprsp_palette_w ) +WRITE16_MEMBER(neoprint_state::nprsp_palette_w) { UINT8 r,g,b,i; - COMBINE_DATA(&space->machine().generic.paletteram.u16[offset]); + COMBINE_DATA(&machine().generic.paletteram.u16[offset]); - g = (space->machine().generic.paletteram.u16[offset & ~1] & 0xf800) >> 8; - r = (space->machine().generic.paletteram.u16[offset & ~1] & 0x00f8) >> 0; - i = (space->machine().generic.paletteram.u16[offset | 1] & 0x1c00) >> 10; - b = (space->machine().generic.paletteram.u16[offset | 1] & 0x00f8) >> 0; + g = (machine().generic.paletteram.u16[offset & ~1] & 0xf800) >> 8; + r = (machine().generic.paletteram.u16[offset & ~1] & 0x00f8) >> 0; + i = (machine().generic.paletteram.u16[offset | 1] & 0x1c00) >> 10; + b = (machine().generic.paletteram.u16[offset | 1] & 0x00f8) >> 0; r |= i; g |= i; b |= i; @@ -244,41 +252,39 @@ static WRITE16_HANDLER( nprsp_palette_w ) pal_entry = ((offset & 0xfffe) >> 1) + ((offset & 0x20000) ? 0x8000 : 0); - palette_set_color(space->machine(), pal_entry, MAKE_RGB(r,g,b)); + palette_set_color(machine(), pal_entry, MAKE_RGB(r,g,b)); } } -static WRITE8_HANDLER( nprsp_bank_w ) +WRITE8_MEMBER(neoprint_state::nprsp_bank_w) { - neoprint_state *state = space->machine().driver_data<neoprint_state>(); /* this register seems flip-flop based ... */ if((data & 0xf0) == 0x20) { if((data & 0xf) == 0x1) - state->m_bank_val = 1; + m_bank_val = 1; if((data & 0xf) == 0x2) - state->m_bank_val = 0; + m_bank_val = 0; } } -static READ16_HANDLER( rom_window_r ) +READ16_MEMBER(neoprint_state::rom_window_r) { - neoprint_state *state = space->machine().driver_data<neoprint_state>(); - UINT16 *rom = (UINT16 *)space->machine().region("maincpu")->base(); + UINT16 *rom = (UINT16 *)machine().region("maincpu")->base(); - return rom[offset | 0x80000/2 | state->m_bank_val*0x40000/2]; + return rom[offset | 0x80000/2 | m_bank_val*0x40000/2]; } static ADDRESS_MAP_START( nprsp_map, AS_PROGRAM, 16, neoprint_state ) AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x0fffff) AM_READ_LEGACY(rom_window_r) - AM_RANGE(0x200000, 0x200001) AM_READWRITE_LEGACY(neoprint_audio_result_r,audio_command_w) - AM_RANGE(0x200002, 0x200003) AM_READWRITE_LEGACY(neoprint_calendar_r,neoprint_calendar_w) + AM_RANGE(0x080000, 0x0fffff) AM_READ(rom_window_r) + AM_RANGE(0x200000, 0x200001) AM_READWRITE(neoprint_audio_result_r,audio_command_w) + AM_RANGE(0x200002, 0x200003) AM_READWRITE(neoprint_calendar_r,neoprint_calendar_w) AM_RANGE(0x200004, 0x200005) AM_READ_PORT("SYSTEM") AM_WRITENOP AM_RANGE(0x200006, 0x200007) AM_READ_PORT("IN") AM_WRITENOP - AM_RANGE(0x200008, 0x200009) AM_READ_PORT("DSW1") AM_WRITE8_LEGACY(nprsp_bank_w,0xff00) - AM_RANGE(0x20000a, 0x20000b) AM_READ8_LEGACY(neoprint_unk_r,0xff00) + AM_RANGE(0x200008, 0x200009) AM_READ_PORT("DSW1") AM_WRITE8(nprsp_bank_w,0xff00) + AM_RANGE(0x20000a, 0x20000b) AM_READ8(neoprint_unk_r,0xff00) AM_RANGE(0x20000c, 0x20000d) AM_READ_PORT("DSW2") AM_RANGE(0x20000e, 0x20000f) AM_WRITENOP @@ -288,7 +294,7 @@ static ADDRESS_MAP_START( nprsp_map, AS_PROGRAM, 16, neoprint_state ) AM_RANGE(0x300000, 0x33ffff) AM_RAM AM_SHARE("nvram") AM_RANGE(0x380000, 0x38ffff) AM_RAM AM_RANGE(0x400000, 0x43ffff) AM_RAM AM_BASE(m_npvidram) - AM_RANGE(0x500000, 0x57ffff) AM_RAM_WRITE_LEGACY(nprsp_palette_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x500000, 0x57ffff) AM_RAM_WRITE(nprsp_palette_w) AM_BASE_GENERIC(paletteram) ADDRESS_MAP_END /************************************* @@ -315,15 +321,15 @@ ADDRESS_MAP_END *************************************/ static ADDRESS_MAP_START( neoprint_audio_io_map, AS_IO, 8, neoprint_state ) - /*AM_RANGE(0x00, 0x00) AM_MIRROR(0xff00) AM_READWRITE_LEGACY(audio_command_r, audio_cpu_clear_nmi_w);*/ /* may not and NMI clear */ - AM_RANGE(0x00, 0x00) AM_MIRROR(0xff00) AM_READ_LEGACY(audio_command_r) AM_WRITENOP + /*AM_RANGE(0x00, 0x00) AM_MIRROR(0xff00) AM_READWRITE(audio_command_r, audio_cpu_clear_nmi_w);*/ /* may not and NMI clear */ + AM_RANGE(0x00, 0x00) AM_MIRROR(0xff00) AM_READ(audio_command_r) AM_WRITENOP AM_RANGE(0x04, 0x07) AM_MIRROR(0xff00) AM_DEVREADWRITE_LEGACY("ymsnd", ym2610_r, ym2610_w) // AM_RANGE(0x08, 0x08) AM_MIRROR(0xff00) /* write - NMI enable / acknowledge? (the data written doesn't matter) */ // AM_RANGE(0x08, 0x08) AM_MIRROR(0xfff0) AM_MASK(0xfff0) AM_READ_LEGACY(audio_cpu_bank_select_f000_f7ff_r) // AM_RANGE(0x09, 0x09) AM_MIRROR(0xfff0) AM_MASK(0xfff0) AM_READ_LEGACY(audio_cpu_bank_select_e000_efff_r) // AM_RANGE(0x0a, 0x0a) AM_MIRROR(0xfff0) AM_MASK(0xfff0) AM_READ_LEGACY(audio_cpu_bank_select_c000_dfff_r) // AM_RANGE(0x0b, 0x0b) AM_MIRROR(0xfff0) AM_MASK(0xfff0) AM_READ_LEGACY(audio_cpu_bank_select_8000_bfff_r) - AM_RANGE(0x0c, 0x0c) AM_MIRROR(0xff00) AM_WRITE_LEGACY(audio_result_w) + AM_RANGE(0x0c, 0x0c) AM_MIRROR(0xff00) AM_WRITE(audio_result_w) // AM_RANGE(0x18, 0x18) AM_MIRROR(0xff00) /* write - NMI disable? (the data written doesn't matter) */ ADDRESS_MAP_END diff --git a/src/mame/drivers/nightgal.c b/src/mame/drivers/nightgal.c index 8dd93a045a8..3ee1dbe702a 100644 --- a/src/mame/drivers/nightgal.c +++ b/src/mame/drivers/nightgal.c @@ -52,11 +52,30 @@ public: /* memory */ UINT8 m_blit_buffer[256*256]; + DECLARE_READ8_MEMBER(blitter_status_r); + DECLARE_WRITE8_MEMBER(nsc_true_blitter_w); + DECLARE_WRITE8_MEMBER(sexygal_nsc_true_blitter_w); + DECLARE_WRITE8_MEMBER(nsc_latch_w); + DECLARE_READ8_MEMBER(nsc_latch_r); + DECLARE_WRITE8_MEMBER(z80_latch_w); + DECLARE_READ8_MEMBER(z80_latch_r); + DECLARE_WRITE8_MEMBER(blitter_w); + DECLARE_READ8_MEMBER(nsc_blit_r); + DECLARE_WRITE8_MEMBER(royalqn_blitter_0_w); + DECLARE_WRITE8_MEMBER(royalqn_blitter_1_w); + DECLARE_WRITE8_MEMBER(royalqn_blitter_2_w); + DECLARE_READ8_MEMBER(royalqn_nsc_blit_r); + DECLARE_READ8_MEMBER(royalqn_comm_r); + DECLARE_WRITE8_MEMBER(royalqn_comm_w); + DECLARE_WRITE8_MEMBER(blit_vregs_w); + DECLARE_READ8_MEMBER(blit_vregs_r); + DECLARE_WRITE8_MEMBER(blit_true_vregs_w); + DECLARE_WRITE8_MEMBER(mux_w); }; -static READ8_HANDLER( blitter_status_r ) +READ8_MEMBER(nightgal_state::blitter_status_r) { return 0x80; } @@ -118,26 +137,25 @@ static void plot_nightgal_gfx_pixel( running_machine &machine, UINT8 pix, int x, state->m_blit_buffer[(y * 256) + (x >> 1)] = (state->m_blit_buffer[(y * 256) + (x >> 1)] & 0xf0) | (pix & 0x0f); } -static WRITE8_HANDLER( nsc_true_blitter_w ) +WRITE8_MEMBER(nightgal_state::nsc_true_blitter_w) { - nightgal_state *state = space->machine().driver_data<nightgal_state>(); int src, x, y, h, w, flipx; - state->m_true_blit[offset] = data; + m_true_blit[offset] = data; /*trigger blitter write to ram,might not be correct...*/ if (offset == 5) { - //printf("%02x %02x %02x %02x %02x %02x %02x\n", state->m_true_blit[0], state->m_true_blit[1], state->m_true_blit[2], state->m_true_blit[3], state->m_true_blit[4], state->m_true_blit[5], state->m_true_blit[6]); - w = (state->m_true_blit[4] & 0xff) + 1; - h = (state->m_true_blit[5] & 0xff) + 1; - src = ((state->m_true_blit[1] << 8) | (state->m_true_blit[0] << 0)); - src |= (state->m_true_blit[6] & 3) << 16; + //printf("%02x %02x %02x %02x %02x %02x %02x\n", m_true_blit[0], m_true_blit[1], m_true_blit[2], m_true_blit[3], m_true_blit[4], m_true_blit[5], m_true_blit[6]); + w = (m_true_blit[4] & 0xff) + 1; + h = (m_true_blit[5] & 0xff) + 1; + src = ((m_true_blit[1] << 8) | (m_true_blit[0] << 0)); + src |= (m_true_blit[6] & 3) << 16; - x = (state->m_true_blit[2] & 0xff); - y = (state->m_true_blit[3] & 0xff); + x = (m_true_blit[2] & 0xff); + y = (m_true_blit[3] & 0xff); // lowest bit of src controls flipping / draw direction? - flipx = (state->m_true_blit[0] & 1); + flipx = (m_true_blit[0] & 1); if (!flipx) src += (w * h) - 1; @@ -153,14 +171,14 @@ static WRITE8_HANDLER( nsc_true_blitter_w ) { int drawx = (x + xcount) & 0xff; int drawy = (y + ycount) & 0xff; - UINT8 dat = nightgal_gfx_nibble(space->machine(), src + count); - UINT8 cur_pen_hi = state->m_pen_data[(dat & 0xf0) >> 4]; - UINT8 cur_pen_lo = state->m_pen_data[(dat & 0x0f) >> 0]; + UINT8 dat = nightgal_gfx_nibble(machine(), src + count); + UINT8 cur_pen_hi = m_pen_data[(dat & 0xf0) >> 4]; + UINT8 cur_pen_lo = m_pen_data[(dat & 0x0f) >> 0]; dat = cur_pen_lo | (cur_pen_hi << 4); if ((dat & 0xff) != 0) - plot_nightgal_gfx_pixel(space->machine(), dat, drawx, drawy); + plot_nightgal_gfx_pixel(machine(), dat, drawx, drawy); if (!flipx) count--; @@ -173,27 +191,26 @@ static WRITE8_HANDLER( nsc_true_blitter_w ) } /* different register writes (probably a PAL line swapping).*/ -static WRITE8_HANDLER( sexygal_nsc_true_blitter_w ) +WRITE8_MEMBER(nightgal_state::sexygal_nsc_true_blitter_w) { - nightgal_state *state = space->machine().driver_data<nightgal_state>(); int src, x, y, h, w, flipx; - state->m_true_blit[offset] = data; + m_true_blit[offset] = data; /*trigger blitter write to ram,might not be correct...*/ if (offset == 6) { - //printf("%02x %02x %02x %02x %02x %02x %02x\n", state->m_true_blit[0], state->m_true_blit[1], state->m_true_blit[2], state->m_true_blit[3], state->m_true_blit[4], state->m_true_blit[5], state->m_true_blit[6]); - w = (state->m_true_blit[5] & 0xff) + 1; - h = (state->m_true_blit[6] & 0xff) + 1; - src = ((state->m_true_blit[1] << 8) | (state->m_true_blit[0] << 0)); - src |= (state->m_true_blit[2] & 3) << 16; + //printf("%02x %02x %02x %02x %02x %02x %02x\n", m_true_blit[0], m_true_blit[1], m_true_blit[2], m_true_blit[3], m_true_blit[4], m_true_blit[5], m_true_blit[6]); + w = (m_true_blit[5] & 0xff) + 1; + h = (m_true_blit[6] & 0xff) + 1; + src = ((m_true_blit[1] << 8) | (m_true_blit[0] << 0)); + src |= (m_true_blit[2] & 3) << 16; - x = (state->m_true_blit[3] & 0xff); - y = (state->m_true_blit[4] & 0xff); + x = (m_true_blit[3] & 0xff); + y = (m_true_blit[4] & 0xff); // lowest bit of src controls flipping / draw direction? - flipx = (state->m_true_blit[0] & 1); + flipx = (m_true_blit[0] & 1); if (!flipx) src += (w * h) - 1; @@ -209,14 +226,14 @@ static WRITE8_HANDLER( sexygal_nsc_true_blitter_w ) { int drawx = (x + xcount) & 0xff; int drawy = (y + ycount) & 0xff; - UINT8 dat = nightgal_gfx_nibble(space->machine(), src + count); - UINT8 cur_pen_hi = state->m_pen_data[(dat & 0xf0) >> 4]; - UINT8 cur_pen_lo = state->m_pen_data[(dat & 0x0f) >> 0]; + UINT8 dat = nightgal_gfx_nibble(machine(), src + count); + UINT8 cur_pen_hi = m_pen_data[(dat & 0xf0) >> 4]; + UINT8 cur_pen_lo = m_pen_data[(dat & 0x0f) >> 0]; dat = cur_pen_lo | cur_pen_hi << 4; if ((dat & 0xff) != 0) - plot_nightgal_gfx_pixel(space->machine(), dat, drawx, drawy); + plot_nightgal_gfx_pixel(machine(), dat, drawx, drawy); if (!flipx) count--; @@ -224,7 +241,7 @@ static WRITE8_HANDLER( sexygal_nsc_true_blitter_w ) count++; } } - //device_set_input_line(state->m_maincpu, INPUT_LINE_NMI, PULSE_LINE ); + //device_set_input_line(m_maincpu, INPUT_LINE_NMI, PULSE_LINE ); } } } @@ -297,108 +314,93 @@ master-slave algorithm //#define SUB_NCS_RUN state->m_ncs_latch = 0x00 //#define SUB_NCS_HALT state->m_ncs_latch = 0x80 #ifdef UNUSED_CODE -static WRITE8_HANDLER( nsc_latch_w ) +WRITE8_MEMBER(nightgal_state::nsc_latch_w) { - nightgal_state *state = space->machine().driver_data<nightgal_state>(); - device_set_input_line(state->m_subcpu, 0, HOLD_LINE ); + device_set_input_line(m_subcpu, 0, HOLD_LINE ); } -static READ8_HANDLER( nsc_latch_r ) +READ8_MEMBER(nightgal_state::nsc_latch_r) { - nightgal_state *state = space->machine().driver_data<nightgal_state>(); - return state->m_z80_latch; + return m_z80_latch; } -static WRITE8_HANDLER( z80_latch_w ) +WRITE8_MEMBER(nightgal_state::z80_latch_w) { - nightgal_state *state = space->machine().driver_data<nightgal_state>(); - state->m_nsc_latch = data; + m_nsc_latch = data; } -static READ8_HANDLER( z80_latch_r ) +READ8_MEMBER(nightgal_state::z80_latch_r) { - nightgal_state *state = space->machine().driver_data<nightgal_state>(); - return state->m_nsc_latch; + return m_nsc_latch; } /*z80 -> MCU video params*/ -static WRITE8_HANDLER( blitter_w ) +WRITE8_MEMBER(nightgal_state::blitter_w) { - nightgal_state *state = space->machine().driver_data<nightgal_state>(); - state->m_blit_raw_data[offset] = data; + m_blit_raw_data[offset] = data; MAIN_Z80_HALT; } -static READ8_HANDLER( nsc_blit_r ) +READ8_MEMBER(nightgal_state::nsc_blit_r) { - nightgal_state *state = space->machine().driver_data<nightgal_state>(); MAIN_Z80_RUN; - return state->m_blit_raw_data[offset]; + return m_blit_raw_data[offset]; } #endif /* TODO: simplify this (error in the document) */ -static WRITE8_HANDLER( royalqn_blitter_0_w ) +WRITE8_MEMBER(nightgal_state::royalqn_blitter_0_w) { - nightgal_state *state = space->machine().driver_data<nightgal_state>(); - state->m_blit_raw_data[0] = data; + m_blit_raw_data[0] = data; } -static WRITE8_HANDLER( royalqn_blitter_1_w ) +WRITE8_MEMBER(nightgal_state::royalqn_blitter_1_w) { - nightgal_state *state = space->machine().driver_data<nightgal_state>(); - state->m_blit_raw_data[1] = data; + m_blit_raw_data[1] = data; } -static WRITE8_HANDLER( royalqn_blitter_2_w ) +WRITE8_MEMBER(nightgal_state::royalqn_blitter_2_w) { - nightgal_state *state = space->machine().driver_data<nightgal_state>(); - state->m_blit_raw_data[2] = data; - device_set_input_line(state->m_subcpu, 0, ASSERT_LINE ); + m_blit_raw_data[2] = data; + device_set_input_line(m_subcpu, 0, ASSERT_LINE ); } -static READ8_HANDLER( royalqn_nsc_blit_r ) +READ8_MEMBER(nightgal_state::royalqn_nsc_blit_r) { - nightgal_state *state = space->machine().driver_data<nightgal_state>(); if(offset == 2) - device_set_input_line(state->m_subcpu, 0, CLEAR_LINE ); + device_set_input_line(m_subcpu, 0, CLEAR_LINE ); - return state->m_blit_raw_data[offset]; + return m_blit_raw_data[offset]; } -static READ8_HANDLER( royalqn_comm_r ) +READ8_MEMBER(nightgal_state::royalqn_comm_r) { - nightgal_state *state = space->machine().driver_data<nightgal_state>(); - return (state->m_comms_ram[offset] & 0x80) | (0x7f); //bits 6-0 are undefined, presumably open bus + return (m_comms_ram[offset] & 0x80) | (0x7f); //bits 6-0 are undefined, presumably open bus } -static WRITE8_HANDLER( royalqn_comm_w ) +WRITE8_MEMBER(nightgal_state::royalqn_comm_w) { - nightgal_state *state = space->machine().driver_data<nightgal_state>(); - state->m_comms_ram[offset] = data & 0x80; + m_comms_ram[offset] = data & 0x80; } #ifdef UNUSED_CODE -static WRITE8_HANDLER( blit_vregs_w ) +WRITE8_MEMBER(nightgal_state::blit_vregs_w) { - nightgal_state *state = space->machine().driver_data<nightgal_state>(); - state->m_pen_raw_data[offset] = data; + m_pen_raw_data[offset] = data; } -static READ8_HANDLER( blit_vregs_r ) +READ8_MEMBER(nightgal_state::blit_vregs_r) { - nightgal_state *state = space->machine().driver_data<nightgal_state>(); - return state->m_pen_raw_data[offset]; + return m_pen_raw_data[offset]; } #endif -static WRITE8_HANDLER( blit_true_vregs_w ) +WRITE8_MEMBER(nightgal_state::blit_true_vregs_w) { - nightgal_state *state = space->machine().driver_data<nightgal_state>(); - state->m_pen_data[offset] = data; + m_pen_data[offset] = data; } /******************************************** @@ -407,11 +409,10 @@ static WRITE8_HANDLER( blit_true_vregs_w ) * ********************************************/ -static WRITE8_HANDLER( mux_w ) +WRITE8_MEMBER(nightgal_state::mux_w) { - nightgal_state *state = space->machine().driver_data<nightgal_state>(); - state->m_mux_data = ~data; - //printf("%02x\n", state->m_mux_data); + m_mux_data = ~data; + //printf("%02x\n", m_mux_data); } static READ8_DEVICE_HANDLER( input_1p_r ) @@ -466,9 +467,9 @@ static READ8_DEVICE_HANDLER( input_2p_r ) #ifdef UNUSED_CODE static ADDRESS_MAP_START( nightgal_map, AS_PROGRAM, 8, nightgal_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc100, 0xc100) AM_READ_LEGACY(nsc_latch_r) - AM_RANGE(0xc200, 0xc200) AM_WRITE_LEGACY(nsc_latch_w) - AM_RANGE(0xc300, 0xc30f) AM_WRITE_LEGACY(blit_vregs_w) + AM_RANGE(0xc100, 0xc100) AM_READ(nsc_latch_r) + AM_RANGE(0xc200, 0xc200) AM_WRITE(nsc_latch_w) + AM_RANGE(0xc300, 0xc30f) AM_WRITE(blit_vregs_w) AM_RANGE(0xf000, 0xffff) AM_RAM ADDRESS_MAP_END @@ -481,21 +482,21 @@ static ADDRESS_MAP_START( nightgal_io, AS_IO, 8, nightgal_state ) AM_RANGE(0x11,0x11) AM_READ_PORT("SYSA") AM_RANGE(0x12,0x12) AM_READ_PORT("DSWA") AM_RANGE(0x13,0x13) AM_READ_PORT("DSWB") - AM_RANGE(0x11,0x11) AM_WRITE_LEGACY(mux_w) - AM_RANGE(0x12,0x14) AM_WRITE_LEGACY(blitter_w) //data for the nsc to be processed + AM_RANGE(0x11,0x11) AM_WRITE(mux_w) + AM_RANGE(0x12,0x14) AM_WRITE(blitter_w) //data for the nsc to be processed ADDRESS_MAP_END static ADDRESS_MAP_START( nsc_map, AS_PROGRAM, 8, nightgal_state ) AM_RANGE(0x0000, 0x007f) AM_RAM - AM_RANGE(0x0080, 0x0080) AM_READ_LEGACY(blitter_status_r) - AM_RANGE(0x0081, 0x0083) AM_READ_LEGACY(nsc_blit_r) - AM_RANGE(0x0080, 0x0086) AM_WRITE_LEGACY(nsc_true_blitter_w) + AM_RANGE(0x0080, 0x0080) AM_READ(blitter_status_r) + AM_RANGE(0x0081, 0x0083) AM_READ(nsc_blit_r) + AM_RANGE(0x0080, 0x0086) AM_WRITE(nsc_true_blitter_w) - AM_RANGE(0x00a0, 0x00af) AM_WRITE_LEGACY(blit_true_vregs_w) + AM_RANGE(0x00a0, 0x00af) AM_WRITE(blit_true_vregs_w) - AM_RANGE(0x1100, 0x1100) AM_READWRITE_LEGACY(z80_latch_r,z80_latch_w) //irq control? + AM_RANGE(0x1100, 0x1100) AM_READWRITE(z80_latch_r,z80_latch_w) //irq control? AM_RANGE(0x1200, 0x1200) AM_READNOP //flip screen set bit - AM_RANGE(0x1300, 0x130f) AM_READ_LEGACY(blit_vregs_r) + AM_RANGE(0x1300, 0x130f) AM_READ(blit_vregs_r) // AM_RANGE(0x1000, 0xdfff) AM_ROM AM_REGION("gfx1", 0 ) AM_RANGE(0xe000, 0xffff) AM_ROM AM_WRITENOP ADDRESS_MAP_END @@ -508,7 +509,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( sexygal_map, AS_PROGRAM, 8, nightgal_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0xbfff) AM_RAM //??? - AM_RANGE(0xe000, 0xefff) AM_READWRITE_LEGACY(royalqn_comm_r, royalqn_comm_w) AM_BASE(m_comms_ram) + AM_RANGE(0xe000, 0xefff) AM_READWRITE(royalqn_comm_r, royalqn_comm_w) AM_BASE(m_comms_ram) AM_RANGE(0xf000, 0xffff) AM_RAM ADDRESS_MAP_END @@ -517,22 +518,22 @@ static ADDRESS_MAP_START( sexygal_io, AS_IO, 8, nightgal_state ) AM_RANGE(0x00,0x01) AM_DEVREADWRITE_LEGACY("ymsnd", ym2203_r, ym2203_w) // AM_RANGE(0x10,0x10) AM_WRITE_LEGACY(output_w) AM_RANGE(0x10,0x10) AM_READ_PORT("DSWC") - AM_RANGE(0x11,0x11) AM_READ_PORT("SYSA") AM_WRITE_LEGACY(mux_w) - AM_RANGE(0x12,0x12) AM_MIRROR(0xe8) AM_READ_PORT("DSWA") AM_WRITE_LEGACY(royalqn_blitter_0_w) - AM_RANGE(0x13,0x13) AM_MIRROR(0xe8) AM_READ_PORT("DSWB") AM_WRITE_LEGACY(royalqn_blitter_1_w) - AM_RANGE(0x14,0x14) AM_MIRROR(0xe8) AM_READNOP AM_WRITE_LEGACY(royalqn_blitter_2_w) + AM_RANGE(0x11,0x11) AM_READ_PORT("SYSA") AM_WRITE(mux_w) + AM_RANGE(0x12,0x12) AM_MIRROR(0xe8) AM_READ_PORT("DSWA") AM_WRITE(royalqn_blitter_0_w) + AM_RANGE(0x13,0x13) AM_MIRROR(0xe8) AM_READ_PORT("DSWB") AM_WRITE(royalqn_blitter_1_w) + AM_RANGE(0x14,0x14) AM_MIRROR(0xe8) AM_READNOP AM_WRITE(royalqn_blitter_2_w) ADDRESS_MAP_END static ADDRESS_MAP_START( sexygal_nsc_map, AS_PROGRAM, 8, nightgal_state ) AM_RANGE(0x0000, 0x007f) AM_RAM - AM_RANGE(0x0080, 0x0080) AM_READ_LEGACY(blitter_status_r) - AM_RANGE(0x0081, 0x0083) AM_READ_LEGACY(royalqn_nsc_blit_r) - AM_RANGE(0x0080, 0x0086) AM_WRITE_LEGACY(sexygal_nsc_true_blitter_w) + AM_RANGE(0x0080, 0x0080) AM_READ(blitter_status_r) + AM_RANGE(0x0081, 0x0083) AM_READ(royalqn_nsc_blit_r) + AM_RANGE(0x0080, 0x0086) AM_WRITE(sexygal_nsc_true_blitter_w) - AM_RANGE(0x00a0, 0x00af) AM_WRITE_LEGACY(blit_true_vregs_w) + AM_RANGE(0x00a0, 0x00af) AM_WRITE(blit_true_vregs_w) AM_RANGE(0x00b0, 0x00b0) AM_WRITENOP // bltflip register - AM_RANGE(0x1000, 0x13ff) AM_MIRROR(0x2c00) AM_READWRITE_LEGACY(royalqn_comm_r, royalqn_comm_w) AM_BASE(m_comms_ram) + AM_RANGE(0x1000, 0x13ff) AM_MIRROR(0x2c00) AM_READWRITE(royalqn_comm_r, royalqn_comm_w) AM_BASE(m_comms_ram) AM_RANGE(0xc000, 0xffff) AM_ROM AM_WRITENOP ADDRESS_MAP_END @@ -543,7 +544,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( royalqn_map, AS_PROGRAM, 8, nightgal_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0xbfff) AM_NOP - AM_RANGE(0xc000, 0xdfff) AM_READWRITE_LEGACY(royalqn_comm_r, royalqn_comm_w) AM_BASE(m_comms_ram) + AM_RANGE(0xc000, 0xdfff) AM_READWRITE(royalqn_comm_r, royalqn_comm_w) AM_BASE(m_comms_ram) AM_RANGE(0xe000, 0xffff) AM_RAM ADDRESS_MAP_END @@ -552,10 +553,10 @@ static ADDRESS_MAP_START( royalqn_io, AS_IO, 8, nightgal_state ) AM_RANGE(0x01,0x01) AM_MIRROR(0xec) AM_DEVREAD_LEGACY("aysnd", ay8910_r) AM_RANGE(0x02,0x03) AM_MIRROR(0xec) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_address_w) AM_RANGE(0x10,0x10) AM_MIRROR(0xe8) AM_READ_PORT("DSWC") AM_WRITENOP //AM_WRITE_LEGACY(output_w) - AM_RANGE(0x11,0x11) AM_MIRROR(0xe8) AM_READ_PORT("SYSA") AM_WRITE_LEGACY(mux_w) - AM_RANGE(0x12,0x12) AM_MIRROR(0xe8) AM_READ_PORT("DSWA") AM_WRITE_LEGACY(royalqn_blitter_0_w) - AM_RANGE(0x13,0x13) AM_MIRROR(0xe8) AM_READ_PORT("DSWB") AM_WRITE_LEGACY(royalqn_blitter_1_w) - AM_RANGE(0x14,0x14) AM_MIRROR(0xe8) AM_READNOP AM_WRITE_LEGACY(royalqn_blitter_2_w) + AM_RANGE(0x11,0x11) AM_MIRROR(0xe8) AM_READ_PORT("SYSA") AM_WRITE(mux_w) + AM_RANGE(0x12,0x12) AM_MIRROR(0xe8) AM_READ_PORT("DSWA") AM_WRITE(royalqn_blitter_0_w) + AM_RANGE(0x13,0x13) AM_MIRROR(0xe8) AM_READ_PORT("DSWB") AM_WRITE(royalqn_blitter_1_w) + AM_RANGE(0x14,0x14) AM_MIRROR(0xe8) AM_READNOP AM_WRITE(royalqn_blitter_2_w) AM_RANGE(0x15,0x15) AM_MIRROR(0xe8) AM_NOP AM_RANGE(0x16,0x16) AM_MIRROR(0xe8) AM_NOP AM_RANGE(0x17,0x17) AM_MIRROR(0xe8) AM_NOP @@ -563,14 +564,14 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( royalqn_nsc_map, AS_PROGRAM, 8, nightgal_state ) AM_RANGE(0x0000, 0x007f) AM_RAM - AM_RANGE(0x0080, 0x0080) AM_READ_LEGACY(blitter_status_r) - AM_RANGE(0x0081, 0x0083) AM_READ_LEGACY(royalqn_nsc_blit_r) - AM_RANGE(0x0080, 0x0086) AM_WRITE_LEGACY(nsc_true_blitter_w) + AM_RANGE(0x0080, 0x0080) AM_READ(blitter_status_r) + AM_RANGE(0x0081, 0x0083) AM_READ(royalqn_nsc_blit_r) + AM_RANGE(0x0080, 0x0086) AM_WRITE(nsc_true_blitter_w) - AM_RANGE(0x00a0, 0x00af) AM_WRITE_LEGACY(blit_true_vregs_w) + AM_RANGE(0x00a0, 0x00af) AM_WRITE(blit_true_vregs_w) AM_RANGE(0x00b0, 0x00b0) AM_WRITENOP // bltflip register - AM_RANGE(0x1000, 0x13ff) AM_MIRROR(0x2c00) AM_READWRITE_LEGACY(royalqn_comm_r,royalqn_comm_w) + AM_RANGE(0x1000, 0x13ff) AM_MIRROR(0x2c00) AM_READWRITE(royalqn_comm_r,royalqn_comm_w) AM_RANGE(0x4000, 0x4000) AM_NOP AM_RANGE(0x8000, 0x8000) AM_NOP //open bus or protection check AM_RANGE(0xc000, 0xdfff) AM_MIRROR(0x2000) AM_ROM diff --git a/src/mame/drivers/nmg5.c b/src/mame/drivers/nmg5.c index fc8d6b19c70..eedb0ffe73f 100644 --- a/src/mame/drivers/nmg5.c +++ b/src/mame/drivers/nmg5.c @@ -254,66 +254,66 @@ public: /* devices */ device_t *m_maincpu; device_t *m_soundcpu; + DECLARE_WRITE16_MEMBER(fg_videoram_w); + DECLARE_WRITE16_MEMBER(bg_videoram_w); + DECLARE_WRITE16_MEMBER(nmg5_soundlatch_w); + DECLARE_READ16_MEMBER(prot_r); + DECLARE_WRITE16_MEMBER(prot_w); + DECLARE_WRITE16_MEMBER(gfx_bank_w); + DECLARE_WRITE16_MEMBER(priority_reg_w); }; -static WRITE16_HANDLER( fg_videoram_w ) +WRITE16_MEMBER(nmg5_state::fg_videoram_w) { - nmg5_state *state = space->machine().driver_data<nmg5_state>(); - COMBINE_DATA(&state->m_fg_videoram[offset]); - state->m_fg_tilemap->mark_tile_dirty(offset); + COMBINE_DATA(&m_fg_videoram[offset]); + m_fg_tilemap->mark_tile_dirty(offset); } -static WRITE16_HANDLER( bg_videoram_w ) +WRITE16_MEMBER(nmg5_state::bg_videoram_w) { - nmg5_state *state = space->machine().driver_data<nmg5_state>(); - COMBINE_DATA(&state->m_bg_videoram[offset]); - state->m_bg_tilemap->mark_tile_dirty(offset); + COMBINE_DATA(&m_bg_videoram[offset]); + m_bg_tilemap->mark_tile_dirty(offset); } -static WRITE16_HANDLER( nmg5_soundlatch_w ) +WRITE16_MEMBER(nmg5_state::nmg5_soundlatch_w) { - nmg5_state *state = space->machine().driver_data<nmg5_state>(); if (ACCESSING_BITS_0_7) { soundlatch_w(space, 0, data & 0xff); - device_set_input_line(state->m_soundcpu, INPUT_LINE_NMI, PULSE_LINE); + device_set_input_line(m_soundcpu, INPUT_LINE_NMI, PULSE_LINE); } } -static READ16_HANDLER( prot_r ) +READ16_MEMBER(nmg5_state::prot_r) { - nmg5_state *state = space->machine().driver_data<nmg5_state>(); - return state->m_prot_val | state->m_input_data; + return m_prot_val | m_input_data; } -static WRITE16_HANDLER( prot_w ) +WRITE16_MEMBER(nmg5_state::prot_w) { - nmg5_state *state = space->machine().driver_data<nmg5_state>(); - state->m_input_data = data & 0x0f; + m_input_data = data & 0x0f; } -static WRITE16_HANDLER( gfx_bank_w ) +WRITE16_MEMBER(nmg5_state::gfx_bank_w) { - nmg5_state *state = space->machine().driver_data<nmg5_state>(); - if (state->m_gfx_bank != (data & 3)) + if (m_gfx_bank != (data & 3)) { - state->m_gfx_bank = data & 3; - space->machine().tilemap().mark_all_dirty(); + m_gfx_bank = data & 3; + machine().tilemap().mark_all_dirty(); } } -static WRITE16_HANDLER( priority_reg_w ) +WRITE16_MEMBER(nmg5_state::priority_reg_w) { - nmg5_state *state = space->machine().driver_data<nmg5_state>(); - state->m_priority_reg = data & 7; + m_priority_reg = data & 7; - if (state->m_priority_reg == 4 || state->m_priority_reg == 5 || state->m_priority_reg == 6) - popmessage("unknown priority_reg value = %d\n", state->m_priority_reg); + if (m_priority_reg == 4 || m_priority_reg == 5 || m_priority_reg == 6) + popmessage("unknown priority_reg value = %d\n", m_priority_reg); } static WRITE8_DEVICE_HANDLER( oki_banking_w ) @@ -332,18 +332,18 @@ static ADDRESS_MAP_START( nmg5_map, AS_PROGRAM, 16, nmg5_state ) AM_RANGE(0x120000, 0x12ffff) AM_RAM AM_RANGE(0x140000, 0x1407ff) AM_RAM_WRITE_LEGACY(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_BASE_SIZE(m_spriteram, m_spriteram_size) - AM_RANGE(0x180000, 0x180001) AM_WRITE_LEGACY(nmg5_soundlatch_w) + AM_RANGE(0x180000, 0x180001) AM_WRITE(nmg5_soundlatch_w) AM_RANGE(0x180002, 0x180003) AM_WRITENOP - AM_RANGE(0x180004, 0x180005) AM_READWRITE_LEGACY(prot_r, prot_w) - AM_RANGE(0x180006, 0x180007) AM_WRITE_LEGACY(gfx_bank_w) + AM_RANGE(0x180004, 0x180005) AM_READWRITE(prot_r, prot_w) + AM_RANGE(0x180006, 0x180007) AM_WRITE(gfx_bank_w) AM_RANGE(0x180008, 0x180009) AM_READ_PORT("DSW") AM_RANGE(0x18000a, 0x18000b) AM_READ_PORT("SYSTEM") AM_RANGE(0x18000c, 0x18000d) AM_READ_PORT("INPUTS") - AM_RANGE(0x18000e, 0x18000f) AM_WRITE_LEGACY(priority_reg_w) + AM_RANGE(0x18000e, 0x18000f) AM_WRITE(priority_reg_w) AM_RANGE(0x300002, 0x300009) AM_WRITEONLY AM_BASE(m_scroll_ram) AM_RANGE(0x30000a, 0x30000f) AM_WRITENOP - AM_RANGE(0x320000, 0x321fff) AM_RAM_WRITE_LEGACY(bg_videoram_w) AM_BASE(m_bg_videoram) - AM_RANGE(0x322000, 0x323fff) AM_RAM_WRITE_LEGACY(fg_videoram_w) AM_BASE(m_fg_videoram) + AM_RANGE(0x320000, 0x321fff) AM_RAM_WRITE(bg_videoram_w) AM_BASE(m_bg_videoram) + AM_RANGE(0x322000, 0x323fff) AM_RAM_WRITE(fg_videoram_w) AM_BASE(m_fg_videoram) AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_BASE(m_bitmap) ADDRESS_MAP_END @@ -352,17 +352,17 @@ static ADDRESS_MAP_START( pclubys_map, AS_PROGRAM, 16, nmg5_state ) AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_RANGE(0x440000, 0x4407ff) AM_RAM_WRITE_LEGACY(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x460000, 0x4607ff) AM_RAM AM_BASE_SIZE(m_spriteram, m_spriteram_size) - AM_RANGE(0x480000, 0x480001) AM_WRITE_LEGACY(nmg5_soundlatch_w) + AM_RANGE(0x480000, 0x480001) AM_WRITE(nmg5_soundlatch_w) AM_RANGE(0x480002, 0x480003) AM_WRITENOP - AM_RANGE(0x480004, 0x480005) AM_READWRITE_LEGACY(prot_r, prot_w) - AM_RANGE(0x480006, 0x480007) AM_WRITE_LEGACY(gfx_bank_w) + AM_RANGE(0x480004, 0x480005) AM_READWRITE(prot_r, prot_w) + AM_RANGE(0x480006, 0x480007) AM_WRITE(gfx_bank_w) AM_RANGE(0x480008, 0x480009) AM_READ_PORT("DSW") AM_RANGE(0x48000a, 0x48000b) AM_READ_PORT("SYSTEM") AM_RANGE(0x48000c, 0x48000d) AM_READ_PORT("INPUTS") - AM_RANGE(0x48000e, 0x48000f) AM_WRITE_LEGACY(priority_reg_w) + AM_RANGE(0x48000e, 0x48000f) AM_WRITE(priority_reg_w) AM_RANGE(0x500002, 0x500009) AM_WRITEONLY AM_BASE(m_scroll_ram) - AM_RANGE(0x520000, 0x521fff) AM_RAM_WRITE_LEGACY(bg_videoram_w) AM_BASE(m_bg_videoram) - AM_RANGE(0x522000, 0x523fff) AM_RAM_WRITE_LEGACY(fg_videoram_w) AM_BASE(m_fg_videoram) + AM_RANGE(0x520000, 0x521fff) AM_RAM_WRITE(bg_videoram_w) AM_BASE(m_bg_videoram) + AM_RANGE(0x522000, 0x523fff) AM_RAM_WRITE(fg_videoram_w) AM_BASE(m_fg_videoram) AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_BASE(m_bitmap) ADDRESS_MAP_END diff --git a/src/mame/drivers/nsmpoker.c b/src/mame/drivers/nsmpoker.c index e2b29f454a6..0d8eafece1f 100644 --- a/src/mame/drivers/nsmpoker.c +++ b/src/mame/drivers/nsmpoker.c @@ -73,6 +73,10 @@ public: UINT8 *m_videoram; UINT8 *m_colorram; tilemap_t *m_bg_tilemap; + DECLARE_WRITE8_MEMBER(nsmpoker_videoram_w); + DECLARE_WRITE8_MEMBER(nsmpoker_colorram_w); + DECLARE_WRITE8_MEMBER(debug_w); + DECLARE_READ8_MEMBER(debug_r); }; @@ -81,19 +85,17 @@ public: *************************/ -static WRITE8_HANDLER( nsmpoker_videoram_w ) +WRITE8_MEMBER(nsmpoker_state::nsmpoker_videoram_w) { - nsmpoker_state *state = space->machine().driver_data<nsmpoker_state>(); - state->m_videoram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_videoram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( nsmpoker_colorram_w ) +WRITE8_MEMBER(nsmpoker_state::nsmpoker_colorram_w) { - nsmpoker_state *state = space->machine().driver_data<nsmpoker_state>(); - state->m_colorram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_colorram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } @@ -145,14 +147,14 @@ static INTERRUPT_GEN( nsmpoker_interrupt ) device_set_input_line_and_vector(device, 0, ASSERT_LINE, 3);//2=nmi 3,4,5,6 } -//static WRITE8_HANDLER( debug_w ) +//WRITE8_MEMBER(nsmpoker_state::debug_w) //{ // popmessage("written : %02X", data); //} -static READ8_HANDLER( debug_r ) +READ8_MEMBER(nsmpoker_state::debug_r) { - return space->machine().rand() & 0xff; + return machine().rand() & 0xff; } @@ -164,13 +166,13 @@ static ADDRESS_MAP_START( nsmpoker_map, AS_PROGRAM, 8, nsmpoker_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x9000, 0xafff) AM_RAM // OK... cleared at beginning. AM_RANGE(0xb000, 0xcfff) AM_ROM // WRONG... just to map the last rom somewhere. - AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE_LEGACY(nsmpoker_videoram_w) AM_BASE(m_videoram) // WRONG... just a placeholder. - AM_RANGE(0xf000, 0xffff) AM_RAM_WRITE_LEGACY(nsmpoker_colorram_w) AM_BASE(m_colorram) // WRONG... just a placeholder. + AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(nsmpoker_videoram_w) AM_BASE(m_videoram) // WRONG... just a placeholder. + AM_RANGE(0xf000, 0xffff) AM_RAM_WRITE(nsmpoker_colorram_w) AM_BASE(m_colorram) // WRONG... just a placeholder. ADDRESS_MAP_END static ADDRESS_MAP_START( nsmpoker_portmap, AS_IO, 8, nsmpoker_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xf0, 0xf0) AM_READ_LEGACY(debug_r) // kind of trap at beginning + AM_RANGE(0xf0, 0xf0) AM_READ(debug_r) // kind of trap at beginning ADDRESS_MAP_END /* I/O byte R/W diff --git a/src/mame/drivers/nwk-tr.c b/src/mame/drivers/nwk-tr.c index b317a1994ca..8959fc60c40 100644 --- a/src/mame/drivers/nwk-tr.c +++ b/src/mame/drivers/nwk-tr.c @@ -240,17 +240,26 @@ public: int m_lanc2_ram_w; UINT8 *m_lanc2_ram; UINT32 *m_sharc_dataram; + DECLARE_WRITE32_MEMBER(paletteram32_w); + DECLARE_READ32_MEMBER(sysreg_r); + DECLARE_WRITE32_MEMBER(sysreg_w); + DECLARE_READ32_MEMBER(lanc1_r); + DECLARE_WRITE32_MEMBER(lanc1_w); + DECLARE_READ32_MEMBER(lanc2_r); + DECLARE_WRITE32_MEMBER(lanc2_w); + DECLARE_READ32_MEMBER(dsp_dataram_r); + DECLARE_WRITE32_MEMBER(dsp_dataram_w); }; -static WRITE32_HANDLER( paletteram32_w ) +WRITE32_MEMBER(nwktr_state::paletteram32_w) { - COMBINE_DATA(&space->machine().generic.paletteram.u32[offset]); - data = space->machine().generic.paletteram.u32[offset]; - palette_set_color_rgb(space->machine(), offset, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0)); + COMBINE_DATA(&machine().generic.paletteram.u32[offset]); + data = machine().generic.paletteram.u32[offset]; + palette_set_color_rgb(machine(), offset, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0)); } static void voodoo_vblank_0(device_t *device, int param) @@ -278,23 +287,23 @@ static SCREEN_UPDATE_RGB32( nwktr ) /*****************************************************************************/ -static READ32_HANDLER( sysreg_r ) +READ32_MEMBER(nwktr_state::sysreg_r) { - device_t *adc12138 = space->machine().device("adc12138"); + device_t *adc12138 = machine().device("adc12138"); UINT32 r = 0; if (offset == 0) { if (ACCESSING_BITS_24_31) { - r |= input_port_read(space->machine(), "IN0") << 24; + r |= input_port_read(machine(), "IN0") << 24; } if (ACCESSING_BITS_16_23) { - r |= input_port_read(space->machine(), "IN1") << 16; + r |= input_port_read(machine(), "IN1") << 16; } if (ACCESSING_BITS_8_15) { - r |= input_port_read(space->machine(), "IN2") << 8; + r |= input_port_read(machine(), "IN2") << 8; } if (ACCESSING_BITS_0_7) { @@ -305,25 +314,24 @@ static READ32_HANDLER( sysreg_r ) { if (ACCESSING_BITS_24_31) { - r |= input_port_read(space->machine(), "DSW") << 24; + r |= input_port_read(machine(), "DSW") << 24; } } return r; } -static WRITE32_HANDLER( sysreg_w ) +WRITE32_MEMBER(nwktr_state::sysreg_w) { - nwktr_state *state = space->machine().driver_data<nwktr_state>(); - device_t *adc12138 = space->machine().device("adc12138"); + device_t *adc12138 = machine().device("adc12138"); if( offset == 0 ) { if (ACCESSING_BITS_24_31) { - state->m_led_reg0 = (data >> 24) & 0xff; + m_led_reg0 = (data >> 24) & 0xff; } if (ACCESSING_BITS_16_23) { - state->m_led_reg1 = (data >> 16) & 0xff; + m_led_reg1 = (data >> 16) & 0xff; } return; } @@ -345,11 +353,11 @@ static WRITE32_HANDLER( sysreg_w ) { if (data & 0x80) // CG Board 1 IRQ Ack { - //cputag_set_input_line(space->machine(), "maincpu", INPUT_LINE_IRQ1, CLEAR_LINE); + //cputag_set_input_line(machine(), "maincpu", INPUT_LINE_IRQ1, CLEAR_LINE); } if (data & 0x40) // CG Board 0 IRQ Ack { - //cputag_set_input_line(space->machine(), "maincpu", INPUT_LINE_IRQ0, CLEAR_LINE); + //cputag_set_input_line(machine(), "maincpu", INPUT_LINE_IRQ0, CLEAR_LINE); } } return; @@ -366,16 +374,15 @@ static void lanc2_init(running_machine &machine) state->m_lanc2_ram = auto_alloc_array(machine, UINT8, 0x8000); } -static READ32_HANDLER( lanc1_r ) +READ32_MEMBER(nwktr_state::lanc1_r) { - nwktr_state *state = space->machine().driver_data<nwktr_state>(); switch (offset) { case 0x40/4: { UINT32 r = 0; - r |= (state->m_fpga_uploaded) ? (1 << 6) : 0; + r |= (m_fpga_uploaded) ? (1 << 6) : 0; r |= 1 << 5; return (r) << 24; @@ -383,28 +390,27 @@ static READ32_HANDLER( lanc1_r ) default: { - //printf("lanc1_r: %08X, %08X at %08X\n", offset, mem_mask, cpu_get_pc(&space->device())); + //printf("lanc1_r: %08X, %08X at %08X\n", offset, mem_mask, cpu_get_pc(&space.device())); return 0xffffffff; } } } -static WRITE32_HANDLER( lanc1_w ) +WRITE32_MEMBER(nwktr_state::lanc1_w) { - //printf("lanc1_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, cpu_get_pc(&space->device())); + //printf("lanc1_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, cpu_get_pc(&space.device())); } -static READ32_HANDLER( lanc2_r ) +READ32_MEMBER(nwktr_state::lanc2_r) { - nwktr_state *state = space->machine().driver_data<nwktr_state>(); UINT32 r = 0; if (offset == 0) { if (ACCESSING_BITS_0_7) { - r |= state->m_lanc2_ram[state->m_lanc2_ram_r & 0x7fff]; - state->m_lanc2_ram_r++; + r |= m_lanc2_ram[m_lanc2_ram_r & 0x7fff]; + m_lanc2_ram_r++; } else { @@ -420,14 +426,13 @@ static READ32_HANDLER( lanc2_r ) } } - //printf("lanc2_r: %08X, %08X at %08X\n", offset, mem_mask, cpu_get_pc(&space->device())); + //printf("lanc2_r: %08X, %08X at %08X\n", offset, mem_mask, cpu_get_pc(&space.device())); return r; } -static WRITE32_HANDLER( lanc2_w ) +WRITE32_MEMBER(nwktr_state::lanc2_w) { - nwktr_state *state = space->machine().driver_data<nwktr_state>(); if (offset == 0) { if (ACCESSING_BITS_24_31) @@ -443,37 +448,37 @@ static WRITE32_HANDLER( lanc2_w ) ((value << 5) & 0x40) | ((value << 7) & 0x80); - state->m_fpga_uploaded = 1; + m_fpga_uploaded = 1; - //printf("lanc2_fpga_w: %02X at %08X\n", value, cpu_get_pc(&space->device())); + //printf("lanc2_fpga_w: %02X at %08X\n", value, cpu_get_pc(&space.device())); } else if (ACCESSING_BITS_0_7) { - state->m_lanc2_ram[state->m_lanc2_ram_w & 0x7fff] = data & 0xff; - state->m_lanc2_ram_w++; + m_lanc2_ram[m_lanc2_ram_w & 0x7fff] = data & 0xff; + m_lanc2_ram_w++; } else { - //printf("lanc2_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, cpu_get_pc(&space->device())); + //printf("lanc2_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, cpu_get_pc(&space.device())); } } if (offset == 4) { - if (mame_stricmp(space->machine().system().name, "thrilld") == 0) + if (mame_stricmp(machine().system().name, "thrilld") == 0) { - state->m_work_ram[(0x3ffed0/4) + 0] = 0x472a3731; - state->m_work_ram[(0x3ffed0/4) + 1] = 0x33202020; - state->m_work_ram[(0x3ffed0/4) + 2] = 0x2d2d2a2a; - state->m_work_ram[(0x3ffed0/4) + 3] = 0x2a207878; - - state->m_work_ram[(0x3fff40/4) + 0] = 0x47433731; - state->m_work_ram[(0x3fff40/4) + 1] = 0x33000000; - state->m_work_ram[(0x3fff40/4) + 2] = 0x19994a41; - state->m_work_ram[(0x3fff40/4) + 3] = 0x4100a9b1; + m_work_ram[(0x3ffed0/4) + 0] = 0x472a3731; + m_work_ram[(0x3ffed0/4) + 1] = 0x33202020; + m_work_ram[(0x3ffed0/4) + 2] = 0x2d2d2a2a; + m_work_ram[(0x3ffed0/4) + 3] = 0x2a207878; + + m_work_ram[(0x3fff40/4) + 0] = 0x47433731; + m_work_ram[(0x3fff40/4) + 1] = 0x33000000; + m_work_ram[(0x3fff40/4) + 2] = 0x19994a41; + m_work_ram[(0x3fff40/4) + 3] = 0x4100a9b1; } } - //printf("lanc2_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, cpu_get_pc(&space->device())); + //printf("lanc2_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, cpu_get_pc(&space.device())); } /*****************************************************************************/ @@ -491,19 +496,19 @@ static MACHINE_START( nwktr ) static ADDRESS_MAP_START( nwktr_map, AS_PROGRAM, 32, nwktr_state ) AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_BASE(m_work_ram) /* Work RAM */ AM_RANGE(0x74000000, 0x740000ff) AM_DEVREADWRITE_LEGACY("k001604", k001604_reg_r, k001604_reg_w) - AM_RANGE(0x74010000, 0x74017fff) AM_RAM_WRITE_LEGACY(paletteram32_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x74010000, 0x74017fff) AM_RAM_WRITE(paletteram32_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x74020000, 0x7403ffff) AM_DEVREADWRITE_LEGACY("k001604", k001604_tile_r, k001604_tile_w) AM_RANGE(0x74040000, 0x7407ffff) AM_DEVREADWRITE_LEGACY("k001604", k001604_char_r, k001604_char_w) AM_RANGE(0x78000000, 0x7800ffff) AM_READWRITE_LEGACY(cgboard_dsp_shared_r_ppc, cgboard_dsp_shared_w_ppc) AM_RANGE(0x780c0000, 0x780c0003) AM_READWRITE_LEGACY(cgboard_dsp_comm_r_ppc, cgboard_dsp_comm_w_ppc) - AM_RANGE(0x7d000000, 0x7d00ffff) AM_READ_LEGACY(sysreg_r) - AM_RANGE(0x7d010000, 0x7d01ffff) AM_WRITE_LEGACY(sysreg_w) + AM_RANGE(0x7d000000, 0x7d00ffff) AM_READ(sysreg_r) + AM_RANGE(0x7d010000, 0x7d01ffff) AM_WRITE(sysreg_w) AM_RANGE(0x7d020000, 0x7d021fff) AM_DEVREADWRITE8_LEGACY("m48t58", timekeeper_r, timekeeper_w, 0xffffffff) /* M48T58Y RTC/NVRAM */ AM_RANGE(0x7d030000, 0x7d030007) AM_DEVREAD_LEGACY("k056800", k056800_host_r) AM_RANGE(0x7d030000, 0x7d030007) AM_DEVWRITE_LEGACY("k056800", k056800_host_w) AM_RANGE(0x7d030008, 0x7d03000f) AM_DEVWRITE_LEGACY("k056800", k056800_host_w) - AM_RANGE(0x7d040000, 0x7d04ffff) AM_READWRITE_LEGACY(lanc1_r, lanc1_w) - AM_RANGE(0x7d050000, 0x7d05ffff) AM_READWRITE_LEGACY(lanc2_r, lanc2_w) + AM_RANGE(0x7d040000, 0x7d04ffff) AM_READWRITE(lanc1_r, lanc1_w) + AM_RANGE(0x7d050000, 0x7d05ffff) AM_READWRITE(lanc2_r, lanc2_w) AM_RANGE(0x7e000000, 0x7e7fffff) AM_ROM AM_REGION("user2", 0) /* Data ROM */ AM_RANGE(0x7f000000, 0x7f1fffff) AM_ROM AM_SHARE("share2") AM_RANGE(0x7fe00000, 0x7fffffff) AM_ROM AM_REGION("user1", 0) AM_SHARE("share2") /* Program ROM */ @@ -522,21 +527,19 @@ ADDRESS_MAP_END /*****************************************************************************/ -static READ32_HANDLER( dsp_dataram_r ) +READ32_MEMBER(nwktr_state::dsp_dataram_r) { - nwktr_state *state = space->machine().driver_data<nwktr_state>(); - return state->m_sharc_dataram[offset] & 0xffff; + return m_sharc_dataram[offset] & 0xffff; } -static WRITE32_HANDLER( dsp_dataram_w ) +WRITE32_MEMBER(nwktr_state::dsp_dataram_w) { - nwktr_state *state = space->machine().driver_data<nwktr_state>(); - state->m_sharc_dataram[offset] = data; + m_sharc_dataram[offset] = data; } static ADDRESS_MAP_START( sharc_map, AS_DATA, 32, nwktr_state ) AM_RANGE(0x0400000, 0x041ffff) AM_READWRITE_LEGACY(cgboard_0_shared_sharc_r, cgboard_0_shared_sharc_w) - AM_RANGE(0x0500000, 0x05fffff) AM_READWRITE_LEGACY(dsp_dataram_r, dsp_dataram_w) + AM_RANGE(0x0500000, 0x05fffff) AM_READWRITE(dsp_dataram_r, dsp_dataram_w) AM_RANGE(0x1400000, 0x14fffff) AM_RAM AM_RANGE(0x2400000, 0x27fffff) AM_DEVREADWRITE_LEGACY("voodoo", nwk_voodoo_0_r, nwk_voodoo_0_w) AM_RANGE(0x3400000, 0x34000ff) AM_READWRITE_LEGACY(cgboard_0_comm_sharc_r, cgboard_0_comm_sharc_w) diff --git a/src/mame/drivers/olibochu.c b/src/mame/drivers/olibochu.c index 93ba57fb35b..85f61ce45aa 100644 --- a/src/mame/drivers/olibochu.c +++ b/src/mame/drivers/olibochu.c @@ -75,6 +75,10 @@ public: /* misc */ int m_cmd; + DECLARE_WRITE8_MEMBER(olibochu_videoram_w); + DECLARE_WRITE8_MEMBER(olibochu_colorram_w); + DECLARE_WRITE8_MEMBER(olibochu_flipscreen_w); + DECLARE_WRITE8_MEMBER(sound_command_w); }; @@ -116,26 +120,24 @@ static PALETTE_INIT( olibochu ) } } -static WRITE8_HANDLER( olibochu_videoram_w ) +WRITE8_MEMBER(olibochu_state::olibochu_videoram_w) { - olibochu_state *state = space->machine().driver_data<olibochu_state>(); - state->m_videoram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_videoram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( olibochu_colorram_w ) +WRITE8_MEMBER(olibochu_state::olibochu_colorram_w) { - olibochu_state *state = space->machine().driver_data<olibochu_state>(); - state->m_colorram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_colorram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( olibochu_flipscreen_w ) +WRITE8_MEMBER(olibochu_state::olibochu_flipscreen_w) { - if (flip_screen_get(space->machine()) != (data & 0x80)) + if (flip_screen_get(machine()) != (data & 0x80)) { - flip_screen_set(space->machine(), data & 0x80); - space->machine().tilemap().mark_all_dirty(); + flip_screen_set(machine(), data & 0x80); + machine().tilemap().mark_all_dirty(); } /* other bits are used, but unknown */ @@ -227,18 +229,17 @@ static SCREEN_UPDATE_IND16( olibochu ) } -static WRITE8_HANDLER( sound_command_w ) +WRITE8_MEMBER(olibochu_state::sound_command_w) { - olibochu_state *state = space->machine().driver_data<olibochu_state>(); int c; if (offset == 0) - state->m_cmd = (state->m_cmd & 0x00ff) | (data << 8); + m_cmd = (m_cmd & 0x00ff) | (data << 8); else - state->m_cmd = (state->m_cmd & 0xff00) | data; + m_cmd = (m_cmd & 0xff00) | data; for (c = 15; c >= 0; c--) - if (state->m_cmd & (1 << c)) break; + if (m_cmd & (1 << c)) break; if (c >= 0) soundlatch_w(space, 0, 15 - c); } @@ -246,8 +247,8 @@ static WRITE8_HANDLER( sound_command_w ) static ADDRESS_MAP_START( olibochu_map, AS_PROGRAM, 8, olibochu_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE_LEGACY(olibochu_videoram_w) AM_BASE(m_videoram) - AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE_LEGACY(olibochu_colorram_w) AM_BASE(m_colorram) + AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(olibochu_videoram_w) AM_BASE(m_videoram) + AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(olibochu_colorram_w) AM_BASE(m_colorram) AM_RANGE(0x9000, 0x903f) AM_RAM //??? AM_RANGE(0x9800, 0x983f) AM_RAM //??? AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0") @@ -256,8 +257,8 @@ static ADDRESS_MAP_START( olibochu_map, AS_PROGRAM, 8, olibochu_state ) AM_RANGE(0xa003, 0xa003) AM_READ_PORT("DSW0") AM_RANGE(0xa004, 0xa004) AM_READ_PORT("DSW1") AM_RANGE(0xa005, 0xa005) AM_READ_PORT("DSW2") - AM_RANGE(0xa800, 0xa801) AM_WRITE_LEGACY(sound_command_w) - AM_RANGE(0xa802, 0xa802) AM_WRITE_LEGACY(olibochu_flipscreen_w) /* bit 6 = enable sound? */ + AM_RANGE(0xa800, 0xa801) AM_WRITE(sound_command_w) + AM_RANGE(0xa802, 0xa802) AM_WRITE(olibochu_flipscreen_w) /* bit 6 = enable sound? */ AM_RANGE(0xf400, 0xf41f) AM_RAM AM_BASE_SIZE(m_spriteram, m_spriteram_size) AM_RANGE(0xf440, 0xf47f) AM_RAM AM_BASE_SIZE(m_spriteram2, m_spriteram2_size) AM_RANGE(0xf000, 0xffff) AM_RAM diff --git a/src/mame/drivers/onetwo.c b/src/mame/drivers/onetwo.c index 74f96124bf0..3b2de97abe6 100644 --- a/src/mame/drivers/onetwo.c +++ b/src/mame/drivers/onetwo.c @@ -63,6 +63,12 @@ public: /* devices */ device_t *m_maincpu; device_t *m_audiocpu; + DECLARE_WRITE8_MEMBER(onetwo_fgram_w); + DECLARE_WRITE8_MEMBER(onetwo_cpubank_w); + DECLARE_WRITE8_MEMBER(onetwo_coin_counters_w); + DECLARE_WRITE8_MEMBER(onetwo_soundlatch_w); + DECLARE_WRITE8_MEMBER(palette1_w); + DECLARE_WRITE8_MEMBER(palette2_w); }; @@ -103,30 +109,28 @@ static SCREEN_UPDATE_IND16( onetwo ) * *************************************/ -static WRITE8_HANDLER( onetwo_fgram_w ) +WRITE8_MEMBER(onetwo_state::onetwo_fgram_w) { - onetwo_state *state = space->machine().driver_data<onetwo_state>(); - state->m_fgram[offset] = data; - state->m_fg_tilemap->mark_tile_dirty(offset / 2); + m_fgram[offset] = data; + m_fg_tilemap->mark_tile_dirty(offset / 2); } -static WRITE8_HANDLER( onetwo_cpubank_w ) +WRITE8_MEMBER(onetwo_state::onetwo_cpubank_w) { - memory_set_bank(space->machine(), "bank1", data); + memory_set_bank(machine(), "bank1", data); } -static WRITE8_HANDLER( onetwo_coin_counters_w ) +WRITE8_MEMBER(onetwo_state::onetwo_coin_counters_w) { - watchdog_reset(space->machine()); - coin_counter_w(space->machine(), 0, BIT(data, 1)); - coin_counter_w(space->machine(), 1, BIT(data, 2)); + watchdog_reset(machine()); + coin_counter_w(machine(), 0, BIT(data, 1)); + coin_counter_w(machine(), 1, BIT(data, 2)); } -static WRITE8_HANDLER( onetwo_soundlatch_w ) +WRITE8_MEMBER(onetwo_state::onetwo_soundlatch_w) { - onetwo_state *state = space->machine().driver_data<onetwo_state>(); soundlatch_w(space, 0, data); - device_set_input_line(state->m_audiocpu, INPUT_LINE_NMI, PULSE_LINE); + device_set_input_line(m_audiocpu, INPUT_LINE_NMI, PULSE_LINE); } static void set_color(running_machine &machine, int offset) @@ -140,18 +144,16 @@ static void set_color(running_machine &machine, int offset) palette_set_color_rgb(machine, offset, pal5bit(r), pal5bit(g), pal5bit(b)); } -static WRITE8_HANDLER(palette1_w) +WRITE8_MEMBER(onetwo_state::palette1_w) { - onetwo_state *state = space->machine().driver_data<onetwo_state>(); - state->m_paletteram[offset] = data; - set_color(space->machine(), offset); + m_paletteram[offset] = data; + set_color(machine(), offset); } -static WRITE8_HANDLER(palette2_w) +WRITE8_MEMBER(onetwo_state::palette2_w) { - onetwo_state *state = space->machine().driver_data<onetwo_state>(); - state->m_paletteram2[offset] = data; - set_color(space->machine(), offset); + m_paletteram2[offset] = data; + set_color(machine(), offset); } /************************************* @@ -163,17 +165,17 @@ static WRITE8_HANDLER(palette2_w) static ADDRESS_MAP_START( main_cpu, AS_PROGRAM, 8, onetwo_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0x10000) AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc800, 0xc87f) AM_RAM_WRITE_LEGACY(palette1_w) AM_BASE(m_paletteram) - AM_RANGE(0xc900, 0xc97f) AM_RAM_WRITE_LEGACY(palette2_w) AM_BASE(m_paletteram2) - AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE_LEGACY(onetwo_fgram_w) AM_BASE(m_fgram) + AM_RANGE(0xc800, 0xc87f) AM_RAM_WRITE(palette1_w) AM_BASE(m_paletteram) + AM_RANGE(0xc900, 0xc97f) AM_RAM_WRITE(palette2_w) AM_BASE(m_paletteram2) + AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(onetwo_fgram_w) AM_BASE(m_fgram) AM_RANGE(0xe000, 0xffff) AM_RAM ADDRESS_MAP_END static ADDRESS_MAP_START( main_cpu_io, AS_IO, 8, onetwo_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1") AM_WRITE_LEGACY(onetwo_coin_counters_w) - AM_RANGE(0x01, 0x01) AM_READ_PORT("DSW2") AM_WRITE_LEGACY(onetwo_soundlatch_w) - AM_RANGE(0x02, 0x02) AM_READ_PORT("P1") AM_WRITE_LEGACY(onetwo_cpubank_w) + AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1") AM_WRITE(onetwo_coin_counters_w) + AM_RANGE(0x01, 0x01) AM_READ_PORT("DSW2") AM_WRITE(onetwo_soundlatch_w) + AM_RANGE(0x02, 0x02) AM_READ_PORT("P1") AM_WRITE(onetwo_cpubank_w) AM_RANGE(0x03, 0x03) AM_READ_PORT("P2") AM_RANGE(0x04, 0x04) AM_READ_PORT("SYSTEM") ADDRESS_MAP_END diff --git a/src/mame/drivers/othello.c b/src/mame/drivers/othello.c index 792487558a4..67764012b2f 100644 --- a/src/mame/drivers/othello.c +++ b/src/mame/drivers/othello.c @@ -73,6 +73,21 @@ public: device_t *m_n7751; device_t *m_ay1; device_t *m_ay2; + DECLARE_READ8_MEMBER(unk_87_r); + DECLARE_WRITE8_MEMBER(unk_8a_w); + DECLARE_WRITE8_MEMBER(unk_8c_w); + DECLARE_READ8_MEMBER(unk_8c_r); + DECLARE_READ8_MEMBER(sound_ack_r); + DECLARE_WRITE8_MEMBER(unk_8f_w); + DECLARE_WRITE8_MEMBER(tilebank_w); + DECLARE_READ8_MEMBER(latch_r); + DECLARE_WRITE8_MEMBER(ay_select_w); + DECLARE_WRITE8_MEMBER(ack_w); + DECLARE_WRITE8_MEMBER(ay_address_w); + DECLARE_WRITE8_MEMBER(ay_data_w); + DECLARE_READ8_MEMBER(n7751_rom_r); + DECLARE_READ8_MEMBER(n7751_command_r); + DECLARE_READ8_MEMBER(n7751_t1_r); }; @@ -124,51 +139,49 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, othello_state ) AM_RANGE(0xf000, 0xffff) AM_RAM ADDRESS_MAP_END -static READ8_HANDLER( unk_87_r ) +READ8_MEMBER(othello_state::unk_87_r) { /* n7751_status_r ? bit 7 = ack/status from device connected to port 8a? */ - return space->machine().rand(); + return machine().rand(); } -static WRITE8_HANDLER( unk_8a_w ) +WRITE8_MEMBER(othello_state::unk_8a_w) { /* - othello_state *state = space->machine().driver_data<othello_state>(); - state->m_n7751_command = (data & 0x07); - device_set_input_line(state->m_n7751, 0, ((data & 0x08) == 0) ? ASSERT_LINE : CLEAR_LINE); - //device_set_input_line(state->m_n7751, 0, (data & 0x02) ? CLEAR_LINE : ASSERT_LINE); - space->machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(100)); + + m_n7751_command = (data & 0x07); + device_set_input_line(m_n7751, 0, ((data & 0x08) == 0) ? ASSERT_LINE : CLEAR_LINE); + //device_set_input_line(m_n7751, 0, (data & 0x02) ? CLEAR_LINE : ASSERT_LINE); + machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(100)); */ logerror("8a -> %x\n", data); } -static WRITE8_HANDLER( unk_8c_w ) +WRITE8_MEMBER(othello_state::unk_8c_w) { logerror("8c -> %x\n", data); } -static READ8_HANDLER( unk_8c_r ) +READ8_MEMBER(othello_state::unk_8c_r) { - return space->machine().rand(); + return machine().rand(); } -static READ8_HANDLER( sound_ack_r ) +READ8_MEMBER(othello_state::sound_ack_r) { - othello_state *state = space->machine().driver_data<othello_state>(); - return state->m_ack_data; + return m_ack_data; } -static WRITE8_HANDLER( unk_8f_w ) +WRITE8_MEMBER(othello_state::unk_8f_w) { logerror("8f -> %x\n", data); } -static WRITE8_HANDLER( tilebank_w ) +WRITE8_MEMBER(othello_state::tilebank_w) { - othello_state *state = space->machine().driver_data<othello_state>(); - state->m_tile_bank = (data == 0x0f) ? 0x100 : 0x00; + m_tile_bank = (data == 0x0f) ? 0x100 : 0x00; logerror("tilebank -> %x\n", data); } @@ -179,47 +192,43 @@ static ADDRESS_MAP_START( main_portmap, AS_IO, 8, othello_state ) AM_RANGE(0x80, 0x80) AM_READ_PORT("INP") AM_RANGE(0x81, 0x81) AM_READ_PORT("SYSTEM") AM_RANGE(0x83, 0x83) AM_READ_PORT("DSW") - AM_RANGE(0x86, 0x86) AM_WRITE_LEGACY(tilebank_w) - AM_RANGE(0x87, 0x87) AM_READ_LEGACY(unk_87_r) - AM_RANGE(0x8a, 0x8a) AM_WRITE_LEGACY(unk_8a_w) - AM_RANGE(0x8c, 0x8c) AM_READWRITE_LEGACY(unk_8c_r, unk_8c_w) - AM_RANGE(0x8d, 0x8d) AM_READWRITE_LEGACY(sound_ack_r, soundlatch_w) - AM_RANGE(0x8f, 0x8f) AM_WRITE_LEGACY(unk_8f_w) + AM_RANGE(0x86, 0x86) AM_WRITE(tilebank_w) + AM_RANGE(0x87, 0x87) AM_READ(unk_87_r) + AM_RANGE(0x8a, 0x8a) AM_WRITE(unk_8a_w) + AM_RANGE(0x8c, 0x8c) AM_READWRITE(unk_8c_r, unk_8c_w) + AM_RANGE(0x8d, 0x8d) AM_READWRITE(sound_ack_r, soundlatch_w) + AM_RANGE(0x8f, 0x8f) AM_WRITE(unk_8f_w) ADDRESS_MAP_END -static READ8_HANDLER( latch_r ) +READ8_MEMBER(othello_state::latch_r) { int retval = soundlatch_r(space, 0); soundlatch_clear_w(space, 0, 0); return retval; } -static WRITE8_HANDLER( ay_select_w ) +WRITE8_MEMBER(othello_state::ay_select_w) { - othello_state *state = space->machine().driver_data<othello_state>(); - state->m_ay_select = data; + m_ay_select = data; } -static WRITE8_HANDLER( ack_w ) +WRITE8_MEMBER(othello_state::ack_w) { - othello_state *state = space->machine().driver_data<othello_state>(); - state->m_ack_data = data; + m_ack_data = data; } -static WRITE8_HANDLER( ay_address_w ) +WRITE8_MEMBER(othello_state::ay_address_w) { - othello_state *state = space->machine().driver_data<othello_state>(); - if (state->m_ay_select & 1) ay8910_address_w(state->m_ay1, 0, data); - if (state->m_ay_select & 2) ay8910_address_w(state->m_ay2, 0, data); + if (m_ay_select & 1) ay8910_address_w(m_ay1, 0, data); + if (m_ay_select & 2) ay8910_address_w(m_ay2, 0, data); } -static WRITE8_HANDLER( ay_data_w ) +WRITE8_MEMBER(othello_state::ay_data_w) { - othello_state *state = space->machine().driver_data<othello_state>(); - if (state->m_ay_select & 1) ay8910_data_w(state->m_ay1, 0, data); - if (state->m_ay_select & 2) ay8910_data_w(state->m_ay2, 0, data); + if (m_ay_select & 1) ay8910_data_w(m_ay1, 0, data); + if (m_ay_select & 2) ay8910_data_w(m_ay2, 0, data); } static ADDRESS_MAP_START( audio_map, AS_PROGRAM, 8, othello_state ) @@ -229,11 +238,11 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( audio_portmap, AS_IO, 8, othello_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_LEGACY(latch_r) - AM_RANGE(0x01, 0x01) AM_WRITE_LEGACY(ay_data_w) - AM_RANGE(0x03, 0x03) AM_WRITE_LEGACY(ay_address_w) - AM_RANGE(0x04, 0x04) AM_WRITE_LEGACY(ack_w) - AM_RANGE(0x08, 0x08) AM_WRITE_LEGACY(ay_select_w) + AM_RANGE(0x00, 0x00) AM_READ(latch_r) + AM_RANGE(0x01, 0x01) AM_WRITE(ay_data_w) + AM_RANGE(0x03, 0x03) AM_WRITE(ay_address_w) + AM_RANGE(0x04, 0x04) AM_WRITE(ack_w) + AM_RANGE(0x08, 0x08) AM_WRITE(ay_select_w) ADDRESS_MAP_END static WRITE8_DEVICE_HANDLER( n7751_rom_control_w ) @@ -271,16 +280,14 @@ static WRITE8_DEVICE_HANDLER( n7751_rom_control_w ) } } -static READ8_HANDLER( n7751_rom_r ) +READ8_MEMBER(othello_state::n7751_rom_r) { - othello_state *state = space->machine().driver_data<othello_state>(); - return space->machine().region("n7751data")->base()[state->m_sound_addr]; + return machine().region("n7751data")->base()[m_sound_addr]; } -static READ8_HANDLER( n7751_command_r ) +READ8_MEMBER(othello_state::n7751_command_r) { - othello_state *state = space->machine().driver_data<othello_state>(); - return 0x80 | ((state->m_n7751_command & 0x07) << 4); + return 0x80 | ((m_n7751_command & 0x07) << 4); } static WRITE8_DEVICE_HANDLER( n7751_p2_w ) @@ -295,16 +302,16 @@ static WRITE8_DEVICE_HANDLER( n7751_p2_w ) state->m_n7751_busy = data; } -static READ8_HANDLER( n7751_t1_r ) +READ8_MEMBER(othello_state::n7751_t1_r) { /* T1 - labelled as "TEST", connected to ground */ return 0; } static ADDRESS_MAP_START( n7751_portmap, AS_IO, 8, othello_state ) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ_LEGACY(n7751_t1_r) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ_LEGACY(n7751_command_r) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READ_LEGACY(n7751_rom_r) + AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(n7751_t1_r) + AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ(n7751_command_r) + AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READ(n7751_rom_r) AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVWRITE_LEGACY("dac", dac_w) AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_DEVWRITE_LEGACY("n7751_8243", n7751_p2_w) AM_RANGE(MCS48_PORT_PROG, MCS48_PORT_PROG) AM_DEVWRITE_LEGACY("n7751_8243", i8243_prog_w) diff --git a/src/mame/drivers/pachifev.c b/src/mame/drivers/pachifev.c index 0f07674a6c0..9189135f249 100644 --- a/src/mame/drivers/pachifev.c +++ b/src/mame/drivers/pachifev.c @@ -103,30 +103,31 @@ public: UINT8 m_adpcm_idle; UINT8 m_trigger; UINT8 m_adpcm_data; + DECLARE_WRITE8_MEMBER(controls_w); + DECLARE_READ8_MEMBER(controls_r); }; -static WRITE8_HANDLER(controls_w) +WRITE8_MEMBER(pachifev_state::controls_w) { if(!data) { - pachifev_state *state = space->machine().driver_data<pachifev_state>(); + /*end of input read*/ - state->m_power=0; - state->m_max_power=state->m_input_power; - if(--state->m_cnt <= 0) /* why to do it N times? no idea.. someone should fix it */ + m_power=0; + m_max_power=m_input_power; + if(--m_cnt <= 0) /* why to do it N times? no idea.. someone should fix it */ { - state->m_cnt=0; - state->m_input_power=0; + m_cnt=0; + m_input_power=0; } } } -static READ8_HANDLER(controls_r) +READ8_MEMBER(pachifev_state::controls_r) { - pachifev_state *state = space->machine().driver_data<pachifev_state>(); - int output_bit=(state->m_power < state->m_max_power)?0:1; - ++state->m_power; + int output_bit=(m_power < m_max_power)?0:1; + ++m_power; return output_bit; } @@ -144,14 +145,14 @@ static ADDRESS_MAP_START( pachifev_map, AS_PROGRAM, 8, pachifev_state ) AM_RANGE(0xff12, 0xff12) AM_DEVREADWRITE("tms9928a", tms9928a_device, register_read, register_write) AM_RANGE(0xff20, 0xff20) AM_DEVWRITE_LEGACY("sn76_1", sn76496_w) AM_RANGE(0xff30, 0xff30) AM_DEVWRITE_LEGACY("sn76_2", sn76496_w) - AM_RANGE(0xff40, 0xff40) AM_WRITE_LEGACY(controls_w) + AM_RANGE(0xff40, 0xff40) AM_WRITE(controls_w) AM_RANGE(0xff50, 0xff50) AM_WRITENOP /* unknown */ AM_RANGE(0xfffa, 0xfffb) AM_NOP /* decrementer */ AM_RANGE(0xfffc, 0xffff) AM_NOP /* nmi */ ADDRESS_MAP_END static ADDRESS_MAP_START( pachifev_cru, AS_IO, 8, pachifev_state ) - AM_RANGE(0x000, 0x000) AM_READ_LEGACY(controls_r) + AM_RANGE(0x000, 0x000) AM_READ(controls_r) ADDRESS_MAP_END diff --git a/src/mame/drivers/panicr.c b/src/mame/drivers/panicr.c index e23c4cfa86c..ea273561fa7 100644 --- a/src/mame/drivers/panicr.c +++ b/src/mame/drivers/panicr.c @@ -77,6 +77,8 @@ public: UINT8 *m_scrollram; UINT8 *m_mainram; UINT8 *m_spriteram; + DECLARE_READ8_MEMBER(t5182shared_r); + DECLARE_WRITE8_MEMBER(t5182shared_w); }; @@ -171,18 +173,18 @@ static TILE_GET_INFO( get_txttile_info ) 0); } -static READ8_HANDLER(t5182shared_r) +READ8_MEMBER(panicr_state::t5182shared_r) { if ((offset & 1) == 0) - return t5182_sharedram_r(space, offset/2); + return t5182_sharedram_r(&space, offset/2); else return 0; } -static WRITE8_HANDLER(t5182shared_w) +WRITE8_MEMBER(panicr_state::t5182shared_w) { if ((offset & 1) == 0) - t5182_sharedram_w(space, offset/2, data); + t5182_sharedram_w(&space, offset/2, data); } @@ -196,7 +198,7 @@ static ADDRESS_MAP_START( panicr_map, AS_PROGRAM, 8, panicr_state ) AM_RANGE(0x0d002, 0x0d002) AM_READ_LEGACY(t5182_sharedram_semaphore_snd_r) AM_RANGE(0x0d004, 0x0d004) AM_WRITE_LEGACY(t5182_sharedram_semaphore_main_acquire_w) AM_RANGE(0x0d006, 0x0d006) AM_WRITE_LEGACY(t5182_sharedram_semaphore_main_release_w) - AM_RANGE(0x0d200, 0x0d2ff) AM_READWRITE_LEGACY(t5182shared_r, t5182shared_w) + AM_RANGE(0x0d200, 0x0d2ff) AM_READWRITE(t5182shared_r, t5182shared_w) AM_RANGE(0x0d400, 0x0d400) AM_READ_PORT("P1") AM_RANGE(0x0d402, 0x0d402) AM_READ_PORT("P2") AM_RANGE(0x0d404, 0x0d404) AM_READ_PORT("START") diff --git a/src/mame/drivers/paranoia.c b/src/mame/drivers/paranoia.c index 2fff8839246..5234756f05b 100644 --- a/src/mame/drivers/paranoia.c +++ b/src/mame/drivers/paranoia.c @@ -49,6 +49,11 @@ public: paranoia_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) { } + DECLARE_WRITE8_MEMBER(paranoia_8085_d000_w); + DECLARE_READ8_MEMBER(paranoia_z80_io_01_r); + DECLARE_READ8_MEMBER(paranoia_z80_io_02_r); + DECLARE_WRITE8_MEMBER(paranoia_z80_io_17_w); + DECLARE_WRITE8_MEMBER(paranoia_z80_io_37_w); }; @@ -79,7 +84,7 @@ static ADDRESS_MAP_START( pce_io , AS_IO, 8, paranoia_state ) AM_RANGE( 0x00, 0x03) AM_READWRITE_LEGACY(vdc_0_r, vdc_0_w ) ADDRESS_MAP_END -static WRITE8_HANDLER( paranoia_8085_d000_w ) +WRITE8_MEMBER(paranoia_state::paranoia_8085_d000_w) { //logerror( "D000 (8085) write %02x\n", data ); } @@ -88,7 +93,7 @@ static ADDRESS_MAP_START(paranoia_8085_map, AS_PROGRAM, 8, paranoia_state ) AM_RANGE( 0x0000, 0x7fff) AM_ROM AM_RANGE( 0x8000, 0x80ff) AM_DEVREADWRITE("i8155", i8155_device, memory_r, memory_w) AM_RANGE( 0x8100, 0x8107) AM_DEVREADWRITE("i8155", i8155_device, io_r, io_w) - AM_RANGE( 0xd000, 0xd000) AM_WRITE_LEGACY(paranoia_8085_d000_w ) + AM_RANGE( 0xd000, 0xd000) AM_WRITE(paranoia_8085_d000_w ) AM_RANGE( 0xe000, 0xe1ff) AM_RAM ADDRESS_MAP_END @@ -101,30 +106,30 @@ static ADDRESS_MAP_START(paranoia_z80_map, AS_PROGRAM, 8, paranoia_state ) AM_RANGE( 0x7000, 0x73ff) AM_RAM ADDRESS_MAP_END -static READ8_HANDLER(paranoia_z80_io_01_r) +READ8_MEMBER(paranoia_state::paranoia_z80_io_01_r) { return 0; } -static READ8_HANDLER(paranoia_z80_io_02_r) +READ8_MEMBER(paranoia_state::paranoia_z80_io_02_r) { return 0; } -static WRITE8_HANDLER(paranoia_z80_io_17_w) +WRITE8_MEMBER(paranoia_state::paranoia_z80_io_17_w) { } -static WRITE8_HANDLER(paranoia_z80_io_37_w) +WRITE8_MEMBER(paranoia_state::paranoia_z80_io_37_w) { } static ADDRESS_MAP_START(paranoia_z80_io_map, AS_IO, 8, paranoia_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x01, 0x01 ) AM_READ_LEGACY(paranoia_z80_io_01_r ) - AM_RANGE( 0x02, 0x02 ) AM_READ_LEGACY(paranoia_z80_io_02_r ) - AM_RANGE( 0x17, 0x17 ) AM_WRITE_LEGACY(paranoia_z80_io_17_w ) - AM_RANGE( 0x37, 0x37 ) AM_WRITE_LEGACY(paranoia_z80_io_37_w ) + AM_RANGE( 0x01, 0x01 ) AM_READ(paranoia_z80_io_01_r ) + AM_RANGE( 0x02, 0x02 ) AM_READ(paranoia_z80_io_02_r ) + AM_RANGE( 0x17, 0x17 ) AM_WRITE(paranoia_z80_io_17_w ) + AM_RANGE( 0x37, 0x37 ) AM_WRITE(paranoia_z80_io_37_w ) ADDRESS_MAP_END static WRITE8_DEVICE_HANDLER(paranoia_i8155_a_w) diff --git a/src/mame/drivers/pengadvb.c b/src/mame/drivers/pengadvb.c index 0800709e7ba..d738a9b9828 100644 --- a/src/mame/drivers/pengadvb.c +++ b/src/mame/drivers/pengadvb.c @@ -37,6 +37,7 @@ public: UINT8 *m_main_mem; UINT8 m_mem_map; UINT8 m_mem_banks[4]; + DECLARE_WRITE8_MEMBER(mem_w); }; @@ -122,20 +123,19 @@ static void mem_map_banks(running_machine &machine) } } -static WRITE8_HANDLER(mem_w) +WRITE8_MEMBER(pengadvb_state::mem_w) { - pengadvb_state *state = space->machine().driver_data<pengadvb_state>(); if (offset >= 0xc000) { // write to RAM - if ((state->m_mem_map >> 6 & 3) == 3) - state->m_main_mem[offset - 0xc000] = data; + if ((m_mem_map >> 6 & 3) == 3) + m_main_mem[offset - 0xc000] = data; } - else if (offset >= 0x4000 && (state->m_mem_map >> (offset >> 13 & 6) & 3) == 1 && (state->m_mem_banks[(offset - 0x4000) >> 13] != (data & 0xf))) + else if (offset >= 0x4000 && (m_mem_map >> (offset >> 13 & 6) & 3) == 1 && (m_mem_banks[(offset - 0x4000) >> 13] != (data & 0xf))) { // ROM bankswitch - state->m_mem_banks[(offset - 0x4000) >> 13] = data & 0xf; - mem_map_banks(space->machine()); + m_mem_banks[(offset - 0x4000) >> 13] = data & 0xf; + mem_map_banks(machine()); } } @@ -147,7 +147,7 @@ static ADDRESS_MAP_START( program_mem, AS_PROGRAM, 8, pengadvb_state ) AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank31") AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("bank32") AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank4") - AM_RANGE(0x0000, 0xffff) AM_WRITE_LEGACY(mem_w) + AM_RANGE(0x0000, 0xffff) AM_WRITE(mem_w) ADDRESS_MAP_END static ADDRESS_MAP_START( io_mem, AS_IO, 8, pengadvb_state ) diff --git a/src/mame/drivers/peplus.c b/src/mame/drivers/peplus.c index 52c42c599a0..989aab721d7 100644 --- a/src/mame/drivers/peplus.c +++ b/src/mame/drivers/peplus.c @@ -206,6 +206,32 @@ public: UINT64 m_last_coin_out; UINT8 m_coin_out_state; int m_sda_dir; + DECLARE_WRITE8_MEMBER(peplus_bgcolor_w); + DECLARE_WRITE8_MEMBER(peplus_crtc_display_w); + DECLARE_WRITE8_MEMBER(peplus_io_w); + DECLARE_WRITE8_MEMBER(peplus_duart_w); + DECLARE_WRITE8_MEMBER(peplus_cmos_w); + DECLARE_WRITE8_MEMBER(peplus_s3000_w); + DECLARE_WRITE8_MEMBER(peplus_s5000_w); + DECLARE_WRITE8_MEMBER(peplus_s7000_w); + DECLARE_WRITE8_MEMBER(peplus_sb000_w); + DECLARE_WRITE8_MEMBER(peplus_sd000_w); + DECLARE_WRITE8_MEMBER(peplus_sf000_w); + DECLARE_WRITE8_MEMBER(peplus_output_bank_a_w); + DECLARE_WRITE8_MEMBER(peplus_output_bank_b_w); + DECLARE_WRITE8_MEMBER(peplus_output_bank_c_w); + DECLARE_READ8_MEMBER(peplus_io_r); + DECLARE_READ8_MEMBER(peplus_duart_r); + DECLARE_READ8_MEMBER(peplus_cmos_r); + DECLARE_READ8_MEMBER(peplus_s3000_r); + DECLARE_READ8_MEMBER(peplus_s5000_r); + DECLARE_READ8_MEMBER(peplus_s7000_r); + DECLARE_READ8_MEMBER(peplus_sb000_r); + DECLARE_READ8_MEMBER(peplus_sd000_r); + DECLARE_READ8_MEMBER(peplus_sf000_r); + DECLARE_READ8_MEMBER(peplus_bgcolor_r); + DECLARE_READ8_MEMBER(peplus_dropdoor_r); + DECLARE_READ8_MEMBER(peplus_watchdog_r); }; @@ -265,11 +291,11 @@ static void peplus_load_superdata(running_machine &machine, const char *bank_nam * Write Handlers * ******************/ -static WRITE8_HANDLER( peplus_bgcolor_w ) +WRITE8_MEMBER(peplus_state::peplus_bgcolor_w) { int i; - for (i = 0; i < space->machine().total_colors(); i++) + for (i = 0; i < machine().total_colors(); i++) { int bit0, bit1, bit2, r, g, b; @@ -291,7 +317,7 @@ static WRITE8_HANDLER( peplus_bgcolor_w ) bit2 = 0; b = 0x21 * bit2 + 0x47 * bit1 + 0x97 * bit0; - palette_set_color(space->machine(), (15 + (i*16)), MAKE_RGB(r, g, b)); + palette_set_color(machine(), (15 + (i*16)), MAKE_RGB(r, g, b)); } } @@ -333,85 +359,75 @@ static WRITE_LINE_DEVICE_HANDLER(crtc_vsync) handle_lightpen(device); } -static WRITE8_HANDLER( peplus_crtc_display_w ) +WRITE8_MEMBER(peplus_state::peplus_crtc_display_w) { - peplus_state *state = space->machine().driver_data<peplus_state>(); - UINT8 *videoram = state->m_videoram; - videoram[state->m_vid_address] = data; - state->m_palette_ram[state->m_vid_address] = state->m_io_port[1]; - state->m_palette_ram2[state->m_vid_address] = state->m_io_port[3]; + UINT8 *videoram = m_videoram; + videoram[m_vid_address] = data; + m_palette_ram[m_vid_address] = m_io_port[1]; + m_palette_ram2[m_vid_address] = m_io_port[3]; - state->m_bg_tilemap->mark_tile_dirty(state->m_vid_address); + m_bg_tilemap->mark_tile_dirty(m_vid_address); /* An access here triggers a device read !*/ - space->machine().device<mc6845_device>("crtc")->register_r(*space, 0); + machine().device<mc6845_device>("crtc")->register_r(*&space, 0); } -static WRITE8_HANDLER( peplus_io_w ) +WRITE8_MEMBER(peplus_state::peplus_io_w) { - peplus_state *state = space->machine().driver_data<peplus_state>(); - state->m_io_port[offset] = data; + m_io_port[offset] = data; } -static WRITE8_HANDLER( peplus_duart_w ) +WRITE8_MEMBER(peplus_state::peplus_duart_w) { // Used for Slot Accounting System Communication } -static WRITE8_HANDLER( peplus_cmos_w ) +WRITE8_MEMBER(peplus_state::peplus_cmos_w) { - peplus_state *state = space->machine().driver_data<peplus_state>(); char bank_name[6]; /* Test for Wingboard PAL Trigger Condition */ - if (offset == 0x1fff && state->m_wingboard && data < 5) + if (offset == 0x1fff && m_wingboard && data < 5) { sprintf(bank_name, "user%d", data + 1); - peplus_load_superdata(space->machine(), bank_name); + peplus_load_superdata(machine(), bank_name); } - state->m_cmos_ram[offset] = data; + m_cmos_ram[offset] = data; } -static WRITE8_HANDLER( peplus_s3000_w ) +WRITE8_MEMBER(peplus_state::peplus_s3000_w) { - peplus_state *state = space->machine().driver_data<peplus_state>(); - state->m_s3000_ram[offset] = data; + m_s3000_ram[offset] = data; } -static WRITE8_HANDLER( peplus_s5000_w ) +WRITE8_MEMBER(peplus_state::peplus_s5000_w) { - peplus_state *state = space->machine().driver_data<peplus_state>(); - state->m_s5000_ram[offset] = data; + m_s5000_ram[offset] = data; } -static WRITE8_HANDLER( peplus_s7000_w ) +WRITE8_MEMBER(peplus_state::peplus_s7000_w) { - peplus_state *state = space->machine().driver_data<peplus_state>(); - state->m_s7000_ram[offset] = data; + m_s7000_ram[offset] = data; } -static WRITE8_HANDLER( peplus_sb000_w ) +WRITE8_MEMBER(peplus_state::peplus_sb000_w) { - peplus_state *state = space->machine().driver_data<peplus_state>(); - state->m_sb000_ram[offset] = data; + m_sb000_ram[offset] = data; } -static WRITE8_HANDLER( peplus_sd000_w ) +WRITE8_MEMBER(peplus_state::peplus_sd000_w) { - peplus_state *state = space->machine().driver_data<peplus_state>(); - state->m_sd000_ram[offset] = data; + m_sd000_ram[offset] = data; } -static WRITE8_HANDLER( peplus_sf000_w ) +WRITE8_MEMBER(peplus_state::peplus_sf000_w) { - peplus_state *state = space->machine().driver_data<peplus_state>(); - state->m_sf000_ram[offset] = data; + m_sf000_ram[offset] = data; } -static WRITE8_HANDLER( peplus_output_bank_a_w ) +WRITE8_MEMBER(peplus_state::peplus_output_bank_a_w) { - peplus_state *state = space->machine().driver_data<peplus_state>(); output_set_value("pe_bnka0",(data >> 0) & 1); /* Coin Lockout */ output_set_value("pe_bnka1",(data >> 1) & 1); /* Diverter */ output_set_value("pe_bnka2",(data >> 2) & 1); /* Bell */ @@ -421,12 +437,12 @@ static WRITE8_HANDLER( peplus_output_bank_a_w ) output_set_value("pe_bnka6",(data >> 6) & 1); /* specific to a kind of machine */ output_set_value("pe_bnka7",(data >> 7) & 1); /* specific to a kind of machine */ - state->m_coin_out_state = 0; + m_coin_out_state = 0; if(((data >> 4) & 1) || ((data >> 5) & 1)) - state->m_coin_out_state = 3; + m_coin_out_state = 3; } -static WRITE8_HANDLER( peplus_output_bank_b_w ) +WRITE8_MEMBER(peplus_state::peplus_output_bank_b_w) { output_set_value("pe_bnkb0",(data >> 0) & 1); /* specific to a kind of machine */ output_set_value("pe_bnkb1",(data >> 1) & 1); /* Deal Spin Start */ @@ -438,7 +454,7 @@ static WRITE8_HANDLER( peplus_output_bank_b_w ) output_set_value("pe_bnkb7",(data >> 7) & 1); /* specific to a kind of machine */ } -static WRITE8_HANDLER( peplus_output_bank_c_w ) +WRITE8_MEMBER(peplus_state::peplus_output_bank_c_w) { output_set_value("pe_bnkc0",(data >> 0) & 1); /* Coin In Meter */ output_set_value("pe_bnkc1",(data >> 1) & 1); /* Coin Out Meter */ @@ -463,72 +479,64 @@ static WRITE8_DEVICE_HANDLER(i2c_nvram_w) * Read Handlers * ****************/ -static READ8_HANDLER( peplus_io_r ) +READ8_MEMBER(peplus_state::peplus_io_r) { - peplus_state *state = space->machine().driver_data<peplus_state>(); - return state->m_io_port[offset]; + return m_io_port[offset]; } -static READ8_HANDLER( peplus_duart_r ) +READ8_MEMBER(peplus_state::peplus_duart_r) { // Used for Slot Accounting System Communication return 0x00; } -static READ8_HANDLER( peplus_cmos_r ) +READ8_MEMBER(peplus_state::peplus_cmos_r) { - peplus_state *state = space->machine().driver_data<peplus_state>(); - return state->m_cmos_ram[offset]; + return m_cmos_ram[offset]; } -static READ8_HANDLER( peplus_s3000_r ) +READ8_MEMBER(peplus_state::peplus_s3000_r) { - peplus_state *state = space->machine().driver_data<peplus_state>(); - return state->m_s3000_ram[offset]; + return m_s3000_ram[offset]; } -static READ8_HANDLER( peplus_s5000_r ) +READ8_MEMBER(peplus_state::peplus_s5000_r) { - peplus_state *state = space->machine().driver_data<peplus_state>(); - return state->m_s5000_ram[offset]; + return m_s5000_ram[offset]; } -static READ8_HANDLER( peplus_s7000_r ) +READ8_MEMBER(peplus_state::peplus_s7000_r) { - peplus_state *state = space->machine().driver_data<peplus_state>(); - return state->m_s7000_ram[offset]; + return m_s7000_ram[offset]; } -static READ8_HANDLER( peplus_sb000_r ) +READ8_MEMBER(peplus_state::peplus_sb000_r) { - peplus_state *state = space->machine().driver_data<peplus_state>(); - return state->m_sb000_ram[offset]; + return m_sb000_ram[offset]; } -static READ8_HANDLER( peplus_sd000_r ) +READ8_MEMBER(peplus_state::peplus_sd000_r) { - peplus_state *state = space->machine().driver_data<peplus_state>(); - return state->m_sd000_ram[offset]; + return m_sd000_ram[offset]; } -static READ8_HANDLER( peplus_sf000_r ) +READ8_MEMBER(peplus_state::peplus_sf000_r) { - peplus_state *state = space->machine().driver_data<peplus_state>(); - return state->m_sf000_ram[offset]; + return m_sf000_ram[offset]; } /* Last Color in Every Palette is bgcolor */ -static READ8_HANDLER( peplus_bgcolor_r ) +READ8_MEMBER(peplus_state::peplus_bgcolor_r) { - return palette_get_color(space->machine(), 15); // Return bgcolor from First Palette + return palette_get_color(machine(), 15); // Return bgcolor from First Palette } -static READ8_HANDLER( peplus_dropdoor_r ) +READ8_MEMBER(peplus_state::peplus_dropdoor_r) { return 0x00; // Drop Door 0x00=Closed 0x02=Open } -static READ8_HANDLER( peplus_watchdog_r ) +READ8_MEMBER(peplus_state::peplus_watchdog_r) { return 0x00; // Watchdog } @@ -736,59 +744,59 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( peplus_iomap, AS_IO, 8, peplus_state ) // Battery-backed RAM (0x1000-0x01fff Extended RAM for Superboards Only) - AM_RANGE(0x0000, 0x1fff) AM_READWRITE_LEGACY(peplus_cmos_r, peplus_cmos_w) AM_SHARE("cmos") + AM_RANGE(0x0000, 0x1fff) AM_READWRITE(peplus_cmos_r, peplus_cmos_w) AM_SHARE("cmos") // CRT Controller AM_RANGE(0x2008, 0x2008) AM_DEVWRITE_LEGACY("crtc", peplus_crtc_mode_w) AM_RANGE(0x2080, 0x2080) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) AM_RANGE(0x2081, 0x2081) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0x2083, 0x2083) AM_DEVREAD("crtc", mc6845_device, register_r) AM_WRITE_LEGACY(peplus_crtc_display_w) + AM_RANGE(0x2083, 0x2083) AM_DEVREAD("crtc", mc6845_device, register_r) AM_WRITE(peplus_crtc_display_w) // Superboard Data - AM_RANGE(0x3000, 0x3fff) AM_READWRITE_LEGACY(peplus_s3000_r, peplus_s3000_w) AM_BASE(m_s3000_ram) + AM_RANGE(0x3000, 0x3fff) AM_READWRITE(peplus_s3000_r, peplus_s3000_w) AM_BASE(m_s3000_ram) // Sound and Dipswitches AM_RANGE(0x4000, 0x4000) AM_DEVWRITE_LEGACY("aysnd", ay8910_address_w) AM_RANGE(0x4004, 0x4004) AM_READ_PORT("SW1")/* likely ay8910 input port, not direct */ AM_DEVWRITE_LEGACY("aysnd", ay8910_data_w) // Superboard Data - AM_RANGE(0x5000, 0x5fff) AM_READWRITE_LEGACY(peplus_s5000_r, peplus_s5000_w) AM_BASE(m_s5000_ram) + AM_RANGE(0x5000, 0x5fff) AM_READWRITE(peplus_s5000_r, peplus_s5000_w) AM_BASE(m_s5000_ram) // Background Color Latch - AM_RANGE(0x6000, 0x6000) AM_READ_LEGACY(peplus_bgcolor_r) AM_WRITE_LEGACY(peplus_bgcolor_w) + AM_RANGE(0x6000, 0x6000) AM_READ(peplus_bgcolor_r) AM_WRITE(peplus_bgcolor_w) // Bogus Location for Video RAM AM_RANGE(0x06001, 0x06400) AM_RAM AM_BASE(m_videoram) // Superboard Data - AM_RANGE(0x7000, 0x7fff) AM_READWRITE_LEGACY(peplus_s7000_r, peplus_s7000_w) AM_BASE(m_s7000_ram) + AM_RANGE(0x7000, 0x7fff) AM_READWRITE(peplus_s7000_r, peplus_s7000_w) AM_BASE(m_s7000_ram) // Input Bank A, Output Bank C - AM_RANGE(0x8000, 0x8000) AM_DEVREAD_LEGACY("i2cmem",peplus_input_bank_a_r) AM_WRITE_LEGACY(peplus_output_bank_c_w) + AM_RANGE(0x8000, 0x8000) AM_DEVREAD_LEGACY("i2cmem",peplus_input_bank_a_r) AM_WRITE(peplus_output_bank_c_w) // Drop Door, I2C EEPROM Writes - AM_RANGE(0x9000, 0x9000) AM_READ_LEGACY(peplus_dropdoor_r) AM_DEVWRITE_LEGACY("i2cmem",i2c_nvram_w) + AM_RANGE(0x9000, 0x9000) AM_READ(peplus_dropdoor_r) AM_DEVWRITE_LEGACY("i2cmem",i2c_nvram_w) // Input Banks B & C, Output Bank B - AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0") AM_WRITE_LEGACY(peplus_output_bank_b_w) + AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0") AM_WRITE(peplus_output_bank_b_w) // Superboard Data - AM_RANGE(0xb000, 0xbfff) AM_READWRITE_LEGACY(peplus_sb000_r, peplus_sb000_w) AM_BASE(m_sb000_ram) + AM_RANGE(0xb000, 0xbfff) AM_READWRITE(peplus_sb000_r, peplus_sb000_w) AM_BASE(m_sb000_ram) // Output Bank A - AM_RANGE(0xc000, 0xc000) AM_READ_LEGACY(peplus_watchdog_r) AM_WRITE_LEGACY(peplus_output_bank_a_w) + AM_RANGE(0xc000, 0xc000) AM_READ(peplus_watchdog_r) AM_WRITE(peplus_output_bank_a_w) // Superboard Data - AM_RANGE(0xd000, 0xdfff) AM_READWRITE_LEGACY(peplus_sd000_r, peplus_sd000_w) AM_BASE(m_sd000_ram) + AM_RANGE(0xd000, 0xdfff) AM_READWRITE(peplus_sd000_r, peplus_sd000_w) AM_BASE(m_sd000_ram) // DUART - AM_RANGE(0xe000, 0xe00f) AM_READWRITE_LEGACY(peplus_duart_r, peplus_duart_w) + AM_RANGE(0xe000, 0xe00f) AM_READWRITE(peplus_duart_r, peplus_duart_w) // Superboard Data - AM_RANGE(0xf000, 0xffff) AM_READWRITE_LEGACY(peplus_sf000_r, peplus_sf000_w) AM_BASE(m_sf000_ram) + AM_RANGE(0xf000, 0xffff) AM_READWRITE(peplus_sf000_r, peplus_sf000_w) AM_BASE(m_sf000_ram) /* Ports start here */ - AM_RANGE(MCS51_PORT_P0, MCS51_PORT_P3) AM_READ_LEGACY(peplus_io_r) AM_WRITE_LEGACY(peplus_io_w) AM_BASE(m_io_port) + AM_RANGE(MCS51_PORT_P0, MCS51_PORT_P3) AM_READ(peplus_io_r) AM_WRITE(peplus_io_w) AM_BASE(m_io_port) ADDRESS_MAP_END diff --git a/src/mame/drivers/peyper.c b/src/mame/drivers/peyper.c index d60b5483001..8b8a943084e 100644 --- a/src/mame/drivers/peyper.c +++ b/src/mame/drivers/peyper.c @@ -12,19 +12,24 @@ public: UINT8 display_block; UINT8 display[16]; + DECLARE_READ8_MEMBER(sw_r); + DECLARE_WRITE8_MEMBER(col_w); + DECLARE_WRITE8_MEMBER(disp_w); + DECLARE_WRITE8_MEMBER(lamp_w); + DECLARE_WRITE8_MEMBER(lamp7_w); + DECLARE_WRITE8_MEMBER(sol_w); }; -static READ8_HANDLER(sw_r) +READ8_MEMBER(peyper_state::sw_r) { return 0xff; } -static WRITE8_HANDLER(col_w) +WRITE8_MEMBER(peyper_state::col_w) { - peyper_state *state = space->machine().driver_data<peyper_state>(); - if (data==0x90) state->display_block = 0; + if (data==0x90) display_block = 0; } static const UINT8 hex_to_7seg[16] = @@ -34,10 +39,9 @@ static const UINT8 hex_to_7seg[16] = 0x00, 0x00, 0x00, 0x00 }; /* seems to only work correctly for 'solarwap', 'poleposn' and 'sonstwar' (look at how high-scores are displayed for example) - or shall layout be changed ? */ -static WRITE8_HANDLER(disp_w) +WRITE8_MEMBER(peyper_state::disp_w) { - peyper_state *state = space->machine().driver_data<peyper_state>(); - state->display[state->display_block] = data; + display[display_block] = data; UINT8 a = data & 0x0f; UINT8 b = data >> 4; @@ -53,7 +57,7 @@ static WRITE8_HANDLER(disp_w) 6 -> DPL19,DPL1 7 -> DPL30,DPL33 */ - switch(state->display_block) { + switch(display_block) { case 0 : output_set_indexed_value("dpl_",25,hex_a); output_set_indexed_value("dpl_",27,hex_b); @@ -141,22 +145,22 @@ static WRITE8_HANDLER(disp_w) break; } - state->display_block++; - state->display_block&=0x0f; + display_block++; + display_block&=0x0f; } -static WRITE8_HANDLER(lamp_w) +WRITE8_MEMBER(peyper_state::lamp_w) { //logerror("lamp_w %02x\n",data); //logerror("[%d]= %02x\n",4+offset/4,data); } -static WRITE8_HANDLER(lamp7_w) +WRITE8_MEMBER(peyper_state::lamp7_w) { //logerror("[7]= %02x\n",data); } -static WRITE8_HANDLER(sol_w) +WRITE8_MEMBER(peyper_state::sol_w) { //logerror("sol_w %02x\n",data); } @@ -190,18 +194,18 @@ static ADDRESS_MAP_START( peyper_io, AS_IO, 8, peyper_state ) // AM_RANGE(0x0000, 0xffff) AM_NOP ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READWRITE_LEGACY(sw_r,disp_w) - AM_RANGE(0x01, 0x01) AM_WRITE_LEGACY(col_w) + AM_RANGE(0x00, 0x00) AM_READWRITE(sw_r,disp_w) + AM_RANGE(0x01, 0x01) AM_WRITE(col_w) // AM_RANGE(0x04, 0x04) AM_DEVWRITE_LEGACY("ay8910_0", ay8910_address_w) // AM_RANGE(0x06, 0x06) AM_DEVWRITE_LEGACY("ay8910_0", ay8910_data_w) // AM_RANGE(0x08, 0x08) AM_DEVWRITE_LEGACY("ay8910_1", ay8910_address_w) // AM_RANGE(0x0a, 0x0a) AM_DEVWRITE_LEGACY("ay8910_1", ay8910_data_w) - AM_RANGE(0x0c, 0x0c) AM_WRITE_LEGACY(sol_w) - AM_RANGE(0x10, 0x18) AM_WRITE_LEGACY(lamp_w) + AM_RANGE(0x0c, 0x0c) AM_WRITE(sol_w) + AM_RANGE(0x10, 0x18) AM_WRITE(lamp_w) AM_RANGE(0x20, 0x20) AM_READ_PORT("DSW0") AM_RANGE(0x24, 0x24) AM_READ_PORT("DSW1") AM_RANGE(0x28, 0x28) AM_READ_PORT("SYSTEM") - AM_RANGE(0x2c, 0x2c) AM_WRITE_LEGACY(lamp7_w) + AM_RANGE(0x2c, 0x2c) AM_WRITE(lamp7_w) ADDRESS_MAP_END static INPUT_PORTS_START( pbsonic_generic ) diff --git a/src/mame/drivers/photon2.c b/src/mame/drivers/photon2.c index a8a2d0f7591..62719018d86 100644 --- a/src/mame/drivers/photon2.c +++ b/src/mame/drivers/photon2.c @@ -28,6 +28,10 @@ public: UINT8 m_nmi_enable; required_device<cpu_device> m_maincpu; + DECLARE_WRITE8_MEMBER(photon2_membank_w); + DECLARE_READ8_MEMBER(photon2_fe_r); + DECLARE_WRITE8_MEMBER(photon2_fe_w); + DECLARE_WRITE8_MEMBER(photon2_misc_w); }; @@ -174,7 +178,7 @@ static SCREEN_UPDATE_IND16( spectrum ) * *************************************/ -static WRITE8_HANDLER(photon2_membank_w) +WRITE8_MEMBER(photon2_state::photon2_membank_w) { int bank = 0; if (data == 0) @@ -194,27 +198,25 @@ static WRITE8_HANDLER(photon2_membank_w) logerror( "Unknown banking write: %02X\n", data); } - memory_set_bankptr(space->machine(), "bank1", space->machine().region("maincpu")->base() + 0x4000*bank ); + memory_set_bankptr(machine(), "bank1", machine().region("maincpu")->base() + 0x4000*bank ); } -static READ8_HANDLER(photon2_fe_r) +READ8_MEMBER(photon2_state::photon2_fe_r) { return 0xff; } -static WRITE8_HANDLER(photon2_fe_w) +WRITE8_MEMBER(photon2_state::photon2_fe_w) { - photon2_state *state = space->machine().driver_data<photon2_state>(); - device_t *speaker = space->machine().device("speaker"); - state->m_spectrum_port_fe = data; + device_t *speaker = machine().device("speaker"); + m_spectrum_port_fe = data; speaker_level_w(speaker, BIT(data,4)); } -static WRITE8_HANDLER(photon2_misc_w) +WRITE8_MEMBER(photon2_state::photon2_misc_w) { - photon2_state *state = space->machine().driver_data<photon2_state>(); - state->m_nmi_enable = !BIT(data,5); + m_nmi_enable = !BIT(data,5); } /************************************* @@ -232,11 +234,11 @@ ADDRESS_MAP_END static ADDRESS_MAP_START (spectrum_io, AS_IO, 8, photon2_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x1f, 0x1f) AM_READ_PORT("JOY") - AM_RANGE(0x5b, 0x5b) AM_READ_PORT("COIN") AM_WRITE_LEGACY(photon2_misc_w) - AM_RANGE(0x7a, 0x7a) AM_WRITE_LEGACY(photon2_membank_w) + AM_RANGE(0x5b, 0x5b) AM_READ_PORT("COIN") AM_WRITE(photon2_misc_w) + AM_RANGE(0x7a, 0x7a) AM_WRITE(photon2_membank_w) AM_RANGE(0x7b, 0x7b) AM_WRITENOP // unknown write - AM_RANGE(0x7e, 0x7e) AM_WRITE_LEGACY(photon2_membank_w) - AM_RANGE(0xfe, 0xfe) AM_READWRITE_LEGACY(photon2_fe_r, photon2_fe_w) + AM_RANGE(0x7e, 0x7e) AM_WRITE(photon2_membank_w) + AM_RANGE(0xfe, 0xfe) AM_READWRITE(photon2_fe_r, photon2_fe_w) ADDRESS_MAP_END /************************************* diff --git a/src/mame/drivers/pipeline.c b/src/mame/drivers/pipeline.c index 30928547942..310f354e28b 100644 --- a/src/mame/drivers/pipeline.c +++ b/src/mame/drivers/pipeline.c @@ -87,6 +87,11 @@ public: UINT8 m_toMCU; UINT8 m_fromMCU; UINT8 m_ddrA; + DECLARE_WRITE8_MEMBER(vram2_w); + DECLARE_WRITE8_MEMBER(vram1_w); + DECLARE_WRITE8_MEMBER(mcu_portA_w); + DECLARE_READ8_MEMBER(mcu_portA_r); + DECLARE_WRITE8_MEMBER(mcu_ddrA_w); }; @@ -139,30 +144,28 @@ static WRITE8_DEVICE_HANDLER(vidctrl_w) state->m_vidctrl=data; } -static WRITE8_HANDLER(vram2_w) +WRITE8_MEMBER(pipeline_state::vram2_w) { - pipeline_state *state = space->machine().driver_data<pipeline_state>(); - if(!(state->m_vidctrl&1)) + if(!(m_vidctrl&1)) { - state->m_tilemap1->mark_tile_dirty(offset&0x7ff); - state->m_vram2[offset]=data; + m_tilemap1->mark_tile_dirty(offset&0x7ff); + m_vram2[offset]=data; } else { - state->m_palram[offset]=data; + m_palram[offset]=data; if(offset<0x300) { offset&=0xff; - palette_set_color_rgb(space->machine(), offset, pal6bit(state->m_palram[offset]), pal6bit(state->m_palram[offset+0x100]), pal6bit(state->m_palram[offset+0x200])); + palette_set_color_rgb(machine(), offset, pal6bit(m_palram[offset]), pal6bit(m_palram[offset+0x100]), pal6bit(m_palram[offset+0x200])); } } } -static WRITE8_HANDLER(vram1_w) +WRITE8_MEMBER(pipeline_state::vram1_w) { - pipeline_state *state = space->machine().driver_data<pipeline_state>(); - state->m_tilemap2->mark_tile_dirty(offset&0x7ff); - state->m_vram1[offset]=data; + m_tilemap2->mark_tile_dirty(offset&0x7ff); + m_vram1[offset]=data; } static READ8_DEVICE_HANDLER(protection_r) @@ -186,8 +189,8 @@ static WRITE8_DEVICE_HANDLER(protection_w) static ADDRESS_MAP_START( cpu0_mem, AS_PROGRAM, 8, pipeline_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x97ff) AM_RAM_WRITE_LEGACY(vram1_w) AM_BASE(m_vram1) - AM_RANGE(0x9800, 0xa7ff) AM_RAM_WRITE_LEGACY(vram2_w) AM_BASE(m_vram2) + AM_RANGE(0x8800, 0x97ff) AM_RAM_WRITE(vram1_w) AM_BASE(m_vram1) + AM_RANGE(0x9800, 0xa7ff) AM_RAM_WRITE(vram2_w) AM_BASE(m_vram2) AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w) AM_RANGE(0xb810, 0xb813) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w) AM_RANGE(0xb830, 0xb830) AM_NOP @@ -206,27 +209,24 @@ static ADDRESS_MAP_START( sound_port, AS_IO, 8, pipeline_state ) AM_RANGE(0x06, 0x07) AM_NOP ADDRESS_MAP_END -static WRITE8_HANDLER(mcu_portA_w) +WRITE8_MEMBER(pipeline_state::mcu_portA_w) { - pipeline_state *state = space->machine().driver_data<pipeline_state>(); - state->m_fromMCU=data; + m_fromMCU=data; } -static READ8_HANDLER(mcu_portA_r) +READ8_MEMBER(pipeline_state::mcu_portA_r) { - pipeline_state *state = space->machine().driver_data<pipeline_state>(); - return (state->m_fromMCU&state->m_ddrA)|(state->m_toMCU& ~state->m_ddrA); + return (m_fromMCU&m_ddrA)|(m_toMCU& ~m_ddrA); } -static WRITE8_HANDLER(mcu_ddrA_w) +WRITE8_MEMBER(pipeline_state::mcu_ddrA_w) { - pipeline_state *state = space->machine().driver_data<pipeline_state>(); - state->m_ddrA=data; + m_ddrA=data; } static ADDRESS_MAP_START( mcu_mem, AS_PROGRAM, 8, pipeline_state ) - AM_RANGE(0x0000, 0x0000) AM_READ_LEGACY(mcu_portA_r) AM_WRITE_LEGACY(mcu_portA_w) - AM_RANGE(0x0004, 0x0004) AM_WRITE_LEGACY(mcu_ddrA_w) + AM_RANGE(0x0000, 0x0000) AM_READ(mcu_portA_r) AM_WRITE(mcu_portA_w) + AM_RANGE(0x0004, 0x0004) AM_WRITE(mcu_ddrA_w) AM_RANGE(0x0010, 0x007f) AM_RAM AM_RANGE(0x0080, 0x0fff) AM_ROM ADDRESS_MAP_END diff --git a/src/mame/drivers/pkscram.c b/src/mame/drivers/pkscram.c index 88fa9bd4f36..8b852868966 100644 --- a/src/mame/drivers/pkscram.c +++ b/src/mame/drivers/pkscram.c @@ -31,38 +31,38 @@ public: tilemap_t *m_fg_tilemap; tilemap_t *m_md_tilemap; tilemap_t *m_bg_tilemap; + DECLARE_WRITE16_MEMBER(pkscramble_fgtilemap_w); + DECLARE_WRITE16_MEMBER(pkscramble_mdtilemap_w); + DECLARE_WRITE16_MEMBER(pkscramble_bgtilemap_w); + DECLARE_WRITE16_MEMBER(pkscramble_output_w); }; enum { interrupt_scanline=192 }; -static WRITE16_HANDLER( pkscramble_fgtilemap_w ) +WRITE16_MEMBER(pkscram_state::pkscramble_fgtilemap_w) { - pkscram_state *state = space->machine().driver_data<pkscram_state>(); - COMBINE_DATA(&state->m_pkscramble_fgtilemap_ram[offset]); - state->m_fg_tilemap->mark_tile_dirty(offset >> 1); + COMBINE_DATA(&m_pkscramble_fgtilemap_ram[offset]); + m_fg_tilemap->mark_tile_dirty(offset >> 1); } -static WRITE16_HANDLER( pkscramble_mdtilemap_w ) +WRITE16_MEMBER(pkscram_state::pkscramble_mdtilemap_w) { - pkscram_state *state = space->machine().driver_data<pkscram_state>(); - COMBINE_DATA(&state->m_pkscramble_mdtilemap_ram[offset]); - state->m_md_tilemap->mark_tile_dirty(offset >> 1); + COMBINE_DATA(&m_pkscramble_mdtilemap_ram[offset]); + m_md_tilemap->mark_tile_dirty(offset >> 1); } -static WRITE16_HANDLER( pkscramble_bgtilemap_w ) +WRITE16_MEMBER(pkscram_state::pkscramble_bgtilemap_w) { - pkscram_state *state = space->machine().driver_data<pkscram_state>(); - COMBINE_DATA(&state->m_pkscramble_bgtilemap_ram[offset]); - state->m_bg_tilemap->mark_tile_dirty(offset >> 1); + COMBINE_DATA(&m_pkscramble_bgtilemap_ram[offset]); + m_bg_tilemap->mark_tile_dirty(offset >> 1); } // input bit 0x20 in port1 should stay low until bit 0x20 is written here, then // it should stay high for some time (currently we cheat keeping the input always active) -static WRITE16_HANDLER( pkscramble_output_w ) +WRITE16_MEMBER(pkscram_state::pkscramble_output_w) { - pkscram_state *state = space->machine().driver_data<pkscram_state>(); // OUTPUT // BIT // 0x0001 -> STL @@ -83,15 +83,15 @@ static WRITE16_HANDLER( pkscramble_output_w ) // 0x2000 -> vblank interrupt enable // 0x4000 -> set on every second frame - not used - state->m_out = data; + m_out = data; - if (!(state->m_out & 0x2000) && state->m_interrupt_line_active) + if (!(m_out & 0x2000) && m_interrupt_line_active) { - cputag_set_input_line(space->machine(), "maincpu", 1, CLEAR_LINE); - state->m_interrupt_line_active = 0; + cputag_set_input_line(machine(), "maincpu", 1, CLEAR_LINE); + m_interrupt_line_active = 0; } - coin_counter_w(space->machine(), 0, data & 0x80); + coin_counter_w(machine(), 0, data & 0x80); } static ADDRESS_MAP_START( pkscramble_map, AS_PROGRAM, 16, pkscram_state ) @@ -99,14 +99,14 @@ static ADDRESS_MAP_START( pkscramble_map, AS_PROGRAM, 16, pkscram_state ) AM_RANGE(0x000000, 0x01ffff) AM_ROM AM_RANGE(0x040000, 0x0400ff) AM_RAM AM_SHARE("nvram") AM_RANGE(0x041000, 0x043fff) AM_RAM // main ram - AM_RANGE(0x044000, 0x044fff) AM_RAM_WRITE_LEGACY(pkscramble_fgtilemap_w) AM_BASE(m_pkscramble_fgtilemap_ram) // fg tilemap - AM_RANGE(0x045000, 0x045fff) AM_RAM_WRITE_LEGACY(pkscramble_mdtilemap_w) AM_BASE(m_pkscramble_mdtilemap_ram) // md tilemap (just a copy of fg?) - AM_RANGE(0x046000, 0x046fff) AM_RAM_WRITE_LEGACY(pkscramble_bgtilemap_w) AM_BASE(m_pkscramble_bgtilemap_ram) // bg tilemap + AM_RANGE(0x044000, 0x044fff) AM_RAM_WRITE(pkscramble_fgtilemap_w) AM_BASE(m_pkscramble_fgtilemap_ram) // fg tilemap + AM_RANGE(0x045000, 0x045fff) AM_RAM_WRITE(pkscramble_mdtilemap_w) AM_BASE(m_pkscramble_mdtilemap_ram) // md tilemap (just a copy of fg?) + AM_RANGE(0x046000, 0x046fff) AM_RAM_WRITE(pkscramble_bgtilemap_w) AM_BASE(m_pkscramble_bgtilemap_ram) // bg tilemap AM_RANGE(0x047000, 0x047fff) AM_RAM // unused AM_RANGE(0x048000, 0x048fff) AM_RAM_WRITE_LEGACY(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x049000, 0x049001) AM_READ_PORT("DSW") AM_RANGE(0x049004, 0x049005) AM_READ_PORT("INPUTS") - AM_RANGE(0x049008, 0x049009) AM_WRITE_LEGACY(pkscramble_output_w) + AM_RANGE(0x049008, 0x049009) AM_WRITE(pkscramble_output_w) AM_RANGE(0x049010, 0x049011) AM_WRITENOP AM_RANGE(0x049014, 0x049015) AM_WRITENOP AM_RANGE(0x049018, 0x049019) AM_WRITENOP diff --git a/src/mame/drivers/poker72.c b/src/mame/drivers/poker72.c index 0393e6a7e53..cd63111b55b 100644 --- a/src/mame/drivers/poker72.c +++ b/src/mame/drivers/poker72.c @@ -24,6 +24,9 @@ public: UINT8 *m_vram; UINT8 *m_pal; UINT8 m_tile_bank; + DECLARE_WRITE8_MEMBER(poker72_paletteram_w); + DECLARE_WRITE8_MEMBER(output_w); + DECLARE_WRITE8_MEMBER(tile_bank_w); }; @@ -58,45 +61,43 @@ static SCREEN_UPDATE_IND16(poker72) return 0; } -static WRITE8_HANDLER( poker72_paletteram_w ) +WRITE8_MEMBER(poker72_state::poker72_paletteram_w) { - poker72_state *state = space->machine().driver_data<poker72_state>(); int r,g,b; - state->m_pal[offset] = data; + m_pal[offset] = data; - r = state->m_pal[(offset & 0x3ff)+0x000] & 0x3f; - g = state->m_pal[(offset & 0x3ff)+0x400] & 0x3f; - b = state->m_pal[(offset & 0x3ff)+0x800] & 0x3f; + r = m_pal[(offset & 0x3ff)+0x000] & 0x3f; + g = m_pal[(offset & 0x3ff)+0x400] & 0x3f; + b = m_pal[(offset & 0x3ff)+0x800] & 0x3f; - palette_set_color_rgb( space->machine(), offset & 0x3ff, pal6bit(r), pal6bit(g), pal6bit(b)); + palette_set_color_rgb( machine(), offset & 0x3ff, pal6bit(r), pal6bit(g), pal6bit(b)); } -static WRITE8_HANDLER( output_w ) +WRITE8_MEMBER(poker72_state::output_w) { - UINT8 *ROM = space->machine().region("maincpu")->base(); + UINT8 *ROM = machine().region("maincpu")->base(); printf("%02x\n",data); /* if((data & 0xc) == 0xc) - memory_set_bankptr(space->machine(), "bank1", &ROM[0x10000]); + memory_set_bankptr(machine(), "bank1", &ROM[0x10000]); else*/ if(data & 8) - memory_set_bankptr(space->machine(), "bank1", &ROM[0x08000]); + memory_set_bankptr(machine(), "bank1", &ROM[0x08000]); else - memory_set_bankptr(space->machine(), "bank1", &ROM[0x00000]); + memory_set_bankptr(machine(), "bank1", &ROM[0x00000]); } -static WRITE8_HANDLER( tile_bank_w ) +WRITE8_MEMBER(poker72_state::tile_bank_w) { - poker72_state *state = space->machine().driver_data<poker72_state>(); - state->m_tile_bank = (data & 4) >> 2; + m_tile_bank = (data & 4) >> 2; } static ADDRESS_MAP_START( poker72_map, AS_PROGRAM, 8, poker72_state ) AM_RANGE(0x0000, 0xbfff) AM_ROMBANK("bank1") AM_RANGE(0xc000, 0xdfff) AM_RAM //work ram AM_RANGE(0xe000, 0xefff) AM_RAM AM_BASE(m_vram) - AM_RANGE(0xf000, 0xfbff) AM_RAM_WRITE_LEGACY(poker72_paletteram_w) AM_BASE(m_pal) + AM_RANGE(0xf000, 0xfbff) AM_RAM_WRITE(poker72_paletteram_w) AM_BASE(m_pal) AM_RANGE(0xfc00, 0xfdff) AM_RAM //??? AM_RANGE(0xfe08, 0xfe08) AM_READ_PORT("IN0") AM_RANGE(0xfe09, 0xfe09) AM_READ_PORT("IN1") @@ -106,8 +107,8 @@ static ADDRESS_MAP_START( poker72_map, AS_PROGRAM, 8, poker72_state ) AM_RANGE(0xfe0e, 0xfe0e) AM_READ_PORT("IN5") AM_RANGE(0xfe17, 0xfe17) AM_READNOP //irq ack - AM_RANGE(0xfe20, 0xfe20) AM_WRITE_LEGACY(output_w) //output, irq enable? - AM_RANGE(0xfe22, 0xfe22) AM_WRITE_LEGACY(tile_bank_w) + AM_RANGE(0xfe20, 0xfe20) AM_WRITE(output_w) //output, irq enable? + AM_RANGE(0xfe22, 0xfe22) AM_WRITE(tile_bank_w) AM_RANGE(0xfe40, 0xfe40) AM_DEVREADWRITE_LEGACY("ay", ay8910_r, ay8910_data_w) AM_RANGE(0xfe60, 0xfe60) AM_DEVWRITE_LEGACY("ay", ay8910_address_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/popobear.c b/src/mame/drivers/popobear.c index 384969dcbe2..8d809318a6a 100644 --- a/src/mame/drivers/popobear.c +++ b/src/mame/drivers/popobear.c @@ -90,6 +90,8 @@ public: UINT16 *m_vram; UINT16 *m_spr; required_device<cpu_device> m_maincpu; + DECLARE_READ8_MEMBER(popo_620000_r); + DECLARE_WRITE8_MEMBER(popobear_irq_ack_w); }; VIDEO_START(popobear) @@ -267,20 +269,19 @@ SCREEN_UPDATE_IND16( popobear ) } /* ??? */ -static READ8_HANDLER( popo_620000_r ) +READ8_MEMBER(popobear_state::popo_620000_r) { return 9; } -static WRITE8_HANDLER( popobear_irq_ack_w ) +WRITE8_MEMBER(popobear_state::popobear_irq_ack_w) { - popobear_state *state = space->machine().driver_data<popobear_state>(); int i; for(i=0;i<8;i++) { if(data & 1 << i) - device_set_input_line(state->m_maincpu, i, CLEAR_LINE); + device_set_input_line(m_maincpu, i, CLEAR_LINE); } } @@ -298,7 +299,7 @@ static ADDRESS_MAP_START( popobear_mem, AS_PROGRAM, 16, popobear_state ) // AM_RANGE(0x480020, 0x480021) AM_NOP //AM_READ_LEGACY(popo_480020_r) AM_WRITE_LEGACY(popo_480020_w) // AM_RANGE(0x480028, 0x480029) AM_NOP //AM_WRITE_LEGACY(popo_480028_w) // AM_RANGE(0x48002c, 0x48002d) AM_NOP //AM_WRITE_LEGACY(popo_48002c_w) - AM_RANGE(0x480030, 0x480031) AM_WRITE8_LEGACY(popobear_irq_ack_w, 0x00ff) + AM_RANGE(0x480030, 0x480031) AM_WRITE8(popobear_irq_ack_w, 0x00ff) AM_RANGE(0x480034, 0x480035) AM_RAM // coin counter or coin lockout AM_RANGE(0x48003a, 0x48003b) AM_RAM //AM_READ_LEGACY(popo_48003a_r) AM_WRITE_LEGACY(popo_48003a_w) @@ -310,7 +311,7 @@ static ADDRESS_MAP_START( popobear_mem, AS_PROGRAM, 16, popobear_state ) AM_RANGE(0x550000, 0x550003) AM_DEVWRITE8_LEGACY("ymsnd", ym2413_w, 0x00ff ) AM_RANGE(0x600000, 0x600001) AM_WRITENOP - AM_RANGE(0x620000, 0x620001) AM_READ8_LEGACY(popo_620000_r,0xff00) AM_WRITENOP + AM_RANGE(0x620000, 0x620001) AM_READ8(popo_620000_r,0xff00) AM_WRITENOP AM_RANGE(0x800000, 0x9fffff) AM_ROM AM_REGION("gfx1", 0) // u5 & u6 AM_RANGE(0xa00000, 0xbfffff) AM_ROM AM_REGION("gfx2", 0) // u7 & u8 ADDRESS_MAP_END diff --git a/src/mame/drivers/ppmast93.c b/src/mame/drivers/ppmast93.c index 7178fe863d6..0f881d9a304 100644 --- a/src/mame/drivers/ppmast93.c +++ b/src/mame/drivers/ppmast93.c @@ -146,43 +146,45 @@ public: tilemap_t *m_bg_tilemap; UINT8 *m_fgram; UINT8 *m_bgram; + DECLARE_WRITE8_MEMBER(ppmast93_fgram_w); + DECLARE_WRITE8_MEMBER(ppmast93_bgram_w); + DECLARE_WRITE8_MEMBER(ppmast93_port4_w); + DECLARE_WRITE8_MEMBER(ppmast_sound_w); }; -static WRITE8_HANDLER( ppmast93_fgram_w ) +WRITE8_MEMBER(ppmast93_state::ppmast93_fgram_w) { - ppmast93_state *state = space->machine().driver_data<ppmast93_state>(); - state->m_fgram[offset] = data; - state->m_fg_tilemap->mark_tile_dirty(offset/2); + m_fgram[offset] = data; + m_fg_tilemap->mark_tile_dirty(offset/2); } -static WRITE8_HANDLER( ppmast93_bgram_w ) +WRITE8_MEMBER(ppmast93_state::ppmast93_bgram_w) { - ppmast93_state *state = space->machine().driver_data<ppmast93_state>(); - state->m_bgram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset/2); + m_bgram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset/2); } -static WRITE8_HANDLER( ppmast93_port4_w ) +WRITE8_MEMBER(ppmast93_state::ppmast93_port4_w) { - UINT8 *rom = space->machine().region("maincpu")->base(); + UINT8 *rom = machine().region("maincpu")->base(); int bank; - coin_counter_w(space->machine(), 0, data & 0x08); - coin_counter_w(space->machine(), 1, data & 0x10); + coin_counter_w(machine(), 0, data & 0x08); + coin_counter_w(machine(), 1, data & 0x10); bank = data & 0x07; - memory_set_bankptr(space->machine(), "bank1",&rom[0x10000+(bank*0x4000)]); + memory_set_bankptr(machine(), "bank1",&rom[0x10000+(bank*0x4000)]); } static ADDRESS_MAP_START( ppmast93_cpu1_map, AS_PROGRAM, 8, ppmast93_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_WRITENOP AM_REGION("maincpu", 0x10000) AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE_LEGACY(ppmast93_bgram_w) AM_BASE(m_bgram) AM_SHARE("share1") + AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(ppmast93_bgram_w) AM_BASE(m_bgram) AM_SHARE("share1") AM_RANGE(0xd800, 0xdfff) AM_WRITENOP - AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE_LEGACY(ppmast93_fgram_w) AM_BASE(m_fgram) AM_SHARE("share2") + AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(ppmast93_fgram_w) AM_BASE(m_fgram) AM_SHARE("share2") AM_RANGE(0xf800, 0xffff) AM_RAM ADDRESS_MAP_END @@ -195,7 +197,7 @@ static ADDRESS_MAP_START( ppmast93_cpu1_io, AS_IO, 8, ppmast93_state ) AM_RANGE(0x08, 0x08) AM_READ_PORT("DSW2") AM_RANGE(0x00, 0x00) AM_WRITE_LEGACY(soundlatch_w) - AM_RANGE(0x04, 0x04) AM_WRITE_LEGACY(ppmast93_port4_w) + AM_RANGE(0x04, 0x04) AM_WRITE(ppmast93_port4_w) ADDRESS_MAP_END static ADDRESS_MAP_START( ppmast93_cpu2_map, AS_PROGRAM, 8, ppmast93_state ) @@ -205,19 +207,19 @@ static ADDRESS_MAP_START( ppmast93_cpu2_map, AS_PROGRAM, 8, ppmast93_state ) ADDRESS_MAP_END -static WRITE8_HANDLER(ppmast_sound_w) +WRITE8_MEMBER(ppmast93_state::ppmast_sound_w) { switch(offset&0xff) { case 0: - case 1: ym2413_w(space->machine().device("ymsnd"),offset,data); break; - case 2: dac_data_w(space->machine().device("dac"),data);break; - default: logerror("%x %x - %x\n",offset,data,cpu_get_previouspc(&space->device())); + case 1: ym2413_w(machine().device("ymsnd"),offset,data); break; + case 2: dac_data_w(machine().device("dac"),data);break; + default: logerror("%x %x - %x\n",offset,data,cpu_get_previouspc(&space.device())); } } static ADDRESS_MAP_START( ppmast93_cpu2_io, AS_IO, 8, ppmast93_state ) - AM_RANGE(0x0000, 0xffff) AM_ROM AM_WRITE_LEGACY(ppmast_sound_w) AM_REGION("sub", 0x20000) + AM_RANGE(0x0000, 0xffff) AM_ROM AM_WRITE(ppmast_sound_w) AM_REGION("sub", 0x20000) ADDRESS_MAP_END static INPUT_PORTS_START( ppmast93 ) diff --git a/src/mame/drivers/progolf.c b/src/mame/drivers/progolf.c index b709d3e8764..c01055292a0 100644 --- a/src/mame/drivers/progolf.c +++ b/src/mame/drivers/progolf.c @@ -71,6 +71,15 @@ public: UINT8 m_scrollx_lo; UINT8 m_gfx_switch; UINT8 m_sound_cmd; + DECLARE_WRITE8_MEMBER(progolf_charram_w); + DECLARE_WRITE8_MEMBER(progolf_char_vregs_w); + DECLARE_WRITE8_MEMBER(progolf_scrollx_lo_w); + DECLARE_WRITE8_MEMBER(progolf_scrollx_hi_w); + DECLARE_WRITE8_MEMBER(progolf_flip_screen_w); + DECLARE_WRITE8_MEMBER(audio_command_w); + DECLARE_READ8_MEMBER(audio_command_r); + DECLARE_READ8_MEMBER(progolf_videoram_r); + DECLARE_WRITE8_MEMBER(progolf_videoram_w); }; @@ -140,118 +149,110 @@ static SCREEN_UPDATE_IND16( progolf ) return 0; } -static WRITE8_HANDLER( progolf_charram_w ) +WRITE8_MEMBER(progolf_state::progolf_charram_w) { - progolf_state *state = space->machine().driver_data<progolf_state>(); int i; - state->m_fbram[offset] = data; + m_fbram[offset] = data; - if(state->m_char_pen == 7) + if(m_char_pen == 7) { for(i=0;i<8;i++) - state->m_fg_fb[offset*8+i] = 0; + m_fg_fb[offset*8+i] = 0; } else { for(i=0;i<8;i++) { - if(state->m_fg_fb[offset*8+i] == state->m_char_pen) - state->m_fg_fb[offset*8+i] = data & (1<<(7-i)) ? state->m_char_pen : 0; + if(m_fg_fb[offset*8+i] == m_char_pen) + m_fg_fb[offset*8+i] = data & (1<<(7-i)) ? m_char_pen : 0; else - state->m_fg_fb[offset*8+i] = data & (1<<(7-i)) ? state->m_fg_fb[offset*8+i]|state->m_char_pen : state->m_fg_fb[offset*8+i]; + m_fg_fb[offset*8+i] = data & (1<<(7-i)) ? m_fg_fb[offset*8+i]|m_char_pen : m_fg_fb[offset*8+i]; } } } -static WRITE8_HANDLER( progolf_char_vregs_w ) +WRITE8_MEMBER(progolf_state::progolf_char_vregs_w) { - progolf_state *state = space->machine().driver_data<progolf_state>(); - state->m_char_pen = data & 0x07; - state->m_gfx_switch = data & 0xf0; - state->m_char_pen_vreg = data & 0x30; + m_char_pen = data & 0x07; + m_gfx_switch = data & 0xf0; + m_char_pen_vreg = data & 0x30; } -static WRITE8_HANDLER( progolf_scrollx_lo_w ) +WRITE8_MEMBER(progolf_state::progolf_scrollx_lo_w) { - progolf_state *state = space->machine().driver_data<progolf_state>(); - state->m_scrollx_lo = data; + m_scrollx_lo = data; } -static WRITE8_HANDLER( progolf_scrollx_hi_w ) +WRITE8_MEMBER(progolf_state::progolf_scrollx_hi_w) { - progolf_state *state = space->machine().driver_data<progolf_state>(); - state->m_scrollx_hi = data; + m_scrollx_hi = data; } -static WRITE8_HANDLER( progolf_flip_screen_w ) +WRITE8_MEMBER(progolf_state::progolf_flip_screen_w) { - flip_screen_set(space->machine(), data & 1); + flip_screen_set(machine(), data & 1); if(data & 0xfe) printf("$9600 with data = %02x used\n",data); } -static WRITE8_HANDLER( audio_command_w ) +WRITE8_MEMBER(progolf_state::audio_command_w) { - progolf_state *state = space->machine().driver_data<progolf_state>(); - state->m_sound_cmd = data; - cputag_set_input_line(space->machine(), "audiocpu", 0, ASSERT_LINE); + m_sound_cmd = data; + cputag_set_input_line(machine(), "audiocpu", 0, ASSERT_LINE); } -static READ8_HANDLER( audio_command_r ) +READ8_MEMBER(progolf_state::audio_command_r) { - progolf_state *state = space->machine().driver_data<progolf_state>(); - cputag_set_input_line(space->machine(), "audiocpu", 0, CLEAR_LINE); - return state->m_sound_cmd; + cputag_set_input_line(machine(), "audiocpu", 0, CLEAR_LINE); + return m_sound_cmd; } -static READ8_HANDLER( progolf_videoram_r ) +READ8_MEMBER(progolf_state::progolf_videoram_r) { - progolf_state *state = space->machine().driver_data<progolf_state>(); - UINT8 *videoram = state->m_videoram; - UINT8 *gfx_rom = space->machine().region("gfx1")->base(); + UINT8 *videoram = m_videoram; + UINT8 *gfx_rom = machine().region("gfx1")->base(); if (offset >= 0x0800) { - if (state->m_gfx_switch == 0x50) + if (m_gfx_switch == 0x50) return gfx_rom[offset]; - else if (state->m_gfx_switch == 0x60) + else if (m_gfx_switch == 0x60) return gfx_rom[offset + 0x1000]; - else if (state->m_gfx_switch == 0x70) + else if (m_gfx_switch == 0x70) return gfx_rom[offset + 0x2000]; else return videoram[offset]; } else { - if (state->m_gfx_switch == 0x10) + if (m_gfx_switch == 0x10) return gfx_rom[offset]; - else if (state->m_gfx_switch == 0x20) + else if (m_gfx_switch == 0x20) return gfx_rom[offset + 0x1000]; - else if (state->m_gfx_switch == 0x30) + else if (m_gfx_switch == 0x30) return gfx_rom[offset + 0x2000]; else return videoram[offset]; } } -static WRITE8_HANDLER( progolf_videoram_w ) +WRITE8_MEMBER(progolf_state::progolf_videoram_w) { - progolf_state *state = space->machine().driver_data<progolf_state>(); - UINT8 *videoram = state->m_videoram; - //if(state->m_gfx_switch & 0x40) + UINT8 *videoram = m_videoram; + //if(m_gfx_switch & 0x40) videoram[offset] = data; } static ADDRESS_MAP_START( main_cpu, AS_PROGRAM, 8, progolf_state ) AM_RANGE(0x0000, 0x5fff) AM_RAM - AM_RANGE(0x6000, 0x7fff) AM_RAM_WRITE_LEGACY(progolf_charram_w) AM_BASE(m_fbram) - AM_RANGE(0x8000, 0x8fff) AM_READWRITE_LEGACY(progolf_videoram_r,progolf_videoram_w) - AM_RANGE(0x9000, 0x9000) AM_READ_PORT("IN2") AM_WRITE_LEGACY(progolf_char_vregs_w) - AM_RANGE(0x9200, 0x9200) AM_READ_PORT("P1") AM_WRITE_LEGACY(progolf_scrollx_hi_w) //p1 inputs - AM_RANGE(0x9400, 0x9400) AM_READ_PORT("P2") AM_WRITE_LEGACY(progolf_scrollx_lo_w) //p2 inputs - AM_RANGE(0x9600, 0x9600) AM_READ_PORT("IN0") AM_WRITE_LEGACY(progolf_flip_screen_w) /* VBLANK */ + AM_RANGE(0x6000, 0x7fff) AM_RAM_WRITE(progolf_charram_w) AM_BASE(m_fbram) + AM_RANGE(0x8000, 0x8fff) AM_READWRITE(progolf_videoram_r,progolf_videoram_w) + AM_RANGE(0x9000, 0x9000) AM_READ_PORT("IN2") AM_WRITE(progolf_char_vregs_w) + AM_RANGE(0x9200, 0x9200) AM_READ_PORT("P1") AM_WRITE(progolf_scrollx_hi_w) //p1 inputs + AM_RANGE(0x9400, 0x9400) AM_READ_PORT("P2") AM_WRITE(progolf_scrollx_lo_w) //p2 inputs + AM_RANGE(0x9600, 0x9600) AM_READ_PORT("IN0") AM_WRITE(progolf_flip_screen_w) /* VBLANK */ AM_RANGE(0x9800, 0x9800) AM_READ_PORT("DSW1") AM_RANGE(0x9800, 0x9800) AM_DEVWRITE("crtc", mc6845_device, address_w) AM_RANGE(0x9801, 0x9801) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0x9a00, 0x9a00) AM_READ_PORT("DSW2") AM_WRITE_LEGACY(audio_command_w) + AM_RANGE(0x9a00, 0x9a00) AM_READ_PORT("DSW2") AM_WRITE(audio_command_w) // AM_RANGE(0x9e00, 0x9e00) AM_WRITENOP AM_RANGE(0xb000, 0xffff) AM_ROM ADDRESS_MAP_END @@ -262,7 +263,7 @@ static ADDRESS_MAP_START( sound_cpu, AS_PROGRAM, 8, progolf_state ) AM_RANGE(0x5000, 0x5fff) AM_DEVWRITE_LEGACY("ay1", ay8910_address_w) AM_RANGE(0x6000, 0x6fff) AM_DEVREADWRITE_LEGACY("ay2", ay8910_r, ay8910_data_w) AM_RANGE(0x7000, 0x7fff) AM_DEVWRITE_LEGACY("ay2", ay8910_address_w) - AM_RANGE(0x8000, 0x8fff) AM_READ_LEGACY(audio_command_r) AM_WRITENOP //volume control? + AM_RANGE(0x8000, 0x8fff) AM_READ(audio_command_r) AM_WRITENOP //volume control? AM_RANGE(0xf000, 0xffff) AM_ROM ADDRESS_MAP_END diff --git a/src/mame/drivers/psattack.c b/src/mame/drivers/psattack.c index 2dcf3f6d93e..0c5a111df11 100644 --- a/src/mame/drivers/psattack.c +++ b/src/mame/drivers/psattack.c @@ -85,18 +85,19 @@ public: psattack_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) { } + DECLARE_READ32_MEMBER(psattack_unk_r); }; -static READ32_HANDLER( psattack_unk_r ) +READ32_MEMBER(psattack_state::psattack_unk_r) { return 0xffffffff; } static ADDRESS_MAP_START( psattack_mem, AS_PROGRAM, 32, psattack_state ) AM_RANGE(0x00000000, 0x001fffff) AM_ROM - AM_RANGE(0x01402204, 0x01402207) AM_READ_LEGACY(psattack_unk_r) - AM_RANGE(0x01402804, 0x01402807) AM_READ_LEGACY(psattack_unk_r) + AM_RANGE(0x01402204, 0x01402207) AM_READ(psattack_unk_r) + AM_RANGE(0x01402804, 0x01402807) AM_READ(psattack_unk_r) AM_RANGE(0x02000000, 0x027fffff) AM_RAM diff --git a/src/mame/drivers/pturn.c b/src/mame/drivers/pturn.c index b834ef8c718..80a9f4aa92c 100644 --- a/src/mame/drivers/pturn.c +++ b/src/mame/drivers/pturn.c @@ -97,6 +97,18 @@ public: int m_nmi_sub; UINT8 *m_spriteram; size_t m_spriteram_size; + DECLARE_WRITE8_MEMBER(pturn_videoram_w); + DECLARE_WRITE8_MEMBER(nmi_main_enable_w); + DECLARE_WRITE8_MEMBER(nmi_sub_enable_w); + DECLARE_WRITE8_MEMBER(sound_w); + DECLARE_WRITE8_MEMBER(bgcolor_w); + DECLARE_WRITE8_MEMBER(bg_scrollx_w); + DECLARE_WRITE8_MEMBER(fgpalette_w); + DECLARE_WRITE8_MEMBER(bg_scrolly_w); + DECLARE_WRITE8_MEMBER(fgbank_w); + DECLARE_WRITE8_MEMBER(bgbank_w); + DECLARE_WRITE8_MEMBER(flip_w); + DECLARE_READ8_MEMBER(pturn_custom_r); }; @@ -202,81 +214,72 @@ READ8_HANDLER (pturn_protection2_r) } #endif -static WRITE8_HANDLER( pturn_videoram_w ) +WRITE8_MEMBER(pturn_state::pturn_videoram_w) { - pturn_state *state = space->machine().driver_data<pturn_state>(); - UINT8 *videoram = state->m_videoram; + UINT8 *videoram = m_videoram; videoram[offset]=data; - state->m_fgmap->mark_tile_dirty(offset); + m_fgmap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( nmi_main_enable_w ) +WRITE8_MEMBER(pturn_state::nmi_main_enable_w) { - pturn_state *state = space->machine().driver_data<pturn_state>(); - state->m_nmi_main = data; + m_nmi_main = data; } -static WRITE8_HANDLER( nmi_sub_enable_w ) +WRITE8_MEMBER(pturn_state::nmi_sub_enable_w) { - pturn_state *state = space->machine().driver_data<pturn_state>(); - state->m_nmi_sub = data; + m_nmi_sub = data; } -static WRITE8_HANDLER(sound_w) +WRITE8_MEMBER(pturn_state::sound_w) { soundlatch_w(space,0,data); } -static WRITE8_HANDLER(bgcolor_w) +WRITE8_MEMBER(pturn_state::bgcolor_w) { - pturn_state *state = space->machine().driver_data<pturn_state>(); - state->m_bgcolor=data; + m_bgcolor=data; } -static WRITE8_HANDLER(bg_scrollx_w) +WRITE8_MEMBER(pturn_state::bg_scrollx_w) { - pturn_state *state = space->machine().driver_data<pturn_state>(); - state->m_bgmap->set_scrolly(0, (data>>5)*32*8); - state->m_bgpalette=data&0x1f; - state->m_bgmap->mark_all_dirty(); + m_bgmap->set_scrolly(0, (data>>5)*32*8); + m_bgpalette=data&0x1f; + m_bgmap->mark_all_dirty(); } -static WRITE8_HANDLER(fgpalette_w) +WRITE8_MEMBER(pturn_state::fgpalette_w) { - pturn_state *state = space->machine().driver_data<pturn_state>(); - state->m_fgpalette=data&0x1f; - state->m_fgmap->mark_all_dirty(); + m_fgpalette=data&0x1f; + m_fgmap->mark_all_dirty(); } -static WRITE8_HANDLER(bg_scrolly_w) +WRITE8_MEMBER(pturn_state::bg_scrolly_w) { - pturn_state *state = space->machine().driver_data<pturn_state>(); - state->m_bgmap->set_scrollx(0, data); + m_bgmap->set_scrollx(0, data); } -static WRITE8_HANDLER(fgbank_w) +WRITE8_MEMBER(pturn_state::fgbank_w) { - pturn_state *state = space->machine().driver_data<pturn_state>(); - state->m_fgbank=data&1; - state->m_fgmap->mark_all_dirty(); + m_fgbank=data&1; + m_fgmap->mark_all_dirty(); } -static WRITE8_HANDLER(bgbank_w) +WRITE8_MEMBER(pturn_state::bgbank_w) { - pturn_state *state = space->machine().driver_data<pturn_state>(); - state->m_bgbank=data&1; - state->m_bgmap->mark_all_dirty(); + m_bgbank=data&1; + m_bgmap->mark_all_dirty(); } -static WRITE8_HANDLER(flip_w) +WRITE8_MEMBER(pturn_state::flip_w) { - flip_screen_set(space->machine(), data); + flip_screen_set(machine(), data); } -static READ8_HANDLER (pturn_custom_r) +READ8_MEMBER(pturn_state::pturn_custom_r) { int addr = (int)offset + 0xc800; @@ -305,32 +308,32 @@ static READ8_HANDLER (pturn_custom_r) static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, pturn_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xc800, 0xcfff) AM_WRITENOP AM_READ_LEGACY(pturn_custom_r) + AM_RANGE(0xc800, 0xcfff) AM_WRITENOP AM_READ(pturn_custom_r) AM_RANGE(0xdfe0, 0xdfe0) AM_NOP - AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE_LEGACY(pturn_videoram_w) AM_BASE(m_videoram) - AM_RANGE(0xe400, 0xe400) AM_WRITE_LEGACY(fgpalette_w) - AM_RANGE(0xe800, 0xe800) AM_WRITE_LEGACY(sound_w) + AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(pturn_videoram_w) AM_BASE(m_videoram) + AM_RANGE(0xe400, 0xe400) AM_WRITE(fgpalette_w) + AM_RANGE(0xe800, 0xe800) AM_WRITE(sound_w) AM_RANGE(0xf000, 0xf0ff) AM_RAM AM_BASE_SIZE(m_spriteram, m_spriteram_size) - AM_RANGE(0xf400, 0xf400) AM_WRITE_LEGACY(bg_scrollx_w) + AM_RANGE(0xf400, 0xf400) AM_WRITE(bg_scrollx_w) AM_RANGE(0xf800, 0xf800) AM_READ_PORT("P1") AM_WRITENOP - AM_RANGE(0xf801, 0xf801) AM_READ_PORT("P2") AM_WRITE_LEGACY(bgcolor_w) + AM_RANGE(0xf801, 0xf801) AM_READ_PORT("P2") AM_WRITE(bgcolor_w) AM_RANGE(0xf802, 0xf802) AM_READ_PORT("SYSTEM") - AM_RANGE(0xf803, 0xf803) AM_WRITE_LEGACY(bg_scrolly_w) + AM_RANGE(0xf803, 0xf803) AM_WRITE(bg_scrolly_w) AM_RANGE(0xf804, 0xf804) AM_READ_PORT("DSW2") AM_RANGE(0xf805, 0xf805) AM_READ_PORT("DSW1") AM_RANGE(0xf806, 0xf806) AM_READNOP /* Protection related, ((val&3)==2) -> jump to 0 */ - AM_RANGE(0xfc00, 0xfc00) AM_WRITE_LEGACY(flip_w) - AM_RANGE(0xfc01, 0xfc01) AM_WRITE_LEGACY(nmi_main_enable_w) + AM_RANGE(0xfc00, 0xfc00) AM_WRITE(flip_w) + AM_RANGE(0xfc01, 0xfc01) AM_WRITE(nmi_main_enable_w) AM_RANGE(0xfc02, 0xfc02) AM_WRITENOP /* Unknown */ AM_RANGE(0xfc03, 0xfc03) AM_WRITENOP /* Unknown */ - AM_RANGE(0xfc04, 0xfc04) AM_WRITE_LEGACY(bgbank_w) - AM_RANGE(0xfc05, 0xfc05) AM_WRITE_LEGACY(fgbank_w) + AM_RANGE(0xfc04, 0xfc04) AM_WRITE(bgbank_w) + AM_RANGE(0xfc05, 0xfc05) AM_WRITE(fgbank_w) AM_RANGE(0xfc06, 0xfc06) AM_WRITENOP /* Unknown */ AM_RANGE(0xfc07, 0xfc07) AM_WRITENOP /* Unknown */ @@ -339,7 +342,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( sub_map, AS_PROGRAM, 8, pturn_state ) AM_RANGE(0x0000, 0x0fff) AM_ROM AM_RANGE(0x2000, 0x23ff) AM_RAM - AM_RANGE(0x3000, 0x3000) AM_READ_LEGACY(soundlatch_r) AM_WRITE_LEGACY(nmi_sub_enable_w) + AM_RANGE(0x3000, 0x3000) AM_READ_LEGACY(soundlatch_r) AM_WRITE(nmi_sub_enable_w) AM_RANGE(0x4000, 0x4000) AM_RAM AM_RANGE(0x5000, 0x5001) AM_DEVWRITE_LEGACY("ay1", ay8910_address_data_w) AM_RANGE(0x6000, 0x6001) AM_DEVWRITE_LEGACY("ay2", ay8910_address_data_w) diff --git a/src/mame/drivers/pzletime.c b/src/mame/drivers/pzletime.c index 515d629502b..a80a73f456c 100644 --- a/src/mame/drivers/pzletime.c +++ b/src/mame/drivers/pzletime.c @@ -40,6 +40,10 @@ public: /* misc */ int m_ticket; + DECLARE_WRITE16_MEMBER(mid_videoram_w); + DECLARE_WRITE16_MEMBER(txt_videoram_w); + DECLARE_WRITE16_MEMBER(ticket_w); + DECLARE_WRITE16_MEMBER(video_regs_w); }; @@ -134,18 +138,16 @@ static SCREEN_UPDATE_IND16( pzletime ) return 0; } -static WRITE16_HANDLER( mid_videoram_w ) +WRITE16_MEMBER(pzletime_state::mid_videoram_w) { - pzletime_state *state = space->machine().driver_data<pzletime_state>(); - COMBINE_DATA(&state->m_mid_videoram[offset]); - state->m_mid_tilemap->mark_tile_dirty(offset); + COMBINE_DATA(&m_mid_videoram[offset]); + m_mid_tilemap->mark_tile_dirty(offset); } -static WRITE16_HANDLER( txt_videoram_w ) +WRITE16_MEMBER(pzletime_state::txt_videoram_w) { - pzletime_state *state = space->machine().driver_data<pzletime_state>(); - COMBINE_DATA(&state->m_txt_videoram[offset]); - state->m_txt_tilemap->mark_tile_dirty(offset); + COMBINE_DATA(&m_txt_videoram[offset]); + m_txt_tilemap->mark_tile_dirty(offset); } static WRITE16_DEVICE_HANDLER( eeprom_w ) @@ -159,38 +161,36 @@ static WRITE16_DEVICE_HANDLER( eeprom_w ) } } -static WRITE16_HANDLER( ticket_w ) +WRITE16_MEMBER(pzletime_state::ticket_w) { - pzletime_state *state = space->machine().driver_data<pzletime_state>(); if (ACCESSING_BITS_0_7) - state->m_ticket = data & 1; + m_ticket = data & 1; } -static WRITE16_HANDLER( video_regs_w ) +WRITE16_MEMBER(pzletime_state::video_regs_w) { - pzletime_state *state = space->machine().driver_data<pzletime_state>(); int i; - COMBINE_DATA(&state->m_video_regs[offset]); + COMBINE_DATA(&m_video_regs[offset]); if (offset == 0) { - if (state->m_video_regs[0] > 0) + if (m_video_regs[0] > 0) { for (i = 0; i < 0x300; i++) { - palette_set_pen_contrast(space->machine(), i, (double)0x8000/(double)state->m_video_regs[0]); + palette_set_pen_contrast(machine(), i, (double)0x8000/(double)m_video_regs[0]); } } } else if (offset == 1) { - if (state->m_video_regs[1] > 0) + if (m_video_regs[1] > 0) { for (i = 0x300; i < 32768 + 0x300; i++) { - palette_set_pen_contrast(space->machine(), i, (double)0x8000/(double)state->m_video_regs[1]); + palette_set_pen_contrast(machine(), i, (double)0x8000/(double)m_video_regs[1]); } } } @@ -209,16 +209,16 @@ static CUSTOM_INPUT( ticket_status_r ) static ADDRESS_MAP_START( pzletime_map, AS_PROGRAM, 16, pzletime_state ) AM_RANGE(0x000000, 0x3fffff) AM_ROM - AM_RANGE(0x700000, 0x700005) AM_RAM_WRITE_LEGACY(video_regs_w) AM_BASE(m_video_regs) + AM_RANGE(0x700000, 0x700005) AM_RAM_WRITE(video_regs_w) AM_BASE(m_video_regs) AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) AM_RANGE(0x900000, 0x9005ff) AM_RAM_WRITE_LEGACY(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0xa00000, 0xa00007) AM_RAM AM_BASE(m_tilemap_regs) AM_RANGE(0xb00000, 0xb3ffff) AM_RAM AM_BASE(m_bg_videoram) - AM_RANGE(0xc00000, 0xc00fff) AM_RAM_WRITE_LEGACY(mid_videoram_w) AM_BASE(m_mid_videoram) - AM_RANGE(0xc01000, 0xc01fff) AM_RAM_WRITE_LEGACY(txt_videoram_w) AM_BASE(m_txt_videoram) + AM_RANGE(0xc00000, 0xc00fff) AM_RAM_WRITE(mid_videoram_w) AM_BASE(m_mid_videoram) + AM_RANGE(0xc01000, 0xc01fff) AM_RAM_WRITE(txt_videoram_w) AM_BASE(m_txt_videoram) AM_RANGE(0xd00000, 0xd01fff) AM_RAM AM_BASE(m_spriteram) AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("INPUT") AM_DEVWRITE_LEGACY("eeprom", eeprom_w) - AM_RANGE(0xe00002, 0xe00003) AM_READ_PORT("SYSTEM") AM_WRITE_LEGACY(ticket_w) + AM_RANGE(0xe00002, 0xe00003) AM_READ_PORT("SYSTEM") AM_WRITE(ticket_w) AM_RANGE(0xe00004, 0xe00005) AM_DEVWRITE_LEGACY("oki", oki_bank_w) AM_RANGE(0xf00000, 0xf0ffff) AM_RAM ADDRESS_MAP_END diff --git a/src/mame/drivers/quantum.c b/src/mame/drivers/quantum.c index d688b0b457a..2d023525e97 100644 --- a/src/mame/drivers/quantum.c +++ b/src/mame/drivers/quantum.c @@ -57,6 +57,8 @@ public: quantum_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) { } + DECLARE_READ16_MEMBER(trackball_r); + DECLARE_WRITE16_MEMBER(led_w); }; @@ -70,9 +72,9 @@ public: * *************************************/ -static READ16_HANDLER( trackball_r ) +READ16_MEMBER(quantum_state::trackball_r) { - return (input_port_read(space->machine(), "TRACKY") << 4) | input_port_read(space->machine(), "TRACKX"); + return (input_port_read(machine(), "TRACKY") << 4) | input_port_read(machine(), "TRACKX"); } @@ -95,19 +97,19 @@ static READ8_DEVICE_HANDLER( input_2_r ) * *************************************/ -static WRITE16_HANDLER( led_w ) +WRITE16_MEMBER(quantum_state::led_w) { if (ACCESSING_BITS_0_7) { /* bits 0 and 1 are coin counters */ - coin_counter_w(space->machine(), 0, data & 2); - coin_counter_w(space->machine(), 1, data & 1); + coin_counter_w(machine(), 0, data & 2); + coin_counter_w(machine(), 1, data & 1); /* bit 3 = select second trackball for cocktail mode? */ /* bits 4 and 5 are LED controls */ - set_led_status(space->machine(), 0, data & 0x10); - set_led_status(space->machine(), 1, data & 0x20); + set_led_status(machine(), 0, data & 0x10); + set_led_status(machine(), 1, data & 0x20); /* bits 6 and 7 flip screen */ avg_set_flip_x (data & 0x40); @@ -130,10 +132,10 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, quantum_state ) AM_RANGE(0x840000, 0x84001f) AM_DEVREADWRITE8_LEGACY("pokey1", pokey_r, pokey_w, 0x00ff) AM_RANGE(0x840020, 0x84003f) AM_DEVREADWRITE8_LEGACY("pokey2", pokey_r, pokey_w, 0x00ff) AM_RANGE(0x900000, 0x9001ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x940000, 0x940001) AM_READ_LEGACY(trackball_r) /* trackball */ + AM_RANGE(0x940000, 0x940001) AM_READ(trackball_r) /* trackball */ AM_RANGE(0x948000, 0x948001) AM_READ_PORT("SYSTEM") AM_RANGE(0x950000, 0x95001f) AM_WRITEONLY AM_BASE_LEGACY((UINT16**)&avgdvg_colorram) - AM_RANGE(0x958000, 0x958001) AM_WRITE_LEGACY(led_w) + AM_RANGE(0x958000, 0x958001) AM_WRITE(led_w) AM_RANGE(0x960000, 0x960001) AM_WRITENOP AM_RANGE(0x968000, 0x968001) AM_WRITE_LEGACY(avgdvg_reset_word_w) AM_RANGE(0x970000, 0x970001) AM_WRITE_LEGACY(avgdvg_go_word_w) diff --git a/src/mame/drivers/quizo.c b/src/mame/drivers/quizo.c index 09b19cbbbf5..f819194d9ad 100644 --- a/src/mame/drivers/quizo.c +++ b/src/mame/drivers/quizo.c @@ -37,6 +37,9 @@ public: UINT8 *m_videoram; UINT8 m_port60; UINT8 m_port70; + DECLARE_WRITE8_MEMBER(vram_w); + DECLARE_WRITE8_MEMBER(port70_w); + DECLARE_WRITE8_MEMBER(port60_w); }; @@ -105,37 +108,34 @@ static SCREEN_UPDATE_IND16( quizo ) return 0; } -static WRITE8_HANDLER(vram_w) +WRITE8_MEMBER(quizo_state::vram_w) { - quizo_state *state = space->machine().driver_data<quizo_state>(); - UINT8 *videoram = state->m_videoram; - int bank=(state->m_port70&8)?1:0; + UINT8 *videoram = m_videoram; + int bank=(m_port70&8)?1:0; videoram[offset+bank*0x4000]=data; } -static WRITE8_HANDLER(port70_w) +WRITE8_MEMBER(quizo_state::port70_w) { - quizo_state *state = space->machine().driver_data<quizo_state>(); - state->m_port70=data; + m_port70=data; } -static WRITE8_HANDLER(port60_w) +WRITE8_MEMBER(quizo_state::port60_w) { - quizo_state *state = space->machine().driver_data<quizo_state>(); if(data>9) { - logerror("ROMBANK %x @ %x\n", data, cpu_get_pc(&space->device())); + logerror("ROMBANK %x @ %x\n", data, cpu_get_pc(&space.device())); data=0; } - state->m_port60=data; - memory_set_bankptr(space->machine(), "bank1", &space->machine().region("user1")->base()[rombankLookup[data]*0x4000] ); + m_port60=data; + memory_set_bankptr(machine(), "bank1", &machine().region("user1")->base()[rombankLookup[data]*0x4000] ); } static ADDRESS_MAP_START( memmap, AS_PROGRAM, 8, quizo_state ) AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x4000, 0x47ff) AM_RAM AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xffff) AM_WRITE_LEGACY(vram_w) + AM_RANGE(0xc000, 0xffff) AM_WRITE(vram_w) ADDRESS_MAP_END @@ -145,8 +145,8 @@ static ADDRESS_MAP_START( portmap, AS_IO, 8, quizo_state ) AM_RANGE(0x10, 0x10) AM_READ_PORT("IN1") AM_RANGE(0x40, 0x40) AM_READ_PORT("IN2") AM_RANGE(0x50, 0x51) AM_DEVWRITE_LEGACY("aysnd", ay8910_address_data_w) - AM_RANGE(0x60, 0x60) AM_WRITE_LEGACY(port60_w) - AM_RANGE(0x70, 0x70) AM_WRITE_LEGACY(port70_w) + AM_RANGE(0x60, 0x60) AM_WRITE(port60_w) + AM_RANGE(0x70, 0x70) AM_WRITE(port70_w) ADDRESS_MAP_END static INPUT_PORTS_START( quizo ) diff --git a/src/mame/drivers/quizpun2.c b/src/mame/drivers/quizpun2.c index 3b741624e39..cac70b0d873 100644 --- a/src/mame/drivers/quizpun2.c +++ b/src/mame/drivers/quizpun2.c @@ -99,6 +99,13 @@ public: UINT8 *m_fg_ram; tilemap_t *m_bg_tmap; tilemap_t *m_fg_tmap; + DECLARE_WRITE8_MEMBER(bg_ram_w); + DECLARE_WRITE8_MEMBER(fg_ram_w); + DECLARE_READ8_MEMBER(quizpun2_protection_r); + DECLARE_WRITE8_MEMBER(quizpun2_protection_w); + DECLARE_WRITE8_MEMBER(quizpun2_rombank_w); + DECLARE_WRITE8_MEMBER(quizpun2_irq_ack); + DECLARE_WRITE8_MEMBER(quizpun2_soundlatch_w); }; @@ -123,18 +130,16 @@ static TILE_GET_INFO( get_fg_tile_info ) SET_TILE_INFO(1, code, color & 0x0f, 0); } -static WRITE8_HANDLER( bg_ram_w ) +WRITE8_MEMBER(quizpun2_state::bg_ram_w) { - quizpun2_state *state = space->machine().driver_data<quizpun2_state>(); - state->m_bg_ram[offset] = data; - state->m_bg_tmap->mark_tile_dirty(offset/2); + m_bg_ram[offset] = data; + m_bg_tmap->mark_tile_dirty(offset/2); } -static WRITE8_HANDLER( fg_ram_w ) +WRITE8_MEMBER(quizpun2_state::fg_ram_w) { - quizpun2_state *state = space->machine().driver_data<quizpun2_state>(); - state->m_fg_ram[offset] = data; - state->m_fg_tmap->mark_tile_dirty(offset/4); + m_fg_ram[offset] = data; + m_fg_tmap->mark_tile_dirty(offset/4); } static VIDEO_START(quizpun2) @@ -206,10 +211,9 @@ static void log_protection( address_space *space, const char *warning ) ); } -static READ8_HANDLER( quizpun2_protection_r ) +READ8_MEMBER(quizpun2_state::quizpun2_protection_r) { - quizpun2_state *state = space->machine().driver_data<quizpun2_state>(); - struct prot_t &prot = state->m_prot; + struct prot_t &prot = m_prot; UINT8 ret; switch ( prot.state ) @@ -236,25 +240,25 @@ static READ8_HANDLER( quizpun2_protection_r ) break; default: - log_protection(space, "unknown address"); + log_protection(&space, "unknown address"); ret = 0x2e59 >> ((prot.addr & 1) ? 0 : 8); // return the address of: XOR A, RET } break; case STATE_EEPROM_R: // EEPROM read { - UINT8 *eeprom = space->machine().region("eeprom")->base(); + UINT8 *eeprom = machine().region("eeprom")->base(); ret = eeprom[prot.addr]; break; } default: - log_protection(space, "unknown read"); + log_protection(&space, "unknown read"); ret = 0x00; } #if VERBOSE_PROTECTION_LOG - log_protection(space, "info READ"); + log_protection(&space, "info READ"); #endif prot.addr++; @@ -262,16 +266,15 @@ static READ8_HANDLER( quizpun2_protection_r ) return ret; } -static WRITE8_HANDLER( quizpun2_protection_w ) +WRITE8_MEMBER(quizpun2_state::quizpun2_protection_w) { - quizpun2_state *state = space->machine().driver_data<quizpun2_state>(); - struct prot_t &prot = state->m_prot; + struct prot_t &prot = m_prot; switch ( prot.state ) { case STATE_EEPROM_W: { - UINT8 *eeprom = space->machine().region("eeprom")->base(); + UINT8 *eeprom = machine().region("eeprom")->base(); eeprom[prot.addr] = data; prot.addr++; if ((prot.addr % 8) == 0) @@ -300,7 +303,7 @@ static WRITE8_HANDLER( quizpun2_protection_w ) prot.addr = 0; } else - log_protection(space, "unknown command"); + log_protection(&space, "unknown command"); } else if (prot.cmd >= 0x00 && prot.cmd <= 0x0f ) { @@ -315,7 +318,7 @@ static WRITE8_HANDLER( quizpun2_protection_w ) else { prot.state = STATE_IDLE; - log_protection(space, "unknown command"); + log_protection(&space, "unknown command"); } } else @@ -327,7 +330,7 @@ static WRITE8_HANDLER( quizpun2_protection_w ) } #if VERBOSE_PROTECTION_LOG - log_protection(space, "info WRITE"); + log_protection(&space, "info WRITE"); #endif } @@ -336,29 +339,29 @@ static WRITE8_HANDLER( quizpun2_protection_w ) Memory Maps - Main CPU ***************************************************************************/ -static WRITE8_HANDLER( quizpun2_rombank_w ) +WRITE8_MEMBER(quizpun2_state::quizpun2_rombank_w) { - UINT8 *ROM = space->machine().region("maincpu")->base(); - memory_set_bankptr(space->machine(), "bank1", &ROM[ 0x10000 + 0x2000 * (data & 0x1f) ] ); + UINT8 *ROM = machine().region("maincpu")->base(); + memory_set_bankptr(machine(), "bank1", &ROM[ 0x10000 + 0x2000 * (data & 0x1f) ] ); } -static WRITE8_HANDLER( quizpun2_irq_ack ) +WRITE8_MEMBER(quizpun2_state::quizpun2_irq_ack) { - cputag_set_input_line(space->machine(), "maincpu", INPUT_LINE_IRQ0, CLEAR_LINE); + cputag_set_input_line(machine(), "maincpu", INPUT_LINE_IRQ0, CLEAR_LINE); } -static WRITE8_HANDLER( quizpun2_soundlatch_w ) +WRITE8_MEMBER(quizpun2_state::quizpun2_soundlatch_w) { soundlatch_w(space, 0, data); - cputag_set_input_line(space->machine(), "audiocpu", INPUT_LINE_NMI, PULSE_LINE); + cputag_set_input_line(machine(), "audiocpu", INPUT_LINE_NMI, PULSE_LINE); } static ADDRESS_MAP_START( quizpun2_map, AS_PROGRAM, 8, quizpun2_state ) AM_RANGE( 0x0000, 0x7fff ) AM_ROM AM_RANGE( 0x8000, 0x9fff ) AM_ROMBANK("bank1") - AM_RANGE( 0xa000, 0xbfff ) AM_RAM_WRITE_LEGACY(fg_ram_w ) AM_BASE(m_fg_ram ) // 4 * 800 - AM_RANGE( 0xc000, 0xc7ff ) AM_RAM_WRITE_LEGACY(bg_ram_w ) AM_BASE(m_bg_ram ) // 4 * 400 + AM_RANGE( 0xa000, 0xbfff ) AM_RAM_WRITE(fg_ram_w ) AM_BASE(m_fg_ram ) // 4 * 800 + AM_RANGE( 0xc000, 0xc7ff ) AM_RAM_WRITE(bg_ram_w ) AM_BASE(m_bg_ram ) // 4 * 400 AM_RANGE( 0xc800, 0xcfff ) AM_RAM // AM_RANGE( 0xd000, 0xd3ff ) AM_RAM_WRITE_LEGACY(paletteram_xRRRRRGGGGGBBBBB_le_w ) AM_BASE_GENERIC( paletteram ) @@ -367,13 +370,13 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( quizpun2_io_map, AS_IO, 8, quizpun2_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x40, 0x40 ) AM_WRITE_LEGACY(quizpun2_irq_ack ) - AM_RANGE( 0x50, 0x50 ) AM_WRITE_LEGACY(quizpun2_soundlatch_w ) - AM_RANGE( 0x60, 0x60 ) AM_WRITE_LEGACY(quizpun2_rombank_w ) + AM_RANGE( 0x40, 0x40 ) AM_WRITE(quizpun2_irq_ack ) + AM_RANGE( 0x50, 0x50 ) AM_WRITE(quizpun2_soundlatch_w ) + AM_RANGE( 0x60, 0x60 ) AM_WRITE(quizpun2_rombank_w ) AM_RANGE( 0x80, 0x80 ) AM_READ_PORT( "DSW" ) AM_RANGE( 0x90, 0x90 ) AM_READ_PORT( "IN0" ) AM_RANGE( 0xa0, 0xa0 ) AM_READ_PORT( "IN1" ) - AM_RANGE( 0xe0, 0xe0 ) AM_READWRITE_LEGACY(quizpun2_protection_r, quizpun2_protection_w ) + AM_RANGE( 0xe0, 0xe0 ) AM_READWRITE(quizpun2_protection_r, quizpun2_protection_w ) ADDRESS_MAP_END diff --git a/src/mame/drivers/quizshow.c b/src/mame/drivers/quizshow.c index c392c175810..86d1f057f94 100644 --- a/src/mame/drivers/quizshow.c +++ b/src/mame/drivers/quizshow.c @@ -45,6 +45,15 @@ public: int m_blink_state; int m_category_enable; int m_tape_head_pos; + DECLARE_WRITE8_MEMBER(quizshow_lamps1_w); + DECLARE_WRITE8_MEMBER(quizshow_lamps2_w); + DECLARE_WRITE8_MEMBER(quizshow_lamps3_w); + DECLARE_WRITE8_MEMBER(quizshow_tape_control_w); + DECLARE_WRITE8_MEMBER(quizshow_audio_w); + DECLARE_WRITE8_MEMBER(quizshow_video_disable_w); + DECLARE_READ8_MEMBER(quizshow_timing_r); + DECLARE_READ8_MEMBER(quizshow_tape_signal_r); + DECLARE_WRITE8_MEMBER(quizshow_main_ram_w); }; @@ -104,7 +113,7 @@ SCREEN_UPDATE_IND16( quizshow ) ***************************************************************************/ -static WRITE8_HANDLER(quizshow_lamps1_w) +WRITE8_MEMBER(quizshow_state::quizshow_lamps1_w) { // d0-d3: P1 answer button lamps for (int i = 0; i < 4; i++) @@ -113,7 +122,7 @@ static WRITE8_HANDLER(quizshow_lamps1_w) // d4-d7: N/C } -static WRITE8_HANDLER(quizshow_lamps2_w) +WRITE8_MEMBER(quizshow_state::quizshow_lamps2_w) { // d0-d3: P2 answer button lamps for (int i = 0; i < 4; i++) @@ -122,7 +131,7 @@ static WRITE8_HANDLER(quizshow_lamps2_w) // d4-d7: N/C } -static WRITE8_HANDLER(quizshow_lamps3_w) +WRITE8_MEMBER(quizshow_state::quizshow_lamps3_w) { // d0-d1: start button lamps output_set_lamp_value(8, data >> 0 & 1); @@ -132,13 +141,12 @@ static WRITE8_HANDLER(quizshow_lamps3_w) // d4-d7: N/C } -static WRITE8_HANDLER(quizshow_tape_control_w) +WRITE8_MEMBER(quizshow_state::quizshow_tape_control_w) { - quizshow_state *state = space->machine().driver_data<quizshow_state>(); // d2: enable user category select (changes tape head position) output_set_lamp_value(10, data >> 2 & 1); - state->m_category_enable = (data & 0xc) == 0xc; + m_category_enable = (data & 0xc) == 0xc; // d3: tape motor // TODO @@ -147,7 +155,7 @@ static WRITE8_HANDLER(quizshow_tape_control_w) // d4-d7: N/C } -static WRITE8_HANDLER(quizshow_audio_w) +WRITE8_MEMBER(quizshow_state::quizshow_audio_w) { // d1: audio beep on/off // TODO @@ -155,69 +163,67 @@ static WRITE8_HANDLER(quizshow_audio_w) // d0, d2-d7: N/C } -static WRITE8_HANDLER(quizshow_video_disable_w) +WRITE8_MEMBER(quizshow_state::quizshow_video_disable_w) { // d0: video disable (looked glitchy when I implemented it, maybe there's more to it) // d1-d7: N/C } -static READ8_HANDLER(quizshow_timing_r) +READ8_MEMBER(quizshow_state::quizshow_timing_r) { - quizshow_state *state = space->machine().driver_data<quizshow_state>(); UINT8 ret = 0x80; // d0-d3: 1R-8R (16-line counter) - ret |= state->m_clocks >> 1 & 0xf; + ret |= m_clocks >> 1 & 0xf; // d4: 8VAC?, use 8V instead - ret |= state->m_clocks << 4 & 0x10; + ret |= m_clocks << 4 & 0x10; // d5-d6: 4F-8F - ret |= state->m_clocks >> 2 & 0x60; + ret |= m_clocks >> 2 & 0x60; // d7: display busy/idle, during in-between tilerows(?) and blanking - if (space->machine().primary_screen->vpos() >= VBSTART || (space->machine().primary_screen->vpos() + 4) & 8) + if (machine().primary_screen->vpos() >= VBSTART || (machine().primary_screen->vpos() + 4) & 8) ret &= 0x7f; return ret; } -static READ8_HANDLER(quizshow_tape_signal_r) +READ8_MEMBER(quizshow_state::quizshow_tape_signal_r) { // TODO (for now, hold INS to fastforward and it'll show garbage questions where D is always(?) the right answer) - return space->machine().rand() & 0x80; + return machine().rand() & 0x80; } -static WRITE8_HANDLER(quizshow_main_ram_w) +WRITE8_MEMBER(quizshow_state::quizshow_main_ram_w) { - quizshow_state *state = space->machine().driver_data<quizshow_state>(); - state->m_main_ram[offset]=data; - state->m_tilemap->mark_tile_dirty(offset); + m_main_ram[offset]=data; + m_tilemap->mark_tile_dirty(offset); } static ADDRESS_MAP_START( quizshow_mem_map, AS_PROGRAM, 8, quizshow_state ) ADDRESS_MAP_GLOBAL_MASK(0x7fff) AM_RANGE(0x0000, 0x0bff) AM_ROM - AM_RANGE(0x1802, 0x1802) AM_WRITE_LEGACY(quizshow_audio_w) - AM_RANGE(0x1804, 0x1804) AM_WRITE_LEGACY(quizshow_lamps1_w) - AM_RANGE(0x1808, 0x1808) AM_WRITE_LEGACY(quizshow_lamps2_w) - AM_RANGE(0x1810, 0x1810) AM_WRITE_LEGACY(quizshow_lamps3_w) - AM_RANGE(0x1820, 0x1820) AM_WRITE_LEGACY(quizshow_tape_control_w) - AM_RANGE(0x1840, 0x1840) AM_WRITE_LEGACY(quizshow_video_disable_w) + AM_RANGE(0x1802, 0x1802) AM_WRITE(quizshow_audio_w) + AM_RANGE(0x1804, 0x1804) AM_WRITE(quizshow_lamps1_w) + AM_RANGE(0x1808, 0x1808) AM_WRITE(quizshow_lamps2_w) + AM_RANGE(0x1810, 0x1810) AM_WRITE(quizshow_lamps3_w) + AM_RANGE(0x1820, 0x1820) AM_WRITE(quizshow_tape_control_w) + AM_RANGE(0x1840, 0x1840) AM_WRITE(quizshow_video_disable_w) AM_RANGE(0x1881, 0x1881) AM_READ_PORT("IN0") AM_RANGE(0x1882, 0x1882) AM_READ_PORT("IN1") AM_RANGE(0x1884, 0x1884) AM_READ_PORT("IN2") AM_RANGE(0x1888, 0x1888) AM_READ_PORT("IN3") - AM_RANGE(0x1900, 0x1900) AM_READ_LEGACY(quizshow_timing_r) - AM_RANGE(0x1e00, 0x1fff) AM_RAM_WRITE_LEGACY(quizshow_main_ram_w) AM_BASE(m_main_ram) + AM_RANGE(0x1900, 0x1900) AM_READ(quizshow_timing_r) + AM_RANGE(0x1e00, 0x1fff) AM_RAM_WRITE(quizshow_main_ram_w) AM_BASE(m_main_ram) ADDRESS_MAP_END static ADDRESS_MAP_START( quizshow_io_map, AS_IO, 8, quizshow_state ) ADDRESS_MAP_UNMAP_HIGH // AM_RANGE(S2650_CTRL_PORT, S2650_CTRL_PORT) AM_NOP // unused // AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_NOP // unused - AM_RANGE(S2650_SENSE_PORT, S2650_SENSE_PORT) AM_READ_LEGACY(quizshow_tape_signal_r) + AM_RANGE(S2650_SENSE_PORT, S2650_SENSE_PORT) AM_READ(quizshow_tape_signal_r) AM_RANGE(S2650_FO_PORT, S2650_FO_PORT) AM_RAM AM_BASE(m_fo_state) ADDRESS_MAP_END diff --git a/src/mame/drivers/r2dx_v33.c b/src/mame/drivers/r2dx_v33.c index e7223e23e25..641062525e7 100644 --- a/src/mame/drivers/r2dx_v33.c +++ b/src/mame/drivers/r2dx_v33.c @@ -32,6 +32,17 @@ public: : driver_device(mconfig, type, tag) { } UINT16 *m_spriteram; + DECLARE_WRITE16_MEMBER(rdx_bg_vram_w); + DECLARE_WRITE16_MEMBER(rdx_md_vram_w); + DECLARE_WRITE16_MEMBER(rdx_fg_vram_w); + DECLARE_WRITE16_MEMBER(rdx_tx_vram_w); + DECLARE_READ16_MEMBER(rdx_v33_unknown_r); + DECLARE_WRITE16_MEMBER(mcu_xval_w); + DECLARE_WRITE16_MEMBER(mcu_yval_w); + DECLARE_WRITE16_MEMBER(mcu_table_w); + DECLARE_WRITE16_MEMBER(mcu_table2_w); + DECLARE_READ16_MEMBER(nzerotea_sound_comms_r); + DECLARE_WRITE16_MEMBER(nzerotea_sound_comms_w); }; @@ -285,46 +296,46 @@ WRITE16_HANDLER( mcu_prog_offs_w ) mcu_prog_offs = data; } -static WRITE16_HANDLER( rdx_bg_vram_w ) +WRITE16_MEMBER(r2dx_v33_state::rdx_bg_vram_w) { COMBINE_DATA(&bg_vram[offset]); bg_tilemap->mark_tile_dirty(offset); } -static WRITE16_HANDLER( rdx_md_vram_w ) +WRITE16_MEMBER(r2dx_v33_state::rdx_md_vram_w) { COMBINE_DATA(&md_vram[offset]); md_tilemap->mark_tile_dirty(offset); } -static WRITE16_HANDLER( rdx_fg_vram_w ) +WRITE16_MEMBER(r2dx_v33_state::rdx_fg_vram_w) { COMBINE_DATA(&fg_vram[offset]); fg_tilemap->mark_tile_dirty(offset); } -static WRITE16_HANDLER( rdx_tx_vram_w ) +WRITE16_MEMBER(r2dx_v33_state::rdx_tx_vram_w) { COMBINE_DATA(&tx_vram[offset]); tx_tilemap->mark_tile_dirty(offset); } -static READ16_HANDLER( rdx_v33_unknown_r ) +READ16_MEMBER(r2dx_v33_state::rdx_v33_unknown_r) { - return space->machine().rand(); + return machine().rand(); } static UINT16 mcu_xval,mcu_yval; /* something sent to the MCU for X/Y global screen calculating ... */ -static WRITE16_HANDLER( mcu_xval_w ) +WRITE16_MEMBER(r2dx_v33_state::mcu_xval_w) { mcu_xval = data; //popmessage("%04x %04x",mcu_xval,mcu_yval); } -static WRITE16_HANDLER( mcu_yval_w ) +WRITE16_MEMBER(r2dx_v33_state::mcu_yval_w) { mcu_yval = data; //popmessage("%04x %04x",mcu_xval,mcu_yval); @@ -333,14 +344,14 @@ static WRITE16_HANDLER( mcu_yval_w ) static UINT16 mcu_data[9]; /* 0x400-0x407 seems some DMA hook-up, 0x420-0x427 looks like some x/y sprite calculation routine */ -static WRITE16_HANDLER( mcu_table_w ) +WRITE16_MEMBER(r2dx_v33_state::mcu_table_w) { mcu_data[offset] = data; //popmessage("%04x %04x %04x %04x | %04x %04x %04x %04x",mcu_data[0/2],mcu_data[2/2],mcu_data[4/2],mcu_data[6/2],mcu_data[8/2],mcu_data[0xa/2],mcu_data[0xc/2],mcu_data[0xe/2]); } -static WRITE16_HANDLER( mcu_table2_w ) +WRITE16_MEMBER(r2dx_v33_state::mcu_table2_w) { mcu_data[offset+4] = data; @@ -351,14 +362,14 @@ static WRITE16_HANDLER( mcu_table2_w ) static ADDRESS_MAP_START( rdx_v33_map, AS_PROGRAM, 16, r2dx_v33_state ) AM_RANGE(0x00000, 0x003ff) AM_RAM // vectors copied here - AM_RANGE(0x00400, 0x00407) AM_WRITE_LEGACY(mcu_table_w) - AM_RANGE(0x00420, 0x00429) AM_WRITE_LEGACY(mcu_table2_w) + AM_RANGE(0x00400, 0x00407) AM_WRITE(mcu_table_w) + AM_RANGE(0x00420, 0x00429) AM_WRITE(mcu_table2_w) /* results from cop? */ - AM_RANGE(0x00430, 0x00431) AM_READ_LEGACY(rdx_v33_unknown_r) - AM_RANGE(0x00432, 0x00433) AM_READ_LEGACY(rdx_v33_unknown_r) - AM_RANGE(0x00434, 0x00435) AM_READ_LEGACY(rdx_v33_unknown_r) - AM_RANGE(0x00436, 0x00437) AM_READ_LEGACY(rdx_v33_unknown_r) + AM_RANGE(0x00430, 0x00431) AM_READ(rdx_v33_unknown_r) + AM_RANGE(0x00432, 0x00433) AM_READ(rdx_v33_unknown_r) + AM_RANGE(0x00434, 0x00435) AM_READ(rdx_v33_unknown_r) + AM_RANGE(0x00436, 0x00437) AM_READ(rdx_v33_unknown_r) AM_RANGE(0x00600, 0x0064f) AM_RAM AM_BASE_LEGACY(&seibu_crtc_regs) AM_RANGE(0x00650, 0x0068f) AM_RAM //??? @@ -370,8 +381,8 @@ static ADDRESS_MAP_START( rdx_v33_map, AS_PROGRAM, 16, r2dx_v33_state ) // AM_RANGE(0x006b6, 0x006b7) AM_WRITENOP AM_RANGE(0x006bc, 0x006bd) AM_WRITE_LEGACY(mcu_prog_offs_w) AM_RANGE(0x006be, 0x006bf) AM_WRITENOP // MCU program related - AM_RANGE(0x006d8, 0x006d9) AM_WRITE_LEGACY(mcu_xval_w) - AM_RANGE(0x006da, 0x006db) AM_WRITE_LEGACY(mcu_yval_w) + AM_RANGE(0x006d8, 0x006d9) AM_WRITE(mcu_xval_w) + AM_RANGE(0x006da, 0x006db) AM_WRITE(mcu_yval_w) // AM_RANGE(0x006dc, 0x006dd) AM_READ_LEGACY(rdx_v33_unknown2_r) // AM_RANGE(0x006de, 0x006df) AM_WRITE_LEGACY(mcu_unkaa_w) // mcu command related? @@ -388,10 +399,10 @@ static ADDRESS_MAP_START( rdx_v33_map, AS_PROGRAM, 16, r2dx_v33_state ) AM_RANGE(0x0c000, 0x0c7ff) AM_RAM AM_BASE(m_spriteram) AM_RANGE(0x0c800, 0x0cfff) AM_RAM - AM_RANGE(0x0d000, 0x0d7ff) AM_RAM_WRITE_LEGACY(rdx_bg_vram_w) AM_BASE_LEGACY(&bg_vram) - AM_RANGE(0x0d800, 0x0dfff) AM_RAM_WRITE_LEGACY(rdx_md_vram_w) AM_BASE_LEGACY(&md_vram) - AM_RANGE(0x0e000, 0x0e7ff) AM_RAM_WRITE_LEGACY(rdx_fg_vram_w) AM_BASE_LEGACY(&fg_vram) - AM_RANGE(0x0e800, 0x0f7ff) AM_RAM_WRITE_LEGACY(rdx_tx_vram_w) AM_BASE_LEGACY(&tx_vram) + AM_RANGE(0x0d000, 0x0d7ff) AM_RAM_WRITE(rdx_bg_vram_w) AM_BASE_LEGACY(&bg_vram) + AM_RANGE(0x0d800, 0x0dfff) AM_RAM_WRITE(rdx_md_vram_w) AM_BASE_LEGACY(&md_vram) + AM_RANGE(0x0e000, 0x0e7ff) AM_RAM_WRITE(rdx_fg_vram_w) AM_BASE_LEGACY(&fg_vram) + AM_RANGE(0x0e800, 0x0f7ff) AM_RAM_WRITE(rdx_tx_vram_w) AM_BASE_LEGACY(&tx_vram) AM_RANGE(0x0f800, 0x0ffff) AM_RAM /* Stack area */ AM_RANGE(0x10000, 0x1efff) AM_RAM AM_RANGE(0x1f000, 0x1ffff) AM_RAM_WRITE_LEGACY(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram) @@ -400,28 +411,28 @@ static ADDRESS_MAP_START( rdx_v33_map, AS_PROGRAM, 16, r2dx_v33_state ) AM_RANGE(0x40000, 0xfffff) AM_ROM AM_REGION("mainprg", 0x40000 ) ADDRESS_MAP_END -static READ16_HANDLER( nzerotea_sound_comms_r ) +READ16_MEMBER(r2dx_v33_state::nzerotea_sound_comms_r) { switch(offset+0x780) { - case (0x788/2): return seibu_main_word_r(space,2,0xffff); - case (0x78c/2): return seibu_main_word_r(space,3,0xffff); - case (0x794/2): return seibu_main_word_r(space,5,0xffff); + case (0x788/2): return seibu_main_word_r(&space,2,0xffff); + case (0x78c/2): return seibu_main_word_r(&space,3,0xffff); + case (0x794/2): return seibu_main_word_r(&space,5,0xffff); } return 0xffff; } -static WRITE16_HANDLER( nzerotea_sound_comms_w ) +WRITE16_MEMBER(r2dx_v33_state::nzerotea_sound_comms_w) { switch(offset+0x780) { - case (0x780/2): { seibu_main_word_w(space,0,data,0x00ff); break; } - case (0x784/2): { seibu_main_word_w(space,1,data,0x00ff); break; } - //case (0x790/2): { seibu_main_word_w(space,4,data,0x00ff); break; } - case (0x794/2): { seibu_main_word_w(space,4,data,0x00ff); break; } - case (0x798/2): { seibu_main_word_w(space,6,data,0x00ff); break; } + case (0x780/2): { seibu_main_word_w(&space,0,data,0x00ff); break; } + case (0x784/2): { seibu_main_word_w(&space,1,data,0x00ff); break; } + //case (0x790/2): { seibu_main_word_w(&space,4,data,0x00ff); break; } + case (0x794/2): { seibu_main_word_w(&space,4,data,0x00ff); break; } + case (0x798/2): { seibu_main_word_w(&space,6,data,0x00ff); break; } } } @@ -429,13 +440,13 @@ static ADDRESS_MAP_START( nzerotea_map, AS_PROGRAM, 16, r2dx_v33_state ) AM_RANGE(0x00000, 0x003ff) AM_RAM //stack area /* results from cop? */ - AM_RANGE(0x00430, 0x00431) AM_READ_LEGACY(rdx_v33_unknown_r) - AM_RANGE(0x00432, 0x00433) AM_READ_LEGACY(rdx_v33_unknown_r) - AM_RANGE(0x00434, 0x00435) AM_READ_LEGACY(rdx_v33_unknown_r) - AM_RANGE(0x00436, 0x00437) AM_READ_LEGACY(rdx_v33_unknown_r) + AM_RANGE(0x00430, 0x00431) AM_READ(rdx_v33_unknown_r) + AM_RANGE(0x00432, 0x00433) AM_READ(rdx_v33_unknown_r) + AM_RANGE(0x00434, 0x00435) AM_READ(rdx_v33_unknown_r) + AM_RANGE(0x00436, 0x00437) AM_READ(rdx_v33_unknown_r) - AM_RANGE(0x00400, 0x00407) AM_WRITE_LEGACY(mcu_table_w) - AM_RANGE(0x00420, 0x00427) AM_WRITE_LEGACY(mcu_table2_w) + AM_RANGE(0x00400, 0x00407) AM_WRITE(mcu_table_w) + AM_RANGE(0x00420, 0x00427) AM_WRITE(mcu_table2_w) AM_RANGE(0x00600, 0x0064f) AM_RAM AM_BASE_LEGACY(&seibu_crtc_regs) @@ -454,17 +465,17 @@ static ADDRESS_MAP_START( nzerotea_map, AS_PROGRAM, 16, r2dx_v33_state ) AM_RANGE(0x0074c, 0x0074d) AM_READ_PORT("SYSTEM") // AM_RANGE(0x00762, 0x00763) AM_READ_LEGACY(nzerotea_unknown_r) - AM_RANGE(0x00780, 0x0079f) AM_READWRITE_LEGACY(nzerotea_sound_comms_r,nzerotea_sound_comms_w) + AM_RANGE(0x00780, 0x0079f) AM_READWRITE(nzerotea_sound_comms_r,nzerotea_sound_comms_w) AM_RANGE(0x00800, 0x00fff) AM_RAM AM_RANGE(0x01000, 0x0bfff) AM_RAM AM_RANGE(0x0c000, 0x0c7ff) AM_RAM AM_BASE(m_spriteram) AM_RANGE(0x0c800, 0x0cfff) AM_RAM - AM_RANGE(0x0d000, 0x0d7ff) AM_RAM_WRITE_LEGACY(rdx_bg_vram_w) AM_BASE_LEGACY(&bg_vram) - AM_RANGE(0x0d800, 0x0dfff) AM_RAM_WRITE_LEGACY(rdx_md_vram_w) AM_BASE_LEGACY(&md_vram) - AM_RANGE(0x0e000, 0x0e7ff) AM_RAM_WRITE_LEGACY(rdx_fg_vram_w) AM_BASE_LEGACY(&fg_vram) - AM_RANGE(0x0e800, 0x0f7ff) AM_RAM_WRITE_LEGACY(rdx_tx_vram_w) AM_BASE_LEGACY(&tx_vram) + AM_RANGE(0x0d000, 0x0d7ff) AM_RAM_WRITE(rdx_bg_vram_w) AM_BASE_LEGACY(&bg_vram) + AM_RANGE(0x0d800, 0x0dfff) AM_RAM_WRITE(rdx_md_vram_w) AM_BASE_LEGACY(&md_vram) + AM_RANGE(0x0e000, 0x0e7ff) AM_RAM_WRITE(rdx_fg_vram_w) AM_BASE_LEGACY(&fg_vram) + AM_RANGE(0x0e800, 0x0f7ff) AM_RAM_WRITE(rdx_tx_vram_w) AM_BASE_LEGACY(&tx_vram) AM_RANGE(0x0f800, 0x0ffff) AM_RAM /* Stack area */ AM_RANGE(0x10000, 0x1efff) AM_RAM AM_RANGE(0x1f000, 0x1ffff) AM_RAM_WRITE_LEGACY(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram) diff --git a/src/mame/drivers/rabbit.c b/src/mame/drivers/rabbit.c index 23bfc82e17b..a961ee5b345 100644 --- a/src/mame/drivers/rabbit.c +++ b/src/mame/drivers/rabbit.c @@ -111,6 +111,19 @@ public: UINT32 *m_tilemap_ram[4]; UINT32 *m_spriteram; tilemap_t *m_tilemap[4]; + DECLARE_WRITE32_MEMBER(rabbit_tilemap0_w); + DECLARE_WRITE32_MEMBER(rabbit_tilemap1_w); + DECLARE_WRITE32_MEMBER(rabbit_tilemap2_w); + DECLARE_WRITE32_MEMBER(rabbit_tilemap3_w); + DECLARE_WRITE32_MEMBER(rabbit_paletteram_dword_w); + DECLARE_READ32_MEMBER(rabbit_tilemap0_r); + DECLARE_READ32_MEMBER(rabbit_tilemap1_r); + DECLARE_READ32_MEMBER(rabbit_tilemap2_r); + DECLARE_READ32_MEMBER(rabbit_tilemap3_r); + DECLARE_READ32_MEMBER(randomrabbits); + DECLARE_WRITE32_MEMBER(rabbit_rombank_w); + DECLARE_WRITE32_MEMBER(rabbit_audio_w); + DECLARE_WRITE32_MEMBER(rabbit_blitter_w); }; @@ -182,33 +195,29 @@ static TILE_GET_INFO( get_rabbit_tilemap3_tile_info ) get_rabbit_tilemap_info(machine,tileinfo,tile_index,3,0); } -static WRITE32_HANDLER( rabbit_tilemap0_w ) +WRITE32_MEMBER(rabbit_state::rabbit_tilemap0_w) { - rabbit_state *state = space->machine().driver_data<rabbit_state>(); - COMBINE_DATA(&state->m_tilemap_ram[0][offset]); - state->m_tilemap[0]->mark_tile_dirty(offset); + COMBINE_DATA(&m_tilemap_ram[0][offset]); + m_tilemap[0]->mark_tile_dirty(offset); } -static WRITE32_HANDLER( rabbit_tilemap1_w ) +WRITE32_MEMBER(rabbit_state::rabbit_tilemap1_w) { - rabbit_state *state = space->machine().driver_data<rabbit_state>(); - COMBINE_DATA(&state->m_tilemap_ram[1][offset]); - state->m_tilemap[1]->mark_tile_dirty(offset); + COMBINE_DATA(&m_tilemap_ram[1][offset]); + m_tilemap[1]->mark_tile_dirty(offset); } -static WRITE32_HANDLER( rabbit_tilemap2_w ) +WRITE32_MEMBER(rabbit_state::rabbit_tilemap2_w) { - rabbit_state *state = space->machine().driver_data<rabbit_state>(); - COMBINE_DATA(&state->m_tilemap_ram[2][offset]); - state->m_tilemap[2]->mark_tile_dirty(offset); + COMBINE_DATA(&m_tilemap_ram[2][offset]); + m_tilemap[2]->mark_tile_dirty(offset); } -static WRITE32_HANDLER( rabbit_tilemap3_w ) +WRITE32_MEMBER(rabbit_state::rabbit_tilemap3_w) { - rabbit_state *state = space->machine().driver_data<rabbit_state>(); - COMBINE_DATA(&state->m_tilemap_ram[3][offset]); - state->m_tilemap[3]->mark_tile_dirty(offset); + COMBINE_DATA(&m_tilemap_ram[3][offset]); + m_tilemap[3]->mark_tile_dirty(offset); } /* @@ -465,59 +474,55 @@ static SCREEN_UPDATE_IND16(rabbit) } -static WRITE32_HANDLER( rabbit_paletteram_dword_w ) +WRITE32_MEMBER(rabbit_state::rabbit_paletteram_dword_w) { int r,g,b; - COMBINE_DATA(&space->machine().generic.paletteram.u32[offset]); + COMBINE_DATA(&machine().generic.paletteram.u32[offset]); - b = ((space->machine().generic.paletteram.u32[offset] & 0x000000ff) >>0); - r = ((space->machine().generic.paletteram.u32[offset] & 0x0000ff00) >>8); - g = ((space->machine().generic.paletteram.u32[offset] & 0x00ff0000) >>16); + b = ((machine().generic.paletteram.u32[offset] & 0x000000ff) >>0); + r = ((machine().generic.paletteram.u32[offset] & 0x0000ff00) >>8); + g = ((machine().generic.paletteram.u32[offset] & 0x00ff0000) >>16); - palette_set_color(space->machine(),offset,MAKE_RGB(r,g,b)); + palette_set_color(machine(),offset,MAKE_RGB(r,g,b)); } -static READ32_HANDLER( rabbit_tilemap0_r ) +READ32_MEMBER(rabbit_state::rabbit_tilemap0_r) { - rabbit_state *state = space->machine().driver_data<rabbit_state>(); - return state->m_tilemap_ram[0][offset]; + return m_tilemap_ram[0][offset]; } -static READ32_HANDLER( rabbit_tilemap1_r ) +READ32_MEMBER(rabbit_state::rabbit_tilemap1_r) { - rabbit_state *state = space->machine().driver_data<rabbit_state>(); - return state->m_tilemap_ram[1][offset]; + return m_tilemap_ram[1][offset]; } -static READ32_HANDLER( rabbit_tilemap2_r ) +READ32_MEMBER(rabbit_state::rabbit_tilemap2_r) { - rabbit_state *state = space->machine().driver_data<rabbit_state>(); - return state->m_tilemap_ram[2][offset]; + return m_tilemap_ram[2][offset]; } -static READ32_HANDLER( rabbit_tilemap3_r ) +READ32_MEMBER(rabbit_state::rabbit_tilemap3_r) { - rabbit_state *state = space->machine().driver_data<rabbit_state>(); - return state->m_tilemap_ram[3][offset]; + return m_tilemap_ram[3][offset]; } -static READ32_HANDLER( randomrabbits ) +READ32_MEMBER(rabbit_state::randomrabbits) { - return space->machine().rand(); + return machine().rand(); } /* rom bank is used when testing roms, not currently hooked up */ -static WRITE32_HANDLER ( rabbit_rombank_w ) +WRITE32_MEMBER(rabbit_state::rabbit_rombank_w) { - UINT8 *dataroms = space->machine().region("gfx1")->base(); + UINT8 *dataroms = machine().region("gfx1")->base(); #if 0 int bank; printf("rabbit rombank %08x\n",data); bank = data & 0x3ff; - memory_set_bankptr(space->machine(), "bank1",&dataroms[0x40000*(bank&0x3ff)]); + memory_set_bankptr(machine(), "bank1",&dataroms[0x40000*(bank&0x3ff)]); #else - memory_set_bankptr(space->machine(), "bank1",&dataroms[0]); + memory_set_bankptr(machine(), "bank1",&dataroms[0]); #endif } @@ -540,7 +545,7 @@ static WRITE32_HANDLER ( rabbit_rombank_w ) time (timer? the game seems to "play music" fine with just the VBL). */ -static WRITE32_HANDLER( rabbit_audio_w ) +WRITE32_MEMBER(rabbit_state::rabbit_audio_w) { int reg, voice, base, i; @@ -703,14 +708,13 @@ static void rabbit_do_blit(running_machine &machine) -static WRITE32_HANDLER( rabbit_blitter_w ) +WRITE32_MEMBER(rabbit_state::rabbit_blitter_w) { - rabbit_state *state = space->machine().driver_data<rabbit_state>(); - COMBINE_DATA(&state->m_blitterregs[offset]); + COMBINE_DATA(&m_blitterregs[offset]); if (offset == 0x0c/4) { - rabbit_do_blit(space->machine()); + rabbit_do_blit(machine()); } } @@ -739,9 +743,9 @@ static ADDRESS_MAP_START( rabbit_map, AS_PROGRAM, 32, rabbit_state ) AM_RANGE(0x000024, 0x000027) AM_WRITENOP // bug in code / emulation? AM_RANGE(0x00719c, 0x00719f) AM_WRITENOP // bug in code / emulation? AM_RANGE(0x200000, 0x200003) AM_READ_PORT("INPUTS") AM_DEVWRITE_LEGACY("eeprom", rabbit_eeprom_write) - AM_RANGE(0x400010, 0x400013) AM_READ_LEGACY(randomrabbits) // gfx chip status? - AM_RANGE(0x400980, 0x400983) AM_READ_LEGACY(randomrabbits) // sound chip status? - AM_RANGE(0x400984, 0x400987) AM_READ_LEGACY(randomrabbits) // sound chip status? + AM_RANGE(0x400010, 0x400013) AM_READ(randomrabbits) // gfx chip status? + AM_RANGE(0x400980, 0x400983) AM_READ(randomrabbits) // sound chip status? + AM_RANGE(0x400984, 0x400987) AM_READ(randomrabbits) // sound chip status? /* this lot are probably gfxchip/blitter etc. related */ AM_RANGE(0x400010, 0x400013) AM_WRITEONLY AM_BASE(m_viewregs0 ) AM_RANGE(0x400100, 0x400117) AM_WRITEONLY AM_BASE(m_tilemap_regs[0] ) // tilemap regs1 @@ -749,23 +753,23 @@ static ADDRESS_MAP_START( rabbit_map, AS_PROGRAM, 32, rabbit_state ) AM_RANGE(0x400140, 0x400157) AM_WRITEONLY AM_BASE(m_tilemap_regs[2] ) // tilemap regs3 AM_RANGE(0x400160, 0x400177) AM_WRITEONLY AM_BASE(m_tilemap_regs[3] ) // tilemap regs4 AM_RANGE(0x400200, 0x40021b) AM_WRITEONLY AM_BASE(m_spriteregs ) // sprregs? - AM_RANGE(0x400300, 0x400303) AM_WRITE_LEGACY(rabbit_rombank_w) // used during rom testing, rombank/area select + something else? + AM_RANGE(0x400300, 0x400303) AM_WRITE(rabbit_rombank_w) // used during rom testing, rombank/area select + something else? AM_RANGE(0x400400, 0x400413) AM_WRITEONLY AM_BASE(m_viewregs6 ) // some global controls? (brightness etc.?) AM_RANGE(0x400500, 0x400503) AM_WRITEONLY AM_BASE(m_viewregs7 ) - AM_RANGE(0x400700, 0x40070f) AM_WRITE_LEGACY(rabbit_blitter_w) AM_BASE(m_blitterregs ) + AM_RANGE(0x400700, 0x40070f) AM_WRITE(rabbit_blitter_w) AM_BASE(m_blitterregs ) AM_RANGE(0x400800, 0x40080f) AM_WRITEONLY AM_BASE(m_viewregs9 ) // never changes? - AM_RANGE(0x400900, 0x40098f) AM_WRITE_LEGACY(rabbit_audio_w) + AM_RANGE(0x400900, 0x40098f) AM_WRITE(rabbit_audio_w) /* hmm */ AM_RANGE(0x479700, 0x479713) AM_WRITEONLY AM_BASE(m_viewregs10 ) AM_RANGE(0x440000, 0x47ffff) AM_ROMBANK("bank1") // data (gfx / sound) rom readback for ROM testing /* tilemaps */ - AM_RANGE(0x480000, 0x483fff) AM_READWRITE_LEGACY(rabbit_tilemap0_r,rabbit_tilemap0_w) - AM_RANGE(0x484000, 0x487fff) AM_READWRITE_LEGACY(rabbit_tilemap1_r,rabbit_tilemap1_w) - AM_RANGE(0x488000, 0x48bfff) AM_READWRITE_LEGACY(rabbit_tilemap2_r,rabbit_tilemap2_w) - AM_RANGE(0x48c000, 0x48ffff) AM_READWRITE_LEGACY(rabbit_tilemap3_r,rabbit_tilemap3_w) + AM_RANGE(0x480000, 0x483fff) AM_READWRITE(rabbit_tilemap0_r,rabbit_tilemap0_w) + AM_RANGE(0x484000, 0x487fff) AM_READWRITE(rabbit_tilemap1_r,rabbit_tilemap1_w) + AM_RANGE(0x488000, 0x48bfff) AM_READWRITE(rabbit_tilemap2_r,rabbit_tilemap2_w) + AM_RANGE(0x48c000, 0x48ffff) AM_READWRITE(rabbit_tilemap3_r,rabbit_tilemap3_w) AM_RANGE(0x494000, 0x497fff) AM_RAM AM_BASE(m_spriteram) // sprites? - AM_RANGE(0x4a0000, 0x4affff) AM_RAM_WRITE_LEGACY(rabbit_paletteram_dword_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x4a0000, 0x4affff) AM_RAM_WRITE(rabbit_paletteram_dword_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0xff0000, 0xffffff) AM_RAM ADDRESS_MAP_END diff --git a/src/mame/drivers/rbmk.c b/src/mame/drivers/rbmk.c index 3ff55766f26..8c438ac872e 100644 --- a/src/mame/drivers/rbmk.c +++ b/src/mame/drivers/rbmk.c @@ -67,29 +67,33 @@ public: UINT16 *m_gms_vidram2; UINT16 m_tilebank; UINT8 m_mux_data; + DECLARE_READ16_MEMBER(gms_read); + DECLARE_WRITE16_MEMBER(gms_write1); + DECLARE_WRITE16_MEMBER(gms_write2); + DECLARE_WRITE16_MEMBER(gms_write3); + DECLARE_READ8_MEMBER(rbmk_mcu_io_r); + DECLARE_WRITE8_MEMBER(rbmk_mcu_io_w); + DECLARE_WRITE8_MEMBER(mcu_io_mux_w); }; -static READ16_HANDLER( gms_read ) +READ16_MEMBER(rbmk_state::gms_read) { - return space->machine().rand(); + return machine().rand(); } -static WRITE16_HANDLER( gms_write1 ) +WRITE16_MEMBER(rbmk_state::gms_write1) { - } -static WRITE16_HANDLER( gms_write2 ) +WRITE16_MEMBER(rbmk_state::gms_write2) { - rbmk_state *state = space->machine().driver_data<rbmk_state>(); - state->m_tilebank=data; + m_tilebank=data; } -static WRITE16_HANDLER( gms_write3 ) +WRITE16_MEMBER(rbmk_state::gms_write3) { - } static WRITE16_DEVICE_HANDLER( eeprom_w ) @@ -115,12 +119,12 @@ static ADDRESS_MAP_START( rbmk_mem, AS_PROGRAM, 16, rbmk_state ) AM_RANGE(0x900000, 0x900fff) AM_RAM_WRITE_LEGACY(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x9c0000, 0x9c0fff) AM_RAM AM_BASE(m_gms_vidram) AM_RANGE(0xb00000, 0xb00001) AM_DEVWRITE_LEGACY("eeprom", eeprom_w) - AM_RANGE(0xC00000, 0xC00001) AM_READ_PORT("IN0") AM_WRITE_LEGACY(gms_write1) - AM_RANGE(0xC08000, 0xC08001) AM_READ_PORT("IN1") AM_WRITE_LEGACY(gms_write2) + AM_RANGE(0xC00000, 0xC00001) AM_READ_PORT("IN0") AM_WRITE(gms_write1) + AM_RANGE(0xC08000, 0xC08001) AM_READ_PORT("IN1") AM_WRITE(gms_write2) AM_RANGE(0xC10000, 0xC10001) AM_READ_PORT("IN3") - AM_RANGE(0xC18080, 0xC18081) AM_READ_LEGACY(gms_read) + AM_RANGE(0xC18080, 0xC18081) AM_READ(gms_read) AM_RANGE(0xC20000, 0xC20001) AM_READ_PORT("IN2") - AM_RANGE(0xC28000, 0xC28001) AM_WRITE_LEGACY(gms_write3) + AM_RANGE(0xC28000, 0xC28001) AM_WRITE(gms_write3) ADDRESS_MAP_END @@ -128,48 +132,45 @@ static ADDRESS_MAP_START( rbmk_mcu_mem, AS_PROGRAM, 8, rbmk_state ) // AM_RANGE(0x0000, 0x0fff) AM_ROM ADDRESS_MAP_END -static READ8_HANDLER( rbmk_mcu_io_r ) +READ8_MEMBER(rbmk_state::rbmk_mcu_io_r) { - rbmk_state *state = space->machine().driver_data<rbmk_state>(); - if(state->m_mux_data & 8) + if(m_mux_data & 8) { - return ym2151_r(space->machine().device("ymsnd"), offset & 1); + return ym2151_r(machine().device("ymsnd"), offset & 1); } - else if(state->m_mux_data & 4) + else if(m_mux_data & 4) { //printf("%02x R\n",offset); // ... return 0xff; } else - printf("Warning: mux data R = %02x",state->m_mux_data); + printf("Warning: mux data R = %02x",m_mux_data); return 0xff; } -static WRITE8_HANDLER( rbmk_mcu_io_w ) +WRITE8_MEMBER(rbmk_state::rbmk_mcu_io_w) { - rbmk_state *state = space->machine().driver_data<rbmk_state>(); - if(state->m_mux_data & 8) { ym2151_w(space->machine().device("ymsnd"), offset & 1, data); } - else if(state->m_mux_data & 4) + if(m_mux_data & 8) { ym2151_w(machine().device("ymsnd"), offset & 1, data); } + else if(m_mux_data & 4) { //printf("%02x %02x W\n",offset,data); // ... } else - printf("Warning: mux data W = %02x",state->m_mux_data); + printf("Warning: mux data W = %02x",m_mux_data); } -static WRITE8_HANDLER( mcu_io_mux_w ) +WRITE8_MEMBER(rbmk_state::mcu_io_mux_w) { - rbmk_state *state = space->machine().driver_data<rbmk_state>(); - state->m_mux_data = ~data; + m_mux_data = ~data; } static ADDRESS_MAP_START( rbmk_mcu_io, AS_IO, 8, rbmk_state ) - AM_RANGE(0x0ff00, 0x0ffff) AM_READWRITE_LEGACY(rbmk_mcu_io_r, rbmk_mcu_io_w ) + AM_RANGE(0x0ff00, 0x0ffff) AM_READWRITE(rbmk_mcu_io_r, rbmk_mcu_io_w ) - AM_RANGE(MCS51_PORT_P3, MCS51_PORT_P3) AM_WRITE_LEGACY(mcu_io_mux_w ) + AM_RANGE(MCS51_PORT_P3, MCS51_PORT_P3) AM_WRITE(mcu_io_mux_w ) ADDRESS_MAP_END static INPUT_PORTS_START( rbmk ) diff --git a/src/mame/drivers/re900.c b/src/mame/drivers/re900.c index be11f126fb6..a0a27168348 100644 --- a/src/mame/drivers/re900.c +++ b/src/mame/drivers/re900.c @@ -95,6 +95,9 @@ public: UINT8 m_ledant; UINT8 m_player; UINT8 m_stat_a; + DECLARE_READ8_MEMBER(rom_r); + DECLARE_WRITE8_MEMBER(cpu_port_0_w); + DECLARE_WRITE8_MEMBER(re900_watchdog_reset_w); }; @@ -168,10 +171,9 @@ static READ8_DEVICE_HANDLER (re_psg_portB_r) return retval; } -static READ8_HANDLER (rom_r) +READ8_MEMBER(re900_state::rom_r) { - re900_state *state = space->machine().driver_data<re900_state>(); - return state->m_rom[offset]; + return m_rom[offset]; } @@ -205,13 +207,13 @@ static WRITE8_DEVICE_HANDLER (re_mux_port_B_w) } } -static WRITE8_HANDLER (cpu_port_0_w) +WRITE8_MEMBER(re900_state::cpu_port_0_w) { // output_set_lamp_value(7,1 ^ ( (data >> 4) & 1)); /* Cont. Sal */ // output_set_lamp_value(8,1 ^ ( (data >> 5) & 1)); /* Cont. Ent */ } -static WRITE8_HANDLER(re900_watchdog_reset_w) +WRITE8_MEMBER(re900_state::re900_watchdog_reset_w) { //watchdog_reset_w(space,0,0); /* To do! */ } @@ -226,14 +228,14 @@ static ADDRESS_MAP_START( mem_prg, AS_PROGRAM, 8, re900_state ) ADDRESS_MAP_END static ADDRESS_MAP_START( mem_io, AS_IO, 8, re900_state ) - AM_RANGE(0x0000, 0xbfff) AM_READ_LEGACY(rom_r) + AM_RANGE(0x0000, 0xbfff) AM_READ(rom_r) AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("nvram") AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("tms9128", tms9928a_device, vram_write) AM_RANGE(0xe001, 0xe001) AM_DEVWRITE("tms9128", tms9928a_device, register_write) AM_RANGE(0xe800, 0xe801) AM_DEVWRITE_LEGACY("ay_re900", ay8910_address_data_w) AM_RANGE(0xe802, 0xe802) AM_DEVREAD_LEGACY("ay_re900", ay8910_r) - AM_RANGE(0xe000, 0xefff) AM_WRITE_LEGACY(re900_watchdog_reset_w) - AM_RANGE(MCS51_PORT_P0, MCS51_PORT_P0) AM_WRITE_LEGACY(cpu_port_0_w) + AM_RANGE(0xe000, 0xefff) AM_WRITE(re900_watchdog_reset_w) + AM_RANGE(MCS51_PORT_P0, MCS51_PORT_P0) AM_WRITE(cpu_port_0_w) AM_RANGE(MCS51_PORT_P2, MCS51_PORT_P2) AM_NOP AM_RANGE(MCS51_PORT_P3, MCS51_PORT_P3) AM_NOP ADDRESS_MAP_END diff --git a/src/mame/drivers/roul.c b/src/mame/drivers/roul.c index 078f28345c7..ae13973c305 100644 --- a/src/mame/drivers/roul.c +++ b/src/mame/drivers/roul.c @@ -76,6 +76,10 @@ public: UINT8 m_reg[0x10]; UINT8 *m_videobuf; UINT8 m_lamp_old; + DECLARE_READ8_MEMBER(blitter_status_r); + DECLARE_WRITE8_MEMBER(blitter_cmd_w); + DECLARE_WRITE8_MEMBER(sound_latch_w); + DECLARE_WRITE8_MEMBER(ball_w); }; @@ -107,7 +111,7 @@ static PALETTE_INIT( roul ) } } -static READ8_HANDLER( blitter_status_r ) +READ8_MEMBER(roul_state::blitter_status_r) { /* code check bit 6 and bit 7 @@ -115,66 +119,64 @@ bit 7 -> blitter ready bit 6 -> ??? (after unknown blitter command : [80][80][08][02]) */ // return 0x80; // blitter ready -// logerror("Read unknown port $f5 at %04x\n",cpu_get_pc(&space->device())); - return space->machine().rand() & 0x00c0; +// logerror("Read unknown port $f5 at %04x\n",cpu_get_pc(&space.device())); + return machine().rand() & 0x00c0; } -static WRITE8_HANDLER( blitter_cmd_w ) +WRITE8_MEMBER(roul_state::blitter_cmd_w) { - roul_state *state = space->machine().driver_data<roul_state>(); - state->m_reg[offset] = data; + m_reg[offset] = data; if (offset==2) { int i,j; - int width = state->m_reg[2]; - int y = state->m_reg[0]; - int x = state->m_reg[1]; - int color = state->m_reg[3] & 0x0f; + int width = m_reg[2]; + int y = m_reg[0]; + int x = m_reg[1]; + int color = m_reg[3] & 0x0f; int xdirection = 1, ydirection = 1; - if (state->m_reg[3] & 0x10) ydirection = -1; - if (state->m_reg[3] & 0x20) xdirection = -1; + if (m_reg[3] & 0x10) ydirection = -1; + if (m_reg[3] & 0x20) xdirection = -1; if (width == 0x00) width = 0x100; - switch(state->m_reg[3] & 0xc0) + switch(m_reg[3] & 0xc0) { - case 0x00: // state->m_reg[4] used? + case 0x00: // m_reg[4] used? for (i = - width / 2; i < width / 2; i++) for (j = - width / 2; j < width / 2; j++) - state->m_videobuf[(y + j) * 256 + x + i] = color; - logerror("Blitter command 0 : [%02x][%02x][%02x][%02x][%02x]\n",state->m_reg[0],state->m_reg[1],state->m_reg[2],state->m_reg[3],state->m_reg[4]); + m_videobuf[(y + j) * 256 + x + i] = color; + logerror("Blitter command 0 : [%02x][%02x][%02x][%02x][%02x]\n",m_reg[0],m_reg[1],m_reg[2],m_reg[3],m_reg[4]); break; - case 0x40: // vertical line - state->m_reg[4] not used + case 0x40: // vertical line - m_reg[4] not used for (i = 0; i < width; i++ ) - state->m_videobuf[(y + i * ydirection) * 256 + x] = color; + m_videobuf[(y + i * ydirection) * 256 + x] = color; break; - case 0x80: // horizontal line - state->m_reg[4] not used + case 0x80: // horizontal line - m_reg[4] not used for (i = 0; i < width; i++ ) - state->m_videobuf[y * 256 + x + i * xdirection] = color; + m_videobuf[y * 256 + x + i * xdirection] = color; break; - case 0xc0: // diagonal line - state->m_reg[4] not used + case 0xc0: // diagonal line - m_reg[4] not used for (i = 0; i < width; i++ ) - state->m_videobuf[(y + i * ydirection) * 256 + x + i * xdirection] = color; + m_videobuf[(y + i * ydirection) * 256 + x + i * xdirection] = color; } } } -static WRITE8_HANDLER( sound_latch_w ) +WRITE8_MEMBER(roul_state::sound_latch_w) { soundlatch_w(space, 0, data & 0xff); - cputag_set_input_line(space->machine(), "soundcpu", 0, HOLD_LINE); + cputag_set_input_line(machine(), "soundcpu", 0, HOLD_LINE); } -static WRITE8_HANDLER( ball_w ) +WRITE8_MEMBER(roul_state::ball_w) { - roul_state *state = space->machine().driver_data<roul_state>(); int lamp = data; output_set_lamp_value(data, 1); - output_set_lamp_value(state->m_lamp_old, 0); - state->m_lamp_old = lamp; + output_set_lamp_value(m_lamp_old, 0); + m_lamp_old = lamp; } static ADDRESS_MAP_START( roul_map, AS_PROGRAM, 8, roul_state ) @@ -184,13 +186,13 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( roul_cpu_io_map, AS_IO, 8, roul_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0xf0, 0xf4) AM_WRITE_LEGACY(blitter_cmd_w) - AM_RANGE(0xf5, 0xf5) AM_READ_LEGACY(blitter_status_r) + AM_RANGE(0xf0, 0xf4) AM_WRITE(blitter_cmd_w) + AM_RANGE(0xf5, 0xf5) AM_READ(blitter_status_r) AM_RANGE(0xf8, 0xf8) AM_READ_PORT("DSW") - AM_RANGE(0xf9, 0xf9) AM_WRITE_LEGACY(ball_w) + AM_RANGE(0xf9, 0xf9) AM_WRITE(ball_w) AM_RANGE(0xfa, 0xfa) AM_READ_PORT("IN0") AM_RANGE(0xfd, 0xfd) AM_READ_PORT("IN1") - AM_RANGE(0xfe, 0xfe) AM_WRITE_LEGACY(sound_latch_w) + AM_RANGE(0xfe, 0xfe) AM_WRITE(sound_latch_w) ADDRESS_MAP_END static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, roul_state ) diff --git a/src/mame/drivers/royalmah.c b/src/mame/drivers/royalmah.c index 5aefd0f2ac2..1ac3ee802e3 100644 --- a/src/mame/drivers/royalmah.c +++ b/src/mame/drivers/royalmah.c @@ -123,6 +123,71 @@ public: UINT8 m_mjifb_rom_enable; required_device<cpu_device> m_maincpu; + DECLARE_WRITE8_MEMBER(royalmah_palbank_w); + DECLARE_WRITE8_MEMBER(mjderngr_coin_w); + DECLARE_WRITE8_MEMBER(mjderngr_palbank_w); + DECLARE_WRITE8_MEMBER(royalmah_rom_w); + DECLARE_WRITE8_MEMBER(input_port_select_w); + DECLARE_READ8_MEMBER(majs101b_dsw_r); + DECLARE_READ8_MEMBER(suzume_dsw_r); + DECLARE_WRITE8_MEMBER(suzume_bank_w); + DECLARE_WRITE8_MEMBER(mjapinky_bank_w); + DECLARE_WRITE8_MEMBER(mjapinky_palbank_w); + DECLARE_READ8_MEMBER(mjapinky_dsw_r); + DECLARE_WRITE8_MEMBER(tontonb_bank_w); + DECLARE_WRITE8_MEMBER(dynax_bank_w); + DECLARE_READ8_MEMBER(daisyari_dsw_r); + DECLARE_WRITE8_MEMBER(daisyari_bank_w); + DECLARE_READ8_MEMBER(mjclub_dsw_r); + DECLARE_WRITE8_MEMBER(mjclub_bank_w); + DECLARE_WRITE8_MEMBER(jansou_dsw_sel_w); + DECLARE_READ8_MEMBER(jansou_dsw_r); + DECLARE_WRITE8_MEMBER(jansou_colortable_w); + DECLARE_WRITE8_MEMBER(jansou_6400_w); + DECLARE_WRITE8_MEMBER(jansou_6401_w); + DECLARE_WRITE8_MEMBER(jansou_6402_w); + DECLARE_READ8_MEMBER(jansou_6403_r); + DECLARE_READ8_MEMBER(jansou_6404_r); + DECLARE_READ8_MEMBER(jansou_6405_r); + DECLARE_WRITE8_MEMBER(jansou_sound_w); + DECLARE_WRITE8_MEMBER(janptr96_dswsel_w); + DECLARE_READ8_MEMBER(janptr96_dswsel_r); + DECLARE_READ8_MEMBER(janptr96_dsw_r); + DECLARE_WRITE8_MEMBER(janptr96_rombank_w); + DECLARE_WRITE8_MEMBER(janptr96_rambank_w); + DECLARE_READ8_MEMBER(janptr96_unknown_r); + DECLARE_WRITE8_MEMBER(janptr96_coin_counter_w); + DECLARE_WRITE8_MEMBER(mjifb_coin_counter_w); + DECLARE_READ8_MEMBER(mjifb_rom_io_r); + DECLARE_WRITE8_MEMBER(mjifb_rom_io_w); + DECLARE_WRITE8_MEMBER(mjifb_videoram_w); + DECLARE_READ8_MEMBER(mjifb_p3_r); + DECLARE_READ8_MEMBER(mjifb_p5_r); + DECLARE_READ8_MEMBER(mjifb_p6_r); + DECLARE_READ8_MEMBER(mjifb_p7_r); + DECLARE_READ8_MEMBER(mjifb_p8_r); + DECLARE_WRITE8_MEMBER(mjifb_p3_w); + DECLARE_WRITE8_MEMBER(mjifb_p4_w); + DECLARE_WRITE8_MEMBER(mjifb_p8_w); + DECLARE_READ8_MEMBER(mjdejavu_rom_io_r); + DECLARE_WRITE8_MEMBER(mjdejavu_rom_io_w); + DECLARE_READ8_MEMBER(mjtensin_p3_r); + DECLARE_WRITE8_MEMBER(mjtensin_p4_w); + DECLARE_WRITE8_MEMBER(mjtensin_6ff3_w); + DECLARE_WRITE8_MEMBER(cafetime_p4_w); + DECLARE_WRITE8_MEMBER(cafetime_p3_w); + DECLARE_WRITE8_MEMBER(cafetime_dsw_w); + DECLARE_READ8_MEMBER(cafetime_dsw_r); + DECLARE_READ8_MEMBER(cafetime_7fe4_r); + DECLARE_WRITE8_MEMBER(cafetime_7fe3_w); + DECLARE_WRITE8_MEMBER(mjvegasa_p4_w); + DECLARE_WRITE8_MEMBER(mjvegasa_p3_w); + DECLARE_WRITE8_MEMBER(mjvegasa_rombank_w); + DECLARE_READ8_MEMBER(mjvegasa_rom_io_r); + DECLARE_WRITE8_MEMBER(mjvegasa_rom_io_w); + DECLARE_WRITE8_MEMBER(mjvegasa_coin_counter_w); + DECLARE_WRITE8_MEMBER(mjvegasa_12400_w); + DECLARE_READ8_MEMBER(mjvegasa_12500_r); }; @@ -183,32 +248,30 @@ static PALETTE_INIT( mjderngr ) } -static WRITE8_HANDLER( royalmah_palbank_w ) +WRITE8_MEMBER(royalmah_state::royalmah_palbank_w) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); /* bit 1 = coin counter */ - coin_counter_w(space->machine(), 0,data & 2); + coin_counter_w(machine(), 0,data & 2); /* bit 2 always set? */ /* bit 3 = palette bank */ - state->m_palette_base = (data >> 3) & 0x01; + m_palette_base = (data >> 3) & 0x01; } -static WRITE8_HANDLER( mjderngr_coin_w ) +WRITE8_MEMBER(royalmah_state::mjderngr_coin_w) { /* bit 1 = coin counter */ - coin_counter_w(space->machine(), 0,data & 2); + coin_counter_w(machine(), 0,data & 2); /* bit 2 always set? */ } -static WRITE8_HANDLER( mjderngr_palbank_w ) +WRITE8_MEMBER(royalmah_state::mjderngr_palbank_w) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - state->m_palette_base = data; + m_palette_base = data; } @@ -248,17 +311,16 @@ static SCREEN_UPDATE_IND16( royalmah ) -static WRITE8_HANDLER( royalmah_rom_w ) +WRITE8_MEMBER(royalmah_state::royalmah_rom_w) { /* using this handler will avoid all the entries in the error log that are the result of the RLD and RRD instructions this games uses to print text on the screen */ } -static WRITE8_HANDLER( input_port_select_w ) +WRITE8_MEMBER(royalmah_state::input_port_select_w) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - state->m_input_port_select = data; + m_input_port_select = data; } static READ8_DEVICE_HANDLER( royalmah_player_1_port_r ) @@ -291,86 +353,80 @@ static READ8_DEVICE_HANDLER( royalmah_player_2_port_r ) -static READ8_HANDLER ( majs101b_dsw_r ) +READ8_MEMBER(royalmah_state::majs101b_dsw_r) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - switch (state->m_dsw_select) + switch (m_dsw_select) { - case 0x00: return input_port_read(space->machine(), "DSW3"); /* DSW3 */ - case 0x20: return input_port_read(space->machine(), "DSW4"); /* DSW4 */ - case 0x40: return input_port_read(space->machine(), "DSW2"); /* DSW2 */ + case 0x00: return input_port_read(machine(), "DSW3"); /* DSW3 */ + case 0x20: return input_port_read(machine(), "DSW4"); /* DSW4 */ + case 0x40: return input_port_read(machine(), "DSW2"); /* DSW2 */ } return 0; } -static READ8_HANDLER ( suzume_dsw_r ) +READ8_MEMBER(royalmah_state::suzume_dsw_r) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - if (state->m_suzume_bank & 0x40) + if (m_suzume_bank & 0x40) { - return state->m_suzume_bank; + return m_suzume_bank; } else { - switch (state->m_suzume_bank) + switch (m_suzume_bank) { - case 0x08: return input_port_read(space->machine(), "DSW4"); /* DSW4 */ - case 0x10: return input_port_read(space->machine(), "DSW3"); /* DSW3 */ - case 0x18: return input_port_read(space->machine(), "DSW2"); /* DSW2 */ + case 0x08: return input_port_read(machine(), "DSW4"); /* DSW4 */ + case 0x10: return input_port_read(machine(), "DSW3"); /* DSW3 */ + case 0x18: return input_port_read(machine(), "DSW2"); /* DSW2 */ } return 0; } } -static WRITE8_HANDLER ( suzume_bank_w ) +WRITE8_MEMBER(royalmah_state::suzume_bank_w) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - UINT8 *rom = space->machine().region("maincpu")->base(); + UINT8 *rom = machine().region("maincpu")->base(); int address; - state->m_suzume_bank = data; + m_suzume_bank = data; -logerror("%04x: bank %02x\n",cpu_get_pc(&space->device()),data); +logerror("%04x: bank %02x\n",cpu_get_pc(&space.device()),data); /* bits 6, 4 and 3 used for something input related? */ address = 0x10000 + (data & 0x07) * 0x8000; - memory_set_bankptr(space->machine(), "bank1",&rom[address]); + memory_set_bankptr(machine(), "bank1",&rom[address]); } -static WRITE8_HANDLER ( mjapinky_bank_w ) +WRITE8_MEMBER(royalmah_state::mjapinky_bank_w) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - UINT8 *ROM = space->machine().region("maincpu")->base(); - state->m_rombank = data; - memory_set_bankptr(space->machine(), "bank1",ROM + 0x10000 + 0x8000 * data); + UINT8 *ROM = machine().region("maincpu")->base(); + m_rombank = data; + memory_set_bankptr(machine(), "bank1",ROM + 0x10000 + 0x8000 * data); } -static WRITE8_HANDLER( mjapinky_palbank_w ) +WRITE8_MEMBER(royalmah_state::mjapinky_palbank_w) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - flip_screen_set(space->machine(), ~data & 4); - state->m_palette_base = (data >> 3) & 0x01; - coin_counter_w(space->machine(), 0,data & 2); // in - coin_counter_w(space->machine(), 1,data & 1); // out + flip_screen_set(machine(), ~data & 4); + m_palette_base = (data >> 3) & 0x01; + coin_counter_w(machine(), 0,data & 2); // in + coin_counter_w(machine(), 1,data & 1); // out } -static READ8_HANDLER( mjapinky_dsw_r ) +READ8_MEMBER(royalmah_state::mjapinky_dsw_r) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - if (state->m_rombank == 0x0e) return input_port_read(space->machine(), "DSW3"); - else return *(space->machine().region("maincpu")->base() + 0x10000 + 0x8000 * state->m_rombank); + if (m_rombank == 0x0e) return input_port_read(machine(), "DSW3"); + else return *(machine().region("maincpu")->base() + 0x10000 + 0x8000 * m_rombank); } -static WRITE8_HANDLER ( tontonb_bank_w ) +WRITE8_MEMBER(royalmah_state::tontonb_bank_w) { - UINT8 *rom = space->machine().region("maincpu")->base(); + UINT8 *rom = machine().region("maincpu")->base(); int address; -logerror("%04x: bank %02x\n",cpu_get_pc(&space->device()),data); +logerror("%04x: bank %02x\n",cpu_get_pc(&space.device()),data); if (data == 0) return; // tontonb fix? @@ -378,93 +434,88 @@ logerror("%04x: bank %02x\n",cpu_get_pc(&space->device()),data); address = 0x10000 + data * 0x8000; - memory_set_bankptr(space->machine(), "bank1",&rom[address]); + memory_set_bankptr(machine(), "bank1",&rom[address]); } /* bits 5 and 6 seem to affect which Dip Switch to read in 'majs101b' */ -static WRITE8_HANDLER ( dynax_bank_w ) +WRITE8_MEMBER(royalmah_state::dynax_bank_w) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - UINT8 *rom = space->machine().region("maincpu")->base(); + UINT8 *rom = machine().region("maincpu")->base(); int address; -//logerror("%04x: bank %02x\n",cpu_get_pc(&space->device()),data); +//logerror("%04x: bank %02x\n",cpu_get_pc(&space.device()),data); - state->m_dsw_select = data & 0x60; + m_dsw_select = data & 0x60; data &= 0x1f; address = 0x10000 + data * 0x8000; - memory_set_bankptr(space->machine(), "bank1",&rom[address]); + memory_set_bankptr(machine(), "bank1",&rom[address]); } -static READ8_HANDLER ( daisyari_dsw_r ) +READ8_MEMBER(royalmah_state::daisyari_dsw_r) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - switch (state->m_dsw_select) + switch (m_dsw_select) { - case 0x00: return input_port_read(space->machine(), "DSW4"); - case 0x04: return input_port_read(space->machine(), "DSW1"); - case 0x08: return input_port_read(space->machine(), "DSW2"); - case 0x0c: return input_port_read(space->machine(), "DSW3"); + case 0x00: return input_port_read(machine(), "DSW4"); + case 0x04: return input_port_read(machine(), "DSW1"); + case 0x08: return input_port_read(machine(), "DSW2"); + case 0x0c: return input_port_read(machine(), "DSW3"); } return 0; } -static WRITE8_HANDLER ( daisyari_bank_w ) +WRITE8_MEMBER(royalmah_state::daisyari_bank_w) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - UINT8 *rom = space->machine().region("maincpu")->base(); + UINT8 *rom = machine().region("maincpu")->base(); int address; - state->m_dsw_select = (data & 0xc); + m_dsw_select = (data & 0xc); address = 0x10000 + ((data & 0x30)>>4) * 0x10000 + (data & 0x1) * 0x8000; // printf("%08x %02x\n",address,data); - memory_set_bankptr(space->machine(), "bank1",&rom[address]); + memory_set_bankptr(machine(), "bank1",&rom[address]); /* bit 1 used too but unknown purpose. */ } -static READ8_HANDLER ( mjclub_dsw_r ) +READ8_MEMBER(royalmah_state::mjclub_dsw_r) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - switch (state->m_dsw_select) + switch (m_dsw_select) { -// case 0x00: return input_port_read(space->machine(), "DSW4"); - case 0x40: return input_port_read(space->machine(), "DSW2"); - case 0x80: return input_port_read(space->machine(), "DSW3"); - case 0xc0: return input_port_read(space->machine(), "DSW4"); +// case 0x00: return input_port_read(machine(), "DSW4"); + case 0x40: return input_port_read(machine(), "DSW2"); + case 0x80: return input_port_read(machine(), "DSW3"); + case 0xc0: return input_port_read(machine(), "DSW4"); } return 0; } -static WRITE8_HANDLER ( mjclub_bank_w ) +WRITE8_MEMBER(royalmah_state::mjclub_bank_w) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - UINT8 *rom = space->machine().region("maincpu")->base(); + UINT8 *rom = machine().region("maincpu")->base(); int address; - state->m_dsw_select = data & 0xc0; + m_dsw_select = data & 0xc0; data &= 0x0f; address = 0x10000 + data * 0x8000; // printf("%08x\n",address); - memory_set_bankptr(space->machine(), "bank1",&rom[address]); + memory_set_bankptr(machine(), "bank1",&rom[address]); /* bit 5 used too but unknown purpose. */ } static ADDRESS_MAP_START( royalmah_map, AS_PROGRAM, 8, royalmah_state ) - AM_RANGE( 0x0000, 0x6fff ) AM_ROM AM_WRITE_LEGACY(royalmah_rom_w ) + AM_RANGE( 0x0000, 0x6fff ) AM_ROM AM_WRITE(royalmah_rom_w ) AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram") AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "bank1" ) // banked ROMs not present in royalmah AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_BASE(m_videoram) @@ -472,10 +523,10 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( mjapinky_map, AS_PROGRAM, 8, royalmah_state ) - AM_RANGE( 0x0000, 0x6fff ) AM_ROM AM_WRITE_LEGACY(royalmah_rom_w ) + AM_RANGE( 0x0000, 0x6fff ) AM_ROM AM_WRITE(royalmah_rom_w ) AM_RANGE( 0x7000, 0x77ff ) AM_RAM AM_SHARE("nvram") AM_RANGE( 0x7800, 0x7fff ) AM_RAM - AM_RANGE( 0x8000, 0x8000 ) AM_READ_LEGACY(mjapinky_dsw_r ) + AM_RANGE( 0x8000, 0x8000 ) AM_READ(mjapinky_dsw_r ) AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "bank1" ) AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_BASE(m_videoram) ADDRESS_MAP_END @@ -487,16 +538,16 @@ static ADDRESS_MAP_START( royalmah_iomap, AS_IO, 8, royalmah_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE( 0x01, 0x01 ) AM_DEVREAD_LEGACY("aysnd", ay8910_r ) AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_address_w ) - AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE_LEGACY(royalmah_palbank_w ) - AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE_LEGACY(input_port_select_w ) + AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(royalmah_palbank_w ) + AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w ) ADDRESS_MAP_END static ADDRESS_MAP_START( ippatsu_iomap, AS_IO, 8, royalmah_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE( 0x01, 0x01 ) AM_DEVREAD_LEGACY("aysnd", ay8910_r ) AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_address_w ) - AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE_LEGACY(royalmah_palbank_w ) - AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE_LEGACY(input_port_select_w ) + AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(royalmah_palbank_w ) + AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w ) AM_RANGE( 0x12, 0x12 ) AM_READ_PORT("DSW2") AM_RANGE( 0x13, 0x13 ) AM_READ_PORT("DSW3") ADDRESS_MAP_END @@ -505,59 +556,59 @@ static ADDRESS_MAP_START( suzume_iomap, AS_IO, 8, royalmah_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE( 0x01, 0x01 ) AM_DEVREAD_LEGACY("aysnd", ay8910_r ) AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_address_w ) - AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE_LEGACY(royalmah_palbank_w ) - AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE_LEGACY(input_port_select_w ) - AM_RANGE( 0x80, 0x80 ) AM_READ_LEGACY(suzume_dsw_r ) - AM_RANGE( 0x81, 0x81 ) AM_WRITE_LEGACY(suzume_bank_w ) + AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(royalmah_palbank_w ) + AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w ) + AM_RANGE( 0x80, 0x80 ) AM_READ(suzume_dsw_r ) + AM_RANGE( 0x81, 0x81 ) AM_WRITE(suzume_bank_w ) ADDRESS_MAP_END static ADDRESS_MAP_START( dondenmj_iomap, AS_IO, 8, royalmah_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE( 0x01, 0x01 ) AM_DEVREAD_LEGACY("aysnd", ay8910_r ) AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_address_w) - AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE_LEGACY(royalmah_palbank_w ) - AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE_LEGACY(input_port_select_w ) + AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(royalmah_palbank_w ) + AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w ) AM_RANGE( 0x85, 0x85 ) AM_READ_PORT("DSW2") // DSW2 AM_RANGE( 0x86, 0x86 ) AM_READ_PORT("DSW3") // DSW3 - AM_RANGE( 0x87, 0x87 ) AM_WRITE_LEGACY(dynax_bank_w ) + AM_RANGE( 0x87, 0x87 ) AM_WRITE(dynax_bank_w ) ADDRESS_MAP_END static ADDRESS_MAP_START( makaijan_iomap, AS_IO, 8, royalmah_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE( 0x01, 0x01 ) AM_DEVREAD_LEGACY("aysnd", ay8910_r ) AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_address_w) - AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE_LEGACY(royalmah_palbank_w ) - AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE_LEGACY(input_port_select_w ) + AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(royalmah_palbank_w ) + AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w ) AM_RANGE( 0x84, 0x84 ) AM_READ_PORT("DSW2") // DSW2 AM_RANGE( 0x85, 0x85 ) AM_READ_PORT("DSW3") // DSW3 - AM_RANGE( 0x86, 0x86 ) AM_WRITE_LEGACY(dynax_bank_w ) + AM_RANGE( 0x86, 0x86 ) AM_WRITE(dynax_bank_w ) ADDRESS_MAP_END static ADDRESS_MAP_START( daisyari_iomap, AS_IO, 8, royalmah_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE( 0x01, 0x01 ) AM_DEVREAD_LEGACY("aysnd", ay8910_r ) AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_address_w) - AM_RANGE( 0x10, 0x10 ) AM_WRITE_LEGACY(royalmah_palbank_w ) - AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE_LEGACY(input_port_select_w ) - AM_RANGE( 0xc0, 0xc0 ) AM_READWRITE_LEGACY(daisyari_dsw_r, daisyari_bank_w ) + AM_RANGE( 0x10, 0x10 ) AM_WRITE(royalmah_palbank_w ) + AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w ) + AM_RANGE( 0xc0, 0xc0 ) AM_READWRITE(daisyari_dsw_r, daisyari_bank_w ) ADDRESS_MAP_END static ADDRESS_MAP_START( mjclub_iomap, AS_IO, 8, royalmah_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x00, 0x00 ) AM_READWRITE_LEGACY(mjclub_dsw_r, mjclub_bank_w ) + AM_RANGE( 0x00, 0x00 ) AM_READWRITE(mjclub_dsw_r, mjclub_bank_w ) AM_RANGE( 0x01, 0x01 ) AM_DEVREAD_LEGACY("aysnd", ay8910_r ) AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_address_w) - AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE_LEGACY(royalmah_palbank_w ) - AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE_LEGACY(input_port_select_w ) + AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(royalmah_palbank_w ) + AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w ) ADDRESS_MAP_END static ADDRESS_MAP_START( mjdiplob_iomap, AS_IO, 8, royalmah_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE( 0x01, 0x01 ) AM_DEVREAD_LEGACY("aysnd", ay8910_r ) AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_address_w ) - AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE_LEGACY(royalmah_palbank_w ) - AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE_LEGACY(input_port_select_w ) - AM_RANGE( 0x61, 0x61 ) AM_WRITE_LEGACY(tontonb_bank_w) + AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(royalmah_palbank_w ) + AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w ) + AM_RANGE( 0x61, 0x61 ) AM_WRITE(tontonb_bank_w) AM_RANGE( 0x62, 0x62 ) AM_READ_PORT("DSW2") // DSW2 AM_RANGE( 0x63, 0x63 ) AM_READ_PORT("DSW3") // DSW3 ADDRESS_MAP_END @@ -566,9 +617,9 @@ static ADDRESS_MAP_START( tontonb_iomap, AS_IO, 8, royalmah_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE( 0x01, 0x01 ) AM_DEVREAD_LEGACY("aysnd", ay8910_r ) AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_address_w ) - AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE_LEGACY(royalmah_palbank_w ) - AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE_LEGACY(input_port_select_w ) - AM_RANGE( 0x44, 0x44 ) AM_WRITE_LEGACY(tontonb_bank_w ) + AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(royalmah_palbank_w ) + AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w ) + AM_RANGE( 0x44, 0x44 ) AM_WRITE(tontonb_bank_w ) AM_RANGE( 0x46, 0x46 ) AM_READ_PORT("DSW2") // DSW2 AM_RANGE( 0x47, 0x47 ) AM_READ_PORT("DSW3") // DSW3 ADDRESS_MAP_END @@ -577,9 +628,9 @@ static ADDRESS_MAP_START( majs101b_iomap, AS_IO, 8, royalmah_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE( 0x01, 0x01 ) AM_DEVREAD_LEGACY("aysnd", ay8910_r ) AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_address_w ) - AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE_LEGACY(royalmah_palbank_w ) - AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE_LEGACY(input_port_select_w ) - AM_RANGE( 0x00, 0x00 ) AM_READWRITE_LEGACY(majs101b_dsw_r, dynax_bank_w ) + AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(royalmah_palbank_w ) + AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w ) + AM_RANGE( 0x00, 0x00 ) AM_READWRITE(majs101b_dsw_r, dynax_bank_w ) ADDRESS_MAP_END static ADDRESS_MAP_START( mjderngr_iomap, AS_IO, 8, royalmah_state ) @@ -587,27 +638,27 @@ static ADDRESS_MAP_START( mjderngr_iomap, AS_IO, 8, royalmah_state ) AM_RANGE( 0x01, 0x01 ) AM_DEVREAD_LEGACY("aysnd", ay8910_r ) AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_address_w ) // AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") - AM_RANGE( 0x10, 0x10 ) AM_WRITE_LEGACY(mjderngr_coin_w ) // palette bank is set separately - AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE_LEGACY(input_port_select_w ) - AM_RANGE( 0x20, 0x20 ) AM_WRITE_LEGACY(dynax_bank_w ) + AM_RANGE( 0x10, 0x10 ) AM_WRITE(mjderngr_coin_w ) // palette bank is set separately + AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w ) + AM_RANGE( 0x20, 0x20 ) AM_WRITE(dynax_bank_w ) AM_RANGE( 0x40, 0x40 ) AM_READ_PORT("DSW3") AM_RANGE( 0x4c, 0x4c ) AM_READ_PORT("DSW2") - AM_RANGE( 0x60, 0x60 ) AM_WRITE_LEGACY(mjderngr_palbank_w ) + AM_RANGE( 0x60, 0x60 ) AM_WRITE(mjderngr_palbank_w ) ADDRESS_MAP_END static ADDRESS_MAP_START( mjapinky_iomap, AS_IO, 8, royalmah_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x00, 0x00 ) AM_WRITE_LEGACY(mjapinky_bank_w ) + AM_RANGE( 0x00, 0x00 ) AM_WRITE(mjapinky_bank_w ) AM_RANGE( 0x01, 0x01 ) AM_DEVREAD_LEGACY("aysnd", ay8910_r ) AM_RANGE( 0x02, 0x03 ) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_address_w ) AM_RANGE( 0x04, 0x04 ) AM_READ_PORT("DSW2") - AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE_LEGACY(mjapinky_palbank_w ) - AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE_LEGACY(input_port_select_w ) + AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") AM_WRITE(mjapinky_palbank_w ) + AM_RANGE( 0x11, 0x11 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w ) ADDRESS_MAP_END static ADDRESS_MAP_START( janoh_map, AS_PROGRAM, 8, royalmah_state ) - AM_RANGE( 0x0000, 0x6fff ) AM_ROM AM_WRITE_LEGACY(royalmah_rom_w ) + AM_RANGE( 0x0000, 0x6fff ) AM_ROM AM_WRITE(royalmah_rom_w ) AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram") AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_BASE(m_videoram) ADDRESS_MAP_END @@ -634,89 +685,80 @@ ADDRESS_MAP_END -static WRITE8_HANDLER( jansou_dsw_sel_w ) +WRITE8_MEMBER(royalmah_state::jansou_dsw_sel_w) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - state->m_dsw_select = data; + m_dsw_select = data; } -static READ8_HANDLER( jansou_dsw_r ) +READ8_MEMBER(royalmah_state::jansou_dsw_r) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - switch (state->m_dsw_select & 7) + switch (m_dsw_select & 7) { - case 1: return input_port_read(space->machine(), "DSW1"); - case 2: return input_port_read(space->machine(), "DSW2"); - case 4: return input_port_read(space->machine(), "DSW3"); + case 1: return input_port_read(machine(), "DSW1"); + case 2: return input_port_read(machine(), "DSW2"); + case 4: return input_port_read(machine(), "DSW3"); } return 0xff; } -static WRITE8_HANDLER( jansou_colortable_w ) +WRITE8_MEMBER(royalmah_state::jansou_colortable_w) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - state->m_jansou_colortable[offset] = data; + m_jansou_colortable[offset] = data; } -static WRITE8_HANDLER( jansou_6400_w ) +WRITE8_MEMBER(royalmah_state::jansou_6400_w) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - state->m_gfx_adr_l = data; - state->m_gfx_adr = state->m_gfx_adr_h*0x10000 + state->m_gfx_adr_m*0x100 + state->m_gfx_adr_l; + m_gfx_adr_l = data; + m_gfx_adr = m_gfx_adr_h*0x10000 + m_gfx_adr_m*0x100 + m_gfx_adr_l; } -static WRITE8_HANDLER( jansou_6401_w ) +WRITE8_MEMBER(royalmah_state::jansou_6401_w) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - state->m_gfx_adr_m = data; - state->m_gfx_adr = state->m_gfx_adr_h*0x10000 + state->m_gfx_adr_m*0x100 + state->m_gfx_adr_l; + m_gfx_adr_m = data; + m_gfx_adr = m_gfx_adr_h*0x10000 + m_gfx_adr_m*0x100 + m_gfx_adr_l; } -static WRITE8_HANDLER( jansou_6402_w ) +WRITE8_MEMBER(royalmah_state::jansou_6402_w) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - state->m_gfx_adr_h = data & 1; - state->m_gfx_adr = state->m_gfx_adr_h*0x10000 + state->m_gfx_adr_m*0x100 + state->m_gfx_adr_l; + m_gfx_adr_h = data & 1; + m_gfx_adr = m_gfx_adr_h*0x10000 + m_gfx_adr_m*0x100 + m_gfx_adr_l; } -static READ8_HANDLER( jansou_6403_r ) +READ8_MEMBER(royalmah_state::jansou_6403_r) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - UINT8 *GFXROM = space->machine().region("gfx1")->base(); - int d0 = GFXROM[state->m_gfx_adr]; - int d1 = GFXROM[state->m_gfx_adr+1]; - int c0 = state->m_jansou_colortable[d1 & 0x0f] & 0x0f; - int c1 = state->m_jansou_colortable[(d1 & 0xf0) >> 4] >> 4; - int c2 = state->m_jansou_colortable[d0 & 0x0f] & 0x0f; - int c3 = state->m_jansou_colortable[(d0 & 0xf0) >> 4] >> 4; - - state->m_gfx_adr += 2; - - state->m_gfxdata0 = (c3 & 1) << 0 | ((c2 & 1) << 1) | ((c1 & 1) << 2) | ((c0 & 1) << 3) + UINT8 *GFXROM = machine().region("gfx1")->base(); + int d0 = GFXROM[m_gfx_adr]; + int d1 = GFXROM[m_gfx_adr+1]; + int c0 = m_jansou_colortable[d1 & 0x0f] & 0x0f; + int c1 = m_jansou_colortable[(d1 & 0xf0) >> 4] >> 4; + int c2 = m_jansou_colortable[d0 & 0x0f] & 0x0f; + int c3 = m_jansou_colortable[(d0 & 0xf0) >> 4] >> 4; + + m_gfx_adr += 2; + + m_gfxdata0 = (c3 & 1) << 0 | ((c2 & 1) << 1) | ((c1 & 1) << 2) | ((c0 & 1) << 3) | ((c3 & 2) << 3) | ((c2 & 2) << 4) | ((c1 & 2) << 5) | ((c0 & 2) << 6); - state->m_gfxdata1 = (c3 & 4) >> 2 | ((c2 & 4) >> 1) | (c1 & 4) | ((c0 & 4) << 1) + m_gfxdata1 = (c3 & 4) >> 2 | ((c2 & 4) >> 1) | (c1 & 4) | ((c0 & 4) << 1) | ((c3 & 8) << 1) | ((c2 & 8) << 2) | ((c1 & 8) << 3) | ((c0 & 8) << 4); return 0xff; } -static READ8_HANDLER( jansou_6404_r ) +READ8_MEMBER(royalmah_state::jansou_6404_r) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - return state->m_gfxdata0; + return m_gfxdata0; } -static READ8_HANDLER( jansou_6405_r ) +READ8_MEMBER(royalmah_state::jansou_6405_r) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - return state->m_gfxdata1; + return m_gfxdata1; } -static WRITE8_HANDLER( jansou_sound_w ) +WRITE8_MEMBER(royalmah_state::jansou_sound_w) { soundlatch_w(space, 0, data); - cputag_set_input_line(space->machine(), "audiocpu", INPUT_LINE_NMI, PULSE_LINE); + cputag_set_input_line(machine(), "audiocpu", INPUT_LINE_NMI, PULSE_LINE); } @@ -724,16 +766,16 @@ static WRITE8_HANDLER( jansou_sound_w ) static ADDRESS_MAP_START( jansou_map, AS_PROGRAM, 8, royalmah_state ) AM_RANGE( 0x0000, 0x3fff ) AM_ROM - AM_RANGE( 0x6000, 0x600f ) AM_WRITE_LEGACY(jansou_colortable_w) - AM_RANGE( 0x6400, 0x6400 ) AM_WRITE_LEGACY(jansou_6400_w) - AM_RANGE( 0x6401, 0x6401 ) AM_WRITE_LEGACY(jansou_6401_w) - AM_RANGE( 0x6402, 0x6402 ) AM_WRITE_LEGACY(jansou_6402_w) - AM_RANGE( 0x6403, 0x6403 ) AM_READ_LEGACY(jansou_6403_r) - AM_RANGE( 0x6404, 0x6404 ) AM_READ_LEGACY(jansou_6404_r) - AM_RANGE( 0x6405, 0x6405 ) AM_READ_LEGACY(jansou_6405_r) - AM_RANGE( 0x6406, 0x6406 ) AM_WRITE_LEGACY(jansou_dsw_sel_w) - AM_RANGE( 0x6407, 0x6407 ) AM_READ_LEGACY(jansou_dsw_r) - AM_RANGE( 0x6800, 0x6800 ) AM_WRITE_LEGACY(jansou_sound_w) + AM_RANGE( 0x6000, 0x600f ) AM_WRITE(jansou_colortable_w) + AM_RANGE( 0x6400, 0x6400 ) AM_WRITE(jansou_6400_w) + AM_RANGE( 0x6401, 0x6401 ) AM_WRITE(jansou_6401_w) + AM_RANGE( 0x6402, 0x6402 ) AM_WRITE(jansou_6402_w) + AM_RANGE( 0x6403, 0x6403 ) AM_READ(jansou_6403_r) + AM_RANGE( 0x6404, 0x6404 ) AM_READ(jansou_6404_r) + AM_RANGE( 0x6405, 0x6405 ) AM_READ(jansou_6405_r) + AM_RANGE( 0x6406, 0x6406 ) AM_WRITE(jansou_dsw_sel_w) + AM_RANGE( 0x6407, 0x6407 ) AM_READ(jansou_dsw_r) + AM_RANGE( 0x6800, 0x6800 ) AM_WRITE(jansou_sound_w) AM_RANGE( 0x7000, 0x77ff ) AM_RAM AM_SHARE("nvram") AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_BASE(m_videoram) @@ -762,68 +804,64 @@ static ADDRESS_MAP_START( janptr96_map, AS_PROGRAM, 8, royalmah_state ) AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_BASE(m_videoram) ADDRESS_MAP_END -static WRITE8_HANDLER( janptr96_dswsel_w ) +WRITE8_MEMBER(royalmah_state::janptr96_dswsel_w) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); // 0x20 = 0 -> hopper on // 0x40 ? - state->m_dsw_select = data; + m_dsw_select = data; } -static READ8_HANDLER( janptr96_dswsel_r ) +READ8_MEMBER(royalmah_state::janptr96_dswsel_r) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - return state->m_dsw_select; + return m_dsw_select; } -static READ8_HANDLER( janptr96_dsw_r ) +READ8_MEMBER(royalmah_state::janptr96_dsw_r) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - if (~state->m_dsw_select & 0x01) return input_port_read(space->machine(), "DSW4"); - if (~state->m_dsw_select & 0x02) return input_port_read(space->machine(), "DSW3"); - if (~state->m_dsw_select & 0x04) return input_port_read(space->machine(), "DSW2"); - if (~state->m_dsw_select & 0x08) return input_port_read(space->machine(), "DSW1"); - if (~state->m_dsw_select & 0x10) return input_port_read(space->machine(), "DSWTOP"); + if (~m_dsw_select & 0x01) return input_port_read(machine(), "DSW4"); + if (~m_dsw_select & 0x02) return input_port_read(machine(), "DSW3"); + if (~m_dsw_select & 0x04) return input_port_read(machine(), "DSW2"); + if (~m_dsw_select & 0x08) return input_port_read(machine(), "DSW1"); + if (~m_dsw_select & 0x10) return input_port_read(machine(), "DSWTOP"); return 0xff; } -static WRITE8_HANDLER( janptr96_rombank_w ) +WRITE8_MEMBER(royalmah_state::janptr96_rombank_w) { - UINT8 *ROM = space->machine().region("maincpu")->base(); - memory_set_bankptr(space->machine(), "bank1",ROM + 0x10000 + 0x8000 * data); + UINT8 *ROM = machine().region("maincpu")->base(); + memory_set_bankptr(machine(), "bank1",ROM + 0x10000 + 0x8000 * data); } -static WRITE8_HANDLER( janptr96_rambank_w ) +WRITE8_MEMBER(royalmah_state::janptr96_rambank_w) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - memory_set_bankptr(space->machine(), "bank2", state->m_janptr96_nvram + 0x1000 + 0x1000 * data); + memory_set_bankptr(machine(), "bank2", m_janptr96_nvram + 0x1000 + 0x1000 * data); } -static READ8_HANDLER( janptr96_unknown_r ) +READ8_MEMBER(royalmah_state::janptr96_unknown_r) { // 0x08 = 0 makes the game crash (e.g. in the m-ram test: nested interrupts?) return 0xff; } -static WRITE8_HANDLER( janptr96_coin_counter_w ) +WRITE8_MEMBER(royalmah_state::janptr96_coin_counter_w) { - flip_screen_set(space->machine(), ~data & 4); - coin_counter_w(space->machine(), 0,data & 2); // in - coin_counter_w(space->machine(), 1,data & 1); // out + flip_screen_set(machine(), ~data & 4); + coin_counter_w(machine(), 0,data & 2); // in + coin_counter_w(machine(), 1,data & 1); // out } static ADDRESS_MAP_START( janptr96_iomap, AS_IO, 8, royalmah_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE( 0x00, 0x00 ) AM_WRITE_LEGACY(janptr96_rombank_w ) // BANK ROM Select - AM_RANGE( 0x1e, 0x1e ) AM_READWRITE_LEGACY(janptr96_dswsel_r, janptr96_dswsel_w ) - AM_RANGE( 0x1c, 0x1c ) AM_READ_LEGACY(janptr96_dsw_r ) - AM_RANGE( 0x20, 0x20 ) AM_READWRITE_LEGACY(janptr96_unknown_r, janptr96_rambank_w ) - AM_RANGE( 0x50, 0x50 ) AM_WRITE_LEGACY(mjderngr_palbank_w ) + AM_RANGE( 0x00, 0x00 ) AM_WRITE(janptr96_rombank_w ) // BANK ROM Select + AM_RANGE( 0x1e, 0x1e ) AM_READWRITE(janptr96_dswsel_r, janptr96_dswsel_w ) + AM_RANGE( 0x1c, 0x1c ) AM_READ(janptr96_dsw_r ) + AM_RANGE( 0x20, 0x20 ) AM_READWRITE(janptr96_unknown_r, janptr96_rambank_w ) + AM_RANGE( 0x50, 0x50 ) AM_WRITE(mjderngr_palbank_w ) AM_RANGE( 0x60, 0x6f ) AM_DEVREADWRITE("rtc", msm6242_device, read, write) AM_RANGE( 0x81, 0x81 ) AM_DEVREAD_LEGACY("aysnd", ay8910_r ) AM_RANGE( 0x82, 0x83 ) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_address_w ) - AM_RANGE( 0x93, 0x93 ) AM_WRITE_LEGACY(input_port_select_w ) - AM_RANGE( 0xd8, 0xd8 ) AM_WRITE_LEGACY(janptr96_coin_counter_w ) + AM_RANGE( 0x93, 0x93 ) AM_WRITE(input_port_select_w ) + AM_RANGE( 0xd8, 0xd8 ) AM_WRITE(janptr96_coin_counter_w ) AM_RANGE( 0xd9, 0xd9 ) AM_READ_PORT("SYSTEM") ADDRESS_MAP_END @@ -832,38 +870,36 @@ ADDRESS_MAP_END ****************************************************************************/ -static WRITE8_HANDLER( mjifb_coin_counter_w ) +WRITE8_MEMBER(royalmah_state::mjifb_coin_counter_w) { - flip_screen_set(space->machine(), data & 4); - coin_counter_w(space->machine(), 0,data & 2); // in - coin_counter_w(space->machine(), 1,data & 1); // out + flip_screen_set(machine(), data & 4); + coin_counter_w(machine(), 0,data & 2); // in + coin_counter_w(machine(), 1,data & 1); // out } -static READ8_HANDLER( mjifb_rom_io_r ) +READ8_MEMBER(royalmah_state::mjifb_rom_io_r) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - if (state->m_mjifb_rom_enable) - return ((UINT8*)(space->machine().region("maincpu")->base() + 0x10000 + state->m_rombank * 0x4000))[offset]; + if (m_mjifb_rom_enable) + return ((UINT8*)(machine().region("maincpu")->base() + 0x10000 + m_rombank * 0x4000))[offset]; offset += 0x8000; switch(offset) { - case 0x8000: return input_port_read(space->machine(), "DSW4"); // dsw 4 - case 0x8200: return input_port_read(space->machine(), "DSW3"); // dsw 3 - case 0x9001: return ay8910_r(space->machine().device("aysnd"), 0); // inputs - case 0x9011: return input_port_read(space->machine(), "SYSTEM"); + case 0x8000: return input_port_read(machine(), "DSW4"); // dsw 4 + case 0x8200: return input_port_read(machine(), "DSW3"); // dsw 3 + case 0x9001: return ay8910_r(machine().device("aysnd"), 0); // inputs + case 0x9011: return input_port_read(machine(), "SYSTEM"); } - logerror("%04X: unmapped input read at %04X\n", cpu_get_pc(&space->device()), offset); + logerror("%04X: unmapped input read at %04X\n", cpu_get_pc(&space.device()), offset); return 0xff; } -static WRITE8_HANDLER( mjifb_rom_io_w ) +WRITE8_MEMBER(royalmah_state::mjifb_rom_io_w) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - UINT8 *videoram = state->m_videoram; - if (state->m_mjifb_rom_enable) + UINT8 *videoram = m_videoram; + if (m_mjifb_rom_enable) { videoram[offset] = data; return; @@ -873,9 +909,9 @@ static WRITE8_HANDLER( mjifb_rom_io_w ) switch(offset) { - case 0x8e00: state->m_palette_base = data & 0x1f; return; - case 0x9002: ay8910_data_w(space->machine().device("aysnd"),0,data); return; - case 0x9003: ay8910_address_w(space->machine().device("aysnd"),0,data); return; + case 0x8e00: m_palette_base = data & 0x1f; return; + case 0x9002: ay8910_data_w(machine().device("aysnd"),0,data); return; + case 0x9003: ay8910_address_w(machine().device("aysnd"),0,data); return; case 0x9010: mjifb_coin_counter_w(space,0,data); return; @@ -885,68 +921,64 @@ static WRITE8_HANDLER( mjifb_rom_io_w ) return; } - logerror("%04X: unmapped input write at %04X = %02X\n", cpu_get_pc(&space->device()), offset,data); + logerror("%04X: unmapped input write at %04X = %02X\n", cpu_get_pc(&space.device()), offset,data); } -static WRITE8_HANDLER( mjifb_videoram_w ) +WRITE8_MEMBER(royalmah_state::mjifb_videoram_w) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - UINT8 *videoram = state->m_videoram; + UINT8 *videoram = m_videoram; videoram[offset + 0x4000] = data; } static ADDRESS_MAP_START( mjifb_map, AS_PROGRAM, 8, royalmah_state ) AM_RANGE( 0x0000, 0x6fff ) AM_ROM AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x8000, 0xbfff ) AM_READWRITE_LEGACY(mjifb_rom_io_r, mjifb_rom_io_w) AM_BASE(m_videoram) - AM_RANGE( 0xc000, 0xffff ) AM_ROM AM_WRITE_LEGACY(mjifb_videoram_w) + AM_RANGE( 0x8000, 0xbfff ) AM_READWRITE(mjifb_rom_io_r, mjifb_rom_io_w) AM_BASE(m_videoram) + AM_RANGE( 0xc000, 0xffff ) AM_ROM AM_WRITE(mjifb_videoram_w) // AM_RANGE( 0xc000, 0xffff ) AM_ROM AM_WRITEONLY This should, but doesn't work ADDRESS_MAP_END -static READ8_HANDLER( mjifb_p3_r ) +READ8_MEMBER(royalmah_state::mjifb_p3_r) { - return input_port_read(space->machine(), "PORT3_5") >> 6; + return input_port_read(machine(), "PORT3_5") >> 6; } -static READ8_HANDLER( mjifb_p5_r ) +READ8_MEMBER(royalmah_state::mjifb_p5_r) { - return input_port_read(space->machine(), "PORT3_5"); + return input_port_read(machine(), "PORT3_5"); } -static READ8_HANDLER( mjifb_p6_r ) +READ8_MEMBER(royalmah_state::mjifb_p6_r) { - return input_port_read(space->machine(), "PORT6_7"); + return input_port_read(machine(), "PORT6_7"); } -static READ8_HANDLER( mjifb_p7_r ) +READ8_MEMBER(royalmah_state::mjifb_p7_r) { - return input_port_read(space->machine(), "PORT6_7") >> 4; + return input_port_read(machine(), "PORT6_7") >> 4; } -static READ8_HANDLER( mjifb_p8_r ) +READ8_MEMBER(royalmah_state::mjifb_p8_r) { return 0xff; } -static WRITE8_HANDLER( mjifb_p3_w ) +WRITE8_MEMBER(royalmah_state::mjifb_p3_w) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - state->m_rombank = (state->m_rombank & 0x0f) | ((data & 0x0c) << 2); + m_rombank = (m_rombank & 0x0f) | ((data & 0x0c) << 2); } -static WRITE8_HANDLER( mjifb_p4_w ) +WRITE8_MEMBER(royalmah_state::mjifb_p4_w) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - state->m_rombank = (state->m_rombank & 0xf0) | (data & 0x0f); + m_rombank = (m_rombank & 0xf0) | (data & 0x0f); } -static WRITE8_HANDLER( mjifb_p8_w ) +WRITE8_MEMBER(royalmah_state::mjifb_p8_w) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - state->m_mjifb_rom_enable = (data & 0x08); + m_mjifb_rom_enable = (data & 0x08); } static ADDRESS_MAP_START( mjifb_iomap, AS_IO, 8, royalmah_state ) - AM_RANGE( T90_P3, T90_P3 ) AM_READWRITE_LEGACY(mjifb_p3_r, mjifb_p3_w ) - AM_RANGE( T90_P4, T90_P4 ) AM_WRITE_LEGACY(mjifb_p4_w ) - AM_RANGE( T90_P5, T90_P5 ) AM_READ_LEGACY(mjifb_p5_r ) - AM_RANGE( T90_P6, T90_P6 ) AM_READ_LEGACY(mjifb_p6_r ) - AM_RANGE( T90_P7, T90_P7 ) AM_READ_LEGACY(mjifb_p7_r ) - AM_RANGE( T90_P8, T90_P8 ) AM_READWRITE_LEGACY(mjifb_p8_r, mjifb_p8_w ) + AM_RANGE( T90_P3, T90_P3 ) AM_READWRITE(mjifb_p3_r, mjifb_p3_w ) + AM_RANGE( T90_P4, T90_P4 ) AM_WRITE(mjifb_p4_w ) + AM_RANGE( T90_P5, T90_P5 ) AM_READ(mjifb_p5_r ) + AM_RANGE( T90_P6, T90_P6 ) AM_READ(mjifb_p6_r ) + AM_RANGE( T90_P7, T90_P7 ) AM_READ(mjifb_p7_r ) + AM_RANGE( T90_P8, T90_P8 ) AM_READWRITE(mjifb_p8_r, mjifb_p8_w ) ADDRESS_MAP_END @@ -954,31 +986,29 @@ ADDRESS_MAP_END Mahjong Shinkirou Deja Vu ****************************************************************************/ -static READ8_HANDLER( mjdejavu_rom_io_r ) +READ8_MEMBER(royalmah_state::mjdejavu_rom_io_r) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - if (state->m_mjifb_rom_enable) - return ((UINT8*)(space->machine().region("maincpu")->base() + 0x10000 + state->m_rombank * 0x4000))[offset]; + if (m_mjifb_rom_enable) + return ((UINT8*)(machine().region("maincpu")->base() + 0x10000 + m_rombank * 0x4000))[offset]; offset += 0x8000; switch(offset) { - case 0x8000: return input_port_read(space->machine(), "DSW2"); // dsw 2 - case 0x8001: return input_port_read(space->machine(), "DSW1"); // dsw 1 - case 0x9001: return ay8910_r(space->machine().device("aysnd"), 0); // inputs - case 0x9011: return input_port_read(space->machine(), "SYSTEM"); + case 0x8000: return input_port_read(machine(), "DSW2"); // dsw 2 + case 0x8001: return input_port_read(machine(), "DSW1"); // dsw 1 + case 0x9001: return ay8910_r(machine().device("aysnd"), 0); // inputs + case 0x9011: return input_port_read(machine(), "SYSTEM"); } - logerror("%04X: unmapped input read at %04X\n", cpu_get_pc(&space->device()), offset); + logerror("%04X: unmapped input read at %04X\n", cpu_get_pc(&space.device()), offset); return 0xff; } -static WRITE8_HANDLER( mjdejavu_rom_io_w ) +WRITE8_MEMBER(royalmah_state::mjdejavu_rom_io_w) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - UINT8 *videoram = state->m_videoram; - if (state->m_mjifb_rom_enable) + UINT8 *videoram = m_videoram; + if (m_mjifb_rom_enable) { videoram[offset] = data; return; @@ -987,9 +1017,9 @@ static WRITE8_HANDLER( mjdejavu_rom_io_w ) offset += 0x8000; switch(offset) { - case 0x8802: state->m_palette_base = data & 0x1f; return; - case 0x9002: ay8910_data_w(space->machine().device("aysnd"),0,data); return; - case 0x9003: ay8910_address_w(space->machine().device("aysnd"),0,data); return; + case 0x8802: m_palette_base = data & 0x1f; return; + case 0x9002: ay8910_data_w(machine().device("aysnd"),0,data); return; + case 0x9003: ay8910_address_w(machine().device("aysnd"),0,data); return; case 0x9010: mjifb_coin_counter_w(space,0,data); return; case 0x9011: input_port_select_w(space,0,data); return; case 0x9013: @@ -997,14 +1027,14 @@ static WRITE8_HANDLER( mjdejavu_rom_io_w ) return; } - logerror("%04X: unmapped input write at %04X = %02X\n", cpu_get_pc(&space->device()), offset,data); + logerror("%04X: unmapped input write at %04X = %02X\n", cpu_get_pc(&space.device()), offset,data); } static ADDRESS_MAP_START( mjdejavu_map, AS_PROGRAM, 8, royalmah_state ) AM_RANGE( 0x0000, 0x6fff ) AM_ROM AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x8000, 0xbfff ) AM_READWRITE_LEGACY(mjdejavu_rom_io_r, mjdejavu_rom_io_w) AM_BASE(m_videoram) - AM_RANGE( 0xc000, 0xffff ) AM_ROM AM_WRITE_LEGACY(mjifb_videoram_w) + AM_RANGE( 0x8000, 0xbfff ) AM_READWRITE(mjdejavu_rom_io_r, mjdejavu_rom_io_w) AM_BASE(m_videoram) + AM_RANGE( 0xc000, 0xffff ) AM_ROM AM_WRITE(mjifb_videoram_w) ADDRESS_MAP_END @@ -1012,7 +1042,7 @@ ADDRESS_MAP_END Mahjong Tensinhai ****************************************************************************/ -static READ8_HANDLER( mjtensin_p3_r ) +READ8_MEMBER(royalmah_state::mjtensin_p3_r) { return 0xff; } @@ -1022,17 +1052,15 @@ static void mjtensin_update_rombank(running_machine &machine) royalmah_state *state = machine.driver_data<royalmah_state>(); memory_set_bankptr(machine, "bank1", machine.region("maincpu")->base() + 0x10000 + state->m_rombank * 0x8000 ); } -static WRITE8_HANDLER( mjtensin_p4_w ) +WRITE8_MEMBER(royalmah_state::mjtensin_p4_w) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - state->m_rombank = (state->m_rombank & 0xf0) | (data & 0x0f); - mjtensin_update_rombank(space->machine()); + m_rombank = (m_rombank & 0xf0) | (data & 0x0f); + mjtensin_update_rombank(machine()); } -static WRITE8_HANDLER( mjtensin_6ff3_w ) +WRITE8_MEMBER(royalmah_state::mjtensin_6ff3_w) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - state->m_rombank = (data << 4) | (state->m_rombank & 0x0f); - mjtensin_update_rombank(space->machine()); + m_rombank = (data << 4) | (m_rombank & 0x0f); + mjtensin_update_rombank(machine()); } static ADDRESS_MAP_START( mjtensin_map, AS_PROGRAM, 8, royalmah_state ) @@ -1040,20 +1068,20 @@ static ADDRESS_MAP_START( mjtensin_map, AS_PROGRAM, 8, royalmah_state ) AM_RANGE( 0x6000, 0x6fbf ) AM_RAM AM_RANGE( 0x6fc1, 0x6fc1 ) AM_DEVREAD_LEGACY("aysnd", ay8910_r ) AM_RANGE( 0x6fc2, 0x6fc3 ) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_address_w ) - AM_RANGE( 0x6fd0, 0x6fd0 ) AM_WRITE_LEGACY(janptr96_coin_counter_w ) - AM_RANGE( 0x6fd1, 0x6fd1 ) AM_READ_PORT("SYSTEM") AM_WRITE_LEGACY(input_port_select_w ) + AM_RANGE( 0x6fd0, 0x6fd0 ) AM_WRITE(janptr96_coin_counter_w ) + AM_RANGE( 0x6fd1, 0x6fd1 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w ) AM_RANGE( 0x6fe0, 0x6fef ) AM_DEVREADWRITE("rtc", msm6242_device, read, write) - AM_RANGE( 0x6ff0, 0x6ff0 ) AM_READWRITE_LEGACY(janptr96_dsw_r, janptr96_dswsel_w ) - AM_RANGE( 0x6ff1, 0x6ff1 ) AM_WRITE_LEGACY(mjderngr_palbank_w ) - AM_RANGE( 0x6ff3, 0x6ff3 ) AM_WRITE_LEGACY(mjtensin_6ff3_w ) + AM_RANGE( 0x6ff0, 0x6ff0 ) AM_READWRITE(janptr96_dsw_r, janptr96_dswsel_w ) + AM_RANGE( 0x6ff1, 0x6ff1 ) AM_WRITE(mjderngr_palbank_w ) + AM_RANGE( 0x6ff3, 0x6ff3 ) AM_WRITE(mjtensin_6ff3_w ) AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram") AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "bank1" ) AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_BASE(m_videoram) ADDRESS_MAP_END static ADDRESS_MAP_START( mjtensin_iomap, AS_IO, 8, royalmah_state ) - AM_RANGE( T90_P3, T90_P3 ) AM_READ_LEGACY(mjtensin_p3_r ) - AM_RANGE( T90_P4, T90_P4 ) AM_WRITE_LEGACY(mjtensin_p4_w ) + AM_RANGE( T90_P3, T90_P3 ) AM_READ(mjtensin_p3_r ) + AM_RANGE( T90_P4, T90_P4 ) AM_WRITE(mjtensin_p4_w ) ADDRESS_MAP_END @@ -1066,44 +1094,40 @@ static void cafetime_update_rombank(running_machine &machine) royalmah_state *state = machine.driver_data<royalmah_state>(); memory_set_bankptr(machine, "bank1", machine.region("maincpu")->base() + 0x10000 + state->m_rombank * 0x8000 ); } -static WRITE8_HANDLER( cafetime_p4_w ) +WRITE8_MEMBER(royalmah_state::cafetime_p4_w) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - state->m_rombank = (state->m_rombank & 0xf0) | (data & 0x0f); - cafetime_update_rombank(space->machine()); + m_rombank = (m_rombank & 0xf0) | (data & 0x0f); + cafetime_update_rombank(machine()); } -static WRITE8_HANDLER( cafetime_p3_w ) +WRITE8_MEMBER(royalmah_state::cafetime_p3_w) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - state->m_rombank = (state->m_rombank & 0x0f) | ((data & 0x0c) << 2); - cafetime_update_rombank(space->machine()); + m_rombank = (m_rombank & 0x0f) | ((data & 0x0c) << 2); + cafetime_update_rombank(machine()); } -static WRITE8_HANDLER( cafetime_dsw_w ) +WRITE8_MEMBER(royalmah_state::cafetime_dsw_w) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - state->m_dsw_select = data; + m_dsw_select = data; } -static READ8_HANDLER( cafetime_dsw_r ) +READ8_MEMBER(royalmah_state::cafetime_dsw_r) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - switch( state->m_dsw_select ) + switch( m_dsw_select ) { - case 0x00: return input_port_read(space->machine(), "DSW1"); - case 0x01: return input_port_read(space->machine(), "DSW2"); - case 0x02: return input_port_read(space->machine(), "DSW3"); - case 0x03: return input_port_read(space->machine(), "DSW4"); - case 0x04: return input_port_read(space->machine(), "DSWTOP"); + case 0x00: return input_port_read(machine(), "DSW1"); + case 0x01: return input_port_read(machine(), "DSW2"); + case 0x02: return input_port_read(machine(), "DSW3"); + case 0x03: return input_port_read(machine(), "DSW4"); + case 0x04: return input_port_read(machine(), "DSWTOP"); } - logerror("%04X: unmapped dsw read %02X\n", cpu_get_pc(&space->device()), state->m_dsw_select); + logerror("%04X: unmapped dsw read %02X\n", cpu_get_pc(&space.device()), m_dsw_select); return 0xff; } -static READ8_HANDLER( cafetime_7fe4_r ) +READ8_MEMBER(royalmah_state::cafetime_7fe4_r) { return 0xff; } -static WRITE8_HANDLER( cafetime_7fe3_w ) +WRITE8_MEMBER(royalmah_state::cafetime_7fe3_w) { // popmessage("%02x",data); } @@ -1113,14 +1137,14 @@ static ADDRESS_MAP_START( cafetime_map, AS_PROGRAM, 8, royalmah_state ) AM_RANGE( 0x6000, 0x7eff ) AM_RAM AM_SHARE("nvram") AM_RANGE( 0x7fc1, 0x7fc1 ) AM_DEVREAD_LEGACY("aysnd", ay8910_r ) AM_RANGE( 0x7fc2, 0x7fc3 ) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_address_w ) - AM_RANGE( 0x7fd0, 0x7fd0 ) AM_WRITE_LEGACY(janptr96_coin_counter_w ) + AM_RANGE( 0x7fd0, 0x7fd0 ) AM_WRITE(janptr96_coin_counter_w ) AM_RANGE( 0x7fd1, 0x7fd1 ) AM_READ_PORT("SYSTEM") AM_WRITENOP - AM_RANGE( 0x7fd3, 0x7fd3 ) AM_WRITE_LEGACY(input_port_select_w ) - AM_RANGE( 0x7fe0, 0x7fe0 ) AM_READ_LEGACY(cafetime_dsw_r ) - AM_RANGE( 0x7fe1, 0x7fe1 ) AM_WRITE_LEGACY(cafetime_dsw_w ) - AM_RANGE( 0x7fe2, 0x7fe2 ) AM_WRITE_LEGACY(mjderngr_palbank_w ) - AM_RANGE( 0x7fe3, 0x7fe3 ) AM_WRITE_LEGACY(cafetime_7fe3_w ) - AM_RANGE( 0x7fe4, 0x7fe4 ) AM_READ_LEGACY(cafetime_7fe4_r ) + AM_RANGE( 0x7fd3, 0x7fd3 ) AM_WRITE(input_port_select_w ) + AM_RANGE( 0x7fe0, 0x7fe0 ) AM_READ(cafetime_dsw_r ) + AM_RANGE( 0x7fe1, 0x7fe1 ) AM_WRITE(cafetime_dsw_w ) + AM_RANGE( 0x7fe2, 0x7fe2 ) AM_WRITE(mjderngr_palbank_w ) + AM_RANGE( 0x7fe3, 0x7fe3 ) AM_WRITE(cafetime_7fe3_w ) + AM_RANGE( 0x7fe4, 0x7fe4 ) AM_READ(cafetime_7fe4_r ) AM_RANGE( 0x7ff0, 0x7fff ) AM_DEVREADWRITE("rtc", msm6242_device, read, write) AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "bank1" ) AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_BASE(m_videoram) @@ -1128,8 +1152,8 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( cafetime_iomap, AS_IO, 8, royalmah_state ) - AM_RANGE( T90_P3, T90_P3 ) AM_WRITE_LEGACY(cafetime_p3_w ) - AM_RANGE( T90_P4, T90_P4 ) AM_WRITE_LEGACY(cafetime_p4_w ) + AM_RANGE( T90_P3, T90_P3 ) AM_WRITE(cafetime_p3_w ) + AM_RANGE( T90_P4, T90_P4 ) AM_WRITE(cafetime_p4_w ) ADDRESS_MAP_END @@ -1137,46 +1161,41 @@ ADDRESS_MAP_END Mahjong Vegas ****************************************************************************/ -static WRITE8_HANDLER( mjvegasa_p4_w ) +WRITE8_MEMBER(royalmah_state::mjvegasa_p4_w) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - state->m_rombank = (state->m_rombank & 0xf8) | ((data & 0x0e) >> 1); + m_rombank = (m_rombank & 0xf8) | ((data & 0x0e) >> 1); } -static WRITE8_HANDLER( mjvegasa_p3_w ) +WRITE8_MEMBER(royalmah_state::mjvegasa_p3_w) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - state->m_rombank = (state->m_rombank & 0xf7) | ((data & 0x04) << 1); + m_rombank = (m_rombank & 0xf7) | ((data & 0x04) << 1); } -static WRITE8_HANDLER( mjvegasa_rombank_w ) +WRITE8_MEMBER(royalmah_state::mjvegasa_rombank_w) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - state->m_rombank = (state->m_rombank & 0x0f) | ((data & 0x0f) << 4); + m_rombank = (m_rombank & 0x0f) | ((data & 0x0f) << 4); } -static READ8_HANDLER( mjvegasa_rom_io_r ) +READ8_MEMBER(royalmah_state::mjvegasa_rom_io_r) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - if ((state->m_rombank & 0x70) != 0x70) - return space->machine().region("maincpu")->base()[0x10000 + state->m_rombank * 0x8000 + offset]; + if ((m_rombank & 0x70) != 0x70) + return machine().region("maincpu")->base()[0x10000 + m_rombank * 0x8000 + offset]; offset += 0x8000; if((offset & 0xfff0) == 0x8000) { - msm6242_device *rtc = space->machine().device<msm6242_device>("rtc"); + msm6242_device *rtc = machine().device<msm6242_device>("rtc"); - return rtc->read(*space, offset & 0xf); + return rtc->read(*&space, offset & 0xf); } - logerror("%04X: unmapped IO read at %04X\n", cpu_get_pc(&space->device()), offset); + logerror("%04X: unmapped IO read at %04X\n", cpu_get_pc(&space.device()), offset); return 0xff; } -static WRITE8_HANDLER( mjvegasa_rom_io_w ) +WRITE8_MEMBER(royalmah_state::mjvegasa_rom_io_w) { - royalmah_state *state = space->machine().driver_data<royalmah_state>(); - UINT8 *videoram = state->m_videoram; - if ((state->m_rombank & 0x70) != 0x70) + UINT8 *videoram = m_videoram; + if ((m_rombank & 0x70) != 0x70) { videoram[offset] = data; return; @@ -1186,29 +1205,29 @@ static WRITE8_HANDLER( mjvegasa_rom_io_w ) if((offset & 0xfff0) == 0x8000) { - msm6242_device *rtc = space->machine().device<msm6242_device>("rtc"); + msm6242_device *rtc = machine().device<msm6242_device>("rtc"); - rtc->write(*space, offset & 0xf,data); + rtc->write(*&space, offset & 0xf,data); return; } - logerror("%04X: unmapped IO write at %04X = %02X\n", cpu_get_pc(&space->device()), offset,data); + logerror("%04X: unmapped IO write at %04X = %02X\n", cpu_get_pc(&space.device()), offset,data); } -static WRITE8_HANDLER( mjvegasa_coin_counter_w ) +WRITE8_MEMBER(royalmah_state::mjvegasa_coin_counter_w) { - flip_screen_set(space->machine(), data & 4); - coin_counter_w(space->machine(), 0,data & 2); // in - coin_counter_w(space->machine(), 1,data & 1); // out + flip_screen_set(machine(), data & 4); + coin_counter_w(machine(), 0,data & 2); // in + coin_counter_w(machine(), 1,data & 1); // out } // hopper? -static WRITE8_HANDLER( mjvegasa_12400_w ) +WRITE8_MEMBER(royalmah_state::mjvegasa_12400_w) { // bits 0 & 1 // popmessage("UNK: %02x",data); } -static READ8_HANDLER( mjvegasa_12500_r ) +READ8_MEMBER(royalmah_state::mjvegasa_12500_r) { // bits 0 & 2 return 0xff; @@ -1218,26 +1237,26 @@ static ADDRESS_MAP_START( mjvegasa_map, AS_PROGRAM, 8, royalmah_state ) AM_RANGE( 0x00000, 0x05fff ) AM_ROM AM_RANGE( 0x06000, 0x07fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x08000, 0x0ffff ) AM_READWRITE_LEGACY(mjvegasa_rom_io_r, mjvegasa_rom_io_w) AM_BASE(m_videoram) + AM_RANGE( 0x08000, 0x0ffff ) AM_READWRITE(mjvegasa_rom_io_r, mjvegasa_rom_io_w) AM_BASE(m_videoram) AM_RANGE( 0x10001, 0x10001 ) AM_DEVREAD_LEGACY("aysnd", ay8910_r ) AM_RANGE( 0x10002, 0x10003 ) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_address_w ) - AM_RANGE( 0x10010, 0x10010 ) AM_WRITE_LEGACY(mjvegasa_coin_counter_w ) - AM_RANGE( 0x10011, 0x10011 ) AM_READ_PORT("SYSTEM") AM_WRITE_LEGACY(input_port_select_w ) - AM_RANGE( 0x10013, 0x10013 ) AM_WRITE_LEGACY(input_port_select_w ) + AM_RANGE( 0x10010, 0x10010 ) AM_WRITE(mjvegasa_coin_counter_w ) + AM_RANGE( 0x10011, 0x10011 ) AM_READ_PORT("SYSTEM") AM_WRITE(input_port_select_w ) + AM_RANGE( 0x10013, 0x10013 ) AM_WRITE(input_port_select_w ) - AM_RANGE( 0x12000, 0x12000 ) AM_WRITE_LEGACY(mjvegasa_rombank_w ) - AM_RANGE( 0x12100, 0x12100 ) AM_READ_LEGACY(cafetime_dsw_r ) - AM_RANGE( 0x12200, 0x12200 ) AM_WRITE_LEGACY(cafetime_dsw_w ) - AM_RANGE( 0x12300, 0x12300 ) AM_WRITE_LEGACY(mjderngr_palbank_w ) - AM_RANGE( 0x12400, 0x12400 ) AM_WRITE_LEGACY(mjvegasa_12400_w ) - AM_RANGE( 0x12500, 0x12500 ) AM_READ_LEGACY(mjvegasa_12500_r ) + AM_RANGE( 0x12000, 0x12000 ) AM_WRITE(mjvegasa_rombank_w ) + AM_RANGE( 0x12100, 0x12100 ) AM_READ(cafetime_dsw_r ) + AM_RANGE( 0x12200, 0x12200 ) AM_WRITE(cafetime_dsw_w ) + AM_RANGE( 0x12300, 0x12300 ) AM_WRITE(mjderngr_palbank_w ) + AM_RANGE( 0x12400, 0x12400 ) AM_WRITE(mjvegasa_12400_w ) + AM_RANGE( 0x12500, 0x12500 ) AM_READ(mjvegasa_12500_r ) ADDRESS_MAP_END static ADDRESS_MAP_START( mjvegasa_iomap, AS_IO, 8, royalmah_state ) - AM_RANGE( T90_P3, T90_P3 ) AM_READWRITE_LEGACY(mjtensin_p3_r, mjvegasa_p3_w ) - AM_RANGE( T90_P4, T90_P4 ) AM_WRITE_LEGACY(mjvegasa_p4_w ) + AM_RANGE( T90_P3, T90_P3 ) AM_READWRITE(mjtensin_p3_r, mjvegasa_p3_w ) + AM_RANGE( T90_P4, T90_P4 ) AM_WRITE(mjvegasa_p4_w ) ADDRESS_MAP_END diff --git a/src/mame/drivers/sangho.c b/src/mame/drivers/sangho.c index b3aaadb2b10..36ccfabc0b3 100644 --- a/src/mame/drivers/sangho.c +++ b/src/mame/drivers/sangho.c @@ -54,6 +54,10 @@ public: UINT8 m_pzlestar_mem_bank; UINT8 m_pzlestar_rom_bank; required_device<v9938_device> m_v9938; + DECLARE_WRITE8_MEMBER(pzlestar_bank_w); + DECLARE_WRITE8_MEMBER(pzlestar_mem_bank_w); + DECLARE_READ8_MEMBER(pzlestar_mem_bank_r); + DECLARE_WRITE8_MEMBER(sexyboom_bank_w); }; @@ -152,26 +156,23 @@ static void pzlestar_map_banks(running_machine &machine) } -static WRITE8_HANDLER(pzlestar_bank_w) +WRITE8_MEMBER(sangho_state::pzlestar_bank_w) { - sangho_state *state = space->machine().driver_data<sangho_state>(); logerror("rom bank %02x\n", data); - state->m_pzlestar_rom_bank = data; - pzlestar_map_banks(space->machine()); + m_pzlestar_rom_bank = data; + pzlestar_map_banks(machine()); } -static WRITE8_HANDLER(pzlestar_mem_bank_w) +WRITE8_MEMBER(sangho_state::pzlestar_mem_bank_w) { - sangho_state *state = space->machine().driver_data<sangho_state>(); logerror("mem bank %02x\n", data); - state->m_pzlestar_mem_bank = data; - pzlestar_map_banks(space->machine()); + m_pzlestar_mem_bank = data; + pzlestar_map_banks(machine()); } -static READ8_HANDLER(pzlestar_mem_bank_r) +READ8_MEMBER(sangho_state::pzlestar_mem_bank_r) { - sangho_state *state = space->machine().driver_data<sangho_state>(); - return state->m_pzlestar_mem_bank; + return m_pzlestar_mem_bank; } static void sexyboom_map_bank(running_machine &machine, int bank) @@ -217,11 +218,10 @@ static void sexyboom_map_bank(running_machine &machine, int bank) } } -static WRITE8_HANDLER(sexyboom_bank_w) +WRITE8_MEMBER(sangho_state::sexyboom_bank_w) { - sangho_state *state = space->machine().driver_data<sangho_state>(); - state->m_sexyboom_bank[offset] = data; - sexyboom_map_bank(space->machine(), offset>>1); + m_sexyboom_bank[offset] = data; + sexyboom_map_bank(machine(), offset>>1); } static ADDRESS_MAP_START( sangho_map, AS_PROGRAM, 8, sangho_state ) @@ -236,11 +236,11 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( pzlestar_io_map, AS_IO, 8, sangho_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE( 0x7c, 0x7d) AM_DEVWRITE_LEGACY("ymsnd", ym2413_w ) - AM_RANGE( 0x91, 0x91) AM_WRITE_LEGACY(pzlestar_bank_w ) + AM_RANGE( 0x91, 0x91) AM_WRITE(pzlestar_bank_w ) AM_RANGE( 0x98, 0x9b) AM_DEVREADWRITE("v9938", v9938_device, read, write ) AM_RANGE( 0xa0, 0xa0) AM_READ_PORT("P1") AM_RANGE( 0xa1, 0xa1) AM_READ_PORT("P2") - AM_RANGE( 0xa8, 0xa8) AM_READWRITE_LEGACY(pzlestar_mem_bank_r, pzlestar_mem_bank_w ) + AM_RANGE( 0xa8, 0xa8) AM_READWRITE(pzlestar_mem_bank_r, pzlestar_mem_bank_w ) AM_RANGE( 0xf7, 0xf7) AM_READ_PORT("DSW") ADDRESS_MAP_END @@ -253,7 +253,7 @@ static ADDRESS_MAP_START( sexyboom_io_map, AS_IO, 8, sangho_state ) AM_RANGE( 0xa1, 0xa1) AM_READ_PORT("P2") AM_RANGE( 0xf0, 0xf3) AM_DEVREADWRITE("v9938", v9938_device, read, write ) AM_RANGE( 0xf7, 0xf7) AM_READ_PORT("DSW") - AM_RANGE( 0xf8, 0xff) AM_WRITE_LEGACY(sexyboom_bank_w ) + AM_RANGE( 0xf8, 0xff) AM_WRITE(sexyboom_bank_w ) ADDRESS_MAP_END diff --git a/src/mame/drivers/sbowling.c b/src/mame/drivers/sbowling.c index 866f9c997a9..dab8ebcc959 100644 --- a/src/mame/drivers/sbowling.c +++ b/src/mame/drivers/sbowling.c @@ -63,6 +63,13 @@ public: UINT8 m_pix[2]; required_device<cpu_device> m_maincpu; + DECLARE_WRITE8_MEMBER(sbw_videoram_w); + DECLARE_WRITE8_MEMBER(pix_shift_w); + DECLARE_WRITE8_MEMBER(pix_data_w); + DECLARE_READ8_MEMBER(pix_data_r); + DECLARE_WRITE8_MEMBER(system_w); + DECLARE_WRITE8_MEMBER(graph_control_w); + DECLARE_READ8_MEMBER(controls_r); }; static TILE_GET_INFO( get_sb_tile_info ) @@ -84,25 +91,24 @@ static void plot_pixel_sbw(bitmap_ind16 *tmpbitmap, int x, int y, int col, int f tmpbitmap->pix16(y, x) = col; } -static WRITE8_HANDLER( sbw_videoram_w ) +WRITE8_MEMBER(sbowling_state::sbw_videoram_w) { - sbowling_state *state = space->machine().driver_data<sbowling_state>(); - int flip = flip_screen_get(space->machine()); + int flip = flip_screen_get(machine()); int x,y,i,v1,v2; - state->m_videoram[offset] = data; + m_videoram[offset] = data; offset &= 0x1fff; y = offset / 32; x = (offset % 32) * 8; - v1 = state->m_videoram[offset]; - v2 = state->m_videoram[offset+0x2000]; + v1 = m_videoram[offset]; + v2 = m_videoram[offset+0x2000]; for (i = 0; i < 8; i++) { - plot_pixel_sbw(state->m_tmpbitmap, x++, y, state->m_color_prom_address | ( ((v1&1)*0x20) | ((v2&1)*0x40) ), flip); + plot_pixel_sbw(m_tmpbitmap, x++, y, m_color_prom_address | ( ((v1&1)*0x20) | ((v2&1)*0x40) ), flip); v1 >>= 1; v2 >>= 1; } @@ -126,28 +132,25 @@ static VIDEO_START(sbowling) state->m_sb_tilemap = tilemap_create(machine, get_sb_tile_info, tilemap_scan_rows, 8, 8, 32, 32); } -static WRITE8_HANDLER( pix_shift_w ) +WRITE8_MEMBER(sbowling_state::pix_shift_w) { - sbowling_state *state = space->machine().driver_data<sbowling_state>(); - state->m_pix_sh = data; + m_pix_sh = data; } -static WRITE8_HANDLER( pix_data_w ) +WRITE8_MEMBER(sbowling_state::pix_data_w) { - sbowling_state *state = space->machine().driver_data<sbowling_state>(); - state->m_pix[0] = state->m_pix[1]; - state->m_pix[1] = data; + m_pix[0] = m_pix[1]; + m_pix[1] = data; } -static READ8_HANDLER( pix_data_r ) +READ8_MEMBER(sbowling_state::pix_data_r) { - sbowling_state *state = space->machine().driver_data<sbowling_state>(); UINT32 p1, p0; int res; - int sh = state->m_pix_sh & 7; + int sh = m_pix_sh & 7; - p1 = state->m_pix[1]; - p0 = state->m_pix[0]; + p1 = m_pix[1]; + p0 = m_pix[0]; res = (((p1 << (sh+8)) | (p0 << sh)) & 0xff00) >> 8; @@ -169,7 +172,7 @@ static TIMER_DEVICE_CALLBACK( sbw_interrupt ) } -static WRITE8_HANDLER (system_w) +WRITE8_MEMBER(sbowling_state::system_w) { /* 76543210 @@ -178,20 +181,20 @@ static WRITE8_HANDLER (system_w) -----x-- 1 ? ----x--- flip screen/controls */ - sbowling_state *state = space->machine().driver_data<sbowling_state>(); - flip_screen_set(space->machine(), data&1); - if ((state->m_sbw_system^data)&1) + flip_screen_set(machine(), data&1); + + if ((m_sbw_system^data)&1) { int offs; for (offs = 0;offs < 0x4000; offs++) - sbw_videoram_w(space, offs, state->m_videoram[offs]); + sbw_videoram_w(space, offs, m_videoram[offs]); } - state->m_sbw_system = data; + m_sbw_system = data; } -static WRITE8_HANDLER(graph_control_w) +WRITE8_MEMBER(sbowling_state::graph_control_w) { /* 76543210 @@ -201,27 +204,26 @@ static WRITE8_HANDLER(graph_control_w) xx------ color PROM address lines A4,A3 */ - sbowling_state *state = space->machine().driver_data<sbowling_state>(); - state->m_color_prom_address = ((data&0x07)<<7) | ((data&0xc0)>>3); - state->m_bgmap = ((data>>4)^3) & 0x3; - state->m_sb_tilemap->mark_all_dirty(); + m_color_prom_address = ((data&0x07)<<7) | ((data&0xc0)>>3); + + m_bgmap = ((data>>4)^3) & 0x3; + m_sb_tilemap->mark_all_dirty(); } -static READ8_HANDLER (controls_r) +READ8_MEMBER(sbowling_state::controls_r) { - sbowling_state *state = space->machine().driver_data<sbowling_state>(); - if (state->m_sbw_system & 2) - return input_port_read(space->machine(), "TRACKY"); + if (m_sbw_system & 2) + return input_port_read(machine(), "TRACKY"); else - return input_port_read(space->machine(), "TRACKX"); + return input_port_read(machine(), "TRACKX"); } static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, sbowling_state ) AM_RANGE(0x0000, 0x2fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_RAM_WRITE_LEGACY(sbw_videoram_w) AM_BASE(m_videoram) + AM_RANGE(0x8000, 0xbfff) AM_RAM_WRITE(sbw_videoram_w) AM_BASE(m_videoram) AM_RANGE(0xf800, 0xf801) AM_DEVWRITE_LEGACY("aysnd", ay8910_address_data_w) AM_RANGE(0xf801, 0xf801) AM_DEVREAD_LEGACY("aysnd", ay8910_r) AM_RANGE(0xfc00, 0xffff) AM_RAM @@ -230,11 +232,11 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( port_map, AS_IO, 8, sbowling_state ) AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE_LEGACY(watchdog_reset_w) - AM_RANGE(0x01, 0x01) AM_READWRITE_LEGACY(controls_r, pix_data_w) - AM_RANGE(0x02, 0x02) AM_READWRITE_LEGACY(pix_data_r, pix_shift_w) + AM_RANGE(0x01, 0x01) AM_READWRITE(controls_r, pix_data_w) + AM_RANGE(0x02, 0x02) AM_READWRITE(pix_data_r, pix_shift_w) AM_RANGE(0x03, 0x03) AM_READ_PORT("IN1") AM_WRITENOP - AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW0") AM_WRITE_LEGACY(system_w) - AM_RANGE(0x05, 0x05) AM_READ_PORT("DSW1") AM_WRITE_LEGACY(graph_control_w) + AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW0") AM_WRITE(system_w) + AM_RANGE(0x05, 0x05) AM_READ_PORT("DSW1") AM_WRITE(graph_control_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/sbrkout.c b/src/mame/drivers/sbrkout.c index ee049331441..59eb0bb1561 100644 --- a/src/mame/drivers/sbrkout.c +++ b/src/mame/drivers/sbrkout.c @@ -50,6 +50,17 @@ public: UINT8 m_sync2_value; UINT8 m_pot_mask[2]; UINT8 m_pot_trigger[2]; + DECLARE_WRITE8_MEMBER(irq_ack_w); + DECLARE_READ8_MEMBER(switches_r); + DECLARE_WRITE8_MEMBER(pot_mask1_w); + DECLARE_WRITE8_MEMBER(pot_mask2_w); + DECLARE_WRITE8_MEMBER(start_1_led_w); + DECLARE_WRITE8_MEMBER(start_2_led_w); + DECLARE_WRITE8_MEMBER(serve_led_w); + DECLARE_WRITE8_MEMBER(coincount_w); + DECLARE_READ8_MEMBER(sync_r); + DECLARE_READ8_MEMBER(sync2_r); + DECLARE_WRITE8_MEMBER(sbrkout_videoram_w); }; @@ -142,9 +153,9 @@ static TIMER_CALLBACK( scanline_callback ) } -static WRITE8_HANDLER( irq_ack_w ) +WRITE8_MEMBER(sbrkout_state::irq_ack_w) { - cputag_set_input_line(space->machine(), "maincpu", 0, CLEAR_LINE); + cputag_set_input_line(machine(), "maincpu", 0, CLEAR_LINE); } @@ -155,32 +166,31 @@ static WRITE8_HANDLER( irq_ack_w ) * *************************************/ -static READ8_HANDLER( switches_r ) +READ8_MEMBER(sbrkout_state::switches_r) { - sbrkout_state *state = space->machine().driver_data<sbrkout_state>(); UINT8 result = 0xff; /* DIP switches are selected by ADR0+ADR1 if ADR3 == 0 */ if ((offset & 0x0b) == 0x00) - result &= (input_port_read(space->machine(), "DIPS") << 6) | 0x3f; + result &= (input_port_read(machine(), "DIPS") << 6) | 0x3f; if ((offset & 0x0b) == 0x01) - result &= (input_port_read(space->machine(), "DIPS") << 4) | 0x3f; + result &= (input_port_read(machine(), "DIPS") << 4) | 0x3f; if ((offset & 0x0b) == 0x02) - result &= (input_port_read(space->machine(), "DIPS") << 0) | 0x3f; + result &= (input_port_read(machine(), "DIPS") << 0) | 0x3f; if ((offset & 0x0b) == 0x03) - result &= (input_port_read(space->machine(), "DIPS") << 2) | 0x3f; + result &= (input_port_read(machine(), "DIPS") << 2) | 0x3f; /* other switches are selected by ADR0+ADR1+ADR2 if ADR4 == 0 */ if ((offset & 0x17) == 0x00) - result &= (input_port_read(space->machine(), "SELECT") << 7) | 0x7f; + result &= (input_port_read(machine(), "SELECT") << 7) | 0x7f; if ((offset & 0x17) == 0x04) - result &= ((state->m_pot_trigger[0] & ~state->m_pot_mask[0]) << 7) | 0x7f; + result &= ((m_pot_trigger[0] & ~m_pot_mask[0]) << 7) | 0x7f; if ((offset & 0x17) == 0x05) - result &= ((state->m_pot_trigger[1] & ~state->m_pot_mask[1]) << 7) | 0x7f; + result &= ((m_pot_trigger[1] & ~m_pot_mask[1]) << 7) | 0x7f; if ((offset & 0x17) == 0x06) - result &= input_port_read(space->machine(), "SERVE"); + result &= input_port_read(machine(), "SERVE"); if ((offset & 0x17) == 0x07) - result &= (input_port_read(space->machine(), "SELECT") << 6) | 0x7f; + result &= (input_port_read(machine(), "SELECT") << 6) | 0x7f; return result; } @@ -204,21 +214,19 @@ static TIMER_CALLBACK( pot_trigger_callback ) } -static WRITE8_HANDLER( pot_mask1_w ) +WRITE8_MEMBER(sbrkout_state::pot_mask1_w) { - sbrkout_state *state = space->machine().driver_data<sbrkout_state>(); - state->m_pot_mask[0] = ~offset & 1; - state->m_pot_trigger[0] = 0; - update_nmi_state(space->machine()); + m_pot_mask[0] = ~offset & 1; + m_pot_trigger[0] = 0; + update_nmi_state(machine()); } -static WRITE8_HANDLER( pot_mask2_w ) +WRITE8_MEMBER(sbrkout_state::pot_mask2_w) { - sbrkout_state *state = space->machine().driver_data<sbrkout_state>(); - state->m_pot_mask[1] = ~offset & 1; - state->m_pot_trigger[1] = 0; - update_nmi_state(space->machine()); + m_pot_mask[1] = ~offset & 1; + m_pot_trigger[1] = 0; + update_nmi_state(machine()); } @@ -235,27 +243,27 @@ static WRITE8_HANDLER( pot_mask2_w ) reversed for the Serve LED, which has a NOT on the signal. */ -static WRITE8_HANDLER( start_1_led_w ) +WRITE8_MEMBER(sbrkout_state::start_1_led_w) { output_set_led_value(0, offset & 1); } -static WRITE8_HANDLER( start_2_led_w ) +WRITE8_MEMBER(sbrkout_state::start_2_led_w) { output_set_led_value(1, offset & 1); } -static WRITE8_HANDLER( serve_led_w ) +WRITE8_MEMBER(sbrkout_state::serve_led_w) { output_set_led_value(0, ~offset & 1); } -static WRITE8_HANDLER( coincount_w ) +WRITE8_MEMBER(sbrkout_state::coincount_w) { - coin_counter_w(space->machine(), 0, offset & 1); + coin_counter_w(machine(), 0, offset & 1); } @@ -266,19 +274,17 @@ static WRITE8_HANDLER( coincount_w ) * *************************************/ -static READ8_HANDLER( sync_r ) +READ8_MEMBER(sbrkout_state::sync_r) { - sbrkout_state *state = space->machine().driver_data<sbrkout_state>(); - int hpos = space->machine().primary_screen->hpos(); - state->m_sync2_value = (hpos >= 128 && hpos <= space->machine().primary_screen->visible_area().max_x); - return space->machine().primary_screen->vpos(); + int hpos = machine().primary_screen->hpos(); + m_sync2_value = (hpos >= 128 && hpos <= machine().primary_screen->visible_area().max_x); + return machine().primary_screen->vpos(); } -static READ8_HANDLER( sync2_r ) +READ8_MEMBER(sbrkout_state::sync2_r) { - sbrkout_state *state = space->machine().driver_data<sbrkout_state>(); - return (state->m_sync2_value << 7) | 0x7f; + return (m_sync2_value << 7) | 0x7f; } @@ -305,12 +311,11 @@ static VIDEO_START( sbrkout ) } -static WRITE8_HANDLER( sbrkout_videoram_w ) +WRITE8_MEMBER(sbrkout_state::sbrkout_videoram_w) { - sbrkout_state *state = space->machine().driver_data<sbrkout_state>(); - UINT8 *videoram = state->m_videoram; + UINT8 *videoram = m_videoram; videoram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_bg_tilemap->mark_tile_dirty(offset); } @@ -352,21 +357,21 @@ static SCREEN_UPDATE_IND16( sbrkout ) static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, sbrkout_state ) ADDRESS_MAP_GLOBAL_MASK(0x3fff) AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x380) AM_RAMBANK("bank1") - AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE_LEGACY(sbrkout_videoram_w) AM_BASE(m_videoram) - AM_RANGE(0x0800, 0x083f) AM_READ_LEGACY(switches_r) + AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE(sbrkout_videoram_w) AM_BASE(m_videoram) + AM_RANGE(0x0800, 0x083f) AM_READ(switches_r) AM_RANGE(0x0840, 0x0840) AM_MIRROR(0x003f) AM_READ_PORT("COIN") AM_RANGE(0x0880, 0x0880) AM_MIRROR(0x003f) AM_READ_PORT("START") AM_RANGE(0x08c0, 0x08c0) AM_MIRROR(0x003f) AM_READ_PORT("SERVICE") - AM_RANGE(0x0c00, 0x0c00) AM_MIRROR(0x03ff) AM_READ_LEGACY(sync_r) - AM_RANGE(0x0c10, 0x0c11) AM_MIRROR(0x000e) AM_WRITE_LEGACY(serve_led_w) - AM_RANGE(0x0c30, 0x0c31) AM_MIRROR(0x000e) AM_WRITE_LEGACY(start_1_led_w) - AM_RANGE(0x0c40, 0x0c41) AM_MIRROR(0x000e) AM_WRITE_LEGACY(start_2_led_w) - AM_RANGE(0x0c50, 0x0c51) AM_MIRROR(0x000e) AM_WRITE_LEGACY(pot_mask1_w) - AM_RANGE(0x0c60, 0x0c61) AM_MIRROR(0x000e) AM_WRITE_LEGACY(pot_mask2_w) - AM_RANGE(0x0c70, 0x0c71) AM_MIRROR(0x000e) AM_WRITE_LEGACY(coincount_w) + AM_RANGE(0x0c00, 0x0c00) AM_MIRROR(0x03ff) AM_READ(sync_r) + AM_RANGE(0x0c10, 0x0c11) AM_MIRROR(0x000e) AM_WRITE(serve_led_w) + AM_RANGE(0x0c30, 0x0c31) AM_MIRROR(0x000e) AM_WRITE(start_1_led_w) + AM_RANGE(0x0c40, 0x0c41) AM_MIRROR(0x000e) AM_WRITE(start_2_led_w) + AM_RANGE(0x0c50, 0x0c51) AM_MIRROR(0x000e) AM_WRITE(pot_mask1_w) + AM_RANGE(0x0c60, 0x0c61) AM_MIRROR(0x000e) AM_WRITE(pot_mask2_w) + AM_RANGE(0x0c70, 0x0c71) AM_MIRROR(0x000e) AM_WRITE(coincount_w) AM_RANGE(0x0c80, 0x0c80) AM_MIRROR(0x007f) AM_WRITE_LEGACY(watchdog_reset_w) - AM_RANGE(0x0e00, 0x0e00) AM_MIRROR(0x007f) AM_WRITE_LEGACY(irq_ack_w) - AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x03ff) AM_READ_LEGACY(sync2_r) + AM_RANGE(0x0e00, 0x0e00) AM_MIRROR(0x007f) AM_WRITE(irq_ack_w) + AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x03ff) AM_READ(sync2_r) AM_RANGE(0x2800, 0x3fff) AM_ROM ADDRESS_MAP_END diff --git a/src/mame/drivers/segald.c b/src/mame/drivers/segald.c index 8b8deca2c0a..47f6926e22c 100644 --- a/src/mame/drivers/segald.c +++ b/src/mame/drivers/segald.c @@ -42,6 +42,16 @@ public: UINT8 m_ldv1000_input_latch; UINT8 m_ldv1000_output_latch; + DECLARE_READ8_MEMBER(astron_DISC_read); + DECLARE_READ8_MEMBER(astron_OUT_read); + DECLARE_READ8_MEMBER(astron_OBJ_read); + DECLARE_READ8_MEMBER(astron_COLOR_read); + DECLARE_WRITE8_MEMBER(astron_DISC_write); + DECLARE_WRITE8_MEMBER(astron_OUT_write); + DECLARE_WRITE8_MEMBER(astron_OBJ_write); + DECLARE_WRITE8_MEMBER(astron_COLOR_write); + DECLARE_WRITE8_MEMBER(astron_FIX_write); + DECLARE_WRITE8_MEMBER(astron_io_bankswitch_w); }; /* VIDEO GOODS */ @@ -104,61 +114,55 @@ static SCREEN_UPDATE_IND16( astron ) /* MEMORY HANDLERS */ /* READS */ -static READ8_HANDLER( astron_DISC_read ) +READ8_MEMBER(segald_state::astron_DISC_read) { - segald_state *state = space->machine().driver_data<segald_state>(); - if (state->m_nmi_enable) - state->m_ldv1000_input_latch = state->m_laserdisc->status_r(); + if (m_nmi_enable) + m_ldv1000_input_latch = m_laserdisc->status_r(); - logerror("DISC read (0x%04x) @ 0x%04x [0x%x]\n", state->m_ldv1000_input_latch, offset, cpu_get_pc(&space->device())); + logerror("DISC read (0x%04x) @ 0x%04x [0x%x]\n", m_ldv1000_input_latch, offset, cpu_get_pc(&space.device())); - return state->m_ldv1000_input_latch; + return m_ldv1000_input_latch; } -static READ8_HANDLER( astron_OUT_read ) +READ8_MEMBER(segald_state::astron_OUT_read) { - segald_state *state = space->machine().driver_data<segald_state>(); - logerror("OUT read (0x%04x) @ 0x%04x [0x%x]\n", state->m_out_RAM[offset], offset, cpu_get_pc(&space->device())); - return state->m_out_RAM[offset]; + logerror("OUT read (0x%04x) @ 0x%04x [0x%x]\n", m_out_RAM[offset], offset, cpu_get_pc(&space.device())); + return m_out_RAM[offset]; } -static READ8_HANDLER( astron_OBJ_read ) +READ8_MEMBER(segald_state::astron_OBJ_read) { - segald_state *state = space->machine().driver_data<segald_state>(); - logerror("OBJ read (0x%04x) @ 0x%04x [0x%x]\n", state->m_obj_RAM[offset], offset, cpu_get_pc(&space->device())); - return state->m_obj_RAM[offset]; + logerror("OBJ read (0x%04x) @ 0x%04x [0x%x]\n", m_obj_RAM[offset], offset, cpu_get_pc(&space.device())); + return m_obj_RAM[offset]; } -static READ8_HANDLER( astron_COLOR_read ) +READ8_MEMBER(segald_state::astron_COLOR_read) { - segald_state *state = space->machine().driver_data<segald_state>(); - logerror("COLOR read (0x%04x) @ 0x%04x [0x%x]\n", state->m_color_RAM[offset], offset, cpu_get_pc(&space->device())); - return state->m_color_RAM[offset]; + logerror("COLOR read (0x%04x) @ 0x%04x [0x%x]\n", m_color_RAM[offset], offset, cpu_get_pc(&space.device())); + return m_color_RAM[offset]; } /* WRITES */ -static WRITE8_HANDLER( astron_DISC_write ) +WRITE8_MEMBER(segald_state::astron_DISC_write) { - segald_state *state = space->machine().driver_data<segald_state>(); - logerror("DISC write : 0x%04x @ 0x%04x [0x%x]\n", data, offset, cpu_get_pc(&space->device())); + logerror("DISC write : 0x%04x @ 0x%04x [0x%x]\n", data, offset, cpu_get_pc(&space.device())); - state->m_ldv1000_output_latch = data; + m_ldv1000_output_latch = data; - if (state->m_nmi_enable) - state->m_laserdisc->data_w(state->m_ldv1000_output_latch); + if (m_nmi_enable) + m_laserdisc->data_w(m_ldv1000_output_latch); } -static WRITE8_HANDLER( astron_OUT_write ) +WRITE8_MEMBER(segald_state::astron_OUT_write) { - segald_state *state = space->machine().driver_data<segald_state>(); - logerror("OUT write : 0x%04x @ 0x%04x [0x%x]\n", data, offset, cpu_get_pc(&space->device())); + logerror("OUT write : 0x%04x @ 0x%04x [0x%x]\n", data, offset, cpu_get_pc(&space.device())); switch(offset) { @@ -176,7 +180,7 @@ static WRITE8_HANDLER( astron_OUT_write ) /* data & 0x10 = Continue Lamp */ /* data & 0x20 = CHC */ - state->m_nmi_enable = data & 0x40; /* NMIE */ + m_nmi_enable = data & 0x40; /* NMIE */ /* data & 0x80 = CN0 Pin 19 */ break; @@ -189,30 +193,28 @@ static WRITE8_HANDLER( astron_OUT_write ) break; } - state->m_out_RAM[offset] = data; + m_out_RAM[offset] = data; } -static WRITE8_HANDLER( astron_OBJ_write ) +WRITE8_MEMBER(segald_state::astron_OBJ_write) { - segald_state *state = space->machine().driver_data<segald_state>(); - state->m_obj_RAM[offset] = data; - logerror("OBJ write : 0x%04x @ 0x%04x [0x%x]\n", data, offset, cpu_get_pc(&space->device())); + m_obj_RAM[offset] = data; + logerror("OBJ write : 0x%04x @ 0x%04x [0x%x]\n", data, offset, cpu_get_pc(&space.device())); } -static WRITE8_HANDLER( astron_COLOR_write ) +WRITE8_MEMBER(segald_state::astron_COLOR_write) { - segald_state *state = space->machine().driver_data<segald_state>(); UINT8 r, g, b, a; UINT8 highBits, lowBits; const UINT8 palIndex = offset >> 1; /* Combine */ - state->m_color_RAM[offset] = data; + m_color_RAM[offset] = data; /* Easy access */ - highBits = state->m_color_RAM[(palIndex<<1)+1] & 0x0f; - lowBits = state->m_color_RAM[(palIndex<<1)]; + highBits = m_color_RAM[(palIndex<<1)+1] & 0x0f; + lowBits = m_color_RAM[(palIndex<<1)]; /* 4-bit RGB */ r = (lowBits & 0x0f); @@ -220,22 +222,21 @@ static WRITE8_HANDLER( astron_COLOR_write ) b = (highBits & 0x0f); a = (highBits & 0x80) ? 0 : 255; - palette_set_color(space->machine(), palIndex, MAKE_ARGB(a, r, g, b)); - logerror("COLOR write : 0x%04x @ 0x%04x [0x%x]\n", data, offset, cpu_get_pc(&space->device())); + palette_set_color(machine(), palIndex, MAKE_ARGB(a, r, g, b)); + logerror("COLOR write : 0x%04x @ 0x%04x [0x%x]\n", data, offset, cpu_get_pc(&space.device())); } -static WRITE8_HANDLER( astron_FIX_write ) +WRITE8_MEMBER(segald_state::astron_FIX_write) { - segald_state *state = space->machine().driver_data<segald_state>(); - state->m_fix_RAM[offset] = data; - /* logerror("FIX write : 0x%04x @ 0x%04x [0x%x]\n", data, offset, cpu_get_pc(&space->device())); */ + m_fix_RAM[offset] = data; + /* logerror("FIX write : 0x%04x @ 0x%04x [0x%x]\n", data, offset, cpu_get_pc(&space.device())); */ } -static WRITE8_HANDLER( astron_io_bankswitch_w ) +WRITE8_MEMBER(segald_state::astron_io_bankswitch_w) { logerror("Banking 0x%x\n", data); - memory_set_bank(space->machine(), "bank1", data & 0xff); + memory_set_bank(machine(), "bank1", data & 0xff); } @@ -246,15 +247,15 @@ static ADDRESS_MAP_START( mainmem, AS_PROGRAM, 8, segald_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xc7ff) AM_READWRITE_LEGACY(astron_OBJ_read, astron_OBJ_write) AM_BASE(m_obj_RAM) /* OBJ according to the schematics (sprite) */ - AM_RANGE(0xc800, 0xcfff) AM_READWRITE_LEGACY(astron_DISC_read, astron_DISC_write) /* DISC interface according to schematics */ + AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(astron_OBJ_read, astron_OBJ_write) AM_BASE(m_obj_RAM) /* OBJ according to the schematics (sprite) */ + AM_RANGE(0xc800, 0xcfff) AM_READWRITE(astron_DISC_read, astron_DISC_write) /* DISC interface according to schematics */ AM_RANGE(0xd000, 0xd000) AM_READ_PORT("DSWA") /* SW bank 2 (DIPs) */ AM_RANGE(0xd001, 0xd001) AM_READ_PORT("DSWB") /* SW bank 3 (DIPs) */ AM_RANGE(0xd002, 0xd002) AM_READ_PORT("IN0") /* SW bank 0 (IO) */ AM_RANGE(0xd003, 0xd003) AM_READ_PORT("IN1") /* SW bank 1 (IO) */ - AM_RANGE(0xd800, 0xd803) AM_READWRITE_LEGACY(astron_OUT_read, astron_OUT_write) AM_BASE(m_out_RAM) /* OUT according to schematics (output port) */ - AM_RANGE(0xe000, 0xe1ff) AM_READWRITE_LEGACY(astron_COLOR_read, astron_COLOR_write) AM_BASE(m_color_RAM) /* COLOR according to the schematics */ - AM_RANGE(0xf000, 0xf7ff) AM_WRITE_LEGACY(astron_FIX_write) AM_BASE(m_fix_RAM) /* FIX according to schematics (characters) */ + AM_RANGE(0xd800, 0xd803) AM_READWRITE(astron_OUT_read, astron_OUT_write) AM_BASE(m_out_RAM) /* OUT according to schematics (output port) */ + AM_RANGE(0xe000, 0xe1ff) AM_READWRITE(astron_COLOR_read, astron_COLOR_write) AM_BASE(m_color_RAM) /* COLOR according to the schematics */ + AM_RANGE(0xf000, 0xf7ff) AM_WRITE(astron_FIX_write) AM_BASE(m_fix_RAM) /* FIX according to schematics (characters) */ AM_RANGE(0xf800, 0xffff) AM_RAM /* RAM according to schematics */ ADDRESS_MAP_END @@ -262,7 +263,7 @@ ADDRESS_MAP_END /* I/O MAP */ static ADDRESS_MAP_START( mainport, AS_IO, 8, segald_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_WRITE_LEGACY(astron_io_bankswitch_w) + AM_RANGE(0x00, 0x01) AM_WRITE(astron_io_bankswitch_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/sengokmj.c b/src/mame/drivers/sengokmj.c index 035bc927b69..1251eebc210 100644 --- a/src/mame/drivers/sengokmj.c +++ b/src/mame/drivers/sengokmj.c @@ -67,51 +67,51 @@ public: UINT16 m_sengokumj_mux_data; UINT8 m_hopper_io; + DECLARE_READ16_MEMBER(mahjong_panel_r); + DECLARE_WRITE16_MEMBER(mahjong_panel_w); + DECLARE_WRITE16_MEMBER(sengokmj_out_w); + DECLARE_READ16_MEMBER(sengokmj_system_r); }; /* Multiplexer device for the mahjong panel */ -static READ16_HANDLER( mahjong_panel_r ) +READ16_MEMBER(sengokmj_state::mahjong_panel_r) { - sengokmj_state *state = space->machine().driver_data<sengokmj_state>(); - switch(state->m_sengokumj_mux_data) + switch(m_sengokumj_mux_data) { - case 0x0100: return input_port_read(space->machine(), "KEY0"); - case 0x0200: return input_port_read(space->machine(), "KEY1"); - case 0x0400: return input_port_read(space->machine(), "KEY2"); - case 0x0800: return input_port_read(space->machine(), "KEY3"); - case 0x1000: return input_port_read(space->machine(), "KEY4"); - case 0x2000: return input_port_read(space->machine(), "UNUSED"); + case 0x0100: return input_port_read(machine(), "KEY0"); + case 0x0200: return input_port_read(machine(), "KEY1"); + case 0x0400: return input_port_read(machine(), "KEY2"); + case 0x0800: return input_port_read(machine(), "KEY3"); + case 0x1000: return input_port_read(machine(), "KEY4"); + case 0x2000: return input_port_read(machine(), "UNUSED"); } return 0xffff; } -static WRITE16_HANDLER( mahjong_panel_w ) +WRITE16_MEMBER(sengokmj_state::mahjong_panel_w) { - sengokmj_state *state = space->machine().driver_data<sengokmj_state>(); - state->m_sengokumj_mux_data = data; + m_sengokumj_mux_data = data; } -static WRITE16_HANDLER( sengokmj_out_w ) +WRITE16_MEMBER(sengokmj_state::sengokmj_out_w) { - sengokmj_state *state = space->machine().driver_data<sengokmj_state>(); /* ---- ---- ---x ---- J.P. Signal (?)*/ /* ---- ---- ---- -x-- Coin counter (done AFTER that you press start)*/ /* ---- ---- ---- --x- Cash enable (lockout)*/ /* ---- ---- ---- ---x Hopper 10 */ - coin_lockout_w(space->machine(), 0,~data & 2); - coin_lockout_w(space->machine(), 1,~data & 2); - coin_counter_w(space->machine(), 0,data & 4); - state->m_hopper_io = ((data & 1)<<6); -// popmessage("%02x",state->m_hopper_io); + coin_lockout_w(machine(), 0,~data & 2); + coin_lockout_w(machine(), 1,~data & 2); + coin_counter_w(machine(), 0,data & 4); + m_hopper_io = ((data & 1)<<6); +// popmessage("%02x",m_hopper_io); } -static READ16_HANDLER( sengokmj_system_r ) +READ16_MEMBER(sengokmj_state::sengokmj_system_r) { - sengokmj_state *state = space->machine().driver_data<sengokmj_state>(); - return (input_port_read(space->machine(), "SYSTEM") & 0xffbf) | state->m_hopper_io; + return (input_port_read(machine(), "SYSTEM") & 0xffbf) | m_hopper_io; } static ADDRESS_MAP_START( sengokmj_map, AS_PROGRAM, 16, sengokmj_state ) @@ -134,11 +134,11 @@ static ADDRESS_MAP_START( sengokmj_io_map, AS_IO, 16, sengokmj_state ) // AM_RANGE(0x8080, 0x8081) CRTC extra register? // AM_RANGE(0x80c0, 0x80c1) CRTC extra register? // AM_RANGE(0x8100, 0x8101) AM_WRITENOP // always 0 - AM_RANGE(0x8180, 0x8181) AM_WRITE_LEGACY(sengokmj_out_w) - AM_RANGE(0x8140, 0x8141) AM_WRITE_LEGACY(mahjong_panel_w) + AM_RANGE(0x8180, 0x8181) AM_WRITE(sengokmj_out_w) + AM_RANGE(0x8140, 0x8141) AM_WRITE(mahjong_panel_w) AM_RANGE(0xc000, 0xc001) AM_READ_PORT("DSW1") - AM_RANGE(0xc002, 0xc003) AM_READ_LEGACY(mahjong_panel_r) - AM_RANGE(0xc004, 0xc005) AM_READ_LEGACY(sengokmj_system_r) //switches + AM_RANGE(0xc002, 0xc003) AM_READ(mahjong_panel_r) + AM_RANGE(0xc004, 0xc005) AM_READ(sengokmj_system_r) //switches ADDRESS_MAP_END diff --git a/src/mame/drivers/sfbonus.c b/src/mame/drivers/sfbonus.c index 5afa4a4d5c3..b79891bf483 100644 --- a/src/mame/drivers/sfbonus.c +++ b/src/mame/drivers/sfbonus.c @@ -301,6 +301,18 @@ public: UINT8* m_3000_regs; UINT8* m_2801_regs; UINT8* m_2c01_regs; + DECLARE_WRITE8_MEMBER(sfbonus_videoram_w); + DECLARE_WRITE8_MEMBER(sfbonus_bank_w); + DECLARE_READ8_MEMBER(sfbonus_2800_r); + DECLARE_READ8_MEMBER(sfbonus_2801_r); + DECLARE_READ8_MEMBER(sfbonus_2c00_r); + DECLARE_READ8_MEMBER(sfbonus_2c01_r); + DECLARE_READ8_MEMBER(sfbonus_3800_r); + DECLARE_WRITE8_MEMBER(sfbonus_1800_w); + DECLARE_WRITE8_MEMBER(sfbonus_3800_w); + DECLARE_WRITE8_MEMBER(sfbonus_3000_w); + DECLARE_WRITE8_MEMBER(sfbonus_2801_w); + DECLARE_WRITE8_MEMBER(sfbonus_2c01_w); }; @@ -702,48 +714,47 @@ static TILE_GET_INFO( get_sfbonus_reel4_tile_info ) } -static WRITE8_HANDLER( sfbonus_videoram_w ) +WRITE8_MEMBER(sfbonus_state::sfbonus_videoram_w) { - sfbonus_state *state = space->machine().driver_data<sfbonus_state>(); if (offset<0x4000) /* 0x0000 - 0x3fff */ { - state->m_tilemap_ram[offset] = data; - state->m_tilemap->mark_tile_dirty(offset/2); + m_tilemap_ram[offset] = data; + m_tilemap->mark_tile_dirty(offset/2); } else if (offset<0x4800) /* 0x4000 - 0x47ff */ { offset-=0x4000; - state->m_reel_ram[offset] = data; - state->m_reel_tilemap->mark_tile_dirty(offset/2); + m_reel_ram[offset] = data; + m_reel_tilemap->mark_tile_dirty(offset/2); } else if (offset<0x5000) /* 0x4800 - 0x4fff */ { offset-=0x4800; - state->m_reel2_ram[offset] = data; - state->m_reel2_tilemap->mark_tile_dirty(offset/2); + m_reel2_ram[offset] = data; + m_reel2_tilemap->mark_tile_dirty(offset/2); } else if (offset<0x5800) /* 0x5000 - 0x57ff */ { offset-=0x5000; - state->m_reel3_ram[offset] = data; - state->m_reel3_tilemap->mark_tile_dirty(offset/2); + m_reel3_ram[offset] = data; + m_reel3_tilemap->mark_tile_dirty(offset/2); } else if (offset<0x6000) /* 0x5800 - 0x5fff */ { offset-=0x5800; - state->m_reel4_ram[offset] = data; - state->m_reel4_tilemap->mark_tile_dirty(offset/2); + m_reel4_ram[offset] = data; + m_reel4_tilemap->mark_tile_dirty(offset/2); } else if (offset<0x8000) { offset -=0x6000; // scroll regs etc. //logerror("access vram at [%04x] <- %02x\n",offset,data); - state->m_videoram[offset] = data; + m_videoram[offset] = data; } else { @@ -1057,77 +1068,72 @@ static SCREEN_UPDATE_IND16(sfbonus) static ADDRESS_MAP_START( sfbonus_map, AS_PROGRAM, 8, sfbonus_state ) - AM_RANGE(0x0000, 0xefff) AM_ROMBANK("bank1") AM_WRITE_LEGACY(sfbonus_videoram_w) + AM_RANGE(0x0000, 0xefff) AM_ROMBANK("bank1") AM_WRITE(sfbonus_videoram_w) AM_RANGE(0xf000, 0xffff) AM_RAM AM_BASE(m_nvram) AM_SIZE(m_nvram_size) ADDRESS_MAP_END -static WRITE8_HANDLER( sfbonus_bank_w ) +WRITE8_MEMBER(sfbonus_state::sfbonus_bank_w) { - UINT8 *ROM = space->machine().region("maincpu")->base(); + UINT8 *ROM = machine().region("maincpu")->base(); UINT8 bank; bank = data & 7; - memory_set_bankptr(space->machine(), "bank1", &ROM[bank * 0x10000]); + memory_set_bankptr(machine(), "bank1", &ROM[bank * 0x10000]); } -static READ8_HANDLER( sfbonus_2800_r ) +READ8_MEMBER(sfbonus_state::sfbonus_2800_r) { - return space->machine().rand(); + return machine().rand(); } -static READ8_HANDLER( sfbonus_2801_r ) +READ8_MEMBER(sfbonus_state::sfbonus_2801_r) { - return space->machine().rand(); + return machine().rand(); } -static READ8_HANDLER( sfbonus_2c00_r ) +READ8_MEMBER(sfbonus_state::sfbonus_2c00_r) { - return space->machine().rand(); + return machine().rand(); } -static READ8_HANDLER( sfbonus_2c01_r ) +READ8_MEMBER(sfbonus_state::sfbonus_2c01_r) { - return space->machine().rand(); + return machine().rand(); } -static READ8_HANDLER( sfbonus_3800_r ) +READ8_MEMBER(sfbonus_state::sfbonus_3800_r) { return 0xff; } // lamps and coin counters -static WRITE8_HANDLER( sfbonus_1800_w ) +WRITE8_MEMBER(sfbonus_state::sfbonus_1800_w) { - sfbonus_state *state = space->machine().driver_data<sfbonus_state>(); - state->m_1800_regs[offset] = data; + m_1800_regs[offset] = data; } -static WRITE8_HANDLER( sfbonus_3800_w ) +WRITE8_MEMBER(sfbonus_state::sfbonus_3800_w) { - sfbonus_state *state = space->machine().driver_data<sfbonus_state>(); - state->m_3800_regs[offset] = data; + m_3800_regs[offset] = data; } -static WRITE8_HANDLER( sfbonus_3000_w ) +WRITE8_MEMBER(sfbonus_state::sfbonus_3000_w) { - sfbonus_state *state = space->machine().driver_data<sfbonus_state>(); - state->m_3000_regs[offset] = data; + m_3000_regs[offset] = data; } -static WRITE8_HANDLER( sfbonus_2801_w ) +WRITE8_MEMBER(sfbonus_state::sfbonus_2801_w) { - sfbonus_state *state = space->machine().driver_data<sfbonus_state>(); - state->m_2801_regs[offset] = data; + m_2801_regs[offset] = data; } -static WRITE8_HANDLER( sfbonus_2c01_w ) +WRITE8_MEMBER(sfbonus_state::sfbonus_2c01_w) { - sfbonus_state *state = space->machine().driver_data<sfbonus_state>(); - state->m_2c01_regs[offset] = data; + m_2c01_regs[offset] = data; } @@ -1148,21 +1154,21 @@ static ADDRESS_MAP_START( sfbonus_io, AS_IO, 8, sfbonus_state ) AM_RANGE(0x0c01, 0x0c01) AM_DEVWRITE("ramdac", ramdac_device, pal_w) AM_RANGE(0x0c02, 0x0c02) AM_DEVWRITE("ramdac", ramdac_device, mask_w) - AM_RANGE(0x1800, 0x1807) AM_WRITE_LEGACY(sfbonus_1800_w) AM_BASE(m_1800_regs) // lamps and coin counters + AM_RANGE(0x1800, 0x1807) AM_WRITE(sfbonus_1800_w) AM_BASE(m_1800_regs) // lamps and coin counters AM_RANGE(0x2400, 0x241f) AM_RAM AM_BASE(m_vregs) - AM_RANGE(0x2800, 0x2800) AM_READ_LEGACY(sfbonus_2800_r) - AM_RANGE(0x2801, 0x2801) AM_READ_LEGACY(sfbonus_2801_r) AM_WRITE_LEGACY(sfbonus_2801_w) AM_BASE(m_2801_regs) + AM_RANGE(0x2800, 0x2800) AM_READ(sfbonus_2800_r) + AM_RANGE(0x2801, 0x2801) AM_READ(sfbonus_2801_r) AM_WRITE(sfbonus_2801_w) AM_BASE(m_2801_regs) - AM_RANGE(0x2c00, 0x2c00) AM_READ_LEGACY(sfbonus_2c00_r) - AM_RANGE(0x2c01, 0x2c01) AM_READ_LEGACY(sfbonus_2c01_r) AM_WRITE_LEGACY(sfbonus_2c01_w) AM_BASE(m_2c01_regs) + AM_RANGE(0x2c00, 0x2c00) AM_READ(sfbonus_2c00_r) + AM_RANGE(0x2c01, 0x2c01) AM_READ(sfbonus_2c01_r) AM_WRITE(sfbonus_2c01_w) AM_BASE(m_2c01_regs) - AM_RANGE(0x3000, 0x3000) AM_WRITE_LEGACY(sfbonus_3000_w) AM_BASE(m_3000_regs) - AM_RANGE(0x3400, 0x3400) AM_WRITE_LEGACY(sfbonus_bank_w) - AM_RANGE(0x3800, 0x3800) AM_READ_LEGACY(sfbonus_3800_r) + AM_RANGE(0x3000, 0x3000) AM_WRITE(sfbonus_3000_w) AM_BASE(m_3000_regs) + AM_RANGE(0x3400, 0x3400) AM_WRITE(sfbonus_bank_w) + AM_RANGE(0x3800, 0x3800) AM_READ(sfbonus_3800_r) - AM_RANGE(0x3800, 0x3807) AM_WRITE_LEGACY(sfbonus_3800_w) AM_BASE(m_3800_regs) + AM_RANGE(0x3800, 0x3807) AM_WRITE(sfbonus_3800_w) AM_BASE(m_3800_regs) ADDRESS_MAP_END diff --git a/src/mame/drivers/sfkick.c b/src/mame/drivers/sfkick.c index 8ad603dbcbf..bf2e7c48821 100644 --- a/src/mame/drivers/sfkick.c +++ b/src/mame/drivers/sfkick.c @@ -70,6 +70,10 @@ public: int m_bank[8]; int m_input_mux; required_device<v9938_device> m_v9938; + DECLARE_WRITE8_MEMBER(page0_w); + DECLARE_WRITE8_MEMBER(page1_w); + DECLARE_WRITE8_MEMBER(page2_w); + DECLARE_WRITE8_MEMBER(page3_w); }; @@ -241,73 +245,69 @@ static void sfkick_bank_set(running_machine &machine,int num, int data) sfkick_remap_banks(machine); } -static WRITE8_HANDLER(page0_w) +WRITE8_MEMBER(sfkick_state::page0_w) { - sfkick_state *state = space->machine().driver_data<sfkick_state>(); - if((state->m_bank_cfg&3)==2) + if((m_bank_cfg&3)==2) { if(offset<0x2000) { - sfkick_bank_set(space->machine(),0,data); + sfkick_bank_set(machine(),0,data); } else { - sfkick_bank_set(space->machine(),1,data); + sfkick_bank_set(machine(),1,data); } } } -static WRITE8_HANDLER(page1_w) +WRITE8_MEMBER(sfkick_state::page1_w) { - sfkick_state *state = space->machine().driver_data<sfkick_state>(); - if(((state->m_bank_cfg>>2)&3)==2) + if(((m_bank_cfg>>2)&3)==2) { if(offset<0x2000) { - sfkick_bank_set(space->machine(),2,data); + sfkick_bank_set(machine(),2,data); } else { - sfkick_bank_set(space->machine(),3,data); + sfkick_bank_set(machine(),3,data); } } } -static WRITE8_HANDLER(page2_w) +WRITE8_MEMBER(sfkick_state::page2_w) { - sfkick_state *state = space->machine().driver_data<sfkick_state>(); - if(((state->m_bank_cfg>>4)&3)==2) + if(((m_bank_cfg>>4)&3)==2) { if(offset<0x2000) { - sfkick_bank_set(space->machine(),4,data); + sfkick_bank_set(machine(),4,data); } else { - sfkick_bank_set(space->machine(),5,data); + sfkick_bank_set(machine(),5,data); } } } -static WRITE8_HANDLER(page3_w) +WRITE8_MEMBER(sfkick_state::page3_w) { - sfkick_state *state = space->machine().driver_data<sfkick_state>(); - if(((state->m_bank_cfg>>6)&3)==2) + if(((m_bank_cfg>>6)&3)==2) { if(offset<0x2000) { - sfkick_bank_set(space->machine(),6,data); + sfkick_bank_set(machine(),6,data); } else { - sfkick_bank_set(space->machine(),7,data); + sfkick_bank_set(machine(),7,data); } } else { - if(((state->m_bank_cfg>>6)&3)==3) + if(((m_bank_cfg>>6)&3)==3) { - state->m_main_mem[offset]=data; + m_main_mem[offset]=data; } } } @@ -323,10 +323,10 @@ static ADDRESS_MAP_START( sfkick_map, AS_PROGRAM, 8, sfkick_state ) AM_RANGE( 0xa000, 0xbfff) AM_ROMBANK("bank6") AM_RANGE( 0xc000, 0xdfff) AM_ROMBANK("bank7") AM_RANGE( 0xe000, 0xffff) AM_ROMBANK("bank8") - AM_RANGE( 0x0000, 0x3fff) AM_WRITE_LEGACY(page0_w ) - AM_RANGE( 0x4000, 0x7fff) AM_WRITE_LEGACY(page1_w ) - AM_RANGE( 0x8000, 0xbfff) AM_WRITE_LEGACY(page2_w ) - AM_RANGE( 0xc000, 0xffff) AM_WRITE_LEGACY(page3_w ) + AM_RANGE( 0x0000, 0x3fff) AM_WRITE(page0_w ) + AM_RANGE( 0x4000, 0x7fff) AM_WRITE(page1_w ) + AM_RANGE( 0x8000, 0xbfff) AM_WRITE(page2_w ) + AM_RANGE( 0xc000, 0xffff) AM_WRITE(page3_w ) ADDRESS_MAP_END static ADDRESS_MAP_START( sfkick_io_map, AS_IO, 8, sfkick_state ) diff --git a/src/mame/drivers/shanghai.c b/src/mame/drivers/shanghai.c index b9ed3b1afd3..8139f382fb2 100644 --- a/src/mame/drivers/shanghai.c +++ b/src/mame/drivers/shanghai.c @@ -34,6 +34,8 @@ public: shanghai_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) { } + DECLARE_WRITE16_MEMBER(shanghai_coin_w); + DECLARE_READ16_MEMBER(kothello_hd63484_status_r); }; @@ -123,12 +125,12 @@ static INTERRUPT_GEN( shanghai_interrupt ) device_set_input_line_and_vector(device,0,HOLD_LINE,0x80); } -static WRITE16_HANDLER( shanghai_coin_w ) +WRITE16_MEMBER(shanghai_state::shanghai_coin_w) { if (ACCESSING_BITS_0_7) { - coin_counter_w(space->machine(), 0,data & 1); - coin_counter_w(space->machine(), 1,data & 2); + coin_counter_w(machine(), 0,data & 1); + coin_counter_w(machine(), 1,data & 2); } } @@ -152,7 +154,7 @@ static ADDRESS_MAP_START( shanghai_portmap, AS_IO, 16, shanghai_state ) AM_RANGE(0x40, 0x41) AM_READ_PORT("P1") AM_RANGE(0x44, 0x45) AM_READ_PORT("P2") AM_RANGE(0x48, 0x49) AM_READ_PORT("SYSTEM") - AM_RANGE(0x4c, 0x4d) AM_WRITE_LEGACY(shanghai_coin_w) + AM_RANGE(0x4c, 0x4d) AM_WRITE(shanghai_coin_w) ADDRESS_MAP_END @@ -163,17 +165,17 @@ static ADDRESS_MAP_START( shangha2_portmap, AS_IO, 16, shanghai_state ) AM_RANGE(0x30, 0x31) AM_DEVREADWRITE_LEGACY("hd63484", hd63484_status_r, hd63484_address_w) AM_RANGE(0x32, 0x33) AM_DEVREADWRITE_LEGACY("hd63484", hd63484_data_r, hd63484_data_w) AM_RANGE(0x40, 0x43) AM_DEVREADWRITE8_LEGACY("ymsnd", ym2203_r, ym2203_w, 0x00ff) - AM_RANGE(0x50, 0x51) AM_WRITE_LEGACY(shanghai_coin_w) + AM_RANGE(0x50, 0x51) AM_WRITE(shanghai_coin_w) ADDRESS_MAP_END -static READ16_HANDLER( kothello_hd63484_status_r ) +READ16_MEMBER(shanghai_state::kothello_hd63484_status_r) { return 0xff22; /* write FIFO ready + command end + read FIFO ready */ } static ADDRESS_MAP_START( kothello_map, AS_PROGRAM, 16, shanghai_state ) AM_RANGE(0x00000, 0x07fff) AM_RAM - AM_RANGE(0x08010, 0x08011) AM_READ_LEGACY(kothello_hd63484_status_r) AM_DEVWRITE_LEGACY("hd63484", hd63484_address_w) + AM_RANGE(0x08010, 0x08011) AM_READ(kothello_hd63484_status_r) AM_DEVWRITE_LEGACY("hd63484", hd63484_address_w) AM_RANGE(0x08012, 0x08013) AM_DEVREADWRITE_LEGACY("hd63484", hd63484_data_r, hd63484_data_w) AM_RANGE(0x09010, 0x09011) AM_READ_PORT("P1") AM_RANGE(0x09012, 0x09013) AM_READ_PORT("P2") diff --git a/src/mame/drivers/shougi.c b/src/mame/drivers/shougi.c index b0d62211fc2..f70b68d2e25 100644 --- a/src/mame/drivers/shougi.c +++ b/src/mame/drivers/shougi.c @@ -98,6 +98,17 @@ public: //UINT8 *m_cpu_sharedram; //UINT8 m_cpu_sharedram_control_val; int m_r; + DECLARE_WRITE8_MEMBER(cpu_sharedram_sub_w); + DECLARE_WRITE8_MEMBER(cpu_sharedram_main_w); + DECLARE_READ8_MEMBER(cpu_sharedram_r); + DECLARE_WRITE8_MEMBER(cpu_shared_ctrl_sub_w); + DECLARE_WRITE8_MEMBER(cpu_shared_ctrl_main_w); + DECLARE_WRITE8_MEMBER(shougi_watchdog_reset_w); + DECLARE_WRITE8_MEMBER(shougi_mcu_halt_off_w); + DECLARE_WRITE8_MEMBER(shougi_mcu_halt_on_w); + DECLARE_WRITE8_MEMBER(nmi_disable_and_clear_line_w); + DECLARE_WRITE8_MEMBER(nmi_enable_w); + DECLARE_READ8_MEMBER(dummy_r); }; @@ -194,71 +205,69 @@ static SCREEN_UPDATE_IND16( shougi ) //to do: // add separate sharedram/r/w() for both CPUs and use control value to verify access -static WRITE8_HANDLER ( cpu_sharedram_sub_w ) +WRITE8_MEMBER(shougi_state::cpu_sharedram_sub_w) { if (cpu_sharedram_control_val!=0) logerror("sub CPU access to shared RAM when access set for main cpu\n"); cpu_sharedram[offset] = data; } -static WRITE8_HANDLER ( cpu_sharedram_main_w ) +WRITE8_MEMBER(shougi_state::cpu_sharedram_main_w) { if (cpu_sharedram_control_val!=1) logerror("main CPU access to shared RAM when access set for sub cpu\n"); cpu_sharedram[offset] = data; } -static READ8_HANDLER ( cpu_sharedram_r ) +READ8_MEMBER(shougi_state::cpu_sharedram_r) { return cpu_sharedram[offset]; } #endif -static WRITE8_HANDLER ( cpu_shared_ctrl_sub_w ) +WRITE8_MEMBER(shougi_state::cpu_shared_ctrl_sub_w) { //cpu_sharedram_control_val = 0; //logerror("cpu_sharedram_ctrl=SUB"); } -static WRITE8_HANDLER ( cpu_shared_ctrl_main_w ) +WRITE8_MEMBER(shougi_state::cpu_shared_ctrl_main_w) { //cpu_sharedram_control_val = 1; //logerror("cpu_sharedram_ctrl=MAIN"); } -static WRITE8_HANDLER( shougi_watchdog_reset_w ) +WRITE8_MEMBER(shougi_state::shougi_watchdog_reset_w) { watchdog_reset_w(space,0,data); } -static WRITE8_HANDLER( shougi_mcu_halt_off_w ) +WRITE8_MEMBER(shougi_state::shougi_mcu_halt_off_w) { /* logerror("mcu HALT OFF"); */ - cputag_set_input_line(space->machine(), "mcu", INPUT_LINE_HALT, CLEAR_LINE); + cputag_set_input_line(machine(), "mcu", INPUT_LINE_HALT, CLEAR_LINE); } -static WRITE8_HANDLER( shougi_mcu_halt_on_w ) +WRITE8_MEMBER(shougi_state::shougi_mcu_halt_on_w) { /* logerror("mcu HALT ON"); */ - cputag_set_input_line(space->machine(), "mcu", INPUT_LINE_HALT,ASSERT_LINE); + cputag_set_input_line(machine(), "mcu", INPUT_LINE_HALT,ASSERT_LINE); } -static WRITE8_HANDLER( nmi_disable_and_clear_line_w ) +WRITE8_MEMBER(shougi_state::nmi_disable_and_clear_line_w) { - shougi_state *state = space->machine().driver_data<shougi_state>(); - state->m_nmi_enabled = 0; /* disable NMIs */ + m_nmi_enabled = 0; /* disable NMIs */ /* NMI lines are tied together on both CPUs and connected to the LS74 /Q output */ - cputag_set_input_line(space->machine(), "maincpu", INPUT_LINE_NMI, CLEAR_LINE); - cputag_set_input_line(space->machine(), "sub", INPUT_LINE_NMI, CLEAR_LINE); + cputag_set_input_line(machine(), "maincpu", INPUT_LINE_NMI, CLEAR_LINE); + cputag_set_input_line(machine(), "sub", INPUT_LINE_NMI, CLEAR_LINE); } -static WRITE8_HANDLER( nmi_enable_w ) +WRITE8_MEMBER(shougi_state::nmi_enable_w) { - shougi_state *state = space->machine().driver_data<shougi_state>(); - state->m_nmi_enabled = 1; /* enable NMIs */ + m_nmi_enabled = 1; /* enable NMIs */ } static INTERRUPT_GEN( shougi_vblank_nmi ) @@ -279,21 +288,21 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, shougi_state ) AM_RANGE(0x4000, 0x43ff) AM_RAM /* 2114 x 2 (0x400 x 4bit each) */ /* 4800-480f connected to the 74LS259, A3 is data line so 4800-4807 write 0, and 4808-480f write 1 */ - AM_RANGE(0x4800, 0x4800) AM_READ_PORT("DSW") AM_WRITE_LEGACY(cpu_shared_ctrl_sub_w) - AM_RANGE(0x4801, 0x4801) AM_WRITE_LEGACY(nmi_disable_and_clear_line_w) + AM_RANGE(0x4800, 0x4800) AM_READ_PORT("DSW") AM_WRITE(cpu_shared_ctrl_sub_w) + AM_RANGE(0x4801, 0x4801) AM_WRITE(nmi_disable_and_clear_line_w) AM_RANGE(0x4802, 0x4802) AM_NOP AM_RANGE(0x4803, 0x4803) AM_NOP - AM_RANGE(0x4804, 0x4804) AM_WRITE_LEGACY(shougi_mcu_halt_off_w) + AM_RANGE(0x4804, 0x4804) AM_WRITE(shougi_mcu_halt_off_w) AM_RANGE(0x4807, 0x4807) AM_WRITENOP //?????? connected to +5v via resistor - AM_RANGE(0x4808, 0x4808) AM_WRITE_LEGACY(cpu_shared_ctrl_main_w) - AM_RANGE(0x4809, 0x4809) AM_WRITE_LEGACY(nmi_enable_w) + AM_RANGE(0x4808, 0x4808) AM_WRITE(cpu_shared_ctrl_main_w) + AM_RANGE(0x4809, 0x4809) AM_WRITE(nmi_enable_w) AM_RANGE(0x480a, 0x480a) AM_NOP AM_RANGE(0x480b, 0x480b) AM_NOP - AM_RANGE(0x480c, 0x480c) AM_WRITE_LEGACY(shougi_mcu_halt_on_w) + AM_RANGE(0x480c, 0x480c) AM_WRITE(shougi_mcu_halt_on_w) AM_RANGE(0x480f, 0x480f) AM_NOP AM_RANGE(0x5000, 0x5000) AM_READ_PORT("P1") - AM_RANGE(0x5800, 0x5800) AM_READ_PORT("P2") AM_WRITE_LEGACY(shougi_watchdog_reset_w) /* game won't boot if watchdog doesn't work */ + AM_RANGE(0x5800, 0x5800) AM_READ_PORT("P2") AM_WRITE(shougi_watchdog_reset_w) /* game won't boot if watchdog doesn't work */ AM_RANGE(0x6000, 0x6000) AM_DEVWRITE_LEGACY("aysnd", ay8910_address_w) AM_RANGE(0x6800, 0x6800) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_w) AM_RANGE(0x7000, 0x73ff) AM_RAM AM_SHARE("share1") /* 2114 x 2 (0x400 x 4bit each) */ @@ -303,12 +312,11 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, shougi_state ) ADDRESS_MAP_END /* sub */ -static READ8_HANDLER ( dummy_r ) +READ8_MEMBER(shougi_state::dummy_r) { - shougi_state *state = space->machine().driver_data<shougi_state>(); - state->m_r ^= 1; + m_r ^= 1; - if(state->m_r) + if(m_r) return 0xff; else return 0; @@ -316,7 +324,7 @@ static READ8_HANDLER ( dummy_r ) static ADDRESS_MAP_START( readport_sub, AS_IO, 8, shougi_state ) ADDRESS_MAP_GLOBAL_MASK( 0x00ff ) - AM_RANGE(0x00, 0x00) AM_READ_LEGACY(dummy_r) + AM_RANGE(0x00, 0x00) AM_READ(dummy_r) ADDRESS_MAP_END static ADDRESS_MAP_START( sub_map, AS_PROGRAM, 8, shougi_state ) diff --git a/src/mame/drivers/sigmab52.c b/src/mame/drivers/sigmab52.c index 923846e2d82..e3ad00f7fa1 100644 --- a/src/mame/drivers/sigmab52.c +++ b/src/mame/drivers/sigmab52.c @@ -140,6 +140,11 @@ public: int m_latch; unsigned int m_acrtc_data; + DECLARE_WRITE8_MEMBER(acrtc_w); + DECLARE_READ8_MEMBER(acrtc_r); + DECLARE_READ8_MEMBER(unk_f700_r); + DECLARE_WRITE8_MEMBER(unk_f710_w); + DECLARE_READ8_MEMBER(unk_f721_r); }; @@ -234,47 +239,46 @@ static PALETTE_INIT( jwildb52 ) * ACRTC Access * *************************/ -static WRITE8_HANDLER(acrtc_w) +WRITE8_MEMBER(sigmab52_state::acrtc_w) { - sigmab52_state *state = space->machine().driver_data<sigmab52_state>(); - device_t *hd63484 = space->machine().device("hd63484"); + device_t *hd63484 = machine().device("hd63484"); if(!offset) { //address select hd63484_address_w(hd63484, 0, data, 0x00ff); - state->m_latch = 0; + m_latch = 0; } else { - if(!state->m_latch) + if(!m_latch) { - state->m_acrtc_data = data; + m_acrtc_data = data; } else { - state->m_acrtc_data <<= 8; - state->m_acrtc_data |= data; + m_acrtc_data <<= 8; + m_acrtc_data |= data; - hd63484_data_w(hd63484, 0, state->m_acrtc_data, 0xffff); + hd63484_data_w(hd63484, 0, m_acrtc_data, 0xffff); } - state->m_latch ^= 1; + m_latch ^= 1; } } -static READ8_HANDLER(acrtc_r) +READ8_MEMBER(sigmab52_state::acrtc_r) { if(offset&1) { - device_t *hd63484 = space->machine().device("hd63484"); + device_t *hd63484 = machine().device("hd63484"); return hd63484_data_r(hd63484, 0, 0xff); } else { - return 0x7b; //fake status read (instead HD63484_status_r(space, 0, 0xff); ) + return 0x7b; //fake status read (instead HD63484_status_r(&space, 0, 0xff); ) } } @@ -283,17 +287,17 @@ static READ8_HANDLER(acrtc_r) * Misc Handlers * *************************/ -static READ8_HANDLER(unk_f700_r) +READ8_MEMBER(sigmab52_state::unk_f700_r) { return 0x7f; } -static WRITE8_HANDLER(unk_f710_w) +WRITE8_MEMBER(sigmab52_state::unk_f710_w) { - memory_set_bankptr(space->machine(), "bank1" ,&space->machine().region("maincpu")->base()[0x10000 + ((data&0x80)?0x4000:0x0000)]); + memory_set_bankptr(machine(), "bank1" ,&machine().region("maincpu")->base()[0x10000 + ((data&0x80)?0x4000:0x0000)]); } -static READ8_HANDLER(unk_f721_r) +READ8_MEMBER(sigmab52_state::unk_f721_r) { return 0x04; // test is stuck. feeding bit3 the error message appear... } @@ -309,14 +313,14 @@ static ADDRESS_MAP_START( jwildb52_map, AS_PROGRAM, 8, sigmab52_state ) AM_RANGE(0x8000, 0xf6ff) AM_RAMBANK("bank3") - AM_RANGE(0xf700, 0xf700) AM_READ_LEGACY(unk_f700_r) - AM_RANGE(0xf710, 0xf710) AM_WRITE_LEGACY(unk_f710_w) - AM_RANGE(0xf721, 0xf721) AM_READ_LEGACY(unk_f721_r) + AM_RANGE(0xf700, 0xf700) AM_READ(unk_f700_r) + AM_RANGE(0xf710, 0xf710) AM_WRITE(unk_f710_w) + AM_RANGE(0xf721, 0xf721) AM_READ(unk_f721_r) //AM_RANGE(0x00, 0x01) AM_DEVREADWRITE_LEGACY("hd63484", hd63484_status_r, hd63484_address_w) //AM_RANGE(0x02, 0x03) AM_DEVREADWRITE_LEGACY("hd63484", hd63484_data_r, hd63484_data_w) - AM_RANGE(0xf730, 0xf731) AM_READWRITE_LEGACY(acrtc_r, acrtc_w) + AM_RANGE(0xf730, 0xf731) AM_READWRITE(acrtc_r, acrtc_w) AM_RANGE(0xf740, 0xf740) AM_READ_PORT("IN0") AM_RANGE(0xf741, 0xf741) AM_READ_PORT("IN1") // random checks to active high to go further with the test. AM_RANGE(0xf742, 0xf742) AM_READ_PORT("IN2") diff --git a/src/mame/drivers/skeetsht.c b/src/mame/drivers/skeetsht.c index bc15bb7c749..22c1c78191a 100644 --- a/src/mame/drivers/skeetsht.c +++ b/src/mame/drivers/skeetsht.c @@ -30,6 +30,13 @@ public: UINT16 m_lastdatar; device_t *m_ay; device_t *m_tms; + DECLARE_READ16_MEMBER(ramdac_r); + DECLARE_WRITE16_MEMBER(ramdac_w); + DECLARE_WRITE8_MEMBER(tms_w); + DECLARE_READ8_MEMBER(tms_r); + DECLARE_READ8_MEMBER(hc11_porta_r); + DECLARE_WRITE8_MEMBER(hc11_porta_w); + DECLARE_WRITE8_MEMBER(ay8910_w); }; @@ -75,24 +82,24 @@ static void skeetsht_scanline_update(screen_device &screen, bitmap_rgb32 &bitmap } } -static READ16_HANDLER( ramdac_r ) +READ16_MEMBER(skeetsht_state::ramdac_r) { offset = (offset >> 12) & ~4; if (offset & 8) offset = (offset & ~8) | 4; - return tlc34076_r(space->machine().device("tlc34076"), offset); + return tlc34076_r(machine().device("tlc34076"), offset); } -static WRITE16_HANDLER( ramdac_w ) +WRITE16_MEMBER(skeetsht_state::ramdac_w) { offset = (offset >> 12) & ~4; if (offset & 8) offset = (offset & ~8) | 4; - tlc34076_w(space->machine().device("tlc34076"), offset, data); + tlc34076_w(machine().device("tlc34076"), offset, data); } @@ -108,24 +115,22 @@ static void skeetsht_tms_irq(device_t *device, int state) } -static WRITE8_HANDLER( tms_w ) +WRITE8_MEMBER(skeetsht_state::tms_w) { - skeetsht_state *state = space->machine().driver_data<skeetsht_state>(); if ((offset & 1) == 0) - state->m_lastdataw = data; + m_lastdataw = data; else - tms34010_host_w(state->m_tms, offset >> 1, (state->m_lastdataw << 8) | data); + tms34010_host_w(m_tms, offset >> 1, (m_lastdataw << 8) | data); } -static READ8_HANDLER( tms_r ) +READ8_MEMBER(skeetsht_state::tms_r) { - skeetsht_state *state = space->machine().driver_data<skeetsht_state>(); if ((offset & 1) == 0) - state->m_lastdatar = tms34010_host_r(state->m_tms, offset >> 1); + m_lastdatar = tms34010_host_r(m_tms, offset >> 1); - return state->m_lastdatar >> ((offset & 1) ? 0 : 8); + return m_lastdatar >> ((offset & 1) ? 0 : 8); } @@ -135,31 +140,28 @@ static READ8_HANDLER( tms_r ) * *************************************/ -static READ8_HANDLER( hc11_porta_r ) +READ8_MEMBER(skeetsht_state::hc11_porta_r) { - skeetsht_state *state = space->machine().driver_data<skeetsht_state>(); - return state->m_porta_latch; + return m_porta_latch; } -static WRITE8_HANDLER( hc11_porta_w ) +WRITE8_MEMBER(skeetsht_state::hc11_porta_w) { - skeetsht_state *state = space->machine().driver_data<skeetsht_state>(); - if (!(data & 0x8) && (state->m_porta_latch & 8)) - state->m_ay_sel = state->m_porta_latch & 0x10; + if (!(data & 0x8) && (m_porta_latch & 8)) + m_ay_sel = m_porta_latch & 0x10; - state->m_porta_latch = data; + m_porta_latch = data; } -static WRITE8_HANDLER( ay8910_w ) +WRITE8_MEMBER(skeetsht_state::ay8910_w) { - skeetsht_state *state = space->machine().driver_data<skeetsht_state>(); - if (state->m_ay_sel) - ay8910_data_w(state->m_ay, 0, data); + if (m_ay_sel) + ay8910_data_w(m_ay, 0, data); else - ay8910_address_w(state->m_ay, 0, data); + ay8910_address_w(m_ay, 0, data); } @@ -170,14 +172,14 @@ static WRITE8_HANDLER( ay8910_w ) *************************************/ static ADDRESS_MAP_START( hc11_pgm_map, AS_PROGRAM, 8, skeetsht_state ) - AM_RANGE(0x2800, 0x2807) AM_READWRITE_LEGACY(tms_r, tms_w) - AM_RANGE(0x1800, 0x1800) AM_WRITE_LEGACY(ay8910_w) + AM_RANGE(0x2800, 0x2807) AM_READWRITE(tms_r, tms_w) + AM_RANGE(0x1800, 0x1800) AM_WRITE(ay8910_w) AM_RANGE(0xb600, 0xbdff) AM_RAM //internal EEPROM AM_RANGE(0x0000, 0xffff) AM_ROM AM_REGION("68hc11", 0) ADDRESS_MAP_END static ADDRESS_MAP_START( hc11_io_map, AS_IO, 8, skeetsht_state ) - AM_RANGE(MC68HC11_IO_PORTA, MC68HC11_IO_PORTA) AM_READWRITE_LEGACY(hc11_porta_r, hc11_porta_w) + AM_RANGE(MC68HC11_IO_PORTA, MC68HC11_IO_PORTA) AM_READWRITE(hc11_porta_r, hc11_porta_w) ADDRESS_MAP_END @@ -190,7 +192,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( tms_program_map, AS_PROGRAM, 16, skeetsht_state ) AM_RANGE(0xc0000000, 0xc00001ff) AM_READWRITE_LEGACY(tms34010_io_register_r, tms34010_io_register_w) AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_BASE(m_tms_vram) - AM_RANGE(0x00440000, 0x004fffff) AM_READWRITE_LEGACY(ramdac_r, ramdac_w) + AM_RANGE(0x00440000, 0x004fffff) AM_READWRITE(ramdac_r, ramdac_w) AM_RANGE(0xff800000, 0xffbfffff) AM_ROM AM_MIRROR(0x00400000) AM_REGION("tms", 0) ADDRESS_MAP_END diff --git a/src/mame/drivers/skimaxx.c b/src/mame/drivers/skimaxx.c index b06bdfd0186..d58bfc78754 100644 --- a/src/mame/drivers/skimaxx.c +++ b/src/mame/drivers/skimaxx.c @@ -58,6 +58,16 @@ public: UINT32 m_blitter_src_y; UINT32 m_blitter_src_dy; UINT32 *m_fpga_ctrl; + DECLARE_WRITE32_MEMBER(skimaxx_blitter_w); + DECLARE_READ32_MEMBER(skimaxx_blitter_r); + DECLARE_WRITE32_MEMBER(m68k_tms_w); + DECLARE_READ32_MEMBER(m68k_tms_r); + DECLARE_WRITE32_MEMBER(skimaxx_fpga_ctrl_w); + DECLARE_READ32_MEMBER(unk_r); + DECLARE_READ32_MEMBER(skimaxx_unk1_r); + DECLARE_WRITE32_MEMBER(skimaxx_unk1_w); + DECLARE_WRITE32_MEMBER(skimaxx_sub_ctrl_w); + DECLARE_READ32_MEMBER(skimaxx_analog_r); }; @@ -68,29 +78,28 @@ public: *************************************/ // Set up blit parameters -static WRITE32_HANDLER( skimaxx_blitter_w ) +WRITE32_MEMBER(skimaxx_state::skimaxx_blitter_w) { - skimaxx_state *state = space->machine().driver_data<skimaxx_state>(); - UINT32 newdata = COMBINE_DATA( &state->m_blitter_regs[offset] ); + UINT32 newdata = COMBINE_DATA( &m_blitter_regs[offset] ); switch (offset) { case 0: - state->m_blitter_src_dy = (newdata & 0x7fff) - (newdata & 0x8000); + m_blitter_src_dy = (newdata & 0x7fff) - (newdata & 0x8000); break; case 1: - state->m_blitter_src_x = (newdata & 0x1ff) << 8; - state->m_blitter_src_y = (newdata >> 9) << 8; + m_blitter_src_x = (newdata & 0x1ff) << 8; + m_blitter_src_y = (newdata >> 9) << 8; break; case 2: if (ACCESSING_BITS_16_31) - state->m_blitter_src_dx = (newdata >> 16) & 0xffff; + m_blitter_src_dx = (newdata >> 16) & 0xffff; if (ACCESSING_BITS_0_15) - state->m_blitter_src_dx = newdata & 0xffff; + m_blitter_src_dx = newdata & 0xffff; - state->m_blitter_src_dx = (state->m_blitter_src_dx & 0x7fff) - (state->m_blitter_src_dx & 0x8000); + m_blitter_src_dx = (m_blitter_src_dx & 0x7fff) - (m_blitter_src_dx & 0x8000); break; case 3: @@ -100,12 +109,11 @@ static WRITE32_HANDLER( skimaxx_blitter_w ) } // A read by the 68030 from this area blits one pixel to the back buffer (at the same offset) -static READ32_HANDLER( skimaxx_blitter_r ) +READ32_MEMBER(skimaxx_state::skimaxx_blitter_r) { - skimaxx_state *state = space->machine().driver_data<skimaxx_state>(); - UINT32 penaddr = ((state->m_blitter_src_x >> 8) & 0x1ff) + ((state->m_blitter_src_y >> 8) << 9); - UINT16 *src = state->m_blitter_gfx + (penaddr % state->m_blitter_gfx_len); - UINT32 *dst = state->m_bg_buffer_back + offset; + UINT32 penaddr = ((m_blitter_src_x >> 8) & 0x1ff) + ((m_blitter_src_y >> 8) << 9); + UINT16 *src = m_blitter_gfx + (penaddr % m_blitter_gfx_len); + UINT32 *dst = m_bg_buffer_back + offset; UINT16 pen = (*src) & 0x7fff; @@ -117,8 +125,8 @@ static READ32_HANDLER( skimaxx_blitter_r ) *dst = (*dst & 0xffff0000) | pen; } - state->m_blitter_src_x = (state->m_blitter_src_x & 0x10000) | ((state->m_blitter_src_x + state->m_blitter_src_dx) & 0xffff); - state->m_blitter_src_y = (state->m_blitter_src_y & 0xffff0000) | ((state->m_blitter_src_y + state->m_blitter_src_dy) & 0xffff); + m_blitter_src_x = (m_blitter_src_x & 0x10000) | ((m_blitter_src_x + m_blitter_src_dx) & 0xffff); + m_blitter_src_y = (m_blitter_src_y & 0xffff0000) | ((m_blitter_src_y + m_blitter_src_dy) & 0xffff); return 0; } @@ -216,14 +224,14 @@ static void skimaxx_scanline_update(screen_device &screen, bitmap_ind16 &bitmap, * *************************************/ -static WRITE32_HANDLER( m68k_tms_w ) +WRITE32_MEMBER(skimaxx_state::m68k_tms_w) { - tms34010_host_w(space->machine().device("tms"), offset, data); + tms34010_host_w(machine().device("tms"), offset, data); } -static READ32_HANDLER( m68k_tms_r ) +READ32_MEMBER(skimaxx_state::m68k_tms_r) { - return tms34010_host_r(space->machine().device("tms"), offset); + return tms34010_host_r(machine().device("tms"), offset); } @@ -242,46 +250,44 @@ static READ32_HANDLER( m68k_tms_r ) bit 0: bit banging data */ -static WRITE32_HANDLER( skimaxx_fpga_ctrl_w ) +WRITE32_MEMBER(skimaxx_state::skimaxx_fpga_ctrl_w) { - skimaxx_state *state = space->machine().driver_data<skimaxx_state>(); - UINT32 newdata = COMBINE_DATA( state->m_fpga_ctrl ); + UINT32 newdata = COMBINE_DATA( m_fpga_ctrl ); if (ACCESSING_BITS_0_7) { // double buffering UINT8 bank_bg_buffer = (newdata & 0x40) ? 1 : 0; - state->m_bg_buffer_back = state->m_bg_buffer + 0x400 * 0x100 * sizeof(UINT16) / sizeof(UINT32) * bank_bg_buffer; - state->m_bg_buffer_front = state->m_bg_buffer + 0x400 * 0x100 * sizeof(UINT16) / sizeof(UINT32) * (1 - bank_bg_buffer); + m_bg_buffer_back = m_bg_buffer + 0x400 * 0x100 * sizeof(UINT16) / sizeof(UINT32) * bank_bg_buffer; + m_bg_buffer_front = m_bg_buffer + 0x400 * 0x100 * sizeof(UINT16) / sizeof(UINT32) * (1 - bank_bg_buffer); - memory_set_bank(space->machine(), "bank1", bank_bg_buffer); + memory_set_bank(machine(), "bank1", bank_bg_buffer); } } // 0x2000004c: bit 7, bit 0 -static READ32_HANDLER( unk_r ) +READ32_MEMBER(skimaxx_state::unk_r) { - skimaxx_state *state = space->machine().driver_data<skimaxx_state>(); - return (*state->m_fpga_ctrl & 0x20) ? 0x80 : 0x00; + return (*m_fpga_ctrl & 0x20) ? 0x80 : 0x00; } // 0x20000023 -static READ32_HANDLER( skimaxx_unk1_r ) +READ32_MEMBER(skimaxx_state::skimaxx_unk1_r) { return 0x80; } -static WRITE32_HANDLER( skimaxx_unk1_w ) +WRITE32_MEMBER(skimaxx_state::skimaxx_unk1_w) { } -static WRITE32_HANDLER( skimaxx_sub_ctrl_w ) +WRITE32_MEMBER(skimaxx_state::skimaxx_sub_ctrl_w) { // 7e/7f at the start. 3f/7f, related to reads from 1018xxxx if (ACCESSING_BITS_0_7) { - device_t *subcpu = space->machine().device("subcpu"); + device_t *subcpu = machine().device("subcpu"); device_set_input_line(subcpu, INPUT_LINE_RESET, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE); device_set_input_line(subcpu, INPUT_LINE_HALT, (data & 0x40) ? CLEAR_LINE : ASSERT_LINE); @@ -297,9 +303,9 @@ static WRITE32_HANDLER( skimaxx_sub_ctrl_w ) .. 1f left max */ -static READ32_HANDLER( skimaxx_analog_r ) +READ32_MEMBER(skimaxx_state::skimaxx_analog_r) { - return BITSWAP8(input_port_read(space->machine(), offset ? "Y" : "X"), 0,1,2,3,4,5,6,7); + return BITSWAP8(input_port_read(machine(), offset ? "Y" : "X"), 0,1,2,3,4,5,6,7); } /************************************* @@ -310,8 +316,8 @@ static READ32_HANDLER( skimaxx_analog_r ) static ADDRESS_MAP_START( 68030_1_map, AS_PROGRAM, 32, skimaxx_state ) AM_RANGE(0x00000000, 0x001fffff) AM_ROM - AM_RANGE(0x10000000, 0x10000003) AM_WRITE_LEGACY(skimaxx_sub_ctrl_w ) - AM_RANGE(0x10100000, 0x1010000f) AM_READWRITE_LEGACY(m68k_tms_r, m68k_tms_w)//AM_NOP + AM_RANGE(0x10000000, 0x10000003) AM_WRITE(skimaxx_sub_ctrl_w ) + AM_RANGE(0x10100000, 0x1010000f) AM_READWRITE(m68k_tms_r, m68k_tms_w)//AM_NOP // AM_RANGE(0x10180000, 0x10187fff) AM_RAM AM_SHARE("share1") AM_RANGE(0x10180000, 0x1018ffff) AM_RAM AM_SHARE("share1") // above 10188000 accessed at level end (game bug?) AM_RANGE(0x20000000, 0x20000003) AM_READNOP // watchdog_r? @@ -321,15 +327,15 @@ static ADDRESS_MAP_START( 68030_1_map, AS_PROGRAM, 32, skimaxx_state ) AM_RANGE(0x20000018, 0x2000001b) AM_DEVREADWRITE8("oki3", okim6295_device, read, write, 0x00ff) // right AM_RANGE(0x2000001c, 0x2000001f) AM_DEVREADWRITE8("oki4", okim6295_device, read, write, 0x00ff) // right - AM_RANGE(0x20000020, 0x20000023) AM_READ_LEGACY(skimaxx_unk1_r ) // units linking? - AM_RANGE(0x20000024, 0x20000027) AM_WRITE_LEGACY(skimaxx_unk1_w ) // "" + AM_RANGE(0x20000020, 0x20000023) AM_READ(skimaxx_unk1_r ) // units linking? + AM_RANGE(0x20000024, 0x20000027) AM_WRITE(skimaxx_unk1_w ) // "" AM_RANGE(0x20000040, 0x20000043) AM_RAM // write AM_RANGE(0x20000044, 0x20000047) AM_READ_PORT( "DSW" ) AM_RANGE(0x20000048, 0x2000004b) AM_READ_PORT( "COIN" ) - AM_RANGE(0x2000004c, 0x2000004f) AM_READ_LEGACY(unk_r) // bit 7, bit 0 + AM_RANGE(0x2000004c, 0x2000004f) AM_READ(unk_r) // bit 7, bit 0 - AM_RANGE(0x20000050, 0x20000057) AM_READ_LEGACY(skimaxx_analog_r ) AM_WRITENOP // read (0-1f), write motor? + AM_RANGE(0x20000050, 0x20000057) AM_READ(skimaxx_analog_r ) AM_WRITENOP // read (0-1f), write motor? AM_RANGE(0xfffc0000, 0xffffffff) AM_RAM AM_MIRROR(0x00020000) ADDRESS_MAP_END @@ -344,10 +350,10 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( 68030_2_map, AS_PROGRAM, 32, skimaxx_state ) AM_RANGE(0x00000000, 0x003fffff) AM_ROM - AM_RANGE(0x20000000, 0x2007ffff) AM_READ_LEGACY(skimaxx_blitter_r ) // do blit - AM_RANGE(0x30000000, 0x3000000f) AM_WRITE_LEGACY(skimaxx_blitter_w ) AM_BASE(m_blitter_regs ) + AM_RANGE(0x20000000, 0x2007ffff) AM_READ(skimaxx_blitter_r ) // do blit + AM_RANGE(0x30000000, 0x3000000f) AM_WRITE(skimaxx_blitter_w ) AM_BASE(m_blitter_regs ) - AM_RANGE(0x40000000, 0x40000003) AM_WRITE_LEGACY(skimaxx_fpga_ctrl_w ) AM_BASE(m_fpga_ctrl ) + AM_RANGE(0x40000000, 0x40000003) AM_WRITE(skimaxx_fpga_ctrl_w ) AM_BASE(m_fpga_ctrl ) AM_RANGE(0x50000000, 0x5007ffff) AM_RAMBANK("bank1") // background ram allocated here at video_start (skimaxx_bg_buffer_back/front) // AM_RANGE(0xfffc0000, 0xfffc7fff) AM_RAM AM_SHARE("share1") diff --git a/src/mame/drivers/skyarmy.c b/src/mame/drivers/skyarmy.c index 3e115a6b227..7d5a218bc74 100644 --- a/src/mame/drivers/skyarmy.c +++ b/src/mame/drivers/skyarmy.c @@ -41,16 +41,21 @@ public: UINT8 *m_scrollram; tilemap_t* m_tilemap; int m_nmi; + DECLARE_WRITE8_MEMBER(skyarmy_flip_screen_x_w); + DECLARE_WRITE8_MEMBER(skyarmy_flip_screen_y_w); + DECLARE_WRITE8_MEMBER(skyarmy_videoram_w); + DECLARE_WRITE8_MEMBER(skyarmy_colorram_w); + DECLARE_WRITE8_MEMBER(nmi_enable_w); }; -static WRITE8_HANDLER( skyarmy_flip_screen_x_w ) +WRITE8_MEMBER(skyarmy_state::skyarmy_flip_screen_x_w) { - flip_screen_x_set(space->machine(), data & 0x01); + flip_screen_x_set(machine(), data & 0x01); } -static WRITE8_HANDLER( skyarmy_flip_screen_y_w ) +WRITE8_MEMBER(skyarmy_state::skyarmy_flip_screen_y_w) { - flip_screen_y_set(space->machine(), data & 0x01); + flip_screen_y_set(machine(), data & 0x01); } static TILE_GET_INFO( get_skyarmy_tile_info ) @@ -62,20 +67,18 @@ static TILE_GET_INFO( get_skyarmy_tile_info ) SET_TILE_INFO( 0, code, attr, 0); } -static WRITE8_HANDLER( skyarmy_videoram_w ) +WRITE8_MEMBER(skyarmy_state::skyarmy_videoram_w) { - skyarmy_state *state = space->machine().driver_data<skyarmy_state>(); - state->m_videoram[offset] = data; - state->m_tilemap->mark_tile_dirty(offset); + m_videoram[offset] = data; + m_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( skyarmy_colorram_w ) +WRITE8_MEMBER(skyarmy_state::skyarmy_colorram_w) { - skyarmy_state *state = space->machine().driver_data<skyarmy_state>(); - state->m_colorram[offset] = data; - state->m_tilemap->mark_tile_dirty(offset); + m_colorram[offset] = data; + m_tilemap->mark_tile_dirty(offset); } static PALETTE_INIT( skyarmy ) @@ -154,28 +157,27 @@ static INTERRUPT_GEN( skyarmy_nmi_source ) } -static WRITE8_HANDLER( nmi_enable_w ) +WRITE8_MEMBER(skyarmy_state::nmi_enable_w) { - skyarmy_state *state = space->machine().driver_data<skyarmy_state>(); - state->m_nmi=data & 1; + m_nmi=data & 1; } static ADDRESS_MAP_START( skyarmy_map, AS_PROGRAM, 8, skyarmy_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE_LEGACY(skyarmy_videoram_w) AM_BASE(m_videoram) /* Video RAM */ - AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE_LEGACY(skyarmy_colorram_w) AM_BASE(m_colorram) /* Color RAM */ + AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(skyarmy_videoram_w) AM_BASE(m_videoram) /* Video RAM */ + AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(skyarmy_colorram_w) AM_BASE(m_colorram) /* Color RAM */ AM_RANGE(0x9800, 0x983f) AM_RAM AM_BASE(m_spriteram) /* Sprites */ AM_RANGE(0x9840, 0x985f) AM_RAM AM_BASE(m_scrollram) /* Scroll RAM */ AM_RANGE(0xa000, 0xa000) AM_READ_PORT("DSW") AM_RANGE(0xa001, 0xa001) AM_READ_PORT("P1") AM_RANGE(0xa002, 0xa002) AM_READ_PORT("P2") AM_RANGE(0xa003, 0xa003) AM_READ_PORT("SYSTEM") - AM_RANGE(0xa004, 0xa004) AM_WRITE_LEGACY(nmi_enable_w) // ??? - AM_RANGE(0xa005, 0xa005) AM_WRITE_LEGACY(skyarmy_flip_screen_x_w) - AM_RANGE(0xa006, 0xa006) AM_WRITE_LEGACY(skyarmy_flip_screen_y_w) + AM_RANGE(0xa004, 0xa004) AM_WRITE(nmi_enable_w) // ??? + AM_RANGE(0xa005, 0xa005) AM_WRITE(skyarmy_flip_screen_x_w) + AM_RANGE(0xa006, 0xa006) AM_WRITE(skyarmy_flip_screen_y_w) AM_RANGE(0xa007, 0xa007) AM_WRITENOP ADDRESS_MAP_END diff --git a/src/mame/drivers/skylncr.c b/src/mame/drivers/skylncr.c index 8f420c3ad33..a90d19ecc53 100644 --- a/src/mame/drivers/skylncr.c +++ b/src/mame/drivers/skylncr.c @@ -67,6 +67,26 @@ public: UINT8 m_nmi_enable; int m_color; int m_color2; + DECLARE_WRITE8_MEMBER(skylncr_videoram_w); + DECLARE_WRITE8_MEMBER(skylncr_colorram_w); + DECLARE_WRITE8_MEMBER(reeltiles_1_w); + DECLARE_WRITE8_MEMBER(reeltiles_2_w); + DECLARE_WRITE8_MEMBER(reeltiles_3_w); + DECLARE_WRITE8_MEMBER(reeltiles_4_w); + DECLARE_WRITE8_MEMBER(reeltileshigh_1_w); + DECLARE_WRITE8_MEMBER(reeltileshigh_2_w); + DECLARE_WRITE8_MEMBER(reeltileshigh_3_w); + DECLARE_WRITE8_MEMBER(reeltileshigh_4_w); + DECLARE_WRITE8_MEMBER(skylncr_paletteram_w); + DECLARE_WRITE8_MEMBER(skylncr_paletteram2_w); + DECLARE_WRITE8_MEMBER(reelscroll1_w); + DECLARE_WRITE8_MEMBER(reelscroll2_w); + DECLARE_WRITE8_MEMBER(reelscroll3_w); + DECLARE_WRITE8_MEMBER(reelscroll4_w); + DECLARE_WRITE8_MEMBER(skylncr_coin_w); + DECLARE_READ8_MEMBER(ret_ff); + DECLARE_READ8_MEMBER(ret_00); + DECLARE_WRITE8_MEMBER(skylncr_nmi_enable_w); }; @@ -74,18 +94,16 @@ public: * Video Hardware * **************************************/ -static WRITE8_HANDLER( skylncr_videoram_w ) +WRITE8_MEMBER(skylncr_state::skylncr_videoram_w) { - skylncr_state *state = space->machine().driver_data<skylncr_state>(); - state->m_videoram[offset] = data; - state->m_tmap->mark_tile_dirty(offset); + m_videoram[offset] = data; + m_tmap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( skylncr_colorram_w ) +WRITE8_MEMBER(skylncr_state::skylncr_colorram_w) { - skylncr_state *state = space->machine().driver_data<skylncr_state>(); - state->m_colorram[offset] = data; - state->m_tmap->mark_tile_dirty(offset); + m_colorram[offset] = data; + m_tmap->mark_tile_dirty(offset); } @@ -178,135 +196,121 @@ static SCREEN_UPDATE_IND16( skylncr ) return 0; } -static WRITE8_HANDLER( reeltiles_1_w ) +WRITE8_MEMBER(skylncr_state::reeltiles_1_w) { - skylncr_state *state = space->machine().driver_data<skylncr_state>(); - state->m_reeltiles_1_ram[offset] = data; - state->m_reel_1_tilemap->mark_tile_dirty(offset); + m_reeltiles_1_ram[offset] = data; + m_reel_1_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( reeltiles_2_w ) +WRITE8_MEMBER(skylncr_state::reeltiles_2_w) { - skylncr_state *state = space->machine().driver_data<skylncr_state>(); - state->m_reeltiles_2_ram[offset] = data; - state->m_reel_2_tilemap->mark_tile_dirty(offset); + m_reeltiles_2_ram[offset] = data; + m_reel_2_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( reeltiles_3_w ) +WRITE8_MEMBER(skylncr_state::reeltiles_3_w) { - skylncr_state *state = space->machine().driver_data<skylncr_state>(); - state->m_reeltiles_3_ram[offset] = data; - state->m_reel_3_tilemap->mark_tile_dirty(offset); + m_reeltiles_3_ram[offset] = data; + m_reel_3_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( reeltiles_4_w ) +WRITE8_MEMBER(skylncr_state::reeltiles_4_w) { - skylncr_state *state = space->machine().driver_data<skylncr_state>(); - state->m_reeltiles_4_ram[offset] = data; - state->m_reel_4_tilemap->mark_tile_dirty(offset); + m_reeltiles_4_ram[offset] = data; + m_reel_4_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( reeltileshigh_1_w ) +WRITE8_MEMBER(skylncr_state::reeltileshigh_1_w) { - skylncr_state *state = space->machine().driver_data<skylncr_state>(); - state->m_reeltileshigh_1_ram[offset] = data; - state->m_reel_1_tilemap->mark_tile_dirty(offset); + m_reeltileshigh_1_ram[offset] = data; + m_reel_1_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( reeltileshigh_2_w ) +WRITE8_MEMBER(skylncr_state::reeltileshigh_2_w) { - skylncr_state *state = space->machine().driver_data<skylncr_state>(); - state->m_reeltileshigh_2_ram[offset] = data; - state->m_reel_2_tilemap->mark_tile_dirty(offset); + m_reeltileshigh_2_ram[offset] = data; + m_reel_2_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( reeltileshigh_3_w ) +WRITE8_MEMBER(skylncr_state::reeltileshigh_3_w) { - skylncr_state *state = space->machine().driver_data<skylncr_state>(); - state->m_reeltileshigh_3_ram[offset] = data; - state->m_reel_3_tilemap->mark_tile_dirty(offset); + m_reeltileshigh_3_ram[offset] = data; + m_reel_3_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( reeltileshigh_4_w ) +WRITE8_MEMBER(skylncr_state::reeltileshigh_4_w) { - skylncr_state *state = space->machine().driver_data<skylncr_state>(); - state->m_reeltileshigh_4_ram[offset] = data; - state->m_reel_4_tilemap->mark_tile_dirty(offset); + m_reeltileshigh_4_ram[offset] = data; + m_reel_4_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( skylncr_paletteram_w ) +WRITE8_MEMBER(skylncr_state::skylncr_paletteram_w) { - skylncr_state *state = space->machine().driver_data<skylncr_state>(); if (offset == 0) { - state->m_color = data; + m_color = data; } else { int r,g,b; - space->machine().generic.paletteram.u8[state->m_color] = data; + machine().generic.paletteram.u8[m_color] = data; - r = space->machine().generic.paletteram.u8[(state->m_color/3 * 3) + 0]; - g = space->machine().generic.paletteram.u8[(state->m_color/3 * 3) + 1]; - b = space->machine().generic.paletteram.u8[(state->m_color/3 * 3) + 2]; + r = machine().generic.paletteram.u8[(m_color/3 * 3) + 0]; + g = machine().generic.paletteram.u8[(m_color/3 * 3) + 1]; + b = machine().generic.paletteram.u8[(m_color/3 * 3) + 2]; r = (r << 2) | (r >> 4); g = (g << 2) | (g >> 4); b = (b << 2) | (b >> 4); - palette_set_color(space->machine(), state->m_color / 3, MAKE_RGB(r, g, b)); - state->m_color = (state->m_color + 1) % (0x100 * 3); + palette_set_color(machine(), m_color / 3, MAKE_RGB(r, g, b)); + m_color = (m_color + 1) % (0x100 * 3); } } -static WRITE8_HANDLER( skylncr_paletteram2_w ) +WRITE8_MEMBER(skylncr_state::skylncr_paletteram2_w) { - skylncr_state *state = space->machine().driver_data<skylncr_state>(); if (offset == 0) { - state->m_color2 = data; + m_color2 = data; } else { int r,g,b; - space->machine().generic.paletteram2.u8[state->m_color2] = data; + machine().generic.paletteram2.u8[m_color2] = data; - r = space->machine().generic.paletteram2.u8[(state->m_color2/3 * 3) + 0]; - g = space->machine().generic.paletteram2.u8[(state->m_color2/3 * 3) + 1]; - b = space->machine().generic.paletteram2.u8[(state->m_color2/3 * 3) + 2]; + r = machine().generic.paletteram2.u8[(m_color2/3 * 3) + 0]; + g = machine().generic.paletteram2.u8[(m_color2/3 * 3) + 1]; + b = machine().generic.paletteram2.u8[(m_color2/3 * 3) + 2]; r = (r << 2) | (r >> 4); g = (g << 2) | (g >> 4); b = (b << 2) | (b >> 4); - palette_set_color(space->machine(), 0x100 + state->m_color2 / 3, MAKE_RGB(r, g, b)); - state->m_color2 = (state->m_color2 + 1) % (0x100 * 3); + palette_set_color(machine(), 0x100 + m_color2 / 3, MAKE_RGB(r, g, b)); + m_color2 = (m_color2 + 1) % (0x100 * 3); } } -static WRITE8_HANDLER( reelscroll1_w ) +WRITE8_MEMBER(skylncr_state::reelscroll1_w) { - skylncr_state *state = space->machine().driver_data<skylncr_state>(); - state->m_reelscroll1[offset] = data; + m_reelscroll1[offset] = data; } -static WRITE8_HANDLER( reelscroll2_w ) +WRITE8_MEMBER(skylncr_state::reelscroll2_w) { - skylncr_state *state = space->machine().driver_data<skylncr_state>(); - state->m_reelscroll2[offset] = data; + m_reelscroll2[offset] = data; } -static WRITE8_HANDLER( reelscroll3_w ) +WRITE8_MEMBER(skylncr_state::reelscroll3_w) { - skylncr_state *state = space->machine().driver_data<skylncr_state>(); - state->m_reelscroll3[offset] = data; + m_reelscroll3[offset] = data; } -static WRITE8_HANDLER( reelscroll4_w ) +WRITE8_MEMBER(skylncr_state::reelscroll4_w) { - skylncr_state *state = space->machine().driver_data<skylncr_state>(); - state->m_reelscroll4[offset] = data; + m_reelscroll4[offset] = data; } @@ -314,27 +318,26 @@ static WRITE8_HANDLER( reelscroll4_w ) * Other Handlers * ************************************/ -static WRITE8_HANDLER( skylncr_coin_w ) +WRITE8_MEMBER(skylncr_state::skylncr_coin_w) { - coin_counter_w( space->machine(), 0, data & 0x04 ); + coin_counter_w( machine(), 0, data & 0x04 ); } -static READ8_HANDLER( ret_ff ) +READ8_MEMBER(skylncr_state::ret_ff) { return 0xff; } #ifdef UNUSED_FUNCTION -static READ8_HANDLER( ret_00 ) +READ8_MEMBER(skylncr_state::ret_00) { return 0x00; } #endif -static WRITE8_HANDLER( skylncr_nmi_enable_w ) +WRITE8_MEMBER(skylncr_state::skylncr_nmi_enable_w) { - skylncr_state *state = space->machine().driver_data<skylncr_state>(); - state->m_nmi_enable = data & 0x10; + m_nmi_enable = data & 0x10; } @@ -346,55 +349,55 @@ static ADDRESS_MAP_START( mem_map_skylncr, AS_PROGRAM, 8, skylncr_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE_LEGACY(skylncr_videoram_w ) AM_BASE(m_videoram ) - AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE_LEGACY(skylncr_colorram_w ) AM_BASE(m_colorram ) - - AM_RANGE(0x9800, 0x99ff) AM_RAM_WRITE_LEGACY(reeltiles_1_w ) AM_BASE(m_reeltiles_1_ram ) - AM_RANGE(0x9a00, 0x9bff) AM_RAM_WRITE_LEGACY(reeltiles_2_w ) AM_BASE(m_reeltiles_2_ram ) - AM_RANGE(0x9c00, 0x9dff) AM_RAM_WRITE_LEGACY(reeltiles_3_w ) AM_BASE(m_reeltiles_3_ram ) - AM_RANGE(0x9e00, 0x9fff) AM_RAM_WRITE_LEGACY(reeltiles_4_w ) AM_BASE(m_reeltiles_4_ram ) - AM_RANGE(0xa000, 0xa1ff) AM_RAM_WRITE_LEGACY(reeltileshigh_1_w ) AM_BASE(m_reeltileshigh_1_ram ) - AM_RANGE(0xa200, 0xa3ff) AM_RAM_WRITE_LEGACY(reeltileshigh_2_w ) AM_BASE(m_reeltileshigh_2_ram ) - AM_RANGE(0xa400, 0xa5ff) AM_RAM_WRITE_LEGACY(reeltileshigh_3_w ) AM_BASE(m_reeltileshigh_3_ram ) - AM_RANGE(0xa600, 0xa7ff) AM_RAM_WRITE_LEGACY(reeltileshigh_4_w ) AM_BASE(m_reeltileshigh_4_ram ) - - AM_RANGE(0xaa55, 0xaa55) AM_READ_LEGACY(ret_ff ) - - AM_RANGE(0xb000, 0xb03f) AM_RAM_WRITE_LEGACY(reelscroll1_w) AM_BASE(m_reelscroll1) - AM_RANGE(0xb040, 0xb07f) AM_RAM_WRITE_LEGACY(reelscroll1_w) - AM_RANGE(0xb080, 0xb0bf) AM_RAM_WRITE_LEGACY(reelscroll1_w) - AM_RANGE(0xb0c0, 0xb0ff) AM_RAM_WRITE_LEGACY(reelscroll1_w) - AM_RANGE(0xb100, 0xb13f) AM_RAM_WRITE_LEGACY(reelscroll1_w) - AM_RANGE(0xb140, 0xb17f) AM_RAM_WRITE_LEGACY(reelscroll1_w) - AM_RANGE(0xb180, 0xb1bf) AM_RAM_WRITE_LEGACY(reelscroll1_w) - AM_RANGE(0xb1c0, 0xb1ff) AM_RAM_WRITE_LEGACY(reelscroll1_w) - - AM_RANGE(0xb200, 0xb23f) AM_RAM_WRITE_LEGACY(reelscroll2_w) AM_BASE(m_reelscroll2) - AM_RANGE(0xb240, 0xb27f) AM_RAM_WRITE_LEGACY(reelscroll2_w) - AM_RANGE(0xb280, 0xb2bf) AM_RAM_WRITE_LEGACY(reelscroll2_w) - AM_RANGE(0xb2c0, 0xb2ff) AM_RAM_WRITE_LEGACY(reelscroll2_w) - AM_RANGE(0xb300, 0xb33f) AM_RAM_WRITE_LEGACY(reelscroll2_w) - AM_RANGE(0xb340, 0xb37f) AM_RAM_WRITE_LEGACY(reelscroll2_w) - AM_RANGE(0xb380, 0xb3bf) AM_RAM_WRITE_LEGACY(reelscroll2_w) - AM_RANGE(0xb3c0, 0xb3ff) AM_RAM_WRITE_LEGACY(reelscroll2_w) - - AM_RANGE(0xb400, 0xb43f) AM_RAM_WRITE_LEGACY(reelscroll3_w) AM_BASE(m_reelscroll3) - AM_RANGE(0xb440, 0xb47f) AM_RAM_WRITE_LEGACY(reelscroll3_w) - AM_RANGE(0xb480, 0xb4bf) AM_RAM_WRITE_LEGACY(reelscroll3_w) - AM_RANGE(0xb4c0, 0xb4ff) AM_RAM_WRITE_LEGACY(reelscroll3_w) - AM_RANGE(0xb500, 0xb53f) AM_RAM_WRITE_LEGACY(reelscroll3_w) - AM_RANGE(0xb540, 0xb57f) AM_RAM_WRITE_LEGACY(reelscroll3_w) - AM_RANGE(0xb580, 0xb5bf) AM_RAM_WRITE_LEGACY(reelscroll3_w) - AM_RANGE(0xb5c0, 0xb5ff) AM_RAM_WRITE_LEGACY(reelscroll3_w) - - AM_RANGE(0xb600, 0xb63f) AM_RAM_WRITE_LEGACY(reelscroll4_w) AM_BASE(m_reelscroll4) - AM_RANGE(0xb640, 0xb67f) AM_RAM_WRITE_LEGACY(reelscroll4_w) - AM_RANGE(0xb680, 0xb6bf) AM_RAM_WRITE_LEGACY(reelscroll4_w) - AM_RANGE(0xb6c0, 0xb6ff) AM_RAM_WRITE_LEGACY(reelscroll4_w) - AM_RANGE(0xb700, 0xb73f) AM_RAM_WRITE_LEGACY(reelscroll4_w) - AM_RANGE(0xb740, 0xb77f) AM_RAM_WRITE_LEGACY(reelscroll4_w) - AM_RANGE(0xb780, 0xb7bf) AM_RAM_WRITE_LEGACY(reelscroll4_w) - AM_RANGE(0xb7c0, 0xb7ff) AM_RAM_WRITE_LEGACY(reelscroll4_w) + AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(skylncr_videoram_w ) AM_BASE(m_videoram ) + AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(skylncr_colorram_w ) AM_BASE(m_colorram ) + + AM_RANGE(0x9800, 0x99ff) AM_RAM_WRITE(reeltiles_1_w ) AM_BASE(m_reeltiles_1_ram ) + AM_RANGE(0x9a00, 0x9bff) AM_RAM_WRITE(reeltiles_2_w ) AM_BASE(m_reeltiles_2_ram ) + AM_RANGE(0x9c00, 0x9dff) AM_RAM_WRITE(reeltiles_3_w ) AM_BASE(m_reeltiles_3_ram ) + AM_RANGE(0x9e00, 0x9fff) AM_RAM_WRITE(reeltiles_4_w ) AM_BASE(m_reeltiles_4_ram ) + AM_RANGE(0xa000, 0xa1ff) AM_RAM_WRITE(reeltileshigh_1_w ) AM_BASE(m_reeltileshigh_1_ram ) + AM_RANGE(0xa200, 0xa3ff) AM_RAM_WRITE(reeltileshigh_2_w ) AM_BASE(m_reeltileshigh_2_ram ) + AM_RANGE(0xa400, 0xa5ff) AM_RAM_WRITE(reeltileshigh_3_w ) AM_BASE(m_reeltileshigh_3_ram ) + AM_RANGE(0xa600, 0xa7ff) AM_RAM_WRITE(reeltileshigh_4_w ) AM_BASE(m_reeltileshigh_4_ram ) + + AM_RANGE(0xaa55, 0xaa55) AM_READ(ret_ff ) + + AM_RANGE(0xb000, 0xb03f) AM_RAM_WRITE(reelscroll1_w) AM_BASE(m_reelscroll1) + AM_RANGE(0xb040, 0xb07f) AM_RAM_WRITE(reelscroll1_w) + AM_RANGE(0xb080, 0xb0bf) AM_RAM_WRITE(reelscroll1_w) + AM_RANGE(0xb0c0, 0xb0ff) AM_RAM_WRITE(reelscroll1_w) + AM_RANGE(0xb100, 0xb13f) AM_RAM_WRITE(reelscroll1_w) + AM_RANGE(0xb140, 0xb17f) AM_RAM_WRITE(reelscroll1_w) + AM_RANGE(0xb180, 0xb1bf) AM_RAM_WRITE(reelscroll1_w) + AM_RANGE(0xb1c0, 0xb1ff) AM_RAM_WRITE(reelscroll1_w) + + AM_RANGE(0xb200, 0xb23f) AM_RAM_WRITE(reelscroll2_w) AM_BASE(m_reelscroll2) + AM_RANGE(0xb240, 0xb27f) AM_RAM_WRITE(reelscroll2_w) + AM_RANGE(0xb280, 0xb2bf) AM_RAM_WRITE(reelscroll2_w) + AM_RANGE(0xb2c0, 0xb2ff) AM_RAM_WRITE(reelscroll2_w) + AM_RANGE(0xb300, 0xb33f) AM_RAM_WRITE(reelscroll2_w) + AM_RANGE(0xb340, 0xb37f) AM_RAM_WRITE(reelscroll2_w) + AM_RANGE(0xb380, 0xb3bf) AM_RAM_WRITE(reelscroll2_w) + AM_RANGE(0xb3c0, 0xb3ff) AM_RAM_WRITE(reelscroll2_w) + + AM_RANGE(0xb400, 0xb43f) AM_RAM_WRITE(reelscroll3_w) AM_BASE(m_reelscroll3) + AM_RANGE(0xb440, 0xb47f) AM_RAM_WRITE(reelscroll3_w) + AM_RANGE(0xb480, 0xb4bf) AM_RAM_WRITE(reelscroll3_w) + AM_RANGE(0xb4c0, 0xb4ff) AM_RAM_WRITE(reelscroll3_w) + AM_RANGE(0xb500, 0xb53f) AM_RAM_WRITE(reelscroll3_w) + AM_RANGE(0xb540, 0xb57f) AM_RAM_WRITE(reelscroll3_w) + AM_RANGE(0xb580, 0xb5bf) AM_RAM_WRITE(reelscroll3_w) + AM_RANGE(0xb5c0, 0xb5ff) AM_RAM_WRITE(reelscroll3_w) + + AM_RANGE(0xb600, 0xb63f) AM_RAM_WRITE(reelscroll4_w) AM_BASE(m_reelscroll4) + AM_RANGE(0xb640, 0xb67f) AM_RAM_WRITE(reelscroll4_w) + AM_RANGE(0xb680, 0xb6bf) AM_RAM_WRITE(reelscroll4_w) + AM_RANGE(0xb6c0, 0xb6ff) AM_RAM_WRITE(reelscroll4_w) + AM_RANGE(0xb700, 0xb73f) AM_RAM_WRITE(reelscroll4_w) + AM_RANGE(0xb740, 0xb77f) AM_RAM_WRITE(reelscroll4_w) + AM_RANGE(0xb780, 0xb7bf) AM_RAM_WRITE(reelscroll4_w) + AM_RANGE(0xb7c0, 0xb7ff) AM_RAM_WRITE(reelscroll4_w) AM_RANGE(0xc000, 0xffff) AM_ROM ADDRESS_MAP_END @@ -406,15 +409,15 @@ static ADDRESS_MAP_START( io_map_skylncr, AS_IO, 8, skylncr_state ) AM_RANGE(0x00, 0x03) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w) /* Input Ports */ AM_RANGE(0x10, 0x13) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w) /* Input Ports */ - AM_RANGE(0x20, 0x20) AM_WRITE_LEGACY(skylncr_coin_w ) + AM_RANGE(0x20, 0x20) AM_WRITE(skylncr_coin_w ) AM_RANGE(0x30, 0x31) AM_DEVWRITE_LEGACY("aysnd", ay8910_address_data_w ) AM_RANGE(0x31, 0x31) AM_DEVREAD_LEGACY("aysnd", ay8910_r ) - AM_RANGE(0x40, 0x41) AM_WRITE_LEGACY(skylncr_paletteram_w ) - AM_RANGE(0x50, 0x51) AM_WRITE_LEGACY(skylncr_paletteram2_w ) + AM_RANGE(0x40, 0x41) AM_WRITE(skylncr_paletteram_w ) + AM_RANGE(0x50, 0x51) AM_WRITE(skylncr_paletteram2_w ) - AM_RANGE(0x70, 0x70) AM_WRITE_LEGACY(skylncr_nmi_enable_w ) + AM_RANGE(0x70, 0x70) AM_WRITE(skylncr_nmi_enable_w ) ADDRESS_MAP_END diff --git a/src/mame/drivers/sliver.c b/src/mame/drivers/sliver.c index a64ff3e8e33..d337a4582ff 100644 --- a/src/mame/drivers/sliver.c +++ b/src/mame/drivers/sliver.c @@ -103,6 +103,15 @@ public: UINT16 m_tempbuf[8]; required_device<cpu_device> m_maincpu; + DECLARE_WRITE16_MEMBER(fifo_data_w); + DECLARE_WRITE16_MEMBER(fifo_clear_w); + DECLARE_WRITE16_MEMBER(fifo_flush_w); + DECLARE_WRITE16_MEMBER(jpeg1_w); + DECLARE_WRITE16_MEMBER(jpeg2_w); + DECLARE_WRITE16_MEMBER(io_offset_w); + DECLARE_WRITE16_MEMBER(io_data_w); + DECLARE_WRITE16_MEMBER(sound_w); + DECLARE_WRITE8_MEMBER(oki_setbank); }; static void plot_pixel_rgb(sliver_state *state, int x, int y, UINT32 r, UINT32 g, UINT32 b) @@ -130,25 +139,24 @@ static void plot_pixel_pal(running_machine &machine, int x, int y, int addr) state->m_bitmap_fg.pix32(y, x) = r | (g<<8) | (b<<16); } -static WRITE16_HANDLER( fifo_data_w ) +WRITE16_MEMBER(sliver_state::fifo_data_w) { - sliver_state *state = space->machine().driver_data<sliver_state>(); - if (state->m_tmp_counter < 8) + if (m_tmp_counter < 8) { - COMBINE_DATA(&state->m_tempbuf[state->m_tmp_counter]); - state->m_tmp_counter++; - if (state->m_tmp_counter == 8) // copy 8 bytes to fifo, every byte should be copied directly, but it's easier to copy whole commands + COMBINE_DATA(&m_tempbuf[m_tmp_counter]); + m_tmp_counter++; + if (m_tmp_counter == 8) // copy 8 bytes to fifo, every byte should be copied directly, but it's easier to copy whole commands { do { - state->m_fifo[state->m_fptr++]=state->m_tempbuf[8-state->m_tmp_counter]; - if (state->m_fptr > (FIFO_SIZE - 1)) + m_fifo[m_fptr++]=m_tempbuf[8-m_tmp_counter]; + if (m_fptr > (FIFO_SIZE - 1)) { - state->m_fptr=FIFO_SIZE-1; + m_fptr=FIFO_SIZE-1; } } - while (--state->m_tmp_counter > 0); + while (--m_tmp_counter > 0); } } } @@ -187,26 +195,24 @@ static void blit_gfx(running_machine &machine) } } -static WRITE16_HANDLER( fifo_clear_w ) +WRITE16_MEMBER(sliver_state::fifo_clear_w) { - sliver_state *state = space->machine().driver_data<sliver_state>(); - state->m_bitmap_fg.fill(0); - state->m_fptr=0; - state->m_tmp_counter=0; + m_bitmap_fg.fill(0); + m_fptr=0; + m_tmp_counter=0; } -static WRITE16_HANDLER( fifo_flush_w ) +WRITE16_MEMBER(sliver_state::fifo_flush_w) { - blit_gfx(space->machine()); + blit_gfx(machine()); } -static WRITE16_HANDLER( jpeg1_w ) +WRITE16_MEMBER(sliver_state::jpeg1_w) { - sliver_state *state = space->machine().driver_data<sliver_state>(); - COMBINE_DATA(&state->m_jpeg1); + COMBINE_DATA(&m_jpeg1); } static void render_jpeg(running_machine &machine) @@ -266,52 +272,49 @@ static void render_jpeg(running_machine &machine) } -static WRITE16_HANDLER( jpeg2_w ) +WRITE16_MEMBER(sliver_state::jpeg2_w) { - sliver_state *state = space->machine().driver_data<sliver_state>(); - COMBINE_DATA(&state->m_jpeg2); + COMBINE_DATA(&m_jpeg2); - render_jpeg(space->machine()); + render_jpeg(machine()); } -static WRITE16_HANDLER(io_offset_w) +WRITE16_MEMBER(sliver_state::io_offset_w) { - sliver_state *state = space->machine().driver_data<sliver_state>(); - COMBINE_DATA(&state->m_io_offset); + COMBINE_DATA(&m_io_offset); } -static WRITE16_HANDLER(io_data_w) +WRITE16_MEMBER(sliver_state::io_data_w) { - sliver_state *state = space->machine().driver_data<sliver_state>(); - if (state->m_io_offset < IO_SIZE) + if (m_io_offset < IO_SIZE) { int tmpx, tmpy; - COMBINE_DATA(&state->m_io_reg[state->m_io_offset]); + COMBINE_DATA(&m_io_reg[m_io_offset]); - tmpy = state->m_io_reg[0x1a] + (state->m_io_reg[0x1b] << 8) - state->m_io_reg[0x20]; //0x20 ??? - tmpx = state->m_io_reg[0x1e] + (state->m_io_reg[0x1f] << 8); + tmpy = m_io_reg[0x1a] + (m_io_reg[0x1b] << 8) - m_io_reg[0x20]; //0x20 ??? + tmpx = m_io_reg[0x1e] + (m_io_reg[0x1f] << 8); - if (tmpy != state->m_jpeg_y || tmpx != state->m_jpeg_x) + if (tmpy != m_jpeg_y || tmpx != m_jpeg_x) { - state->m_jpeg_x = tmpx; - state->m_jpeg_y = tmpy; - render_jpeg(space->machine()); + m_jpeg_x = tmpx; + m_jpeg_y = tmpy; + render_jpeg(machine()); } } else { - logerror("I/O access out of range: %x\n", state->m_io_offset); + logerror("I/O access out of range: %x\n", m_io_offset); } } -static WRITE16_HANDLER(sound_w) +WRITE16_MEMBER(sliver_state::sound_w) { soundlatch_w(space, 0, data & 0xff); - cputag_set_input_line(space->machine(), "audiocpu", MCS51_INT0_LINE, HOLD_LINE); + cputag_set_input_line(machine(), "audiocpu", MCS51_INT0_LINE, HOLD_LINE); } static ADDRESS_MAP_START( sliver_map, AS_PROGRAM, 16, sliver_state ) @@ -323,20 +326,20 @@ static ADDRESS_MAP_START( sliver_map, AS_PROGRAM, 16, sliver_state ) AM_RANGE(0x300002, 0x300003) AM_NOP // bit 0 tested, writes 0xe0 and 0xc0 - both r and w at the end of interrupt code - AM_RANGE(0x300004, 0x300005) AM_WRITE_LEGACY(io_offset_w) //unknown i/o device - AM_RANGE(0x300006, 0x300007) AM_WRITE_LEGACY(io_data_w) + AM_RANGE(0x300004, 0x300005) AM_WRITE(io_offset_w) //unknown i/o device + AM_RANGE(0x300006, 0x300007) AM_WRITE(io_data_w) AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1_P2") AM_RANGE(0x400002, 0x400003) AM_READ_PORT("SYSTEM") AM_RANGE(0x400004, 0x400005) AM_READ_PORT("DSW") - AM_RANGE(0x400006, 0x400007) AM_WRITE_LEGACY(fifo_data_w) - AM_RANGE(0x400008, 0x400009) AM_WRITE_LEGACY(fifo_clear_w) - AM_RANGE(0x40000a, 0x40000b) AM_WRITE_LEGACY(fifo_flush_w) - AM_RANGE(0x40000c, 0x40000d) AM_WRITE_LEGACY(jpeg1_w) - AM_RANGE(0x40000e, 0x40000f) AM_WRITE_LEGACY(jpeg2_w) + AM_RANGE(0x400006, 0x400007) AM_WRITE(fifo_data_w) + AM_RANGE(0x400008, 0x400009) AM_WRITE(fifo_clear_w) + AM_RANGE(0x40000a, 0x40000b) AM_WRITE(fifo_flush_w) + AM_RANGE(0x40000c, 0x40000d) AM_WRITE(jpeg1_w) + AM_RANGE(0x40000e, 0x40000f) AM_WRITE(jpeg2_w) AM_RANGE(0x400010, 0x400015) AM_WRITENOP //unknown - AM_RANGE(0x400016, 0x400017) AM_WRITE_LEGACY(sound_w) + AM_RANGE(0x400016, 0x400017) AM_WRITE(sound_w) AM_RANGE(0x400018, 0x400019) AM_WRITENOP //unknown AM_RANGE(0xff0000, 0xffffff) AM_RAM @@ -344,9 +347,9 @@ ADDRESS_MAP_END // Sound CPU -static WRITE8_HANDLER(oki_setbank) +WRITE8_MEMBER(sliver_state::oki_setbank) { - UINT8 *sound = space->machine().region("oki")->base(); + UINT8 *sound = machine().region("oki")->base(); int bank=(data^0xff)&3; //xor or not ? memcpy(sound+0x20000, sound+0x100000+0x20000*bank, 0x20000); } @@ -359,7 +362,7 @@ static ADDRESS_MAP_START( soundmem_io, AS_IO, 8, sliver_state ) AM_RANGE(0x0100, 0x0100) AM_DEVREADWRITE("oki", okim6295_device, read, write) AM_RANGE(0x0101, 0x0101) AM_READ_LEGACY(soundlatch_r) /* ports */ - AM_RANGE(MCS51_PORT_P1, MCS51_PORT_P1) AM_WRITE_LEGACY(oki_setbank ) + AM_RANGE(MCS51_PORT_P1, MCS51_PORT_P1) AM_WRITE(oki_setbank ) ADDRESS_MAP_END static VIDEO_START(sliver) diff --git a/src/mame/drivers/slotcarn.c b/src/mame/drivers/slotcarn.c index d3cdcddeb0e..7d116bdb5d4 100644 --- a/src/mame/drivers/slotcarn.c +++ b/src/mame/drivers/slotcarn.c @@ -41,6 +41,8 @@ public: UINT8 *m_ram_video; UINT8 *m_ram_palette; UINT8 *m_backup_ram; + DECLARE_READ8_MEMBER(palette_r); + DECLARE_WRITE8_MEMBER(palette_w); }; @@ -54,25 +56,23 @@ public: */ -static READ8_HANDLER( palette_r ) +READ8_MEMBER(slotcarn_state::palette_r) { - slotcarn_state *state = space->machine().driver_data<slotcarn_state>(); int co; - co = ((state->m_ram_attr[offset] & 0x7F) << 3) | (offset & 0x07); - return state->m_ram_palette[co]; + co = ((m_ram_attr[offset] & 0x7F) << 3) | (offset & 0x07); + return m_ram_palette[co]; } -static WRITE8_HANDLER( palette_w ) +WRITE8_MEMBER(slotcarn_state::palette_w) { - slotcarn_state *state = space->machine().driver_data<slotcarn_state>(); int co; - space->machine().primary_screen->update_now(); + machine().primary_screen->update_now(); data &= 0x0f; - co = ((state->m_ram_attr[offset] & 0x7F) << 3) | (offset & 0x07); - state->m_ram_palette[co] = data; + co = ((m_ram_attr[offset] & 0x7F) << 3) | (offset & 0x07); + m_ram_palette[co] = data; } @@ -203,7 +203,7 @@ static ADDRESS_MAP_START( slotcarn_map, AS_PROGRAM, 8, slotcarn_state ) AM_RANGE(0xe800, 0xefff) AM_RAM AM_BASE(m_ram_attr) AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_BASE(m_ram_video) - AM_RANGE(0xf800, 0xfbff) AM_READWRITE_LEGACY(palette_r, palette_w) + AM_RANGE(0xf800, 0xfbff) AM_READWRITE(palette_r, palette_w) ADDRESS_MAP_END // spielbud - is the ay mirrored, or are there now 2? diff --git a/src/mame/drivers/sms.c b/src/mame/drivers/sms.c index 841b8d96df3..5e43767253c 100644 --- a/src/mame/drivers/sms.c +++ b/src/mame/drivers/sms.c @@ -230,6 +230,13 @@ public: UINT8 m_communication_port_status; bitmap_ind16 m_bitmap; UINT8 m_vid_regs[7]; + DECLARE_WRITE8_MEMBER(bankswitch_w); + DECLARE_READ8_MEMBER(link_r); + DECLARE_WRITE8_MEMBER(link_w); + DECLARE_READ8_MEMBER(z80_8088_r); + DECLARE_READ8_MEMBER(p03_r); + DECLARE_WRITE8_MEMBER(p03_w); + DECLARE_WRITE8_MEMBER(video_w); }; @@ -239,9 +246,9 @@ public: * *************************************/ -static WRITE8_HANDLER(bankswitch_w) +WRITE8_MEMBER(smsmfg_state::bankswitch_w) { - memory_set_bank(space->machine(), "bank1", data); + memory_set_bank(machine(), "bank1", data); } /************************************* @@ -250,72 +257,67 @@ static WRITE8_HANDLER(bankswitch_w) * *************************************/ -static READ8_HANDLER(link_r) +READ8_MEMBER(smsmfg_state::link_r) { - smsmfg_state *state = space->machine().driver_data<smsmfg_state>(); switch(offset) { case 0: - state->m_communication_port_status &= ~0x01; - return state->m_communication_port[0]; + m_communication_port_status &= ~0x01; + return m_communication_port[0]; case 1: - state->m_communication_port_status &= ~0x02; - return state->m_communication_port[1]; + m_communication_port_status &= ~0x02; + return m_communication_port[1]; case 2: - return state->m_communication_port_status; + return m_communication_port_status; } return 0; }; -static WRITE8_HANDLER(link_w) +WRITE8_MEMBER(smsmfg_state::link_w) { - smsmfg_state *state = space->machine().driver_data<smsmfg_state>(); switch(offset) { case 0: - state->m_communication_port_status |= 0x08; - state->m_communication_port[3] = data; + m_communication_port_status |= 0x08; + m_communication_port[3] = data; break; case 1: - state->m_communication_port_status |= 0x04; - state->m_communication_port[2] = data; + m_communication_port_status |= 0x04; + m_communication_port[2] = data; break; } } -static READ8_HANDLER(z80_8088_r) +READ8_MEMBER(smsmfg_state::z80_8088_r) { - smsmfg_state *state = space->machine().driver_data<smsmfg_state>(); - return state->m_communication_port_status; + return m_communication_port_status; } -static READ8_HANDLER(p03_r) +READ8_MEMBER(smsmfg_state::p03_r) { - smsmfg_state *state = space->machine().driver_data<smsmfg_state>(); switch(offset) { case 0: - state->m_communication_port_status &= ~0x08; - return state->m_communication_port[3]; + m_communication_port_status &= ~0x08; + return m_communication_port[3]; case 1: - state->m_communication_port_status &= ~0x04; - return state->m_communication_port[2]; + m_communication_port_status &= ~0x04; + return m_communication_port[2]; } return 0; } -static WRITE8_HANDLER(p03_w) +WRITE8_MEMBER(smsmfg_state::p03_w) { - smsmfg_state *state = space->machine().driver_data<smsmfg_state>(); switch(offset) { case 0: - state->m_communication_port_status |= 0x01; - state->m_communication_port[0] = data; + m_communication_port_status |= 0x01; + m_communication_port[0] = data; break; case 1: - state->m_communication_port_status |= 0x02; - state->m_communication_port[1] = data; + m_communication_port_status |= 0x02; + m_communication_port[1] = data; break; } } @@ -432,18 +434,17 @@ static const ppi8255_interface ppi8255_intf[2] = * *************************************/ -static WRITE8_HANDLER(video_w) +WRITE8_MEMBER(smsmfg_state::video_w) { - smsmfg_state *state = space->machine().driver_data<smsmfg_state>(); - state->m_vid_regs[offset] = data; + m_vid_regs[offset] = data; if ( offset == 5 ) { int x,y; - int xstart = state->m_vid_regs[0] + state->m_vid_regs[1]*256; - int width = state->m_vid_regs[2]; - int ystart = state->m_vid_regs[3]; - int height = state->m_vid_regs[4]; - int color = state->m_vid_regs[5]; + int xstart = m_vid_regs[0] + m_vid_regs[1]*256; + int width = m_vid_regs[2]; + int ystart = m_vid_regs[3]; + int height = m_vid_regs[4]; + int color = m_vid_regs[5]; if ( height == 0 ) height = 256; @@ -456,7 +457,7 @@ static WRITE8_HANDLER(video_w) for ( x = xstart; x < xstart + width; x++ ) { if ( y < 256 ) - state->m_bitmap.pix16(y, x) = color; + m_bitmap.pix16(y, x) = color; } } } @@ -497,19 +498,19 @@ static PALETTE_INIT( sms ) static ADDRESS_MAP_START( sms_map, AS_PROGRAM, 8, smsmfg_state ) AM_RANGE(0x00000, 0x007ff) AM_RAM AM_SHARE("nvram") AM_RANGE(0x00800, 0x00803) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w) - AM_RANGE(0x01000, 0x01007) AM_WRITE_LEGACY(video_w) - AM_RANGE(0x01800, 0x01803) AM_READWRITE_LEGACY(link_r, link_w) + AM_RANGE(0x01000, 0x01007) AM_WRITE(video_w) + AM_RANGE(0x01800, 0x01803) AM_READWRITE(link_r, link_w) AM_RANGE(0x04000, 0x07fff) AM_ROMBANK("bank1") - AM_RANGE(0x04000, 0x04000) AM_WRITE_LEGACY(bankswitch_w) + AM_RANGE(0x04000, 0x04000) AM_WRITE(bankswitch_w) AM_RANGE(0x08000, 0x0ffff) AM_ROM AM_RANGE(0xf8000, 0xfffff) AM_ROM // mirror for vectors ADDRESS_MAP_END static ADDRESS_MAP_START( sureshot_map, AS_PROGRAM, 8, smsmfg_state ) AM_RANGE(0x00000, 0x007ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x02000, 0x02007) AM_WRITE_LEGACY(video_w) + AM_RANGE(0x02000, 0x02007) AM_WRITE(video_w) AM_RANGE(0x03000, 0x03003) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w) - AM_RANGE(0x03800, 0x03803) AM_READWRITE_LEGACY(link_r, link_w) + AM_RANGE(0x03800, 0x03803) AM_READWRITE(link_r, link_w) AM_RANGE(0x08000, 0x0ffff) AM_ROM AM_RANGE(0xf8000, 0xfffff) AM_ROM // mirror for vectors ADDRESS_MAP_END @@ -519,8 +520,8 @@ static ADDRESS_MAP_START( sub_map, AS_PROGRAM, 8, smsmfg_state ) AM_RANGE(0x2000, 0x27ff) AM_RAM AM_RANGE(0x3100, 0x3103) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w) AM_RANGE(0x3381, 0x3382) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_address_w) - AM_RANGE(0x3400, 0x3400) AM_READ_LEGACY(z80_8088_r) - AM_RANGE(0x3500, 0x3501) AM_READWRITE_LEGACY(p03_r, p03_w) + AM_RANGE(0x3400, 0x3400) AM_READ(z80_8088_r) + AM_RANGE(0x3500, 0x3501) AM_READWRITE(p03_r, p03_w) ADDRESS_MAP_END /************************************* diff --git a/src/mame/drivers/sothello.c b/src/mame/drivers/sothello.c index 828fa5d26ea..8a74e237d65 100644 --- a/src/mame/drivers/sothello.c +++ b/src/mame/drivers/sothello.c @@ -53,6 +53,17 @@ public: int m_soundcpu_busy; int m_msm_data; required_device<v9938_device> m_v9938; + DECLARE_WRITE8_MEMBER(bank_w); + DECLARE_READ8_MEMBER(subcpu_halt_set); + DECLARE_READ8_MEMBER(subcpu_halt_clear); + DECLARE_READ8_MEMBER(subcpu_comm_status); + DECLARE_READ8_MEMBER(soundcpu_status_r); + DECLARE_WRITE8_MEMBER(msm_data_w); + DECLARE_WRITE8_MEMBER(soundcpu_busyflag_set_w); + DECLARE_WRITE8_MEMBER(soundcpu_busyflag_reset_w); + DECLARE_WRITE8_MEMBER(soundcpu_int_clear_w); + DECLARE_WRITE8_MEMBER(subcpu_status_w); + DECLARE_READ8_MEMBER(subcpu_status_r); }; @@ -67,9 +78,9 @@ public: /* main Z80 */ -static WRITE8_HANDLER(bank_w) +WRITE8_MEMBER(sothello_state::bank_w) { - UINT8 *RAM = space->machine().region("maincpu")->base(); + UINT8 *RAM = machine().region("maincpu")->base(); int bank=0; switch(data^0xff) { @@ -78,7 +89,7 @@ static WRITE8_HANDLER(bank_w) case 4: bank=2; break; case 8: bank=3; break; } - memory_set_bankptr(space->machine(),"bank1",&RAM[bank*0x4000+0x10000]); + memory_set_bankptr(machine(),"bank1",&RAM[bank*0x4000+0x10000]); } static TIMER_CALLBACK( subcpu_suspend ) @@ -92,33 +103,29 @@ static TIMER_CALLBACK( subcpu_resume ) cputag_set_input_line(machine, "sub", INPUT_LINE_NMI, PULSE_LINE); } -static READ8_HANDLER( subcpu_halt_set ) +READ8_MEMBER(sothello_state::subcpu_halt_set) { - sothello_state *state = space->machine().driver_data<sothello_state>(); - space->machine().scheduler().synchronize(FUNC(subcpu_suspend)); - state->m_subcpu_status|=2; + machine().scheduler().synchronize(FUNC(subcpu_suspend)); + m_subcpu_status|=2; return 0; } -static READ8_HANDLER( subcpu_halt_clear ) +READ8_MEMBER(sothello_state::subcpu_halt_clear) { - sothello_state *state = space->machine().driver_data<sothello_state>(); - space->machine().scheduler().synchronize(FUNC(subcpu_resume)); - state->m_subcpu_status&=~1; - state->m_subcpu_status&=~2; + machine().scheduler().synchronize(FUNC(subcpu_resume)); + m_subcpu_status&=~1; + m_subcpu_status&=~2; return 0; } -static READ8_HANDLER(subcpu_comm_status ) +READ8_MEMBER(sothello_state::subcpu_comm_status) { - sothello_state *state = space->machine().driver_data<sothello_state>(); - return state->m_subcpu_status; + return m_subcpu_status; } -static READ8_HANDLER( soundcpu_status_r ) +READ8_MEMBER(sothello_state::soundcpu_status_r) { - sothello_state *state = space->machine().driver_data<sothello_state>(); - return state->m_soundcpu_busy; + return m_soundcpu_busy; } static ADDRESS_MAP_START( maincpu_mem_map, AS_PROGRAM, 8, sothello_state ) @@ -133,12 +140,12 @@ static ADDRESS_MAP_START( maincpu_io_map, AS_IO, 8, sothello_state ) AM_RANGE( 0x00, 0x0f) AM_READ_PORT("INPUT1") AM_RANGE( 0x10, 0x1f) AM_READ_PORT("INPUT2") AM_RANGE( 0x20, 0x2f) AM_READ_PORT("SYSTEM") - AM_RANGE( 0x30, 0x30) AM_READ_LEGACY(subcpu_halt_set) - AM_RANGE( 0x31, 0x31) AM_READ_LEGACY(subcpu_halt_clear) - AM_RANGE( 0x32, 0x32) AM_READ_LEGACY(subcpu_comm_status) - AM_RANGE( 0x33, 0x33) AM_READ_LEGACY(soundcpu_status_r) + AM_RANGE( 0x30, 0x30) AM_READ(subcpu_halt_set) + AM_RANGE( 0x31, 0x31) AM_READ(subcpu_halt_clear) + AM_RANGE( 0x32, 0x32) AM_READ(subcpu_comm_status) + AM_RANGE( 0x33, 0x33) AM_READ(soundcpu_status_r) AM_RANGE( 0x40, 0x4f) AM_WRITE_LEGACY(soundlatch_w) - AM_RANGE( 0x50, 0x50) AM_WRITE_LEGACY(bank_w) + AM_RANGE( 0x50, 0x50) AM_WRITE(bank_w) AM_RANGE( 0x60, 0x61) AM_MIRROR(0x02) AM_DEVREADWRITE_LEGACY("ymsnd", ym2203_r, ym2203_w) /* not sure, but the A1 line is ignored, code @ $8b8 */ AM_RANGE( 0x70, 0x73) AM_DEVREADWRITE( "v9938", v9938_device, read, write ) @@ -158,28 +165,25 @@ static WRITE8_DEVICE_HANDLER(msm_cfg_w) msm5205_reset_w(device,data&1); } -static WRITE8_HANDLER( msm_data_w ) +WRITE8_MEMBER(sothello_state::msm_data_w) { - sothello_state *state = space->machine().driver_data<sothello_state>(); - state->m_msm_data = data; + m_msm_data = data; } -static WRITE8_HANDLER(soundcpu_busyflag_set_w) +WRITE8_MEMBER(sothello_state::soundcpu_busyflag_set_w) { - sothello_state *state = space->machine().driver_data<sothello_state>(); - state->m_soundcpu_busy=1; + m_soundcpu_busy=1; } -static WRITE8_HANDLER(soundcpu_busyflag_reset_w) +WRITE8_MEMBER(sothello_state::soundcpu_busyflag_reset_w) { - sothello_state *state = space->machine().driver_data<sothello_state>(); - state->m_soundcpu_busy=0; + m_soundcpu_busy=0; } -static WRITE8_HANDLER(soundcpu_int_clear_w) +WRITE8_MEMBER(sothello_state::soundcpu_int_clear_w) { - cputag_set_input_line(space->machine(), "soundcpu", 0, CLEAR_LINE ); + cputag_set_input_line(machine(), "soundcpu", 0, CLEAR_LINE ); } static ADDRESS_MAP_START( soundcpu_mem_map, AS_PROGRAM, 8, sothello_state ) @@ -190,11 +194,11 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( soundcpu_io_map, AS_IO, 8, sothello_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x00) AM_READ_LEGACY(soundlatch_r) - AM_RANGE(0x01, 0x01) AM_WRITE_LEGACY(msm_data_w) + AM_RANGE(0x01, 0x01) AM_WRITE(msm_data_w) AM_RANGE(0x02, 0x02) AM_DEVWRITE_LEGACY("msm", msm_cfg_w) - AM_RANGE(0x03, 0x03) AM_WRITE_LEGACY(soundcpu_busyflag_set_w) - AM_RANGE(0x04, 0x04) AM_WRITE_LEGACY(soundcpu_busyflag_reset_w) - AM_RANGE(0x05, 0x05) AM_WRITE_LEGACY(soundcpu_int_clear_w) + AM_RANGE(0x03, 0x03) AM_WRITE(soundcpu_busyflag_set_w) + AM_RANGE(0x04, 0x04) AM_WRITE(soundcpu_busyflag_reset_w) + AM_RANGE(0x05, 0x05) AM_WRITE(soundcpu_int_clear_w) ADDRESS_MAP_END /* sub 6809 */ @@ -212,19 +216,19 @@ static void unlock_shared_ram(address_space *space) } } -static WRITE8_HANDLER(subcpu_status_w) +WRITE8_MEMBER(sothello_state::subcpu_status_w) { - unlock_shared_ram(space); + unlock_shared_ram(&space); } -static READ8_HANDLER(subcpu_status_r) +READ8_MEMBER(sothello_state::subcpu_status_r) { - unlock_shared_ram(space); + unlock_shared_ram(&space); return 0; } static ADDRESS_MAP_START( subcpu_mem_map, AS_PROGRAM, 8, sothello_state ) - AM_RANGE(0x0000, 0x1fff) AM_READWRITE_LEGACY(subcpu_status_r,subcpu_status_w) + AM_RANGE(0x0000, 0x1fff) AM_READWRITE(subcpu_status_r,subcpu_status_w) AM_RANGE(0x2000, 0x77ff) AM_RAM AM_RANGE(0x7800, 0x7fff) AM_RAM AM_SHARE("share1") /* upper 0x800 of 6264 is shared with main cpu */ AM_RANGE(0x8000, 0xffff) AM_ROM diff --git a/src/mame/drivers/spaceg.c b/src/mame/drivers/spaceg.c index 56e9e929787..31533717d79 100644 --- a/src/mame/drivers/spaceg.c +++ b/src/mame/drivers/spaceg.c @@ -183,6 +183,8 @@ public: UINT8 * m_colorram; UINT8 * m_io9400; UINT8 * m_io9401; + DECLARE_WRITE8_MEMBER(zvideoram_w); + DECLARE_READ8_MEMBER(spaceg_colorram_r); }; /************************************* @@ -218,19 +220,18 @@ static PALETTE_INIT( spaceg ) palette_set_color (machine, 15, MAKE_RGB(0x7f,0x7f,0x7f));//??? } -static WRITE8_HANDLER( zvideoram_w ) +WRITE8_MEMBER(spaceg_state::zvideoram_w) { - spaceg_state *state = space->machine().driver_data<spaceg_state>(); - int col = state->m_colorram[0x400]; - int xoff = *state->m_io9400 >> 5 & 7; + int col = m_colorram[0x400]; + int xoff = *m_io9400 >> 5 & 7; UINT16 offset2 = (offset + 0x100) & 0x1fff; UINT16 sdata = data << (8 - xoff); - UINT16 vram_data = state->m_videoram[offset] << 8 | (state->m_videoram[offset2]); + UINT16 vram_data = m_videoram[offset] << 8 | (m_videoram[offset2]); if (col > 0x0f) popmessage("color > 0x0f = %2d", col); col &= 0x0f; - switch (*state->m_io9401) + switch (*m_io9401) { // draw case 0: @@ -240,8 +241,8 @@ static WRITE8_HANDLER( zvideoram_w ) vram_data |= sdata; // update colorram - if (sdata&0xff00) state->m_colorram[offset] = col; - if (sdata&0x00ff) state->m_colorram[offset2] = col; + if (sdata&0xff00) m_colorram[offset] = col; + if (sdata&0x00ff) m_colorram[offset2] = col; break; // erase @@ -250,45 +251,44 @@ static WRITE8_HANDLER( zvideoram_w ) break; default: - logerror("mode = %02x pc = %04x\n", *state->m_io9401, cpu_get_pc(&space->device())); - popmessage("mode = %02x pc = %04x\n", *state->m_io9401, cpu_get_pc(&space->device())); + logerror("mode = %02x pc = %04x\n", *m_io9401, cpu_get_pc(&space.device())); + popmessage("mode = %02x pc = %04x\n", *m_io9401, cpu_get_pc(&space.device())); return; } - state->m_videoram[offset]=vram_data>>8; - state->m_videoram[offset2]=vram_data&0xff; + m_videoram[offset]=vram_data>>8; + m_videoram[offset2]=vram_data&0xff; } -static READ8_HANDLER(spaceg_colorram_r) +READ8_MEMBER(spaceg_state::spaceg_colorram_r) { - spaceg_state *state = space->machine().driver_data<spaceg_state>(); int rgbcolor; if (offset < 0x400) { - rgbcolor = (state->m_colorram[offset] << 1) | ((offset &0x100) >> 8); + rgbcolor = (m_colorram[offset] << 1) | ((offset &0x100) >> 8); if ((offset >= 0x200) && (offset < 0x220)) /* 0xa200- 0xa21f */ { /* palette 1 */ int col_ind = offset & 0x1f; - palette_set_color_rgb(space->machine(), 0x10 + 0x00 + col_ind, pal3bit(rgbcolor >> 0), pal3bit(rgbcolor >> 6), pal3bit(rgbcolor >> 3)); + palette_set_color_rgb(machine(), 0x10 + 0x00 + col_ind, pal3bit(rgbcolor >> 0), pal3bit(rgbcolor >> 6), pal3bit(rgbcolor >> 3)); } else if ((offset >= 0x300) && (offset < 0x320)) /* 0xa300- 0xa31f */ { /* palette 2 */ int col_ind = offset & 0x1f; - palette_set_color_rgb(space->machine(), 0x10 + 0x00 + col_ind, pal3bit(rgbcolor >> 0), pal3bit(rgbcolor >> 6), pal3bit(rgbcolor >> 3)); + palette_set_color_rgb(machine(), 0x10 + 0x00 + col_ind, pal3bit(rgbcolor >> 0), pal3bit(rgbcolor >> 6), pal3bit(rgbcolor >> 3)); } else logerror("palette? read from colorram offset = %04x\n",offset); } - if (*state->m_io9401 != 0x40) - logerror("colorram read in mode: 9401 = %02x (offset = %04x)\n", *state->m_io9401, offset); + if (*m_io9401 != 0x40) + logerror("colorram read in mode: 9401 = %02x (offset = %04x)\n", *m_io9401, offset); - return state->m_colorram[offset]; + return m_colorram[offset]; } @@ -328,8 +328,8 @@ static ADDRESS_MAP_START( spaceg_map, AS_PROGRAM, 8, spaceg_state ) AM_RANGE(0x3000, 0x3fff) AM_ROM AM_RANGE(0x7000, 0x77ff) AM_RAM - AM_RANGE(0xa000, 0xbfff) AM_RAM_READ_LEGACY(spaceg_colorram_r) AM_BASE(m_colorram) - AM_RANGE(0xc000, 0xdfff) AM_RAM_WRITE_LEGACY(zvideoram_w) AM_BASE(m_videoram) + AM_RANGE(0xa000, 0xbfff) AM_RAM_READ(spaceg_colorram_r) AM_BASE(m_colorram) + AM_RANGE(0xc000, 0xdfff) AM_RAM_WRITE(zvideoram_w) AM_BASE(m_videoram) AM_RANGE(0x9400, 0x9400) AM_WRITEONLY AM_BASE(m_io9400) /* gfx ctrl */ AM_RANGE(0x9401, 0x9401) AM_WRITEONLY AM_BASE(m_io9401) /* gfx ctrl */ diff --git a/src/mame/drivers/speglsht.c b/src/mame/drivers/speglsht.c index de1fe561695..0c746c77a2b 100644 --- a/src/mame/drivers/speglsht.c +++ b/src/mame/drivers/speglsht.c @@ -121,6 +121,12 @@ public: UINT32 m_videoreg; bitmap_ind16 *m_bitmap; UINT32 *m_cop_ram; + DECLARE_READ32_MEMBER(shared_r); + DECLARE_WRITE32_MEMBER(shared_w); + DECLARE_WRITE32_MEMBER(videoreg_w); + DECLARE_WRITE32_MEMBER(cop_w); + DECLARE_READ32_MEMBER(cop_r); + DECLARE_READ32_MEMBER(irq_ack_clear); }; @@ -149,41 +155,36 @@ static ADDRESS_MAP_START( st0016_io, AS_IO, 8, speglsht_state ) AM_RANGE(0xf0, 0xf0) AM_READ_LEGACY(st0016_dma_r) ADDRESS_MAP_END -static READ32_HANDLER(shared_r) +READ32_MEMBER(speglsht_state::shared_r) { - speglsht_state *state = space->machine().driver_data<speglsht_state>(); - return state->m_shared[offset]; + return m_shared[offset]; } -static WRITE32_HANDLER(shared_w) +WRITE32_MEMBER(speglsht_state::shared_w) { - speglsht_state *state = space->machine().driver_data<speglsht_state>(); - state->m_shared[offset]=data&0xff; + m_shared[offset]=data&0xff; } -static WRITE32_HANDLER(videoreg_w) +WRITE32_MEMBER(speglsht_state::videoreg_w) { - speglsht_state *state = space->machine().driver_data<speglsht_state>(); - COMBINE_DATA(&state->m_videoreg); + COMBINE_DATA(&m_videoreg); } -static WRITE32_HANDLER(cop_w) +WRITE32_MEMBER(speglsht_state::cop_w) { - speglsht_state *state = space->machine().driver_data<speglsht_state>(); - COMBINE_DATA(&state->m_cop_ram[offset]); + COMBINE_DATA(&m_cop_ram[offset]); - if(state->m_cop_ram[offset]&0x8000) //fix (sign) + if(m_cop_ram[offset]&0x8000) //fix (sign) { - state->m_cop_ram[offset]|=0xffff0000; + m_cop_ram[offset]|=0xffff0000; } } //matrix * vector -static READ32_HANDLER(cop_r) +READ32_MEMBER(speglsht_state::cop_r) { - speglsht_state *state = space->machine().driver_data<speglsht_state>(); - INT32 *cop=(INT32*)&state->m_cop_ram[0]; + INT32 *cop=(INT32*)&m_cop_ram[0]; union { @@ -215,25 +216,25 @@ static READ32_HANDLER(cop_r) return 0; } -static READ32_HANDLER(irq_ack_clear) +READ32_MEMBER(speglsht_state::irq_ack_clear) { - cputag_set_input_line(space->machine(), "sub", R3000_IRQ4, CLEAR_LINE); + cputag_set_input_line(machine(), "sub", R3000_IRQ4, CLEAR_LINE); return 0; } static ADDRESS_MAP_START( speglsht_mem, AS_PROGRAM, 32, speglsht_state ) AM_RANGE(0x00000000, 0x000fffff) AM_RAM AM_RANGE(0x01000000, 0x01007fff) AM_RAM //tested - STATIC RAM - AM_RANGE(0x01600000, 0x0160004f) AM_READWRITE_LEGACY(cop_r, cop_w) AM_BASE(m_cop_ram) - AM_RANGE(0x01800200, 0x01800203) AM_WRITE_LEGACY(videoreg_w) + AM_RANGE(0x01600000, 0x0160004f) AM_READWRITE(cop_r, cop_w) AM_BASE(m_cop_ram) + AM_RANGE(0x01800200, 0x01800203) AM_WRITE(videoreg_w) AM_RANGE(0x01800300, 0x01800303) AM_READ_PORT("IN0") AM_RANGE(0x01800400, 0x01800403) AM_READ_PORT("IN1") AM_RANGE(0x01a00000, 0x01afffff) AM_RAM AM_BASE(m_framebuffer) AM_RANGE(0x01b00000, 0x01b07fff) AM_RAM //cleared ... video related ? AM_RANGE(0x01c00000, 0x01dfffff) AM_ROM AM_REGION("user2", 0) - AM_RANGE(0x0a000000, 0x0a003fff) AM_READWRITE_LEGACY(shared_r, shared_w) + AM_RANGE(0x0a000000, 0x0a003fff) AM_READWRITE(shared_r, shared_w) AM_RANGE(0x1eff0000, 0x1eff001f) AM_RAM - AM_RANGE(0x1eff003c, 0x1eff003f) AM_READ_LEGACY(irq_ack_clear) + AM_RANGE(0x1eff003c, 0x1eff003f) AM_READ(irq_ack_clear) AM_RANGE(0x1fc00000, 0x1fdfffff) AM_ROM AM_REGION("user1", 0) AM_RANGE(0x2fc00000, 0x2fdfffff) AM_ROM AM_REGION("user1", 0) // mirror for interrupts ADDRESS_MAP_END diff --git a/src/mame/drivers/splus.c b/src/mame/drivers/splus.c index 38af26fb00f..c78935dc328 100644 --- a/src/mame/drivers/splus.c +++ b/src/mame/drivers/splus.c @@ -84,6 +84,17 @@ public: INT16 m_stepper_pos[5]; UINT8 m_stop_pos[5]; + DECLARE_WRITE8_MEMBER(splus_io_w); + DECLARE_WRITE8_MEMBER(splus_load_pulse_w); + DECLARE_WRITE8_MEMBER(splus_serial_w); + DECLARE_WRITE8_MEMBER(splus_7seg_w); + DECLARE_WRITE8_MEMBER(splus_duart_w); + DECLARE_READ8_MEMBER(splus_serial_r); + DECLARE_READ8_MEMBER(splus_m_reel_ram_r); + DECLARE_READ8_MEMBER(splus_io_r); + DECLARE_READ8_MEMBER(splus_duart_r); + DECLARE_READ8_MEMBER(splus_watchdog_r); + DECLARE_READ8_MEMBER(splus_registers_r); }; /* Static Variables */ @@ -120,9 +131,8 @@ static const i2cmem_interface i2cmem_interface = * Write Handlers * ******************/ -static WRITE8_HANDLER( splus_io_w ) +WRITE8_MEMBER(splus_state::splus_io_w) { - splus_state *state = space->machine().driver_data<splus_state>(); // P1.0 = Reel 1 Controller // P1.1 = Reel 2 Controller @@ -138,97 +148,95 @@ static WRITE8_HANDLER( splus_io_w ) if (offset == 1 && ((data & 0x1f) != 0x00)) { // Unknown Bit 7 - state->m_p1_unknown = (~data & 0x80); + m_p1_unknown = (~data & 0x80); // Stepper Motor Engaged - if (((state->m_bank40 >> 0) & 1) == 0x01) { + if (((m_bank40 >> 0) & 1) == 0x01) { // Reel Controllers Only - state->m_p1_reels = (data & 0x1f); + m_p1_reels = (data & 0x1f); // Loop through Reel Controllers for (x = 0; x < 5; x++) { // Test Reel Controller - if (((state->m_p1_reels >> x) & 1) == 0x01) { + if (((m_p1_reels >> x) & 1) == 0x01) { // Forward Direction - if (((state->m_bank10 >> 5) & 1) == 0x01) { - state->m_stepper_pos[x]++; - if (state->m_stepper_pos[x] == MAX_STEPPER) - state->m_stepper_pos[x] = 0; + if (((m_bank10 >> 5) & 1) == 0x01) { + m_stepper_pos[x]++; + if (m_stepper_pos[x] == MAX_STEPPER) + m_stepper_pos[x] = 0; } else { - state->m_stepper_pos[x]--; - if (state->m_stepper_pos[x] < 0) - state->m_stepper_pos[x] = MAX_STEPPER - 1; + m_stepper_pos[x]--; + if (m_stepper_pos[x] < 0) + m_stepper_pos[x] = MAX_STEPPER - 1; } - state->m_stop_pos[x] = (int)(state->m_stepper_pos[x] / STEPPER_DIVISOR); + m_stop_pos[x] = (int)(m_stepper_pos[x] / STEPPER_DIVISOR); } } } #if DEBUG_OUTPUT if ((data & 0x1f) == 0x01) - mame_printf_info("Steppers %02X-%02X-%02X-%02X-%02X Motor=%02X Dir=%02X reels=%02X unk=%02X\n", state->m_stop_pos[0],state->m_stop_pos[1],state->m_stop_pos[2],state->m_stop_pos[3],state->m_stop_pos[4],((state->m_bank40 >> 0) & 1),((state->m_bank10 >> 5) & 1),(data & 0x1f), state->m_p1_unknown); + mame_printf_info("Steppers %02X-%02X-%02X-%02X-%02X Motor=%02X Dir=%02X reels=%02X unk=%02X\n", m_stop_pos[0],m_stop_pos[1],m_stop_pos[2],m_stop_pos[3],m_stop_pos[4],((m_bank40 >> 0) & 1),((m_bank10 >> 5) & 1),(data & 0x1f), m_p1_unknown); #endif } - state->m_io_port[offset] = data; + m_io_port[offset] = data; } -static WRITE8_HANDLER( splus_load_pulse_w ) +WRITE8_MEMBER(splus_state::splus_load_pulse_w) { -// splus_state *state = space->machine().driver_data<splus_state>(); // UINT8 out = 0; -// out = ((~state->m_io_port[1] & 0xf0)>>4); // Output Bank +// out = ((~m_io_port[1] & 0xf0)>>4); // Output Bank } -static WRITE8_HANDLER( splus_serial_w ) +WRITE8_MEMBER(splus_state::splus_serial_w) { - splus_state *state = space->machine().driver_data<splus_state>(); UINT8 out = 0; - out = ((~state->m_io_port[1] & 0xe0)>>5); // Output Bank + out = ((~m_io_port[1] & 0xe0)>>5); // Output Bank switch (out) { case 0x00: // Bank 10 - if (((state->m_bank10 >> 0) & 1) != ((data >> 0) & 1)) { + if (((m_bank10 >> 0) & 1) != ((data >> 0) & 1)) { #if DEBUG_OUTPUT mame_printf_info("Coin Drop Meter =%02X\n",(data >> 0) & 1); #endif } - if (((state->m_bank10 >> 1) & 1) != ((data >> 1) & 1)) { + if (((m_bank10 >> 1) & 1) != ((data >> 1) & 1)) { #if DEBUG_OUTPUT mame_printf_info("Coin Out Meter =%02X\n",(data >> 1) & 1); #endif } - if (((state->m_bank10 >> 2) & 1) != ((data >> 2) & 1)) { + if (((m_bank10 >> 2) & 1) != ((data >> 2) & 1)) { #if DEBUG_OUTPUT mame_printf_info("Coin In Meter =%02X\n",(data >> 2) & 1); #endif } - if (((state->m_bank10 >> 3) & 1) != ((data >> 3) & 1)) { + if (((m_bank10 >> 3) & 1) != ((data >> 3) & 1)) { //mame_printf_info("B Switch for SDS =%02X\n",(data >> 3) & 1); } - if (((state->m_bank10 >> 4) & 1) != ((data >> 4) & 1)) { + if (((m_bank10 >> 4) & 1) != ((data >> 4) & 1)) { #if DEBUG_OUTPUT mame_printf_info("Hopper Drive 2 =%02X\n",(data >> 4) & 1); #endif } - if (((state->m_bank10 >> 5) & 1) != ((data >> 5) & 1)) { + if (((m_bank10 >> 5) & 1) != ((data >> 5) & 1)) { #if DEBUG_OUTPUT mame_printf_info("Stepper Motor Direction =%02X\n",(data >> 5) & 1); #endif } - if (((state->m_bank10 >> 6) & 1) != ((data >> 6) & 1)) { + if (((m_bank10 >> 6) & 1) != ((data >> 6) & 1)) { #if DEBUG_OUTPUT mame_printf_info("Mechanical Bell =%02X\n",(data >> 6) & 1); #endif } - if (((state->m_bank10 >> 7) & 1) != ((data >> 7) & 1)) { + if (((m_bank10 >> 7) & 1) != ((data >> 7) & 1)) { #if DEBUG_OUTPUT mame_printf_info("Cancelled Credits Meter =%02X\n",(data >> 7) & 1); #endif } - state->m_bank10 = data; + m_bank10 = data; output_set_value("s_bnk10",(data >> 0) & 1); // Coin Drop Meter output_set_value("s_bnk11",(data >> 1) & 1); // Coin Out Meter @@ -240,22 +248,22 @@ static WRITE8_HANDLER( splus_serial_w ) output_set_value("s_bnk17",(data >> 7) & 1); // Cancelled Credits Meter break; case 0x01: // Bank 20 - if (((state->m_bank20 >> 5) & 1) != ((data >> 5) & 1)) { + if (((m_bank20 >> 5) & 1) != ((data >> 5) & 1)) { #if DEBUG_OUTPUT mame_printf_info("Games Played Meter =%02X\n",(data >> 5) & 1); #endif } - if (((state->m_bank20 >> 6) & 1) != ((data >> 6) & 1)) { + if (((m_bank20 >> 6) & 1) != ((data >> 6) & 1)) { #if DEBUG_OUTPUT mame_printf_info("Bill Acceptor Enable =%02X\n",(data >> 6) & 1); #endif } - if (((state->m_bank20 >> 7) & 1) != ((data >> 7) & 1)) { + if (((m_bank20 >> 7) & 1) != ((data >> 7) & 1)) { #if DEBUG_OUTPUT mame_printf_info("Jackpots Meter =%02X\n",(data >> 7) & 1); #endif } - state->m_bank20 = data; + m_bank20 = data; output_set_value("s_bnk20",(data >> 0) & 1); // Payline Lamp 3 output_set_value("s_bnk21",(data >> 1) & 1); // Payline Lamp 4 @@ -267,27 +275,27 @@ static WRITE8_HANDLER( splus_serial_w ) output_set_value("s_bnk27",(data >> 7) & 1); // Jackpots Meter break; case 0x02: // Bank 30 - if (((state->m_bank30 >> 2) & 1) != ((data >> 2) & 1)) { + if (((m_bank30 >> 2) & 1) != ((data >> 2) & 1)) { #if DEBUG_OUTPUT mame_printf_info("Handle Release =%02X\n",(data >> 2) & 1); #endif } - if (((state->m_bank30 >> 3) & 1) != ((data >> 3) & 1)) { + if (((m_bank30 >> 3) & 1) != ((data >> 3) & 1)) { #if DEBUG_OUTPUT mame_printf_info("Diverter =%02X\n",(data >> 3) & 1); #endif } - if (((state->m_bank30 >> 4) & 1) != ((data >> 4) & 1)) { + if (((m_bank30 >> 4) & 1) != ((data >> 4) & 1)) { #if DEBUG_OUTPUT mame_printf_info("Coin Lockout =%02X\n",(data >> 4) & 1); #endif } - if (((state->m_bank30 >> 5) & 1) != ((data >> 5) & 1)) { + if (((m_bank30 >> 5) & 1) != ((data >> 5) & 1)) { #if DEBUG_OUTPUT mame_printf_info("Hopper Drive 1 =%02X\n",(data >> 5) & 1); #endif } - state->m_bank30 = data; + m_bank30 = data; output_set_value("s_bnk30",(data >> 0) & 1); // Change Candle Lamp Bottom output_set_value("s_bnk31",(data >> 1) & 1); // Change Candle Lamp Top @@ -299,17 +307,17 @@ static WRITE8_HANDLER( splus_serial_w ) output_set_value("s_bnk37",(data >> 7) & 1); // Payline Lamp 2 break; case 0x04: // Bank 40 - if (((state->m_bank40 >> 0) & 1) != ((data >> 0) & 1)) { + if (((m_bank40 >> 0) & 1) != ((data >> 0) & 1)) { #if DEBUG_OUTPUT mame_printf_info("Stepper Motor Power Supply =%02X\n",(data >> 0) & 1); #endif } - if (((state->m_bank40 >> 3) & 1) != ((data >> 3) & 1)) { + if (((m_bank40 >> 3) & 1) != ((data >> 3) & 1)) { #if DEBUG_OUTPUT mame_printf_info("Jackpot/Hand Pay Lamp =%02X\n",(data >> 3) & 1); #endif } - state->m_bank40 = data; + m_bank40 = data; output_set_value("s_bnk40",(data >> 0) & 1); // Stepper Motor Power Supply output_set_value("s_bnk41",(data >> 1) & 1); // Insert Coin Lamp @@ -323,9 +331,8 @@ static WRITE8_HANDLER( splus_serial_w ) } } -static WRITE8_HANDLER( splus_7seg_w ) +WRITE8_MEMBER(splus_state::splus_7seg_w) { - splus_state *state = space->machine().driver_data<splus_state>(); static const UINT8 ls48_map[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x67,0x58,0x4c,0x62,0x69,0x78,0x00 }; @@ -335,12 +342,12 @@ static WRITE8_HANDLER( splus_7seg_w ) seg = ((~data & 0xf0)>>4); // Segment Number val = (~data & 0x0f); // Digit Value - // Need to add ~state->m_io_port[1]-1 to seg value - if (seg < 0x0a && (state->m_io_port[1] & 0xe0) == 0xe0) + // Need to add ~m_io_port[1]-1 to seg value + if (seg < 0x0a && (m_io_port[1] & 0xe0) == 0xe0) output_set_digit_value(seg, ls48_map[val]); } -static WRITE8_HANDLER( splus_duart_w ) +WRITE8_MEMBER(splus_state::splus_duart_w) { // Used for Slot Accounting System Communication } @@ -357,18 +364,17 @@ static WRITE8_DEVICE_HANDLER(i2c_nvram_w) * Read Handlers * ****************/ -static READ8_HANDLER( splus_serial_r ) +READ8_MEMBER(splus_state::splus_serial_r) { - splus_state *state = space->machine().driver_data<splus_state>(); UINT8 coin_out = 0x00; UINT8 coin_optics = 0x00; UINT8 door_optics = 0x00; - UINT32 curr_cycles = space->machine().firstcpu->total_cycles(); + UINT32 curr_cycles = machine().firstcpu->total_cycles(); UINT8 in = 0x00; UINT8 val = 0x00; - in = ((~state->m_io_port[1] & 0xe0)>>5); // Input Bank + in = ((~m_io_port[1] & 0xe0)>>5); // Input Bank switch (in) { @@ -385,27 +391,27 @@ static READ8_HANDLER( splus_serial_r ) break; case 0x01: // Bank 10 // Test for Coin-In - if ((input_port_read_safe(space->machine(),"SENSOR",0x00) & 0x01) == 0x01 && state->m_coin_state == 0) { - state->m_coin_state = 1; // Start Coin Cycle - state->m_last_cycles = space->machine().firstcpu->total_cycles(); + if ((input_port_read_safe(machine(),"SENSOR",0x00) & 0x01) == 0x01 && m_coin_state == 0) { + m_coin_state = 1; // Start Coin Cycle + m_last_cycles = machine().firstcpu->total_cycles(); #if DEBUG_OUTPUT - mame_printf_info("coin=%02X\n", state->m_coin_state); + mame_printf_info("coin=%02X\n", m_coin_state); #endif } else { /* Process Next Coin Optic State */ - if (curr_cycles - state->m_last_cycles > 10000 && state->m_coin_state != 0) { - state->m_coin_state++; - if (state->m_coin_state > 5) - state->m_coin_state = 0; - state->m_last_cycles = space->machine().firstcpu->total_cycles(); + if (curr_cycles - m_last_cycles > 10000 && m_coin_state != 0) { + m_coin_state++; + if (m_coin_state > 5) + m_coin_state = 0; + m_last_cycles = machine().firstcpu->total_cycles(); #if DEBUG_OUTPUT - mame_printf_info("coin=%02X\n", state->m_coin_state); + mame_printf_info("coin=%02X\n", m_coin_state); #endif } } // Set Coin State - switch (state->m_coin_state) + switch (m_coin_state) { case 0x00: // No Coin coin_optics = 0x00; @@ -428,32 +434,32 @@ static READ8_HANDLER( splus_serial_r ) } // Determine Door Optics - if ((input_port_read_safe(space->machine(),"I10",0x08) & 0x08) == 0x08) + if ((input_port_read_safe(machine(),"I10",0x08) & 0x08) == 0x08) door_optics = 0x08; else - door_optics = (((state->m_bank20 >> 4) & 1) << 3); // Use Door Optics Transmitter + door_optics = (((m_bank20 >> 4) & 1) << 3); // Use Door Optics Transmitter // Test if Hopper 1 and Hopper 2 Motors On - if (((state->m_bank10 >> 4) & 1) || ((state->m_bank30 >> 5) & 1)) { - if (state->m_coin_out_state == 0) - state->m_coin_out_state = 3; + if (((m_bank10 >> 4) & 1) || ((m_bank30 >> 5) & 1)) { + if (m_coin_out_state == 0) + m_coin_out_state = 3; } else { - state->m_coin_out_state = 0; + m_coin_out_state = 0; } // Process Coin Out - if (curr_cycles - state->m_last_coin_out > 700000 && state->m_coin_out_state != 0) { - if (state->m_coin_out_state != 2) { - state->m_coin_out_state = 2; // Coin-Out Off + if (curr_cycles - m_last_coin_out > 700000 && m_coin_out_state != 0) { + if (m_coin_out_state != 2) { + m_coin_out_state = 2; // Coin-Out Off } else { - state->m_coin_out_state = 3; // Coin-Out On + m_coin_out_state = 3; // Coin-Out On } - state->m_last_coin_out = space->machine().firstcpu->total_cycles(); + m_last_coin_out = machine().firstcpu->total_cycles(); } // Set Coin Out State - switch (state->m_coin_out_state) + switch (m_coin_out_state) { case 0x00: // No Coin-Out coin_out = 0x00; @@ -473,22 +479,22 @@ static READ8_HANDLER( splus_serial_r ) val = val | door_optics; // Door Optics Receiver val = val | coin_out; // Hopper Coin OutR val = val | 0x00; // Hopper Full - val = val | (input_port_read_safe(space->machine(),"I10",0x40) & 0x40); // Handle/Spin Button - val = val | (input_port_read_safe(space->machine(),"I10",0x80) & 0x80); // Jackpot Reset Key + val = val | (input_port_read_safe(machine(),"I10",0x40) & 0x40); // Handle/Spin Button + val = val | (input_port_read_safe(machine(),"I10",0x80) & 0x80); // Jackpot Reset Key break; case 0x02: // Bank 20 - val = val | (input_port_read_safe(space->machine(),"I20",0x01) & 0x01); // Bet One Credit - val = val | (input_port_read_safe(space->machine(),"I20",0x02) & 0x02); // Play Max Credits - val = val | (input_port_read_safe(space->machine(),"I20",0x04) & 0x04); // Cash Out - val = val | (input_port_read_safe(space->machine(),"I20",0x08) & 0x08); // Change Request + val = val | (input_port_read_safe(machine(),"I20",0x01) & 0x01); // Bet One Credit + val = val | (input_port_read_safe(machine(),"I20",0x02) & 0x02); // Play Max Credits + val = val | (input_port_read_safe(machine(),"I20",0x04) & 0x04); // Cash Out + val = val | (input_port_read_safe(machine(),"I20",0x08) & 0x08); // Change Request val = val | 0x00; // Reel Mechanism - val = val | (input_port_read_safe(space->machine(),"I20",0x20) & 0x20); // Self Test Button + val = val | (input_port_read_safe(machine(),"I20",0x20) & 0x20); // Self Test Button val = val | 0x40; // Card Cage val = val | 0x80; // Bill Acceptor break; case 0x04: // Bank 30 // Reserved - val = val | (input_port_read_safe(space->machine(),"I30",0x02) & 0x02); // Drop Door + val = val | (input_port_read_safe(machine(),"I30",0x02) & 0x02); // Drop Door // Jackpot to Credit Key // Reserved // Reserved @@ -500,34 +506,32 @@ static READ8_HANDLER( splus_serial_r ) return val; } -static READ8_HANDLER( splus_m_reel_ram_r ) +READ8_MEMBER(splus_state::splus_m_reel_ram_r) { - splus_state *state = space->machine().driver_data<splus_state>(); - return state->m_reel_ram[offset]; + return m_reel_ram[offset]; } -static READ8_HANDLER( splus_io_r ) +READ8_MEMBER(splus_state::splus_io_r) { - splus_state *state = space->machine().driver_data<splus_state>(); if (offset == 3) - return state->m_io_port[offset] & 0xf3; // Ignore Int0 and Int1, or machine will loop forever waiting + return m_io_port[offset] & 0xf3; // Ignore Int0 and Int1, or machine will loop forever waiting else - return state->m_io_port[offset]; + return m_io_port[offset]; } -static READ8_HANDLER( splus_duart_r ) +READ8_MEMBER(splus_state::splus_duart_r) { // Used for Slot Accounting System Communication return 0x00; } -static READ8_HANDLER( splus_watchdog_r ) +READ8_MEMBER(splus_state::splus_watchdog_r) { return 0x00; // Watchdog } -static READ8_HANDLER( splus_registers_r ) +READ8_MEMBER(splus_state::splus_registers_r) { return 0xff; // Reset Registers in Real Time Clock } @@ -587,16 +591,16 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( splus_iomap, AS_IO, 8, splus_state ) // Serial I/O - AM_RANGE(0x0000, 0x0000) AM_READ_LEGACY(splus_serial_r) AM_WRITE_LEGACY(splus_serial_w) + AM_RANGE(0x0000, 0x0000) AM_READ(splus_serial_r) AM_WRITE(splus_serial_w) // Battery-backed RAM (Lower 4K) 0x1500-0x16ff eeprom staging area AM_RANGE(0x1000, 0x1fff) AM_RAM AM_SHARE("cmosl") // Watchdog, 7-segment Display - AM_RANGE(0x2000, 0x2000) AM_READWRITE_LEGACY(splus_watchdog_r, splus_7seg_w) + AM_RANGE(0x2000, 0x2000) AM_READWRITE(splus_watchdog_r, splus_7seg_w) // DUART - AM_RANGE(0x3000, 0x300f) AM_READWRITE_LEGACY(splus_duart_r, splus_duart_w) + AM_RANGE(0x3000, 0x300f) AM_READWRITE(splus_duart_r, splus_duart_w) // Dip Switches, Sound AM_RANGE(0x4000, 0x4000) AM_READ_PORT("SW1") AM_DEVWRITE_LEGACY("aysnd", ay8910_address_w) @@ -606,16 +610,16 @@ static ADDRESS_MAP_START( splus_iomap, AS_IO, 8, splus_state ) AM_RANGE(0x5000, 0x5000) AM_DEVREAD_LEGACY("i2cmem", splus_reel_optics_r) AM_DEVWRITE_LEGACY("i2cmem", i2c_nvram_w) // Reset Registers in Realtime Clock, Serial I/O Load Pulse - AM_RANGE(0x6000, 0x6000) AM_READWRITE_LEGACY(splus_registers_r, splus_load_pulse_w) + AM_RANGE(0x6000, 0x6000) AM_READWRITE(splus_registers_r, splus_load_pulse_w) // Battery-backed RAM (Upper 4K) AM_RANGE(0x7000, 0x7fff) AM_RAM AM_SHARE("cmosh") // SSxxxx Reel Chip - AM_RANGE(0x8000, 0x9fff) AM_READ_LEGACY(splus_m_reel_ram_r) AM_BASE(m_reel_ram) + AM_RANGE(0x8000, 0x9fff) AM_READ(splus_m_reel_ram_r) AM_BASE(m_reel_ram) // Ports start here - AM_RANGE(MCS51_PORT_P0, MCS51_PORT_P3) AM_READ_LEGACY(splus_io_r) AM_WRITE_LEGACY(splus_io_w) AM_BASE(m_io_port) + AM_RANGE(MCS51_PORT_P0, MCS51_PORT_P3) AM_READ(splus_io_r) AM_WRITE(splus_io_w) AM_BASE(m_io_port) ADDRESS_MAP_END /************************* diff --git a/src/mame/drivers/spoker.c b/src/mame/drivers/spoker.c index 7f2f4489d50..2e70f5ef8b8 100644 --- a/src/mame/drivers/spoker.c +++ b/src/mame/drivers/spoker.c @@ -40,14 +40,21 @@ public: int m_hopper; UINT8 m_igs_magic[2]; UINT8 m_out[3]; + DECLARE_WRITE8_MEMBER(bg_tile_w); + DECLARE_WRITE8_MEMBER(fg_tile_w); + DECLARE_WRITE8_MEMBER(fg_color_w); + DECLARE_WRITE8_MEMBER(spoker_nmi_and_coins_w); + DECLARE_WRITE8_MEMBER(spoker_video_and_leds_w); + DECLARE_WRITE8_MEMBER(spoker_leds_w); + DECLARE_WRITE8_MEMBER(spoker_magic_w); + DECLARE_READ8_MEMBER(spoker_magic_r); }; -static WRITE8_HANDLER( bg_tile_w ) +WRITE8_MEMBER(spoker_state::bg_tile_w) { - spoker_state *state = space->machine().driver_data<spoker_state>(); - state->m_bg_tile_ram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_bg_tile_ram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } static TILE_GET_INFO( get_bg_tile_info ) @@ -64,20 +71,18 @@ static TILE_GET_INFO( get_fg_tile_info ) SET_TILE_INFO(0, code, (4*(code >> 14)+3), 0); } -static WRITE8_HANDLER( fg_tile_w ) +WRITE8_MEMBER(spoker_state::fg_tile_w) { - spoker_state *state = space->machine().driver_data<spoker_state>(); - state->m_fg_tile_ram[offset] = data; - state->m_fg_tilemap->mark_tile_dirty(offset); + m_fg_tile_ram[offset] = data; + m_fg_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( fg_color_w ) +WRITE8_MEMBER(spoker_state::fg_color_w) { - spoker_state *state = space->machine().driver_data<spoker_state>(); - state->m_fg_color_ram[offset] = data; - state->m_fg_tilemap->mark_tile_dirty(offset); + m_fg_color_ram[offset] = data; + m_fg_tilemap->mark_tile_dirty(offset); } static VIDEO_START(spoker) @@ -119,97 +124,92 @@ static void show_out(UINT8 *out) #endif } -static WRITE8_HANDLER( spoker_nmi_and_coins_w ) +WRITE8_MEMBER(spoker_state::spoker_nmi_and_coins_w) { - spoker_state *state = space->machine().driver_data<spoker_state>(); if ((data) & (0x22)) { - logerror("PC %06X: nmi_and_coins = %02x\n",cpu_get_pc(&space->device()),data); + logerror("PC %06X: nmi_and_coins = %02x\n",cpu_get_pc(&space.device()),data); // popmessage("%02x",data); } - coin_counter_w(space->machine(), 0, data & 0x01); // coin_a - coin_counter_w(space->machine(), 1, data & 0x04); // coin_c - coin_counter_w(space->machine(), 2, data & 0x08); // key in - coin_counter_w(space->machine(), 3, data & 0x10); // coin out mech + coin_counter_w(machine(), 0, data & 0x01); // coin_a + coin_counter_w(machine(), 1, data & 0x04); // coin_c + coin_counter_w(machine(), 2, data & 0x08); // key in + coin_counter_w(machine(), 3, data & 0x10); // coin out mech - set_led_status(space->machine(), 6, data & 0x40); // led for coin out / hopper active + set_led_status(machine(), 6, data & 0x40); // led for coin out / hopper active - if(((state->m_nmi_ack & 0x80) == 0) && data & 0x80) - cputag_set_input_line(space->machine(), "maincpu", INPUT_LINE_NMI, CLEAR_LINE); + if(((m_nmi_ack & 0x80) == 0) && data & 0x80) + cputag_set_input_line(machine(), "maincpu", INPUT_LINE_NMI, CLEAR_LINE); - state->m_nmi_ack = data & 0x80; // nmi acknowledge, 0 -> 1 + m_nmi_ack = data & 0x80; // nmi acknowledge, 0 -> 1 - state->m_out[0] = data; - show_out(state->m_out); + m_out[0] = data; + show_out(m_out); } -static WRITE8_HANDLER( spoker_video_and_leds_w ) +WRITE8_MEMBER(spoker_state::spoker_video_and_leds_w) { - spoker_state *state = space->machine().driver_data<spoker_state>(); - set_led_status(space->machine(), 4, data & 0x01); // start? - set_led_status(space->machine(), 5, data & 0x04); // l_bet? + set_led_status(machine(), 4, data & 0x01); // start? + set_led_status(machine(), 5, data & 0x04); // l_bet? - state->m_video_enable = data & 0x40; - state->m_hopper = (~data)& 0x80; + m_video_enable = data & 0x40; + m_hopper = (~data)& 0x80; - state->m_out[1] = data; - show_out(state->m_out); + m_out[1] = data; + show_out(m_out); } -static WRITE8_HANDLER( spoker_leds_w ) +WRITE8_MEMBER(spoker_state::spoker_leds_w) { - spoker_state *state = space->machine().driver_data<spoker_state>(); - set_led_status(space->machine(), 0, data & 0x01); // stop_1 - set_led_status(space->machine(), 1, data & 0x02); // stop_2 - set_led_status(space->machine(), 2, data & 0x04); // stop_3 - set_led_status(space->machine(), 3, data & 0x08); // stop + set_led_status(machine(), 0, data & 0x01); // stop_1 + set_led_status(machine(), 1, data & 0x02); // stop_2 + set_led_status(machine(), 2, data & 0x04); // stop_3 + set_led_status(machine(), 3, data & 0x08); // stop // data & 0x10? - state->m_out[2] = data; - show_out(state->m_out); + m_out[2] = data; + show_out(m_out); } -static WRITE8_HANDLER( spoker_magic_w ) +WRITE8_MEMBER(spoker_state::spoker_magic_w) { - spoker_state *state = space->machine().driver_data<spoker_state>(); - state->m_igs_magic[offset] = data; + m_igs_magic[offset] = data; if (offset == 0) return; - switch(state->m_igs_magic[0]) + switch(m_igs_magic[0]) { case 0x01: break; default: // popmessage("magic %x <- %04x",igs_magic[0],data); - logerror("%06x: warning, writing to igs_magic %02x = %02x\n", cpu_get_pc(&space->device()), state->m_igs_magic[0], data); + logerror("%06x: warning, writing to igs_magic %02x = %02x\n", cpu_get_pc(&space.device()), m_igs_magic[0], data); } } -static READ8_HANDLER( spoker_magic_r ) +READ8_MEMBER(spoker_state::spoker_magic_r) { - spoker_state *state = space->machine().driver_data<spoker_state>(); - switch(state->m_igs_magic[0]) + switch(m_igs_magic[0]) { case 0x00: - if ( !(state->m_igs_magic[1] & 0x01) ) return input_port_read(space->machine(), "DSW1"); - if ( !(state->m_igs_magic[1] & 0x02) ) return input_port_read(space->machine(), "DSW2"); - if ( !(state->m_igs_magic[1] & 0x04) ) return input_port_read(space->machine(), "DSW3"); - if ( !(state->m_igs_magic[1] & 0x08) ) return input_port_read(space->machine(), "DSW4"); - if ( !(state->m_igs_magic[1] & 0x10) ) return input_port_read(space->machine(), "DSW5"); - logerror("%06x: warning, reading dsw with igs_magic[1] = %02x\n", cpu_get_pc(&space->device()), state->m_igs_magic[1]); + if ( !(m_igs_magic[1] & 0x01) ) return input_port_read(machine(), "DSW1"); + if ( !(m_igs_magic[1] & 0x02) ) return input_port_read(machine(), "DSW2"); + if ( !(m_igs_magic[1] & 0x04) ) return input_port_read(machine(), "DSW3"); + if ( !(m_igs_magic[1] & 0x08) ) return input_port_read(machine(), "DSW4"); + if ( !(m_igs_magic[1] & 0x10) ) return input_port_read(machine(), "DSW5"); + logerror("%06x: warning, reading dsw with igs_magic[1] = %02x\n", cpu_get_pc(&space.device()), m_igs_magic[1]); break; default: - logerror("%06x: warning, reading with igs_magic = %02x\n", cpu_get_pc(&space->device()), state->m_igs_magic[0]); + logerror("%06x: warning, reading with igs_magic = %02x\n", cpu_get_pc(&space.device()), m_igs_magic[0]); } return 0; @@ -229,19 +229,19 @@ static ADDRESS_MAP_START( spoker_portmap, AS_IO, 8, spoker_state ) AM_RANGE( 0x2000, 0x23ff ) AM_RAM_WRITE_LEGACY(paletteram_xBBBBBGGGGGRRRRR_split1_w ) AM_BASE_GENERIC( paletteram ) AM_RANGE( 0x2400, 0x27ff ) AM_RAM_WRITE_LEGACY(paletteram_xBBBBBGGGGGRRRRR_split2_w ) AM_BASE_GENERIC( paletteram2 ) - AM_RANGE( 0x3000, 0x33ff ) AM_RAM_WRITE_LEGACY(bg_tile_w ) AM_BASE(m_bg_tile_ram ) + AM_RANGE( 0x3000, 0x33ff ) AM_RAM_WRITE(bg_tile_w ) AM_BASE(m_bg_tile_ram ) - AM_RANGE( 0x5000, 0x5fff ) AM_RAM_WRITE_LEGACY(fg_tile_w ) AM_BASE(m_fg_tile_ram ) + AM_RANGE( 0x5000, 0x5fff ) AM_RAM_WRITE(fg_tile_w ) AM_BASE(m_fg_tile_ram ) /* TODO: ppi #1 */ - AM_RANGE( 0x6480, 0x6480 ) AM_WRITE_LEGACY(spoker_nmi_and_coins_w ) + AM_RANGE( 0x6480, 0x6480 ) AM_WRITE(spoker_nmi_and_coins_w ) AM_RANGE( 0x6481, 0x6481 ) AM_READ_PORT( "SERVICE" ) AM_RANGE( 0x6482, 0x6482 ) AM_READ_PORT( "COINS" ) /* TODO: ppi #2 */ AM_RANGE( 0x6490, 0x6490 ) AM_READ_PORT( "BUTTONS1" ) - AM_RANGE( 0x6491, 0x6491 ) AM_WRITE_LEGACY(spoker_video_and_leds_w ) - AM_RANGE( 0x6492, 0x6492 ) AM_WRITE_LEGACY(spoker_leds_w ) + AM_RANGE( 0x6491, 0x6491 ) AM_WRITE(spoker_video_and_leds_w ) + AM_RANGE( 0x6492, 0x6492 ) AM_WRITE(spoker_leds_w ) AM_RANGE( 0x64a0, 0x64a0 ) AM_READ_PORT( "BUTTONS2" ) @@ -249,9 +249,9 @@ static ADDRESS_MAP_START( spoker_portmap, AS_IO, 8, spoker_state ) AM_RANGE( 0x64c0, 0x64c0 ) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE( 0x64d0, 0x64d1 ) AM_READWRITE_LEGACY(spoker_magic_r, spoker_magic_w ) // DSW1-5 + AM_RANGE( 0x64d0, 0x64d1 ) AM_READWRITE(spoker_magic_r, spoker_magic_w ) // DSW1-5 - AM_RANGE( 0x7000, 0x7fff ) AM_RAM_WRITE_LEGACY(fg_color_w ) AM_BASE(m_fg_color_ram ) + AM_RANGE( 0x7000, 0x7fff ) AM_RAM_WRITE(fg_color_w ) AM_BASE(m_fg_color_ram ) ADDRESS_MAP_END static ADDRESS_MAP_START( 3super8_portmap, AS_IO, 8, spoker_state ) @@ -260,7 +260,7 @@ static ADDRESS_MAP_START( 3super8_portmap, AS_IO, 8, spoker_state ) AM_RANGE( 0x2000, 0x27ff ) AM_RAM_WRITE_LEGACY(paletteram_xBBBBBGGGGGRRRRR_split1_w ) AM_BASE_GENERIC( paletteram ) AM_RANGE( 0x2800, 0x2fff ) AM_RAM_WRITE_LEGACY(paletteram_xBBBBBGGGGGRRRRR_split2_w ) AM_BASE_GENERIC( paletteram2 ) - AM_RANGE( 0x3000, 0x33ff ) AM_RAM_WRITE_LEGACY(bg_tile_w ) AM_BASE(m_bg_tile_ram ) + AM_RANGE( 0x3000, 0x33ff ) AM_RAM_WRITE(bg_tile_w ) AM_BASE(m_bg_tile_ram ) AM_RANGE( 0x4000, 0x4000 ) AM_READ_PORT( "DSW1" ) AM_RANGE( 0x4001, 0x4001 ) AM_READ_PORT( "DSW2" ) @@ -270,18 +270,18 @@ static ADDRESS_MAP_START( 3super8_portmap, AS_IO, 8, spoker_state ) // AM_RANGE( 0x4000, 0x40ff ) AM_WRITENOP - AM_RANGE( 0x5000, 0x5fff ) AM_RAM_WRITE_LEGACY(fg_tile_w ) AM_BASE(m_fg_tile_ram ) + AM_RANGE( 0x5000, 0x5fff ) AM_RAM_WRITE(fg_tile_w ) AM_BASE(m_fg_tile_ram ) AM_RANGE( 0x6480, 0x6480 ) AM_READ_PORT( "IN0" ) AM_RANGE( 0x6490, 0x6490 ) AM_READ_PORT( "IN1" ) AM_RANGE( 0x6491, 0x6491 ) AM_DEVREADWRITE("oki", okim6295_device, read, write) AM_RANGE( 0x64a0, 0x64a0 ) AM_READ_PORT( "IN2" ) - AM_RANGE( 0x64b0, 0x64b0 ) AM_WRITE_LEGACY(spoker_leds_w ) + AM_RANGE( 0x64b0, 0x64b0 ) AM_WRITE(spoker_leds_w ) AM_RANGE( 0x64c0, 0x64c0 ) AM_READNOP //irq ack? - AM_RANGE( 0x64f0, 0x64f0 ) AM_WRITE_LEGACY(spoker_nmi_and_coins_w ) + AM_RANGE( 0x64f0, 0x64f0 ) AM_WRITE(spoker_nmi_and_coins_w ) - AM_RANGE( 0x7000, 0x7fff ) AM_RAM_WRITE_LEGACY(fg_color_w ) AM_BASE(m_fg_color_ram ) + AM_RANGE( 0x7000, 0x7fff ) AM_RAM_WRITE(fg_color_w ) AM_BASE(m_fg_color_ram ) ADDRESS_MAP_END diff --git a/src/mame/drivers/spool99.c b/src/mame/drivers/spool99.c index 84b8511a68a..5e6e445769f 100644 --- a/src/mame/drivers/spool99.c +++ b/src/mame/drivers/spool99.c @@ -104,6 +104,10 @@ public: tilemap_t *m_sc0_tilemap; UINT8 *m_cram; UINT8 *m_vram; + DECLARE_WRITE8_MEMBER(spool99_vram_w); + DECLARE_WRITE8_MEMBER(spool99_cram_w); + DECLARE_READ8_MEMBER(spool99_io_r); + DECLARE_READ8_MEMBER(vcarn_io_r); }; static TILE_GET_INFO( get_spool99_tile_info ) @@ -134,49 +138,47 @@ static SCREEN_UPDATE_IND16(spool99) return 0; } -static WRITE8_HANDLER( spool99_vram_w ) +WRITE8_MEMBER(spool99_state::spool99_vram_w) { - spool99_state *state = space->machine().driver_data<spool99_state>(); - state->m_vram[offset] = data; - state->m_sc0_tilemap->mark_tile_dirty(offset/2); + m_vram[offset] = data; + m_sc0_tilemap->mark_tile_dirty(offset/2); } -static WRITE8_HANDLER( spool99_cram_w ) +WRITE8_MEMBER(spool99_state::spool99_cram_w) { - spool99_state *state = space->machine().driver_data<spool99_state>(); - state->m_cram[offset] = data; - state->m_sc0_tilemap->mark_tile_dirty(offset/2); + m_cram[offset] = data; + m_sc0_tilemap->mark_tile_dirty(offset/2); } -static READ8_HANDLER( spool99_io_r ) +READ8_MEMBER(spool99_state::spool99_io_r) { - UINT8 *ROM = space->machine().region("maincpu")->base(); + UINT8 *ROM = machine().region("maincpu")->base(); // if(!(io_switch)) { switch(offset+0xaf00) { - case 0xafd8: return input_port_read(space->machine(),"COIN1"); + case 0xafd8: return input_port_read(machine(),"COIN1"); // case 0xafd9: return 1; - case 0xafda: return input_port_read(space->machine(),"COIN2"); + case 0xafda: return input_port_read(machine(),"COIN2"); case 0xafdb: return 1; - case 0xafdc: return input_port_read(space->machine(),"SERVICE1");//attract mode - case 0xafdd: return input_port_read(space->machine(),"HOLD3"); - case 0xafde: return input_port_read(space->machine(),"HOLD4"); - case 0xafdf: return input_port_read(space->machine(),"HOLD2"); - case 0xafe0: return input_port_read(space->machine(),"HOLD1"); - case 0xafe1: return input_port_read(space->machine(),"HOLD5"); - case 0xafe2: return input_port_read(space->machine(),"START"); - case 0xafe3: return input_port_read(space->machine(),"BET");//system 2 - case 0xafe4: return input_port_read(space->machine(),"SERVICE2");//attract mode + case 0xafdc: return input_port_read(machine(),"SERVICE1");//attract mode + case 0xafdd: return input_port_read(machine(),"HOLD3"); + case 0xafde: return input_port_read(machine(),"HOLD4"); + case 0xafdf: return input_port_read(machine(),"HOLD2"); + case 0xafe0: return input_port_read(machine(),"HOLD1"); + case 0xafe1: return input_port_read(machine(),"HOLD5"); + case 0xafe2: return input_port_read(machine(),"START"); + case 0xafe3: return input_port_read(machine(),"BET");//system 2 + case 0xafe4: return input_port_read(machine(),"SERVICE2");//attract mode // case 0xafe5: return 1; // case 0xafe6: return 1; - case 0xafe7: return space->machine().device<eeprom_device>("eeprom")->read_bit(); - case 0xaff8: return space->machine().device<okim6295_device>("oki")->read(*space,0); + case 0xafe7: return machine().device<eeprom_device>("eeprom")->read_bit(); + case 0xaff8: return machine().device<okim6295_device>("oki")->read(*&space,0); } } // printf("%04x %d\n",offset+0xaf00,io_switch); @@ -209,7 +211,7 @@ static WRITE8_DEVICE_HANDLER( eeprom_dataline_w ) static ADDRESS_MAP_START( spool99_map, AS_PROGRAM, 8, spool99_state ) AM_RANGE(0x0000, 0x00ff) AM_RAM AM_BASE(m_main) AM_RANGE(0x0100, 0xaeff) AM_ROM AM_REGION("maincpu", 0x100) AM_WRITENOP - AM_RANGE(0xaf00, 0xafff) AM_READ_LEGACY(spool99_io_r) + AM_RANGE(0xaf00, 0xafff) AM_READ(spool99_io_r) AM_RANGE(0xafed, 0xafed) AM_DEVWRITE_LEGACY("eeprom", eeprom_resetline_w ) AM_RANGE(0xafee, 0xafee) AM_DEVWRITE_LEGACY("eeprom", eeprom_clockline_w ) AM_RANGE(0xafef, 0xafef) AM_DEVWRITE_LEGACY("eeprom", eeprom_dataline_w ) @@ -218,32 +220,32 @@ static ADDRESS_MAP_START( spool99_map, AS_PROGRAM, 8, spool99_state ) AM_RANGE(0xb000, 0xb3ff) AM_RAM_WRITE_LEGACY(paletteram_xxxxBBBBGGGGRRRR_le_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0xb800, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE_LEGACY(spool99_vram_w) AM_BASE(m_vram) - AM_RANGE(0xf000, 0xffff) AM_RAM_WRITE_LEGACY(spool99_cram_w) AM_BASE(m_cram) + AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(spool99_vram_w) AM_BASE(m_vram) + AM_RANGE(0xf000, 0xffff) AM_RAM_WRITE(spool99_cram_w) AM_BASE(m_cram) ADDRESS_MAP_END -static READ8_HANDLER( vcarn_io_r ) +READ8_MEMBER(spool99_state::vcarn_io_r) { - UINT8 *ROM = space->machine().region("maincpu")->base(); + UINT8 *ROM = machine().region("maincpu")->base(); // if(!(io_switch)) { switch(offset+0xa700) { - case 0xa720: return input_port_read(space->machine(),"SERVICE1");//attract mode - case 0xa722: return input_port_read(space->machine(),"COIN1"); - case 0xa723: return input_port_read(space->machine(),"COIN2"); - case 0xa724: return input_port_read(space->machine(),"SERVICE2");//attract mode - case 0xa725: return input_port_read(space->machine(),"HOLD3"); - case 0xa726: return input_port_read(space->machine(),"HOLD4"); - case 0xa727: return input_port_read(space->machine(),"HOLD2"); - case 0xa780: return space->machine().device<okim6295_device>("oki")->read(*space,0); - case 0xa7a0: return input_port_read(space->machine(),"HOLD1"); - case 0xa7a1: return input_port_read(space->machine(),"HOLD5"); - case 0xa7a2: return input_port_read(space->machine(),"START"); - case 0xa7a3: return input_port_read(space->machine(),"BET");//system 2 - - case 0xa7a7: return space->machine().device<eeprom_device>("eeprom")->read_bit(); + case 0xa720: return input_port_read(machine(),"SERVICE1");//attract mode + case 0xa722: return input_port_read(machine(),"COIN1"); + case 0xa723: return input_port_read(machine(),"COIN2"); + case 0xa724: return input_port_read(machine(),"SERVICE2");//attract mode + case 0xa725: return input_port_read(machine(),"HOLD3"); + case 0xa726: return input_port_read(machine(),"HOLD4"); + case 0xa727: return input_port_read(machine(),"HOLD2"); + case 0xa780: return machine().device<okim6295_device>("oki")->read(*&space,0); + case 0xa7a0: return input_port_read(machine(),"HOLD1"); + case 0xa7a1: return input_port_read(machine(),"HOLD5"); + case 0xa7a2: return input_port_read(machine(),"START"); + case 0xa7a3: return input_port_read(machine(),"BET");//system 2 + + case 0xa7a7: return machine().device<eeprom_device>("eeprom")->read_bit(); } } @@ -255,7 +257,7 @@ static READ8_HANDLER( vcarn_io_r ) static ADDRESS_MAP_START( vcarn_map, AS_PROGRAM, 8, spool99_state ) AM_RANGE(0x0000, 0x00ff) AM_RAM AM_BASE(m_main) AM_RANGE(0x0100, 0xa6ff) AM_ROM AM_REGION("maincpu", 0x100) AM_WRITENOP - AM_RANGE(0xa700, 0xa7ff) AM_READ_LEGACY(vcarn_io_r) + AM_RANGE(0xa700, 0xa7ff) AM_READ(vcarn_io_r) AM_RANGE(0xa745, 0xa745) AM_DEVWRITE_LEGACY("eeprom", eeprom_resetline_w ) AM_RANGE(0xa746, 0xa746) AM_DEVWRITE_LEGACY("eeprom", eeprom_clockline_w ) AM_RANGE(0xa747, 0xa747) AM_DEVWRITE_LEGACY("eeprom", eeprom_dataline_w ) @@ -264,9 +266,9 @@ static ADDRESS_MAP_START( vcarn_map, AS_PROGRAM, 8, spool99_state ) AM_RANGE(0xa800, 0xabff) AM_RAM_WRITE_LEGACY(paletteram_xxxxBBBBGGGGRRRR_le_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0xb000, 0xdfff) AM_RAM -// AM_RANGE(0xdf00, 0xdfff) AM_READWRITE_LEGACY(vcarn_io_r,vcarn_io_w) AM_BASE_LEGACY(&vcarn_io) - AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE_LEGACY(spool99_vram_w) AM_BASE(m_vram) - AM_RANGE(0xf000, 0xffff) AM_RAM_WRITE_LEGACY(spool99_cram_w) AM_BASE(m_cram) +// AM_RANGE(0xdf00, 0xdfff) AM_READWRITE(vcarn_io_r,vcarn_io_w) AM_BASE_LEGACY(&vcarn_io) + AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(spool99_vram_w) AM_BASE(m_vram) + AM_RANGE(0xf000, 0xffff) AM_RAM_WRITE(spool99_cram_w) AM_BASE(m_cram) ADDRESS_MAP_END diff --git a/src/mame/drivers/srmp5.c b/src/mame/drivers/srmp5.c index 6d3f03d3e02..fbed9a9f016 100644 --- a/src/mame/drivers/srmp5.c +++ b/src/mame/drivers/srmp5.c @@ -82,6 +82,25 @@ public: #ifdef DEBUG_CHAR UINT8 m_tileduty[0x2000]; #endif + DECLARE_READ32_MEMBER(srmp5_palette_r); + DECLARE_WRITE32_MEMBER(srmp5_palette_w); + DECLARE_WRITE32_MEMBER(bank_w); + DECLARE_READ32_MEMBER(tileram_r); + DECLARE_WRITE32_MEMBER(tileram_w); + DECLARE_READ32_MEMBER(spr_r); + DECLARE_WRITE32_MEMBER(spr_w); + DECLARE_READ32_MEMBER(data_r); + DECLARE_WRITE32_MEMBER(input_select_w); + DECLARE_READ32_MEMBER(srmp5_inputs_r); + DECLARE_WRITE32_MEMBER(cmd1_w); + DECLARE_WRITE32_MEMBER(cmd2_w); + DECLARE_READ32_MEMBER(cmd_stat32_r); + DECLARE_READ32_MEMBER(srmp5_vidregs_r); + DECLARE_WRITE32_MEMBER(srmp5_vidregs_w); + DECLARE_READ32_MEMBER(irq_ack_clear); + DECLARE_READ8_MEMBER(cmd1_r); + DECLARE_READ8_MEMBER(cmd2_r); + DECLARE_READ8_MEMBER(cmd_stat8_r); }; @@ -201,145 +220,130 @@ static SCREEN_UPDATE_RGB32( srmp5 ) return 0; } -static READ32_HANDLER(srmp5_palette_r) +READ32_MEMBER(srmp5_state::srmp5_palette_r) { - srmp5_state *state = space->machine().driver_data<srmp5_state>(); - return state->m_palram[offset]; + return m_palram[offset]; } -static WRITE32_HANDLER(srmp5_palette_w) +WRITE32_MEMBER(srmp5_state::srmp5_palette_w) { - srmp5_state *state = space->machine().driver_data<srmp5_state>(); - COMBINE_DATA(&state->m_palram[offset]); - palette_set_color(space->machine(), offset, MAKE_RGB(data << 3 & 0xFF, data >> 2 & 0xFF, data >> 7 & 0xFF)); + COMBINE_DATA(&m_palram[offset]); + palette_set_color(machine(), offset, MAKE_RGB(data << 3 & 0xFF, data >> 2 & 0xFF, data >> 7 & 0xFF)); } -static WRITE32_HANDLER(bank_w) +WRITE32_MEMBER(srmp5_state::bank_w) { - srmp5_state *state = space->machine().driver_data<srmp5_state>(); - COMBINE_DATA(&state->m_databank); + COMBINE_DATA(&m_databank); } -static READ32_HANDLER(tileram_r) +READ32_MEMBER(srmp5_state::tileram_r) { - srmp5_state *state = space->machine().driver_data<srmp5_state>(); - return state->m_tileram[offset]; + return m_tileram[offset]; } -static WRITE32_HANDLER(tileram_w) +WRITE32_MEMBER(srmp5_state::tileram_w) { - srmp5_state *state = space->machine().driver_data<srmp5_state>(); - state->m_tileram[offset] = data & 0xFFFF; //lower 16bit only + m_tileram[offset] = data & 0xFFFF; //lower 16bit only #ifdef DEBUG_CHAR - state->m_tileduty[offset >> 6] = 1; + m_tileduty[offset >> 6] = 1; #endif } -static READ32_HANDLER(spr_r) +READ32_MEMBER(srmp5_state::spr_r) { - srmp5_state *state = space->machine().driver_data<srmp5_state>(); - return state->m_sprram[offset]; + return m_sprram[offset]; } -static WRITE32_HANDLER(spr_w) +WRITE32_MEMBER(srmp5_state::spr_w) { - srmp5_state *state = space->machine().driver_data<srmp5_state>(); - state->m_sprram[offset] = data & 0xFFFF; //lower 16bit only + m_sprram[offset] = data & 0xFFFF; //lower 16bit only } -static READ32_HANDLER(data_r) +READ32_MEMBER(srmp5_state::data_r) { - srmp5_state *state = space->machine().driver_data<srmp5_state>(); UINT32 data; - const UINT8 *usr = space->machine().region("user2")->base(); + const UINT8 *usr = machine().region("user2")->base(); - data=((state->m_databank>>4)&0xf)*0x100000; //guess + data=((m_databank>>4)&0xf)*0x100000; //guess data=usr[data+offset*2]+usr[data+offset*2+1]*256; return data|(data<<16); } -static WRITE32_HANDLER(input_select_w) +WRITE32_MEMBER(srmp5_state::input_select_w) { - srmp5_state *state = space->machine().driver_data<srmp5_state>(); - state->m_input_select = data & 0x0F; + m_input_select = data & 0x0F; } -static READ32_HANDLER(srmp5_inputs_r) +READ32_MEMBER(srmp5_state::srmp5_inputs_r) { - srmp5_state *state = space->machine().driver_data<srmp5_state>(); UINT32 ret = 0; - switch (state->m_input_select) + switch (m_input_select) { case 0x01: - ret = input_port_read(space->machine(), "IN0"); + ret = input_port_read(machine(), "IN0"); break; case 0x02: - ret = input_port_read(space->machine(), "IN1"); + ret = input_port_read(machine(), "IN1"); break; case 0x04: - ret = input_port_read(space->machine(), "IN2"); + ret = input_port_read(machine(), "IN2"); break; case 0x00: case 0x08: - ret = input_port_read(space->machine(), "IN3"); + ret = input_port_read(machine(), "IN3"); break; } return ret; } //almost all cmds are sound related -static WRITE32_HANDLER(cmd1_w) +WRITE32_MEMBER(srmp5_state::cmd1_w) { - srmp5_state *state = space->machine().driver_data<srmp5_state>(); - state->m_cmd1 = data & 0xFF; + m_cmd1 = data & 0xFF; logerror("cmd1_w %08X\n", data); } -static WRITE32_HANDLER(cmd2_w) +WRITE32_MEMBER(srmp5_state::cmd2_w) { - srmp5_state *state = space->machine().driver_data<srmp5_state>(); - state->m_cmd2 = data & 0xFF; - state->m_cmd_stat = 5; + m_cmd2 = data & 0xFF; + m_cmd_stat = 5; logerror("cmd2_w %08X\n", data); } -static READ32_HANDLER(cmd_stat32_r) +READ32_MEMBER(srmp5_state::cmd_stat32_r) { - srmp5_state *state = space->machine().driver_data<srmp5_state>(); - return state->m_cmd_stat; + return m_cmd_stat; } -static READ32_HANDLER(srmp5_vidregs_r) +READ32_MEMBER(srmp5_state::srmp5_vidregs_r) { - srmp5_state *state = space->machine().driver_data<srmp5_state>(); - logerror("vidregs read %08X %08X\n", offset << 2, state->m_vidregs[offset]); - return state->m_vidregs[offset]; + logerror("vidregs read %08X %08X\n", offset << 2, m_vidregs[offset]); + return m_vidregs[offset]; } -static WRITE32_HANDLER(srmp5_vidregs_w) +WRITE32_MEMBER(srmp5_state::srmp5_vidregs_w) { - srmp5_state *state = space->machine().driver_data<srmp5_state>(); - COMBINE_DATA(&state->m_vidregs[offset]); + COMBINE_DATA(&m_vidregs[offset]); if(offset != 0x10C / 4) - logerror("vidregs write %08X %08X\n", offset << 2, state->m_vidregs[offset]); + logerror("vidregs write %08X %08X\n", offset << 2, m_vidregs[offset]); } -static READ32_HANDLER(irq_ack_clear) +READ32_MEMBER(srmp5_state::irq_ack_clear) { - cputag_set_input_line(space->machine(), "sub", R3000_IRQ4, CLEAR_LINE); + cputag_set_input_line(machine(), "sub", R3000_IRQ4, CLEAR_LINE); return 0; } @@ -350,26 +354,26 @@ static ADDRESS_MAP_START( srmp5_mem, AS_PROGRAM, 32, srmp5_state ) AM_RANGE(0x01800000, 0x01800003) AM_RAM //?1 AM_RANGE(0x01800004, 0x01800007) AM_READ_PORT("DSW1") AM_RANGE(0x01800008, 0x0180000b) AM_READ_PORT("DSW2") - AM_RANGE(0x0180000c, 0x0180000f) AM_WRITE_LEGACY(bank_w) - AM_RANGE(0x01800010, 0x01800013) AM_READ_LEGACY(srmp5_inputs_r) //multiplexed controls (selected by writes to 1c) + AM_RANGE(0x0180000c, 0x0180000f) AM_WRITE(bank_w) + AM_RANGE(0x01800010, 0x01800013) AM_READ(srmp5_inputs_r) //multiplexed controls (selected by writes to 1c) AM_RANGE(0x01800014, 0x01800017) AM_READ_PORT("TEST") - AM_RANGE(0x0180001c, 0x0180001f) AM_WRITE_LEGACY(input_select_w)//c1 c2 c4 c8 => mahjong inputs (at $10) - bits 0-3 + AM_RANGE(0x0180001c, 0x0180001f) AM_WRITE(input_select_w)//c1 c2 c4 c8 => mahjong inputs (at $10) - bits 0-3 AM_RANGE(0x01800200, 0x01800203) AM_RAM //sound related ? only few writes after boot - AM_RANGE(0x01802000, 0x01802003) AM_WRITE_LEGACY(cmd1_w) - AM_RANGE(0x01802004, 0x01802007) AM_WRITE_LEGACY(cmd2_w) - AM_RANGE(0x01802008, 0x0180200b) AM_READ_LEGACY(cmd_stat32_r) - AM_RANGE(0x01a00000, 0x01bfffff) AM_READ_LEGACY(data_r) + AM_RANGE(0x01802000, 0x01802003) AM_WRITE(cmd1_w) + AM_RANGE(0x01802004, 0x01802007) AM_WRITE(cmd2_w) + AM_RANGE(0x01802008, 0x0180200b) AM_READ(cmd_stat32_r) + AM_RANGE(0x01a00000, 0x01bfffff) AM_READ(data_r) AM_RANGE(0x01c00000, 0x01c00003) AM_READNOP // debug? 'Toru' - AM_RANGE(0x0a000000, 0x0a0fffff) AM_READWRITE_LEGACY(spr_r, spr_w) - AM_RANGE(0x0a100000, 0x0a17ffff) AM_READWRITE_LEGACY(srmp5_palette_r, srmp5_palette_w) + AM_RANGE(0x0a000000, 0x0a0fffff) AM_READWRITE(spr_r, spr_w) + AM_RANGE(0x0a100000, 0x0a17ffff) AM_READWRITE(srmp5_palette_r, srmp5_palette_w) //0?N???A?????????i?????????? AM_RANGE(0x0a180000, 0x0a180003) AM_READNOP // write 0x00000400 - AM_RANGE(0x0a180000, 0x0a18011f) AM_READWRITE_LEGACY(srmp5_vidregs_r, srmp5_vidregs_w) - AM_RANGE(0x0a200000, 0x0a3fffff) AM_READWRITE_LEGACY(tileram_r, tileram_w) + AM_RANGE(0x0a180000, 0x0a18011f) AM_READWRITE(srmp5_vidregs_r, srmp5_vidregs_w) + AM_RANGE(0x0a200000, 0x0a3fffff) AM_READWRITE(tileram_r, tileram_w) AM_RANGE(0x1eff0000, 0x1eff001f) AM_WRITEONLY - AM_RANGE(0x1eff003c, 0x1eff003f) AM_READ_LEGACY(irq_ack_clear) + AM_RANGE(0x1eff003c, 0x1eff003f) AM_READ(irq_ack_clear) AM_RANGE(0x1fc00000, 0x1fdfffff) AM_ROM AM_REGION("user1", 0) AM_RANGE(0x2fc00000, 0x2fdfffff) AM_ROM AM_REGION("user1", 0) ADDRESS_MAP_END @@ -382,34 +386,31 @@ static ADDRESS_MAP_START( st0016_mem, AS_PROGRAM, 8, srmp5_state ) AM_RANGE(0xf000, 0xffff) AM_RAM ADDRESS_MAP_END -static READ8_HANDLER(cmd1_r) +READ8_MEMBER(srmp5_state::cmd1_r) { - srmp5_state *state = space->machine().driver_data<srmp5_state>(); - state->m_cmd_stat = 0; - return state->m_cmd1; + m_cmd_stat = 0; + return m_cmd1; } -static READ8_HANDLER(cmd2_r) +READ8_MEMBER(srmp5_state::cmd2_r) { - srmp5_state *state = space->machine().driver_data<srmp5_state>(); - return state->m_cmd2; + return m_cmd2; } -static READ8_HANDLER(cmd_stat8_r) +READ8_MEMBER(srmp5_state::cmd_stat8_r) { - srmp5_state *state = space->machine().driver_data<srmp5_state>(); - return state->m_cmd_stat; + return m_cmd_stat; } static ADDRESS_MAP_START( st0016_io, AS_IO, 8, srmp5_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0xbf) AM_READ_LEGACY(st0016_vregs_r) AM_WRITE_LEGACY(st0016_vregs_w) - AM_RANGE(0xc0, 0xc0) AM_READ_LEGACY(cmd1_r) - AM_RANGE(0xc1, 0xc1) AM_READ_LEGACY(cmd2_r) - AM_RANGE(0xc2, 0xc2) AM_READ_LEGACY(cmd_stat8_r) + AM_RANGE(0xc0, 0xc0) AM_READ(cmd1_r) + AM_RANGE(0xc1, 0xc1) AM_READ(cmd2_r) + AM_RANGE(0xc2, 0xc2) AM_READ(cmd_stat8_r) AM_RANGE(0xe1, 0xe1) AM_WRITE_LEGACY(st0016_rom_bank_w) AM_RANGE(0xe7, 0xe7) AM_WRITE_LEGACY(st0016_rom_bank_w) AM_RANGE(0xf0, 0xf0) AM_READ_LEGACY(st0016_dma_r) diff --git a/src/mame/drivers/ssfindo.c b/src/mame/drivers/ssfindo.c index 04a2565ee1f..f2a6c5dfe8f 100644 --- a/src/mame/drivers/ssfindo.c +++ b/src/mame/drivers/ssfindo.c @@ -229,6 +229,17 @@ public: emu_timer *m_PS7500timer0; emu_timer *m_PS7500timer1; int m_iocr_hack; + DECLARE_WRITE32_MEMBER(FIFO_w); + DECLARE_READ32_MEMBER(PS7500_IO_r); + DECLARE_WRITE32_MEMBER(PS7500_IO_w); + DECLARE_READ32_MEMBER(io_r); + DECLARE_WRITE32_MEMBER(io_w); + DECLARE_WRITE32_MEMBER(debug_w); + DECLARE_READ32_MEMBER(ff4_r); + DECLARE_READ32_MEMBER(SIMPLEIO_r); + DECLARE_READ32_MEMBER(randomized_r); + DECLARE_READ32_MEMBER(tetfight_unk_r); + DECLARE_WRITE32_MEMBER(tetfight_unk_w); }; @@ -262,15 +273,14 @@ static SCREEN_UPDATE_IND16(ssfindo) return 0; } -static WRITE32_HANDLER(FIFO_w) +WRITE32_MEMBER(ssfindo_state::FIFO_w) { - ssfindo_state *state = space->machine().driver_data<ssfindo_state>(); - state->m_PS7500_FIFO[data>>28]=data; + m_PS7500_FIFO[data>>28]=data; if(!(data>>28)) { - palette_set_color_rgb(space->machine(), state->m_PS7500_FIFO[1]&0xff, data&0xff,(data>>8)&0xff,(data>>16)&0xff); - state->m_PS7500_FIFO[1]++; //autoinc + palette_set_color_rgb(machine(), m_PS7500_FIFO[1]&0xff, data&0xff,(data>>8)&0xff,(data>>16)&0xff); + m_PS7500_FIFO[1]++; //autoinc } } static TIMER_CALLBACK( PS7500_Timer0_callback ) @@ -354,42 +364,41 @@ static void ppcar_speedups(address_space* space) } -static READ32_HANDLER(PS7500_IO_r) +READ32_MEMBER(ssfindo_state::PS7500_IO_r) { - ssfindo_state *state = space->machine().driver_data<ssfindo_state>(); switch(offset) { case MSECR: - return space->machine().rand(); + return machine().rand(); case IOLINES: //TODO: eeprom 24c01 #if 0 - mame_printf_debug("IOLINESR %i @%x\n", offset, cpu_get_pc(&space->device())); + mame_printf_debug("IOLINESR %i @%x\n", offset, cpu_get_pc(&space.device())); #endif - if(state->m_flashType == 1) + if(m_flashType == 1) return 0; else - return space->machine().rand(); + return machine().rand(); case IRQSTA: - return (state->m_PS7500_IO[offset] & (~2)) | 0x80; + return (m_PS7500_IO[offset] & (~2)) | 0x80; case IRQRQA: - return (state->m_PS7500_IO[IRQSTA] & state->m_PS7500_IO[IRQMSKA]) | 0x80; + return (m_PS7500_IO[IRQSTA] & m_PS7500_IO[IRQMSKA]) | 0x80; case IOCR: //TODO: nINT1, OD[n] p.81 - if (ssfindo_speedup) ssfindo_speedup(space); + if (ssfindo_speedup) ssfindo_speedup(&space); - if( state->m_iocr_hack) + if( m_iocr_hack) { - return (input_port_read(space->machine(), "PS7500") & 0x80) | 0x34 | (space->machine().rand()&3); //eeprom read ? + return (input_port_read(machine(), "PS7500") & 0x80) | 0x34 | (machine().rand()&3); //eeprom read ? } - return (input_port_read(space->machine(), "PS7500") & 0x80) | 0x37; + return (input_port_read(machine(), "PS7500") & 0x80) | 0x37; case VIDCR: - return (state->m_PS7500_IO[offset] | 0x50) & 0xfffffff0; + return (m_PS7500_IO[offset] | 0x50) & 0xfffffff0; case T1low: case T0low: @@ -400,57 +409,56 @@ static READ32_HANDLER(PS7500_IO_r) case VIDSTART: case VIDINITA: //TODO: bits 29 ("equal") and 30 (last bit) p.105 - return state->m_PS7500_IO[offset]; + return m_PS7500_IO[offset]; } - return space->machine().rand();//state->m_PS7500_IO[offset]; + return machine().rand();//m_PS7500_IO[offset]; } -static WRITE32_HANDLER(PS7500_IO_w) +WRITE32_MEMBER(ssfindo_state::PS7500_IO_w) { - ssfindo_state *state = space->machine().driver_data<ssfindo_state>(); - UINT32 temp=state->m_PS7500_IO[offset]; + UINT32 temp=m_PS7500_IO[offset]; COMBINE_DATA(&temp); switch(offset) { case IOLINES: //TODO: eeprom 24c01 - state->m_PS7500_IO[offset]=data; + m_PS7500_IO[offset]=data; if(data&0xc0) - state->m_adrLatch=0; + m_adrLatch=0; - if(cpu_get_pc(&space->device()) == 0xbac0 && state->m_flashType == 1) + if(cpu_get_pc(&space.device()) == 0xbac0 && m_flashType == 1) { - state->m_flashN=data&1; + m_flashN=data&1; } #if 0 - logerror("IOLINESW %i = %x @%x\n",offset,data,cpu_get_pc(&space->device())); + logerror("IOLINESW %i = %x @%x\n",offset,data,cpu_get_pc(&space.device())); #endif break; case IRQRQA: - state->m_PS7500_IO[IRQSTA]&=~temp; + m_PS7500_IO[IRQSTA]&=~temp; break; case IRQMSKA: - state->m_PS7500_IO[IRQMSKA]=(temp&(~2))|0x80; + m_PS7500_IO[IRQMSKA]=(temp&(~2))|0x80; break; case T1GO: - PS7500_startTimer1(space->machine()); + PS7500_startTimer1(machine()); break; case T0GO: - PS7500_startTimer0(space->machine()); + PS7500_startTimer0(machine()); break; case VIDEND: case VIDSTART: - COMBINE_DATA(&state->m_PS7500_IO[offset]); - state->m_PS7500_IO[offset]&=0xfffffff0; // qword align + COMBINE_DATA(&m_PS7500_IO[offset]); + m_PS7500_IO[offset]&=0xfffffff0; // qword align break; case IOCR: @@ -466,7 +474,7 @@ static WRITE32_HANDLER(PS7500_IO_w) case T0high: case VIDCR: case VIDINITA: //TODO: bit 30 (last bit) p.105 - COMBINE_DATA(&state->m_PS7500_IO[offset]); + COMBINE_DATA(&m_PS7500_IO[offset]); break; @@ -474,128 +482,126 @@ static WRITE32_HANDLER(PS7500_IO_w) } } -static READ32_HANDLER(io_r) +READ32_MEMBER(ssfindo_state::io_r) { - ssfindo_state *state = space->machine().driver_data<ssfindo_state>(); - UINT16 *FLASH = (UINT16 *)space->machine().region("user2")->base(); //16 bit - WORD access + UINT16 *FLASH = (UINT16 *)machine().region("user2")->base(); //16 bit - WORD access - int adr=state->m_flashAdr*0x200+(state->m_flashOffset); + int adr=m_flashAdr*0x200+(m_flashOffset); - switch(state->m_flashType) + switch(m_flashType) { case 0: - if(state->m_PS7500_IO[IOLINES]&1) //bit 0 of IOLINES = flash select ( 5/6 or 3/2 ) + if(m_PS7500_IO[IOLINES]&1) //bit 0 of IOLINES = flash select ( 5/6 or 3/2 ) adr+=0x400000; break; case 1: - adr+=0x400000*state->m_flashN; + adr+=0x400000*m_flashN; break; } if(adr<0x400000*2) { - state->m_flashOffset++; + m_flashOffset++; return FLASH[adr]; } return 0; } -static WRITE32_HANDLER(io_w) +WRITE32_MEMBER(ssfindo_state::io_w) { - ssfindo_state *state = space->machine().driver_data<ssfindo_state>(); UINT32 temp = 0; COMBINE_DATA(&temp); #if 0 - logerror("[io_w] = %x @%x [latch=%x]\n",data,cpu_get_pc(&space->device()),state->m_adrLatch); + logerror("[io_w] = %x @%x [latch=%x]\n",data,cpu_get_pc(&space.device()),m_adrLatch); #endif - if(state->m_adrLatch==1) - state->m_flashAdr=(temp>>16)&0xff; - if(state->m_adrLatch==2) + if(m_adrLatch==1) + m_flashAdr=(temp>>16)&0xff; + if(m_adrLatch==2) { - state->m_flashAdr|=(temp>>16)&0xff00; - state->m_flashOffset=0; + m_flashAdr|=(temp>>16)&0xff00; + m_flashOffset=0; } - state->m_adrLatch=(state->m_adrLatch+1)%3; + m_adrLatch=(m_adrLatch+1)%3; } -static WRITE32_HANDLER(debug_w) +WRITE32_MEMBER(ssfindo_state::debug_w) { #if 0 mame_printf_debug("%c",data&0xff); //debug texts - malloc (ie "64 KBytes allocated, elapsed : 378 KBytes, free : 2231 KBytes") #endif } -static READ32_HANDLER(ff4_r) +READ32_MEMBER(ssfindo_state::ff4_r) { - return space->machine().rand()&0x20; + return machine().rand()&0x20; } -static READ32_HANDLER(SIMPLEIO_r) +READ32_MEMBER(ssfindo_state::SIMPLEIO_r) { - return space->machine().rand()&1; + return machine().rand()&1; } -static READ32_HANDLER(randomized_r) +READ32_MEMBER(ssfindo_state::randomized_r) { - return space->machine().rand(); + return machine().rand(); } static ADDRESS_MAP_START( ssfindo_map, AS_PROGRAM, 32, ssfindo_state ) AM_RANGE(0x00000000, 0x000fffff) AM_ROM AM_REGION("user1", 0) - AM_RANGE(0x03200000, 0x032001ff) AM_READWRITE_LEGACY(PS7500_IO_r,PS7500_IO_w) + AM_RANGE(0x03200000, 0x032001ff) AM_READWRITE(PS7500_IO_r,PS7500_IO_w) AM_RANGE(0x03012e60, 0x03012e67) AM_NOP - AM_RANGE(0x03012fe0, 0x03012fe3) AM_WRITE_LEGACY(debug_w) + AM_RANGE(0x03012fe0, 0x03012fe3) AM_WRITE(debug_w) AM_RANGE(0x03012ff0, 0x03012ff3) AM_NOP - AM_RANGE(0x03012ff4, 0x03012ff7) AM_WRITENOP AM_READ_LEGACY(ff4_r) //status flag ? + AM_RANGE(0x03012ff4, 0x03012ff7) AM_WRITENOP AM_READ(ff4_r) //status flag ? AM_RANGE(0x03012ff8, 0x03012fff) AM_NOP AM_RANGE(0x03240000, 0x03240003) AM_READ_PORT("IN0") AM_WRITENOP AM_RANGE(0x03241000, 0x03241003) AM_READ_PORT("IN1") AM_WRITENOP - AM_RANGE(0x03242000, 0x03242003) AM_READ_LEGACY(io_r) AM_WRITE_LEGACY(io_w) + AM_RANGE(0x03242000, 0x03242003) AM_READ(io_r) AM_WRITE(io_w) AM_RANGE(0x03243000, 0x03243003) AM_READ_PORT("DSW") AM_WRITENOP - AM_RANGE(0x0324f000, 0x0324f003) AM_READ_LEGACY(SIMPLEIO_r) + AM_RANGE(0x0324f000, 0x0324f003) AM_READ(SIMPLEIO_r) AM_RANGE(0x03245000, 0x03245003) AM_WRITENOP /* sound ? */ - AM_RANGE(0x03400000, 0x03400003) AM_WRITE_LEGACY(FIFO_w) + AM_RANGE(0x03400000, 0x03400003) AM_WRITE(FIFO_w) AM_RANGE(0x10000000, 0x11ffffff) AM_RAM AM_BASE(m_vram) ADDRESS_MAP_END static ADDRESS_MAP_START( ppcar_map, AS_PROGRAM, 32, ssfindo_state ) AM_RANGE(0x00000000, 0x000fffff) AM_ROM AM_REGION("user1", 0) - AM_RANGE(0x03200000, 0x032001ff) AM_READWRITE_LEGACY(PS7500_IO_r,PS7500_IO_w) - AM_RANGE(0x03012b00, 0x03012bff) AM_READ_LEGACY(randomized_r) AM_WRITENOP + AM_RANGE(0x03200000, 0x032001ff) AM_READWRITE(PS7500_IO_r,PS7500_IO_w) + AM_RANGE(0x03012b00, 0x03012bff) AM_READ(randomized_r) AM_WRITENOP AM_RANGE(0x03012e60, 0x03012e67) AM_WRITENOP AM_RANGE(0x03012ff8, 0x03012ffb) AM_READ_PORT("IN0") AM_WRITENOP AM_RANGE(0x032c0000, 0x032c0003) AM_READ_PORT("IN1") AM_WRITENOP AM_RANGE(0x03340000, 0x03340007) AM_WRITENOP AM_RANGE(0x03341000, 0x0334101f) AM_WRITENOP - AM_RANGE(0x033c0000, 0x033c0003) AM_READ_LEGACY(io_r) AM_WRITE_LEGACY(io_w) - AM_RANGE(0x03400000, 0x03400003) AM_WRITE_LEGACY(FIFO_w) + AM_RANGE(0x033c0000, 0x033c0003) AM_READ(io_r) AM_WRITE(io_w) + AM_RANGE(0x03400000, 0x03400003) AM_WRITE(FIFO_w) AM_RANGE(0x08000000, 0x08ffffff) AM_RAM AM_RANGE(0x10000000, 0x10ffffff) AM_RAM AM_BASE(m_vram) ADDRESS_MAP_END -static READ32_HANDLER(tetfight_unk_r) +READ32_MEMBER(ssfindo_state::tetfight_unk_r) { //sound status ? - return space->machine().rand(); + return machine().rand(); } -static WRITE32_HANDLER(tetfight_unk_w) +WRITE32_MEMBER(ssfindo_state::tetfight_unk_w) { //sound latch ? } static ADDRESS_MAP_START( tetfight_map, AS_PROGRAM, 32, ssfindo_state ) AM_RANGE(0x00000000, 0x001fffff) AM_ROM AM_REGION("user1", 0) - AM_RANGE(0x03200000, 0x032001ff) AM_READWRITE_LEGACY(PS7500_IO_r,PS7500_IO_w) - AM_RANGE(0x03400000, 0x03400003) AM_WRITE_LEGACY(FIFO_w) + AM_RANGE(0x03200000, 0x032001ff) AM_READWRITE(PS7500_IO_r,PS7500_IO_w) + AM_RANGE(0x03400000, 0x03400003) AM_WRITE(FIFO_w) AM_RANGE(0x03240000, 0x03240003) AM_READ_PORT("DSW") AM_RANGE(0x03240004, 0x03240007) AM_READ_PORT("IN0") AM_RANGE(0x03240008, 0x0324000b) AM_READ_PORT("DSW2") - AM_RANGE(0x03240020, 0x03240023) AM_READWRITE_LEGACY(tetfight_unk_r, tetfight_unk_w) + AM_RANGE(0x03240020, 0x03240023) AM_READWRITE(tetfight_unk_r, tetfight_unk_w) AM_RANGE(0x10000000, 0x14ffffff) AM_RAM AM_BASE(m_vram) ADDRESS_MAP_END diff --git a/src/mame/drivers/sshot.c b/src/mame/drivers/sshot.c index 3e5ed9de790..505a14f1803 100644 --- a/src/mame/drivers/sshot.c +++ b/src/mame/drivers/sshot.c @@ -167,6 +167,9 @@ public: UINT8 *m_videoram; tilemap_t *m_tilemap; + DECLARE_WRITE8_MEMBER(supershot_vidram_w); + DECLARE_WRITE8_MEMBER(supershot_output0_w); + DECLARE_WRITE8_MEMBER(supershot_output1_w); }; /************************************* @@ -196,12 +199,11 @@ static SCREEN_UPDATE_IND16( supershot ) return 0; } -static WRITE8_HANDLER( supershot_vidram_w ) +WRITE8_MEMBER(supershot_state::supershot_vidram_w) { - supershot_state *state = space->machine().driver_data<supershot_state>(); - state->m_videoram[offset] = data; - state->m_tilemap->mark_tile_dirty(offset); + m_videoram[offset] = data; + m_tilemap->mark_tile_dirty(offset); } /************************************* @@ -210,7 +212,7 @@ static WRITE8_HANDLER( supershot_vidram_w ) * *************************************/ -static WRITE8_HANDLER(supershot_output0_w) +WRITE8_MEMBER(supershot_state::supershot_output0_w) { /* bit signal description @@ -226,7 +228,7 @@ static WRITE8_HANDLER(supershot_output0_w) */ } -static WRITE8_HANDLER(supershot_output1_w) +WRITE8_MEMBER(supershot_state::supershot_output1_w) { /* bit signal description @@ -250,14 +252,14 @@ static WRITE8_HANDLER(supershot_output1_w) static ADDRESS_MAP_START( supershot_map, AS_PROGRAM, 8, supershot_state ) AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE_LEGACY(supershot_vidram_w ) AM_BASE(m_videoram ) + AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(supershot_vidram_w ) AM_BASE(m_videoram ) AM_RANGE(0x4100, 0x41ff) AM_RAM AM_RANGE(0x4200, 0x4200) AM_READ_PORT("GUNX") AM_RANGE(0x4201, 0x4201) AM_READ_PORT("GUNY") AM_RANGE(0x4202, 0x4202) AM_READ_PORT("IN0") AM_RANGE(0x4203, 0x4203) AM_READ_PORT("DSW") - AM_RANGE(0x4206, 0x4206) AM_WRITE_LEGACY(supershot_output0_w) - AM_RANGE(0x4207, 0x4207) AM_WRITE_LEGACY(supershot_output1_w) + AM_RANGE(0x4206, 0x4206) AM_WRITE(supershot_output0_w) + AM_RANGE(0x4207, 0x4207) AM_WRITE(supershot_output1_w) ADDRESS_MAP_END /************************************* diff --git a/src/mame/drivers/ssingles.c b/src/mame/drivers/ssingles.c index 6f2e10823b3..b0243a21545 100644 --- a/src/mame/drivers/ssingles.c +++ b/src/mame/drivers/ssingles.c @@ -163,6 +163,13 @@ public: pen_t m_pens[NUM_PENS]; UINT8 m_atamanot_prot_state; + DECLARE_WRITE8_MEMBER(ssingles_videoram_w); + DECLARE_WRITE8_MEMBER(ssingles_colorram_w); + DECLARE_READ8_MEMBER(c000_r); + DECLARE_READ8_MEMBER(c001_r); + DECLARE_WRITE8_MEMBER(c001_w); + DECLARE_READ8_MEMBER(atamanot_prot_r); + DECLARE_WRITE8_MEMBER(atamanot_prot_w); }; //fake palette @@ -283,20 +290,18 @@ static const mc6845_interface atamanot_mc6845_intf = }; -static WRITE8_HANDLER(ssingles_videoram_w) +WRITE8_MEMBER(ssingles_state::ssingles_videoram_w) { - ssingles_state *state = space->machine().driver_data<ssingles_state>(); - UINT8 *vram = space->machine().region("vram")->base(); + UINT8 *vram = machine().region("vram")->base(); vram[offset] = data; - state->m_videoram[offset]=data; + m_videoram[offset]=data; } -static WRITE8_HANDLER(ssingles_colorram_w) +WRITE8_MEMBER(ssingles_state::ssingles_colorram_w) { - ssingles_state *state = space->machine().driver_data<ssingles_state>(); - UINT8 *cram = space->machine().region("cram")->base(); + UINT8 *cram = machine().region("cram")->base(); cram[offset] = data; - state->m_colorram[offset]=data; + m_colorram[offset]=data; } @@ -314,26 +319,23 @@ static VIDEO_START(ssingles) } -static READ8_HANDLER(c000_r) +READ8_MEMBER(ssingles_state::c000_r) { - ssingles_state *state = space->machine().driver_data<ssingles_state>(); - return state->m_prot_data; + return m_prot_data; } -static READ8_HANDLER(c001_r) +READ8_MEMBER(ssingles_state::c001_r) { - ssingles_state *state = space->machine().driver_data<ssingles_state>(); - state->m_prot_data=0xc4; + m_prot_data=0xc4; return 0; } -static WRITE8_HANDLER(c001_w) +WRITE8_MEMBER(ssingles_state::c001_w) { - ssingles_state *state = space->machine().driver_data<ssingles_state>(); - state->m_prot_data^=data^0x11; + m_prot_data^=data^0x11; } static CUSTOM_INPUT(controls_r) @@ -354,24 +356,23 @@ static CUSTOM_INPUT(controls_r) } static ADDRESS_MAP_START( ssingles_map, AS_PROGRAM, 8, ssingles_state ) - AM_RANGE(0x0000, 0x00ff) AM_WRITE_LEGACY(ssingles_videoram_w) - AM_RANGE(0x0800, 0x08ff) AM_WRITE_LEGACY(ssingles_colorram_w) + AM_RANGE(0x0000, 0x00ff) AM_WRITE(ssingles_videoram_w) + AM_RANGE(0x0800, 0x08ff) AM_WRITE(ssingles_colorram_w) AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0xc000, 0xc000) AM_READ_LEGACY(c000_r ) - AM_RANGE(0xc001, 0xc001) AM_READWRITE_LEGACY(c001_r, c001_w ) + AM_RANGE(0xc000, 0xc000) AM_READ(c000_r ) + AM_RANGE(0xc001, 0xc001) AM_READWRITE(c001_r, c001_w ) AM_RANGE(0x6000, 0xbfff) AM_ROM AM_RANGE(0xf800, 0xffff) AM_RAM ADDRESS_MAP_END -static READ8_HANDLER( atamanot_prot_r ) +READ8_MEMBER(ssingles_state::atamanot_prot_r) { - ssingles_state *state = space->machine().driver_data<ssingles_state>(); static const char prot_id[] = { "PROGRAM BY KOYAMA" }; - logerror("%04x %02x\n",offset,state->m_atamanot_prot_state); + logerror("%04x %02x\n",offset,m_atamanot_prot_state); - switch(state->m_atamanot_prot_state) + switch(m_atamanot_prot_state) { case 0x20: case 0x21: @@ -386,25 +387,24 @@ static READ8_HANDLER( atamanot_prot_r ) return 0; } -static WRITE8_HANDLER( atamanot_prot_w ) +WRITE8_MEMBER(ssingles_state::atamanot_prot_w) { - ssingles_state *state = space->machine().driver_data<ssingles_state>(); - state->m_atamanot_prot_state = data; + m_atamanot_prot_state = data; } static ADDRESS_MAP_START( atamanot_map, AS_PROGRAM, 8, ssingles_state ) - AM_RANGE(0x0000, 0x00ff) AM_WRITE_LEGACY(ssingles_videoram_w) - AM_RANGE(0x0800, 0x08ff) AM_WRITE_LEGACY(ssingles_colorram_w) + AM_RANGE(0x0000, 0x00ff) AM_WRITE(ssingles_videoram_w) + AM_RANGE(0x0800, 0x08ff) AM_WRITE(ssingles_colorram_w) AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x4000, 0x47ff) AM_RAM AM_RANGE(0x6000, 0x60ff) AM_RAM //kanji tilemap? // AM_RANGE(0x6000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_READ_LEGACY(atamanot_prot_r) + AM_RANGE(0x8000, 0x83ff) AM_READ(atamanot_prot_r) // AM_RANGE(0x8000, 0x9fff) AM_ROM AM_REGION("question",0x10000) -// AM_RANGE(0xc000, 0xc000) AM_READ_LEGACY(c000_r ) -// AM_RANGE(0xc001, 0xc001) AM_READWRITE_LEGACY(c001_r, c001_w ) +// AM_RANGE(0xc000, 0xc000) AM_READ(c000_r ) +// AM_RANGE(0xc001, 0xc001) AM_READWRITE(c001_r, c001_w ) ADDRESS_MAP_END static ADDRESS_MAP_START( ssingles_io_map, AS_IO, 8, ssingles_state ) @@ -430,7 +430,7 @@ static ADDRESS_MAP_START( atamanot_io_map, AS_IO, 8, ssingles_state ) AM_RANGE(0x08, 0x08) AM_READNOP AM_RANGE(0x0a, 0x0a) AM_DEVWRITE_LEGACY("ay2", ay8910_data_w) AM_RANGE(0x16, 0x16) AM_READ_PORT("DSW0") - AM_RANGE(0x18, 0x18) AM_READ_PORT("DSW1") AM_WRITE_LEGACY(atamanot_prot_w) + AM_RANGE(0x18, 0x18) AM_READ_PORT("DSW1") AM_WRITE(atamanot_prot_w) AM_RANGE(0x1c, 0x1c) AM_READ_PORT("INPUTS") // AM_RANGE(0x1a, 0x1a) AM_WRITENOP //video/crt related AM_RANGE(0xfe, 0xfe) AM_DEVWRITE("crtc", mc6845_device, address_w) diff --git a/src/mame/drivers/sstrangr.c b/src/mame/drivers/sstrangr.c index b1d0e36429b..37f2076d204 100644 --- a/src/mame/drivers/sstrangr.c +++ b/src/mame/drivers/sstrangr.c @@ -22,6 +22,7 @@ public: UINT8 *m_ram; UINT8 m_flip_screen; UINT8 *m_proms; + DECLARE_WRITE8_MEMBER(port_w); }; @@ -129,11 +130,10 @@ static SCREEN_UPDATE_RGB32( sstrngr2 ) } -static WRITE8_HANDLER( port_w ) +WRITE8_MEMBER(sstrangr_state::port_w) { - sstrangr_state *state = space->machine().driver_data<sstrangr_state>(); - state->m_flip_screen = data & 0x20; + m_flip_screen = data & 0x20; } @@ -149,7 +149,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( sstrangr_io_map, AS_IO, 8, sstrangr_state ) AM_RANGE(0x41, 0x41) AM_READ_PORT("DSW") AM_RANGE(0x42, 0x42) AM_READ_PORT("INPUTS") - AM_RANGE(0x44, 0x44) AM_READ_PORT("EXT") AM_WRITE_LEGACY(port_w) + AM_RANGE(0x44, 0x44) AM_READ_PORT("EXT") AM_WRITE(port_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/sub.c b/src/mame/drivers/sub.c index 27e5cc62b4b..8a8fa75688a 100644 --- a/src/mame/drivers/sub.c +++ b/src/mame/drivers/sub.c @@ -124,6 +124,8 @@ public: UINT8* m_spriteram; UINT8* m_spriteram2; UINT8 m_nmi_en; + DECLARE_WRITE8_MEMBER(subm_to_sound_w); + DECLARE_WRITE8_MEMBER(nmi_mask_w); }; static VIDEO_START(sub) @@ -235,28 +237,27 @@ static ADDRESS_MAP_START( subm_map, AS_PROGRAM, 8, sub_state ) AM_RANGE(0xf060, 0xf060) AM_READ_PORT("IN0") ADDRESS_MAP_END -static WRITE8_HANDLER( subm_to_sound_w ) +WRITE8_MEMBER(sub_state::subm_to_sound_w) { soundlatch_w(space, 0, data & 0xff); - cputag_set_input_line(space->machine(), "soundcpu", 0, HOLD_LINE); + cputag_set_input_line(machine(), "soundcpu", 0, HOLD_LINE); } -static WRITE8_HANDLER( nmi_mask_w ) +WRITE8_MEMBER(sub_state::nmi_mask_w) { - sub_state *state = space->machine().driver_data<sub_state>(); - state->m_nmi_en = data & 1; + m_nmi_en = data & 1; } static ADDRESS_MAP_START( subm_io, AS_IO, 8, sub_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READWRITE_LEGACY(soundlatch2_r, subm_to_sound_w) // to/from sound CPU + AM_RANGE(0x00, 0x00) AM_READ_LEGACY(soundlatch2_r) AM_WRITE(subm_to_sound_w) // to/from sound CPU ADDRESS_MAP_END static ADDRESS_MAP_START( subm_sound_map, AS_PROGRAM, 8, sub_state ) AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_WRITE_LEGACY(nmi_mask_w) + AM_RANGE(0x6000, 0x6000) AM_WRITE(nmi_mask_w) ADDRESS_MAP_END static ADDRESS_MAP_START( subm_sound_io, AS_IO, 8, sub_state ) diff --git a/src/mame/drivers/subsino.c b/src/mame/drivers/subsino.c index 9b077ad6881..eacd27627f8 100644 --- a/src/mame/drivers/subsino.c +++ b/src/mame/drivers/subsino.c @@ -257,6 +257,22 @@ public: int m_colordac_offs; UINT8* m_stisub_colorram; UINT8 m_stisub_outc; + DECLARE_WRITE8_MEMBER(subsino_tiles_offset_w); + DECLARE_WRITE8_MEMBER(subsino_videoram_w); + DECLARE_WRITE8_MEMBER(subsino_colorram_w); + DECLARE_WRITE8_MEMBER(subsino_reel1_ram_w); + DECLARE_WRITE8_MEMBER(subsino_reel2_ram_w); + DECLARE_WRITE8_MEMBER(subsino_reel3_ram_w); + DECLARE_WRITE8_MEMBER(subsino_out_a_w); + DECLARE_WRITE8_MEMBER(subsino_out_b_w); + DECLARE_READ8_MEMBER(flash_r); + DECLARE_WRITE8_MEMBER(flash_w); + DECLARE_READ8_MEMBER(hwcheck_r); + DECLARE_WRITE8_MEMBER(subsino_out_c_w); + DECLARE_WRITE8_MEMBER(colordac_w); + DECLARE_WRITE8_MEMBER(stisub_out_c_w); + DECLARE_WRITE8_MEMBER(reel_scrollattr_w); + DECLARE_READ8_MEMBER(reel_scrollattr_r); }; @@ -266,26 +282,23 @@ public: ***************************************************************************/ -static WRITE8_HANDLER( subsino_tiles_offset_w ) +WRITE8_MEMBER(subsino_state::subsino_tiles_offset_w) { - subsino_state *state = space->machine().driver_data<subsino_state>(); - state->m_tiles_offset = (data & 1) ? 0x1000: 0; - state->m_tmap->mark_tile_dirty(offset); + m_tiles_offset = (data & 1) ? 0x1000: 0; + m_tmap->mark_tile_dirty(offset); // popmessage("gfx %02x",data); } -static WRITE8_HANDLER( subsino_videoram_w ) +WRITE8_MEMBER(subsino_state::subsino_videoram_w) { - subsino_state *state = space->machine().driver_data<subsino_state>(); - state->m_videoram[offset] = data; - state->m_tmap->mark_tile_dirty(offset); + m_videoram[offset] = data; + m_tmap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( subsino_colorram_w ) +WRITE8_MEMBER(subsino_state::subsino_colorram_w) { - subsino_state *state = space->machine().driver_data<subsino_state>(); - state->m_colorram[offset] = data; - state->m_tmap->mark_tile_dirty(offset); + m_colorram[offset] = data; + m_tmap->mark_tile_dirty(offset); } static TILE_GET_INFO( get_tile_info ) @@ -317,11 +330,10 @@ static VIDEO_START( subsino ) -static WRITE8_HANDLER( subsino_reel1_ram_w ) +WRITE8_MEMBER(subsino_state::subsino_reel1_ram_w) { - subsino_state *state = space->machine().driver_data<subsino_state>(); - state->m_reel1_ram[offset] = data; - state->m_reel1_tilemap->mark_tile_dirty(offset); + m_reel1_ram[offset] = data; + m_reel1_tilemap->mark_tile_dirty(offset); } static TILE_GET_INFO( get_subsino_reel1_tile_info ) @@ -351,11 +363,10 @@ static TILE_GET_INFO( get_stisub_reel1_tile_info ) } -static WRITE8_HANDLER( subsino_reel2_ram_w ) +WRITE8_MEMBER(subsino_state::subsino_reel2_ram_w) { - subsino_state *state = space->machine().driver_data<subsino_state>(); - state->m_reel2_ram[offset] = data; - state->m_reel2_tilemap->mark_tile_dirty(offset); + m_reel2_ram[offset] = data; + m_reel2_tilemap->mark_tile_dirty(offset); } static TILE_GET_INFO( get_subsino_reel2_tile_info ) @@ -384,11 +395,10 @@ static TILE_GET_INFO( get_stisub_reel2_tile_info ) 0); } -static WRITE8_HANDLER( subsino_reel3_ram_w ) +WRITE8_MEMBER(subsino_state::subsino_reel3_ram_w) { - subsino_state *state = space->machine().driver_data<subsino_state>(); - state->m_reel3_ram[offset] = data; - state->m_reel3_tilemap->mark_tile_dirty(offset); + m_reel3_ram[offset] = data; + m_reel3_tilemap->mark_tile_dirty(offset); } static TILE_GET_INFO( get_subsino_reel3_tile_info ) @@ -584,9 +594,8 @@ static PALETTE_INIT( subsino_3proms ) * Lamps & other outputs. * ***************************************************************************/ -static WRITE8_HANDLER( subsino_out_a_w ) +WRITE8_MEMBER(subsino_state::subsino_out_a_w) { - /***** COIN PULSE: ***** @@ -625,16 +634,16 @@ static WRITE8_HANDLER( subsino_out_a_w ) output_set_lamp_value(14, (data >> 6) & 1); /* Lamp 14 */ output_set_lamp_value(15, (data >> 7) & 1); /* Lamp 15 */ - coin_counter_w( space->machine(), 0, data & 0x01 ); /* coin / keyin */ - coin_counter_w( space->machine(), 1, data & 0x02 ); /* keyin / coin */ - coin_counter_w( space->machine(), 2, data & 0x10 ); /* keyout */ - coin_counter_w( space->machine(), 3, data & 0x20 ); /* payout */ + coin_counter_w( machine(), 0, data & 0x01 ); /* coin / keyin */ + coin_counter_w( machine(), 1, data & 0x02 ); /* keyin / coin */ + coin_counter_w( machine(), 2, data & 0x10 ); /* keyout */ + coin_counter_w( machine(), 3, data & 0x20 ); /* payout */ // popmessage("Out A %02x",data); } -static WRITE8_HANDLER( subsino_out_b_w ) +WRITE8_MEMBER(subsino_state::subsino_out_b_w) { /***** LAMPS: ***** @@ -787,8 +796,8 @@ static ADDRESS_MAP_START( srider_map, AS_PROGRAM, 8, subsino_state ) AM_RANGE( 0x0d005, 0x0d005 ) AM_READ_PORT( "INA" ) AM_RANGE( 0x0d006, 0x0d006 ) AM_READ_PORT( "INB" ) - AM_RANGE( 0x0d009, 0x0d009 ) AM_WRITE_LEGACY(subsino_out_b_w ) - AM_RANGE( 0x0d00a, 0x0d00a ) AM_WRITE_LEGACY(subsino_out_a_w ) + AM_RANGE( 0x0d009, 0x0d009 ) AM_WRITE(subsino_out_b_w ) + AM_RANGE( 0x0d00a, 0x0d00a ) AM_WRITE(subsino_out_a_w ) AM_RANGE( 0x0d00c, 0x0d00c ) AM_READ_PORT( "INC" ) @@ -796,10 +805,10 @@ static ADDRESS_MAP_START( srider_map, AS_PROGRAM, 8, subsino_state ) AM_RANGE( 0x0d018, 0x0d018 ) AM_DEVWRITE("oki", okim6295_device, write) - AM_RANGE( 0x0d01b, 0x0d01b ) AM_WRITE_LEGACY(subsino_tiles_offset_w ) + AM_RANGE( 0x0d01b, 0x0d01b ) AM_WRITE(subsino_tiles_offset_w ) - AM_RANGE( 0x0e000, 0x0e7ff ) AM_RAM_WRITE_LEGACY(subsino_colorram_w ) AM_BASE(m_colorram ) - AM_RANGE( 0x0e800, 0x0efff ) AM_RAM_WRITE_LEGACY(subsino_videoram_w ) AM_BASE(m_videoram ) + AM_RANGE( 0x0e000, 0x0e7ff ) AM_RAM_WRITE(subsino_colorram_w ) AM_BASE(m_colorram ) + AM_RANGE( 0x0e800, 0x0efff ) AM_RAM_WRITE(subsino_videoram_w ) AM_BASE(m_videoram ) ADDRESS_MAP_END @@ -814,8 +823,8 @@ static ADDRESS_MAP_START( sharkpy_map, AS_PROGRAM, 8, subsino_state ) AM_RANGE( 0x09005, 0x09005 ) AM_READ_PORT( "INA" ) AM_RANGE( 0x09006, 0x09006 ) AM_READ_PORT( "INB" ) - AM_RANGE( 0x09009, 0x09009 ) AM_WRITE_LEGACY(subsino_out_b_w ) - AM_RANGE( 0x0900a, 0x0900a ) AM_WRITE_LEGACY(subsino_out_a_w ) + AM_RANGE( 0x09009, 0x09009 ) AM_WRITE(subsino_out_b_w ) + AM_RANGE( 0x0900a, 0x0900a ) AM_WRITE(subsino_out_a_w ) AM_RANGE( 0x0900c, 0x0900c ) AM_READ_PORT( "INC" ) @@ -823,11 +832,11 @@ static ADDRESS_MAP_START( sharkpy_map, AS_PROGRAM, 8, subsino_state ) AM_RANGE( 0x09018, 0x09018 ) AM_DEVWRITE("oki", okim6295_device, write) - AM_RANGE( 0x0901b, 0x0901b ) AM_WRITE_LEGACY(subsino_tiles_offset_w ) + AM_RANGE( 0x0901b, 0x0901b ) AM_WRITE(subsino_tiles_offset_w ) AM_RANGE( 0x07800, 0x07fff ) AM_RAM - AM_RANGE( 0x08000, 0x087ff ) AM_RAM_WRITE_LEGACY(subsino_colorram_w ) AM_BASE(m_colorram ) - AM_RANGE( 0x08800, 0x08fff ) AM_RAM_WRITE_LEGACY(subsino_videoram_w ) AM_BASE(m_videoram ) + AM_RANGE( 0x08000, 0x087ff ) AM_RAM_WRITE(subsino_colorram_w ) AM_BASE(m_colorram ) + AM_RANGE( 0x08800, 0x08fff ) AM_RAM_WRITE(subsino_videoram_w ) AM_BASE(m_videoram ) AM_RANGE( 0x00000, 0x13fff ) AM_ROM //overlap unmapped regions ADDRESS_MAP_END @@ -841,8 +850,8 @@ this event makes the game to reset without any money in the bank. static ADDRESS_MAP_START( victor21_map, AS_PROGRAM, 8, subsino_state ) AM_RANGE( 0x09800, 0x09fff ) AM_RAM - AM_RANGE( 0x09000, 0x09000 ) AM_WRITE_LEGACY(subsino_out_a_w ) - AM_RANGE( 0x09001, 0x09001 ) AM_WRITE_LEGACY(subsino_out_b_w ) + AM_RANGE( 0x09000, 0x09000 ) AM_WRITE(subsino_out_a_w ) + AM_RANGE( 0x09001, 0x09001 ) AM_WRITE(subsino_out_b_w ) AM_RANGE( 0x09002, 0x09002 ) AM_READ_PORT( "INC" ) AM_RANGE( 0x09004, 0x09004 ) AM_READ_PORT( "INA" ) AM_RANGE( 0x09005, 0x09005 ) AM_READ_PORT( "INB" ) @@ -857,11 +866,11 @@ static ADDRESS_MAP_START( victor21_map, AS_PROGRAM, 8, subsino_state ) AM_RANGE( 0x0900e, 0x0900f ) AM_DEVWRITE_LEGACY("ymsnd", ym2413_w ) - AM_RANGE( 0x0900d, 0x0900d ) AM_WRITE_LEGACY(subsino_tiles_offset_w ) + AM_RANGE( 0x0900d, 0x0900d ) AM_WRITE(subsino_tiles_offset_w ) AM_RANGE( 0x07800, 0x07fff ) AM_RAM - AM_RANGE( 0x08000, 0x087ff ) AM_RAM_WRITE_LEGACY(subsino_videoram_w ) AM_BASE(m_videoram ) - AM_RANGE( 0x08800, 0x08fff ) AM_RAM_WRITE_LEGACY(subsino_colorram_w ) AM_BASE(m_colorram ) + AM_RANGE( 0x08000, 0x087ff ) AM_RAM_WRITE(subsino_videoram_w ) AM_BASE(m_videoram ) + AM_RANGE( 0x08800, 0x08fff ) AM_RAM_WRITE(subsino_colorram_w ) AM_BASE(m_colorram ) AM_RANGE( 0x00000, 0x08fff ) AM_ROM //overlap unmapped regions AM_RANGE( 0x10000, 0x13fff ) AM_ROM @@ -886,49 +895,47 @@ what it is exactly and what it can possibly do. */ -static READ8_HANDLER( flash_r ) +READ8_MEMBER(subsino_state::flash_r) { - subsino_state *state = space->machine().driver_data<subsino_state>(); -// printf("R %02x\n",state->m_flash_val); +// printf("R %02x\n",m_flash_val); - if(state->m_flash_val == 0xff) + if(m_flash_val == 0xff) return 0xd9; - else if(state->m_flash_val <= 0xa) - return state->m_flash_val; - else if(state->m_flash_val == 0x92) + else if(m_flash_val <= 0xa) + return m_flash_val; + else if(m_flash_val == 0x92) return 0xeb; //protected GFXs in Cross Bingo else return 0xd9; } -static WRITE8_HANDLER( flash_w ) +WRITE8_MEMBER(subsino_state::flash_w) { - subsino_state *state = space->machine().driver_data<subsino_state>(); - switch(state->m_flash_packet_start) + switch(m_flash_packet_start) { case 0: - state->m_flash_packet = data; - if((state->m_flash_packet & 0xf8) == 0xd0) - state->m_flash_packet_start = 1; //start of packet + m_flash_packet = data; + if((m_flash_packet & 0xf8) == 0xd0) + m_flash_packet_start = 1; //start of packet break; case 1: - state->m_flash_packet = data; - if((state->m_flash_packet & 0xf8) == 0xe0) - state->m_flash_packet_start = 0; //end of packet + m_flash_packet = data; + if((m_flash_packet & 0xf8) == 0xe0) + m_flash_packet_start = 0; //end of packet else - state->m_flash_val = data; + m_flash_val = data; break; } } static ADDRESS_MAP_START( victor5_map, AS_PROGRAM, 8, subsino_state ) AM_IMPORT_FROM( victor21_map ) - AM_RANGE( 0x0900a, 0x0900a ) AM_READWRITE_LEGACY(flash_r, flash_w ) + AM_RANGE( 0x0900a, 0x0900a ) AM_READWRITE(flash_r, flash_w ) AM_RANGE( 0x0900b, 0x0900b ) AM_READNOP //"flash" status, bit 0 ADDRESS_MAP_END -static READ8_HANDLER( hwcheck_r ) +READ8_MEMBER(subsino_state::hwcheck_r) { /* Wants this at POST otherwise an "Hardware Error" occurs. */ return 0x55; @@ -942,24 +949,24 @@ static ADDRESS_MAP_START( crsbingo_map, AS_PROGRAM, 8, subsino_state ) AM_RANGE( 0x09002, 0x09002 ) AM_READ_PORT( "INA" ) AM_RANGE( 0x09003, 0x09003 ) AM_READ_PORT( "INB" ) AM_RANGE( 0x09004, 0x09004 ) AM_READ_PORT( "INC" ) - AM_RANGE( 0x09005, 0x09005 ) AM_WRITE_LEGACY(subsino_out_a_w ) + AM_RANGE( 0x09005, 0x09005 ) AM_WRITE(subsino_out_a_w ) AM_RANGE( 0x09008, 0x09008 ) AM_READ_PORT( "SW4" ) - AM_RANGE( 0x09009, 0x09009 ) AM_READ_PORT( "SW3" ) // AM_WRITE_LEGACY(subsino_out_a_w ) - AM_RANGE( 0x0900a, 0x0900a ) AM_READWRITE_LEGACY(hwcheck_r, subsino_out_b_w ) + AM_RANGE( 0x09009, 0x09009 ) AM_READ_PORT( "SW3" ) // AM_WRITE(subsino_out_a_w ) + AM_RANGE( 0x0900a, 0x0900a ) AM_READWRITE(hwcheck_r, subsino_out_b_w ) - AM_RANGE( 0x09010, 0x09010 ) AM_READWRITE_LEGACY(flash_r, flash_w ) + AM_RANGE( 0x09010, 0x09010 ) AM_READWRITE(flash_r, flash_w ) // AM_RANGE( 0x09011, 0x09011 ) //"flash" status, bit 0 // AM_RANGE( 0x0900c, 0x0900c ) AM_READ_PORT( "INC" ) AM_RANGE( 0x0900c, 0x0900d ) AM_DEVWRITE_LEGACY("ymsnd", ym2413_w ) // AM_RANGE( 0x09018, 0x09018 ) AM_DEVWRITE("oki", okim6295_device, write) -// AM_RANGE( 0x0900d, 0x0900d ) AM_WRITE_LEGACY(subsino_tiles_offset_w ) +// AM_RANGE( 0x0900d, 0x0900d ) AM_WRITE(subsino_tiles_offset_w ) AM_RANGE( 0x07800, 0x07fff ) AM_RAM - AM_RANGE( 0x08000, 0x087ff ) AM_RAM_WRITE_LEGACY(subsino_videoram_w ) AM_BASE(m_videoram ) - AM_RANGE( 0x08800, 0x08fff ) AM_RAM_WRITE_LEGACY(subsino_colorram_w ) AM_BASE(m_colorram ) + AM_RANGE( 0x08000, 0x087ff ) AM_RAM_WRITE(subsino_videoram_w ) AM_BASE(m_videoram ) + AM_RANGE( 0x08800, 0x08fff ) AM_RAM_WRITE(subsino_colorram_w ) AM_BASE(m_colorram ) AM_RANGE( 0x00000, 0x8fff ) AM_ROM //overlap unmapped regions @@ -967,19 +974,18 @@ static ADDRESS_MAP_START( crsbingo_map, AS_PROGRAM, 8, subsino_state ) ADDRESS_MAP_END -static WRITE8_HANDLER( subsino_out_c_w ) +WRITE8_MEMBER(subsino_state::subsino_out_c_w) { - subsino_state *state = space->machine().driver_data<subsino_state>(); // not 100% sure on this // ???? eccc // e = enable reels? // c = reel colour bank? - state->m_out_c = data; + m_out_c = data; - state->m_reel1_tilemap->mark_all_dirty(); - state->m_reel2_tilemap->mark_all_dirty(); - state->m_reel3_tilemap->mark_all_dirty(); + m_reel1_tilemap->mark_all_dirty(); + m_reel2_tilemap->mark_all_dirty(); + m_reel3_tilemap->mark_all_dirty(); // popmessage("data %02x\n",data); } @@ -995,9 +1001,9 @@ static ADDRESS_MAP_START( tisub_map, AS_PROGRAM, 8, subsino_state ) AM_RANGE( 0x09006, 0x09006 ) AM_READ_PORT( "INB" ) /* 0x09008: is marked as OUTPUT C in the test mode. */ - AM_RANGE( 0x09008, 0x09008 ) AM_WRITE_LEGACY(subsino_out_c_w ) - AM_RANGE( 0x09009, 0x09009 ) AM_WRITE_LEGACY(subsino_out_b_w ) - AM_RANGE( 0x0900a, 0x0900a ) AM_WRITE_LEGACY(subsino_out_a_w ) + AM_RANGE( 0x09008, 0x09008 ) AM_WRITE(subsino_out_c_w ) + AM_RANGE( 0x09009, 0x09009 ) AM_WRITE(subsino_out_b_w ) + AM_RANGE( 0x0900a, 0x0900a ) AM_WRITE(subsino_out_a_w ) AM_RANGE( 0x0900c, 0x0900c ) AM_READ_PORT( "INC" ) @@ -1005,11 +1011,11 @@ static ADDRESS_MAP_START( tisub_map, AS_PROGRAM, 8, subsino_state ) // AM_RANGE( 0x0900c, 0x0900c ) AM_DEVWRITE("oki", okim6295_device, write) - AM_RANGE( 0x0901b, 0x0901b ) AM_WRITE_LEGACY(subsino_tiles_offset_w ) + AM_RANGE( 0x0901b, 0x0901b ) AM_WRITE(subsino_tiles_offset_w ) AM_RANGE( 0x07800, 0x07fff ) AM_RAM - AM_RANGE( 0x08800, 0x08fff ) AM_RAM_WRITE_LEGACY(subsino_videoram_w ) AM_BASE(m_videoram ) - AM_RANGE( 0x08000, 0x087ff ) AM_RAM_WRITE_LEGACY(subsino_colorram_w ) AM_BASE(m_colorram ) + AM_RANGE( 0x08800, 0x08fff ) AM_RAM_WRITE(subsino_videoram_w ) AM_BASE(m_videoram ) + AM_RANGE( 0x08000, 0x087ff ) AM_RAM_WRITE(subsino_colorram_w ) AM_BASE(m_colorram ) AM_RANGE( 0x00000, 0x0bfff ) AM_ROM // overlap unmapped regions AM_RANGE( 0x10000, 0x13fff ) AM_ROM @@ -1019,29 +1025,28 @@ static ADDRESS_MAP_START( tisub_map, AS_PROGRAM, 8, subsino_state ) AM_RANGE( 0x15140, 0x1517f ) AM_RAM AM_BASE(m_reel2_scroll) AM_RANGE( 0x15180, 0x151bf ) AM_RAM AM_BASE(m_reel1_scroll) - AM_RANGE( 0x15800, 0x159ff ) AM_RAM_WRITE_LEGACY(subsino_reel1_ram_w) AM_BASE(m_reel1_ram) - AM_RANGE( 0x15a00, 0x15bff ) AM_RAM_WRITE_LEGACY(subsino_reel2_ram_w) AM_BASE(m_reel2_ram) - AM_RANGE( 0x15c00, 0x15dff ) AM_RAM_WRITE_LEGACY(subsino_reel3_ram_w) AM_BASE(m_reel3_ram) + AM_RANGE( 0x15800, 0x159ff ) AM_RAM_WRITE(subsino_reel1_ram_w) AM_BASE(m_reel1_ram) + AM_RANGE( 0x15a00, 0x15bff ) AM_RAM_WRITE(subsino_reel2_ram_w) AM_BASE(m_reel2_ram) + AM_RANGE( 0x15c00, 0x15dff ) AM_RAM_WRITE(subsino_reel3_ram_w) AM_BASE(m_reel3_ram) ADDRESS_MAP_END -static WRITE8_HANDLER(colordac_w) +WRITE8_MEMBER(subsino_state::colordac_w) { - subsino_state *state = space->machine().driver_data<subsino_state>(); switch ( offset ) { case 0: - state->m_colordac_offs = data * 3; + m_colordac_offs = data * 3; break; case 1: - state->m_stisub_colorram[state->m_colordac_offs] = data; - palette_set_color_rgb(space->machine(), state->m_colordac_offs/3, - pal6bit(state->m_stisub_colorram[(state->m_colordac_offs/3)*3+0]), - pal6bit(state->m_stisub_colorram[(state->m_colordac_offs/3)*3+1]), - pal6bit(state->m_stisub_colorram[(state->m_colordac_offs/3)*3+2]) + m_stisub_colorram[m_colordac_offs] = data; + palette_set_color_rgb(machine(), m_colordac_offs/3, + pal6bit(m_stisub_colorram[(m_colordac_offs/3)*3+0]), + pal6bit(m_stisub_colorram[(m_colordac_offs/3)*3+1]), + pal6bit(m_stisub_colorram[(m_colordac_offs/3)*3+2]) ); - state->m_colordac_offs = (state->m_colordac_offs+1) % (256*3); + m_colordac_offs = (m_colordac_offs+1) % (256*3); break; case 2: @@ -1054,31 +1059,29 @@ static WRITE8_HANDLER(colordac_w) } -static WRITE8_HANDLER( stisub_out_c_w ) +WRITE8_MEMBER(subsino_state::stisub_out_c_w) { - subsino_state *state = space->machine().driver_data<subsino_state>(); - state->m_stisub_outc = data; + m_stisub_outc = data; } // this stuff is banked.. // not 100% sure on the bank bits.. other bits are also set -static WRITE8_HANDLER( reel_scrollattr_w ) +WRITE8_MEMBER(subsino_state::reel_scrollattr_w) { - subsino_state *state = space->machine().driver_data<subsino_state>(); - if (state->m_stisub_outc&0x20) + if (m_stisub_outc&0x20) { if (offset<0x200) { - state->m_reel1_attr[offset&0x1ff] = data; + m_reel1_attr[offset&0x1ff] = data; } else if (offset<0x400) { - state->m_reel2_attr[offset&0x1ff] = data; + m_reel2_attr[offset&0x1ff] = data; } else if (offset<0x600) { - state->m_reel3_attr[offset&0x1ff] = data; + m_reel3_attr[offset&0x1ff] = data; } else { @@ -1095,23 +1098,22 @@ static WRITE8_HANDLER( reel_scrollattr_w ) } else if (offset<0x80) { - state->m_reel2_scroll[offset&0x3f] = data; + m_reel2_scroll[offset&0x3f] = data; } else if (offset<0xc0) { - state->m_reel1_scroll[offset&0x3f] = data; + m_reel1_scroll[offset&0x3f] = data; } else { - state->m_reel3_scroll[offset&0x3f] = data; + m_reel3_scroll[offset&0x3f] = data; } } } -static READ8_HANDLER( reel_scrollattr_r ) +READ8_MEMBER(subsino_state::reel_scrollattr_r) { - subsino_state *state = space->machine().driver_data<subsino_state>(); - return state->m_reel1_attr[offset]; + return m_reel1_attr[offset]; } static ADDRESS_MAP_START( stisub_map, AS_PROGRAM, 8, subsino_state ) @@ -1127,27 +1129,27 @@ static ADDRESS_MAP_START( stisub_map, AS_PROGRAM, 8, subsino_state ) AM_RANGE( 0x0d005, 0x0d005 ) AM_READ_PORT( "INB" ) AM_RANGE( 0x0d006, 0x0d006 ) AM_READ_PORT( "INA" ) - AM_RANGE( 0x0d008, 0x0d008 ) AM_WRITE_LEGACY(stisub_out_c_w ) + AM_RANGE( 0x0d008, 0x0d008 ) AM_WRITE(stisub_out_c_w ) - AM_RANGE( 0x0d009, 0x0d009 ) AM_WRITE_LEGACY(subsino_out_b_w ) - AM_RANGE( 0x0d00a, 0x0d00a ) AM_WRITE_LEGACY(subsino_out_a_w ) + AM_RANGE( 0x0d009, 0x0d009 ) AM_WRITE(subsino_out_b_w ) + AM_RANGE( 0x0d00a, 0x0d00a ) AM_WRITE(subsino_out_a_w ) AM_RANGE( 0x0d00c, 0x0d00c ) AM_READ_PORT( "INC" ) - AM_RANGE( 0x0d010, 0x0d013 ) AM_WRITE_LEGACY(colordac_w) + AM_RANGE( 0x0d010, 0x0d013 ) AM_WRITE(colordac_w) AM_RANGE( 0x0d016, 0x0d017 ) AM_DEVWRITE_LEGACY("ymsnd", ym3812_w ) -// AM_RANGE( 0x0d01b, 0x0d01b ) AM_WRITE_LEGACY(subsino_tiles_offset_w ) +// AM_RANGE( 0x0d01b, 0x0d01b ) AM_WRITE(subsino_tiles_offset_w ) - AM_RANGE( 0x0e000, 0x0e7ff ) AM_RAM_WRITE_LEGACY(subsino_colorram_w ) AM_BASE(m_colorram ) - AM_RANGE( 0x0e800, 0x0efff ) AM_RAM_WRITE_LEGACY(subsino_videoram_w ) AM_BASE(m_videoram ) + AM_RANGE( 0x0e000, 0x0e7ff ) AM_RAM_WRITE(subsino_colorram_w ) AM_BASE(m_colorram ) + AM_RANGE( 0x0e800, 0x0efff ) AM_RAM_WRITE(subsino_videoram_w ) AM_BASE(m_videoram ) - AM_RANGE( 0xf000, 0xf7ff ) AM_READWRITE_LEGACY(reel_scrollattr_r, reel_scrollattr_w) + AM_RANGE( 0xf000, 0xf7ff ) AM_READWRITE(reel_scrollattr_r, reel_scrollattr_w) - AM_RANGE( 0xf800, 0xf9ff ) AM_RAM_WRITE_LEGACY(subsino_reel1_ram_w) AM_BASE(m_reel1_ram) - AM_RANGE( 0xfa00, 0xfbff ) AM_RAM_WRITE_LEGACY(subsino_reel2_ram_w) AM_BASE(m_reel2_ram) - AM_RANGE( 0xfc00, 0xfdff ) AM_RAM_WRITE_LEGACY(subsino_reel3_ram_w) AM_BASE(m_reel3_ram) + AM_RANGE( 0xf800, 0xf9ff ) AM_RAM_WRITE(subsino_reel1_ram_w) AM_BASE(m_reel1_ram) + AM_RANGE( 0xfa00, 0xfbff ) AM_RAM_WRITE(subsino_reel2_ram_w) AM_BASE(m_reel2_ram) + AM_RANGE( 0xfc00, 0xfdff ) AM_RAM_WRITE(subsino_reel3_ram_w) AM_BASE(m_reel3_ram) ADDRESS_MAP_END @@ -1173,7 +1175,7 @@ static ADDRESS_MAP_START( mtrainnv_map, AS_PROGRAM, 8, subsino_state ) // AM_RANGE( 0x0d00b, 0x0d00b ) AM_WRITE AM_RANGE( 0x0d00c, 0x0d00c ) AM_READ_PORT( "INC" ) - AM_RANGE( 0x0d010, 0x0d013 ) AM_WRITE_LEGACY(colordac_w) + AM_RANGE( 0x0d010, 0x0d013 ) AM_WRITE(colordac_w) // AM_RANGE( 0x0d012, 0x0d012 ) AM_WRITE @@ -1181,14 +1183,14 @@ static ADDRESS_MAP_START( mtrainnv_map, AS_PROGRAM, 8, subsino_state ) // AM_RANGE( 0x0d018, 0x0d018 ) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE( 0x0e000, 0x0e7ff ) AM_RAM_WRITE_LEGACY(subsino_colorram_w ) AM_BASE(m_colorram ) - AM_RANGE( 0x0e800, 0x0efff ) AM_RAM_WRITE_LEGACY(subsino_videoram_w ) AM_BASE(m_videoram ) + AM_RANGE( 0x0e000, 0x0e7ff ) AM_RAM_WRITE(subsino_colorram_w ) AM_BASE(m_colorram ) + AM_RANGE( 0x0e800, 0x0efff ) AM_RAM_WRITE(subsino_videoram_w ) AM_BASE(m_videoram ) - AM_RANGE( 0xf000, 0xf7ff ) AM_READWRITE_LEGACY(reel_scrollattr_r, reel_scrollattr_w) + AM_RANGE( 0xf000, 0xf7ff ) AM_READWRITE(reel_scrollattr_r, reel_scrollattr_w) - AM_RANGE( 0xf800, 0xf9ff ) AM_RAM_WRITE_LEGACY(subsino_reel1_ram_w) AM_BASE(m_reel1_ram) - AM_RANGE( 0xfa00, 0xfbff ) AM_RAM_WRITE_LEGACY(subsino_reel2_ram_w) AM_BASE(m_reel2_ram) - AM_RANGE( 0xfc00, 0xfdff ) AM_RAM_WRITE_LEGACY(subsino_reel3_ram_w) AM_BASE(m_reel3_ram) + AM_RANGE( 0xf800, 0xf9ff ) AM_RAM_WRITE(subsino_reel1_ram_w) AM_BASE(m_reel1_ram) + AM_RANGE( 0xfa00, 0xfbff ) AM_RAM_WRITE(subsino_reel2_ram_w) AM_BASE(m_reel2_ram) + AM_RANGE( 0xfc00, 0xfdff ) AM_RAM_WRITE(subsino_reel3_ram_w) AM_BASE(m_reel3_ram) ADDRESS_MAP_END diff --git a/src/mame/drivers/summit.c b/src/mame/drivers/summit.c index d5f4a3c2495..b1ba6146414 100644 --- a/src/mame/drivers/summit.c +++ b/src/mame/drivers/summit.c @@ -27,6 +27,7 @@ public: UINT8 *m_vram; UINT8 *m_attr; + DECLARE_WRITE8_MEMBER(out_w); }; @@ -56,9 +57,8 @@ static SCREEN_UPDATE_IND16(summit) return 0; } -static WRITE8_HANDLER( out_w ) +WRITE8_MEMBER(summit_state::out_w) { - } @@ -69,10 +69,10 @@ static ADDRESS_MAP_START( mainmap, AS_PROGRAM, 8, summit_state ) AM_RANGE(0x2800, 0x2bff) AM_RAM AM_BASE(m_vram) AM_RANGE(0x3800, 0x3800) AM_READ_PORT("IN0") -// AM_RANGE(0x3880, 0x3880) AM_WRITE_LEGACY(out_w) - AM_RANGE(0x3900, 0x3900) AM_READ_PORT("IN1") AM_WRITE_LEGACY(out_w) // lamps -// AM_RANGE(0x3980, 0x3980) AM_WRITE_LEGACY(out_w) - AM_RANGE(0x3a00, 0x3a00) AM_READ_PORT("IN2") //AM_WRITE_LEGACY(out_w) +// AM_RANGE(0x3880, 0x3880) AM_WRITE(out_w) + AM_RANGE(0x3900, 0x3900) AM_READ_PORT("IN1") AM_WRITE(out_w) // lamps +// AM_RANGE(0x3980, 0x3980) AM_WRITE(out_w) + AM_RANGE(0x3a00, 0x3a00) AM_READ_PORT("IN2") //AM_WRITE(out_w) AM_RANGE(0x3b00, 0x3b00) AM_READ_PORT("IN3") AM_RANGE(0x7000, 0x71ff) AM_RAM diff --git a/src/mame/drivers/supdrapo.c b/src/mame/drivers/supdrapo.c index 07c7869d22b..79b9207428a 100644 --- a/src/mame/drivers/supdrapo.c +++ b/src/mame/drivers/supdrapo.c @@ -75,6 +75,12 @@ public: UINT8 *m_col_line; UINT8 *m_videoram; UINT8 m_wdog; + DECLARE_READ8_MEMBER(sdpoker_rng_r); + DECLARE_WRITE8_MEMBER(wdog8000_w); + DECLARE_WRITE8_MEMBER(debug8004_w); + DECLARE_WRITE8_MEMBER(debug7c00_w); + DECLARE_WRITE8_MEMBER(coinin_w); + DECLARE_WRITE8_MEMBER(payout_w); }; @@ -147,12 +153,12 @@ static PALETTE_INIT( sdpoker ) R/W Handlers **********************************************************************/ -static READ8_HANDLER( sdpoker_rng_r ) +READ8_MEMBER(supdrapo_state::sdpoker_rng_r) { - return space->machine().rand(); + return machine().rand(); } -static WRITE8_HANDLER( wdog8000_w ) +WRITE8_MEMBER(supdrapo_state::wdog8000_w) { /* Kind of state watchdog alternating 0x00 & 0x01 writes. Used when exit the test mode (writes 2 consecutive 0's). @@ -179,19 +185,19 @@ static WRITE8_HANDLER( wdog8000_w ) Watchdog: 00 */ - supdrapo_state *state = space->machine().driver_data<supdrapo_state>(); - if (state->m_wdog == data) + + if (m_wdog == data) { watchdog_reset_w(space, 0, 0); /* Reset */ } - state->m_wdog = data; + m_wdog = data; // logerror("Watchdog: %02X\n", data); } -static WRITE8_HANDLER( debug8004_w ) +WRITE8_MEMBER(supdrapo_state::debug8004_w) { /* Writes 0x00 each time the machine is initialized */ @@ -199,7 +205,7 @@ static WRITE8_HANDLER( debug8004_w ) // popmessage("written : %02X", data); } -static WRITE8_HANDLER( debug7c00_w ) +WRITE8_MEMBER(supdrapo_state::debug7c00_w) { /* This one write 0's constantly when the input test mode is running */ logerror("debug7c00: %02X\n", data); @@ -210,14 +216,14 @@ static WRITE8_HANDLER( debug7c00_w ) Coin I/O Counters **********************************************************************/ -static WRITE8_HANDLER( coinin_w ) +WRITE8_MEMBER(supdrapo_state::coinin_w) { - coin_counter_w(space->machine(), 0, data & 0x01); /* Coin In */ + coin_counter_w(machine(), 0, data & 0x01); /* Coin In */ } -static WRITE8_HANDLER( payout_w ) +WRITE8_MEMBER(supdrapo_state::payout_w) { - coin_counter_w(space->machine(), 1, data & 0x01); /* Payout */ + coin_counter_w(machine(), 1, data & 0x01); /* Payout */ } @@ -250,16 +256,16 @@ static ADDRESS_MAP_START( sdpoker_mem, AS_PROGRAM, 8, supdrapo_state ) AM_RANGE(0x6800, 0x6bff) AM_RAM AM_BASE(m_videoram) AM_RANGE(0x6c00, 0x6fff) AM_RAM AM_BASE(m_char_bank) AM_RANGE(0x7000, 0x7bff) AM_RAM //$7600 seems watchdog - AM_RANGE(0x7c00, 0x7c00) AM_WRITE_LEGACY(debug7c00_w) - AM_RANGE(0x8000, 0x8000) AM_READ_PORT("IN4") AM_WRITE_LEGACY(wdog8000_w) + AM_RANGE(0x7c00, 0x7c00) AM_WRITE(debug7c00_w) + AM_RANGE(0x8000, 0x8000) AM_READ_PORT("IN4") AM_WRITE(wdog8000_w) AM_RANGE(0x8001, 0x8001) AM_READ_PORT("IN0") - AM_RANGE(0x8002, 0x8002) AM_READ_PORT("IN1") AM_WRITE_LEGACY(payout_w) - AM_RANGE(0x8003, 0x8003) AM_READ_PORT("IN2") AM_WRITE_LEGACY(coinin_w) - AM_RANGE(0x8004, 0x8004) AM_READ_PORT("IN3") AM_WRITE_LEGACY(debug8004_w) + AM_RANGE(0x8002, 0x8002) AM_READ_PORT("IN1") AM_WRITE(payout_w) + AM_RANGE(0x8003, 0x8003) AM_READ_PORT("IN2") AM_WRITE(coinin_w) + AM_RANGE(0x8004, 0x8004) AM_READ_PORT("IN3") AM_WRITE(debug8004_w) AM_RANGE(0x8005, 0x8005) AM_READ_PORT("SW1") AM_RANGE(0x8006, 0x8006) AM_READ_PORT("SW2") AM_RANGE(0x9000, 0x90ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x9400, 0x9400) AM_READ_LEGACY(sdpoker_rng_r) + AM_RANGE(0x9400, 0x9400) AM_READ(sdpoker_rng_r) AM_RANGE(0x9800, 0x9801) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_address_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/superdq.c b/src/mame/drivers/superdq.c index d3264cffaa4..0311f94aa43 100644 --- a/src/mame/drivers/superdq.c +++ b/src/mame/drivers/superdq.c @@ -41,6 +41,10 @@ public: UINT8 *m_videoram; tilemap_t *m_tilemap; int m_color_bank; + DECLARE_WRITE8_MEMBER(superdq_videoram_w); + DECLARE_WRITE8_MEMBER(superdq_io_w); + DECLARE_READ8_MEMBER(superdq_ld_r); + DECLARE_WRITE8_MEMBER(superdq_ld_w); }; static TILE_GET_INFO( get_tile_info ) @@ -139,35 +143,33 @@ static INTERRUPT_GEN( superdq_vblank ) device_set_input_line(device, 0, ASSERT_LINE); } -static WRITE8_HANDLER( superdq_videoram_w ) +WRITE8_MEMBER(superdq_state::superdq_videoram_w) { - superdq_state *state = space->machine().driver_data<superdq_state>(); - state->m_videoram[offset] = data; - state->m_tilemap->mark_tile_dirty(offset); + m_videoram[offset] = data; + m_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( superdq_io_w ) +WRITE8_MEMBER(superdq_state::superdq_io_w) { - superdq_state *state = space->machine().driver_data<superdq_state>(); int i; static const UINT8 black_color_entries[] = {7,15,16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}; if ( data & 0x40 ) /* bit 6 = irqack */ - cputag_set_input_line(space->machine(), "maincpu", 0, CLEAR_LINE); + cputag_set_input_line(machine(), "maincpu", 0, CLEAR_LINE); - coin_counter_w( space->machine(), 0, data & 0x08 ); - coin_counter_w( space->machine(), 1, data & 0x04 ); + coin_counter_w( machine(), 0, data & 0x08 ); + coin_counter_w( machine(), 1, data & 0x04 ); - state->m_color_bank = ( data & 2 ) ? 1 : 0; + m_color_bank = ( data & 2 ) ? 1 : 0; for( i = 0; i < ARRAY_LENGTH( black_color_entries ); i++ ) { int index = black_color_entries[i]; if (data & 0x80) - palette_set_color(space->machine(), index, palette_get_color(space->machine(), index) & MAKE_ARGB(0,255,255,255)); + palette_set_color(machine(), index, palette_get_color(machine(), index) & MAKE_ARGB(0,255,255,255)); else - palette_set_color(space->machine(), index, palette_get_color(space->machine(), index) | MAKE_ARGB(255,0,0,0)); + palette_set_color(machine(), index, palette_get_color(machine(), index) | MAKE_ARGB(255,0,0,0)); } /* @@ -177,18 +179,16 @@ static WRITE8_HANDLER( superdq_io_w ) */ } -static READ8_HANDLER( superdq_ld_r ) +READ8_MEMBER(superdq_state::superdq_ld_r) { - superdq_state *state = space->machine().driver_data<superdq_state>(); - return state->m_ld_in_latch; + return m_ld_in_latch; } -static WRITE8_HANDLER( superdq_ld_w ) +WRITE8_MEMBER(superdq_state::superdq_ld_w) { - superdq_state *state = space->machine().driver_data<superdq_state>(); - state->m_ld_out_latch = data; + m_ld_out_latch = data; } @@ -202,17 +202,17 @@ static WRITE8_HANDLER( superdq_ld_w ) static ADDRESS_MAP_START( superdq_map, AS_PROGRAM, 8, superdq_state ) AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x4000, 0x47ff) AM_RAM - AM_RANGE(0x5c00, 0x5fff) AM_RAM_WRITE_LEGACY(superdq_videoram_w) AM_BASE(m_videoram) + AM_RANGE(0x5c00, 0x5fff) AM_RAM_WRITE(superdq_videoram_w) AM_BASE(m_videoram) ADDRESS_MAP_END static ADDRESS_MAP_START( superdq_io, AS_IO, 8, superdq_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE_LEGACY(superdq_ld_w) + AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(superdq_ld_w) AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_RANGE(0x02, 0x02) AM_READ_PORT("DSW1") AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW2") - AM_RANGE(0x04, 0x04) AM_READ_LEGACY(superdq_ld_r) AM_DEVWRITE_LEGACY("snsnd", sn76496_w) - AM_RANGE(0x08, 0x08) AM_WRITE_LEGACY(superdq_io_w) + AM_RANGE(0x04, 0x04) AM_READ(superdq_ld_r) AM_DEVWRITE_LEGACY("snsnd", sn76496_w) + AM_RANGE(0x08, 0x08) AM_WRITE(superdq_io_w) AM_RANGE(0x0c, 0x0d) AM_NOP /* HD46505S */ ADDRESS_MAP_END diff --git a/src/mame/drivers/superwng.c b/src/mame/drivers/superwng.c index 8677b64caa1..6eddc17bd4a 100644 --- a/src/mame/drivers/superwng.c +++ b/src/mame/drivers/superwng.c @@ -50,6 +50,17 @@ public: tilemap_t * m_bg_tilemap; tilemap_t * m_fg_tilemap; + DECLARE_WRITE8_MEMBER(superwng_nmi_enable_w); + DECLARE_WRITE8_MEMBER(superwng_sound_interrupt_w); + DECLARE_WRITE8_MEMBER(superwng_sound_nmi_clear_w); + DECLARE_WRITE8_MEMBER(superwng_bg_vram_w); + DECLARE_WRITE8_MEMBER(superwng_bg_cram_w); + DECLARE_WRITE8_MEMBER(superwng_fg_vram_w); + DECLARE_WRITE8_MEMBER(superwng_fg_cram_w); + DECLARE_WRITE8_MEMBER(superwng_tilebank_w); + DECLARE_WRITE8_MEMBER(superwng_flip_screen_w); + DECLARE_WRITE8_MEMBER(superwng_cointcnt1_w); + DECLARE_WRITE8_MEMBER(superwng_cointcnt2_w); }; static TILE_GET_INFO( get_bg_tile_info ) @@ -189,10 +200,9 @@ PALETTE_INIT( superwng ) } } -static WRITE8_HANDLER( superwng_nmi_enable_w ) +WRITE8_MEMBER(superwng_state::superwng_nmi_enable_w) { - superwng_state *state = space->machine().driver_data<superwng_state>(); - state->m_nmi_enable = data; + m_nmi_enable = data; } static INTERRUPT_GEN( superwng_nmi_interrupt ) @@ -203,11 +213,10 @@ static INTERRUPT_GEN( superwng_nmi_interrupt ) nmi_line_pulse(device); } -static WRITE8_HANDLER( superwng_sound_interrupt_w ) +WRITE8_MEMBER(superwng_state::superwng_sound_interrupt_w) { - superwng_state *state = space->machine().driver_data<superwng_state>(); - state->m_sound_byte = data; - device_set_input_line(state->m_audiocpu, 0, ASSERT_LINE); + m_sound_byte = data; + device_set_input_line(m_audiocpu, 0, ASSERT_LINE); } static READ8_DEVICE_HANDLER( superwng_sound_byte_r ) @@ -217,10 +226,9 @@ static READ8_DEVICE_HANDLER( superwng_sound_byte_r ) return state->m_sound_byte; } -static WRITE8_HANDLER( superwng_sound_nmi_clear_w ) +WRITE8_MEMBER(superwng_state::superwng_sound_nmi_clear_w) { - superwng_state *state = space->machine().driver_data<superwng_state>(); - device_set_input_line(state->m_audiocpu, INPUT_LINE_NMI, CLEAR_LINE); + device_set_input_line(m_audiocpu, INPUT_LINE_NMI, CLEAR_LINE); } static INTERRUPT_GEN( superwng_sound_nmi_assert ) @@ -230,88 +238,82 @@ static INTERRUPT_GEN( superwng_sound_nmi_assert ) device_set_input_line(device, INPUT_LINE_NMI, ASSERT_LINE); } -static WRITE8_HANDLER(superwng_bg_vram_w) +WRITE8_MEMBER(superwng_state::superwng_bg_vram_w) { - superwng_state *state = space->machine().driver_data<superwng_state>(); - state->m_videoram_bg[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_videoram_bg[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER(superwng_bg_cram_w) +WRITE8_MEMBER(superwng_state::superwng_bg_cram_w) { - superwng_state *state = space->machine().driver_data<superwng_state>(); - state->m_colorram_bg[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_colorram_bg[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER(superwng_fg_vram_w) +WRITE8_MEMBER(superwng_state::superwng_fg_vram_w) { - superwng_state *state = space->machine().driver_data<superwng_state>(); - state->m_videoram_fg[offset] = data; - state->m_fg_tilemap->mark_tile_dirty(offset); + m_videoram_fg[offset] = data; + m_fg_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER(superwng_fg_cram_w) +WRITE8_MEMBER(superwng_state::superwng_fg_cram_w) { - superwng_state *state = space->machine().driver_data<superwng_state>(); - state->m_colorram_fg[offset] = data; - state->m_fg_tilemap->mark_tile_dirty(offset); + m_colorram_fg[offset] = data; + m_fg_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER(superwng_tilebank_w) +WRITE8_MEMBER(superwng_state::superwng_tilebank_w) { - superwng_state *state = space->machine().driver_data<superwng_state>(); - state->m_tile_bank = data; - state->m_bg_tilemap->mark_all_dirty(); - state->m_fg_tilemap->mark_all_dirty(); + m_tile_bank = data; + m_bg_tilemap->mark_all_dirty(); + m_fg_tilemap->mark_all_dirty(); } -static WRITE8_HANDLER( superwng_flip_screen_w ) +WRITE8_MEMBER(superwng_state::superwng_flip_screen_w) { - superwng_state *state = space->machine().driver_data<superwng_state>(); - flip_screen_set(space->machine(), ~data & 0x01); - state->m_bg_tilemap->mark_all_dirty(); - state->m_fg_tilemap->mark_all_dirty(); + flip_screen_set(machine(), ~data & 0x01); + m_bg_tilemap->mark_all_dirty(); + m_fg_tilemap->mark_all_dirty(); } -static WRITE8_HANDLER(superwng_cointcnt1_w) +WRITE8_MEMBER(superwng_state::superwng_cointcnt1_w) { - coin_counter_w(space->machine(), 0, data); + coin_counter_w(machine(), 0, data); } -static WRITE8_HANDLER(superwng_cointcnt2_w) +WRITE8_MEMBER(superwng_state::superwng_cointcnt2_w) { - coin_counter_w(space->machine(), 1, data); + coin_counter_w(machine(), 1, data); } static ADDRESS_MAP_START( superwng_map, AS_PROGRAM, 8, superwng_state ) AM_RANGE(0x0000, 0x6fff) AM_ROM AM_RANGE(0x7000, 0x7fff) AM_RAM - AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE_LEGACY(superwng_bg_vram_w) AM_BASE(m_videoram_bg) - AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE_LEGACY(superwng_fg_vram_w) AM_BASE(m_videoram_fg) - AM_RANGE(0x8800, 0x8bff) AM_RAM_WRITE_LEGACY(superwng_bg_cram_w) AM_BASE(m_colorram_bg) - AM_RANGE(0x8c00, 0x8fff) AM_RAM_WRITE_LEGACY(superwng_fg_cram_w) AM_BASE(m_colorram_fg) + AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(superwng_bg_vram_w) AM_BASE(m_videoram_bg) + AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(superwng_fg_vram_w) AM_BASE(m_videoram_fg) + AM_RANGE(0x8800, 0x8bff) AM_RAM_WRITE(superwng_bg_cram_w) AM_BASE(m_colorram_bg) + AM_RANGE(0x8c00, 0x8fff) AM_RAM_WRITE(superwng_fg_cram_w) AM_BASE(m_colorram_fg) AM_RANGE(0x9800, 0x99ff) AM_RAM //collision map AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1") AM_RANGE(0xa000, 0xa000) AM_WRITENOP //unknown AM_RANGE(0xa080, 0xa080) AM_READ_PORT("P2") AM_RANGE(0xa100, 0xa100) AM_READ_PORT("DSW1") - AM_RANGE(0xa100, 0xa100) AM_WRITE_LEGACY(superwng_sound_interrupt_w) + AM_RANGE(0xa100, 0xa100) AM_WRITE(superwng_sound_interrupt_w) AM_RANGE(0xa180, 0xa180) AM_READ_PORT("DSW2") AM_RANGE(0xa180, 0xa180) AM_WRITENOP //watchdog ? int ack ? - AM_RANGE(0xa181, 0xa181) AM_WRITE_LEGACY(superwng_nmi_enable_w) - AM_RANGE(0xa182, 0xa182) AM_WRITE_LEGACY(superwng_tilebank_w) - AM_RANGE(0xa183, 0xa183) AM_WRITE_LEGACY(superwng_flip_screen_w) - AM_RANGE(0xa184, 0xa184) AM_WRITE_LEGACY(superwng_cointcnt1_w) + AM_RANGE(0xa181, 0xa181) AM_WRITE(superwng_nmi_enable_w) + AM_RANGE(0xa182, 0xa182) AM_WRITE(superwng_tilebank_w) + AM_RANGE(0xa183, 0xa183) AM_WRITE(superwng_flip_screen_w) + AM_RANGE(0xa184, 0xa184) AM_WRITE(superwng_cointcnt1_w) AM_RANGE(0xa185, 0xa185) AM_WRITENOP //unknown , always(?) 0 - AM_RANGE(0xa186, 0xa186) AM_WRITE_LEGACY(superwng_cointcnt2_w) + AM_RANGE(0xa186, 0xa186) AM_WRITE(superwng_cointcnt2_w) AM_RANGE(0xa187, 0xa187) AM_WRITENOP //unknown , always(?) 0 ADDRESS_MAP_END static ADDRESS_MAP_START( superwng_sound_map, AS_PROGRAM, 8, superwng_state ) AM_RANGE(0x0000, 0x1fff) AM_ROM AM_RANGE(0x2000, 0x23ff) AM_RAM - AM_RANGE(0x3000, 0x3000) AM_WRITE_LEGACY(superwng_sound_nmi_clear_w) + AM_RANGE(0x3000, 0x3000) AM_WRITE(superwng_sound_nmi_clear_w) AM_RANGE(0x4000, 0x4000) AM_DEVREADWRITE_LEGACY("ay1", ay8910_r, ay8910_data_w) AM_RANGE(0x5000, 0x5000) AM_DEVWRITE_LEGACY("ay1", ay8910_address_w) AM_RANGE(0x6000, 0x6000) AM_DEVREADWRITE_LEGACY("ay2", ay8910_r, ay8910_data_w) diff --git a/src/mame/drivers/suprgolf.c b/src/mame/drivers/suprgolf.c index 832bb2eab17..c80ff24476b 100644 --- a/src/mame/drivers/suprgolf.c +++ b/src/mame/drivers/suprgolf.c @@ -47,6 +47,13 @@ public: UINT8 m_palette_switch; UINT8 m_bg_vreg_test; UINT8 m_toggle; + DECLARE_READ8_MEMBER(suprgolf_videoram_r); + DECLARE_WRITE8_MEMBER(suprgolf_videoram_w); + DECLARE_READ8_MEMBER(suprgolf_bg_vram_r); + DECLARE_WRITE8_MEMBER(suprgolf_bg_vram_w); + DECLARE_WRITE8_MEMBER(suprgolf_pen_w); + DECLARE_WRITE8_MEMBER(adpcm_data_w); + DECLARE_WRITE8_MEMBER(rom2_bank_select_w); }; static TILE_GET_INFO( get_tile_info ) @@ -120,37 +127,35 @@ static SCREEN_UPDATE_IND16( suprgolf ) return 0; } -static READ8_HANDLER( suprgolf_videoram_r ) +READ8_MEMBER(suprgolf_state::suprgolf_videoram_r) { - suprgolf_state *state = space->machine().driver_data<suprgolf_state>(); - if (state->m_palette_switch) - return state->m_paletteram[offset]; + if (m_palette_switch) + return m_paletteram[offset]; else - return state->m_videoram[offset]; + return m_videoram[offset]; } -static WRITE8_HANDLER( suprgolf_videoram_w ) +WRITE8_MEMBER(suprgolf_state::suprgolf_videoram_w) { - suprgolf_state *state = space->machine().driver_data<suprgolf_state>(); - if(state->m_palette_switch) + if(m_palette_switch) { int r,g,b,datax; - state->m_paletteram[offset] = data; + m_paletteram[offset] = data; offset>>=1; - datax = state->m_paletteram[offset*2] + 256*state->m_paletteram[offset*2 + 1]; + datax = m_paletteram[offset*2] + 256*m_paletteram[offset*2 + 1]; b = (datax & 0x8000) ? 0 : ((datax)&0x001f)>>0; g = (datax & 0x8000) ? 0 : ((datax)&0x03e0)>>5; r = (datax & 0x8000) ? 0 : ((datax)&0x7c00)>>10; - palette_set_color_rgb(space->machine(), offset, pal5bit(r), pal5bit(g), pal5bit(b)); + palette_set_color_rgb(machine(), offset, pal5bit(r), pal5bit(g), pal5bit(b)); } else { - state->m_videoram[offset] = data; - state->m_tilemap->mark_tile_dirty((offset & 0x7fe) >> 1); + m_videoram[offset] = data; + m_tilemap->mark_tile_dirty((offset & 0x7fe) >> 1); } } @@ -178,16 +183,14 @@ static WRITE8_DEVICE_HANDLER( suprgolf_vregs_w ) // printf("Video regs with data %02x activated\n",data); } -static READ8_HANDLER( suprgolf_bg_vram_r ) +READ8_MEMBER(suprgolf_state::suprgolf_bg_vram_r) { - suprgolf_state *state = space->machine().driver_data<suprgolf_state>(); - return state->m_bg_vram[offset+state->m_bg_bank*0x2000]; + return m_bg_vram[offset+m_bg_bank*0x2000]; } -static WRITE8_HANDLER( suprgolf_bg_vram_w ) +WRITE8_MEMBER(suprgolf_state::suprgolf_bg_vram_w) { - suprgolf_state *state = space->machine().driver_data<suprgolf_state>(); UINT8 hi_nibble,lo_nibble; UINT8 hi_dirty_dot,lo_dirty_dot; // helpers @@ -198,51 +201,49 @@ static WRITE8_HANDLER( suprgolf_bg_vram_w ) if(hi_nibble == 0xf0) { - hi_nibble = state->m_bg_vram[offset+state->m_bg_bank*0x2000] & 0xf0; - if(!(state->m_vreg_pen & 0x80) && (!(state->m_bg_bank & 0x10))) + hi_nibble = m_bg_vram[offset+m_bg_bank*0x2000] & 0xf0; + if(!(m_vreg_pen & 0x80) && (!(m_bg_bank & 0x10))) hi_dirty_dot = 0; } if(lo_nibble == 0x0f) { - lo_nibble = state->m_bg_vram[offset+state->m_bg_bank*0x2000] & 0x0f; - if(!(state->m_vreg_pen & 0x80) && (!(state->m_bg_bank & 0x10))) + lo_nibble = m_bg_vram[offset+m_bg_bank*0x2000] & 0x0f; + if(!(m_vreg_pen & 0x80) && (!(m_bg_bank & 0x10))) lo_dirty_dot = 0; } - if(state->m_vreg_pen & 0x80 || state->m_bg_bank & 0x10) - state->m_bg_vram[offset+state->m_bg_bank*0x2000] = data; + if(m_vreg_pen & 0x80 || m_bg_bank & 0x10) + m_bg_vram[offset+m_bg_bank*0x2000] = data; else - state->m_bg_vram[offset+state->m_bg_bank*0x2000] = hi_nibble|lo_nibble; + m_bg_vram[offset+m_bg_bank*0x2000] = hi_nibble|lo_nibble; - if(state->m_bg_bank & 0x10) + if(m_bg_bank & 0x10) { if(hi_dirty_dot) - state->m_fg_fb[(offset+(state->m_bg_bank & 0x0f)*0x2000)*2+1] = (state->m_vreg_pen & 0x7f)<<4 | ((state->m_bg_vram[offset+state->m_bg_bank*0x2000] & 0xf0)>>4); + m_fg_fb[(offset+(m_bg_bank & 0x0f)*0x2000)*2+1] = (m_vreg_pen & 0x7f)<<4 | ((m_bg_vram[offset+m_bg_bank*0x2000] & 0xf0)>>4); if(lo_dirty_dot) - state->m_fg_fb[(offset+(state->m_bg_bank & 0x0f)*0x2000)*2+0] = (state->m_vreg_pen & 0x7f)<<4 | ((state->m_bg_vram[offset+state->m_bg_bank*0x2000] & 0x0f)>>0); + m_fg_fb[(offset+(m_bg_bank & 0x0f)*0x2000)*2+0] = (m_vreg_pen & 0x7f)<<4 | ((m_bg_vram[offset+m_bg_bank*0x2000] & 0x0f)>>0); } else { if(hi_dirty_dot) - state->m_bg_fb[(offset+(state->m_bg_bank & 0x0f)*0x2000)*2+1] = (state->m_vreg_pen & 0x7f)<<4 | ((state->m_bg_vram[offset+state->m_bg_bank*0x2000] & 0xf0)>>4); + m_bg_fb[(offset+(m_bg_bank & 0x0f)*0x2000)*2+1] = (m_vreg_pen & 0x7f)<<4 | ((m_bg_vram[offset+m_bg_bank*0x2000] & 0xf0)>>4); if(lo_dirty_dot) - state->m_bg_fb[(offset+(state->m_bg_bank & 0x0f)*0x2000)*2+0] = (state->m_vreg_pen & 0x7f)<<4 | ((state->m_bg_vram[offset+state->m_bg_bank*0x2000] & 0x0f)>>0); + m_bg_fb[(offset+(m_bg_bank & 0x0f)*0x2000)*2+0] = (m_vreg_pen & 0x7f)<<4 | ((m_bg_vram[offset+m_bg_bank*0x2000] & 0x0f)>>0); } } -static WRITE8_HANDLER( suprgolf_pen_w ) +WRITE8_MEMBER(suprgolf_state::suprgolf_pen_w) { - suprgolf_state *state = space->machine().driver_data<suprgolf_state>(); - state->m_vreg_pen = data; + m_vreg_pen = data; } -static WRITE8_HANDLER( adpcm_data_w ) +WRITE8_MEMBER(suprgolf_state::adpcm_data_w) { - suprgolf_state *state = space->machine().driver_data<suprgolf_state>(); - state->m_msm5205next = data; + m_msm5205next = data; } static READ8_DEVICE_HANDLER( rom_bank_select_r ) @@ -268,12 +269,12 @@ static WRITE8_DEVICE_HANDLER( rom_bank_select_w ) flip_screen_set(device->machine(), data & 0x80); } -static WRITE8_HANDLER( rom2_bank_select_w ) +WRITE8_MEMBER(suprgolf_state::rom2_bank_select_w) { - UINT8 *region_base = space->machine().region("user2")->base(); -// mame_printf_debug("ROM_BANK 0x4000 - %X @%X\n",data,cpu_get_previouspc(&space->device())); + UINT8 *region_base = machine().region("user2")->base(); +// mame_printf_debug("ROM_BANK 0x4000 - %X @%X\n",data,cpu_get_previouspc(&space.device())); - memory_set_bankptr(space->machine(), "bank1", region_base + (data&0x0f) * 0x4000); + memory_set_bankptr(machine(), "bank1", region_base + (data&0x0f) * 0x4000); if(data & 0xf0) printf("Rom bank select 2 with data %02x activated\n",data); @@ -302,11 +303,11 @@ static READ8_DEVICE_HANDLER( p2_r ) static ADDRESS_MAP_START( suprgolf_map, AS_PROGRAM, 8, suprgolf_state ) AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x4000, 0x4000) AM_WRITE_LEGACY(rom2_bank_select_w ) + AM_RANGE(0x4000, 0x4000) AM_WRITE(rom2_bank_select_w ) AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2") - AM_RANGE(0xc000, 0xdfff) AM_READWRITE_LEGACY(suprgolf_bg_vram_r, suprgolf_bg_vram_w ) // banked background vram - AM_RANGE(0xe000, 0xefff) AM_READWRITE_LEGACY(suprgolf_videoram_r, suprgolf_videoram_w ) AM_BASE(m_videoram) //foreground vram + paletteram - AM_RANGE(0xf000, 0xf000) AM_WRITE_LEGACY(suprgolf_pen_w ) + AM_RANGE(0xc000, 0xdfff) AM_READWRITE(suprgolf_bg_vram_r, suprgolf_bg_vram_w ) // banked background vram + AM_RANGE(0xe000, 0xefff) AM_READWRITE(suprgolf_videoram_r, suprgolf_videoram_w ) AM_BASE(m_videoram) //foreground vram + paletteram + AM_RANGE(0xf000, 0xf000) AM_WRITE(suprgolf_pen_w ) AM_RANGE(0xf800, 0xffff) AM_RAM ADDRESS_MAP_END @@ -315,7 +316,7 @@ static ADDRESS_MAP_START( io_map, AS_IO, 8, suprgolf_state ) AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) AM_RANGE(0x08, 0x09) AM_DEVREADWRITE_LEGACY("ymsnd", ym2203_r, ym2203_w) - AM_RANGE(0x0c, 0x0c) AM_WRITE_LEGACY(adpcm_data_w) + AM_RANGE(0x0c, 0x0c) AM_WRITE(adpcm_data_w) ADDRESS_MAP_END static INPUT_PORTS_START( suprgolf ) diff --git a/src/mame/drivers/taitopjc.c b/src/mame/drivers/taitopjc.c index 5e1f57be8e6..fe4b222a411 100644 --- a/src/mame/drivers/taitopjc.c +++ b/src/mame/drivers/taitopjc.c @@ -71,6 +71,15 @@ public: taitopjc_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) { } + DECLARE_READ64_MEMBER(video_r); + DECLARE_WRITE64_MEMBER(video_w); + DECLARE_READ64_MEMBER(ppc_common_r); + DECLARE_READ64_MEMBER(dsp_r); + DECLARE_WRITE64_MEMBER(dsp_w); + DECLARE_READ8_MEMBER(tlcs_common_r); + DECLARE_WRITE8_MEMBER(tlcs_common_w); + DECLARE_READ8_MEMBER(tlcs_sound_r); + DECLARE_WRITE8_MEMBER(tlcs_sound_w); }; static VIDEO_START( taitopjc ) @@ -157,7 +166,7 @@ static void videochip_w(address_space *space, offs_t address, UINT32 data) } } -static READ64_HANDLER(video_r) +READ64_MEMBER(taitopjc_state::video_r) { UINT64 r = 0; @@ -165,21 +174,21 @@ static READ64_HANDLER(video_r) { if (ACCESSING_BITS_32_63) { - r |= (UINT64)(videochip_r(space, video_address)) << 32; + r |= (UINT64)(videochip_r(&space, video_address)) << 32; } } return r; } -static WRITE64_HANDLER(video_w) +WRITE64_MEMBER(taitopjc_state::video_w) { if (offset == 0) { if (ACCESSING_BITS_32_63) { //printf("Address %08X = %08X\n", video_address, (UINT32)(data >> 32)); - videochip_w(space, video_address, (UINT32)(data >> 32)); + videochip_w(&space, video_address, (UINT32)(data >> 32)); } } if (offset == 1) @@ -205,7 +214,7 @@ static UINT16 com_ram[256] = }; */ -static READ64_HANDLER(ppc_common_r) +READ64_MEMBER(taitopjc_state::ppc_common_r) { UINT64 r = 0; UINT32 address; @@ -247,7 +256,7 @@ static UINT32 dsp_value = 0x4f4b0000; static UINT16 dsp_ram[0x1000]; -static READ64_HANDLER(dsp_r) +READ64_MEMBER(taitopjc_state::dsp_r) { UINT64 r = 0; @@ -262,7 +271,7 @@ static READ64_HANDLER(dsp_r) return r; } -static WRITE64_HANDLER(dsp_w) +WRITE64_MEMBER(taitopjc_state::dsp_w) { logerror("dsp_w: %08X, %08X%08X, %08X%08X\n", offset, (UINT32)(data >> 32), (UINT32)(data), (UINT32)(mem_mask >> 32), (UINT32)(mem_mask)); @@ -311,9 +320,9 @@ static WRITE64_HANDLER(dsp_w) static ADDRESS_MAP_START( ppc603e_mem, AS_PROGRAM, 64, taitopjc_state ) AM_RANGE(0x00000000, 0x003fffff) AM_RAM // Work RAM - AM_RANGE(0x40000000, 0x4000000f) AM_READWRITE_LEGACY(video_r, video_w) - AM_RANGE(0x80000000, 0x80003fff) AM_READWRITE_LEGACY(dsp_r, dsp_w) - AM_RANGE(0xc0000000, 0xc000ffff) AM_READ_LEGACY(ppc_common_r) + AM_RANGE(0x40000000, 0x4000000f) AM_READWRITE(video_r, video_w) + AM_RANGE(0x80000000, 0x80003fff) AM_READWRITE(dsp_r, dsp_w) + AM_RANGE(0xc0000000, 0xc000ffff) AM_READ(ppc_common_r) AM_RANGE(0xff000000, 0xff01ffff) AM_ROM AM_REGION("user2", 0) AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("user1", 0) ADDRESS_MAP_END @@ -321,19 +330,19 @@ ADDRESS_MAP_END -static READ8_HANDLER(tlcs_common_r) +READ8_MEMBER(taitopjc_state::tlcs_common_r) { return common_ram[offset]; } -static WRITE8_HANDLER(tlcs_common_w) +WRITE8_MEMBER(taitopjc_state::tlcs_common_w) { // printf("tlcs_common_w: %08X, %02X\n", offset, data); common_ram[offset] = data; } -static READ8_HANDLER(tlcs_sound_r) +READ8_MEMBER(taitopjc_state::tlcs_sound_r) { if (offset == 0x17) { @@ -343,7 +352,7 @@ static READ8_HANDLER(tlcs_sound_r) return 0; } -static WRITE8_HANDLER(tlcs_sound_w) +WRITE8_MEMBER(taitopjc_state::tlcs_sound_w) { // printf("tlcs_sound_w: %08X, %02X\n", offset, data); } @@ -367,8 +376,8 @@ static WRITE8_HANDLER(tlcs_sound_w) static ADDRESS_MAP_START( tlcs900h_mem, AS_PROGRAM, 8, taitopjc_state ) AM_RANGE(0x010000, 0x02ffff) AM_RAM // Work RAM - AM_RANGE(0x040000, 0x0400ff) AM_READWRITE_LEGACY(tlcs_sound_r, tlcs_sound_w) - AM_RANGE(0x060000, 0x061fff) AM_READWRITE_LEGACY(tlcs_common_r, tlcs_common_w) + AM_RANGE(0x040000, 0x0400ff) AM_READWRITE(tlcs_sound_r, tlcs_sound_w) + AM_RANGE(0x060000, 0x061fff) AM_READWRITE(tlcs_common_r, tlcs_common_w) AM_RANGE(0xfc0000, 0xffffff) AM_ROM AM_REGION("io_cpu", 0) ADDRESS_MAP_END diff --git a/src/mame/drivers/taitotz.c b/src/mame/drivers/taitotz.c index 16fb6a09008..bce6e9dec75 100644 --- a/src/mame/drivers/taitotz.c +++ b/src/mame/drivers/taitotz.c @@ -99,6 +99,9 @@ public: UINT32 video_ram_ptr; bitmap_rgb32 framebuffer; + DECLARE_WRITE64_MEMBER(video_chip_w); + DECLARE_READ64_MEMBER(ppc_common_r); + DECLARE_WRITE64_MEMBER(ppc_common_w); }; @@ -234,11 +237,10 @@ static void video_reg_w(running_machine &machine, UINT32 reg, UINT32 data) // 0xB1000000, size 0x800000 : texture RAM -static WRITE64_HANDLER(video_chip_w) +WRITE64_MEMBER(taitotz_state::video_chip_w) { - taitotz_state *state = space->machine().driver_data<taitotz_state>(); - //printf("unk_w: %08X, %08X%08X, %08X%08X at %08X\n", offset, (UINT32)(data >> 32), (UINT32)(data), (UINT32)(mem_mask >> 32), (UINT32)(mem_mask), cpu_get_pc(space->cpu)); + //printf("unk_w: %08X, %08X%08X, %08X%08X at %08X\n", offset, (UINT32)(data >> 32), (UINT32)(data), (UINT32)(mem_mask >> 32), (UINT32)(mem_mask), cpu_get_pc(cpu)); UINT32 reg = offset * 8; UINT32 regdata; @@ -257,25 +259,25 @@ static WRITE64_HANDLER(video_chip_w) { case 0: { - video_reg_w(space->machine(), state->video_reg, regdata); + video_reg_w(machine(), video_reg, regdata); break; } case 0x8: { - state->video_reg = regdata; + video_reg = regdata; - if ((state->video_reg & 0xf0000000) == 0xb0000000) + if ((video_reg & 0xf0000000) == 0xb0000000) { - state->video_ram_ptr = 0; + video_ram_ptr = 0; - switch (state->video_reg & 0x0fffffff) + switch (video_reg & 0x0fffffff) { - case 0x0980000: state->video_ram = state->video_char_ram; break; - case 0x09c0000: state->video_ram = state->video_tile_ram; break; - case 0x1800000: state->video_ram = state->video_screen_ram; break; + case 0x0980000: video_ram = video_char_ram; break; + case 0x09c0000: video_ram = video_tile_ram; break; + case 0x1800000: video_ram = video_screen_ram; break; default: { - fatalerror("video_chip_ram sel %08X\n", state->video_reg & 0x0fffffff); + fatalerror("video_chip_ram sel %08X\n", video_reg & 0x0fffffff); break; } } @@ -290,7 +292,7 @@ static WRITE64_HANDLER(video_chip_w) } } -static READ64_HANDLER(ppc_common_r) +READ64_MEMBER(taitotz_state::ppc_common_r) { if (offset == 0x7ff) { @@ -303,11 +305,11 @@ static READ64_HANDLER(ppc_common_r) return 0; } -static WRITE64_HANDLER(ppc_common_w) +WRITE64_MEMBER(taitotz_state::ppc_common_w) { if (offset == 0x7ff) { - cputag_set_input_line(space->machine(), "maincpu", INPUT_LINE_IRQ0, CLEAR_LINE); + cputag_set_input_line(machine(), "maincpu", INPUT_LINE_IRQ0, CLEAR_LINE); } } @@ -328,9 +330,9 @@ static WRITE64_HANDLER(ppc_common_w) static ADDRESS_MAP_START( ppc603e_mem, AS_PROGRAM, 64, taitotz_state ) //AM_RANGE(0x00000000, 0x00000007) AM_RAM // Register/RAM access port? - Written 128k+256k times on boot //AM_RANGE(0x00000008, 0x0000000f) AM_RAM // Register/RAM address port? - AM_RANGE(0x00000000, 0x0000000f) AM_WRITE_LEGACY(video_chip_w) + AM_RANGE(0x00000000, 0x0000000f) AM_WRITE(video_chip_w) AM_RANGE(0x40000000, 0x400fffff) AM_RAM // Work RAM - AM_RANGE(0xa8000000, 0xa8003fff) AM_READWRITE_LEGACY(ppc_common_r, ppc_common_w) // Common RAM (with TLCS-900) + AM_RANGE(0xa8000000, 0xa8003fff) AM_READWRITE(ppc_common_r, ppc_common_w) // Common RAM (with TLCS-900) //AM_RANGE(0xa8003ff8, 0xa8003fff) AM_RAM // TLCS-900 related? AM_RANGE(0xac000000, 0xac0fffff) AM_ROM AM_REGION("user1", 0) AM_RANGE(0xfff00000, 0xffffffff) AM_ROM AM_REGION("user1", 0) diff --git a/src/mame/drivers/tapatune.c b/src/mame/drivers/tapatune.c index ac0b251b0c9..0ad79ab3438 100644 --- a/src/mame/drivers/tapatune.c +++ b/src/mame/drivers/tapatune.c @@ -55,62 +55,74 @@ public: UINT8 m_68k_to_z80_data; UINT16 m_bsmt_data; + DECLARE_WRITE16_MEMBER(palette_w); + DECLARE_READ16_MEMBER(read_from_z80); + DECLARE_WRITE16_MEMBER(write_to_z80); + DECLARE_READ16_MEMBER(irq_ack_r); + DECLARE_READ8_MEMBER(sound_irq_clear); + DECLARE_WRITE8_MEMBER(controls_mux); + DECLARE_READ8_MEMBER(controls_r); + DECLARE_WRITE8_MEMBER(write_index_to_68k); + DECLARE_WRITE8_MEMBER(write_data_to_68k); + DECLARE_READ8_MEMBER(read_index_from_68k); + DECLARE_READ8_MEMBER(read_data_from_68k); + DECLARE_READ8_MEMBER(bsmt_status_r); + DECLARE_WRITE8_MEMBER(bsmt_data_lo_w); + DECLARE_WRITE8_MEMBER(bsmt_data_hi_w); + DECLARE_WRITE8_MEMBER(bsmt_reg_w); }; -static WRITE16_HANDLER(palette_w) +WRITE16_MEMBER(tapatune_state::palette_w) { - tapatune_state *state = space->machine().driver_data<tapatune_state>(); //logerror("Palette write: offset = %02x, data = %04x, mask = %04x\n", offset, data, mem_mask ); switch(offset) { case 0: // address register - state->m_palette_write_address = ((data >> 8) & 0xff) * 3; + m_palette_write_address = ((data >> 8) & 0xff) * 3; break; case 1: // palette data - state->m_paletteram[state->m_palette_write_address++] = (data >> 8) & 0xff; + m_paletteram[m_palette_write_address++] = (data >> 8) & 0xff; break; case 2: // unknown? break; } } -static READ16_HANDLER(read_from_z80) +READ16_MEMBER(tapatune_state::read_from_z80) { - tapatune_state *state = space->machine().driver_data<tapatune_state>(); - //logerror("Reading data from Z80: index = %02x, data = %02x\n", state->m_z80_to_68k_index, state->m_z80_to_68k_data ); + //logerror("Reading data from Z80: index = %02x, data = %02x\n", m_z80_to_68k_index, m_z80_to_68k_data ); switch( offset ) { case 0: - return ((UINT16)state->m_z80_to_68k_data << 8) | (state->m_z80_to_68k_index); + return ((UINT16)m_z80_to_68k_data << 8) | (m_z80_to_68k_index); default: return 0; } } -static WRITE16_HANDLER(write_to_z80) +WRITE16_MEMBER(tapatune_state::write_to_z80) { - tapatune_state *state = space->machine().driver_data<tapatune_state>(); switch( offset ) { case 0: //if ( (data >> 8) & 0xff ) // logerror("Command to Z80: %04x\n", data); - state->m_68k_to_z80_index = data & 0xff; - state->m_68k_to_z80_data = (data >> 8) & 0xff; - cputag_set_input_line(space->machine(), "maincpu", 3, CLEAR_LINE); + m_68k_to_z80_index = data & 0xff; + m_68k_to_z80_data = (data >> 8) & 0xff; + cputag_set_input_line(machine(), "maincpu", 3, CLEAR_LINE); break; case 1: break; } } -static READ16_HANDLER(irq_ack_r) +READ16_MEMBER(tapatune_state::irq_ack_r) { - cputag_set_input_line(space->machine(), "maincpu", 2, CLEAR_LINE); + cputag_set_input_line(machine(), "maincpu", 2, CLEAR_LINE); return 0; } @@ -121,92 +133,84 @@ static ADDRESS_MAP_START( tapatune_map, AS_PROGRAM, 16, tapatune_state ) AM_RANGE(0x328000, 0x32ffff) AM_RAM AM_RANGE(0x330000, 0x337fff) AM_RAM // ram used as system video buffer AM_RANGE(0x338000, 0x33ffff) AM_RAM - AM_RANGE(0x400000, 0x400003) AM_READWRITE_LEGACY(read_from_z80, write_to_z80) - AM_RANGE(0x400010, 0x400011) AM_READ_LEGACY(irq_ack_r) - AM_RANGE(0x600000, 0x600005) AM_WRITE_LEGACY(palette_w) + AM_RANGE(0x400000, 0x400003) AM_READWRITE(read_from_z80, write_to_z80) + AM_RANGE(0x400010, 0x400011) AM_READ(irq_ack_r) + AM_RANGE(0x600000, 0x600005) AM_WRITE(palette_w) AM_RANGE(0x800000, 0x800001) AM_DEVWRITE8("crtc", mc6845_device, address_w, 0xff00) AM_RANGE(0x800002, 0x800003) AM_DEVREADWRITE8("crtc", mc6845_device, register_r, register_w, 0xff00) ADDRESS_MAP_END -static READ8_HANDLER(sound_irq_clear) +READ8_MEMBER(tapatune_state::sound_irq_clear) { - cputag_set_input_line(space->machine(), "soundcpu", 0, CLEAR_LINE); + cputag_set_input_line(machine(), "soundcpu", 0, CLEAR_LINE); return 0; } -static WRITE8_HANDLER(controls_mux) +WRITE8_MEMBER(tapatune_state::controls_mux) { - tapatune_state *state = space->machine().driver_data<tapatune_state>(); //logerror("Controls mux written with %02x\n", data); - state->m_controls_mux = data; + m_controls_mux = data; } -static READ8_HANDLER(controls_r) +READ8_MEMBER(tapatune_state::controls_r) { - tapatune_state *state = space->machine().driver_data<tapatune_state>(); - switch( state->m_controls_mux ) + switch( m_controls_mux ) { - case 0x07: return input_port_read(space->machine(), "DSW1"); - case 0x08: return input_port_read(space->machine(), "DSW2"); - case 0x09: return input_port_read(space->machine(), "IN0"); + case 0x07: return input_port_read(machine(), "DSW1"); + case 0x08: return input_port_read(machine(), "DSW2"); + case 0x09: return input_port_read(machine(), "IN0"); default: return 0xff; } } -static WRITE8_HANDLER(write_index_to_68k) +WRITE8_MEMBER(tapatune_state::write_index_to_68k) { - tapatune_state *state = space->machine().driver_data<tapatune_state>(); - state->m_z80_to_68k_index = data; + m_z80_to_68k_index = data; } -static WRITE8_HANDLER(write_data_to_68k) +WRITE8_MEMBER(tapatune_state::write_data_to_68k) { - tapatune_state *state = space->machine().driver_data<tapatune_state>(); - state->m_z80_to_68k_data = data; - //logerror("Writing data from Z80: index = %02x, data = %02x\n", state->m_z80_to_68k_index, state->m_z80_to_68k_data ); - cputag_set_input_line(space->machine(), "maincpu", 3, ASSERT_LINE); + m_z80_to_68k_data = data; + //logerror("Writing data from Z80: index = %02x, data = %02x\n", m_z80_to_68k_index, m_z80_to_68k_data ); + cputag_set_input_line(machine(), "maincpu", 3, ASSERT_LINE); } -static READ8_HANDLER(read_index_from_68k) +READ8_MEMBER(tapatune_state::read_index_from_68k) { - tapatune_state *state = space->machine().driver_data<tapatune_state>(); - return state->m_68k_to_z80_index; + return m_68k_to_z80_index; } -static READ8_HANDLER(read_data_from_68k) +READ8_MEMBER(tapatune_state::read_data_from_68k) { - tapatune_state *state = space->machine().driver_data<tapatune_state>(); - //if ( state->m_68k_to_z80_data != 0 ) - // logerror("Load command from 68K: %02x %02x\n", state->m_68k_to_z80_index, state->m_68k_to_z80_data); - return state->m_68k_to_z80_data; + //if ( m_68k_to_z80_data != 0 ) + // logerror("Load command from 68K: %02x %02x\n", m_68k_to_z80_index, m_68k_to_z80_data); + return m_68k_to_z80_data; } -static READ8_HANDLER(bsmt_status_r) +READ8_MEMBER(tapatune_state::bsmt_status_r) { - bsmt2000_device *bsmt = space->machine().device<bsmt2000_device>("bsmt"); + bsmt2000_device *bsmt = machine().device<bsmt2000_device>("bsmt"); return (bsmt->read_status() << 7) ^ 0x80; } -static WRITE8_HANDLER(bsmt_data_lo_w) +WRITE8_MEMBER(tapatune_state::bsmt_data_lo_w) { - tapatune_state *state = space->machine().driver_data<tapatune_state>(); - state->m_bsmt_data = (state->m_bsmt_data & 0xff00) | data; + m_bsmt_data = (m_bsmt_data & 0xff00) | data; } -static WRITE8_HANDLER(bsmt_data_hi_w) +WRITE8_MEMBER(tapatune_state::bsmt_data_hi_w) { - tapatune_state *state = space->machine().driver_data<tapatune_state>(); - state->m_bsmt_data = (state->m_bsmt_data & 0x00ff) | (data << 8); + m_bsmt_data = (m_bsmt_data & 0x00ff) | (data << 8); } -static WRITE8_HANDLER(bsmt_reg_w) +WRITE8_MEMBER(tapatune_state::bsmt_reg_w) { - bsmt2000_device *bsmt = space->machine().device<bsmt2000_device>("bsmt"); - tapatune_state *state = space->machine().driver_data<tapatune_state>(); + bsmt2000_device *bsmt = machine().device<bsmt2000_device>("bsmt"); - //logerror("Writing BSMT reg: %02X data: %04X\n", data, state->m_bsmt_data); + + //logerror("Writing BSMT reg: %02X data: %04X\n", data, m_bsmt_data); bsmt->write_reg(data); - bsmt->write_data(state->m_bsmt_data); + bsmt->write_data(m_bsmt_data); } static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, tapatune_state ) @@ -217,19 +221,19 @@ ADDRESS_MAP_END static ADDRESS_MAP_START ( sound_io_map, AS_IO, 8, tapatune_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE_LEGACY(bsmt_data_lo_w) - AM_RANGE(0x08, 0x08) AM_WRITE_LEGACY(bsmt_data_hi_w) - AM_RANGE(0x10, 0x10) AM_WRITE_LEGACY(bsmt_reg_w) - AM_RANGE(0x18, 0x18) AM_WRITE_LEGACY(controls_mux) - AM_RANGE(0x20, 0x20) AM_READ_LEGACY(sound_irq_clear) - AM_RANGE(0x28, 0x28) AM_READ_LEGACY(bsmt_status_r) - AM_RANGE(0x30, 0x30) AM_READ_LEGACY(controls_r) + AM_RANGE(0x00, 0x00) AM_WRITE(bsmt_data_lo_w) + AM_RANGE(0x08, 0x08) AM_WRITE(bsmt_data_hi_w) + AM_RANGE(0x10, 0x10) AM_WRITE(bsmt_reg_w) + AM_RANGE(0x18, 0x18) AM_WRITE(controls_mux) + AM_RANGE(0x20, 0x20) AM_READ(sound_irq_clear) + AM_RANGE(0x28, 0x28) AM_READ(bsmt_status_r) + AM_RANGE(0x30, 0x30) AM_READ(controls_r) AM_RANGE(0x38, 0x38) AM_READ_PORT("COINS") - AM_RANGE(0x60, 0x60) AM_WRITE_LEGACY(write_index_to_68k) - AM_RANGE(0x61, 0x61) AM_WRITE_LEGACY(write_data_to_68k) + AM_RANGE(0x60, 0x60) AM_WRITE(write_index_to_68k) + AM_RANGE(0x61, 0x61) AM_WRITE(write_data_to_68k) AM_RANGE(0x63, 0x63) AM_WRITENOP // leds? lamps? - AM_RANGE(0x68, 0x68) AM_READ_LEGACY(read_index_from_68k) - AM_RANGE(0x69, 0x69) AM_READ_LEGACY(read_data_from_68k) + AM_RANGE(0x68, 0x68) AM_READ(read_index_from_68k) + AM_RANGE(0x69, 0x69) AM_READ(read_data_from_68k) AM_RANGE(0x6b, 0x6b) AM_READ_PORT("BUTTONS") ADDRESS_MAP_END diff --git a/src/mame/drivers/tempest.c b/src/mame/drivers/tempest.c index 60b00b49048..f7b9750a11d 100644 --- a/src/mame/drivers/tempest.c +++ b/src/mame/drivers/tempest.c @@ -289,6 +289,9 @@ public: : driver_device(mconfig, type, tag) { } UINT8 m_player_select; + DECLARE_WRITE8_MEMBER(wdclr_w); + DECLARE_WRITE8_MEMBER(tempest_led_w); + DECLARE_WRITE8_MEMBER(tempest_coin_w); }; @@ -314,10 +317,10 @@ static MACHINE_START( tempest ) * *************************************/ -static WRITE8_HANDLER( wdclr_w ) +WRITE8_MEMBER(tempest_state::wdclr_w) { - cputag_set_input_line(space->machine(), "maincpu", 0, CLEAR_LINE); - watchdog_reset(space->machine()); + cputag_set_input_line(machine(), "maincpu", 0, CLEAR_LINE); + watchdog_reset(machine()); } /************************************* @@ -367,21 +370,20 @@ static READ8_DEVICE_HANDLER( input_port_2_bit_r ) * *************************************/ -static WRITE8_HANDLER( tempest_led_w ) +WRITE8_MEMBER(tempest_state::tempest_led_w) { - tempest_state *state = space->machine().driver_data<tempest_state>(); - set_led_status(space->machine(), 0, ~data & 0x02); - set_led_status(space->machine(), 1, ~data & 0x01); + set_led_status(machine(), 0, ~data & 0x02); + set_led_status(machine(), 1, ~data & 0x01); /* FLIP is bit 0x04 */ - state->m_player_select = data & 0x04; + m_player_select = data & 0x04; } -static WRITE8_HANDLER( tempest_coin_w ) +WRITE8_MEMBER(tempest_state::tempest_coin_w) { - coin_counter_w(space->machine(), 0, (data & 0x01)); - coin_counter_w(space->machine(), 1, (data & 0x02)); - coin_counter_w(space->machine(), 2, (data & 0x04)); + coin_counter_w(machine(), 0, (data & 0x01)); + coin_counter_w(machine(), 1, (data & 0x02)); + coin_counter_w(machine(), 2, (data & 0x04)); avg_set_flip_x(data & 0x08); avg_set_flip_y(data & 0x10); } @@ -402,9 +404,9 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, tempest_state ) AM_RANGE(0x0e00, 0x0e00) AM_READ_PORT("DSW2") AM_RANGE(0x2000, 0x2fff) AM_RAM AM_BASE_LEGACY(&avgdvg_vectorram) AM_SIZE_LEGACY(&avgdvg_vectorram_size) AM_REGION("maincpu", 0x2000) AM_RANGE(0x3000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x4000) AM_WRITE_LEGACY(tempest_coin_w) + AM_RANGE(0x4000, 0x4000) AM_WRITE(tempest_coin_w) AM_RANGE(0x4800, 0x4800) AM_WRITE_LEGACY(avgdvg_go_w) - AM_RANGE(0x5000, 0x5000) AM_WRITE_LEGACY(wdclr_w) + AM_RANGE(0x5000, 0x5000) AM_WRITE(wdclr_w) AM_RANGE(0x5800, 0x5800) AM_WRITE_LEGACY(avgdvg_reset_w) AM_RANGE(0x6000, 0x603f) AM_DEVWRITE("earom", atari_vg_earom_device, write) AM_RANGE(0x6040, 0x6040) AM_DEVREAD_LEGACY("mathbox", mathbox_status_r) AM_DEVWRITE("earom", atari_vg_earom_device, ctrl_w) @@ -414,7 +416,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, tempest_state ) AM_RANGE(0x6080, 0x609f) AM_DEVWRITE_LEGACY("mathbox", mathbox_go_w) AM_RANGE(0x60c0, 0x60cf) AM_DEVREADWRITE_LEGACY("pokey1", pokey_r, pokey_w) AM_RANGE(0x60d0, 0x60df) AM_DEVREADWRITE_LEGACY("pokey2", pokey_r, pokey_w) - AM_RANGE(0x60e0, 0x60e0) AM_WRITE_LEGACY(tempest_led_w) + AM_RANGE(0x60e0, 0x60e0) AM_WRITE(tempest_led_w) AM_RANGE(0x9000, 0xdfff) AM_ROM AM_RANGE(0xf000, 0xffff) AM_ROM /* for the reset / interrupt vectors */ ADDRESS_MAP_END diff --git a/src/mame/drivers/tgtpanic.c b/src/mame/drivers/tgtpanic.c index b0f406bcee9..328e7e702f1 100644 --- a/src/mame/drivers/tgtpanic.c +++ b/src/mame/drivers/tgtpanic.c @@ -21,6 +21,7 @@ public: UINT8 *m_ram; UINT8 m_color; + DECLARE_WRITE8_MEMBER(color_w); }; @@ -66,11 +67,10 @@ static SCREEN_UPDATE_RGB32( tgtpanic ) return 0; } -static WRITE8_HANDLER( color_w ) +WRITE8_MEMBER(tgtpanic_state::color_w) { - tgtpanic_state *state = space->machine().driver_data<tgtpanic_state>(); - space->machine().primary_screen->update_partial(space->machine().primary_screen->vpos()); - state->m_color = data; + machine().primary_screen->update_partial(machine().primary_screen->vpos()); + m_color = data; } @@ -87,7 +87,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( io_map, AS_IO, 8, tgtpanic_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE_LEGACY(color_w) + AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(color_w) AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") ADDRESS_MAP_END diff --git a/src/mame/drivers/thayers.c b/src/mame/drivers/thayers.c index 5d3e2f0601d..e5b64e28369 100644 --- a/src/mame/drivers/thayers.c +++ b/src/mame/drivers/thayers.c @@ -55,6 +55,29 @@ public: int m_cart_present; int m_pr7820_enter; struct ssi263_t m_ssi263; + DECLARE_WRITE8_MEMBER(intrq_w); + DECLARE_READ8_MEMBER(irqstate_r); + DECLARE_WRITE8_MEMBER(timer_int_ack_w); + DECLARE_WRITE8_MEMBER(data_rdy_int_ack_w); + DECLARE_WRITE8_MEMBER(cop_d_w); + DECLARE_READ8_MEMBER(cop_data_r); + DECLARE_WRITE8_MEMBER(cop_data_w); + DECLARE_READ8_MEMBER(cop_l_r); + DECLARE_WRITE8_MEMBER(cop_l_w); + DECLARE_READ8_MEMBER(cop_g_r); + DECLARE_WRITE8_MEMBER(control_w); + DECLARE_WRITE8_MEMBER(cop_g_w); + DECLARE_READ8_MEMBER(cop_si_r); + DECLARE_WRITE8_MEMBER(cop_so_w); + DECLARE_WRITE8_MEMBER(control2_w); + DECLARE_READ8_MEMBER(dsw_b_r); + DECLARE_READ8_MEMBER(laserdsc_data_r); + DECLARE_WRITE8_MEMBER(laserdsc_data_w); + DECLARE_WRITE8_MEMBER(laserdsc_control_w); + DECLARE_WRITE8_MEMBER(den1_w); + DECLARE_WRITE8_MEMBER(den2_w); + DECLARE_WRITE8_MEMBER(ssi263_register_w); + DECLARE_READ8_MEMBER(ssi263_register_r); }; @@ -84,18 +107,17 @@ static TIMER_CALLBACK( intrq_tick ) cputag_set_input_line(machine, "maincpu", INPUT_LINE_IRQ0, CLEAR_LINE); } -static WRITE8_HANDLER( intrq_w ) +WRITE8_MEMBER(thayers_state::intrq_w) { // T = 1.1 * R30 * C53 = 1.1 * 750K * 0.01uF = 8.25 ms - cputag_set_input_line(space->machine(), "maincpu", INPUT_LINE_IRQ0, HOLD_LINE); + cputag_set_input_line(machine(), "maincpu", INPUT_LINE_IRQ0, HOLD_LINE); - space->machine().scheduler().timer_set(attotime::from_usec(8250), FUNC(intrq_tick)); + machine().scheduler().timer_set(attotime::from_usec(8250), FUNC(intrq_tick)); } -static READ8_HANDLER( irqstate_r ) +READ8_MEMBER(thayers_state::irqstate_r) { - thayers_state *state = space->machine().driver_data<thayers_state>(); /* bit description @@ -111,28 +133,25 @@ static READ8_HANDLER( irqstate_r ) */ - return (state->m_data_rdy_int << 5) | (state->m_timer_int << 4) | 0x08 | (state->m_ssi_data_request << 2); + return (m_data_rdy_int << 5) | (m_timer_int << 4) | 0x08 | (m_ssi_data_request << 2); } -static WRITE8_HANDLER( timer_int_ack_w ) +WRITE8_MEMBER(thayers_state::timer_int_ack_w) { - thayers_state *state = space->machine().driver_data<thayers_state>(); - state->m_timer_int = 1; + m_timer_int = 1; - check_interrupt(space->machine()); + check_interrupt(machine()); } -static WRITE8_HANDLER( data_rdy_int_ack_w ) +WRITE8_MEMBER(thayers_state::data_rdy_int_ack_w) { - thayers_state *state = space->machine().driver_data<thayers_state>(); - state->m_data_rdy_int = 1; + m_data_rdy_int = 1; - check_interrupt(space->machine()); + check_interrupt(machine()); } -static WRITE8_HANDLER( cop_d_w ) +WRITE8_MEMBER(thayers_state::cop_d_w) { - thayers_state *state = space->machine().driver_data<thayers_state>(); /* bit description @@ -146,44 +165,41 @@ static WRITE8_HANDLER( cop_d_w ) if (!BIT(data, 0)) { - state->m_timer_int = 0; + m_timer_int = 0; } if (!BIT(data, 1)) { - state->m_data_rdy_int = 0; + m_data_rdy_int = 0; } - check_interrupt(space->machine()); + check_interrupt(machine()); } /* COP Communication */ -static READ8_HANDLER( cop_data_r ) +READ8_MEMBER(thayers_state::cop_data_r) { - thayers_state *state = space->machine().driver_data<thayers_state>(); - if (!state->m_cop_data_latch_enable) + if (!m_cop_data_latch_enable) { - return state->m_cop_data_latch; + return m_cop_data_latch; } else { - return state->m_cop_l; + return m_cop_l; } } -static WRITE8_HANDLER( cop_data_w ) +WRITE8_MEMBER(thayers_state::cop_data_w) { - thayers_state *state = space->machine().driver_data<thayers_state>(); - state->m_cop_data_latch = data; + m_cop_data_latch = data; } -static READ8_HANDLER( cop_l_r ) +READ8_MEMBER(thayers_state::cop_l_r) { - thayers_state *state = space->machine().driver_data<thayers_state>(); - if (!state->m_cop_data_latch_enable) + if (!m_cop_data_latch_enable) { - return state->m_cop_data_latch; + return m_cop_data_latch; } else { @@ -191,15 +207,13 @@ static READ8_HANDLER( cop_l_r ) } } -static WRITE8_HANDLER( cop_l_w ) +WRITE8_MEMBER(thayers_state::cop_l_w) { - thayers_state *state = space->machine().driver_data<thayers_state>(); - state->m_cop_l = data; + m_cop_l = data; } -static READ8_HANDLER( cop_g_r ) +READ8_MEMBER(thayers_state::cop_g_r) { - thayers_state *state = space->machine().driver_data<thayers_state>(); /* bit description @@ -211,12 +225,11 @@ static READ8_HANDLER( cop_g_r ) */ - return state->m_cop_cmd_latch; + return m_cop_cmd_latch; } -static WRITE8_HANDLER( control_w ) +WRITE8_MEMBER(thayers_state::control_w) { - thayers_state *state = space->machine().driver_data<thayers_state>(); /* bit description @@ -232,12 +245,11 @@ static WRITE8_HANDLER( control_w ) */ - state->m_cop_cmd_latch = (data >> 5) & 0x07; + m_cop_cmd_latch = (data >> 5) & 0x07; } -static WRITE8_HANDLER( cop_g_w ) +WRITE8_MEMBER(thayers_state::cop_g_w) { - thayers_state *state = space->machine().driver_data<thayers_state>(); /* bit description @@ -249,14 +261,13 @@ static WRITE8_HANDLER( cop_g_w ) */ - state->m_cop_data_latch_enable = BIT(data, 3); + m_cop_data_latch_enable = BIT(data, 3); } /* Keyboard */ -static READ8_HANDLER(cop_si_r) +READ8_MEMBER(thayers_state::cop_si_r) { - thayers_state *state = space->machine().driver_data<thayers_state>(); /* keyboard data */ /* @@ -267,7 +278,7 @@ static READ8_HANDLER(cop_si_r) */ - switch (state->m_rx_bit) + switch (m_rx_bit) { case 0: case 1: @@ -275,7 +286,7 @@ static READ8_HANDLER(cop_si_r) return 1; case 4: - return (state->m_keylatch == 9); + return (m_keylatch == 9); case 5: case 6: @@ -285,9 +296,9 @@ static READ8_HANDLER(cop_si_r) UINT8 data; char port[4]; - sprintf(port, "R%d", state->m_keylatch); + sprintf(port, "R%d", m_keylatch); - data = BIT(input_port_read(space->machine(), port), state->m_rx_bit - 5); + data = BIT(input_port_read(machine(), port), m_rx_bit - 5); return data; } @@ -297,24 +308,23 @@ static READ8_HANDLER(cop_si_r) } } -static WRITE8_HANDLER( cop_so_w ) +WRITE8_MEMBER(thayers_state::cop_so_w) { - thayers_state *state = space->machine().driver_data<thayers_state>(); /* keyboard clock */ if (data) { - state->m_rx_bit++; + m_rx_bit++; - if (state->m_rx_bit == 10) + if (m_rx_bit == 10) { - state->m_rx_bit = 0; + m_rx_bit = 0; - state->m_keylatch++; + m_keylatch++; - if (state->m_keylatch == 10) + if (m_keylatch == 10) { - state->m_keylatch = 0; + m_keylatch = 0; } } } @@ -322,9 +332,8 @@ static WRITE8_HANDLER( cop_so_w ) /* I/O Board */ -static WRITE8_HANDLER( control2_w ) +WRITE8_MEMBER(thayers_state::control2_w) { - thayers_state *state = space->machine().driver_data<thayers_state>(); /* bit description @@ -340,34 +349,31 @@ static WRITE8_HANDLER( control2_w ) */ - if ((!BIT(data, 2)) & state->m_cart_present) + if ((!BIT(data, 2)) & m_cart_present) { - cputag_set_input_line(space->machine(), "maincpu", INPUT_LINE_NMI, HOLD_LINE); + cputag_set_input_line(machine(), "maincpu", INPUT_LINE_NMI, HOLD_LINE); } } -static READ8_HANDLER( dsw_b_r ) +READ8_MEMBER(thayers_state::dsw_b_r) { - return (input_port_read(space->machine(), "COIN") & 0xf0) | (input_port_read(space->machine(), "DSWB") & 0x0f); + return (input_port_read(machine(), "COIN") & 0xf0) | (input_port_read(machine(), "DSWB") & 0x0f); } -static READ8_HANDLER( laserdsc_data_r ) +READ8_MEMBER(thayers_state::laserdsc_data_r) { - thayers_state *state = space->machine().driver_data<thayers_state>(); - if (state->m_ldv1000 != NULL) return state->m_ldv1000->status_r(); - if (state->m_pr7820 != NULL) return state->m_pr7820->data_r(); + if (m_ldv1000 != NULL) return m_ldv1000->status_r(); + if (m_pr7820 != NULL) return m_pr7820->data_r(); return 0; } -static WRITE8_HANDLER( laserdsc_data_w ) +WRITE8_MEMBER(thayers_state::laserdsc_data_w) { - thayers_state *state = space->machine().driver_data<thayers_state>(); - state->m_laserdisc_data = data; + m_laserdisc_data = data; } -static WRITE8_HANDLER( laserdsc_control_w ) +WRITE8_MEMBER(thayers_state::laserdsc_control_w) { - thayers_state *state = space->machine().driver_data<thayers_state>(); /* bit description @@ -383,26 +389,26 @@ static WRITE8_HANDLER( laserdsc_control_w ) */ - coin_counter_w(space->machine(), 0, BIT(data, 4)); + coin_counter_w(machine(), 0, BIT(data, 4)); if (BIT(data, 5)) { - if (state->m_ldv1000 != NULL) + if (m_ldv1000 != NULL) { - state->m_ldv1000->data_w(state->m_laserdisc_data); - state->m_ldv1000->enter_w(BIT(data, 7) ? CLEAR_LINE : ASSERT_LINE); + m_ldv1000->data_w(m_laserdisc_data); + m_ldv1000->enter_w(BIT(data, 7) ? CLEAR_LINE : ASSERT_LINE); } - if (state->m_pr7820 != NULL) + if (m_pr7820 != NULL) { - state->m_pr7820->data_w(state->m_laserdisc_data); - state->m_pr7820_enter = BIT(data, 6) ? CLEAR_LINE : ASSERT_LINE; - state->m_pr7820->enter_w(state->m_pr7820_enter); + m_pr7820->data_w(m_laserdisc_data); + m_pr7820_enter = BIT(data, 6) ? CLEAR_LINE : ASSERT_LINE; + m_pr7820->enter_w(m_pr7820_enter); // BIT(data, 7) is INT/_EXT, but there is no such input line in laserdsc.h } } } -static WRITE8_HANDLER( den1_w ) +WRITE8_MEMBER(thayers_state::den1_w) { /* @@ -422,7 +428,7 @@ static WRITE8_HANDLER( den1_w ) output_set_digit_value(data >> 4, led_map[data & 0x0f]); } -static WRITE8_HANDLER( den2_w ) +WRITE8_MEMBER(thayers_state::den2_w) { /* @@ -467,10 +473,9 @@ static TIMER_CALLBACK( ssi263_phoneme_tick ) check_interrupt(machine); } -static WRITE8_HANDLER( ssi263_register_w ) +WRITE8_MEMBER(thayers_state::ssi263_register_w) { - thayers_state *state = space->machine().driver_data<thayers_state>(); - struct ssi263_t &ssi263 = state->m_ssi263; + struct ssi263_t &ssi263 = m_ssi263; switch (offset) { case 0: @@ -482,19 +487,19 @@ static WRITE8_HANDLER( ssi263_register_w ) ssi263.dr = (data >> 5) & 0x03; ssi263.p = data & 0x3f; - state->m_ssi_data_request = 1; - check_interrupt(space->machine()); + m_ssi_data_request = 1; + check_interrupt(machine()); switch (ssi263.mode) { case 0: case 1: // phoneme timing response - space->machine().scheduler().timer_set(attotime::from_usec(phoneme_time), FUNC(ssi263_phoneme_tick)); + machine().scheduler().timer_set(attotime::from_usec(phoneme_time), FUNC(ssi263_phoneme_tick)); break; case 2: // frame timing response - space->machine().scheduler().timer_set(attotime::from_usec(frame_time), FUNC(ssi263_phoneme_tick)); + machine().scheduler().timer_set(attotime::from_usec(frame_time), FUNC(ssi263_phoneme_tick)); break; case 3: // disable A/_R output @@ -570,12 +575,11 @@ static WRITE8_HANDLER( ssi263_register_w ) } } -static READ8_HANDLER( ssi263_register_r ) +READ8_MEMBER(thayers_state::ssi263_register_r) { - thayers_state *state = space->machine().driver_data<thayers_state>(); // D7 becomes an output, as the inverted state of A/_R. The register address bits are ignored. - return !state->m_ssi_data_request << 7; + return !m_ssi_data_request << 7; } /* Memory Maps */ @@ -588,28 +592,28 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( thayers_io_map, AS_IO, 8, thayers_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x07) AM_READWRITE_LEGACY(ssi263_register_r, ssi263_register_w) - AM_RANGE(0x20, 0x20) AM_WRITE_LEGACY(control_w) - AM_RANGE(0x40, 0x40) AM_READWRITE_LEGACY(irqstate_r, control2_w) - AM_RANGE(0x80, 0x80) AM_READWRITE_LEGACY(cop_data_r, cop_data_w) - AM_RANGE(0xa0, 0xa0) AM_WRITE_LEGACY(timer_int_ack_w) - AM_RANGE(0xc0, 0xc0) AM_WRITE_LEGACY(data_rdy_int_ack_w) - AM_RANGE(0xf0, 0xf0) AM_READ_LEGACY(laserdsc_data_r) - AM_RANGE(0xf1, 0xf1) AM_READ_LEGACY(dsw_b_r) + AM_RANGE(0x00, 0x07) AM_READWRITE(ssi263_register_r, ssi263_register_w) + AM_RANGE(0x20, 0x20) AM_WRITE(control_w) + AM_RANGE(0x40, 0x40) AM_READWRITE(irqstate_r, control2_w) + AM_RANGE(0x80, 0x80) AM_READWRITE(cop_data_r, cop_data_w) + AM_RANGE(0xa0, 0xa0) AM_WRITE(timer_int_ack_w) + AM_RANGE(0xc0, 0xc0) AM_WRITE(data_rdy_int_ack_w) + AM_RANGE(0xf0, 0xf0) AM_READ(laserdsc_data_r) + AM_RANGE(0xf1, 0xf1) AM_READ(dsw_b_r) AM_RANGE(0xf2, 0xf2) AM_READ_PORT("DSWA") - AM_RANGE(0xf3, 0xf3) AM_WRITE_LEGACY(intrq_w) - AM_RANGE(0xf4, 0xf4) AM_WRITE_LEGACY(laserdsc_data_w) - AM_RANGE(0xf5, 0xf5) AM_WRITE_LEGACY(laserdsc_control_w) - AM_RANGE(0xf6, 0xf6) AM_WRITE_LEGACY(den1_w) - AM_RANGE(0xf7, 0xf7) AM_WRITE_LEGACY(den2_w) + AM_RANGE(0xf3, 0xf3) AM_WRITE(intrq_w) + AM_RANGE(0xf4, 0xf4) AM_WRITE(laserdsc_data_w) + AM_RANGE(0xf5, 0xf5) AM_WRITE(laserdsc_control_w) + AM_RANGE(0xf6, 0xf6) AM_WRITE(den1_w) + AM_RANGE(0xf7, 0xf7) AM_WRITE(den2_w) ADDRESS_MAP_END static ADDRESS_MAP_START( thayers_cop_io_map, AS_IO, 8, thayers_state ) - AM_RANGE(COP400_PORT_L, COP400_PORT_L) AM_READWRITE_LEGACY(cop_l_r, cop_l_w) - AM_RANGE(COP400_PORT_G, COP400_PORT_G) AM_READWRITE_LEGACY(cop_g_r, cop_g_w) - AM_RANGE(COP400_PORT_D, COP400_PORT_D) AM_WRITE_LEGACY(cop_d_w) + AM_RANGE(COP400_PORT_L, COP400_PORT_L) AM_READWRITE(cop_l_r, cop_l_w) + AM_RANGE(COP400_PORT_G, COP400_PORT_G) AM_READWRITE(cop_g_r, cop_g_w) + AM_RANGE(COP400_PORT_D, COP400_PORT_D) AM_WRITE(cop_d_w) AM_RANGE(COP400_PORT_SK, COP400_PORT_SK) AM_WRITENOP - AM_RANGE(COP400_PORT_SIO, COP400_PORT_SIO) AM_READ_LEGACY(cop_si_r) AM_WRITE_LEGACY(cop_so_w) + AM_RANGE(COP400_PORT_SIO, COP400_PORT_SIO) AM_READ(cop_si_r) AM_WRITE(cop_so_w) ADDRESS_MAP_END /* Input Ports */ diff --git a/src/mame/drivers/tickee.c b/src/mame/drivers/tickee.c index 57af67715e7..104ec63e497 100644 --- a/src/mame/drivers/tickee.c +++ b/src/mame/drivers/tickee.c @@ -42,6 +42,15 @@ public: int m_beamyadd; int m_palette_bank; UINT8 m_gunx[2]; + DECLARE_WRITE16_MEMBER(rapidfir_transparent_w); + DECLARE_READ16_MEMBER(rapidfir_transparent_r); + DECLARE_WRITE16_MEMBER(tickee_control_w); + DECLARE_READ16_MEMBER(ffff_r); + DECLARE_READ16_MEMBER(rapidfir_gun1_r); + DECLARE_READ16_MEMBER(rapidfir_gun2_r); + DECLARE_READ16_MEMBER(ff7f_r); + DECLARE_WRITE16_MEMBER(ff7f_w); + DECLARE_WRITE16_MEMBER(rapidfir_control_w); }; @@ -225,19 +234,17 @@ static MACHINE_RESET( rapidfir ) * *************************************/ -static WRITE16_HANDLER( rapidfir_transparent_w ) +WRITE16_MEMBER(tickee_state::rapidfir_transparent_w) { - tickee_state *state = space->machine().driver_data<tickee_state>(); if (!(data & 0xff00)) mem_mask &= 0x00ff; if (!(data & 0x00ff)) mem_mask &= 0xff00; - COMBINE_DATA(&state->m_vram[offset]); + COMBINE_DATA(&m_vram[offset]); } -static READ16_HANDLER( rapidfir_transparent_r ) +READ16_MEMBER(tickee_state::rapidfir_transparent_r) { - tickee_state *state = space->machine().driver_data<tickee_state>(); - return state->m_vram[offset]; + return m_vram[offset]; } @@ -264,10 +271,9 @@ static void rapidfir_from_shiftreg(address_space *space, UINT32 address, UINT16 * *************************************/ -static WRITE16_HANDLER( tickee_control_w ) +WRITE16_MEMBER(tickee_state::tickee_control_w) { - tickee_state *state = space->machine().driver_data<tickee_state>(); - UINT16 olddata = state->m_control[offset]; + UINT16 olddata = m_control[offset]; /* offsets: @@ -276,16 +282,16 @@ static WRITE16_HANDLER( tickee_control_w ) 6 = lamps? (changing all the time) */ - COMBINE_DATA(&state->m_control[offset]); + COMBINE_DATA(&m_control[offset]); if (offset == 3) { - ticket_dispenser_w(space->machine().device("ticket1"), 0, (data & 8) << 4); - ticket_dispenser_w(space->machine().device("ticket2"), 0, (data & 4) << 5); + ticket_dispenser_w(machine().device("ticket1"), 0, (data & 8) << 4); + ticket_dispenser_w(machine().device("ticket2"), 0, (data & 4) << 5); } - if (olddata != state->m_control[offset]) - logerror("%08X:tickee_control_w(%d) = %04X (was %04X)\n", cpu_get_pc(&space->device()), offset, state->m_control[offset], olddata); + if (olddata != m_control[offset]) + logerror("%08X:tickee_control_w(%d) = %04X (was %04X)\n", cpu_get_pc(&space.device()), offset, m_control[offset], olddata); } @@ -296,43 +302,40 @@ static WRITE16_HANDLER( tickee_control_w ) * *************************************/ -static READ16_HANDLER( ffff_r ) +READ16_MEMBER(tickee_state::ffff_r) { return 0xffff; } -static READ16_HANDLER( rapidfir_gun1_r ) +READ16_MEMBER(tickee_state::rapidfir_gun1_r) { - tickee_state *state = space->machine().driver_data<tickee_state>(); - return state->m_gunx[0]; + return m_gunx[0]; } -static READ16_HANDLER( rapidfir_gun2_r ) +READ16_MEMBER(tickee_state::rapidfir_gun2_r) { - tickee_state *state = space->machine().driver_data<tickee_state>(); - return state->m_gunx[1]; + return m_gunx[1]; } -static READ16_HANDLER( ff7f_r ) +READ16_MEMBER(tickee_state::ff7f_r) { /* Ticket dispenser status? */ return 0xff7f; } -static WRITE16_HANDLER( ff7f_w ) +WRITE16_MEMBER(tickee_state::ff7f_w) { /* Ticket dispenser output? */ } -static WRITE16_HANDLER( rapidfir_control_w ) +WRITE16_MEMBER(tickee_state::rapidfir_control_w) { - tickee_state *state = space->machine().driver_data<tickee_state>(); /* other bits like control on tickee? */ if (ACCESSING_BITS_0_7) - state->m_palette_bank = data & 1; + m_palette_bank = data & 1; } @@ -386,7 +389,7 @@ static ADDRESS_MAP_START( tickee_map, AS_PROGRAM, 16, tickee_state ) AM_RANGE(0x04200000, 0x0420001f) AM_DEVWRITE8_LEGACY("ym1", ay8910_address_data_w, 0x00ff) AM_RANGE(0x04200100, 0x0420010f) AM_DEVREAD8_LEGACY("ym2", ay8910_r, 0x00ff) AM_RANGE(0x04200100, 0x0420011f) AM_DEVWRITE8_LEGACY("ym2", ay8910_address_data_w, 0x00ff) - AM_RANGE(0x04400000, 0x0440007f) AM_WRITE_LEGACY(tickee_control_w) AM_BASE(m_control) + AM_RANGE(0x04400000, 0x0440007f) AM_WRITE(tickee_control_w) AM_BASE(m_control) AM_RANGE(0x04400040, 0x0440004f) AM_READ_PORT("IN2") AM_RANGE(0xc0000000, 0xc00001ff) AM_READWRITE_LEGACY(tms34010_io_register_r, tms34010_io_register_w) AM_RANGE(0xc0000240, 0xc000025f) AM_WRITENOP /* seems to be a bug in their code */ @@ -404,7 +407,7 @@ static ADDRESS_MAP_START( ghoshunt_map, AS_PROGRAM, 16, tickee_state ) AM_RANGE(0x04300000, 0x0430001f) AM_DEVWRITE8_LEGACY("ym1", ay8910_address_data_w, 0x00ff) AM_RANGE(0x04300100, 0x0430010f) AM_DEVREAD8_LEGACY("ym2", ay8910_r, 0x00ff) AM_RANGE(0x04300100, 0x0430011f) AM_DEVWRITE8_LEGACY("ym2", ay8910_address_data_w, 0x00ff) - AM_RANGE(0x04500000, 0x0450007f) AM_WRITE_LEGACY(tickee_control_w) AM_BASE(m_control) + AM_RANGE(0x04500000, 0x0450007f) AM_WRITE(tickee_control_w) AM_BASE(m_control) AM_RANGE(0xc0000000, 0xc00001ff) AM_READWRITE_LEGACY(tms34010_io_register_r, tms34010_io_register_w) AM_RANGE(0xc0000240, 0xc000025f) AM_WRITENOP /* seems to be a bug in their code */ AM_RANGE(0xff000000, 0xffffffff) AM_ROM AM_REGION("user1", 0) @@ -419,7 +422,7 @@ static ADDRESS_MAP_START( mouseatk_map, AS_PROGRAM, 16, tickee_state ) AM_RANGE(0x04200000, 0x0420000f) AM_DEVREAD8_LEGACY("ym", ay8910_r, 0x00ff) AM_RANGE(0x04200000, 0x0420000f) AM_DEVWRITE8_LEGACY("ym", ay8910_address_data_w, 0x00ff) AM_RANGE(0x04200100, 0x0420010f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x04400000, 0x0440007f) AM_WRITE_LEGACY(tickee_control_w) AM_BASE(m_control) + AM_RANGE(0x04400000, 0x0440007f) AM_WRITE(tickee_control_w) AM_BASE(m_control) AM_RANGE(0x04400040, 0x0440004f) AM_READ_PORT("IN2") // ? AM_RANGE(0xc0000000, 0xc00001ff) AM_READWRITE_LEGACY(tms34010_io_register_r, tms34010_io_register_w) AM_RANGE(0xc0000240, 0xc000025f) AM_WRITENOP /* seems to be a bug in their code */ @@ -430,13 +433,13 @@ ADDRESS_MAP_END /* newer hardware */ static ADDRESS_MAP_START( rapidfir_map, AS_PROGRAM, 16, tickee_state ) AM_RANGE(0x00000000, 0x007fffff) AM_RAM AM_BASE(m_vram) - AM_RANGE(0x02000000, 0x027fffff) AM_READWRITE_LEGACY(rapidfir_transparent_r, rapidfir_transparent_w) + AM_RANGE(0x02000000, 0x027fffff) AM_READWRITE(rapidfir_transparent_r, rapidfir_transparent_w) AM_RANGE(0xc0000000, 0xc00001ff) AM_READWRITE_LEGACY(tms34010_io_register_r, tms34010_io_register_w) - AM_RANGE(0xfc000000, 0xfc00000f) AM_READ_LEGACY(rapidfir_gun1_r) - AM_RANGE(0xfc000100, 0xfc00010f) AM_READ_LEGACY(rapidfir_gun2_r) - AM_RANGE(0xfc000400, 0xfc00040f) AM_READ_LEGACY(ffff_r) + AM_RANGE(0xfc000000, 0xfc00000f) AM_READ(rapidfir_gun1_r) + AM_RANGE(0xfc000100, 0xfc00010f) AM_READ(rapidfir_gun2_r) + AM_RANGE(0xfc000400, 0xfc00040f) AM_READ(ffff_r) AM_RANGE(0xfc000500, 0xfc00050f) AM_NOP - AM_RANGE(0xfc000600, 0xfc00060f) AM_WRITE_LEGACY(rapidfir_control_w) + AM_RANGE(0xfc000600, 0xfc00060f) AM_WRITE(rapidfir_control_w) AM_RANGE(0xfc000700, 0xfc00070f) AM_DEVWRITE_LEGACY("oki", sound_bank_w) AM_RANGE(0xfc000800, 0xfc00080f) AM_READ_PORT("IN0") AM_RANGE(0xfc000900, 0xfc00090f) AM_READ_PORT("IN1") @@ -447,7 +450,7 @@ static ADDRESS_MAP_START( rapidfir_map, AS_PROGRAM, 16, tickee_state ) AM_RANGE(0xfc100000, 0xfc1000ff) AM_MIRROR(0x80000) AM_DEVREADWRITE8_LEGACY("tlc34076", tlc34076_r, tlc34076_w, 0x00ff) AM_RANGE(0xfc200000, 0xfc207fff) AM_RAM AM_SHARE("nvram") AM_RANGE(0xfc300000, 0xfc30000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0xfc400010, 0xfc40001f) AM_READWRITE_LEGACY(ff7f_r, ff7f_w) + AM_RANGE(0xfc400010, 0xfc40001f) AM_READWRITE(ff7f_r, ff7f_w) AM_RANGE(0xfe000000, 0xffffffff) AM_ROM AM_REGION("user1", 0) ADDRESS_MAP_END diff --git a/src/mame/drivers/timetrv.c b/src/mame/drivers/timetrv.c index 7c8c118b2ba..e9da428c5bc 100644 --- a/src/mame/drivers/timetrv.c +++ b/src/mame/drivers/timetrv.c @@ -35,6 +35,10 @@ public: UINT8 *m_led_vram_lo; UINT8 *m_led_vram_hi; + DECLARE_READ8_MEMBER(test1_r); + DECLARE_READ8_MEMBER(test2_r); + DECLARE_READ8_MEMBER(in_r); + DECLARE_READ8_MEMBER(ld_r); }; @@ -51,26 +55,26 @@ static SCREEN_UPDATE_IND16( timetrv ) return 0; } -static READ8_HANDLER( test1_r ) +READ8_MEMBER(timetrv_state::test1_r) { - return input_port_read(space->machine(), "IN0");//space->machine().rand(); + return input_port_read(machine(), "IN0");//machine().rand(); } -static READ8_HANDLER( test2_r ) +READ8_MEMBER(timetrv_state::test2_r) { /*bit 7,eeprom read bit*/ - return (input_port_read(space->machine(), "IN1") & 0x7f);//space->machine().rand(); + return (input_port_read(machine(), "IN1") & 0x7f);//machine().rand(); } -static READ8_HANDLER( in_r ) +READ8_MEMBER(timetrv_state::in_r) { return 0xff; } -static READ8_HANDLER( ld_r ) +READ8_MEMBER(timetrv_state::ld_r) { - return space->machine().rand(); + return machine().rand(); } static ADDRESS_MAP_START( timetrv_map, AS_PROGRAM, 8, timetrv_state ) @@ -81,12 +85,12 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( timetrv_io, AS_IO, 8, timetrv_state ) AM_RANGE(0x0122, 0x0123) AM_WRITENOP //eeprom write bits - AM_RANGE(0x1000, 0x1000) AM_READ_LEGACY(test1_r) //inputs - AM_RANGE(0x1001, 0x1001) AM_READ_LEGACY(test2_r) //eeprom read bit + inputs + AM_RANGE(0x1000, 0x1000) AM_READ(test1_r) //inputs + AM_RANGE(0x1001, 0x1001) AM_READ(test2_r) //eeprom read bit + inputs - AM_RANGE(0x1080, 0x1082) AM_READ_LEGACY(in_r) //dsw + AM_RANGE(0x1080, 0x1082) AM_READ(in_r) //dsw AM_RANGE(0x1100, 0x1105) AM_WRITENOP //laserdisc write area - AM_RANGE(0x1100, 0x1105) AM_READ_LEGACY(ld_r) //5 -> laserdisc read status + AM_RANGE(0x1100, 0x1105) AM_READ(ld_r) //5 -> laserdisc read status AM_RANGE(0x1180, 0x1187) AM_RAM AM_BASE(m_led_vram_lo)//led string,part 1 AM_RANGE(0x1200, 0x1207) AM_RAM AM_BASE(m_led_vram_hi)//led string,part 2 AM_RANGE(0xff80, 0xffff) AM_RAM //am80188-em-like cpu internal regs? diff --git a/src/mame/drivers/tmaster.c b/src/mame/drivers/tmaster.c index a09f7274664..d94c27ebf91 100644 --- a/src/mame/drivers/tmaster.c +++ b/src/mame/drivers/tmaster.c @@ -145,6 +145,25 @@ public: required_device<cpu_device> m_maincpu; optional_device<microtouch_device> m_microtouch; + DECLARE_READ16_MEMBER(rtc_r); + DECLARE_WRITE16_MEMBER(rtc_w); + DECLARE_WRITE16_MEMBER(tmaster_color_w); + DECLARE_WRITE16_MEMBER(tmaster_addr_w); + DECLARE_WRITE16_MEMBER(tmaster_blitter_w); + DECLARE_READ16_MEMBER(tmaster_blitter_r); + DECLARE_READ16_MEMBER(tmaster_coins_r); + DECLARE_READ16_MEMBER(galgames_eeprom_r); + DECLARE_WRITE16_MEMBER(galgames_eeprom_w); + DECLARE_WRITE16_MEMBER(galgames_palette_offset_w); + DECLARE_WRITE16_MEMBER(galgames_palette_data_w); + DECLARE_READ16_MEMBER(galgames_okiram_r); + DECLARE_WRITE16_MEMBER(galgames_okiram_w); + DECLARE_WRITE16_MEMBER(galgames_cart_sel_w); + DECLARE_READ16_MEMBER(galgames_cart_clock_r); + DECLARE_WRITE16_MEMBER(galgames_cart_clock_w); + DECLARE_READ16_MEMBER(galgames_cart_data_r); + DECLARE_WRITE16_MEMBER(galgames_cart_data_w); + DECLARE_READ16_MEMBER(dummy_read_01); }; @@ -215,29 +234,27 @@ static UINT8 binary_to_BCD(UINT8 data) return ((data / 10) << 4) | (data %10); } -static READ16_HANDLER(rtc_r) +READ16_MEMBER(tmaster_state::rtc_r) { - tmaster_state *state = space->machine().driver_data<tmaster_state>(); system_time systime; - space->machine().current_datetime(systime); - state->m_rtc_ram[0x1] = binary_to_BCD(systime.local_time.second); - state->m_rtc_ram[0x2] = binary_to_BCD(systime.local_time.minute); - state->m_rtc_ram[0x3] = binary_to_BCD(systime.local_time.hour); - state->m_rtc_ram[0x4] = binary_to_BCD(systime.local_time.weekday); - state->m_rtc_ram[0x5] = binary_to_BCD(systime.local_time.mday); - state->m_rtc_ram[0x6] = binary_to_BCD(systime.local_time.month+1); - state->m_rtc_ram[0x7] = binary_to_BCD(systime.local_time.year % 100); + machine().current_datetime(systime); + m_rtc_ram[0x1] = binary_to_BCD(systime.local_time.second); + m_rtc_ram[0x2] = binary_to_BCD(systime.local_time.minute); + m_rtc_ram[0x3] = binary_to_BCD(systime.local_time.hour); + m_rtc_ram[0x4] = binary_to_BCD(systime.local_time.weekday); + m_rtc_ram[0x5] = binary_to_BCD(systime.local_time.mday); + m_rtc_ram[0x6] = binary_to_BCD(systime.local_time.month+1); + m_rtc_ram[0x7] = binary_to_BCD(systime.local_time.year % 100); - return state->m_rtc_ram[offset]; + return m_rtc_ram[offset]; } -static WRITE16_HANDLER(rtc_w) +WRITE16_MEMBER(tmaster_state::rtc_w) { - tmaster_state *state = space->machine().driver_data<tmaster_state>(); if ( offset == 0 ) { - state->m_rtc_ram[0x0] = data & 0xff; + m_rtc_ram[0x0] = data & 0xff; } } @@ -347,16 +364,14 @@ static SCREEN_UPDATE_IND16( tmaster ) return 0; } -static WRITE16_HANDLER( tmaster_color_w ) +WRITE16_MEMBER(tmaster_state::tmaster_color_w) { - tmaster_state *state = space->machine().driver_data<tmaster_state>(); - COMBINE_DATA( &state->m_color ); + COMBINE_DATA( &m_color ); } -static WRITE16_HANDLER( tmaster_addr_w ) +WRITE16_MEMBER(tmaster_state::tmaster_addr_w) { - tmaster_state *state = space->machine().driver_data<tmaster_state>(); - COMBINE_DATA( &state->m_addr ); + COMBINE_DATA( &m_addr ); } static void tmaster_draw(running_machine &machine) @@ -472,20 +487,19 @@ static void tmaster_draw(running_machine &machine) } } -static WRITE16_HANDLER( tmaster_blitter_w ) +WRITE16_MEMBER(tmaster_state::tmaster_blitter_w) { - tmaster_state *state = space->machine().driver_data<tmaster_state>(); - COMBINE_DATA( state->m_regs + offset ); + COMBINE_DATA( m_regs + offset ); switch (offset*2) { case 0x0e: - tmaster_draw(space->machine()); - cputag_set_input_line(space->machine(), "maincpu", 2, HOLD_LINE); + tmaster_draw(machine()); + cputag_set_input_line(machine(), "maincpu", 2, HOLD_LINE); break; } } -static READ16_HANDLER( tmaster_blitter_r ) +READ16_MEMBER(tmaster_state::tmaster_blitter_r) { return 0x0000; // bit 7 = 1 -> blitter busy } @@ -500,27 +514,27 @@ static READ16_HANDLER( tmaster_blitter_r ) Touch Master ***************************************************************************/ -static READ16_HANDLER( tmaster_coins_r ) +READ16_MEMBER(tmaster_state::tmaster_coins_r) { - return input_port_read(space->machine(), "COIN")|(space->machine().rand()&0x0800); + return input_port_read(machine(), "COIN")|(machine().rand()&0x0800); } static ADDRESS_MAP_START( tmaster_map, AS_PROGRAM, 16, tmaster_state ) AM_RANGE( 0x000000, 0x1fffff ) AM_ROM AM_RANGE( 0x200000, 0x27ffff ) AM_RAM AM_RANGE( 0x280000, 0x28ffef ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x28fff0, 0x28ffff ) AM_READWRITE_LEGACY(rtc_r, rtc_w ) + AM_RANGE( 0x28fff0, 0x28ffff ) AM_READWRITE(rtc_r, rtc_w ) - AM_RANGE( 0x300010, 0x300011 ) AM_READ_LEGACY(tmaster_coins_r ) + AM_RANGE( 0x300010, 0x300011 ) AM_READ(tmaster_coins_r ) AM_RANGE( 0x300020, 0x30003f ) AM_DEVREADWRITE8_LEGACY("duart68681", duart68681_r, duart68681_w, 0xff ) AM_RANGE( 0x300040, 0x300041 ) AM_DEVWRITE_LEGACY("oki", tmaster_oki_bank_w ) - AM_RANGE( 0x300070, 0x300071 ) AM_WRITE_LEGACY(tmaster_addr_w ) + AM_RANGE( 0x300070, 0x300071 ) AM_WRITE(tmaster_addr_w ) - AM_RANGE( 0x500000, 0x500011 ) AM_WRITE_LEGACY(tmaster_blitter_w ) AM_BASE(m_regs ) - AM_RANGE( 0x500010, 0x500011 ) AM_READ_LEGACY(tmaster_blitter_r ) + AM_RANGE( 0x500000, 0x500011 ) AM_WRITE(tmaster_blitter_w ) AM_BASE(m_regs ) + AM_RANGE( 0x500010, 0x500011 ) AM_READ(tmaster_blitter_r ) AM_RANGE( 0x580000, 0x580001 ) AM_WRITENOP // often @@ -528,7 +542,7 @@ static ADDRESS_MAP_START( tmaster_map, AS_PROGRAM, 16, tmaster_state ) AM_RANGE( 0x800000, 0x800001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff ) - AM_RANGE( 0x800010, 0x800011 ) AM_WRITE_LEGACY(tmaster_color_w ) + AM_RANGE( 0x800010, 0x800011 ) AM_WRITE(tmaster_color_w ) ADDRESS_MAP_END @@ -574,23 +588,21 @@ static const eeprom_interface galgames_eeprom_interface = static const char *const galgames_eeprom_names[5] = { GALGAMES_EEPROM_BIOS, GALGAMES_EEPROM_CART1, GALGAMES_EEPROM_CART2, GALGAMES_EEPROM_CART3, GALGAMES_EEPROM_CART4 }; -static READ16_HANDLER( galgames_eeprom_r ) +READ16_MEMBER(tmaster_state::galgames_eeprom_r) { - tmaster_state *state = space->machine().driver_data<tmaster_state>(); - eeprom_device *eeprom = space->machine().device<eeprom_device>(galgames_eeprom_names[state->m_galgames_cart]); + eeprom_device *eeprom = machine().device<eeprom_device>(galgames_eeprom_names[m_galgames_cart]); return eeprom->read_bit() ? 0x80 : 0x00; } -static WRITE16_HANDLER( galgames_eeprom_w ) +WRITE16_MEMBER(tmaster_state::galgames_eeprom_w) { - tmaster_state *state = space->machine().driver_data<tmaster_state>(); if (data & ~0x0003) - logerror("CPU #0 PC: %06X - Unknown EEPROM bit written %04X\n",cpu_get_pc(&space->device()),data); + logerror("CPU #0 PC: %06X - Unknown EEPROM bit written %04X\n",cpu_get_pc(&space.device()),data); if ( ACCESSING_BITS_0_7 ) { - eeprom_device *eeprom = space->machine().device<eeprom_device>(galgames_eeprom_names[state->m_galgames_cart]); + eeprom_device *eeprom = machine().device<eeprom_device>(galgames_eeprom_names[m_galgames_cart]); // latch the bit eeprom->write_bit(data & 0x0001); @@ -602,41 +614,39 @@ static WRITE16_HANDLER( galgames_eeprom_w ) // BT481A Palette RAMDAC -static WRITE16_HANDLER( galgames_palette_offset_w ) +WRITE16_MEMBER(tmaster_state::galgames_palette_offset_w) { - tmaster_state *state = space->machine().driver_data<tmaster_state>(); if (ACCESSING_BITS_0_7) { - state->m_palette_offset = data & 0xff; - state->m_palette_index = 0; + m_palette_offset = data & 0xff; + m_palette_index = 0; } } -static WRITE16_HANDLER( galgames_palette_data_w ) +WRITE16_MEMBER(tmaster_state::galgames_palette_data_w) { - tmaster_state *state = space->machine().driver_data<tmaster_state>(); if (ACCESSING_BITS_0_7) { - state->m_palette_data[state->m_palette_index] = data & 0xff; - if (++state->m_palette_index == 3) + m_palette_data[m_palette_index] = data & 0xff; + if (++m_palette_index == 3) { int palette_base; for (palette_base = 0; palette_base < 0x1000; palette_base += 0x100) - palette_set_color(space->machine(), state->m_palette_offset + palette_base, MAKE_RGB(state->m_palette_data[0], state->m_palette_data[1], state->m_palette_data[2])); - state->m_palette_index = 0; - state->m_palette_offset++; + palette_set_color(machine(), m_palette_offset + palette_base, MAKE_RGB(m_palette_data[0], m_palette_data[1], m_palette_data[2])); + m_palette_index = 0; + m_palette_offset++; } } } // Sound -static READ16_HANDLER( galgames_okiram_r ) +READ16_MEMBER(tmaster_state::galgames_okiram_r) { - return space->machine().region("oki")->base()[offset] | 0xff00; + return machine().region("oki")->base()[offset] | 0xff00; } -static WRITE16_HANDLER( galgames_okiram_w ) +WRITE16_MEMBER(tmaster_state::galgames_okiram_w) { if (ACCESSING_BITS_0_7) - space->machine().region("oki")->base()[offset] = data & 0xff; + machine().region("oki")->base()[offset] = data & 0xff; } // Carts (preliminary, PIC communication is not implemented) @@ -654,7 +664,7 @@ static void galgames_update_rombank(running_machine &machine, UINT32 cart) memory_set_bank(machine, GALGAMES_BANK_240000_R, GALGAMES_ROM0 + state->m_galgames_cart); // rom } -static WRITE16_HANDLER( galgames_cart_sel_w ) +WRITE16_MEMBER(tmaster_state::galgames_cart_sel_w) { // cart selection (0 1 2 3 4 7) @@ -666,7 +676,7 @@ static WRITE16_HANDLER( galgames_cart_sel_w ) { case 0x07: // 7 resets the eeprom for (i = 0; i < 5; i++) - space->machine().device<eeprom_device>(galgames_eeprom_names[i])->set_cs_line(ASSERT_LINE); + machine().device<eeprom_device>(galgames_eeprom_names[i])->set_cs_line(ASSERT_LINE); break; case 0x00: @@ -674,27 +684,26 @@ static WRITE16_HANDLER( galgames_cart_sel_w ) case 0x02: case 0x03: case 0x04: - space->machine().device<eeprom_device>(galgames_eeprom_names[data & 0xff])->set_cs_line(CLEAR_LINE); - galgames_update_rombank(space->machine(), data & 0xff); + machine().device<eeprom_device>(galgames_eeprom_names[data & 0xff])->set_cs_line(CLEAR_LINE); + galgames_update_rombank(machine(), data & 0xff); break; default: - space->machine().device<eeprom_device>(galgames_eeprom_names[0])->set_cs_line(CLEAR_LINE); - galgames_update_rombank(space->machine(), 0); - logerror("%06x: unknown cart sel = %04x\n", cpu_get_pc(&space->device()), data); + machine().device<eeprom_device>(galgames_eeprom_names[0])->set_cs_line(CLEAR_LINE); + galgames_update_rombank(machine(), 0); + logerror("%06x: unknown cart sel = %04x\n", cpu_get_pc(&space.device()), data); break; } } } -static READ16_HANDLER( galgames_cart_clock_r ) +READ16_MEMBER(tmaster_state::galgames_cart_clock_r) { return 0x0080; } -static WRITE16_HANDLER( galgames_cart_clock_w ) +WRITE16_MEMBER(tmaster_state::galgames_cart_clock_w) { - tmaster_state *state = space->machine().driver_data<tmaster_state>(); if (ACCESSING_BITS_0_7) { // bit 3 = clock @@ -702,29 +711,29 @@ static WRITE16_HANDLER( galgames_cart_clock_w ) // ROM/RAM banking if ((data & 0xf7) == 0x05) { - memory_set_bank(space->machine(), GALGAMES_BANK_000000_R, GALGAMES_RAM); // ram - galgames_update_rombank(space->machine(), state->m_galgames_cart); - logerror("%06x: romram bank = %04x\n", cpu_get_pc(&space->device()), data); + memory_set_bank(machine(), GALGAMES_BANK_000000_R, GALGAMES_RAM); // ram + galgames_update_rombank(machine(), m_galgames_cart); + logerror("%06x: romram bank = %04x\n", cpu_get_pc(&space.device()), data); } else { - memory_set_bank(space->machine(), GALGAMES_BANK_000000_R, GALGAMES_ROM0); // rom - memory_set_bank(space->machine(), GALGAMES_BANK_200000_R, GALGAMES_RAM); // ram - logerror("%06x: unknown romram bank = %04x\n", cpu_get_pc(&space->device()), data); + memory_set_bank(machine(), GALGAMES_BANK_000000_R, GALGAMES_ROM0); // rom + memory_set_bank(machine(), GALGAMES_BANK_200000_R, GALGAMES_RAM); // ram + logerror("%06x: unknown romram bank = %04x\n", cpu_get_pc(&space.device()), data); } } } -static READ16_HANDLER( galgames_cart_data_r ) +READ16_MEMBER(tmaster_state::galgames_cart_data_r) { return 0; } -static WRITE16_HANDLER( galgames_cart_data_w ) +WRITE16_MEMBER(tmaster_state::galgames_cart_data_w) { } -static READ16_HANDLER( dummy_read_01 ) +READ16_MEMBER(tmaster_state::dummy_read_01) { return 0x3; // Pass the check at PC = 0xfae & a later one } @@ -736,21 +745,21 @@ static ADDRESS_MAP_START( galgames_map, AS_PROGRAM, 16, tmaster_state ) AM_RANGE( 0x200000, 0x23ffff ) AM_READ_BANK(GALGAMES_BANK_200000_R) AM_WRITE_BANK(GALGAMES_BANK_200000_W) AM_RANGE( 0x240000, 0x3fffff ) AM_READ_BANK(GALGAMES_BANK_240000_R) - AM_RANGE( 0x400000, 0x400011 ) AM_WRITE_LEGACY(tmaster_blitter_w ) AM_BASE(m_regs ) - AM_RANGE( 0x400012, 0x400013 ) AM_WRITE_LEGACY(tmaster_addr_w ) - AM_RANGE( 0x400014, 0x400015 ) AM_WRITE_LEGACY(tmaster_color_w ) - AM_RANGE( 0x400020, 0x400021 ) AM_READ_LEGACY(tmaster_blitter_r ) + AM_RANGE( 0x400000, 0x400011 ) AM_WRITE(tmaster_blitter_w ) AM_BASE(m_regs ) + AM_RANGE( 0x400012, 0x400013 ) AM_WRITE(tmaster_addr_w ) + AM_RANGE( 0x400014, 0x400015 ) AM_WRITE(tmaster_color_w ) + AM_RANGE( 0x400020, 0x400021 ) AM_READ(tmaster_blitter_r ) - AM_RANGE( 0x600000, 0x600001 ) AM_READ_LEGACY(dummy_read_01 ) AM_WRITENOP - AM_RANGE( 0x700000, 0x700001 ) AM_READ_LEGACY(dummy_read_01 ) AM_WRITENOP + AM_RANGE( 0x600000, 0x600001 ) AM_READ(dummy_read_01 ) AM_WRITENOP + AM_RANGE( 0x700000, 0x700001 ) AM_READ(dummy_read_01 ) AM_WRITENOP AM_RANGE( 0x800020, 0x80003f ) AM_NOP // ? AM_RANGE( 0x900000, 0x900001 ) AM_WRITE_LEGACY(watchdog_reset16_w ) AM_RANGE( 0xa00000, 0xa00001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff ) - AM_RANGE( 0xb00000, 0xb7ffff ) AM_READWRITE_LEGACY(galgames_okiram_r, galgames_okiram_w ) // (only low bytes tested) 4x N341024SJ-15 + AM_RANGE( 0xb00000, 0xb7ffff ) AM_READWRITE(galgames_okiram_r, galgames_okiram_w ) // (only low bytes tested) 4x N341024SJ-15 - AM_RANGE( 0xc00000, 0xc00001 ) AM_WRITE_LEGACY(galgames_palette_offset_w ) - AM_RANGE( 0xc00002, 0xc00003 ) AM_WRITE_LEGACY(galgames_palette_data_w ) + AM_RANGE( 0xc00000, 0xc00001 ) AM_WRITE(galgames_palette_offset_w ) + AM_RANGE( 0xc00002, 0xc00003 ) AM_WRITE(galgames_palette_data_w ) AM_RANGE( 0xd00000, 0xd00001 ) AM_READ_PORT("TRACKBALL_1_X") AM_RANGE( 0xd00000, 0xd00001 ) AM_WRITENOP @@ -761,10 +770,10 @@ static ADDRESS_MAP_START( galgames_map, AS_PROGRAM, 16, tmaster_state ) AM_RANGE( 0xd0000a, 0xd0000b ) AM_READ_PORT("P2") AM_RANGE( 0xd0000c, 0xd0000d ) AM_READ_PORT("SYSTEM") AM_WRITENOP - AM_RANGE( 0xd0000e, 0xd0000f ) AM_WRITE_LEGACY(galgames_cart_sel_w ) - AM_RANGE( 0xd00010, 0xd00011 ) AM_READWRITE_LEGACY(galgames_eeprom_r, galgames_eeprom_w ) - AM_RANGE( 0xd00012, 0xd00013 ) AM_READWRITE_LEGACY(galgames_cart_data_r, galgames_cart_data_w ) - AM_RANGE( 0xd00014, 0xd00015 ) AM_READWRITE_LEGACY(galgames_cart_clock_r, galgames_cart_clock_w ) + AM_RANGE( 0xd0000e, 0xd0000f ) AM_WRITE(galgames_cart_sel_w ) + AM_RANGE( 0xd00010, 0xd00011 ) AM_READWRITE(galgames_eeprom_r, galgames_eeprom_w ) + AM_RANGE( 0xd00012, 0xd00013 ) AM_READWRITE(galgames_cart_data_r, galgames_cart_data_w ) + AM_RANGE( 0xd00014, 0xd00015 ) AM_READWRITE(galgames_cart_clock_r, galgames_cart_clock_w ) ADDRESS_MAP_END diff --git a/src/mame/drivers/tmmjprd.c b/src/mame/drivers/tmmjprd.c index 3adb2871af0..a5f6bc5bbdf 100644 --- a/src/mame/drivers/tmmjprd.c +++ b/src/mame/drivers/tmmjprd.c @@ -49,33 +49,43 @@ public: UINT8 m_system_in; double m_old_brt1; double m_old_brt2; + DECLARE_WRITE32_MEMBER(tmmjprd_tilemap0_w); + DECLARE_WRITE32_MEMBER(tmmjprd_tilemap1_w); + DECLARE_WRITE32_MEMBER(tmmjprd_tilemap2_w); + DECLARE_WRITE32_MEMBER(tmmjprd_tilemap3_w); + DECLARE_READ32_MEMBER(tmmjprd_tilemap0_r); + DECLARE_READ32_MEMBER(tmmjprd_tilemap1_r); + DECLARE_READ32_MEMBER(tmmjprd_tilemap2_r); + DECLARE_READ32_MEMBER(tmmjprd_tilemap3_r); + DECLARE_READ32_MEMBER(randomtmmjprds); + DECLARE_WRITE32_MEMBER(tmmjprd_blitter_w); + DECLARE_READ32_MEMBER(tmmjprd_mux_r); + DECLARE_WRITE32_MEMBER(tmmjprd_paletteram_dword_w); + DECLARE_WRITE32_MEMBER(tmmjprd_brt_1_w); + DECLARE_WRITE32_MEMBER(tmmjprd_brt_2_w); }; -static WRITE32_HANDLER( tmmjprd_tilemap0_w ) +WRITE32_MEMBER(tmmjprd_state::tmmjprd_tilemap0_w) { - tmmjprd_state *state = space->machine().driver_data<tmmjprd_state>(); - COMBINE_DATA(&state->m_tilemap_ram[0][offset]); + COMBINE_DATA(&m_tilemap_ram[0][offset]); } -static WRITE32_HANDLER( tmmjprd_tilemap1_w ) +WRITE32_MEMBER(tmmjprd_state::tmmjprd_tilemap1_w) { - tmmjprd_state *state = space->machine().driver_data<tmmjprd_state>(); - COMBINE_DATA(&state->m_tilemap_ram[1][offset]); + COMBINE_DATA(&m_tilemap_ram[1][offset]); } -static WRITE32_HANDLER( tmmjprd_tilemap2_w ) +WRITE32_MEMBER(tmmjprd_state::tmmjprd_tilemap2_w) { - tmmjprd_state *state = space->machine().driver_data<tmmjprd_state>(); - COMBINE_DATA(&state->m_tilemap_ram[2][offset]); + COMBINE_DATA(&m_tilemap_ram[2][offset]); } -static WRITE32_HANDLER( tmmjprd_tilemap3_w ) +WRITE32_MEMBER(tmmjprd_state::tmmjprd_tilemap3_w) { - tmmjprd_state *state = space->machine().driver_data<tmmjprd_state>(); - COMBINE_DATA(&state->m_tilemap_ram[3][offset]); + COMBINE_DATA(&m_tilemap_ram[3][offset]); } static void draw_sprites(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int screen) @@ -335,33 +345,29 @@ static VIDEO_START(tmmjprd) state->m_tilemap_ram[3] = auto_alloc_array_clear(machine, UINT32, 0x8000); } -static READ32_HANDLER( tmmjprd_tilemap0_r ) +READ32_MEMBER(tmmjprd_state::tmmjprd_tilemap0_r) { - tmmjprd_state *state = space->machine().driver_data<tmmjprd_state>(); - return state->m_tilemap_ram[0][offset]; + return m_tilemap_ram[0][offset]; } -static READ32_HANDLER( tmmjprd_tilemap1_r ) +READ32_MEMBER(tmmjprd_state::tmmjprd_tilemap1_r) { - tmmjprd_state *state = space->machine().driver_data<tmmjprd_state>(); - return state->m_tilemap_ram[1][offset]; + return m_tilemap_ram[1][offset]; } -static READ32_HANDLER( tmmjprd_tilemap2_r ) +READ32_MEMBER(tmmjprd_state::tmmjprd_tilemap2_r) { - tmmjprd_state *state = space->machine().driver_data<tmmjprd_state>(); - return state->m_tilemap_ram[2][offset]; + return m_tilemap_ram[2][offset]; } -static READ32_HANDLER( tmmjprd_tilemap3_r ) +READ32_MEMBER(tmmjprd_state::tmmjprd_tilemap3_r) { - tmmjprd_state *state = space->machine().driver_data<tmmjprd_state>(); - return state->m_tilemap_ram[3][offset]; + return m_tilemap_ram[3][offset]; } -static READ32_HANDLER( randomtmmjprds ) +READ32_MEMBER(tmmjprd_state::randomtmmjprds) { - return 0x0000;//space->machine().rand(); + return 0x0000;//machine().rand(); } @@ -470,13 +476,13 @@ static void tmmjprd_do_blit(running_machine &machine) -static WRITE32_HANDLER( tmmjprd_blitter_w ) +WRITE32_MEMBER(tmmjprd_state::tmmjprd_blitter_w) { COMBINE_DATA(&tmmjprd_blitterregs[offset]); if (offset == 0x0c/4) { - tmmjprd_do_blit(space->machine()); + tmmjprd_do_blit(machine()); } } #endif @@ -504,22 +510,21 @@ static WRITE32_DEVICE_HANDLER( tmmjprd_eeprom_write ) } } -static READ32_HANDLER( tmmjprd_mux_r ) +READ32_MEMBER(tmmjprd_state::tmmjprd_mux_r) { - tmmjprd_state *state = space->machine().driver_data<tmmjprd_state>(); - state->m_system_in = input_port_read(space->machine(), "SYSTEM"); + m_system_in = input_port_read(machine(), "SYSTEM"); - switch(state->m_mux_data) + switch(m_mux_data) { - case 0x01: return (state->m_system_in & 0xff) | (input_port_read(space->machine(), "PL1_1")<<8) | (input_port_read(space->machine(), "PL2_1")<<16) | 0xff000000; - case 0x02: return (state->m_system_in & 0xff) | (input_port_read(space->machine(), "PL1_2")<<8) | (input_port_read(space->machine(), "PL2_2")<<16) | 0xff000000; - case 0x04: return (state->m_system_in & 0xff) | (input_port_read(space->machine(), "PL1_3")<<8) | (input_port_read(space->machine(), "PL2_3")<<16) | 0xff000000; - case 0x08: return (state->m_system_in & 0xff) | (input_port_read(space->machine(), "PL1_4")<<8) | (input_port_read(space->machine(), "PL2_4")<<16) | 0xff000000; - case 0x10: return (state->m_system_in & 0xff) | (input_port_read(space->machine(), "PL1_5")<<8) | (input_port_read(space->machine(), "PL2_5")<<16) | 0xff000000; + case 0x01: return (m_system_in & 0xff) | (input_port_read(machine(), "PL1_1")<<8) | (input_port_read(machine(), "PL2_1")<<16) | 0xff000000; + case 0x02: return (m_system_in & 0xff) | (input_port_read(machine(), "PL1_2")<<8) | (input_port_read(machine(), "PL2_2")<<16) | 0xff000000; + case 0x04: return (m_system_in & 0xff) | (input_port_read(machine(), "PL1_3")<<8) | (input_port_read(machine(), "PL2_3")<<16) | 0xff000000; + case 0x08: return (m_system_in & 0xff) | (input_port_read(machine(), "PL1_4")<<8) | (input_port_read(machine(), "PL2_4")<<16) | 0xff000000; + case 0x10: return (m_system_in & 0xff) | (input_port_read(machine(), "PL1_5")<<8) | (input_port_read(machine(), "PL2_5")<<16) | 0xff000000; } - return (state->m_system_in & 0xff) | 0xffffff00; + return (m_system_in & 0xff) | 0xffffff00; } static INPUT_PORTS_START( tmmjprd ) @@ -609,24 +614,23 @@ static INPUT_PORTS_START( tmmjprd ) INPUT_PORTS_END -static WRITE32_HANDLER( tmmjprd_paletteram_dword_w ) +WRITE32_MEMBER(tmmjprd_state::tmmjprd_paletteram_dword_w) { int r,g,b; - COMBINE_DATA(&space->machine().generic.paletteram.u32[offset]); + COMBINE_DATA(&machine().generic.paletteram.u32[offset]); - b = ((space->machine().generic.paletteram.u32[offset] & 0x000000ff) >>0); - r = ((space->machine().generic.paletteram.u32[offset] & 0x0000ff00) >>8); - g = ((space->machine().generic.paletteram.u32[offset] & 0x00ff0000) >>16); + b = ((machine().generic.paletteram.u32[offset] & 0x000000ff) >>0); + r = ((machine().generic.paletteram.u32[offset] & 0x0000ff00) >>8); + g = ((machine().generic.paletteram.u32[offset] & 0x00ff0000) >>16); - palette_set_color(space->machine(),offset,MAKE_RGB(r,g,b)); + palette_set_color(machine(),offset,MAKE_RGB(r,g,b)); } /* notice that data & 0x4 is always cleared on brt_1 and set on brt_2. * * My wild guess is that bits 0,1 and 2 controls what palette entries to dim. */ -static WRITE32_HANDLER( tmmjprd_brt_1_w ) +WRITE32_MEMBER(tmmjprd_state::tmmjprd_brt_1_w) { - tmmjprd_state *state = space->machine().driver_data<tmmjprd_state>(); int i; double brt; int bank; @@ -635,17 +639,16 @@ static WRITE32_HANDLER( tmmjprd_brt_1_w ) brt = ((data & 0x78)>>3) / 15.0; bank = data & 0x4 ? 0x800 : 0; //guess - if(data & 0x80 && state->m_old_brt1 != brt) + if(data & 0x80 && m_old_brt1 != brt) { - state->m_old_brt1 = brt; + m_old_brt1 = brt; for (i = bank; i < 0x800+bank; i++) - palette_set_pen_contrast(space->machine(), i, brt); + palette_set_pen_contrast(machine(), i, brt); } } -static WRITE32_HANDLER( tmmjprd_brt_2_w ) +WRITE32_MEMBER(tmmjprd_state::tmmjprd_brt_2_w) { - tmmjprd_state *state = space->machine().driver_data<tmmjprd_state>(); int i; double brt; int bank; @@ -654,19 +657,19 @@ static WRITE32_HANDLER( tmmjprd_brt_2_w ) brt = ((data & 0x78)>>3) / 15.0; bank = data & 0x4 ? 0x800 : 0; //guess - if(data & 0x80 && state->m_old_brt2 != brt) + if(data & 0x80 && m_old_brt2 != brt) { - state->m_old_brt2 = brt; + m_old_brt2 = brt; for (i = bank; i < 0x800+bank; i++) - palette_set_pen_contrast(space->machine(), i, brt); + palette_set_pen_contrast(machine(), i, brt); } } static ADDRESS_MAP_START( tmmjprd_map, AS_PROGRAM, 32, tmmjprd_state ) AM_RANGE(0x000000, 0x1fffff) AM_ROM - AM_RANGE(0x200010, 0x200013) AM_READ_LEGACY(randomtmmjprds) // gfx chip status? - AM_RANGE(0x200980, 0x200983) AM_READ_LEGACY(randomtmmjprds) // sound chip status? - AM_RANGE(0x200984, 0x200987) AM_READ_LEGACY(randomtmmjprds) // sound chip status? + AM_RANGE(0x200010, 0x200013) AM_READ(randomtmmjprds) // gfx chip status? + AM_RANGE(0x200980, 0x200983) AM_READ(randomtmmjprds) // sound chip status? + AM_RANGE(0x200984, 0x200987) AM_READ(randomtmmjprds) // sound chip status? /* check these are used .. */ // AM_RANGE(0x200010, 0x200013) AM_WRITEONLY AM_BASE_LEGACY(&tmmjprd_viewregs0 ) AM_RANGE(0x200100, 0x200117) AM_WRITEONLY AM_BASE(m_tilemap_regs[0] ) // tilemap regs1 @@ -675,24 +678,24 @@ static ADDRESS_MAP_START( tmmjprd_map, AS_PROGRAM, 32, tmmjprd_state ) AM_RANGE(0x200160, 0x200177) AM_WRITEONLY AM_BASE(m_tilemap_regs[3] ) // tilemap regs4 AM_RANGE(0x200200, 0x20021b) AM_WRITEONLY AM_BASE(m_spriteregs ) // sprregs? // AM_RANGE(0x200300, 0x200303) AM_WRITE_LEGACY(tmmjprd_rombank_w) // used during rom testing, rombank/area select + something else? - AM_RANGE(0x20040c, 0x20040f) AM_WRITE_LEGACY(tmmjprd_brt_1_w) - AM_RANGE(0x200410, 0x200413) AM_WRITE_LEGACY(tmmjprd_brt_2_w) + AM_RANGE(0x20040c, 0x20040f) AM_WRITE(tmmjprd_brt_1_w) + AM_RANGE(0x200410, 0x200413) AM_WRITE(tmmjprd_brt_2_w) // AM_RANGE(0x200500, 0x200503) AM_WRITEONLY AM_BASE_LEGACY(&tmmjprd_viewregs7 ) -// AM_RANGE(0x200700, 0x20070f) AM_WRITE_LEGACY(tmmjprd_blitter_w) AM_BASE_LEGACY(&tmmjprd_blitterregs ) +// AM_RANGE(0x200700, 0x20070f) AM_WRITE(tmmjprd_blitter_w) AM_BASE_LEGACY(&tmmjprd_blitterregs ) // AM_RANGE(0x200800, 0x20080f) AM_WRITEONLY AM_BASE_LEGACY(&tmmjprd_viewregs9 ) // never changes? // AM_RANGE(0x200900, 0x20098f) AM_WRITE_LEGACY(tmmjprd_audio_w) /* hmm */ // AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_BASE_LEGACY(&tmmjprd_viewregs10 ) /* tilemaps */ - AM_RANGE(0x280000, 0x283fff) AM_READWRITE_LEGACY(tmmjprd_tilemap0_r,tmmjprd_tilemap0_w) - AM_RANGE(0x284000, 0x287fff) AM_READWRITE_LEGACY(tmmjprd_tilemap1_r,tmmjprd_tilemap1_w) - AM_RANGE(0x288000, 0x28bfff) AM_READWRITE_LEGACY(tmmjprd_tilemap2_r,tmmjprd_tilemap2_w) - AM_RANGE(0x28c000, 0x28ffff) AM_READWRITE_LEGACY(tmmjprd_tilemap3_r,tmmjprd_tilemap3_w) + AM_RANGE(0x280000, 0x283fff) AM_READWRITE(tmmjprd_tilemap0_r,tmmjprd_tilemap0_w) + AM_RANGE(0x284000, 0x287fff) AM_READWRITE(tmmjprd_tilemap1_r,tmmjprd_tilemap1_w) + AM_RANGE(0x288000, 0x28bfff) AM_READWRITE(tmmjprd_tilemap2_r,tmmjprd_tilemap2_w) + AM_RANGE(0x28c000, 0x28ffff) AM_READWRITE(tmmjprd_tilemap3_r,tmmjprd_tilemap3_w) /* ?? is palette ram shared with sprites in this case or just a different map */ AM_RANGE(0x290000, 0x29bfff) AM_RAM AM_BASE(m_spriteram) - AM_RANGE(0x29c000, 0x29ffff) AM_RAM_WRITE_LEGACY(tmmjprd_paletteram_dword_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x29c000, 0x29ffff) AM_RAM_WRITE(tmmjprd_paletteram_dword_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x400000, 0x400003) AM_READ_LEGACY(tmmjprd_mux_r) AM_DEVWRITE_LEGACY("eeprom", tmmjprd_eeprom_write) + AM_RANGE(0x400000, 0x400003) AM_READ(tmmjprd_mux_r) AM_DEVWRITE_LEGACY("eeprom", tmmjprd_eeprom_write) AM_RANGE(0xf00000, 0xffffff) AM_RAM ADDRESS_MAP_END diff --git a/src/mame/drivers/tomcat.c b/src/mame/drivers/tomcat.c index 407f236999a..e129d9bf1c2 100644 --- a/src/mame/drivers/tomcat.c +++ b/src/mame/drivers/tomcat.c @@ -47,135 +47,159 @@ public: UINT8 m_nvram[0x800]; int m_dsp_BIO; int m_dsp_idle; + DECLARE_WRITE16_MEMBER(tomcat_adcon_w); + DECLARE_READ16_MEMBER(tomcat_adcread_r); + DECLARE_READ16_MEMBER(tomcat_inputs_r); + DECLARE_WRITE16_MEMBER(tomcat_led1on_w); + DECLARE_WRITE16_MEMBER(tomcat_led2on_w); + DECLARE_WRITE16_MEMBER(tomcat_led2off_w); + DECLARE_WRITE16_MEMBER(tomcat_led1off_w); + DECLARE_WRITE16_MEMBER(tomcat_lnkmodel_w); + DECLARE_WRITE16_MEMBER(tomcat_errl_w); + DECLARE_WRITE16_MEMBER(tomcat_errh_w); + DECLARE_WRITE16_MEMBER(tomcat_ackl_w); + DECLARE_WRITE16_MEMBER(tomcat_ackh_w); + DECLARE_WRITE16_MEMBER(tomcat_lnkmodeh_w); + DECLARE_WRITE16_MEMBER(tomcat_txbuffl_w); + DECLARE_WRITE16_MEMBER(tomcat_txbuffh_w); + DECLARE_WRITE16_MEMBER(tomcat_sndresl_w); + DECLARE_WRITE16_MEMBER(tomcat_sndresh_w); + DECLARE_WRITE16_MEMBER(tomcat_mresl_w); + DECLARE_WRITE16_MEMBER(tomcat_mresh_w); + DECLARE_WRITE16_MEMBER(tomcat_irqclr_w); + DECLARE_READ16_MEMBER(tomcat_inputs2_r); + DECLARE_READ16_MEMBER(tomcat_320bio_r); + DECLARE_READ16_MEMBER(dsp_BIO_r); + DECLARE_READ16_MEMBER(tomcat_shared_ram_r); + DECLARE_WRITE16_MEMBER(tomcat_shared_ram_w); + DECLARE_READ8_MEMBER(tomcat_nvram_r); + DECLARE_WRITE8_MEMBER(tomcat_nvram_w); + DECLARE_WRITE8_MEMBER(soundlatches_w); }; -static WRITE16_HANDLER(tomcat_adcon_w) +WRITE16_MEMBER(tomcat_state::tomcat_adcon_w) { - tomcat_state *state = space->machine().driver_data<tomcat_state>(); - state->m_control_num = data; + m_control_num = data; } -static READ16_HANDLER(tomcat_adcread_r) +READ16_MEMBER(tomcat_state::tomcat_adcread_r) { - tomcat_state *state = space->machine().driver_data<tomcat_state>(); - switch( state->m_control_num ) + switch( m_control_num ) { - case 0: return input_port_read(space->machine(), "STICKY"); - case 1: return input_port_read(space->machine(), "STICKX"); + case 0: return input_port_read(machine(), "STICKY"); + case 1: return input_port_read(machine(), "STICKX"); default: return 0x7f7f; } } -static READ16_HANDLER(tomcat_inputs_r) +READ16_MEMBER(tomcat_state::tomcat_inputs_r) { UINT16 result = 0; if (ACCESSING_BITS_8_15) - result |= input_port_read(space->machine(), "IN0") << 8; + result |= input_port_read(machine(), "IN0") << 8; return result; } -static WRITE16_HANDLER(tomcat_led1on_w) +WRITE16_MEMBER(tomcat_state::tomcat_led1on_w) { - set_led_status(space->machine(), 1, 1); + set_led_status(machine(), 1, 1); } -static WRITE16_HANDLER(tomcat_led2on_w) +WRITE16_MEMBER(tomcat_state::tomcat_led2on_w) { - set_led_status(space->machine(), 2, 1); + set_led_status(machine(), 2, 1); } -static WRITE16_HANDLER(tomcat_led2off_w) +WRITE16_MEMBER(tomcat_state::tomcat_led2off_w) { - set_led_status(space->machine(), 2, 0); + set_led_status(machine(), 2, 0); } -static WRITE16_HANDLER(tomcat_led1off_w) +WRITE16_MEMBER(tomcat_state::tomcat_led1off_w) { - set_led_status(space->machine(), 1, 0); + set_led_status(machine(), 1, 0); } -static WRITE16_HANDLER(tomcat_lnkmodel_w) +WRITE16_MEMBER(tomcat_state::tomcat_lnkmodel_w) { // Link Mode Low (address strobe) // Master does not respond to Interrupts } -static WRITE16_HANDLER(tomcat_errl_w) +WRITE16_MEMBER(tomcat_state::tomcat_errl_w) { // Link Error Flag Low (address strobe) } -static WRITE16_HANDLER(tomcat_errh_w) +WRITE16_MEMBER(tomcat_state::tomcat_errh_w) { // Link Error Flag High (address strobe) } -static WRITE16_HANDLER(tomcat_ackl_w) +WRITE16_MEMBER(tomcat_state::tomcat_ackl_w) { // Link ACK Flag Low (address strobe) } -static WRITE16_HANDLER(tomcat_ackh_w) +WRITE16_MEMBER(tomcat_state::tomcat_ackh_w) { // Link ACK Flag High (address strobe) } -static WRITE16_HANDLER(tomcat_lnkmodeh_w) +WRITE16_MEMBER(tomcat_state::tomcat_lnkmodeh_w) { // Link Mode high (address strobe) } -static WRITE16_HANDLER(tomcat_txbuffl_w) +WRITE16_MEMBER(tomcat_state::tomcat_txbuffl_w) { // Link Buffer Control (address strobe) } -static WRITE16_HANDLER(tomcat_txbuffh_w) +WRITE16_MEMBER(tomcat_state::tomcat_txbuffh_w) { // Link Buffer Control high (address strobe) // Turn off TX (Link) Buffer } -static WRITE16_HANDLER(tomcat_sndresl_w) +WRITE16_MEMBER(tomcat_state::tomcat_sndresl_w) { // Sound Reset Low (Address Strobe) // Reset Sound System } -static WRITE16_HANDLER(tomcat_sndresh_w) +WRITE16_MEMBER(tomcat_state::tomcat_sndresh_w) { // Sound Reset high (Address Strobe) // Release reset of sound system } -static WRITE16_HANDLER(tomcat_mresl_w) +WRITE16_MEMBER(tomcat_state::tomcat_mresl_w) { // 320 Reset Low (Address Strobe) // Reset TMS320 - device_set_input_line(space->machine().device("dsp"), INPUT_LINE_RESET, ASSERT_LINE); + device_set_input_line(machine().device("dsp"), INPUT_LINE_RESET, ASSERT_LINE); } -static WRITE16_HANDLER(tomcat_mresh_w) +WRITE16_MEMBER(tomcat_state::tomcat_mresh_w) { - tomcat_state *state = space->machine().driver_data<tomcat_state>(); // 320 Reset high (Address Strobe) // Release reset of TMS320 - state->m_dsp_BIO = 0; - device_set_input_line(space->machine().device("dsp"), INPUT_LINE_RESET, CLEAR_LINE); + m_dsp_BIO = 0; + device_set_input_line(machine().device("dsp"), INPUT_LINE_RESET, CLEAR_LINE); } -static WRITE16_HANDLER(tomcat_irqclr_w) +WRITE16_MEMBER(tomcat_state::tomcat_irqclr_w) { // Clear IRQ Latch (Address Strobe) - cputag_set_input_line(space->machine(), "maincpu", 1, CLEAR_LINE); + cputag_set_input_line(machine(), "maincpu", 1, CLEAR_LINE); } -static READ16_HANDLER(tomcat_inputs2_r) +READ16_MEMBER(tomcat_state::tomcat_inputs2_r) { - tomcat_state *state = space->machine().driver_data<tomcat_state>(); /* * D15 LNKFLAG (Game Link) * D14 PC3 " " @@ -186,36 +210,34 @@ static READ16_HANDLER(tomcat_inputs2_r) * D9 /IDLE* (TMS320 System) * D8 */ - return state->m_dsp_idle ? 0 : (1 << 9); + return m_dsp_idle ? 0 : (1 << 9); } -static READ16_HANDLER(tomcat_320bio_r) +READ16_MEMBER(tomcat_state::tomcat_320bio_r) { - tomcat_state *state = space->machine().driver_data<tomcat_state>(); - state->m_dsp_BIO = 1; - space->machine().device<cpu_device>("maincpu")->suspend(SUSPEND_REASON_SPIN, 1); + m_dsp_BIO = 1; + machine().device<cpu_device>("maincpu")->suspend(SUSPEND_REASON_SPIN, 1); return 0; } -static READ16_HANDLER(dsp_BIO_r) +READ16_MEMBER(tomcat_state::dsp_BIO_r) { - tomcat_state *state = space->machine().driver_data<tomcat_state>(); - if ( cpu_get_pc(&space->device()) == 0x0001 ) + if ( cpu_get_pc(&space.device()) == 0x0001 ) { - if ( state->m_dsp_idle == 0 ) + if ( m_dsp_idle == 0 ) { - state->m_dsp_idle = 1; - state->m_dsp_BIO = 0; + m_dsp_idle = 1; + m_dsp_BIO = 0; } - return !state->m_dsp_BIO; + return !m_dsp_BIO; } - else if ( cpu_get_pc(&space->device()) == 0x0003 ) + else if ( cpu_get_pc(&space.device()) == 0x0003 ) { - if ( state->m_dsp_BIO == 1 ) + if ( m_dsp_BIO == 1 ) { - state->m_dsp_idle = 0; - state->m_dsp_BIO = 0; - space->machine().device<cpu_device>("maincpu")->resume(SUSPEND_REASON_SPIN ); + m_dsp_idle = 0; + m_dsp_BIO = 0; + machine().device<cpu_device>("maincpu")->resume(SUSPEND_REASON_SPIN ); return 0; } else @@ -226,62 +248,58 @@ static READ16_HANDLER(dsp_BIO_r) } else { - return !state->m_dsp_BIO; + return !m_dsp_BIO; } } -static READ16_HANDLER(tomcat_shared_ram_r) +READ16_MEMBER(tomcat_state::tomcat_shared_ram_r) { - tomcat_state *state = space->machine().driver_data<tomcat_state>(); - return state->m_shared_ram[offset]; + return m_shared_ram[offset]; } -static WRITE16_HANDLER(tomcat_shared_ram_w) +WRITE16_MEMBER(tomcat_state::tomcat_shared_ram_w) { - tomcat_state *state = space->machine().driver_data<tomcat_state>(); - COMBINE_DATA(&state->m_shared_ram[offset]); + COMBINE_DATA(&m_shared_ram[offset]); } -static READ8_HANDLER(tomcat_nvram_r) +READ8_MEMBER(tomcat_state::tomcat_nvram_r) { - tomcat_state *state = space->machine().driver_data<tomcat_state>(); - return state->m_nvram[offset]; + return m_nvram[offset]; } -static WRITE8_HANDLER(tomcat_nvram_w) +WRITE8_MEMBER(tomcat_state::tomcat_nvram_w) { - tomcat_state *state = space->machine().driver_data<tomcat_state>(); - state->m_nvram[offset] = data; + m_nvram[offset] = data; } static ADDRESS_MAP_START( tomcat_map, AS_PROGRAM, 16, tomcat_state ) AM_RANGE(0x000000, 0x00ffff) AM_ROM - AM_RANGE(0x402000, 0x402001) AM_READ_LEGACY(tomcat_adcread_r) AM_WRITE_LEGACY(tomcat_adcon_w) - AM_RANGE(0x404000, 0x404001) AM_READ_LEGACY(tomcat_inputs_r) AM_WRITE_LEGACY(avgdvg_go_word_w) + AM_RANGE(0x402000, 0x402001) AM_READ(tomcat_adcread_r) AM_WRITE(tomcat_adcon_w) + AM_RANGE(0x404000, 0x404001) AM_READ(tomcat_inputs_r) AM_WRITE_LEGACY(avgdvg_go_word_w) AM_RANGE(0x406000, 0x406001) AM_WRITE_LEGACY(avgdvg_reset_word_w) - AM_RANGE(0x408000, 0x408001) AM_READWRITE_LEGACY(tomcat_inputs2_r, watchdog_reset16_w) - AM_RANGE(0x40a000, 0x40a001) AM_READWRITE_LEGACY(tomcat_320bio_r, tomcat_irqclr_w) - AM_RANGE(0x40e000, 0x40e001) AM_WRITE_LEGACY(tomcat_led1on_w) - AM_RANGE(0x40e002, 0x40e003) AM_WRITE_LEGACY(tomcat_led2on_w) - AM_RANGE(0x40e004, 0x40e005) AM_WRITE_LEGACY(tomcat_mresl_w) - AM_RANGE(0x40e006, 0x40e007) AM_WRITE_LEGACY(tomcat_sndresl_w) - AM_RANGE(0x40e008, 0x40e009) AM_WRITE_LEGACY(tomcat_lnkmodel_w) - AM_RANGE(0x40e00a, 0x40e00b) AM_WRITE_LEGACY(tomcat_errl_w) - AM_RANGE(0x40e00c, 0x40e00d) AM_WRITE_LEGACY(tomcat_ackl_w) - AM_RANGE(0x40e00e, 0x40e00f) AM_WRITE_LEGACY(tomcat_txbuffl_w) - AM_RANGE(0x40e010, 0x40e011) AM_WRITE_LEGACY(tomcat_led1off_w) - AM_RANGE(0x40e012, 0x40e013) AM_WRITE_LEGACY(tomcat_led2off_w) - AM_RANGE(0x40e014, 0x40e015) AM_WRITE_LEGACY(tomcat_mresh_w) - AM_RANGE(0x40e016, 0x40e017) AM_WRITE_LEGACY(tomcat_sndresh_w) - AM_RANGE(0x40e018, 0x40e019) AM_WRITE_LEGACY(tomcat_lnkmodeh_w) - AM_RANGE(0x40e01a, 0x40e01b) AM_WRITE_LEGACY(tomcat_errh_w) - AM_RANGE(0x40e01c, 0x40e01d) AM_WRITE_LEGACY(tomcat_ackh_w) - AM_RANGE(0x40e01e, 0x40e01f) AM_WRITE_LEGACY(tomcat_txbuffh_w) + AM_RANGE(0x408000, 0x408001) AM_READWRITE(tomcat_inputs2_r, watchdog_reset16_w) + AM_RANGE(0x40a000, 0x40a001) AM_READWRITE(tomcat_320bio_r, tomcat_irqclr_w) + AM_RANGE(0x40e000, 0x40e001) AM_WRITE(tomcat_led1on_w) + AM_RANGE(0x40e002, 0x40e003) AM_WRITE(tomcat_led2on_w) + AM_RANGE(0x40e004, 0x40e005) AM_WRITE(tomcat_mresl_w) + AM_RANGE(0x40e006, 0x40e007) AM_WRITE(tomcat_sndresl_w) + AM_RANGE(0x40e008, 0x40e009) AM_WRITE(tomcat_lnkmodel_w) + AM_RANGE(0x40e00a, 0x40e00b) AM_WRITE(tomcat_errl_w) + AM_RANGE(0x40e00c, 0x40e00d) AM_WRITE(tomcat_ackl_w) + AM_RANGE(0x40e00e, 0x40e00f) AM_WRITE(tomcat_txbuffl_w) + AM_RANGE(0x40e010, 0x40e011) AM_WRITE(tomcat_led1off_w) + AM_RANGE(0x40e012, 0x40e013) AM_WRITE(tomcat_led2off_w) + AM_RANGE(0x40e014, 0x40e015) AM_WRITE(tomcat_mresh_w) + AM_RANGE(0x40e016, 0x40e017) AM_WRITE(tomcat_sndresh_w) + AM_RANGE(0x40e018, 0x40e019) AM_WRITE(tomcat_lnkmodeh_w) + AM_RANGE(0x40e01a, 0x40e01b) AM_WRITE(tomcat_errh_w) + AM_RANGE(0x40e01c, 0x40e01d) AM_WRITE(tomcat_ackh_w) + AM_RANGE(0x40e01e, 0x40e01f) AM_WRITE(tomcat_txbuffh_w) AM_RANGE(0x800000, 0x803fff) AM_RAM AM_BASE_LEGACY((UINT16**)&avgdvg_vectorram) AM_SIZE_LEGACY(&avgdvg_vectorram_size) - AM_RANGE(0xffa000, 0xffbfff) AM_READWRITE_LEGACY(tomcat_shared_ram_r, tomcat_shared_ram_w) + AM_RANGE(0xffa000, 0xffbfff) AM_READWRITE(tomcat_shared_ram_r, tomcat_shared_ram_w) AM_RANGE(0xffc000, 0xffcfff) AM_RAM AM_RANGE(0xffd000, 0xffdfff) AM_DEVREADWRITE8_LEGACY("m48t02", timekeeper_r, timekeeper_w, 0xff00) - AM_RANGE(0xffd000, 0xffdfff) AM_READWRITE8_LEGACY(tomcat_nvram_r, tomcat_nvram_w, 0x00ff) + AM_RANGE(0xffd000, 0xffdfff) AM_READWRITE8(tomcat_nvram_r, tomcat_nvram_w, 0x00ff) ADDRESS_MAP_END static ADDRESS_MAP_START( dsp_map, AS_PROGRAM, 16, tomcat_state ) @@ -289,10 +307,10 @@ static ADDRESS_MAP_START( dsp_map, AS_PROGRAM, 16, tomcat_state ) ADDRESS_MAP_END static ADDRESS_MAP_START( dsp_io_map, AS_IO, 16, tomcat_state ) - AM_RANGE(TMS32010_BIO, TMS32010_BIO) AM_READ_LEGACY(dsp_BIO_r) + AM_RANGE(TMS32010_BIO, TMS32010_BIO) AM_READ(dsp_BIO_r) ADDRESS_MAP_END -static WRITE8_HANDLER(soundlatches_w) +WRITE8_MEMBER(tomcat_state::soundlatches_w) { switch(offset) { @@ -309,7 +327,7 @@ static WRITE8_HANDLER(soundlatches_w) static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, tomcat_state ) AM_RANGE(0x0000, 0x1fff) AM_RAM AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w) - AM_RANGE(0x3000, 0x30df) AM_WRITE_LEGACY(soundlatches_w) + AM_RANGE(0x3000, 0x30df) AM_WRITE(soundlatches_w) AM_RANGE(0x30e0, 0x30e0) AM_NOP // COINRD Inputs: D7 = Coin L, D6 = Coin R, D5 = SOUNDFLAG AM_RANGE(0x5000, 0x507f) AM_RAM // 6532 ram AM_RANGE(0x5080, 0x509f) AM_DEVREADWRITE_LEGACY("riot", riot6532_r, riot6532_w) diff --git a/src/mame/drivers/tonton.c b/src/mame/drivers/tonton.c index 1379762b3d4..2b959efbaea 100644 --- a/src/mame/drivers/tonton.c +++ b/src/mame/drivers/tonton.c @@ -38,6 +38,7 @@ public: m_v9938(*this, "v9938") { } required_device<v9938_device> m_v9938; + DECLARE_WRITE8_MEMBER(tonton_outport_w); }; #define MAIN_CLOCK XTAL_21_4772MHz @@ -66,10 +67,10 @@ static void tonton_vdp0_interrupt(device_t *, v99x8_device &device, int i) * Multi-Purpose Output Port * *************************************************/ -static WRITE8_HANDLER( tonton_outport_w ) +WRITE8_MEMBER(tonton_state::tonton_outport_w) { /* lockout perhaps? */ - coin_counter_w(space->machine(), offset, data & 0x01); + coin_counter_w(machine(), offset, data & 0x01); // data & 2 is hopper related @@ -92,7 +93,7 @@ static ADDRESS_MAP_START( tonton_io, AS_IO, 8, tonton_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") - AM_RANGE(0x00, 0x01) AM_WRITE_LEGACY(tonton_outport_w) + AM_RANGE(0x00, 0x01) AM_WRITE(tonton_outport_w) AM_RANGE(0x02, 0x02) AM_READ_PORT("DSW1") AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW2") AM_RANGE(0x88, 0x8b) AM_DEVREADWRITE( "v9938", v9938_device, read, write ) diff --git a/src/mame/drivers/toratora.c b/src/mame/drivers/toratora.c index 93e9245ebdb..baf83c6a68c 100644 --- a/src/mame/drivers/toratora.c +++ b/src/mame/drivers/toratora.c @@ -43,6 +43,9 @@ public: pia6821_device *m_pia_u1; pia6821_device *m_pia_u2; pia6821_device *m_pia_u3; + DECLARE_WRITE8_MEMBER(clear_tv_w); + DECLARE_READ8_MEMBER(timer_r); + DECLARE_WRITE8_MEMBER(clear_timer_w); }; @@ -98,10 +101,9 @@ static SCREEN_UPDATE_RGB32( toratora ) } -static WRITE8_HANDLER( clear_tv_w ) +WRITE8_MEMBER(toratora_state::clear_tv_w) { - toratora_state *state = space->machine().driver_data<toratora_state>(); - state->m_clear_tv = 1; + m_clear_tv = 1; } @@ -156,16 +158,14 @@ static INTERRUPT_GEN( toratora_timer ) state->m_pia_u1->ca2_w(input_port_read(device->machine(), "INPUT") & 0x20); } -static READ8_HANDLER( timer_r ) +READ8_MEMBER(toratora_state::timer_r) { - toratora_state *state = space->machine().driver_data<toratora_state>(); - return state->m_timer; + return m_timer; } -static WRITE8_HANDLER( clear_timer_w ) +WRITE8_MEMBER(toratora_state::clear_timer_w) { - toratora_state *state = space->machine().driver_data<toratora_state>(); - state->m_timer = 0; + m_timer = 0; } @@ -314,8 +314,8 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, toratora_state ) AM_RANGE(0x8000, 0x9fff) AM_RAM AM_BASE_SIZE(m_videoram, m_videoram_size) AM_RANGE(0xa000, 0xf047) AM_NOP AM_RANGE(0xf048, 0xf049) AM_NOP - AM_RANGE(0xf04a, 0xf04a) AM_WRITE_LEGACY(clear_tv_w) /* the read is mark *LEDEN, but not used */ - AM_RANGE(0xf04b, 0xf04b) AM_READWRITE_LEGACY(timer_r, clear_timer_w) + AM_RANGE(0xf04a, 0xf04a) AM_WRITE(clear_tv_w) /* the read is mark *LEDEN, but not used */ + AM_RANGE(0xf04b, 0xf04b) AM_READWRITE(timer_r, clear_timer_w) AM_RANGE(0xa04c, 0xf09f) AM_NOP AM_RANGE(0xf0a0, 0xf0a3) AM_DEVREADWRITE("pia_u1", pia6821_device, read, write) AM_RANGE(0xf0a4, 0xf0a7) AM_DEVREADWRITE("pia_u3", pia6821_device, read, write) diff --git a/src/mame/drivers/tourvis.c b/src/mame/drivers/tourvis.c index 7d4366c2f8f..e6e5d23860d 100644 --- a/src/mame/drivers/tourvis.c +++ b/src/mame/drivers/tourvis.c @@ -193,6 +193,7 @@ public: tourvision_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) { } + DECLARE_WRITE8_MEMBER(tourvision_8085_d000_w); }; @@ -287,7 +288,7 @@ static ADDRESS_MAP_START( pce_io , AS_IO, 8, tourvision_state ) AM_RANGE( 0x00, 0x03) AM_READWRITE_LEGACY(vdc_0_r, vdc_0_w ) ADDRESS_MAP_END -static WRITE8_HANDLER( tourvision_8085_d000_w ) +WRITE8_MEMBER(tourvision_state::tourvision_8085_d000_w) { //logerror( "D000 (8085) write %02x\n", data ); } @@ -300,7 +301,7 @@ static ADDRESS_MAP_START(tourvision_8085_map, AS_PROGRAM, 8, tourvision_state ) AM_RANGE(0xa000, 0xa000) AM_READ_PORT("DSW2") AM_RANGE(0xb000, 0xb000) AM_READNOP // unknown (must NOT be == 0x03 ? code at 0x1154) AM_RANGE(0xc000, 0xc000) AM_READ_PORT("SYSTEM") - AM_RANGE(0xd000, 0xd000) AM_WRITE_LEGACY(tourvision_8085_d000_w ) + AM_RANGE(0xd000, 0xd000) AM_WRITE(tourvision_8085_d000_w ) AM_RANGE(0xe000, 0xe1ff) AM_RAM AM_RANGE(0xf000, 0xf000) AM_READNOP // protection or internal counter ? there is sometimes some data in BIOS0 which is replaced by 0xff in BIOS1 ADDRESS_MAP_END diff --git a/src/mame/drivers/trvmadns.c b/src/mame/drivers/trvmadns.c index 3fa5a72b7f5..0a6a471d11d 100644 --- a/src/mame/drivers/trvmadns.c +++ b/src/mame/drivers/trvmadns.c @@ -75,12 +75,17 @@ public: UINT8 *m_gfxram; UINT8 *m_tileram; int m_old_data; + DECLARE_WRITE8_MEMBER(trvmadns_banking_w); + DECLARE_WRITE8_MEMBER(trvmadns_gfxram_w); + DECLARE_WRITE8_MEMBER(trvmadns_palette_w); + DECLARE_WRITE8_MEMBER(w2); + DECLARE_WRITE8_MEMBER(w3); + DECLARE_WRITE8_MEMBER(trvmadns_tileram_w); }; -static WRITE8_HANDLER( trvmadns_banking_w ) +WRITE8_MEMBER(trvmadns_state::trvmadns_banking_w) { - trvmadns_state *state = space->machine().driver_data<trvmadns_state>(); UINT8 *rom; int address = 0; @@ -91,7 +96,7 @@ static WRITE8_HANDLER( trvmadns_banking_w ) } else if((data & 0xf0) == 0x80 || (data & 0xf0) == 0x90) { - rom = space->machine().region("user2")->base(); + rom = machine().region("user2")->base(); switch(data & 0xf) { @@ -107,19 +112,19 @@ static WRITE8_HANDLER( trvmadns_banking_w ) address |= (data & 0x10) ? 0x10000 : 0; - memory_set_bankptr(space->machine(), "bank1", &rom[address]); - memory_set_bankptr(space->machine(), "bank2", &rom[address + 0x1000]); + memory_set_bankptr(machine(), "bank1", &rom[address]); + memory_set_bankptr(machine(), "bank2", &rom[address + 0x1000]); } else { - if(data != state->m_old_data) + if(data != m_old_data) { - state->m_old_data = data; + m_old_data = data; logerror("port80 = %02X\n",data); //logerror("port80 = %02X\n",data); } - rom = space->machine().region("user1")->base(); + rom = machine().region("user1")->base(); /* 7 @@ -147,33 +152,32 @@ static WRITE8_HANDLER( trvmadns_banking_w ) // logerror("add = %X\n",address); - memory_set_bankptr(space->machine(), "bank1", &rom[address]); + memory_set_bankptr(machine(), "bank1", &rom[address]); } } -static WRITE8_HANDLER( trvmadns_gfxram_w ) +WRITE8_MEMBER(trvmadns_state::trvmadns_gfxram_w) { - trvmadns_state *state = space->machine().driver_data<trvmadns_state>(); - state->m_gfxram[offset] = data; - gfx_element_mark_dirty(space->machine().gfx[0], offset/16); + m_gfxram[offset] = data; + gfx_element_mark_dirty(machine().gfx[0], offset/16); } -static WRITE8_HANDLER( trvmadns_palette_w ) +WRITE8_MEMBER(trvmadns_state::trvmadns_palette_w) { int r,g,b,datax; - space->machine().generic.paletteram.u8[offset] = data; + machine().generic.paletteram.u8[offset] = data; offset>>=1; - datax=space->machine().generic.paletteram.u8[offset*2+1]+256*space->machine().generic.paletteram.u8[offset*2]; + datax=machine().generic.paletteram.u8[offset*2+1]+256*machine().generic.paletteram.u8[offset*2]; b = (((datax & 0x0007)>>0) | ((datax & 0x0200)>>6)) ^ 0xf; r = (((datax & 0x0038)>>3) | ((datax & 0x0400)>>7)) ^ 0xf; g = (((datax & 0x01c0)>>6) | ((datax & 0x0800)>>8)) ^ 0xf; - palette_set_color_rgb(space->machine(), offset, pal4bit(r), pal4bit(g), pal4bit(b)); + palette_set_color_rgb(machine(), offset, pal4bit(r), pal4bit(g), pal4bit(b)); } -static WRITE8_HANDLER( w2 ) +WRITE8_MEMBER(trvmadns_state::w2) { /* static int old = -1; if(data!=old) @@ -181,7 +185,7 @@ static WRITE8_HANDLER( w2 ) */ } -static WRITE8_HANDLER( w3 ) +WRITE8_MEMBER(trvmadns_state::w3) { /* static int old = -1; if(data!=old) @@ -189,22 +193,21 @@ static WRITE8_HANDLER( w3 ) */ } -static WRITE8_HANDLER( trvmadns_tileram_w ) +WRITE8_MEMBER(trvmadns_state::trvmadns_tileram_w) { - trvmadns_state *state = space->machine().driver_data<trvmadns_state>(); if(offset==0) { - if(cpu_get_previouspc(&space->device())==0x29e9)// || cpu_get_previouspc(&space->device())==0x1b3f) //29f5 + if(cpu_get_previouspc(&space.device())==0x29e9)// || cpu_get_previouspc(&space.device())==0x1b3f) //29f5 { - cputag_set_input_line(space->machine(), "maincpu", 0, HOLD_LINE); + cputag_set_input_line(machine(), "maincpu", 0, HOLD_LINE); } // else -// logerror("%x \n", cpu_get_previouspc(&space->device())); +// logerror("%x \n", cpu_get_previouspc(&space.device())); } - state->m_tileram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset >> 1); + m_tileram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset >> 1); } @@ -212,19 +215,19 @@ static ADDRESS_MAP_START( cpu_map, AS_PROGRAM, 8, trvmadns_state ) AM_RANGE(0x0000, 0x5fff) AM_ROM AM_RANGE(0x6000, 0x6fff) AM_ROMBANK("bank1") AM_RANGE(0x7000, 0x7fff) AM_ROMBANK("bank2") - AM_RANGE(0x6000, 0x7fff) AM_WRITE_LEGACY(trvmadns_gfxram_w) AM_BASE(m_gfxram) + AM_RANGE(0x6000, 0x7fff) AM_WRITE(trvmadns_gfxram_w) AM_BASE(m_gfxram) AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE_LEGACY(trvmadns_tileram_w) AM_BASE(m_tileram) - AM_RANGE(0xc000, 0xc01f) AM_RAM_WRITE_LEGACY(trvmadns_palette_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0xe000, 0xe000) AM_WRITE_LEGACY(w2)//NOP - AM_RANGE(0xe004, 0xe004) AM_WRITE_LEGACY(w3)//NOP + AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE(trvmadns_tileram_w) AM_BASE(m_tileram) + AM_RANGE(0xc000, 0xc01f) AM_RAM_WRITE(trvmadns_palette_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0xe000, 0xe000) AM_WRITE(w2)//NOP + AM_RANGE(0xe004, 0xe004) AM_WRITE(w3)//NOP ADDRESS_MAP_END static ADDRESS_MAP_START( io_map, AS_IO, 8, trvmadns_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x01) AM_DEVWRITE_LEGACY("aysnd", ay8910_address_data_w) AM_RANGE(0x02, 0x02) AM_READ_PORT("IN0") - AM_RANGE(0x80, 0x80) AM_WRITE_LEGACY(trvmadns_banking_w) + AM_RANGE(0x80, 0x80) AM_WRITE(trvmadns_banking_w) ADDRESS_MAP_END static INPUT_PORTS_START( trvmadns ) diff --git a/src/mame/drivers/ttchamp.c b/src/mame/drivers/ttchamp.c index fc15a78a21f..8ab427dc98c 100644 --- a/src/mame/drivers/ttchamp.c +++ b/src/mame/drivers/ttchamp.c @@ -53,6 +53,11 @@ public: UINT16 *m_peno_vram; UINT16 m_paloff; + DECLARE_WRITE16_MEMBER(paloff_w); + DECLARE_WRITE16_MEMBER(pcup_prgbank_w); + DECLARE_WRITE16_MEMBER(paldat_w); + DECLARE_READ16_MEMBER(peno_rand); + DECLARE_READ16_MEMBER(peno_rand2); }; @@ -93,41 +98,39 @@ static SCREEN_UPDATE_IND16(ttchamp) } -static WRITE16_HANDLER( paloff_w ) +WRITE16_MEMBER(ttchamp_state::paloff_w) { - ttchamp_state *state = space->machine().driver_data<ttchamp_state>(); - COMBINE_DATA(&state->m_paloff); + COMBINE_DATA(&m_paloff); } #ifdef UNUSED_FUNCTION -static WRITE16_HANDLER( pcup_prgbank_w ) +WRITE16_MEMBER(ttchamp_state::pcup_prgbank_w) { int bank; - UINT8 *ROM1 = space->machine().region("user1")->base(); + UINT8 *ROM1 = machine().region("user1")->base(); if (ACCESSING_BITS_0_7) { bank = (data>>4) &0x07; - memory_set_bankptr(space->machine(), "bank2",&ROM1[0x80000*(bank)]); + memory_set_bankptr(machine(), "bank2",&ROM1[0x80000*(bank)]); } } #endif -static WRITE16_HANDLER( paldat_w ) +WRITE16_MEMBER(ttchamp_state::paldat_w) { - ttchamp_state *state = space->machine().driver_data<ttchamp_state>(); - palette_set_color_rgb(space->machine(),state->m_paloff & 0x7fff,pal5bit(data>>0),pal5bit(data>>5),pal5bit(data>>10)); + palette_set_color_rgb(machine(),m_paloff & 0x7fff,pal5bit(data>>0),pal5bit(data>>5),pal5bit(data>>10)); } -static READ16_HANDLER( peno_rand ) +READ16_MEMBER(ttchamp_state::peno_rand) { - return 0xffff;// space->machine().rand(); + return 0xffff;// machine().rand(); } #ifdef UNUSED_FUNCTION -static READ16_HANDLER( peno_rand2 ) +READ16_MEMBER(ttchamp_state::peno_rand2) { - return space->machine().rand(); + return machine().rand(); } #endif @@ -144,18 +147,18 @@ static ADDRESS_MAP_START( ttchamp_io, AS_IO, 16, ttchamp_state ) AM_RANGE(0x0002, 0x0003) AM_READ_PORT("SYSTEM") AM_RANGE(0x0004, 0x0005) AM_READ_PORT("P1_P2") -// AM_RANGE(0x0018, 0x0019) AM_READ_LEGACY(peno_rand2) -// AM_RANGE(0x001e, 0x001f) AM_READ_LEGACY(peno_rand2) +// AM_RANGE(0x0018, 0x0019) AM_READ(peno_rand2) +// AM_RANGE(0x001e, 0x001f) AM_READ(peno_rand2) - AM_RANGE(0x0008, 0x0009) AM_WRITE_LEGACY(paldat_w) - AM_RANGE(0x000a, 0x000b) AM_WRITE_LEGACY(paloff_w) + AM_RANGE(0x0008, 0x0009) AM_WRITE(paldat_w) + AM_RANGE(0x000a, 0x000b) AM_WRITE(paloff_w) -// AM_RANGE(0x0010, 0x0010) AM_WRITE_LEGACY(pcup_prgbank_w) +// AM_RANGE(0x0010, 0x0010) AM_WRITE(pcup_prgbank_w) AM_RANGE(0x0010, 0x0011) AM_WRITENOP AM_RANGE(0x0020, 0x0021) AM_WRITENOP - AM_RANGE(0x0034, 0x0035) AM_READ_LEGACY(peno_rand) AM_WRITENOP + AM_RANGE(0x0034, 0x0035) AM_READ(peno_rand) AM_WRITENOP ADDRESS_MAP_END diff --git a/src/mame/drivers/tugboat.c b/src/mame/drivers/tugboat.c index d3ec40ef62c..5218edec8ca 100644 --- a/src/mame/drivers/tugboat.c +++ b/src/mame/drivers/tugboat.c @@ -40,6 +40,9 @@ public: int m_reg0; int m_reg1; int m_ctrl; + DECLARE_WRITE8_MEMBER(tugboat_hd46505_0_w); + DECLARE_WRITE8_MEMBER(tugboat_hd46505_1_w); + DECLARE_WRITE8_MEMBER(tugboat_score_w); }; @@ -69,25 +72,22 @@ static PALETTE_INIT( tugboat ) /* see mc6845.c. That file is only a placeholder, I process the writes here because I need the start_addr register to handle scrolling */ -static WRITE8_HANDLER( tugboat_hd46505_0_w ) +WRITE8_MEMBER(tugboat_state::tugboat_hd46505_0_w) { - tugboat_state *state = space->machine().driver_data<tugboat_state>(); - if (offset == 0) state->m_reg0 = data & 0x0f; - else if (state->m_reg0 < 18) state->m_hd46505_0_reg[state->m_reg0] = data; + if (offset == 0) m_reg0 = data & 0x0f; + else if (m_reg0 < 18) m_hd46505_0_reg[m_reg0] = data; } -static WRITE8_HANDLER( tugboat_hd46505_1_w ) +WRITE8_MEMBER(tugboat_state::tugboat_hd46505_1_w) { - tugboat_state *state = space->machine().driver_data<tugboat_state>(); - if (offset == 0) state->m_reg1 = data & 0x0f; - else if (state->m_reg1 < 18) state->m_hd46505_1_reg[state->m_reg1] = data; + if (offset == 0) m_reg1 = data & 0x0f; + else if (m_reg1 < 18) m_hd46505_1_reg[m_reg1] = data; } -static WRITE8_HANDLER( tugboat_score_w ) +WRITE8_MEMBER(tugboat_state::tugboat_score_w) { - tugboat_state *state = space->machine().driver_data<tugboat_state>(); - if (offset>=0x8) state->m_ram[0x291d + 32*offset + 32*(1-8)] = data ^ 0x0f; - if (offset<0x8 ) state->m_ram[0x291d + 32*offset + 32*9] = data ^ 0x0f; + if (offset>=0x8) m_ram[0x291d + 32*offset + 32*(1-8)] = data ^ 0x0f; + if (offset<0x8 ) m_ram[0x291d + 32*offset + 32*9] = data ^ 0x0f; } static void draw_tilemap(running_machine &machine, bitmap_ind16 &bitmap,const rectangle &cliprect, @@ -213,12 +213,12 @@ static MACHINE_RESET( tugboat ) static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, tugboat_state ) AM_RANGE(0x0000, 0x01ff) AM_RAM AM_BASE(m_ram) AM_RANGE(0x1060, 0x1061) AM_DEVWRITE_LEGACY("aysnd", ay8910_address_data_w) - AM_RANGE(0x10a0, 0x10a1) AM_WRITE_LEGACY(tugboat_hd46505_0_w) /* scrolling is performed changing the start_addr register (0C/0D) */ - AM_RANGE(0x10c0, 0x10c1) AM_WRITE_LEGACY(tugboat_hd46505_1_w) + AM_RANGE(0x10a0, 0x10a1) AM_WRITE(tugboat_hd46505_0_w) /* scrolling is performed changing the start_addr register (0C/0D) */ + AM_RANGE(0x10c0, 0x10c1) AM_WRITE(tugboat_hd46505_1_w) AM_RANGE(0x11e4, 0x11e7) AM_DEVREADWRITE("pia0", pia6821_device, read, write) AM_RANGE(0x11e8, 0x11eb) AM_DEVREADWRITE("pia1", pia6821_device, read, write) //AM_RANGE(0x1700, 0x1fff) AM_RAM - AM_RANGE(0x18e0, 0x18ef) AM_WRITE_LEGACY(tugboat_score_w) + AM_RANGE(0x18e0, 0x18ef) AM_WRITE(tugboat_score_w) AM_RANGE(0x2000, 0x2fff) AM_RAM /* tilemap RAM */ AM_RANGE(0x4000, 0x7fff) AM_ROM AM_RANGE(0xfff0, 0xffff) AM_ROM /* vectors */ diff --git a/src/mame/drivers/twins.c b/src/mame/drivers/twins.c index 7458a6bb6ba..4ef4432c34c 100644 --- a/src/mame/drivers/twins.c +++ b/src/mame/drivers/twins.c @@ -62,32 +62,36 @@ public: UINT16 *m_videoram; UINT16 *m_pal; UINT16 m_paloff; + DECLARE_READ16_MEMBER(twins_port4_r); + DECLARE_WRITE16_MEMBER(twins_port4_w); + DECLARE_WRITE16_MEMBER(port6_pal0_w); + DECLARE_WRITE16_MEMBER(porte_paloff0_w); + DECLARE_WRITE16_MEMBER(twinsa_port4_w); + DECLARE_READ16_MEMBER(twinsa_unk_r); }; /* port 4 is eeprom */ -static READ16_HANDLER( twins_port4_r ) +READ16_MEMBER(twins_state::twins_port4_r) { return 0xffff; } -static WRITE16_HANDLER( twins_port4_w ) +WRITE16_MEMBER(twins_state::twins_port4_w) { } -static WRITE16_HANDLER( port6_pal0_w ) +WRITE16_MEMBER(twins_state::port6_pal0_w) { - twins_state *state = space->machine().driver_data<twins_state>(); - COMBINE_DATA(&state->m_pal[state->m_paloff]); - state->m_paloff = (state->m_paloff + 1) & 0xff; + COMBINE_DATA(&m_pal[m_paloff]); + m_paloff = (m_paloff + 1) & 0xff; } /* ??? weird ..*/ -static WRITE16_HANDLER( porte_paloff0_w ) +WRITE16_MEMBER(twins_state::porte_paloff0_w) { - twins_state *state = space->machine().driver_data<twins_state>(); - state->m_paloff = 0; + m_paloff = 0; } static ADDRESS_MAP_START( twins_map, AS_PROGRAM, 16, twins_state ) @@ -99,9 +103,9 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( twins_io, AS_IO, 16, twins_state ) AM_RANGE(0x0000, 0x0003) AM_DEVWRITE8_LEGACY("aysnd", ay8910_address_data_w, 0x00ff) AM_RANGE(0x0002, 0x0003) AM_DEVREAD8_LEGACY("aysnd", ay8910_r, 0x00ff) - AM_RANGE(0x0004, 0x0005) AM_READWRITE_LEGACY(twins_port4_r, twins_port4_w) - AM_RANGE(0x0006, 0x0007) AM_WRITE_LEGACY(port6_pal0_w) - AM_RANGE(0x000e, 0x000f) AM_WRITE_LEGACY(porte_paloff0_w) + AM_RANGE(0x0004, 0x0005) AM_READWRITE(twins_port4_r, twins_port4_w) + AM_RANGE(0x0006, 0x0007) AM_WRITE(port6_pal0_w) + AM_RANGE(0x000e, 0x000f) AM_WRITE(porte_paloff0_w) ADDRESS_MAP_END static VIDEO_START(twins) @@ -247,26 +251,25 @@ static SCREEN_UPDATE_IND16(twinsa) return 0; } -static WRITE16_HANDLER( twinsa_port4_w ) +WRITE16_MEMBER(twins_state::twinsa_port4_w) { - twins_state *state = space->machine().driver_data<twins_state>(); - state->m_pal[state->m_paloff&0xfff] = data; - state->m_paloff++; -// printf("paloff %04x\n",state->m_paloff); + m_pal[m_paloff&0xfff] = data; + m_paloff++; +// printf("paloff %04x\n",m_paloff); } -static READ16_HANDLER( twinsa_unk_r ) +READ16_MEMBER(twins_state::twinsa_unk_r) { return 0xffff; } static ADDRESS_MAP_START( twinsa_io, AS_IO, 16, twins_state ) - AM_RANGE(0x0000, 0x0001) AM_READWRITE_LEGACY(twinsa_unk_r, porte_paloff0_w) - AM_RANGE(0x0002, 0x0003) AM_WRITE_LEGACY(porte_paloff0_w) - AM_RANGE(0x0004, 0x0005) AM_WRITE_LEGACY(twinsa_port4_w) // palette on this set + AM_RANGE(0x0000, 0x0001) AM_READWRITE(twinsa_unk_r, porte_paloff0_w) + AM_RANGE(0x0002, 0x0003) AM_WRITE(porte_paloff0_w) + AM_RANGE(0x0004, 0x0005) AM_WRITE(twinsa_port4_w) // palette on this set AM_RANGE(0x0008, 0x0009) AM_DEVWRITE8_LEGACY("aysnd", ay8910_address_w, 0x00ff) AM_RANGE(0x0010, 0x0011) AM_DEVREADWRITE8_LEGACY("aysnd", ay8910_r, ay8910_data_w, 0x00ff) - AM_RANGE(0x0018, 0x0019) AM_READ_LEGACY(twins_port4_r) AM_WRITE_LEGACY(twins_port4_w) + AM_RANGE(0x0018, 0x0019) AM_READ(twins_port4_r) AM_WRITE(twins_port4_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/uapce.c b/src/mame/drivers/uapce.c index ec5e515b943..cbd8f1133d9 100644 --- a/src/mame/drivers/uapce.c +++ b/src/mame/drivers/uapce.c @@ -106,6 +106,9 @@ public: : driver_device(mconfig, type, tag) { } UINT8 m_jamma_if_control_latch; + DECLARE_WRITE8_MEMBER(jamma_if_control_latch_w); + DECLARE_READ8_MEMBER(jamma_if_control_latch_r); + DECLARE_READ8_MEMBER(jamma_if_read_dsw); }; #define UAPCE_SOUND_EN NODE_10 @@ -118,22 +121,21 @@ static DISCRETE_SOUND_START(uapce) DISCRETE_SOUND_END -static WRITE8_HANDLER( jamma_if_control_latch_w ) +WRITE8_MEMBER(uapce_state::jamma_if_control_latch_w) { - uapce_state *state = space->machine().driver_data<uapce_state>(); - UINT8 diff = data ^ state->m_jamma_if_control_latch; - state->m_jamma_if_control_latch = data; + UINT8 diff = data ^ m_jamma_if_control_latch; + m_jamma_if_control_latch = data; /* D7 : Controls relay which connects the PCE R-AUDIO output to the common audio path. (1= Relay closed, 0= Relay open) */ - space->machine().sound().system_enable( (data >> 7) & 1 ); + machine().sound().system_enable( (data >> 7) & 1 ); /* D6 : Output to JAMMA connector KEY pin. Connected to /RESET on the PCE backplane connector. (1= /RESET not asserted, 0= /RESET asserted) */ if ( diff & 0x40 ) { - cputag_set_input_line(space->machine(), "maincpu", INPUT_LINE_RESET, (data & 0x40) ? CLEAR_LINE : ASSERT_LINE); + cputag_set_input_line(machine(), "maincpu", INPUT_LINE_RESET, (data & 0x40) ? CLEAR_LINE : ASSERT_LINE); } /* D5 : Connected to a TIP31 which may control the coin meter: @@ -143,7 +145,7 @@ static WRITE8_HANDLER( jamma_if_control_latch_w ) Pin 'z' is a normally ground connection, but on this board it is isolated from ground. The wiring harness also has the corresponding wire separate from the others. */ - coin_counter_w(space->machine(), 0, BIT(data,5)); + coin_counter_w(machine(), 0, BIT(data,5)); /* D4 : Connects the START1 switch input from the JAMMA connector to the "RUN" key input of the control pad multiplexer. @@ -153,7 +155,7 @@ static WRITE8_HANDLER( jamma_if_control_latch_w ) 752 Hz (D-3) square wave to be output on the common audio path. (1= Tone output ON, 0= Tone output OFF) */ - discrete_sound_w(space->machine().device("discrete"), UAPCE_SOUND_EN, BIT(data,3)); + discrete_sound_w(machine().device("discrete"), UAPCE_SOUND_EN, BIT(data,3)); /* D2 : Not latched, though software writes to this bit like it is. */ @@ -162,17 +164,16 @@ static WRITE8_HANDLER( jamma_if_control_latch_w ) /* D0 : Not latched. */ } -static READ8_HANDLER( jamma_if_control_latch_r ) +READ8_MEMBER(uapce_state::jamma_if_control_latch_r) { - uapce_state *state = space->machine().driver_data<uapce_state>(); - return state->m_jamma_if_control_latch & 0x08; + return m_jamma_if_control_latch & 0x08; } -static READ8_HANDLER( jamma_if_read_dsw ) +READ8_MEMBER(uapce_state::jamma_if_read_dsw) { UINT8 dsw_val; - dsw_val = input_port_read(space->machine(), "DSW" ); + dsw_val = input_port_read(machine(), "DSW" ); if ( BIT( offset, 7 ) == 0 ) { @@ -233,10 +234,10 @@ static MACHINE_RESET( uapce ) static ADDRESS_MAP_START( z80_map, AS_PROGRAM, 8, uapce_state ) AM_RANGE( 0x0000, 0x07FF) AM_ROM AM_RANGE( 0x0800, 0x0FFF) AM_RAM - AM_RANGE( 0x1000, 0x17FF) AM_WRITE_LEGACY(jamma_if_control_latch_w ) - AM_RANGE( 0x1800, 0x1FFF) AM_READ_LEGACY(jamma_if_read_dsw ) + AM_RANGE( 0x1000, 0x17FF) AM_WRITE(jamma_if_control_latch_w ) + AM_RANGE( 0x1800, 0x1FFF) AM_READ(jamma_if_read_dsw ) AM_RANGE( 0x2000, 0x27FF) AM_READ_PORT( "COIN" ) - AM_RANGE( 0x2800, 0x2FFF) AM_READ_LEGACY(jamma_if_control_latch_r ) + AM_RANGE( 0x2800, 0x2FFF) AM_READ(jamma_if_control_latch_r ) ADDRESS_MAP_END diff --git a/src/mame/drivers/ultrsprt.c b/src/mame/drivers/ultrsprt.c index dfbfa4e7ee4..db7879519e0 100644 --- a/src/mame/drivers/ultrsprt.c +++ b/src/mame/drivers/ultrsprt.c @@ -25,6 +25,12 @@ public: UINT32 *m_vram; UINT32 *m_workram; + DECLARE_WRITE32_MEMBER(palette_w); + DECLARE_READ32_MEMBER(eeprom_r); + DECLARE_WRITE32_MEMBER(eeprom_w); + DECLARE_WRITE32_MEMBER(int_ack_w); + DECLARE_READ16_MEMBER(K056800_68k_r); + DECLARE_WRITE16_MEMBER(K056800_68k_w); }; @@ -55,29 +61,29 @@ static SCREEN_UPDATE_IND16( ultrsprt ) return 0; } -static WRITE32_HANDLER( palette_w ) +WRITE32_MEMBER(ultrsprt_state::palette_w) { - COMBINE_DATA(&space->machine().generic.paletteram.u32[offset]); - data = space->machine().generic.paletteram.u32[offset]; + COMBINE_DATA(&machine().generic.paletteram.u32[offset]); + data = machine().generic.paletteram.u32[offset]; - palette_set_color(space->machine(), (offset*2)+0, MAKE_RGB(pal5bit(data >> 26), pal5bit(data >> 21), pal5bit(data >> 16))); - palette_set_color(space->machine(), (offset*2)+1, MAKE_RGB(pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0))); + palette_set_color(machine(), (offset*2)+0, MAKE_RGB(pal5bit(data >> 26), pal5bit(data >> 21), pal5bit(data >> 16))); + palette_set_color(machine(), (offset*2)+1, MAKE_RGB(pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0))); } -static READ32_HANDLER( eeprom_r ) +READ32_MEMBER(ultrsprt_state::eeprom_r) { UINT32 r = 0; if (ACCESSING_BITS_24_31) - r |= input_port_read(space->machine(), "SERVICE"); + r |= input_port_read(machine(), "SERVICE"); return r; } -static WRITE32_HANDLER( eeprom_w ) +WRITE32_MEMBER(ultrsprt_state::eeprom_w) { if (ACCESSING_BITS_24_31) - input_port_write(space->machine(), "EEPROMOUT", data, 0xffffffff); + input_port_write(machine(), "EEPROMOUT", data, 0xffffffff); } static CUSTOM_INPUT( analog_ctrl_r ) @@ -86,9 +92,9 @@ static CUSTOM_INPUT( analog_ctrl_r ) return input_port_read(field.machine(), tag) & 0xfff; } -static WRITE32_HANDLER( int_ack_w ) +WRITE32_MEMBER(ultrsprt_state::int_ack_w) { - cputag_set_input_line(space->machine(), "maincpu", INPUT_LINE_IRQ1, CLEAR_LINE); + cputag_set_input_line(machine(), "maincpu", INPUT_LINE_IRQ1, CLEAR_LINE); } static MACHINE_START( ultrsprt ) @@ -106,14 +112,14 @@ static MACHINE_START( ultrsprt ) static ADDRESS_MAP_START( ultrsprt_map, AS_PROGRAM, 32, ultrsprt_state ) AM_RANGE(0x00000000, 0x0007ffff) AM_RAM AM_BASE(m_vram) - AM_RANGE(0x70000000, 0x70000003) AM_READWRITE_LEGACY(eeprom_r, eeprom_w) + AM_RANGE(0x70000000, 0x70000003) AM_READWRITE(eeprom_r, eeprom_w) AM_RANGE(0x70000020, 0x70000023) AM_READ_PORT("P1") AM_RANGE(0x70000040, 0x70000043) AM_READ_PORT("P2") AM_RANGE(0x70000080, 0x70000087) AM_DEVWRITE_LEGACY("k056800", k056800_host_w) AM_RANGE(0x70000088, 0x7000008f) AM_DEVREAD_LEGACY("k056800", k056800_host_r) - AM_RANGE(0x700000e0, 0x700000e3) AM_WRITE_LEGACY(int_ack_w) + AM_RANGE(0x700000e0, 0x700000e3) AM_WRITE(int_ack_w) AM_RANGE(0x7f000000, 0x7f01ffff) AM_RAM AM_BASE(m_workram) - AM_RANGE(0x7f700000, 0x7f703fff) AM_RAM_WRITE_LEGACY(palette_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x7f700000, 0x7f703fff) AM_RAM_WRITE(palette_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x7f800000, 0x7f9fffff) AM_MIRROR(0x00600000) AM_ROM AM_REGION("user1", 0) ADDRESS_MAP_END @@ -121,9 +127,9 @@ ADDRESS_MAP_END /*****************************************************************************/ -static READ16_HANDLER( K056800_68k_r ) +READ16_MEMBER(ultrsprt_state::K056800_68k_r) { - device_t *k056800 = space->machine().device("k056800"); + device_t *k056800 = machine().device("k056800"); UINT16 r = 0; if (ACCESSING_BITS_8_15) @@ -135,9 +141,9 @@ static READ16_HANDLER( K056800_68k_r ) return r; } -static WRITE16_HANDLER( K056800_68k_w ) +WRITE16_MEMBER(ultrsprt_state::K056800_68k_w) { - device_t *k056800 = space->machine().device("k056800"); + device_t *k056800 = machine().device("k056800"); if (ACCESSING_BITS_8_15) k056800_sound_w(k056800, (offset*2)+0, (data >> 8) & 0xff, 0x00ff); @@ -149,8 +155,8 @@ static WRITE16_HANDLER( K056800_68k_w ) static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 16, ultrsprt_state ) AM_RANGE(0x00000000, 0x0001ffff) AM_ROM AM_RANGE(0x00100000, 0x00101fff) AM_RAM - AM_RANGE(0x00200000, 0x00200007) AM_WRITE_LEGACY(K056800_68k_w) - AM_RANGE(0x00200008, 0x0020000f) AM_READ_LEGACY(K056800_68k_r) + AM_RANGE(0x00200000, 0x00200007) AM_WRITE(K056800_68k_w) + AM_RANGE(0x00200008, 0x0020000f) AM_READ(K056800_68k_r) AM_RANGE(0x00400000, 0x004002ff) AM_DEVREADWRITE8("konami", k054539_device, read, write, 0xffff) ADDRESS_MAP_END diff --git a/src/mame/drivers/vcombat.c b/src/mame/drivers/vcombat.c index 00b31ef4dd2..462ec953491 100644 --- a/src/mame/drivers/vcombat.c +++ b/src/mame/drivers/vcombat.c @@ -102,6 +102,17 @@ public: UINT16* m_vid_0_shared_RAM; UINT16* m_vid_1_shared_RAM; int m_crtc_select; + DECLARE_WRITE16_MEMBER(main_video_write); + DECLARE_READ16_MEMBER(control_1_r); + DECLARE_READ16_MEMBER(control_2_r); + DECLARE_READ16_MEMBER(control_3_r); + DECLARE_WRITE16_MEMBER(wiggle_i860p0_pins_w); + DECLARE_WRITE16_MEMBER(wiggle_i860p1_pins_w); + DECLARE_READ16_MEMBER(main_irqiack_r); + DECLARE_READ16_MEMBER(sound_resetmain_r); + DECLARE_WRITE64_MEMBER(v0_fb_w); + DECLARE_WRITE64_MEMBER(v1_fb_w); + DECLARE_WRITE16_MEMBER(crtc_w); }; static UINT32 update_screen(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, int index) @@ -157,14 +168,13 @@ static SCREEN_UPDATE_RGB32( vcombat_main ) { return update_screen(screen, bitmap static SCREEN_UPDATE_RGB32( vcombat_aux ) { return update_screen(screen, bitmap, cliprect, 1); } -static WRITE16_HANDLER( main_video_write ) +WRITE16_MEMBER(vcombat_state::main_video_write) { - vcombat_state *state = space->machine().driver_data<vcombat_state>(); - int fb = (*state->m_framebuffer_ctrl & 0x20) ? 0 : 1; - UINT16 old_data = state->m_m68k_framebuffer[fb][offset]; + int fb = (*m_framebuffer_ctrl & 0x20) ? 0 : 1; + UINT16 old_data = m_m68k_framebuffer[fb][offset]; /* Transparency mode? */ - if (*state->m_framebuffer_ctrl & 0x40) + if (*m_framebuffer_ctrl & 0x40) { if (data == 0x0000) return; @@ -174,27 +184,27 @@ static WRITE16_HANDLER( main_video_write ) if ((data & 0xff00) == 0) data = (data & 0x00ff) | (old_data & 0xff00); - COMBINE_DATA(&state->m_m68k_framebuffer[fb][offset]); + COMBINE_DATA(&m_m68k_framebuffer[fb][offset]); } else { - COMBINE_DATA(&state->m_m68k_framebuffer[fb][offset]); + COMBINE_DATA(&m_m68k_framebuffer[fb][offset]); } } -static READ16_HANDLER( control_1_r ) +READ16_MEMBER(vcombat_state::control_1_r) { - return (input_port_read(space->machine(), "IN0") << 8); + return (input_port_read(machine(), "IN0") << 8); } -static READ16_HANDLER( control_2_r ) +READ16_MEMBER(vcombat_state::control_2_r) { - return (input_port_read(space->machine(), "IN1") << 8); + return (input_port_read(machine(), "IN1") << 8); } -static READ16_HANDLER( control_3_r ) +READ16_MEMBER(vcombat_state::control_3_r) { - return (input_port_read(space->machine(), "IN2") << 8); + return (input_port_read(machine(), "IN2") << 8); } static void wiggle_i860_common(device_t *device, UINT16 data) @@ -224,37 +234,36 @@ static void wiggle_i860_common(device_t *device, UINT16 data) i860_set_pin(device, DEC_PIN_RESET, 0); } -static WRITE16_HANDLER( wiggle_i860p0_pins_w ) +WRITE16_MEMBER(vcombat_state::wiggle_i860p0_pins_w) { - wiggle_i860_common(space->machine().device("vid_0"), data); + wiggle_i860_common(machine().device("vid_0"), data); } -static WRITE16_HANDLER( wiggle_i860p1_pins_w ) +WRITE16_MEMBER(vcombat_state::wiggle_i860p1_pins_w) { - wiggle_i860_common(space->machine().device("vid_1"), data); + wiggle_i860_common(machine().device("vid_1"), data); } -static READ16_HANDLER( main_irqiack_r ) +READ16_MEMBER(vcombat_state::main_irqiack_r) { //fprintf(stderr, "M0: irq iack\n"); - device_set_input_line(space->machine().device("maincpu"), M68K_IRQ_1, CLEAR_LINE); - //device_set_input_line(space->machine().device("maincpu"), INPUT_LINE_RESET, CLEAR_LINE); + device_set_input_line(machine().device("maincpu"), M68K_IRQ_1, CLEAR_LINE); + //device_set_input_line(machine().device("maincpu"), INPUT_LINE_RESET, CLEAR_LINE); return 0; } -static READ16_HANDLER( sound_resetmain_r ) +READ16_MEMBER(vcombat_state::sound_resetmain_r) { //fprintf(stderr, "M1: reset line to M0\n"); - //device_set_input_line(space->machine().device("maincpu"), INPUT_LINE_RESET, PULSE_LINE); + //device_set_input_line(machine().device("maincpu"), INPUT_LINE_RESET, PULSE_LINE); return 0; } -static WRITE64_HANDLER( v0_fb_w ) +WRITE64_MEMBER(vcombat_state::v0_fb_w) { - vcombat_state *state = space->machine().driver_data<vcombat_state>(); /* The frame buffer seems to sit on a 32-bit data bus, while the i860 uses a 64-bit data bus. Adjust accordingly. */ - char *p = (char *)(state->m_i860_framebuffer[0][0]); + char *p = (char *)(m_i860_framebuffer[0][0]); int m = mem_mask; int o = (offset << 2); if (m & 0xff000000) { @@ -273,12 +282,11 @@ static WRITE64_HANDLER( v0_fb_w ) /* This is just temporary so we can see what each i860 is doing to the framebuffer. */ -static WRITE64_HANDLER( v1_fb_w ) +WRITE64_MEMBER(vcombat_state::v1_fb_w) { - vcombat_state *state = space->machine().driver_data<vcombat_state>(); /* The frame buffer seems to sit on a 32-bit data bus, while the i860 uses a 64-bit data bus. Adjust accordingly. */ - char *p = (char *)(state->m_i860_framebuffer[1][0]); + char *p = (char *)(m_i860_framebuffer[1][0]); int m = mem_mask; int o = (offset << 2); if (m & 0xff000000) { @@ -295,20 +303,19 @@ static WRITE64_HANDLER( v1_fb_w ) } } -static WRITE16_HANDLER( crtc_w ) +WRITE16_MEMBER(vcombat_state::crtc_w) { - vcombat_state *state = space->machine().driver_data<vcombat_state>(); - mc6845_device *crtc = space->machine().device<mc6845_device>("crtc"); + mc6845_device *crtc = machine().device<mc6845_device>("crtc"); if (crtc == NULL) return; - if (state->m_crtc_select == 0) - crtc->address_w(*space, 0, data >> 8); + if (m_crtc_select == 0) + crtc->address_w(*&space, 0, data >> 8); else - crtc->register_w(*space, 0, data >> 8); + crtc->register_w(*&space, 0, data >> 8); - state->m_crtc_select ^= 1; + m_crtc_select ^= 1; } static WRITE16_DEVICE_HANDLER( vcombat_dac_w ) @@ -320,28 +327,28 @@ static WRITE16_DEVICE_HANDLER( vcombat_dac_w ) static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, vcombat_state ) AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_RANGE(0x200000, 0x20ffff) AM_RAM - AM_RANGE(0x300000, 0x30ffff) AM_WRITE_LEGACY(main_video_write) + AM_RANGE(0x300000, 0x30ffff) AM_WRITE(main_video_write) AM_RANGE(0x400000, 0x43ffff) AM_RAM AM_BASE(m_vid_0_shared_RAM) AM_SHARE("share2") /* First i860 shared RAM */ AM_RANGE(0x440000, 0x440003) AM_RAM AM_SHARE("share6") /* M0->P0 i860 #1 com 1 */ AM_RANGE(0x480000, 0x480003) AM_RAM AM_SHARE("share7") /* M0<-P0 i860 #1 com 2 */ - AM_RANGE(0x4c0000, 0x4c0003) AM_WRITE_LEGACY(wiggle_i860p0_pins_w) /* i860 #1 stop/start/reset */ + AM_RANGE(0x4c0000, 0x4c0003) AM_WRITE(wiggle_i860p0_pins_w) /* i860 #1 stop/start/reset */ AM_RANGE(0x500000, 0x53ffff) AM_RAM AM_BASE(m_vid_1_shared_RAM) AM_SHARE("share3") /* Second i860 shared RAM */ AM_RANGE(0x540000, 0x540003) AM_RAM AM_SHARE("share8") /* M0->P1 i860 #2 com 1 */ AM_RANGE(0x580000, 0x580003) AM_RAM AM_SHARE("share9") /* M0<-P1 i860 #2 com 2 */ - AM_RANGE(0x5c0000, 0x5c0003) AM_WRITE_LEGACY(wiggle_i860p1_pins_w) /* i860 #2 stop/start/reset */ + AM_RANGE(0x5c0000, 0x5c0003) AM_WRITE(wiggle_i860p1_pins_w) /* i860 #2 stop/start/reset */ - AM_RANGE(0x600000, 0x600001) AM_READ_LEGACY(control_1_r) /* IN0 port */ + AM_RANGE(0x600000, 0x600001) AM_READ(control_1_r) /* IN0 port */ AM_RANGE(0x600004, 0x600005) AM_RAM AM_SHARE("share5") /* M0<-M1 */ - AM_RANGE(0x600008, 0x600009) AM_READ_LEGACY(control_2_r) /* IN1 port */ + AM_RANGE(0x600008, 0x600009) AM_READ(control_2_r) /* IN1 port */ AM_RANGE(0x60001c, 0x60001d) AM_NOP - AM_RANGE(0x60000c, 0x60000d) AM_WRITE_LEGACY(crtc_w) + AM_RANGE(0x60000c, 0x60000d) AM_WRITE(crtc_w) AM_RANGE(0x600010, 0x600011) AM_RAM AM_BASE(m_framebuffer_ctrl) AM_RANGE(0x700000, 0x7007ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x701000, 0x701001) AM_READ_LEGACY(main_irqiack_r) - AM_RANGE(0x702000, 0x702001) AM_READ_LEGACY(control_3_r) + AM_RANGE(0x701000, 0x701001) AM_READ(main_irqiack_r) + AM_RANGE(0x702000, 0x702001) AM_READ(control_3_r) AM_RANGE(0x705000, 0x705001) AM_RAM AM_SHARE("share4") /* M1->M0 */ //AM_RANGE(0x703000, 0x703001) /* Headset rotation axis? */ @@ -353,7 +360,7 @@ ADDRESS_MAP_END /* The first i860 - middle board */ static ADDRESS_MAP_START( vid_0_map, AS_PROGRAM, 64, vcombat_state ) - AM_RANGE(0x00000000, 0x0001ffff) AM_RAM_WRITE_LEGACY(v0_fb_w) /* Shared framebuffer - half of the bits lost to 32-bit bus */ + AM_RANGE(0x00000000, 0x0001ffff) AM_RAM_WRITE(v0_fb_w) /* Shared framebuffer - half of the bits lost to 32-bit bus */ AM_RANGE(0x20000000, 0x20000007) AM_RAM AM_SHARE("share6") /* M0<-P0 com 1 (0x440000 in 68k-land) */ AM_RANGE(0x40000000, 0x401fffff) AM_ROM AM_REGION("gfx", 0) AM_RANGE(0x80000000, 0x80000007) AM_RAM AM_SHARE("share7") /* M0->P0 com 2 (0x480000 in 68k-land) */ @@ -364,7 +371,7 @@ ADDRESS_MAP_END /* The second i860 - top board */ static ADDRESS_MAP_START( vid_1_map, AS_PROGRAM, 64, vcombat_state ) - AM_RANGE(0x00000000, 0x0001ffff) AM_RAM_WRITE_LEGACY(v1_fb_w) /* Half of the bits lost to 32-bit bus */ + AM_RANGE(0x00000000, 0x0001ffff) AM_RAM_WRITE(v1_fb_w) /* Half of the bits lost to 32-bit bus */ AM_RANGE(0x20000000, 0x20000007) AM_RAM AM_SHARE("share8") /* M0->P1 com 1 (0x540000 in 68k-land) */ AM_RANGE(0x40000000, 0x401fffff) AM_ROM AM_REGION("gfx", 0) AM_RANGE(0x80000000, 0x80000007) AM_RAM AM_SHARE("share9") /* M0<-P1 com 2 (0x580000 in 68k-land) */ @@ -378,7 +385,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 16, vcombat_state ) AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_RANGE(0x080000, 0x08ffff) AM_RAM AM_RANGE(0x0c0000, 0x0c0001) AM_DEVWRITE_LEGACY("dac", vcombat_dac_w) - AM_RANGE(0x140000, 0x140001) AM_READ_LEGACY(sound_resetmain_r) /* Ping M0's reset line */ + AM_RANGE(0x140000, 0x140001) AM_READ(sound_resetmain_r) /* Ping M0's reset line */ AM_RANGE(0x180000, 0x180001) AM_RAM AM_SHARE("share4") /* M1<-M0 */ AM_RANGE(0x1c0000, 0x1c0001) AM_RAM AM_SHARE("share5") /* M1->M0 */ AM_RANGE(0x200000, 0x37ffff) AM_ROM AM_REGION("samples", 0) diff --git a/src/mame/drivers/vegaeo.c b/src/mame/drivers/vegaeo.c index 8579000b4c6..cc977fa7187 100644 --- a/src/mame/drivers/vegaeo.c +++ b/src/mame/drivers/vegaeo.c @@ -26,14 +26,18 @@ public: UINT32 *m_vega_vram; UINT8 m_vega_vbuffer; + DECLARE_WRITE32_MEMBER(vega_vram_w); + DECLARE_READ32_MEMBER(vega_vram_r); + DECLARE_WRITE32_MEMBER(vega_palette_w); + DECLARE_WRITE32_MEMBER(vega_misc_w); + DECLARE_READ32_MEMBER(vegaeo_custom_read); }; -static WRITE32_HANDLER( vega_vram_w ) +WRITE32_MEMBER(vegaeo_state::vega_vram_w) { - vegaeo_state *state = space->machine().driver_data<vegaeo_state>(); switch(mem_mask) { case 0xffffffff: @@ -59,49 +63,47 @@ static WRITE32_HANDLER( vega_vram_w ) return; } - COMBINE_DATA(&state->m_vega_vram[offset + state->m_vega_vbuffer * (0x14000/4)]); + COMBINE_DATA(&m_vega_vram[offset + m_vega_vbuffer * (0x14000/4)]); } -static READ32_HANDLER( vega_vram_r ) +READ32_MEMBER(vegaeo_state::vega_vram_r) { - vegaeo_state *state = space->machine().driver_data<vegaeo_state>(); - return state->m_vega_vram[offset + (0x14000/4) * state->m_vega_vbuffer]; + return m_vega_vram[offset + (0x14000/4) * m_vega_vbuffer]; } -static WRITE32_HANDLER( vega_palette_w ) +WRITE32_MEMBER(vegaeo_state::vega_palette_w) { UINT16 paldata; - COMBINE_DATA(&space->machine().generic.paletteram.u32[offset]); + COMBINE_DATA(&machine().generic.paletteram.u32[offset]); - paldata = space->machine().generic.paletteram.u32[offset] & 0x7fff; - palette_set_color_rgb(space->machine(), offset, pal5bit(paldata >> 10), pal5bit(paldata >> 5), pal5bit(paldata >> 0)); + paldata = machine().generic.paletteram.u32[offset] & 0x7fff; + palette_set_color_rgb(machine(), offset, pal5bit(paldata >> 10), pal5bit(paldata >> 5), pal5bit(paldata >> 0)); } -static WRITE32_HANDLER( vega_misc_w ) +WRITE32_MEMBER(vegaeo_state::vega_misc_w) { - vegaeo_state *state = space->machine().driver_data<vegaeo_state>(); // other bits ??? - state->m_vega_vbuffer = data & 1; + m_vega_vbuffer = data & 1; } -static READ32_HANDLER( vegaeo_custom_read ) +READ32_MEMBER(vegaeo_state::vegaeo_custom_read) { - eolith_speedup_read(space); - return input_port_read(space->machine(), "SYSTEM"); + eolith_speedup_read(&space); + return input_port_read(machine(), "SYSTEM"); } static ADDRESS_MAP_START( vega_map, AS_PROGRAM, 32, vegaeo_state ) AM_RANGE(0x00000000, 0x001fffff) AM_RAM - AM_RANGE(0x80000000, 0x80013fff) AM_READWRITE_LEGACY(vega_vram_r, vega_vram_w) + AM_RANGE(0x80000000, 0x80013fff) AM_READWRITE(vega_vram_r, vega_vram_w) AM_RANGE(0xfc000000, 0xfc0000ff) AM_DEVREADWRITE8_LEGACY("at28c16", at28c16_r, at28c16_w, 0x000000ff) - AM_RANGE(0xfc200000, 0xfc2003ff) AM_RAM_WRITE_LEGACY(vega_palette_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0xfc200000, 0xfc2003ff) AM_RAM_WRITE(vega_palette_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0xfc400000, 0xfc40005b) AM_WRITENOP // crt registers ? AM_RANGE(0xfc600000, 0xfc600003) AM_WRITENOP // soundlatch - AM_RANGE(0xfca00000, 0xfca00003) AM_WRITE_LEGACY(vega_misc_w) - AM_RANGE(0xfcc00000, 0xfcc00003) AM_READ_LEGACY(vegaeo_custom_read) + AM_RANGE(0xfca00000, 0xfca00003) AM_WRITE(vega_misc_w) + AM_RANGE(0xfcc00000, 0xfcc00003) AM_READ(vegaeo_custom_read) AM_RANGE(0xfce00000, 0xfce00003) AM_READ_PORT("P1_P2") AM_RANGE(0xfd000000, 0xfeffffff) AM_ROM AM_REGION("user1", 0) AM_RANGE(0xfff80000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0) diff --git a/src/mame/drivers/videopkr.c b/src/mame/drivers/videopkr.c index cf7262d3350..2ea314d8304 100644 --- a/src/mame/drivers/videopkr.c +++ b/src/mame/drivers/videopkr.c @@ -336,6 +336,23 @@ public: UINT8 m_sbp2; UINT8 m_sbp3; tilemap_t *m_bg_tilemap; + DECLARE_READ8_MEMBER(videopkr_io_r); + DECLARE_WRITE8_MEMBER(videopkr_io_w); + DECLARE_READ8_MEMBER(videopkr_p1_data_r); + DECLARE_READ8_MEMBER(videopkr_p2_data_r); + DECLARE_WRITE8_MEMBER(videopkr_p1_data_w); + DECLARE_WRITE8_MEMBER(videopkr_p2_data_w); + DECLARE_READ8_MEMBER(videopkr_t0_latch); + DECLARE_WRITE8_MEMBER(prog_w); + DECLARE_READ8_MEMBER(sound_io_r); + DECLARE_WRITE8_MEMBER(sound_io_w); + DECLARE_READ8_MEMBER(sound_p2_r); + DECLARE_WRITE8_MEMBER(sound_p2_w); + DECLARE_READ8_MEMBER(baby_sound_p0_r); + DECLARE_WRITE8_MEMBER(baby_sound_p0_w); + DECLARE_READ8_MEMBER(baby_sound_p1_r); + DECLARE_WRITE8_MEMBER(baby_sound_p1_w); + DECLARE_READ8_MEMBER(baby_sound_p2_r); }; @@ -506,20 +523,19 @@ static SCREEN_UPDATE_IND16( videopkr ) * R/W Handlers * *************************/ -static READ8_HANDLER( videopkr_io_r ) +READ8_MEMBER(videopkr_state::videopkr_io_r) { - videopkr_state *state = space->machine().driver_data<videopkr_state>(); UINT8 valor = 0, hf, co; UINT16 kbdin; - switch (state->m_p2) + switch (m_p2) { case 0xef: /* inputs are multiplexed through a diode matrix */ { - hf = ((input_port_read(space->machine(), "IN1") & 0x10 ) >> 4) & 1; /* Hopper full detection */ - co = 0x10 * ((input_port_read(space->machine(), "IN1") & 0x20 ) >> 5); /* Coin Out detection */ - kbdin = ((input_port_read(space->machine(), "IN1") & 0xaf ) << 8) + input_port_read(space->machine(), "IN0"); + hf = ((input_port_read(machine(), "IN1") & 0x10 ) >> 4) & 1; /* Hopper full detection */ + co = 0x10 * ((input_port_read(machine(), "IN1") & 0x20 ) >> 5); /* Coin Out detection */ + kbdin = ((input_port_read(machine(), "IN1") & 0xaf ) << 8) + input_port_read(machine(), "IN0"); switch (kbdin) { @@ -551,15 +567,15 @@ static READ8_HANDLER( videopkr_io_r ) case 0xdf: { - state->m_n_offs = ((state->m_p1 & 0xc0) << 2 ) + offset; - valor = state->m_data_ram[offset]; + m_n_offs = ((m_p1 & 0xc0) << 2 ) + offset; + valor = m_data_ram[offset]; break; } case 0x5f: { - state->m_n_offs = ((state->m_p1 & 0xc0) << 2 ) + offset; - valor = state->m_data_ram[offset]; + m_n_offs = ((m_p1 & 0xc0) << 2 ) + offset; + valor = m_data_ram[offset]; break; } @@ -568,8 +584,8 @@ static READ8_HANDLER( videopkr_io_r ) case 0x7e: case 0x7f: { - state->m_n_offs = ((state->m_p1 & 0xc0) << 2 ) + offset; - valor = state->m_color_ram[state->m_n_offs]; + m_n_offs = ((m_p1 & 0xc0) << 2 ) + offset; + valor = m_color_ram[m_n_offs]; break; } @@ -578,8 +594,8 @@ static READ8_HANDLER( videopkr_io_r ) case 0xbe: case 0xbf: { - state->m_n_offs = ((state->m_p1 & 0xc0) << 2 ) + offset; - valor = state->m_video_ram[state->m_n_offs]; + m_n_offs = ((m_p1 & 0xc0) << 2 ) + offset; + valor = m_video_ram[m_n_offs]; break; } } @@ -587,26 +603,25 @@ static READ8_HANDLER( videopkr_io_r ) return valor; } -static WRITE8_HANDLER( videopkr_io_w ) +WRITE8_MEMBER(videopkr_state::videopkr_io_w) { - videopkr_state *state = space->machine().driver_data<videopkr_state>(); - switch (state->m_p2) + switch (m_p2) { case 0x3c: case 0x3d: case 0x3e: case 0x3f: { - state->m_n_offs = ((state->m_p1 & 0xc0) << 2 ) + offset; - state->m_color_ram[state->m_n_offs] = data & 0x0f; - state->m_video_ram[state->m_n_offs] = data; - state->m_bg_tilemap->mark_tile_dirty(state->m_n_offs); + m_n_offs = ((m_p1 & 0xc0) << 2 ) + offset; + m_color_ram[m_n_offs] = data & 0x0f; + m_video_ram[m_n_offs] = data; + m_bg_tilemap->mark_tile_dirty(m_n_offs); break; } case 0xdf: { - state->m_data_ram[offset] = (data & 0x0f) + 0xf0; + m_data_ram[offset] = (data & 0x0f) + 0xf0; break; } @@ -615,9 +630,9 @@ static WRITE8_HANDLER( videopkr_io_w ) case 0x7e: case 0x7f: { - state->m_n_offs = ((state->m_p1 & 0xc0) << 2 ) + offset; - state->m_color_ram[state->m_n_offs] = data & 0x0f; - state->m_bg_tilemap->mark_tile_dirty(state->m_n_offs); + m_n_offs = ((m_p1 & 0xc0) << 2 ) + offset; + m_color_ram[m_n_offs] = data & 0x0f; + m_bg_tilemap->mark_tile_dirty(m_n_offs); break; } @@ -626,9 +641,9 @@ static WRITE8_HANDLER( videopkr_io_w ) case 0xbe: case 0xbf: { - state->m_n_offs = ((state->m_p1 & 0xc0) << 2 ) + offset; - state->m_video_ram[state->m_n_offs] = data; - state->m_bg_tilemap->mark_tile_dirty(state->m_n_offs); + m_n_offs = ((m_p1 & 0xc0) << 2 ) + offset; + m_video_ram[m_n_offs] = data; + m_bg_tilemap->mark_tile_dirty(m_n_offs); break; } @@ -642,37 +657,34 @@ static WRITE8_HANDLER( videopkr_io_w ) output_set_lamp_value(5, ((data >> 5) & 1)); /* Hopper_1 */ output_set_lamp_value(6, ((data >> 6) & 1)); /* Hopper_2 */ output_set_lamp_value(7, ((data >> 7) & 1)); /* Diverter */ - state->m_p24_data = data; - state->m_hp_1 = (~state->m_p24_data >> 6) & 1; - state->m_hp_2 = (~state->m_p24_data >> 5) & 1; - state->m_dvrt = (~state->m_p24_data >> 7) & 1; + m_p24_data = data; + m_hp_1 = (~m_p24_data >> 6) & 1; + m_hp_2 = (~m_p24_data >> 5) & 1; + m_dvrt = (~m_p24_data >> 7) & 1; break; } case 0xff: { - state->m_t0_latch = state->m_t0_latch ^ 0x01; /* fix the bookkeeping mode */ + m_t0_latch = m_t0_latch ^ 0x01; /* fix the bookkeeping mode */ break; } } } -static READ8_HANDLER( videopkr_p1_data_r ) +READ8_MEMBER(videopkr_state::videopkr_p1_data_r) { - videopkr_state *state = space->machine().driver_data<videopkr_state>(); - return state->m_p1; + return m_p1; } -static READ8_HANDLER( videopkr_p2_data_r ) +READ8_MEMBER(videopkr_state::videopkr_p2_data_r) { - videopkr_state *state = space->machine().driver_data<videopkr_state>(); - return state->m_p2; + return m_p2; } -static WRITE8_HANDLER( videopkr_p1_data_w ) +WRITE8_MEMBER(videopkr_state::videopkr_p1_data_w) { - videopkr_state *state = space->machine().driver_data<videopkr_state>(); - state->m_p1 = data; + m_p1 = data; output_set_lamp_value(8, (data & 1)); /* Aux_0 - Jackpot mech. counter (Baby Games)*/ output_set_lamp_value(9, ((data >> 1) & 1)); /* Aux_1 - */ @@ -681,53 +693,51 @@ static WRITE8_HANDLER( videopkr_p1_data_w ) output_set_lamp_value(12, ((data >> 4) & 1)); /* Aux_4 - Bell */ output_set_lamp_value(13, ((data >> 5) & 1)); /* Aux_5 - /CIO */ - state->m_jckp = state->m_p1 & 1; + m_jckp = m_p1 & 1; - if ((~state->m_c_io & 1) & state->m_ant_cio & state->m_hp_1 & state->m_hp_2) + if ((~m_c_io & 1) & m_ant_cio & m_hp_1 & m_hp_2) { - ++state->m_count1; /* Decoded Coin In Mech. Counter*/ + ++m_count1; /* Decoded Coin In Mech. Counter*/ } - if ((~state->m_c_io & 1) & state->m_ant_cio & (~state->m_hp_1 & 1) & (~state->m_hp_2 & 1)) + if ((~m_c_io & 1) & m_ant_cio & (~m_hp_1 & 1) & (~m_hp_2 & 1)) { - ++state->m_count2; /* Decoded Coind Out Mech. Counter */ + ++m_count2; /* Decoded Coind Out Mech. Counter */ } - if (~state->m_c_io & state->m_ant_cio & state->m_hp_1 & state->m_hp_2 & ~state->m_dvrt) + if (~m_c_io & m_ant_cio & m_hp_1 & m_hp_2 & ~m_dvrt) { - ++state->m_count3; /* Decoded Coin to Drop Mech. Counter */ + ++m_count3; /* Decoded Coin to Drop Mech. Counter */ } - if (~state->m_jckp & state->m_ant_jckp) + if (~m_jckp & m_ant_jckp) { - ++state->m_count4; /* Decoded Jackpot Mech. Counter */ + ++m_count4; /* Decoded Jackpot Mech. Counter */ } - count_7dig(state->m_count1, 0); - count_7dig(state->m_count2, 7); - count_7dig(state->m_count3, 14); - count_7dig(state->m_count4, 21); + count_7dig(m_count1, 0); + count_7dig(m_count2, 7); + count_7dig(m_count3, 14); + count_7dig(m_count4, 21); - state->m_ant_cio = state->m_c_io; - state->m_ant_jckp = state->m_jckp; + m_ant_cio = m_c_io; + m_ant_jckp = m_jckp; } -static WRITE8_HANDLER( videopkr_p2_data_w ) +WRITE8_MEMBER(videopkr_state::videopkr_p2_data_w) { - videopkr_state *state = space->machine().driver_data<videopkr_state>(); - state->m_p2 = data; + m_p2 = data; } -static READ8_HANDLER( videopkr_t0_latch ) +READ8_MEMBER(videopkr_state::videopkr_t0_latch) { - videopkr_state *state = space->machine().driver_data<videopkr_state>(); - return state->m_t0_latch; + return m_t0_latch; } -static WRITE8_HANDLER( prog_w ) +WRITE8_MEMBER(videopkr_state::prog_w) { if (!data) - cputag_set_input_line(space->machine(), "maincpu", 0, CLEAR_LINE); /* clear interrupt FF */ + cputag_set_input_line(machine(), "maincpu", 0, CLEAR_LINE); /* clear interrupt FF */ } /************************* @@ -766,70 +776,66 @@ static WRITE8_HANDLER( prog_w ) */ -static READ8_HANDLER(sound_io_r) +READ8_MEMBER(videopkr_state::sound_io_r) { - videopkr_state *state = space->machine().driver_data<videopkr_state>(); - switch (state->m_vp_sound_p2) + switch (m_vp_sound_p2) { case 0xbf: { - state->m_c_io = (state->m_p1 >> 5) & 1; - state->m_hp_1 = (~state->m_p24_data >> 6) & 1; - state->m_hp_2 = (~state->m_p24_data >> 5) & 1; - state->m_bell = (state->m_p1 >> 4) & 1; - state->m_aux3 = (state->m_p1 >> 3) & 1; - state->m_dvrt = (~state->m_p24_data >> 7) & 1; - state->m_sound_ant = state->m_sound_latch; - state->m_sound_latch = state->m_c_io + (state->m_hp_1 << 1) + (state->m_hp_2 << 2) + (state->m_bell << 3) + 0xf0; + m_c_io = (m_p1 >> 5) & 1; + m_hp_1 = (~m_p24_data >> 6) & 1; + m_hp_2 = (~m_p24_data >> 5) & 1; + m_bell = (m_p1 >> 4) & 1; + m_aux3 = (m_p1 >> 3) & 1; + m_dvrt = (~m_p24_data >> 7) & 1; + m_sound_ant = m_sound_latch; + m_sound_latch = m_c_io + (m_hp_1 << 1) + (m_hp_2 << 2) + (m_bell << 3) + 0xf0; break; } } - return state->m_sound_latch; + return m_sound_latch; } -static WRITE8_HANDLER(sound_io_w) +WRITE8_MEMBER(videopkr_state::sound_io_w) { - videopkr_state *state = space->machine().driver_data<videopkr_state>(); - if (state->m_vp_sound_p2 == 0x5f || state->m_vp_sound_p2 == 0xdf) + if (m_vp_sound_p2 == 0x5f || m_vp_sound_p2 == 0xdf) { - state->m_dc_40103 = data; - state->m_dc_4020 = 0; + m_dc_40103 = data; + m_dc_4020 = 0; } } -static READ8_HANDLER(sound_p2_r) +READ8_MEMBER(videopkr_state::sound_p2_r) { - videopkr_state *state = space->machine().driver_data<videopkr_state>(); - return state->m_vp_sound_p2; + return m_vp_sound_p2; } -static WRITE8_HANDLER(sound_p2_w) +WRITE8_MEMBER(videopkr_state::sound_p2_w) { - videopkr_state *state = space->machine().driver_data<videopkr_state>(); - state->m_vp_sound_p2 = data; + m_vp_sound_p2 = data; switch (data) { case 0x5f: { - state->m_te_40103 = 0; /* p2.7 LOW */ - state->m_ld_40103 = 0; /* p2.5 LOW */ + m_te_40103 = 0; /* p2.7 LOW */ + m_ld_40103 = 0; /* p2.5 LOW */ break; } case 0x7f: { - state->m_te_40103 = 0; - state->m_ld_40103 = 1; + m_te_40103 = 0; + m_ld_40103 = 1; break; } case 0xff: { - state->m_te_40103 = 1; - state->m_ld_40103 = 1; + m_te_40103 = 1; + m_ld_40103 = 1; break; } } @@ -838,40 +844,35 @@ static WRITE8_HANDLER(sound_p2_w) /* Baby Sound Handlers */ -static READ8_HANDLER(baby_sound_p0_r) +READ8_MEMBER(videopkr_state::baby_sound_p0_r) { - videopkr_state *state = space->machine().driver_data<videopkr_state>(); - return state->m_sbp0; + return m_sbp0; } -static WRITE8_HANDLER(baby_sound_p0_w) +WRITE8_MEMBER(videopkr_state::baby_sound_p0_w) { - videopkr_state *state = space->machine().driver_data<videopkr_state>(); - state->m_sbp0 = data; + m_sbp0 = data; } -static READ8_HANDLER(baby_sound_p1_r) +READ8_MEMBER(videopkr_state::baby_sound_p1_r) { - videopkr_state *state = space->machine().driver_data<videopkr_state>(); - state->m_c_io = (state->m_p1 >> 5) & 1; - state->m_hp_1 = (~state->m_p24_data >> 6) & 1; - state->m_hp_2 = (~state->m_p24_data >> 5) & 1; - state->m_bell = (state->m_p1 >> 4) & 1; - state->m_aux3 = (state->m_p1 >> 3) & 1; - state->m_baby_latch = state->m_c_io + (state->m_hp_1 << 1) + (state->m_hp_2 << 2) + (state->m_bell << 3) + (state->m_aux3 << 4) + 0xe0; - return state->m_baby_latch; + m_c_io = (m_p1 >> 5) & 1; + m_hp_1 = (~m_p24_data >> 6) & 1; + m_hp_2 = (~m_p24_data >> 5) & 1; + m_bell = (m_p1 >> 4) & 1; + m_aux3 = (m_p1 >> 3) & 1; + m_baby_latch = m_c_io + (m_hp_1 << 1) + (m_hp_2 << 2) + (m_bell << 3) + (m_aux3 << 4) + 0xe0; + return m_baby_latch; } -static WRITE8_HANDLER(baby_sound_p1_w) +WRITE8_MEMBER(videopkr_state::baby_sound_p1_w) { - videopkr_state *state = space->machine().driver_data<videopkr_state>(); - state->m_baby_latch = state->m_baby_latch | data; + m_baby_latch = m_baby_latch | data; } -static READ8_HANDLER(baby_sound_p2_r) +READ8_MEMBER(videopkr_state::baby_sound_p2_r) { - videopkr_state *state = space->machine().driver_data<videopkr_state>(); - return state->m_sbp2; + return m_sbp2; } static WRITE8_DEVICE_HANDLER(baby_sound_p2_w) @@ -943,11 +944,11 @@ static ADDRESS_MAP_START( i8039_map, AS_PROGRAM, 8, videopkr_state ) ADDRESS_MAP_END static ADDRESS_MAP_START( i8039_io_port, AS_IO, 8, videopkr_state ) - AM_RANGE(0x00, 0xff ) AM_READWRITE_LEGACY(videopkr_io_r, videopkr_io_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1 ) AM_READWRITE_LEGACY(videopkr_p1_data_r, videopkr_p1_data_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2 ) AM_READWRITE_LEGACY(videopkr_p2_data_r, videopkr_p2_data_w) - AM_RANGE(MCS48_PORT_PROG, MCS48_PORT_PROG) AM_WRITE_LEGACY(prog_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0 ) AM_READ_LEGACY(videopkr_t0_latch) + AM_RANGE(0x00, 0xff ) AM_READWRITE(videopkr_io_r, videopkr_io_w) + AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1 ) AM_READWRITE(videopkr_p1_data_r, videopkr_p1_data_w) + AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2 ) AM_READWRITE(videopkr_p2_data_r, videopkr_p2_data_w) + AM_RANGE(MCS48_PORT_PROG, MCS48_PORT_PROG) AM_WRITE(prog_w) + AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0 ) AM_READ(videopkr_t0_latch) ADDRESS_MAP_END static ADDRESS_MAP_START( i8039_sound_mem, AS_PROGRAM, 8, videopkr_state ) @@ -955,9 +956,9 @@ static ADDRESS_MAP_START( i8039_sound_mem, AS_PROGRAM, 8, videopkr_state ) ADDRESS_MAP_END static ADDRESS_MAP_START( i8039_sound_port, AS_IO, 8, videopkr_state ) - AM_RANGE(0x00 , 0xff ) AM_READWRITE_LEGACY(sound_io_r, sound_io_w) + AM_RANGE(0x00 , 0xff ) AM_READWRITE(sound_io_r, sound_io_w) AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVWRITE_LEGACY("dac", dac_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE_LEGACY(sound_p2_r, sound_p2_w) + AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(sound_p2_r, sound_p2_w) ADDRESS_MAP_END @@ -968,9 +969,9 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( i8051_sound_port, AS_IO, 8, videopkr_state ) AM_RANGE(0x0000, 0x1ff) AM_RAM /* ports */ - AM_RANGE(MCS51_PORT_P0, MCS51_PORT_P0) AM_READWRITE_LEGACY(baby_sound_p0_r, baby_sound_p0_w) - AM_RANGE(MCS51_PORT_P1, MCS51_PORT_P1) AM_READWRITE_LEGACY(baby_sound_p1_r, baby_sound_p1_w) - AM_RANGE(MCS51_PORT_P2, MCS51_PORT_P2) AM_READ_LEGACY(baby_sound_p2_r) AM_DEVWRITE_LEGACY("dac", baby_sound_p2_w) + AM_RANGE(MCS51_PORT_P0, MCS51_PORT_P0) AM_READWRITE(baby_sound_p0_r, baby_sound_p0_w) + AM_RANGE(MCS51_PORT_P1, MCS51_PORT_P1) AM_READWRITE(baby_sound_p1_r, baby_sound_p1_w) + AM_RANGE(MCS51_PORT_P2, MCS51_PORT_P2) AM_READ(baby_sound_p2_r) AM_DEVWRITE_LEGACY("dac", baby_sound_p2_w) AM_RANGE(MCS51_PORT_P3, MCS51_PORT_P3) AM_DEVREADWRITE_LEGACY("aysnd", baby_sound_p3_r, baby_sound_p3_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/vpoker.c b/src/mame/drivers/vpoker.c index 01315b9dacd..72335b47385 100644 --- a/src/mame/drivers/vpoker.c +++ b/src/mame/drivers/vpoker.c @@ -120,6 +120,8 @@ public: UINT8 *m_videoram; UINT8 m_blit_ram[8]; + DECLARE_READ8_MEMBER(blitter_r); + DECLARE_WRITE8_MEMBER(blitter_w); }; @@ -153,29 +155,28 @@ static SCREEN_UPDATE_IND16( vpoker ) return 0; } -static READ8_HANDLER( blitter_r ) +READ8_MEMBER(vpoker_state::blitter_r) { if(offset == 6) - return input_port_read(space->machine(), "IN0"); + return input_port_read(machine(), "IN0"); return 0; } -static WRITE8_HANDLER( blitter_w ) +WRITE8_MEMBER(vpoker_state::blitter_w) { - vpoker_state *state = space->machine().driver_data<vpoker_state>(); - UINT8 *videoram = state->m_videoram; + UINT8 *videoram = m_videoram; - state->m_blit_ram[offset] = data; + m_blit_ram[offset] = data; if(offset == 2) { int blit_offs; - blit_offs = (state->m_blit_ram[1] & 0x01)<<8|(state->m_blit_ram[2] & 0xff); + blit_offs = (m_blit_ram[1] & 0x01)<<8|(m_blit_ram[2] & 0xff); - videoram[blit_offs] = state->m_blit_ram[0]; -// printf("%02x %02x %02x %02x %02x %02x %02x %02x\n",state->m_blit_ram[0],state->m_blit_ram[1],state->m_blit_ram[2],state->m_blit_ram[3],state->m_blit_ram[4],state->m_blit_ram[5],state->m_blit_ram[6],state->m_blit_ram[7]); + videoram[blit_offs] = m_blit_ram[0]; +// printf("%02x %02x %02x %02x %02x %02x %02x %02x\n",m_blit_ram[0],m_blit_ram[1],m_blit_ram[2],m_blit_ram[3],m_blit_ram[4],m_blit_ram[5],m_blit_ram[6],m_blit_ram[7]); } } @@ -183,7 +184,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, vpoker_state ) ADDRESS_MAP_GLOBAL_MASK(0x3fff) AM_RANGE(0x0000, 0x01ff) AM_RAM /* vpoker has 0x100, 5acespkr has 0x200 */ AM_RANGE(0x0400, 0x0407) AM_DEVREADWRITE("6840ptm", ptm6840_device, read, write) - AM_RANGE(0x0800, 0x0807) AM_READ_LEGACY(blitter_r) AM_WRITE_LEGACY(blitter_w) + AM_RANGE(0x0800, 0x0807) AM_READ(blitter_r) AM_WRITE(blitter_w) AM_RANGE(0x2000, 0x3fff) AM_ROM ADDRESS_MAP_END diff --git a/src/mame/drivers/vroulet.c b/src/mame/drivers/vroulet.c index b69df306eb6..e99a89d57a9 100644 --- a/src/mame/drivers/vroulet.c +++ b/src/mame/drivers/vroulet.c @@ -51,13 +51,16 @@ public: UINT8 *m_videoram; UINT8 *m_colorram; tilemap_t *m_bg_tilemap; + DECLARE_WRITE8_MEMBER(vroulet_paletteram_w); + DECLARE_WRITE8_MEMBER(vroulet_videoram_w); + DECLARE_WRITE8_MEMBER(vroulet_colorram_w); }; /* video */ -static WRITE8_HANDLER(vroulet_paletteram_w) +WRITE8_MEMBER(vroulet_state::vroulet_paletteram_w) { /* paletteram_xxxxBBBBGGGGRRRR_be_w @@ -65,30 +68,28 @@ static WRITE8_HANDLER(vroulet_paletteram_w) */ int i,j,a,b; - space->machine().generic.paletteram.u8[offset]=data; + machine().generic.paletteram.u8[offset]=data; for(i=0;i<32;i++) { for(j=0;j<16;j++) { - a=space->machine().generic.paletteram.u8[((i*8+j)*2)&0xff ]; - b=space->machine().generic.paletteram.u8[((i*8+j)*2+1)&0xff ]; - palette_set_color_rgb(space->machine(),i*16+j,pal4bit(b),pal4bit(b>>4),pal4bit(a)); + a=machine().generic.paletteram.u8[((i*8+j)*2)&0xff ]; + b=machine().generic.paletteram.u8[((i*8+j)*2+1)&0xff ]; + palette_set_color_rgb(machine(),i*16+j,pal4bit(b),pal4bit(b>>4),pal4bit(a)); } } } -static WRITE8_HANDLER( vroulet_videoram_w ) +WRITE8_MEMBER(vroulet_state::vroulet_videoram_w) { - vroulet_state *state = space->machine().driver_data<vroulet_state>(); - state->m_videoram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_videoram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( vroulet_colorram_w ) +WRITE8_MEMBER(vroulet_state::vroulet_colorram_w) { - vroulet_state *state = space->machine().driver_data<vroulet_state>(); - state->m_colorram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_colorram[offset] = data; + m_bg_tilemap->mark_tile_dirty(offset); } static TILE_GET_INFO( get_bg_tile_info ) @@ -123,10 +124,10 @@ static ADDRESS_MAP_START( vroulet_map, AS_PROGRAM, 8, vroulet_state ) AM_RANGE(0x0000, 0x5fff) AM_ROM AM_RANGE(0x6000, 0x67ff) AM_RAM AM_SHARE("nvram") AM_RANGE(0x8000, 0x8000) AM_NOP - AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE_LEGACY(vroulet_videoram_w) AM_BASE(m_videoram) - AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE_LEGACY(vroulet_colorram_w) AM_BASE(m_colorram) + AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(vroulet_videoram_w) AM_BASE(m_videoram) + AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(vroulet_colorram_w) AM_BASE(m_colorram) AM_RANGE(0xa000, 0xa001) AM_RAM AM_BASE(m_ball) - AM_RANGE(0xb000, 0xb0ff) AM_WRITE_LEGACY(vroulet_paletteram_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0xb000, 0xb0ff) AM_WRITE(vroulet_paletteram_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0xc000, 0xc000) AM_NOP ADDRESS_MAP_END diff --git a/src/mame/drivers/wallc.c b/src/mame/drivers/wallc.c index c3d6d466321..3482c98df6e 100644 --- a/src/mame/drivers/wallc.c +++ b/src/mame/drivers/wallc.c @@ -61,6 +61,8 @@ public: UINT8 *m_videoram; tilemap_t *m_bg_tilemap; + DECLARE_WRITE8_MEMBER(wallc_videoram_w); + DECLARE_WRITE8_MEMBER(wallc_coin_counter_w); }; @@ -126,12 +128,11 @@ static PALETTE_INIT( wallc ) } } -static WRITE8_HANDLER( wallc_videoram_w ) +WRITE8_MEMBER(wallc_state::wallc_videoram_w) { - wallc_state *state = space->machine().driver_data<wallc_state>(); - UINT8 *videoram = state->m_videoram; + UINT8 *videoram = m_videoram; videoram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_bg_tilemap->mark_tile_dirty(offset); } static TILE_GET_INFO( get_bg_tile_info ) @@ -154,14 +155,14 @@ static SCREEN_UPDATE_IND16( wallc ) return 0; } -static WRITE8_HANDLER( wallc_coin_counter_w ) +WRITE8_MEMBER(wallc_state::wallc_coin_counter_w) { - coin_counter_w(space->machine(), 0,data & 2); + coin_counter_w(machine(), 0,data & 2); } static ADDRESS_MAP_START( wallc_map, AS_PROGRAM, 8, wallc_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE_LEGACY(wallc_videoram_w) AM_MIRROR(0xc00) AM_BASE(m_videoram) /* 2114, 2114 */ + AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(wallc_videoram_w) AM_MIRROR(0xc00) AM_BASE(m_videoram) /* 2114, 2114 */ AM_RANGE(0xa000, 0xa3ff) AM_RAM /* 2114, 2114 */ AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW1") @@ -170,7 +171,7 @@ static ADDRESS_MAP_START( wallc_map, AS_PROGRAM, 8, wallc_state ) AM_RANGE(0xb600, 0xb600) AM_READ_PORT("DSW2") AM_RANGE(0xb000, 0xb000) AM_WRITENOP - AM_RANGE(0xb100, 0xb100) AM_WRITE_LEGACY(wallc_coin_counter_w) + AM_RANGE(0xb100, 0xb100) AM_WRITE(wallc_coin_counter_w) AM_RANGE(0xb200, 0xb200) AM_WRITENOP AM_RANGE(0xb500, 0xb500) AM_DEVWRITE_LEGACY("aysnd", ay8910_address_w) AM_RANGE(0xb600, 0xb600) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_w) diff --git a/src/mame/drivers/warpsped.c b/src/mame/drivers/warpsped.c index caafc9451b2..c03741356df 100644 --- a/src/mame/drivers/warpsped.c +++ b/src/mame/drivers/warpsped.c @@ -97,12 +97,13 @@ public: tilemap_t *m_starfield_tilemap; UINT8 *m_workram; UINT8 m_regs[0x28]; + DECLARE_WRITE8_MEMBER(warpspeed_hardware_w); + DECLARE_WRITE8_MEMBER(warpspeed_vidram_w); }; -static WRITE8_HANDLER( warpspeed_hardware_w ) +WRITE8_MEMBER(warpspeed_state::warpspeed_hardware_w) { - warpspeed_state *state = space->machine().driver_data<warpspeed_state>(); - state->m_regs[offset] = data; + m_regs[offset] = data; } static TILE_GET_INFO( get_warpspeed_text_tile_info ) @@ -123,12 +124,11 @@ static TILE_GET_INFO( get_warpspeed_starfield_tile_info ) SET_TILE_INFO(1, code, 0, 0); } -static WRITE8_HANDLER( warpspeed_vidram_w ) +WRITE8_MEMBER(warpspeed_state::warpspeed_vidram_w) { - warpspeed_state *state = space->machine().driver_data<warpspeed_state>(); - state->m_videoram[offset] = data; - state->m_text_tilemap->mark_tile_dirty(offset); + m_videoram[offset] = data; + m_text_tilemap->mark_tile_dirty(offset); } static VIDEO_START( warpspeed ) @@ -215,7 +215,7 @@ static SCREEN_UPDATE_IND16( warpspeed ) static ADDRESS_MAP_START( warpspeed_map, AS_PROGRAM, 8, warpspeed_state ) AM_RANGE(0x0000, 0x0dff) AM_ROM - AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE_LEGACY(warpspeed_vidram_w ) AM_BASE(m_videoram) + AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(warpspeed_vidram_w ) AM_BASE(m_videoram) AM_RANGE(0x1c00, 0x1cff) AM_RAM AM_BASE(m_workram) ADDRESS_MAP_END @@ -225,7 +225,7 @@ static ADDRESS_MAP_START ( warpspeed_io_map, AS_IO, 8, warpspeed_state ) AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_RANGE(0x02, 0x02) AM_READ_PORT("DSW") AM_RANGE(0x03, 0x03) AM_READ_PORT("IN2") - AM_RANGE(0x00, 0x27) AM_WRITE_LEGACY(warpspeed_hardware_w ) + AM_RANGE(0x00, 0x27) AM_WRITE(warpspeed_hardware_w ) ADDRESS_MAP_END static INPUT_PORTS_START( warpspeed ) diff --git a/src/mame/drivers/wheelfir.c b/src/mame/drivers/wheelfir.c index 886bc42d3fb..25375f4fa9a 100644 --- a/src/mame/drivers/wheelfir.c +++ b/src/mame/drivers/wheelfir.c @@ -271,10 +271,19 @@ public: } return 0; } + DECLARE_READ16_MEMBER(wheelfir_status_r); + DECLARE_WRITE16_MEMBER(wheelfir_scanline_cnt_w); + DECLARE_WRITE16_MEMBER(wheelfir_blit_w); + DECLARE_WRITE16_MEMBER(pal_reset_pos_w); + DECLARE_WRITE16_MEMBER(pal_data_w); + DECLARE_WRITE16_MEMBER(wheelfir_7c0000_w); + DECLARE_WRITE16_MEMBER(wheelfir_snd_w); + DECLARE_READ16_MEMBER(wheelfir_snd_r); + DECLARE_WRITE16_MEMBER(coin_cnt_w); }; -static READ16_HANDLER( wheelfir_status_r ) +READ16_MEMBER(wheelfir_state::wheelfir_status_r) { /* fedcba9876543210 @@ -284,48 +293,46 @@ static READ16_HANDLER( wheelfir_status_r ) ---------------x ? eeprom */ - wheelfir_state *state = space->machine().driver_data<wheelfir_state>(); - return state->m_toggle_bit| (space->machine().rand()&0x2000); + + return m_toggle_bit| (machine().rand()&0x2000); } -static WRITE16_HANDLER( wheelfir_scanline_cnt_w ) +WRITE16_MEMBER(wheelfir_state::wheelfir_scanline_cnt_w) { - wheelfir_state *state = space->machine().driver_data<wheelfir_state>(); - COMBINE_DATA(&state->m_scanline_cnt); + COMBINE_DATA(&m_scanline_cnt); } -static WRITE16_HANDLER(wheelfir_blit_w) +WRITE16_MEMBER(wheelfir_state::wheelfir_blit_w) { - wheelfir_state *state = space->machine().driver_data<wheelfir_state>(); - COMBINE_DATA(&state->m_blitter_data[offset]); + COMBINE_DATA(&m_blitter_data[offset]); if(!ACCESSING_BITS_8_15 && offset==0x6) //LSB only! { int x,y; - int direct_width=state->m_direct_write_x1-state->m_direct_write_x0+1; - int direct_height=state->m_direct_write_y1-state->m_direct_write_y0+1; + int direct_width=m_direct_write_x1-m_direct_write_x0+1; + int direct_height=m_direct_write_y1-m_direct_write_y0+1; int sixdat = data&0xff; if(direct_width>0 && direct_height>0) { - x= state->m_direct_write_idx % direct_width; - y = (state->m_direct_write_idx / direct_width) %direct_height; + x= m_direct_write_idx % direct_width; + y = (m_direct_write_idx / direct_width) %direct_height; - x+=state->m_direct_write_x0; - y+=state->m_direct_write_y0; + x+=m_direct_write_x0; + y+=m_direct_write_y0; if(x<512 && y <512) { - state->m_tmp_bitmap[LAYER_BG]->pix16(y, x) = sixdat; + m_tmp_bitmap[LAYER_BG]->pix16(y, x) = sixdat; } } - ++state->m_direct_write_idx; + ++m_direct_write_idx; return; @@ -336,72 +343,72 @@ static WRITE16_HANDLER(wheelfir_blit_w) if(offset==0x0a && ACCESSING_BITS_0_7) { - xscroll = (state->m_blitter_data[0xa]&0x00ff) | (state->m_blitter_data[0x8]&0x0040) << 2; + xscroll = (m_blitter_data[0xa]&0x00ff) | (m_blitter_data[0x8]&0x0040) << 2; } if(offset==0x0b && ACCESSING_BITS_0_7) { - yscroll = (state->m_blitter_data[0xb]&0x00ff) | (state->m_blitter_data[0x8]&0x0080) << 1; + yscroll = (m_blitter_data[0xb]&0x00ff) | (m_blitter_data[0x8]&0x0080) << 1; } if(offset==0x8 && ACCESSING_BITS_0_7) { - xscroll = (state->m_blitter_data[0xa]&0x00ff) | (state->m_blitter_data[0x8]&0x0040) << 2; - yscroll = (state->m_blitter_data[0xb]&0x00ff) | (state->m_blitter_data[0x8]&0x0080) << 1; + xscroll = (m_blitter_data[0xa]&0x00ff) | (m_blitter_data[0x8]&0x0040) << 2; + yscroll = (m_blitter_data[0xb]&0x00ff) | (m_blitter_data[0x8]&0x0080) << 1; } if(xscroll>=0) { - int scl=state->m_current_scanline>=NUM_SCANLINES?0:state->m_current_scanline; - state->m_scanlines[scl].x=xscroll; - state->m_scanlines[scl].unkbits=state->m_blitter_data[0x8]&0xff; + int scl=m_current_scanline>=NUM_SCANLINES?0:m_current_scanline; + m_scanlines[scl].x=xscroll; + m_scanlines[scl].unkbits=m_blitter_data[0x8]&0xff; } if(yscroll>=0) { - int scl=state->m_current_scanline>=NUM_SCANLINES?0:state->m_current_scanline; - state->m_scanlines[scl].y=yscroll; - state->m_scanlines[scl].unkbits=state->m_blitter_data[0x8]&0xff; + int scl=m_current_scanline>=NUM_SCANLINES?0:m_current_scanline; + m_scanlines[scl].y=yscroll; + m_scanlines[scl].unkbits=m_blitter_data[0x8]&0xff; } if(offset==0xf && data==0xffff) { - cputag_set_input_line(space->machine(), "maincpu", 1, HOLD_LINE); + cputag_set_input_line(machine(), "maincpu", 1, HOLD_LINE); { - UINT8 *rom = space->machine().region("gfx1")->base(); + UINT8 *rom = machine().region("gfx1")->base(); - int width = space->machine().primary_screen->width(); - int height = space->machine().primary_screen->height(); + int width = machine().primary_screen->width(); + int height = machine().primary_screen->height(); - int src_x0=(state->m_blitter_data[0]>>8)+((state->m_blitter_data[6]&0x100)?256:0); - int src_y0=(state->m_blitter_data[2]>>8)+((state->m_blitter_data[6]&0x200)?256:0); + int src_x0=(m_blitter_data[0]>>8)+((m_blitter_data[6]&0x100)?256:0); + int src_y0=(m_blitter_data[2]>>8)+((m_blitter_data[6]&0x200)?256:0); - int dst_x0=(state->m_blitter_data[0]&0xff)+((state->m_blitter_data[7]&0x40)?256:0); - int dst_y0=(state->m_blitter_data[2]&0xff)+((state->m_blitter_data[7]&0x80)?256:0); + int dst_x0=(m_blitter_data[0]&0xff)+((m_blitter_data[7]&0x40)?256:0); + int dst_y0=(m_blitter_data[2]&0xff)+((m_blitter_data[7]&0x80)?256:0); - int dst_x1=(state->m_blitter_data[1]&0xff)+((state->m_blitter_data[9]&4)?256:0); - int dst_y1=(state->m_blitter_data[3]&0xff)+((state->m_blitter_data[9]&8)?256:0); + int dst_x1=(m_blitter_data[1]&0xff)+((m_blitter_data[9]&4)?256:0); + int dst_y1=(m_blitter_data[3]&0xff)+((m_blitter_data[9]&8)?256:0); - int x_dst_step=(state->m_blitter_data[7]&0x1)?1:-1; - int y_dst_step=(state->m_blitter_data[7]&0x2)?1:-1; + int x_dst_step=(m_blitter_data[7]&0x1)?1:-1; + int y_dst_step=(m_blitter_data[7]&0x2)?1:-1; - int x_src_step=(state->m_blitter_data[8]&0x4000)?1:-1; - int y_src_step=(state->m_blitter_data[8]&0x8000)?1:-1; + int x_src_step=(m_blitter_data[8]&0x4000)?1:-1; + int y_src_step=(m_blitter_data[8]&0x8000)?1:-1; - int page=((state->m_blitter_data[6])>>10)*0x40000; + int page=((m_blitter_data[6])>>10)*0x40000; if(page>=0x400000) /* src set to unav. page before direct write to the framebuffer */ { - state->m_direct_write_x0=dst_x0; - state->m_direct_write_x1=dst_x1; - state->m_direct_write_y0=dst_y0; - state->m_direct_write_y1=dst_y1; - state->m_direct_write_idx=0; + m_direct_write_x0=dst_x0; + m_direct_write_x1=dst_x1; + m_direct_write_y0=dst_y0; + m_direct_write_y1=dst_y1; + m_direct_write_idx=0; } @@ -447,36 +454,36 @@ static WRITE16_HANDLER(wheelfir_blit_w) int d1, d2, hflag, dflag, index; - d1=((state->m_blitter_data[0x0a]&0x1f00)>>8); + d1=((m_blitter_data[0x0a]&0x1f00)>>8); - d2=((state->m_blitter_data[0x0b]&0x1f00)>>8); + d2=((m_blitter_data[0x0b]&0x1f00)>>8); - d1|=((state->m_blitter_data[0x8]&0x100)>>3); - d2|=((state->m_blitter_data[0x8]&0x400)>>5); - hflag=(state->m_blitter_data[0x9]&0x1)?1:0; - dflag=(state->m_blitter_data[0x8]&0x1000)?1:0; + d1|=((m_blitter_data[0x8]&0x100)>>3); + d2|=((m_blitter_data[0x8]&0x400)>>5); + hflag=(m_blitter_data[0x9]&0x1)?1:0; + dflag=(m_blitter_data[0x8]&0x1000)?1:0; index=d1|(d2<<6)|(hflag<<12)|(dflag<<13); - float scale_x=state->get_scale(index); + float scale_x=get_scale(index); - d1=((state->m_blitter_data[0x0b]&0xc000)>>14) | - ((state->m_blitter_data[0x0c]&0xc000)>>12) | - ((state->m_blitter_data[0x0a]&0x4000)>>10); + d1=((m_blitter_data[0x0b]&0xc000)>>14) | + ((m_blitter_data[0x0c]&0xc000)>>12) | + ((m_blitter_data[0x0a]&0x4000)>>10); - d2=((state->m_blitter_data[0x0c]&0x1f00)>>8); + d2=((m_blitter_data[0x0c]&0x1f00)>>8); - d1|=((state->m_blitter_data[0x8]&0x200)>>4); - d2|=((state->m_blitter_data[0x8]&0x800)>>6); + d1|=((m_blitter_data[0x8]&0x200)>>4); + d2|=((m_blitter_data[0x8]&0x800)>>6); - hflag=(state->m_blitter_data[0x9]&0x2)?1:0; - dflag=(state->m_blitter_data[0x8]&0x2000)?1:0; + hflag=(m_blitter_data[0x9]&0x2)?1:0; + dflag=(m_blitter_data[0x8]&0x2000)?1:0; index=d1|(d2<<6)|(hflag<<12)|(dflag<<13); - float scale_y=state->get_scale(index); + float scale_y=get_scale(index); if(scale_x==0 || scale_y==0) return; @@ -491,15 +498,15 @@ static WRITE16_HANDLER(wheelfir_blit_w) float idx_x,idx_y; int vpage=LAYER_FG; - if(state->m_blitter_data[0x7]&0x10) + if(m_blitter_data[0x7]&0x10) { vpage=LAYER_BG; /* - printf("bg -> %d %d %d %d %d %d @ %x\n",dst_x0,dst_y0, dst_x1,dst_y1, dst_x1-dst_x0, dst_y1-dst_y0,cpu_get_pc(&space->device())); + printf("bg -> %d %d %d %d %d %d @ %x\n",dst_x0,dst_y0, dst_x1,dst_y1, dst_x1-dst_x0, dst_y1-dst_y0,cpu_get_pc(&space.device())); for(int i=0;i<16;++i) { - printf("%x = %.4x\n",i,state->m_blitter_data[i]); + printf("%x = %.4x\n",i,m_blitter_data[i]); } printf("\n"); @@ -509,7 +516,7 @@ static WRITE16_HANDLER(wheelfir_blit_w) bool endx=false; bool endy=false; - if(state->m_blitter_data[0x7]&0x0c) + if(m_blitter_data[0x7]&0x0c) { //??? } @@ -539,7 +546,7 @@ static WRITE16_HANDLER(wheelfir_blit_w) //hack for clear if(screen_x >0 && screen_y >0 && screen_x < width && screen_y <height) { - // state->m_tmp_bitmap[vpage]->pix16(screen_y , screen_x ) =0; + // m_tmp_bitmap[vpage]->pix16(screen_y , screen_x ) =0; } } else @@ -548,7 +555,7 @@ static WRITE16_HANDLER(wheelfir_blit_w) if(pix && screen_x >0 && screen_y >0 && screen_x < width && screen_y <height) { - state->m_tmp_bitmap[vpage]->pix16(screen_y , screen_x ) = pix; + m_tmp_bitmap[vpage]->pix16(screen_y , screen_x ) = pix; } } } @@ -606,54 +613,50 @@ static SCREEN_VBLANK( wheelfir ) } -static WRITE16_HANDLER( pal_reset_pos_w ) +WRITE16_MEMBER(wheelfir_state::pal_reset_pos_w) { - wheelfir_state *state = space->machine().driver_data<wheelfir_state>(); - state->m_palpos = 0; + m_palpos = 0; } -static WRITE16_HANDLER( pal_data_w ) +WRITE16_MEMBER(wheelfir_state::pal_data_w) { - wheelfir_state *state = space->machine().driver_data<wheelfir_state>(); - int color=state->m_palpos/3; - state->m_palette[state->m_palpos] = data & 0xff; - ++state->m_palpos; + int color=m_palpos/3; + m_palette[m_palpos] = data & 0xff; + ++m_palpos; - state->m_palpos %=NUM_COLORS*3; + m_palpos %=NUM_COLORS*3; { - int r = state->m_palette[color*3]; - int g = state->m_palette[color*3+1]; - int b = state->m_palette[color*3+2]; - palette_set_color(space->machine(), color, MAKE_RGB(r,g,b)); + int r = m_palette[color*3]; + int g = m_palette[color*3+1]; + int b = m_palette[color*3+2]; + palette_set_color(machine(), color, MAKE_RGB(r,g,b)); } } -static WRITE16_HANDLER(wheelfir_7c0000_w) +WRITE16_MEMBER(wheelfir_state::wheelfir_7c0000_w) { /* seems to be scanline width/2 (used for scanline int timing ? or real width of scanline ?) */ } -static WRITE16_HANDLER(wheelfir_snd_w) +WRITE16_MEMBER(wheelfir_state::wheelfir_snd_w) { - wheelfir_state *state = space->machine().driver_data<wheelfir_state>(); - COMBINE_DATA(&state->m_soundlatch); - cputag_set_input_line(space->machine(), "subcpu", 1, HOLD_LINE); /* guess, tested also with periodic interrupts and latch clear*/ - space->machine().scheduler().synchronize(); + COMBINE_DATA(&m_soundlatch); + cputag_set_input_line(machine(), "subcpu", 1, HOLD_LINE); /* guess, tested also with periodic interrupts and latch clear*/ + machine().scheduler().synchronize(); } -static READ16_HANDLER( wheelfir_snd_r ) +READ16_MEMBER(wheelfir_state::wheelfir_snd_r) { - wheelfir_state *state = space->machine().driver_data<wheelfir_state>(); - return state->m_soundlatch; + return m_soundlatch; } -static WRITE16_HANDLER(coin_cnt_w) +WRITE16_MEMBER(wheelfir_state::coin_cnt_w) { /* bits 0/1 coin counters */ - coin_counter_w(space->machine(), 0, data & 0x01); - coin_counter_w(space->machine(), 1, data & 0x02); + coin_counter_w(machine(), 0, data & 0x01); + coin_counter_w(machine(), 1, data & 0x02); } @@ -661,15 +664,15 @@ static ADDRESS_MAP_START( wheelfir_main, AS_PROGRAM, 16, wheelfir_state ) AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_RANGE(0x200000, 0x20ffff) AM_RAM - AM_RANGE(0x700000, 0x70001f) AM_WRITE_LEGACY(wheelfir_blit_w) - AM_RANGE(0x720000, 0x720001) AM_WRITE_LEGACY(pal_reset_pos_w) - AM_RANGE(0x720002, 0x720003) AM_WRITE_LEGACY(pal_data_w) + AM_RANGE(0x700000, 0x70001f) AM_WRITE(wheelfir_blit_w) + AM_RANGE(0x720000, 0x720001) AM_WRITE(pal_reset_pos_w) + AM_RANGE(0x720002, 0x720003) AM_WRITE(pal_data_w) AM_RANGE(0x720004, 0x720005) AM_WRITENOP // always ffff? - AM_RANGE(0x740000, 0x740001) AM_WRITE_LEGACY(wheelfir_snd_w) + AM_RANGE(0x740000, 0x740001) AM_WRITE(wheelfir_snd_w) AM_RANGE(0x780000, 0x78000f) AM_READNOP /* net comms ? */ - AM_RANGE(0x760000, 0x760001) AM_WRITE_LEGACY(coin_cnt_w) - AM_RANGE(0x7a0000, 0x7a0001) AM_WRITE_LEGACY(wheelfir_scanline_cnt_w) - AM_RANGE(0x7c0000, 0x7c0001) AM_READWRITE_LEGACY(wheelfir_status_r, wheelfir_7c0000_w) + AM_RANGE(0x760000, 0x760001) AM_WRITE(coin_cnt_w) + AM_RANGE(0x7a0000, 0x7a0001) AM_WRITE(wheelfir_scanline_cnt_w) + AM_RANGE(0x7c0000, 0x7c0001) AM_READWRITE(wheelfir_status_r, wheelfir_7c0000_w) AM_RANGE(0x7e0000, 0x7e0001) AM_READ_PORT("P1") AM_RANGE(0x7e0002, 0x7e0003) AM_READ_PORT("P2") @@ -681,7 +684,7 @@ static ADDRESS_MAP_START( wheelfir_sub, AS_PROGRAM, 16, wheelfir_state ) AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_RANGE(0x200000, 0x20ffff) AM_RAM - AM_RANGE(0x780000, 0x780001) AM_READ_LEGACY(wheelfir_snd_r) + AM_RANGE(0x780000, 0x780001) AM_READ(wheelfir_snd_r) AM_RANGE(0x700000, 0x700001) AM_DEVWRITE8_LEGACY("dac1", dac_w, 0xff00) //guess for now AM_RANGE(0x740000, 0x740001) AM_DEVWRITE8_LEGACY("dac2", dac_w, 0xff00) diff --git a/src/mame/drivers/wink.c b/src/mame/drivers/wink.c index 20a7d78e990..4925746561f 100644 --- a/src/mame/drivers/wink.c +++ b/src/mame/drivers/wink.c @@ -27,6 +27,15 @@ public: tilemap_t *m_bg_tilemap; UINT8 m_sound_flag; UINT8 m_tile_bank; + DECLARE_WRITE8_MEMBER(bgram_w); + DECLARE_WRITE8_MEMBER(player_mux_w); + DECLARE_WRITE8_MEMBER(tile_banking_w); + DECLARE_WRITE8_MEMBER(wink_coin_counter_w); + DECLARE_READ8_MEMBER(analog_port_r); + DECLARE_READ8_MEMBER(player_inputs_r); + DECLARE_WRITE8_MEMBER(sound_irq_w); + DECLARE_READ8_MEMBER(prot_r); + DECLARE_WRITE8_MEMBER(prot_w); }; @@ -59,58 +68,56 @@ static SCREEN_UPDATE_IND16( wink ) return 0; } -static WRITE8_HANDLER( bgram_w ) +WRITE8_MEMBER(wink_state::bgram_w) { - wink_state *state = space->machine().driver_data<wink_state>(); - UINT8 *videoram = state->m_videoram; + UINT8 *videoram = m_videoram; videoram[offset] = data; - state->m_bg_tilemap->mark_tile_dirty(offset); + m_bg_tilemap->mark_tile_dirty(offset); } -static WRITE8_HANDLER( player_mux_w ) +WRITE8_MEMBER(wink_state::player_mux_w) { //player_mux = data & 1; //no mux / cocktail mode in the real pcb? strange... } -static WRITE8_HANDLER( tile_banking_w ) +WRITE8_MEMBER(wink_state::tile_banking_w) { - wink_state *state = space->machine().driver_data<wink_state>(); - state->m_tile_bank = data & 1; - state->m_bg_tilemap->mark_all_dirty(); + m_tile_bank = data & 1; + m_bg_tilemap->mark_all_dirty(); } -static WRITE8_HANDLER( wink_coin_counter_w ) +WRITE8_MEMBER(wink_state::wink_coin_counter_w) { - coin_counter_w(space->machine(), offset,data & 1); + coin_counter_w(machine(), offset,data & 1); } -static READ8_HANDLER( analog_port_r ) +READ8_MEMBER(wink_state::analog_port_r) { - return input_port_read(space->machine(), /* player_mux ? "DIAL2" : */ "DIAL1"); + return input_port_read(machine(), /* player_mux ? "DIAL2" : */ "DIAL1"); } -static READ8_HANDLER( player_inputs_r ) +READ8_MEMBER(wink_state::player_inputs_r) { - return input_port_read(space->machine(), /* player_mux ? "INPUTS2" : */ "INPUTS1"); + return input_port_read(machine(), /* player_mux ? "INPUTS2" : */ "INPUTS1"); } -static WRITE8_HANDLER( sound_irq_w ) +WRITE8_MEMBER(wink_state::sound_irq_w) { - cputag_set_input_line(space->machine(), "audiocpu", 0, HOLD_LINE); + cputag_set_input_line(machine(), "audiocpu", 0, HOLD_LINE); //sync with sound cpu (but it still loses some soundlatches...) - //space->machine().scheduler().synchronize(); + //machine().scheduler().synchronize(); } static ADDRESS_MAP_START( wink_map, AS_PROGRAM, 8, wink_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0x87ff) AM_RAM AM_RANGE(0x9000, 0x97ff) AM_RAM AM_SHARE("nvram") - AM_RANGE(0xa000, 0xa3ff) AM_RAM_WRITE_LEGACY(bgram_w) AM_BASE(m_videoram) + AM_RANGE(0xa000, 0xa3ff) AM_RAM_WRITE(bgram_w) AM_BASE(m_videoram) ADDRESS_MAP_END -static READ8_HANDLER( prot_r ) +READ8_MEMBER(wink_state::prot_r) { //take a0-a7 and do some math using the variable created from the upper address-lines, //put the result onto the databus. @@ -130,7 +137,7 @@ the 8bit result is placed on the databus. return 0x20; //hack to pass the jump calculated using this value } -static WRITE8_HANDLER( prot_w ) +WRITE8_MEMBER(wink_state::prot_w) { //take a9-a15 and stuff them in a variable for later use. } @@ -139,23 +146,23 @@ static ADDRESS_MAP_START( wink_io, AS_IO, 8, wink_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x1f) AM_RAM_WRITE_LEGACY(paletteram_xxxxBBBBRRRRGGGG_le_w) AM_BASE_GENERIC(paletteram) //0x10-0x1f is likely to be something else // AM_RANGE(0x20, 0x20) AM_WRITENOP //??? seems unused.. - AM_RANGE(0x21, 0x21) AM_WRITE_LEGACY(player_mux_w) //??? no mux on the pcb. - AM_RANGE(0x22, 0x22) AM_WRITE_LEGACY(tile_banking_w) + AM_RANGE(0x21, 0x21) AM_WRITE(player_mux_w) //??? no mux on the pcb. + AM_RANGE(0x22, 0x22) AM_WRITE(tile_banking_w) // AM_RANGE(0x23, 0x23) AM_WRITENOP //? // AM_RANGE(0x24, 0x24) AM_WRITENOP //cab Knocker like in q-bert! - AM_RANGE(0x25, 0x27) AM_WRITE_LEGACY(wink_coin_counter_w) + AM_RANGE(0x25, 0x27) AM_WRITE(wink_coin_counter_w) AM_RANGE(0x40, 0x40) AM_WRITE_LEGACY(soundlatch_w) - AM_RANGE(0x60, 0x60) AM_WRITE_LEGACY(sound_irq_w) - AM_RANGE(0x80, 0x80) AM_READ_LEGACY(analog_port_r) - AM_RANGE(0xa0, 0xa0) AM_READ_LEGACY(player_inputs_r) + AM_RANGE(0x60, 0x60) AM_WRITE(sound_irq_w) + AM_RANGE(0x80, 0x80) AM_READ(analog_port_r) + AM_RANGE(0xa0, 0xa0) AM_READ(player_inputs_r) AM_RANGE(0xa4, 0xa4) AM_READ_PORT("DSW1") //dipswitch bank2 AM_RANGE(0xa8, 0xa8) AM_READ_PORT("DSW2") //dipswitch bank1 // AM_RANGE(0xac, 0xac) AM_WRITENOP //protection - loads video xor unit (written only once at startup) AM_RANGE(0xb0, 0xb0) AM_READ_PORT("DSW3") //unused inputs AM_RANGE(0xb4, 0xb4) AM_READ_PORT("DSW4") //dipswitch bank3 - AM_RANGE(0xc0, 0xdf) AM_WRITE_LEGACY(prot_w) //load load protection-buffer from upper address bus + AM_RANGE(0xc0, 0xdf) AM_WRITE(prot_w) //load load protection-buffer from upper address bus AM_RANGE(0xc3, 0xc3) AM_READNOP //watchdog? - AM_RANGE(0xe0, 0xff) AM_READ_LEGACY(prot_r) //load math unit from buffer & lower address-bus + AM_RANGE(0xe0, 0xff) AM_READ(prot_r) //load math unit from buffer & lower address-bus ADDRESS_MAP_END static ADDRESS_MAP_START( wink_sound_map, AS_PROGRAM, 8, wink_state ) diff --git a/src/mame/drivers/wldarrow.c b/src/mame/drivers/wldarrow.c index bbee5943d9a..415b8f93e6a 100644 --- a/src/mame/drivers/wldarrow.c +++ b/src/mame/drivers/wldarrow.c @@ -35,6 +35,9 @@ public: UINT8 *m_videoram_1; UINT8 *m_videoram_2; size_t m_videoram_size; + DECLARE_WRITE8_MEMBER(lights_1_w); + DECLARE_WRITE8_MEMBER(lights_2_w); + DECLARE_WRITE8_MEMBER(counter_w); }; @@ -110,21 +113,21 @@ static SCREEN_UPDATE_RGB32( wldarrow ) * *************************************/ -static WRITE8_HANDLER( lights_1_w ) +WRITE8_MEMBER(wldarrow_state::lights_1_w) { /* not sure how it is hooked up */ } -static WRITE8_HANDLER( lights_2_w ) +WRITE8_MEMBER(wldarrow_state::lights_2_w) { /* not sure how it is hooked up */ } -static WRITE8_HANDLER( counter_w ) +WRITE8_MEMBER(wldarrow_state::counter_w) { - coin_counter_w(space->machine(), 0, data); + coin_counter_w(machine(), 0, data); } @@ -179,9 +182,9 @@ static ADDRESS_MAP_START( wldarrow_map, AS_PROGRAM, 8, wldarrow_state ) AM_RANGE(0x8000, 0x9fff) AM_RAM AM_BASE(m_videoram_2) AM_RANGE(0xcd00, 0xcdff) AM_RAM AM_SHARE("nvram") AM_RANGE(0xf000, 0xf000) AM_READ_PORT("BITSW") AM_DEVWRITE_LEGACY("dac", wldarrow_dac_1_w) - AM_RANGE(0xf004, 0xf004) AM_READ_PORT("IN1") AM_WRITE_LEGACY(lights_1_w) - AM_RANGE(0xf006, 0xf006) AM_READ_PORT("IN2") AM_WRITE_LEGACY(lights_2_w) - AM_RANGE(0xf008, 0xf008) AM_WRITE_LEGACY(counter_w) + AM_RANGE(0xf004, 0xf004) AM_READ_PORT("IN1") AM_WRITE(lights_1_w) + AM_RANGE(0xf006, 0xf006) AM_READ_PORT("IN2") AM_WRITE(lights_2_w) + AM_RANGE(0xf008, 0xf008) AM_WRITE(counter_w) AM_RANGE(0xf00f, 0xf00f) AM_DEVWRITE_LEGACY("dac", wldarrow_dac_2_w) AM_RANGE(0xf0f0, 0xf0f0) AM_DEVWRITE_LEGACY("dac", wldarrow_dac_3_w) AM_RANGE(0xf0ff, 0xf0ff) AM_DEVWRITE_LEGACY("dac", wldarrow_dac_4_w) diff --git a/src/mame/drivers/xtheball.c b/src/mame/drivers/xtheball.c index f99ca5803ee..aca368707b9 100644 --- a/src/mame/drivers/xtheball.c +++ b/src/mame/drivers/xtheball.c @@ -23,6 +23,9 @@ public: UINT16 *m_vram_bg; UINT16 *m_vram_fg; UINT8 m_bitvals[32]; + DECLARE_WRITE16_MEMBER(bit_controls_w); + DECLARE_READ16_MEMBER(analogx_r); + DECLARE_READ16_MEMBER(analogy_watchdog_r); }; @@ -115,24 +118,23 @@ static void xtheball_from_shiftreg(address_space *space, UINT32 address, UINT16 * *************************************/ -static WRITE16_HANDLER( bit_controls_w ) +WRITE16_MEMBER(xtheball_state::bit_controls_w) { - xtheball_state *state = space->machine().driver_data<xtheball_state>(); - UINT8 *bitvals = state->m_bitvals; + UINT8 *bitvals = m_bitvals; if (ACCESSING_BITS_0_7) { if (bitvals[offset] != (data & 1)) { - logerror("%08x:bit_controls_w(%x,%d)\n", cpu_get_pc(&space->device()), offset, data & 1); + logerror("%08x:bit_controls_w(%x,%d)\n", cpu_get_pc(&space.device()), offset, data & 1); switch (offset) { case 7: - ticket_dispenser_w(space->machine().device("ticket"), 0, data << 7); + ticket_dispenser_w(machine().device("ticket"), 0, data << 7); break; case 8: - set_led_status(space->machine(), 0, data & 1); + set_led_status(machine(), 0, data & 1); break; } } @@ -185,17 +187,17 @@ static WRITE16_HANDLER( bit_controls_w ) * *************************************/ -static READ16_HANDLER( analogx_r ) +READ16_MEMBER(xtheball_state::analogx_r) { - return (input_port_read(space->machine(), "ANALOGX") << 8) | 0x00ff; + return (input_port_read(machine(), "ANALOGX") << 8) | 0x00ff; } -static READ16_HANDLER( analogy_watchdog_r ) +READ16_MEMBER(xtheball_state::analogy_watchdog_r) { /* doubles as a watchdog address */ watchdog_reset_w(space,0,0); - return (input_port_read(space->machine(), "ANALOGY") << 8) | 0x00ff; + return (input_port_read(machine(), "ANALOGY") << 8) | 0x00ff; } @@ -211,16 +213,16 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, xtheball_state ) AM_RANGE(0x01000000, 0x010fffff) AM_RAM AM_BASE(m_vram_bg) AM_RANGE(0x02000000, 0x020fffff) AM_RAM AM_BASE(m_vram_fg) AM_RANGE(0x03000000, 0x030000ff) AM_DEVREADWRITE8_LEGACY("tlc34076", tlc34076_r, tlc34076_w, 0x00ff) - AM_RANGE(0x03040000, 0x030401ff) AM_WRITE_LEGACY(bit_controls_w) + AM_RANGE(0x03040000, 0x030401ff) AM_WRITE(bit_controls_w) AM_RANGE(0x03040080, 0x0304008f) AM_READ_PORT("DSW") - AM_RANGE(0x03040100, 0x0304010f) AM_READ_LEGACY(analogx_r) + AM_RANGE(0x03040100, 0x0304010f) AM_READ(analogx_r) AM_RANGE(0x03040110, 0x0304011f) AM_READ_PORT("COIN1") AM_RANGE(0x03040130, 0x0304013f) AM_READ_PORT("SERVICE2") AM_RANGE(0x03040140, 0x0304014f) AM_READ_PORT("COIN3") AM_RANGE(0x03040150, 0x0304015f) AM_READ_PORT("BUTTON1") AM_RANGE(0x03040160, 0x0304016f) AM_READ_PORT("SERVICE") AM_RANGE(0x03040170, 0x0304017f) AM_READ_PORT("SERVICE1") - AM_RANGE(0x03040180, 0x0304018f) AM_READ_LEGACY(analogy_watchdog_r) + AM_RANGE(0x03040180, 0x0304018f) AM_READ(analogy_watchdog_r) AM_RANGE(0x03060000, 0x0306000f) AM_DEVWRITE8_LEGACY("dac", dac_w, 0xff00) AM_RANGE(0x04000000, 0x057fffff) AM_ROM AM_REGION("user2", 0) AM_RANGE(0xc0000000, 0xc00001ff) AM_READWRITE_LEGACY(tms34010_io_register_r, tms34010_io_register_w) diff --git a/src/mame/drivers/zr107.c b/src/mame/drivers/zr107.c index 7ef29e28d40..82c34632365 100644 --- a/src/mame/drivers/zr107.c +++ b/src/mame/drivers/zr107.c @@ -189,6 +189,14 @@ public: int m_ccu_vctl; UINT32 *m_workram; UINT32 *m_sharc_dataram; + DECLARE_WRITE32_MEMBER(paletteram32_w); + DECLARE_READ8_MEMBER(sysreg_r); + DECLARE_WRITE8_MEMBER(sysreg_w); + DECLARE_READ32_MEMBER(ccu_r); + DECLARE_WRITE32_MEMBER(ccu_w); + DECLARE_WRITE32_MEMBER(jetwave_palette_w); + DECLARE_READ32_MEMBER(dsp_dataram_r); + DECLARE_WRITE32_MEMBER(dsp_dataram_w); }; @@ -223,12 +231,12 @@ static SCREEN_UPDATE_RGB32( jetwave ) /*****************************************************************************/ -static WRITE32_HANDLER( paletteram32_w ) +WRITE32_MEMBER(zr107_state::paletteram32_w) { - COMBINE_DATA(&space->machine().generic.paletteram.u32[offset]); - data = space->machine().generic.paletteram.u32[offset]; - palette_set_color_rgb(space->machine(), (offset * 2) + 0, pal5bit(data >> 26), pal5bit(data >> 21), pal5bit(data >> 16)); - palette_set_color_rgb(space->machine(), (offset * 2) + 1, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0)); + COMBINE_DATA(&machine().generic.paletteram.u32[offset]); + data = machine().generic.paletteram.u32[offset]; + palette_set_color_rgb(machine(), (offset * 2) + 0, pal5bit(data >> 26), pal5bit(data >> 21), pal5bit(data >> 16)); + palette_set_color_rgb(machine(), (offset * 2) + 1, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0)); } #define NUM_LAYERS 2 @@ -274,7 +282,7 @@ static SCREEN_UPDATE_RGB32( zr107 ) /******************************************************************/ -static READ8_HANDLER( sysreg_r ) +READ8_MEMBER(zr107_state::sysreg_r) { UINT32 r = 0; static const char *const portnames[] = { "IN0", "IN1", "IN2", "IN3", "IN4" }; @@ -286,7 +294,7 @@ static READ8_HANDLER( sysreg_r ) case 2: /* I/O port 2 */ case 3: /* System Port 0 */ case 4: /* System Port 1 */ - r = input_port_read(space->machine(), portnames[offset]); + r = input_port_read(machine(), portnames[offset]); break; case 5: /* Parallel data port */ @@ -295,17 +303,16 @@ static READ8_HANDLER( sysreg_r ) return r; } -static WRITE8_HANDLER( sysreg_w ) +WRITE8_MEMBER(zr107_state::sysreg_w) { - zr107_state *state = space->machine().driver_data<zr107_state>(); switch (offset) { case 0: /* LED Register 0 */ - state->m_led_reg0 = data; + m_led_reg0 = data; break; case 1: /* LED Register 1 */ - state->m_led_reg1 = data; + m_led_reg1 = data; break; case 2: /* Parallel data register */ @@ -323,8 +330,8 @@ static WRITE8_HANDLER( sysreg_w ) 0x02 = EEPCLK 0x01 = EEPDI */ - input_port_write(space->machine(), "EEPROMOUT", data & 0x07, 0xff); - cputag_set_input_line(space->machine(), "audiocpu", INPUT_LINE_RESET, (data & 0x10) ? CLEAR_LINE : ASSERT_LINE); + input_port_write(machine(), "EEPROMOUT", data & 0x07, 0xff); + cputag_set_input_line(machine(), "audiocpu", INPUT_LINE_RESET, (data & 0x10) ? CLEAR_LINE : ASSERT_LINE); mame_printf_debug("System register 0 = %02X\n", data); break; @@ -340,11 +347,11 @@ static WRITE8_HANDLER( sysreg_w ) 0x01 = ADDSCLK (ADC SCLK) */ if (data & 0x80) /* CG Board 1 IRQ Ack */ - cputag_set_input_line(space->machine(), "maincpu", INPUT_LINE_IRQ1, CLEAR_LINE); + cputag_set_input_line(machine(), "maincpu", INPUT_LINE_IRQ1, CLEAR_LINE); if (data & 0x40) /* CG Board 0 IRQ Ack */ - cputag_set_input_line(space->machine(), "maincpu", INPUT_LINE_IRQ0, CLEAR_LINE); + cputag_set_input_line(machine(), "maincpu", INPUT_LINE_IRQ0, CLEAR_LINE); set_cgboard_id((data >> 4) & 3); - input_port_write(space->machine(), "OUT4", data, 0xff); + input_port_write(machine(), "OUT4", data, 0xff); mame_printf_debug("System register 1 = %02X\n", data); break; @@ -353,15 +360,14 @@ static WRITE8_HANDLER( sysreg_w ) 0x01 = AFE */ if (data & 0x01) - watchdog_reset(space->machine()); + watchdog_reset(machine()); break; } } -static READ32_HANDLER( ccu_r ) +READ32_MEMBER(zr107_state::ccu_r) { - zr107_state *state = space->machine().driver_data<zr107_state>(); UINT32 r = 0; switch (offset) { @@ -370,14 +376,14 @@ static READ32_HANDLER( ccu_r ) // Midnight Run polls the vertical counter in vblank if (ACCESSING_BITS_24_31) { - state->m_ccu_vcth ^= 0xff; - r |= state->m_ccu_vcth << 24; + m_ccu_vcth ^= 0xff; + r |= m_ccu_vcth << 24; } if (ACCESSING_BITS_8_15) { - state->m_ccu_vctl++; - state->m_ccu_vctl &= 0x1ff; - r |= (state->m_ccu_vctl >> 2) << 8; + m_ccu_vctl++; + m_ccu_vctl &= 0x1ff; + r |= (m_ccu_vctl >> 2) << 8; } } } @@ -385,9 +391,8 @@ static READ32_HANDLER( ccu_r ) return r; } -static WRITE32_HANDLER( ccu_w ) +WRITE32_MEMBER(zr107_state::ccu_w) { - } /******************************************************************/ @@ -406,14 +411,14 @@ static ADDRESS_MAP_START( zr107_map, AS_PROGRAM, 32, zr107_state ) AM_RANGE(0x00000000, 0x000fffff) AM_RAM AM_BASE(m_workram) /* Work RAM */ AM_RANGE(0x74000000, 0x74003fff) AM_DEVREADWRITE_LEGACY("k056832", k056832_ram_long_r, k056832_ram_long_w) AM_RANGE(0x74020000, 0x7402003f) AM_DEVREADWRITE_LEGACY("k056832", k056832_long_r, k056832_long_w) - AM_RANGE(0x74060000, 0x7406003f) AM_READWRITE_LEGACY(ccu_r, ccu_w) - AM_RANGE(0x74080000, 0x74081fff) AM_RAM_WRITE_LEGACY(paletteram32_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x74060000, 0x7406003f) AM_READWRITE(ccu_r, ccu_w) + AM_RANGE(0x74080000, 0x74081fff) AM_RAM_WRITE(paletteram32_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x740a0000, 0x740a3fff) AM_DEVREAD_LEGACY("k056832", k056832_rom_long_r) AM_RANGE(0x78000000, 0x7800ffff) AM_READWRITE_LEGACY(cgboard_dsp_shared_r_ppc, cgboard_dsp_shared_w_ppc) /* 21N 21K 23N 23K */ AM_RANGE(0x78010000, 0x7801ffff) AM_WRITE_LEGACY(cgboard_dsp_shared_w_ppc) AM_RANGE(0x78040000, 0x7804000f) AM_READWRITE_LEGACY(K001006_0_r, K001006_0_w) AM_RANGE(0x780c0000, 0x780c0007) AM_READWRITE_LEGACY(cgboard_dsp_comm_r_ppc, cgboard_dsp_comm_w_ppc) - AM_RANGE(0x7e000000, 0x7e003fff) AM_READWRITE8_LEGACY(sysreg_r, sysreg_w, 0xffffffff) + AM_RANGE(0x7e000000, 0x7e003fff) AM_READWRITE8(sysreg_r, sysreg_w, 0xffffffff) AM_RANGE(0x7e008000, 0x7e009fff) AM_DEVREADWRITE8_LEGACY("k056230", k056230_r, k056230_w, 0xffffffff) /* LANC registers */ AM_RANGE(0x7e00a000, 0x7e00bfff) AM_DEVREADWRITE_LEGACY("k056230", lanc_ram_r, lanc_ram_w) /* LANC Buffer RAM (27E) */ AM_RANGE(0x7e00c000, 0x7e00c007) AM_DEVWRITE_LEGACY("k056800", k056800_host_w) @@ -423,17 +428,17 @@ static ADDRESS_MAP_START( zr107_map, AS_PROGRAM, 32, zr107_state ) ADDRESS_MAP_END -static WRITE32_HANDLER( jetwave_palette_w ) +WRITE32_MEMBER(zr107_state::jetwave_palette_w) { - COMBINE_DATA(&space->machine().generic.paletteram.u32[offset]); - data = space->machine().generic.paletteram.u32[offset]; - palette_set_color_rgb(space->machine(), offset, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0)); + COMBINE_DATA(&machine().generic.paletteram.u32[offset]); + data = machine().generic.paletteram.u32[offset]; + palette_set_color_rgb(machine(), offset, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0)); } static ADDRESS_MAP_START( jetwave_map, AS_PROGRAM, 32, zr107_state ) AM_RANGE(0x00000000, 0x000fffff) AM_MIRROR(0x80000000) AM_RAM /* Work RAM */ AM_RANGE(0x74000000, 0x740000ff) AM_MIRROR(0x80000000) AM_DEVREADWRITE_LEGACY("k001604", k001604_reg_r, k001604_reg_w) - AM_RANGE(0x74010000, 0x7401ffff) AM_MIRROR(0x80000000) AM_RAM_WRITE_LEGACY(jetwave_palette_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x74010000, 0x7401ffff) AM_MIRROR(0x80000000) AM_RAM_WRITE(jetwave_palette_w) AM_BASE_GENERIC(paletteram) AM_RANGE(0x74020000, 0x7403ffff) AM_MIRROR(0x80000000) AM_DEVREADWRITE_LEGACY("k001604", k001604_tile_r, k001604_tile_w) AM_RANGE(0x74040000, 0x7407ffff) AM_MIRROR(0x80000000) AM_DEVREADWRITE_LEGACY("k001604", k001604_char_r, k001604_char_w) AM_RANGE(0x78000000, 0x7800ffff) AM_MIRROR(0x80000000) AM_READWRITE_LEGACY(cgboard_dsp_shared_r_ppc, cgboard_dsp_shared_w_ppc) /* 21N 21K 23N 23K */ @@ -441,7 +446,7 @@ static ADDRESS_MAP_START( jetwave_map, AS_PROGRAM, 32, zr107_state ) AM_RANGE(0x78040000, 0x7804000f) AM_MIRROR(0x80000000) AM_READWRITE_LEGACY(K001006_0_r, K001006_0_w) AM_RANGE(0x78080000, 0x7808000f) AM_MIRROR(0x80000000) AM_READWRITE_LEGACY(K001006_1_r, K001006_1_w) AM_RANGE(0x780c0000, 0x780c0007) AM_MIRROR(0x80000000) AM_READWRITE_LEGACY(cgboard_dsp_comm_r_ppc, cgboard_dsp_comm_w_ppc) - AM_RANGE(0x7e000000, 0x7e003fff) AM_MIRROR(0x80000000) AM_READWRITE8_LEGACY(sysreg_r, sysreg_w, 0xffffffff) + AM_RANGE(0x7e000000, 0x7e003fff) AM_MIRROR(0x80000000) AM_READWRITE8(sysreg_r, sysreg_w, 0xffffffff) AM_RANGE(0x7e008000, 0x7e009fff) AM_MIRROR(0x80000000) AM_DEVREADWRITE8_LEGACY("k056230", k056230_r, k056230_w, 0xffffffff) /* LANC registers */ AM_RANGE(0x7e00a000, 0x7e00bfff) AM_MIRROR(0x80000000) AM_DEVREADWRITE_LEGACY("k056230", lanc_ram_r, lanc_ram_w) /* LANC Buffer RAM (27E) */ AM_RANGE(0x7e00c000, 0x7e00c007) AM_MIRROR(0x80000000) AM_DEVWRITE_LEGACY("k056800", k056800_host_w) @@ -473,21 +478,19 @@ static const k054539_interface k054539_config = /*****************************************************************************/ -static READ32_HANDLER( dsp_dataram_r ) +READ32_MEMBER(zr107_state::dsp_dataram_r) { - zr107_state *state = space->machine().driver_data<zr107_state>(); - return state->m_sharc_dataram[offset] & 0xffff; + return m_sharc_dataram[offset] & 0xffff; } -static WRITE32_HANDLER( dsp_dataram_w ) +WRITE32_MEMBER(zr107_state::dsp_dataram_w) { - zr107_state *state = space->machine().driver_data<zr107_state>(); - state->m_sharc_dataram[offset] = data; + m_sharc_dataram[offset] = data; } static ADDRESS_MAP_START( sharc_map, AS_DATA, 32, zr107_state ) AM_RANGE(0x400000, 0x41ffff) AM_READWRITE_LEGACY(cgboard_0_shared_sharc_r, cgboard_0_shared_sharc_w) - AM_RANGE(0x500000, 0x5fffff) AM_READWRITE_LEGACY(dsp_dataram_r, dsp_dataram_w) + AM_RANGE(0x500000, 0x5fffff) AM_READWRITE(dsp_dataram_r, dsp_dataram_w) AM_RANGE(0x600000, 0x6fffff) AM_READWRITE_LEGACY(K001005_r, K001005_w) AM_RANGE(0x700000, 0x7000ff) AM_READWRITE_LEGACY(cgboard_0_comm_sharc_r, cgboard_0_comm_sharc_w) ADDRESS_MAP_END |
