jpd002 / Play-

Play! - PlayStation2 Emulator
http://purei.org
Other
2.03k stars 249 forks source link

Dead or Alive 2 fix (PAL) #1336

Closed bigianb closed 4 months ago

bigianb commented 4 months ago

US version may need a different patch. I only have the EU version.

The first change is that DisableIntrLine should return the status. This is later passed to ResumeInterrupts and without the fix the interrupt is never resumed. You're not really meant to use the functions this way (mixing the Line functions with the non-line functions but the game does).

Second is that the game hangs loading files at the start. Not sure why this is (PCSX2 also needs this fix). Changing the RPC call from async to sync fixes it.

We now get in-game with some graphics issues.

Screenshot 2023-12-22 at 13 58 17
Goatman13 commented 4 months ago

You may want to read 2 articles linked in this pr: https://github.com/PCSX2/pcsx2/pull/8814

Because without implementing of what is in first article you may came up with really wrong behavior on hle side. Doa is affected by the same sif interrupts quirk as KK2001.

bigianb commented 4 months ago

You may want to read 2 articles linked in this pr: PCSX2/pcsx2#8814

Because without implementing of what is in first article you may came up with really wrong behavior on hle side. Doa is affected by the same sif interrupts quirk as KK2001.

Interesting - I remember reading those a while ago but forgot. It explains the patch and I think that's the best way it can be done. Regarding the interrupt handling ... that's talking about how the hardware interprets changes to the registers isn't it and not the BIOS behaviour. That wouldn't be something to worry about in the bios code but something to implement in the hardware virtualisation layer (if it is not already).

jpd002 commented 4 months ago

Nice work! Thanks a lot for this!