X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=plugins%2Fdfsound%2Fregisters.c;h=669c70f736004cc781b81760a4e436010669121b;hp=983af8c91627829eefc29606b44385ca3bd90167;hb=a80ae4a0353fce94df700ec84222d3c56c3d813a;hpb=77d6fd631e4c4efc26333ae43888855b9961493e diff --git a/plugins/dfsound/registers.c b/plugins/dfsound/registers.c index 983af8c9..669c70f7 100644 --- a/plugins/dfsound/registers.c +++ b/plugins/dfsound/registers.c @@ -21,7 +21,6 @@ #include "externals.h" #include "registers.h" -#include "regs.h" /* // adsr time values (in ms) by James Higgs ... see the end of @@ -41,6 +40,15 @@ #define SUSTAIN_MS 441L #define RELEASE_MS 437L +static void SoundOn(int start,int end,unsigned short val); +static void SoundOff(int start,int end,unsigned short val); +static void FModOn(int start,int end,unsigned short val); +static void NoiseOn(int start,int end,unsigned short val); +static void SetVolumeL(unsigned char ch,short vol); +static void SetVolumeR(unsigned char ch,short vol); +static void SetPitch(int ch,unsigned short val); +static void ReverbOn(int start,int end,unsigned short val); + //////////////////////////////////////////////////////////////////////// // WRITE REGISTERS: called by main emu //////////////////////////////////////////////////////////////////////// @@ -69,8 +77,7 @@ void CALLBACK SPUwriteRegister(unsigned long reg, unsigned short val) break; //------------------------------------------------// start case 6: - // Brain Dead 13 - align to 16 boundary - s_chan[ch].pStart= spuMemC+(unsigned long)((val<<3)&~0xf); + // taken from regArea later break; //------------------------------------------------// level with pre-calcs case 8: @@ -165,11 +172,11 @@ void CALLBACK SPUwriteRegister(unsigned long reg, unsigned short val) break; //------------------------------------------------// case 14: // loop? - //WaitForSingleObject(s_chan[ch].hMutex,2000); // -> no multithread fuckups - s_chan[ch].pLoop=spuMemC+((unsigned long)((val<<3)&~0xf)); - //s_chan[ch].bIgnoreLoop=1; - //ReleaseMutex(s_chan[ch].hMutex); // -> oki, on with the thread - dwChannelDead&=~(1<>=1) // loop channels @@ -460,7 +466,7 @@ void SoundOff(int start,int end,unsigned short val) // SOUND OFF PSX COMMAND // FMOD register write //////////////////////////////////////////////////////////////////////// -void FModOn(int start,int end,unsigned short val) // FMOD ON PSX COMMAND +static void FModOn(int start,int end,unsigned short val) { int ch; @@ -487,7 +493,7 @@ void FModOn(int start,int end,unsigned short val) // FMOD ON PSX COMMAND // NOISE register write //////////////////////////////////////////////////////////////////////// -void NoiseOn(int start,int end,unsigned short val) // NOISE ON PSX COMMAND +static void NoiseOn(int start,int end,unsigned short val) { int ch; @@ -504,7 +510,7 @@ void NoiseOn(int start,int end,unsigned short val) // NOISE ON PSX COMMAND // please note: sweep and phase invert are wrong... but I've never seen // them used -void SetVolumeL(unsigned char ch,short vol) // LEFT VOLUME +static void SetVolumeL(unsigned char ch,short vol) // LEFT VOLUME { if(vol&0x8000) // sweep? { @@ -530,7 +536,7 @@ void SetVolumeL(unsigned char ch,short vol) // LEFT VOLUME // RIGHT VOLUME register write //////////////////////////////////////////////////////////////////////// -void SetVolumeR(unsigned char ch,short vol) // RIGHT VOLUME +static void SetVolumeR(unsigned char ch,short vol) // RIGHT VOLUME { if(vol&0x8000) // comments... see above :) { @@ -556,24 +562,22 @@ void SetVolumeR(unsigned char ch,short vol) // RIGHT VOLUME // PITCH register write //////////////////////////////////////////////////////////////////////// -void SetPitch(int ch,unsigned short val) // SET PITCH +static void SetPitch(int ch,unsigned short val) // SET PITCH { int NP; if(val>0x3fff) NP=0x3fff; // get pitch val else NP=val; s_chan[ch].iRawPitch=NP; - - NP=(44100L*NP)/4096L; // calc frequency - if(NP<1) NP=1; // some security - s_chan[ch].iActFreq=NP; // store frequency + s_chan[ch].sinc=(NP<<4)|8; + if(iUseInterpolation==1) s_chan[ch].SB[32]=1; // -> freq change in simple interpolation mode: set flag } //////////////////////////////////////////////////////////////////////// // REVERB register write //////////////////////////////////////////////////////////////////////// -void ReverbOn(int start,int end,unsigned short val) // REVERB ON PSX COMMAND +static void ReverbOn(int start,int end,unsigned short val) { int ch;