#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
const char gfxin[12][20] = {{"themes/menu_bg.bmp"},
{"themes/bootcfw.bmp"},
{"themes/bootofw.bmp"},
{"themes/options.bmp"},
{"themes/core.bmp"},
{"themes/autorcm.bmp"},
{"themes/nand.bmp"},
{"themes/emunand.bmp"},
{"themes/repair.bmp"},
{"themes/launch.bmp"},
{"themes/poweroff.bmp"},
{"themes/splash.bmp"}};
const char gfxout[12][20] = {{"out/menu_bg.bin"},
{"out/bootcfw.bin"},
{"out/bootofw.bin"},
{"out/options.bin"},
{"out/core.bin"},
{"out/autorcm.bin"},
{"out/nand.bin"},
{"out/emunand.bin"},
{"out/repair.bin"},
{"out/launch.bin"},
{"out/poweroff.bin"},
{"out/splash.bin"}};
int size_gfx[12] = {0x3c0000,0x40000,0x40000,0x40000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x3c0000};
int size_gfx_reso_x[12] = {0x2D0,0x100,0x100,0x100,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x2D0};
int size_gfx_reso_y[12] = {0x500,0x100,0x100,0x100,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x500};
int size;
int main()
{
int count;
mkdir("out",1);
for(count=0; count<12; count++)
{
int i;
int j;
int x;
int y;
int z;
int size_header;
char *tmp_in;
char *tmp_out;
FILE * file_in;
FILE * file_out;
if((file_in = fopen(gfxin[count],"rb")) == NULL){printf("no file: %s \n", gfxin[count]); continue;}
tmp_in = (char*)malloc(size_gfx[count] * sizeof(char));
fread(tmp_in, size_gfx[count], 1, file_in);
size_header = tmp_in[0xa] & 0xff;
file_out = fopen(gfxout[count],"wb");
tmp_out = (char*)malloc(size_gfx[count] * sizeof(char));
if(count == 11){
j = 0;
i = 0;
for(x = 1; x < (size_gfx_reso_y[count]+1); x++)
{
for(y=size_gfx_reso_x[count]; y > 0; y--){
tmp_out[j+0] = tmp_in[size_header + ((size_gfx_reso_y[count]*y*4)-(x*4)) +2];
tmp_out[j+1] = tmp_in[size_header + ((size_gfx_reso_y[count]*y*4)-(x*4)) +1];
tmp_out[j+2] = tmp_in[size_header + ((size_gfx_reso_y[count]*y*4)-(x*4)) +0];
tmp_out[j+3] = tmp_in[size_header + ((size_gfx_reso_y[count]*y*4)-(x*4)) +3];
j+=4;
}
for(i=0;i<0xC0;i+=1){
tmp_out[j+i] = 0x0;
}
j+=i;
}
} else {
j = 0;
for(x = size_gfx_reso_x[count]; x > 0; x--)
{
for(y=size_gfx_reso_y[count]; y > 0; y--){
tmp_out[j+0] = tmp_in[size_header + ((size_gfx_reso_y[count]*x*4)-(y*4))+2];
tmp_out[j+1] = tmp_in[size_header + ((size_gfx_reso_y[count]*x*4)-(y*4))+1];
tmp_out[j+2] = tmp_in[size_header + ((size_gfx_reso_y[count]*x*4)-(y*4))+0];
tmp_out[j+3] = tmp_in[size_header + ((size_gfx_reso_y[count]*x*4)-(y*4))+3];
j+=4;
}
}
}
fwrite(tmp_out, size_gfx[count], 1, file_out);
fclose(file_out);
fclose(file_in);
free(tmp_in);
free(tmp_out);
//rename(gfxout[count],gfxout2[count]);
printf("file convert succes : %s \n", gfxin[count]);
}
printf("success !!!\n");
}