More atarigen modernization.

This commit is contained in:
Aaron Giles 2012-10-17 19:47:35 +00:00
parent 71f3911c87
commit 8711515fd6
35 changed files with 392 additions and 501 deletions

View File

@ -145,7 +145,7 @@ WRITE16_MEMBER(arcadecl_state::latch_w)
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, arcadecl_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x200000, 0x21ffff) AM_RAM AM_SHARE("bitmap")
AM_RANGE(0x3c0000, 0x3c07ff) AM_RAM_WRITE_LEGACY(atarigen_expanded_666_paletteram_w) AM_SHARE("paletteram")
AM_RANGE(0x3c0000, 0x3c07ff) AM_RAM_WRITE(expanded_paletteram_666_w) AM_SHARE("paletteram")
AM_RANGE(0x3e0000, 0x3e07ff) AM_READWRITE_LEGACY(atarimo_0_spriteram_r, atarimo_0_spriteram_w)
AM_RANGE(0x3e0800, 0x3effbf) AM_RAM
AM_RANGE(0x3effc0, 0x3effff) AM_READWRITE_LEGACY(atarimo_0_slipram_r, atarimo_0_slipram_w)
@ -158,8 +158,8 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, arcadecl_state )
AM_RANGE(0x640024, 0x640025) AM_READ_PORT("TRACKX1")
AM_RANGE(0x640026, 0x640027) AM_READ_PORT("TRACKY1")
AM_RANGE(0x640040, 0x64004f) AM_WRITE(latch_w)
AM_RANGE(0x640060, 0x64006f) AM_WRITE_LEGACY(atarigen_eeprom_enable_w)
AM_RANGE(0x641000, 0x641fff) AM_READWRITE_LEGACY(atarigen_eeprom_r, atarigen_eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0x640060, 0x64006f) AM_WRITE(eeprom_enable_w)
AM_RANGE(0x641000, 0x641fff) AM_READWRITE(eeprom_r, eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0x642000, 0x642001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0xff00)
AM_RANGE(0x646000, 0x646fff) AM_WRITE(scanline_int_ack_w)
AM_RANGE(0x647000, 0x647fff) AM_WRITE(watchdog_reset16_w)
@ -319,7 +319,7 @@ static MACHINE_CONFIG_START( arcadecl, arcadecl_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68000, MASTER_CLOCK)
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_CPU_VBLANK_INT("screen", atarigen_video_int_gen)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
MCFG_MACHINE_RESET_OVERRIDE(arcadecl_state,arcadecl)
MCFG_NVRAM_ADD_1FILL("eeprom")

View File

@ -204,21 +204,21 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, atarig1_state )
AM_RANGE(0x040000, 0x077fff) AM_ROM
AM_RANGE(0x078000, 0x07ffff) AM_ROM /* hydra slapstic goes here */
AM_RANGE(0xf80000, 0xf80001) AM_WRITE(watchdog_reset16_w)
AM_RANGE(0xf88000, 0xf8ffff) AM_WRITE_LEGACY(atarigen_eeprom_enable_w)
AM_RANGE(0xf88000, 0xf8ffff) AM_WRITE(eeprom_enable_w)
AM_RANGE(0xf90000, 0xf90001) AM_WRITE8(sound_w, 0xff00)
AM_RANGE(0xf98000, 0xf98001) AM_WRITE(sound_reset_w)
AM_RANGE(0xfa0000, 0xfa0001) AM_WRITE(mo_control_w)
AM_RANGE(0xfb0000, 0xfb0001) AM_WRITE_LEGACY(atarigen_video_int_ack_w)
AM_RANGE(0xfb0000, 0xfb0001) AM_WRITE(video_int_ack_w)
AM_RANGE(0xfc0000, 0xfc0001) AM_READ(special_port0_r)
AM_RANGE(0xfc8000, 0xfc8007) AM_READWRITE(a2d_data_r, a2d_select_w)
AM_RANGE(0xfd0000, 0xfd0001) AM_READ8(sound_r, 0xff00)
AM_RANGE(0xfd8000, 0xfdffff) AM_READWRITE_LEGACY(atarigen_eeprom_r, atarigen_eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0xfd8000, 0xfdffff) AM_READWRITE(eeprom_r, eeprom_w) AM_SHARE("eeprom")
/* AM_RANGE(0xfe0000, 0xfe7fff) AM_READ_LEGACY(from_r)*/
AM_RANGE(0xfe8000, 0xfe89ff) AM_RAM_WRITE_LEGACY(atarigen_666_paletteram_w) AM_SHARE("paletteram")
AM_RANGE(0xfe8000, 0xfe89ff) AM_RAM_WRITE(paletteram_666_w) AM_SHARE("paletteram")
AM_RANGE(0xff0000, 0xff0fff) AM_DEVREADWRITE_LEGACY("rle", atarirle_spriteram_r, atarirle_spriteram_w)
AM_RANGE(0xff2000, 0xff2001) AM_WRITE(mo_command_w) AM_SHARE("mo_command")
AM_RANGE(0xff4000, 0xff5fff) AM_WRITE_LEGACY(atarigen_playfield_w) AM_SHARE("playfield")
AM_RANGE(0xff6000, 0xff6fff) AM_WRITE_LEGACY(atarigen_alpha_w) AM_SHARE("alpha")
AM_RANGE(0xff4000, 0xff5fff) AM_WRITE(playfield_w) AM_SHARE("playfield")
AM_RANGE(0xff6000, 0xff6fff) AM_WRITE(alpha_w) AM_SHARE("alpha")
AM_RANGE(0xff0000, 0xffffff) AM_RAM
ADDRESS_MAP_END
@ -445,7 +445,7 @@ static MACHINE_CONFIG_START( atarig1, atarig1_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz)
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_CPU_VBLANK_INT("screen", atarigen_video_int_gen)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
MCFG_MACHINE_START_OVERRIDE(atarig1_state,atarig1)
MCFG_MACHINE_RESET_OVERRIDE(atarig1_state,atarig1)

View File

@ -343,18 +343,18 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, atarig42_state )
AM_RANGE(0xe00030, 0xe00031) AM_READ8(sound_r, 0x00ff)
AM_RANGE(0xe00040, 0xe00041) AM_WRITE8(sound_w, 0x00ff)
AM_RANGE(0xe00050, 0xe00051) AM_WRITE(io_latch_w)
AM_RANGE(0xe00060, 0xe00061) AM_WRITE_LEGACY(atarigen_eeprom_enable_w)
AM_RANGE(0xe03000, 0xe03001) AM_WRITE_LEGACY(atarigen_video_int_ack_w)
AM_RANGE(0xe00060, 0xe00061) AM_WRITE(eeprom_enable_w)
AM_RANGE(0xe03000, 0xe03001) AM_WRITE(video_int_ack_w)
AM_RANGE(0xe03800, 0xe03801) AM_WRITE(watchdog_reset16_w)
AM_RANGE(0xe80000, 0xe80fff) AM_RAM
AM_RANGE(0xf40000, 0xf40001) AM_READ_LEGACY(asic65_io_r)
AM_RANGE(0xf60000, 0xf60001) AM_READ_LEGACY(asic65_r)
AM_RANGE(0xf80000, 0xf80003) AM_WRITE_LEGACY(asic65_data_w)
AM_RANGE(0xfa0000, 0xfa0fff) AM_READWRITE_LEGACY(atarigen_eeprom_r, atarigen_eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0xfc0000, 0xfc0fff) AM_RAM_WRITE_LEGACY(atarigen_666_paletteram_w) AM_SHARE("paletteram")
AM_RANGE(0xfa0000, 0xfa0fff) AM_READWRITE(eeprom_r, eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0xfc0000, 0xfc0fff) AM_RAM_WRITE(paletteram_666_w) AM_SHARE("paletteram")
AM_RANGE(0xff0000, 0xff0fff) AM_DEVREADWRITE_LEGACY("rle", atarirle_spriteram_r, atarirle_spriteram_w)
AM_RANGE(0xff2000, 0xff5fff) AM_WRITE_LEGACY(atarigen_playfield_w) AM_SHARE("playfield")
AM_RANGE(0xff6000, 0xff6fff) AM_WRITE_LEGACY(atarigen_alpha_w) AM_SHARE("alpha")
AM_RANGE(0xff2000, 0xff5fff) AM_WRITE(playfield_w) AM_SHARE("playfield")
AM_RANGE(0xff6000, 0xff6fff) AM_WRITE(alpha_w) AM_SHARE("alpha")
AM_RANGE(0xff7000, 0xff7001) AM_WRITE(mo_command_w) AM_SHARE("mo_command")
AM_RANGE(0xff0000, 0xffffff) AM_RAM
ADDRESS_MAP_END
@ -548,7 +548,7 @@ static MACHINE_CONFIG_START( atarig42, atarig42_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz)
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_CPU_VBLANK_INT("screen", atarigen_video_int_gen)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
/* ASIC65 */
MCFG_FRAGMENT_ADD(asic65)

View File

@ -71,12 +71,13 @@ MACHINE_RESET_MEMBER(atarigt_state,atarigt)
static void cage_irq_callback(running_machine &machine, int reason)
{
atarigen_state *atarigen = machine.driver_data<atarigen_state>();
address_space &space = machine.device("maincpu")->memory().space(AS_PROGRAM);
if (reason)
atarigen_sound_int_gen(machine.device("maincpu"));
atarigen->sound_int_gen(*machine.device("maincpu"));
else
atarigen_sound_int_ack_w(space,0,0,0xffff);
atarigen->sound_int_ack_w(space,0,0);
}
@ -593,10 +594,10 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 32, atarigt_state )
AM_RANGE(0xc00000, 0xc00003) AM_READWRITE(sound_data_r, sound_data_w)
AM_RANGE(0xd00014, 0xd00017) AM_READ(analog_port0_r)
AM_RANGE(0xd0001c, 0xd0001f) AM_READ(analog_port1_r)
AM_RANGE(0xd20000, 0xd20fff) AM_READWRITE_LEGACY(atarigen_eeprom_upper32_r, atarigen_eeprom32_w) AM_SHARE("eeprom")
AM_RANGE(0xd40000, 0xd4ffff) AM_WRITE_LEGACY(atarigen_eeprom_enable32_w)
AM_RANGE(0xd72000, 0xd75fff) AM_WRITE_LEGACY(atarigen_playfield32_w) AM_SHARE("playfield32")
AM_RANGE(0xd76000, 0xd76fff) AM_WRITE_LEGACY(atarigen_alpha32_w) AM_SHARE("alpha32")
AM_RANGE(0xd20000, 0xd20fff) AM_READWRITE(eeprom_upper32_r, eeprom32_w) AM_SHARE("eeprom")
AM_RANGE(0xd40000, 0xd4ffff) AM_WRITE16(eeprom_enable_w, 0xffffffff)
AM_RANGE(0xd72000, 0xd75fff) AM_WRITE(playfield32_w) AM_SHARE("playfield32")
AM_RANGE(0xd76000, 0xd76fff) AM_WRITE(alpha32_w) AM_SHARE("alpha32")
AM_RANGE(0xd78000, 0xd78fff) AM_DEVREADWRITE_LEGACY("rle", atarirle_spriteram32_r, atarirle_spriteram32_w)
AM_RANGE(0xd7a200, 0xd7a203) AM_WRITE(mo_command_w) AM_SHARE("mo_command")
AM_RANGE(0xd70000, 0xd7ffff) AM_RAM
@ -604,7 +605,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 32, atarigt_state )
AM_RANGE(0xe04000, 0xe04003) AM_WRITE(led_w)
AM_RANGE(0xe08000, 0xe08003) AM_WRITE(latch_w)
AM_RANGE(0xe0a000, 0xe0a003) AM_WRITE16(scanline_int_ack_w, 0xffffffff)
AM_RANGE(0xe0c000, 0xe0c003) AM_WRITE_LEGACY(atarigen_video_int_ack32_w)
AM_RANGE(0xe0c000, 0xe0c003) AM_WRITE16(video_int_ack_w, 0xffffffff)
AM_RANGE(0xe0e000, 0xe0e003) AM_WRITENOP//watchdog_reset_w },
AM_RANGE(0xe80000, 0xe80003) AM_READ_PORT("P1_P2")
AM_RANGE(0xe82000, 0xe82003) AM_READ(special_port2_r)
@ -801,7 +802,7 @@ static MACHINE_CONFIG_START( atarigt, atarigt_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68EC020, ATARI_CLOCK_50MHz/2)
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_CPU_VBLANK_INT("screen", atarigen_video_int_gen)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
MCFG_CPU_PERIODIC_INT_DRIVER(atarigen_state, scanline_int_gen, 250)
MCFG_MACHINE_RESET_OVERRIDE(atarigt_state,atarigt)
@ -1247,7 +1248,7 @@ WRITE32_MEMBER(atarigt_state::tmek_pf_w)
if (pc == 0x25834 || pc == 0x25860)
logerror("%06X:PFW@%06X = %08X & %08X (src=%06X)\n", space.device().safe_pc(), 0xd72000 + offset*4, data, mem_mask, (UINT32)space.device().state().state_int(M68K_A3) - 2);
atarigen_playfield32_w(space, offset, data, mem_mask);
playfield32_w(space, offset, data, mem_mask);
}
DRIVER_INIT_MEMBER(atarigt_state,tmek)

View File

@ -1140,17 +1140,17 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 32, atarigx2_state )
AM_RANGE(0xc80000, 0xc80fff) AM_RAM
AM_RANGE(0xca0000, 0xca0fff) AM_READWRITE(atarigx2_protection_r, atarigx2_protection_w) AM_SHARE("protection_base")
AM_RANGE(0xd00000, 0xd1ffff) AM_READ(a2d_data_r)
AM_RANGE(0xd20000, 0xd20fff) AM_READWRITE_LEGACY(atarigen_eeprom_upper32_r, atarigen_eeprom32_w) AM_SHARE("eeprom")
AM_RANGE(0xd40000, 0xd40fff) AM_RAM_WRITE_LEGACY(atarigen_666_paletteram32_w) AM_SHARE("paletteram")
AM_RANGE(0xd72000, 0xd75fff) AM_WRITE_LEGACY(atarigen_playfield32_w) AM_SHARE("playfield32")
AM_RANGE(0xd76000, 0xd76fff) AM_WRITE_LEGACY(atarigen_alpha32_w) AM_SHARE("alpha32")
AM_RANGE(0xd20000, 0xd20fff) AM_READWRITE(eeprom_upper32_r, eeprom32_w) AM_SHARE("eeprom")
AM_RANGE(0xd40000, 0xd40fff) AM_RAM_WRITE(paletteram32_666_w) AM_SHARE("paletteram")
AM_RANGE(0xd72000, 0xd75fff) AM_WRITE(playfield32_w) AM_SHARE("playfield32")
AM_RANGE(0xd76000, 0xd76fff) AM_WRITE(alpha32_w) AM_SHARE("alpha32")
AM_RANGE(0xd78000, 0xd78fff) AM_DEVREADWRITE_LEGACY("rle", atarirle_spriteram32_r, atarirle_spriteram32_w)
AM_RANGE(0xd7a200, 0xd7a203) AM_WRITE(mo_command_w) AM_SHARE("mo_command")
AM_RANGE(0xd70000, 0xd7ffff) AM_RAM
AM_RANGE(0xd80000, 0xd9ffff) AM_WRITE_LEGACY(atarigen_eeprom_enable32_w)
AM_RANGE(0xd80000, 0xd9ffff) AM_WRITE16(eeprom_enable_w, 0xffffffff)
AM_RANGE(0xe06000, 0xe06003) AM_WRITE8(sound_w, 0xff000000)
AM_RANGE(0xe08000, 0xe08003) AM_WRITE(latch_w)
AM_RANGE(0xe0c000, 0xe0c003) AM_WRITE_LEGACY(atarigen_video_int_ack32_w)
AM_RANGE(0xe0c000, 0xe0c003) AM_WRITE16(video_int_ack_w, 0xffffffff)
AM_RANGE(0xe0e000, 0xe0e003) AM_WRITENOP//watchdog_reset_w },
AM_RANGE(0xe80000, 0xe80003) AM_READ_PORT("P1_P2")
AM_RANGE(0xe82000, 0xe82003) AM_READ(special_port2_r)
@ -1422,7 +1422,7 @@ static MACHINE_CONFIG_START( atarigx2, atarigx2_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68EC020, ATARI_CLOCK_14MHz)
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_CPU_VBLANK_INT("screen", atarigen_video_int_gen)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
MCFG_MACHINE_RESET_OVERRIDE(atarigx2_state,atarigx2)
MCFG_NVRAM_ADD_1FILL("eeprom")

View File

