From: gameblabla Date: Wed, 17 Jul 2019 23:10:33 +0000 (+0200) Subject: psxbios: Add checks to PAD_init X-Git-Tag: r23~156^2~49 X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=commitdiff_plain;h=a824e83d363ce167068e497a97b25f6d637807d6 psxbios: Add checks to PAD_init Nocash documentation says that function fails if type is not 0x20000000 or 0x20000001. In case of failure, it should return 0. If not, then it should return 2. This fixes input in Digimon World. --- diff --git a/libpcsxcore/psxbios.c b/libpcsxcore/psxbios.c index 4624bf4d..42926c23 100644 --- a/libpcsxcore/psxbios.c +++ b/libpcsxcore/psxbios.c @@ -1613,10 +1613,17 @@ void psxBios_PAD_init() { // 15 #ifdef PSXBIOS_LOG PSXBIOS_LOG("psxBios_%s\n", biosB0n[0x15]); #endif + if (!(a0 == 0x20000000 || a0 == 0x20000001)) + { + v0 = 0; + pc0 = ra; + return; + } psxHwWrite16(0x1f801074, (u16)(psxHwRead16(0x1f801074) | 0x1)); pad_buf = (int *)Ra1; *pad_buf = -1; psxRegs.CP0.n.Status |= 0x401; + v0 = 2; pc0 = ra; }