From f1d29a9d12fa6d89015735ea010ac4b02f1b80b5 Mon Sep 17 00:00:00 2001 From: Michael Forney Date: Wed, 17 Feb 2021 11:19:50 +0100 Subject: 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. --- sys/src/games/snes/dsp.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sys/src/games/snes/dsp.c b/sys/src/games/snes/dsp.c index 13406d216..4b5c0cfd2 100644 --- a/sys/src/games/snes/dsp.c +++ b/sys/src/games/snes/dsp.c @@ -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; } -- cgit v1.2.3