@ -468,14 +468,14 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, atarisy1_state )
AM_RANGE(0x840000, 0x840001) AM_WRITE_LEGACY(atarisy1_priority_w)
AM_RANGE(0x860000, 0x860001) AM_WRITE_LEGACY(atarisy1_bankselect_w) AM_SHARE("bankselect")
AM_RANGE(0x880000, 0x880001) AM_WRITE(watchdog_reset16_w)
AM_RANGE(0x8a0000, 0x8a0001) AM_WRITE_LEGACY(atarigen_video_int_ack_w)
AM_RANGE(0x8c0000, 0x8c0001) AM_WRITE_LEGACY(atarigen_eeprom_enable_w)
AM_RANGE(0x8a0000, 0x8a0001) AM_WRITE(video_int_ack_w)
AM_RANGE(0x8c0000, 0x8c0001) AM_WRITE(eeprom_enable_w)
AM_RANGE(0x900000, 0x9fffff) AM_RAM
AM_RANGE(0xa00000, 0xa01fff) AM_RAM_WRITE_LEGACY(atarigen_playfield_w) AM_SHARE("playfield")
AM_RANGE(0xa00000, 0xa01fff) AM_RAM_WRITE(playfield_w) AM_SHARE("playfield")
AM_RANGE(0xa02000, 0xa02fff) AM_READWRITE_LEGACY(atarimo_0_spriteram_r, atarisy1_spriteram_w)
AM_RANGE(0xa03000, 0xa03fff) AM_RAM_WRITE_LEGACY(atarigen_alpha_w) AM_SHARE("alpha")
AM_RANGE(0xa03000, 0xa03fff) AM_RAM_WRITE(alpha_w) AM_SHARE("alpha")
AM_RANGE(0xb00000, 0xb007ff) AM_RAM_WRITE(paletteram_IIIIRRRRGGGGBBBB_word_w) AM_SHARE("paletteram")
AM_RANGE(0xf00000, 0xf00fff) AM_READWRITE_LEGACY(atarigen_eeprom_r, atarigen_eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0xf00000, 0xf00fff) AM_READWRITE(eeprom_r, eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0xf20000, 0xf20007) AM_READ(trakball_r)
AM_RANGE(0xf40000, 0xf4001f) AM_READWRITE(joystick_r, joystick_w)
AM_RANGE(0xf60000, 0xf60003) AM_READ(port4_r)
@ -742,7 +742,7 @@ static MACHINE_CONFIG_START( atarisy1, atarisy1_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68010, ATARI_CLOCK_14MHz/2)
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_CPU_VBLANK_INT("screen", atarigen_video_int_gen)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
MCFG_CPU_ADD("audiocpu", M6502, ATARI_CLOCK_14MHz/8)
MCFG_CPU_PROGRAM_MAP(sound_map)

View File

@ -255,10 +255,9 @@ MACHINE_RESET_MEMBER(atarisy2_state,atarisy2)
INTERRUPT_GEN_MEMBER(atarisy2_state::vblank_int)
{
/* clock the VBLANK through */
if (m_interrupt_enable & 8)
atarigen_video_int_gen(&device);
video_int_gen(device);
}
@ -794,7 +793,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, atarisy2_state )
AM_RANGE(0x1580, 0x1581) AM_MIRROR(0x001e) AM_WRITE(int0_ack_w)
AM_RANGE(0x15a0, 0x15a1) AM_MIRROR(0x001e) AM_WRITE(int1_ack_w)
AM_RANGE(0x15c0, 0x15c1) AM_MIRROR(0x001e) AM_WRITE(scanline_int_ack_w)
AM_RANGE(0x15e0, 0x15e1) AM_MIRROR(0x001e) AM_WRITE_LEGACY(atarigen_video_int_ack_w)
AM_RANGE(0x15e0, 0x15e1) AM_MIRROR(0x001e) AM_WRITE(video_int_ack_w)
AM_RANGE(0x1600, 0x1601) AM_MIRROR(0x007e) AM_WRITE(int_enable_w)
AM_RANGE(0x1680, 0x1681) AM_MIRROR(0x007e) AM_WRITE8(sound_w, 0x00ff)
AM_RANGE(0x1700, 0x1701) AM_MIRROR(0x007e) AM_WRITE_LEGACY(atarisy2_xscroll_w) AM_SHARE("xscroll")

View File

@ -235,7 +235,7 @@ INTERRUPT_GEN_MEMBER(badlands_state::vblank_int)
m_pedal_value[i]++;
}
atarigen_video_int_gen(&device);
video_int_gen(device);
}
@ -371,9 +371,9 @@ WRITE8_MEMBER(badlands_state::audio_io_w)
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, badlands_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0xfc0000, 0xfc1fff) AM_READ(sound_busy_r) AM_WRITE(sound_reset_w)
AM_RANGE(0xfd0000, 0xfd1fff) AM_READWRITE_LEGACY(atarigen_eeprom_r, atarigen_eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0xfd0000, 0xfd1fff) AM_READWRITE(eeprom_r, eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0xfe0000, 0xfe1fff) AM_WRITE(watchdog_reset16_w)
AM_RANGE(0xfe2000, 0xfe3fff) AM_WRITE_LEGACY(atarigen_video_int_ack_w)
AM_RANGE(0xfe2000, 0xfe3fff) AM_WRITE(video_int_ack_w)
AM_RANGE(0xfe4000, 0xfe5fff) AM_READ_PORT("FE4000")
AM_RANGE(0xfe6000, 0xfe6001) AM_READ_PORT("FE6000")
AM_RANGE(0xfe6002, 0xfe6003) AM_READ_PORT("FE6002")
@ -382,9 +382,9 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, badlands_state )
AM_RANGE(0xfe8000, 0xfe9fff) AM_WRITE8(sound_w, 0xff00)
AM_RANGE(0xfea000, 0xfebfff) AM_READ8(sound_r, 0xff00)
AM_RANGE(0xfec000, 0xfedfff) AM_WRITE_LEGACY(badlands_pf_bank_w)
AM_RANGE(0xfee000, 0xfeffff) AM_WRITE_LEGACY(atarigen_eeprom_enable_w)
AM_RANGE(0xffc000, 0xffc3ff) AM_RAM_WRITE_LEGACY(atarigen_expanded_666_paletteram_w) AM_SHARE("paletteram")
AM_RANGE(0xffe000, 0xffefff) AM_RAM_WRITE_LEGACY(atarigen_playfield_w) AM_SHARE("playfield")
AM_RANGE(0xfee000, 0xfeffff) AM_WRITE(eeprom_enable_w)
AM_RANGE(0xffc000, 0xffc3ff) AM_RAM_WRITE(expanded_paletteram_666_w) AM_SHARE("paletteram")
AM_RANGE(0xffe000, 0xffefff) AM_RAM_WRITE(playfield_w) AM_SHARE("playfield")
AM_RANGE(0xfff000, 0xfff1ff) AM_READWRITE_LEGACY(atarimo_0_spriteram_r, atarimo_0_spriteram_expanded_w)
AM_RANGE(0xfff200, 0xffffff) AM_RAM
ADDRESS_MAP_END
@ -637,14 +637,14 @@ static ADDRESS_MAP_START( bootleg_map, AS_PROGRAM, 16, badlands_state )
AM_RANGE(0xfe4006, 0xfe4007) AM_READ(badlandsb_unk_r )
AM_RANGE(0xfd0000, 0xfd1fff) AM_READWRITE_LEGACY(atarigen_eeprom_r, atarigen_eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0xfd0000, 0xfd1fff) AM_READWRITE(eeprom_r, eeprom_w) AM_SHARE("eeprom")
//AM_RANGE(0xfe0000, 0xfe1fff) AM_WRITE(watchdog_reset16_w)
AM_RANGE(0xfe2000, 0xfe3fff) AM_WRITE_LEGACY(atarigen_video_int_ack_w)
AM_RANGE(0xfe2000, 0xfe3fff) AM_WRITE(video_int_ack_w)
AM_RANGE(0xfec000, 0xfedfff) AM_WRITE_LEGACY(badlands_pf_bank_w)
AM_RANGE(0xfee000, 0xfeffff) AM_WRITE_LEGACY(atarigen_eeprom_enable_w)
AM_RANGE(0xffc000, 0xffc3ff) AM_RAM_WRITE_LEGACY(atarigen_expanded_666_paletteram_w) AM_SHARE("paletteram")
AM_RANGE(0xffe000, 0xffefff) AM_RAM_WRITE_LEGACY(atarigen_playfield_w) AM_SHARE("playfield")
AM_RANGE(0xfee000, 0xfeffff) AM_WRITE(eeprom_enable_w)
AM_RANGE(0xffc000, 0xffc3ff) AM_RAM_WRITE(expanded_paletteram_666_w) AM_SHARE("paletteram")
AM_RANGE(0xffe000, 0xffefff) AM_RAM_WRITE(playfield_w) AM_SHARE("playfield")
AM_RANGE(0xfff000, 0xfff1ff) AM_READWRITE_LEGACY(atarimo_0_spriteram_r, atarimo_0_spriteram_expanded_w)
AM_RANGE(0xfff200, 0xffffff) AM_RAM
ADDRESS_MAP_END

View File

@ -127,22 +127,22 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, batman_state )
ADDRESS_MAP_GLOBAL_MASK(0x3fffff)
AM_RANGE(0x000000, 0x0bffff) AM_ROM
AM_RANGE(0x100000, 0x10ffff) AM_MIRROR(0x010000) AM_RAM
AM_RANGE(0x120000, 0x120fff) AM_MIRROR(0x01f000) AM_READWRITE_LEGACY(atarigen_eeprom_r, atarigen_eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0x120000, 0x120fff) AM_MIRROR(0x01f000) AM_READWRITE(eeprom_r, eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0x260000, 0x260001) AM_MIRROR(0x11ff8c) AM_READ_PORT("260000")
AM_RANGE(0x260002, 0x260003) AM_MIRROR(0x11ff8c) AM_READ_PORT("260002")
AM_RANGE(0x260010, 0x260011) AM_MIRROR(0x11ff8e) AM_READ(special_port2_r)
AM_RANGE(0x260030, 0x260031) AM_MIRROR(0x11ff8e) AM_READ8(sound_r, 0x00ff)
AM_RANGE(0x260040, 0x260041) AM_MIRROR(0x11ff8e) AM_WRITE8(sound_w, 0x00ff)
AM_RANGE(0x260050, 0x260051) AM_MIRROR(0x11ff8e) AM_WRITE(latch_w)
AM_RANGE(0x260060, 0x260061) AM_MIRROR(0x11ff8e) AM_WRITE_LEGACY(atarigen_eeprom_enable_w)
AM_RANGE(0x260060, 0x260061) AM_MIRROR(0x11ff8e) AM_WRITE(eeprom_enable_w)
AM_RANGE(0x2a0000, 0x2a0001) AM_MIRROR(0x11fffe) AM_WRITE(watchdog_reset16_w)
AM_RANGE(0x3e0000, 0x3e0fff) AM_MIRROR(0x100000) AM_RAM_WRITE_LEGACY(atarigen_666_paletteram_w) AM_SHARE("paletteram")
AM_RANGE(0x3e0000, 0x3e0fff) AM_MIRROR(0x100000) AM_RAM_WRITE(paletteram_666_w) AM_SHARE("paletteram")
AM_RANGE(0x3effc0, 0x3effff) AM_MIRROR(0x100000) AM_READWRITE(batman_atarivc_r, batman_atarivc_w) AM_SHARE("atarivc_data")
AM_RANGE(0x3f0000, 0x3f1fff) AM_MIRROR(0x100000) AM_WRITE_LEGACY(atarigen_playfield2_latched_msb_w) AM_SHARE("playfield2")
AM_RANGE(0x3f2000, 0x3f3fff) AM_MIRROR(0x100000) AM_WRITE_LEGACY(atarigen_playfield_latched_lsb_w) AM_SHARE("playfield")
AM_RANGE(0x3f4000, 0x3f5fff) AM_MIRROR(0x100000) AM_WRITE_LEGACY(atarigen_playfield_dual_upper_w) AM_SHARE("playfield_up")
AM_RANGE(0x3f0000, 0x3f1fff) AM_MIRROR(0x100000) AM_WRITE(playfield2_latched_msb_w) AM_SHARE("playfield2")
AM_RANGE(0x3f2000, 0x3f3fff) AM_MIRROR(0x100000) AM_WRITE(playfield_latched_lsb_w) AM_SHARE("playfield")
AM_RANGE(0x3f4000, 0x3f5fff) AM_MIRROR(0x100000) AM_WRITE(playfield_dual_upper_w) AM_SHARE("playfield_up")
AM_RANGE(0x3f6000, 0x3f7fff) AM_MIRROR(0x100000) AM_READWRITE_LEGACY(atarimo_0_spriteram_r, atarimo_0_spriteram_w)
AM_RANGE(0x3f8000, 0x3f8eff) AM_MIRROR(0x100000) AM_WRITE_LEGACY(atarigen_alpha_w) AM_SHARE("alpha")
AM_RANGE(0x3f8000, 0x3f8eff) AM_MIRROR(0x100000) AM_WRITE(alpha_w) AM_SHARE("alpha")
AM_RANGE(0x3f8f00, 0x3f8f7f) AM_MIRROR(0x100000) AM_SHARE("atarivc_eof")
AM_RANGE(0x3f8f80, 0x3f8fff) AM_MIRROR(0x100000) AM_READWRITE_LEGACY(atarimo_0_slipram_r, atarimo_0_slipram_w)
AM_RANGE(0x3f0000, 0x3fffff) AM_MIRROR(0x100000) AM_RAM

View File

@ -67,7 +67,7 @@ READ16_MEMBER(blstroid_state::inputs_r)
int temp = ioport(iptnames[offset & 1])->read();
if (m_cpu_to_sound_ready) temp ^= 0x0040;
if (atarigen_get_hblank(*machine().primary_screen)) temp ^= 0x0010;
if (get_hblank(*machine().primary_screen)) temp ^= 0x0010;
return temp;
}
@ -85,8 +85,8 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, blstroid_state )
AM_RANGE(0x000000, 0x03ffff) AM_MIRROR(0x7c0000) AM_ROM
AM_RANGE(0xff8000, 0xff8001) AM_MIRROR(0x7f81fe) AM_WRITE(watchdog_reset16_w)
AM_RANGE(0xff8200, 0xff8201) AM_MIRROR(0x7f81fe) AM_WRITE(scanline_int_ack_w)
AM_RANGE(0xff8400, 0xff8401) AM_MIRROR(0x7f81fe) AM_WRITE_LEGACY(atarigen_video_int_ack_w)
AM_RANGE(0xff8600, 0xff8601) AM_MIRROR(0x7f81fe) AM_WRITE_LEGACY(atarigen_eeprom_enable_w)
AM_RANGE(0xff8400, 0xff8401) AM_MIRROR(0x7f81fe) AM_WRITE(video_int_ack_w)
AM_RANGE(0xff8600, 0xff8601) AM_MIRROR(0x7f81fe) AM_WRITE(eeprom_enable_w)
AM_RANGE(0xff8800, 0xff89ff) AM_MIRROR(0x7f8000) AM_WRITEONLY AM_SHARE("priorityram")
AM_RANGE(0xff8a00, 0xff8a01) AM_MIRROR(0x7f81fe) AM_WRITE8(sound_w, 0x00ff)
AM_RANGE(0xff8c00, 0xff8c01) AM_MIRROR(0x7f81fe) AM_WRITE(sound_reset_w)
@ -96,8 +96,8 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, blstroid_state )
AM_RANGE(0xff9804, 0xff9805) AM_MIRROR(0x7f83f8) AM_READ_PORT("DIAL1")
AM_RANGE(0xff9c00, 0xff9c03) AM_MIRROR(0x7f83fc) AM_READ(inputs_r)
AM_RANGE(0xffa000, 0xffa3ff) AM_MIRROR(0x7f8c00) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram")
AM_RANGE(0xffb000, 0xffb3ff) AM_MIRROR(0x7f8c00) AM_READWRITE_LEGACY(atarigen_eeprom_r, atarigen_eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0xffc000, 0xffcfff) AM_MIRROR(0x7f8000) AM_RAM_WRITE_LEGACY(atarigen_playfield_w) AM_SHARE("playfield")
AM_RANGE(0xffb000, 0xffb3ff) AM_MIRROR(0x7f8c00) AM_READWRITE(eeprom_r, eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0xffc000, 0xffcfff) AM_MIRROR(0x7f8000) AM_RAM_WRITE(playfield_w) AM_SHARE("playfield")
AM_RANGE(0xffd000, 0xffdfff) AM_MIRROR(0x7f8000) AM_READWRITE_LEGACY(atarimo_0_spriteram_r, atarimo_0_spriteram_w)
AM_RANGE(0xffe000, 0xffffff) AM_MIRROR(0x7f8000) AM_RAM
ADDRESS_MAP_END
@ -195,7 +195,7 @@ static MACHINE_CONFIG_START( blstroid, blstroid_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2)
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_CPU_VBLANK_INT("screen", atarigen_video_int_gen)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
MCFG_MACHINE_RESET_OVERRIDE(blstroid_state,blstroid)
MCFG_NVRAM_ADD_1FILL("eeprom")

View File

