shithub: riscv

Download patch

ref: 844612fcb8257c8d8f20ef4da62edb65b2c08b76
parent: dbb320ca909a6044976cd055fee3edf26ce797a5
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);
 }