Fix 3 band equalizer in Genesis (#2008)
If you tried setting your gains to 100 in the previous patch, it worked sort of, but I decided to incorporate ekeeke/Genesis-Plus-GX@f6f4556 as well to actually fix it completely, and rescale the setting properly so that 1.0 really is neutral gain. Fixes #1319
This commit is contained in:
parent
68dc12dab7
commit
00aebc110c
Binary file not shown.
|
@ -265,18 +265,18 @@ namespace BizHawk.Emulation.Cores.Consoles.Sega.gpgx
|
||||||
|
|
||||||
[DisplayName("Three band low gain")]
|
[DisplayName("Three band low gain")]
|
||||||
[Description("Only active when filter type is three band")]
|
[Description("Only active when filter type is three band")]
|
||||||
[DefaultValue((short)1)]
|
[DefaultValue(1f)]
|
||||||
public short LowGain { get; set; }
|
public float LowGain { get; set; }
|
||||||
|
|
||||||
[DisplayName("Three band mid gain")]
|
[DisplayName("Three band mid gain")]
|
||||||
[Description("Only active when filter type is three band")]
|
[Description("Only active when filter type is three band")]
|
||||||
[DefaultValue((short)1)]
|
[DefaultValue(1f)]
|
||||||
public short MidGain { get; set; }
|
public float MidGain { get; set; }
|
||||||
|
|
||||||
[DisplayName("Three band high gain")]
|
[DisplayName("Three band high gain")]
|
||||||
[Description("Only active when filter type is three band")]
|
[Description("Only active when filter type is three band")]
|
||||||
[DefaultValue((short)1)]
|
[DefaultValue(1f)]
|
||||||
public short HighGain { get; set; }
|
public float HighGain { get; set; }
|
||||||
|
|
||||||
[Description("Magic pink by default. Requires core reboot")]
|
[Description("Magic pink by default. Requires core reboot")]
|
||||||
[TypeConverter(typeof(UintToHexConverter))]
|
[TypeConverter(typeof(UintToHexConverter))]
|
||||||
|
@ -291,9 +291,9 @@ namespace BizHawk.Emulation.Cores.Consoles.Sega.gpgx
|
||||||
LowPassRange = LowPassRange,
|
LowPassRange = LowPassRange,
|
||||||
LowFreq = LowFreq,
|
LowFreq = LowFreq,
|
||||||
HighFreq = HighFreq,
|
HighFreq = HighFreq,
|
||||||
LowGain = LowGain,
|
LowGain = (short)(LowGain * 100),
|
||||||
MidGain = MidGain,
|
MidGain = (short)(MidGain * 100),
|
||||||
HighGain = HighGain,
|
HighGain = (short)(HighGain * 100),
|
||||||
BackdropColor = BackdropColor
|
BackdropColor = BackdropColor
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -546,9 +546,9 @@ GPGX_EX int gpgx_init(
|
||||||
config.lp_range = settings->LowPassRange; //0x9999; /* 0.6 in 16.16 fixed point */
|
config.lp_range = settings->LowPassRange; //0x9999; /* 0.6 in 16.16 fixed point */
|
||||||
config.low_freq = settings->LowFreq; //880;
|
config.low_freq = settings->LowFreq; //880;
|
||||||
config.high_freq = settings->HighFreq; //5000;
|
config.high_freq = settings->HighFreq; //5000;
|
||||||
config.lg = settings->LowGain; //1.0;
|
config.lg = settings->LowGain; //100;
|
||||||
config.mg = settings->MidGain; //1.0;
|
config.mg = settings->MidGain; //100;
|
||||||
config.hg = settings->HighGain; //1.0;
|
config.hg = settings->HighGain; //100;
|
||||||
config.dac_bits = 14; /* MAX DEPTH */
|
config.dac_bits = 14; /* MAX DEPTH */
|
||||||
config.ym2413= 2; /* AUTO */
|
config.ym2413= 2; /* AUTO */
|
||||||
config.mono = 0; /* STEREO output */
|
config.mono = 0; /* STEREO output */
|
||||||
|
|
|
@ -52,7 +52,7 @@ uint32 system_clock;
|
||||||
const int16 SVP_cycles = 800;
|
const int16 SVP_cycles = 800;
|
||||||
|
|
||||||
uint8 pause_b;
|
uint8 pause_b;
|
||||||
EQSTATE eq;
|
static EQSTATE eq[2];
|
||||||
int16 llp,rrp;
|
int16 llp,rrp;
|
||||||
|
|
||||||
/******************************************************************************************/
|
/******************************************************************************************/
|
||||||
|
@ -169,10 +169,11 @@ void audio_reset(void)
|
||||||
|
|
||||||
void audio_set_equalizer(void)
|
void audio_set_equalizer(void)
|
||||||
{
|
{
|
||||||
init_3band_state(&eq,config.low_freq,config.high_freq,snd.sample_rate);
|
init_3band_state(&eq[0],config.low_freq,config.high_freq,snd.sample_rate);
|
||||||
eq.lg = (double)(config.lg) / 100.0;
|
init_3band_state(&eq[1],config.low_freq,config.high_freq,snd.sample_rate);
|
||||||
eq.mg = (double)(config.mg) / 100.0;
|
eq[0].lg = eq[1].lg = (double)(config.lg) / 100.0;
|
||||||
eq.hg = (double)(config.hg) / 100.0;
|
eq[0].mg = eq[1].mg = (double)(config.mg) / 100.0;
|
||||||
|
eq[0].hg = eq[1].hg = (double)(config.hg) / 100.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void audio_shutdown(void)
|
void audio_shutdown(void)
|
||||||
|
@ -278,8 +279,8 @@ int audio_update(int16 *buffer)
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
/* 3 Band EQ */
|
/* 3 Band EQ */
|
||||||
l = do_3band(&eq,out[0]);
|
l = do_3band(&eq[0],out[0]);
|
||||||
r = do_3band(&eq,out[1]);
|
r = do_3band(&eq[1],out[1]);
|
||||||
|
|
||||||
/* clipping (16-bit samples) */
|
/* clipping (16-bit samples) */
|
||||||
if (l > 32767) l = 32767;
|
if (l > 32767) l = 32767;
|
||||||
|
|
Loading…
Reference in New Issue