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]);
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");
return -1;
sbi_sectors = calloc(1, sector_count / 8);
- if (sbi_sectors == NULL)
+ if (sbi_sectors == NULL) {
+ fclose(sbihandle);
return -1;
+ }
// 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)