#include "svga.h"
#include "sound.h"
-uint32 soundtsinc;
-uint32 soundtsi;
-
-uint32 Wave[2048];
-int16 WaveFinalMono[2048];
+uint32 Wave[2048+512];
+int16 WaveFinalMono[2048+512];
-EXPSOUND GameExpSound={0,0,0};
+EXPSOUND GameExpSound={0,0,0,0,0,0};
uint8 trimode=0;
uint8 tricoop=0;
#undef printf
uint16 nreg;
-int32 lengthcount[4];
+static int32 lengthcount[4];
extern int soundvol;
};
static uint32 NoiseFreqTable[0x10];
-static int32 nesincsize32;
-int64 nesincsize;
+int32 nesincsize;
+uint32 soundtsinc;
+uint32 soundtsi;
+
static const uint8 NTSCPCMTable[0x10]=
{
for(V=start;V<end;V++)
{
- PCMacc-=nesincsize32;
+ PCMacc-=nesincsize;
if(PCMacc<=0)
{
if(!PCMBitIndex)
for(V=start;V<end;V++)
{
Wave[V>>4]+=out;
- sqacc[0]-=nesincsize32;
+ sqacc[0]-=nesincsize;
if(sqacc[0]<=0)
{
rea:
for(V=start;V<end;V++)
{
Wave[V>>4]+=out;
- sqacc[1]-=nesincsize32;
+ sqacc[1]-=nesincsize;
if(sqacc[1]<=0)
{
rea:
freq<<=17;
for(V=start;V<end;V++)
{
- triacc-=nesincsize32;
+ triacc-=nesincsize;
if(triacc<=0)
{
rea:
static void FilterSound(uint32 *in, int16 *outMono, int count)
{
// static int min=0, max=0;
+ int sh=2;
+ if (soundvol < 5) sh += 5 - soundvol;
for(;count;count--,in++,outMono++)
{
flt_acc2+= (int32) (((int64)((diff-flt_acc2)*lowp))>>16);
*in=0;
- *outMono = flt_acc2*7 >> 2; // * 1.75
+ *outMono = flt_acc2*7 >> sh; // * 7 >> 2 = * 1.75
// if (acc2 < min) { printf("min: %i %04x\n", acc2, acc2); min = acc2; }
// if (acc2 > max) { printf("max: %i %04x\n", acc2, acc2); max = acc2; }
}
GameExpSound.RChange();
// nesincsizeLL=(int64)((int64)562949953421312*(double)(PAL?PAL_CPU:NTSC_CPU)/(FSettings.SndRate OVERSAMPLE));
- nesincsize=(int64)(((int64)1<<17)*(double)(PAL?PAL_CPU:NTSC_CPU)/(FSettings.SndRate * 16)); // 308845 - 1832727
- nesincsize32=(int32)nesincsize;
+ nesincsize=(int32)(((int64)1<<17)*(double)(PAL?PAL_CPU:NTSC_CPU)/(FSettings.SndRate * 16)); // 308845 - 1832727
PSG_base=(uint32)(PAL?(long double)PAL_CPU/16:(long double)NTSC_CPU/16);
for(x=0;x<0x10;x++)