Various Atari vector drivers: derive (fake) refresh rate from CPU IRQ frequency to reduce juddering [Alex Jackson]

This commit is contained in:
Alex W. Jackson 2014-04-06 22:25:28 +00:00
parent 0b1ef23ed3
commit 284f8a00a6
8 changed files with 22 additions and 29 deletions

View File

@ -200,7 +200,7 @@ There is not a rev 03 known or dumped. An Asteroids rev 03 is not mentioned in a
#include "astdelux.lh"
#define MASTER_CLOCK (XTAL_12_096MHz)
#define CLOCK_3KHZ (MASTER_CLOCK / 4096)
#define CLOCK_3KHZ ((double)MASTER_CLOCK / 4096)
/*************************************
*
@ -633,13 +633,12 @@ static MACHINE_CONFIG_START( asteroid, asteroid_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M6502, MASTER_CLOCK/8)
MCFG_CPU_PROGRAM_MAP(asteroid_map)
MCFG_CPU_PERIODIC_INT_DRIVER(asteroid_state, asteroid_interrupt, (double)MASTER_CLOCK/4096/12)
MCFG_CPU_PERIODIC_INT_DRIVER(asteroid_state, asteroid_interrupt, CLOCK_3KHZ/12)
/* video hardware */
MCFG_VECTOR_ADD("vector")
MCFG_SCREEN_ADD("screen", VECTOR)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_REFRESH_RATE(CLOCK_3KHZ/12/4)
MCFG_SCREEN_SIZE(400,300)
MCFG_SCREEN_VISIBLE_AREA(522, 1566, 394, 1182)
MCFG_SCREEN_UPDATE_DEVICE("vector", vector_device, screen_update)
@ -659,7 +658,7 @@ static MACHINE_CONFIG_DERIVED( asterock, asteroid )
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PERIODIC_INT_DRIVER(asteroid_state, asterock_interrupt, (double)MASTER_CLOCK/4096/12)
MCFG_CPU_PERIODIC_INT_DRIVER(asteroid_state, asterock_interrupt, CLOCK_3KHZ/12)
MACHINE_CONFIG_END
@ -693,7 +692,7 @@ static MACHINE_CONFIG_DERIVED( llander, asteroid )
MCFG_MACHINE_RESET_OVERRIDE(asteroid_state, llander)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_REFRESH_RATE(40)
MCFG_SCREEN_REFRESH_RATE(CLOCK_3KHZ/12/6)
MCFG_SCREEN_VISIBLE_AREA(522, 1566, 270, 1070)
MCFG_SCREEN_UPDATE_DEVICE("vector", vector_device, screen_update)

View File

@ -695,14 +695,14 @@ static MACHINE_CONFIG_START( bwidow, bwidow_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M6502, MASTER_CLOCK / 8)
MCFG_CPU_PROGRAM_MAP(bwidow_map)
MCFG_CPU_PERIODIC_INT_DRIVER(bwidow_state, irq0_line_assert, (double)MASTER_CLOCK / 4096 / 12)
MCFG_CPU_PERIODIC_INT_DRIVER(bwidow_state, irq0_line_assert, CLOCK_3KHZ / 12)
MCFG_ATARIVGEAROM_ADD("earom")
/* video hardware */
MCFG_VECTOR_ADD("vector")
MCFG_SCREEN_ADD("screen", VECTOR)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_REFRESH_RATE(CLOCK_3KHZ / 12 / 4)
MCFG_SCREEN_SIZE(400, 300)
MCFG_SCREEN_VISIBLE_AREA(0, 480, 0, 440)
MCFG_SCREEN_UPDATE_DEVICE("vector", vector_device, screen_update)
@ -736,7 +736,6 @@ static MACHINE_CONFIG_DERIVED( lunarbat, gravitar )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_REFRESH_RATE(45)
MCFG_SCREEN_VISIBLE_AREA(0, 500, 0, 440)
MACHINE_CONFIG_END
@ -749,7 +748,6 @@ static MACHINE_CONFIG_DERIVED( spacduel, gravitar )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_REFRESH_RATE(45)
MCFG_SCREEN_VISIBLE_AREA(0, 540, 0, 400)
MACHINE_CONFIG_END

View File

@ -550,13 +550,12 @@ static MACHINE_CONFIG_START( bzone_base, bzone_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M6502, BZONE_MASTER_CLOCK / 8)
MCFG_CPU_PROGRAM_MAP(bzone_map)
MCFG_CPU_PERIODIC_INT_DRIVER(bzone_state, bzone_interrupt, (double)BZONE_MASTER_CLOCK / 4096 / 12)
MCFG_CPU_PERIODIC_INT_DRIVER(bzone_state, bzone_interrupt, BZONE_CLOCK_3KHZ / 12)
/* video hardware */
MCFG_VECTOR_ADD("vector")
MCFG_SCREEN_ADD("screen", VECTOR)
MCFG_SCREEN_REFRESH_RATE(40)
MCFG_SCREEN_REFRESH_RATE(BZONE_CLOCK_3KHZ / 12 / 6)
MCFG_SCREEN_SIZE(400, 300)
MCFG_SCREEN_VISIBLE_AREA(0, 580, 0, 400)
MCFG_SCREEN_UPDATE_DEVICE("vector", vector_device, screen_update)
@ -583,7 +582,6 @@ static MACHINE_CONFIG_DERIVED( redbaron, bzone_base )
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(redbaron_map)
MCFG_CPU_PERIODIC_INT_DRIVER(bzone_state, bzone_interrupt, (double)BZONE_MASTER_CLOCK / 4096 / 12)
MCFG_MACHINE_START_OVERRIDE(bzone_state,redbaron)
@ -591,7 +589,7 @@ static MACHINE_CONFIG_DERIVED( redbaron, bzone_base )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_REFRESH_RATE(BZONE_CLOCK_3KHZ / 12 / 4)
MCFG_SCREEN_VISIBLE_AREA(0, 520, 0, 400)

