summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2021-07-01 18:18:40 +0200
committer Ivan Vangelista <mesgnet@yahoo.it>2021-07-01 18:18:40 +0200
commitd66c07bde03c4d834a9e92ea7571c2890bf19647 (patch)
tree877305b687a23926399aca1344be8c7f64b8fc0e
parentaeb04395dd9421a6dcd9d442fd55d783a6c9f10d (diff)
turbo.cpp: subclasses, input / output finders, save state preparation
-rw-r--r--src/mame/audio/turbo.cpp297
-rw-r--r--src/mame/drivers/turbo.cpp1131
-rw-r--r--src/mame/includes/turbo.h346
-rw-r--r--src/mame/video/turbo.cpp657
4 files changed, 1252 insertions, 1179 deletions
diff --git a/src/mame/audio/turbo.cpp b/src/mame/audio/turbo.cpp
index 66867a6e0cd..d002916213e 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_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 6a9c9d31694..b30ae77ac22 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 @@ Notes:
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 052ccb19d45..cf1ac46f329 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 @@ public:
, 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<z80_device> m_maincpu;
- optional_device<z80_device> m_subcpu;
- required_device<i8255_device> m_i8255_0;
- required_device<i8255_device> m_i8255_1;
- optional_device<i8255_device> m_i8255_2;
- optional_device<i8255_device> m_i8255_3;
+ optional_device_array<i8255_device, 3> m_i8255;
required_region_ptr<uint8_t> m_spriteroms;
required_region_ptr<uint8_t> m_proms;
- optional_region_ptr<uint8_t> m_roadroms;
- optional_region_ptr<uint8_t> m_bgcolorrom;
required_shared_ptr<uint8_t> m_videoram;
- optional_shared_ptr<uint8_t> m_spriteram;
required_shared_ptr<uint8_t> m_sprite_position;
- optional_shared_ptr<uint8_t> m_decrypted_opcodes;
required_device<samples_device> m_samples;
@@ -88,136 +63,213 @@ private:
output_finder<32> m_digits;
output_finder<> m_lamp;
- std::unique_ptr<uint8_t[]> 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<z80_device> m_subcpu;
+ optional_shared_ptr<uint8_t> m_decrypted_opcodes;
+ required_shared_ptr<uint8_t> m_spriteram;
+ memory_share_creator<uint8_t> m_bitmap_ram;
+ required_region_ptr<uint8_t> 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<uint8_t> 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<uint8_t> m_roadroms;
+ memory_share_creator<uint8_t> 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 723aa15054e..2cf22dd9d6c 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<uint8_t[]>(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;
}
}