diff options
| -rw-r--r-- | src/mame/midway/sspeedr.cpp | 21 | ||||
| -rw-r--r-- | src/mame/midway/sspeedr.h | 4 | ||||
| -rw-r--r-- | src/mame/midway/sspeedr_v.cpp | 53 |
3 files changed, 30 insertions, 48 deletions
diff --git a/src/mame/midway/sspeedr.cpp b/src/mame/midway/sspeedr.cpp index 73a90af6c0a..9aa306ab5f3 100644 --- a/src/mame/midway/sspeedr.cpp +++ b/src/mame/midway/sspeedr.cpp @@ -68,17 +68,12 @@ constexpr uint8_t ls48_map[16] = void sspeedr_state::time_w(offs_t offset, uint8_t data) { - data = data & 15; - m_digits[24 + offset] = ls48_map[data]; - m_led_time[offset] = data; + m_digits[24 + offset] = ls48_map[data & 0xf]; } - void sspeedr_state::score_w(offs_t offset, uint8_t data) { - data = ~data & 15; - m_digits[offset] = ls48_map[data]; - m_led_score[offset] = data; + m_digits[offset] = ls48_map[~data & 0xf]; } @@ -252,7 +247,7 @@ GFXDECODE_END void sspeedr_state::sspeedr(machine_config &config) { // basic machine hardware - Z80(config, m_maincpu, XTAL(19'968'000)/8); + Z80(config, m_maincpu, 19.968_MHz_XTAL / 8); m_maincpu->set_addrmap(AS_PROGRAM, &sspeedr_state::prg_map); m_maincpu->set_addrmap(AS_IO, &sspeedr_state::io_map); m_maincpu->set_vblank_int("screen", FUNC(sspeedr_state::irq0_line_assert)); @@ -261,10 +256,7 @@ void sspeedr_state::sspeedr(machine_config &config) /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_refresh_hz(59.39); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(16 * 1000000 / 15680)); - screen.set_size(376, 256); - screen.set_visarea(0, 375, 0, 247); + screen.set_raw(14.318181_MHz_XTAL / 2, 456, 0, 376, 264, 0, 248); screen.set_screen_update(FUNC(sspeedr_state::screen_update)); screen.screen_vblank().set(FUNC(sspeedr_state::screen_vblank)); screen.set_palette(m_palette); @@ -286,15 +278,14 @@ void sspeedr_state::sspeedr(machine_config &config) NETLIST_LOGIC_INPUT(config, "sound_nl:hi_shift", "I_HI_SHIFT", 0); NETLIST_LOGIC_INPUT(config, "sound_nl:lo_shift", "I_LO_SHIFT", 0); NETLIST_LOGIC_INPUT(config, "sound_nl:boom", "I_BOOM", 0); - NETLIST_LOGIC_INPUT(config, "sound_nl:engine_sound_off", - "I_ENGINE_SOUND_OFF", 0); + NETLIST_LOGIC_INPUT(config, "sound_nl:engine_sound_off", "I_ENGINE_SOUND_OFF", 0); NETLIST_LOGIC_INPUT(config, "sound_nl:noise_cr_1", "I_NOISE_CR_1", 0); NETLIST_LOGIC_INPUT(config, "sound_nl:noise_cr_2", "I_NOISE_CR_2", 0); NETLIST_LOGIC_INPUT(config, "sound_nl:silence", "I_SILENCE", 0); // Audio output is from an LM3900 op-amp whose output has a // peak-to-peak range of about 12 volts, centered on 6 volts. - NETLIST_STREAM_OUTPUT(config, "sound_nl:cout0", 0, "OUTPUT").set_mult_offset(32767.0 / 6.0, -32767.0); + NETLIST_STREAM_OUTPUT(config, "sound_nl:cout0", 0, "OUTPUT").set_mult_offset(1.0 / 6.0, -1.0); // Netlist volume-potentiometer interface NETLIST_ANALOG_INPUT(config, "sound_nl:pot_master_vol", "R70.DIAL"); diff --git a/src/mame/midway/sspeedr.h b/src/mame/midway/sspeedr.h index 561956677da..ea7e21fcc49 100644 --- a/src/mame/midway/sspeedr.h +++ b/src/mame/midway/sspeedr.h @@ -64,8 +64,6 @@ private: void io_map(address_map &map) ATTR_COLD; void prg_map(address_map &map) ATTR_COLD; - uint8_t m_led_time[2]{}; - uint8_t m_led_score[24]{}; uint8_t m_toggle = 0; uint16_t m_driver_horz = 0; uint8_t m_driver_vert = 0; @@ -77,7 +75,7 @@ private: uint8_t m_track_vert[2]{}; uint8_t m_track_ice = 0; - void draw_track(bitmap_ind16 &bitmap); + void draw_track(bitmap_ind16 &bitmap, const rectangle &cliprect); void draw_drones(bitmap_ind16 &bitmap, const rectangle &cliprect); void draw_driver(bitmap_ind16 &bitmap, const rectangle &cliprect); required_device<cpu_device> m_maincpu; diff --git a/src/mame/midway/sspeedr_v.cpp b/src/mame/midway/sspeedr_v.cpp index a94099eca40..26384d38f49 100644 --- a/src/mame/midway/sspeedr_v.cpp +++ b/src/mame/midway/sspeedr_v.cpp @@ -82,9 +82,9 @@ void sspeedr_state::track_ice_w(uint8_t data) } -void sspeedr_state::draw_track(bitmap_ind16 &bitmap) +void sspeedr_state::draw_track(bitmap_ind16 &bitmap, const rectangle &cliprect) { - for (int x = 0; x < 376; x++) + for (int x = cliprect.min_x; x <= cliprect.max_x; x++) { unsigned counter_x = x + m_track_horz + 0x50; @@ -111,11 +111,10 @@ void sspeedr_state::draw_track(bitmap_ind16 &bitmap) counter_x -= 0x1c8; } - int y = 0; + int y = cliprect.min_y; // upper landscape - - for (; y < m_track_vert[0]; y++) + for (; y < m_track_vert[0] && y <= cliprect.max_y; y++) { unsigned counter_y = y - m_track_vert[0]; @@ -126,24 +125,22 @@ void sspeedr_state::draw_track(bitmap_ind16 &bitmap) if (counter_x & 2) { - bitmap.pix(y, x) = m_track[offset] / 16; + bitmap.pix(y, x) = m_track[offset] >> 4; } else { - bitmap.pix(y, x) = m_track[offset] % 16; + bitmap.pix(y, x) = m_track[offset] & 0xf; } } // street - - for (; y < 128 + m_track_vert[1]; y++) + for (; y < 128 + m_track_vert[1] && y <= cliprect.max_y; y++) { bitmap.pix(y, x) = flag ? 15 : 0; } // lower landscape - - for (; y < 248; y++) + for (; y <= cliprect.max_y; y++) { unsigned counter_y = y - m_track_vert[1]; @@ -154,11 +151,11 @@ void sspeedr_state::draw_track(bitmap_ind16 &bitmap) if (counter_x & 2) { - bitmap.pix(y, x) = m_track[offset] / 16; + bitmap.pix(y, x) = m_track[offset] >> 4; } else { - bitmap.pix(y, x) = m_track[offset] % 16; + bitmap.pix(y, x) = m_track[offset] & 0xf; } } } @@ -188,13 +185,12 @@ void sspeedr_state::draw_drones(bitmap_ind16 &bitmap, const rectangle &cliprect) int y = 0xf0 - m_drones_vert[i >> 1]; - - m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, - code[i] ^ m_toggle, - 0, - 0, 0, - x, - y, 0); + m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, + code[i] ^ m_toggle, + 0, + 0, 0, + x, + y, 0); } } @@ -215,13 +211,12 @@ void sspeedr_state::draw_driver(bitmap_ind16 &bitmap, const rectangle &cliprect) int y = 0xf0 - m_driver_vert; - - m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, - m_driver_pic, - 0, - 0, 0, - x, - y, 0); + m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, + m_driver_pic, + 0, + 0, 0, + x, + y, 0); } @@ -229,8 +224,6 @@ void sspeedr_state::video_start() { m_toggle = 0; - save_item(NAME(m_led_time)); - save_item(NAME(m_led_score)); save_item(NAME(m_toggle)); save_item(NAME(m_driver_horz)); save_item(NAME(m_driver_vert)); @@ -246,7 +239,7 @@ void sspeedr_state::video_start() uint32_t sspeedr_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - draw_track(bitmap); + draw_track(bitmap, cliprect); draw_drones(bitmap, cliprect); draw_driver(bitmap, cliprect); return 0; |
