psxbios: Don't accept 400h as a valid sector.
authorgameblabla <gameblabla@openmailbox.org>
Mon, 22 Jul 2019 21:25:49 +0000 (23:25 +0200)
committergameblabla <gameblabla@openmailbox.org>
Mon, 22 Jul 2019 21:25:49 +0000 (23:25 +0200)
Notaz said this could corrupt the emulator (even though
the console allowed this and it was a bug) so limit it to 0x3FF.

libpcsxcore/psxbios.c

index 8c8093b..928f0af 100644 (file)
@@ -2450,8 +2450,11 @@ void psxBios__card_write() { // 0x4e
 #ifdef PSXBIOS_LOG
        PSXBIOS_LOG("psxBios_%s: %x,%x,%x\n", biosB0n[0x4e], a0, a1, a2);
 #endif
-       /* Function also accepts sector 400h (a bug) */
-       if (!(a1 <= 0x400))
+       /*
+       Function also accepts sector 400h (a bug).
+       But notaz said we shouldn't allow sector 400h because it can corrupt the emulator.
+       */
+       if (!(a1 <= 0x3FF))
        {
                /* Invalid sectors */
                v0 = 0; pc0 = ra;
@@ -2483,8 +2486,11 @@ void psxBios__card_read() { // 0x4f
 #ifdef PSXBIOS_LOG
        PSXBIOS_LOG("psxBios_%s\n", biosB0n[0x4f]);
 #endif
-       /* Function also accepts sector 400h (a bug) */
-       if (!(a1 <= 0x400))
+       /*
+       Function also accepts sector 400h (a bug).
+       But notaz said we shouldn't allow sector 400h because it can corrupt the emulator.
+       */
+       if (!(a1 <= 0x3FF))
        {
                /* Invalid sectors */
                v0 = 0; pc0 = ra;