summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSND\shalma_cp <SND\shalma_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2011-02-04 03:24:09 +0000
committerSND\shalma_cp <SND\shalma_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2011-02-04 03:24:09 +0000
commit5f0189ef278ebb7ef9fd4e08fff8728449bf6b6f (patch)
tree956e2a3efa31441ca01f65ec2a636fe0f541db95
parent5f93c7a7b5acd5e1ae9fedd91e3c316f92d519c0 (diff)
downloadpcsxr-5f0189ef278ebb7ef9fd4e08fff8728449bf6b6f.tar.gz
Experimental patches
1- cdrom.c Remove IRQ clear - read reschedule Fix xa streaming timing (ex. Final Fantasy Tactics) 2- cdrom.c BIOS music player - init attenuators 3- r3000a.c Set spu async to ~10 apu cycle updates Correct Square sound effects Disabled by default git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@62890 e17a0e51-4ae3-4d35-97c3-1a29b211df97
-rw-r--r--libpcsxcore/cdrom.c22
-rw-r--r--libpcsxcore/r3000a.c23
-rw-r--r--libpcsxcore/r3000a.h2
3 files changed, 45 insertions, 2 deletions
diff --git a/libpcsxcore/cdrom.c b/libpcsxcore/cdrom.c
index 0ab72a1a..e880a2f9 100644
--- a/libpcsxcore/cdrom.c
+++ b/libpcsxcore/cdrom.c
@@ -2200,10 +2200,22 @@ void cdrWrite3(unsigned char rt) {
cdr.Irq = 0;
return;
}
-
+
+#if 1
+ if (cdr.Reading && !cdr.ResultReady) {
+ CDREAD_INT((cdr.Mode & MODE_SPEED) ? (cdReadTime / 2) : cdReadTime);
+ }
+#else
+ // XA streaming - incorrect timing because of this reschedule
+ // - Final Fantasy Tactics
+ // - various other games
+
+ /*
if (cdr.Reading && !cdr.ResultReady) {
CDREAD_INT((cdr.Mode & MODE_SPEED) ? (cdReadTime / 2) : cdReadTime);
}
+ */
+#endif
return;
}
@@ -2382,6 +2394,14 @@ void cdrReset() {
cdr.CurTrack = 1;
cdr.File = 1;
cdr.Channel = 1;
+
+#if 0
+ // BIOS player - default values
+ cdr.AttenuatorLeft[0] = 0x80;
+ cdr.AttenuatorLeft[1] = 0x00;
+ cdr.AttenuatorRight[0] = 0x80;
+ cdr.AttenuatorRight[1] = 0x00;
+#endif
}
int cdrFreeze(gzFile f, int Mode) {
diff --git a/libpcsxcore/r3000a.c b/libpcsxcore/r3000a.c
index 1422d52f..d5616cbe 100644
--- a/libpcsxcore/r3000a.c
+++ b/libpcsxcore/r3000a.c
@@ -123,6 +123,29 @@ void psxBranchTest() {
}
}
+#if 0
+ if( SPU_async )
+ {
+ static int init;
+ int elapsed;
+
+ if( init == 0 ) {
+ // 10 apu cycles
+ // - Final Fantasy Tactics (distorted - dropped sound effects)
+ psxRegs.intCycle[PSXINT_SPUASYNC].cycle = PSXCLK / 44100 * 10;
+
+ init = 1;
+ }
+
+ elapsed = psxRegs.cycle - psxRegs.intCycle[PSXINT_SPUASYNC].sCycle;
+ if (elapsed >= psxRegs.intCycle[PSXINT_SPUASYNC].cycle) {
+ SPU_async( elapsed );
+
+ psxRegs.intCycle[PSXINT_SPUASYNC].sCycle = psxRegs.cycle;
+ }
+ }
+#endif
+
if ((psxRegs.cycle - psxNextsCounter) >= psxNextCounter)
psxRcntUpdate();
diff --git a/libpcsxcore/r3000a.h b/libpcsxcore/r3000a.h
index ae48a5c0..f2bdecd7 100644
--- a/libpcsxcore/r3000a.h
+++ b/libpcsxcore/r3000a.h
@@ -155,7 +155,7 @@ enum {
PSXINT_MDECINDMA,
PSXINT_GPUOTCDMA,
PSXINT_CDRDMA,
- DUMMY1,
+ PSXINT_SPUASYNC,
PSXINT_CDRDBUF,
PSXINT_CDRLID,
PSXINT_CDRPLAY