the cutting room mirror

Super TV Test Version 4.12

The best TV test you ever heard of. This isn't your Grandma's TV test, this is a super one. There isn't much to say, it's a TV tester for the NES. Cool...?

Source Code#

Present at the end of the ROM is a whole bunch of C code for a file converter and parser.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <conio.h>
#include <dos.h>
#include <dir.h>
#include <direct.h>
#include <io.h>
#include <fcntl.h>
#include <sys\stat.h>


    int  result1 = 0,result2 = 0;

FILE *stream;

unsigned char uuu,mlc,stc;
unsigned char far mc[65500],mass[31000],pl1[8000],pl2[8000];
unsigned char far pl3[4100],pl4[1100],pl5[5200];
unsigned char far *bufr;
unsigned char kyb[20][20];
int gdriver = DETECT, gmode, errorcode;
int high,low,handle;
int basa; //смещение кодов
long dlina;
char *ptpt;
FILE *fp;
int i,cnt,chr;
int x_razm,y_razm,xko,yko;
int nomb,bit,k,l,m,n,mk,x,y,xm,xnm,ynm,r,mx,xc,yc,b1,b2,kybbit,pl1bit,pl2bit,oct;
int xdef,ydef; //размер по x,y
int pl; //длина массива pl5[]
long cur_disc,prinpri,symcol[20],symbit[5],kerr;
char cur_dir[80];
long xren;
kerr=0;


char namef[]="col.bmp           ", outf[]="0";


void main ( int argc, char *argv[] )
{
int nomb,bit,k,l,m,n,mk,x,y,xm,xnm,ynm,r,mx,xc,yc,b1,b2,kybbit,pl1bit,pl2bit,oct;
int xdef,ydef; //размер по x,y
int pl; //длина массива pl5[]
long cur_disc,prinpri,symcol[20],symbit[5],kerr;
char cur_dir[80];
long xren;
kerr=0;
clrscr();


         if (argc>1)
         {
         strcpy(namef,argv[1]);
         ptpt=strchr(namef,'.');
          if(!ptpt)
         strcpy(&namef[strlen(namef)],".bmp");

         }

lab644:;

  getcurdir(0,cur_dir);



if ((handle = _open(namef, O_RDWR)) == -1)
{
   printf("Ошибка открытия файла!");
   goto lab666;
}
dlina=filelength(handle);
_read(handle, mass,dlina);
_close(handle);
if(xren>32700)
{
        printf("BMP файл: %s\n\n",namef);
        printf("Слишком большой файл!");
        goto lab666;
}

                   mk=128;
stream = fopen("othet.txt", "w+");

    for(y=0;y<y_razm;y++)
     for(x=0;x<xm;x++)
         {
         printf(stream,"Пepeбop цвeтa в кубe X=[%d] Y=[%d] Col=[%d]\n",x,y,mc[x+y*xm]);

         kerr+=1;
         }
      if (mk==1) mk=256;
      mk=mk/2;
      if(x>=xm-1) mk=128;
      }
fclose(stream);



if (x+basa>256)
{
        printf("BMP файл: %s\n\n",namef);
        printf("Число точек по X: %d\n",x_razm*2);
        printf("Число точек по Y: %d\n",y_razm);
        printf("Слишком большой файл!");
        goto lab666;
}

if (metodc==1)
{
  if (xdef*ydef+basa>256)
  {
        printf("BMP файл: %s\n\n",namef);
        printf("Число точек по X: %d\n",x_razm*2);
        printf("Число точек по Y: %d\n",y_razm);
        printf("Число символов: %d\n",xdef*ydef);
        printf("Смещение кодов символов: %d\n\n",basa);
        printf("Слишком большой файл!");
        goto lab666;
  }

  for (r=0;r<xdef*ydef;r++)
  {
    pl4[r]=r+basa;
  }
  x=xdef*ydef;
}

if (metodd==1&&metode==0)
  {
        printf("BMP файл: %s\n\n",namef);
        printf("Попытка сжатия твердого графического файла!");
        goto lab666;
  }

if (metodc==1&&metodf==0)
  {
        printf("BMP файл: %s\n\n",namef);
        printf("Попытка сжатия твердого кодирующего файла!");
        goto lab666;
  }

pl=0;
if (metodg==1)
{
  pl5[0]=xdef, pl5[1]=ydef, pl5[2]=basa, pl5[3]=x, pl5[4]=metod;
  pl5[5]=0, pl5[6]=0, pl+=7;
}

if (metodf==0)
{
r=1;
for (k=1;k<xdef*ydef;k++)

if ((metodf==1&&metodd==1)||(metodf==1&&metodc==0))
{
  for (k=0;k<xdef*ydef;k++) pl5[pl]=pl4[k],pl++;
}

if (metode==0)
{
  if (r>3) pl5[pl]=253,pl++,pl5[pl]=r,pl++,pl5[pl]=pl3[k-1+basa*16],pl++;
  else  for (m=0;m<r;m++) pl5[pl]=pl3[k-1+basa*16],pl++;
}

if (metode==1&&metodd==0)
{
for (k=0;k<x*16;k++) pl5[pl]=pl3[k+basa*16],pl++;
}


if (metodg==1) pl5[5]=div(pl-7,256).rem, pl5[6]=div(pl-7,256).quot;

//******** Конец преобразования выходного массива *********


if ((handle = _creat("bmpout.dat", 0)) < 0)
{
  perror("Unable to create output file");
  goto lab666;
}
_write(handle,&pl5[0],pl);
_close(handle);  //кодовый рабочий файл

if (metodd==1)
{
  if ((handle = _creat("bmpout.grf", 0)) < 0)
  {
    perror("Unable to create output file");
    goto lab666;
  }
  _write(handle,&pl3[basa*16],x*16);
  _close(handle);  //графический рабочий файл
:;
}



  setdisk(3);
  chdir(cur_dir);
  chdir("\\");
        printf("\n");
        printf("Число точек [символов] по X: %d [%d]\n",x_razm*2,xdef);
        printf("Число точек [символов] по Y: %d [%d]\n",y_razm,ydef);
        printf("Общее число символов: %d\n",xdef*ydef);
        printf("Входной BMP файл: %s\n",namef);
        printf("Выходные DEN файлы: *bmp.dat - стандартный, *chm.dat - оптимизированный\n");
        printf("\n\nКонец преобразования.");

getch();
exit(0);
}