games/snes: implement DSP noise

I'm not sure if this LFSR is the same one used by the hardware or is
arbitrary, but it matches the noise sequence used by all other snes
emulators I looked at.
This commit is contained in:
Michael Forney 2021-02-17 11:19:50 +01:00
parent 52b54097bf
commit f1d29a9d12

View file

@ -6,7 +6,7 @@
#include "fns.h"
u8int dsp[256], dspstate;
u16int dspcounter, noise;
u16int dspcounter, noise = 0x8000;
static s16int samp[2], echoin[2];
enum {
@ -517,6 +517,8 @@ dspstep(void)
}
if(dspcounter-- == 0)
dspcounter = 0x77ff;
if(envyes(dsp[FLG] & 0x1f))
noise = (noise << 13 ^ noise << 14) & 0x8000 | noise >> 1 & ~1;
break;
case 31: voice(0, 4); voice(2, 1); break;
}