From d66c07bde03c4d834a9e92ea7571c2890bf19647 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Thu, 1 Jul 2021 18:18:40 +0200 Subject: [PATCH] turbo.cpp: subclasses, input / output finders, save state preparation --- src/mame/audio/turbo.cpp | 297 +++++----- src/mame/drivers/turbo.cpp | 1131 +++++++++++++++++++----------------- src/mame/includes/turbo.h | 346 ++++++----- src/mame/video/turbo.cpp | 657 ++++++++++----------- 4 files changed, 1252 insertions(+), 1179 deletions(-) diff --git a/src/mame/audio/turbo.cpp b/src/mame/audio/turbo.cpp index 66867a6e0cde5..d002916213e2b 100644 --- a/src/mame/audio/turbo.cpp +++ b/src/mame/audio/turbo.cpp @@ -8,7 +8,6 @@ #include "emu.h" #include "includes/turbo.h" -#include "sound/samples.h" #include "speaker.h" @@ -22,19 +21,19 @@ * *************************************/ -void turbo_state::turbo_update_samples() +void turbo_state::update_samples() { - /* accelerator sounds */ - /* BSEL == 3 --> off */ - /* BSEL == 2 --> standard */ - /* BSEL == 1 --> tunnel */ - /* BSEL == 0 --> ??? */ - if (m_turbo_bsel == 3 && m_samples->playing(5)) + // accelerator sounds + // BSEL == 3 --> off + // BSEL == 2 --> standard + // BSEL == 1 --> tunnel + // BSEL == 0 --> ??? + if (m_bsel == 3 && m_samples->playing(5)) m_samples->stop(5); - else if (m_turbo_bsel != 3 && !m_samples->playing(5)) + else if (m_bsel != 3 && !m_samples->playing(5)) m_samples->start(5, 7, true); if (m_samples->playing(5)) - m_samples->set_frequency(5, m_samples->base_frequency(5) * ((m_turbo_accel & 0x3f) / 5.25 + 1)); + m_samples->set_frequency(5, m_samples->base_frequency(5) * ((m_accel & 0x3f) / 5.25 + 1)); } @@ -45,7 +44,7 @@ TIMER_CALLBACK_MEMBER(turbo_state::update_sound_a) discrete_device *discrete = machine.device("discrete"); int data = param; - /* missing short crash sample, but I've never seen it triggered */ + // missing short crash sample, but I've never seen it triggered discrete->write(0, !(data & 0x01)); discrete->write(1, (data >> 1) & 1); discrete->write(2, (data >> 2) & 1); @@ -60,7 +59,7 @@ if (!((data >> 3) & 1)) osd_printf_debug("/TRIG3\n"); if (!((data >> 4) & 1)) osd_printf_debug("/TRIG4\n"); // osel = (osel & 6) | ((data >> 5) & 1); -// turbo_update_samples(samples); +// update_samples(samples); } #endif @@ -72,7 +71,7 @@ if (!((data >> 4) & 1)) osd_printf_debug("/TRIG4\n"); * *************************************/ -void turbo_state::turbo_sound_a_w(u8 data) +void turbo_state::sound_a_w(uint8_t data) { #if (!DISCRETE_TEST) #endif @@ -83,32 +82,32 @@ void turbo_state::turbo_sound_a_w(u8 data) #if (!DISCRETE_TEST) - /* /CRASH.S: channel 0 */ + // /CRASH.S: channel 0 if ((diff & 0x01) && !(data & 0x01)) m_samples->start(0, 5); - /* /TRIG1: channel 1 */ + // /TRIG1: channel 1 if ((diff & 0x02) && !(data & 0x02)) m_samples->start(1, 0); - /* /TRIG2: channel 1 */ + // /TRIG2: channel 1 if ((diff & 0x04) && !(data & 0x04)) m_samples->start(1, 1); - /* /TRIG3: channel 1 */ + // /TRIG3: channel 1 if ((diff & 0x08) && !(data & 0x08)) m_samples->start(1, 2); - /* /TRIG4: channel 1 */ + // /TRIG4: channel 1 if ((diff & 0x10) && !(data & 0x10)) m_samples->start(1, 3); - /* OSEL0 */ - m_turbo_osel = (m_turbo_osel & 6) | ((data >> 5) & 1); + // OSEL0 + m_osel = (m_osel & 6) | ((data >> 5) & 1); - /* /SLIP: channel 2 */ + // /SLIP: channel 2 if ((diff & 0x40) && !(data & 0x40)) m_samples->start(2, 4); - /* /CRASH.L: channel 3 */ + // /CRASH.L: channel 3 if ((diff & 0x80) && !(data & 0x80)) m_samples->start(3, 5); - /* update any samples */ - turbo_update_samples(); + // update any samples + update_samples(); #else @@ -123,40 +122,40 @@ void turbo_state::turbo_sound_a_w(u8 data) } -void turbo_state::turbo_sound_b_w(u8 data) +void turbo_state::sound_b_w(uint8_t data) { uint8_t diff = data ^ m_sound_state[1]; m_sound_state[1] = data; - /* ACC0-ACC5 */ - m_turbo_accel = data & 0x3f; - output().set_value("tachometer", m_turbo_accel); + // ACC0-ACC5 + m_accel = data & 0x3f; + m_tachometer = m_accel; - /* /AMBU: channel 4 */ + // /AMBU: channel 4 if ((diff & 0x40) && !(data & 0x40) && !m_samples->playing(4)) m_samples->start(4, 8, true); if ((diff & 0x40) && (data & 0x40)) m_samples->stop(4); - /* /SPIN: channel 2 */ + // /SPIN: channel 2 if ((diff & 0x80) && !(data & 0x80)) m_samples->start(2, 6); - /* update any samples */ - turbo_update_samples(); + // update any samples + update_samples(); } -void turbo_state::turbo_sound_c_w(u8 data) +void turbo_state::sound_c_w(uint8_t data) { - /* OSEL1-2 */ - m_turbo_osel = (m_turbo_osel & 1) | ((data & 3) << 1); + // OSEL1-2 + m_osel = (m_osel & 1) | ((data & 3) << 1); - /* BSEL0-1 */ - m_turbo_bsel = (data >> 2) & 3; + // BSEL0-1 + m_bsel = (data >> 2) & 3; - /* SPEED0-3 */ - output().set_value("speed", (data >> 4) & 0x0f); + // SPEED0-3 + m_speed = (data >> 4) & 0x0f; - /* update any samples */ - turbo_update_samples(); + // update any samples + update_samples(); } @@ -170,22 +169,22 @@ void turbo_state::turbo_sound_c_w(u8 data) static const char *const turbo_sample_names[] = { "*turbo", - "01", /* 0: Trig1 */ - "02", /* 1: Trig2 */ - "03", /* 2: Trig3 */ - "04", /* 3: Trig4 */ - "05", /* 4: Screech */ - "06", /* 5: Crash */ - "skidding", /* 6: Spin */ - "idle", /* 7: Idle */ - "ambulanc", /* 8: Ambulance */ + "01", // 0: Trig1 + "02", // 1: Trig2 + "03", // 2: Trig3 + "04", // 3: Trig4 + "05", // 4: Screech + "06", // 5: Crash + "skidding", // 6: Spin + "idle", // 7: Idle + "ambulanc", // 8: Ambulance nullptr }; void turbo_state::turbo_samples(machine_config &config) { - /* this is the cockpit speaker configuration */ + // this is the cockpit speaker configuration SPEAKER(config, "fspeaker", 0.0, 0.0, 1.0); // front SPEAKER(config, "bspeaker", 0.0, 0.0, -0.5); // back SPEAKER(config, "lspeaker", -0.2, 0.0, 1.0); // left @@ -195,39 +194,39 @@ void turbo_state::turbo_samples(machine_config &config) m_samples->set_channels(10); m_samples->set_samples_names(turbo_sample_names); - /* channel 0 = CRASH.S -> CRASH.S/SM */ + // channel 0 = CRASH.S -> CRASH.S/SM m_samples->add_route(0, "fspeaker", 0.25); - /* channel 1 = TRIG1-4 -> ALARM.M/F/R/L */ + // channel 1 = TRIG1-4 -> ALARM.M/F/R/L m_samples->add_route(1, "fspeaker", 0.25); m_samples->add_route(1, "rspeaker", 0.25); m_samples->add_route(1, "lspeaker", 0.25); - /* channel 2 = SLIP/SPIN -> SKID.F/R/L/M */ + // channel 2 = SLIP/SPIN -> SKID.F/R/L/M m_samples->add_route(2, "fspeaker", 0.25); m_samples->add_route(2, "rspeaker", 0.25); m_samples->add_route(2, "lspeaker", 0.25); - /* channel 3 = CRASH.L -> CRASH.L/LM */ + // channel 3 = CRASH.L -> CRASH.L/LM m_samples->add_route(3, "bspeaker", 0.25); - /* channel 4 = AMBU -> AMBULANCE/AMBULANCE.M */ + // channel 4 = AMBU -> AMBULANCE/AMBULANCE.M m_samples->add_route(4, "fspeaker", 0.25); - /* channel 5 = ACCEL+BSEL -> MYCAR.F/W/M + MYCAR0.F/M + MYCAR1.F/M */ + // channel 5 = ACCEL+BSEL -> MYCAR.F/W/M + MYCAR0.F/M + MYCAR1.F/M m_samples->add_route(5, "fspeaker", 0.25); m_samples->add_route(5, "bspeaker", 0.25); - /* channel 6 = OSEL -> OCAR.F/FM */ + // channel 6 = OSEL -> OCAR.F/FM m_samples->add_route(6, "fspeaker", 0.25); - /* channel 7 = OSEL -> OCAR.L/LM */ + // channel 7 = OSEL -> OCAR.L/LM m_samples->add_route(7, "lspeaker", 0.25); - /* channel 8 = OSEL -> OCAR.R/RM */ + // channel 8 = OSEL -> OCAR.R/RM m_samples->add_route(8, "rspeaker", 0.25); - /* channel 9 = OSEL -> OCAR.W/WM */ + // channel 9 = OSEL -> OCAR.W/WM m_samples->add_route(9, "bspeaker", 0.25); } @@ -286,21 +285,21 @@ void turbo_state::turbo_samples(machine_config &config) * *************************************/ -void turbo_state::subroc3d_sound_a_w(u8 data) +void subroc3d_state::sound_a_w(uint8_t data) { m_sound_state[0] = data; - /* DIS0-3 contained in bits 0-3 */ - /* DIR0-2 contained in bits 4-6 */ + // DIS0-3 contained in bits 0-3 + // DIR0-2 contained in bits 4-6 } -inline void turbo_state::subroc3d_update_volume(int leftchan, uint8_t dis, uint8_t dir) +inline void subroc3d_state::update_volume(int leftchan, uint8_t dis, uint8_t dir) { float volume = (float)(15 - dis) / 16.0f; float lvol, rvol; - /* compute the left/right volume from the data */ + // compute the left/right volume from the data if (dir != 7) { lvol = volume * (float)(6 - dir) / 6.0f; @@ -309,98 +308,98 @@ inline void turbo_state::subroc3d_update_volume(int leftchan, uint8_t dis, uint8 else lvol = rvol = 0; - /* if the sample is playing, adjust it */ + // if the sample is playing, adjust it m_samples->set_volume(leftchan + 0, lvol); m_samples->set_volume(leftchan + 1, rvol); } -void turbo_state::subroc3d_sound_b_w(u8 data) +void subroc3d_state::sound_b_w(uint8_t data) { uint8_t diff = data ^ m_sound_state[1]; m_sound_state[1] = data; - /* bit 0 latches direction/volume for missile */ + // bit 0 latches direction/volume for missile if ((diff & 0x01) && (data & 0x01)) { - m_subroc3d_mdis = m_sound_state[0] & 0x0f; - m_subroc3d_mdir = (m_sound_state[0] >> 4) & 0x07; + m_mdis = m_sound_state[0] & 0x0f; + m_mdir = (m_sound_state[0] >> 4) & 0x07; if (!m_samples->playing(0)) { m_samples->start(0, 0, true); m_samples->start(1, 0, true); } - subroc3d_update_volume(0, m_subroc3d_mdis, m_subroc3d_mdir); + update_volume(0, m_mdis, m_mdir); } - /* bit 1 latches direction/volume for torpedo */ + // bit 1 latches direction/volume for torpedo if ((diff & 0x02) && (data & 0x02)) { - m_subroc3d_tdis = m_sound_state[0] & 0x0f; - m_subroc3d_tdir = (m_sound_state[0] >> 4) & 0x07; + m_tdis = m_sound_state[0] & 0x0f; + m_tdir = (m_sound_state[0] >> 4) & 0x07; if (!m_samples->playing(2)) { m_samples->start(2, 1, true); m_samples->start(3, 1, true); } - subroc3d_update_volume(2, m_subroc3d_tdis, m_subroc3d_tdir); + update_volume(2, m_tdis, m_tdir); } - /* bit 2 latches direction/volume for fighter */ + // bit 2 latches direction/volume for fighter if ((diff & 0x04) && (data & 0x04)) { - m_subroc3d_fdis = m_sound_state[0] & 0x0f; - m_subroc3d_fdir = (m_sound_state[0] >> 4) & 0x07; + m_fdis = m_sound_state[0] & 0x0f; + m_fdir = (m_sound_state[0] >> 4) & 0x07; if (!m_samples->playing(4)) { m_samples->start(4, 2, true); m_samples->start(5, 2, true); } - subroc3d_update_volume(4, m_subroc3d_fdis, m_subroc3d_fdir); + update_volume(4, m_fdis, m_fdir); } - /* bit 3 latches direction/volume for hit */ + // bit 3 latches direction/volume for hit if ((diff & 0x08) && (data & 0x08)) { - m_subroc3d_hdis = m_sound_state[0] & 0x0f; - m_subroc3d_hdir = (m_sound_state[0] >> 4) & 0x07; - subroc3d_update_volume(6, m_subroc3d_hdis, m_subroc3d_hdir); + m_hdis = m_sound_state[0] & 0x0f; + m_hdir = (m_sound_state[0] >> 4) & 0x07; + update_volume(6, m_hdis, m_hdir); } } -void turbo_state::subroc3d_sound_c_w(u8 data) +void subroc3d_state::sound_c_w(uint8_t data) { uint8_t diff = data ^ m_sound_state[2]; m_sound_state[2] = data; - /* /FIRE TRIG */ - /* FIRE SELECT */ + // /FIRE TRIG + // FIRE SELECT if ((diff & 0x01) && (data & 0x01)) m_samples->start(8, (data & 0x02) ? 6 : 5); - /* /SHIP EXP TRIG -> MY SHIP EXP: channel 9 */ + // /SHIP EXP TRIG -> MY SHIP EXP: channel 9 if ((diff & 0x04) && (data & 0x04)) m_samples->start(9, 7); - /* /HIT TRIG -> HIT.L/R: channels 6+7 */ + // /HIT TRIG -> HIT.L/R: channels 6+7 if ((diff & 0x08) && (data & 0x08)) { m_samples->start(6, (m_sound_state[0] & 0x80) ? 4 : 3); m_samples->start(7, (m_sound_state[0] & 0x80) ? 4 : 3); } - /* /ALARM TRIG -> ALARM.M: channel 10 */ - /* ALARM SELECT */ + // /ALARM TRIG -> ALARM.M: channel 10 + // ALARM SELECT if ((diff & 0x10) && (data & 0x10)) m_samples->start(10, (data & 0x20) ? 10 : 9); - /* /PROLOGUE */ + // /PROLOGUE if (!m_samples->playing(11)) m_samples->start(11, 8, true); m_samples->set_volume(11, (data & 0x40) ? 0 : 1.0); - /* /GAME START */ + // /GAME START machine().sound().system_mute(data & 0x80); } @@ -415,21 +414,21 @@ void turbo_state::subroc3d_sound_c_w(u8 data) static const char *const subroc3d_sample_names[] = { "*subroc3d", - "01", /* 0: enemy missile */ - "02", /* 1: enemy torpedo */ - "03", /* 2: enemy fighter */ - "04", /* 3: explosion in sky */ - "05", /* 4: explosion on sea */ - "06", /* 5: missile shoot */ - "07", /* 6: torpedo shoot */ - "08", /* 7: my ship expl */ - "09", /* 8: prolog sound */ - "11", /* 9: alarm 0 */ - "12", /* 10: alarm 1 */ + "01", // 0: enemy missile + "02", // 1: enemy torpedo + "03", // 2: enemy fighter + "04", // 3: explosion in sky + "05", // 4: explosion on sea + "06", // 5: missile shoot + "07", // 6: torpedo shoot + "08", // 7: my ship expl + "09", // 8: prolog sound + "11", // 9: alarm 0 + "12", // 10: alarm 1 nullptr }; -void turbo_state::subroc3d_samples(machine_config &config) +void subroc3d_state::subroc3d_samples(machine_config &config) { SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); @@ -438,35 +437,35 @@ void turbo_state::subroc3d_samples(machine_config &config) m_samples->set_channels(12); m_samples->set_samples_names(subroc3d_sample_names); - /* MISSILE in channels 0 and 1 */ + // MISSILE in channels 0 and 1 m_samples->add_route(0, "lspeaker", 0.25); m_samples->add_route(1, "rspeaker", 0.25); - /* TORPEDO in channels 2 and 3 */ + // TORPEDO in channels 2 and 3 m_samples->add_route(2, "lspeaker", 0.25); m_samples->add_route(3, "rspeaker", 0.25); - /* FIGHTER in channels 4 and 5 */ + // FIGHTER in channels 4 and 5 m_samples->add_route(4, "lspeaker", 0.25); m_samples->add_route(5, "rspeaker", 0.25); - /* HIT in channels 6 and 7 */ + // HIT in channels 6 and 7 m_samples->add_route(6, "lspeaker", 0.25); m_samples->add_route(7, "rspeaker", 0.25); - /* FIRE sound in channel 8 */ + // FIRE sound in channel 8 m_samples->add_route(8, "lspeaker", 0.25); m_samples->add_route(8, "rspeaker", 0.25); - /* SHIP EXP sound in channel 9 */ + // SHIP EXP sound in channel 9 m_samples->add_route(9, "lspeaker", 0.25); m_samples->add_route(9, "rspeaker", 0.25); - /* ALARM TRIG sound in channel 10 */ + // ALARM TRIG sound in channel 10 m_samples->add_route(10, "lspeaker", 0.25); m_samples->add_route(10, "rspeaker", 0.25); - /* PROLOGUE sound in channel 11 */ + // PROLOGUE sound in channel 11 m_samples->add_route(11, "lspeaker", 0.25); m_samples->add_route(11, "rspeaker", 0.25); } @@ -479,74 +478,74 @@ void turbo_state::subroc3d_samples(machine_config &config) * *************************************/ -void turbo_state::buckrog_update_samples() +void buckrog_state::update_samples() { - /* accelerator sounds */ + // accelerator sounds if (m_samples->playing(5)) - m_samples->set_frequency(5, m_samples->base_frequency(5) * (m_buckrog_myship / 100.25 + 1)); + m_samples->set_frequency(5, m_samples->base_frequency(5) * (m_myship / 100.25 + 1)); } -void turbo_state::buckrog_sound_a_w(u8 data) +void buckrog_state::sound_a_w(uint8_t data) { uint8_t diff = data ^ m_sound_state[0]; m_sound_state[0] = data; - /* clock HIT DIS from bits 0-2 */ + // clock HIT DIS from bits 0-2 if ((diff & 0x10) && (data & 0x10)) m_samples->set_volume(3, (float)(/*7 - */(data & 7)) / 7.0f); - /* clock ACC from bits 0-3 */ + // clock ACC from bits 0-3 if ((diff & 0x20) && (data & 0x20)) { - m_buckrog_myship = data & 0x0f; - buckrog_update_samples(); + m_myship = data & 0x0f; + update_samples(); } - /* /ALARM0: channel 0 */ + // /ALARM0: channel 0 if ((diff & 0x40) && !(data & 0x40)) m_samples->start(0, 0); - /* /ALARM1: channel 0 */ + // /ALARM1: channel 0 if ((diff & 0x80) && !(data & 0x80)) m_samples->start(0, 1); } -void turbo_state::buckrog_sound_b_w(u8 data) +void buckrog_state::sound_b_w(uint8_t data) { uint8_t diff = data ^ m_sound_state[1]; m_sound_state[1] = data; - /* /ALARM3: channel 0 */ + // /ALARM3: channel 0 if ((diff & 0x01) && !(data & 0x01)) m_samples->start(0, 2); - /* /ALARM4: channel 0 */ + // /ALARM4: channel 0 if ((diff & 0x02) && !(data & 0x02)) m_samples->start(0, 3); - /* /FIRE: channel 1 */ + // /FIRE: channel 1 if ((diff & 0x04) && !(data & 0x04)) m_samples->start(1, 5); - /* /EXP: channel 2 */ + // /EXP: channel 2 if ((diff & 0x08) && !(data & 0x08)) m_samples->start(2, 4); - /* /HIT: channel 3 */ + // /HIT: channel 3 if ((diff & 0x10) && !(data & 0x10)) { m_samples->start(3, 7); - buckrog_update_samples(); + update_samples(); } - /* /REBOUND: channel 4 */ + // /REBOUND: channel 4 if ((diff & 0x20) && !(data & 0x20)) m_samples->start(4, 6); - /* SHIP: channel 5 */ + // SHIP: channel 5 if ((diff & 0x40) && (data & 0x40) && !m_samples->playing(5)) { m_samples->start(5, 8, true); - buckrog_update_samples(); + update_samples(); } if ((diff & 0x40) && !(data & 0x40) && m_samples->playing(5)) m_samples->stop(5); - /* GAME ON */ + // GAME ON machine().sound().system_mute(!BIT(data, 7)); } @@ -561,22 +560,22 @@ void turbo_state::buckrog_sound_b_w(u8 data) static const char *const buckrog_sample_names[]= { "*buckrog", - "alarm0", /* 0 */ - "alarm1", /* 1 */ - "alarm2", /* 2 */ - "alarm3", /* 3 */ - "exp", /* 4 */ - "fire", /* 5 */ - "rebound", /* 6 */ - "hit", /* 7 */ - "shipsnd1", /* 8 */ - "shipsnd2", /* 9 */ - "shipsnd3", /* 10 */ + "alarm0", // 0 + "alarm1", // 1 + "alarm2", // 2 + "alarm3", // 3 + "exp", // 4 + "fire", // 5 + "rebound", // 6 + "hit", // 7 + "shipsnd1", // 8 + "shipsnd2", // 9 + "shipsnd3", // 10 nullptr }; -void turbo_state::buckrog_samples(machine_config &config) +void buckrog_state::buckrog_samples(machine_config &config) { SPEAKER(config, "mono").front_center(); SAMPLES(config, m_samples); @@ -595,7 +594,7 @@ void turbo_state::buckrog_samples(machine_config &config) #if (DISCRETE_TEST) -/* Nodes - Inputs */ +// Nodes - Inputs #define TURBO_CRASH_EN NODE_01 #define TURBO_TRIG1_INV NODE_02 #define TURBO_TRIG2_INV NODE_03 @@ -609,7 +608,7 @@ void turbo_state::buckrog_samples(machine_config &config) #define TURBO_OSEL_VAL NODE_11 #define TURBO_BSEL_VAL NODE_12 -/* Nodes - Sounds */ +// Nodes - Sounds #define FIRETRUCK_NOISE NODE_20 static const discrete_555_desc turbo_alarm_555 = @@ -623,7 +622,7 @@ DISCRETE_SOUND_START(turbo_discrete) /************************************************/ /* Input register mapping for turbo */ /************************************************/ - /* NODE ADDR MASK GAIN OFFSET INIT */ + // NODE ADDR MASK GAIN OFFSET INIT DISCRETE_INPUT(TURBO_CRASH_EN ,0x00,0x001f, 0.0) DISCRETE_INPUT(TURBO_TRIG1_INV ,0x01,0x001f, 1.0) DISCRETE_INPUT(TURBO_TRIG2_INV ,0x02,0x001f, 1.0) diff --git a/src/mame/drivers/turbo.cpp b/src/mame/drivers/turbo.cpp index 6a9c9d316947a..b30ae77ac22ed 100644 --- a/src/mame/drivers/turbo.cpp +++ b/src/mame/drivers/turbo.cpp @@ -48,7 +48,7 @@ bottom of the board, DIP switch #3 (4 bank) can be seen. ---------------------------------------------------------------------------- - Option (DIP Swtich #1) | SW1 | SW2 | SW3 | SW4 | SW5 | SW6 | SW7 | SW8 | + Option (DIP Switch #1) | SW1 | SW2 | SW3 | SW4 | SW5 | SW6 | SW7 | SW8 | --------------------------|-----|-----|-----|-----|-----|-----|-----|-----| 1 Car On Extended Play | ON | ON | | | | | | | 2 Car On Extended Play | OFF | ON | | | | | | | @@ -70,7 +70,7 @@ Not Used | | | | | | | X | X | --------------------------------------------------------------------------- - Option (DIP Swtich #2) | SW1 | SW2 | SW3 | SW4 | SW5 | SW6 | SW7 | SW8 | + Option (DIP Switch #2) | SW1 | SW2 | SW3 | SW4 | SW5 | SW6 | SW7 | SW8 | --------------------------|-----|-----|-----|-----|-----|-----|-----|-----| 60 Seconds Game Time | ON | ON | | | | | | | 70 Seconds Game Time | OFF | ON | | | | | | | @@ -96,7 +96,7 @@ Slot 2 1 Coins 1 Credit | | | | | | OFF | OFF | OFF | --------------------------------------------------------------------------- - Option (DIP Swtich #3) | SW1 | SW2 | SW3 | SW4 | + Option (DIP Switch #3) | SW1 | SW2 | SW3 | SW4 | --------------------------|-----|-----|-----|-----| Not Used | X | X | | | --------------------------|-----|-----|-----|-----| @@ -151,7 +151,6 @@ #include "machine/74259.h" #include "machine/i8279.h" #include "machine/segacrpt_device.h" -#include "sound/samples.h" #include "turbo.lh" #include "subroc3d.lh" @@ -178,23 +177,76 @@ #define VBSTART (224) - - - - - /************************************* * * Machine init * *************************************/ -MACHINE_RESET_MEMBER(turbo_state,buckrog) +void turbo_base_state::machine_start() +{ + m_digits.resolve(); + m_lamp.resolve(); + + save_item(NAME(m_i8279_scanlines)); + save_item(NAME(m_sound_state)); +} + +void buckrog_state::machine_start() { - m_buckrog_command = 0x00; - memset(m_alt_spriteram, 0x00, sizeof(m_alt_spriteram)); + turbo_base_state::machine_start(); + + save_item(NAME(m_fchg)); + save_item(NAME(m_mov)); + save_item(NAME(m_obch)); + save_item(NAME(m_command)); + save_item(NAME(m_myship)); + save_item(NAME(m_last_sound_a)); } +void buckrog_state::machine_reset() +{ + m_command = 0x00; +} + +void subroc3d_state::machine_start() +{ + turbo_base_state::machine_start(); + + save_item(NAME(m_col)); + save_item(NAME(m_ply)); + save_item(NAME(m_flip)); + save_item(NAME(m_mdis)); + save_item(NAME(m_mdir)); + save_item(NAME(m_tdis)); + save_item(NAME(m_tdir)); + save_item(NAME(m_fdis)); + save_item(NAME(m_fdir)); + save_item(NAME(m_hdis)); + save_item(NAME(m_hdir)); +} + +void turbo_state::machine_start() +{ + turbo_base_state::machine_start(); + + m_tachometer.resolve(); + m_speed.resolve(); + + save_item(NAME(m_osel)); + save_item(NAME(m_bsel)); + save_item(NAME(m_opa)); + save_item(NAME(m_opb)); + save_item(NAME(m_opc)); + save_item(NAME(m_ipa)); + save_item(NAME(m_ipb)); + save_item(NAME(m_ipc)); + save_item(NAME(m_fbpla)); + save_item(NAME(m_fbcol)); + save_item(NAME(m_collision)); + save_item(NAME(m_last_analog)); + save_item(NAME(m_accel)); +} /************************************* @@ -211,55 +263,55 @@ MACHINE_RESET_MEMBER(turbo_state,buckrog) 3 = IC6 - CPU Board, Sheet 5, D7 */ -void turbo_state::turbo_ppi0a_w(uint8_t data) +void turbo_state::ppi0a_w(uint8_t data) { - /* bit0-7 = 0PA0-7 */ - m_turbo_opa = data; + // bit0-7 = 0PA0-7 + m_opa = data; } -void turbo_state::turbo_ppi0b_w(uint8_t data) +void turbo_state::ppi0b_w(uint8_t data) { - /* bit0-7 = 0PB0-7 */ - m_turbo_opb = data; + // bit0-7 = 0PB0-7 + m_opb = data; } -void turbo_state::turbo_ppi0c_w(uint8_t data) +void turbo_state::ppi0c_w(uint8_t data) { - /* bit0-7 = 0PC0-7 */ - m_turbo_opc = data; + // bit0-7 = 0PC0-7 + m_opc = data; } -void turbo_state::turbo_ppi1a_w(uint8_t data) +void turbo_state::ppi1a_w(uint8_t data) { - /* bit0-7 = 1PA0-7 */ - m_turbo_ipa = data; + // bit0-7 = 1PA0-7 + m_ipa = data; } -void turbo_state::turbo_ppi1b_w(uint8_t data) +void turbo_state::ppi1b_w(uint8_t data) { - /* bit0-7 = 1PB0-7 */ - m_turbo_ipb = data; + // bit0-7 = 1PB0-7 + m_ipb = data; } -void turbo_state::turbo_ppi1c_w(uint8_t data) +void turbo_state::ppi1c_w(uint8_t data) { - /* bit0-7 = 1PC0-7 */ - m_turbo_ipc = data; + // bit0-7 = 1PC0-7 + m_ipc = data; } -void turbo_state::turbo_ppi3c_w(uint8_t data) +void turbo_state::ppi3c_w(uint8_t data) { - /* bit 0-3 = PLA0-3 */ - /* bit 4-6 = COL0-2 */ - /* bit 7 = n/c */ - m_turbo_fbpla = data & 0x0f; - m_turbo_fbcol = (data >> 4) & 0x07; + // bit 0-3 = PLA0-3 + // bit 4-6 = COL0-2 + // bit 7 = n/c + m_fbpla = data & 0x0f; + m_fbcol = (data >> 4) & 0x07; } @@ -275,32 +327,32 @@ void turbo_state::turbo_ppi3c_w(uint8_t data) 1 = IC119 - CPU Board, Sheet 3, A5 */ -void turbo_state::subroc3d_ppi0a_w(uint8_t data) +void subroc3d_state::ppi0a_w(uint8_t data) { - /* bit 0-3 = PLY0-3 */ - /* bit 4-7 = n/c */ - m_subroc3d_ply = data & 0x0f; + // bit 0-3 = PLY0-3 + // bit 4-7 = n/c + m_ply = data & 0x0f; } -void turbo_state::subroc3d_ppi0c_w(uint8_t data) +void subroc3d_state::ppi0c_w(uint8_t data) { - /* bit 0-3 = COL0-3 */ - m_subroc3d_col = data & 0x0f; + // bit 0-3 = COL0-3 + m_col = data & 0x0f; } -void turbo_state::subroc3d_ppi0b_w(uint8_t data) +void subroc3d_state::ppi0b_w(uint8_t data) { - /* bit 0 = COM1 (COIN METER 1) */ - /* bit 1 = COM2 (COIN METER 2) */ - /* bit 2 = STLA (START LAMP) */ - /* bit 3 = NOUSE (n/c) */ - /* bit 4 = FLIP (not really flip, just offset) */ + // bit 0 = COM1 (COIN METER 1) + // bit 1 = COM2 (COIN METER 2) + // bit 2 = STLA (START LAMP) + // bit 3 = NOUSE (n/c) + // bit 4 = FLIP (not really flip, just offset) machine().bookkeeping().coin_counter_w(0, data & 0x01); machine().bookkeeping().coin_counter_w(1, data & 0x02); m_lamp = BIT(data, 2); - m_subroc3d_flip = (data >> 4) & 1; + m_flip = (data >> 4) & 1; } /************************************* @@ -309,41 +361,41 @@ void turbo_state::subroc3d_ppi0b_w(uint8_t data) * *************************************/ -void turbo_state::buckrog_ppi0a_w(uint8_t data) +void buckrog_state::ppi0a_w(uint8_t data) { - /* bit 0-7 = data to be read on the /IOREQ */ - m_buckrog_command = data; + // bit 0-7 = data to be read on the /IOREQ + m_command = data; } -void turbo_state::buckrog_ppi0b_w(uint8_t data) +void buckrog_state::ppi0b_w(uint8_t data) { - /* bit 0-5 = MOV0-5 */ - /* bit 6-7 = n/c */ - m_buckrog_mov = data & 0x3f; + // bit 0-5 = MOV0-5 + // bit 6-7 = n/c + m_mov = data & 0x3f; } -void turbo_state::buckrog_ppi0c_w(uint8_t data) +void buckrog_state::ppi0c_w(uint8_t data) { - /* bit 0-2 = FCHG0 */ - /* bit 3-5 = n/c */ - /* bit 6 = /IOREQ on the 2nd CPU */ - /* bit 7 = /INT on the 2nd CPU */ - m_buckrog_fchg = data & 0x07; + // bit 0-2 = FCHG0 + // bit 3-5 = n/c + // bit 6 = /IOREQ on the 2nd CPU + // bit 7 = /INT on the 2nd CPU + m_fchg = data & 0x07; m_subcpu->set_input_line(0, (data & 0x80) ? CLEAR_LINE : ASSERT_LINE); } -void turbo_state::buckrog_ppi1c_w(uint8_t data) +void buckrog_state::ppi1c_w(uint8_t data) { - /* bit 0-2 = OBCH0-2 */ - /* bit 3 = n/c */ - /* bit 4 = COM1 (COIN METER 1) */ - /* bit 5 = COM2 (COIN METER 2) */ - /* bit 6 = STLA (START LAMP) */ - /* bit 7 = NOUSE (BODY SONIC) */ - m_buckrog_obch = data & 0x07; + // bit 0-2 = OBCH0-2 + // bit 3 = n/c + // bit 4 = COM1 (COIN METER 1) + // bit 5 = COM2 (COIN METER 2) + // bit 6 = STLA (START LAMP) + // bit 7 = NOUSE (BODY SONIC) + m_obch = data & 0x07; machine().bookkeeping().coin_counter_w(0, data & 0x10); machine().bookkeeping().coin_counter_w(1, data & 0x20); m_lamp = BIT(data, 6); @@ -356,12 +408,12 @@ void turbo_state::buckrog_ppi1c_w(uint8_t data) * *************************************/ -void turbo_state::scanlines_w(uint8_t data) +void turbo_base_state::scanlines_w(uint8_t data) { m_i8279_scanlines = data; } -void turbo_state::digit_w(uint8_t data) +void turbo_base_state::digit_w(uint8_t data) { static const uint8_t ls48_map[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x67,0x58,0x4c,0x62,0x69,0x78,0x00 }; @@ -376,29 +428,29 @@ void turbo_state::digit_w(uint8_t data) * *************************************/ -uint8_t turbo_state::turbo_collision_r() +uint8_t turbo_state::collision_r() { m_screen->update_partial(m_screen->vpos()); - return ioport("DSW3")->read() | (m_turbo_collision & 15); + return m_dsw3->read() | (m_collision & 15); } -void turbo_state::turbo_collision_clear_w(uint8_t data) +void turbo_state::collision_clear_w(uint8_t data) { m_screen->update_partial(m_screen->vpos()); - m_turbo_collision = 0; + m_collision = 0; } -uint8_t turbo_state::turbo_analog_r() +uint8_t turbo_state::analog_r() { - return ioport("DIAL")->read() - m_turbo_last_analog; + return m_dial->read() - m_last_analog; } -void turbo_state::turbo_analog_reset_w(uint8_t data) +void turbo_state::analog_reset_w(uint8_t data) { - m_turbo_last_analog = ioport("DIAL")->read(); + m_last_analog = m_dial->read(); } @@ -427,18 +479,18 @@ WRITE_LINE_MEMBER(turbo_state::start_lamp_w) * *************************************/ -uint8_t turbo_state::buckrog_cpu2_command_r() +uint8_t buckrog_state::subcpu_command_r() { - /* assert ACK */ - m_i8255_0->pc6_w(CLEAR_LINE); - return m_buckrog_command; + // assert ACK + m_i8255[0]->pc6_w(CLEAR_LINE); + return m_command; } -uint8_t turbo_state::buckrog_port_2_r() +uint8_t buckrog_state::port_2_r() { - int inp1 = ioport("DSW1")->read(); - int inp2 = ioport("DSW2")->read(); + int inp1 = m_dsw[0]->read(); + int inp2 = m_dsw[1]->read(); return (((inp2 >> 6) & 1) << 7) | (((inp2 >> 4) & 1) << 6) | @@ -451,10 +503,10 @@ uint8_t turbo_state::buckrog_port_2_r() } -uint8_t turbo_state::buckrog_port_3_r() +uint8_t buckrog_state::port_3_r() { - int inp1 = ioport("DSW1")->read(); - int inp2 = ioport("DSW2")->read(); + int inp1 = m_dsw[0]->read(); + int inp2 = m_dsw[1]->read(); return (((inp2 >> 7) & 1) << 7) | (((inp2 >> 5) & 1) << 6) | @@ -467,17 +519,16 @@ uint8_t turbo_state::buckrog_port_3_r() } -TIMER_CALLBACK_MEMBER(turbo_state::delayed_i8255_w) +TIMER_CALLBACK_MEMBER(buckrog_state::delayed_i8255_w) { - m_i8255_0->write(param >> 8, param & 0xff); + m_i8255[0]->write(param >> 8, param & 0xff); } -void turbo_state::buckrog_i8255_0_w(offs_t offset, uint8_t data) +void buckrog_state::i8255_0_w(offs_t offset, uint8_t data) { - /* the port C handshaking signals control the sub CPU IRQ, */ - /* so we have to sync whenever we access this PPI */ - machine().scheduler().synchronize(timer_expired_delegate(FUNC(turbo_state::delayed_i8255_w),this), ((offset & 3) << 8) | (data & 0xff)); + // the port C handshaking signals control the sub CPU IRQ, so we have to sync whenever we access this PPI + machine().scheduler().synchronize(timer_expired_delegate(FUNC(buckrog_state::delayed_i8255_w),this), ((offset & 3) << 8) | (data & 0xff)); } uint8_t turbo_state::spriteram_r(offs_t offset) @@ -499,23 +550,23 @@ void turbo_state::spriteram_w(offs_t offset, uint8_t data) * *************************************/ -void turbo_state::turbo_map(address_map &map) +void turbo_state::prg_map(address_map &map) { map(0x0000, 0x5fff).rom(); map(0xa000, 0xa0ff).mirror(0x0700).rw(FUNC(turbo_state::spriteram_r), FUNC(turbo_state::spriteram_w)); map(0xa800, 0xa807).mirror(0x07f8).w("outlatch", FUNC(ls259_device::write_d0)); - map(0xb000, 0xb3ff).mirror(0x0400).ram().share("spritepos"); - map(0xb800, 0xbfff).w(FUNC(turbo_state::turbo_analog_reset_w)); - map(0xe000, 0xe7ff).ram().w(FUNC(turbo_state::turbo_videoram_w)).share("videoram"); - map(0xe800, 0xefff).w(FUNC(turbo_state::turbo_collision_clear_w)); + map(0xb000, 0xb3ff).mirror(0x0400).ram().share(m_sprite_position); + map(0xb800, 0xbfff).w(FUNC(turbo_state::analog_reset_w)); + map(0xe000, 0xe7ff).ram().w(FUNC(turbo_state::videoram_w)).share(m_videoram); + map(0xe800, 0xefff).w(FUNC(turbo_state::collision_clear_w)); map(0xf000, 0xf7ff).ram(); - map(0xf800, 0xf803).mirror(0x00fc).rw(m_i8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write)); - map(0xf900, 0xf903).mirror(0x00fc).rw(m_i8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)); - map(0xfa00, 0xfa03).mirror(0x00fc).rw(m_i8255_2, FUNC(i8255_device::read), FUNC(i8255_device::write)); - map(0xfb00, 0xfb03).mirror(0x00fc).rw(m_i8255_3, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xf800, 0xf803).mirror(0x00fc).rw(m_i8255[0], FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xf900, 0xf903).mirror(0x00fc).rw(m_i8255[1], FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xfa00, 0xfa03).mirror(0x00fc).rw(m_i8255[2], FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xfb00, 0xfb03).mirror(0x00fc).rw(m_i8255[3], FUNC(i8255_device::read), FUNC(i8255_device::write)); map(0xfc00, 0xfc01).mirror(0x00fe).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write)); map(0xfd00, 0xfdff).portr("INPUT"); - map(0xfe00, 0xfeff).r(FUNC(turbo_state::turbo_collision_r)); + map(0xfe00, 0xfeff).r(FUNC(turbo_state::collision_r)); } @@ -526,20 +577,20 @@ void turbo_state::turbo_map(address_map &map) * *************************************/ -void turbo_state::subroc3d_map(address_map &map) +void subroc3d_state::prg_map(address_map &map) { map(0x0000, 0x9fff).rom(); - map(0xa000, 0xa3ff).ram().share("spritepos"); // CONT RAM - map(0xa400, 0xa7ff).ram().share("spriteram"); // CONT RAM + map(0xa000, 0xa3ff).ram().share(m_sprite_position); // CONT RAM + map(0xa400, 0xa7ff).ram().share(m_spriteram); // CONT RAM map(0xa800, 0xa800).mirror(0x07fc).portr("IN0"); // INPUT 253 map(0xa801, 0xa801).mirror(0x07fc).portr("IN1"); // INPUT 253 map(0xa802, 0xa802).mirror(0x07fc).portr("DSW2"); // INPUT 253 map(0xa803, 0xa803).mirror(0x07fc).portr("DSW3"); // INPUT 253 map(0xb000, 0xb7ff).ram(); // SCRATCH map(0xb800, 0xbfff); // HANDLE CL - map(0xe000, 0xe7ff).ram().w(FUNC(turbo_state::turbo_videoram_w)).share("videoram"); // FIX PAGE - map(0xe800, 0xe803).mirror(0x07fc).rw(m_i8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write)); - map(0xf000, 0xf003).mirror(0x07fc).rw(m_i8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xe000, 0xe7ff).ram().w(FUNC(subroc3d_state::videoram_w)).share(m_videoram); // FIX PAGE + map(0xe800, 0xe803).mirror(0x07fc).rw(m_i8255[0], FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xf000, 0xf003).mirror(0x07fc).rw(m_i8255[1], FUNC(i8255_device::read), FUNC(i8255_device::write)); map(0xf800, 0xf801).mirror(0x07fe).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write)); } @@ -551,40 +602,40 @@ void turbo_state::subroc3d_map(address_map &map) * *************************************/ -void turbo_state::buckrog_map(address_map &map) +void buckrog_state::main_prg_map(address_map &map) { map(0x0000, 0x7fff).rom(); - map(0xc000, 0xc7ff).ram().w(FUNC(turbo_state::turbo_videoram_w)).share("videoram"); // FIX PAGE - map(0xc800, 0xc803).mirror(0x07fc).r(m_i8255_0, FUNC(i8255_device::read)).w(FUNC(turbo_state::buckrog_i8255_0_w)); // 8255 - map(0xd000, 0xd003).mirror(0x07fc).rw(m_i8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)); // 8255 + map(0xc000, 0xc7ff).ram().w(FUNC(buckrog_state::videoram_w)).share(m_videoram); // FIX PAGE + map(0xc800, 0xc803).mirror(0x07fc).r(m_i8255[0], FUNC(i8255_device::read)).w(FUNC(buckrog_state::i8255_0_w)); // 8255 + map(0xd000, 0xd003).mirror(0x07fc).rw(m_i8255[1], FUNC(i8255_device::read), FUNC(i8255_device::write)); // 8255 map(0xd800, 0xd801).mirror(0x07fe).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write)); - map(0xe000, 0xe3ff).ram().share("spritepos"); // CONT RAM - map(0xe400, 0xe7ff).ram().share("spriteram"); // CONT RAM + map(0xe000, 0xe3ff).ram().share(m_sprite_position); // CONT RAM + map(0xe400, 0xe7ff).ram().share(m_spriteram); // CONT RAM map(0xe800, 0xe800).mirror(0x07fc).portr("IN0"); // INPUT map(0xe801, 0xe801).mirror(0x07fc).portr("IN1"); - map(0xe802, 0xe802).mirror(0x07fc).r(FUNC(turbo_state::buckrog_port_2_r)); - map(0xe803, 0xe803).mirror(0x07fc).r(FUNC(turbo_state::buckrog_port_3_r)); + map(0xe802, 0xe802).mirror(0x07fc).r(FUNC(buckrog_state::port_2_r)); + map(0xe803, 0xe803).mirror(0x07fc).r(FUNC(buckrog_state::port_3_r)); map(0xf000, 0xf000); map(0xf800, 0xffff).ram(); // SCRATCH } -void turbo_state::decrypted_opcodes_map(address_map &map) +void buckrog_state::decrypted_opcodes_map(address_map &map) { - map(0x0000, 0x7fff).rom().share("decrypted_opcodes"); + map(0x0000, 0x7fff).rom().share(m_decrypted_opcodes); } -void turbo_state::buckrog_cpu2_map(address_map &map) +void buckrog_state::sub_prg_map(address_map &map) { map(0x0000, 0x1fff).rom(); - map(0x0000, 0xdfff).w(FUNC(turbo_state::buckrog_bitmap_w)); + map(0x0000, 0xdfff).w(FUNC(buckrog_state::bitmap_w)); map(0xe000, 0xe7ff).mirror(0x1800).ram(); } -void turbo_state::buckrog_cpu2_portmap(address_map &map) +void buckrog_state::sub_portmap(address_map &map) { map.global_mask(0xff); - map(0x00, 0xff).r(FUNC(turbo_state::buckrog_cpu2_command_r)); + map(0x00, 0xff).r(FUNC(buckrog_state::subcpu_command_r)); } @@ -596,17 +647,17 @@ void turbo_state::buckrog_cpu2_portmap(address_map &map) *************************************/ static INPUT_PORTS_START( turbo ) - PORT_START("INPUT") /* IN0 */ - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) /* ACCEL B */ - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) /* ACCEL A */ - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_TOGGLE /* SHIFT */ + PORT_START("INPUT") // IN0 + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) // ACCEL B + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) // ACCEL A + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_TOGGLE // SHIFT PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) PORT_SERVICE_NO_TOGGLE( 0x10, IP_ACTIVE_LOW ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_START("DSW1") /* DSW 1 */ + PORT_START("DSW1") // DSW1 PORT_DIPNAME( 0x03, 0x03, "Car On Extended Play" ) PORT_DIPLOCATION("SW1:1,2") PORT_DIPSETTING( 0x00, "1" ) PORT_DIPSETTING( 0x01, "2" ) @@ -631,7 +682,7 @@ static INPUT_PORTS_START( turbo ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_START("DSW2") /* DSW 2 */ + PORT_START("DSW2") // DSW2 PORT_DIPNAME( 0x03, 0x03, DEF_STR( Game_Time ) ) PORT_DIPLOCATION("SW2:1,2") PORT_DIPSETTING( 0x00, "60 seconds" ) PORT_DIPSETTING( 0x01, "70 seconds" ) @@ -641,7 +692,7 @@ static INPUT_PORTS_START( turbo ) PORT_DIPSETTING( 0x18, DEF_STR( 4C_1C )) PORT_DIPSETTING( 0x14, DEF_STR( 3C_1C )) PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C )) -/* PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ))*/ + PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C )) PORT_DIPSETTING( 0x1c, DEF_STR( 1C_1C )) PORT_DIPSETTING( 0x04, DEF_STR( 1C_2C )) PORT_DIPSETTING( 0x08, DEF_STR( 1C_3C )) @@ -650,14 +701,14 @@ static INPUT_PORTS_START( turbo ) PORT_DIPSETTING( 0xc0, DEF_STR( 4C_1C )) PORT_DIPSETTING( 0xa0, DEF_STR( 3C_1C )) PORT_DIPSETTING( 0x80, DEF_STR( 2C_1C )) -/* PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ))*/ + PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C )) PORT_DIPSETTING( 0xe0, DEF_STR( 1C_1C )) PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C )) PORT_DIPSETTING( 0x40, DEF_STR( 1C_3C )) PORT_DIPSETTING( 0x60, DEF_STR( 1C_6C )) - PORT_START("DSW3") /* Collision and DSW 3 */ - PORT_BIT( 0x0f, 0x00, IPT_CUSTOM ) /* Merged with collision bits */ + PORT_START("DSW3") // Collision and DSW 3 + PORT_BIT( 0x0f, 0x00, IPT_CUSTOM ) // Merged with collision bits PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:1") PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) @@ -671,14 +722,14 @@ static INPUT_PORTS_START( turbo ) PORT_DIPSETTING( 0x80, DEF_STR( Upright ) ) PORT_DIPSETTING( 0x00, "Cockpit") - PORT_START("DIAL") /* IN0 */ + PORT_START("DIAL") // IN0 PORT_BIT( 0xff, 0, IPT_DIAL ) PORT_SENSITIVITY(10) PORT_KEYDELTA(30) - /* this is actually a variable resistor */ + // this is actually a variable resistor PORT_START("VR1") PORT_ADJUSTER(31, "Sprite scale offset") - /* this is actually a variable resistor */ + // this is actually a variable resistor PORT_START("VR2") PORT_ADJUSTER(91, "Sprite scale gain") INPUT_PORTS_END @@ -699,7 +750,7 @@ static INPUT_PORTS_START( subroc3d ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_START("DSW2") /* DSW 2 */ + PORT_START("DSW2") // DSW2 PORT_DIPNAME( 0x07, 0x00, DEF_STR( Coin_A )) PORT_DIPLOCATION("SW2:1,2,3") PORT_DIPSETTING( 0x07, DEF_STR( 5C_1C ) ) PORT_DIPSETTING( 0x06, DEF_STR( 4C_1C ) ) @@ -724,7 +775,7 @@ static INPUT_PORTS_START( subroc3d ) PORT_DIPSETTING( 0x80, "4" ) PORT_DIPSETTING( 0xc0, "5" ) - PORT_START("DSW3") /* DSW 3 */ + PORT_START("DSW3") // DSW 3 PORT_DIPNAME( 0x03, 0x03, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW3:1,2") PORT_DIPSETTING( 0x00, "20000" ) PORT_DIPSETTING( 0x01, "40000" ) @@ -749,7 +800,7 @@ static INPUT_PORTS_START( subroc3d ) PORT_DIPSETTING( 0x00, "Endless" ) PORT_DIPSETTING( 0x80, DEF_STR( Normal ) ) - PORT_START("DSW1") /* DSW 1 */ /* Unused */ + PORT_START("DSW1") // DSW1 // Unused INPUT_PORTS_END @@ -761,7 +812,7 @@ static INPUT_PORTS_START( buckrog ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) - PORT_START("IN1") /* Inputs */ + PORT_START("IN1") // Inputs PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) @@ -771,7 +822,7 @@ static INPUT_PORTS_START( buckrog ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_START("DSW1") /* DSW 1 */ + PORT_START("DSW1") // DSW1 PORT_DIPNAME( 0x07, 0x00, DEF_STR( Coin_A )) PORT_DIPLOCATION("SW1:1,2,3") PORT_DIPSETTING( 0x07, DEF_STR( 5C_1C ) ) PORT_DIPSETTING( 0x06, DEF_STR( 4C_1C ) ) @@ -797,7 +848,7 @@ static INPUT_PORTS_START( buckrog ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_START("DSW2") /* DSW 2 */ + PORT_START("DSW2") // DSW2 PORT_DIPNAME( 0x01, 0x00, "Collisions" ) PORT_DIPLOCATION("SW2:1") PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) @@ -845,30 +896,30 @@ GFXDECODE_END void turbo_state::turbo(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware Z80(config, m_maincpu, MASTER_CLOCK/4); - m_maincpu->set_addrmap(AS_PROGRAM, &turbo_state::turbo_map); + m_maincpu->set_addrmap(AS_PROGRAM, &turbo_state::prg_map); m_maincpu->set_vblank_int("screen", FUNC(turbo_state::irq0_line_hold)); - I8255(config, m_i8255_0); - m_i8255_0->out_pa_callback().set(FUNC(turbo_state::turbo_ppi0a_w)); - m_i8255_0->out_pb_callback().set(FUNC(turbo_state::turbo_ppi0b_w)); - m_i8255_0->out_pc_callback().set(FUNC(turbo_state::turbo_ppi0c_w)); + I8255(config, m_i8255[0]); + m_i8255[0]->out_pa_callback().set(FUNC(turbo_state::ppi0a_w)); + m_i8255[0]->out_pb_callback().set(FUNC(turbo_state::ppi0b_w)); + m_i8255[0]->out_pc_callback().set(FUNC(turbo_state::ppi0c_w)); - I8255(config, m_i8255_1); - m_i8255_1->out_pa_callback().set(FUNC(turbo_state::turbo_ppi1a_w)); - m_i8255_1->out_pb_callback().set(FUNC(turbo_state::turbo_ppi1b_w)); - m_i8255_1->out_pc_callback().set(FUNC(turbo_state::turbo_ppi1c_w)); + I8255(config, m_i8255[1]); + m_i8255[1]->out_pa_callback().set(FUNC(turbo_state::ppi1a_w)); + m_i8255[1]->out_pb_callback().set(FUNC(turbo_state::ppi1b_w)); + m_i8255[1]->out_pc_callback().set(FUNC(turbo_state::ppi1c_w)); - I8255(config, m_i8255_2); - m_i8255_2->out_pa_callback().set(FUNC(turbo_state::turbo_sound_a_w)); - m_i8255_2->out_pb_callback().set(FUNC(turbo_state::turbo_sound_b_w)); - m_i8255_2->out_pc_callback().set(FUNC(turbo_state::turbo_sound_c_w)); + I8255(config, m_i8255[2]); + m_i8255[2]->out_pa_callback().set(FUNC(turbo_state::sound_a_w)); + m_i8255[2]->out_pb_callback().set(FUNC(turbo_state::sound_b_w)); + m_i8255[2]->out_pc_callback().set(FUNC(turbo_state::sound_c_w)); - I8255(config, m_i8255_3); - m_i8255_3->in_pa_callback().set(FUNC(turbo_state::turbo_analog_r)); - m_i8255_3->in_pb_callback().set_ioport("DSW2"); - m_i8255_3->out_pc_callback().set(FUNC(turbo_state::turbo_ppi3c_w)); + I8255(config, m_i8255[3]); + m_i8255[3]->in_pa_callback().set(FUNC(turbo_state::analog_r)); + m_i8255[3]->in_pb_callback().set_ioport("DSW2"); + m_i8255[3]->out_pc_callback().set(FUNC(turbo_state::ppi3c_w)); i8279_device &kbdc(I8279(config, "i8279", MASTER_CLOCK/16)); // clock = H1 kbdc.out_sl_callback().set(FUNC(turbo_state::scanlines_w)); // scan SL lines @@ -880,126 +931,119 @@ void turbo_state::turbo(machine_config &config) outlatch.q_out_cb<1>().set(FUNC(turbo_state::coin_meter_2_w)); outlatch.q_out_cb<3>().set(FUNC(turbo_state::start_lamp_w)); - /* video hardware */ + // video hardware GFXDECODE(config, m_gfxdecode, "palette", gfx_turbo); - PALETTE(config, "palette", FUNC(turbo_state::turbo_palette), 256); + PALETTE(config, "palette", FUNC(turbo_state::palette), 256); SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE); m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART); - m_screen->set_screen_update(FUNC(turbo_state::screen_update_turbo)); + m_screen->set_screen_update(FUNC(turbo_state::screen_update)); m_screen->set_palette("palette"); - MCFG_VIDEO_START_OVERRIDE(turbo_state,turbo) - - /* sound hardware */ + // sound hardware turbo_samples(config); } -void turbo_state::subroc3d(machine_config &config) +void subroc3d_state::subroc3d(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware Z80(config, m_maincpu, MASTER_CLOCK/4); - m_maincpu->set_addrmap(AS_PROGRAM, &turbo_state::subroc3d_map); - m_maincpu->set_vblank_int("screen", FUNC(turbo_state::irq0_line_hold)); + m_maincpu->set_addrmap(AS_PROGRAM, &subroc3d_state::prg_map); + m_maincpu->set_vblank_int("screen", FUNC(subroc3d_state::irq0_line_hold)); - I8255(config, m_i8255_0); - m_i8255_0->out_pa_callback().set(FUNC(turbo_state::subroc3d_ppi0a_w)); - m_i8255_0->out_pb_callback().set(FUNC(turbo_state::subroc3d_ppi0b_w)); - m_i8255_0->out_pc_callback().set(FUNC(turbo_state::subroc3d_ppi0c_w)); + I8255(config, m_i8255[0]); + m_i8255[0]->out_pa_callback().set(FUNC(subroc3d_state::ppi0a_w)); + m_i8255[0]->out_pb_callback().set(FUNC(subroc3d_state::ppi0b_w)); + m_i8255[0]->out_pc_callback().set(FUNC(subroc3d_state::ppi0c_w)); - I8255(config, m_i8255_1); - m_i8255_1->out_pa_callback().set(FUNC(turbo_state::subroc3d_sound_a_w)); - m_i8255_1->out_pb_callback().set(FUNC(turbo_state::subroc3d_sound_b_w)); - m_i8255_1->out_pc_callback().set(FUNC(turbo_state::subroc3d_sound_c_w)); + I8255(config, m_i8255[1]); + m_i8255[1]->out_pa_callback().set(FUNC(subroc3d_state::sound_a_w)); + m_i8255[1]->out_pb_callback().set(FUNC(subroc3d_state::sound_b_w)); + m_i8255[1]->out_pc_callback().set(FUNC(subroc3d_state::sound_c_w)); i8279_device &kbdc(I8279(config, "i8279", MASTER_CLOCK/16)); // unknown clock - kbdc.out_sl_callback().set(FUNC(turbo_state::scanlines_w)); // scan SL lines - kbdc.out_disp_callback().set(FUNC(turbo_state::digit_w)); // display A&B + kbdc.out_sl_callback().set(FUNC(subroc3d_state::scanlines_w)); // scan SL lines + kbdc.out_disp_callback().set(FUNC(subroc3d_state::digit_w)); // display A&B kbdc.in_rl_callback().set_ioport("DSW1"); // kbd RL lines - /* video hardware */ + // video hardware GFXDECODE(config, m_gfxdecode, "palette", gfx_turbo); - PALETTE(config, "palette", FUNC(turbo_state::subroc3d_palette), 256); + PALETTE(config, "palette", FUNC(subroc3d_state::palette), 256); SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE); m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART); - m_screen->set_screen_update(FUNC(turbo_state::screen_update_subroc3d)); + m_screen->set_screen_update(FUNC(subroc3d_state::screen_update)); m_screen->set_palette("palette"); - MCFG_VIDEO_START_OVERRIDE(turbo_state,turbo) - - /* sound hardware */ + // sound hardware subroc3d_samples(config); } -void turbo_state::buckrog(machine_config &config) +void buckrog_state::buckrog(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware Z80(config, m_maincpu, MASTER_CLOCK/4); - m_maincpu->set_addrmap(AS_PROGRAM, &turbo_state::buckrog_map); - m_maincpu->set_addrmap(AS_OPCODES, &turbo_state::decrypted_opcodes_map); - m_maincpu->set_vblank_int("screen", FUNC(turbo_state::irq0_line_hold)); + m_maincpu->set_addrmap(AS_PROGRAM, &buckrog_state::main_prg_map); + m_maincpu->set_addrmap(AS_OPCODES, &buckrog_state::decrypted_opcodes_map); + m_maincpu->set_vblank_int("screen", FUNC(buckrog_state::irq0_line_hold)); Z80(config, m_subcpu, MASTER_CLOCK/4); - m_subcpu->set_addrmap(AS_PROGRAM, &turbo_state::buckrog_cpu2_map); - m_subcpu->set_addrmap(AS_IO, &turbo_state::buckrog_cpu2_portmap); + m_subcpu->set_addrmap(AS_PROGRAM, &buckrog_state::sub_prg_map); + m_subcpu->set_addrmap(AS_IO, &buckrog_state::sub_portmap); config.set_maximum_quantum(attotime::from_hz(600)); - MCFG_MACHINE_RESET_OVERRIDE(turbo_state,buckrog) - I8255(config, m_i8255_0); - m_i8255_0->out_pa_callback().set(FUNC(turbo_state::buckrog_ppi0a_w)); - m_i8255_0->out_pb_callback().set(FUNC(turbo_state::buckrog_ppi0b_w)); - m_i8255_0->out_pc_callback().set(FUNC(turbo_state::buckrog_ppi0c_w)); + I8255(config, m_i8255[0]); + m_i8255[0]->out_pa_callback().set(FUNC(buckrog_state::ppi0a_w)); + m_i8255[0]->out_pb_callback().set(FUNC(buckrog_state::ppi0b_w)); + m_i8255[0]->out_pc_callback().set(FUNC(buckrog_state::ppi0c_w)); - I8255(config, m_i8255_1); - m_i8255_1->out_pa_callback().set(FUNC(turbo_state::buckrog_sound_a_w)); - m_i8255_1->out_pb_callback().set(FUNC(turbo_state::buckrog_sound_b_w)); - m_i8255_1->out_pc_callback().set(FUNC(turbo_state::buckrog_ppi1c_w)); + I8255(config, m_i8255[1]); + m_i8255[1]->out_pa_callback().set(FUNC(buckrog_state::sound_a_w)); + m_i8255[1]->out_pb_callback().set(FUNC(buckrog_state::sound_b_w)); + m_i8255[1]->out_pc_callback().set(FUNC(buckrog_state::ppi1c_w)); i8279_device &kbdc(I8279(config, "i8279", MASTER_CLOCK/16)); // unknown clock - kbdc.out_sl_callback().set(FUNC(turbo_state::scanlines_w)); // scan SL lines - kbdc.out_disp_callback().set(FUNC(turbo_state::digit_w)); // display A&B + kbdc.out_sl_callback().set(FUNC(buckrog_state::scanlines_w)); // scan SL lines + kbdc.out_disp_callback().set(FUNC(buckrog_state::digit_w)); // display A&B kbdc.in_rl_callback().set_ioport("DSW1"); // kbd RL lines - /* video hardware */ + // video hardware GFXDECODE(config, m_gfxdecode, "palette", gfx_turbo); - PALETTE(config, "palette", FUNC(turbo_state::buckrog_palette), 1024); + PALETTE(config, "palette", FUNC(buckrog_state::palette), 1024); SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE); m_screen->set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART); - m_screen->set_screen_update(FUNC(turbo_state::screen_update_buckrog)); + m_screen->set_screen_update(FUNC(buckrog_state::screen_update)); m_screen->set_palette("palette"); - MCFG_VIDEO_START_OVERRIDE(turbo_state,buckrog) - - /* sound hardware */ + // sound hardware buckrog_samples(config); } -void turbo_state::buckrogu(machine_config &config) +void buckrog_state::buckrogu(machine_config &config) { buckrog(config); Z80(config.replace(), m_maincpu, MASTER_CLOCK/4); - m_maincpu->set_addrmap(AS_PROGRAM, &turbo_state::buckrog_map); - m_maincpu->set_vblank_int("screen", FUNC(turbo_state::irq0_line_hold)); + m_maincpu->set_addrmap(AS_PROGRAM, &buckrog_state::main_prg_map); + m_maincpu->set_vblank_int("screen", FUNC(buckrog_state::irq0_line_hold)); } -void turbo_state::buckroge(machine_config &config) +void buckrog_state::buckroge(machine_config &config) { buckrog(config); - /* basic machine hardware */ + // basic machine hardware sega_315_5014_device &maincpu(SEGA_315_5014(config.replace(), m_maincpu, MASTER_CLOCK/4)); - maincpu.set_addrmap(AS_PROGRAM, &turbo_state::buckrog_map); - maincpu.set_addrmap(AS_OPCODES, &turbo_state::decrypted_opcodes_map); - maincpu.set_vblank_int("screen", FUNC(turbo_state::irq0_line_hold)); + maincpu.set_addrmap(AS_PROGRAM, &buckrog_state::main_prg_map); + maincpu.set_addrmap(AS_OPCODES, &buckrog_state::decrypted_opcodes_map); + maincpu.set_vblank_int("screen", FUNC(buckrog_state::irq0_line_hold)); maincpu.set_decrypted_tag(":decrypted_opcodes"); } @@ -1015,29 +1059,29 @@ ROM_START( turbo ) ROM_LOAD( "epr-1514.cpu-ic89", 0x2000, 0x2000, CRC(25af63b0) SHA1(9af4b3da83a4cef79b7dd0e9061132c499872c1c) ) ROM_LOAD( "epr-1515.cpu-ic103", 0x4000, 0x2000, CRC(059c1c36) SHA1(ba870e6f45ff15aa148b2c2f213c879144aaacf0) ) - ROM_REGION( 0x20000, "sprites", 0 ) /* sprite data */ - ROM_LOAD( "epr-1246.prom-ic84", 0x00000, 0x2000, CRC(555bfe9a) SHA1(1e56385475eeff044dcd9b44a154991d3efe995e) ) /* level 0 */ + ROM_REGION( 0x20000, "sprites", 0 ) + ROM_LOAD( "epr-1246.prom-ic84", 0x00000, 0x2000, CRC(555bfe9a) SHA1(1e56385475eeff044dcd9b44a154991d3efe995e) ) // level 0 ROM_RELOAD( 0x02000, 0x2000 ) - ROM_LOAD( "epr-1247.prom-ic86", 0x04000, 0x2000, CRC(c8c5e4d5) SHA1(da70297340ddea0cd7fe04f2d94ea65f8202d0e5) ) /* level 1 */ + ROM_LOAD( "epr-1247.prom-ic86", 0x04000, 0x2000, CRC(c8c5e4d5) SHA1(da70297340ddea0cd7fe04f2d94ea65f8202d0e5) ) // level 1 ROM_RELOAD( 0x06000, 0x2000 ) - ROM_LOAD( "epr-1248.prom-ic88", 0x08000, 0x2000, CRC(82fe5b94) SHA1(b96688ca0cfd90fdc4ee7c2e6c0b66726cc5713c) ) /* level 2 */ + ROM_LOAD( "epr-1248.prom-ic88", 0x08000, 0x2000, CRC(82fe5b94) SHA1(b96688ca0cfd90fdc4ee7c2e6c0b66726cc5713c) ) // level 2 ROM_RELOAD( 0x0a000, 0x2000 ) - ROM_LOAD( "epr-1249.prom-ic90", 0x0c000, 0x2000, CRC(e258e009) SHA1(598d382db0f789ea2fde749b7467abed545de25a) ) /* level 3 */ + ROM_LOAD( "epr-1249.prom-ic90", 0x0c000, 0x2000, CRC(e258e009) SHA1(598d382db0f789ea2fde749b7467abed545de25a) ) // level 3 ROM_LOAD( "epr-1250.prom-ic108",0x0e000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_LOAD( "epr-1251.prom-ic92", 0x10000, 0x2000, CRC(292573de) SHA1(3ddc980d11478a6a6e4082c2f76c1ab82ffe2f36) ) /* level 4 */ + ROM_LOAD( "epr-1251.prom-ic92", 0x10000, 0x2000, CRC(292573de) SHA1(3ddc980d11478a6a6e4082c2f76c1ab82ffe2f36) ) // level 4 ROM_LOAD( "epr-1252.prom-ic110",0x12000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_LOAD( "epr-1253.prom-ic94", 0x14000, 0x2000, CRC(92783626) SHA1(13979eb964112436182d2a92f21803bcc28f4a4a) ) /* level 5 */ + ROM_LOAD( "epr-1253.prom-ic94", 0x14000, 0x2000, CRC(92783626) SHA1(13979eb964112436182d2a92f21803bcc28f4a4a) ) // level 5 ROM_LOAD( "epr-1254.prom-ic112",0x16000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_LOAD( "epr-1255.prom-ic32", 0x18000, 0x2000, CRC(485dcef9) SHA1(0f760ebb42cc2580a29758c72428a41d74477ce6) ) /* level 6 */ + ROM_LOAD( "epr-1255.prom-ic32", 0x18000, 0x2000, CRC(485dcef9) SHA1(0f760ebb42cc2580a29758c72428a41d74477ce6) ) // level 6 ROM_LOAD( "epr-1256.prom-ic47", 0x1a000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_LOAD( "epr-1257.prom-ic34", 0x1c000, 0x2000, CRC(4ca984ce) SHA1(99f294fb203f23929b44baa2dd1825c67dde08a1) ) /* level 7 */ + ROM_LOAD( "epr-1257.prom-ic34", 0x1c000, 0x2000, CRC(4ca984ce) SHA1(99f294fb203f23929b44baa2dd1825c67dde08a1) ) // level 7 ROM_LOAD( "epr-1258.prom-ic49", 0x1e000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_REGION( 0x1000, "fgtiles", 0 ) /* foreground data */ + ROM_REGION( 0x1000, "fgtiles", 0 ) ROM_LOAD( "epr-1244.cpu-ic111", 0x0000, 0x0800, CRC(17f67424) SHA1(6126562510f1509f3487faaa3b9d7470ab600a2c) ) ROM_LOAD( "epr-1245.cpu-ic122", 0x0800, 0x0800, CRC(2ba0b46b) SHA1(5d4d4f19ad7a911c7b37db190a420faf665546b4) ) - ROM_REGION( 0x4800, "road", 0 ) /* road data */ + ROM_REGION( 0x4800, "road", 0 ) ROM_LOAD( "epr-1125.cpu-ic1", 0x0000, 0x0800, CRC(65b5d44b) SHA1(bbdd5db013c9d876e9666f17c48569c7531bfc08) ) ROM_LOAD( "epr-1126.cpu-ic2", 0x0800, 0x0800, CRC(685ace1b) SHA1(99c8d36ac910169b27676d18c894433c2ba44853) ) ROM_LOAD( "epr-1127.cpu-ic13", 0x1000, 0x0800, CRC(9233c9ca) SHA1(cbf9a0f564d8ace1ccd701c1769dbc001d465851) ) @@ -1048,18 +1092,18 @@ ROM_START( turbo ) ROM_LOAD( "epr-1242.cpu-ic42", 0x3800, 0x0800, CRC(04866769) SHA1(1f9c0d53766fdaf8de57d3df05f291c2ca3dc5fb) ) ROM_LOAD( "epr-1243.cpu-ic74", 0x4000, 0x0800, CRC(29854c48) SHA1(cab89bc30f83d9746931ddf6f95a6d0c8a517e5d) ) - ROM_REGION( 0x1020, "proms", 0 ) /* various PROMs */ - ROM_LOAD( "pr-1114.prom-ic13", 0x0000, 0x0020, CRC(78aded46) SHA1(c78afe804f8b8e837b0c502de5b8715a41fb92b9) ) /* road red/green color table */ - ROM_LOAD( "pr-1115.prom-ic18", 0x0020, 0x0020, CRC(5394092c) SHA1(129ff61104979ff6a3c3af8bf81c04ae9b133c9e) ) /* road collision/enable */ - ROM_LOAD( "pr-1116.prom-ic20", 0x0040, 0x0020, CRC(3956767d) SHA1(073aaf57175526660fcf7af2e16e7f1d1aaba9a9) ) /* collision detection */ - ROM_LOAD( "pr-1117.prom-ic21", 0x0060, 0x0020, CRC(f06d9907) SHA1(f11db7800f41b03e79f5eef8d7ef3ae0a6277518) ) /* road green/blue color table */ - ROM_LOAD( "pr-1118.cpu-ic99", 0x0100, 0x0100, CRC(07324cfd) SHA1(844abc2042d6810fa34d84ff1ed57744886c6ea6) ) /* background color table */ - ROM_LOAD( "pr-1119.cpu-ic50", 0x0200, 0x0200, CRC(57ebd4bc) SHA1(932649da3537666f95833a8a8aff506217bd9aa1) ) /* sprite Y scaling */ - ROM_LOAD( "pr-1120.cpu-ic62", 0x0400, 0x0200, CRC(8dd4c8a8) SHA1(e8d9cf08f115d57c44746fa0ff28f47b064b4193) ) /* video timing */ - ROM_LOAD( "pr-1121.prom-ic29", 0x0600, 0x0200, CRC(7692f497) SHA1(42468c0705df9928e15ff8deb7e793a6c0c04353) ) /* palette */ - ROM_LOAD( "pr-1122.prom-ic11", 0x0800, 0x0400, CRC(1a86ce70) SHA1(cab708b9a089b2e28f2298c1e4fae6e200923527) ) /* sprite priorities */ - ROM_LOAD( "pr-1123.prom-ic12", 0x0c00, 0x0400, CRC(02d2cb52) SHA1(c34d6b60355747ce20fcb8d322df0e188d187f10) ) /* sprite/road/background priorities */ - ROM_LOAD( "pr-1279.sound-ic40", 0x1000, 0x0020, CRC(b369a6ae) SHA1(dda7c6cf58ce5173f29a3084c85393c0c4587086) ) /* sound board PROM */ + ROM_REGION( 0x1020, "proms", 0 ) + ROM_LOAD( "pr-1114.prom-ic13", 0x0000, 0x0020, CRC(78aded46) SHA1(c78afe804f8b8e837b0c502de5b8715a41fb92b9) ) // road red/green color table + ROM_LOAD( "pr-1115.prom-ic18", 0x0020, 0x0020, CRC(5394092c) SHA1(129ff61104979ff6a3c3af8bf81c04ae9b133c9e) ) // road collision/enable + ROM_LOAD( "pr-1116.prom-ic20", 0x0040, 0x0020, CRC(3956767d) SHA1(073aaf57175526660fcf7af2e16e7f1d1aaba9a9) ) // collision detection + ROM_LOAD( "pr-1117.prom-ic21", 0x0060, 0x0020, CRC(f06d9907) SHA1(f11db7800f41b03e79f5eef8d7ef3ae0a6277518) ) // road green/blue color table + ROM_LOAD( "pr-1118.cpu-ic99", 0x0100, 0x0100, CRC(07324cfd) SHA1(844abc2042d6810fa34d84ff1ed57744886c6ea6) ) // background color table + ROM_LOAD( "pr-1119.cpu-ic50", 0x0200, 0x0200, CRC(57ebd4bc) SHA1(932649da3537666f95833a8a8aff506217bd9aa1) ) // sprite Y scaling + ROM_LOAD( "pr-1120.cpu-ic62", 0x0400, 0x0200, CRC(8dd4c8a8) SHA1(e8d9cf08f115d57c44746fa0ff28f47b064b4193) ) // video timing + ROM_LOAD( "pr-1121.prom-ic29", 0x0600, 0x0200, CRC(7692f497) SHA1(42468c0705df9928e15ff8deb7e793a6c0c04353) ) // palette + ROM_LOAD( "pr-1122.prom-ic11", 0x0800, 0x0400, CRC(1a86ce70) SHA1(cab708b9a089b2e28f2298c1e4fae6e200923527) ) // sprite priorities + ROM_LOAD( "pr-1123.prom-ic12", 0x0c00, 0x0400, CRC(02d2cb52) SHA1(c34d6b60355747ce20fcb8d322df0e188d187f10) ) // sprite/road/background priorities + ROM_LOAD( "pr-1279.sound-ic40", 0x1000, 0x0020, CRC(b369a6ae) SHA1(dda7c6cf58ce5173f29a3084c85393c0c4587086) ) // sound board PROM ROM_END @@ -1069,29 +1113,29 @@ ROM_START( turboa ) ROM_LOAD( "epr-1263.cpu-ic89", 0x2000, 0x2000, CRC(45e01608) SHA1(0a9812714c41904bef7a8777b4aae63b5a1dd633) ) ROM_LOAD( "epr-1264.cpu-ic103", 0x4000, 0x2000, CRC(1802f6c7) SHA1(5c575821d849d955059868b3dd3167b4bef9a8c4) ) - ROM_REGION( 0x20000, "sprites", 0 ) /* sprite data */ - ROM_LOAD( "epr-1246.prom-ic84", 0x00000, 0x2000, CRC(555bfe9a) SHA1(1e56385475eeff044dcd9b44a154991d3efe995e) ) /* level 0 */ + ROM_REGION( 0x20000, "sprites", 0 ) + ROM_LOAD( "epr-1246.prom-ic84", 0x00000, 0x2000, CRC(555bfe9a) SHA1(1e56385475eeff044dcd9b44a154991d3efe995e) ) // level 0 ROM_RELOAD( 0x02000, 0x2000 ) - ROM_LOAD( "epr-1247.prom-ic86", 0x04000, 0x2000, CRC(c8c5e4d5) SHA1(da70297340ddea0cd7fe04f2d94ea65f8202d0e5) ) /* level 1 */ + ROM_LOAD( "epr-1247.prom-ic86", 0x04000, 0x2000, CRC(c8c5e4d5) SHA1(da70297340ddea0cd7fe04f2d94ea65f8202d0e5) ) // level 1 ROM_RELOAD( 0x06000, 0x2000 ) - ROM_LOAD( "epr-1248.prom-ic88", 0x08000, 0x2000, CRC(82fe5b94) SHA1(b96688ca0cfd90fdc4ee7c2e6c0b66726cc5713c) ) /* level 2 */ + ROM_LOAD( "epr-1248.prom-ic88", 0x08000, 0x2000, CRC(82fe5b94) SHA1(b96688ca0cfd90fdc4ee7c2e6c0b66726cc5713c) ) // level 2 ROM_RELOAD( 0x0a000, 0x2000 ) - ROM_LOAD( "epr-1249.prom-ic90", 0x0c000, 0x2000, CRC(e258e009) SHA1(598d382db0f789ea2fde749b7467abed545de25a) ) /* level 3 */ + ROM_LOAD( "epr-1249.prom-ic90", 0x0c000, 0x2000, CRC(e258e009) SHA1(598d382db0f789ea2fde749b7467abed545de25a) ) // level 3 ROM_LOAD( "epr-1250.prom-ic108",0x0e000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_LOAD( "epr-1251.prom-ic92", 0x10000, 0x2000, CRC(292573de) SHA1(3ddc980d11478a6a6e4082c2f76c1ab82ffe2f36) ) /* level 4 */ + ROM_LOAD( "epr-1251.prom-ic92", 0x10000, 0x2000, CRC(292573de) SHA1(3ddc980d11478a6a6e4082c2f76c1ab82ffe2f36) ) // level 4 ROM_LOAD( "epr-1252.prom-ic110",0x12000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_LOAD( "epr-1253.prom-ic94", 0x14000, 0x2000, CRC(92783626) SHA1(13979eb964112436182d2a92f21803bcc28f4a4a) ) /* level 5 */ + ROM_LOAD( "epr-1253.prom-ic94", 0x14000, 0x2000, CRC(92783626) SHA1(13979eb964112436182d2a92f21803bcc28f4a4a) ) // level 5 ROM_LOAD( "epr-1254.prom-ic112",0x16000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_LOAD( "epr-1255.prom-ic32", 0x18000, 0x2000, CRC(485dcef9) SHA1(0f760ebb42cc2580a29758c72428a41d74477ce6) ) /* level 6 */ + ROM_LOAD( "epr-1255.prom-ic32", 0x18000, 0x2000, CRC(485dcef9) SHA1(0f760ebb42cc2580a29758c72428a41d74477ce6) ) // level 6 ROM_LOAD( "epr-1256.prom-ic47", 0x1a000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_LOAD( "epr-1257.prom-ic34", 0x1c000, 0x2000, CRC(4ca984ce) SHA1(99f294fb203f23929b44baa2dd1825c67dde08a1) ) /* level 7 */ + ROM_LOAD( "epr-1257.prom-ic34", 0x1c000, 0x2000, CRC(4ca984ce) SHA1(99f294fb203f23929b44baa2dd1825c67dde08a1) ) // level 7 ROM_LOAD( "epr-1258.prom-ic49", 0x1e000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_REGION( 0x1000, "fgtiles", 0 ) /* foreground data */ + ROM_REGION( 0x1000, "fgtiles", 0 ) ROM_LOAD( "epr-1244.cpu-ic111", 0x0000, 0x0800, CRC(17f67424) SHA1(6126562510f1509f3487faaa3b9d7470ab600a2c) ) ROM_LOAD( "epr-1245.cpu-ic122", 0x0800, 0x0800, CRC(2ba0b46b) SHA1(5d4d4f19ad7a911c7b37db190a420faf665546b4) ) - ROM_REGION( 0x4800, "road", 0 ) /* road data */ + ROM_REGION( 0x4800, "road", 0 ) ROM_LOAD( "epr-1125.cpu-ic1", 0x0000, 0x0800, CRC(65b5d44b) SHA1(bbdd5db013c9d876e9666f17c48569c7531bfc08) ) ROM_LOAD( "epr-1126.cpu-ic2", 0x0800, 0x0800, CRC(685ace1b) SHA1(99c8d36ac910169b27676d18c894433c2ba44853) ) ROM_LOAD( "epr-1127.cpu-ic13", 0x1000, 0x0800, CRC(9233c9ca) SHA1(cbf9a0f564d8ace1ccd701c1769dbc001d465851) ) @@ -1102,51 +1146,51 @@ ROM_START( turboa ) ROM_LOAD( "epr-1242.cpu-ic42", 0x3800, 0x0800, CRC(04866769) SHA1(1f9c0d53766fdaf8de57d3df05f291c2ca3dc5fb) ) ROM_LOAD( "epr-1243.cpu-ic74", 0x4000, 0x0800, CRC(29854c48) SHA1(cab89bc30f83d9746931ddf6f95a6d0c8a517e5d) ) - ROM_REGION( 0x1020, "proms", 0 ) /* various PROMs */ - ROM_LOAD( "pr-1114.prom-ic13", 0x0000, 0x0020, CRC(78aded46) SHA1(c78afe804f8b8e837b0c502de5b8715a41fb92b9) ) /* road red/green color table */ - ROM_LOAD( "pr-1115.prom-ic18", 0x0020, 0x0020, CRC(5394092c) SHA1(129ff61104979ff6a3c3af8bf81c04ae9b133c9e) ) /* road collision/enable */ - ROM_LOAD( "pr-1116.prom-ic20", 0x0040, 0x0020, CRC(3956767d) SHA1(073aaf57175526660fcf7af2e16e7f1d1aaba9a9) ) /* collision detection */ - ROM_LOAD( "pr-1117.prom-ic21", 0x0060, 0x0020, CRC(f06d9907) SHA1(f11db7800f41b03e79f5eef8d7ef3ae0a6277518) ) /* road green/blue color table */ - ROM_LOAD( "pr-1118.cpu-ic99", 0x0100, 0x0100, CRC(07324cfd) SHA1(844abc2042d6810fa34d84ff1ed57744886c6ea6) ) /* background color table */ - ROM_LOAD( "pr-1119.cpu-ic50", 0x0200, 0x0200, CRC(57ebd4bc) SHA1(932649da3537666f95833a8a8aff506217bd9aa1) ) /* sprite Y scaling */ - ROM_LOAD( "pr-1120.cpu-ic62", 0x0400, 0x0200, CRC(8dd4c8a8) SHA1(e8d9cf08f115d57c44746fa0ff28f47b064b4193) ) /* video timing */ - ROM_LOAD( "pr-1121.prom-ic29", 0x0600, 0x0200, CRC(7692f497) SHA1(42468c0705df9928e15ff8deb7e793a6c0c04353) ) /* palette */ - ROM_LOAD( "pr-1122.prom-ic11", 0x0800, 0x0400, CRC(1a86ce70) SHA1(cab708b9a089b2e28f2298c1e4fae6e200923527) ) /* sprite priorities */ - ROM_LOAD( "pr-1123.prom-ic12", 0x0c00, 0x0400, CRC(02d2cb52) SHA1(c34d6b60355747ce20fcb8d322df0e188d187f10) ) /* sprite/road/background priorities */ - ROM_LOAD( "pr-1279.sound-ic40", 0x1000, 0x0020, CRC(b369a6ae) SHA1(dda7c6cf58ce5173f29a3084c85393c0c4587086) ) /* sound board PROM */ + ROM_REGION( 0x1020, "proms", 0 ) + ROM_LOAD( "pr-1114.prom-ic13", 0x0000, 0x0020, CRC(78aded46) SHA1(c78afe804f8b8e837b0c502de5b8715a41fb92b9) ) // road red/green color table + ROM_LOAD( "pr-1115.prom-ic18", 0x0020, 0x0020, CRC(5394092c) SHA1(129ff61104979ff6a3c3af8bf81c04ae9b133c9e) ) // road collision/enable + ROM_LOAD( "pr-1116.prom-ic20", 0x0040, 0x0020, CRC(3956767d) SHA1(073aaf57175526660fcf7af2e16e7f1d1aaba9a9) ) // collision detection + ROM_LOAD( "pr-1117.prom-ic21", 0x0060, 0x0020, CRC(f06d9907) SHA1(f11db7800f41b03e79f5eef8d7ef3ae0a6277518) ) // road green/blue color table + ROM_LOAD( "pr-1118.cpu-ic99", 0x0100, 0x0100, CRC(07324cfd) SHA1(844abc2042d6810fa34d84ff1ed57744886c6ea6) ) // background color table + ROM_LOAD( "pr-1119.cpu-ic50", 0x0200, 0x0200, CRC(57ebd4bc) SHA1(932649da3537666f95833a8a8aff506217bd9aa1) ) // sprite Y scaling + ROM_LOAD( "pr-1120.cpu-ic62", 0x0400, 0x0200, CRC(8dd4c8a8) SHA1(e8d9cf08f115d57c44746fa0ff28f47b064b4193) ) // video timing + ROM_LOAD( "pr-1121.prom-ic29", 0x0600, 0x0200, CRC(7692f497) SHA1(42468c0705df9928e15ff8deb7e793a6c0c04353) ) // palette + ROM_LOAD( "pr-1122.prom-ic11", 0x0800, 0x0400, CRC(1a86ce70) SHA1(cab708b9a089b2e28f2298c1e4fae6e200923527) ) // sprite priorities + ROM_LOAD( "pr-1123.prom-ic12", 0x0c00, 0x0400, CRC(02d2cb52) SHA1(c34d6b60355747ce20fcb8d322df0e188d187f10) ) // sprite/road/background priorities + ROM_LOAD( "pr-1279.sound-ic40", 0x1000, 0x0020, CRC(b369a6ae) SHA1(dda7c6cf58ce5173f29a3084c85393c0c4587086) ) // sound board PROM ROM_END ROM_START( turbob ) ROM_REGION( 0x6000, "maincpu", 0 ) // C revision label on all ROMs - ROM_LOAD( "epr-1363_t5c.ic76", 0x0000, 0x2000, CRC(a9c9571e) SHA1(724f8c1c13d3bf25bb675519e1388fd6882c4d0b) ) /* CPU module stamped as 834-0128 */ + ROM_LOAD( "epr-1363_t5c.ic76", 0x0000, 0x2000, CRC(a9c9571e) SHA1(724f8c1c13d3bf25bb675519e1388fd6882c4d0b) ) // CPU module stamped as 834-0128 ROM_LOAD( "epr-1364_t5c.ic89", 0x2000, 0x2000, CRC(dc1f8352) SHA1(687a9a8e4f830809f712b590be343fe7b292b9fb) ) ROM_LOAD( "epr-1365_t5c.ic103", 0x4000, 0x2000, CRC(6edc455f) SHA1(e83439ace7a152c4e0e49793cf3cd2a3a2015845) ) - ROM_REGION( 0x20000, "sprites", 0 ) /* sprite data */ - ROM_LOAD( "epr-1246.prom-ic84", 0x00000, 0x2000, CRC(555bfe9a) SHA1(1e56385475eeff044dcd9b44a154991d3efe995e) ) /* level 0 */ + ROM_REGION( 0x20000, "sprites", 0 ) + ROM_LOAD( "epr-1246.prom-ic84", 0x00000, 0x2000, CRC(555bfe9a) SHA1(1e56385475eeff044dcd9b44a154991d3efe995e) ) // level 0 ROM_RELOAD( 0x02000, 0x2000 ) - ROM_LOAD( "epr-1247.prom-ic86", 0x04000, 0x2000, CRC(c8c5e4d5) SHA1(da70297340ddea0cd7fe04f2d94ea65f8202d0e5) ) /* level 1 */ + ROM_LOAD( "epr-1247.prom-ic86", 0x04000, 0x2000, CRC(c8c5e4d5) SHA1(da70297340ddea0cd7fe04f2d94ea65f8202d0e5) ) // level 1 ROM_RELOAD( 0x06000, 0x2000 ) - ROM_LOAD( "epr-1248.prom-ic88", 0x08000, 0x2000, CRC(82fe5b94) SHA1(b96688ca0cfd90fdc4ee7c2e6c0b66726cc5713c) ) /* level 2 */ + ROM_LOAD( "epr-1248.prom-ic88", 0x08000, 0x2000, CRC(82fe5b94) SHA1(b96688ca0cfd90fdc4ee7c2e6c0b66726cc5713c) ) // level 2 ROM_RELOAD( 0x0a000, 0x2000 ) - ROM_LOAD( "epr-1249.prom-ic90", 0x0c000, 0x2000, CRC(e258e009) SHA1(598d382db0f789ea2fde749b7467abed545de25a) ) /* level 3 */ + ROM_LOAD( "epr-1249.prom-ic90", 0x0c000, 0x2000, CRC(e258e009) SHA1(598d382db0f789ea2fde749b7467abed545de25a) ) // level 3 ROM_LOAD( "epr-1250.prom-ic108",0x0e000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_LOAD( "epr-1251.prom-ic92", 0x10000, 0x2000, CRC(292573de) SHA1(3ddc980d11478a6a6e4082c2f76c1ab82ffe2f36) ) /* level 4 */ + ROM_LOAD( "epr-1251.prom-ic92", 0x10000, 0x2000, CRC(292573de) SHA1(3ddc980d11478a6a6e4082c2f76c1ab82ffe2f36) ) // level 4 ROM_LOAD( "epr-1252.prom-ic110",0x12000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_LOAD( "epr-1253.prom-ic94", 0x14000, 0x2000, CRC(92783626) SHA1(13979eb964112436182d2a92f21803bcc28f4a4a) ) /* level 5 */ + ROM_LOAD( "epr-1253.prom-ic94", 0x14000, 0x2000, CRC(92783626) SHA1(13979eb964112436182d2a92f21803bcc28f4a4a) ) // level 5 ROM_LOAD( "epr-1254.prom-ic112",0x16000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_LOAD( "epr-1255.prom-ic32", 0x18000, 0x2000, CRC(485dcef9) SHA1(0f760ebb42cc2580a29758c72428a41d74477ce6) ) /* level 6 */ + ROM_LOAD( "epr-1255.prom-ic32", 0x18000, 0x2000, CRC(485dcef9) SHA1(0f760ebb42cc2580a29758c72428a41d74477ce6) ) // level 6 ROM_LOAD( "epr-1256.prom-ic47", 0x1a000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_LOAD( "epr-1257.prom-ic34", 0x1c000, 0x2000, CRC(4ca984ce) SHA1(99f294fb203f23929b44baa2dd1825c67dde08a1) ) /* level 7 */ + ROM_LOAD( "epr-1257.prom-ic34", 0x1c000, 0x2000, CRC(4ca984ce) SHA1(99f294fb203f23929b44baa2dd1825c67dde08a1) ) // level 7 ROM_LOAD( "epr-1258.prom-ic49", 0x1e000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_REGION( 0x1000, "fgtiles", 0 ) /* foreground data */ + ROM_REGION( 0x1000, "fgtiles", 0 ) ROM_LOAD( "epr-1244.cpu-ic111", 0x0000, 0x0800, CRC(17f67424) SHA1(6126562510f1509f3487faaa3b9d7470ab600a2c) ) ROM_LOAD( "epr-1245.cpu-ic122", 0x0800, 0x0800, CRC(2ba0b46b) SHA1(5d4d4f19ad7a911c7b37db190a420faf665546b4) ) - ROM_REGION( 0x4800, "road", 0 ) /* road data */ + ROM_REGION( 0x4800, "road", 0 ) ROM_LOAD( "epr-1125.cpu-ic1", 0x0000, 0x0800, CRC(65b5d44b) SHA1(bbdd5db013c9d876e9666f17c48569c7531bfc08) ) ROM_LOAD( "epr-1126.cpu-ic2", 0x0800, 0x0800, CRC(685ace1b) SHA1(99c8d36ac910169b27676d18c894433c2ba44853) ) ROM_LOAD( "epr-1127.cpu-ic13", 0x1000, 0x0800, CRC(9233c9ca) SHA1(cbf9a0f564d8ace1ccd701c1769dbc001d465851) ) @@ -1157,51 +1201,51 @@ ROM_START( turbob ) ROM_LOAD( "epr-1242.cpu-ic42", 0x3800, 0x0800, CRC(04866769) SHA1(1f9c0d53766fdaf8de57d3df05f291c2ca3dc5fb) ) ROM_LOAD( "epr-1243.cpu-ic74", 0x4000, 0x0800, CRC(29854c48) SHA1(cab89bc30f83d9746931ddf6f95a6d0c8a517e5d) ) - ROM_REGION( 0x1020, "proms", 0 ) /* various PROMs */ - ROM_LOAD( "pr-1114.prom-ic13", 0x0000, 0x0020, CRC(78aded46) SHA1(c78afe804f8b8e837b0c502de5b8715a41fb92b9) ) /* road red/green color table */ - ROM_LOAD( "pr-1115.prom-ic18", 0x0020, 0x0020, CRC(5394092c) SHA1(129ff61104979ff6a3c3af8bf81c04ae9b133c9e) ) /* road collision/enable */ - ROM_LOAD( "pr-1116.prom-ic20", 0x0040, 0x0020, CRC(3956767d) SHA1(073aaf57175526660fcf7af2e16e7f1d1aaba9a9) ) /* collision detection */ - ROM_LOAD( "pr-1117.prom-ic21", 0x0060, 0x0020, CRC(f06d9907) SHA1(f11db7800f41b03e79f5eef8d7ef3ae0a6277518) ) /* road green/blue color table */ - ROM_LOAD( "pr-1118.cpu-ic99", 0x0100, 0x0100, CRC(07324cfd) SHA1(844abc2042d6810fa34d84ff1ed57744886c6ea6) ) /* background color table */ - ROM_LOAD( "pr-1119.cpu-ic50", 0x0200, 0x0200, CRC(57ebd4bc) SHA1(932649da3537666f95833a8a8aff506217bd9aa1) ) /* sprite Y scaling */ - ROM_LOAD( "pr-1120.cpu-ic62", 0x0400, 0x0200, CRC(8dd4c8a8) SHA1(e8d9cf08f115d57c44746fa0ff28f47b064b4193) ) /* video timing */ - ROM_LOAD( "pr-1121.prom-ic29", 0x0600, 0x0200, CRC(7692f497) SHA1(42468c0705df9928e15ff8deb7e793a6c0c04353) ) /* palette */ - ROM_LOAD( "pr-1122.prom-ic11", 0x0800, 0x0400, CRC(1a86ce70) SHA1(cab708b9a089b2e28f2298c1e4fae6e200923527) ) /* sprite priorities */ - ROM_LOAD( "pr-1123.prom-ic12", 0x0c00, 0x0400, CRC(02d2cb52) SHA1(c34d6b60355747ce20fcb8d322df0e188d187f10) ) /* sprite/road/background priorities */ - ROM_LOAD( "pr-1279.sound-ic40", 0x1000, 0x0020, CRC(b369a6ae) SHA1(dda7c6cf58ce5173f29a3084c85393c0c4587086) ) /* sound board PROM */ + ROM_REGION( 0x1020, "proms", 0 ) + ROM_LOAD( "pr-1114.prom-ic13", 0x0000, 0x0020, CRC(78aded46) SHA1(c78afe804f8b8e837b0c502de5b8715a41fb92b9) ) // road red/green color table + ROM_LOAD( "pr-1115.prom-ic18", 0x0020, 0x0020, CRC(5394092c) SHA1(129ff61104979ff6a3c3af8bf81c04ae9b133c9e) ) // road collision/enable + ROM_LOAD( "pr-1116.prom-ic20", 0x0040, 0x0020, CRC(3956767d) SHA1(073aaf57175526660fcf7af2e16e7f1d1aaba9a9) ) // collision detection + ROM_LOAD( "pr-1117.prom-ic21", 0x0060, 0x0020, CRC(f06d9907) SHA1(f11db7800f41b03e79f5eef8d7ef3ae0a6277518) ) // road green/blue color table + ROM_LOAD( "pr-1118.cpu-ic99", 0x0100, 0x0100, CRC(07324cfd) SHA1(844abc2042d6810fa34d84ff1ed57744886c6ea6) ) // background color table + ROM_LOAD( "pr-1119.cpu-ic50", 0x0200, 0x0200, CRC(57ebd4bc) SHA1(932649da3537666f95833a8a8aff506217bd9aa1) ) // sprite Y scaling + ROM_LOAD( "pr-1120.cpu-ic62", 0x0400, 0x0200, CRC(8dd4c8a8) SHA1(e8d9cf08f115d57c44746fa0ff28f47b064b4193) ) // video timing + ROM_LOAD( "pr-1121.prom-ic29", 0x0600, 0x0200, CRC(7692f497) SHA1(42468c0705df9928e15ff8deb7e793a6c0c04353) ) // palette + ROM_LOAD( "pr-1122.prom-ic11", 0x0800, 0x0400, CRC(1a86ce70) SHA1(cab708b9a089b2e28f2298c1e4fae6e200923527) ) // sprite priorities + ROM_LOAD( "pr-1123.prom-ic12", 0x0c00, 0x0400, CRC(02d2cb52) SHA1(c34d6b60355747ce20fcb8d322df0e188d187f10) ) // sprite/road/background priorities + ROM_LOAD( "pr-1279.sound-ic40", 0x1000, 0x0020, CRC(b369a6ae) SHA1(dda7c6cf58ce5173f29a3084c85393c0c4587086) ) // sound board PROM ROM_END ROM_START( turboc ) ROM_REGION( 0x6000, "maincpu", 0 ) - // B revision label on 1st rom, A revision for 2nd / 3rd, 2nd rom was faulty, 3rd rom matched existing set, existing 2nd rom passes rom check. - ROM_LOAD( "epr-1363_t5b.ic76", 0x0000, 0x2000, CRC(f7f28149) SHA1(08aec3edd6d756b14b2f10fe5abd22ac83c79fcc) ) /* CPU module stamped as 834-0128 */ + // B revision label on 1st ROM, A revision for 2nd / 3rd, 2nd ROM was faulty, 3rd ROM matched existing set, existing 2nd ROM passes ROM check. + ROM_LOAD( "epr-1363_t5b.ic76", 0x0000, 0x2000, CRC(f7f28149) SHA1(08aec3edd6d756b14b2f10fe5abd22ac83c79fcc) ) // CPU module stamped as 834-0128 ROM_LOAD( "epr-1364_t5a.ic89", 0x2000, 0x2000, CRC(6a341693) SHA1(428927c4a14bf82225875012c255d25dcffaf2ab) ) ROM_LOAD( "epr-1365_t5a.ic103", 0x4000, 0x2000, CRC(3b6b0dc8) SHA1(3ebfa3f9fabd444ee105591acb6984b6b3523725) ) - ROM_REGION( 0x20000, "sprites", 0 ) /* sprite data */ - ROM_LOAD( "epr-1246.prom-ic84", 0x00000, 0x2000, CRC(555bfe9a) SHA1(1e56385475eeff044dcd9b44a154991d3efe995e) ) /* level 0 */ + ROM_REGION( 0x20000, "sprites", 0 ) + ROM_LOAD( "epr-1246.prom-ic84", 0x00000, 0x2000, CRC(555bfe9a) SHA1(1e56385475eeff044dcd9b44a154991d3efe995e) ) // level 0 ROM_RELOAD( 0x02000, 0x2000 ) - ROM_LOAD( "epr-1247.prom-ic86", 0x04000, 0x2000, CRC(c8c5e4d5) SHA1(da70297340ddea0cd7fe04f2d94ea65f8202d0e5) ) /* level 1 */ + ROM_LOAD( "epr-1247.prom-ic86", 0x04000, 0x2000, CRC(c8c5e4d5) SHA1(da70297340ddea0cd7fe04f2d94ea65f8202d0e5) ) // level 1 ROM_RELOAD( 0x06000, 0x2000 ) - ROM_LOAD( "epr-1248.prom-ic88", 0x08000, 0x2000, CRC(82fe5b94) SHA1(b96688ca0cfd90fdc4ee7c2e6c0b66726cc5713c) ) /* level 2 */ + ROM_LOAD( "epr-1248.prom-ic88", 0x08000, 0x2000, CRC(82fe5b94) SHA1(b96688ca0cfd90fdc4ee7c2e6c0b66726cc5713c) ) // level 2 ROM_RELOAD( 0x0a000, 0x2000 ) - ROM_LOAD( "epr-1249.prom-ic90", 0x0c000, 0x2000, CRC(e258e009) SHA1(598d382db0f789ea2fde749b7467abed545de25a) ) /* level 3 */ + ROM_LOAD( "epr-1249.prom-ic90", 0x0c000, 0x2000, CRC(e258e009) SHA1(598d382db0f789ea2fde749b7467abed545de25a) ) // level 3 ROM_LOAD( "epr-1250.prom-ic108",0x0e000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_LOAD( "epr-1251.prom-ic92", 0x10000, 0x2000, CRC(292573de) SHA1(3ddc980d11478a6a6e4082c2f76c1ab82ffe2f36) ) /* level 4 */ + ROM_LOAD( "epr-1251.prom-ic92", 0x10000, 0x2000, CRC(292573de) SHA1(3ddc980d11478a6a6e4082c2f76c1ab82ffe2f36) ) // level 4 ROM_LOAD( "epr-1252.prom-ic110",0x12000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_LOAD( "epr-1253.prom-ic94", 0x14000, 0x2000, CRC(92783626) SHA1(13979eb964112436182d2a92f21803bcc28f4a4a) ) /* level 5 */ + ROM_LOAD( "epr-1253.prom-ic94", 0x14000, 0x2000, CRC(92783626) SHA1(13979eb964112436182d2a92f21803bcc28f4a4a) ) // level 5 ROM_LOAD( "epr-1254.prom-ic112",0x16000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_LOAD( "epr-1255.prom-ic32", 0x18000, 0x2000, CRC(485dcef9) SHA1(0f760ebb42cc2580a29758c72428a41d74477ce6) ) /* level 6 */ + ROM_LOAD( "epr-1255.prom-ic32", 0x18000, 0x2000, CRC(485dcef9) SHA1(0f760ebb42cc2580a29758c72428a41d74477ce6) ) // level 6 ROM_LOAD( "epr-1256.prom-ic47", 0x1a000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_LOAD( "epr-1257.prom-ic34", 0x1c000, 0x2000, CRC(4ca984ce) SHA1(99f294fb203f23929b44baa2dd1825c67dde08a1) ) /* level 7 */ + ROM_LOAD( "epr-1257.prom-ic34", 0x1c000, 0x2000, CRC(4ca984ce) SHA1(99f294fb203f23929b44baa2dd1825c67dde08a1) ) // level 7 ROM_LOAD( "epr-1258.prom-ic49", 0x1e000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_REGION( 0x1000, "fgtiles", 0 ) /* foreground data */ + ROM_REGION( 0x1000, "fgtiles", 0 ) ROM_LOAD( "epr-1244.cpu-ic111", 0x0000, 0x0800, CRC(17f67424) SHA1(6126562510f1509f3487faaa3b9d7470ab600a2c) ) ROM_LOAD( "epr-1245.cpu-ic122", 0x0800, 0x0800, CRC(2ba0b46b) SHA1(5d4d4f19ad7a911c7b37db190a420faf665546b4) ) - ROM_REGION( 0x4800, "road", 0 ) /* road data */ + ROM_REGION( 0x4800, "road", 0 ) ROM_LOAD( "epr-1125.cpu-ic1", 0x0000, 0x0800, CRC(65b5d44b) SHA1(bbdd5db013c9d876e9666f17c48569c7531bfc08) ) ROM_LOAD( "epr-1126.cpu-ic2", 0x0800, 0x0800, CRC(685ace1b) SHA1(99c8d36ac910169b27676d18c894433c2ba44853) ) ROM_LOAD( "epr-1127.cpu-ic13", 0x1000, 0x0800, CRC(9233c9ca) SHA1(cbf9a0f564d8ace1ccd701c1769dbc001d465851) ) @@ -1212,18 +1256,18 @@ ROM_START( turboc ) ROM_LOAD( "epr-1242.cpu-ic42", 0x3800, 0x0800, CRC(04866769) SHA1(1f9c0d53766fdaf8de57d3df05f291c2ca3dc5fb) ) ROM_LOAD( "epr-1243.cpu-ic74", 0x4000, 0x0800, CRC(29854c48) SHA1(cab89bc30f83d9746931ddf6f95a6d0c8a517e5d) ) - ROM_REGION( 0x1020, "proms", 0 ) /* various PROMs */ - ROM_LOAD( "pr-1114.prom-ic13", 0x0000, 0x0020, CRC(78aded46) SHA1(c78afe804f8b8e837b0c502de5b8715a41fb92b9) ) /* road red/green color table */ - ROM_LOAD( "pr-1115.prom-ic18", 0x0020, 0x0020, CRC(5394092c) SHA1(129ff61104979ff6a3c3af8bf81c04ae9b133c9e) ) /* road collision/enable */ - ROM_LOAD( "pr-1116.prom-ic20", 0x0040, 0x0020, CRC(3956767d) SHA1(073aaf57175526660fcf7af2e16e7f1d1aaba9a9) ) /* collision detection */ - ROM_LOAD( "pr-1117.prom-ic21", 0x0060, 0x0020, CRC(f06d9907) SHA1(f11db7800f41b03e79f5eef8d7ef3ae0a6277518) ) /* road green/blue color table */ - ROM_LOAD( "pr-1118.cpu-ic99", 0x0100, 0x0100, CRC(07324cfd) SHA1(844abc2042d6810fa34d84ff1ed57744886c6ea6) ) /* background color table */ - ROM_LOAD( "pr-1119.cpu-ic50", 0x0200, 0x0200, CRC(57ebd4bc) SHA1(932649da3537666f95833a8a8aff506217bd9aa1) ) /* sprite Y scaling */ - ROM_LOAD( "pr-1120.cpu-ic62", 0x0400, 0x0200, CRC(8dd4c8a8) SHA1(e8d9cf08f115d57c44746fa0ff28f47b064b4193) ) /* video timing */ - ROM_LOAD( "pr-1121.prom-ic29", 0x0600, 0x0200, CRC(7692f497) SHA1(42468c0705df9928e15ff8deb7e793a6c0c04353) ) /* palette */ - ROM_LOAD( "pr-1122.prom-ic11", 0x0800, 0x0400, CRC(1a86ce70) SHA1(cab708b9a089b2e28f2298c1e4fae6e200923527) ) /* sprite priorities */ - ROM_LOAD( "pr-1123.prom-ic12", 0x0c00, 0x0400, CRC(02d2cb52) SHA1(c34d6b60355747ce20fcb8d322df0e188d187f10) ) /* sprite/road/background priorities */ - ROM_LOAD( "pr-1279.sound-ic40", 0x1000, 0x0020, CRC(b369a6ae) SHA1(dda7c6cf58ce5173f29a3084c85393c0c4587086) ) /* sound board PROM */ + ROM_REGION( 0x1020, "proms", 0 ) + ROM_LOAD( "pr-1114.prom-ic13", 0x0000, 0x0020, CRC(78aded46) SHA1(c78afe804f8b8e837b0c502de5b8715a41fb92b9) ) // road red/green color table + ROM_LOAD( "pr-1115.prom-ic18", 0x0020, 0x0020, CRC(5394092c) SHA1(129ff61104979ff6a3c3af8bf81c04ae9b133c9e) ) // road collision/enable + ROM_LOAD( "pr-1116.prom-ic20", 0x0040, 0x0020, CRC(3956767d) SHA1(073aaf57175526660fcf7af2e16e7f1d1aaba9a9) ) // collision detection + ROM_LOAD( "pr-1117.prom-ic21", 0x0060, 0x0020, CRC(f06d9907) SHA1(f11db7800f41b03e79f5eef8d7ef3ae0a6277518) ) // road green/blue color table + ROM_LOAD( "pr-1118.cpu-ic99", 0x0100, 0x0100, CRC(07324cfd) SHA1(844abc2042d6810fa34d84ff1ed57744886c6ea6) ) // background color table + ROM_LOAD( "pr-1119.cpu-ic50", 0x0200, 0x0200, CRC(57ebd4bc) SHA1(932649da3537666f95833a8a8aff506217bd9aa1) ) // sprite Y scaling + ROM_LOAD( "pr-1120.cpu-ic62", 0x0400, 0x0200, CRC(8dd4c8a8) SHA1(e8d9cf08f115d57c44746fa0ff28f47b064b4193) ) // video timing + ROM_LOAD( "pr-1121.prom-ic29", 0x0600, 0x0200, CRC(7692f497) SHA1(42468c0705df9928e15ff8deb7e793a6c0c04353) ) // palette + ROM_LOAD( "pr-1122.prom-ic11", 0x0800, 0x0400, CRC(1a86ce70) SHA1(cab708b9a089b2e28f2298c1e4fae6e200923527) ) // sprite priorities + ROM_LOAD( "pr-1123.prom-ic12", 0x0c00, 0x0400, CRC(02d2cb52) SHA1(c34d6b60355747ce20fcb8d322df0e188d187f10) ) // sprite/road/background priorities + ROM_LOAD( "pr-1279.sound-ic40", 0x1000, 0x0020, CRC(b369a6ae) SHA1(dda7c6cf58ce5173f29a3084c85393c0c4587086) ) // sound board PROM ROM_END ROM_START( turbod ) @@ -1232,29 +1276,29 @@ ROM_START( turbod ) ROM_LOAD( "epr-1364_t5a.ic89", 0x2000, 0x2000, CRC(6a341693) SHA1(428927c4a14bf82225875012c255d25dcffaf2ab) ) ROM_LOAD( "epr-1365_t5a.ic103", 0x4000, 0x2000, CRC(3b6b0dc8) SHA1(3ebfa3f9fabd444ee105591acb6984b6b3523725) ) - ROM_REGION( 0x20000, "sprites", 0 ) /* sprite data */ - ROM_LOAD( "epr-1246.prom-ic84", 0x00000, 0x2000, CRC(555bfe9a) SHA1(1e56385475eeff044dcd9b44a154991d3efe995e) ) /* level 0 */ + ROM_REGION( 0x20000, "sprites", 0 ) + ROM_LOAD( "epr-1246.prom-ic84", 0x00000, 0x2000, CRC(555bfe9a) SHA1(1e56385475eeff044dcd9b44a154991d3efe995e) ) // level 0 ROM_RELOAD( 0x02000, 0x2000 ) - ROM_LOAD( "epr-1247.prom-ic86", 0x04000, 0x2000, CRC(c8c5e4d5) SHA1(da70297340ddea0cd7fe04f2d94ea65f8202d0e5) ) /* level 1 */ + ROM_LOAD( "epr-1247.prom-ic86", 0x04000, 0x2000, CRC(c8c5e4d5) SHA1(da70297340ddea0cd7fe04f2d94ea65f8202d0e5) ) // level 1 ROM_RELOAD( 0x06000, 0x2000 ) - ROM_LOAD( "epr-1248.prom-ic88", 0x08000, 0x2000, CRC(82fe5b94) SHA1(b96688ca0cfd90fdc4ee7c2e6c0b66726cc5713c) ) /* level 2 */ + ROM_LOAD( "epr-1248.prom-ic88", 0x08000, 0x2000, CRC(82fe5b94) SHA1(b96688ca0cfd90fdc4ee7c2e6c0b66726cc5713c) ) // level 2 ROM_RELOAD( 0x0a000, 0x2000 ) - ROM_LOAD( "epr-1249.prom-ic90", 0x0c000, 0x2000, CRC(e258e009) SHA1(598d382db0f789ea2fde749b7467abed545de25a) ) /* level 3 */ + ROM_LOAD( "epr-1249.prom-ic90", 0x0c000, 0x2000, CRC(e258e009) SHA1(598d382db0f789ea2fde749b7467abed545de25a) ) // level 3 ROM_LOAD( "epr-1250.prom-ic108",0x0e000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_LOAD( "epr-1251.prom-ic92", 0x10000, 0x2000, CRC(292573de) SHA1(3ddc980d11478a6a6e4082c2f76c1ab82ffe2f36) ) /* level 4 */ + ROM_LOAD( "epr-1251.prom-ic92", 0x10000, 0x2000, CRC(292573de) SHA1(3ddc980d11478a6a6e4082c2f76c1ab82ffe2f36) ) // level 4 ROM_LOAD( "epr-1252.prom-ic110",0x12000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_LOAD( "epr-1253.prom-ic94", 0x14000, 0x2000, CRC(92783626) SHA1(13979eb964112436182d2a92f21803bcc28f4a4a) ) /* level 5 */ + ROM_LOAD( "epr-1253.prom-ic94", 0x14000, 0x2000, CRC(92783626) SHA1(13979eb964112436182d2a92f21803bcc28f4a4a) ) // level 5 ROM_LOAD( "epr-1254.prom-ic112",0x16000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_LOAD( "epr-1255.prom-ic32", 0x18000, 0x2000, CRC(485dcef9) SHA1(0f760ebb42cc2580a29758c72428a41d74477ce6) ) /* level 6 */ + ROM_LOAD( "epr-1255.prom-ic32", 0x18000, 0x2000, CRC(485dcef9) SHA1(0f760ebb42cc2580a29758c72428a41d74477ce6) ) // level 6 ROM_LOAD( "epr-1256.prom-ic47", 0x1a000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_LOAD( "epr-1257.prom-ic34", 0x1c000, 0x2000, CRC(4ca984ce) SHA1(99f294fb203f23929b44baa2dd1825c67dde08a1) ) /* level 7 */ + ROM_LOAD( "epr-1257.prom-ic34", 0x1c000, 0x2000, CRC(4ca984ce) SHA1(99f294fb203f23929b44baa2dd1825c67dde08a1) ) // level 7 ROM_LOAD( "epr-1258.prom-ic49", 0x1e000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_REGION( 0x1000, "fgtiles", 0 ) /* foreground data */ + ROM_REGION( 0x1000, "fgtiles", 0 ) ROM_LOAD( "epr-1244.cpu-ic111", 0x0000, 0x0800, CRC(17f67424) SHA1(6126562510f1509f3487faaa3b9d7470ab600a2c) ) ROM_LOAD( "epr-1245.cpu-ic122", 0x0800, 0x0800, CRC(2ba0b46b) SHA1(5d4d4f19ad7a911c7b37db190a420faf665546b4) ) - ROM_REGION( 0x4800, "road", 0 ) /* road data */ + ROM_REGION( 0x4800, "road", 0 ) ROM_LOAD( "epr-1125.cpu-ic1", 0x0000, 0x0800, CRC(65b5d44b) SHA1(bbdd5db013c9d876e9666f17c48569c7531bfc08) ) ROM_LOAD( "epr-1126.cpu-ic2", 0x0800, 0x0800, CRC(685ace1b) SHA1(99c8d36ac910169b27676d18c894433c2ba44853) ) ROM_LOAD( "epr-1127.cpu-ic13", 0x1000, 0x0800, CRC(9233c9ca) SHA1(cbf9a0f564d8ace1ccd701c1769dbc001d465851) ) @@ -1265,51 +1309,51 @@ ROM_START( turbod ) ROM_LOAD( "epr-1242.cpu-ic42", 0x3800, 0x0800, CRC(04866769) SHA1(1f9c0d53766fdaf8de57d3df05f291c2ca3dc5fb) ) ROM_LOAD( "epr-1243.cpu-ic74", 0x4000, 0x0800, CRC(29854c48) SHA1(cab89bc30f83d9746931ddf6f95a6d0c8a517e5d) ) - ROM_REGION( 0x1020, "proms", 0 ) /* various PROMs */ - ROM_LOAD( "pr-1114.prom-ic13", 0x0000, 0x0020, CRC(78aded46) SHA1(c78afe804f8b8e837b0c502de5b8715a41fb92b9) ) /* road red/green color table */ - ROM_LOAD( "pr-1115.prom-ic18", 0x0020, 0x0020, CRC(5394092c) SHA1(129ff61104979ff6a3c3af8bf81c04ae9b133c9e) ) /* road collision/enable */ - ROM_LOAD( "pr-1116.prom-ic20", 0x0040, 0x0020, CRC(3956767d) SHA1(073aaf57175526660fcf7af2e16e7f1d1aaba9a9) ) /* collision detection */ - ROM_LOAD( "pr-1117.prom-ic21", 0x0060, 0x0020, CRC(f06d9907) SHA1(f11db7800f41b03e79f5eef8d7ef3ae0a6277518) ) /* road green/blue color table */ - ROM_LOAD( "pr-1118.cpu-ic99", 0x0100, 0x0100, CRC(07324cfd) SHA1(844abc2042d6810fa34d84ff1ed57744886c6ea6) ) /* background color table */ - ROM_LOAD( "pr-1119.cpu-ic50", 0x0200, 0x0200, CRC(57ebd4bc) SHA1(932649da3537666f95833a8a8aff506217bd9aa1) ) /* sprite Y scaling */ - ROM_LOAD( "pr-1120.cpu-ic62", 0x0400, 0x0200, CRC(8dd4c8a8) SHA1(e8d9cf08f115d57c44746fa0ff28f47b064b4193) ) /* video timing */ - ROM_LOAD( "pr-1121.prom-ic29", 0x0600, 0x0200, CRC(7692f497) SHA1(42468c0705df9928e15ff8deb7e793a6c0c04353) ) /* palette */ - ROM_LOAD( "pr-1122.prom-ic11", 0x0800, 0x0400, CRC(1a86ce70) SHA1(cab708b9a089b2e28f2298c1e4fae6e200923527) ) /* sprite priorities */ - ROM_LOAD( "pr-1123.prom-ic12", 0x0c00, 0x0400, CRC(02d2cb52) SHA1(c34d6b60355747ce20fcb8d322df0e188d187f10) ) /* sprite/road/background priorities */ - ROM_LOAD( "pr-1279.sound-ic40", 0x1000, 0x0020, CRC(b369a6ae) SHA1(dda7c6cf58ce5173f29a3084c85393c0c4587086) ) /* sound board PROM */ + ROM_REGION( 0x1020, "proms", 0 ) + ROM_LOAD( "pr-1114.prom-ic13", 0x0000, 0x0020, CRC(78aded46) SHA1(c78afe804f8b8e837b0c502de5b8715a41fb92b9) ) // road red/green color table + ROM_LOAD( "pr-1115.prom-ic18", 0x0020, 0x0020, CRC(5394092c) SHA1(129ff61104979ff6a3c3af8bf81c04ae9b133c9e) ) // road collision/enable + ROM_LOAD( "pr-1116.prom-ic20", 0x0040, 0x0020, CRC(3956767d) SHA1(073aaf57175526660fcf7af2e16e7f1d1aaba9a9) ) // collision detection + ROM_LOAD( "pr-1117.prom-ic21", 0x0060, 0x0020, CRC(f06d9907) SHA1(f11db7800f41b03e79f5eef8d7ef3ae0a6277518) ) // road green/blue color table + ROM_LOAD( "pr-1118.cpu-ic99", 0x0100, 0x0100, CRC(07324cfd) SHA1(844abc2042d6810fa34d84ff1ed57744886c6ea6) ) // background color table + ROM_LOAD( "pr-1119.cpu-ic50", 0x0200, 0x0200, CRC(57ebd4bc) SHA1(932649da3537666f95833a8a8aff506217bd9aa1) ) // sprite Y scaling + ROM_LOAD( "pr-1120.cpu-ic62", 0x0400, 0x0200, CRC(8dd4c8a8) SHA1(e8d9cf08f115d57c44746fa0ff28f47b064b4193) ) // video timing + ROM_LOAD( "pr-1121.prom-ic29", 0x0600, 0x0200, CRC(7692f497) SHA1(42468c0705df9928e15ff8deb7e793a6c0c04353) ) // palette + ROM_LOAD( "pr-1122.prom-ic11", 0x0800, 0x0400, CRC(1a86ce70) SHA1(cab708b9a089b2e28f2298c1e4fae6e200923527) ) // sprite priorities + ROM_LOAD( "pr-1123.prom-ic12", 0x0c00, 0x0400, CRC(02d2cb52) SHA1(c34d6b60355747ce20fcb8d322df0e188d187f10) ) // sprite/road/background priorities + ROM_LOAD( "pr-1279.sound-ic40", 0x1000, 0x0020, CRC(b369a6ae) SHA1(dda7c6cf58ce5173f29a3084c85393c0c4587086) ) // sound board PROM ROM_END ROM_START( turboe ) ROM_REGION( 0x6000, "maincpu", 0 ) - // no letter on rom labels, numbered 1363-1365, possibly the original 1363-1365 revision? - service mode still shows the older EPR-1262 through EPR-1264 tho? - ROM_LOAD( "1363.ic76", 0x0000, 0x2000, CRC(b6329a00) SHA1(02ca3d7703607bc0390a14d838fafb01a3e3cdef) ) /* CPU module stamped as 834-0128 */ + // no letter on ROM labels, numbered 1363-1365, possibly the original 1363-1365 revision? - service mode still shows the older EPR-1262 through EPR-1264 tho? + ROM_LOAD( "1363.ic76", 0x0000, 0x2000, CRC(b6329a00) SHA1(02ca3d7703607bc0390a14d838fafb01a3e3cdef) ) // CPU module stamped as 834-0128 ROM_LOAD( "1364.ic89", 0x2000, 0x2000, CRC(3192f83b) SHA1(78dabb75e38f5f8331bfc43dce852a4c4397f874) ) ROM_LOAD( "1365.ic103", 0x4000, 0x2000, CRC(23a3303a) SHA1(bcc4ab9203060b4043d779b7a242abc583093dbb) ) - ROM_REGION( 0x20000, "sprites", 0 ) /* sprite data */ - ROM_LOAD( "epr-1246.prom-ic84", 0x00000, 0x2000, CRC(555bfe9a) SHA1(1e56385475eeff044dcd9b44a154991d3efe995e) ) /* level 0 */ + ROM_REGION( 0x20000, "sprites", 0 ) + ROM_LOAD( "epr-1246.prom-ic84", 0x00000, 0x2000, CRC(555bfe9a) SHA1(1e56385475eeff044dcd9b44a154991d3efe995e) ) // level 0 ROM_RELOAD( 0x02000, 0x2000 ) - ROM_LOAD( "epr-1247.prom-ic86", 0x04000, 0x2000, CRC(c8c5e4d5) SHA1(da70297340ddea0cd7fe04f2d94ea65f8202d0e5) ) /* level 1 */ + ROM_LOAD( "epr-1247.prom-ic86", 0x04000, 0x2000, CRC(c8c5e4d5) SHA1(da70297340ddea0cd7fe04f2d94ea65f8202d0e5) ) // level 1 ROM_RELOAD( 0x06000, 0x2000 ) - ROM_LOAD( "epr-1248.prom-ic88", 0x08000, 0x2000, CRC(82fe5b94) SHA1(b96688ca0cfd90fdc4ee7c2e6c0b66726cc5713c) ) /* level 2 */ + ROM_LOAD( "epr-1248.prom-ic88", 0x08000, 0x2000, CRC(82fe5b94) SHA1(b96688ca0cfd90fdc4ee7c2e6c0b66726cc5713c) ) // level 2 ROM_RELOAD( 0x0a000, 0x2000 ) - ROM_LOAD( "epr-1249.prom-ic90", 0x0c000, 0x2000, CRC(e258e009) SHA1(598d382db0f789ea2fde749b7467abed545de25a) ) /* level 3 */ + ROM_LOAD( "epr-1249.prom-ic90", 0x0c000, 0x2000, CRC(e258e009) SHA1(598d382db0f789ea2fde749b7467abed545de25a) ) // level 3 ROM_LOAD( "epr-1250.prom-ic108",0x0e000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_LOAD( "epr-1251.prom-ic92", 0x10000, 0x2000, CRC(292573de) SHA1(3ddc980d11478a6a6e4082c2f76c1ab82ffe2f36) ) /* level 4 */ + ROM_LOAD( "epr-1251.prom-ic92", 0x10000, 0x2000, CRC(292573de) SHA1(3ddc980d11478a6a6e4082c2f76c1ab82ffe2f36) ) // level 4 ROM_LOAD( "epr-1252.prom-ic110",0x12000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_LOAD( "epr-1253.prom-ic94", 0x14000, 0x2000, CRC(92783626) SHA1(13979eb964112436182d2a92f21803bcc28f4a4a) ) /* level 5 */ + ROM_LOAD( "epr-1253.prom-ic94", 0x14000, 0x2000, CRC(92783626) SHA1(13979eb964112436182d2a92f21803bcc28f4a4a) ) // level 5 ROM_LOAD( "epr-1254.prom-ic112",0x16000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_LOAD( "epr-1255.prom-ic32", 0x18000, 0x2000, CRC(485dcef9) SHA1(0f760ebb42cc2580a29758c72428a41d74477ce6) ) /* level 6 */ + ROM_LOAD( "epr-1255.prom-ic32", 0x18000, 0x2000, CRC(485dcef9) SHA1(0f760ebb42cc2580a29758c72428a41d74477ce6) ) // level 6 ROM_LOAD( "epr-1256.prom-ic47", 0x1a000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_LOAD( "epr-1257.prom-ic34", 0x1c000, 0x2000, CRC(4ca984ce) SHA1(99f294fb203f23929b44baa2dd1825c67dde08a1) ) /* level 7 */ + ROM_LOAD( "epr-1257.prom-ic34", 0x1c000, 0x2000, CRC(4ca984ce) SHA1(99f294fb203f23929b44baa2dd1825c67dde08a1) ) // level 7 ROM_LOAD( "epr-1258.prom-ic49", 0x1e000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_REGION( 0x1000, "fgtiles", 0 ) /* foreground data */ + ROM_REGION( 0x1000, "fgtiles", 0 ) ROM_LOAD( "epr-1244.cpu-ic111", 0x0000, 0x0800, CRC(17f67424) SHA1(6126562510f1509f3487faaa3b9d7470ab600a2c) ) ROM_LOAD( "epr-1245.cpu-ic122", 0x0800, 0x0800, CRC(2ba0b46b) SHA1(5d4d4f19ad7a911c7b37db190a420faf665546b4) ) - ROM_REGION( 0x4800, "road", 0 ) /* road data */ + ROM_REGION( 0x4800, "road", 0 ) ROM_LOAD( "epr-1125.cpu-ic1", 0x0000, 0x0800, CRC(65b5d44b) SHA1(bbdd5db013c9d876e9666f17c48569c7531bfc08) ) ROM_LOAD( "epr-1126.cpu-ic2", 0x0800, 0x0800, CRC(685ace1b) SHA1(99c8d36ac910169b27676d18c894433c2ba44853) ) ROM_LOAD( "epr-1127.cpu-ic13", 0x1000, 0x0800, CRC(9233c9ca) SHA1(cbf9a0f564d8ace1ccd701c1769dbc001d465851) ) @@ -1320,18 +1364,18 @@ ROM_START( turboe ) ROM_LOAD( "epr-1242.cpu-ic42", 0x3800, 0x0800, CRC(04866769) SHA1(1f9c0d53766fdaf8de57d3df05f291c2ca3dc5fb) ) ROM_LOAD( "epr-1243.cpu-ic74", 0x4000, 0x0800, CRC(29854c48) SHA1(cab89bc30f83d9746931ddf6f95a6d0c8a517e5d) ) - ROM_REGION( 0x1020, "proms", 0 ) /* various PROMs */ - ROM_LOAD( "pr-1114.prom-ic13", 0x0000, 0x0020, CRC(78aded46) SHA1(c78afe804f8b8e837b0c502de5b8715a41fb92b9) ) /* road red/green color table */ - ROM_LOAD( "pr-1115.prom-ic18", 0x0020, 0x0020, CRC(5394092c) SHA1(129ff61104979ff6a3c3af8bf81c04ae9b133c9e) ) /* road collision/enable */ - ROM_LOAD( "pr-1116.prom-ic20", 0x0040, 0x0020, CRC(3956767d) SHA1(073aaf57175526660fcf7af2e16e7f1d1aaba9a9) ) /* collision detection */ - ROM_LOAD( "pr-1117.prom-ic21", 0x0060, 0x0020, CRC(f06d9907) SHA1(f11db7800f41b03e79f5eef8d7ef3ae0a6277518) ) /* road green/blue color table */ - ROM_LOAD( "pr-1118.cpu-ic99", 0x0100, 0x0100, CRC(07324cfd) SHA1(844abc2042d6810fa34d84ff1ed57744886c6ea6) ) /* background color table */ - ROM_LOAD( "pr-1119.cpu-ic50", 0x0200, 0x0200, CRC(57ebd4bc) SHA1(932649da3537666f95833a8a8aff506217bd9aa1) ) /* sprite Y scaling */ - ROM_LOAD( "pr-1120.cpu-ic62", 0x0400, 0x0200, CRC(8dd4c8a8) SHA1(e8d9cf08f115d57c44746fa0ff28f47b064b4193) ) /* video timing */ - ROM_LOAD( "pr-1121.prom-ic29", 0x0600, 0x0200, CRC(7692f497) SHA1(42468c0705df9928e15ff8deb7e793a6c0c04353) ) /* palette */ - ROM_LOAD( "pr-1122.prom-ic11", 0x0800, 0x0400, CRC(1a86ce70) SHA1(cab708b9a089b2e28f2298c1e4fae6e200923527) ) /* sprite priorities */ - ROM_LOAD( "pr-1123.prom-ic12", 0x0c00, 0x0400, CRC(02d2cb52) SHA1(c34d6b60355747ce20fcb8d322df0e188d187f10) ) /* sprite/road/background priorities */ - ROM_LOAD( "pr-1279.sound-ic40", 0x1000, 0x0020, CRC(b369a6ae) SHA1(dda7c6cf58ce5173f29a3084c85393c0c4587086) ) /* sound board PROM */ + ROM_REGION( 0x1020, "proms", 0 ) + ROM_LOAD( "pr-1114.prom-ic13", 0x0000, 0x0020, CRC(78aded46) SHA1(c78afe804f8b8e837b0c502de5b8715a41fb92b9) ) // road red/green color table + ROM_LOAD( "pr-1115.prom-ic18", 0x0020, 0x0020, CRC(5394092c) SHA1(129ff61104979ff6a3c3af8bf81c04ae9b133c9e) ) // road collision/enable + ROM_LOAD( "pr-1116.prom-ic20", 0x0040, 0x0020, CRC(3956767d) SHA1(073aaf57175526660fcf7af2e16e7f1d1aaba9a9) ) // collision detection + ROM_LOAD( "pr-1117.prom-ic21", 0x0060, 0x0020, CRC(f06d9907) SHA1(f11db7800f41b03e79f5eef8d7ef3ae0a6277518) ) // road green/blue color table + ROM_LOAD( "pr-1118.cpu-ic99", 0x0100, 0x0100, CRC(07324cfd) SHA1(844abc2042d6810fa34d84ff1ed57744886c6ea6) ) // background color table + ROM_LOAD( "pr-1119.cpu-ic50", 0x0200, 0x0200, CRC(57ebd4bc) SHA1(932649da3537666f95833a8a8aff506217bd9aa1) ) // sprite Y scaling + ROM_LOAD( "pr-1120.cpu-ic62", 0x0400, 0x0200, CRC(8dd4c8a8) SHA1(e8d9cf08f115d57c44746fa0ff28f47b064b4193) ) // video timing + ROM_LOAD( "pr-1121.prom-ic29", 0x0600, 0x0200, CRC(7692f497) SHA1(42468c0705df9928e15ff8deb7e793a6c0c04353) ) // palette + ROM_LOAD( "pr-1122.prom-ic11", 0x0800, 0x0400, CRC(1a86ce70) SHA1(cab708b9a089b2e28f2298c1e4fae6e200923527) ) // sprite priorities + ROM_LOAD( "pr-1123.prom-ic12", 0x0c00, 0x0400, CRC(02d2cb52) SHA1(c34d6b60355747ce20fcb8d322df0e188d187f10) ) // sprite/road/background priorities + ROM_LOAD( "pr-1279.sound-ic40", 0x1000, 0x0020, CRC(b369a6ae) SHA1(dda7c6cf58ce5173f29a3084c85393c0c4587086) ) // sound board PROM ROM_END @@ -1341,52 +1385,52 @@ ROM_START( turbobl ) ROM_LOAD( "ic89.bin", 0x2000, 0x2000, CRC(93ebc86a) SHA1(26b78ef19610c88ce7783f7b7749b6fb34e6287d) ) ROM_LOAD( "ic103.bin", 0x4000, 0x2000, CRC(71876f74) SHA1(078b8b93971caa4e14f5e95fadf8c209b20d266e) ) - ROM_REGION( 0x20000, "sprites", 0 ) /* sprite data */ - ROM_LOAD( "a-ic84.bin", 0x00000, 0x2000, CRC(555bfe9a) SHA1(1e56385475eeff044dcd9b44a154991d3efe995e) ) /* level 0 */ + ROM_REGION( 0x20000, "sprites", 0 ) + ROM_LOAD( "a-ic84.bin", 0x00000, 0x2000, CRC(555bfe9a) SHA1(1e56385475eeff044dcd9b44a154991d3efe995e) ) // level 0 ROM_RELOAD( 0x02000, 0x2000 ) - ROM_LOAD( "b-ic86.bin", 0x04000, 0x2000, CRC(82fe5b94) SHA1(b96688ca0cfd90fdc4ee7c2e6c0b66726cc5713c) ) /* level 1 */ // ic86 and ic88 roms seem swapped compared to other sets, is it correct? + ROM_LOAD( "b-ic86.bin", 0x04000, 0x2000, CRC(82fe5b94) SHA1(b96688ca0cfd90fdc4ee7c2e6c0b66726cc5713c) ) // level 1 // ic86 and ic88 roms seem swapped compared to other sets, is it correct? ROM_RELOAD( 0x06000, 0x2000 ) - ROM_LOAD( "c-ic88.bin", 0x08000, 0x2000, CRC(95182020) SHA1(cd392a311da222727ce92801cb9d926ccdb08797) ) /* level 2 */ + ROM_LOAD( "c-ic88.bin", 0x08000, 0x2000, CRC(95182020) SHA1(cd392a311da222727ce92801cb9d926ccdb08797) ) // level 2 ROM_RELOAD( 0x0a000, 0x2000 ) - ROM_LOAD( "e-ic90.bin", 0x0c000, 0x2000, CRC(0e857f82) SHA1(fbf0dcd11fd4fa09235c3f05d8e284b7dcc8f303) ) /* level 3 */ + ROM_LOAD( "e-ic90.bin", 0x0c000, 0x2000, CRC(0e857f82) SHA1(fbf0dcd11fd4fa09235c3f05d8e284b7dcc8f303) ) // level 3 ROM_LOAD( "d-ic99.bin", 0x0e000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_LOAD( "g-ic92.bin", 0x10000, 0x2000, CRC(292573de) SHA1(3ddc980d11478a6a6e4082c2f76c1ab82ffe2f36) ) /* level 4 */ + ROM_LOAD( "g-ic92.bin", 0x10000, 0x2000, CRC(292573de) SHA1(3ddc980d11478a6a6e4082c2f76c1ab82ffe2f36) ) // level 4 ROM_LOAD( "f-ic100.bin",0x12000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_LOAD( "k-ic94.bin", 0x14000, 0x2000, CRC(92783626) SHA1(13979eb964112436182d2a92f21803bcc28f4a4a) ) /* level 5 */ + ROM_LOAD( "k-ic94.bin", 0x14000, 0x2000, CRC(92783626) SHA1(13979eb964112436182d2a92f21803bcc28f4a4a) ) // level 5 ROM_LOAD( "h-ic101.bin",0x16000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_LOAD( "p-ic32.bin", 0x18000, 0x2000, CRC(485dcef9) SHA1(0f760ebb42cc2580a29758c72428a41d74477ce6) ) /* level 6 */ + ROM_LOAD( "p-ic32.bin", 0x18000, 0x2000, CRC(485dcef9) SHA1(0f760ebb42cc2580a29758c72428a41d74477ce6) ) // level 6 ROM_LOAD( "n-ic47.bin", 0x1a000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_LOAD( "m-ic34.bin", 0x1c000, 0x2000, CRC(4ca984ce) SHA1(99f294fb203f23929b44baa2dd1825c67dde08a1) ) /* level 7 */ + ROM_LOAD( "m-ic34.bin", 0x1c000, 0x2000, CRC(4ca984ce) SHA1(99f294fb203f23929b44baa2dd1825c67dde08a1) ) // level 7 ROM_LOAD( "l-ic49.bin", 0x1e000, 0x2000, CRC(aee6e05e) SHA1(99b9b1ec996746ddf713ed38192f350f1f32a847) ) - ROM_REGION( 0x1000, "fgtiles", 0 ) /* foreground data */ + ROM_REGION( 0x1000, "fgtiles", 0 ) ROM_LOAD( "ic111.bin", 0x0000, 0x0800, CRC(fab3899b) SHA1(7e869084ab9ec9902490f5f40b7902c6c1f6d7c9) ) ROM_LOAD( "ic122.bin", 0x0800, 0x0800, CRC(e5fab290) SHA1(3c25e327105dcdba129a776bb73928683063818c) ) - ROM_REGION( 0x4800, "road", 0 ) /* road data */ + ROM_REGION( 0x4800, "road", 0 ) ROM_LOAD( "ic1.bin", 0x0000, 0x1000, CRC(c2f649a6) SHA1(a5b0ff6920187003fa2375ba2c5dfcd39382a9ed) ) ROM_LOAD( "ic13.bin", 0x1000, 0x1000, CRC(fefcf3be) SHA1(d1b56a8826fec2fcb8e586b7ca4ae67e9b52c911) ) ROM_LOAD( "ic27.bin", 0x2000, 0x1000, CRC(83195ee5) SHA1(482684e71db41234a31767763066dfc1c61de743) ) ROM_LOAD( "ic41.bin", 0x3000, 0x1000, CRC(3158a549) SHA1(1bae6d90dc8c924ba467d617dee7870d73dd0bea) ) ROM_LOAD( "ic74.bin", 0x4000, 0x0800, CRC(29854c48) SHA1(cab89bc30f83d9746931ddf6f95a6d0c8a517e5d) ) - ROM_REGION( 0x100, "unkproms", 0 ) /* various PROMs */ + ROM_REGION( 0x100, "unkproms", 0 ) ROM_LOAD( "ic90.bin", 0x0000, 0x0100, CRC(eb2fd7a2) SHA1(2c50ab05305bed4e336fc198f58dc3aa06a3bdfd) ) // bootleg specific? - ROM_REGION( 0x1020, "proms", 0 ) /* various PROMs */ - ROM_LOAD( "74s288.ic13", 0x0000, 0x0020, CRC(78aded46) SHA1(c78afe804f8b8e837b0c502de5b8715a41fb92b9) ) /* road red/green color table */ - ROM_LOAD( "74s288.ic18", 0x0020, 0x0020, CRC(172d0835) SHA1(e2125f5025d69021b799d0c80b61e05af53ec633) ) /* road collision/enable */ // different - ROM_LOAD( "74s288.ic20", 0x0040, 0x0020, CRC(3956767d) SHA1(073aaf57175526660fcf7af2e16e7f1d1aaba9a9) ) /* collision detection */ - ROM_LOAD( "74s288.ic21", 0x0060, 0x0020, CRC(f06d9907) SHA1(f11db7800f41b03e79f5eef8d7ef3ae0a6277518) ) /* road green/blue color table */ - ROM_LOAD( "ic99.bin", 0x0100, 0x0100, CRC(59f36e1c) SHA1(0d3ea6218f4ef1ac3181903e31eeea7786141f52) ) /* background color table */ // different + ROM_REGION( 0x1020, "proms", 0 ) + ROM_LOAD( "74s288.ic13", 0x0000, 0x0020, CRC(78aded46) SHA1(c78afe804f8b8e837b0c502de5b8715a41fb92b9) ) // road red/green color table + ROM_LOAD( "74s288.ic18", 0x0020, 0x0020, CRC(172d0835) SHA1(e2125f5025d69021b799d0c80b61e05af53ec633) ) // road collision/enable // different + ROM_LOAD( "74s288.ic20", 0x0040, 0x0020, CRC(3956767d) SHA1(073aaf57175526660fcf7af2e16e7f1d1aaba9a9) ) // collision detection + ROM_LOAD( "74s288.ic21", 0x0060, 0x0020, CRC(f06d9907) SHA1(f11db7800f41b03e79f5eef8d7ef3ae0a6277518) ) // road green/blue color table + ROM_LOAD( "ic99.bin", 0x0100, 0x0100, CRC(59f36e1c) SHA1(0d3ea6218f4ef1ac3181903e31eeea7786141f52) ) // background color table // different // PROMs below weren't in this zip, missing? - ROM_LOAD( "pr-1119.cpu-ic50", 0x0200, 0x0200, CRC(57ebd4bc) SHA1(932649da3537666f95833a8a8aff506217bd9aa1) ) /* sprite Y scaling */ - ROM_LOAD( "pr-1120.cpu-ic62", 0x0400, 0x0200, CRC(8dd4c8a8) SHA1(e8d9cf08f115d57c44746fa0ff28f47b064b4193) ) /* video timing */ - ROM_LOAD( "pr-1121.prom-ic29", 0x0600, 0x0200, CRC(7692f497) SHA1(42468c0705df9928e15ff8deb7e793a6c0c04353) ) /* palette */ - ROM_LOAD( "pr-1122.prom-ic11", 0x0800, 0x0400, CRC(1a86ce70) SHA1(cab708b9a089b2e28f2298c1e4fae6e200923527) ) /* sprite priorities */ - ROM_LOAD( "pr-1123.prom-ic12", 0x0c00, 0x0400, CRC(02d2cb52) SHA1(c34d6b60355747ce20fcb8d322df0e188d187f10) ) /* sprite/road/background priorities */ - ROM_LOAD( "pr-1279.sound-ic40", 0x1000, 0x0020, CRC(b369a6ae) SHA1(dda7c6cf58ce5173f29a3084c85393c0c4587086) ) /* sound board PROM */ + ROM_LOAD( "pr-1119.cpu-ic50", 0x0200, 0x0200, CRC(57ebd4bc) SHA1(932649da3537666f95833a8a8aff506217bd9aa1) ) // sprite Y scaling + ROM_LOAD( "pr-1120.cpu-ic62", 0x0400, 0x0200, CRC(8dd4c8a8) SHA1(e8d9cf08f115d57c44746fa0ff28f47b064b4193) ) // video timing + ROM_LOAD( "pr-1121.prom-ic29", 0x0600, 0x0200, CRC(7692f497) SHA1(42468c0705df9928e15ff8deb7e793a6c0c04353) ) // palette + ROM_LOAD( "pr-1122.prom-ic11", 0x0800, 0x0400, CRC(1a86ce70) SHA1(cab708b9a089b2e28f2298c1e4fae6e200923527) ) // sprite priorities + ROM_LOAD( "pr-1123.prom-ic12", 0x0c00, 0x0400, CRC(02d2cb52) SHA1(c34d6b60355747ce20fcb8d322df0e188d187f10) ) // sprite/road/background priorities + ROM_LOAD( "pr-1279.sound-ic40", 0x1000, 0x0020, CRC(b369a6ae) SHA1(dda7c6cf58ce5173f29a3084c85393c0c4587086) ) // sound board PROM ROM_END ROM_START( subroc3d ) @@ -1395,82 +1439,82 @@ ROM_START( subroc3d ) ROM_LOAD( "epr-1615.cpu-ic87", 0x2000, 0x2000, CRC(6281eb2e) SHA1(591d7f184f51f33fb583c916eddacf4581d612d7) ) ROM_LOAD( "epr-1616.cpu-ic86", 0x4000, 0x2000, CRC(cc7b0c9b) SHA1(0b44c9a2421a51bdc16a2b590f24fbbfb47ef86f) ) - ROM_REGION( 0x40000, "sprites", 0 ) /* sprite data */ - ROM_LOAD( "epr-1417.prom-ic29", 0x00000, 0x2000, CRC(2aaff4e0) SHA1(4b4e4f65d63fb9648108c5f01248ffcb3b4bc54f) ) /* level 0 */ + ROM_REGION( 0x40000, "sprites", 0 ) + ROM_LOAD( "epr-1417.prom-ic29", 0x00000, 0x2000, CRC(2aaff4e0) SHA1(4b4e4f65d63fb9648108c5f01248ffcb3b4bc54f) ) // level 0 ROM_LOAD( "epr-1418.prom-ic30", 0x02000, 0x2000, CRC(41ff0f15) SHA1(c441c5368a3faf2544d617e1ceb5cb8eac23017d) ) - ROM_LOAD( "epr-1419.prom-ic55", 0x08000, 0x2000, CRC(37ac818c) SHA1(26b15f410c6a6dcde498e20cece973d5ba23b0de) ) /* level 1 */ + ROM_LOAD( "epr-1419.prom-ic55", 0x08000, 0x2000, CRC(37ac818c) SHA1(26b15f410c6a6dcde498e20cece973d5ba23b0de) ) // level 1 ROM_LOAD( "epr-1420.prom-ic56", 0x0a000, 0x2000, CRC(41ff0f15) SHA1(c441c5368a3faf2544d617e1ceb5cb8eac23017d) ) - ROM_LOAD( "epr-1422.prom-ic81", 0x10000, 0x2000, CRC(0221db58) SHA1(8a157168610bf867a038229ad345de8f95741d04) ) /* level 2 */ + ROM_LOAD( "epr-1422.prom-ic81", 0x10000, 0x2000, CRC(0221db58) SHA1(8a157168610bf867a038229ad345de8f95741d04) ) // level 2 ROM_LOAD( "epr-1423.prom-ic82", 0x12000, 0x2000, CRC(08b1a4b8) SHA1(8e64228911863bf93fdf8a17a2ddca739fb20cd6) ) ROM_LOAD( "epr-1421.prom-ic80", 0x16000, 0x2000, CRC(1db33c09) SHA1(1b2ec0c15fb178bed7cd2c877a6679ac6c59955c) ) - ROM_LOAD( "epr-1425.prom-ic107", 0x18000, 0x2000, CRC(0221db58) SHA1(8a157168610bf867a038229ad345de8f95741d04) ) /* level 3 */ + ROM_LOAD( "epr-1425.prom-ic107", 0x18000, 0x2000, CRC(0221db58) SHA1(8a157168610bf867a038229ad345de8f95741d04) ) // level 3 ROM_LOAD( "epr-1426.prom-ic108", 0x1a000, 0x2000, CRC(08b1a4b8) SHA1(8e64228911863bf93fdf8a17a2ddca739fb20cd6) ) ROM_LOAD( "epr-1424.prom-ic106", 0x1e000, 0x2000, CRC(1db33c09) SHA1(1b2ec0c15fb178bed7cd2c877a6679ac6c59955c) ) - ROM_LOAD( "epr-1664.prom-ic116", 0x20000, 0x2000, CRC(6c93ece7) SHA1(b6523f08862f70743422283d7d46e226994add8c) ) /* level 4 */ + ROM_LOAD( "epr-1664.prom-ic116", 0x20000, 0x2000, CRC(6c93ece7) SHA1(b6523f08862f70743422283d7d46e226994add8c) ) // level 4 ROM_LOAD( "epr-1427.prom-ic115", 0x22000, 0x2000, CRC(2f8cfc2d) SHA1(1ee1b57cf7133aee5c12d654112883af36dff2fa) ) ROM_LOAD( "epr-1429.prom-ic117", 0x26000, 0x2000, CRC(80e649c7) SHA1(433c847e05a072af8fd7a4d1f50ad856f569c0a6) ) - ROM_LOAD( "epr-1665.prom-ic90", 0x28000, 0x2000, CRC(6c93ece7) SHA1(b6523f08862f70743422283d7d46e226994add8c) ) /* level 5 */ + ROM_LOAD( "epr-1665.prom-ic90", 0x28000, 0x2000, CRC(6c93ece7) SHA1(b6523f08862f70743422283d7d46e226994add8c) ) // level 5 ROM_LOAD( "epr-1430.prom-ic89", 0x2a000, 0x2000, CRC(2f8cfc2d) SHA1(1ee1b57cf7133aee5c12d654112883af36dff2fa) ) ROM_LOAD( "epr-1432.prom-ic91", 0x2e000, 0x2000, CRC(d9cd98d0) SHA1(4e1c135ea19375c6a97aac3d134572a45972c56a) ) - ROM_LOAD( "epr-1666.prom-ic64", 0x30000, 0x2000, CRC(6c93ece7) SHA1(b6523f08862f70743422283d7d46e226994add8c) ) /* level 6 */ + ROM_LOAD( "epr-1666.prom-ic64", 0x30000, 0x2000, CRC(6c93ece7) SHA1(b6523f08862f70743422283d7d46e226994add8c) ) // level 6 ROM_LOAD( "epr-1433.prom-ic63", 0x32000, 0x2000, CRC(2f8cfc2d) SHA1(1ee1b57cf7133aee5c12d654112883af36dff2fa) ) ROM_LOAD( "epr-1436.prom-ic66", 0x34000, 0x2000, CRC(fc4ad926) SHA1(bf6659ac9eaf5e85bc73848ab4e0c6c7413b55a8) ) ROM_LOAD( "epr-1435.prom-ic65", 0x36000, 0x2000, CRC(40662eef) SHA1(23bf268ea93288af90bd0e8d6f506a5b92490829) ) - ROM_LOAD( "epr-1438.prom-ic38", 0x38000, 0x2000, CRC(d563d4c1) SHA1(81ebb65c3c0a44aaddf6895a80533436b87a15c7) ) /* level 7 */ + ROM_LOAD( "epr-1438.prom-ic38", 0x38000, 0x2000, CRC(d563d4c1) SHA1(81ebb65c3c0a44aaddf6895a80533436b87a15c7) ) // level 7 ROM_LOAD( "epr-1437.prom-ic37", 0x3a000, 0x2000, CRC(18ba6aad) SHA1(b959f09739909b835d790928f35b7f7e6bd52c31) ) ROM_LOAD( "epr-1440.prom-ic40", 0x3c000, 0x2000, CRC(3a0e659c) SHA1(51e64b2417cf3b599aa9ecc84457462a5dca2a61) ) ROM_LOAD( "epr-1439.prom-ic39", 0x3e000, 0x2000, CRC(3d051668) SHA1(aa4f6152235f07ad39019c46dfacf69d70a7fdcc) ) - ROM_REGION( 0x01000, "fgtiles", 0 ) /* foreground data */ + ROM_REGION( 0x01000, "fgtiles", 0 ) ROM_LOAD( "epr-1618.cpu-ic82", 0x0000, 0x0800, CRC(a25fea71) SHA1(283efee3951d081119d756114f9f49c2996de5f2) ) ROM_LOAD( "epr-1617.cpu-ic83", 0x0800, 0x0800, CRC(f70c678e) SHA1(1fabf0011fa4fefd29daf18d4ed6b2cbec14e7b7) ) - ROM_REGION( 0x0a00, "proms", 0 ) /* various PROMs */ - ROM_LOAD( "pr-1419.cpu-ic108", 0x00000, 0x0200, CRC(2cfa2a3f) SHA1(7e2ed2f4ef3324c41da153828c7976e7ba91af7c) ) /* color prom */ - ROM_LOAD( "pr-1620.cpu-ic62", 0x00200, 0x0100, CRC(0ab7ef09) SHA1(b89f8889e2c1220b381e1d6ecc4105cb4152e350) ) /* char color palette */ - ROM_LOAD( "pr-1449.cpu-ic5", 0x00300, 0x0200, CRC(5eb9ff47) SHA1(b8b1e7cfb8aa380663684df6090c48c7c57a6d50) ) /* sprite Y scaling */ - ROM_LOAD( "pr-1450.cpu-ic21", 0x00500, 0x0200, CRC(66bdb00c) SHA1(3956647b27a73770bd163eb7ad29fcd9243dac83) ) /* sprite priority */ - ROM_LOAD( "pr-1451.cpu-ic58", 0x00700, 0x0200, CRC(6a575261) SHA1(79f690db671e471153cbdf1939e733da74fcdc08) ) /* video timing */ - ROM_LOAD( "pr-1453.cpu-ic39", 0x00900, 0x0020, CRC(181c6d23) SHA1(4749b205cbaa513ee65a644946235d2cfe275648) ) /* sprite state machine */ - ROM_LOAD( "pr-1454.cpu-ic67", 0x00920, 0x0020, CRC(dc683440) SHA1(8469914d364dc8f9d0839cae3c864de3b2f3c8df) ) /* flipped tilemap addressing */ + ROM_REGION( 0x0a00, "proms", 0 ) + ROM_LOAD( "pr-1419.cpu-ic108", 0x00000, 0x0200, CRC(2cfa2a3f) SHA1(7e2ed2f4ef3324c41da153828c7976e7ba91af7c) ) // color prom + ROM_LOAD( "pr-1620.cpu-ic62", 0x00200, 0x0100, CRC(0ab7ef09) SHA1(b89f8889e2c1220b381e1d6ecc4105cb4152e350) ) // char color palette + ROM_LOAD( "pr-1449.cpu-ic5", 0x00300, 0x0200, CRC(5eb9ff47) SHA1(b8b1e7cfb8aa380663684df6090c48c7c57a6d50) ) // sprite Y scaling + ROM_LOAD( "pr-1450.cpu-ic21", 0x00500, 0x0200, CRC(66bdb00c) SHA1(3956647b27a73770bd163eb7ad29fcd9243dac83) ) // sprite priority + ROM_LOAD( "pr-1451.cpu-ic58", 0x00700, 0x0200, CRC(6a575261) SHA1(79f690db671e471153cbdf1939e733da74fcdc08) ) // video timing + ROM_LOAD( "pr-1453.cpu-ic39", 0x00900, 0x0020, CRC(181c6d23) SHA1(4749b205cbaa513ee65a644946235d2cfe275648) ) // sprite state machine + ROM_LOAD( "pr-1454.cpu-ic67", 0x00920, 0x0020, CRC(dc683440) SHA1(8469914d364dc8f9d0839cae3c864de3b2f3c8df) ) // flipped tilemap addressing ROM_END -ROM_START( buckrog ) /* CPU BOARD Sega ID# 834-5158-01, ROM BOARD Sega ID# 834-5152-01 */ +ROM_START( buckrog ) // CPU BOARD Sega ID# 834-5158-01, ROM BOARD Sega ID# 834-5152-01 ROM_REGION( 0x8000, "maincpu", 0 ) - ROM_LOAD( "epr-5265.cpu-ic3", 0x0000, 0x4000, CRC(f0055e97) SHA1(f6ee2afd6fef710949087d1cb04cbc242d1fa9f5) ) /* encrypted Z80 code, SEGA 315-5014 CPU */ - ROM_LOAD( "epr-5266.cpu-ic4", 0x4000, 0x4000, CRC(7d084c39) SHA1(ef2c0a2a59e14d9e196fd3837139fc5acf0f63be) ) /* encrypted Z80 code, SEGA 315-5014 CPU */ + ROM_LOAD( "epr-5265.cpu-ic3", 0x0000, 0x4000, CRC(f0055e97) SHA1(f6ee2afd6fef710949087d1cb04cbc242d1fa9f5) ) // encrypted Z80 code, SEGA 315-5014 CPU + ROM_LOAD( "epr-5266.cpu-ic4", 0x4000, 0x4000, CRC(7d084c39) SHA1(ef2c0a2a59e14d9e196fd3837139fc5acf0f63be) ) // encrypted Z80 code, SEGA 315-5014 CPU ROM_REGION( 0x2000, "subcpu", 0 ) ROM_LOAD( "epr-5200.cpu-ic66", 0x0000, 0x1000, CRC(0d58b154) SHA1(9f3951eb7ea1fa9ff914738462e4b4f755d60802) ) - ROM_REGION( 0x40000, "sprites", 0 ) /* sprite data */ - ROM_LOAD( "epr-5216.prom-ic100", 0x00000, 0x2000, CRC(8155bd73) SHA1(b6814f03eafe16457655598685b4827456b86335) ) /* level 0 */ - ROM_LOAD( "epr-5213.prom-ic84", 0x08000, 0x2000, CRC(fd78dda4) SHA1(4328b5782cbe692765eac43a8eba40bdf2e41921) ) /* level 1 */ - ROM_LOAD( "epr-5262.prom-ic68", 0x10000, 0x4000, CRC(2a194270) SHA1(8d4e444bd8a4e2fa32099787849e6c02cffe49b0) ) /* level 2 */ - ROM_LOAD( "epr-5260.prom-ic52", 0x18000, 0x4000, CRC(b31a120f) SHA1(036cdf56cb43b892609a8f793d5ca66940bf128e) ) /* level 3 */ - ROM_LOAD( "epr-5259.prom-ic43", 0x20000, 0x4000, CRC(d3584926) SHA1(7ad410ad84447a3edba2c51c4ec4314a117fffe7) ) /* level 4 */ - ROM_LOAD( "epr-5261.prom-ic59", 0x28000, 0x4000, CRC(d83c7fcf) SHA1(4c4a590762ef87a3057a12e8d4310decbeb8613c) ) /* level 5 */ + ROM_REGION( 0x40000, "sprites", 0 ) + ROM_LOAD( "epr-5216.prom-ic100", 0x00000, 0x2000, CRC(8155bd73) SHA1(b6814f03eafe16457655598685b4827456b86335) ) // level 0 + ROM_LOAD( "epr-5213.prom-ic84", 0x08000, 0x2000, CRC(fd78dda4) SHA1(4328b5782cbe692765eac43a8eba40bdf2e41921) ) // level 1 + ROM_LOAD( "epr-5262.prom-ic68", 0x10000, 0x4000, CRC(2a194270) SHA1(8d4e444bd8a4e2fa32099787849e6c02cffe49b0) ) // level 2 + ROM_LOAD( "epr-5260.prom-ic52", 0x18000, 0x4000, CRC(b31a120f) SHA1(036cdf56cb43b892609a8f793d5ca66940bf128e) ) // level 3 + ROM_LOAD( "epr-5259.prom-ic43", 0x20000, 0x4000, CRC(d3584926) SHA1(7ad410ad84447a3edba2c51c4ec4314a117fffe7) ) // level 4 + ROM_LOAD( "epr-5261.prom-ic59", 0x28000, 0x4000, CRC(d83c7fcf) SHA1(4c4a590762ef87a3057a12e8d4310decbeb8613c) ) // level 5 ROM_LOAD( "epr-5208.prom-ic58", 0x2c000, 0x2000, CRC(d181fed2) SHA1(fd46e609b7e04d0661c84ad0faa616d75b8ba89f) ) - ROM_LOAD( "epr-5263.prom-ic75", 0x30000, 0x4000, CRC(1bd6e453) SHA1(472fbc7add05b96e368b961c5ef7ef27f3896216) ) /* level 6 */ + ROM_LOAD( "epr-5263.prom-ic75", 0x30000, 0x4000, CRC(1bd6e453) SHA1(472fbc7add05b96e368b961c5ef7ef27f3896216) ) // level 6 ROM_LOAD( "epr-5237.prom-ic74", 0x34000, 0x2000, CRC(c34e9b82) SHA1(9e69fe9dcc631783e43abe356657f3c6a6a533d8) ) - ROM_LOAD( "epr-5264.prom-ic91", 0x38000, 0x4000, CRC(221f4ced) SHA1(07498c9105c4c4589b19c2bc36abafb176de7bda) ) /* level 7 */ + ROM_LOAD( "epr-5264.prom-ic91", 0x38000, 0x4000, CRC(221f4ced) SHA1(07498c9105c4c4589b19c2bc36abafb176de7bda) ) // level 7 ROM_LOAD( "epr-5238.prom-ic90", 0x3c000, 0x2000, CRC(7aff0886) SHA1(09ed9fa973257bb23b488e02ef9e02d867e4c366) ) - ROM_REGION( 0x01000, "fgtiles", 0 ) /* foreground data */ + ROM_REGION( 0x01000, "fgtiles", 0 ) ROM_LOAD( "epr-5201.cpu-ic102", 0x0000, 0x0800, CRC(7f21b0a4) SHA1(b6d784031ffecb36863ae1d81eeaaf8f76ab83df) ) ROM_LOAD( "epr-5202.cpu-ic103", 0x0800, 0x0800, CRC(43f3e5a7) SHA1(2714943b6720311c5d226db3b6fe95d072677793) ) - ROM_REGION( 0x2000, "bgcolor", 0 ) /* background color data */ + ROM_REGION( 0x2000, "bgcolor", 0 ) ROM_LOAD( "epr-5203.cpu-ic91", 0x0000, 0x2000, CRC(631f5b65) SHA1(ce8b23cf97f7e08a13f426964ef140a20a884335) ) - ROM_REGION( 0x0b00, "proms", 0 ) /* various PROMs */ - ROM_LOAD( "pr-5194.cpu-ic39", 0x0000, 0x0020, CRC(bc88cced) SHA1(5055362710c0f58823c05fb4c0e0eec638b91e3d) ) /* char layer X shift */ - ROM_LOAD( "pr-5195.cpu-ic53", 0x0020, 0x0020, CRC(181c6d23) SHA1(4749b205cbaa513ee65a644946235d2cfe275648) ) /* sprite state machine */ - ROM_LOAD( "pr-5196.cpu-ic10", 0x0100, 0x0200, CRC(04204bcf) SHA1(5636eb184463ac58fcfd20012d13d14fb0769124) ) /* sprite Y scaling */ - ROM_LOAD( "pr-5197.cpu-ic78", 0x0300, 0x0200, CRC(a42674af) SHA1(db3590dd0d0f8a85d4ba32ac4ee33f2f4ee4c348) ) /* video timing */ - ROM_LOAD( "pr-5198.cpu-ic93", 0x0500, 0x0200, CRC(32e74bc8) SHA1(dd2c812efd7b8f6b31a45e698d6453ea6bec132e) ) /* char color table */ - ROM_LOAD( "pr-5233.cpu-ic95", 0x0700, 0x0400, CRC(1cd08c4e) SHA1(fb3081548f157d705211a5f07261cf4ad1ebb453) ) /* sprite color table */ + ROM_REGION( 0x0b00, "proms", 0 ) + ROM_LOAD( "pr-5194.cpu-ic39", 0x0000, 0x0020, CRC(bc88cced) SHA1(5055362710c0f58823c05fb4c0e0eec638b91e3d) ) // char layer X shift + ROM_LOAD( "pr-5195.cpu-ic53", 0x0020, 0x0020, CRC(181c6d23) SHA1(4749b205cbaa513ee65a644946235d2cfe275648) ) // sprite state machine + ROM_LOAD( "pr-5196.cpu-ic10", 0x0100, 0x0200, CRC(04204bcf) SHA1(5636eb184463ac58fcfd20012d13d14fb0769124) ) // sprite Y scaling + ROM_LOAD( "pr-5197.cpu-ic78", 0x0300, 0x0200, CRC(a42674af) SHA1(db3590dd0d0f8a85d4ba32ac4ee33f2f4ee4c348) ) // video timing + ROM_LOAD( "pr-5198.cpu-ic93", 0x0500, 0x0200, CRC(32e74bc8) SHA1(dd2c812efd7b8f6b31a45e698d6453ea6bec132e) ) // char color table + ROM_LOAD( "pr-5233.cpu-ic95", 0x0700, 0x0400, CRC(1cd08c4e) SHA1(fb3081548f157d705211a5f07261cf4ad1ebb453) ) // sprite color table ROM_END @@ -1482,33 +1526,33 @@ ROM_START( buckrogn ) ROM_REGION( 0x2000, "subcpu", 0 ) ROM_LOAD( "epr-5200.cpu-ic66", 0x0000, 0x1000, CRC(0d58b154) SHA1(9f3951eb7ea1fa9ff914738462e4b4f755d60802) ) - ROM_REGION( 0x40000, "sprites", 0 ) /* sprite data */ - ROM_LOAD( "epr-5216.prom-ic100", 0x00000, 0x2000, CRC(8155bd73) SHA1(b6814f03eafe16457655598685b4827456b86335) ) /* level 0 */ - ROM_LOAD( "epr-5213.prom-ic84", 0x08000, 0x2000, CRC(fd78dda4) SHA1(4328b5782cbe692765eac43a8eba40bdf2e41921) ) /* level 1 */ - ROM_LOAD( "epr-5262.prom-ic68", 0x10000, 0x4000, CRC(2a194270) SHA1(8d4e444bd8a4e2fa32099787849e6c02cffe49b0) ) /* level 2 */ - ROM_LOAD( "epr-5260.prom-ic52", 0x18000, 0x4000, CRC(b31a120f) SHA1(036cdf56cb43b892609a8f793d5ca66940bf128e) ) /* level 3 */ - ROM_LOAD( "epr-5259.prom-ic43", 0x20000, 0x4000, CRC(d3584926) SHA1(7ad410ad84447a3edba2c51c4ec4314a117fffe7) ) /* level 4 */ - ROM_LOAD( "epr-5261.prom-ic59", 0x28000, 0x4000, CRC(d83c7fcf) SHA1(4c4a590762ef87a3057a12e8d4310decbeb8613c) ) /* level 5 */ + ROM_REGION( 0x40000, "sprites", 0 ) + ROM_LOAD( "epr-5216.prom-ic100", 0x00000, 0x2000, CRC(8155bd73) SHA1(b6814f03eafe16457655598685b4827456b86335) ) // level 0 + ROM_LOAD( "epr-5213.prom-ic84", 0x08000, 0x2000, CRC(fd78dda4) SHA1(4328b5782cbe692765eac43a8eba40bdf2e41921) ) // level 1 + ROM_LOAD( "epr-5262.prom-ic68", 0x10000, 0x4000, CRC(2a194270) SHA1(8d4e444bd8a4e2fa32099787849e6c02cffe49b0) ) // level 2 + ROM_LOAD( "epr-5260.prom-ic52", 0x18000, 0x4000, CRC(b31a120f) SHA1(036cdf56cb43b892609a8f793d5ca66940bf128e) ) // level 3 + ROM_LOAD( "epr-5259.prom-ic43", 0x20000, 0x4000, CRC(d3584926) SHA1(7ad410ad84447a3edba2c51c4ec4314a117fffe7) ) // level 4 + ROM_LOAD( "epr-5261.prom-ic59", 0x28000, 0x4000, CRC(d83c7fcf) SHA1(4c4a590762ef87a3057a12e8d4310decbeb8613c) ) // level 5 ROM_LOAD( "epr-5208.prom-ic58", 0x2c000, 0x2000, CRC(d181fed2) SHA1(fd46e609b7e04d0661c84ad0faa616d75b8ba89f) ) - ROM_LOAD( "epr-5263.prom-ic75", 0x30000, 0x4000, CRC(1bd6e453) SHA1(472fbc7add05b96e368b961c5ef7ef27f3896216) ) /* level 6 */ + ROM_LOAD( "epr-5263.prom-ic75", 0x30000, 0x4000, CRC(1bd6e453) SHA1(472fbc7add05b96e368b961c5ef7ef27f3896216) ) // level 6 ROM_LOAD( "epr-5237.prom-ic74", 0x34000, 0x2000, CRC(c34e9b82) SHA1(9e69fe9dcc631783e43abe356657f3c6a6a533d8) ) - ROM_LOAD( "epr-5264.prom-ic91", 0x38000, 0x4000, CRC(221f4ced) SHA1(07498c9105c4c4589b19c2bc36abafb176de7bda) ) /* level 7 */ + ROM_LOAD( "epr-5264.prom-ic91", 0x38000, 0x4000, CRC(221f4ced) SHA1(07498c9105c4c4589b19c2bc36abafb176de7bda) ) // level 7 ROM_LOAD( "epr-5238.prom-ic90", 0x3c000, 0x2000, CRC(7aff0886) SHA1(09ed9fa973257bb23b488e02ef9e02d867e4c366) ) - ROM_REGION( 0x01000, "fgtiles", 0 ) /* foreground data */ + ROM_REGION( 0x01000, "fgtiles", 0 ) ROM_LOAD( "epr-5201.cpu-ic102", 0x0000, 0x0800, CRC(7f21b0a4) SHA1(b6d784031ffecb36863ae1d81eeaaf8f76ab83df) ) ROM_LOAD( "epr-5202.cpu-ic103", 0x0800, 0x0800, CRC(43f3e5a7) SHA1(2714943b6720311c5d226db3b6fe95d072677793) ) - ROM_REGION( 0x2000, "bgcolor", 0 ) /* background color data */ + ROM_REGION( 0x2000, "bgcolor", 0 ) ROM_LOAD( "epr-5203.cpu-ic91", 0x0000, 0x2000, CRC(631f5b65) SHA1(ce8b23cf97f7e08a13f426964ef140a20a884335) ) - ROM_REGION( 0x0b00, "proms", 0 ) /* various PROMs */ - ROM_LOAD( "pr-5194.cpu-ic39", 0x0000, 0x0020, CRC(bc88cced) SHA1(5055362710c0f58823c05fb4c0e0eec638b91e3d) ) /* char layer X shift */ - ROM_LOAD( "pr-5195.cpu-ic53", 0x0020, 0x0020, CRC(181c6d23) SHA1(4749b205cbaa513ee65a644946235d2cfe275648) ) /* sprite state machine */ - ROM_LOAD( "pr-5196.cpu-ic10", 0x0100, 0x0200, CRC(04204bcf) SHA1(5636eb184463ac58fcfd20012d13d14fb0769124) ) /* sprite Y scaling */ - ROM_LOAD( "pr-5197.cpu-ic78", 0x0300, 0x0200, CRC(a42674af) SHA1(db3590dd0d0f8a85d4ba32ac4ee33f2f4ee4c348) ) /* video timing */ - ROM_LOAD( "pr-5198.cpu-ic93", 0x0500, 0x0200, CRC(32e74bc8) SHA1(dd2c812efd7b8f6b31a45e698d6453ea6bec132e) ) /* char color table */ - ROM_LOAD( "pr-5199.cpu-ic95", 0x0700, 0x0400, CRC(45e997a8) SHA1(023703b90b503310351b12157b1e732e61430fa5) ) /* sprite color table */ + ROM_REGION( 0x0b00, "proms", 0 ) + ROM_LOAD( "pr-5194.cpu-ic39", 0x0000, 0x0020, CRC(bc88cced) SHA1(5055362710c0f58823c05fb4c0e0eec638b91e3d) ) // char layer X shift + ROM_LOAD( "pr-5195.cpu-ic53", 0x0020, 0x0020, CRC(181c6d23) SHA1(4749b205cbaa513ee65a644946235d2cfe275648) ) // sprite state machine + ROM_LOAD( "pr-5196.cpu-ic10", 0x0100, 0x0200, CRC(04204bcf) SHA1(5636eb184463ac58fcfd20012d13d14fb0769124) ) // sprite Y scaling + ROM_LOAD( "pr-5197.cpu-ic78", 0x0300, 0x0200, CRC(a42674af) SHA1(db3590dd0d0f8a85d4ba32ac4ee33f2f4ee4c348) ) // video timing + ROM_LOAD( "pr-5198.cpu-ic93", 0x0500, 0x0200, CRC(32e74bc8) SHA1(dd2c812efd7b8f6b31a45e698d6453ea6bec132e) ) // char color table + ROM_LOAD( "pr-5199.cpu-ic95", 0x0700, 0x0400, CRC(45e997a8) SHA1(023703b90b503310351b12157b1e732e61430fa5) ) // sprite color table ROM_END ROM_START( buckrogn2 ) @@ -1519,33 +1563,33 @@ ROM_START( buckrogn2 ) ROM_REGION( 0x2000, "subcpu", 0 ) ROM_LOAD( "epr-5200.cpu-ic66", 0x0000, 0x1000, CRC(0d58b154) SHA1(9f3951eb7ea1fa9ff914738462e4b4f755d60802) ) - ROM_REGION( 0x40000, "sprites", 0 ) /* sprite data */ - ROM_LOAD( "epr-5216.prom-ic100", 0x00000, 0x2000, CRC(8155bd73) SHA1(b6814f03eafe16457655598685b4827456b86335) ) /* level 0 */ - ROM_LOAD( "epr-5213.prom-ic84", 0x08000, 0x2000, CRC(fd78dda4) SHA1(4328b5782cbe692765eac43a8eba40bdf2e41921) ) /* level 1 */ - ROM_LOAD( "epr-5210.prom-ic68", 0x10000, 0x4000, CRC(c25b7b9e) SHA1(4418ed056d3240279ce83a872d5887cce374c24e) ) /* level 2 */ - ROM_LOAD( "epr-5235.prom-ic52", 0x18000, 0x4000, CRC(0ba5dac1) SHA1(3a9ab6d3ad1e4bff216412c161e0dc8079c7167e) ) /* level 3 */ - ROM_LOAD( "epr-5234.prom-ic43", 0x20000, 0x4000, CRC(6b773a81) SHA1(5ebcdf8466e634e01e1dbb339c60387ffd471b1d) ) /* level 4 */ - ROM_LOAD( "epr-5236.prom-ic59", 0x28000, 0x4000, CRC(d11ce162) SHA1(c0c7645b2886e133506a203c3feb773d7dba5f2b) ) /* level 5 */ + ROM_REGION( 0x40000, "sprites", 0 ) + ROM_LOAD( "epr-5216.prom-ic100", 0x00000, 0x2000, CRC(8155bd73) SHA1(b6814f03eafe16457655598685b4827456b86335) ) // level 0 + ROM_LOAD( "epr-5213.prom-ic84", 0x08000, 0x2000, CRC(fd78dda4) SHA1(4328b5782cbe692765eac43a8eba40bdf2e41921) ) // level 1 + ROM_LOAD( "epr-5210.prom-ic68", 0x10000, 0x4000, CRC(c25b7b9e) SHA1(4418ed056d3240279ce83a872d5887cce374c24e) ) // level 2 + ROM_LOAD( "epr-5235.prom-ic52", 0x18000, 0x4000, CRC(0ba5dac1) SHA1(3a9ab6d3ad1e4bff216412c161e0dc8079c7167e) ) // level 3 + ROM_LOAD( "epr-5234.prom-ic43", 0x20000, 0x4000, CRC(6b773a81) SHA1(5ebcdf8466e634e01e1dbb339c60387ffd471b1d) ) // level 4 + ROM_LOAD( "epr-5236.prom-ic59", 0x28000, 0x4000, CRC(d11ce162) SHA1(c0c7645b2886e133506a203c3feb773d7dba5f2b) ) // level 5 ROM_LOAD( "epr-5208.prom-ic58", 0x2c000, 0x2000, CRC(d181fed2) SHA1(fd46e609b7e04d0661c84ad0faa616d75b8ba89f) ) - ROM_LOAD( "epr-5212.prom-ic75", 0x30000, 0x4000, CRC(9359ec4f) SHA1(4783527b9961df259e7fbbf8db0b599882dd1207) ) /* level 6 */ + ROM_LOAD( "epr-5212.prom-ic75", 0x30000, 0x4000, CRC(9359ec4f) SHA1(4783527b9961df259e7fbbf8db0b599882dd1207) ) // level 6 ROM_LOAD( "epr-5237.prom-ic74", 0x34000, 0x2000, CRC(c34e9b82) SHA1(9e69fe9dcc631783e43abe356657f3c6a6a533d8) ) - ROM_LOAD( "epr-5215.prom-ic91", 0x38000, 0x4000, CRC(f5dacc53) SHA1(fe536d16ccb249c26a046f60dc804f5d3be430dc) ) /* level 7 */ + ROM_LOAD( "epr-5215.prom-ic91", 0x38000, 0x4000, CRC(f5dacc53) SHA1(fe536d16ccb249c26a046f60dc804f5d3be430dc) ) // level 7 ROM_LOAD( "epr-5238.prom-ic90", 0x3c000, 0x2000, CRC(7aff0886) SHA1(09ed9fa973257bb23b488e02ef9e02d867e4c366) ) - ROM_REGION( 0x01000, "fgtiles", 0 ) /* foreground data */ + ROM_REGION( 0x01000, "fgtiles", 0 ) ROM_LOAD( "epr-5201.cpu-ic102", 0x0000, 0x0800, CRC(7f21b0a4) SHA1(b6d784031ffecb36863ae1d81eeaaf8f76ab83df) ) ROM_LOAD( "epr-5202.cpu-ic103", 0x0800, 0x0800, CRC(43f3e5a7) SHA1(2714943b6720311c5d226db3b6fe95d072677793) ) - ROM_REGION( 0x2000, "bgcolor", 0 ) /* background color data */ + ROM_REGION( 0x2000, "bgcolor", 0 ) ROM_LOAD( "epr-5203.cpu-ic91", 0x0000, 0x2000, CRC(631f5b65) SHA1(ce8b23cf97f7e08a13f426964ef140a20a884335) ) - ROM_REGION( 0x0b00, "proms", 0 ) /* various PROMs */ - ROM_LOAD( "pr-5194.cpu-ic39", 0x0000, 0x0020, CRC(bc88cced) SHA1(5055362710c0f58823c05fb4c0e0eec638b91e3d) ) /* char layer X shift */ - ROM_LOAD( "pr-5195.cpu-ic53", 0x0020, 0x0020, CRC(181c6d23) SHA1(4749b205cbaa513ee65a644946235d2cfe275648) ) /* sprite state machine */ - ROM_LOAD( "pr-5196.cpu-ic10", 0x0100, 0x0200, CRC(04204bcf) SHA1(5636eb184463ac58fcfd20012d13d14fb0769124) ) /* sprite Y scaling */ - ROM_LOAD( "pr-5197.cpu-ic78", 0x0300, 0x0200, CRC(a42674af) SHA1(db3590dd0d0f8a85d4ba32ac4ee33f2f4ee4c348) ) /* video timing */ - ROM_LOAD( "pr-5198.cpu-ic93", 0x0500, 0x0200, CRC(32e74bc8) SHA1(dd2c812efd7b8f6b31a45e698d6453ea6bec132e) ) /* char color table */ - ROM_LOAD( "pr-5233.cpu-ic95", 0x0700, 0x0400, CRC(1cd08c4e) SHA1(fb3081548f157d705211a5f07261cf4ad1ebb453) ) /* sprite color table */ + ROM_REGION( 0x0b00, "proms", 0 ) + ROM_LOAD( "pr-5194.cpu-ic39", 0x0000, 0x0020, CRC(bc88cced) SHA1(5055362710c0f58823c05fb4c0e0eec638b91e3d) ) // char layer X shift + ROM_LOAD( "pr-5195.cpu-ic53", 0x0020, 0x0020, CRC(181c6d23) SHA1(4749b205cbaa513ee65a644946235d2cfe275648) ) // sprite state machine + ROM_LOAD( "pr-5196.cpu-ic10", 0x0100, 0x0200, CRC(04204bcf) SHA1(5636eb184463ac58fcfd20012d13d14fb0769124) ) // sprite Y scaling + ROM_LOAD( "pr-5197.cpu-ic78", 0x0300, 0x0200, CRC(a42674af) SHA1(db3590dd0d0f8a85d4ba32ac4ee33f2f4ee4c348) ) // video timing + ROM_LOAD( "pr-5198.cpu-ic93", 0x0500, 0x0200, CRC(32e74bc8) SHA1(dd2c812efd7b8f6b31a45e698d6453ea6bec132e) ) // char color table + ROM_LOAD( "pr-5233.cpu-ic95", 0x0700, 0x0400, CRC(1cd08c4e) SHA1(fb3081548f157d705211a5f07261cf4ad1ebb453) ) // sprite color table ROM_END /* @@ -1684,39 +1728,39 @@ Bottom ROM_START( zoom909 ) ROM_REGION( 0xc000, "maincpu", 0 ) - ROM_LOAD( "epr-5217b.cpu-ic3", 0x0000, 0x4000, CRC(1b56e7dd) SHA1(ccf638c318ebce754ac9628271d2064e05ced35c) ) /* encrypted Z80 code, SEGA 315-5014 CPU */ - ROM_LOAD( "epr-5218b.cpu-ic4", 0x4000, 0x4000, CRC(77dfd911) SHA1(cc1d4aac863b2d6b52eff7de2b8233be21aac3c9) ) /* encrypted Z80 code, SEGA 315-5014 CPU */ + ROM_LOAD( "epr-5217b.cpu-ic3", 0x0000, 0x4000, CRC(1b56e7dd) SHA1(ccf638c318ebce754ac9628271d2064e05ced35c) ) // encrypted Z80 code, SEGA 315-5014 CPU + ROM_LOAD( "epr-5218b.cpu-ic4", 0x4000, 0x4000, CRC(77dfd911) SHA1(cc1d4aac863b2d6b52eff7de2b8233be21aac3c9) ) // encrypted Z80 code, SEGA 315-5014 CPU ROM_REGION( 0x2000, "subcpu", 0 ) ROM_LOAD( "epr-5200.cpu-ic66", 0x0000, 0x1000, CRC(0d58b154) SHA1(9f3951eb7ea1fa9ff914738462e4b4f755d60802) ) - ROM_REGION( 0x40000, "sprites", 0 ) /* sprite data */ - ROM_LOAD( "epr-5216.prom-ic100", 0x00000, 0x2000, CRC(8155bd73) SHA1(b6814f03eafe16457655598685b4827456b86335) ) /* level 0 */ - ROM_LOAD( "epr-5213.prom-ic84", 0x08000, 0x2000, CRC(fd78dda4) SHA1(4328b5782cbe692765eac43a8eba40bdf2e41921) ) /* level 1 */ - ROM_LOAD( "epr-5231.prom-ic68", 0x10000, 0x4000, CRC(f00385fc) SHA1(88f64159fdd9b0b8b6a26e7c52da74189f529eb4) ) /* level 2 */ - ROM_LOAD( "epr-5207.prom-ic52", 0x18000, 0x4000, CRC(644f29d8) SHA1(301b94a522bf7a79195d96ca7a4c2ec6f63d45d2) ) /* level 3 */ - ROM_LOAD( "epr-5206.prom-ic43", 0x20000, 0x4000, CRC(049dc998) SHA1(8184a92895b04ea140f073c2345284c23fba7fd4) ) /* level 4 */ - ROM_LOAD( "epr-5209.prom-ic59", 0x28000, 0x4000, CRC(0ff9ff71) SHA1(9038949b657269a3b3287ad526c0e14ebe87525a) ) /* level 5 */ + ROM_REGION( 0x40000, "sprites", 0 ) + ROM_LOAD( "epr-5216.prom-ic100", 0x00000, 0x2000, CRC(8155bd73) SHA1(b6814f03eafe16457655598685b4827456b86335) ) // level 0 + ROM_LOAD( "epr-5213.prom-ic84", 0x08000, 0x2000, CRC(fd78dda4) SHA1(4328b5782cbe692765eac43a8eba40bdf2e41921) ) // level 1 + ROM_LOAD( "epr-5231.prom-ic68", 0x10000, 0x4000, CRC(f00385fc) SHA1(88f64159fdd9b0b8b6a26e7c52da74189f529eb4) ) // level 2 + ROM_LOAD( "epr-5207.prom-ic52", 0x18000, 0x4000, CRC(644f29d8) SHA1(301b94a522bf7a79195d96ca7a4c2ec6f63d45d2) ) // level 3 + ROM_LOAD( "epr-5206.prom-ic43", 0x20000, 0x4000, CRC(049dc998) SHA1(8184a92895b04ea140f073c2345284c23fba7fd4) ) // level 4 + ROM_LOAD( "epr-5209.prom-ic59", 0x28000, 0x4000, CRC(0ff9ff71) SHA1(9038949b657269a3b3287ad526c0e14ebe87525a) ) // level 5 ROM_LOAD( "epr-5208.prom-ic58", 0x2c000, 0x2000, CRC(d181fed2) SHA1(fd46e609b7e04d0661c84ad0faa616d75b8ba89f) ) - ROM_LOAD( "epr-5212.prom-ic75", 0x30000, 0x4000, CRC(9359ec4f) SHA1(4783527b9961df259e7fbbf8db0b599882dd1207) ) /* level 6 */ + ROM_LOAD( "epr-5212.prom-ic75", 0x30000, 0x4000, CRC(9359ec4f) SHA1(4783527b9961df259e7fbbf8db0b599882dd1207) ) // level 6 ROM_LOAD( "epr-5211.prom-ic74", 0x34000, 0x2000, CRC(d181fed2) SHA1(fd46e609b7e04d0661c84ad0faa616d75b8ba89f) ) - ROM_LOAD( "epr-5215.prom-ic91", 0x38000, 0x4000, CRC(f5dacc53) SHA1(fe536d16ccb249c26a046f60dc804f5d3be430dc) ) /* level 7 */ + ROM_LOAD( "epr-5215.prom-ic91", 0x38000, 0x4000, CRC(f5dacc53) SHA1(fe536d16ccb249c26a046f60dc804f5d3be430dc) ) // level 7 ROM_LOAD( "epr-5214.prom-ic90", 0x3c000, 0x2000, CRC(68306dd6) SHA1(63644e38b36512d93464280d73344c97d9ec1f78) ) - ROM_REGION( 0x01000, "fgtiles", 0 ) /* foreground data */ + ROM_REGION( 0x01000, "fgtiles", 0 ) ROM_LOAD( "epr-5201.cpu-ic102", 0x0000, 0x0800, CRC(7f21b0a4) SHA1(b6d784031ffecb36863ae1d81eeaaf8f76ab83df) ) ROM_LOAD( "epr-5202.cpu-ic103", 0x0800, 0x0800, CRC(43f3e5a7) SHA1(2714943b6720311c5d226db3b6fe95d072677793) ) - ROM_REGION( 0x2000, "bgcolor", 0 ) /* background color data */ + ROM_REGION( 0x2000, "bgcolor", 0 ) ROM_LOAD( "epr-5203.cpu-ic91", 0x0000, 0x2000, CRC(631f5b65) SHA1(ce8b23cf97f7e08a13f426964ef140a20a884335) ) - ROM_REGION( 0x0b00, "proms", 0 ) /* various PROMs */ - ROM_LOAD( "pr-5194.cpu-ic39", 0x0000, 0x0020, CRC(bc88cced) SHA1(5055362710c0f58823c05fb4c0e0eec638b91e3d) ) /* char layer X shift */ - ROM_LOAD( "pr-5195.cpu-ic53", 0x0020, 0x0020, CRC(181c6d23) SHA1(4749b205cbaa513ee65a644946235d2cfe275648) ) /* sprite state machine */ - ROM_LOAD( "pr-5196.cpu-ic10", 0x0100, 0x0200, CRC(04204bcf) SHA1(5636eb184463ac58fcfd20012d13d14fb0769124) ) /* sprite Y scaling */ - ROM_LOAD( "pr-5197.cpu-ic78", 0x0300, 0x0200, CRC(a42674af) SHA1(db3590dd0d0f8a85d4ba32ac4ee33f2f4ee4c348) ) /* video timing */ - ROM_LOAD( "pr-5198.cpu-ic93", 0x0500, 0x0200, CRC(32e74bc8) SHA1(dd2c812efd7b8f6b31a45e698d6453ea6bec132e) ) /* char color table */ - ROM_LOAD( "pr-5199.cpu-ic95", 0x0700, 0x0400, CRC(45e997a8) SHA1(023703b90b503310351b12157b1e732e61430fa5) ) /* sprite color table */ + ROM_REGION( 0x0b00, "proms", 0 ) + ROM_LOAD( "pr-5194.cpu-ic39", 0x0000, 0x0020, CRC(bc88cced) SHA1(5055362710c0f58823c05fb4c0e0eec638b91e3d) ) // char layer X shift + ROM_LOAD( "pr-5195.cpu-ic53", 0x0020, 0x0020, CRC(181c6d23) SHA1(4749b205cbaa513ee65a644946235d2cfe275648) ) // sprite state machine + ROM_LOAD( "pr-5196.cpu-ic10", 0x0100, 0x0200, CRC(04204bcf) SHA1(5636eb184463ac58fcfd20012d13d14fb0769124) ) // sprite Y scaling + ROM_LOAD( "pr-5197.cpu-ic78", 0x0300, 0x0200, CRC(a42674af) SHA1(db3590dd0d0f8a85d4ba32ac4ee33f2f4ee4c348) ) // video timing + ROM_LOAD( "pr-5198.cpu-ic93", 0x0500, 0x0200, CRC(32e74bc8) SHA1(dd2c812efd7b8f6b31a45e698d6453ea6bec132e) ) // char color table + ROM_LOAD( "pr-5199.cpu-ic95", 0x0700, 0x0400, CRC(45e997a8) SHA1(023703b90b503310351b12157b1e732e61430fa5) ) // sprite color table ROM_END @@ -1727,7 +1771,7 @@ ROM_END * *************************************/ -void turbo_state::turbo_rom_decode() +void turbo_state::rom_decode() { /* * The table is arranged this way (second half is mirror image of first) @@ -1754,49 +1798,49 @@ void turbo_state::turbo_rom_decode() */ static const uint8_t xortable[][32]= { - /* Table 0 */ - /* 0x0000-0x3ff */ - /* 0x0800-0xbff */ - /* 0x4000-0x43ff */ - /* 0x4800-0x4bff */ + // Table 0 + // 0x0000-0x3ff + // 0x0800-0xbff + // 0x4000-0x43ff + // 0x4800-0x4bff { 0x00,0x44,0x0c,0x48,0x00,0x44,0x0c,0x48, 0xa0,0xe4,0xac,0xe8,0xa0,0xe4,0xac,0xe8, 0x60,0x24,0x6c,0x28,0x60,0x24,0x6c,0x28, 0xc0,0x84,0xcc,0x88,0xc0,0x84,0xcc,0x88 }, - /* Table 1 */ - /* 0x0400-0x07ff */ - /* 0x0c00-0x0fff */ - /* 0x1400-0x17ff */ - /* 0x1c00-0x1fff */ - /* 0x2400-0x27ff */ - /* 0x2c00-0x2fff */ - /* 0x3400-0x37ff */ - /* 0x3c00-0x3fff */ - /* 0x4400-0x47ff */ - /* 0x4c00-0x4fff */ - /* 0x5400-0x57ff */ - /* 0x5c00-0x5fff */ + // Table 1 */ + // 0x0400-0x07ff + // 0x0c00-0x0fff + // 0x1400-0x17ff + // 0x1c00-0x1fff + // 0x2400-0x27ff + // 0x2c00-0x2fff + // 0x3400-0x37ff + // 0x3c00-0x3fff + // 0x4400-0x47ff + // 0x4c00-0x4fff + // 0x5400-0x57ff + // 0x5c00-0x5fff { 0x00,0x44,0x18,0x5c,0x14,0x50,0x0c,0x48, 0x28,0x6c,0x30,0x74,0x3c,0x78,0x24,0x60, 0x60,0x24,0x78,0x3c,0x74,0x30,0x6c,0x28, 0x48,0x0c,0x50,0x14,0x5c,0x18,0x44,0x00 }, //0x00 --> 0x10 ? - /* Table 2 */ - /* 0x1000-0x13ff */ - /* 0x1800-0x1bff */ - /* 0x5000-0x53ff */ - /* 0x5800-0x5bff */ + // Table 2 */ + // 0x1000-0x13ff + // 0x1800-0x1bff + // 0x5000-0x53ff + // 0x5800-0x5bff { 0x00,0x00,0x28,0x28,0x90,0x90,0xb8,0xb8, 0x28,0x28,0x00,0x00,0xb8,0xb8,0x90,0x90, 0x00,0x00,0x28,0x28,0x90,0x90,0xb8,0xb8, 0x28,0x28,0x00,0x00,0xb8,0xb8,0x90,0x90 }, - /* Table 3 */ - /* 0x2000-0x23ff */ - /* 0x2800-0x2bff */ - /* 0x3000-0x33ff */ - /* 0x3800-0x3bff */ + // Table 3 */ + // 0x2000-0x23ff + // 0x2800-0x2bff + // 0x3000-0x33ff + // 0x3800-0x3bff { 0x00,0x14,0x88,0x9c,0x30,0x24,0xb8,0xac, 0x24,0x30,0xac,0xb8,0x14,0x00,0x9c,0x88, 0x48,0x5c,0xc0,0xd4,0x78,0x6c,0xf0,0xe4, @@ -1805,25 +1849,23 @@ void turbo_state::turbo_rom_decode() static const int findtable[]= { - 0,1,0,1, /* 0x0000-0x0fff */ - 2,1,2,1, /* 0x1000-0x1fff */ - 3,1,3,1, /* 0x2000-0x2fff */ - 3,1,3,1, /* 0x3000-0x3fff */ - 0,1,0,1, /* 0x4000-0x4fff */ - 2,1,2,1 /* 0x5000-0x5fff */ + 0,1,0,1, // 0x0000-0x0fff + 2,1,2,1, // 0x1000-0x1fff + 3,1,3,1, // 0x2000-0x2fff + 3,1,3,1, // 0x3000-0x3fff + 0,1,0,1, // 0x4000-0x4fff + 2,1,2,1 // 0x5000-0x5fff }; - uint8_t *RAM = memregion("maincpu")->base(); - int offs, i, j; - uint8_t src; + uint8_t *rom = memregion("maincpu")->base(); - for (offs = 0x0000; offs < 0x6000; offs++) + for (int offs = 0x0000; offs < 0x6000; offs++) { - src = RAM[offs]; - i = findtable[offs >> 10]; - j = src >> 2; + uint8_t src = rom [offs]; + int i = findtable[offs >> 10]; + int j = src >> 2; if (src & 0x80) j ^= 0x3f; - RAM[offs] = src ^ xortable[i][j]; + rom[offs] = src ^ xortable[i][j]; } } @@ -1837,35 +1879,26 @@ void turbo_state::turbo_rom_decode() void turbo_state::init_turbo_enc() { - save_item(NAME(m_alt_spriteram)); - turbo_rom_decode(); -} - -void turbo_state::init_turbo_noenc() -{ - save_item(NAME(m_alt_spriteram)); + rom_decode(); } - - - /************************************* * * Game drivers * *************************************/ -GAMEL( 1981, turbo, 0, turbo, turbo, turbo_state, init_turbo_noenc, ROT270, "Sega", "Turbo (program 1513-1515)", MACHINE_IMPERFECT_SOUND , layout_turbo ) -GAMEL( 1981, turboa, turbo, turbo, turbo, turbo_state, init_turbo_enc, ROT270, "Sega", "Turbo (encrypted, program 1262-1264)", MACHINE_IMPERFECT_SOUND , layout_turbo ) -GAMEL( 1981, turbob, turbo, turbo, turbo, turbo_state, init_turbo_enc, ROT270, "Sega", "Turbo (encrypted, program 1363-1365 rev C)", MACHINE_IMPERFECT_SOUND , layout_turbo ) -GAMEL( 1981, turboc, turbo, turbo, turbo, turbo_state, init_turbo_enc, ROT270, "Sega", "Turbo (encrypted, program 1363-1365 rev B)", MACHINE_IMPERFECT_SOUND , layout_turbo ) -GAMEL( 1981, turbod, turbo, turbo, turbo, turbo_state, init_turbo_enc, ROT270, "Sega", "Turbo (encrypted, program 1363-1365 rev A)", MACHINE_IMPERFECT_SOUND , layout_turbo ) -GAMEL( 1981, turboe, turbo, turbo, turbo, turbo_state, init_turbo_enc, ROT270, "Sega", "Turbo (encrypted, program 1363-1365)", MACHINE_IMPERFECT_SOUND , layout_turbo ) // but still reports 1262-1264 in the test mode? -GAMEL( 1981, turbobl, turbo, turbo, turbo, turbo_state, init_turbo_noenc, ROT270, "bootleg", "Indianapolis (bootleg of Turbo)", MACHINE_IMPERFECT_SOUND , layout_turbo ) // decrypted bootleg of a 1262-1264 set +GAMEL( 1981, turbo, 0, turbo, turbo, turbo_state, empty_init, ROT270, "Sega", "Turbo (program 1513-1515)", MACHINE_IMPERFECT_SOUND , layout_turbo ) +GAMEL( 1981, turboa, turbo, turbo, turbo, turbo_state, init_turbo_enc, ROT270, "Sega", "Turbo (encrypted, program 1262-1264)", MACHINE_IMPERFECT_SOUND , layout_turbo ) +GAMEL( 1981, turbob, turbo, turbo, turbo, turbo_state, init_turbo_enc, ROT270, "Sega", "Turbo (encrypted, program 1363-1365 rev C)", MACHINE_IMPERFECT_SOUND , layout_turbo ) +GAMEL( 1981, turboc, turbo, turbo, turbo, turbo_state, init_turbo_enc, ROT270, "Sega", "Turbo (encrypted, program 1363-1365 rev B)", MACHINE_IMPERFECT_SOUND , layout_turbo ) +GAMEL( 1981, turbod, turbo, turbo, turbo, turbo_state, init_turbo_enc, ROT270, "Sega", "Turbo (encrypted, program 1363-1365 rev A)", MACHINE_IMPERFECT_SOUND , layout_turbo ) +GAMEL( 1981, turboe, turbo, turbo, turbo, turbo_state, init_turbo_enc, ROT270, "Sega", "Turbo (encrypted, program 1363-1365)", MACHINE_IMPERFECT_SOUND , layout_turbo ) // but still reports 1262-1264 in the test mode? +GAMEL( 1981, turbobl, turbo, turbo, turbo, turbo_state, empty_init, ROT270, "bootleg", "Indianapolis (bootleg of Turbo)", MACHINE_IMPERFECT_SOUND , layout_turbo ) // decrypted bootleg of a 1262-1264 set -GAMEL( 1982, subroc3d, 0, subroc3d, subroc3d, turbo_state, empty_init, ORIENTATION_FLIP_X, "Sega", "Subroc-3D", MACHINE_IMPERFECT_SOUND , layout_subroc3d ) +GAMEL( 1982, subroc3d, 0, subroc3d, subroc3d, subroc3d_state, empty_init, ORIENTATION_FLIP_X, "Sega", "Subroc-3D", MACHINE_IMPERFECT_SOUND , layout_subroc3d ) -GAMEL( 1982, buckrog, 0, buckroge, buckrog, turbo_state, empty_init, ROT0, "Sega", "Buck Rogers: Planet of Zoom", MACHINE_IMPERFECT_SOUND , layout_buckrog ) -GAMEL( 1982, buckrogn, buckrog, buckrogu, buckrog, turbo_state, empty_init, ROT0, "Sega", "Buck Rogers: Planet of Zoom (not encrypted, set 1)", MACHINE_IMPERFECT_SOUND , layout_buckrog ) -GAMEL( 1982, buckrogn2, buckrog, buckrogu, buckrog, turbo_state, empty_init, ROT0, "Sega", "Buck Rogers: Planet of Zoom (not encrypted, set 2)", MACHINE_IMPERFECT_SOUND , layout_buckrog ) -GAMEL( 1982, zoom909, buckrog, buckroge, buckrog, turbo_state, empty_init, ROT0, "Sega", "Zoom 909", MACHINE_IMPERFECT_SOUND, layout_buckrog ) +GAMEL( 1982, buckrog, 0, buckroge, buckrog, buckrog_state, empty_init, ROT0, "Sega", "Buck Rogers: Planet of Zoom", MACHINE_IMPERFECT_SOUND , layout_buckrog ) +GAMEL( 1982, buckrogn, buckrog, buckrogu, buckrog, buckrog_state, empty_init, ROT0, "Sega", "Buck Rogers: Planet of Zoom (not encrypted, set 1)", MACHINE_IMPERFECT_SOUND , layout_buckrog ) +GAMEL( 1982, buckrogn2, buckrog, buckrogu, buckrog, buckrog_state, empty_init, ROT0, "Sega", "Buck Rogers: Planet of Zoom (not encrypted, set 2)", MACHINE_IMPERFECT_SOUND , layout_buckrog ) +GAMEL( 1982, zoom909, buckrog, buckroge, buckrog, buckrog_state, empty_init, ROT0, "Sega", "Zoom 909", MACHINE_IMPERFECT_SOUND, layout_buckrog ) diff --git a/src/mame/includes/turbo.h b/src/mame/includes/turbo.h index 052ccb19d451d..cf1ac46f32939 100644 --- a/src/mame/includes/turbo.h +++ b/src/mame/includes/turbo.h @@ -18,31 +18,23 @@ #include "screen.h" #include "tilemap.h" -/* sprites are scaled in the analog domain; to give a better */ -/* rendition of this, we scale in the X direction by this factor */ +// sprites are scaled in the analog domain; to give a better rendition of this, we scale in the X direction by this factor + #define TURBO_X_SCALE 2 -class turbo_state : public driver_device +class turbo_base_state : public driver_device { public: - turbo_state(const machine_config &mconfig, device_type type, const char *tag) + turbo_base_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) , m_maincpu(*this, "maincpu") - , m_subcpu(*this, "subcpu") - , m_i8255_0(*this, "i8255_0") - , m_i8255_1(*this, "i8255_1") - , m_i8255_2(*this, "i8255_2") - , m_i8255_3(*this, "i8255_3") + , m_i8255(*this, "i8255%u", 0U) , m_spriteroms(*this, "sprites") , m_proms(*this, "proms") - , m_roadroms(*this, "road") - , m_bgcolorrom(*this, "bgcolor") , m_videoram(*this, "videoram") - , m_spriteram(*this, "spriteram") , m_sprite_position(*this, "spritepos") - , m_decrypted_opcodes(*this, "decrypted_opcodes") , m_samples(*this, "samples") , m_gfxdecode(*this, "gfxdecode") , m_screen(*this, "screen") @@ -50,36 +42,19 @@ class turbo_state : public driver_device , m_lamp(*this, "lamp") { } - void turbo(machine_config &config); - void buckrog(machine_config &config); - void buckroge(machine_config &config); - void buckrogu(machine_config &config); - void subroc3d(machine_config &config); - void turbo_samples(machine_config &config); - void subroc3d_samples(machine_config &config); - void buckrog_samples(machine_config &config); - - void init_turbo_enc(); - void init_turbo_noenc(); +protected: + virtual void machine_start() override; + virtual void video_start() override; -private: - /* device/memory pointers */ + // device / memory pointers required_device m_maincpu; - optional_device m_subcpu; - required_device m_i8255_0; - required_device m_i8255_1; - optional_device m_i8255_2; - optional_device m_i8255_3; + optional_device_array m_i8255; required_region_ptr m_spriteroms; required_region_ptr m_proms; - optional_region_ptr m_roadroms; - optional_region_ptr m_bgcolorrom; required_shared_ptr m_videoram; - optional_shared_ptr m_spriteram; required_shared_ptr m_sprite_position; - optional_shared_ptr m_decrypted_opcodes; required_device m_samples; @@ -88,136 +63,213 @@ class turbo_state : public driver_device output_finder<32> m_digits; output_finder<> m_lamp; - std::unique_ptr m_buckrog_bitmap_ram; - virtual void machine_start() override { m_digits.resolve(); m_lamp.resolve(); } - - /* machine states */ + // machine state uint8_t m_i8279_scanlines; - uint8_t m_alt_spriteram[0x80]; - /* sound state */ - uint8_t m_turbo_osel; - uint8_t m_turbo_bsel; + // sound state uint8_t m_sound_state[3]; - /* video state */ + // video state tilemap_t * m_fg_tilemap; - /* Turbo-specific states */ - uint8_t m_turbo_opa; - uint8_t m_turbo_opb; - uint8_t m_turbo_opc; - uint8_t m_turbo_ipa; - uint8_t m_turbo_ipb; - uint8_t m_turbo_ipc; - uint8_t m_turbo_fbpla; - uint8_t m_turbo_fbcol; - uint8_t m_turbo_speed; - uint8_t m_turbo_collision; - uint8_t m_turbo_last_analog; - uint8_t m_turbo_accel; - - /* Subroc-specific states */ - uint8_t m_subroc3d_col; - uint8_t m_subroc3d_ply; - uint8_t m_subroc3d_flip; - uint8_t m_subroc3d_mdis; - uint8_t m_subroc3d_mdir; - uint8_t m_subroc3d_tdis; - uint8_t m_subroc3d_tdir; - uint8_t m_subroc3d_fdis; - uint8_t m_subroc3d_fdir; - uint8_t m_subroc3d_hdis; - uint8_t m_subroc3d_hdir; - - /* Buck Rogers-specific states */ - uint8_t m_buckrog_fchg; - uint8_t m_buckrog_mov; - uint8_t m_buckrog_obch; - uint8_t m_buckrog_command; - uint8_t m_buckrog_myship; - int m_last_sound_a; - struct sprite_info { - uint16_t ve; /* VE0-15 signals for this row */ - uint8_t lst; /* LST0-7 signals for this row */ - uint32_t latched[8]; /* latched pixel data */ - uint8_t plb[8]; /* latched PLB state */ - uint32_t offset[8]; /* current offset for this row */ - uint32_t frac[8]; /* leftover fraction */ - uint32_t step[8]; /* stepping value */ + uint16_t ve; // VE0-15 signals for this row + uint8_t lst; // LST0-7 signals for this row + uint32_t latched[8]; // latched pixel data + uint8_t plb[8]; // latched PLB state + uint32_t offset[8]; // current offset for this row + uint32_t frac[8]; // leftover fraction + uint32_t step[8]; // stepping value }; + sprite_info m_sprite_info; + void scanlines_w(uint8_t data); void digit_w(uint8_t data); - uint8_t turbo_collision_r(); - void turbo_collision_clear_w(uint8_t data); - void turbo_analog_reset_w(uint8_t data); + void videoram_w(offs_t offset, uint8_t data); + TILE_GET_INFO_MEMBER(get_fg_tile_info); + inline uint32_t sprite_xscale(uint8_t dacinput, double vr1, double vr2, double cext); +}; + +class buckrog_state : public turbo_base_state +{ +public: + buckrog_state(const machine_config &mconfig, device_type type, const char *tag) + : turbo_base_state(mconfig, type, tag) + , m_subcpu(*this, "subcpu") + , m_decrypted_opcodes(*this, "decrypted_opcodes") + , m_spriteram(*this, "spriteram") + , m_bitmap_ram(*this, "bitmap_ram", 0xe000, ENDIANNESS_LITTLE) + , m_bgcolorrom(*this, "bgcolor") + , m_dsw(*this, "DSW%u", 1U) + { } + + void buckrog(machine_config &config); + void buckroge(machine_config &config); + void buckrogu(machine_config &config); + void buckrog_samples(machine_config &config); + +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + +private: + required_device m_subcpu; + optional_shared_ptr m_decrypted_opcodes; + required_shared_ptr m_spriteram; + memory_share_creator m_bitmap_ram; + required_region_ptr m_bgcolorrom; + required_ioport_array<2> m_dsw; + + uint8_t m_fchg; + uint8_t m_mov; + uint8_t m_obch; + uint8_t m_command; + uint8_t m_myship; + uint8_t m_last_sound_a; + + uint8_t subcpu_command_r(); + uint8_t port_2_r(); + uint8_t port_3_r(); + void bitmap_w(offs_t offset, uint8_t data); + void ppi0a_w(uint8_t data); + void ppi0b_w(uint8_t data); + void ppi0c_w(uint8_t data); + void ppi1c_w(uint8_t data); + void palette(palette_device &palette) const; + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + void i8255_0_w(offs_t offset, uint8_t data); + TIMER_CALLBACK_MEMBER(delayed_i8255_w); + void sound_a_w(uint8_t data); + void sound_b_w(uint8_t data); + void prepare_sprites(uint8_t y); + uint32_t get_sprite_bits(uint8_t *plb); + void update_samples(); + + void decrypted_opcodes_map(address_map &map); + void main_prg_map(address_map &map); + void sub_prg_map(address_map &map); + void sub_portmap(address_map &map); +}; + +class subroc3d_state : public turbo_base_state +{ +public: + subroc3d_state(const machine_config &mconfig, device_type type, const char *tag) + : turbo_base_state(mconfig, type, tag) + , m_spriteram(*this, "spriteram") + { } + + void subroc3d(machine_config &config); + void subroc3d_samples(machine_config &config); + +protected: + virtual void machine_start() override; + +private: + required_shared_ptr m_spriteram; + + uint8_t m_col; + uint8_t m_ply; + uint8_t m_flip; + uint8_t m_mdis; + uint8_t m_mdir; + uint8_t m_tdis; + uint8_t m_tdir; + uint8_t m_fdis; + uint8_t m_fdir; + uint8_t m_hdis; + uint8_t m_hdir; + + void ppi0a_w(uint8_t data); + void ppi0b_w(uint8_t data); + void ppi0c_w(uint8_t data); + void palette(palette_device &palette) const; + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + void sound_a_w(uint8_t data); + void sound_b_w(uint8_t data); + void sound_c_w(uint8_t data); + void prepare_sprites(uint8_t y); + uint32_t get_sprite_bits(uint8_t *plb); + inline void update_volume(int leftchan, uint8_t dis, uint8_t dir); + + void prg_map(address_map &map); +}; + +class turbo_state : public turbo_base_state +{ +public: + turbo_state(const machine_config &mconfig, device_type type, const char *tag) + : turbo_base_state(mconfig, type, tag) + , m_roadroms(*this, "road") + , m_alt_spriteram(*this, "alt_spriteram", 0x80, ENDIANNESS_LITTLE) + , m_vr(*this, "VR%u", 1U) + , m_dsw3(*this, "DSW3") + , m_dial(*this, "DIAL") + , m_tachometer(*this, "tachometer") + , m_speed(*this, "speed") + { } + + void turbo(machine_config &config); + void turbo_samples(machine_config &config); + + void init_turbo_enc(); + +protected: + virtual void machine_start() override; + +private: + required_region_ptr m_roadroms; + memory_share_creator m_alt_spriteram; + required_ioport_array<2> m_vr; + required_ioport m_dsw3; + required_ioport m_dial; + output_finder<> m_tachometer; + output_finder<> m_speed; + + uint8_t m_osel; + uint8_t m_bsel; + uint8_t m_opa; + uint8_t m_opb; + uint8_t m_opc; + uint8_t m_ipa; + uint8_t m_ipb; + uint8_t m_ipc; + uint8_t m_fbpla; + uint8_t m_fbcol; + uint8_t m_collision; + uint8_t m_last_analog; + uint8_t m_accel; + + uint8_t collision_r(); + void collision_clear_w(uint8_t data); + void analog_reset_w(uint8_t data); DECLARE_WRITE_LINE_MEMBER(coin_meter_1_w); DECLARE_WRITE_LINE_MEMBER(coin_meter_2_w); DECLARE_WRITE_LINE_MEMBER(start_lamp_w); - uint8_t buckrog_cpu2_command_r(); - uint8_t buckrog_port_2_r(); - uint8_t buckrog_port_3_r(); - void turbo_videoram_w(offs_t offset, uint8_t data); - void buckrog_bitmap_w(offs_t offset, uint8_t data); - void turbo_ppi0a_w(uint8_t data); - void turbo_ppi0b_w(uint8_t data); - void turbo_ppi0c_w(uint8_t data); - void turbo_ppi1a_w(uint8_t data); - void turbo_ppi1b_w(uint8_t data); - void turbo_ppi1c_w(uint8_t data); - void turbo_ppi3c_w(uint8_t data); - void subroc3d_ppi0a_w(uint8_t data); - void subroc3d_ppi0c_w(uint8_t data); - void subroc3d_ppi0b_w(uint8_t data); - void buckrog_ppi0a_w(uint8_t data); - void buckrog_ppi0b_w(uint8_t data); - void buckrog_ppi0c_w(uint8_t data); - void buckrog_ppi1c_w(uint8_t data); - uint8_t turbo_analog_r(); - void buckrog_i8255_0_w(offs_t offset, uint8_t data); + void ppi0a_w(uint8_t data); + void ppi0b_w(uint8_t data); + void ppi0c_w(uint8_t data); + void ppi1a_w(uint8_t data); + void ppi1b_w(uint8_t data); + void ppi1c_w(uint8_t data); + void ppi3c_w(uint8_t data); + uint8_t analog_r(); uint8_t spriteram_r(offs_t offset); void spriteram_w(offs_t offset, uint8_t data); + void palette(palette_device &palette) const; + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + void sound_a_w(uint8_t data); + void sound_b_w(uint8_t data); + void sound_c_w(uint8_t data); + void prepare_sprites(uint8_t y); + uint32_t get_sprite_bits(uint8_t road); + void rom_decode(); + void update_samples(); - TILE_GET_INFO_MEMBER(get_fg_tile_info); - DECLARE_VIDEO_START(turbo); - void turbo_palette(palette_device &palette) const; - void subroc3d_palette(palette_device &palette) const; - DECLARE_MACHINE_RESET(buckrog); - DECLARE_VIDEO_START(buckrog); - void buckrog_palette(palette_device &palette) const; - uint32_t screen_update_turbo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - uint32_t screen_update_subroc3d(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - uint32_t screen_update_buckrog(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - TIMER_CALLBACK_MEMBER(delayed_i8255_w); - void turbo_sound_a_w(u8 data); - void turbo_sound_b_w(u8 data); - void turbo_sound_c_w(u8 data); - void subroc3d_sound_a_w(u8 data); - void subroc3d_sound_b_w(u8 data); - void subroc3d_sound_c_w(u8 data); - void buckrog_sound_a_w(u8 data); - void buckrog_sound_b_w(u8 data); - inline uint32_t sprite_xscale(uint8_t dacinput, double vr1, double vr2, double cext); - void turbo_prepare_sprites(uint8_t y, sprite_info *info); - uint32_t turbo_get_sprite_bits(uint8_t road, sprite_info *sprinfo); - void subroc3d_prepare_sprites(uint8_t y, sprite_info *info); - uint32_t subroc3d_get_sprite_bits(sprite_info *sprinfo, uint8_t *plb); - void buckrog_prepare_sprites(uint8_t y, sprite_info *info); - uint32_t buckrog_get_sprite_bits(sprite_info *sprinfo, uint8_t *plb); - void turbo_rom_decode(); - void turbo_update_samples(); - inline void subroc3d_update_volume(int leftchan, uint8_t dis, uint8_t dir); - void buckrog_update_samples(); - - void buckrog_cpu2_map(address_map &map); - void buckrog_cpu2_portmap(address_map &map); - void buckrog_map(address_map &map); - void decrypted_opcodes_map(address_map &map); - void subroc3d_map(address_map &map); - void turbo_map(address_map &map); + void prg_map(address_map &map); }; + #endif // MAME_INCLUDES_TURBO_H diff --git a/src/mame/video/turbo.cpp b/src/mame/video/turbo.cpp index 723aa15054e46..2cf22dd9d6ce3 100644 --- a/src/mame/video/turbo.cpp +++ b/src/mame/video/turbo.cpp @@ -27,11 +27,11 @@ static constexpr uint32_t sprite_expand[16] = * *************************************/ -void turbo_state::turbo_palette(palette_device &palette) const +void turbo_state::palette(palette_device &palette) const { static constexpr int resistances[3] = { 1000, 470, 220 }; - /* compute the color output resistor weights */ + // compute the color output resistor weights double rweights[3], gweights[3], bweights[2]; compute_resistor_weights(0, 255, -1.0, 3, &resistances[0], rweights, 470, 0, @@ -55,7 +55,7 @@ void turbo_state::turbo_palette(palette_device &palette) const } -void turbo_state::subroc3d_palette(palette_device &palette) const +void subroc3d_state::palette(palette_device &palette) const { static constexpr int resistances[3] = { 1000, 470, 220 }; @@ -83,7 +83,7 @@ void turbo_state::subroc3d_palette(palette_device &palette) const } -void turbo_state::buckrog_palette(palette_device &palette) const +void buckrog_state::palette(palette_device &palette) const { static constexpr int resistances[4] = { 2200, 1000, 500, 250 }; @@ -118,39 +118,35 @@ void turbo_state::buckrog_palette(palette_device &palette) const * *************************************/ -TILE_GET_INFO_MEMBER(turbo_state::get_fg_tile_info) +TILE_GET_INFO_MEMBER(turbo_base_state::get_fg_tile_info) { int code = m_videoram[tile_index]; tileinfo.set(0, code, code >> 2, 0); } -VIDEO_START_MEMBER(turbo_state,turbo) -{ - /* initialize the foreground tilemap */ - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(turbo_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); -} - - -VIDEO_START_MEMBER(turbo_state,buckrog) +void turbo_base_state::video_start() { - /* initialize the foreground tilemap */ - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(turbo_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); - - /* allocate the bitmap RAM */ - m_buckrog_bitmap_ram = std::make_unique(0xe000); - save_pointer(NAME(m_buckrog_bitmap_ram), 0xe000); + // initialize the foreground tilemap + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(turbo_base_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); + + save_item(NAME(m_sprite_info.ve)); + save_item(NAME(m_sprite_info.lst)); + save_item(NAME(m_sprite_info.latched)); + save_item(NAME(m_sprite_info.plb)); + save_item(NAME(m_sprite_info.offset)); + save_item(NAME(m_sprite_info.frac)); + save_item(NAME(m_sprite_info.step)); } - /************************************* * * Videoram access * *************************************/ -void turbo_state::turbo_videoram_w(offs_t offset, uint8_t data) +void turbo_base_state::videoram_w(offs_t offset, uint8_t data) { m_videoram[offset] = data; if (offset < 0x400) @@ -161,9 +157,9 @@ void turbo_state::turbo_videoram_w(offs_t offset, uint8_t data) } -void turbo_state::buckrog_bitmap_w(offs_t offset, uint8_t data) +void buckrog_state::bitmap_w(offs_t offset, uint8_t data) { - m_buckrog_bitmap_ram[offset] = data & 1; + m_bitmap_ram[offset] = data & 1; } @@ -174,22 +170,22 @@ void turbo_state::buckrog_bitmap_w(offs_t offset, uint8_t data) * *************************************/ -inline uint32_t turbo_state::sprite_xscale(uint8_t dacinput, double vr1, double vr2, double cext) +inline uint32_t turbo_base_state::sprite_xscale(uint8_t dacinput, double vr1, double vr2, double cext) { - /* compute the effective pixel clock for this sprite */ - /* thanks to Frank Palazzolo for figuring out this logic */ + // compute the effective pixel clock for this sprite + // thanks to Frank Palazzolo for figuring out this logic - /* compute the control voltage to the VCO */ - /* VR1 and VR2 are variable resistors on Turbo, fixed on other boards */ + // compute the control voltage to the VCO + // VR1 and VR2 are variable resistors on Turbo, fixed on other boards double iref = 5.0 / (1.5e3 + vr2); double iout = iref * ((double)dacinput / 256.0); double vref = 5.0 * 1e3 / (3.8e3 + 1e3 + vr1); double vco_cv = (2.2e3 * iout) + vref; - /* based on the control voltage, compute the frequency assuming a 50pF */ - /* external capacitor; this is the graph in the datasheet. Some attempt */ - /* to simulate the non-linearity at the edges has been made, but it is */ - /* admittedly cheesy. */ + // based on the control voltage, compute the frequency assuming a 50pF + // external capacitor; this is the graph in the datasheet. Some attempt + // to simulate the non-linearity at the edges has been made, but it is + // admittedly cheesy. double vco_freq; if (vco_cv > 5.0) vco_cv = 5.0; @@ -204,20 +200,20 @@ inline uint32_t turbo_state::sprite_xscale(uint8_t dacinput, double vr1, double else vco_freq = (-1.560279 + pow(vco_cv - 4.3 + 6, 1.26)) * 1e6; - /* now scale based on the actual external capacitor; the frequency goes */ - /* up by a factor of 10 for every factor of 10 the capacitance is reduced */ - /* approximately */ + // now scale based on the actual external capacitor; the frequency goes + // up by a factor of 10 for every factor of 10 the capacitance is reduced + // approximately vco_freq *= 50e-12 / cext; } else { - /* based on figure 6 of datasheet */ + // based on figure 6 of datasheet vco_freq = -0.9892942 * log10(cext) - 0.0309697 * vco_cv * vco_cv + 0.344079975 * vco_cv - 4.086395841; vco_freq = pow(10.0, vco_freq); } - /* finally, convert to a fraction (8.24) of 5MHz, which is the pixel clock */ + // finally, convert to a fraction (8.24) of 5MHz, which is the pixel clock return (uint32_t)((vco_freq / (5e6 * TURBO_X_SCALE)) * 16777216.0); } @@ -229,31 +225,30 @@ inline uint32_t turbo_state::sprite_xscale(uint8_t dacinput, double vr1, double * *************************************/ -void turbo_state::turbo_prepare_sprites(uint8_t y, sprite_info *info) +void turbo_state::prepare_sprites(uint8_t y) { const uint8_t *pr1119 = &m_proms[0x200]; - int sprnum; - /* initialize the line enable signals to 0 */ - info->ve = 0; - info->lst = 0; + // initialize the line enable signals to 0 + m_sprite_info.ve = 0; + m_sprite_info.lst = 0; - /* compute the sprite information, which was done on the previous scanline during HBLANK */ - for (sprnum = 0; sprnum < 16; sprnum++) + // compute the sprite information, which was done on the previous scanline during HBLANK + for (int sprnum = 0; sprnum < 16; sprnum++) { uint8_t *rambase = &m_alt_spriteram[sprnum * 8]; int level = sprnum & 7; uint8_t clo, chi; uint32_t sum; - /* perform the first ALU to see if we are within the scanline */ + // perform the first ALU to see if we are within the scanline sum = y + (rambase[0] ^ 0xff); clo = (sum >> 8) & 1; sum += (y << 8) + ((rambase[1] ^ 0xff) << 8); chi = (sum >> 16) & 1; - /* the AND of the low carry and the inverse of the high carry clocks an enable bit */ - /* for this sprite; note that the logic in the Turbo schematics is reversed here */ + // the AND of the low carry and the inverse of the high carry clocks an enable bit + // for this sprite; note that the logic in the Turbo schematics is reversed here if (clo & (chi ^ 1)) { int xscale = rambase[2] ^ 0xff; @@ -261,16 +256,16 @@ void turbo_state::turbo_prepare_sprites(uint8_t y, sprite_info *info) uint16_t offset = rambase[6] + (rambase[7] << 8); int offs; - /* mark this entry enabled */ - info->ve |= 1 << sprnum; + // mark this entry enabled + m_sprite_info.ve |= 1 << sprnum; - /* look up the low byte of the sum plus the yscale value in */ - /* IC50/PR1119 to determine if we write back the sum of the */ - /* offset and the rowbytes this scanline (p. 138) */ - offs = (sum & 0xff) | /* A0-A7 = AL0-AL7 */ - ((yscale & 0x08) << 5); /* A8-A9 = /RO11-/RO12 */ + // look up the low byte of the sum plus the yscale value in + // IC50/PR1119 to determine if we write back the sum of the + // offset and the rowbytes this scanline (p. 138) + offs = (sum & 0xff) | // A0-A7 = AL0-AL7 + ((yscale & 0x08) << 5); // A8-A9 = /RO11-/RO12 - /* one of the bits is selected based on the low 7 bits of yscale */ + // one of the bits is selected based on the low 7 bits of yscale if (!((pr1119[offs] >> (yscale & 0x07)) & 1)) { offset += rambase[4] + (rambase[5] << 8); @@ -278,63 +273,62 @@ void turbo_state::turbo_prepare_sprites(uint8_t y, sprite_info *info) rambase[7] = offset >> 8; } - /* the output of the ALU here goes to the individual level counter */ - info->latched[level] = 0; - info->plb[level] = 0; - info->offset[level] = offset; - info->frac[level] = 0; + // the output of the ALU here goes to the individual level counter + m_sprite_info.latched[level] = 0; + m_sprite_info.plb[level] = 0; + m_sprite_info.offset[level] = offset; + m_sprite_info.frac[level] = 0; /* actual pots read from one board: VR1 = 310 Ohm VR2 = 910 Ohm */ - info->step[level] = sprite_xscale(xscale, 1.0e3 * ioport("VR1")->read() / 100.0, 1.0e3 * ioport("VR2")->read() / 100.0, 100e-12); + m_sprite_info.step[level] = sprite_xscale(xscale, 1.0e3 * m_vr[0]->read() / 100.0, 1.0e3 * m_vr[1]->read() / 100.0, 100e-12); } } } -uint32_t turbo_state::turbo_get_sprite_bits(uint8_t road, sprite_info *sprinfo) +uint32_t turbo_state::get_sprite_bits(uint8_t road) { - uint8_t sprlive = sprinfo->lst; + uint8_t sprlive = m_sprite_info.lst; uint32_t sprdata = 0; - int level; - /* if we haven't left the road yet, sprites 3-7 are disabled */ + // if we haven't left the road yet, sprites 3-7 are disabled if (!road) sprlive &= 0x07; - /* loop over all live levels */ - for (level = 0; level < 8; level++) + // loop over all live levels + for (int level = 0; level < 8; level++) if (sprlive & (1 << level)) { - /* latch the data and advance the offset */ - sprdata |= sprinfo->latched[level]; - sprinfo->frac[level] += sprinfo->step[level]; + // latch the data and advance the offset + sprdata |= m_sprite_info.latched[level]; + m_sprite_info.frac[level] += m_sprite_info.step[level]; - /* if we're live and we've clocked more data, advance */ - while (sprinfo->frac[level] >= 0x1000000) + // if we're live and we've clocked more data, advance + while (m_sprite_info.frac[level] >= 0x1000000) { - uint16_t offs = sprinfo->offset[level]; + uint16_t offs = m_sprite_info.offset[level]; uint8_t pixdata; - /* bit 0 controls which half of the byte to use */ - /* bits 1-13 go to address lines */ - /* bit 14 selects which of the two ROMs to read from */ + // bit 0 controls which half of the byte to use + // bits 1-13 go to address lines + // bit 14 selects which of the two ROMs to read from pixdata = m_spriteroms[(level << 14) | ((offs >> 1) & 0x3fff)] >> ((~offs & 1) * 4); - sprinfo->latched[level] = sprite_expand[pixdata & 0x0f] << level; + m_sprite_info.latched[level] = sprite_expand[pixdata & 0x0f] << level; - /* if bit 3 is 0 and bit 2 is 1, the enable flip/flip is reset */ + // if bit 3 is 0 and bit 2 is 1, the enable flip/flip is reset if ((pixdata & 0x0c) == 0x04) { - sprinfo->lst &= ~(1 << level); + m_sprite_info.lst &= ~(1 << level); sprlive &= ~(1 << level); } - /* if bit 15 is set, we decrement instead of increment */ - sprinfo->offset[level] += (offs & 0x8000) ? -1 : 1; - sprinfo->frac[level] -= 0x1000000; + // if bit 15 is set, we decrement instead of increment + m_sprite_info.offset[level] += (offs & 0x8000) ? -1 : 1; + m_sprite_info.frac[level] -= 0x1000000; } } @@ -349,7 +343,7 @@ uint32_t turbo_state::turbo_get_sprite_bits(uint8_t road, sprite_info *sprinfo) * *************************************/ -uint32_t turbo_state::screen_update_turbo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t turbo_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { bitmap_ind16 &fgpixmap = m_fg_tilemap->pixmap(); uint8_t const *const pr1114 = &m_proms[0x000]; @@ -361,57 +355,56 @@ uint32_t turbo_state::screen_update_turbo(screen_device &screen, bitmap_ind16 &b uint8_t const *const pr1122 = &m_proms[0x800]; uint8_t const *const pr1123 = &m_proms[0xc00]; - /* loop over rows */ + // loop over rows for (int y = cliprect.min_y; y <= cliprect.max_y; y++) { uint16_t const *const fore = &fgpixmap.pix(y); uint16_t *const dest = &bitmap.pix(y); int road = 0; - sprite_info sprinfo; - /* compute the Y sum between opa and the current scanline (p. 141) */ - int va = (y + m_turbo_opa) & 0xff; + // compute the Y sum between opa and the current scanline (p. 141) + int va = (y + m_opa) & 0xff; - /* the upper bit of OPC inverts the road (p. 141) */ - if (!(m_turbo_opc & 0x80)) + // the upper bit of OPC inverts the road (p. 141) + if (!(m_opc & 0x80)) va ^= 0xff; - /* compute the sprite information; we use y-1 since this info was computed during HBLANK */ - /* on the previous scanline */ - turbo_prepare_sprites(y, &sprinfo); + // compute the sprite information; we use y-1 since this info was computed during HBLANK + // on the previous scanline + prepare_sprites(y); - /* loop over columns */ + // loop over columns for (int x = 0; x <= cliprect.max_x; x += TURBO_X_SCALE) { int xx = x / TURBO_X_SCALE; - /* load the bitmask from the sprite position for both halves of the sprites (p. 139) */ + // load the bitmask from the sprite position for both halves of the sprites (p. 139) uint16_t he = m_sprite_position[xx] | (m_sprite_position[xx + 0x100] << 8); - /* the AND of the line enable and horizontal enable is clocked and held in LST0-7 (p. 143) */ - he &= sprinfo.ve; - sprinfo.lst |= he | (he >> 8); + // the AND of the line enable and horizontal enable is clocked and held in LST0-7 (p. 143) + he &= m_sprite_info.ve; + m_sprite_info.lst |= he | (he >> 8); - /* compute the X sum between opb and the current column; only the carry matters (p. 141) */ - uint8_t carry = (xx + m_turbo_opb) >> 8; + // compute the X sum between opb and the current column; only the carry matters (p. 141) + uint8_t carry = (xx + m_opb) >> 8; - /* the carry selects which inputs to use (p. 141) */ + // the carry selects which inputs to use (p. 141) int sel, coch; if (carry) { - sel = m_turbo_ipb; - coch = m_turbo_ipc >> 4; + sel = m_ipb; + coch = m_ipc >> 4; } else { - sel = m_turbo_ipa; - coch = m_turbo_ipc & 15; + sel = m_ipa; + coch = m_ipc & 15; } - /* look up AREA1 and AREA2 (p. 142) */ + // look up AREA1 and AREA2 (p. 142) int area, offs, areatmp; - offs = va | /* A0- A7 = VA0-VA7 */ - ((sel & 0x0f) << 8); /* A8-A11 = SEL0-3 */ + offs = va | // A0- A7 = VA0-VA7 + ((sel & 0x0f) << 8); // A8-A11 = SEL0-3 areatmp = m_roadroms[0x0000 | offs]; areatmp = ((areatmp + xx) >> 8) & 0x01; @@ -421,9 +414,9 @@ uint32_t turbo_state::screen_update_turbo(screen_device &screen, bitmap_ind16 &b areatmp = ((areatmp + xx) >> 8) & 0x01; area |= areatmp << 1; - /* look up AREA3 and AREA4 (p. 142) */ - offs = va | /* A0- A7 = VA0-VA7 */ - ((sel & 0xf0) << 4); /* A8-A11 = SEL4-7 */ + // look up AREA3 and AREA4 (p. 142) + offs = va | // A0- A7 = VA0-VA7 + ((sel & 0xf0) << 4); // A8-A11 = SEL4-7 areatmp = m_roadroms[0x2000 | offs]; areatmp = ((areatmp + xx) >> 8) & 0x01; @@ -433,90 +426,90 @@ uint32_t turbo_state::screen_update_turbo(screen_device &screen, bitmap_ind16 &b areatmp = ((areatmp + xx) >> 8) & 0x01; area |= areatmp << 3; - /* look up AREA5 (p. 141) */ - offs = (xx >> 3) | /* A0- A4 = H3-H7 */ - ((m_turbo_opc & 0x3f) << 5); /* A5-A10 = OPC0-5 */ + // look up AREA5 (p. 141) + offs = (xx >> 3) | // A0- A4 = H3-H7 + ((m_opc & 0x3f) << 5); // A5-A10 = OPC0-5 areatmp = m_roadroms[0x4000 | offs]; areatmp = (areatmp << (xx & 7)) & 0x80; area |= areatmp >> 3; - /* compute the final area value and look it up in IC18/PR1115 (p. 144) */ - /* note: SLIPAR is 0 on the road surface only */ - /* ACCIAR is 0 on the road surface and the striped edges only */ + // compute the final area value and look it up in IC18/PR1115 (p. 144) + // note: SLIPAR is 0 on the road surface only + // ACCIAR is 0 on the road surface and the striped edges only int babit = pr1115[area]; int slipar_acciar = babit & 0x30; if (!road && (slipar_acciar & 0x20)) road = 1; - /* also use the coch value to look up color info in IC13/PR1114 and IC21/PR1117 (p. 144) */ - offs = (coch & 0x0f) | /* A0-A3: CONT0-3 = COCH0-3 */ - ((m_turbo_fbcol & 0x01) << 4); /* A4: COL0 */ + // also use the coch value to look up color info in IC13/PR1114 and IC21/PR1117 (p. 144) + offs = (coch & 0x0f) | // A0-A3: CONT0-3 = COCH0-3 + ((m_fbcol & 0x01) << 4); // A4: COL0 int bacol = pr1114[offs] | (pr1117[offs] << 8); - /* at this point, do the character lookup; due to the shift register loading in */ - /* the sync PROM, we latch character 0 during pixel 6 and start clocking in pixel */ - /* 8, effectively shifting the display by 8; at pixel 0x108, the color latch is */ - /* forced clear and isn't touched until the next shift register load */ + // at this point, do the character lookup; due to the shift register loading in + // the sync PROM, we latch character 0 during pixel 6 and start clocking in pixel + // 8, effectively shifting the display by 8; at pixel 0x108, the color latch is + // forced clear and isn't touched until the next shift register load int foreraw = (xx < 8 || xx >= 0x108) ? 0 : fore[xx - 8]; - /* perform the foreground color table lookup in IC99/PR1118 (p. 137) */ + // perform the foreground color table lookup in IC99/PR1118 (p. 137) int forebits = pr1118[foreraw]; - /* now that we have done all the per-5MHz pixel work, mix the sprites at the scale factor */ + // now that we have done all the per-5MHz pixel work, mix the sprites at the scale factor for (int ix = 0; ix < TURBO_X_SCALE; ix++) { - /* iterate over live sprites and update them */ - /* the final 32-bit value is: */ - /* CDB0-7 = D0 -D7 */ - /* CDG0-7 = D8 -D15 */ - /* CDR0-7 = D16-D23 */ - /* PLB0-7 = D24-D31 */ - uint32_t sprbits = turbo_get_sprite_bits(road, &sprinfo); - - /* perform collision detection here via lookup in IC20/PR1116 (p. 144) */ - m_turbo_collision |= pr1116[((sprbits >> 24) & 7) | (slipar_acciar >> 1)]; - - /* look up the sprite priority in IC11/PR1122 (p. 144) */ - int priority = ((sprbits & 0xfe000000) >> 25) | /* A0-A6: PLB1-7 */ - ((m_turbo_fbpla & 0x07) << 7); /* A7-A9: PLA0-2 */ + // iterate over live sprites and update them + // the final 32-bit value is: + // CDB0-7 = D0 -D7 + // CDG0-7 = D8 -D15 + // CDR0-7 = D16-D23 + // PLB0-7 = D24-D31 + uint32_t sprbits = get_sprite_bits(road); + + // perform collision detection here via lookup in IC20/PR1116 (p. 144) + m_collision |= pr1116[((sprbits >> 24) & 7) | (slipar_acciar >> 1)]; + + // look up the sprite priority in IC11/PR1122 (p. 144) + int priority = ((sprbits & 0xfe000000) >> 25) | // A0-A6: PLB1-7 + ((m_fbpla & 0x07) << 7); // A7-A9: PLA0-2 priority = pr1122[priority]; - /* use that to look up the overall priority in IC12/PR1123 (p. 144) */ - int mx = (priority & 7) | /* A0-A2: PR-1122 output, bits 0-2 */ - ((sprbits & 0x01000000) >> 21) | /* A3: PLB0 */ - ((foreraw & 0x80) >> 3) | /* A4: PLBE */ - ((forebits & 0x08) << 2) | /* A5: PLBF */ - ((babit & 0x07) << 6) | /* A6-A8: BABIT1-3 */ - ((m_turbo_fbpla & 0x08) << 6); /* A9: PLA3 */ + // use that to look up the overall priority in IC12/PR1123 (p. 144) + int mx = (priority & 7) | // A0-A2: PR-1122 output, bits 0-2 + ((sprbits & 0x01000000) >> 21) | // A3: PLB0 + ((foreraw & 0x80) >> 3) | // A4: PLBE + ((forebits & 0x08) << 2) | // A5: PLBF + ((babit & 0x07) << 6) | // A6-A8: BABIT1-3 + ((m_fbpla & 0x08) << 6); // A9: PLA3 mx = pr1123[mx]; - /* the MX output selects one of 16 inputs; build up a 16-bit pattern to match */ - /* these in red, green, and blue (p. 144) */ - int red = ((sprbits & 0x0000ff) >> 0) | /* D0- D7: CDR0-CDR7 */ - ((forebits & 0x01) << 8) | /* D8: CDRF */ - ((bacol & 0x001f) << 9) | /* D9-D13: BAR0-BAR4 */ - (1 << 14) | /* D14: 1 */ - (0 << 15); /* D15: 0 */ - - int grn = ((sprbits & 0x00ff00) >> 8) | /* D0- D7: CDG0-CDG7 */ - ((forebits & 0x02) << 7) | /* D8: CDGF */ - ((bacol & 0x03e0) << 4) | /* D9-D13: BAG0-BAG4 */ - (1 << 14) | /* D14: 1 */ - (0 << 15); /* D15: 0 */ - - int blu = ((sprbits & 0xff0000) >> 16) | /* D0- D7: CDB0-CDB7 */ - ((forebits & 0x04) << 6) | /* D8: CDBF */ - ((bacol & 0x7c00) >> 1) | /* D9-D13: BAB0-BAB4 */ - (1 << 14) | /* D14: 1 */ - (0 << 15); /* D15: 0 */ - - /* we then go through a muxer to select one of the 16 outputs computed above (p. 144) */ - offs = mx | /* A0-A3: MX0-MX3 */ - (((~red >> mx) & 1) << 4) | /* A4: CDR */ - (((~grn >> mx) & 1) << 5) | /* A5: CDG */ - (((~blu >> mx) & 1) << 6) | /* A6: CDB */ - ((m_turbo_fbcol & 6) << 6); /* A7-A8: COL1-2 */ + // the MX output selects one of 16 inputs; build up a 16-bit pattern to match + // these in red, green, and blue (p. 144) + int red = ((sprbits & 0x0000ff) >> 0) | // D0- D7: CDR0-CDR7 + ((forebits & 0x01) << 8) | // D8: CDRF + ((bacol & 0x001f) << 9) | // D9-D13: BAR0-BAR4 + (1 << 14) | // D14: 1 + (0 << 15); // D15: 0 + + int grn = ((sprbits & 0x00ff00) >> 8) | // D0- D7: CDG0-CDG7 + ((forebits & 0x02) << 7) | // D8: CDGF + ((bacol & 0x03e0) << 4) | // D9-D13: BAG0-BAG4 + (1 << 14) | // D14: 1 + (0 << 15); // D15: 0 + + int blu = ((sprbits & 0xff0000) >> 16) | // D0- D7: CDB0-CDB7 + ((forebits & 0x04) << 6) | // D8: CDBF + ((bacol & 0x7c00) >> 1) | // D9-D13: BAB0-BAB4 + (1 << 14) | // D14: 1 + (0 << 15); // D15: 0 + + // we then go through a muxer to select one of the 16 outputs computed above (p. 144) + offs = mx | // A0-A3: MX0-MX3 + (((~red >> mx) & 1) << 4) | // A4: CDR + (((~grn >> mx) & 1) << 5) | // A5: CDG + (((~blu >> mx) & 1) << 6) | // A6: CDB + ((m_fbcol & 6) << 6); // A7-A8: COL1-2 dest[x + ix] = pr1121[offs]; } } @@ -581,31 +574,30 @@ uint32_t turbo_state::screen_update_turbo(screen_device &screen, bitmap_ind16 &b */ -void turbo_state::subroc3d_prepare_sprites(uint8_t y, sprite_info *info) +void subroc3d_state::prepare_sprites(uint8_t y) { const uint8_t *pr1449 = &m_proms[0x300]; - int sprnum; - /* initialize the line enable signals to 0 */ - info->ve = 0; - info->lst = 0; + // initialize the line enable signals to 0 + m_sprite_info.ve = 0; + m_sprite_info.lst = 0; - /* compute the sprite information, which was done on the previous scanline during HBLANK */ - for (sprnum = 0; sprnum < 16; sprnum++) + // compute the sprite information, which was done on the previous scanline during HBLANK + for (int sprnum = 0; sprnum < 16; sprnum++) { uint8_t *rambase = &m_spriteram[sprnum * 8]; int level = sprnum & 7; uint8_t clo, chi; uint32_t sum; - /* perform the first ALU to see if we are within the scanline */ + // perform the first ALU to see if we are within the scanline sum = y + (rambase[0]/* ^ 0xff*/); clo = (sum >> 8) & 1; sum += (y << 8) + ((rambase[1]/* ^ 0xff*/) << 8); chi = (sum >> 16) & 1; - /* the AND of the low carry and the inverse of the high carry clocks an enable bit */ - /* for this sprite; note that the logic in the Turbo schematics is reversed here */ + // the AND of the low carry and the inverse of the high carry clocks an enable bit + // for this sprite; note that the logic in the Turbo schematics is reversed here if (clo & (chi ^ 1)) { int xscale = rambase[2] ^ 0xff; @@ -613,16 +605,16 @@ void turbo_state::subroc3d_prepare_sprites(uint8_t y, sprite_info *info) uint16_t offset = rambase[6] + (rambase[7] << 8); int offs; - /* mark this entry enabled */ - info->ve |= 1 << sprnum; + // mark this entry enabled + m_sprite_info.ve |= 1 << sprnum; - /* look up the low byte of the sum plus the yscale value in */ - /* IC50/PR1119 to determine if we write back the sum of the */ - /* offset and the rowbytes this scanline (p. 138) */ - offs = (sum & 0xff) | /* A0-A7 = AL0-AL7 */ - ((yscale & 0x08) << 5); /* A8-A9 = /RO11-/RO12 */ + // look up the low byte of the sum plus the yscale value in + // IC50/PR1119 to determine if we write back the sum of the */ + // offset and the rowbytes this scanline (p. 138) + offs = (sum & 0xff) | // A0-A7 = AL0-AL7 + ((yscale & 0x08) << 5); // A8-A9 = /RO11-/RO12 - /* one of the bits is selected based on the low 7 bits of yscale */ + // one of the bits is selected based on the low 7 bits of yscale if (!((pr1449[offs] >> (yscale & 0x07)) & 1)) { offset += rambase[4] + (rambase[5] << 8); @@ -630,18 +622,18 @@ void turbo_state::subroc3d_prepare_sprites(uint8_t y, sprite_info *info) rambase[7] = offset >> 8; } - /* the output of the ALU here goes to the individual level counter */ - info->latched[level] = 0; - info->plb[level] = 0; - info->offset[level] = offset << 1; - info->frac[level] = 0; - info->step[level] = sprite_xscale(xscale, 1.2e3, 1.2e3, 220e-12); + // the output of the ALU here goes to the individual level counter + m_sprite_info.latched[level] = 0; + m_sprite_info.plb[level] = 0; + m_sprite_info.offset[level] = offset << 1; + m_sprite_info.frac[level] = 0; + m_sprite_info.step[level] = sprite_xscale(xscale, 1.2e3, 1.2e3, 220e-12); } } } -uint32_t turbo_state::subroc3d_get_sprite_bits(sprite_info *sprinfo, uint8_t *plb) +uint32_t subroc3d_state::get_sprite_bits(uint8_t *plb) { /* see logic on each sprite: END = (CDA == 1 && (CDA ^ CDB) == 0 && (CDC ^ CDD) == 0) @@ -650,39 +642,38 @@ uint32_t turbo_state::subroc3d_get_sprite_bits(sprite_info *sprinfo, uint8_t *pl */ static const uint8_t plb_end[16] = { 0,1,1,2, 1,1,1,1, 1,1,1,1, 0,1,1,2 }; uint32_t sprdata = 0; - int level; *plb = 0; - /* loop over all live levels */ - for (level = 0; level < 8; level++) - if (sprinfo->lst & (1 << level)) + // loop over all live levels + for (int level = 0; level < 8; level++) + if (m_sprite_info.lst & (1 << level)) { - /* latch the data and advance the offset */ - sprdata |= sprinfo->latched[level]; - *plb |= sprinfo->plb[level]; - sprinfo->frac[level] += sprinfo->step[level]; + // latch the data and advance the offset + sprdata |= m_sprite_info.latched[level]; + *plb |= m_sprite_info.plb[level]; + m_sprite_info.frac[level] += m_sprite_info.step[level]; - /* if we're live and we've clocked more data, advance */ - while (sprinfo->frac[level] >= 0x800000) + // if we're live and we've clocked more data, advance + while (m_sprite_info.frac[level] >= 0x800000) { - uint32_t offs = sprinfo->offset[level]; + uint32_t offs = m_sprite_info.offset[level]; uint8_t pixdata; - /* bit 0 controls which half of the byte to use */ - /* bits 1-13 go to address lines */ - /* bit 14 selects which of the two ROMs to read from */ + // bit 0 controls which half of the byte to use + // bits 1-13 go to address lines + // bit 14 selects which of the two ROMs to read from pixdata = m_spriteroms[(level << 15) | ((offs >> 1) & 0x7fff)] >> ((~offs & 1) * 4); - sprinfo->latched[level] = sprite_expand[pixdata & 0x0f] << level; - sprinfo->plb[level] = (plb_end[pixdata & 0x0f] & 1) << level; + m_sprite_info.latched[level] = sprite_expand[pixdata & 0x0f] << level; + m_sprite_info.plb[level] = (plb_end[pixdata & 0x0f] & 1) << level; - /* if bit 3 is 0 and bit 2 is 1, the enable flip/flip is reset */ + // if bit 3 is 0 and bit 2 is 1, the enable flip/flip is reset if (plb_end[pixdata & 0x0f] & 2) - sprinfo->lst &= ~(1 << level); + m_sprite_info.lst &= ~(1 << level); - /* if bit 15 is set, we decrement instead of increment */ - sprinfo->offset[level] += (offs & 0x10000) ? -1 : 1; - sprinfo->frac[level] -= 0x800000; + // if bit 15 is set, we decrement instead of increment + m_sprite_info.offset[level] += (offs & 0x10000) ? -1 : 1; + m_sprite_info.frac[level] -= 0x800000; } } @@ -697,7 +688,7 @@ uint32_t turbo_state::subroc3d_get_sprite_bits(sprite_info *sprinfo, uint8_t *pl * *************************************/ -uint32_t turbo_state::screen_update_subroc3d(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t subroc3d_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { bitmap_ind16 &fgpixmap = m_fg_tilemap->pixmap(); uint8_t const *const pr1419 = &m_proms[0x000]; @@ -705,84 +696,83 @@ uint32_t turbo_state::screen_update_subroc3d(screen_device &screen, bitmap_ind16 uint8_t const *const pr1450 = &m_proms[0x500]; uint8_t const *const pr1454 = &m_proms[0x920]; - /* loop over rows */ + // loop over rows for (int y = cliprect.min_y; y <= cliprect.max_y; y++) { uint16_t const *const fore = &fgpixmap.pix(y); uint16_t *const dest = &bitmap.pix(y); - sprite_info sprinfo; - /* compute the sprite information; we use y-1 since this info was computed during HBLANK */ - /* on the previous scanline */ - subroc3d_prepare_sprites(y, &sprinfo); + // compute the sprite information; we use y-1 since this info was computed during HBLANK + // on the previous scanline + prepare_sprites(y); - /* loop over columns */ + // loop over columns for (int x = 0; x <= cliprect.max_x; x += TURBO_X_SCALE) { uint8_t xx = x / TURBO_X_SCALE; - /* load the bitmask from the sprite position for both halves of the sprites (p. 143) */ + // load the bitmask from the sprite position for both halves of the sprites (p. 143) uint16_t he = m_sprite_position[xx * 2] | (m_sprite_position[xx * 2 + 1] << 8); - /* the AND of the line enable and horizontal enable is clocked and held in LST0-7 (p. 143) */ - he &= sprinfo.ve; - sprinfo.lst |= he | (he >> 8); + // the AND of the line enable and horizontal enable is clocked and held in LST0-7 (p. 143) + he &= m_sprite_info.ve; + m_sprite_info.lst |= he | (he >> 8); - /* at this point, do the character lookup */ + // at this point, do the character lookup uint8_t foreraw; - if (!m_subroc3d_flip) + if (!m_flip) foreraw = fore[xx]; else foreraw = fore[(pr1454[(xx >> 3) & 0x1f] << 3) | (xx & 0x07)]; - /* perform the foreground color table lookup in IC62/PR1620 (p. 141) */ + // perform the foreground color table lookup in IC62/PR1620 (p. 141) uint8_t forebits = pr1620[foreraw]; - /* MPLB is set based on the high bit of the raw foreground data, as an OR over the output */ - /* of the foreground color PROM */ + // MPLB is set based on the high bit of the raw foreground data, as an OR over the output + // of the foreground color PROM uint8_t mplb = (foreraw & 0x80) || ((forebits & 0x0f) == 0); - /* now that we have done all the per-5MHz pixel work, mix the sprites at the scale factor */ + // now that we have done all the per-5MHz pixel work, mix the sprites at the scale factor for (int ix = 0; ix < TURBO_X_SCALE; ix++) { int offs; - /* iterate over live sprites and update them */ - /* the final 32-bit value is: */ - /* CDA0-7 = D0 -D7 */ - /* CDB0-7 = D8 -D15 */ - /* CDC0-7 = D16-D23 */ - /* CDD0-7 = D24-D31 */ + // iterate over live sprites and update them + // the final 32-bit value is: + // CDA0-7 = D0 -D7 + // CDB0-7 = D8 -D15 + // CDC0-7 = D16-D23 + // CDD0-7 = D24-D31 uint8_t plb; - uint32_t sprbits = subroc3d_get_sprite_bits(&sprinfo, &plb); + uint32_t sprbits = get_sprite_bits(&plb); - /* MUX0-3 is selected by PLY0-3 and the sprite enable bits, and is the output */ - /* of IC21/PR1450 (p. 141), unless MPLB = 0, in which case the values are grounded (p. 141) */ + // MUX0-3 is selected by PLY0-3 and the sprite enable bits, and is the output + // of IC21/PR1450 (p. 141), unless MPLB = 0, in which case the values are grounded (p. 141) uint8_t mux; if (mplb) { - offs = (plb ^ 0xff) | /* A0-A7: /PLB0-7 */ - ((m_subroc3d_ply & 0x02) << 7); /* A8: PLY1 */ - mux = pr1450[offs] >> ((m_subroc3d_ply & 0x01) * 4); + offs = (plb ^ 0xff) | // A0-A7: /PLB0-7 + ((m_ply & 0x02) << 7); // A8: PLY1 + mux = pr1450[offs] >> ((m_ply & 0x01) * 4); } else mux = 0; - /* CD0-3 are selected from the sprite bits and MUX0-2 (p. 141) */ + // CD0-3 are selected from the sprite bits and MUX0-2 (p. 141) sprbits = (sprbits >> (mux & 0x07)) & 0x01010101; uint8_t cd = (sprbits >> (24-3)) | (sprbits >> (16-2)) | (sprbits >> (8-1)) | sprbits; - /* MUX3 selects either CD0-3 or the foreground output (p. 141) */ + // MUX3 selects either CD0-3 or the foreground output (p. 141) int finalbits; if (mux & 0x08) finalbits = cd; else finalbits = forebits; - /* we then go through a muxer to select one of the 16 outputs computed above (p. 141) */ - offs = (finalbits & 0x0f) | /* A0-A3: CD0-CD3 */ - ((mux & 0x08) << 1) | /* A4: MUX3 */ - (m_subroc3d_col << 5); /* A5-A8: COL0-COL3 */ + // we then go through a muxer to select one of the 16 outputs computed above (p. 141) + offs = (finalbits & 0x0f) | // A0-A3: CD0-CD3 + ((mux & 0x08) << 1) | // A4: MUX3 + (m_col << 5); // A5-A8: COL0-COL3 dest[x + ix] = pr1419[offs]; } } @@ -798,44 +788,44 @@ uint32_t turbo_state::screen_update_subroc3d(screen_device &screen, bitmap_ind16 * *************************************/ -void turbo_state::buckrog_prepare_sprites(uint8_t y, sprite_info *info) +void buckrog_state::prepare_sprites(uint8_t y) { uint8_t const *const pr5196 = &m_proms[0x100]; - /* initialize the line enable signals to 0 */ - info->ve = 0; - info->lst = 0; + // initialize the line enable signals to 0 + m_sprite_info.ve = 0; + m_sprite_info.lst = 0; - /* compute the sprite information, which was done on the previous scanline during HBLANK */ + // compute the sprite information, which was done on the previous scanline during HBLANK for (int sprnum = 0; sprnum < 16; sprnum++) { uint8_t *const rambase = &m_spriteram[sprnum * 8]; int level = sprnum & 7; - /* perform the first ALU to see if we are within the scanline */ + // perform the first ALU to see if we are within the scanline uint32_t sum = y + (rambase[0]/* ^ 0xff*/); uint8_t clo = (sum >> 8) & 1; sum += (y << 8) + ((rambase[1]/* ^ 0xff*/) << 8); uint8_t chi = (sum >> 16) & 1; - /* the AND of the low carry and the inverse of the high carry clocks an enable bit */ - /* for this sprite; note that the logic in the Turbo schematics is reversed here */ + // the AND of the low carry and the inverse of the high carry clocks an enable bit + // for this sprite; note that the logic in the Turbo schematics is reversed here if (clo & (chi ^ 1)) { int xscale = rambase[2] ^ 0xff; int yscale = rambase[3];// ^ 0xff; uint16_t offset = rambase[6] + (rambase[7] << 8); - /* mark this entry enabled */ - info->ve |= 1 << sprnum; + // mark this entry enabled + m_sprite_info.ve |= 1 << sprnum; - /* look up the low byte of the sum plus the yscale value in */ - /* IC50/PR1119 to determine if we write back the sum of the */ - /* offset and the rowbytes this scanline (p. 138) */ - int offs = (sum & 0xff) | /* A0-A7 = AL0-AL7 */ - ((yscale & 0x08) << 5); /* A8-A9 = /RO11-/RO12 */ + // look up the low byte of the sum plus the yscale value in + // IC50/PR1119 to determine if we write back the sum of the + // offset and the rowbytes this scanline (p. 138) + int offs = (sum & 0xff) | // A0-A7 = AL0-AL7 + ((yscale & 0x08) << 5); // A8-A9 = /RO11-/RO12 - /* one of the bits is selected based on the low 7 bits of yscale */ + // one of the bits is selected based on the low 7 bits of yscale if (!((pr5196[offs] >> (yscale & 0x07)) & 1)) { offset += rambase[4] + (rambase[5] << 8); @@ -843,19 +833,19 @@ void turbo_state::buckrog_prepare_sprites(uint8_t y, sprite_info *info) rambase[7] = offset >> 8; } - /* the output of the ALU here goes to the individual level counter */ - info->latched[level] = 0; - info->plb[level] = 0; - info->offset[level] = offset << 1; - info->frac[level] = 0; - /* 820 verified in schematics */ - info->step[level] = sprite_xscale(xscale, 1.2e3, 820, 220e-12); + // the output of the ALU here goes to the individual level counter + m_sprite_info.latched[level] = 0; + m_sprite_info.plb[level] = 0; + m_sprite_info.offset[level] = offset << 1; + m_sprite_info.frac[level] = 0; + // 820 verified in schematics + m_sprite_info.step[level] = sprite_xscale(xscale, 1.2e3, 820, 220e-12); } } } -uint32_t turbo_state::buckrog_get_sprite_bits(sprite_info *sprinfo, uint8_t *plb) +uint32_t buckrog_state::get_sprite_bits(uint8_t *plb) { /* see logic on each sprite: END = (CDA == 1 && (CDA ^ CDB) == 0 && (CDC ^ CDD) == 0) @@ -867,34 +857,34 @@ uint32_t turbo_state::buckrog_get_sprite_bits(sprite_info *sprinfo, uint8_t *plb *plb = 0; - /* loop over all live levels */ + // loop over all live levels for (int level = 0; level < 8; level++) - if (sprinfo->lst & (1 << level)) + if (m_sprite_info.lst & (1 << level)) { - /* latch the data and advance the offset */ - sprdata |= sprinfo->latched[level]; - *plb |= sprinfo->plb[level]; - sprinfo->frac[level] += sprinfo->step[level]; + // latch the data and advance the offset + sprdata |= m_sprite_info.latched[level]; + *plb |= m_sprite_info.plb[level]; + m_sprite_info.frac[level] += m_sprite_info.step[level]; - /* if we're live and we've clocked more data, advance */ - while (sprinfo->frac[level] >= 0x800000) + // if we're live and we've clocked more data, advance + while (m_sprite_info.frac[level] >= 0x800000) { - uint32_t offs = sprinfo->offset[level]; + uint32_t offs = m_sprite_info.offset[level]; - /* bit 0 controls which half of the byte to use */ - /* bits 1-13 go to address lines */ - /* bit 14 selects which of the two ROMs to read from */ + // bit 0 controls which half of the byte to use + // bits 1-13 go to address lines + // bit 14 selects which of the two ROMs to read from uint8_t pixdata = m_spriteroms[(level << 15) | ((offs >> 1) & 0x7fff)] >> ((~offs & 1) * 4); - sprinfo->latched[level] = sprite_expand[pixdata & 0x0f] << level; - sprinfo->plb[level] = (plb_end[pixdata & 0x0f] & 1) << level; + m_sprite_info.latched[level] = sprite_expand[pixdata & 0x0f] << level; + m_sprite_info.plb[level] = (plb_end[pixdata & 0x0f] & 1) << level; - /* if bit 3 is 0 and bit 2 is 1, the enable flip/flip is reset */ + // if bit 3 is 0 and bit 2 is 1, the enable flip/flip is reset if (plb_end[pixdata & 0x0f] & 2) - sprinfo->lst &= ~(1 << level); + m_sprite_info.lst &= ~(1 << level); - /* if bit 15 is set, we decrement instead of increment */ - sprinfo->offset[level] += (offs & 0x10000) ? -1 : 1; - sprinfo->frac[level] -= 0x800000; + // if bit 15 is set, we decrement instead of increment + m_sprite_info.offset[level] += (offs & 0x10000) ? -1 : 1; + m_sprite_info.frac[level] -= 0x800000; } } @@ -909,60 +899,59 @@ uint32_t turbo_state::buckrog_get_sprite_bits(sprite_info *sprinfo, uint8_t *plb * *************************************/ -uint32_t turbo_state::screen_update_buckrog(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t buckrog_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { bitmap_ind16 &fgpixmap = m_fg_tilemap->pixmap(); uint8_t const *const pr5194 = &m_proms[0x000]; uint8_t const *const pr5198 = &m_proms[0x500]; uint8_t const *const pr5199 = &m_proms[0x700]; - /* loop over rows */ + // loop over rows for (int y = cliprect.min_y; y <= cliprect.max_y; y++) { uint16_t const *const fore = &fgpixmap.pix(y); uint16_t *const dest = &bitmap.pix(y); - sprite_info sprinfo; - /* compute the sprite information; we use y-1 since this info was computed during HBLANK */ - /* on the previous scanline */ - buckrog_prepare_sprites(y, &sprinfo); + // compute the sprite information; we use y-1 since this info was computed during HBLANK + // on the previous scanline + prepare_sprites(y); - /* loop over columns */ + // loop over columns for (int x = 0; x <= cliprect.max_x; x += TURBO_X_SCALE) { uint8_t xx = x / TURBO_X_SCALE; int offs; - /* load the bitmask from the sprite position for both halves of the sprites (p. 143) */ + // load the bitmask from the sprite position for both halves of the sprites (p. 143) uint16_t he = m_sprite_position[xx * 2] | (m_sprite_position[xx * 2 + 1] << 8); - /* the AND of the line enable and horizontal enable is clocked and held in LST0-7 (p. 143) */ - he &= sprinfo.ve; - sprinfo.lst |= he | (he >> 8); + // the AND of the line enable and horizontal enable is clocked and held in LST0-7 (p. 143) + he &= m_sprite_info.ve; + m_sprite_info.lst |= he | (he >> 8); - /* at this point, do the character lookup and the foreground color table lookup in IC93/PR1598 (SH 5/5)*/ + // at this point, do the character lookup and the foreground color table lookup in IC93/PR1598 (SH 5/5) uint8_t foreraw = fore[(pr5194[((xx >> 3) - 1) & 0x1f] << 3) | (xx & 0x07)]; - offs = ((foreraw & 0x03) << 0) | /* A0-A1: BIT0-1 */ - ((foreraw & 0xf8) >> 1) | /* A2-A6: BANK3-7 */ - ((m_buckrog_fchg & 0x03) << 7); /* A7-A9: FCHG0-2 */ + offs = ((foreraw & 0x03) << 0) | // A0-A1: BIT0-1 + ((foreraw & 0xf8) >> 1) | // A2-A6: BANK3-7 + ((m_fchg & 0x03) << 7); // A7-A9: FCHG0-2 uint8_t forebits = pr5198[offs]; - /* fetch the STAR bit */ - uint8_t star = m_buckrog_bitmap_ram[y * 256 + xx]; + // fetch the STAR bit + uint8_t star = m_bitmap_ram[y * 256 + xx]; - /* now that we have done all the per-5MHz pixel work, mix the sprites at the scale factor */ + // now that we have done all the per-5MHz pixel work, mix the sprites at the scale factor for (int ix = 0; ix < TURBO_X_SCALE; ix++) { - /* iterate over live sprites and update them */ - /* the final 32-bit value is: */ - /* CDA0-7 = D0 -D7 */ - /* CDB0-7 = D8 -D15 */ - /* CDC0-7 = D16-D23 */ - /* CDD0-7 = D24-D31 */ + // iterate over live sprites and update them + // the final 32-bit value is: + // CDA0-7 = D0 -D7 + // CDB0-7 = D8 -D15 + // CDC0-7 = D16-D23 + // CDD0-7 = D24-D31 uint8_t plb; - uint32_t sprbits = buckrog_get_sprite_bits(&sprinfo, &plb); + uint32_t sprbits = get_sprite_bits(&plb); - /* the PLB bits go into an LS148 8-to-1 decoder and become MUX0-3 (PROM board SH 2/10) */ + // the PLB bits go into an LS148 8-to-1 decoder and become MUX0-3 (PROM board SH 2/10) uint8_t mux; if (plb == 0) mux = 8; @@ -976,13 +965,13 @@ uint32_t turbo_state::screen_update_buckrog(screen_device &screen, bitmap_ind16 } } - /* MUX then selects one of the sprites and selects CD0-3 */ + // MUX then selects one of the sprites and selects CD0-3 sprbits = (sprbits >> (mux & 0x07)) & 0x01010101; uint8_t cd = (sprbits >> (24-3)) | (sprbits >> (16-2)) | (sprbits >> (8-1)) | sprbits; - /* this info goes into an LS148 8-to-3 decoder to determine the priorities (SH 5/5) */ + // this info goes into an LS148 8-to-3 decoder to determine the priorities (SH 5/5) - /* priority 7 is if bit 0x80 of the foreground color is 0; CHNG = 0 */ + // priority 7 is if bit 0x80 of the foreground color is 0; CHNG = 0 int palbits; if (!(forebits & 0x80)) { @@ -991,16 +980,16 @@ uint32_t turbo_state::screen_update_buckrog(screen_device &screen, bitmap_ind16 ((forebits & 0x01) << 0); } - /* priority 6 is if MUX3 is 0; CHNG = 1 */ + // priority 6 is if MUX3 is 0; CHNG = 1 else if (!(mux & 0x08)) { - offs = (cd & 0x0f) | /* A0-A3: CD0-3 */ - ((mux & 0x07) << 4) | /* A4-A6: MUX0-2 */ - ((m_buckrog_obch & 0x07) << 7); /* A7-A9: OBCH0-2 */ + offs = (cd & 0x0f) | // A0-A3: CD0-3 + ((mux & 0x07) << 4) | // A4-A6: MUX0-2 + ((m_obch & 0x07) << 7); // A7-A9: OBCH0-2 palbits = pr5199[offs]; } - /* priority 3 is if bit 0x40 of the foreground color is 0; CHNG = 0 */ + // priority 3 is if bit 0x40 of the foreground color is 0; CHNG = 0 else if (!(forebits & 0x40)) { palbits = ((forebits & 0x3c) << 2) | @@ -1008,20 +997,20 @@ uint32_t turbo_state::screen_update_buckrog(screen_device &screen, bitmap_ind16 ((forebits & 0x01) << 0); } - /* priority 1 is if the star is set; CHNG = 2 */ + // priority 1 is if the star is set; CHNG = 2 else if (star) { palbits = 0xff; } - /* otherwise, CHNG = 3 */ + // otherwise, CHNG = 3 else { - palbits = m_bgcolorrom[y | ((m_buckrog_mov & 0x1f) << 8)]; + palbits = m_bgcolorrom[y | ((m_mov & 0x1f) << 8)]; palbits = (palbits & 0xc0) | ((palbits & 0x30) << 4) | ((palbits & 0x0f) << 2); } - /* store the final bits for this pixel */ + // store the final bits for this pixel dest[x + ix] = palbits; } }