diff options
| author | SND\ckain_cp <SND\ckain_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2013-11-14 15:06:02 +0000 |
|---|---|---|
| committer | SND\ckain_cp <SND\ckain_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2013-11-14 15:06:02 +0000 |
| commit | 7c7fd64d9bf9a403a0aad8d6d172bc14c643dd46 (patch) | |
| tree | 430510ebc0fa6a2ba63ba8d53f4ad2afaa4267a8 | |
| parent | e07e43ec21076b524f430db225f1fd5fc3d7ca2a (diff) | |
| download | pcsxr-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
| -rwxr-xr-x | libpcsxcore/psxhw.c | 13 |
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 |