@ -137,9 +137,9 @@ WRITE16_MEMBER(cyberbal_state::p2_reset_w)
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, cyberbal_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0xfc0000, 0xfc0fff) AM_READWRITE_LEGACY(atarigen_eeprom_r, atarigen_eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0xfc0000, 0xfc0fff) AM_READWRITE(eeprom_r, eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0xfc8000, 0xfcffff) AM_READ8(sound_r, 0xff00)
AM_RANGE(0xfd0000, 0xfd1fff) AM_WRITE_LEGACY(atarigen_eeprom_enable_w)
AM_RANGE(0xfd0000, 0xfd1fff) AM_WRITE(eeprom_enable_w)
AM_RANGE(0xfd2000, 0xfd3fff) AM_WRITE(sound_reset_w)
AM_RANGE(0xfd4000, 0xfd5fff) AM_WRITE(watchdog_reset16_w)
AM_RANGE(0xfd6000, 0xfd7fff) AM_WRITE(p2_reset_w)
@ -148,12 +148,12 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, cyberbal_state )
AM_RANGE(0xfe1000, 0xfe1fff) AM_READ_PORT("IN1")
AM_RANGE(0xfe8000, 0xfe8fff) AM_RAM_WRITE_LEGACY(cyberbal_paletteram_1_w) AM_SHARE("paletteram_1")
AM_RANGE(0xfec000, 0xfecfff) AM_RAM_WRITE_LEGACY(cyberbal_paletteram_0_w) AM_SHARE("paletteram_0")
AM_RANGE(0xff0000, 0xff1fff) AM_RAM_WRITE_LEGACY(atarigen_playfield2_w) AM_SHARE("playfield2")
AM_RANGE(0xff2000, 0xff2fff) AM_RAM_WRITE_LEGACY(atarigen_alpha2_w) AM_SHARE("alpha2")
AM_RANGE(0xff0000, 0xff1fff) AM_RAM_WRITE(playfield2_w) AM_SHARE("playfield2")
AM_RANGE(0xff2000, 0xff2fff) AM_RAM_WRITE(alpha2_w) AM_SHARE("alpha2")
AM_RANGE(0xff3000, 0xff37ff) AM_READWRITE_LEGACY(atarimo_1_spriteram_r, atarimo_1_spriteram_w)
AM_RANGE(0xff3800, 0xff3fff) AM_RAM AM_SHARE("share6")
AM_RANGE(0xff4000, 0xff5fff) AM_RAM_WRITE_LEGACY(atarigen_playfield_w) AM_SHARE("playfield")
AM_RANGE(0xff6000, 0xff6fff) AM_RAM_WRITE_LEGACY(atarigen_alpha_w) AM_SHARE("alpha")
AM_RANGE(0xff4000, 0xff5fff) AM_RAM_WRITE(playfield_w) AM_SHARE("playfield")
AM_RANGE(0xff6000, 0xff6fff) AM_RAM_WRITE(alpha_w) AM_SHARE("alpha")
AM_RANGE(0xff7000, 0xff77ff) AM_READWRITE_LEGACY(atarimo_0_spriteram_r, atarimo_0_spriteram_w)
AM_RANGE(0xff7800, 0xff9fff) AM_RAM AM_SHARE("share10")
AM_RANGE(0xffa000, 0xffbfff) AM_READONLY AM_WRITENOP AM_SHARE("share11")
@ -170,17 +170,17 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( extra_map, AS_PROGRAM, 16, cyberbal_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0xfc0000, 0xfdffff) AM_WRITE_LEGACY(atarigen_video_int_ack_w)
AM_RANGE(0xfc0000, 0xfdffff) AM_WRITE(video_int_ack_w)
AM_RANGE(0xfe0000, 0xfe0fff) AM_READ(special_port0_r)
AM_RANGE(0xfe1000, 0xfe1fff) AM_READ_PORT("IN1")
AM_RANGE(0xfe8000, 0xfe8fff) AM_RAM_WRITE_LEGACY(cyberbal_paletteram_1_w) AM_SHARE("paletteram_1")
AM_RANGE(0xfec000, 0xfecfff) AM_RAM_WRITE_LEGACY(cyberbal_paletteram_0_w) AM_SHARE("paletteram_0")
AM_RANGE(0xff0000, 0xff1fff) AM_RAM_WRITE_LEGACY(atarigen_playfield2_w) AM_SHARE("playfield2")
AM_RANGE(0xff2000, 0xff2fff) AM_RAM_WRITE_LEGACY(atarigen_alpha2_w) AM_SHARE("alpha2")
AM_RANGE(0xff0000, 0xff1fff) AM_RAM_WRITE(playfield2_w) AM_SHARE("playfield2")
AM_RANGE(0xff2000, 0xff2fff) AM_RAM_WRITE(alpha2_w) AM_SHARE("alpha2")
AM_RANGE(0xff3000, 0xff37ff) AM_READWRITE_LEGACY(atarimo_1_spriteram_r, atarimo_1_spriteram_w)
AM_RANGE(0xff3800, 0xff3fff) AM_RAM AM_SHARE("share6")
AM_RANGE(0xff4000, 0xff5fff) AM_RAM_WRITE_LEGACY(atarigen_playfield_w) AM_SHARE("playfield")
AM_RANGE(0xff6000, 0xff6fff) AM_RAM_WRITE_LEGACY(atarigen_alpha_w) AM_SHARE("alpha")
AM_RANGE(0xff4000, 0xff5fff) AM_RAM_WRITE(playfield_w) AM_SHARE("playfield")
AM_RANGE(0xff6000, 0xff6fff) AM_RAM_WRITE(alpha_w) AM_SHARE("alpha")
AM_RANGE(0xff7000, 0xff77ff) AM_READWRITE_LEGACY(atarimo_0_spriteram_r, atarimo_0_spriteram_w)
AM_RANGE(0xff7800, 0xff9fff) AM_RAM AM_SHARE("share10")
AM_RANGE(0xffa000, 0xffbfff) AM_RAM AM_SHARE("share11")
@ -241,16 +241,16 @@ static ADDRESS_MAP_START( cyberbal2p_map, AS_PROGRAM, 16, cyberbal_state )
AM_RANGE(0xfc2000, 0xfc2003) AM_READ_PORT("IN1")
AM_RANGE(0xfc4000, 0xfc4003) AM_READ(special_port2_r)
AM_RANGE(0xfc6000, 0xfc6003) AM_READ8(sound_r, 0xff00)
AM_RANGE(0xfc8000, 0xfc8fff) AM_READWRITE_LEGACY(atarigen_eeprom_r, atarigen_eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0xfca000, 0xfcafff) AM_RAM_WRITE_LEGACY(atarigen_666_paletteram_w) AM_SHARE("paletteram")
AM_RANGE(0xfd0000, 0xfd0003) AM_WRITE_LEGACY(atarigen_eeprom_enable_w)
AM_RANGE(0xfc8000, 0xfc8fff) AM_READWRITE(eeprom_r, eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0xfca000, 0xfcafff) AM_RAM_WRITE(paletteram_666_w) AM_SHARE("paletteram")
AM_RANGE(0xfd0000, 0xfd0003) AM_WRITE(eeprom_enable_w)
AM_RANGE(0xfd2000, 0xfd2003) AM_WRITE(sound_reset_w)
AM_RANGE(0xfd4000, 0xfd4003) AM_WRITE(watchdog_reset16_w)
AM_RANGE(0xfd6000, 0xfd6003) AM_WRITE_LEGACY(atarigen_video_int_ack_w)
AM_RANGE(0xfd6000, 0xfd6003) AM_WRITE(video_int_ack_w)
AM_RANGE(0xfd8000, 0xfd8003) AM_WRITE8(sound_w, 0xff00)
AM_RANGE(0xfe0000, 0xfe0003) AM_READ(sound_state_r)
AM_RANGE(0xff0000, 0xff1fff) AM_RAM_WRITE_LEGACY(atarigen_playfield_w) AM_SHARE("playfield")
AM_RANGE(0xff2000, 0xff2fff) AM_RAM_WRITE_LEGACY(atarigen_alpha_w) AM_SHARE("alpha")
AM_RANGE(0xff0000, 0xff1fff) AM_RAM_WRITE(playfield_w) AM_SHARE("playfield")
AM_RANGE(0xff2000, 0xff2fff) AM_RAM_WRITE(alpha_w) AM_SHARE("alpha")
AM_RANGE(0xff3000, 0xff37ff) AM_READWRITE_LEGACY(atarimo_0_spriteram_r, atarimo_0_spriteram_w)
AM_RANGE(0xff3800, 0xffffff) AM_RAM
ADDRESS_MAP_END
@ -416,7 +416,7 @@ static MACHINE_CONFIG_START( cyberbal, cyberbal_state )
MCFG_CPU_ADD("extra", M68000, ATARI_CLOCK_14MHz/2)
MCFG_CPU_PROGRAM_MAP(extra_map)
MCFG_CPU_VBLANK_INT("lscreen", atarigen_video_int_gen) /* or is it "right?" */
MCFG_DEVICE_VBLANK_INT_DRIVER("lscreen", atarigen_state, video_int_gen) /* or is it "right?" */
MCFG_CPU_ADD("dac", M68000, ATARI_CLOCK_14MHz/2)
MCFG_CPU_PROGRAM_MAP(sound_68k_map)
@ -468,7 +468,7 @@ static MACHINE_CONFIG_START( cyberbal2p, cyberbal_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2)
MCFG_CPU_PROGRAM_MAP(cyberbal2p_map)
MCFG_CPU_VBLANK_INT("screen", atarigen_video_int_gen)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
MCFG_MACHINE_START_OVERRIDE(cyberbal_state,cyberbal)
MCFG_MACHINE_RESET_OVERRIDE(cyberbal_state,cyberbal2p)

View File

@ -146,49 +146,49 @@ WRITE16_MEMBER(eprom_state::sync_w)
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, eprom_state )
AM_RANGE(0x000000, 0x09ffff) AM_ROM
AM_RANGE(0x0e0000, 0x0e0fff) AM_READWRITE_LEGACY(atarigen_eeprom_r, atarigen_eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0x0e0000, 0x0e0fff) AM_READWRITE(eeprom_r, eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0x16cc00, 0x16cc01) AM_RAM AM_SHARE("sync_data")
AM_RANGE(0x160000, 0x16ffff) AM_RAM AM_SHARE("share1")
AM_RANGE(0x1f0000, 0x1fffff) AM_WRITE_LEGACY(atarigen_eeprom_enable_w)
AM_RANGE(0x1f0000, 0x1fffff) AM_WRITE(eeprom_enable_w)
AM_RANGE(0x260000, 0x26000f) AM_READ_PORT("260000")
AM_RANGE(0x260010, 0x26001f) AM_READ(special_port1_r)
AM_RANGE(0x260020, 0x26002f) AM_READ(adc_r)
AM_RANGE(0x260030, 0x260031) AM_READ8(sound_r, 0x00ff)
AM_RANGE(0x2e0000, 0x2e0001) AM_WRITE(watchdog_reset16_w)
AM_RANGE(0x360000, 0x360001) AM_WRITE_LEGACY(atarigen_video_int_ack_w)
AM_RANGE(0x360000, 0x360001) AM_WRITE(video_int_ack_w)
AM_RANGE(0x360010, 0x360011) AM_WRITE(eprom_latch_w)
AM_RANGE(0x360020, 0x360021) AM_WRITE(sound_reset_w)
AM_RANGE(0x360030, 0x360031) AM_WRITE8(sound_w, 0x00ff)
AM_RANGE(0x3e0000, 0x3e0fff) AM_RAM AM_SHARE("paletteram")
AM_RANGE(0x3f0000, 0x3f1fff) AM_WRITE_LEGACY(atarigen_playfield_w) AM_SHARE("playfield")
AM_RANGE(0x3f0000, 0x3f1fff) AM_WRITE(playfield_w) AM_SHARE("playfield")
AM_RANGE(0x3f2000, 0x3f3fff) AM_READWRITE_LEGACY(atarimo_0_spriteram_r, atarimo_0_spriteram_w)
AM_RANGE(0x3f4000, 0x3f4f7f) AM_WRITE_LEGACY(atarigen_alpha_w) AM_SHARE("alpha")
AM_RANGE(0x3f4000, 0x3f4f7f) AM_WRITE(alpha_w) AM_SHARE("alpha")
AM_RANGE(0x3f4f80, 0x3f4fff) AM_READWRITE_LEGACY(atarimo_0_slipram_r, atarimo_0_slipram_w)
AM_RANGE(0x3f8000, 0x3f9fff) AM_WRITE_LEGACY(atarigen_playfield_upper_w) AM_SHARE("playfield_up")
AM_RANGE(0x3f8000, 0x3f9fff) AM_WRITE(playfield_upper_w) AM_SHARE("playfield_up")
AM_RANGE(0x3f0000, 0x3f9fff) AM_RAM
ADDRESS_MAP_END
static ADDRESS_MAP_START( guts_map, AS_PROGRAM, 16, eprom_state )
AM_RANGE(0x000000, 0x09ffff) AM_ROM
AM_RANGE(0x0e0000, 0x0e0fff) AM_READWRITE_LEGACY(atarigen_eeprom_r, atarigen_eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0x0e0000, 0x0e0fff) AM_READWRITE(eeprom_r, eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0x16cc00, 0x16cc01) AM_RAM AM_SHARE("sync_data")
AM_RANGE(0x160000, 0x16ffff) AM_RAM AM_SHARE("share1")
AM_RANGE(0x1f0000, 0x1fffff) AM_WRITE_LEGACY(atarigen_eeprom_enable_w)
AM_RANGE(0x1f0000, 0x1fffff) AM_WRITE(eeprom_enable_w)
AM_RANGE(0x260000, 0x26000f) AM_READ_PORT("260000")
AM_RANGE(0x260010, 0x26001f) AM_READ(special_port1_r)
AM_RANGE(0x260020, 0x26002f) AM_READ(adc_r)
AM_RANGE(0x260030, 0x260031) AM_READ8(sound_r, 0x00ff)
AM_RANGE(0x2e0000, 0x2e0001) AM_WRITE(watchdog_reset16_w)
AM_RANGE(0x360000, 0x360001) AM_WRITE_LEGACY(atarigen_video_int_ack_w)
AM_RANGE(0x360000, 0x360001) AM_WRITE(video_int_ack_w)
// AM_RANGE(0x360010, 0x360011) AM_WRITE(eprom_latch_w)
AM_RANGE(0x360020, 0x360021) AM_WRITE(sound_reset_w)
AM_RANGE(0x360030, 0x360031) AM_WRITE8(sound_w, 0x00ff)
AM_RANGE(0x3e0000, 0x3e0fff) AM_RAM AM_SHARE("paletteram")
AM_RANGE(0xff0000, 0xff1fff) AM_WRITE_LEGACY(atarigen_playfield_upper_w) AM_SHARE("playfield_up")
AM_RANGE(0xff8000, 0xff9fff) AM_WRITE_LEGACY(atarigen_playfield_w) AM_SHARE("playfield")
AM_RANGE(0xff0000, 0xff1fff) AM_WRITE(playfield_upper_w) AM_SHARE("playfield_up")
AM_RANGE(0xff8000, 0xff9fff) AM_WRITE(playfield_w) AM_SHARE("playfield")
AM_RANGE(0xffa000, 0xffbfff) AM_READWRITE_LEGACY(atarimo_0_spriteram_r, atarimo_0_spriteram_w)
AM_RANGE(0xffc000, 0xffcf7f) AM_WRITE_LEGACY(atarigen_alpha_w) AM_SHARE("alpha")
AM_RANGE(0xffc000, 0xffcf7f) AM_WRITE(alpha_w) AM_SHARE("alpha")
AM_RANGE(0xffcf80, 0xffcfff) AM_READWRITE_LEGACY(atarimo_0_slipram_r, atarimo_0_slipram_w)
AM_RANGE(0xff0000, 0xff1fff) AM_RAM
AM_RANGE(0xff8000, 0xffffff) AM_RAM
@ -210,7 +210,7 @@ static ADDRESS_MAP_START( extra_map, AS_PROGRAM, 16, eprom_state )
AM_RANGE(0x260010, 0x26001f) AM_READ(special_port1_r)
AM_RANGE(0x260020, 0x26002f) AM_READ(adc_r)
AM_RANGE(0x260030, 0x260031) AM_READ8(sound_r, 0x00ff)
AM_RANGE(0x360000, 0x360001) AM_WRITE_LEGACY(atarigen_video_int_ack_w)
AM_RANGE(0x360000, 0x360001) AM_WRITE(video_int_ack_w)
AM_RANGE(0x360010, 0x360011) AM_WRITE(eprom_latch_w)
AM_RANGE(0x360020, 0x360021) AM_WRITE(sound_reset_w)
AM_RANGE(0x360030, 0x360031) AM_WRITE8(sound_w, 0x00ff)
@ -396,7 +396,7 @@ static MACHINE_CONFIG_START( eprom, eprom_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2)
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_CPU_VBLANK_INT("screen", atarigen_video_int_gen)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
MCFG_CPU_ADD("extra", M68000, ATARI_CLOCK_14MHz/2)
MCFG_CPU_PROGRAM_MAP(extra_map)
@ -429,7 +429,7 @@ static MACHINE_CONFIG_START( klaxp, eprom_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2)
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_CPU_VBLANK_INT("screen", atarigen_video_int_gen)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
MCFG_QUANTUM_TIME(attotime::from_hz(600))
@ -459,7 +459,7 @@ static MACHINE_CONFIG_START( guts, eprom_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2)
MCFG_CPU_PROGRAM_MAP(guts_map)
MCFG_CPU_VBLANK_INT("screen", atarigen_video_int_gen)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
MCFG_QUANTUM_TIME(attotime::from_hz(600))

View File

