📄 mkg.c
字号:
/* Digger Remastered
Copyright (c) Andrew Jenner 1998-2004 */
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include "def.h"
FILE *in,*out;
unsigned char buf[1024];
void run(char *data,int l,bool ef)
{
int i;
fprintf(out," ");
for (i=0;i<l;i++) {
fprintf(out,"0x%02x",data[i]&0xff);
if (i==l-1 && ef)
fprintf(out,"};\n");
else
fprintf(out,",");
}
fprintf(out,"\n");
}
#define nspr 107
char *gnames[]={
"emerald","sbag","rbag","lbag","fbag","gold1","gold2","gold3","nobbin3",
"nobbin2","nobbin1","nobbind","rhobbin1","rhobbin2","rhobbin3","rhobbind",
"lhobbin1","lhobbin2","lhobbin3","lhobbind","bonus","rdigger3","rxdigger3",
"rdigger2","rxdigger2","rdigger1","rxdigger1","ldigger3","lxdigger3",
"ldigger2","lxdigger2","ldigger1","lxdigger1","udigger3","uxdigger3",
"udigger2","uxdigger2","udigger1","uxdigger1","ddigger3","dxdigger3",
"ddigger2","dxdigger2","ddigger1","dxdigger1","rbigger3","rxbigger3",
"rbigger2","rxbigger2","rbigger1","rxbigger1","lbigger3","lxbigger3",
"lbigger2","lxbigger2","lbigger1","lxbigger1","ubigger3","uxbigger3",
"ubigger2","uxbigger2","ubigger1","uxbigger1","dbigger3","dxbigger3",
"dbigger2","dxbigger2","dbigger1","dxbigger1","grave5","grave4","grave3",
"grave2","grave1","diggerd","biggerd","liferight","lifeleft","elife",
"leftlife","rightblob","leftblob","topblob","bottomblob","furryblob",
"squareblob","edigger","back1","back2","back3","back4","back5","back6",
"back7","back8","fire1","fire2","fire3","exp1","exp2","exp3","fire1b",
"fire2b","fire3b","exp1b","exp2b","exp3b"};
int heights[]={
10,15,15,15,15,15,15,15,15,
15,15,15,15,15,15,15,
15,15,15,14,15,15,15,
15,15,15,15,15,15,
15,15,15,15,15,15,
15,15,15,15,15,15,
15,15,15,15,15,15,
15,15,15,15,15,15,
15,15,15,15,15,15,
15,15,15,15,15,15,
15,15,15,15,15,15,15,
15,15,15,15,12,12,12,
12,18,18,6,6,8,
6,15,4,4,4,4,4,4,
4,4,8,8,8,8,8,8,8,
8,8,8,8,8};
int widths[]={
4,4,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,
4,4,4,4,4,4,4,
4,4,4,4,4,4,
4,4,4,4,4,4,
4,4,4,4,4,4,
4,4,4,4,4,4,
4,4,4,4,4,4,
4,4,4,4,4,4,
4,4,4,4,4,4,
4,4,4,4,4,4,4,
4,4,4,4,4,4,4,
4,2,2,6,6,6,
6,4,5,5,5,5,5,5,
5,5,2,2,2,2,2,2,2,
2,2,2,2,2};
FILE *fileopen(char *name,char *mode)
{
FILE *f;
f=fopen(name,mode);
if (f==NULL) {
printf("Error: Cannot open file %s with mode %s\n",name,mode);
exit(1);
}
return f;
}
void mkgv(void)
{
int i,x,y,b,p;
char cbuf[24]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
in=fileopen("vga.spr","rb");
#ifdef ARM
fprintf(out,"Uint3 vgazero480[]={\n");
for (y=0;y<30;y++)
run(cbuf,16,y==29);
for (i=0;i<nspr;i++) {
fread(buf,1024,1,in);
if (i<80 || i>=95) { /* Normal data */
fprintf(out,"Uint3 vga%s[]={\n",gnames[i]);
for (y=0;y<(heights[i]<<1);y++) {
for (x=0;x<(widths[i]<<2);x++) {
cbuf[x]=0;
for (b=0;b<2;b++)
if (buf[(y<<5)+(x<<1)+b]!=0xff)
cbuf[x]|=buf[(y<<5)+(x<<1)+b]<<(b<<2);
}
run(cbuf,widths[i]<<2,y==(heights[i]<<1)-1);
}
}
if (i>=87 && i<95) { /* Background data */
fprintf(out,"Uint3 vga%s[]={\n",gnames[i]);
for (y=0;y<8;y++) {
for (x=0;x<16;x++) {
cbuf[x]=0;
for (b=0;b<2;b++)
cbuf[x]|=buf[(y<<5)+(x<<1)+b]<<(b<<2);
}
for (x=0;x<4;x++) {
cbuf[16+x]=0;
for (b=0;b<2;b++)
cbuf[16+x]|=buf[(y<<5)+(x<<1)+512+b]<<(b<<2);
}
run(cbuf,widths[i]<<2,y==7);
}
}
if (i==80 || i==81) { /* Tall masks */
fprintf(out,"Uint3 vga%smask[]={\n",gnames[i]);
for (y=0;y<32;y++) {
for (x=0;x<(widths[i]<<2);x++) {
cbuf[x]=0;
for (b=0;b<2;b++)
if (buf[(y<<5)+(x<<1)+b]&15)
cbuf[x]|=15<<(b<<2);
}
run(cbuf,widths[i]<<2,FALSE);
}
for (y=0;y<4;y++) {
for (x=0;x<(widths[i]<<2);x++) {
cbuf[x]=0;
for (b=0;b<2;b++)
if (buf[(y<<5)+(x<<1)+b+16]&15)
cbuf[x]|=15<<(b<<2);
}
run(cbuf,widths[i]<<2,y==3);
}
}
if (i>=82 && i<86) { /* Wide masks */
fprintf(out,"Uint3 vga%smask[]={\n",gnames[i]);
for (y=0;y<(heights[i]<<1);y++) {
for (x=0;x<16;x++) {
cbuf[x]=0;
for (b=0;b<2;b++)
if (buf[(y<<5)+(x<<1)+b]&15)
cbuf[x]|=15<<(b<<2);
}
for (x=0;x<8;x++) {
cbuf[x+16]=0;
for (b=0;b<2;b++)
if (buf[(y<<5)+(x<<1)+512+b]&15)
cbuf[x+16]|=15<<(b<<2);
}
run(cbuf,widths[i]<<2,y==(heights[i]<<1)-1);
}
}
if (i<80 || i>=95 || i==86) { /* Normal masks */
fprintf(out,"Uint3 vga%smask[]={\n",gnames[i]);
for (y=0;y<(heights[i]<<1);y++) {
for (x=0;x<(widths[i]<<2);x++) {
cbuf[x]=0;
for (b=0;b<2;b++)
if (buf[(y<<5)+(x<<1)+b]&128)
cbuf[x]|=15<<(b<<2);
}
run(cbuf,widths[i]<<2,y==(heights[i]<<1)-1);
}
}
}
#else
fprintf(out,"Uint3 vgazero480[]={\n");
for (y=0;y<120;y++)
run(cbuf,4,y==119);
for (i=0;i<nspr;i++) {
fread(buf,1024,1,in);
if (i<80 || i>=95) { /* Normal data */
fprintf(out,"Uint3 vga%s[]={\n",gnames[i]);
for (p=8;p>0;p>>=1)
for (y=0;y<(heights[i]<<1);y++) {
for (x=0;x<widths[i];x++) {
cbuf[x]=0;
for (b=0;b<8;b++)
if ((buf[(y<<5)+(x<<3)+b]&p) && buf[(y<<5)+(x<<3)+b]!=0xff)
cbuf[x]|=128>>b;
}
run(cbuf,widths[i],y==(heights[i]<<1)-1 && p==1);
}
}
if (i>=87 && i<95) { /* Background data */
fprintf(out,"Uint3 vga%s[]={\n",gnames[i]);
for (p=8;p>0;p>>=1)
for (y=0;y<8;y++) {
for (x=0;x<4;x++) {
cbuf[x]=0;
for (b=0;b<8;b++)
if (buf[(y<<5)+(x<<3)+b]&p)
cbuf[x]|=128>>b;
}
cbuf[4]=0;
for (b=0;b<8;b++)
if (buf[(y<<5)+b+512]&p)
cbuf[4]|=128>>b;
run(cbuf,widths[i],y==7 && p==1);
}
}
if (i==80 || i==81) { /* Tall masks */
fprintf(out,"Uint3 vga%smask[]={\n",gnames[i]);
for (y=0;y<32;y++) {
for (x=0;x<widths[i];x++) {
cbuf[x]=0;
for (b=0;b<8;b++)
if (buf[(y<<5)+(x<<3)+b]&15)
cbuf[x]|=128>>b;
}
run(cbuf,widths[i],FALSE);
}
for (y=0;y<4;y++) {
for (x=0;x<widths[i];x++) {
cbuf[x]=0;
for (b=0;b<8;b++)
if (buf[(y<<5)+(x<<3)+b+16]&15)
cbuf[x]|=128>>b;
}
run(cbuf,widths[i],y==3);
}
}
if (i>=82 && i<86) { /* Wide masks */
fprintf(out,"Uint3 vga%smask[]={\n",gnames[i]);
for (y=0;y<(heights[i]<<1);y++) {
for (x=0;x<4;x++) {
cbuf[x]=0;
for (b=0;b<8;b++)
if (buf[(y<<5)+(x<<3)+b]&15)
cbuf[x]|=128>>b;
}
for (x=0;x<2;x++) {
cbuf[x+4]=0;
for (b=0;b<8;b++)
if (buf[((y+16)<<5)+(x<<3)+b]&15)
cbuf[x+4]|=128>>b;
}
run(cbuf,widths[i],y==(heights[i]<<1)-1);
}
}
if (i<80 || i>=95 || i==86) { /* Normal masks */
fprintf(out,"Uint3 vga%smask[]={\n",gnames[i]);
for (y=0;y<(heights[i]<<1);y++) {
for (x=0;x<widths[i];x++) {
cbuf[x]=0;
for (b=0;b<8;b++)
if (buf[(y<<5)+(x<<3)+b]&128)
cbuf[x]|=128>>b;
}
run(cbuf,widths[i],y==(heights[i]<<1)-1);
}
}
}
#endif
fclose(in);
fprintf(out,"Uint3 near *vgatable[]={\n"
" vgazero480, vgaediggermask, /* 0 */\n"
" vgardigger1, vgardigger1mask,\n"
" vgardigger2, vgardigger2mask,\n"
" vgardigger3, vgardigger3mask,\n"
" vgarxdigger1, vgarxdigger1mask,\n"
" vgarxdigger2, vgarxdigger2mask, /* 5 */\n"
" vgarxdigger3, vgarxdigger3mask,\n"
" vgaudigger1, vgaudigger1mask,\n"
" vgaudigger2, vgaudigger2mask,\n"
" vgaudigger3, vgaudigger3mask,\n"
" vgauxdigger1, vgauxdigger1mask, /* 10 */\n"
" vgauxdigger2, vgauxdigger2mask,\n"
" vgauxdigger3, vgauxdigger3mask,\n"
" vgaldigger1, vgaldigger1mask,\n"
" vgaldigger2, vgaldigger2mask,\n"
" vgaldigger3, vgaldigger3mask, /* 15 */\n"
" vgalxdigger1, vgalxdigger1mask,\n"
" vgalxdigger2, vgalxdigger2mask,\n"
" vgalxdigger3, vgalxdigger3mask,\n"
" vgaddigger1, vgaddigger1mask,\n"
" vgaddigger2, vgaddigger2mask, /* 20 */\n"
" vgaddigger3, vgaddigger3mask,\n"
" vgadxdigger1, vgadxdigger1mask,\n"
" vgadxdigger2, vgadxdigger2mask,\n"
" vgadxdigger3, vgadxdigger3mask,\n"
" vgadiggerd, vgadiggerdmask, /* 25 */\n"
" vgagrave1, vgagrave1mask,\n"
" vgagrave2, vgagrave2mask,\n"
" vgagrave3, vgagrave3mask,\n"
" vgagrave4, vgagrave4mask,\n"
" vgagrave5, vgagrave5mask, /* 30 */\n"
"\n"
" vgazero480, vgaediggermask,\n"
" vgarbigger1, vgarbigger1mask,\n"
" vgarbigger2, vgarbigger2mask,\n"
" vgarbigger3, vgarbigger3mask,\n"
" vgarxbigger1, vgarxbigger1mask, /* 35 */\n"
" vgarxbigger2, vgarxbigger2mask,\n"
" vgarxbigger3, vgarxbigger3mask,\n"
" vgaubigger1, vgaubigger1mask,\n"
" vgaubigger2, vgaubigger2mask,\n"
" vgaubigger3, vgaubigger3mask, /* 40 */\n"
" vgauxbigger1, vgauxbigger1mask,\n"
" vgauxbigger2, vgauxbigger2mask,\n"
" vgauxbigger3, vgauxbigger3mask,\n"
" vgalbigger1, vgalbigger1mask,\n"
" vgalbigger2, vgalbigger2mask, /* 45 */\n"
" vgalbigger3, vgalbigger3mask,\n"
" vgalxbigger1, vgalxbigger1mask,\n"
" vgalxbigger2, vgalxbigger2mask,\n"
" vgalxbigger3, vgalxbigger3mask,\n"
" vgadbigger1, vgadbigger1mask, /* 50 */\n"
" vgadbigger2, vgadbigger2mask,\n"
" vgadbigger3, vgadbigger3mask,\n"
" vgadxbigger1, vgadxbigger1mask,\n"
" vgadxbigger2, vgadxbigger2mask,\n"
" vgadxbigger3, vgadxbigger3mask, /* 55 */\n"
" vgabiggerd, vgabiggerdmask,\n"
" vgagrave1, vgagrave1mask,\n"
" vgagrave2, vgagrave2mask,\n"
" vgagrave3, vgagrave3mask,\n"
" vgagrave4, vgagrave4mask, /* 60 */\n"
" vgagrave5, vgagrave5mask,\n"
"\n"
" vgasbag, vgasbagmask,\n"
" vgarbag, vgarbagmask,\n"
" vgalbag, vgalbagmask,\n"
" vgafbag, vgafbagmask, /* 65 */\n"
" vgagold1, vgagold1mask,\n"
" vgagold2, vgagold2mask,\n"
" vgagold3, vgagold3mask,\n"
"\n"
" vganobbin1, vganobbin1mask,\n"
" vganobbin2, vganobbin2mask, /* 70 */\n"
" vganobbin3, vganobbin3mask,\n"
" vganobbind, vganobbindmask,\n"
" vgarhobbin1, vgarhobbin1mask,\n"
" vgarhobbin2, vgarhobbin2mask,\n"
" vgarhobbin3, vgarhobbin3mask, /* 75 */\n"
" vgarhobbind, vgarhobbindmask,\n"
" vgalhobbin1, vgalhobbin1mask,\n"
" vgalhobbin2, vgalhobbin2mask,\n"
" vgalhobbin3, vgalhobbin3mask,\n"
" vgalhobbind, vgalhobbindmask, /* 80 */\n"
"\n"
" vgabonus, vgaediggermask,\n"
"\n"
" vgafire1, vgafire1mask,\n"
" vgafire2, vgafire2mask,\n"
" vgafire3, vgafire3mask,\n"
" vgaexp1, vgaexp1mask, /* 85 */\n"
" vgaexp2, vgaexp2mask,\n"
" vgaexp3, vgaexp3mask,\n"
"\n"
" vgafire1, vgafire1mask,\n"
" vgafire2, vgafire2mask,\n"
" vgafire3, vgafire3mask, /* 90 */\n"
" vgaexp1, vgaexp1mask,\n"
" vgaexp2, vgaexp2mask,\n"
" vgaexp3, vgaexp3mask,\n"
"\n"
" vgaback1, vgazero480,\n"
" vgaback2, vgazero480, /* 95 */\n"
" vgaback3, vgazero480,\n"
" vgaback4, vgazero480,\n"
" vgaback5, vgazero480,\n"
" vgaback6, vgazero480,\n"
" vgaback7, vgazero480, /* 100 */\n"
" vgaback8, vgazero480,\n"
"\n"
" vgazero480, vgarightblobmask,\n"
" vgazero480, vgatopblobmask,\n"
" vgazero480, vgaleftblobmask,\n"
" vgazero480, vgabottomblobmask, /* 105 */\n"
" vgazero480, vgasquareblobmask,\n"
" vgazero480, vgafurryblobmask,\n"
"\n"
" vgaemerald, vgaemeraldmask,\n"
" vgazero480, vgaemeraldmask,\n"
"\n"
" vgaliferight, vgaliferightmask, /* 110 */\n"
" vgalifeleft, vgalifeleftmask,\n"
" vgazero480, vgaelifemask,\n"
" vgaleftlife, vgaleftlifemask,\n"
"\n"
" vgafire1b, vgafire1bmask,\n"
" vgafire2b, vgafire2bmask, /* 115 */\n"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -