mirror of
https://github.com/holub/mame
synced 2025-04-19 15:11:37 +03:00
gts1: improved the sound
This commit is contained in:
parent
f28212d524
commit
362201a23b
@ -161,7 +161,6 @@ private:
|
||||
u16 m_6351_addr = 0U; //!< ROM MM6351 address (12 bits)
|
||||
u8 m_z30_out = 0U; //!< 4-to-16 decoder outputs
|
||||
u8 m_lamp_data = 0U;
|
||||
u8 m_snd_save = 0U;
|
||||
};
|
||||
|
||||
void gts1_state::gts1_map(address_map &map)
|
||||
@ -402,7 +401,6 @@ void gts1_state::machine_start()
|
||||
save_item(NAME(m_6351_addr));
|
||||
save_item(NAME(m_z30_out));
|
||||
save_item(NAME(m_lamp_data));
|
||||
save_item(NAME(m_snd_save));
|
||||
}
|
||||
|
||||
void gts1_state::machine_reset()
|
||||
@ -415,7 +413,6 @@ void gts1_state::machine_reset()
|
||||
m_6351_addr = 0x3ff;
|
||||
m_z30_out = 0U;
|
||||
m_lamp_data = 0U;
|
||||
m_snd_save = 0U;
|
||||
}
|
||||
|
||||
u8 gts1_state::gts1_solenoid_r(offs_t offset) // does nothing
|
||||
@ -425,7 +422,7 @@ u8 gts1_state::gts1_solenoid_r(offs_t offset) // does nothing
|
||||
return data;
|
||||
}
|
||||
|
||||
void gts1_state::gts1_solenoid_w(offs_t offset, u8 data) // WORKS
|
||||
void gts1_state::gts1_solenoid_w(offs_t offset, u8 data)
|
||||
{
|
||||
//LOG("%s: solenoid #[%02X] gets data=%X\n", __FUNCTION__, offset, data);
|
||||
switch (offset)
|
||||
@ -439,36 +436,42 @@ void gts1_state::gts1_solenoid_w(offs_t offset, u8 data) // WORKS
|
||||
m_samples->start(0, 6);
|
||||
break;
|
||||
case 2: // tens chime
|
||||
m_snd_save = data ? (m_snd_save | 4) : (m_snd_save & 0xfb);
|
||||
if (m_p1_sound)
|
||||
{
|
||||
m_p1_sound->set_clock(593);
|
||||
m_p1_sound->set_state(data);
|
||||
}
|
||||
else
|
||||
if (!m_p2_sound && data)
|
||||
if (m_p2_sound)
|
||||
m_p2_sound->write(data ? 11 : 15);
|
||||
else
|
||||
if (data)
|
||||
m_samples->start(3, 3);
|
||||
break;
|
||||
case 3: // hundreds chime
|
||||
m_snd_save = data ? (m_snd_save | 2) : (m_snd_save & 0xfd);
|
||||
if (m_p1_sound)
|
||||
{
|
||||
m_p1_sound->set_clock(265);
|
||||
m_p1_sound->set_state(data);
|
||||
}
|
||||
else
|
||||
if (!m_p2_sound && data)
|
||||
if (m_p2_sound)
|
||||
m_p2_sound->write(data ? 13 : 15);
|
||||
else
|
||||
if (data)
|
||||
m_samples->start(2, 2);
|
||||
break;
|
||||
case 4: // thousands chime
|
||||
m_snd_save = data ? (m_snd_save | 1) : (m_snd_save & 0xfe);
|
||||
if (m_p1_sound)
|
||||
{
|
||||
m_p1_sound->set_clock(153);
|
||||
m_p1_sound->set_state(data);
|
||||
}
|
||||
else
|
||||
if (!m_p2_sound && data)
|
||||
if (m_p2_sound)
|
||||
m_p2_sound->write(data ? 14 : 15);
|
||||
else
|
||||
if (data)
|
||||
m_samples->start(1, 1);
|
||||
break;
|
||||
case 5: // optional per machine
|
||||
@ -492,8 +495,6 @@ void gts1_state::gts1_solenoid_w(offs_t offset, u8 data) // WORKS
|
||||
case 15: // spare
|
||||
break;
|
||||
}
|
||||
if (m_p2_sound)
|
||||
m_p2_sound->write(m_snd_save);
|
||||
|
||||
if (offset < 8)
|
||||
m_io_outputs[offset] = data;
|
||||
@ -685,6 +686,7 @@ u8 gts1_state::gts1_lamp_apm_r(offs_t offset) // Think this works - dips seem to
|
||||
*/
|
||||
void gts1_state::gts1_lamp_apm_w(offs_t offset, u8 data)
|
||||
{
|
||||
u8 sndcmd = 0;
|
||||
switch (offset) {
|
||||
case 0: // LD1-LD4 on jumper J5
|
||||
m_lamp_data = data & 15;
|
||||
@ -696,9 +698,11 @@ void gts1_state::gts1_lamp_apm_w(offs_t offset, u8 data)
|
||||
if (m_p2_sound)
|
||||
{
|
||||
// Sound card has inputs from tilt and game over relays
|
||||
m_snd_save = BIT(m_lamp_data, 0) ? (m_snd_save | 0x40) : (m_snd_save & 0xbf);
|
||||
m_snd_save = BIT(m_lamp_data, 1) ? (m_snd_save | 0x08) : (m_snd_save & 0xf7);
|
||||
m_p2_sound->write(m_snd_save);
|
||||
if (BIT(m_lamp_data, 0))
|
||||
sndcmd |= 0x40;
|
||||
if (BIT(m_lamp_data, 1))
|
||||
sndcmd |= 0x08;
|
||||
m_p2_sound->write(sndcmd);
|
||||
}
|
||||
}
|
||||
if ((m_z30_out >= 1) && (m_z30_out <= 9))
|
||||
@ -1065,11 +1069,11 @@ GAME(1977, cleoptra, gts1, p0, gts1, gts1_state, empty_init, ROT0, "Gott
|
||||
GAME(1978, sinbad, gts1, p0, gts1, gts1_state, empty_init, ROT0, "Gottlieb", "Sinbad", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
|
||||
GAME(1978, sinbadn, sinbad, p0, gts1, gts1_state, empty_init, ROT0, "Gottlieb", "Sinbad (Norway)", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
|
||||
GAME(1978, jokrpokr, gts1, p0, jokrpokr, gts1_state, empty_init, ROT0, "Gottlieb", "Joker Poker", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
|
||||
GAME(1978, dragon, gts1, p0, gts1, gts1_state, empty_init, ROT0, "Gottlieb", "Dragon", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
|
||||
GAME(1979, solaride, gts1, p0, gts1, gts1_state, empty_init, ROT0, "Gottlieb", "Solar Ride", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
|
||||
GAME(1979, countdwn, gts1, p0, gts1, gts1_state, empty_init, ROT0, "Gottlieb", "Count-Down", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
|
||||
|
||||
// NE555 beeper
|
||||
GAME(1978, dragon, gts1, p1, gts1, gts1_state, empty_init, ROT0, "Gottlieb", "Dragon", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
|
||||
GAME(1979, solaride, gts1, p1, gts1, gts1_state, empty_init, ROT0, "Gottlieb", "Solar Ride", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
|
||||
GAME(1979, countdwn, gts1, p1, gts1, gts1_state, empty_init, ROT0, "Gottlieb", "Count-Down", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
|
||||
GAME(1978, closeenc, gts1, p1, gts1, gts1_state, empty_init, ROT0, "Gottlieb", "Close Encounters of the Third Kind", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
|
||||
GAME(1978, charlies, gts1, p1, gts1, gts1_state, empty_init, ROT0, "Gottlieb", "Charlie's Angels", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
|
||||
GAME(1979, pinpool, gts1, p1, gts1, gts1_state, empty_init, ROT0, "Gottlieb", "Pinball Pool", MACHINE_IS_SKELETON_MECHANICAL | MACHINE_SUPPORTS_SAVE )
|
||||
|
Loading…
Reference in New Issue
Block a user