summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2010-02-13 03:49:01 +0000
committerSND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2010-02-13 03:49:01 +0000
commit1ccb62ed8e2ba0ac2fe6d0f29eef3e4b69f10b74 (patch)
treee4efd5339ac306a67c992c3a5456b3c71e1e6575
parent9ea4ad75fbdbd9d4e04db83f884006b20d547204 (diff)
downloadpcsxr-1ccb62ed8e2ba0ac2fe6d0f29eef3e4b69f10b74.tar.gz
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@41506 e17a0e51-4ae3-4d35-97c3-1a29b211df97
-rw-r--r--ChangeLog8
-rw-r--r--libpcsxcore/cdrom.c3
-rw-r--r--libpcsxcore/psxhw.c13
-rw-r--r--libpcsxcore/r3000a.c2
4 files changed, 19 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index c804bf76..99df5513 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+February 13, 2010 shalma
+
+ * libpcsxcore/cdrom.c: Clear the 0x20 flag when stop reading, which fixes the
+ problem with Syphon Filter.
+ * libpcsxcore/psxhw.c: Always update HW_DMAx_CHCR in DmaExec(), which fixes
+ the problem with Harvest Moon.
+ (http://forums.ngemu.com/pcsx-discussion/116599-developers-wanted-pcsx-revival-2.html)
+
February 10, 2010 Tristin Celestin <cetris1@umbc.edu>
* plugins/dfsound/pulseaudio.c: PulseAudio Normal API support is now working
diff --git a/libpcsxcore/cdrom.c b/libpcsxcore/cdrom.c
index b2384671..c6d44290 100644
--- a/libpcsxcore/cdrom.c
+++ b/libpcsxcore/cdrom.c
@@ -105,13 +105,14 @@ static struct SubQ *subq;
cdr.FirstSector = 1; \
cdr.Readed = 0xff; \
AddIrqQueue(READ_ACK, 0x800); \
-}
+}
#define StopReading() { \
if (cdr.Reading) { \
cdr.Reading = 0; \
psxRegs.interrupt &= ~0x40000; \
} \
+ cdr.StatP &= ~0x20; \
}
#define StopCdda() { \
diff --git a/libpcsxcore/psxhw.c b/libpcsxcore/psxhw.c
index 2e48469c..8e1e8667 100644
--- a/libpcsxcore/psxhw.c
+++ b/libpcsxcore/psxhw.c
@@ -194,9 +194,9 @@ u32 psxHwRead32(u32 add) {
switch (add) {
case 0x1f801040:
hard = sioRead8();
- hard|= sioRead8() << 8;
- hard|= sioRead8() << 16;
- hard|= sioRead8() << 24;
+ hard |= sioRead8() << 8;
+ hard |= sioRead8() << 16;
+ hard |= sioRead8() << 24;
#ifdef PAD_LOG
PAD_LOG("sio read32 ;ret = %lx\n", hard);
#endif
@@ -480,9 +480,12 @@ void psxHwWrite16(u32 add, u16 value) {
}
#define DmaExec(n) { \
- if (SWAPu32(HW_DMA##n##_CHCR) & 0x01000000) return; \
+ if (SWAPu32(HW_DMA##n##_CHCR) & 0x01000000) { \
+ HW_DMA##n##_CHCR = SWAPu32(value); \
+ return; \
+ } \
HW_DMA##n##_CHCR = SWAPu32(value); \
- \
+\
if (SWAPu32(HW_DMA##n##_CHCR) & 0x01000000 && SWAPu32(HW_DMA_PCR) & (8 << (n * 4))) { \
psxDma##n(SWAPu32(HW_DMA##n##_MADR), SWAPu32(HW_DMA##n##_BCR), SWAPu32(HW_DMA##n##_CHCR)); \
} \
diff --git a/libpcsxcore/r3000a.c b/libpcsxcore/r3000a.c
index 6a8a7051..c0b163bb 100644
--- a/libpcsxcore/r3000a.c
+++ b/libpcsxcore/r3000a.c
@@ -26,7 +26,7 @@
#include "cdrom.h"
#include "mdec.h"
#include "gte.h"
-#include "cheat.h"
+#include "cheat.h"
#include "ppf.h"
psxRegisters psxRegs;