Fix region detection for Wild Arms
authorretro-wertz <retro-wertz@users.noreply.github.com>
Sat, 3 Aug 2019 04:02:35 +0000 (12:02 +0800)
committerretro-wertz <retro-wertz@users.noreply.github.com>
Sat, 3 Aug 2019 04:02:35 +0000 (12:02 +0800)
- Wild Arms EU and US version has non-standard string (probably for region protection) causing auto-region detection to fail and wrong CDROM info in log.
- This fix sanitizes the string name to remove unneeded characters ("EXE\" in this case that comes before the serial-number). This would sanitize the CD-ROM info in log as well.

libpcsxcore/misc.c

index 0b151a5..82e6b8b 100644 (file)
@@ -357,6 +357,14 @@ int CheckCdrom() {
                                        return -1;
                        }
                }
+               /* Workaround for Wild Arms EU/US which has non-standard string causing incorrect region detection */
+               if (exename[0] == 'E' && exename[1] == 'X' && exename[2] == 'E' && exename[3] == '\\') {
+                       size_t offset = 4;
+                       size_t i, len = strlen(exename) - offset;
+                       for (i = 0; i < len; i++)
+                               exename[i] = exename[i + offset];
+                       exename[i] = '\0';
+               }
        } else if (GetCdromFile(mdir, time, "PSX.EXE;1") != -1) {
                strcpy(exename, "PSX.EXE;1");
                strcpy(CdromId, "SLUS99999");