TETMAK10.C

C source for Tetrisk, 77 lines. Raw file

// Theres A Popular Misconception Says We Havent Seen Anything Yet.
// makes file TETRISK.V10

#include <dos.h>
#include <stdio.h>

struct pal
  {
    char r, g, b;
  } p[256];

unsigned char far *screen = MK_FP(0xA000, 0);
union REGS regs;

void main(void)
  {
    unsigned int i, r, g, b, x, y;
    FILE *in;
    FILE *out;

    in = fopen("tetriskw.bmp", "rb");
    out = fopen("tetrisk.v10", "wb");

    regs.x.ax = 0x13;
    int86(0x10, &regs, &regs);

    fputs("TR", out);   //  Magic 'TR'.
    fputc(0x01, out);	//  Major ver num.
    fputc(0x00, out);   //  Minor ver num.
    fputs("............", out);

    fseek(in, 0x36, SEEK_SET);

    for(i = 0; i < 256; i ++)
      {
        p[i].b = fgetc(in)/4;
        p[i].g = fgetc(in)/4;
        p[i].r = fgetc(in)/4;
            fgetc(in);
        fputc(p[i].r, out);
        fputc(p[i].g, out);
        fputc(p[i].b, out);
      };

    regs.x.ax = 0x1012;
    regs.x.bx = 0;
    regs.x.cx = 256;
    regs.x.dx = FP_OFF(p);
    _ES = FP_SEG(p);
    int86(0x10, &regs, &regs);

    for(y = 0; y < 200; y ++)
      for(x = 0; x < 320; x ++)
        {
	  screen[y*320+x] = fgetc(in);
          fputc(screen[y*320+x], out);
        };

    fclose(in);
    in = fopen("tetriskc.bmp", "rb");

    fseek(in, 0x436, SEEK_SET);

    for(y = 0; y < 200; y ++)
      for(x = 0; x < 320; x ++)
        {
	  screen[y*320+x] = fgetc(in);
          fputc(screen[y*320+x], out);
        };


    fclose(in);
    fclose(out);

  };