diff options
Diffstat (limited to 'libpcsxcore/ppf.c')
| -rwxr-xr-x | libpcsxcore/ppf.c | 59 |
1 files changed, 34 insertions, 25 deletions
diff --git a/libpcsxcore/ppf.c b/libpcsxcore/ppf.c index fd8d32ec..66323780 100755 --- a/libpcsxcore/ppf.c +++ b/libpcsxcore/ppf.c @@ -337,38 +337,41 @@ void BuildPPFCache() { // redump.org SBI files static u8 sbitime[256][3], sbicount; -void LoadSBI() { +int LoadSBI(const char *filename) { FILE *sbihandle; char buffer[16], sbifile[MAXPATHLEN]; - if (CdromId[0] == '\0') return; - - // Generate filename in the format of SLUS_123.45.sbi - buffer[0] = toupper(CdromId[0]); - buffer[1] = toupper(CdromId[1]); - buffer[2] = toupper(CdromId[2]); - buffer[3] = toupper(CdromId[3]); - buffer[4] = '_'; - buffer[5] = CdromId[4]; - buffer[6] = CdromId[5]; - buffer[7] = CdromId[6]; - buffer[8] = '.'; - buffer[9] = CdromId[7]; - buffer[10] = CdromId[8]; - buffer[11] = '.'; - buffer[12] = 's'; - buffer[13] = 'b'; - buffer[14] = 'i'; - buffer[15] = '\0'; + if (filename == NULL) { + if (CdromId[0] == '\0') return -1; + + // Generate filename in the format of SLUS_123.45.sbi + buffer[0] = toupper(CdromId[0]); + buffer[1] = toupper(CdromId[1]); + buffer[2] = toupper(CdromId[2]); + buffer[3] = toupper(CdromId[3]); + buffer[4] = '_'; + buffer[5] = CdromId[4]; + buffer[6] = CdromId[5]; + buffer[7] = CdromId[6]; + buffer[8] = '.'; + buffer[9] = CdromId[7]; + buffer[10] = CdromId[8]; + buffer[11] = '.'; + buffer[12] = 's'; + buffer[13] = 'b'; + buffer[14] = 'i'; + buffer[15] = '\0'; + + sprintf(sbifile, "%s%s", Config.PatchesDir, buffer); + filename = sbifile; + } - sprintf(sbifile, "%s%s", Config.PatchesDir, buffer); + sbihandle = fopen(filename, "rb"); + if (sbihandle == NULL) return -1; // init sbicount = 0; - sbihandle = fopen(sbifile, "rb"); - if (sbihandle == NULL) return; - // 4-byte SBI header fread(buffer, 1, 4, sbihandle); while (!feof(sbihandle)) { @@ -378,7 +381,9 @@ void LoadSBI() { fclose(sbihandle); - SysPrintf(_("Loaded SBI file: %s.\n"), sbifile); + SysPrintf(_("Loaded SBI file: %s.\n"), filename); + + return 0; } boolean CheckSBI(const u8 *time) { @@ -394,3 +399,7 @@ boolean CheckSBI(const u8 *time) { return FALSE; } + +void UnloadSBI(void) { + sbicount = 0; +} |
