Colines Vretrace demo
#include <conio.h>
#include <string.h>
struct RGB
{
char r,g,b;
}__rgb;
char far *fntptr;
void initmode()
{
asm{
mov ax,0x13
int 0x10
}
}
void pixel(int x,int y,char c)
{
if(x < 0 || y < 0 || x > 319 || y > 200)
return;
asm{
push es
mov ax,0xa000
mov es,ax
mov ax,y
mov bx,320
mul bx
add ax,x
mov di,ax
mov al,c
stosb
pop es
}
}
void closemode()
{
asm{
mov ax,0x03
int 0x10
}
}
void loadpal(void far *pal)
{
asm {
push es
mov ax,0x1012
mov bx,0
mov cx,256
les dx,pal
int 0x10
pop es
}
}
void getfntptr()
{
asm{
push es
xor ax,ax
mov es,ax
mov si,0x43*4
mov ax,es:[si]
mov word ptr [fntptr],ax
mov ax,es:[si+2]
mov word ptr [fntptr+2],ax
pop es
}
}
void drawletter(int x,int y,char color,char c)
{
char h,l,j,i;
if(x+8 < 0 || x-8 > 320)
return;
for(i=0;i<8;i++)
{
h = *(fntptr+c*8+i);
for(j=0;j<8;j++)
{
l = y+i;
asm{
mov al,h
shl al,1
mov h,al
jnc l
}
l = 210+((x+j)*4)/32;
l:;
pixel(x+j,y+i,l);
}
}
}
struct RGB pal[256],p;
int i;
int x,y,len,col;
char *str=" CoLines Intro by Dasaev Corp. *|* E-Mail : Root@Tmg.Dp.Ua *|* Programs of Dasaev Corp : DAC & DAP - freeware cracker and trainer, and some others programs ... ";
main()
{
initmode();
getfntptr();
for(i=0;i<200;i++)
{
pal[i].r = 0;
pal[i].g = 0;
pal[i].b = 0;
}
for(i=200;i<256;i++)
{
pal[i].r = i-200+3;
pal[i].g = i-200+3;
pal[i].b = i-200+3;
}
for(i=1;i<20;i++)
{
pal[i].r = i*2+10;
pal[39-i].r = i*2+10;
}
for(i=1;i<20;i++)
{
pal[i+70].g = i*2+10;
pal[39-i+70].g = i*2+10;
}
for(i=1;i<20;i++)
{
pal[i+140].b = i*2+10;
pal[39-i+140].b = i*2+10;
}
loadpal((void *)&pal);
for(i=0;i<200;i++)
{
asm{
push es
mov ax,0xa000
mov es,ax
mov ax,i
mov bx,320
mul bx
mov di,ax
mov ax,i
cld
mov cx,320
rep stosb
pop es
}
}
x = 0;
len = strlen(str);
while(!kbhit())
{
loadpal((void *)&pal);
p = pal[1];
for(i=1;i<200;i++)
pal[i] = pal[i+1];
pal[199] = p;
for(i=0;*(str+i) != 0;i++)
{
y = 320-x+(i << 3);
drawletter(y,170,col,*(str+i));
}
x++;
if(x > (len+2)*9+320)
x = 0;
}
while(kbhit()) getch();
closemode();
}