diff options
Diffstat (limited to 'src/mame/drivers/esd16.c')
-rw-r--r-- | src/mame/drivers/esd16.c | 83 |
1 files changed, 39 insertions, 44 deletions
diff --git a/src/mame/drivers/esd16.c b/src/mame/drivers/esd16.c index e0b459445a1..93ff00780b9 100644 --- a/src/mame/drivers/esd16.c +++ b/src/mame/drivers/esd16.c @@ -58,20 +58,18 @@ Head Panic ***************************************************************************/ -static WRITE16_HANDLER( esd16_spriteram_w ) +WRITE16_MEMBER(esd16_state::esd16_spriteram_w) { - esd16_state *state = space->machine().driver_data<esd16_state>(); - COMBINE_DATA(&state->m_spriteram[offset]); + COMBINE_DATA(&m_spriteram[offset]); } -static WRITE16_HANDLER( esd16_sound_command_w ) +WRITE16_MEMBER(esd16_state::esd16_sound_command_w) { - esd16_state *state = space->machine().driver_data<esd16_state>(); if (ACCESSING_BITS_0_7) { soundlatch_w(space, 0, data & 0xff); - device_set_input_line(state->m_audio_cpu, 0, ASSERT_LINE); // Generate an IRQ - device_spin_until_time(&space->device(), attotime::from_usec(50)); // Allow the other CPU to reply + device_set_input_line(m_audio_cpu, 0, ASSERT_LINE); // Generate an IRQ + device_spin_until_time(&space.device(), attotime::from_usec(50)); // Allow the other CPU to reply } } @@ -86,7 +84,7 @@ static ADDRESS_MAP_START( multchmp_map, AS_PROGRAM, 16, esd16_state ) AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM AM_RANGE(0x200000, 0x2005ff) AM_RAM_WRITE_LEGACY(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram) // Palette /**/AM_RANGE(0x300000, 0x3007ff) AM_RAM AM_BASE_SIZE(m_spriteram, m_spriteram_size) // Sprites - AM_RANGE(0x300800, 0x300807) AM_WRITE_LEGACY(esd16_spriteram_w) // Sprites (Mirrored) + AM_RANGE(0x300800, 0x300807) AM_WRITE(esd16_spriteram_w) // Sprites (Mirrored) /**/AM_RANGE(0x400000, 0x403fff) AM_RAM_WRITE_LEGACY(esd16_vram_0_w) AM_BASE(m_vram_0) // Layers /**/AM_RANGE(0x420000, 0x423fff) AM_RAM_WRITE_LEGACY(esd16_vram_1_w) AM_BASE(m_vram_1) // /**/AM_RANGE(0x500000, 0x500003) AM_RAM AM_BASE(m_scroll_0) // Scroll @@ -100,38 +98,36 @@ static ADDRESS_MAP_START( multchmp_map, AS_PROGRAM, 16, esd16_state ) AM_RANGE(0x600006, 0x600007) AM_READ_PORT("DSW") AM_RANGE(0x600008, 0x600009) AM_WRITE_LEGACY(esd16_tilemap0_color_w) // Flip Screen + Tileamp0 palette banking AM_RANGE(0x60000a, 0x60000b) AM_WRITENOP // ? 2 - AM_RANGE(0x60000c, 0x60000d) AM_WRITE_LEGACY(esd16_sound_command_w) // To Sound CPU + AM_RANGE(0x60000c, 0x60000d) AM_WRITE(esd16_sound_command_w) // To Sound CPU AM_RANGE(0x700008, 0x70000b) AM_READNOP // ? Only read once ADDRESS_MAP_END -static WRITE16_HANDLER(hedpanic_platform_w) +WRITE16_MEMBER(esd16_state::hedpanic_platform_w) { - esd16_state *state = space->machine().driver_data<esd16_state>(); - int offsets = state->m_headpanic_platform_x[0] + 0x40 * state->m_headpanic_platform_y[0]; + int offsets = m_headpanic_platform_x[0] + 0x40 * m_headpanic_platform_y[0]; - state->m_vram_1[offsets] = data; - state->m_tilemap_1_16x16->mark_tile_dirty(offsets); + m_vram_1[offsets] = data; + m_tilemap_1_16x16->mark_tile_dirty(offsets); } -static READ16_HANDLER( esd_eeprom_r ) +READ16_MEMBER(esd16_state::esd_eeprom_r) { - esd16_state *state = space->machine().driver_data<esd16_state>(); if (ACCESSING_BITS_8_15) { - return ((state->m_eeprom->read_bit() & 0x01) << 15); + return ((m_eeprom->read_bit() & 0x01) << 15); } -// logerror("(0x%06x) unk EEPROM read: %04x\n", cpu_get_pc(&space->device()), mem_mask); +// logerror("(0x%06x) unk EEPROM read: %04x\n", cpu_get_pc(&space.device()), mem_mask); return 0; } -static WRITE16_HANDLER( esd_eeprom_w ) +WRITE16_MEMBER(esd16_state::esd_eeprom_w) { if (ACCESSING_BITS_8_15) - input_port_write(space->machine(), "EEPROMOUT", data, 0xffff); + input_port_write(machine(), "EEPROMOUT", data, 0xffff); -// logerror("(0x%06x) Unk EEPROM write: %04x %04x\n", cpu_get_pc(&space->device()), data, mem_mask); +// logerror("(0x%06x) Unk EEPROM write: %04x %04x\n", cpu_get_pc(&space.device()), data, mem_mask); } static ADDRESS_MAP_START( hedpanic_map, AS_PROGRAM, 16, esd16_state ) @@ -139,7 +135,7 @@ static ADDRESS_MAP_START( hedpanic_map, AS_PROGRAM, 16, esd16_state ) AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM AM_RANGE(0x800000, 0x800fff) AM_RAM_WRITE_LEGACY(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram) // Palette AM_RANGE(0x900000, 0x9007ff) AM_WRITEONLY AM_BASE_SIZE(m_spriteram, m_spriteram_size) // Sprites - AM_RANGE(0x900800, 0x900807) AM_WRITE_LEGACY(esd16_spriteram_w) // Sprites (Mirrored) + AM_RANGE(0x900800, 0x900807) AM_WRITE(esd16_spriteram_w) // Sprites (Mirrored) AM_RANGE(0xa00000, 0xa03fff) AM_WRITE_LEGACY(esd16_vram_0_w) AM_BASE(m_vram_0) // Layers AM_RANGE(0xa20000, 0xa23fff) AM_WRITE_LEGACY(esd16_vram_1_w) AM_BASE(m_vram_1) // AM_RANGE(0xa24000, 0xa27fff) AM_WRITE_LEGACY(esd16_vram_1_w) AM_BASE(m_vram_1) // mirror? @@ -152,12 +148,12 @@ static ADDRESS_MAP_START( hedpanic_map, AS_PROGRAM, 16, esd16_state ) AM_RANGE(0xc00000, 0xc00001) AM_WRITENOP // IRQ Ack AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("P1_P2") AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("SYSTEM") - AM_RANGE(0xc00006, 0xc00007) AM_READ_LEGACY(esd_eeprom_r) + AM_RANGE(0xc00006, 0xc00007) AM_READ(esd_eeprom_r) AM_RANGE(0xc00008, 0xc00009) AM_WRITE_LEGACY(esd16_tilemap0_color_w) // Flip Screen + Tileamp0 palette banking AM_RANGE(0xc0000a, 0xc0000b) AM_WRITENOP // ? 2 not checked - AM_RANGE(0xc0000c, 0xc0000d) AM_WRITE_LEGACY(esd16_sound_command_w) // To Sound CPU // ok - AM_RANGE(0xc0000e, 0xc0000f) AM_WRITE_LEGACY(esd_eeprom_w) - AM_RANGE(0xd00008, 0xd00009) AM_WRITE_LEGACY(hedpanic_platform_w) + AM_RANGE(0xc0000c, 0xc0000d) AM_WRITE(esd16_sound_command_w) // To Sound CPU // ok + AM_RANGE(0xc0000e, 0xc0000f) AM_WRITE(esd_eeprom_w) + AM_RANGE(0xd00008, 0xd00009) AM_WRITE(hedpanic_platform_w) ADDRESS_MAP_END /* Multi Champ Deluxe, like Head Panic but different addresses */ @@ -172,20 +168,20 @@ static ADDRESS_MAP_START( mchampdx_map, AS_PROGRAM, 16, esd16_state ) AM_RANGE(0x500000, 0x500001) AM_WRITENOP // IRQ Ack AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P1_P2") AM_RANGE(0x500004, 0x500005) AM_READ_PORT("SYSTEM") - AM_RANGE(0x500006, 0x500007) AM_READ_LEGACY(esd_eeprom_r) + AM_RANGE(0x500006, 0x500007) AM_READ(esd_eeprom_r) AM_RANGE(0x500008, 0x500009) AM_WRITE_LEGACY(esd16_tilemap0_color_w) // Flip Screen + Tileamp0 palette banking AM_RANGE(0x50000a, 0x50000b) AM_WRITENOP // ? 2 not checked - AM_RANGE(0x50000c, 0x50000d) AM_WRITE_LEGACY(esd16_sound_command_w) // To Sound CPU // ok - AM_RANGE(0x50000e, 0x50000f) AM_WRITE_LEGACY(esd_eeprom_w) + AM_RANGE(0x50000c, 0x50000d) AM_WRITE(esd16_sound_command_w) // To Sound CPU // ok + AM_RANGE(0x50000e, 0x50000f) AM_WRITE(esd_eeprom_w) AM_RANGE(0x600000, 0x6007ff) AM_WRITEONLY AM_BASE_SIZE(m_spriteram, m_spriteram_size) // Sprites - AM_RANGE(0x600800, 0x600807) AM_WRITE_LEGACY(esd16_spriteram_w) // Sprites (Mirrored) + AM_RANGE(0x600800, 0x600807) AM_WRITE(esd16_spriteram_w) // Sprites (Mirrored) AM_RANGE(0x700000, 0x700003) AM_WRITEONLY AM_BASE(m_scroll_0) // Scroll AM_RANGE(0x700004, 0x700007) AM_WRITEONLY AM_BASE(m_scroll_1) // AM_RANGE(0x700008, 0x700009) AM_WRITEONLY AM_BASE(m_headpanic_platform_x) // not used in mchampdx? AM_RANGE(0x70000a, 0x70000b) AM_WRITEONLY AM_BASE(m_headpanic_platform_y) // not used in mchampdx? AM_RANGE(0x70000c, 0x70000d) AM_WRITENOP // ?? AM_RANGE(0x70000e, 0x70000f) AM_WRITEONLY AM_BASE(m_head_layersize) // ?? - AM_RANGE(0xd00008, 0xd00009) AM_WRITE_LEGACY(hedpanic_platform_w) // not used in mchampdx? + AM_RANGE(0xd00008, 0xd00009) AM_WRITE(hedpanic_platform_w) // not used in mchampdx? ADDRESS_MAP_END /* Tang Tang & Deluxe 5 - like the others but again with different addresses */ @@ -194,7 +190,7 @@ static ADDRESS_MAP_START( tangtang_map, AS_PROGRAM, 16, esd16_state ) AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE_LEGACY(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram) // RAM AM_RANGE(0x200000, 0x2007ff) AM_WRITEONLY AM_BASE_SIZE(m_spriteram, m_spriteram_size) // Sprites - AM_RANGE(0x200800, 0x200807) AM_WRITE_LEGACY(esd16_spriteram_w) // Sprites (Mirrored) + AM_RANGE(0x200800, 0x200807) AM_WRITE(esd16_spriteram_w) // Sprites (Mirrored) AM_RANGE(0x300000, 0x303fff) AM_WRITE_LEGACY(esd16_vram_0_w) AM_BASE(m_vram_0) // Layers AM_RANGE(0x320000, 0x323fff) AM_WRITE_LEGACY(esd16_vram_1_w) AM_BASE(m_vram_1) // AM_RANGE(0x324000, 0x327fff) AM_WRITE_LEGACY(esd16_vram_1_w) AM_BASE(m_vram_1) // mirror? @@ -207,12 +203,12 @@ static ADDRESS_MAP_START( tangtang_map, AS_PROGRAM, 16, esd16_state ) AM_RANGE(0x500000, 0x500001) AM_WRITENOP // IRQ Ack AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P1_P2") AM_RANGE(0x500004, 0x500005) AM_READ_PORT("SYSTEM") - AM_RANGE(0x500006, 0x500007) AM_READ_LEGACY(esd_eeprom_r) + AM_RANGE(0x500006, 0x500007) AM_READ(esd_eeprom_r) AM_RANGE(0x500008, 0x500009) AM_WRITE_LEGACY(esd16_tilemap0_color_w) // Flip Screen + Tileamp0 palette banking AM_RANGE(0x50000a, 0x50000b) AM_WRITENOP // ? 2 not checked - AM_RANGE(0x50000c, 0x50000d) AM_WRITE_LEGACY(esd16_sound_command_w) // To Sound CPU // ok - AM_RANGE(0x50000e, 0x50000f) AM_WRITE_LEGACY(esd_eeprom_w) - AM_RANGE(0x600008, 0x600009) AM_WRITE_LEGACY(hedpanic_platform_w) + AM_RANGE(0x50000c, 0x50000d) AM_WRITE(esd16_sound_command_w) // To Sound CPU // ok + AM_RANGE(0x50000e, 0x50000f) AM_WRITE(esd_eeprom_w) + AM_RANGE(0x600008, 0x600009) AM_WRITE(hedpanic_platform_w) AM_RANGE(0x700000, 0x70ffff) AM_RAM // main ram ADDRESS_MAP_END @@ -225,12 +221,12 @@ ADDRESS_MAP_END ***************************************************************************/ -static WRITE8_HANDLER( esd16_sound_rombank_w ) +WRITE8_MEMBER(esd16_state::esd16_sound_rombank_w) { int bank = data & 0xf; - if (data != bank) logerror("CPU #1 - PC %04X: unknown bank bits: %02X\n", cpu_get_pc(&space->device()), data); + if (data != bank) logerror("CPU #1 - PC %04X: unknown bank bits: %02X\n", cpu_get_pc(&space.device()), data); if (bank >= 3) bank += 1; - memory_set_bank(space->machine(), "bank1", bank); + memory_set_bank(machine(), "bank1", bank); } static ADDRESS_MAP_START( multchmp_sound_map, AS_PROGRAM, 8, esd16_state ) @@ -239,12 +235,11 @@ static ADDRESS_MAP_START( multchmp_sound_map, AS_PROGRAM, 8, esd16_state ) AM_RANGE(0xf800, 0xffff) AM_RAM // RAM ADDRESS_MAP_END -static READ8_HANDLER( esd16_sound_command_r ) +READ8_MEMBER(esd16_state::esd16_sound_command_r) { - esd16_state *state = space->machine().driver_data<esd16_state>(); /* Clear IRQ only after reading the command, or some get lost */ - device_set_input_line(state->m_audio_cpu, 0, CLEAR_LINE); + device_set_input_line(m_audio_cpu, 0, CLEAR_LINE); return soundlatch_r(space, 0); } @@ -252,9 +247,9 @@ static ADDRESS_MAP_START( multchmp_sound_io_map, AS_IO, 8, esd16_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x01) AM_DEVWRITE_LEGACY("ymsnd", ym3812_w) // YM3812 AM_RANGE(0x02, 0x02) AM_DEVREADWRITE("oki", okim6295_device, read, write) // M6295 - AM_RANGE(0x03, 0x03) AM_READ_LEGACY(esd16_sound_command_r) // From Main CPU + AM_RANGE(0x03, 0x03) AM_READ(esd16_sound_command_r) // From Main CPU AM_RANGE(0x04, 0x04) AM_WRITENOP // ? $00, $30 - AM_RANGE(0x05, 0x05) AM_WRITE_LEGACY(esd16_sound_rombank_w) // ROM Bank + AM_RANGE(0x05, 0x05) AM_WRITE(esd16_sound_rombank_w) // ROM Bank AM_RANGE(0x06, 0x06) AM_NOP // ? At the start / ? 1 (End of NMI routine) ADDRESS_MAP_END |