notaz.gp2x.de
/
pcsx_rearmed.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
spu: fix some skip accuracy issues
[pcsx_rearmed.git]
/
plugins
/
dfsound
/
externals.h
diff --git
a/plugins/dfsound/externals.h
b/plugins/dfsound/externals.h
index
d1d081a
..
4832fac
100644
(file)
--- a/
plugins/dfsound/externals.h
+++ b/
plugins/dfsound/externals.h
@@
-110,8
+110,6
@@
typedef struct
int iRightVolume; // right volume
\r
ADSRInfoEx ADSRX;
\r
int iRawPitch; // raw pitch (0...3fff)
\r
int iRightVolume; // right volume
\r
ADSRInfoEx ADSRX;
\r
int iRawPitch; // raw pitch (0...3fff)
\r
-
\r
- int SB[32+4];
\r
} SPUCHAN;
\r
\r
///////////////////////////////////////////////////////////
\r
} SPUCHAN;
\r
\r
///////////////////////////////////////////////////////////
\r
@@
-175,13
+173,18
@@
typedef struct
\r
// psx buffers / addresses
\r
\r
\r
// psx buffers / addresses
\r
\r
+#define SB_SIZE (32 + 4)
\r
+
\r
typedef struct
\r
{
\r
unsigned short spuCtrl;
\r
unsigned short spuStat;
\r
\r
unsigned int spuAddr;
\r
typedef struct
\r
{
\r
unsigned short spuCtrl;
\r
unsigned short spuStat;
\r
\r
unsigned int spuAddr;
\r
- unsigned char * spuMemC;
\r
+ union {
\r
+ unsigned char *spuMemC;
\r
+ unsigned short *spuMem;
\r
+ };
\r
unsigned char * pSpuIrq;
\r
\r
unsigned int cycles_played;
\r
unsigned char * pSpuIrq;
\r
\r
unsigned int cycles_played;
\r
@@
-203,8
+206,6
@@
typedef struct
void (CALLBACK *cddavCallback)(unsigned short,unsigned short);
\r
void (CALLBACK *scheduleCallback)(unsigned int);
\r
\r
void (CALLBACK *cddavCallback)(unsigned short,unsigned short);
\r
void (CALLBACK *scheduleCallback)(unsigned int);
\r
\r
- int * sRVBStart;
\r
-
\r
xa_decode_t * xapGlobal;
\r
unsigned int * XAFeed;
\r
unsigned int * XAPlay;
\r
xa_decode_t * xapGlobal;
\r
unsigned int * XAFeed;
\r
unsigned int * XAPlay;
\r
@@
-222,9
+223,14
@@
typedef struct
int iLeftXAVol;
\r
int iRightXAVol;
\r
\r
int iLeftXAVol;
\r
int iRightXAVol;
\r
\r
- int pad[32];
\r
+ SPUCHAN * s_chan;
\r
+ int * SB;
\r
+
\r
+ int * RVB;
\r
+ int * SSumLR;
\r
+
\r
+ int pad[29];
\r
unsigned short regArea[0x400];
\r
unsigned short regArea[0x400];
\r
- unsigned short spuMem[256*1024];
\r
} SPUInfo;
\r
\r
///////////////////////////////////////////////////////////
\r
} SPUInfo;
\r
\r
///////////////////////////////////////////////////////////
\r
@@
-234,19
+240,18
@@
typedef struct
#ifndef _IN_SPU
\r
\r
extern SPUInfo spu;
\r
#ifndef _IN_SPU
\r
\r
extern SPUInfo spu;
\r
-extern SPUCHAN s_chan[];
\r
extern REVERBInfo rvb;
\r
\r
extern REVERBInfo rvb;
\r
\r
-void do_samples(unsigned int cycles_to);
\r
+void do_samples(unsigned int cycles_to
, int do_sync
);
\r
void schedule_next_irq(void);
\r
\r
#define regAreaGet(ch,offset) \
\r
spu.regArea[((ch<<4)|(offset))>>1]
\r
\r
void schedule_next_irq(void);
\r
\r
#define regAreaGet(ch,offset) \
\r
spu.regArea[((ch<<4)|(offset))>>1]
\r
\r
-#define do_samples_if_needed(c) \
\r
+#define do_samples_if_needed(c
, sync
) \
\r
do { \
\r
do { \
\r
- if ((int)((c) - spu.cycles_played) >= 16 * 768) \
\r
- do_samples(c); \
\r
+ if (
sync ||
(int)((c) - spu.cycles_played) >= 16 * 768) \
\r
+ do_samples(c
, sync
); \
\r
} while (0)
\r
\r
#endif
\r
} while (0)
\r
\r
#endif
\r