From 76b81516963f0f50049be59172c651b559d9fabf Mon Sep 17 00:00:00 2001 From: gameblabla Date: Thu, 18 Jul 2019 01:54:58 +0200 Subject: [PATCH] psxbios: Merging improved card_info function from upstream It should be closer to the real thing, and this commit and the previous one definitely fixes the save issues in Digimon World. --- libpcsxcore/psxbios.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/libpcsxcore/psxbios.c b/libpcsxcore/psxbios.c index fd609559..265dbfd3 100644 --- a/libpcsxcore/psxbios.c +++ b/libpcsxcore/psxbios.c @@ -1279,11 +1279,29 @@ void psxBios__card_info() { // ab #ifdef PSXBIOS_LOG PSXBIOS_LOG("psxBios_%s: %x\n", biosA0n[0xab], a0); #endif - + u32 ret; card_active_chan = a0; + switch (card_active_chan) + { + case 0x00: case 0x01: case 0x02: case 0x03: + ret = Config.Mcd1[0] ? 0x2 : 0x8; + break; + case 0x10: case 0x11: case 0x12: case 0x13: + ret = Config.Mcd2[0] ? 0x2 : 0x8; + break; + default: +#ifdef PSXBIOS_LOG + PSXBIOS_LOG("psxBios_%s: UNKNOWN PORT 0x%x\n", biosA0n[0xab], card_active_chan); +#endif + ret = 0x11; + break; + } + +// DeliverEvent(0x11, 0x2); // 0xf0000011, 0x0004 // DeliverEvent(0x11, 0x2); // 0xf0000011, 0x0004 DeliverEvent(0x81, 0x2); // 0xf4000001, 0x0004 + DeliverEvent(0x81, ret); // 0xf4000001, 0x0004 v0 = 1; pc0 = ra; } -- 2.39.2