summaryrefslogtreecommitdiff
path: root/libpcsxcore
diff options
context:
space:
mode:
authorSND\ckain_cp <SND\ckain_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2013-11-14 15:06:02 +0000
committerSND\ckain_cp <SND\ckain_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2013-11-14 15:06:02 +0000
commit7c7fd64d9bf9a403a0aad8d6d172bc14c643dd46 (patch)
tree430510ebc0fa6a2ba63ba8d53f4ad2afaa4267a8 /libpcsxcore
parente07e43ec21076b524f430db225f1fd5fc3d7ca2a (diff)
downloadpcsxr-7c7fd64d9bf9a403a0aad8d6d172bc14c643dd46.tar.gz
EXPERIMENTAL: handle GPU DATA 1F command which should be GPU IRQ request. Fixes MML2 ending white screen before credits. Possibly fixes others also by obsoleting InuYasha fix. Hopefully breaks nothing.
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@87828 e17a0e51-4ae3-4d35-97c3-1a29b211df97
Diffstat (limited to 'libpcsxcore')
-rwxr-xr-xlibpcsxcore/psxhw.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/libpcsxcore/psxhw.c b/libpcsxcore/psxhw.c
index 2ac9a609..08e16f83 100755
--- a/libpcsxcore/psxhw.c
+++ b/libpcsxcore/psxhw.c
@@ -29,6 +29,12 @@
// Vampire Hunter D hack
boolean dmaGpuListHackEn=FALSE;
+static inline
+void setIrq( u32 irq )
+{
+ psxHu32ref(0x1070) |= SWAPu32(irq);
+}
+
void psxHwReset() {
if (Config.SioIrq) psxHu32ref(0x1070) |= SWAP32(0x80);
if (Config.SpuIrq) psxHu32ref(0x1070) |= SWAP32(0x200);
@@ -736,8 +742,13 @@ void psxHwWrite32(u32 add, u32 value) {
return;
case 0x1f801810:
#ifdef PSXHW_LOG
- PSXHW_LOG("GPU DATA 32bit write %x\n", value);
+ PSXHW_LOG("GPU DATA 32bit write %x (CMD/MSB %x)\n", value, value>>24);
#endif
+ // 0x1F means irq request, so fulfill it here because plugin can't and won't
+ // Probably no need to send this to plugin in first place...
+ if (value == 0x01f00000) {
+ setIrq( 0x01 );
+ }
GPU_writeData(value); return;
case 0x1f801814:
#ifdef PSXHW_LOG