@ -164,7 +164,7 @@ WRITE8_MEMBER(foodf_state::digital_w)
if (!(data & 0x04))
scanline_int_ack_w(space,0,0);
if (!(data & 0x08))
atarigen_video_int_ack_w(space,0,0,0xffff);
video_int_ack_w(space,0,0);
output_set_led_value(0, (data >> 4) & 1);
output_set_led_value(1, (data >> 5) & 1);
@ -209,7 +209,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, foodf_state )
AM_RANGE(0x014000, 0x014fff) AM_MIRROR(0x3e3000) AM_RAM
AM_RANGE(0x018000, 0x018fff) AM_MIRROR(0x3e3000) AM_RAM
AM_RANGE(0x01c000, 0x01c0ff) AM_MIRROR(0x3e3f00) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x800000, 0x8007ff) AM_MIRROR(0x03f800) AM_RAM_WRITE_LEGACY(atarigen_playfield_w) AM_SHARE("playfield")
AM_RANGE(0x800000, 0x8007ff) AM_MIRROR(0x03f800) AM_RAM_WRITE(playfield_w) AM_SHARE("playfield")
AM_RANGE(0x900000, 0x9001ff) AM_MIRROR(0x03fe00) AM_DEVREADWRITE8("nvram", x2212_device, read, write, 0x00ff)
AM_RANGE(0x940000, 0x940007) AM_MIRROR(0x023ff8) AM_READ(analog_r)
AM_RANGE(0x944000, 0x944007) AM_MIRROR(0x023ff8) AM_WRITE(analog_w)
@ -352,7 +352,7 @@ static MACHINE_CONFIG_START( foodf, foodf_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68000, MASTER_CLOCK/2)
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_CPU_VBLANK_INT("screen", atarigen_video_int_gen)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
MCFG_MACHINE_START_OVERRIDE(foodf_state,foodf)
MCFG_MACHINE_RESET_OVERRIDE(foodf_state,foodf)

View File

@ -300,7 +300,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, gauntlet_state )
/* MBUS */
AM_RANGE(0x800000, 0x801fff) AM_MIRROR(0x2fc000) AM_RAM
AM_RANGE(0x802000, 0x802fff) AM_MIRROR(0x2fc000) AM_READWRITE_LEGACY(atarigen_eeprom_r, atarigen_eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0x802000, 0x802fff) AM_MIRROR(0x2fc000) AM_READWRITE(eeprom_r, eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0x803000, 0x803001) AM_MIRROR(0x2fcef0) AM_READ_PORT("803000")
AM_RANGE(0x803002, 0x803003) AM_MIRROR(0x2fcef0) AM_READ_PORT("803002")
AM_RANGE(0x803004, 0x803005) AM_MIRROR(0x2fcef0) AM_READ_PORT("803004")
@ -309,16 +309,16 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, gauntlet_state )
AM_RANGE(0x80300e, 0x80300f) AM_MIRROR(0x2fcef0) AM_READ8(sound_r, 0x00ff)
AM_RANGE(0x803100, 0x803101) AM_MIRROR(0x2fce8e) AM_WRITE(watchdog_reset16_w)
AM_RANGE(0x803120, 0x803121) AM_MIRROR(0x2fce8e) AM_WRITE(sound_reset_w)
AM_RANGE(0x803140, 0x803141) AM_MIRROR(0x2fce8e) AM_WRITE_LEGACY(atarigen_video_int_ack_w)
AM_RANGE(0x803150, 0x803151) AM_MIRROR(0x2fce8e) AM_WRITE_LEGACY(atarigen_eeprom_enable_w)
AM_RANGE(0x803140, 0x803141) AM_MIRROR(0x2fce8e) AM_WRITE(video_int_ack_w)
AM_RANGE(0x803150, 0x803151) AM_MIRROR(0x2fce8e) AM_WRITE(eeprom_enable_w)
AM_RANGE(0x803170, 0x803171) AM_MIRROR(0x2fce8e) AM_WRITE8(sound_w, 0x00ff)
/* VBUS */
AM_RANGE(0x900000, 0x901fff) AM_MIRROR(0x2c8000) AM_RAM_WRITE_LEGACY(atarigen_playfield_w) AM_SHARE("playfield")
AM_RANGE(0x900000, 0x901fff) AM_MIRROR(0x2c8000) AM_RAM_WRITE(playfield_w) AM_SHARE("playfield")
AM_RANGE(0x902000, 0x903fff) AM_MIRROR(0x2c8000) AM_READWRITE_LEGACY(atarimo_0_spriteram_r, atarimo_0_spriteram_w)
AM_RANGE(0x904000, 0x904fff) AM_MIRROR(0x2c8000) AM_RAM
AM_RANGE(0x905f6e, 0x905f6f) AM_MIRROR(0x2c8000) AM_RAM_WRITE_LEGACY(gauntlet_yscroll_w) AM_SHARE("yscroll")
AM_RANGE(0x905000, 0x905f7f) AM_MIRROR(0x2c8000) AM_RAM_WRITE_LEGACY(atarigen_alpha_w) AM_SHARE("alpha")
AM_RANGE(0x905000, 0x905f7f) AM_MIRROR(0x2c8000) AM_RAM_WRITE(alpha_w) AM_SHARE("alpha")
AM_RANGE(0x905f80, 0x905fff) AM_MIRROR(0x2c8000) AM_READWRITE_LEGACY(atarimo_0_slipram_r, atarimo_0_slipram_w)
AM_RANGE(0x910000, 0x9107ff) AM_MIRROR(0x2cf800) AM_RAM_WRITE(paletteram_IIIIRRRRGGGGBBBB_word_w) AM_SHARE("paletteram")
AM_RANGE(0x930000, 0x930001) AM_MIRROR(0x2cfffe) AM_WRITE_LEGACY(gauntlet_xscroll_w) AM_SHARE("xscroll")
@ -508,7 +508,7 @@ static MACHINE_CONFIG_START( gauntlet, gauntlet_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68010, ATARI_CLOCK_14MHz/2)
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_CPU_VBLANK_INT("screen", atarigen_video_int_gen)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
MCFG_CPU_ADD("audiocpu", M6502, ATARI_CLOCK_14MHz/8)
MCFG_CPU_PROGRAM_MAP(sound_map)
@ -1610,40 +1610,55 @@ ROM_END
*
*************************************/
static void gauntlet_common_init(running_machine &machine, int slapstic, int vindctr2)
//-------------------------------------------------
// swap_memory: Inverts the bits in a region.
//-------------------------------------------------
void gauntlet_state::swap_memory(void *ptr1, void *ptr2, int bytes)
{
gauntlet_state *state = machine.driver_data<gauntlet_state>();
UINT8 *rom = state->memregion("maincpu")->base();
state->m_eeprom_default = NULL;
state->slapstic_configure(*machine.device<cpu_device>("maincpu"), 0x038000, 0, slapstic);
UINT8 *p1 = (UINT8 *)ptr1;
UINT8 *p2 = (UINT8 *)ptr2;
while (bytes--)
{
int temp = *p1;
*p1++ = *p2;
*p2++ = temp;
}
}
void gauntlet_state::common_init(int slapstic, int vindctr2)
{
UINT8 *rom = memregion("maincpu")->base();
m_eeprom_default = NULL;
slapstic_configure(*subdevice<cpu_device>("maincpu"), 0x038000, 0, slapstic);
/* swap the top and bottom halves of the main CPU ROM images */
atarigen_swap_mem(rom + 0x000000, rom + 0x008000, 0x8000);
atarigen_swap_mem(rom + 0x040000, rom + 0x048000, 0x8000);
atarigen_swap_mem(rom + 0x050000, rom + 0x058000, 0x8000);
atarigen_swap_mem(rom + 0x060000, rom + 0x068000, 0x8000);
atarigen_swap_mem(rom + 0x070000, rom + 0x078000, 0x8000);
swap_memory(rom + 0x000000, rom + 0x008000, 0x8000);
swap_memory(rom + 0x040000, rom + 0x048000, 0x8000);
swap_memory(rom + 0x050000, rom + 0x058000, 0x8000);
swap_memory(rom + 0x060000, rom + 0x068000, 0x8000);
swap_memory(rom + 0x070000, rom + 0x078000, 0x8000);
/* indicate whether or not we are vindicators 2 */
state->m_vindctr2_screen_refresh = vindctr2;
m_vindctr2_screen_refresh = vindctr2;
}
DRIVER_INIT_MEMBER(gauntlet_state,gauntlet)
{
gauntlet_common_init(machine(), 104, 0);
common_init(104, 0);
}
DRIVER_INIT_MEMBER(gauntlet_state,gaunt2p)
{
gauntlet_common_init(machine(), 107, 0);
common_init(107, 0);
}
DRIVER_INIT_MEMBER(gauntlet_state,gauntlet2)
{
gauntlet_common_init(machine(), 106, 0);
common_init(106, 0);
}
@ -1653,7 +1668,7 @@ DRIVER_INIT_MEMBER(gauntlet_state,vindctr2)
UINT8 *data = auto_alloc_array(machine(), UINT8, 0x8000);
int i;
gauntlet_common_init(machine(), 118, 1);
common_init(118, 1);
/* highly strange -- the address bits on the chip at 2J (and only that
chip) are scrambled -- this is verified on the schematics! */

View File

@ -1325,7 +1325,7 @@ static MACHINE_CONFIG_START( driver_nomsp, harddriv_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68010, HARDDRIV_MASTER_CLOCK/4)
MCFG_CPU_PROGRAM_MAP(driver_68k_map)
MCFG_CPU_VBLANK_INT("screen", atarigen_video_int_gen)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
MCFG_CPU_PERIODIC_INT_DRIVER(harddriv_state, hd68k_irq_gen, (double)HARDDRIV_MASTER_CLOCK/16/16/16/16/2)
MCFG_CPU_ADD("gsp", TMS34010, HARDDRIV_GSP_CLOCK)

View File

@ -48,7 +48,7 @@ void klax_state::scanline_update(screen_device &screen, int scanline)
WRITE16_MEMBER(klax_state::interrupt_ack_w)
{
scanline_int_ack_w(space, offset, data, mem_mask);
atarigen_video_int_ack_w(space, offset, data, mem_mask);
video_int_ack_w(space, offset, data, mem_mask);
}
@ -75,17 +75,17 @@ MACHINE_RESET_MEMBER(klax_state,klax)
static ADDRESS_MAP_START( klax_map, AS_PROGRAM, 16, klax_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x0e0000, 0x0e0fff) AM_READWRITE_LEGACY(atarigen_eeprom_r,atarigen_eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0x1f0000, 0x1fffff) AM_WRITE_LEGACY(atarigen_eeprom_enable_w)
AM_RANGE(0x0e0000, 0x0e0fff) AM_READWRITE(eeprom_r, eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0x1f0000, 0x1fffff) AM_WRITE(eeprom_enable_w)
AM_RANGE(0x260000, 0x260001) AM_READ_PORT("P1") AM_WRITE_LEGACY(klax_latch_w)
AM_RANGE(0x260002, 0x260003) AM_READ_PORT("P2")
AM_RANGE(0x270000, 0x270001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
AM_RANGE(0x2e0000, 0x2e0001) AM_WRITE(watchdog_reset16_w)
AM_RANGE(0x360000, 0x360001) AM_WRITE(interrupt_ack_w)
AM_RANGE(0x3e0000, 0x3e07ff) AM_RAM_WRITE_LEGACY(atarigen_expanded_666_paletteram_w) AM_SHARE("paletteram")
AM_RANGE(0x3f0000, 0x3f0f7f) AM_RAM_WRITE_LEGACY(atarigen_playfield_w) AM_SHARE("playfield")
AM_RANGE(0x3e0000, 0x3e07ff) AM_RAM_WRITE(expanded_paletteram_666_w) AM_SHARE("paletteram")
AM_RANGE(0x3f0000, 0x3f0f7f) AM_RAM_WRITE(playfield_w) AM_SHARE("playfield")
AM_RANGE(0x3f0f80, 0x3f0fff) AM_READWRITE_LEGACY(atarimo_0_slipram_r, atarimo_0_slipram_w)
AM_RANGE(0x3f1000, 0x3f1fff) AM_RAM_WRITE_LEGACY(atarigen_playfield_upper_w) AM_SHARE("playfield_up")
AM_RANGE(0x3f1000, 0x3f1fff) AM_RAM_WRITE(playfield_upper_w) AM_SHARE("playfield_up")
AM_RANGE(0x3f2000, 0x3f27ff) AM_READWRITE_LEGACY(atarimo_0_spriteram_r, atarimo_0_spriteram_w)
AM_RANGE(0x3f2800, 0x3f3fff) AM_RAM
ADDRESS_MAP_END
@ -160,7 +160,7 @@ static MACHINE_CONFIG_START( klax, klax_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2)
MCFG_CPU_PROGRAM_MAP(klax_map)
MCFG_CPU_VBLANK_INT("screen", atarigen_video_int_gen)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
MCFG_MACHINE_RESET_OVERRIDE(klax_state,klax)
MCFG_NVRAM_ADD_1FILL("eeprom")

View File

@ -264,7 +264,7 @@ READ16_MEMBER(offtwall_state::unknown_verify_r)
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, offtwall_state )
AM_RANGE(0x000000, 0x037fff) AM_ROM
AM_RANGE(0x038000, 0x03ffff) AM_READ(bankrom_r) AM_REGION("maincpu", 0x38000) AM_SHARE("bankrom_base")
AM_RANGE(0x120000, 0x120fff) AM_READWRITE_LEGACY(atarigen_eeprom_r, atarigen_eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0x120000, 0x120fff) AM_READWRITE(eeprom_r, eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0x260000, 0x260001) AM_READ_PORT("260000")
AM_RANGE(0x260002, 0x260003) AM_READ_PORT("260002")
AM_RANGE(0x260010, 0x260011) AM_READ(special_port3_r)
@ -275,14 +275,14 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, offtwall_state )
AM_RANGE(0x260030, 0x260031) AM_READ8(sound_r, 0x00ff)
AM_RANGE(0x260040, 0x260041) AM_WRITE8(sound_w, 0x00ff)
AM_RANGE(0x260050, 0x260051) AM_WRITE(io_latch_w)
AM_RANGE(0x260060, 0x260061) AM_WRITE_LEGACY(atarigen_eeprom_enable_w)
AM_RANGE(0x260060, 0x260061) AM_WRITE(eeprom_enable_w)
AM_RANGE(0x2a0000, 0x2a0001) AM_WRITE(watchdog_reset16_w)
AM_RANGE(0x3e0000, 0x3e0fff) AM_RAM_WRITE_LEGACY(atarigen_666_paletteram_w) AM_SHARE("paletteram")
AM_RANGE(0x3e0000, 0x3e0fff) AM_RAM_WRITE(paletteram_666_w) AM_SHARE("paletteram")
AM_RANGE(0x3effc0, 0x3effff) AM_READWRITE(offtwall_atarivc_r, offtwall_atarivc_w) AM_SHARE("atarivc_data")
AM_RANGE(0x3f4000, 0x3f5eff) AM_RAM_WRITE_LEGACY(atarigen_playfield_latched_msb_w) AM_SHARE("playfield")
AM_RANGE(0x3f4000, 0x3f5eff) AM_RAM_WRITE(playfield_latched_msb_w) AM_SHARE("playfield")
AM_RANGE(0x3f5f00, 0x3f5f7f) AM_RAM AM_SHARE("atarivc_eof")
AM_RANGE(0x3f5f80, 0x3f5fff) AM_READWRITE_LEGACY(atarimo_0_slipram_r, atarimo_0_slipram_w)
AM_RANGE(0x3f6000, 0x3f7fff) AM_RAM_WRITE_LEGACY(atarigen_playfield_upper_w) AM_SHARE("playfield_up")
AM_RANGE(0x3f6000, 0x3f7fff) AM_RAM_WRITE(playfield_upper_w) AM_SHARE("playfield_up")
AM_RANGE(0x3f8000, 0x3fcfff) AM_RAM
AM_RANGE(0x3fd000, 0x3fd7ff) AM_READWRITE_LEGACY(atarimo_0_spriteram_r, atarimo_0_spriteram_w)
AM_RANGE(0x3fd800, 0x3fffff) AM_RAM

View File

