mirror of
https://github.com/holub/mame
synced 2025-04-23 17:00:53 +03:00
turbo.cpp: subclasses, input / output finders, save state preparation
This commit is contained in:
parent
aeb04395dd
commit
d66c07bde0
@ -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)
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -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);
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
virtual void video_start() override;
|
||||
|
||||
void init_turbo_enc();
|
||||
void init_turbo_noenc();
|
||||
|
||||
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
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user