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