mirror of
https://github.com/holub/mame
synced 2025-07-05 09:57:47 +03:00
circus: split classes part2
This commit is contained in:
parent
013022771b
commit
15c60a2eaa
@ -92,6 +92,19 @@ uint8_t circus_state::paddle_r()
|
|||||||
return m_paddle->read();
|
return m_paddle->read();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void circus_state::clown_z_w(uint8_t data)
|
||||||
|
{
|
||||||
|
// This register triggers the discrete sound circuitry
|
||||||
|
//logerror("Z: %02X\n", data);
|
||||||
|
sound_w(data);
|
||||||
|
|
||||||
|
// also used to enable the amplifier
|
||||||
|
machine().sound().system_mute(data & 0x80);
|
||||||
|
|
||||||
|
// and the clown image currently displayed
|
||||||
|
m_clown_z = data;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
@ -595,38 +608,19 @@ ROM_START( ripcord )
|
|||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
|
|
||||||
void circus_state::init_circus()
|
|
||||||
{
|
|
||||||
m_game_id = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
void circus_state::init_robotbwl()
|
|
||||||
{
|
|
||||||
m_game_id = 2;
|
|
||||||
}
|
|
||||||
void circus_state::init_crash()
|
|
||||||
{
|
|
||||||
m_game_id = 3;
|
|
||||||
}
|
|
||||||
void circus_state::init_ripcord()
|
|
||||||
{
|
|
||||||
m_game_id = 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
Game Drivers
|
Game Drivers
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
GAMEL( 1977, circus, 0, circus, circus, circus_state, init_circus, ROT0, "Exidy / Taito", "Circus / Acrobat TV", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_circus ) // named Acrobat TV when Taito published it in Japan
|
GAMEL( 1977, circus, 0, circus, circus, circus_state, empty_init, ROT0, "Exidy / Taito", "Circus / Acrobat TV", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_circus ) // named Acrobat TV when Taito published it in Japan
|
||||||
GAMEL( 1977, circuso, circus, circus, circus, circus_state, init_circus, ROT0, "Exidy / Taito", "Circus / Acrobat TV (older)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_circus ) // "
|
GAMEL( 1977, circuso, circus, circus, circus, circus_state, empty_init, ROT0, "Exidy / Taito", "Circus / Acrobat TV (older)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_circus ) // "
|
||||||
GAMEL( 1977, springbd, circus, circus, circus, circus_state, init_circus, ROT0, "bootleg (Sub-Electro)", "Springboard (bootleg of Circus)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_circus ) // looks like a text hack, but it also had a different bezel
|
GAMEL( 1977, springbd, circus, circus, circus, circus_state, empty_init, ROT0, "bootleg (Sub-Electro)", "Springboard (bootleg of Circus)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_circus ) // looks like a text hack, but it also had a different bezel
|
||||||
|
|
||||||
GAME( 1977, robotbwl, 0, robotbwl, robotbwl, robotbwl_state, init_robotbwl, ROT0, "Exidy", "Robot Bowl", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
|
GAME( 1977, robotbwl, 0, robotbwl, robotbwl, robotbwl_state, empty_init, ROT0, "Exidy", "Robot Bowl", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
|
||||||
|
|
||||||
GAMEL( 1979, crash, 0, crash, crash, crash_state, init_crash, ROT0, "Exidy", "Crash (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_crash )
|
GAMEL( 1979, crash, 0, crash, crash, crash_state, empty_init, ROT0, "Exidy", "Crash (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_crash )
|
||||||
GAMEL( 1979, crasha, crash, crash, crash, crash_state, init_crash, ROT0, "Exidy", "Crash (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_crasha )
|
GAMEL( 1979, crasha, crash, crash, crash, crash_state, empty_init, ROT0, "Exidy", "Crash (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_crasha )
|
||||||
GAMEL( 1979, smash, crash, crash, crash, crash_state, init_crash, ROT0, "bootleg", "Smash (Crash bootleg)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_crash ) // looks like a text hack, but it also had a different bezel
|
GAMEL( 1979, smash, crash, crash, crash, crash_state, empty_init, ROT0, "bootleg", "Smash (Crash bootleg)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_crash ) // looks like a text hack, but it also had a different bezel
|
||||||
|
|
||||||
GAME( 1979, ripcord, 0, ripcord, ripcord, ripcord_state, init_ripcord, ROT0, "Exidy", "Rip Cord", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
|
GAME( 1979, ripcord, 0, ripcord, ripcord, ripcord_state, empty_init, ROT0, "Exidy", "Rip Cord", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
|
||||||
|
@ -32,11 +32,6 @@ public:
|
|||||||
void base_mcfg(machine_config &config);
|
void base_mcfg(machine_config &config);
|
||||||
void circus(machine_config &config);
|
void circus(machine_config &config);
|
||||||
|
|
||||||
void init_ripcord();
|
|
||||||
void init_circus();
|
|
||||||
void init_robotbwl();
|
|
||||||
void init_crash();
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void machine_start() override;
|
virtual void machine_start() override;
|
||||||
virtual void machine_reset() override;
|
virtual void machine_reset() override;
|
||||||
@ -56,12 +51,12 @@ protected:
|
|||||||
int m_clown_y = 0;
|
int m_clown_y = 0;
|
||||||
int m_clown_z = 0;
|
int m_clown_z = 0;
|
||||||
|
|
||||||
int m_game_id = 0;
|
|
||||||
void videoram_w(offs_t offset, uint8_t data);
|
void videoram_w(offs_t offset, uint8_t data);
|
||||||
void clown_x_w(uint8_t data) { m_clown_x = 240 - data; }
|
void clown_x_w(uint8_t data) { m_clown_x = 240 - data; }
|
||||||
void clown_y_w(uint8_t data) { m_clown_y = 240 - data; }
|
void clown_y_w(uint8_t data) { m_clown_y = 240 - data; }
|
||||||
void clown_z_w(uint8_t data);
|
void clown_z_w(uint8_t data);
|
||||||
uint8_t paddle_r();
|
uint8_t paddle_r();
|
||||||
|
virtual void sound_w(uint8_t data);
|
||||||
|
|
||||||
TILE_GET_INFO_MEMBER(get_bg_tile_info);
|
TILE_GET_INFO_MEMBER(get_bg_tile_info);
|
||||||
virtual uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
virtual uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
@ -86,10 +81,10 @@ public:
|
|||||||
|
|
||||||
void robotbwl(machine_config &config);
|
void robotbwl(machine_config &config);
|
||||||
|
|
||||||
protected:
|
|
||||||
virtual uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) override;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
virtual uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) override;
|
||||||
|
virtual void sound_w(uint8_t data) override;
|
||||||
|
|
||||||
void draw_box(bitmap_ind16 &bitmap, const rectangle &cliprect, int x, int y);
|
void draw_box(bitmap_ind16 &bitmap, const rectangle &cliprect, int x, int y);
|
||||||
void draw_scoreboard(bitmap_ind16 &bitmap, const rectangle &cliprect);
|
void draw_scoreboard(bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
void draw_bowling_alley(bitmap_ind16 &bitmap, const rectangle &cliprect);
|
void draw_bowling_alley(bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
@ -108,10 +103,10 @@ public:
|
|||||||
|
|
||||||
void crash(machine_config &config);
|
void crash(machine_config &config);
|
||||||
|
|
||||||
protected:
|
|
||||||
virtual uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) override;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
virtual uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) override;
|
||||||
|
virtual void sound_w(uint8_t data) override;
|
||||||
|
|
||||||
void draw_car(bitmap_ind16 &bitmap, const rectangle &cliprect);
|
void draw_car(bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -127,8 +122,9 @@ public:
|
|||||||
|
|
||||||
void ripcord(machine_config &config);
|
void ripcord(machine_config &config);
|
||||||
|
|
||||||
protected:
|
private:
|
||||||
virtual uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) override;
|
virtual uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) override;
|
||||||
|
virtual void sound_w(uint8_t data) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -11,6 +11,12 @@
|
|||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
#include "circus.h"
|
#include "circus.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
Circus
|
||||||
|
*******************************************************************************/
|
||||||
|
|
||||||
const char *const circus_sample_names[] =
|
const char *const circus_sample_names[] =
|
||||||
{
|
{
|
||||||
"*circus",
|
"*circus",
|
||||||
@ -20,38 +26,9 @@ const char *const circus_sample_names[] =
|
|||||||
nullptr
|
nullptr
|
||||||
};
|
};
|
||||||
|
|
||||||
const char *const crash_sample_names[] =
|
// Nodes - Inputs
|
||||||
{
|
|
||||||
"*crash",
|
|
||||||
"crash",
|
|
||||||
nullptr
|
|
||||||
};
|
|
||||||
|
|
||||||
const char *const ripcord_sample_names[] =
|
|
||||||
{
|
|
||||||
"*ripcord",
|
|
||||||
"splash",
|
|
||||||
"scream",
|
|
||||||
"chute",
|
|
||||||
"whistle",
|
|
||||||
nullptr
|
|
||||||
};
|
|
||||||
|
|
||||||
const char *const robotbwl_sample_names[] =
|
|
||||||
{
|
|
||||||
"*robotbwl",
|
|
||||||
"hit",
|
|
||||||
"roll",
|
|
||||||
"balldrop",
|
|
||||||
"demerit",
|
|
||||||
"reward",
|
|
||||||
nullptr
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/* Nodes - Inputs */
|
|
||||||
#define CIRCUS_MUSIC_BIT NODE_01
|
#define CIRCUS_MUSIC_BIT NODE_01
|
||||||
/* Nodes - Sounds */
|
// Nodes - Sounds
|
||||||
#define CIRCUS_MUSIC_SND NODE_10
|
#define CIRCUS_MUSIC_SND NODE_10
|
||||||
|
|
||||||
DISCRETE_SOUND_START(circus_discrete)
|
DISCRETE_SOUND_START(circus_discrete)
|
||||||
@ -68,6 +45,116 @@ DISCRETE_SOUND_START(circus_discrete)
|
|||||||
DISCRETE_OUTPUT(CIRCUS_MUSIC_SND, 1)
|
DISCRETE_OUTPUT(CIRCUS_MUSIC_SND, 1)
|
||||||
DISCRETE_SOUND_END
|
DISCRETE_SOUND_END
|
||||||
|
|
||||||
|
|
||||||
|
void circus_state::sound_w(uint8_t data)
|
||||||
|
{
|
||||||
|
// Bits 4-6 enable/disable trigger different events
|
||||||
|
switch ((data & 0x70) >> 4)
|
||||||
|
{
|
||||||
|
case 0: // All Off
|
||||||
|
m_discrete->write(CIRCUS_MUSIC_BIT, 0);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1: // Music
|
||||||
|
m_discrete->write(CIRCUS_MUSIC_BIT, 1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2: // Pop
|
||||||
|
m_samples->start(0, 0);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3: // Normal Video
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 4: // Miss
|
||||||
|
m_samples->start(1, 1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 5: // Invert Video
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 6: // Bounce
|
||||||
|
m_samples->start(2, 2);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 7: // Unused
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
Robot Bowl
|
||||||
|
*******************************************************************************/
|
||||||
|
|
||||||
|
const char *const robotbwl_sample_names[] =
|
||||||
|
{
|
||||||
|
"*robotbwl",
|
||||||
|
"hit",
|
||||||
|
"roll",
|
||||||
|
"balldrop",
|
||||||
|
"demerit",
|
||||||
|
"reward",
|
||||||
|
nullptr
|
||||||
|
};
|
||||||
|
|
||||||
|
// Nodes - Inputs
|
||||||
|
#define ROBOTBWL_MUSIC_BIT NODE_01
|
||||||
|
// Nodes - Sounds
|
||||||
|
#define ROBOTBWL_MUSIC_SND NODE_10
|
||||||
|
|
||||||
|
DISCRETE_SOUND_START(robotbwl_discrete)
|
||||||
|
/************************************************/
|
||||||
|
/* Input register mapping for robotbwl */
|
||||||
|
/************************************************/
|
||||||
|
DISCRETE_INPUTX_LOGIC(ROBOTBWL_MUSIC_BIT, 30000, 0, 0)
|
||||||
|
|
||||||
|
/************************************************/
|
||||||
|
/* Music is just a 1 bit DAC */
|
||||||
|
/************************************************/
|
||||||
|
DISCRETE_RCFILTER(NODE_20, ROBOTBWL_MUSIC_BIT, RES_K(10), CAP_U(.47))
|
||||||
|
DISCRETE_CRFILTER(ROBOTBWL_MUSIC_SND, NODE_20, RES_K(10) + RES_K(22), CAP_U(.1))
|
||||||
|
|
||||||
|
DISCRETE_OUTPUT(ROBOTBWL_MUSIC_SND, 1)
|
||||||
|
DISCRETE_SOUND_END
|
||||||
|
|
||||||
|
|
||||||
|
void robotbwl_state::sound_w(uint8_t data)
|
||||||
|
{
|
||||||
|
if (data & 0x40) // Hit
|
||||||
|
m_samples->start(0, 0);
|
||||||
|
|
||||||
|
if (data & 0x20) // Roll
|
||||||
|
m_samples->start(1, 1);
|
||||||
|
|
||||||
|
if (data & 0x10) // Ball Drop
|
||||||
|
m_samples->start(2, 2);
|
||||||
|
|
||||||
|
m_discrete->write(ROBOTBWL_MUSIC_BIT, data & 0x08); // Footsteps
|
||||||
|
|
||||||
|
//if (data & 0x04) // Invert
|
||||||
|
|
||||||
|
if (data & 0x02) // Demerit
|
||||||
|
m_samples->start(3, 3);
|
||||||
|
|
||||||
|
if (data & 0x01) // Reward
|
||||||
|
m_samples->start(4, 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
Crash
|
||||||
|
*******************************************************************************/
|
||||||
|
|
||||||
|
const char *const crash_sample_names[] =
|
||||||
|
{
|
||||||
|
"*crash",
|
||||||
|
"crash",
|
||||||
|
nullptr
|
||||||
|
};
|
||||||
|
|
||||||
static const discrete_mixer_desc crash_mixer =
|
static const discrete_mixer_desc crash_mixer =
|
||||||
{
|
{
|
||||||
DISC_MIXER_IS_RESISTOR,
|
DISC_MIXER_IS_RESISTOR,
|
||||||
@ -91,13 +178,13 @@ static const discrete_555_desc crash_beeper_555a =
|
|||||||
DEFAULT_555_VALUES
|
DEFAULT_555_VALUES
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Nodes - Inputs */
|
// Nodes - Inputs
|
||||||
#define CRASH_MUSIC_BIT NODE_01
|
#define CRASH_MUSIC_BIT NODE_01
|
||||||
#define CRASH_BEEPER_EN NODE_02
|
#define CRASH_BEEPER_EN NODE_02
|
||||||
/* Nodes - Adjusters */
|
// Nodes - Adjusters
|
||||||
#define CRASH_R63 NODE_10
|
#define CRASH_R63 NODE_10
|
||||||
#define CRASH_R39 NODE_11
|
#define CRASH_R39 NODE_11
|
||||||
/* Nodes - Sounds */
|
// Nodes - Sounds
|
||||||
#define CRASH_MUSIC_SND NODE_20
|
#define CRASH_MUSIC_SND NODE_20
|
||||||
#define CRASH_BEEPER_SND NODE_21
|
#define CRASH_BEEPER_SND NODE_21
|
||||||
|
|
||||||
@ -131,133 +218,92 @@ DISCRETE_SOUND_START(crash_discrete)
|
|||||||
DISCRETE_OUTPUT(NODE_90, 1)
|
DISCRETE_OUTPUT(NODE_90, 1)
|
||||||
DISCRETE_SOUND_END
|
DISCRETE_SOUND_END
|
||||||
|
|
||||||
/* Nodes - Inputs */
|
|
||||||
#define ROBOTBWL_MUSIC_BIT NODE_01
|
|
||||||
/* Nodes - Sounds */
|
|
||||||
#define ROBOTBWL_MUSIC_SND NODE_10
|
|
||||||
|
|
||||||
DISCRETE_SOUND_START(robotbwl_discrete)
|
void crash_state::sound_w(uint8_t data)
|
||||||
/************************************************/
|
|
||||||
/* Input register mapping for robotbwl */
|
|
||||||
/************************************************/
|
|
||||||
DISCRETE_INPUTX_LOGIC(ROBOTBWL_MUSIC_BIT, 30000, 0, 0)
|
|
||||||
|
|
||||||
/************************************************/
|
|
||||||
/* Music is just a 1 bit DAC */
|
|
||||||
/************************************************/
|
|
||||||
DISCRETE_RCFILTER(NODE_20, ROBOTBWL_MUSIC_BIT, RES_K(10), CAP_U(.47))
|
|
||||||
DISCRETE_CRFILTER(ROBOTBWL_MUSIC_SND, NODE_20, RES_K(10) + RES_K(22), CAP_U(.1))
|
|
||||||
|
|
||||||
DISCRETE_OUTPUT(ROBOTBWL_MUSIC_SND, 1)
|
|
||||||
DISCRETE_SOUND_END
|
|
||||||
|
|
||||||
|
|
||||||
/* This register controls the clown image currently displayed */
|
|
||||||
/* and also is used to enable the amplifier and trigger the */
|
|
||||||
/* discrete circuitry that produces sound effects and music */
|
|
||||||
|
|
||||||
void circus_state::clown_z_w(uint8_t data)
|
|
||||||
{
|
{
|
||||||
m_clown_z = (data & 0x0f);
|
// Bits 4-6 enable/disable trigger different events
|
||||||
*(memregion("maincpu")->base() + 0x8000) = data; logerror("Z:%02x\n",data); //DEBUG
|
|
||||||
|
|
||||||
/* Bits 4-6 enable/disable trigger different events */
|
|
||||||
switch (m_game_id)
|
|
||||||
{
|
|
||||||
case 1: /* circus */
|
|
||||||
case 4: /* ripcord */
|
|
||||||
switch ((data & 0x70) >> 4)
|
switch ((data & 0x70) >> 4)
|
||||||
{
|
{
|
||||||
case 0 : /* All Off */
|
case 0: // All Off
|
||||||
m_discrete->write(CIRCUS_MUSIC_BIT, 0);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 1 : /* Music */
|
|
||||||
m_discrete->write(CIRCUS_MUSIC_BIT, 1);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 2 : /* Circus = Pop; Rip Cord = Splash */
|
|
||||||
m_samples->start(0, 0);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 3 : /* Normal Video */
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 4 : /* Circus = Miss; Rip Cord = Scream */
|
|
||||||
m_samples->start(1, 1);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 5 : /* Invert Video */
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 6 : /* Circus = Bounce; Rip Cord = Chute Open */
|
|
||||||
m_samples->start(2, 2);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 7 : /* Circus = not used; Rip Cord = Whistle */
|
|
||||||
if (m_game_id == 4)
|
|
||||||
m_samples->start(3, 3);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 2: /* robotbwl */
|
|
||||||
m_discrete->write(ROBOTBWL_MUSIC_BIT, data & 0x08); /* Footsteps */
|
|
||||||
|
|
||||||
if (data & 0x40) /* Hit */
|
|
||||||
m_samples->start(0, 0);
|
|
||||||
|
|
||||||
if (data & 0x20) /* Roll */
|
|
||||||
m_samples->start(1, 1);
|
|
||||||
|
|
||||||
if (data & 0x10) /* Ball Drop */
|
|
||||||
m_samples->start(2, 2);
|
|
||||||
|
|
||||||
if (data & 0x02) /* Demerit */
|
|
||||||
m_samples->start(3, 3);
|
|
||||||
|
|
||||||
if (data & 0x01) /* Reward */
|
|
||||||
m_samples->start(4, 4);
|
|
||||||
|
|
||||||
// if (data & 0x04) /* Invert */
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 3: /* crash */
|
|
||||||
/* Only the crash can be done with a sample */
|
|
||||||
switch ((data & 0x70) >> 4)
|
|
||||||
{
|
|
||||||
case 0 : /* All Off */
|
|
||||||
m_discrete->write(CRASH_MUSIC_BIT, 0);
|
m_discrete->write(CRASH_MUSIC_BIT, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1 : /* Music */
|
case 1: // Music
|
||||||
m_discrete->write(CRASH_MUSIC_BIT, 1);
|
m_discrete->write(CRASH_MUSIC_BIT, 1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2 : /* Crash */
|
case 2: // Crash
|
||||||
m_samples->start(0, 0);
|
m_samples->start(0, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3 : /* Normal Video and Beep */
|
case 3: // Normal Video and Beep
|
||||||
m_discrete->write(CRASH_BEEPER_EN, 0);
|
m_discrete->write(CRASH_BEEPER_EN, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4 : /* Skid */
|
case 4: // Skid
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 5 : /* Invert Video and Beep */
|
case 5: // Invert Video and Beep
|
||||||
m_discrete->write(CRASH_BEEPER_EN, 0);
|
m_discrete->write(CRASH_BEEPER_EN, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 6 : /* Hi Motor */
|
case 6: // Hi Motor
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 7 : /* Low Motor */
|
case 7: // Low Motor
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
Rip Cord
|
||||||
|
*******************************************************************************/
|
||||||
|
|
||||||
|
const char *const ripcord_sample_names[] =
|
||||||
|
{
|
||||||
|
"*ripcord",
|
||||||
|
"splash",
|
||||||
|
"scream",
|
||||||
|
"chute",
|
||||||
|
"whistle",
|
||||||
|
nullptr
|
||||||
|
};
|
||||||
|
|
||||||
|
void ripcord_state::sound_w(uint8_t data)
|
||||||
|
{
|
||||||
|
// Bits 4-6 enable/disable trigger different events
|
||||||
|
switch ((data & 0x70) >> 4)
|
||||||
|
{
|
||||||
|
case 0: // All Off
|
||||||
|
m_discrete->write(CIRCUS_MUSIC_BIT, 0);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1: // Music
|
||||||
|
m_discrete->write(CIRCUS_MUSIC_BIT, 1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2: // Splash
|
||||||
|
m_samples->start(0, 0);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3: // Normal Video
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 4: // Scream
|
||||||
|
m_samples->start(1, 1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 5: // Invert Video
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 6: // Chute Open
|
||||||
|
m_samples->start(2, 2);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 7: // Whistle
|
||||||
|
m_samples->start(3, 3);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Bit 7 enables amplifier (0 = on) */
|
|
||||||
machine().sound().system_mute(data & 0x80);
|
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
#include "circus.h"
|
#include "circus.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
Shared
|
Shared
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
Loading…
Reference in New Issue
Block a user