From 7c7fd64d9bf9a403a0aad8d6d172bc14c643dd46 Mon Sep 17 00:00:00 2001 From: "SND\\ckain_cp" Date: Thu, 14 Nov 2013 15:06:02 +0000 Subject: 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 --- libpcsxcore/psxhw.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'libpcsxcore') 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 -- cgit v1.2.3