View File

@ -69,8 +69,8 @@ public:
};
#define MASTER_CLOCK (12096000)
#define CLOCK_3KHZ (MASTER_CLOCK / 4096)
#define MASTER_CLOCK (XTAL_12_096MHz)
#define CLOCK_3KHZ ((double)MASTER_CLOCK / 4096)
/*************************************
@ -296,7 +296,7 @@ static MACHINE_CONFIG_START( quantum, quantum_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68000, MASTER_CLOCK / 2)
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_CPU_PERIODIC_INT_DRIVER(quantum_state, irq1_line_hold, (double)MASTER_CLOCK / 4096 / 12)
MCFG_CPU_PERIODIC_INT_DRIVER(quantum_state, irq1_line_hold, CLOCK_3KHZ / 12)
MCFG_NVRAM_ADD_1FILL("nvram")

View File

@ -33,8 +33,8 @@
#include "includes/slapstic.h"
#define MASTER_CLOCK (12096000)
#define CLOCK_3KHZ (MASTER_CLOCK / 4096)
#define MASTER_CLOCK (XTAL_12_096MHz)
#define CLOCK_3KHZ ((double)MASTER_CLOCK / 4096)
WRITE8_MEMBER(starwars_state::quad_pokeyn_w)
@ -328,13 +328,12 @@ static MACHINE_CONFIG_START( starwars, starwars_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M6809, MASTER_CLOCK / 8)
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_CPU_PERIODIC_INT_DRIVER(starwars_state, irq0_line_assert, (double)MASTER_CLOCK / 4096 / 12)
MCFG_CPU_PERIODIC_INT_DRIVER(starwars_state, irq0_line_assert, CLOCK_3KHZ / 12)
MCFG_WATCHDOG_TIME_INIT(attotime::from_hz(CLOCK_3KHZ / 128))
MCFG_CPU_ADD("audiocpu", M6809, MASTER_CLOCK / 8)
MCFG_CPU_PROGRAM_MAP(sound_map)
MCFG_RIOT6532_ADD("riot", MASTER_CLOCK / 8, starwars_riot6532_intf)
MCFG_X2212_ADD_AUTOSAVE("x2212") /* nvram */
@ -342,7 +341,7 @@ static MACHINE_CONFIG_START( starwars, starwars_state )
/* video hardware */
MCFG_VECTOR_ADD("vector")
MCFG_SCREEN_ADD("screen", VECTOR)
MCFG_SCREEN_REFRESH_RATE(40)
MCFG_SCREEN_REFRESH_RATE(CLOCK_3KHZ / 12 / 6)
MCFG_SCREEN_SIZE(400, 300)
MCFG_SCREEN_VISIBLE_AREA(0, 250, 0, 280)
MCFG_SCREEN_UPDATE_DEVICE("vector", vector_device, screen_update)

View File

@ -309,7 +309,7 @@ public:
#define MASTER_CLOCK (XTAL_12_096MHz)
#define CLOCK_3KHZ (MASTER_CLOCK / 4096)
#define CLOCK_3KHZ ((double)MASTER_CLOCK / 4096)
#define TEMPEST_KNOB_P1_TAG ("KNOBP1")
#define TEMPEST_KNOB_P2_TAG ("KNOBP2")
@ -599,12 +599,11 @@ static MACHINE_CONFIG_START( tempest, tempest_state )
/* needed to ensure routine at ae1c passes checks and does not corrupt data */
MCFG_QUANTUM_PERFECT_CPU("maincpu")
MCFG_CPU_PERIODIC_INT_DRIVER(tempest_state, irq0_line_assert, (double)MASTER_CLOCK / 4096 / 12)
MCFG_CPU_PERIODIC_INT_DRIVER(tempest_state, irq0_line_assert, CLOCK_3KHZ / 12)
MCFG_WATCHDOG_TIME_INIT(attotime::from_hz(CLOCK_3KHZ / 256))
MCFG_ATARIVGEAROM_ADD("earom")
/* video hardware */
MCFG_VECTOR_ADD("vector")
MCFG_SCREEN_ADD("screen", VECTOR)

View File

@ -2,8 +2,8 @@
#ifndef BWIDOW_H_
#define BWIDOW_H_
#define MASTER_CLOCK (12096000)
#define CLOCK_3KHZ (MASTER_CLOCK / 4096)
#define MASTER_CLOCK (XTAL_12_096MHz)
#define CLOCK_3KHZ ((double)MASTER_CLOCK / 4096)
class bwidow_state : public driver_device

View File

@ -9,7 +9,7 @@
#include "sound/discrete.h"
#define BZONE_MASTER_CLOCK (XTAL_12_096MHz)
#define BZONE_CLOCK_3KHZ (MASTER_CLOCK / 4096)
#define BZONE_CLOCK_3KHZ ((double)BZONE_MASTER_CLOCK / 4096)
class bzone_state : public driver_device
{