summaryrefslogtreecommitdiff
path: root/plugins/dfsound/spu.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/dfsound/spu.c')
-rw-r--r--plugins/dfsound/spu.c42
1 files changed, 20 insertions, 22 deletions
diff --git a/plugins/dfsound/spu.c b/plugins/dfsound/spu.c
index 3670d458..efc32b1a 100644
--- a/plugins/dfsound/spu.c
+++ b/plugins/dfsound/spu.c
@@ -814,18 +814,6 @@ void CALLBACK SPUplayCDDAchannel(short *pcm, int nbytes)
FeedCDDA((unsigned char *)pcm, nbytes);
}
-// INIT/EXIT STUFF
-
-// SPUINIT: this func will be called first by the main emu
-long CALLBACK SPUinit(void)
-{
- spuMemC=(unsigned char *)spuMem; // just small setup
- memset((void *)s_chan,0,MAXCHAN*sizeof(SPUCHAN));
- memset((void *)&rvb,0,sizeof(REVERBInfo));
- InitADSR();
- return 0;
-}
-
// SETUPTIMER: init of certain buffers and threads/timers
void SetupTimer(void)
{
@@ -916,10 +904,14 @@ void RemoveStreams(void)
CDDAStart = NULL;
}
-// SPUOPEN: called by main emu after init
-long SPUopen(void)
+// INIT/EXIT STUFF
+
+// SPUINIT: this func will be called first by the main emu
+long CALLBACK SPUinit(void)
{
- if (bSPUIsOpen) return 0; // security for some stupid main emus
+ spuMemC = (unsigned char *)spuMem; // just small setup
+ memset((void *)&rvb, 0, sizeof(REVERBInfo));
+ InitADSR();
iVolume = 3;
iReverbOff = -1;
@@ -934,11 +926,17 @@ long SPUopen(void)
iSPUIRQWait = 1;
ReadConfig(); // read user stuff
+ SetupStreams(); // prepare streaming
- SetupSound(); // setup sound (before init!)
+ return 0;
+}
- SetupStreams(); // prepare streaming
+// SPUOPEN: called by main emu after init
+long CALLBACK SPUopen(void)
+{
+ if (bSPUIsOpen) return 0; // security for some stupid main emus
+ SetupSound(); // setup sound (before init!)
SetupTimer(); // timer for feeding data
bSPUIsOpen = 1;
@@ -949,22 +947,22 @@ long SPUopen(void)
// SPUCLOSE: called before shutdown
long CALLBACK SPUclose(void)
{
- if (!bSPUIsOpen) return 0; // some security
+ if (!bSPUIsOpen) return 0; // some security
- bSPUIsOpen = 0; // no more open
+ bSPUIsOpen = 0; // no more open
RemoveTimer(); // no more feeding
-
RemoveSound(); // no more sound handling
- RemoveStreams(); // no more streaming
-
return 0;
}
// SPUSHUTDOWN: called by main emu on final exit
long CALLBACK SPUshutdown(void)
{
+ SPUclose();
+ RemoveStreams(); // no more streaming
+
return 0;
}