@ -128,15 +128,15 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, rampart_state )
AM_RANGE(0x140000, 0x147fff) AM_MIRROR(0x438000) AM_ROM /* slapstic goes here */
AM_RANGE(0x200000, 0x21ffff) AM_RAM AM_SHARE("bitmap")
AM_RANGE(0x220000, 0x3bffff) AM_WRITENOP /* the code blasts right through this when initializing */
AM_RANGE(0x3c0000, 0x3c07ff) AM_MIRROR(0x019800) AM_RAM_WRITE_LEGACY(atarigen_expanded_666_paletteram_w) AM_SHARE("paletteram")
AM_RANGE(0x3c0000, 0x3c07ff) AM_MIRROR(0x019800) AM_RAM_WRITE(expanded_paletteram_666_w) AM_SHARE("paletteram")
AM_RANGE(0x3e0000, 0x3e07ff) AM_MIRROR(0x010000) AM_READWRITE_LEGACY(atarimo_0_spriteram_r, atarimo_0_spriteram_w)
AM_RANGE(0x3e0800, 0x3e3f3f) AM_MIRROR(0x010000) AM_RAM
AM_RANGE(0x3e3f40, 0x3e3f7f) AM_MIRROR(0x010000) AM_READWRITE_LEGACY(atarimo_0_slipram_r, atarimo_0_slipram_w)
AM_RANGE(0x3e3f80, 0x3effff) AM_MIRROR(0x010000) AM_RAM
AM_RANGE(0x460000, 0x460001) AM_MIRROR(0x019ffe) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0xff00)
AM_RANGE(0x480000, 0x480003) AM_MIRROR(0x019ffc) AM_DEVWRITE8_LEGACY("ymsnd", ym2413_w, 0xff00)
AM_RANGE(0x500000, 0x500fff) AM_MIRROR(0x019000) AM_READWRITE_LEGACY(atarigen_eeprom_r, atarigen_eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0x5a6000, 0x5a6001) AM_MIRROR(0x019ffe) AM_WRITE_LEGACY(atarigen_eeprom_enable_w)
AM_RANGE(0x500000, 0x500fff) AM_MIRROR(0x019000) AM_READWRITE(eeprom_r, eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0x5a6000, 0x5a6001) AM_MIRROR(0x019ffe) AM_WRITE(eeprom_enable_w)
AM_RANGE(0x640000, 0x640001) AM_MIRROR(0x019ffe) AM_WRITE(latch_w)
AM_RANGE(0x640000, 0x640001) AM_MIRROR(0x019ffc) AM_READ_PORT("IN0")
AM_RANGE(0x640002, 0x640003) AM_MIRROR(0x019ffc) AM_READ_PORT("IN1")
@ -336,7 +336,7 @@ static MACHINE_CONFIG_START( rampart, rampart_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68000, MASTER_CLOCK/2)
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_CPU_VBLANK_INT("screen", atarigen_video_int_gen)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
MCFG_MACHINE_RESET_OVERRIDE(rampart_state,rampart)
MCFG_NVRAM_ADD_1FILL("eeprom")

View File

@ -87,7 +87,7 @@ READ16_MEMBER(relief_state::special_port2_r)
{
int result = ioport("260010")->read();
if (m_cpu_to_sound_ready) result ^= 0x0020;
if (!(result & 0x0080) || atarigen_get_hblank(*machine().primary_screen)) result ^= 0x0001;
if (!(result & 0x0080) || get_hblank(*machine().primary_screen)) result ^= 0x0001;
return result;
}
@ -141,18 +141,18 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, relief_state )
AM_RANGE(0x140010, 0x140011) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
AM_RANGE(0x140020, 0x140021) AM_WRITE(audio_volume_w)
AM_RANGE(0x140030, 0x140031) AM_WRITE(audio_control_w)
AM_RANGE(0x180000, 0x180fff) AM_READWRITE_LEGACY(atarigen_eeprom_upper_r, atarigen_eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0x1c0030, 0x1c0031) AM_WRITE_LEGACY(atarigen_eeprom_enable_w)
AM_RANGE(0x180000, 0x180fff) AM_READWRITE(eeprom_r, eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0x1c0030, 0x1c0031) AM_WRITE(eeprom_enable_w)
AM_RANGE(0x260000, 0x260001) AM_READ_PORT("260000")
AM_RANGE(0x260002, 0x260003) AM_READ_PORT("260002")
AM_RANGE(0x260010, 0x260011) AM_READ(special_port2_r)
AM_RANGE(0x260012, 0x260013) AM_READ_PORT("260012")
AM_RANGE(0x2a0000, 0x2a0001) AM_WRITE(watchdog_reset16_w)
AM_RANGE(0x3e0000, 0x3e0fff) AM_RAM_WRITE_LEGACY(atarigen_666_paletteram_w) AM_SHARE("paletteram")
AM_RANGE(0x3e0000, 0x3e0fff) AM_RAM_WRITE(paletteram_666_w) AM_SHARE("paletteram")
AM_RANGE(0x3effc0, 0x3effff) AM_READWRITE(relief_atarivc_r, relief_atarivc_w) AM_SHARE("atarivc_data")
AM_RANGE(0x3f0000, 0x3f1fff) AM_RAM_WRITE_LEGACY(atarigen_playfield2_latched_msb_w) AM_SHARE("playfield2")
AM_RANGE(0x3f2000, 0x3f3fff) AM_RAM_WRITE_LEGACY(atarigen_playfield_latched_lsb_w) AM_SHARE("playfield")
AM_RANGE(0x3f4000, 0x3f5fff) AM_RAM_WRITE_LEGACY(atarigen_playfield_dual_upper_w) AM_SHARE("playfield_up")
AM_RANGE(0x3f0000, 0x3f1fff) AM_RAM_WRITE(playfield2_latched_msb_w) AM_SHARE("playfield2")
AM_RANGE(0x3f2000, 0x3f3fff) AM_RAM_WRITE(playfield_latched_lsb_w) AM_SHARE("playfield")
AM_RANGE(0x3f4000, 0x3f5fff) AM_RAM_WRITE(playfield_dual_upper_w) AM_SHARE("playfield_up")
AM_RANGE(0x3f6000, 0x3f67ff) AM_READWRITE_LEGACY(atarimo_0_spriteram_r, atarimo_0_spriteram_w)
AM_RANGE(0x3f6800, 0x3f8eff) AM_RAM
AM_RANGE(0x3f8f00, 0x3f8f7f) AM_RAM AM_SHARE("atarivc_eof")

View File

@ -113,7 +113,7 @@ READ16_MEMBER(shuuz_state::special_port0_r)
{
int result = ioport("SYSTEM")->read();
if ((result & 0x0800) && atarigen_get_hblank(*machine().primary_screen))
if ((result & 0x0800) && get_hblank(*machine().primary_screen))
result &= ~0x0800;
return result;
@ -129,20 +129,20 @@ READ16_MEMBER(shuuz_state::special_port0_r)
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, shuuz_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x100000, 0x100fff) AM_READWRITE_LEGACY(atarigen_eeprom_r, atarigen_eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0x101000, 0x101fff) AM_WRITE_LEGACY(atarigen_eeprom_enable_w)
AM_RANGE(0x100000, 0x100fff) AM_READWRITE(eeprom_r, eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0x101000, 0x101fff) AM_WRITE(eeprom_enable_w)
AM_RANGE(0x102000, 0x102001) AM_WRITE(watchdog_reset16_w)
AM_RANGE(0x103000, 0x103003) AM_READ(leta_r)
AM_RANGE(0x105000, 0x105001) AM_READWRITE(special_port0_r, latch_w)
AM_RANGE(0x105002, 0x105003) AM_READ_PORT("BUTTONS")
AM_RANGE(0x106000, 0x106001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
AM_RANGE(0x107000, 0x107007) AM_NOP
AM_RANGE(0x3e0000, 0x3e087f) AM_RAM_WRITE_LEGACY(atarigen_666_paletteram_w) AM_SHARE("paletteram")
AM_RANGE(0x3e0000, 0x3e087f) AM_RAM_WRITE(paletteram_666_w) AM_SHARE("paletteram")
AM_RANGE(0x3effc0, 0x3effff) AM_READWRITE(shuuz_atarivc_r, shuuz_atarivc_w) AM_SHARE("atarivc_data")
AM_RANGE(0x3f4000, 0x3f5eff) AM_RAM_WRITE_LEGACY(atarigen_playfield_latched_msb_w) AM_SHARE("playfield")
AM_RANGE(0x3f4000, 0x3f5eff) AM_RAM_WRITE(playfield_latched_msb_w) AM_SHARE("playfield")
AM_RANGE(0x3f5f00, 0x3f5f7f) AM_RAM AM_SHARE("atarivc_eof")
AM_RANGE(0x3f5f80, 0x3f5fff) AM_READWRITE_LEGACY(atarimo_0_slipram_r, atarimo_0_slipram_w)
AM_RANGE(0x3f6000, 0x3f7fff) AM_RAM_WRITE_LEGACY(atarigen_playfield_upper_w) AM_SHARE("playfield_up")
AM_RANGE(0x3f6000, 0x3f7fff) AM_RAM_WRITE(playfield_upper_w) AM_SHARE("playfield_up")
AM_RANGE(0x3f8000, 0x3fcfff) AM_RAM
AM_RANGE(0x3fd000, 0x3fd3ff) AM_READWRITE_LEGACY(atarimo_0_spriteram_r, atarimo_0_spriteram_w)
AM_RANGE(0x3fd400, 0x3fffff) AM_RAM

View File

@ -88,7 +88,7 @@ READ16_MEMBER(skullxbo_state::special_port1_r)
{
int temp = ioport("FF5802")->read();
if (m_cpu_to_sound_ready) temp ^= 0x0040;
if (atarigen_get_hblank(*machine().primary_screen)) temp ^= 0x0010;
if (get_hblank(*machine().primary_screen)) temp ^= 0x0010;
return temp;
}
@ -117,8 +117,8 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, skullxbo_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0xff0000, 0xff07ff) AM_WRITE_LEGACY(skullxbo_mobmsb_w)
AM_RANGE(0xff0800, 0xff0bff) AM_WRITE(skullxbo_halt_until_hblank_0_w)
AM_RANGE(0xff0c00, 0xff0fff) AM_WRITE_LEGACY(atarigen_eeprom_enable_w)
AM_RANGE(0xff1000, 0xff13ff) AM_WRITE_LEGACY(atarigen_video_int_ack_w)
AM_RANGE(0xff0c00, 0xff0fff) AM_WRITE(eeprom_enable_w)
AM_RANGE(0xff1000, 0xff13ff) AM_WRITE(video_int_ack_w)
AM_RANGE(0xff1400, 0xff17ff) AM_WRITE8(sound_w, 0x00ff)
AM_RANGE(0xff1800, 0xff1bff) AM_WRITE(sound_reset_w)
AM_RANGE(0xff1c00, 0xff1c7f) AM_WRITE_LEGACY(skullxbo_playfieldlatch_w)
@ -129,17 +129,17 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, skullxbo_state )
AM_RANGE(0xff1e80, 0xff1eff) AM_WRITE_LEGACY(skullxbo_xscroll_w)
AM_RANGE(0xff1f00, 0xff1f7f) AM_WRITE(scanline_int_ack_w)
AM_RANGE(0xff1f80, 0xff1fff) AM_WRITE(watchdog_reset16_w)
AM_RANGE(0xff2000, 0xff2fff) AM_RAM_WRITE_LEGACY(atarigen_666_paletteram_w) AM_SHARE("paletteram")
AM_RANGE(0xff2000, 0xff2fff) AM_RAM_WRITE(paletteram_666_w) AM_SHARE("paletteram")
AM_RANGE(0xff4000, 0xff47ff) AM_WRITE_LEGACY(skullxbo_yscroll_w) AM_SHARE("yscroll")
AM_RANGE(0xff4800, 0xff4fff) AM_WRITE(skullxbo_mobwr_w)
AM_RANGE(0xff6000, 0xff6fff) AM_WRITE_LEGACY(atarigen_eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0xff6000, 0xff6fff) AM_WRITE(eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0xff5000, 0xff5001) AM_READ8(sound_r, 0x00ff)
AM_RANGE(0xff5800, 0xff5801) AM_READ_PORT("FF5800")
AM_RANGE(0xff5802, 0xff5803) AM_READ(special_port1_r)
AM_RANGE(0xff6000, 0xff6fff) AM_READ_LEGACY(atarigen_eeprom_r)
AM_RANGE(0xff8000, 0xff9fff) AM_RAM_WRITE_LEGACY(atarigen_playfield_latched_lsb_w) AM_SHARE("playfield")
AM_RANGE(0xffa000, 0xffbfff) AM_RAM_WRITE_LEGACY(atarigen_playfield_upper_w) AM_SHARE("playfield_up")
AM_RANGE(0xffc000, 0xffcf7f) AM_RAM_WRITE_LEGACY(atarigen_alpha_w) AM_SHARE("alpha")
AM_RANGE(0xff6000, 0xff6fff) AM_READ(eeprom_r)
AM_RANGE(0xff8000, 0xff9fff) AM_RAM_WRITE(playfield_latched_lsb_w) AM_SHARE("playfield")
AM_RANGE(0xffa000, 0xffbfff) AM_RAM_WRITE(playfield_upper_w) AM_SHARE("playfield_up")
AM_RANGE(0xffc000, 0xffcf7f) AM_RAM_WRITE(alpha_w) AM_SHARE("alpha")
AM_RANGE(0xffcf80, 0xffcfff) AM_READWRITE_LEGACY(atarimo_0_slipram_r, atarimo_0_slipram_w)
AM_RANGE(0xffd000, 0xffdfff) AM_READWRITE_LEGACY(atarimo_0_spriteram_r, atarimo_0_spriteram_w)
AM_RANGE(0xffe000, 0xffffff) AM_RAM
@ -247,7 +247,7 @@ static MACHINE_CONFIG_START( skullxbo, skullxbo_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2)
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_CPU_VBLANK_INT("screen", atarigen_video_int_gen)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
MCFG_MACHINE_RESET_OVERRIDE(skullxbo_state,skullxbo)
MCFG_NVRAM_ADD_1FILL("eeprom")

View File

@ -145,9 +145,9 @@ WRITE16_MEMBER(thunderj_state::thunderj_atarivc_w)
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, thunderj_state )
AM_RANGE(0x000000, 0x09ffff) AM_ROM
AM_RANGE(0x0e0000, 0x0e0fff) AM_READWRITE_LEGACY(atarigen_eeprom_r, atarigen_eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0x0e0000, 0x0e0fff) AM_READWRITE(eeprom_r, eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0x160000, 0x16ffff) AM_RAM AM_SHARE("share1")
AM_RANGE(0x1f0000, 0x1fffff) AM_WRITE_LEGACY(atarigen_eeprom_enable_w)
AM_RANGE(0x1f0000, 0x1fffff) AM_WRITE(eeprom_enable_w)
AM_RANGE(0x260000, 0x26000f) AM_READ_PORT("260000")
AM_RANGE(0x260010, 0x260011) AM_READ_PORT("260010")
AM_RANGE(0x260012, 0x260013) AM_READ(special_port2_r)
@ -156,13 +156,13 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, thunderj_state )
AM_RANGE(0x360010, 0x360011) AM_WRITE(latch_w)
AM_RANGE(0x360020, 0x360021) AM_WRITE(sound_reset_w)
AM_RANGE(0x360030, 0x360031) AM_WRITE8(sound_w, 0x00ff)
AM_RANGE(0x3e0000, 0x3e0fff) AM_RAM_WRITE_LEGACY(atarigen_666_paletteram_w) AM_SHARE("paletteram")
AM_RANGE(0x3e0000, 0x3e0fff) AM_RAM_WRITE(paletteram_666_w) AM_SHARE("paletteram")
AM_RANGE(0x3effc0, 0x3effff) AM_READWRITE(thunderj_atarivc_r, thunderj_atarivc_w) AM_SHARE("atarivc_data")
AM_RANGE(0x3f0000, 0x3f1fff) AM_RAM_WRITE_LEGACY(atarigen_playfield2_latched_msb_w) AM_SHARE("playfield2")
AM_RANGE(0x3f2000, 0x3f3fff) AM_RAM_WRITE_LEGACY(atarigen_playfield_latched_lsb_w) AM_SHARE("playfield")
AM_RANGE(0x3f4000, 0x3f5fff) AM_RAM_WRITE_LEGACY(atarigen_playfield_dual_upper_w) AM_SHARE("playfield_up")
AM_RANGE(0x3f0000, 0x3f1fff) AM_RAM_WRITE(playfield2_latched_msb_w) AM_SHARE("playfield2")
AM_RANGE(0x3f2000, 0x3f3fff) AM_RAM_WRITE(playfield_latched_lsb_w) AM_SHARE("playfield")
AM_RANGE(0x3f4000, 0x3f5fff) AM_RAM_WRITE(playfield_dual_upper_w) AM_SHARE("playfield_up")
AM_RANGE(0x3f6000, 0x3f7fff) AM_READWRITE_LEGACY(atarimo_0_spriteram_r, atarimo_0_spriteram_w)
AM_RANGE(0x3f8000, 0x3f8eff) AM_RAM_WRITE_LEGACY(atarigen_alpha_w) AM_SHARE("alpha")
AM_RANGE(0x3f8000, 0x3f8eff) AM_RAM_WRITE(alpha_w) AM_SHARE("alpha")
AM_RANGE(0x3f8f00, 0x3f8f7f) AM_RAM AM_SHARE("atarivc_eof")
AM_RANGE(0x3f8f80, 0x3f8fff) AM_READWRITE_LEGACY(atarimo_0_slipram_r, atarimo_0_slipram_w)
AM_RANGE(0x3f9000, 0x3fffff) AM_RAM
@ -184,7 +184,7 @@ static ADDRESS_MAP_START( extra_map, AS_PROGRAM, 16, thunderj_state )
AM_RANGE(0x260010, 0x260011) AM_READ_PORT("260010")
AM_RANGE(0x260012, 0x260013) AM_READ(special_port2_r)
AM_RANGE(0x260030, 0x260031) AM_READ8(sound_r, 0x00ff)
AM_RANGE(0x360000, 0x360001) AM_WRITE_LEGACY(atarigen_video_int_ack_w)
AM_RANGE(0x360000, 0x360001) AM_WRITE(video_int_ack_w)
AM_RANGE(0x360010, 0x360011) AM_WRITE(latch_w)
AM_RANGE(0x360020, 0x360021) AM_WRITE(sound_reset_w)
AM_RANGE(0x360030, 0x360031) AM_WRITE8(sound_w, 0x00ff)

