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;hp=bee52312d06313957cfe73dacdb1717d1c8bcddb 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; }