frontend: pandora: work around r20a vs r21 versioning
[pcsx_rearmed.git] / libpcsxcore / ppf.c
index ee32d8b..0d80107 100644 (file)
@@ -190,6 +190,8 @@ void BuildPPFCache() {
 
        FreePPFCache();
 
+       if (CdromId[0] == '\0') return;
+
        // Generate filename in the format of SLUS_123.45
        buffer[0] = toupper(CdromId[0]);
        buffer[1] = toupper(CdromId[1]);
@@ -337,7 +339,7 @@ unsigned char *sbi_sectors;
 int LoadSBI(const char *fname, int sector_count) {
        char buffer[16];
        FILE *sbihandle;
-       u8 sbitime[3];
+       u8 sbitime[3], t;
        int s;
 
        sbihandle = fopen(fname, "rb");
@@ -350,9 +352,22 @@ int LoadSBI(const char *fname, int sector_count) {
 
        // 4-byte SBI header
        fread(buffer, 1, 4, sbihandle);
-       while (!feof(sbihandle)) {
-               fread(sbitime, 1, 3, sbihandle);
-               fread(buffer, 1, 11, sbihandle);
+       while (1) {
+               s = fread(sbitime, 1, 3, sbihandle);
+               if (s != 3)
+                       break;
+               fread(&t, 1, 1, sbihandle);
+               switch (t) {
+               default:
+               case 1:
+                       s = 10;
+                       break;
+               case 2:
+               case 3:
+                       s = 3;
+                       break;
+               }
+               fseek(sbihandle, s, SEEK_CUR);
 
                s = MSF2SECT(btoi(sbitime[0]), btoi(sbitime[1]), btoi(sbitime[2]));
                if (s < sector_count)