Makes suggested changes to MDRV_TIMER macros. Hasn't moved them yet.

This commit is contained in:
Zsolt Vasvari 2008-03-14 15:13:46 +00:00
parent 0d06d94153
commit d4893e2535
4 changed files with 20 additions and 28 deletions

View File

@ -437,10 +437,19 @@ union _machine_config_token
/* add/remove timers */
#define MDRV_TIMER_ADD(_tag, _type, _callback) \
#define MDRV_TIMER_ADD_PERIODIC(_tag, _callback, _period) \
MDRV_DEVICE_ADD(_tag, TIMER) \
MDRV_DEVICE_CONFIG_DATA32(timer_config, type, TIMER_TYPE_##_type) \
MDRV_DEVICE_CONFIG_DATAPTR(timer_config, callback, _callback)
MDRV_DEVICE_CONFIG_DATA32(timer_config, type, TIMER_TYPE_PERIODIC) \
MDRV_DEVICE_CONFIG_DATAPTR(timer_config, callback, _callback) \
MDRV_DEVICE_CONFIG_DATA64(timer_config, period, UINT64_ATTOTIME_IN_##_period)
#define MDRV_TIMER_ADD_SCANLINE(_tag, _callback, _screen, _first_vpos, _increment) \
MDRV_DEVICE_ADD(_tag, TIMER) \
MDRV_DEVICE_CONFIG_DATA32(timer_config, type, TIMER_TYPE_SCANLINE) \
MDRV_DEVICE_CONFIG_DATAPTR(timer_config, callback, _callback) \
MDRV_DEVICE_CONFIG_DATAPTR(timer_config, screen, _screen) \
MDRV_DEVICE_CONFIG_DATA32(timer_config, first_vpos, _first_vpos) \
MDRV_DEVICE_CONFIG_DATA32(timer_config, increment, _increment)
#define MDRV_TIMER_REMOVE(_tag) \
MDRV_DEVICE_REMOVE(_tag, TIMER_SCREEN)
@ -448,17 +457,11 @@ union _machine_config_token
#define MDRV_TIMER_MODIFY(_tag) \
MDRV_DEVICE_MODIFY(_tag, TIMER_SCREEN)
#define MDRV_TIMER_TYPE(_type) \
MDRV_DEVICE_CONFIG_DATA32(timer_config, type, TIMER_TYPE_##_type)
#define MDRV_TIMER_CALLBACK(_callback) \
MDRV_DEVICE_CONFIG_DATAPTR(timer_config, callback, _callback)
#define MDRV_TIMER_DURATION(_duration) \
MDRV_DEVICE_CONFIG_DATA64(timer_config, duration, _duration)
#define MDRV_TIMER_PERIOD(_period) \
MDRV_DEVICE_CONFIG_DATA64(timer_config, period, _period)
MDRV_DEVICE_CONFIG_DATA64(timer_config, duration, UINT64_ATTOTIME_IN_##_duration)
#define MDRV_TIMER_PARAM(_param) \
MDRV_DEVICE_CONFIG_DATA32(timer_config, param, _param)
@ -466,11 +469,6 @@ union _machine_config_token
#define MDRV_TIMER_PTR(_ptr) \
MDRV_DEVICE_CONFIG_DATAPTR(timer_config, ptr, _ptr)
#define MDRV_TIMER_SCANLINE(_screen, _first_vpos, _increment) \
MDRV_DEVICE_CONFIG_DATAPTR(timer_config, screen, _screen) \
MDRV_DEVICE_CONFIG_DATA32(timer_config, first_vpos, _first_vpos) \
MDRV_DEVICE_CONFIG_DATA32(timer_config, increment, _increment)
/* core sound functions */
#define MDRV_SOUND_START(_func) \

View File

@ -1011,22 +1011,19 @@ static DEVICE_START( timer )
assert(config->increment == 0);
/* validate that we have at least a duration or period */
assert((config->duration > 0) || (config->period > 0));
assert(config->period > 0);
/* copy the optional integer parameter */
state->param = config->param;
/* convert the duration and period into attotime */
state->period = UINT64_ATTOTIME_TO_ATTOTIME(config->period);
if (config->duration > 0)
state->duration = UINT64_ATTOTIME_TO_ATTOTIME(config->duration);
else
state->duration = attotime_zero;
if (config->period > 0)
state->period = UINT64_ATTOTIME_TO_ATTOTIME(config->period);
else
state->period = attotime_never;
/* register for state saves */
state_save_register_item(unique_tag, 0, state->duration.seconds);
state_save_register_item(unique_tag, 0, state->duration.attoseconds);

View File

@ -1625,8 +1625,7 @@ static MACHINE_DRIVER_START( centiped )
MDRV_NVRAM_HANDLER(atari_vg)
/* timer */
MDRV_TIMER_ADD("32V", SCANLINE, generate_interrupt)
MDRV_TIMER_SCANLINE("main", 0, 16)
MDRV_TIMER_ADD_SCANLINE("32V", generate_interrupt, "main", 0, 16)
/* video hardware */
MDRV_SCREEN_ADD("main", RASTER)

View File

@ -2161,14 +2161,12 @@ static MACHINE_DRIVER_START( spcenctr )
MDRV_WATCHDOG_TIME_INIT(UINT64_ATTOTIME_IN_USEC(255000000 / (MW8080BW_PIXEL_CLOCK / MW8080BW_HTOTAL / MW8080BW_VTOTAL)))
/* timers */
MDRV_TIMER_ADD("STROBE_ON", PERIODIC, spcenctr_strobe_timer_callback)
MDRV_TIMER_ADD_PERIODIC("STROBE_ON", spcenctr_strobe_timer_callback, HZ(SPCENCTR_STROBE_FREQ))
MDRV_TIMER_PARAM(TRUE) /* indicates strobe ON */
MDRV_TIMER_PERIOD(UINT64_ATTOTIME_IN_HZ(SPCENCTR_STROBE_FREQ))
MDRV_TIMER_ADD("STROBE_OFF", PERIODIC, spcenctr_strobe_timer_callback)
MDRV_TIMER_ADD_PERIODIC("STROBE_OFF", spcenctr_strobe_timer_callback, HZ(SPCENCTR_STROBE_FREQ))
MDRV_TIMER_DURATION(HZ(SPCENCTR_STROBE_FREQ * 100 / SPCENCTR_STROBE_DUTY_CYCLE))
MDRV_TIMER_PARAM(FALSE) /* indicates strobe OFF */
MDRV_TIMER_DURATION(UINT64_ATTOTIME_IN_HZ(SPCENCTR_STROBE_FREQ * 100 / SPCENCTR_STROBE_DUTY_CYCLE))
MDRV_TIMER_PERIOD(UINT64_ATTOTIME_IN_HZ(SPCENCTR_STROBE_FREQ))
/* video hardware */
MDRV_VIDEO_UPDATE(spcenctr)