diff options
author | pixel <pixel> | 2003-09-05 23:50:16 +0000 |
---|---|---|
committer | pixel <pixel> | 2003-09-05 23:50:16 +0000 |
commit | 44adf768555ecd211f90cbf4d87b44ba42044d86 (patch) | |
tree | 662018d76d3f2f19ed58ea8e94c54445fc2a47e4 /PE/extract.cpp | |
parent | 7ff77f49e9577ff5b63d7f2e2ce7651257bf1d63 (diff) |
Continuing toying
Diffstat (limited to 'PE/extract.cpp')
-rw-r--r-- | PE/extract.cpp | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/PE/extract.cpp b/PE/extract.cpp new file mode 100644 index 0000000..001964a --- /dev/null +++ b/PE/extract.cpp @@ -0,0 +1,72 @@ +#include <stdio.h> + +#define INDEX 0x838da + +#define N1 100 +#define N2 600 + +int index1[N1]; +int index2[N2]; + +int main(void) { + FILE * s, * f; + short int t, b; + int n1 = 0, n2 = 0, i, j, size; + char fn[50], buff[2048]; + + s = fopen("slus_006.62", "r"); + + fseek(s, INDEX, SEEK_SET); + + while (1) { + fread(&t, 2, 1, s); + if (!t) + break; + index1[n1++] = t; + fprintf(stderr, "I1 - %3i - %4i\n", n1, t); + } + + b = index1[n1 - 1]; + + fseek(s, 6, SEEK_CUR); + + while (1) { + fread(&t, 2, 1, s); + if (!t) + break; + index2[n2++] = t + b; + fprintf(stderr, "I2 - %3i - %4i\n", n2, t); + } + + fclose(s); + + s = fopen("pe.img", "r"); + + for (i = 0; i < (n1 - 1); i++) { + sprintf(fn, "dump/%04i.out", i); + if (!(index1[i + 1] - index1[i])) + continue; + f = fopen(fn, "w"); + fprintf(stderr, "Dumping %3i sectors at %4i (%8i) into %s\n", index1[i + 1] - index1[i], index1[i], index1[i] * 2048, fn); + fseek(s, index1[i] * 2048, SEEK_SET); + for (j = index1[i]; j < index1[i + 1]; j++) { + fread(buff, 2048, 1, s); + fwrite(buff, 2048, 1, f); + } + fclose(f); + } + + for (i = 0; i < (n2 - 1); i++) { + sprintf(fn, "musics/song-%04i.out", i); + if (!(index2[i + 1] - index2[i])) + continue; + f = fopen(fn, "w"); + fprintf(stderr, "Music - Dumping %3i sectors at %4i into %s\n", index2[i + 1] - index2[i], index2[i], fn); + fseek(s, index2[i] * 2048, SEEK_SET); + for (j = index2[i]; j < index2[i + 1]; j++) { + fread(buff, 2048, 1, s); + fwrite(buff, 2048, 1, f); + } + fclose(f); + } +} |