#include #include static unsigned char buf0[3][131072]; static unsigned char buf1[3][98304]; int main(int argc, char *argv[]) { int i, j, k; FILE *fp[4]; /* open to read */ fp[0] = fopen("0085.bin", "rb"); if (fp[0] == NULL) goto fin0; fp[1] = fopen("0086.bin", "rb"); if (fp[1] == NULL) goto fin1; fp[2] = fopen("0087.bin", "rb"); if (fp[2] == NULL) goto fin2; /* read files */ for (i = 0; i < 131072; i++) { buf0[0][i] = fgetc(fp[0]); buf0[1][i] = fgetc(fp[1]); buf0[2][i] = fgetc(fp[2]); } /* extract characters */ k = 0; for (i = 0; i < 2048; i++) { for (j = 0; j < 12; j++) { buf1[0][k + 0] = buf0[0][i * 16 + j + 0x00000]; buf1[0][k + 1] = buf0[0][i * 16 + j + 0x08000]; buf1[1][k + 0] = buf0[1][i * 16 + j + 0x00000]; buf1[1][k + 1] = buf0[1][i * 16 + j + 0x08000]; buf1[2][k + 0] = buf0[2][i * 16 + j + 0x00000]; buf1[2][k + 1] = buf0[2][i * 16 + j + 0x08000]; k += 2; } for (j = 0; j < 12; j++) { buf1[0][k + 0] = buf0[0][i * 16 + j + 0x10000]; buf1[0][k + 1] = buf0[0][i * 16 + j + 0x18000]; buf1[1][k + 0] = buf0[1][i * 16 + j + 0x10000]; buf1[1][k + 1] = buf0[1][i * 16 + j + 0x18000]; buf1[2][k + 0] = buf0[2][i * 16 + j + 0x10000]; buf1[2][k + 1] = buf0[2][i * 16 + j + 0x18000]; k += 2; } } /* open to write */ fp[3] = fopen("txt30-cg.bin", "wb"); if (fp[3] == NULL) goto fin3; /* write */ k = 0; for (i = 0; i < 64; i++) { for (j = 0; j < 0x600; j++) fputc(buf1[0][j + k], fp[3]); for (j = 0; j < 0x600; j++) fputc(buf1[1][j + k], fp[3]); for (j = 0; j < 0x600; j++) fputc(buf1[2][j + k], fp[3]); k += 0x600; } fin4: fclose(fp[3]); fin3: fclose(fp[2]); fin2: fclose(fp[1]); fin1: fclose(fp[0]); fin0: return 0; }