From: gameblabla Date: Wed, 17 Jul 2019 23:57:08 +0000 (+0200) Subject: psxbios: Better EnterCiritcal implementation X-Git-Tag: r23~156^2~45 X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=commitdiff_plain;h=79dad1b3ff35061e16f7bc160955df6990cbef18 psxbios: Better EnterCiritcal implementation Nocash documentation says it should return 0 if one or none of the bits were changed and return 1 of both bits were set. This fixes Medievil 2, which would freeze upon starting up a game and this properly fixes Digimon World crashing (with fixed strcat implementation). It also possibly fix other games. --- diff --git a/libpcsxcore/psxbios.c b/libpcsxcore/psxbios.c index d4a38e18..58581e9f 100644 --- a/libpcsxcore/psxbios.c +++ b/libpcsxcore/psxbios.c @@ -2907,8 +2907,9 @@ void psxBiosException() { #endif switch (a0) { case 1: // EnterCritical - disable irq's - psxRegs.CP0.n.Status &= ~0x404; -v0=1; // HDHOSHY experimental patch: Spongebob, Coldblood, fearEffect, Medievil2, Martian Gothic + /* Fixes Medievil 2 not loading up new game, Digimon World not booting up and possibly others */ + v0 = (psxRegs.CP0.n.Status & 0x404) == 0x404; + psxRegs.CP0.n.Status &= ~0x404; break; case 2: // ExitCritical - enable irq's