📄 mkg.c
字号:
" vgafire3b, vgafire3bmask,\n"
" vgaexp1b, vgaexp1bmask,\n"
" vgaexp2b, vgaexp2bmask,\n"
" vgaexp3b, vgaexp3bmask};\n");
}
int ccol[16]={0,0,1,0,2,0,3,0};
void mkgc(void)
{
int i,x,y,b;
char cbuf[6]={0,0,0,0,0,0};
in=fileopen("cga.spr","rb");
fprintf(out,"Uint3 cgazero60[]={\n");
for (y=0;y<15;y++)
run(cbuf,4,y==14);
for (i=0;i<nspr;i++) {
fread(buf,1024,1,in);
if (i<80 || i>=87) {
fprintf(out,"Uint3 cga%s[]={\n",gnames[i]);
for (y=0;y<heights[i];y++) {
for (x=0;x<widths[i];x++) {
cbuf[x]=0;
for (b=0;b<4;b++)
cbuf[x]|=ccol[buf[(y<<5)+(x<<2)+b]&7]<<(6-(b<<1));
}
run(cbuf,widths[i],y==heights[i]-1);
}
}
if (i<87 || i>=95) {
fprintf(out,"Uint3 cga%smask[]={\n",gnames[i]);
for (y=0;y<heights[i];y++) {
for (x=0;x<widths[i];x++) {
cbuf[x]=0;
for (b=0;b<4;b++)
if ((buf[(y<<5)+(x<<2)+b]&7)==7)
cbuf[x]|=0xc0>>(b<<1);
}
run(cbuf,widths[i],y==heights[i]-1);
}
}
}
fclose(in);
fprintf(out,"Uint3 near *cgatable[]={\n"
" cgazero60, cgaediggermask, /* 0 */\n"
" cgardigger1, cgardigger1mask,\n"
" cgardigger2, cgardigger2mask,\n"
" cgardigger3, cgardigger3mask,\n"
" cgarxdigger1, cgarxdigger1mask,\n"
" cgarxdigger2, cgarxdigger2mask, /* 5 */\n"
" cgarxdigger3, cgarxdigger3mask,\n"
" cgaudigger1, cgaudigger1mask,\n"
" cgaudigger2, cgaudigger2mask,\n"
" cgaudigger3, cgaudigger3mask,\n"
" cgauxdigger1, cgauxdigger1mask, /* 10 */\n"
" cgauxdigger2, cgauxdigger2mask,\n"
" cgauxdigger3, cgauxdigger3mask,\n"
" cgaldigger1, cgaldigger1mask,\n"
" cgaldigger2, cgaldigger2mask,\n"
" cgaldigger3, cgaldigger3mask, /* 15 */\n"
" cgalxdigger1, cgalxdigger1mask,\n"
" cgalxdigger2, cgalxdigger2mask,\n"
" cgalxdigger3, cgalxdigger3mask,\n"
" cgaddigger1, cgaddigger1mask,\n"
" cgaddigger2, cgaddigger2mask, /* 20 */\n"
" cgaddigger3, cgaddigger3mask,\n"
" cgadxdigger1, cgadxdigger1mask,\n"
" cgadxdigger2, cgadxdigger2mask,\n"
" cgadxdigger3, cgadxdigger3mask,\n"
" cgadiggerd, cgadiggerdmask, /* 25 */\n"
" cgagrave1, cgagrave1mask,\n"
" cgagrave2, cgagrave2mask,\n"
" cgagrave3, cgagrave3mask,\n"
" cgagrave4, cgagrave4mask,\n"
" cgagrave5, cgagrave5mask, /* 30 */\n"
"\n"
" cgazero60, cgaediggermask,\n"
" cgarbigger1, cgarbigger1mask,\n"
" cgarbigger2, cgarbigger2mask,\n"
" cgarbigger3, cgarbigger3mask,\n"
" cgarxbigger1, cgarxbigger1mask, /* 35 */\n"
" cgarxbigger2, cgarxbigger2mask,\n"
" cgarxbigger3, cgarxbigger3mask,\n"
" cgaubigger1, cgaubigger1mask,\n"
" cgaubigger2, cgaubigger2mask,\n"
" cgaubigger3, cgaubigger3mask, /* 40 */\n"
" cgauxbigger1, cgauxbigger1mask,\n"
" cgauxbigger2, cgauxbigger2mask,\n"
" cgauxbigger3, cgauxbigger3mask,\n"
" cgalbigger1, cgalbigger1mask,\n"
" cgalbigger2, cgalbigger2mask, /* 45 */\n"
" cgalbigger3, cgalbigger3mask,\n"
" cgalxbigger1, cgalxbigger1mask,\n"
" cgalxbigger2, cgalxbigger2mask,\n"
" cgalxbigger3, cgalxbigger3mask,\n"
" cgadbigger1, cgadbigger1mask, /* 50 */\n"
" cgadbigger2, cgadbigger2mask,\n"
" cgadbigger3, cgadbigger3mask,\n"
" cgadxbigger1, cgadxbigger1mask,\n"
" cgadxbigger2, cgadxbigger2mask,\n"
" cgadxbigger3, cgadxbigger3mask, /* 55 */\n"
" cgabiggerd, cgabiggerdmask,\n"
" cgagrave1, cgagrave1mask,\n"
" cgagrave2, cgagrave2mask,\n"
" cgagrave3, cgagrave3mask,\n"
" cgagrave4, cgagrave4mask, /* 60 */\n"
" cgagrave5, cgagrave5mask,\n"
"\n"
" cgasbag, cgasbagmask,\n"
" cgarbag, cgarbagmask,\n"
" cgalbag, cgalbagmask,\n"
" cgafbag, cgafbagmask, /* 65 */\n"
" cgagold1, cgagold1mask,\n"
" cgagold2, cgagold2mask,\n"
" cgagold3, cgagold3mask,\n"
"\n"
" cganobbin1, cganobbin1mask,\n"
" cganobbin2, cganobbin2mask, /* 70 */\n"
" cganobbin3, cganobbin3mask,\n"
" cganobbind, cganobbindmask,\n"
" cgarhobbin1, cgarhobbin1mask,\n"
" cgarhobbin2, cgarhobbin2mask,\n"
" cgarhobbin3, cgarhobbin3mask, /* 75 */\n"
" cgarhobbind, cgarhobbindmask,\n"
" cgalhobbin1, cgalhobbin1mask,\n"
" cgalhobbin2, cgalhobbin2mask,\n"
" cgalhobbin3, cgalhobbin3mask,\n"
" cgalhobbind, cgalhobbindmask, /* 80 */\n"
"\n"
" cgabonus, cgaediggermask,\n"
"\n"
" cgafire1, cgafire1mask,\n"
" cgafire2, cgafire2mask,\n"
" cgafire3, cgafire3mask,\n"
" cgaexp1, cgaexp1mask, /* 85 */\n"
" cgaexp2, cgaexp2mask,\n"
" cgaexp3, cgaexp3mask,\n"
"\n"
" cgafire1, cgafire1mask,\n"
" cgafire2, cgafire2mask,\n"
" cgafire3, cgafire3mask, /* 90 */\n"
" cgaexp1, cgaexp1mask,\n"
" cgaexp2, cgaexp2mask,\n"
" cgaexp3, cgaexp3mask,\n"
"\n"
" cgaback1, cgazero60,\n"
" cgaback2, cgazero60, /* 95 */\n"
" cgaback3, cgazero60,\n"
" cgaback4, cgazero60,\n"
" cgaback5, cgazero60,\n"
" cgaback6, cgazero60,\n"
" cgaback7, cgazero60, /* 100 */\n"
" cgaback8, cgazero60,\n"
"\n"
" cgazero60, cgarightblobmask,\n"
" cgazero60, cgatopblobmask,\n"
" cgazero60, cgaleftblobmask,\n"
" cgazero60, cgabottomblobmask, /* 105 */\n"
" cgazero60, cgasquareblobmask,\n"
" cgazero60, cgafurryblobmask,\n"
"\n"
" cgaemerald, cgaemeraldmask,\n"
" cgazero60, cgaemeraldmask,\n"
"\n"
" cgaliferight, cgaliferightmask, /* 110 */\n"
" cgalifeleft, cgalifeleftmask,\n"
" cgazero60, cgaelifemask,\n"
" cgaleftlife, cgaleftlifemask,\n"
"\n"
" cgafire1b, cgafire1bmask,\n"
" cgafire2b, cgafire2bmask, /* 115 */\n"
" cgafire3b, cgafire3bmask,\n"
" cgaexp1b, cgaexp1bmask,\n"
" cgaexp2b, cgaexp2bmask,\n"
" cgaexp3b, cgaexp3bmask};\n");
}
/* As new glyphs are added enter them into clist in the order in which they
appear in the file. */
char clist[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.:_ ";
char *symbols[]={
"symspace","symexclam","symdquote","symhash","symdollar","sympercent",
"symamp","symcquote","symoparen","symcparen","symaster","symplus","symcomma",
"symdash","symdot","symslash","num0","num1","num2","num3","num4","num5",
"num6","num7","num8","num9","symcolon","symsemi","symless","symequal",
"symgreater","symquestion","symat","letA","letB","letC","letD","letE","letF",
"letG","letH","letI","letJ","letK","letL","letM","letN","letO","letP","letQ",
"letR","letS","letT","letU","letV","letW","letX","letY","letZ","symobracket",
"symbackslash","symcbracket","symhat","symline","symoquote","leta","letb",
"letc","letd","lete","letf","letg","leth","leti","letj","letk","letl","letm",
"letn","leto","letp","letq","letr","lets","lett","letu","letv","letw","letx",
"lety","letz","symocurly","symbar","symccurly","symtilde"};
void mkga(void)
{
#ifdef _WINDOWS
char cbuf[12];
int i,x,y,b,p,l;
fprintf(out,
"char copyright[]=\"Portions Copyright(c) 1983 Windmill Software Inc.\";\n\n");
in=fileopen("cgatext.spr","rb");
for (i=0;clist[i]!=0;i++) {
fread(buf,1024,1,in);
fprintf(out,"Uint3 cga%s[]={\n",symbols[clist[i]-32]);
for (y=0;y<12;y++) {
for (x=0;x<12;x++) {
if (x&0x1)
cbuf[x>>1]|=buf[(y<<5)+x];
else
cbuf[x>>1]=buf[(y<<5)+x]<<4;
if (x==11)
run(cbuf,6,y==11);
}
}
}
fclose(in);
in=fileopen("vgatext.spr","rb");
for (i=0;clist[i]!=0;i++) {
fread(buf,1024,1,in);
fprintf(out,"Uint3 vga%s[]={\n",symbols[clist[i]-32]);
for (y=0;y<24;y++) {
for (x=0;x<24;x++) {
if (x&0x1)
cbuf[x>>1]|=buf[(y<<5)+x];
else
cbuf[x>>1]=buf[(y<<5)+x]<<4;
if (x==23)
run(cbuf,12,y==23 && x==23);
}
}
}
#else
char cbuf[3];
int i,x,y,b,p,l;
fprintf(out,
"char copyright[]=\"Portions Copyright(c) 1983 Windmill Software Inc.\";\n\n"
"Sint textoffdat[16]={\n"
" 72, 0, -72,-72,\n"
" 144, 0,-288,144,\n"
" 144,-216, 144,-72,\n"
" 144,-216, -72,144};\n\n");
in=fileopen("cgatext.spr","rb");
for (i=0;clist[i]!=0;i++) {
fread(buf,1024,1,in);
fprintf(out,"Uint3 cga%s[]={\n",symbols[clist[i]-32]);
for (y=0;y<12;y++) {
for (x=0;x<3;x++) {
cbuf[x]=0;
for (b=0;b<4;b++)
if (buf[(y<<5)+(x<<2)+b]!=0)
cbuf[x]|=0xc0>>(b<<1);
}
run(cbuf,3,y==11);
}
}
fclose(in);
in=fileopen("vgatext.spr","rb");
for (i=0;clist[i]!=0;i++) {
fread(buf,1024,1,in);
fprintf(out,"Uint3 vga%s[]={\n",symbols[clist[i]-32]);
for (p=8;p>0;p>>=1)
for (y=0;y<24;y++) {
for (x=0;x<3;x++) {
cbuf[x]=0;
for (b=0;b<8;b++)
if ((buf[(y<<5)+(x<<3)+b]&p)!=0)
cbuf[x]|=128>>b;
}
run(cbuf,3,y==23 && p==1);
}
}
#endif
fclose(in);
fprintf(out,"Uint3 near *ascii2cga[0x5f]={\n");
l=0;
p=32;
for (i=32;p<127;i++) {
for (x=0;clist[x]!=0;x++)
if (toupper(clist[x])==toupper(i)) {
l+=strlen(symbols[clist[x]-32])+5;
break;
}
if (clist[x]==0)
l+=3;
if (l>70 || i==127) {
fprintf(out," ");
l=0;
for (b=p;b<i;b++) {
for (x=0;clist[x]!=0;x++)
if (toupper(clist[x])==toupper(b)) {
fprintf(out,"cga%s",symbols[clist[x]-32]);
l+=strlen(symbols[clist[x]-32])+5;
if (b<126)
fprintf(out,",");
break;
}
if (clist[x]==0) {
fprintf(out,"0");
l+=3;
if (b<126)
fprintf(out,",");
else {
fprintf(out,"};");
l++;
}
}
}
for (b=0;b<71-l;b++)
fprintf(out," ");
fprintf(out,"/* ");
for (b=p;b<i;b++)
fprintf(out,"%c",b);
fprintf(out," */\n");
l=0;
p=i;
i--;
}
}
fprintf(out,"Uint3 near *ascii2vga[0x5f]={\n");
l=0;
p=32;
for (i=32;p<127;i++) {
for (x=0;clist[x]!=0;x++)
if (toupper(clist[x])==toupper(i)) {
l+=strlen(symbols[clist[x]-32])+5;
break;
}
if (clist[x]==0)
l+=3;
if (l>70 || i==127) {
fprintf(out," ");
l=0;
for (b=p;b<i;b++) {
for (x=0;clist[x]!=0;x++)
if (toupper(clist[x])==toupper(b)) {
fprintf(out,"vga%s",symbols[clist[x]-32]);
l+=strlen(symbols[clist[x]-32])+5;
if (b<126)
fprintf(out,",");
break;
}
if (clist[x]==0) {
fprintf(out,"0");
l+=3;
if (b<126)
fprintf(out,",");
else {
fprintf(out,"};");
l++;
}
}
}
for (b=0;b<71-l;b++)
fprintf(out," ");
fprintf(out,"/* ");
for (b=p;b<i;b++)
fprintf(out,"%c",b);
fprintf(out," */\n");
l=0;
p=i;
i--;
}
}
}
int main(int argc,char *argv[])
{
int n=-1;
if (argc<=1) {
fprintf(stderr,"Syntax: MKG <name>\nWhere <name> is vgagrafx.c, cgagrafx.c or alpha.c\n");
return 1;
}
if (stricmp(argv[1],"vgagrafx.c")==0)
n=0;
if (stricmp(argv[1],"cgagrafx.c")==0)
n=1;
if (stricmp(argv[1],"alpha.c")==0)
n=2;
out=fileopen(argv[1],"wt");
fprintf(out,"#include \"def.h\"\n\n");
if (n==0)
mkgv();
else
if (n==1)
mkgc();
else
if (n==2)
mkga();
else {
fprintf(stderr,"MKG: Don't know how to make %s\n",argv[1]);
return 1;
}
fclose(out);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -