summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSND\shalma_cp <SND\shalma_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2011-02-02 17:26:59 +0000
committerSND\shalma_cp <SND\shalma_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2011-02-02 17:26:59 +0000
commitc8edcac4e14a31af9d848c0dfded76908b8c1d7d (patch)
tree538c37cccec59ce7109ff048bc6328413451b80c
parentd0b9cf9a9dec7d63da7784d581b723840c28ed20 (diff)
downloadpcsxr-c8edcac4e14a31af9d848c0dfded76908b8c1d7d.tar.gz
Experimental patches
- cdrom.c - burst dma 0.3333x - cdrom.c - mono xa attenuation (Tales of Phantasia) - misc comments cleanup Disabled by default git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@62851 e17a0e51-4ae3-4d35-97c3-1a29b211df97
-rw-r--r--libpcsxcore/cdrom.c35
-rw-r--r--libpcsxcore/gpu.c4
-rw-r--r--libpcsxcore/psxdma.c4
3 files changed, 29 insertions, 14 deletions
diff --git a/libpcsxcore/cdrom.c b/libpcsxcore/cdrom.c
index 63acae32..1b7e4d66 100644
--- a/libpcsxcore/cdrom.c
+++ b/libpcsxcore/cdrom.c
@@ -481,7 +481,7 @@ static void ReadTrack( u8 *time ) {
}
-void CDXA_Attenuation( s16 *buf, int size )
+void CDXA_Attenuation( s16 *buf, int size, int stereo )
{
s16 *spsound;
s32 lc,rc;
@@ -496,17 +496,13 @@ void CDXA_Attenuation( s16 *buf, int size )
s16 temp[32768];
int dst;
- // TODO: do later
- return;
-
dst = 0;
- for( i = 0; i < size / 2; i++, dst+=2 ) {
+ for( i = 0; i < size; i++, dst+=2 ) {
temp[dst+0] = spsound[i];
temp[dst+1] = spsound[i];
}
- size <<= 1;
- memcpy( spsound, temp, size*2 );
+ memcpy( spsound, temp, (size*2)*2 );
}
#endif
@@ -892,7 +888,7 @@ void cdrPlayInterrupt()
if( CDR_readCDDA ) {
CDR_readCDDA( cdr.SetSectorPlay[0], cdr.SetSectorPlay[1], cdr.SetSectorPlay[2], cdr.Transfer );
- CDXA_Attenuation( (short *) cdr.Transfer, 2352 );
+ CDXA_Attenuation( (short *) cdr.Transfer, 2352, 1 );
}
@@ -1598,14 +1594,28 @@ void cdrReadInterrupt() {
int ret = xa_decode_sector(&cdr.Xa, cdr.Transfer+4, cdr.FirstSector);
if (!ret) {
+ int xa_type;
+
#if 0
+ // save - set only for FirstSector
+ xa_type = cdr.Xa.stereo;
+
+
// Duke Nukem - Time to Kill - speech, music volume control
// Tekken 3 - post-match fade out
CDXA_Attenuation( cdr.Xa.pcm, cdr.Xa.nsamples, cdr.Xa.stereo );
+
+ // fix mono xa attenuation
+ if( cdr.Xa.stereo == 0 ) cdr.Xa.stereo = 1;
#endif
SPU_playADPCMchannel(&cdr.Xa);
cdr.FirstSector = 0;
+
+
+#if 0
+ cdr.Xa.stereo = xa_type;
+#endif
// Crash Team Racing: music, speech
@@ -2336,8 +2346,13 @@ void psxDma3(u32 madr, u32 bcr, u32 chcr) {
// burst vs normal
- if( chcr == 0x11400100 ) {
- CDRDMA_INT( (cdsize/4) / 4 );
+ if( chcr == 0x11400100 ) {
+#if 1
+ CDRDMA_INT( (cdsize/4) / 4 );
+#else
+ // Experimental burst dma transfer (0.333x max)
+ CDRDMA_INT( (cdsize/4) / 3 );
+#endif
}
else if( chcr == 0x11000000 ) {
CDRDMA_INT( (cdsize/4) * 1 );
diff --git a/libpcsxcore/gpu.c b/libpcsxcore/gpu.c
index ff3426f3..63a18cf8 100644
--- a/libpcsxcore/gpu.c
+++ b/libpcsxcore/gpu.c
@@ -126,7 +126,7 @@ void psxDma2(u32 madr, u32 bcr, u32 chcr) { // GPU
// already 32-bit word size ((size * 4) / 4)
GPUDMA_INT(size);
#else
- // Possible DMA burst + overhead
+ // Experimental burst dma transfer (0.333x max)
GPUDMA_INT(size/3);
#endif
return;
@@ -150,7 +150,7 @@ void psxDma2(u32 madr, u32 bcr, u32 chcr) { // GPU
// already 32-bit word size ((size * 4) / 4)
GPUDMA_INT(size);
#else
- // Possible DMA burst + overhead
+ // Experimental burst dma transfer
// - X-Files = 0.333333x max for videos
GPUDMA_INT( size / 3 );
#endif
diff --git a/libpcsxcore/psxdma.c b/libpcsxcore/psxdma.c
index e03750d9..88eb7fa8 100644
--- a/libpcsxcore/psxdma.c
+++ b/libpcsxcore/psxdma.c
@@ -71,7 +71,7 @@ void psxDma4(u32 madr, u32 bcr, u32 chcr) { // SPU
#if 1
SPUDMA_INT((bcr >> 16) * (bcr & 0xffff) / 2);
#else
- // Experimental DMA timing
+ // Experimental burst dma transfer (0.333x max)
SPUDMA_INT((bcr >> 16) * (bcr & 0xffff) / 3);
#endif
return;
@@ -118,7 +118,7 @@ void psxDma6(u32 madr, u32 bcr, u32 chcr) {
#if 1
GPUOTCDMA_INT( size );
#else
- // Experimental DMA timing
+ // Experimental burst dma transfer (0.333x max)
GPUOTCDMA_INT( size/3 );
#endif
return;