From 76fb8a312982b91f5faca26fa0cbee80b449272d Mon Sep 17 00:00:00 2001 From: Michaƫl Banaan Ananas Date: Sat, 4 Oct 2014 12:20:38 +0000 Subject: dragrace.c: Added tachometer outputs. [Comboman] --- src/mame/drivers/dragrace.c | 27 +++++++++++++-------------- src/mame/includes/dragrace.h | 7 ++++--- src/mame/video/dragrace.c | 31 +++++++++++++++---------------- 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 m_discrete; + required_device m_maincpu; + required_device m_gfxdecode; + required_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 m_maincpu; - required_device m_gfxdecode; - required_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; } -- cgit v1.2.3-70-g09d2