#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
  int frameodd = 0;
  FILE *f = fopen("vectors.bin", "rw");
  FILE *vecs = fopen("vectors.h", "w");
  FILE *framestarts = fopen("frames.h", "w");
  long addr = 0L;
  long vecindex = 0L;
  long frameno = 0L;
  int c;

  fprintf(vecs, "unsigned char vecs[] = {\n");
  fprintf(framestarts, "unsigned int frames[] = {\n");
  for (;;) {
    c = fgetc(f);
    if (feof(f)) {
      /* fprintf(stdout, "End of file at %08lx\n", addr); */
/*      fprintf(stdout, "  globals->frameno = 0L;\n  return;\n", addr);*/
        fprintf(vecs, "\n} /* End of file */;\n");
        fprintf(framestarts, "\n -1\n};\n");
        exit(0);
      break;
    }
    /* fprintf(stdout, "%08lx:\n", addr);*/
    addr += 1L;
    c &= 255;
    switch (c) {
    case 1:  /* vector */
      {int FromX, FromY, ToX, ToY, Col;
       Col = fgetc(f)&255;
       FromX = (fgetc(f)&255) + ((fgetc(f)&255)<<8);
       FromY = (fgetc(f)&255) + ((fgetc(f)&255)<<8);
       ToX = (fgetc(f)&255) + ((fgetc(f)&255)<<8);
       ToY = (fgetc(f)&255) + ((fgetc(f)&255)<<8);

       FromX = FromX/5-22; FromY = 127-(FromY/6);
       ToX = ToX/5-22; ToY = 127-(ToY/6);

       if (FromX < 0) FromX = 0;
       if (FromY < 0) FromY = 0;
       if (ToX < 0) ToX = 0;
       if (ToY < 0) ToY = 0;

       if (FromX > 159) FromX = 159;
       if (FromY > 127) FromY = 127;
       if (ToX  > 159) ToX = 159;
       if (ToY > 127) ToY = 127;

       if (FromX == ToX && FromY == ToY) ToX += 1;


       if ((abs(FromX - ToX) < 0) && (abs(FromY - ToY) < 0)) {
         fprintf(vecs, "/* %08lx: point(%d, %d,%d) */\n", addr, Col, FromX, FromY);
       } else {
         if ((frameodd&1) == 0) {
           vecindex += 4;
           fprintf(vecs, "  %d,%d,  %d,%d, /* %d */\n",
             /*addr, Col,*/ FromX, FromY, ToX, ToY, frameodd);
	 } else {
           fprintf(vecs, "  /* %d,%d,  %d,%d, [%d] */\n",
             /*addr, Col,*/ FromX, FromY, ToX, ToY, frameodd);
	 }
       }

       addr += 9L;
      }
      continue;
    case 2:  /* clear */
      frameno += 1L;
      if (frameno >= 0) {
        /* fprintf(stdout, "  globals->frameno = %0ld;\n  break;\n  case %0ld:\n",
          frameno, frameno); */
      }
      if ((frameodd&1) == 0) {
        fprintf(framestarts, "  /* ");
      } else {
        fprintf(framestarts, "  ");
      }
      fprintf(framestarts, "%ld", vecindex);
      if ((frameodd&1) == 0) {
        fprintf(framestarts, " [%d] */\n", ++frameodd);
      } else {
        fprintf(framestarts, ", /* %d */\n", ++frameodd);
      }

      if (vecindex >= (1024*31)) {
        fprintf(vecs, "\n};\n");
        fprintf(framestarts, "\n  %ld\n};\n", vecindex);
        exit(0);
      }
      continue;
    default:
      fprintf(stdout, "%08lx: Corrupt data: %d\n", addr, c);
      break;
    }
  }
  return(0);
}
/*

00000000:
00000001: clear()
00000001:
00000002: point(1, 191,526)
0000000b:
0000000c: point(1, 692,467)
00000015:
00000016: point(1, 684,433)
0000001f:
00000020: point(1, 428,445)
00000029:
0000002a: point(1, 498,105)
00000033:
00000034: point(1, 472,678)
0000003d:
0000003e: point(1, 392,661)
00000047:
00000048: point(1, 537,458)
00000051:
00000052: point(1, 861,441)
0000005b:
0000005c: point(1, 50,345)
00000065:
00000066: point(1, 396,404)
0000006f:
00000070: point(1, 598,364)
00000079:
0000007a: point(1, 717,246)
00000083:
00000084: point(1, 683,605)
0000008d:
0000008e: point(1, 799,241)
00000097:
00000098: point(1, 285,500)
000000a1:
000000a2: line(1,  150,650,  166,650)
000000ab:
000000ac: line(1,  166,650,  166,662)
000000b5:
000000b6: line(1,  166,662,  150,662)
000000bf:
000000c0: line(1,  150,662,  150,674)
000000c9:
000000ca: line(1,  150,674,  166,674)
000000d3:
000000d4: line(1,  190,650,  174,650)
000000dd:
000000de: line(1,  174,650,  174,674)
000000e7:
000000e8: line(1,  174,674,  190,674)
000000f1:
000000f2: line(1,  198,674,  214,674)
000000fb:
000000fc: line(1,  214,674,  214,650)
00000105:
00000106: line(1,  214,650,  198,650)
0000010f:
00000110: line(1,  198,650,  198,674)
00000119:
0000011a: line(1,  238,650,  234,662)
00000123:
00000124: line(1,  222,662,  238,662)
0000012d:
0000012e: line(1,  238,662,  238,674)
00000137:
00000138: line(1,  238,674,  222,674)
00000141:
00000142: line(1,  222,674,  222,650)
0000014b:
0000014c: line(1,  262,650,  246,650)
00000155:
00000156: line(1,  246,650,  246,674)
0000015f:
00000160: line(1,  246,662,  254,662)
00000169:
0000016a: line(1,  246,674,  262,674)
00000173:
00000174: line(1,  160,600,  176,600)
0000017d:
0000017e: line(1,  176,600,  176,612)
00000187:
00000188: line(1,  176,612,  160,612)
00000191:
00000192: line(1,  160,612,  160,624)
0000019b:
0000019c: line(1,  160,624,  176,624)
000001a5:
000001a6: line(1,  192,600,  200,624)
000001af:
000001b0: line(1,  200,624,  184,624)
000001b9:
000001ba: line(1,  208,624,  208,612)
000001c3:
000001c4: line(1,  208,612,  224,612)
000001cd:
000001ce: line(1,  224,624,  224,600)
000001d7:
000001d8: line(1,  232,600,  248,600)
000001e1:
000001e2: line(1,  240,612,  248,612)
000001eb:
000001ec: line(1,  248,600,  248,624)
000001f5:
000001f6: line(1,  248,624,  232,624)
000001ff:
00000200: line(1,  700,662,  716,662)
00000209:
0000020a: line(1,  716,674,  716,650)
00000213:
00000214: line(1,  700,674,  700,650)
0000021d:
0000021e: line(1,  732,674,  732,650)
00000227:
00000228: line(1,  756,662,  764,662)
00000231:
00000232: line(1,  764,662,  764,650)
0000023b:
0000023c: line(1,  764,650,  748,650)
00000245:
00000246: line(1,  748,650,  748,674)
0000024f:
00000250: line(1,  748,674,  764,674)
00000259:
0000025a: line(1,  772,662,  788,662)
00000263:
00000264: line(1,  788,674,  788,650)
0000026d:
0000026e: line(1,  772,674,  772,650)
00000277:
00000278: line(1,  820,650,  836,650)
00000281:
00000282: line(1,  836,650,  836,662)
0000028b:
0000028c: line(1,  836,662,  820,662)
00000295:
00000296: line(1,  820,662,  820,674)
0000029f:
000002a0: line(1,  820,674,  836,674)
000002a9:
000002aa: line(1,  860,650,  844,650)
000002b3:
000002b4: line(1,  844,650,  844,674)
000002bd:
000002be: line(1,  844,674,  860,674)
000002c7:
000002c8: line(1,  868,674,  884,674)
000002d1:
000002d2: line(1,  884,674,  884,650)
000002db:
000002dc: line(1,  884,650,  868,650)
000002e5:
000002e6: line(1,  868,650,  868,674)
000002ef:
000002f0: line(1,  908,650,  904,662)
000002f9:
000002fa: line(1,  892,662,  908,662)
00000303:
00000304: line(1,  908,662,  908,674)
0000030d:
0000030e: line(1,  908,674,  892,674)
00000317:
00000318: line(1,  892,674,  892,650)
00000321:
00000322: line(1,  932,650,  916,650)
0000032b:
0000032c: line(1,  916,650,  916,674)
00000335:
00000336: line(1,  916,662,  924,662)
0000033f:
00000340: line(1,  916,674,  932,674)
00000349:
0000034a: line(1,  760,600,  776,600)
00000353:
00000354: line(1,  776,600,  776,612)
0000035d:
0000035e: line(1,  776,612,  760,612)
00000367:
00000368: line(1,  760,612,  760,624)
00000371:
00000372: line(1,  760,624,  776,624)
0000037b:
0000037c: line(1,  792,600,  800,624)
00000385:
00000386: line(1,  800,624,  784,624)
0000038f:
00000390: line(1,  808,624,  808,612)
00000399:
0000039a: line(1,  808,612,  824,612)
000003a3:
000003a4: line(1,  824,624,  824,600)
000003ad:
000003ae: line(1,  832,600,  848,600)
000003b7:
000003b8: line(1,  840,612,  848,612)
000003c1:
000003c2: line(1,  848,600,  848,624)
000003cb:
000003cc: line(1,  848,624,  832,624)
000003d5:
000003d6: line(1,  479,385,  544,385)
000003df:
000003e0: line(1,  544,385,  543,383)
000003e9:
000003ea: line(1,  543,383,  480,383)
000003f3:
000003f4: line(1,  480,383,  479,385)
000003fd:
000003fe: line(1,  475,385,  549,385)
00000407:
00000408: line(1,  549,385,  547,382)
00000411:
00000412: line(1,  547,382,  476,382)
0000041b:
0000041c: line(1,  476,382,  475,385)
00000425:
00000426: line(1,  492,385,  502,385)
0000042f:
00000430: line(1,  504,384,  507,385)
00000439:
0000043a: line(1,  507,385,  511,384)
00000443:
00000444: line(1,  506,384,  509,384)
0000044d:
0000044e: line(1,  523,384,  530,384)
00000457:
00000458: line(1,  533,384,  540,384)
00000461:
00000462: point(1, 65535,65535)
End of file at 0000046b


00000000: 02 01 01 bf 00 0e 02 bf 00 0e 02 01 01 b4 02 d3  : ...............
00000010: 01 b4 02 d3 01 01 01 ac 02 b1 01 ac 02 b1 01 01  : ...............
00000020: 01 ac 01 bd 01 ac 01 bd 01 01 01 f2 01 69 00 f2  : ...........i..
00000030: 01 69 00 01 01 d8 01 a6 02 d8 01 a6 02 01 01 88  : .i...........
00000040: 01 95 02 88 01 95 02 01 01 19 02 ca 01 19 02 ca  : ...............
00000050: 01 01 01 5d 03 b9 01 5d 03 b9 01 01 01 32 00 59  : ...]...].....2.Y
00000060: 01 32 00 59 01 01 01 8c 01 94 01 8c 01 94 01 01  : .2.Y..........
00000070: 01 56 02 6c 01 56 02 6c 01 01 01 cd 02 f6 00 cd  : .V.l.V.l........
00000080: 02 f6 00 01 01 ab 02 5d 02 ab 02 5d 02 01 01 1f  : .......]...]....
00000090: 03 f1 00 1f 03 f1 00 01 01 1d 01 f4 01 1d 01 f4  : ..............
000000a0: 01 01 01 96 00 8a 02 a6 00 8a 02 01 01 a6 00 8a  : ...-.......
000000b0: 02 a6 00 96 02 01 01 a6 00 96 02 96 00 96 02 01  : ..-....-.-.-..
000000c0: 01 96 00 96 02 96 00 a2 02 01 01 96 00 a2 02 a6  : .-.-.-....-..
000000d0: 00 a2 02 01 01 be 00 8a 02 ae 00 8a 02 01 01 ae  : ..........
000000e0: 00 8a 02 ae 00 a2 02 01 01 ae 00 a2 02 be 00 a2  : .........
000000f0: 02 01 01 c6 00 a2 02 d6 00 a2 02 01 01 d6 00 a2  : ...........
00000100: 02 d6 00 8a 02 01 01 d6 00 8a 02 c6 00 8a 02 01  : ...........
00000110: 01 c6 00 8a 02 c6 00 a2 02 01 01 ee 00 8a 02 ea  : ............
00000120: 00 96 02 01 01 de 00 96 02 ee 00 96 02 01 01 ee  : .-....-..-...
00000130: 00 96 02 ee 00 a2 02 01 01 ee 00 a2 02 de 00 a2  : .-........
00000140: 02 01 01 de 00 a2 02 de 00 8a 02 01 01 06 01 8a  : ...........
00000150: 02 f6 00 8a 02 01 01 f6 00 8a 02 f6 00 a2 02 01  : .............
00000160: 01 f6 00 96 02 fe 00 96 02 01 01 f6 00 a2 02 06  : ...-...-.......
00000170: 01 a2 02 01 01 a0 00 58 02 b0 00 58 02 01 01 b0  : ......X...X....
00000180: 00 58 02 b0 00 64 02 01 01 b0 00 64 02 a0 00 64  : .X...d.....d...d
00000190: 02 01 01 a0 00 64 02 a0 00 70 02 01 01 a0 00 70  : .....d...p.....p
000001a0: 02 b0 00 70 02 01 01 c0 00 58 02 c8 00 70 02 01  : ...p.....X...p..
000001b0: 01 c8 00 70 02 b8 00 70 02 01 01 d0 00 70 02 d0  : ...p..p.....p..
000001c0: 00 64 02 01 01 d0 00 64 02 e0 00 64 02 01 01 e0  : .d.....d...d....
000001d0: 00 70 02 e0 00 58 02 01 01 e8 00 58 02 f8 00 58  : .p...X.....X...X
000001e0: 02 01 01 f0 00 64 02 f8 00 64 02 01 01 f8 00 58  : ....d...d.....X
000001f0: 02 f8 00 70 02 01 01 f8 00 70 02 e8 00 70 02 01  : ...p.....p...p..
00000200: 01 bc 02 96 02 cc 02 96 02 01 01 cc 02 a2 02 cc  : ...-..-.....
00000210: 02 8a 02 01 01 bc 02 a2 02 bc 02 8a 02 01 01 dc  : .............
00000220: 02 a2 02 dc 02 8a 02 01 01 f4 02 96 02 fc 02 96  : .........-...-
00000230: 02 01 01 fc 02 96 02 fc 02 8a 02 01 01 fc 02 8a  : .....-........
00000240: 02 ec 02 8a 02 01 01 ec 02 8a 02 ec 02 a2 02 01  : .............
00000250: 01 ec 02 a2 02 fc 02 a2 02 01 01 04 03 96 02 14  : ...........-..
00000260: 03 96 02 01 01 14 03 a2 02 14 03 8a 02 01 01 04  : .-............
00000270: 03 a2 02 04 03 8a 02 01 01 34 03 8a 02 44 03 8a  : .......4..D.
00000280: 02 01 01 44 03 8a 02 44 03 96 02 01 01 44 03 96  : ...D..D.-...D.-
00000290: 02 34 03 96 02 01 01 34 03 96 02 34 03 a2 02 01  : .4.-...4.-.4...
000002a0: 01 34 03 a2 02 44 03 a2 02 01 01 5c 03 8a 02 4c  : .4..D....\..L
000002b0: 03 8a 02 01 01 4c 03 8a 02 4c 03 a2 02 01 01 4c  : ....L..L....L
000002c0: 03 a2 02 5c 03 a2 02 01 01 64 03 a2 02 74 03 a2  : ..\....d..t.
000002d0: 02 01 01 74 03 a2 02 74 03 8a 02 01 01 74 03 8a  : ...t..t....t.
000002e0: 02 64 03 8a 02 01 01 64 03 8a 02 64 03 a2 02 01  : .d....d..d...
000002f0: 01 8c 03 8a 02 88 03 96 02 01 01 7c 03 96 02 8c  : .....-...|.-..
00000300: 03 96 02 01 01 8c 03 96 02 8c 03 a2 02 01 01 8c  : .-.....-.......
00000310: 03 a2 02 7c 03 a2 02 01 01 7c 03 a2 02 7c 03 8a  : ..|....|..|.
00000320: 02 01 01 a4 03 8a 02 94 03 8a 02 01 01 94 03 8a  : ...........
00000330: 02 94 03 a2 02 01 01 94 03 96 02 9c 03 96 02 01  : ......-...-..
00000340: 01 94 03 a2 02 a4 03 a2 02 01 01 f8 02 58 02 08  : ..........X..
00000350: 03 58 02 01 01 08 03 58 02 08 03 64 02 01 01 08  : .X.....X...d....
00000360: 03 64 02 f8 02 64 02 01 01 f8 02 64 02 f8 02 70  : .d...d.....d...p
00000370: 02 01 01 f8 02 70 02 08 03 70 02 01 01 18 03 58  : .....p...p.....X
00000380: 02 20 03 70 02 01 01 20 03 70 02 10 03 70 02 01  : . .p... .p...p..
00000390: 01 28 03 70 02 28 03 64 02 01 01 28 03 64 02 38  : .(.p.(.d...(.d.8
000003a0: 03 64 02 01 01 38 03 70 02 38 03 58 02 01 01 40  : .d...8.p.8.X...@
000003b0: 03 58 02 50 03 58 02 01 01 48 03 64 02 50 03 64  : .X.P.X...H.d.P.d
000003c0: 02 01 01 50 03 58 02 50 03 70 02 01 01 50 03 70  : ...P.X.P.p...P.p
000003d0: 02 40 03 70 02 01 01 df 01 81 01 20 02 81 01 01  : .@.p..... ...
000003e0: 01 20 02 81 01 1f 02 7f 01 01 01 1f 02 7f 01 e0  : . .............
000003f0: 01 7f 01 01 01 e0 01 7f 01 df 01 81 01 01 01 db  : ..............
00000400: 01 81 01 25 02 81 01 01 01 25 02 81 01 23 02 7e  : ..%....%..#.~
00000410: 01 01 01 23 02 7e 01 dc 01 7e 01 01 01 dc 01 7e  : ...#.~...~.....~
00000420: 01 db 01 81 01 01 01 ec 01 81 01 f6 01 81 01 01  : .............
00000430: 01 f8 01 80 01 fb 01 81 01 01 01 fb 01 81 01 ff  : ..............
00000440: 01 80 01 01 01 fa 01 80 01 fd 01 80 01 01 01 0b  : ................
00000450: 02 80 01 12 02 80 01 01 01 15 02 80 01 1c 02 80  : ................
00000460: 01 01 01 1a 02 80 01 1c 02 7f 01 01 01 1c 02 80  : ................
00000470: 01 15 02 80 01 01 01 12 02 7f 01 0b 02 7f 01 01  : ................
 */

