mirror of
https://github.com/Oibaf66/fbzx-wii.git
synced 2024-12-01 04:24:16 +01:00
Filtered out tone frequencies outside dsp range in AY-3-8912
This commit is contained in:
parent
5d45fc349f
commit
155562e0f5
36
src/spk_ay.c
36
src/spk_ay.c
@ -185,28 +185,38 @@ inline void play_ay (unsigned int tstados) {
|
|||||||
tone_period_c= ((unsigned int) ordenador.ay_registers[4]) + 256 * ((unsigned int) ((ordenador.ay_registers[5]) & 0x0F));
|
tone_period_c= ((unsigned int) ordenador.ay_registers[4]) + 256 * ((unsigned int) ((ordenador.ay_registers[5]) & 0x0F));
|
||||||
noise_period= ((unsigned int) ordenador.ay_registers[6]) & 0x1F;
|
noise_period= ((unsigned int) ordenador.ay_registers[6]) & 0x1F;
|
||||||
|
|
||||||
|
|
||||||
if (!tone_period_a) tone_period_a = 1;
|
|
||||||
if (!tone_period_b) tone_period_b = 1;
|
|
||||||
if (!tone_period_c) tone_period_c = 1;
|
|
||||||
if (!noise_period) noise_period = 1;
|
if (!noise_period) noise_period = 1;
|
||||||
|
|
||||||
if (ordenador.aych_a<tone_period_a)
|
if (tone_period_a*ordenador.freq<110841) //Freq_camp > cpufreq/(2*16*tone_period)
|
||||||
ordenador.aych_a++;
|
ordenador.aych_a =1;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ordenador.ayval_a = !ordenador.ayval_a;
|
if (ordenador.aych_a<tone_period_a)
|
||||||
ordenador.aych_a =0;
|
ordenador.aych_a++;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ordenador.ayval_a = !ordenador.ayval_a;
|
||||||
|
ordenador.aych_a =0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ordenador.aych_b<tone_period_b)
|
if (tone_period_b*ordenador.freq<110841) //Freq_camp > cpufreq/(2*16*tone_period)
|
||||||
ordenador.aych_b++;
|
ordenador.aych_b =1;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ordenador.ayval_b = !ordenador.ayval_b;
|
if (ordenador.aych_b<tone_period_b)
|
||||||
ordenador.aych_b =0;
|
ordenador.aych_b++;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ordenador.ayval_b = !ordenador.ayval_b;
|
||||||
|
ordenador.aych_b =0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (tone_period_c*ordenador.freq<110841) //Freq_camp > cpufreq/(2*16*tone_period)
|
||||||
|
ordenador.aych_c =1;
|
||||||
|
else
|
||||||
|
{
|
||||||
if (ordenador.aych_c<tone_period_c)
|
if (ordenador.aych_c<tone_period_c)
|
||||||
ordenador.aych_c++;
|
ordenador.aych_c++;
|
||||||
else
|
else
|
||||||
@ -214,7 +224,7 @@ inline void play_ay (unsigned int tstados) {
|
|||||||
ordenador.ayval_c = !ordenador.ayval_c;
|
ordenador.ayval_c = !ordenador.ayval_c;
|
||||||
ordenador.aych_c =0;
|
ordenador.aych_c =0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (ordenador.aych_n<noise_period)
|
if (ordenador.aych_n<noise_period)
|
||||||
ordenador.aych_n++;
|
ordenador.aych_n++;
|
||||||
|
Loading…
Reference in New Issue
Block a user