ref: 30596adb31eb04cb31ae4e011c229f85a6ec4db8
parent: 08830c21757cb722fd70e6df4b0757cc86135a79
author: aiju <devnull@localhost>
date: Mon Nov 17 12:00:41 EST 2014
games/snes: save more audio state
--- a/sys/src/games/snes/dsp.c
+++ b/sys/src/games/snes/dsp.c
@@ -535,6 +535,50 @@
dsp[FLG] = 0xe0;
}
+void
+dspsave(void)
+{+ vctxt *p;
+
+ for(p = vctxts; p < vctxts + nelem(vctxts); p++){+ put16(p->hdrp);
+ put16(p->dp);
+ put16(p->sp);
+ put8(p->hdr);
+ put8(p->bp);
+ put16(p->brr);
+ put8(p->envst);
+ put16(p->env);
+ put16(p->envbent);
+ put8(p->init);
+ put16(p->interp);
+ put16(p->pitch);
+ put16(p->modin);
+ }
+}
+
+void
+dspload(void)
+{+ vctxt *p;
+
+ for(p = vctxts; p < vctxts + nelem(vctxts); p++){+ p->hdrp = get16();
+ p->dp = get16();
+ p->sp = get16();
+ p->hdr = get8();
+ p->bp = get8();
+ p->brr = get16();
+ p->envst = get8();
+ p->env = get16();
+ p->envbent = get16();
+ p->init = get8();
+ p->interp = get16();
+ p->pitch = get16();
+ p->modin = get16();
+ }
+}
+
u16int gauss[512] = {0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000,
--- a/sys/src/games/snes/fns.h
+++ b/sys/src/games/snes/fns.h
@@ -20,3 +20,11 @@
void flushram(void);
void loadstate(char *);
void savestate(char *);
+void dspsave(void);
+void dspload(void);
+int get8(void);
+int get16(void);
+int get32(void);
+void put8(u8int);
+void put16(u16int);
+void put32(u32int);
--- a/sys/src/games/snes/state.c
+++ b/sys/src/games/snes/state.c
@@ -128,6 +128,8 @@
dspstate = get8();
dspcounter = get16();
noise = get16();
+ Bread(bp, spctimer, sizeof(spctimer));
+ dspload();
Bterm(bp);
}
@@ -186,5 +188,7 @@
put8(dspstate);
put16(dspcounter);
put16(noise);
+ Bwrite(bp, spctimer, sizeof(spctimer));
+ dspsave();
Bterm(bp);
}
--
⑨