If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Super TV Test Version 4.12

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Super TV Test Version 4.12

Also known as: Super TV Test Versiya 4.12
Platform: Unlicensed NES


SourceIcon.png This game has uncompiled source code.


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);
}