From a824e83d363ce167068e497a97b25f6d637807d6 Mon Sep 17 00:00:00 2001 From: gameblabla Date: Thu, 18 Jul 2019 01:10:33 +0200 Subject: [PATCH] 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. --- libpcsxcore/psxbios.c | 7 +++++++ 1 file changed, 7 insertions(+) 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; } -- 2.39.2