1 #include "src/tesuto.h"
3 static unsigned char palette[768];
4 global_game_variables_t gvar;
6 int main(int argc,char **argv) {
7 struct vrl1_vgax_header *vrl_header;
8 vrl1_vgax_offset_t *vrl_lineoffs;
14 fprintf(stderr,"drawvrl <VRL file> <palette file>\n");
18 fd = open(argv[1],O_RDONLY|O_BINARY);
20 fprintf(stderr,"Unable to open '%s'\n",argv[1]);
24 unsigned long sz = lseek(fd,0,SEEK_END);
25 if (sz < sizeof(*vrl_header)) return 1;
26 if (sz >= 65535UL) return 1;
28 bufsz = (unsigned int)sz;
29 buffer = malloc(bufsz);
30 if (buffer == NULL) return 1;
33 if ((unsigned int)read(fd,buffer,bufsz) < bufsz) return 1;
35 vrl_header = (struct vrl1_vgax_header*)buffer;
36 if (memcmp(vrl_header->vrl_sig,"VRL1",4) || memcmp(vrl_header->fmt_sig,"VGAX",4)) return 1;
37 if (vrl_header->width == 0 || vrl_header->height == 0) return 1;
43 printf("VGA probe failed\n");
47 update_state_from_vga();
49 //vga_enable_256color_modex(); // VGA mode X
52 /* load color palette */
53 fd = open(argv[2],O_RDONLY|O_BINARY);
61 for (i=0;i < 256;i++) vga_palette_write(palette[(i*3)+0]>>2,palette[(i*3)+1]>>2,palette[(i*3)+2]>>2);
64 /* preprocess the sprite to generate line offsets */
65 vrl_lineoffs = vrl1_vgax_genlineoffsets(vrl_header,buffer+sizeof(*vrl_header),bufsz-sizeof(*vrl_header));
66 if (vrl_lineoffs == NULL) return 1;
68 draw_vrl1_vgax_modex(0,0,vrl_header,vrl_lineoffs,buffer+sizeof(*vrl_header),bufsz-sizeof(*vrl_header));
69 while (getch() != 13);
75 draw_vrl1_vgax_modex(i,0,vrl_header,vrl_lineoffs,buffer+sizeof(*vrl_header),bufsz-sizeof(*vrl_header));
77 while (getch() != 13);
83 draw_vrl1_vgax_modex(i,i,vrl_header,vrl_lineoffs,buffer+sizeof(*vrl_header),bufsz-sizeof(*vrl_header));
85 while (getch() != 13);
90 for (i=(2 << 6)/*200%*/;i >= (1 << 4)/*25%*/;i--)
91 draw_vrl1_vgax_modexstretch(0,0,i,vrl_header,vrl_lineoffs,buffer+sizeof(*vrl_header),bufsz-sizeof(*vrl_header));
93 while (getch() != 13);
97 for (i=(2 << 6)/*200%*/;i >= (1 << 4)/*25%*/;i--)
98 draw_vrl1_vgax_modexystretch(0,0,i,i,vrl_header,vrl_lineoffs,buffer+sizeof(*vrl_header),bufsz-sizeof(*vrl_header));
100 while (getch() != 13);
103 //VGAmodeX(0, &gvar);