From d4893e2535a8963e01dda720a503c4ba737c9023 Mon Sep 17 00:00:00 2001 From: Zsolt Vasvari Date: Fri, 14 Mar 2008 15:13:46 +0000 Subject: [PATCH] Makes suggested changes to MDRV_TIMER macros. Hasn't moved them yet. --- src/emu/mconfig.h | 28 +++++++++++++--------------- src/emu/timer.c | 9 +++------ src/mame/drivers/centiped.c | 3 +-- src/mame/drivers/mw8080bw.c | 8 +++----- 4 files changed, 20 insertions(+), 28 deletions(-) diff --git a/src/emu/mconfig.h b/src/emu/mconfig.h index 90a8c4c7e96..1de2a641f16 100644 --- a/src/emu/mconfig.h +++ b/src/emu/mconfig.h @@ -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) \ diff --git a/src/emu/timer.c b/src/emu/timer.c index 179375cc3b1..fadab1b644d 100644 --- a/src/emu/timer.c +++ b/src/emu/timer.c @@ -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); diff --git a/src/mame/drivers/centiped.c b/src/mame/drivers/centiped.c index 70e35e3efd4..20fc72438e9 100644 --- a/src/mame/drivers/centiped.c +++ b/src/mame/drivers/centiped.c @@ -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) diff --git a/src/mame/drivers/mw8080bw.c b/src/mame/drivers/mw8080bw.c index 97c0b4e7ebe..a6d46a693af 100644 --- a/src/mame/drivers/mw8080bw.c +++ b/src/mame/drivers/mw8080bw.c @@ -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)