diff options
author | notaz | 2013-01-01 01:48:16 +0200 |
---|---|---|
committer | notaz | 2013-01-03 01:06:43 +0200 |
commit | eaa895dc8ff02d63cf52b5d0faf0d8272a96a822 (patch) | |
tree | 2994f363d8873790a889aa2b0a9e8cc240d89ab7 | |
parent | 73b29eebea762ea3af6e27060e2b20cd8a58da91 (diff) | |
download | pcsx_rearmed-eaa895dc8ff02d63cf52b5d0faf0d8272a96a822.tar.gz pcsx_rearmed-eaa895dc8ff02d63cf52b5d0faf0d8272a96a822.tar.bz2 pcsx_rearmed-eaa895dc8ff02d63cf52b5d0faf0d8272a96a822.zip |
sbi: update according to Nocash doc
no idea if it's correct though
-rw-r--r-- | libpcsxcore/ppf.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/libpcsxcore/ppf.c b/libpcsxcore/ppf.c index 6fcd5bc..0d80107 100644 --- a/libpcsxcore/ppf.c +++ b/libpcsxcore/ppf.c @@ -339,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"); @@ -352,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) |