View File

@ -81,7 +81,7 @@ WRITE16_MEMBER(toobin_state::interrupt_scan_w)
READ16_MEMBER(toobin_state::special_port1_r)
{
int result = ioport("FF9000")->read();
if (atarigen_get_hblank(*machine().primary_screen)) result ^= 0x8000;
if (get_hblank(*machine().primary_screen)) result ^= 0x8000;
if (m_cpu_to_sound_ready) result ^= 0x2000;
return result;
}
@ -98,8 +98,8 @@ READ16_MEMBER(toobin_state::special_port1_r)
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, toobin_state )
ADDRESS_MAP_GLOBAL_MASK(0xc7ffff)
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0xc00000, 0xc07fff) AM_RAM_WRITE_LEGACY(atarigen_playfield_large_w) AM_SHARE("playfield")
AM_RANGE(0xc08000, 0xc097ff) AM_MIRROR(0x046000) AM_RAM_WRITE_LEGACY(atarigen_alpha_w) AM_SHARE("alpha")
AM_RANGE(0xc00000, 0xc07fff) AM_RAM_WRITE(playfield_large_w) AM_SHARE("playfield")
AM_RANGE(0xc08000, 0xc097ff) AM_MIRROR(0x046000) AM_RAM_WRITE(alpha_w) AM_SHARE("alpha")
AM_RANGE(0xc09800, 0xc09fff) AM_MIRROR(0x046000) AM_READWRITE_LEGACY(atarimo_0_spriteram_r, atarimo_0_spriteram_w)
AM_RANGE(0xc10000, 0xc107ff) AM_MIRROR(0x047800) AM_RAM_WRITE_LEGACY(toobin_paletteram_w) AM_SHARE("paletteram")
AM_RANGE(0xff6000, 0xff6001) AM_READNOP /* who knows? read at controls time */
@ -110,13 +110,13 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, toobin_state )
AM_RANGE(0xff8380, 0xff8381) AM_MIRROR(0x45003e) AM_READWRITE_LEGACY(atarimo_0_slipram_r, toobin_slip_w)
AM_RANGE(0xff83c0, 0xff83c1) AM_MIRROR(0x45003e) AM_WRITE(scanline_int_ack_w)
AM_RANGE(0xff8400, 0xff8401) AM_MIRROR(0x4500fe) AM_WRITE(sound_reset_w)
AM_RANGE(0xff8500, 0xff8501) AM_MIRROR(0x4500fe) AM_WRITE_LEGACY(atarigen_eeprom_enable_w)
AM_RANGE(0xff8500, 0xff8501) AM_MIRROR(0x4500fe) AM_WRITE(eeprom_enable_w)
AM_RANGE(0xff8600, 0xff8601) AM_MIRROR(0x4500fe) AM_WRITE_LEGACY(toobin_xscroll_w) AM_SHARE("xscroll")
AM_RANGE(0xff8700, 0xff8701) AM_MIRROR(0x4500fe) AM_WRITE_LEGACY(toobin_yscroll_w) AM_SHARE("yscroll")
AM_RANGE(0xff8800, 0xff8801) AM_MIRROR(0x4507fe) AM_READ_PORT("FF8800")
AM_RANGE(0xff9000, 0xff9001) AM_MIRROR(0x4507fe) AM_READ(special_port1_r)
AM_RANGE(0xff9800, 0xff9801) AM_MIRROR(0x4507fe) AM_READ8(sound_r, 0x00ff)
AM_RANGE(0xffa000, 0xffafff) AM_MIRROR(0x451000) AM_READWRITE_LEGACY(atarigen_eeprom_r, atarigen_eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0xffa000, 0xffafff) AM_MIRROR(0x451000) AM_READWRITE(eeprom_r, eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0xffc000, 0xffffff) AM_MIRROR(0x450000) AM_RAM
ADDRESS_MAP_END

View File

@ -74,8 +74,8 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, vindictr_state )
ADDRESS_MAP_UNMAP_HIGH
ADDRESS_MAP_GLOBAL_MASK(0x3fffff)
AM_RANGE(0x000000, 0x05ffff) AM_ROM
AM_RANGE(0x0e0000, 0x0e0fff) AM_READWRITE_LEGACY(atarigen_eeprom_r, atarigen_eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0x1f0000, 0x1fffff) AM_WRITE_LEGACY(atarigen_eeprom_enable_w)
AM_RANGE(0x0e0000, 0x0e0fff) AM_READWRITE(eeprom_r, eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0x1f0000, 0x1fffff) AM_WRITE(eeprom_enable_w)
AM_RANGE(0x260000, 0x26000f) AM_READ_PORT("260000")
AM_RANGE(0x260010, 0x26001f) AM_READ(port1_r)
AM_RANGE(0x260020, 0x26002f) AM_READ_PORT("260020")
@ -86,9 +86,9 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, vindictr_state )
AM_RANGE(0x360020, 0x360021) AM_WRITE(sound_reset_w)
AM_RANGE(0x360030, 0x360031) AM_WRITE8(sound_w, 0x00ff)
AM_RANGE(0x3e0000, 0x3e0fff) AM_RAM_WRITE_LEGACY(vindictr_paletteram_w) AM_SHARE("paletteram")
AM_RANGE(0x3f0000, 0x3f1fff) AM_MIRROR(0x8000) AM_RAM_WRITE_LEGACY(atarigen_playfield_w) AM_SHARE("playfield")
AM_RANGE(0x3f0000, 0x3f1fff) AM_MIRROR(0x8000) AM_RAM_WRITE(playfield_w) AM_SHARE("playfield")
AM_RANGE(0x3f2000, 0x3f3fff) AM_MIRROR(0x8000) AM_READWRITE_LEGACY(atarimo_0_spriteram_r, atarimo_0_spriteram_w)
AM_RANGE(0x3f4000, 0x3f4f7f) AM_MIRROR(0x8000) AM_RAM_WRITE_LEGACY(atarigen_alpha_w) AM_SHARE("alpha")
AM_RANGE(0x3f4000, 0x3f4f7f) AM_MIRROR(0x8000) AM_RAM_WRITE(alpha_w) AM_SHARE("alpha")
AM_RANGE(0x3f4f80, 0x3f4fff) AM_MIRROR(0x8000) AM_READWRITE_LEGACY(atarimo_0_slipram_r, atarimo_0_slipram_w)
AM_RANGE(0x3f5000, 0x3f7fff) AM_MIRROR(0x8000) AM_RAM
ADDRESS_MAP_END

View File

@ -76,19 +76,19 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, xybots_state )
AM_RANGE(0x000000, 0x007fff) AM_MIRROR(0x7c0000) AM_ROM
AM_RANGE(0x008000, 0x00ffff) AM_MIRROR(0x7c0000) AM_ROM /* slapstic maps here */
AM_RANGE(0x010000, 0x03ffff) AM_MIRROR(0x7c0000) AM_ROM
AM_RANGE(0xff8000, 0xff8fff) AM_MIRROR(0x7f8000) AM_RAM_WRITE_LEGACY(atarigen_alpha_w) AM_SHARE("alpha")
AM_RANGE(0xff8000, 0xff8fff) AM_MIRROR(0x7f8000) AM_RAM_WRITE(alpha_w) AM_SHARE("alpha")
AM_RANGE(0xff9000, 0xffadff) AM_MIRROR(0x7f8000) AM_RAM
AM_RANGE(0xffae00, 0xffafff) AM_MIRROR(0x7f8000) AM_READWRITE_LEGACY(atarimo_0_spriteram_r, atarimo_0_spriteram_w)
AM_RANGE(0xffb000, 0xffbfff) AM_MIRROR(0x7f8000) AM_RAM_WRITE_LEGACY(atarigen_playfield_w) AM_SHARE("playfield")
AM_RANGE(0xffb000, 0xffbfff) AM_MIRROR(0x7f8000) AM_RAM_WRITE(playfield_w) AM_SHARE("playfield")
AM_RANGE(0xffc000, 0xffc7ff) AM_MIRROR(0x7f8800) AM_RAM_WRITE(paletteram_IIIIRRRRGGGGBBBB_word_w) AM_SHARE("paletteram")
AM_RANGE(0xffd000, 0xffdfff) AM_MIRROR(0x7f8000) AM_READWRITE_LEGACY(atarigen_eeprom_r, atarigen_eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0xffd000, 0xffdfff) AM_MIRROR(0x7f8000) AM_READWRITE(eeprom_r, eeprom_w) AM_SHARE("eeprom")
AM_RANGE(0xffe000, 0xffe0ff) AM_MIRROR(0x7f8000) AM_READ8(sound_r, 0x00ff)
AM_RANGE(0xffe100, 0xffe1ff) AM_MIRROR(0x7f8000) AM_READ_PORT("FFE100")
AM_RANGE(0xffe200, 0xffe2ff) AM_MIRROR(0x7f8000) AM_READ(special_port1_r)
AM_RANGE(0xffe800, 0xffe8ff) AM_MIRROR(0x7f8000) AM_WRITE_LEGACY(atarigen_eeprom_enable_w)
AM_RANGE(0xffe800, 0xffe8ff) AM_MIRROR(0x7f8000) AM_WRITE(eeprom_enable_w)
AM_RANGE(0xffe900, 0xffe9ff) AM_MIRROR(0x7f8000) AM_WRITE8(sound_w, 0x00ff)
AM_RANGE(0xffea00, 0xffeaff) AM_MIRROR(0x7f8000) AM_WRITE(watchdog_reset16_w)
AM_RANGE(0xffeb00, 0xffebff) AM_MIRROR(0x7f8000) AM_WRITE_LEGACY(atarigen_video_int_ack_w)
AM_RANGE(0xffeb00, 0xffebff) AM_MIRROR(0x7f8000) AM_WRITE(video_int_ack_w)
AM_RANGE(0xffee00, 0xffeeff) AM_MIRROR(0x7f8000) AM_WRITE(sound_reset_w)
ADDRESS_MAP_END
@ -185,7 +185,7 @@ static MACHINE_CONFIG_START( xybots, xybots_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2)
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_CPU_VBLANK_INT("screen", atarigen_video_int_gen)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", atarigen_state, video_int_gen)
MCFG_MACHINE_RESET_OVERRIDE(xybots_state,xybots)
MCFG_NVRAM_ADD_1FILL("eeprom")

View File

@ -23,6 +23,8 @@ public:
DECLARE_READ8_MEMBER(switch_6502_r);
DECLARE_WRITE8_MEMBER(sound_ctl_w);
DECLARE_WRITE8_MEMBER(mixer_w);
void swap_memory(void *ptr1, void *ptr2, int bytes);
void common_init(int slapstic, int vindctr2);
DECLARE_DRIVER_INIT(gauntlet2);
DECLARE_DRIVER_INIT(gaunt2p);
DECLARE_DRIVER_INIT(gauntlet);

View File

