Tidy up Galaxian sound a bit (add filter support to Scorpion and SF-X)

This commit is contained in:
Barry Harris 2013-05-09 13:21:34 +00:00
parent 8e432707c4
commit 4d27f99fc6
2 changed files with 57 additions and 16 deletions

View File

@ -13586,7 +13586,7 @@ static INT32 FroggermcInit()
INT32 nRet;
GalPostLoadCallbackFunction = FroggermcPostLoad;
// GalSoundType = GAL_SOUND_HARDWARE_TYPE_FROGGERAY8910;
GalSoundType = GAL_SOUND_HARDWARE_TYPE_FROGGERAY8910;
nRet = GalInit();
FroggerSoundInit();

View File

@ -222,16 +222,34 @@ void GalSoundInit()
AY8910Init(0, 14318000 / 8, nBurnSoundRate, NULL, NULL, NULL, NULL);
AY8910Init(1, 14318000 / 8, nBurnSoundRate, &KonamiSoundLatchRead, &KonamiSoundTimerRead, NULL, NULL);
AY8910Init(2, 14318000 / 8, nBurnSoundRate, NULL, NULL, NULL, NULL);
AY8910SetAllRoutes(0, 0.25, BURN_SND_ROUTE_BOTH);
AY8910SetAllRoutes(1, 0.25, BURN_SND_ROUTE_BOTH);
AY8910SetAllRoutes(2, 0.25, BURN_SND_ROUTE_BOTH);
filter_rc_init(0, FLT_RC_LOWPASS, 1, 1, 1, 0, 0);
filter_rc_init(1, FLT_RC_LOWPASS, 1, 1, 1, 0, 1);
filter_rc_init(2, FLT_RC_LOWPASS, 1, 1, 1, 0, 1);
filter_rc_init(3, FLT_RC_LOWPASS, 1, 1, 1, 0, 1);
filter_rc_init(4, FLT_RC_LOWPASS, 1, 1, 1, 0, 1);
filter_rc_init(5, FLT_RC_LOWPASS, 1, 1, 1, 0, 1);
filter_rc_set_src_gain(0, 0.50);
filter_rc_set_src_gain(1, 0.50);
filter_rc_set_src_gain(2, 0.50);
filter_rc_set_src_gain(3, 0.50);
filter_rc_set_src_gain(4, 0.50);
filter_rc_set_src_gain(5, 0.50);
filter_rc_set_route(0, 1.00, BURN_SND_ROUTE_BOTH);
filter_rc_set_route(1, 1.00, BURN_SND_ROUTE_BOTH);
filter_rc_set_route(2, 1.00, BURN_SND_ROUTE_BOTH);
filter_rc_set_route(3, 1.00, BURN_SND_ROUTE_BOTH);
filter_rc_set_route(4, 1.00, BURN_SND_ROUTE_BOTH);
filter_rc_set_route(5, 1.00, BURN_SND_ROUTE_BOTH);
}
if (GalSoundType == GAL_SOUND_HARDWARE_TYPE_AD2083AY8910) {
AY8910Init(0, 14318000 / 8, nBurnSoundRate, &KonamiSoundTimerRead, NULL, NULL, NULL);
AY8910Init(1, 14318000 / 8, nBurnSoundRate, &KonamiSoundLatchRead, NULL, NULL, NULL);
AY8910SetAllRoutes(0, 0.50, BURN_SND_ROUTE_BOTH);
AY8910SetAllRoutes(1, 0.50, BURN_SND_ROUTE_BOTH);
AY8910SetAllRoutes(0, 1.00, BURN_SND_ROUTE_BOTH);
AY8910SetAllRoutes(1, 1.00, BURN_SND_ROUTE_BOTH);
}
if (GalSoundType == GAL_SOUND_HARDWARE_TYPE_FANTASTCAY8910) {
@ -246,6 +264,27 @@ void GalSoundInit()
AY8910Init(1, 14318000 / 8, nBurnSoundRate, &KonamiSoundLatchRead, &KonamiSoundTimerRead, NULL, NULL);
AY8910SetAllRoutes(0, 0.10, BURN_SND_ROUTE_BOTH);
AY8910SetAllRoutes(1, 0.10, BURN_SND_ROUTE_BOTH);
filter_rc_init(0, FLT_RC_LOWPASS, 1, 1, 1, 0, 0);
filter_rc_init(1, FLT_RC_LOWPASS, 1, 1, 1, 0, 1);
filter_rc_init(2, FLT_RC_LOWPASS, 1, 1, 1, 0, 1);
filter_rc_init(3, FLT_RC_LOWPASS, 1, 1, 1, 0, 1);
filter_rc_init(4, FLT_RC_LOWPASS, 1, 1, 1, 0, 1);
filter_rc_init(5, FLT_RC_LOWPASS, 1, 1, 1, 0, 1);
filter_rc_set_src_gain(0, 0.50);
filter_rc_set_src_gain(1, 0.50);
filter_rc_set_src_gain(2, 0.50);
filter_rc_set_src_gain(3, 0.50);
filter_rc_set_src_gain(4, 0.50);
filter_rc_set_src_gain(5, 0.50);
filter_rc_set_route(0, 0.10, BURN_SND_ROUTE_BOTH);
filter_rc_set_route(1, 0.10, BURN_SND_ROUTE_BOTH);
filter_rc_set_route(2, 0.10, BURN_SND_ROUTE_BOTH);
filter_rc_set_route(3, 0.10, BURN_SND_ROUTE_BOTH);
filter_rc_set_route(4, 0.10, BURN_SND_ROUTE_BOTH);
filter_rc_set_route(5, 0.10, BURN_SND_ROUTE_BOTH);
DACInit(0, 0, 1, SfxSyncDAC);
DACSetRoute(0, 1.00, BURN_SND_ROUTE_BOTH);
@ -419,7 +458,7 @@ void GalSoundExit()
SN76496Exit();
}
if (GalSoundType == GAL_SOUND_HARDWARE_TYPE_KONAMIAY8910 || GalSoundType == GAL_SOUND_HARDWARE_TYPE_FROGGERAY8910) {
if (GalSoundType == GAL_SOUND_HARDWARE_TYPE_KONAMIAY8910 || GalSoundType == GAL_SOUND_HARDWARE_TYPE_FROGGERAY8910 || GalSoundType == GAL_SOUND_HARDWARE_TYPE_SCORPIONAY8910 || GalSoundType == GAL_SOUND_HARDWARE_TYPE_SFXAY8910DAC) {
filter_rc_exit();
}
@ -728,15 +767,17 @@ UINT8 __fastcall KonamiSoundZ80Read(UINT16 a)
void __fastcall KonamiSoundZ80Write(UINT16 a, UINT8 d)
{
if (a >= 0x9000 && a <= 0x9fff) {
INT32 Offset = a & 0xfff;
filter_w(0, (Offset >> 0) & 3);
filter_w(1, (Offset >> 2) & 3);
filter_w(2, (Offset >> 4) & 3);
filter_w(3, (Offset >> 6) & 3);
filter_w(4, (Offset >> 8) & 3);
filter_w(5, (Offset >> 10) & 3);
return;
if (GalSoundType == GAL_SOUND_HARDWARE_TYPE_KONAMIAY8910 || GalSoundType == GAL_SOUND_HARDWARE_TYPE_FROGGERAY8910 || GalSoundType == GAL_SOUND_HARDWARE_TYPE_SCORPIONAY8910 || GalSoundType == GAL_SOUND_HARDWARE_TYPE_SFXAY8910DAC) {
if (a >= 0x9000 && a <= 0x9fff) {
INT32 Offset = a & 0xfff;
filter_w(0, (Offset >> 0) & 3);
filter_w(1, (Offset >> 2) & 3);
filter_w(2, (Offset >> 4) & 3);
filter_w(3, (Offset >> 6) & 3);
filter_w(4, (Offset >> 8) & 3);
filter_w(5, (Offset >> 10) & 3);
return;
}
}
switch (a) {