psxmem: Writes to PIO Expansion area have no effect.
authorgameblabla <gameblabla@protonmail.com>
Wed, 10 Nov 2021 19:27:06 +0000 (20:27 +0100)
committergameblabla <gameblabla@protonmail.com>
Wed, 10 Nov 2021 19:27:06 +0000 (20:27 +0100)
This is related to the Tetris with Card Captor fix a while back.
However, i forgot to merge this one as well related to writes,
even though it was not really necessary to fix that particular game.

Co-authored-by: senquack <dansilsby@gmail.com>
libpcsxcore/psxmem.c

index c2bed4c..7d9f8bf 100644 (file)
@@ -214,7 +214,11 @@ int psxMemInit() {
        memcpy(psxMemWLUT + 0x8000, psxMemWLUT, 0x80 * sizeof(void *));
        memcpy(psxMemWLUT + 0xa000, psxMemWLUT, 0x80 * sizeof(void *));
 
        memcpy(psxMemWLUT + 0x8000, psxMemWLUT, 0x80 * sizeof(void *));
        memcpy(psxMemWLUT + 0xa000, psxMemWLUT, 0x80 * sizeof(void *));
 
-       psxMemWLUT[0x1f00] = (u8 *)psxP;
+       // Don't allow writes to PIO Expansion region (psxP) to take effect.
+       // NOTE: Not sure if this is needed to fix any games but seems wise,
+       //       seeing as some games do read from PIO as part of copy-protection
+       //       check. (See fix in psxMemReset() regarding psxP region reads).
+       psxMemWLUT[0x1f00] = NULL;
        psxMemWLUT[0x1f80] = (u8 *)psxH;
 
        return 0;
        psxMemWLUT[0x1f80] = (u8 *)psxH;
 
        return 0;