summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2017-04-11 18:12:25 +0200
committer Ivan Vangelista <mesgnet@yahoo.it>2017-04-11 18:12:25 +0200
commit82a03a03e68315c5e4fe42afe51ec8cae4503315 (patch)
treeeeec103289c78b43b715667fa0b6fec679c5ad67
parentf216083d8f0f168dd9fc2bdca9df3ae69f481069 (diff)
sprint4.cpp, ultratnk.cpp: killed anonymous timers, removed unneeded prefixes, added save state support (nw)
-rw-r--r--src/mame/drivers/sprint4.cpp97
-rw-r--r--src/mame/drivers/ultratnk.cpp85
-rw-r--r--src/mame/includes/sprint4.h61
-rw-r--r--src/mame/includes/ultratnk.h61
-rw-r--r--src/mame/video/sprint4.cpp55
-rw-r--r--src/mame/video/ultratnk.cpp50
6 files changed, 209 insertions, 200 deletions
diff --git a/src/mame/drivers/sprint4.cpp b/src/mame/drivers/sprint4.cpp
index 2b022933895..86eba1f4882 100644
--- a/src/mame/drivers/sprint4.cpp
+++ b/src/mame/drivers/sprint4.cpp
@@ -79,11 +79,9 @@ TIMER_CALLBACK_MEMBER(sprint4_state::nmi_callback)
static_cast<uint8_t>(ioport("LEVER4")->read())
};
- int i;
-
/* emulation of steering wheels isn't very accurate */
- for (i = 0; i < 4; i++)
+ for (int i = 0; i < 4; i++)
{
signed char delta = wheel[i] - m_last_wheel[i];
@@ -120,13 +118,26 @@ TIMER_CALLBACK_MEMBER(sprint4_state::nmi_callback)
if (ioport("IN0")->read() & 0x40)
m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
- timer_set(m_screen->time_until_pos(scanline), TIMER_NMI, scanline);
+ m_nmi_timer->adjust(m_screen->time_until_pos(scanline), scanline);
+}
+
+
+void sprint4_state::machine_start()
+{
+ m_nmi_timer = timer_alloc(TIMER_NMI);
+
+ save_item(NAME(m_da_latch));
+ save_item(NAME(m_steer_FF1));
+ save_item(NAME(m_steer_FF2));
+ save_item(NAME(m_gear));
+ save_item(NAME(m_last_wheel));
+ save_item(NAME(m_collision));
}
void sprint4_state::machine_reset()
{
- timer_set(m_screen->time_until_pos(32), TIMER_NMI, 32);
+ m_nmi_timer->adjust(m_screen->time_until_pos(32), 32);
memset(m_steer_FF1, 0, sizeof m_steer_FF1);
memset(m_steer_FF2, 0, sizeof m_steer_FF2);
@@ -140,96 +151,94 @@ void sprint4_state::machine_reset()
}
-READ8_MEMBER(sprint4_state::sprint4_wram_r)
+READ8_MEMBER(sprint4_state::wram_r)
{
- uint8_t *videoram = m_videoram;
- return videoram[0x380 + offset];
+ return m_videoram[0x380 + offset];
}
-READ8_MEMBER(sprint4_state::sprint4_analog_r)
+READ8_MEMBER(sprint4_state::analog_r)
{
return (ioport("ANALOG")->read() << (~offset & 7)) & 0x80;
}
-READ8_MEMBER(sprint4_state::sprint4_coin_r)
+READ8_MEMBER(sprint4_state::coin_r)
{
return (ioport("COIN")->read() << (~offset & 7)) & 0x80;
}
-READ8_MEMBER(sprint4_state::sprint4_collision_r)
+READ8_MEMBER(sprint4_state::collision_r)
{
return (ioport("COLLISION")->read() << (~offset & 7)) & 0x80;
}
-READ8_MEMBER(sprint4_state::sprint4_options_r)
+READ8_MEMBER(sprint4_state::options_r)
{
return (ioport("DIP")->read() >> (2 * (offset & 3))) & 3;
}
-WRITE8_MEMBER(sprint4_state::sprint4_wram_w)
+WRITE8_MEMBER(sprint4_state::wram_w)
{
- uint8_t *videoram = m_videoram;
- videoram[0x380 + offset] = data;
+ m_videoram[0x380 + offset] = data;
}
-WRITE8_MEMBER(sprint4_state::sprint4_collision_reset_w)
+WRITE8_MEMBER(sprint4_state::collision_reset_w)
{
m_collision[(offset >> 1) & 3] = 0;
}
-WRITE8_MEMBER(sprint4_state::sprint4_da_latch_w)
+WRITE8_MEMBER(sprint4_state::da_latch_w)
{
m_da_latch = data & 15;
}
-WRITE8_MEMBER(sprint4_state::sprint4_lamp_w)
+WRITE8_MEMBER(sprint4_state::lamp_w)
{
output().set_led_value((offset >> 1) & 3, offset & 1);
}
#ifdef UNUSED_FUNCTION
-WRITE8_MEMBER(sprint4_state::sprint4_lockout_w)
+WRITE8_MEMBER(sprint4_state::lockout_w)
{
machine().bookkeeping().coin_lockout_global_w(~offset & 1);
}
#endif
-WRITE8_MEMBER(sprint4_state::sprint4_screech_1_w)
+WRITE8_MEMBER(sprint4_state::screech_1_w)
{
m_discrete->write(space, SPRINT4_SCREECH_EN_1, offset & 1);
}
-WRITE8_MEMBER(sprint4_state::sprint4_screech_2_w)
+WRITE8_MEMBER(sprint4_state::screech_2_w)
{
m_discrete->write(space, SPRINT4_SCREECH_EN_2, offset & 1);
}
-WRITE8_MEMBER(sprint4_state::sprint4_screech_3_w)
+WRITE8_MEMBER(sprint4_state::screech_3_w)
{
m_discrete->write(space, SPRINT4_SCREECH_EN_3, offset & 1);
}
-WRITE8_MEMBER(sprint4_state::sprint4_screech_4_w)
+WRITE8_MEMBER(sprint4_state::screech_4_w)
{
m_discrete->write(space, SPRINT4_SCREECH_EN_4, offset & 1);
}
-WRITE8_MEMBER(sprint4_state::sprint4_bang_w)
+WRITE8_MEMBER(sprint4_state::bang_w)
{
m_discrete->write(space, SPRINT4_BANG_DATA, data & 0x0f);
}
-WRITE8_MEMBER(sprint4_state::sprint4_attract_w)
+WRITE8_MEMBER(sprint4_state::attract_w)
{
m_discrete->write(space, SPRINT4_ATTRACT_EN, data & 1);
}
@@ -239,27 +248,27 @@ static ADDRESS_MAP_START( sprint4_cpu_map, AS_PROGRAM, 8, sprint4_state )
ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x700) AM_READWRITE(sprint4_wram_r, sprint4_wram_w)
- AM_RANGE(0x0800, 0x0bff) AM_MIRROR(0x400) AM_RAM_WRITE(sprint4_video_ram_w) AM_SHARE("videoram")
+ AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x700) AM_READWRITE(wram_r, wram_w)
+ AM_RANGE(0x0800, 0x0bff) AM_MIRROR(0x400) AM_RAM_WRITE(video_ram_w) AM_SHARE("videoram")
- AM_RANGE(0x0000, 0x0007) AM_MIRROR(0x718) AM_READ(sprint4_analog_r)
- AM_RANGE(0x0020, 0x0027) AM_MIRROR(0x718) AM_READ(sprint4_coin_r)
- AM_RANGE(0x0040, 0x0047) AM_MIRROR(0x718) AM_READ(sprint4_collision_r)
- AM_RANGE(0x0060, 0x0063) AM_MIRROR(0x71c) AM_READ(sprint4_options_r)
+ AM_RANGE(0x0000, 0x0007) AM_MIRROR(0x718) AM_READ(analog_r)
+ AM_RANGE(0x0020, 0x0027) AM_MIRROR(0x718) AM_READ(coin_r)
+ AM_RANGE(0x0040, 0x0047) AM_MIRROR(0x718) AM_READ(collision_r)
+ AM_RANGE(0x0060, 0x0063) AM_MIRROR(0x71c) AM_READ(options_r)
AM_RANGE(0x1000, 0x17ff) AM_READ_PORT("IN0")
AM_RANGE(0x1800, 0x1fff) AM_READ_PORT("IN1")
- AM_RANGE(0x0000, 0x0000) AM_MIRROR(0x71f) AM_WRITE(sprint4_attract_w)
- AM_RANGE(0x0020, 0x0027) AM_MIRROR(0x718) AM_WRITE(sprint4_collision_reset_w)
- AM_RANGE(0x0040, 0x0041) AM_MIRROR(0x718) AM_WRITE(sprint4_da_latch_w)
- AM_RANGE(0x0042, 0x0043) AM_MIRROR(0x718) AM_WRITE(sprint4_bang_w)
+ AM_RANGE(0x0000, 0x0000) AM_MIRROR(0x71f) AM_WRITE(attract_w)
+ AM_RANGE(0x0020, 0x0027) AM_MIRROR(0x718) AM_WRITE(collision_reset_w)
+ AM_RANGE(0x0040, 0x0041) AM_MIRROR(0x718) AM_WRITE(da_latch_w)
+ AM_RANGE(0x0042, 0x0043) AM_MIRROR(0x718) AM_WRITE(bang_w)
AM_RANGE(0x0044, 0x0045) AM_MIRROR(0x718) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x0060, 0x0067) AM_MIRROR(0x710) AM_WRITE(sprint4_lamp_w)
- AM_RANGE(0x0068, 0x0069) AM_MIRROR(0x710) AM_WRITE(sprint4_screech_1_w)
- AM_RANGE(0x006a, 0x006b) AM_MIRROR(0x710) AM_WRITE(sprint4_screech_2_w)
- AM_RANGE(0x006c, 0x006d) AM_MIRROR(0x710) AM_WRITE(sprint4_screech_3_w)
- AM_RANGE(0x006e, 0x006f) AM_MIRROR(0x710) AM_WRITE(sprint4_screech_4_w)
+ AM_RANGE(0x0060, 0x0067) AM_MIRROR(0x710) AM_WRITE(lamp_w)
+ AM_RANGE(0x0068, 0x0069) AM_MIRROR(0x710) AM_WRITE(screech_1_w)
+ AM_RANGE(0x006a, 0x006b) AM_MIRROR(0x710) AM_WRITE(screech_2_w)
+ AM_RANGE(0x006c, 0x006d) AM_MIRROR(0x710) AM_WRITE(screech_3_w)
+ AM_RANGE(0x006e, 0x006f) AM_MIRROR(0x710) AM_WRITE(screech_4_w)
AM_RANGE(0x2000, 0x27ff) AM_NOP /* diagnostic ROM */
AM_RANGE(0x2800, 0x3fff) AM_ROM
@@ -412,8 +421,8 @@ static MACHINE_CONFIG_START( sprint4, sprint4_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, 0, 256, VTOTAL, 0, 224)
- MCFG_SCREEN_UPDATE_DRIVER(sprint4_state, screen_update_sprint4)
- MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(sprint4_state, screen_vblank_sprint4))
+ MCFG_SCREEN_UPDATE_DRIVER(sprint4_state, screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(sprint4_state, screen_vblank))
MCFG_SCREEN_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", sprint4)
@@ -472,5 +481,5 @@ ROM_START( sprint4a )
ROM_END
-GAME( 1977, sprint4, 0, sprint4, sprint4, driver_device, 0, ROT180, "Atari", "Sprint 4 (set 1)", 0 ) /* large cars */
-GAME( 1977, sprint4a, sprint4, sprint4, sprint4, driver_device, 0, ROT180, "Atari", "Sprint 4 (set 2)", 0 ) /* small cars */
+GAME( 1977, sprint4, 0, sprint4, sprint4, driver_device, 0, ROT180, "Atari", "Sprint 4 (set 1)", MACHINE_SUPPORTS_SAVE ) /* large cars */
+GAME( 1977, sprint4a, sprint4, sprint4, sprint4, driver_device, 0, ROT180, "Atari", "Sprint 4 (set 2)", MACHINE_SUPPORTS_SAVE ) /* small cars */
diff --git a/src/mame/drivers/ultratnk.cpp b/src/mame/drivers/ultratnk.cpp
index 9d4ed0a3ade..62cc6275b88 100644
--- a/src/mame/drivers/ultratnk.cpp
+++ b/src/mame/drivers/ultratnk.cpp
@@ -71,91 +71,98 @@ TIMER_CALLBACK_MEMBER(ultratnk_state::nmi_callback)
if (ioport("IN0")->read() & 0x40)
m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
- timer_set(m_screen->time_until_pos(scanline), TIMER_NMI, scanline);
+ m_nmi_timer->adjust(m_screen->time_until_pos(scanline), scanline);
+}
+
+
+void ultratnk_state::machine_start()
+{
+ m_nmi_timer = timer_alloc(TIMER_NMI);
+
+ save_item(NAME(m_da_latch));
+ save_item(NAME(m_collision));
}
void ultratnk_state::machine_reset()
{
- timer_set(m_screen->time_until_pos(32), TIMER_NMI, 32);
+ m_nmi_timer->adjust(m_screen->time_until_pos(32), 32);
}
-READ8_MEMBER(ultratnk_state::ultratnk_wram_r)
+READ8_MEMBER(ultratnk_state::wram_r)
{
- uint8_t *videoram = m_videoram;
- return videoram[0x380 + offset];
+ return m_videoram[0x380 + offset];
}
-READ8_MEMBER(ultratnk_state::ultratnk_analog_r)
+READ8_MEMBER(ultratnk_state::analog_r)
{
return (ioport("ANALOG")->read() << (~offset & 7)) & 0x80;
}
-READ8_MEMBER(ultratnk_state::ultratnk_coin_r)
+READ8_MEMBER(ultratnk_state::coin_r)
{
return (ioport("COIN")->read() << (~offset & 7)) & 0x80;
}
-READ8_MEMBER(ultratnk_state::ultratnk_collision_r)
+READ8_MEMBER(ultratnk_state::collision_r)
{
return (ioport("COLLISION")->read() << (~offset & 7)) & 0x80;
}
-READ8_MEMBER(ultratnk_state::ultratnk_options_r)
+READ8_MEMBER(ultratnk_state::options_r)
{
return (ioport("DIP")->read() >> (2 * (offset & 3))) & 3;
}
-WRITE8_MEMBER(ultratnk_state::ultratnk_wram_w)
+WRITE8_MEMBER(ultratnk_state::wram_w)
{
- uint8_t *videoram = m_videoram;
- videoram[0x380 + offset] = data;
+ m_videoram[0x380 + offset] = data;
}
-WRITE8_MEMBER(ultratnk_state::ultratnk_collision_reset_w)
+WRITE8_MEMBER(ultratnk_state::collision_reset_w)
{
m_collision[(offset >> 1) & 3] = 0;
}
-WRITE8_MEMBER(ultratnk_state::ultratnk_da_latch_w)
+WRITE8_MEMBER(ultratnk_state::da_latch_w)
{
m_da_latch = data & 15;
}
-WRITE8_MEMBER(ultratnk_state::ultratnk_led_1_w)
+WRITE8_MEMBER(ultratnk_state::led_1_w)
{
output().set_led_value(0, offset & 1); /* left player start */
}
-WRITE8_MEMBER(ultratnk_state::ultratnk_led_2_w)
+WRITE8_MEMBER(ultratnk_state::led_2_w)
{
output().set_led_value(1, offset & 1); /* right player start */
}
-WRITE8_MEMBER(ultratnk_state::ultratnk_lockout_w)
+WRITE8_MEMBER(ultratnk_state::lockout_w)
{
machine().bookkeeping().coin_lockout_global_w(~offset & 1);
}
-WRITE8_MEMBER(ultratnk_state::ultratnk_fire_1_w)
+WRITE8_MEMBER(ultratnk_state::fire_1_w)
{
m_discrete->write(space, ULTRATNK_FIRE_EN_1, offset & 1);
}
-WRITE8_MEMBER(ultratnk_state::ultratnk_fire_2_w)
+WRITE8_MEMBER(ultratnk_state::fire_2_w)
{
m_discrete->write(space, ULTRATNK_FIRE_EN_2, offset & 1);
}
-WRITE8_MEMBER(ultratnk_state::ultratnk_attract_w)
+WRITE8_MEMBER(ultratnk_state::attract_w)
{
m_discrete->write(space, ULTRATNK_ATTRACT_EN, data & 1);
}
-WRITE8_MEMBER(ultratnk_state::ultratnk_explosion_w)
+WRITE8_MEMBER(ultratnk_state::explosion_w)
{
m_discrete->write(space, ULTRATNK_EXPLOSION_DATA, data & 15);
}
@@ -166,27 +173,27 @@ static ADDRESS_MAP_START( ultratnk_cpu_map, AS_PROGRAM, 8, ultratnk_state )
ADDRESS_MAP_GLOBAL_MASK(0x3fff)
AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x700) AM_RAM
- AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x700) AM_READWRITE(ultratnk_wram_r, ultratnk_wram_w)
- AM_RANGE(0x0800, 0x0bff) AM_MIRROR(0x400) AM_RAM_WRITE(ultratnk_video_ram_w) AM_SHARE("videoram")
+ AM_RANGE(0x0080, 0x00ff) AM_MIRROR(0x700) AM_READWRITE(wram_r, wram_w)
+ AM_RANGE(0x0800, 0x0bff) AM_MIRROR(0x400) AM_RAM_WRITE(video_ram_w) AM_SHARE("videoram")
AM_RANGE(0x1000, 0x17ff) AM_READ_PORT("IN0")
AM_RANGE(0x1800, 0x1fff) AM_READ_PORT("IN1")
- AM_RANGE(0x2000, 0x2007) AM_MIRROR(0x718) AM_READ(ultratnk_analog_r)
- AM_RANGE(0x2020, 0x2027) AM_MIRROR(0x718) AM_READ(ultratnk_coin_r)
- AM_RANGE(0x2040, 0x2047) AM_MIRROR(0x718) AM_READ(ultratnk_collision_r)
- AM_RANGE(0x2060, 0x2063) AM_MIRROR(0x71c) AM_READ(ultratnk_options_r)
+ AM_RANGE(0x2000, 0x2007) AM_MIRROR(0x718) AM_READ(analog_r)
+ AM_RANGE(0x2020, 0x2027) AM_MIRROR(0x718) AM_READ(coin_r)
+ AM_RANGE(0x2040, 0x2047) AM_MIRROR(0x718) AM_READ(collision_r)
+ AM_RANGE(0x2060, 0x2063) AM_MIRROR(0x71c) AM_READ(options_r)
- AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x71f) AM_WRITE(ultratnk_attract_w)
- AM_RANGE(0x2020, 0x2027) AM_MIRROR(0x718) AM_WRITE(ultratnk_collision_reset_w)
- AM_RANGE(0x2040, 0x2041) AM_MIRROR(0x718) AM_WRITE(ultratnk_da_latch_w)
- AM_RANGE(0x2042, 0x2043) AM_MIRROR(0x718) AM_WRITE(ultratnk_explosion_w)
+ AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x71f) AM_WRITE(attract_w)
+ AM_RANGE(0x2020, 0x2027) AM_MIRROR(0x718) AM_WRITE(collision_reset_w)
+ AM_RANGE(0x2040, 0x2041) AM_MIRROR(0x718) AM_WRITE(da_latch_w)
+ AM_RANGE(0x2042, 0x2043) AM_MIRROR(0x718) AM_WRITE(explosion_w)
AM_RANGE(0x2044, 0x2045) AM_MIRROR(0x718) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x2066, 0x2067) AM_MIRROR(0x710) AM_WRITE(ultratnk_lockout_w)
- AM_RANGE(0x2068, 0x2069) AM_MIRROR(0x710) AM_WRITE(ultratnk_led_1_w)
- AM_RANGE(0x206a, 0x206b) AM_MIRROR(0x710) AM_WRITE(ultratnk_led_2_w)
- AM_RANGE(0x206c, 0x206d) AM_MIRROR(0x710) AM_WRITE(ultratnk_fire_2_w)
- AM_RANGE(0x206e, 0x206f) AM_MIRROR(0x710) AM_WRITE(ultratnk_fire_1_w)
+ AM_RANGE(0x2066, 0x2067) AM_MIRROR(0x710) AM_WRITE(lockout_w)
+ AM_RANGE(0x2068, 0x2069) AM_MIRROR(0x710) AM_WRITE(led_1_w)
+ AM_RANGE(0x206a, 0x206b) AM_MIRROR(0x710) AM_WRITE(led_2_w)
+ AM_RANGE(0x206c, 0x206d) AM_MIRROR(0x710) AM_WRITE(fire_2_w)
+ AM_RANGE(0x206e, 0x206f) AM_MIRROR(0x710) AM_WRITE(fire_1_w)
AM_RANGE(0x2800, 0x2fff) AM_NOP /* diagnostic ROM */
AM_RANGE(0x3000, 0x3fff) AM_ROM
@@ -314,8 +321,8 @@ static MACHINE_CONFIG_START( ultratnk, ultratnk_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, 0, 256, VTOTAL, 0, 224)
- MCFG_SCREEN_UPDATE_DRIVER(ultratnk_state, screen_update_ultratnk)
- MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(ultratnk_state, screen_vblank_ultratnk))
+ MCFG_SCREEN_UPDATE_DRIVER(ultratnk_state, screen_update)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(ultratnk_state, screen_vblank))
MCFG_SCREEN_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", ultratnk)
@@ -358,4 +365,4 @@ ROM_START( ultratnk )
ROM_END
-GAME( 1978, ultratnk, 0, ultratnk, ultratnk, driver_device, 0, 0, "Atari (Kee Games)", "Ultra Tank", 0 )
+GAME( 1978, ultratnk, 0, ultratnk, ultratnk, driver_device, 0, 0, "Atari (Kee Games)", "Ultra Tank", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/includes/sprint4.h b/src/mame/includes/sprint4.h
index 80ae9cd90ed..3144a335489 100644
--- a/src/mame/includes/sprint4.h
+++ b/src/mame/includes/sprint4.h
@@ -15,15 +15,23 @@ public:
sprint4_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
- m_videoram(*this, "videoram"),
m_maincpu(*this, "maincpu"),
m_watchdog(*this, "watchdog"),
m_discrete(*this, "discrete"),
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
- m_palette(*this, "palette") { }
+ m_palette(*this, "palette"),
+ m_videoram(*this, "videoram") { }
+
+ required_device<cpu_device> m_maincpu;
+ required_device<watchdog_timer_device> m_watchdog;
+ required_device<discrete_device> m_discrete;
+ required_device<gfxdecode_device> m_gfxdecode;
+ required_device<screen_device> m_screen;
+ required_device<palette_device> m_palette;
required_shared_ptr<uint8_t> m_videoram;
+
int m_da_latch;
int m_steer_FF1[4];
int m_steer_FF2[4];
@@ -32,38 +40,37 @@ public:
int m_collision[4];
tilemap_t* m_playfield;
bitmap_ind16 m_helper;
- DECLARE_READ8_MEMBER(sprint4_wram_r);
- DECLARE_READ8_MEMBER(sprint4_analog_r);
- DECLARE_READ8_MEMBER(sprint4_coin_r);
- DECLARE_READ8_MEMBER(sprint4_collision_r);
- DECLARE_READ8_MEMBER(sprint4_options_r);
- DECLARE_WRITE8_MEMBER(sprint4_wram_w);
- DECLARE_WRITE8_MEMBER(sprint4_collision_reset_w);
- DECLARE_WRITE8_MEMBER(sprint4_da_latch_w);
- DECLARE_WRITE8_MEMBER(sprint4_lamp_w);
- DECLARE_WRITE8_MEMBER(sprint4_video_ram_w);
+ emu_timer *m_nmi_timer;
+
+ DECLARE_READ8_MEMBER(wram_r);
+ DECLARE_READ8_MEMBER(analog_r);
+ DECLARE_READ8_MEMBER(coin_r);
+ DECLARE_READ8_MEMBER(collision_r);
+ DECLARE_READ8_MEMBER(options_r);
+ DECLARE_WRITE8_MEMBER(wram_w);
+ DECLARE_WRITE8_MEMBER(collision_reset_w);
+ DECLARE_WRITE8_MEMBER(da_latch_w);
+ DECLARE_WRITE8_MEMBER(lamp_w);
+ DECLARE_WRITE8_MEMBER(video_ram_w);
DECLARE_CUSTOM_INPUT_MEMBER(get_lever);
DECLARE_CUSTOM_INPUT_MEMBER(get_wheel);
DECLARE_CUSTOM_INPUT_MEMBER(get_collision);
- DECLARE_WRITE8_MEMBER(sprint4_screech_1_w);
- DECLARE_WRITE8_MEMBER(sprint4_screech_2_w);
- DECLARE_WRITE8_MEMBER(sprint4_screech_3_w);
- DECLARE_WRITE8_MEMBER(sprint4_screech_4_w);
- DECLARE_WRITE8_MEMBER(sprint4_bang_w);
- DECLARE_WRITE8_MEMBER(sprint4_attract_w);
- TILE_GET_INFO_MEMBER(sprint4_tile_info);
+ DECLARE_WRITE8_MEMBER(screech_1_w);
+ DECLARE_WRITE8_MEMBER(screech_2_w);
+ DECLARE_WRITE8_MEMBER(screech_3_w);
+ DECLARE_WRITE8_MEMBER(screech_4_w);
+ DECLARE_WRITE8_MEMBER(bang_w);
+ DECLARE_WRITE8_MEMBER(attract_w);
+
+ virtual void machine_start() override;
virtual void machine_reset() override;
virtual void video_start() override;
DECLARE_PALETTE_INIT(sprint4);
- uint32_t screen_update_sprint4(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- DECLARE_WRITE_LINE_MEMBER(screen_vblank_sprint4);
+
+ TILE_GET_INFO_MEMBER(tile_info);
+ uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ DECLARE_WRITE_LINE_MEMBER(screen_vblank);
TIMER_CALLBACK_MEMBER(nmi_callback);
- required_device<cpu_device> m_maincpu;
- required_device<watchdog_timer_device> m_watchdog;
- required_device<discrete_device> m_discrete;
- required_device<gfxdecode_device> m_gfxdecode;
- required_device<screen_device> m_screen;
- required_device<palette_device> m_palette;
protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
diff --git a/src/mame/includes/ultratnk.h b/src/mame/includes/ultratnk.h
index 6cba95252fc..a2c5ce72c2e 100644
--- a/src/mame/includes/ultratnk.h
+++ b/src/mame/includes/ultratnk.h
@@ -20,50 +20,57 @@ public:
ultratnk_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
- m_videoram(*this, "videoram"),
m_maincpu(*this, "maincpu"),
m_watchdog(*this, "watchdog"),
m_discrete(*this, "discrete"),
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
- m_palette(*this, "palette") { }
+ m_palette(*this, "palette"),
+ m_videoram(*this, "videoram") { }
+
+ required_device<cpu_device> m_maincpu;
+ required_device<watchdog_timer_device> m_watchdog;
+ required_device<discrete_device> m_discrete;
+ required_device<gfxdecode_device> m_gfxdecode;
+ required_device<screen_device> m_screen;
+ required_device<palette_device> m_palette;
required_shared_ptr<uint8_t> m_videoram;
+
int m_da_latch;
int m_collision[4];
tilemap_t* m_playfield;
bitmap_ind16 m_helper;
- DECLARE_READ8_MEMBER(ultratnk_wram_r);
- DECLARE_READ8_MEMBER(ultratnk_analog_r);
- DECLARE_READ8_MEMBER(ultratnk_coin_r);
- DECLARE_READ8_MEMBER(ultratnk_collision_r);
- DECLARE_READ8_MEMBER(ultratnk_options_r);
- DECLARE_WRITE8_MEMBER(ultratnk_wram_w);
- DECLARE_WRITE8_MEMBER(ultratnk_collision_reset_w);
- DECLARE_WRITE8_MEMBER(ultratnk_da_latch_w);
- DECLARE_WRITE8_MEMBER(ultratnk_led_1_w);
- DECLARE_WRITE8_MEMBER(ultratnk_led_2_w);
- DECLARE_WRITE8_MEMBER(ultratnk_lockout_w);
- DECLARE_WRITE8_MEMBER(ultratnk_video_ram_w);
+ emu_timer *m_nmi_timer;
+
+ DECLARE_READ8_MEMBER(wram_r);
+ DECLARE_READ8_MEMBER(analog_r);
+ DECLARE_READ8_MEMBER(coin_r);
+ DECLARE_READ8_MEMBER(collision_r);
+ DECLARE_READ8_MEMBER(options_r);
+ DECLARE_WRITE8_MEMBER(wram_w);
+ DECLARE_WRITE8_MEMBER(collision_reset_w);
+ DECLARE_WRITE8_MEMBER(da_latch_w);
+ DECLARE_WRITE8_MEMBER(led_1_w);
+ DECLARE_WRITE8_MEMBER(led_2_w);
+ DECLARE_WRITE8_MEMBER(lockout_w);
+ DECLARE_WRITE8_MEMBER(video_ram_w);
DECLARE_CUSTOM_INPUT_MEMBER(get_collision);
DECLARE_CUSTOM_INPUT_MEMBER(get_joystick);
- DECLARE_WRITE8_MEMBER(ultratnk_fire_1_w);
- DECLARE_WRITE8_MEMBER(ultratnk_fire_2_w);
- DECLARE_WRITE8_MEMBER(ultratnk_attract_w);
- DECLARE_WRITE8_MEMBER(ultratnk_explosion_w);
- TILE_GET_INFO_MEMBER(ultratnk_tile_info);
+ DECLARE_WRITE8_MEMBER(fire_1_w);
+ DECLARE_WRITE8_MEMBER(fire_2_w);
+ DECLARE_WRITE8_MEMBER(attract_w);
+ DECLARE_WRITE8_MEMBER(explosion_w);
+
+ virtual void machine_start() override;
virtual void machine_reset() override;
virtual void video_start() override;
DECLARE_PALETTE_INIT(ultratnk);
- uint32_t screen_update_ultratnk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- DECLARE_WRITE_LINE_MEMBER(screen_vblank_ultratnk);
+
+ TILE_GET_INFO_MEMBER(tile_info);
+ uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ DECLARE_WRITE_LINE_MEMBER(screen_vblank);
TIMER_CALLBACK_MEMBER(nmi_callback);
- required_device<cpu_device> m_maincpu;
- required_device<watchdog_timer_device> m_watchdog;
- required_device<discrete_device> m_discrete;
- required_device<gfxdecode_device> m_gfxdecode;
- required_device<screen_device> m_screen;
- required_device<palette_device> m_palette;
protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
diff --git a/src/mame/video/sprint4.cpp b/src/mame/video/sprint4.cpp
index c7026e0fc28..9df60a4710f 100644
--- a/src/mame/video/sprint4.cpp
+++ b/src/mame/video/sprint4.cpp
@@ -35,10 +35,9 @@ PALETTE_INIT_MEMBER(sprint4_state, sprint4)
}
-TILE_GET_INFO_MEMBER(sprint4_state::sprint4_tile_info)
+TILE_GET_INFO_MEMBER(sprint4_state::tile_info)
{
- uint8_t *videoram = m_videoram;
- uint8_t code = videoram[tile_index];
+ uint8_t code = m_videoram[tile_index];
if ((code & 0x30) == 0x30)
SET_TILE_INFO_MEMBER(0, code & ~0x40, (code >> 6) ^ 3, 0);
@@ -51,25 +50,22 @@ void sprint4_state::video_start()
{
m_screen->register_screen_bitmap(m_helper);
- m_playfield = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sprint4_state::sprint4_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
+ m_playfield = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sprint4_state::tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
}
-uint32_t sprint4_state::screen_update_sprint4(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+uint32_t sprint4_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- uint8_t *videoram = m_videoram;
- int i;
-
m_playfield->draw(screen, bitmap, cliprect, 0, 0);
- for (i = 0; i < 4; i++)
+ for (int i = 0; i < 4; i++)
{
int bank = 0;
- uint8_t horz = videoram[0x390 + 2 * i + 0];
- uint8_t attr = videoram[0x390 + 2 * i + 1];
- uint8_t vert = videoram[0x398 + 2 * i + 0];
- uint8_t code = videoram[0x398 + 2 * i + 1];
+ uint8_t horz = m_videoram[0x390 + 2 * i + 0];
+ uint8_t attr = m_videoram[0x390 + 2 * i + 1];
+ uint8_t vert = m_videoram[0x398 + 2 * i + 0];
+ uint8_t code = m_videoram[0x398 + 2 * i + 1];
if (i & 1)
bank = 32;
@@ -85,28 +81,22 @@ uint32_t sprint4_state::screen_update_sprint4(screen_device &screen, bitmap_ind1
}
-WRITE_LINE_MEMBER(sprint4_state::screen_vblank_sprint4)
+WRITE_LINE_MEMBER(sprint4_state::screen_vblank)
{
// rising edge
if (state)
{
- uint8_t *videoram = m_videoram;
- int i;
-
/* check for sprite-playfield collisions */
- for (i = 0; i < 4; i++)
+ for (int i = 0; i < 4; i++)
{
rectangle rect;
- int x;
- int y;
-
int bank = 0;
- uint8_t horz = videoram[0x390 + 2 * i + 0];
- uint8_t vert = videoram[0x398 + 2 * i + 0];
- uint8_t code = videoram[0x398 + 2 * i + 1];
+ uint8_t horz = m_videoram[0x390 + 2 * i + 0];
+ uint8_t vert = m_videoram[0x398 + 2 * i + 0];
+ uint8_t code = m_videoram[0x398 + 2 * i + 1];
rect.min_x = horz - 15;
rect.min_y = vert - 15;
@@ -127,8 +117,8 @@ WRITE_LINE_MEMBER(sprint4_state::screen_vblank_sprint4)
horz - 15,
vert - 15, 1);
- for (y = rect.min_y; y <= rect.max_y; y++)
- for (x = rect.min_x; x <= rect.max_x; x++)
+ for (int y = rect.min_y; y <= rect.max_y; y++)
+ for (int x = rect.min_x; x <= rect.max_x; x++)
if (m_palette->pen_indirect(m_helper.pix16(y, x)) != 0)
m_collision[i] = 1;
}
@@ -136,17 +126,16 @@ WRITE_LINE_MEMBER(sprint4_state::screen_vblank_sprint4)
/* update sound status */
address_space &space = machine().dummy_space();
- m_discrete->write(space, SPRINT4_MOTOR_DATA_1, videoram[0x391] & 15);
- m_discrete->write(space, SPRINT4_MOTOR_DATA_2, videoram[0x393] & 15);
- m_discrete->write(space, SPRINT4_MOTOR_DATA_3, videoram[0x395] & 15);
- m_discrete->write(space, SPRINT4_MOTOR_DATA_4, videoram[0x397] & 15);
+ m_discrete->write(space, SPRINT4_MOTOR_DATA_1, m_videoram[0x391] & 15);
+ m_discrete->write(space, SPRINT4_MOTOR_DATA_2, m_videoram[0x393] & 15);
+ m_discrete->write(space, SPRINT4_MOTOR_DATA_3, m_videoram[0x395] & 15);
+ m_discrete->write(space, SPRINT4_MOTOR_DATA_4, m_videoram[0x397] & 15);
}
}
-WRITE8_MEMBER(sprint4_state::sprint4_video_ram_w)
+WRITE8_MEMBER(sprint4_state::video_ram_w)
{
- uint8_t *videoram = m_videoram;
- videoram[offset] = data;
+ m_videoram[offset] = data;
m_playfield->mark_tile_dirty(offset);
}
diff --git a/src/mame/video/ultratnk.cpp b/src/mame/video/ultratnk.cpp
index f66b0d00304..797089cd82f 100644
--- a/src/mame/video/ultratnk.cpp
+++ b/src/mame/video/ultratnk.cpp
@@ -34,10 +34,9 @@ PALETTE_INIT_MEMBER(ultratnk_state, ultratnk)
}
-TILE_GET_INFO_MEMBER(ultratnk_state::ultratnk_tile_info)
+TILE_GET_INFO_MEMBER(ultratnk_state::tile_info)
{
- uint8_t *videoram = m_videoram;
- uint8_t code = videoram[tile_index];
+ uint8_t code = m_videoram[tile_index];
if (code & 0x20)
SET_TILE_INFO_MEMBER(0, code, code >> 6, 0);
@@ -50,25 +49,22 @@ void ultratnk_state::video_start()
{
m_screen->register_screen_bitmap(m_helper);
- m_playfield = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ultratnk_state::ultratnk_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
+ m_playfield = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ultratnk_state::tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
}
-uint32_t ultratnk_state::screen_update_ultratnk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+uint32_t ultratnk_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- uint8_t *videoram = m_videoram;
- int i;
-
m_playfield->draw(screen, bitmap, cliprect, 0, 0);
- for (i = 0; i < 4; i++)
+ for (int i = 0; i < 4; i++)
{
int bank = 0;
- uint8_t horz = videoram[0x390 + 2 * i + 0];
- uint8_t attr = videoram[0x390 + 2 * i + 1];
- uint8_t vert = videoram[0x398 + 2 * i + 0];
- uint8_t code = videoram[0x398 + 2 * i + 1];
+ uint8_t horz = m_videoram[0x390 + 2 * i + 0];
+ uint8_t attr = m_videoram[0x390 + 2 * i + 1];
+ uint8_t vert = m_videoram[0x398 + 2 * i + 0];
+ uint8_t code = m_videoram[0x398 + 2 * i + 1];
if (code & 4)
bank = 32;
@@ -88,29 +84,24 @@ uint32_t ultratnk_state::screen_update_ultratnk(screen_device &screen, bitmap_in
}
-WRITE_LINE_MEMBER(ultratnk_state::screen_vblank_ultratnk)
+WRITE_LINE_MEMBER(ultratnk_state::screen_vblank)
{
// rising edge
if (state)
{
- int i;
uint16_t BG = m_palette->pen_indirect(0);
- uint8_t *videoram = m_videoram;
/* check for sprite-playfield collisions */
- for (i = 0; i < 4; i++)
+ for (int i = 0; i < 4; i++)
{
rectangle rect;
- int x;
- int y;
-
int bank = 0;
- uint8_t horz = videoram[0x390 + 2 * i + 0];
- uint8_t vert = videoram[0x398 + 2 * i + 0];
- uint8_t code = videoram[0x398 + 2 * i + 1];
+ uint8_t horz = m_videoram[0x390 + 2 * i + 0];
+ uint8_t vert = m_videoram[0x398 + 2 * i + 0];
+ uint8_t code = m_videoram[0x398 + 2 * i + 1];
rect.min_x = horz - 15;
rect.min_y = vert - 15;
@@ -131,8 +122,8 @@ WRITE_LINE_MEMBER(ultratnk_state::screen_vblank_ultratnk)
horz - 15,
vert - 15, 1);
- for (y = rect.min_y; y <= rect.max_y; y++)
- for (x = rect.min_x; x <= rect.max_x; x++)
+ for (int y = rect.min_y; y <= rect.max_y; y++)
+ for (int x = rect.min_x; x <= rect.max_x; x++)
if (m_palette->pen_indirect(m_helper.pix16(y, x)) != BG)
m_collision[i] = 1;
}
@@ -140,15 +131,14 @@ WRITE_LINE_MEMBER(ultratnk_state::screen_vblank_ultratnk)
/* update sound status */
address_space &space = machine().dummy_space();
- m_discrete->write(space, ULTRATNK_MOTOR_DATA_1, videoram[0x391] & 15);
- m_discrete->write(space, ULTRATNK_MOTOR_DATA_2, videoram[0x393] & 15);
+ m_discrete->write(space, ULTRATNK_MOTOR_DATA_1, m_videoram[0x391] & 15);
+ m_discrete->write(space, ULTRATNK_MOTOR_DATA_2, m_videoram[0x393] & 15);
}
}
-WRITE8_MEMBER(ultratnk_state::ultratnk_video_ram_w)
+WRITE8_MEMBER(ultratnk_state::video_ram_w)
{
- uint8_t *videoram = m_videoram;
- videoram[offset] = data;
+ m_videoram[offset] = data;
m_playfield->mark_tile_dirty(offset);
}