@ -323,68 +323,50 @@ WRITE16_MEMBER(atarigen_state::scanline_int_ack_w)
//-------------------------------------------------
// atarigen_sound_int_gen: Standard interrupt routine which
// sound_int_gen: Standard interrupt routine which
// sets the sound interrupt state.
//-------------------------------------------------
INTERRUPT_GEN( atarigen_sound_int_gen )
INTERRUPT_GEN_MEMBER(atarigen_state::sound_int_gen)
{
atarigen_state *state = device->machine().driver_data<atarigen_state>();
state->m_sound_int_state = 1;
state->update_interrupts();
m_sound_int_state = 1;
update_interrupts();
}
//-------------------------------------------------
// atarigen_sound_int_ack_w: Resets the state of the sound
// sound_int_ack_w: Resets the state of the sound
// interrupt.
//-------------------------------------------------
WRITE16_HANDLER( atarigen_sound_int_ack_w )
WRITE16_MEMBER(atarigen_state::sound_int_ack_w)
{
atarigen_state *state = space.machine().driver_data<atarigen_state>();
state->m_sound_int_state = 0;
state->update_interrupts();
}
WRITE32_HANDLER( atarigen_sound_int_ack32_w )
{
atarigen_state *state = space.machine().driver_data<atarigen_state>();
state->m_sound_int_state = 0;
state->update_interrupts();
m_sound_int_state = 0;
update_interrupts();
}
//-------------------------------------------------
// atarigen_video_int_gen: Standard interrupt routine which
// video_int_gen: Standard interrupt routine which
// sets the video interrupt state.
//-------------------------------------------------
INTERRUPT_GEN( atarigen_video_int_gen )
INTERRUPT_GEN_MEMBER(atarigen_state::video_int_gen)
{
atarigen_state *state = device->machine().driver_data<atarigen_state>();
state->m_video_int_state = 1;
state->update_interrupts();
m_video_int_state = 1;
update_interrupts();
}
//-------------------------------------------------
// atarigen_video_int_ack_w: Resets the state of the video
// video_int_ack_w: Resets the state of the video
// interrupt.
//-------------------------------------------------
WRITE16_HANDLER( atarigen_video_int_ack_w )
WRITE16_MEMBER(atarigen_state::video_int_ack_w)
{
atarigen_state *state = space.machine().driver_data<atarigen_state>();
state->m_video_int_state = 0;
state->update_interrupts();
}
WRITE32_HANDLER( atarigen_video_int_ack32_w )
{
atarigen_state *state = space.machine().driver_data<atarigen_state>();
state->m_video_int_state = 0;
state->update_interrupts();
m_video_int_state = 0;
update_interrupts();
}
@ -394,78 +376,59 @@ WRITE32_HANDLER( atarigen_video_int_ack32_w )
***************************************************************************/
//-------------------------------------------------
// atarigen_eeprom_enable_w: Any write to this handler will
// eeprom_enable_w: Any write to this handler will
// allow one byte to be written to the EEPROM data area the
// next time.
//-------------------------------------------------
WRITE16_HANDLER( atarigen_eeprom_enable_w )
WRITE16_MEMBER(atarigen_state::eeprom_enable_w)
{
atarigen_state *state = space.machine().driver_data<atarigen_state>();
state->m_eeprom_unlocked = true;
}
WRITE32_HANDLER( atarigen_eeprom_enable32_w )
{
atarigen_state *state = space.machine().driver_data<atarigen_state>();
state->m_eeprom_unlocked = true;
m_eeprom_unlocked = true;
}
//-------------------------------------------------
// atarigen_eeprom_w: Writes a "word" to the EEPROM, which is
// eeprom_w: Writes a "word" to the EEPROM, which is
// almost always accessed via the low byte of the word only.
// If the EEPROM hasn't been unlocked, the write attempt is
// ignored.
//-------------------------------------------------
WRITE16_HANDLER( atarigen_eeprom_w )
WRITE16_MEMBER(atarigen_state::eeprom_w)
{
atarigen_state *state = space.machine().driver_data<atarigen_state>();
if (!state->m_eeprom_unlocked)
if (!m_eeprom_unlocked)
return;
COMBINE_DATA(&state->m_eeprom[offset]);
state->m_eeprom_unlocked = false;
COMBINE_DATA(&m_eeprom[offset]);
m_eeprom_unlocked = false;
}
WRITE32_HANDLER( atarigen_eeprom32_w )
WRITE32_MEMBER(atarigen_state::eeprom32_w)
{
atarigen_state *state = space.machine().driver_data<atarigen_state>();
if (!state->m_eeprom_unlocked)
if (!m_eeprom_unlocked)
return;
COMBINE_DATA(&state->m_eeprom[offset * 2 + 1]);
COMBINE_DATA(&m_eeprom[offset * 2 + 1]);
data >>= 16;
mem_mask >>= 16;
COMBINE_DATA(&state->m_eeprom[offset * 2]);
state->m_eeprom_unlocked = false;
COMBINE_DATA(&m_eeprom[offset * 2]);
m_eeprom_unlocked = false;
}
//-------------------------------------------------
// atarigen_eeprom_r: Reads a "word" from the EEPROM, which is
// eeprom_r: Reads a "word" from the EEPROM, which is
// almost always accessed via the low byte of the word only.
//-------------------------------------------------
READ16_HANDLER( atarigen_eeprom_r )
READ16_MEMBER(atarigen_state::eeprom_r)
{
atarigen_state *state = space.machine().driver_data<atarigen_state>();
return state->m_eeprom[offset] | 0xff00;
return m_eeprom[offset] | 0xff00;
}
READ16_HANDLER( atarigen_eeprom_upper_r )
READ32_MEMBER(atarigen_state::eeprom_upper32_r)
{
atarigen_state *state = space.machine().driver_data<atarigen_state>();
return state->m_eeprom[offset] | 0x00ff;
}
READ32_HANDLER( atarigen_eeprom_upper32_r )
{
atarigen_state *state = space.machine().driver_data<atarigen_state>();
return (state->m_eeprom[offset * 2] << 16) | state->m_eeprom[offset * 2 + 1] | 0x00ff00ff;
return (m_eeprom[offset * 2] << 16) | m_eeprom[offset * 2 + 1] | 0x00ff00ff;
}
@ -691,7 +654,7 @@ WRITE8_MEMBER(atarigen_state::sound_w)
READ8_MEMBER(atarigen_state::sound_r)
{
m_sound_to_cpu_ready = 0;
atarigen_sound_int_ack_w(space, 0, 0, 0xffff);
sound_int_ack_w(space, 0, 0);
return m_sound_to_cpu;
}
@ -753,7 +716,7 @@ void atarigen_state::delayed_sound_reset(int param)
// reset the sound write state
m_sound_to_cpu_ready = 0;
atarigen_sound_int_ack_w(m_sound_cpu->space(AS_PROGRAM), 0, 0, 0xffff);
sound_int_ack_w(m_sound_cpu->space(AS_PROGRAM), 0, 0);
// allocate a high frequency timer until a response is generated
// the main CPU is *very* sensistive to the timing of the response
@ -797,7 +760,7 @@ void atarigen_state::delayed_6502_write(int data)
// set up the states and signal the sound interrupt to the main CPU
m_sound_to_cpu = data;
m_sound_to_cpu_ready = 1;
atarigen_sound_int_gen(machine().device("maincpu"));
sound_int_gen(*machine().device("maincpu"));
}
@ -943,24 +906,22 @@ void atarigen_state::atarivc_eof_update(emu_timer &timer, screen_device &screen)
// atarivc_reset: Initializes the video controller.
//-------------------------------------------------
void atarivc_reset(screen_device &screen, UINT16 *eof_data, int playfields)
void atarigen_state::atarivc_reset(screen_device &screen, UINT16 *eof_data, int playfields)
{
atarigen_state *state = screen.machine().driver_data<atarigen_state>();
// this allows us to manually reset eof_data to NULL if it's not used
state->m_atarivc_eof_data.set_target(eof_data, 0x100);
state->m_atarivc_playfields = playfields;
m_atarivc_eof_data.set_target(eof_data, 0x100);
m_atarivc_playfields = playfields;
// clear the RAM we use
memset(state->m_atarivc_data, 0, 0x40);
memset(&state->m_atarivc_state, 0, sizeof(state->m_atarivc_state));
memset(m_atarivc_data, 0, 0x40);
memset(&m_atarivc_state, 0, sizeof(m_atarivc_state));
// reset the latches
state->m_atarivc_state.latch1 = state->m_atarivc_state.latch2 = -1;
state->m_actual_vc_latch0 = state->m_actual_vc_latch1 = -1;
m_atarivc_state.latch1 = m_atarivc_state.latch2 = -1;
m_actual_vc_latch0 = m_actual_vc_latch1 = -1;
// start a timer to go off a little before scanline 0
if (state->m_atarivc_eof_data)
if (m_atarivc_eof_data != NULL)
get_screen_timer(screen)->atarivc_eof_update_timer->adjust(screen.time_until_pos(0));
}
@ -969,10 +930,9 @@ void atarivc_reset(screen_device &screen, UINT16 *eof_data, int playfields)
// atarivc_w: Handles an I/O write to the video controller.
//-------------------------------------------------
void atarivc_w(screen_device &screen, offs_t offset, UINT16 data, UINT16 mem_mask)
void atarigen_state::atarivc_w(screen_device &screen, offs_t offset, UINT16 data, UINT16 mem_mask)
{
atarigen_state *state = screen.machine().driver_data<atarigen_state>();
int oldword = state->m_atarivc_data[offset];
int oldword = m_atarivc_data[offset];
int newword = oldword;
COMBINE_DATA(&newword);
@ -986,11 +946,10 @@ void atarivc_w(screen_device &screen, offs_t offset, UINT16 data, UINT16 mem_mas
// write.
//-------------------------------------------------
static void atarivc_common_w(screen_device &screen, offs_t offset, UINT16 newword)
void atarigen_state::atarivc_common_w(screen_device &screen, offs_t offset, UINT16 newword)
{
atarigen_state *state = screen.machine().driver_data<atarigen_state>();
int oldword = state->m_atarivc_data[offset];
state->m_atarivc_data[offset] = newword;
int oldword = m_atarivc_data[offset];
m_atarivc_data[offset] = newword;
// switch off the offset
switch (offset)
@ -1005,24 +964,24 @@ static void atarivc_common_w(screen_device &screen, offs_t offset, UINT16 newwor
// set the scanline interrupt here
case 0x03:
if (oldword != newword)
state->scanline_int_set(screen, newword & 0x1ff);
scanline_int_set(screen, newword & 0x1ff);
break;
// latch enable
case 0x0a:
// reset the latches when disabled
atarigen_set_playfield_latch(state, (newword & 0x0080) ? state->m_actual_vc_latch0 : -1);
atarigen_set_playfield2_latch(state, (newword & 0x0080) ? state->m_actual_vc_latch1 : -1);
set_playfield_latch((newword & 0x0080) ? m_actual_vc_latch0 : -1);
set_playfield2_latch((newword & 0x0080) ? m_actual_vc_latch1 : -1);
// check for rowscroll enable
state->m_atarivc_state.rowscroll_enable = (newword & 0x2000) >> 13;
m_atarivc_state.rowscroll_enable = (newword & 0x2000) >> 13;
// check for palette banking
if (state->m_atarivc_state.palette_bank != (((newword & 0x0400) >> 10) ^ 1))
if (m_atarivc_state.palette_bank != (((newword & 0x0400) >> 10) ^ 1))
{
screen.update_partial(screen.vpos());
state->m_atarivc_state.palette_bank = ((newword & 0x0400) >> 10) ^ 1;
m_atarivc_state.palette_bank = ((newword & 0x0400) >> 10) ^ 1;
}
break;
@ -1033,53 +992,53 @@ static void atarivc_common_w(screen_device &screen, offs_t offset, UINT16 newwor
switch (newword & 15)
{
case 9:
state->m_atarivc_state.mo_xscroll = (newword >> 7) & 0x1ff;
m_atarivc_state.mo_xscroll = (newword >> 7) & 0x1ff;
break;
case 10:
state->m_atarivc_state.pf1_xscroll_raw = (newword >> 7) & 0x1ff;
atarivc_update_pf_xscrolls(state);
m_atarivc_state.pf1_xscroll_raw = (newword >> 7) & 0x1ff;
atarivc_update_pf_xscrolls();
break;
case 11:
state->m_atarivc_state.pf0_xscroll_raw = (newword >> 7) & 0x1ff;
atarivc_update_pf_xscrolls(state);
m_atarivc_state.pf0_xscroll_raw = (newword >> 7) & 0x1ff;
atarivc_update_pf_xscrolls();
break;
case 13:
state->m_atarivc_state.mo_yscroll = (newword >> 7) & 0x1ff;
m_atarivc_state.mo_yscroll = (newword >> 7) & 0x1ff;
break;
case 14:
state->m_atarivc_state.pf1_yscroll = (newword >> 7) & 0x1ff;
m_atarivc_state.pf1_yscroll = (newword >> 7) & 0x1ff;
break;
case 15:
state->m_atarivc_state.pf0_yscroll = (newword >> 7) & 0x1ff;
m_atarivc_state.pf0_yscroll = (newword >> 7) & 0x1ff;
break;
}
break;
// latch 1 value
case 0x1c:
state->m_actual_vc_latch0 = -1;
state->m_actual_vc_latch1 = newword;
atarigen_set_playfield_latch(state, (state->m_atarivc_data[0x0a] & 0x80) ? state->m_actual_vc_latch0 : -1);
atarigen_set_playfield2_latch(state, (state->m_atarivc_data[0x0a] & 0x80) ? state->m_actual_vc_latch1 : -1);
m_actual_vc_latch0 = -1;
m_actual_vc_latch1 = newword;
set_playfield_latch((m_atarivc_data[0x0a] & 0x80) ? m_actual_vc_latch0 : -1);
set_playfield2_latch((m_atarivc_data[0x0a] & 0x80) ? m_actual_vc_latch1 : -1);
break;
// latch 2 value
case 0x1d:
state->m_actual_vc_latch0 = newword;
state->m_actual_vc_latch1 = -1;
atarigen_set_playfield_latch(state, (state->m_atarivc_data[0x0a] & 0x80) ? state->m_actual_vc_latch0 : -1);
atarigen_set_playfield2_latch(state, (state->m_atarivc_data[0x0a] & 0x80) ? state->m_actual_vc_latch1 : -1);
m_actual_vc_latch0 = newword;
m_actual_vc_latch1 = -1;
set_playfield_latch((m_atarivc_data[0x0a] & 0x80) ? m_actual_vc_latch0 : -1);
set_playfield2_latch((m_atarivc_data[0x0a] & 0x80) ? m_actual_vc_latch1 : -1);
break;
// scanline IRQ ack here
case 0x1e:
// hack: this should be a device
state->scanline_int_ack_w(screen.machine().device("maincpu")->memory().space(AS_PROGRAM), 0, 0, 0xffff);
scanline_int_ack_w(screen.machine().device("maincpu")->memory().space(AS_PROGRAM), 0, 0, 0xffff);
break;
// log anything else
@ -1096,10 +1055,8 @@ static void atarivc_common_w(screen_device &screen, offs_t offset, UINT16 newwor
// atarivc_r: Handles an I/O read from the video controller.
//-------------------------------------------------
UINT16 atarivc_r(screen_device &screen, offs_t offset)
UINT16 atarigen_state::atarivc_r(screen_device &screen, offs_t offset)
{
atarigen_state *state = screen.machine().driver_data<atarigen_state>();
logerror("vc_r(%02X)\n", offset);
// a read from offset 0 returns the current scanline
@ -1116,7 +1073,7 @@ UINT16 atarivc_r(screen_device &screen, offs_t offset)
return result;
}
else
return state->m_atarivc_data[offset];
return m_atarivc_data[offset];
}
@ -1126,88 +1083,82 @@ UINT16 atarivc_r(screen_device &screen, offs_t offset)
***************************************************************************/
//-------------------------------------------------
// atarigen_alpha_w: Generic write handler for alpha RAM.
// alpha_w: Generic write handler for alpha RAM.
//-------------------------------------------------
WRITE16_HANDLER( atarigen_alpha_w )
WRITE16_MEMBER(atarigen_state::alpha_w)
{
atarigen_state *state = space.machine().driver_data<atarigen_state>();
COMBINE_DATA(&state->m_alpha[offset]);
state->m_alpha_tilemap->mark_tile_dirty(offset);
COMBINE_DATA(&m_alpha[offset]);
m_alpha_tilemap->mark_tile_dirty(offset);
}
WRITE32_HANDLER( atarigen_alpha32_w )
WRITE32_MEMBER(atarigen_state::alpha32_w)
{
atarigen_state *state = space.machine().driver_data<atarigen_state>();
COMBINE_DATA(&state->m_alpha32[offset]);
COMBINE_DATA(&m_alpha32[offset]);
if (ACCESSING_BITS_16_31)
state->m_alpha_tilemap->mark_tile_dirty(offset * 2);
m_alpha_tilemap->mark_tile_dirty(offset * 2);
if (ACCESSING_BITS_0_15)
state->m_alpha_tilemap->mark_tile_dirty(offset * 2 + 1);
m_alpha_tilemap->mark_tile_dirty(offset * 2 + 1);
}
WRITE16_HANDLER( atarigen_alpha2_w )
WRITE16_MEMBER(atarigen_state::alpha2_w)
{
atarigen_state *state = space.machine().driver_data<atarigen_state>();
COMBINE_DATA(&state->m_alpha2[offset]);
state->m_alpha2_tilemap->mark_tile_dirty(offset);
COMBINE_DATA(&m_alpha2[offset]);
m_alpha2_tilemap->mark_tile_dirty(offset);
}
//-------------------------------------------------
// atarigen_set_playfield_latch: Sets the latch for the latched
// set_playfield_latch: Sets the latch for the latched
// playfield handlers below.
//-------------------------------------------------
void atarigen_set_playfield_latch(atarigen_state *state, int data)
void atarigen_state::set_playfield_latch(int data)
{
state->m_playfield_latch = data;
m_playfield_latch = data;
}
void atarigen_set_playfield2_latch(atarigen_state *state, int data)
void atarigen_state::set_playfield2_latch(int data)
{
state->m_playfield2_latch = data;
m_playfield2_latch = data;
}
//-------------------------------------------------
// atarigen_playfield_w: Generic write handler for PF RAM.
// playfield_w: Generic write handler for PF RAM.
//-------------------------------------------------
WRITE16_HANDLER( atarigen_playfield_w )
WRITE16_MEMBER(atarigen_state::playfield_w)
{
atarigen_state *state = space.machine().driver_data<atarigen_state>();
COMBINE_DATA(&state->m_playfield[offset]);
state->m_playfield_tilemap->mark_tile_dirty(offset);
COMBINE_DATA(&m_playfield[offset]);
m_playfield_tilemap->mark_tile_dirty(offset);
}
WRITE32_HANDLER( atarigen_playfield32_w )
WRITE32_MEMBER(atarigen_state::playfield32_w)
{
atarigen_state *state = space.machine().driver_data<atarigen_state>();
COMBINE_DATA(&state->m_playfield32[offset]);
COMBINE_DATA(&m_playfield32[offset]);
if (ACCESSING_BITS_16_31)
state->m_playfield_tilemap->mark_tile_dirty(offset * 2);
m_playfield_tilemap->mark_tile_dirty(offset * 2);
if (ACCESSING_BITS_0_15)
state->m_playfield_tilemap->mark_tile_dirty(offset * 2 + 1);
m_playfield_tilemap->mark_tile_dirty(offset * 2 + 1);
}
WRITE16_HANDLER( atarigen_playfield2_w )
WRITE16_MEMBER(atarigen_state::playfield2_w)
{
atarigen_state *state = space.machine().driver_data<atarigen_state>();
COMBINE_DATA(&state->m_playfield2[offset]);
state->m_playfield2_tilemap->mark_tile_dirty(offset);
COMBINE_DATA(&m_playfield2[offset]);
m_playfield2_tilemap->mark_tile_dirty(offset);
}
//-------------------------------------------------
// atarigen_playfield_large_w: Generic write handler for
// playfield_large_w: Generic write handler for
// large (2-word) playfield RAM.
//-------------------------------------------------
WRITE16_HANDLER( atarigen_playfield_large_w )
WRITE16_MEMBER(atarigen_state::playfield_large_w)
{
atarigen_state *state = space.machine().driver_data<atarigen_state>();
COMBINE_DATA(&state->m_playfield[offset]);
@ -1217,11 +1168,11 @@ WRITE16_HANDLER( atarigen_playfield_large_w )
//-------------------------------------------------
// atarigen_playfield_upper_w: Generic write handler for
// playfield_upper_w: Generic write handler for
// upper word of split playfield RAM.
//-------------------------------------------------
WRITE16_HANDLER( atarigen_playfield_upper_w )
WRITE16_MEMBER(atarigen_state::playfield_upper_w)
{
atarigen_state *state = space.machine().driver_data<atarigen_state>();
COMBINE_DATA(&state->m_playfield_upper[offset]);
@ -1231,11 +1182,11 @@ WRITE16_HANDLER( atarigen_playfield_upper_w )
//-------------------------------------------------
// atarigen_playfield_dual_upper_w: Generic write handler for
// playfield_dual_upper_w: Generic write handler for
// upper word of split dual playfield RAM.
//-------------------------------------------------
WRITE16_HANDLER( atarigen_playfield_dual_upper_w )
WRITE16_MEMBER(atarigen_state::playfield_dual_upper_w)
{
atarigen_state *state = space.machine().driver_data<atarigen_state>();
COMBINE_DATA(&state->m_playfield_upper[offset]);
@ -1246,12 +1197,12 @@ WRITE16_HANDLER( atarigen_playfield_dual_upper_w )
//-------------------------------------------------
// atarigen_playfield_latched_lsb_w: Generic write handler for
// playfield_latched_lsb_w: Generic write handler for
// lower word of playfield RAM with a latch in the LSB of the
// upper word.
//-------------------------------------------------
WRITE16_HANDLER( atarigen_playfield_latched_lsb_w )
WRITE16_MEMBER(atarigen_state::playfield_latched_lsb_w)
{
atarigen_state *state = space.machine().driver_data<atarigen_state>();
@ -1265,12 +1216,12 @@ WRITE16_HANDLER( atarigen_playfield_latched_lsb_w )
//-------------------------------------------------
// atarigen_playfield_latched_lsb_w: Generic write handler for
// playfield_latched_msb_w: Generic write handler for
// lower word of playfield RAM with a latch in the MSB of the
// upper word.
//-------------------------------------------------
WRITE16_HANDLER( atarigen_playfield_latched_msb_w )
WRITE16_MEMBER(atarigen_state::playfield_latched_msb_w)
{
atarigen_state *state = space.machine().driver_data<atarigen_state>();
@ -1284,12 +1235,12 @@ WRITE16_HANDLER( atarigen_playfield_latched_msb_w )
//-------------------------------------------------
// atarigen_playfield_latched_lsb_w: Generic write handler for
// playfield2_latched_msb_w: Generic write handler for
// lower word of second playfield RAM with a latch in the MSB
// of the upper word.
//-------------------------------------------------
WRITE16_HANDLER( atarigen_playfield2_latched_msb_w )
WRITE16_MEMBER(atarigen_state::playfield2_latched_msb_w)
{
atarigen_state *state = space.machine().driver_data<atarigen_state>();
@ -1307,18 +1258,6 @@ WRITE16_HANDLER( atarigen_playfield2_latched_msb_w )
VIDEO HELPERS
***************************************************************************/
//-------------------------------------------------
// atarigen_get_hblank: Returns a guesstimate about the current
// HBLANK state, based on the assumption that HBLANK represents
// 10% of the scanline period.
//-------------------------------------------------
int atarigen_get_hblank(screen_device &screen)
{
return (screen.hpos() > (screen.width() * 9 / 10));
}
//-------------------------------------------------
// halt_until_hblank_0: Halts CPU 0 until the
// next HBLANK.
@ -1342,16 +1281,15 @@ void atarigen_state::halt_until_hblank_0(device_t &device, screen_device &screen
//-------------------------------------------------
// atarigen_666_paletteram_w: 6-6-6 RGB palette RAM handler.
// paletteram_666_w: 6-6-6 RGB palette RAM handler.
//-------------------------------------------------
WRITE16_HANDLER( atarigen_666_paletteram_w )
WRITE16_MEMBER(atarigen_state::paletteram_666_w)
{
atarigen_state *state = space.machine().driver_data<atarigen_state>();
int newword, r, g, b;
COMBINE_DATA(&state->m_generic_paletteram_16[offset]);
newword = state->m_generic_paletteram_16[offset];
COMBINE_DATA(&m_generic_paletteram_16[offset]);
newword = m_generic_paletteram_16[offset];
r = ((newword >> 9) & 0x3e) | ((newword >> 15) & 1);
g = ((newword >> 4) & 0x3e) | ((newword >> 15) & 1);
@ -1362,19 +1300,18 @@ WRITE16_HANDLER( atarigen_666_paletteram_w )
//-------------------------------------------------
// atarigen_expanded_666_paletteram_w: 6-6-6 RGB expanded
// expanded_paletteram_666_w: 6-6-6 RGB expanded
// palette RAM handler.
//-------------------------------------------------
WRITE16_HANDLER( atarigen_expanded_666_paletteram_w )
WRITE16_MEMBER(atarigen_state::expanded_paletteram_666_w)
{
atarigen_state *state = space.machine().driver_data<atarigen_state>();
COMBINE_DATA(&state->m_generic_paletteram_16[offset]);
COMBINE_DATA(&m_generic_paletteram_16[offset]);
if (ACCESSING_BITS_8_15)
{
int palentry = offset / 2;
int newword = (state->m_generic_paletteram_16[palentry * 2] & 0xff00) | (state->m_generic_paletteram_16[palentry * 2 + 1] >> 8);
int newword = (m_generic_paletteram_16[palentry * 2] & 0xff00) | (m_generic_paletteram_16[palentry * 2 + 1] >> 8);
int r, g, b;
@ -1388,19 +1325,18 @@ WRITE16_HANDLER( atarigen_expanded_666_paletteram_w )
//-------------------------------------------------
// atarigen_666_paletteram32_w: 6-6-6 RGB palette RAM handler.
// paletteram32_666_w: 6-6-6 RGB palette RAM handler.
//-------------------------------------------------
WRITE32_HANDLER( atarigen_666_paletteram32_w )
WRITE32_MEMBER(atarigen_state::paletteram32_666_w )
{
atarigen_state *state = space.machine().driver_data<atarigen_state>();
int newword, r, g, b;
COMBINE_DATA(&state->m_generic_paletteram_32[offset]);
COMBINE_DATA(&m_generic_paletteram_32[offset]);
if (ACCESSING_BITS_16_31)
{
newword = state->m_generic_paletteram_32[offset] >> 16;
newword = m_generic_paletteram_32[offset] >> 16;
r = ((newword >> 9) & 0x3e) | ((newword >> 15) & 1);
g = ((newword >> 4) & 0x3e) | ((newword >> 15) & 1);
@ -1411,7 +1347,7 @@ WRITE32_HANDLER( atarigen_666_paletteram32_w )
if (ACCESSING_BITS_0_15)
{
newword = state->m_generic_paletteram_32[offset] & 0xffff;
newword = m_generic_paletteram_32[offset] & 0xffff;
r = ((newword >> 9) & 0x3e) | ((newword >> 15) & 1);
g = ((newword >> 4) & 0x3e) | ((newword >> 15) & 1);
@ -1428,36 +1364,19 @@ WRITE32_HANDLER( atarigen_666_paletteram32_w )
***************************************************************************/
//-------------------------------------------------
// atarigen_swap_mem: Inverts the bits in a region.
//-------------------------------------------------
void atarigen_swap_mem(void *ptr1, void *ptr2, int bytes)
{
UINT8 *p1 = (UINT8 *)ptr1;
UINT8 *p2 = (UINT8 *)ptr2;
while (bytes--)
{
int temp = *p1;
*p1++ = *p2;
*p2++ = temp;
}
}
//-------------------------------------------------
// atarigen_blend_gfx: Takes two GFXElements and blends their
// blend_gfx: Takes two GFXElements and blends their
// data together to form one. Then frees the second.
//-------------------------------------------------
void atarigen_blend_gfx(running_machine &machine, int gfx0, int gfx1, int mask0, int mask1)
void atarigen_state::blend_gfx(int gfx0, int gfx1, int mask0, int mask1)
{
gfx_element *gx0 = machine.gfx[gfx0];
gfx_element *gx1 = machine.gfx[gfx1];
gfx_element *gx0 = machine().gfx[gfx0];
gfx_element *gx1 = machine().gfx[gfx1];
UINT8 *srcdata, *dest;
int c, x, y;
// allocate memory for the assembled data
srcdata = auto_alloc_array(machine, UINT8, gx0->elements() * gx0->width() * gx0->height());
srcdata = auto_alloc_array(machine(), UINT8, gx0->elements() * gx0->width() * gx0->height());
// loop over elements
dest = srcdata;
@ -1485,8 +1404,8 @@ void atarigen_blend_gfx(running_machine &machine, int gfx0, int gfx1, int mask0,
gx0->set_granularity(granularity);
// free the second graphics element
machine.gfx[gfx1] = NULL;
auto_free(machine, gx1);
machine().gfx[gfx1] = NULL;
auto_free(machine(), gx1);
}

View File

@ -106,6 +106,17 @@ public:
void scanline_int_set(screen_device &screen, int scanline);
INTERRUPT_GEN_MEMBER(scanline_int_gen);
DECLARE_WRITE16_MEMBER(scanline_int_ack_w);
INTERRUPT_GEN_MEMBER(sound_int_gen);
DECLARE_WRITE16_MEMBER(sound_int_ack_w);
INTERRUPT_GEN_MEMBER(video_int_gen);
DECLARE_WRITE16_MEMBER(video_int_ack_w);
// EEPROM helpers
WRITE16_MEMBER(eeprom_enable_w);
WRITE16_MEMBER(eeprom_w);
WRITE32_MEMBER(eeprom32_w);
READ16_MEMBER(eeprom_r);
READ32_MEMBER(eeprom_upper32_r);
// slapstic helpers
void slapstic_configure(cpu_device &device, offs_t base, offs_t mirror, int chipnum);
@ -145,9 +156,41 @@ public:
// video controller
void atarivc_eof_update(emu_timer &timer, screen_device &screen);
void atarivc_reset(screen_device &screen, UINT16 *eof_data, int playfields);
void atarivc_w(screen_device &screen, offs_t offset, UINT16 data, UINT16 mem_mask);
UINT16 atarivc_r(screen_device &screen, offs_t offset);
inline void atarivc_update_pf_xscrolls()
{
m_atarivc_state.pf0_xscroll = m_atarivc_state.pf0_xscroll_raw + ((m_atarivc_state.pf1_xscroll_raw) & 7);
m_atarivc_state.pf1_xscroll = m_atarivc_state.pf1_xscroll_raw + 4;
}
void atarivc_common_w(screen_device &screen, offs_t offset, UINT16 newword);
// playfield/alpha tilemap helpers
DECLARE_WRITE16_MEMBER( alpha_w );
DECLARE_WRITE32_MEMBER( alpha32_w );
DECLARE_WRITE16_MEMBER( alpha2_w );
void set_playfield_latch(int data);
void set_playfield2_latch(int data);
DECLARE_WRITE16_MEMBER( playfield_w );
DECLARE_WRITE32_MEMBER( playfield32_w );
DECLARE_WRITE16_MEMBER( playfield_large_w );
DECLARE_WRITE16_MEMBER( playfield_upper_w );
DECLARE_WRITE16_MEMBER( playfield_dual_upper_w );
DECLARE_WRITE16_MEMBER( playfield_latched_lsb_w );
DECLARE_WRITE16_MEMBER( playfield_latched_msb_w );
DECLARE_WRITE16_MEMBER( playfield2_w );
DECLARE_WRITE16_MEMBER( playfield2_latched_msb_w );
// video helpers
int get_hblank(screen_device &screen) const { return (screen.hpos() > (screen.width() * 9 / 10)); }
void halt_until_hblank_0(device_t &device, screen_device &screen);
DECLARE_WRITE16_HANDLER( paletteram_666_w );
DECLARE_WRITE16_HANDLER( expanded_paletteram_666_w );
DECLARE_WRITE32_HANDLER( paletteram32_666_w );
// misc helpers
void blend_gfx(int gfx0, int gfx1, int mask0, int mask1);
// vector and early raster EAROM interface
DECLARE_READ8_MEMBER( earom_r );
@ -235,92 +278,6 @@ public:
/***************************************************************************
FUNCTION PROTOTYPES
***************************************************************************/
/*---------------------------------------------------------------
INTERRUPT HANDLING
---------------------------------------------------------------*/
INTERRUPT_GEN( atarigen_sound_int_gen );
DECLARE_WRITE16_HANDLER( atarigen_sound_int_ack_w );
DECLARE_WRITE32_HANDLER( atarigen_sound_int_ack32_w );
INTERRUPT_GEN( atarigen_video_int_gen );
DECLARE_WRITE16_HANDLER( atarigen_video_int_ack_w );
DECLARE_WRITE32_HANDLER( atarigen_video_int_ack32_w );
/*---------------------------------------------------------------
EEPROM HANDLING
---------------------------------------------------------------*/
DECLARE_WRITE16_HANDLER( atarigen_eeprom_enable_w );
DECLARE_WRITE16_HANDLER( atarigen_eeprom_w );
DECLARE_READ16_HANDLER( atarigen_eeprom_r );
DECLARE_READ16_HANDLER( atarigen_eeprom_upper_r );
DECLARE_WRITE32_HANDLER( atarigen_eeprom_enable32_w );
DECLARE_WRITE32_HANDLER( atarigen_eeprom32_w );
DECLARE_READ32_HANDLER( atarigen_eeprom_upper32_r );
/*---------------------------------------------------------------
VIDEO CONTROLLER
---------------------------------------------------------------*/
void atarivc_reset(screen_device &screen, UINT16 *eof_data, int playfields);
void atarivc_w(screen_device &screen, offs_t offset, UINT16 data, UINT16 mem_mask);
UINT16 atarivc_r(screen_device &screen, offs_t offset);
INLINE void atarivc_update_pf_xscrolls(atarigen_state *state)
{
state->m_atarivc_state.pf0_xscroll = state->m_atarivc_state.pf0_xscroll_raw + ((state->m_atarivc_state.pf1_xscroll_raw) & 7);
state->m_atarivc_state.pf1_xscroll = state->m_atarivc_state.pf1_xscroll_raw + 4;
}
/*---------------------------------------------------------------
PLAYFIELD/ALPHA MAP HELPERS
---------------------------------------------------------------*/
DECLARE_WRITE16_HANDLER( atarigen_alpha_w );
DECLARE_WRITE32_HANDLER( atarigen_alpha32_w );
DECLARE_WRITE16_HANDLER( atarigen_alpha2_w );
void atarigen_set_playfield_latch(atarigen_state *state, int data);
void atarigen_set_playfield2_latch(atarigen_state *state, int data);
DECLARE_WRITE16_HANDLER( atarigen_playfield_w );
DECLARE_WRITE32_HANDLER( atarigen_playfield32_w );
DECLARE_WRITE16_HANDLER( atarigen_playfield_large_w );
DECLARE_WRITE16_HANDLER( atarigen_playfield_upper_w );
DECLARE_WRITE16_HANDLER( atarigen_playfield_dual_upper_w );
DECLARE_WRITE16_HANDLER( atarigen_playfield_latched_lsb_w );
DECLARE_WRITE16_HANDLER( atarigen_playfield_latched_msb_w );
DECLARE_WRITE16_HANDLER( atarigen_playfield2_w );
DECLARE_WRITE16_HANDLER( atarigen_playfield2_latched_msb_w );
/*---------------------------------------------------------------
VIDEO HELPERS
---------------------------------------------------------------*/
int atarigen_get_hblank(screen_device &screen);
DECLARE_WRITE16_HANDLER( atarigen_666_paletteram_w );
DECLARE_WRITE16_HANDLER( atarigen_expanded_666_paletteram_w );
DECLARE_WRITE32_HANDLER( atarigen_666_paletteram32_w );
/*---------------------------------------------------------------
MISC HELPERS
---------------------------------------------------------------*/
void atarigen_swap_mem(void *ptr1, void *ptr2, int bytes);
void atarigen_blend_gfx(running_machine &machine, int gfx0, int gfx1, int mask0, int mask1);
/***************************************************************************
GENERAL ATARI NOTES
**************************************************************************##

View File

@ -221,8 +221,9 @@ READ16_HANDLER( hd68k_port0_r )
.....
0x8000 = SW1 #1
*/
harddriv_state *state = space.machine().driver_data<harddriv_state>();
int temp = (space.machine().root_device().ioport("SW1")->read() << 8) | space.machine().root_device().ioport("IN0")->read();
if (atarigen_get_hblank(*space.machine().primary_screen)) temp ^= 0x0002;
if (state->get_hblank(*space.machine().primary_screen)) temp ^= 0x0002;
temp ^= 0x0018; /* both EOCs always high for now */
return temp;
}

View File

@ -44,9 +44,8 @@ TILE_GET_INFO_MEMBER(atarig1_state::get_playfield_tile_info)
VIDEO_START_MEMBER(atarig1_state,atarig1)
{
/* blend the playfields and free the temporary one */
atarigen_blend_gfx(machine(), 0, 2, 0x0f, 0x10);
blend_gfx(0, 2, 0x0f, 0x10);
/* initialize the playfield */
m_playfield_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(atarig1_state::get_playfield_tile_info),this), TILEMAP_SCAN_ROWS, 8,8, 64,64);

View File

@ -67,9 +67,8 @@ TILEMAP_MAPPER_MEMBER(atarig42_state::atarig42_playfield_scan)
VIDEO_START_MEMBER(atarig42_state,atarig42)
{
/* blend the playfields and free the temporary one */
atarigen_blend_gfx(machine(), 0, 2, 0x0f, 0x30);
blend_gfx(0, 2, 0x0f, 0x30);
/* initialize the playfield */
m_playfield_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(atarig42_state::get_playfield_tile_info),this), tilemap_mapper_delegate(FUNC(atarig42_state::atarig42_playfield_scan),this), 8,8, 128,64);

View File

@ -80,7 +80,7 @@ VIDEO_START_MEMBER(atarigt_state,atarigt)
int i, width, height;
/* blend the playfields and free the temporary one */
atarigen_blend_gfx(machine(), 0, 2, 0x0f, 0x30);
blend_gfx(0, 2, 0x0f, 0x30);
/* initialize the playfield */
m_playfield_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(atarigt_state::get_playfield_tile_info),this), tilemap_mapper_delegate(FUNC(atarigt_state::atarigt_playfield_scan),this), 8,8, 128,64);

View File

@ -67,9 +67,8 @@ TILEMAP_MAPPER_MEMBER(atarigx2_state::atarigx2_playfield_scan)
VIDEO_START_MEMBER(atarigx2_state,atarigx2)
{
/* blend the playfields and free the temporary one */
atarigen_blend_gfx(machine(), 0, 2, 0x0f, 0x30);
blend_gfx(0, 2, 0x0f, 0x30);
/* initialize the playfield */
m_playfield_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(atarigx2_state::get_playfield_tile_info),this), tilemap_mapper_delegate(FUNC(atarigx2_state::atarigx2_playfield_scan),this), 8,8, 128,64);

View File

@ -142,7 +142,7 @@ void batman_state::scanline_update(screen_device &screen, int scanline)
if (scanline > 0)
screen.update_partial(scanline - 1);
m_atarivc_state.pf1_xscroll_raw = (data >> 7) & 0x1ff;
atarivc_update_pf_xscrolls(this);
atarivc_update_pf_xscrolls();
m_playfield_tilemap->set_scrollx(0, m_atarivc_state.pf0_xscroll);
m_playfield2_tilemap->set_scrollx(0, m_atarivc_state.pf1_xscroll);
break;
@ -151,7 +151,7 @@ void batman_state::scanline_update(screen_device &screen, int scanline)
if (scanline > 0)
screen.update_partial(scanline - 1);
m_atarivc_state.pf0_xscroll_raw = (data >> 7) & 0x1ff;
atarivc_update_pf_xscrolls(this);
atarivc_update_pf_xscrolls();
m_playfield_tilemap->set_scrollx(0, m_atarivc_state.pf0_xscroll);
break;

View File

@ -176,7 +176,7 @@ WRITE16_HANDLER( skullxbo_mobmsb_w )
WRITE16_HANDLER( skullxbo_playfieldlatch_w )
{
skullxbo_state *state = space.machine().driver_data<skullxbo_state>();
atarigen_set_playfield_latch(state, data);
state->set_playfield_latch(data);
}