📄 mga_epa.c
字号:
/* (c) HelDoRe EPA unit ... v0.0.5 Supported formats : EPA 1.0 EPA 2.0*/ #define VEREPA " unit v0.0.5"#include <stdio.h>#include "../mga_view.h"void help_epa(){printf("EPA%s\n + EPA 1.0\n + EPA 2.0\n",VEREPA);}int detect_epa(){ int wer,enk,enk2; int attr[140][140][2]; int kolor[16][3] = { { 0x00 , 0x00 , 0x00 }, { 0x00 , 0x00 , 0xaa }, { 0x00 , 0xaa , 0x00 }, { 0x00 , 0xaa , 0xaa }, { 0xaa , 0x00 , 0x00 }, { 0xaa , 0x00 , 0xaa }, { 0xaa , 0x55 , 0x00 }, { 0xaa , 0xaa , 0xaa }, { 0x55 , 0x55 , 0x55 }, { 0x55 , 0x55 , 0xff }, { 0x55 , 0xff , 0x55 }, { 0x55 , 0xff , 0xff }, { 0xff , 0x55 , 0x55 }, { 0xff , 0x55 , 0xff }, { 0xff , 0xff , 0x55 }, { 0xff , 0xff , 0xff } } ; image_x=fgetc(plik)*8; image_y=fgetc(plik)*14; wer=3; if ((image_x==136) && ((image_y==84) || (image_y==126))) wer=1; if (image_x != 136) { rewind(plik); tempi=fgetc32(plik); if (tempi==1096237645) wer=2; image_x=fgetc16b(plik); image_y=fgetc16b(plik); } if (wer ==3) return 1; check_image(image_x,image_y,8); printf("EPA Bios Logo%s\n",VEREPA); printf("EPA %i.0 detected: %ix%i\n",wer,image_x,image_y); if (wer==1) { for (y=0;y<image_y;y++) { for (x=0;x<image_x;x++) { tempi=fgetc(plik); for (enk=0;enk<14;enk++) { for (enk2=0;enk2<8;enk2++) { attr[x+enk2][y+enk][0]=(tempi & 0xf0)>>4; attr[x+enk2][y+enk][1]=(tempi & 0x0f); } } x+=7; } y+=13; } for (y=0;y<image_y;y++) { for (x=0;x<image_x;x++) { for (wer=0;wer<14;wer++) { tempi=fgetc(plik); enk=(tempi & 0x80)>>7; tabr[x+((y+wer)*image_x)]=kolor[attr[x][y+wer][enk]][0]; tabg[x+((y+wer)*image_x)]=kolor[attr[x][y+wer][enk]][1]; tabb[x+((y+wer)*image_x)]=kolor[attr[x][y+wer][enk]][2]; x++; enk=(tempi & 0x40)>>6; tabr[x+((y+wer)*image_x)]=kolor[attr[x][y+wer][enk]][0]; tabg[x+((y+wer)*image_x)]=kolor[attr[x][y+wer][enk]][1]; tabb[x+((y+wer)*image_x)]=kolor[attr[x][y+wer][enk]][2]; x++; enk=(tempi & 0x20)>>5; tabr[x+((y+wer)*image_x)]=kolor[attr[x][y+wer][enk]][0]; tabg[x+((y+wer)*image_x)]=kolor[attr[x][y+wer][enk]][1]; tabb[x+((y+wer)*image_x)]=kolor[attr[x][y+wer][enk]][2]; x++; enk=(tempi & 0x10)>>4; tabr[x+((y+wer)*image_x)]=kolor[attr[x][y+wer][enk]][0]; tabg[x+((y+wer)*image_x)]=kolor[attr[x][y+wer][enk]][1]; tabb[x+((y+wer)*image_x)]=kolor[attr[x][y+wer][enk]][2]; x++; enk=(tempi & 0x08)>>3; tabr[x+((y+wer)*image_x)]=kolor[attr[x][y+wer][enk]][0]; tabg[x+((y+wer)*image_x)]=kolor[attr[x][y+wer][enk]][1]; tabb[x+((y+wer)*image_x)]=kolor[attr[x][y+wer][enk]][2]; x++; enk=(tempi & 0x04)>>2; tabr[x+((y+wer)*image_x)]=kolor[attr[x][y+wer][enk]][0]; tabg[x+((y+wer)*image_x)]=kolor[attr[x][y+wer][enk]][1]; tabb[x+((y+wer)*image_x)]=kolor[attr[x][y+wer][enk]][2]; x++; enk=(tempi & 0x02)>>1; tabr[x+((y+wer)*image_x)]=kolor[attr[x][y+wer][enk]][0]; tabg[x+((y+wer)*image_x)]=kolor[attr[x][y+wer][enk]][1]; tabb[x+((y+wer)*image_x)]=kolor[attr[x][y+wer][enk]][2]; x++; enk=(tempi & 0x01); tabr[x+((y+wer)*image_x)]=kolor[attr[x][y+wer][enk]][0]; tabg[x+((y+wer)*image_x)]=kolor[attr[x][y+wer][enk]][1]; tabb[x+((y+wer)*image_x)]=kolor[attr[x][y+wer][enk]][2]; x-=7; } x+=7; } y+=13; } wer=1; } if (wer==2) { for (y=0;y<image_y;y++) { for (x=0;x<image_x;x++) { tempi=fgetc(plik); tabb[y*image_x+x++]=(tempi & 0x80); tabb[y*image_x+x++]=(tempi & 0x40)<<1; tabb[y*image_x+x++]=(tempi & 0x20)<<2; tabb[y*image_x+x++]=(tempi & 0x10)<<3; tabb[y*image_x+x++]=(tempi & 0x08)<<4; tabb[y*image_x+x++]=(tempi & 0x04)<<5; tabb[y*image_x+x++]=(tempi & 0x02)<<6; tabb[y*image_x+x]=(tempi & 0x01)<<7; } for (x=0;x<image_x;x++) { tempi=fgetc(plik); tabg[y*image_x+x++]=(tempi & 0x80); tabg[y*image_x+x++]=(tempi & 0x40)<<1; tabg[y*image_x+x++]=(tempi & 0x20)<<2; tabg[y*image_x+x++]=(tempi & 0x10)<<3; tabg[y*image_x+x++]=(tempi & 0x08)<<4; tabg[y*image_x+x++]=(tempi & 0x04)<<5; tabg[y*image_x+x++]=(tempi & 0x02)<<6; tabg[y*image_x+x]=(tempi & 0x01)<<7; } for (x=0;x<image_x;x++) { tempi=fgetc(plik); tabr[y*image_x+x++]=(tempi & 0x80); tabr[y*image_x+x++]=(tempi & 0x40)<<1; tabr[y*image_x+x++]=(tempi & 0x20)<<2; tabr[y*image_x+x++]=(tempi & 0x10)<<3; tabr[y*image_x+x++]=(tempi & 0x08)<<4; tabr[y*image_x+x++]=(tempi & 0x04)<<5; tabr[y*image_x+x++]=(tempi & 0x02)<<6; tabr[y*image_x+x]=(tempi & 0x01)<<7; } for (x=0;x<image_x;x++) { tempi=fgetc(plik); tabr[y*image_x+x]+=((tempi & 0x80)>>1); tabg[y*image_x+x]+=((tempi & 0x80)>>1); tabb[y*image_x+x++]+=((tempi & 0x80)>>1); tabr[y*image_x+x]+=((tempi & 0x40)); tabg[y*image_x+x]+=((tempi & 0x40)); tabb[y*image_x+x++]+=((tempi & 0x40)); tabr[y*image_x+x]+=((tempi & 0x20)<<1); tabg[y*image_x+x]+=((tempi & 0x20)<<1); tabb[y*image_x+x++]+=((tempi & 0x20)<<1); tabr[y*image_x+x]+=((tempi & 0x10)<<2); tabg[y*image_x+x]+=((tempi & 0x10)<<2); tabb[y*image_x+x++]+=((tempi & 0x10)<<2); tabr[y*image_x+x]+=((tempi & 0x08)<<3); tabg[y*image_x+x]+=((tempi & 0x08)<<3); tabb[y*image_x+x++]+=((tempi & 0x08)<<3); tabr[y*image_x+x]+=((tempi & 0x04)<<4); tabg[y*image_x+x]+=((tempi & 0x04)<<4); tabb[y*image_x+x++]+=((tempi & 0x04)<<4); tabr[y*image_x+x]+=((tempi & 0x02)<<5); tabg[y*image_x+x]+=((tempi & 0x02)<<5); tabb[y*image_x+x++]+=((tempi & 0x02)<<5); tabr[y*image_x+x]+=((tempi & 0x01)<<6); tabg[y*image_x+x]+=((tempi & 0x01)<<6); tabb[y*image_x+x]+=((tempi & 0x01)<<6); } } }/* debug */ for (y=0;y<image_y;y++) { for (x=0;x<image_x;x++) { if (tabr[y*image_x+x]==256) tabr[y*image_x+x]-=4; if (tabg[y*image_x+x]==256) tabg[y*image_x+x]-=4; if (tabb[y*image_x+x]==256) tabb[y*image_x+x]-=4; if (tabr[y*image_x+x]==128) tabr[y*image_x+x]-=53; if (tabg[y*image_x+x]==128) tabg[y*image_x+x]-=53; if (tabb[y*image_x+x]==128) tabb[y*image_x+x]-=53; } } return 0; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -