mkbgxx.c 906 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #include <stdio.h>
  2. #include <zlib.h>
  3. static unsigned char buff[0x10140];
  4. static unsigned char buff2[0x10140];
  5. static void do_file(const char *ifn, const char *ofn)
  6. {
  7. FILE *fi, *fo;
  8. int ret;
  9. unsigned long dlen = sizeof(buff2);
  10. fi = fopen(ifn, "rb");
  11. if (!fi) return;
  12. fseek(fi, 0x10020, SEEK_SET);
  13. fread(buff, 1, 0x10000, fi);
  14. fseek(fi, 0x2000, SEEK_CUR);
  15. fread(buff + 0x10000, 1, 0x80*2, fi);
  16. fseek(fi, 0x221a0, SEEK_SET);
  17. fread(buff + 0x10100, 1, 0x40, fi);
  18. fclose(fi);
  19. ret = compress2(buff2, &dlen, buff, sizeof(buff), Z_BEST_COMPRESSION);
  20. if (ret) { printf("compress2 failed with %i\n", ret); return; }
  21. fo = fopen(ofn, "wb");
  22. if (!fo) return;
  23. fwrite(buff2, 1, dlen, fo);
  24. fclose(fo);
  25. printf("%s: %6i -> %6li\n", ofn, sizeof(buff), dlen);
  26. }
  27. int main(int argc, char *argv[])
  28. {
  29. if (argc != 3) return 1;
  30. do_file(argv[1], "bg40.bin");
  31. do_file(argv[2], "bg32.bin");
  32. return 0;
  33. }