summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--src/mame/drivers/dragrace.c27
-rw-r--r--src/mame/includes/dragrace.h7
-rw-r--r--src/mame/video/dragrace.c31
3 files changed, 32 insertions, 33 deletions
diff --git a/src/mame/drivers/dragrace.c b/src/mame/drivers/dragrace.c
index 325e27ba09c..7b3272ffe8c 100644
--- a/src/mame/drivers/dragrace.c
+++ b/src/mame/drivers/dragrace.c
@@ -1,6 +1,6 @@
/***************************************************************************
-Atari Drag Race Driver
+ Atari Drag Race Driver
***************************************************************************/
@@ -14,18 +14,17 @@ Atari Drag Race Driver
TIMER_DEVICE_CALLBACK_MEMBER(dragrace_state::dragrace_frame_callback)
{
- int i;
static const char *const portnames[] = { "P1", "P2" };
- for (i = 0; i < 2; i++)
+ for (int i = 0; i < 2; i++)
{
switch (ioport(portnames[i])->read())
{
- case 0x01: m_gear[i] = 1; break;
- case 0x02: m_gear[i] = 2; break;
- case 0x04: m_gear[i] = 3; break;
- case 0x08: m_gear[i] = 4; break;
- case 0x10: m_gear[i] = 0; break;
+ case 0x01: m_gear[i] = 1; break;
+ case 0x02: m_gear[i] = 2; break;
+ case 0x04: m_gear[i] = 3; break;
+ case 0x08: m_gear[i] = 4; break;
+ case 0x10: m_gear[i] = 0; break;
}
}
@@ -85,6 +84,10 @@ void dragrace_state::dragrace_update_misc_flags( address_space &space )
m_discrete->write(space, DRAGRACE_ATTRACT_EN, (m_misc_flags & 0x00001000) ? 1: 0); // Attract enable
m_discrete->write(space, DRAGRACE_LOTONE_EN, (m_misc_flags & 0x00002000) ? 1: 0); // LoTone enable
m_discrete->write(space, DRAGRACE_HITONE_EN, (m_misc_flags & 0x20000000) ? 1: 0); // HiTone enable
+
+ // the tachometers are driven from the same frequency generator that creates the engine sound
+ output_set_value("tachometer", ~m_misc_flags & 0x0000001f);
+ output_set_value("tachometer2", (~m_misc_flags & 0x001f0000) >> 0x10);
}
WRITE8_MEMBER(dragrace_state::dragrace_misc_w)
@@ -116,9 +119,7 @@ READ8_MEMBER(dragrace_state::dragrace_input_r)
UINT8 maskA = 1 << (offset % 8);
UINT8 maskB = 1 << (offset / 8);
- int i;
-
- for (i = 0; i < 2; i++)
+ for (int i = 0; i < 2; i++)
{
int in = ioport(portnames[i])->read();
@@ -139,9 +140,7 @@ READ8_MEMBER(dragrace_state::dragrace_steering_r)
int bitB[2];
static const char *const dialnames[] = { "DIAL1", "DIAL2" };
- int i;
-
- for (i = 0; i < 2; i++)
+ for (int i = 0; i < 2; i++)
{
int dial = ioport(dialnames[i])->read();
diff --git a/src/mame/includes/dragrace.h b/src/mame/includes/dragrace.h
index c0962cb184c..55f815332c6 100644
--- a/src/mame/includes/dragrace.h
+++ b/src/mame/includes/dragrace.h
@@ -47,6 +47,10 @@ public:
/* devices */
required_device<discrete_device> m_discrete;
+ required_device<cpu_device> m_maincpu;
+ required_device<gfxdecode_device> m_gfxdecode;
+ required_device<screen_device> m_screen;
+
DECLARE_WRITE8_MEMBER(dragrace_misc_w);
DECLARE_WRITE8_MEMBER(dragrace_misc_clear_w);
DECLARE_READ8_MEMBER(dragrace_input_r);
@@ -60,9 +64,6 @@ public:
UINT32 screen_update_dragrace(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(dragrace_frame_callback);
void dragrace_update_misc_flags( address_space &space );
- required_device<cpu_device> m_maincpu;
- required_device<gfxdecode_device> m_gfxdecode;
- required_device<screen_device> m_screen;
};
/*----------- defined in audio/dragrace.c -----------*/
diff --git a/src/mame/video/dragrace.c b/src/mame/video/dragrace.c
index 57436a344e3..ada420b9385 100644
--- a/src/mame/video/dragrace.c
+++ b/src/mame/video/dragrace.c
@@ -1,6 +1,6 @@
/***************************************************************************
-Atari Drag Race video emulation
+ Atari Drag Race video emulation
***************************************************************************/
@@ -21,18 +21,18 @@ TILE_GET_INFO_MEMBER(dragrace_state::get_tile_info)
switch (code & 0xA0)
{
- case 0x00:
- col = 0;
- break;
- case 0x20:
- col = 1;
- break;
- case 0x80:
- col = (code & 0x40) ? 1 : 0;
- break;
- case 0xA0:
- col = (code & 0x40) ? 3 : 2;
- break;
+ case 0x00:
+ col = 0;
+ break;
+ case 0x20:
+ col = 1;
+ break;
+ case 0x80:
+ col = (code & 0x40) ? 1 : 0;
+ break;
+ case 0xA0:
+ col = (code & 0x40) ? 3 : 2;
+ break;
}
SET_TILE_INFO_MEMBER(((code & 0xA0) == 0x80) ? 1 : 0, num, col, 0);
@@ -47,11 +47,9 @@ void dragrace_state::video_start()
UINT32 dragrace_state::screen_update_dragrace(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- int y;
-
m_bg_tilemap->mark_all_dirty();
- for (y = 0; y < 256; y += 4)
+ for (int y = 0; y < 256; y += 4)
{
rectangle rect = cliprect;
@@ -68,5 +66,6 @@ UINT32 dragrace_state::screen_update_dragrace(screen_device &screen, bitmap_ind1
m_bg_tilemap->draw(screen, bitmap, rect, 0, 0);
}
+
return 0;
}