First commit 16/08/1996
This commit is contained in:
BIN
DEMO/DAC.PCX
Normal file
BIN
DEMO/DAC.PCX
Normal file
Binary file not shown.
897
DEMO/DEMO.CPP
Normal file
897
DEMO/DEMO.CPP
Normal file
@ -0,0 +1,897 @@
|
||||
//Bibliotecas
|
||||
#include <mem.h>
|
||||
#include <mem.h>
|
||||
#include<stdio.h>
|
||||
#include<conio.h>
|
||||
#include<math.h>
|
||||
#include<graphics.h>
|
||||
#include<dos.h>
|
||||
#include<ctype.h>
|
||||
#include<string.h>
|
||||
#include<stdlib.h>
|
||||
//variables constantes
|
||||
#define RES_X 640
|
||||
#define RES_Y 480
|
||||
#define ERROR 1
|
||||
#define OK 1
|
||||
#define k (2*3.14159/360)
|
||||
#define RADIO 255
|
||||
#define SALTOS_PROFUNDOS 8
|
||||
#define SALTOS_ANCHOS 7
|
||||
#define BLOQUEO_RADIO 1
|
||||
#define INCREMENTAL 1
|
||||
#define PROFUNDIDAD_TUNEL 35
|
||||
#define FACTOR_SERPIENTE 0.015F
|
||||
//estructuras y tipos
|
||||
typedef struct
|
||||
{
|
||||
unsigned char R, G, B;
|
||||
|
||||
} ColorValue;
|
||||
typedef ColorValue VGAPaletteType[256];
|
||||
VGAPaletteType Pal;
|
||||
extern int far _Cdecl Svga256_fdriver[];
|
||||
//funciones
|
||||
int MuestraImagen( char *file );
|
||||
int CargaPaleta(char *file);
|
||||
void InicializaSVGA(void);
|
||||
void InicializaSVGA(void);
|
||||
void RellenaTablas(void);
|
||||
void Put( int x, int y, char c);
|
||||
void Circulo( int x, int y, int radio, int giro, int Color );
|
||||
void CirculoB( int x, int y, int radio, int giro );
|
||||
void TunelEstrellas(void);
|
||||
void ReadPal( VGAPaletteType K );
|
||||
void WritePal( VGAPaletteType K );
|
||||
void CreaPaleta(void);
|
||||
void letrasm(char texto[100]);
|
||||
void demo1(void);
|
||||
void demo2(void);
|
||||
void demo3(void);
|
||||
void demo4(void);
|
||||
void demo5(void);
|
||||
void demo6(void);
|
||||
//variables externas
|
||||
int huge DetectVGA256(){ return 2; }
|
||||
int MuestraImagen( char *file );
|
||||
int CargaPaleta(char *file );
|
||||
int PERFECCION_CIRCULO = 8;
|
||||
int qeu = 0;
|
||||
int Incremento = -1, contador = 0;
|
||||
int XSinMov[256], YSinMov[256];
|
||||
int TSin[360+90];
|
||||
int letras[29][56]={
|
||||
//espacio en blanco
|
||||
0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,
|
||||
// la A
|
||||
0,0,0,1,1,0,0,0,
|
||||
0,0,1,1,1,1,0,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,1,1,1,1,1,1,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
// la B
|
||||
1,1,1,1,1,1,0,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,1,1,1,1,1,0,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
1,1,1,1,1,1,0,0,
|
||||
// la C
|
||||
0,0,1,1,1,1,0,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
1,1,0,0,0,0,0,0,
|
||||
1,1,0,0,0,0,0,0,
|
||||
1,1,0,0,0,0,0,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,0,1,1,1,1,0,0,
|
||||
// la D
|
||||
1,1,1,1,1,0,0,0,
|
||||
0,1,1,0,1,1,0,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,1,1,0,1,1,0,0,
|
||||
1,1,1,1,1,0,0,0,
|
||||
// la E
|
||||
1,1,1,1,1,1,1,0,
|
||||
0,1,1,0,0,0,1,0,
|
||||
0,1,1,0,1,0,0,0,
|
||||
0,1,1,1,1,0,0,0,
|
||||
0,1,1,0,1,0,0,0,
|
||||
0,1,1,0,0,0,1,0,
|
||||
1,1,1,1,1,1,1,0,
|
||||
// la F
|
||||
1,1,1,1,1,1,1,0,
|
||||
0,1,1,0,0,0,1,0,
|
||||
0,1,1,0,1,0,0,0,
|
||||
0,1,1,1,1,0,0,0,
|
||||
0,1,1,0,1,0,0,0,
|
||||
0,1,1,0,0,0,0,0,
|
||||
1,1,1,1,0,0,0,0,
|
||||
// la G
|
||||
0,0,1,1,1,1,0,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
1,1,0,0,0,0,0,0,
|
||||
1,1,0,0,0,0,0,0,
|
||||
1,1,0,0,1,1,1,0,
|
||||
1,1,0,0,0,1,1,0,
|
||||
0,1,1,1,1,1,1,0,
|
||||
// la H
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,1,1,1,1,1,1,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
// la I
|
||||
0,1,1,1,1,1,1,0,
|
||||
0,0,0,1,1,0,0,0,
|
||||
0,0,0,1,1,0,0,0,
|
||||
0,0,0,1,1,0,0,0,
|
||||
0,0,0,1,1,0,0,0,
|
||||
0,0,0,1,1,0,0,0,
|
||||
0,1,1,1,1,1,1,0,
|
||||
// la J
|
||||
0,0,0,1,1,1,1,0,
|
||||
0,0,0,0,1,1,0,0,
|
||||
0,0,0,0,1,1,0,0,
|
||||
0,0,0,0,1,1,0,0,
|
||||
1,1,0,0,1,1,0,0,
|
||||
1,1,0,0,1,1,0,0,
|
||||
0,1,1,1,1,0,0,0,
|
||||
// la K
|
||||
1,1,1,0,0,1,1,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,1,1,0,1,1,0,0,
|
||||
0,1,1,1,1,0,0,0,
|
||||
0,1,1,0,1,1,0,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
1,1,1,0,0,1,1,0,
|
||||
// la L
|
||||
1,1,1,1,0,0,0,0,
|
||||
0,1,1,0,0,0,0,0,
|
||||
0,1,1,0,0,0,0,0,
|
||||
0,1,1,0,0,0,0,0,
|
||||
0,1,1,0,0,0,1,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
1,1,1,1,1,1,1,0,
|
||||
// la M
|
||||
1,1,0,0,0,1,1,0,
|
||||
1,1,1,0,1,1,1,0,
|
||||
1,1,1,1,1,1,1,0,
|
||||
1,1,1,1,1,1,1,0,
|
||||
1,1,0,1,0,1,1,0,
|
||||
1,1,0,0,0,1,1,0,
|
||||
1,1,0,0,0,1,1,0,
|
||||
// la N
|
||||
1,1,0,0,0,1,1,0,
|
||||
1,1,1,0,0,1,1,0,
|
||||
1,1,1,1,0,1,1,0,
|
||||
1,1,0,1,1,1,1,0,
|
||||
1,1,0,0,1,1,1,0,
|
||||
1,1,0,0,0,1,1,0,
|
||||
1,1,0,0,0,1,1,0,
|
||||
// la <20>
|
||||
0,1,1,0,0,0,1,0,
|
||||
1,0,0,1,1,1,0,0,
|
||||
0,0,0,0,0,0,0,0,
|
||||
1,1,1,0,0,1,1,0,
|
||||
1,1,0,1,0,1,1,0,
|
||||
1,1,0,0,1,1,1,0,
|
||||
1,1,0,0,0,1,1,0,
|
||||
// la O
|
||||
0,0,1,1,1,0,0,0,
|
||||
0,1,1,0,1,1,0,0,
|
||||
1,1,0,0,0,1,1,0,
|
||||
1,1,0,0,0,1,1,0,
|
||||
1,1,0,0,0,1,1,0,
|
||||
0,1,1,0,1,1,0,0,
|
||||
0,0,1,1,1,0,0,0,
|
||||
// la P
|
||||
1,1,1,1,1,1,0,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,1,1,1,1,1,0,0,
|
||||
0,1,1,0,0,0,0,0,
|
||||
0,1,1,0,0,0,0,0,
|
||||
1,1,1,1,0,0,0,0,
|
||||
// la Q
|
||||
0,0,1,1,1,0,0,0,
|
||||
0,1,1,0,1,1,0,0,
|
||||
1,1,0,0,0,1,1,0,
|
||||
1,1,0,0,0,1,1,0,
|
||||
1,1,0,1,1,0,1,0,
|
||||
1,1,0,0,1,1,0,0,
|
||||
0,1,1,1,0,1,1,0,
|
||||
// la R
|
||||
1,1,1,1,1,1,0,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,1,1,1,1,1,0,0,
|
||||
0,1,1,0,1,1,0,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
1,1,1,1,0,1,1,0,
|
||||
// la S
|
||||
0,0,1,1,1,1,0,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,1,1,0,0,0,0,0,
|
||||
0,0,1,1,1,1,0,0,
|
||||
0,0,0,0,0,1,1,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,0,1,1,1,1,0,0,
|
||||
// la T
|
||||
0,1,1,1,1,1,1,0,
|
||||
0,1,0,1,1,0,1,0,
|
||||
0,0,0,1,1,0,0,0,
|
||||
0,0,0,1,1,0,0,0,
|
||||
0,0,0,1,1,0,0,0,
|
||||
0,0,0,1,1,0,0,0,
|
||||
0,0,1,1,1,1,0,0,
|
||||
// la U
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,0,1,1,1,1,0,0,
|
||||
// la V
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,0,1,1,1,1,0,0,
|
||||
0,0,0,1,1,0,0,0,
|
||||
// la W
|
||||
1,1,0,0,0,1,1,0,
|
||||
1,1,0,0,0,1,1,0,
|
||||
1,1,0,0,0,1,1,0,
|
||||
1,1,0,1,0,1,1,0,
|
||||
1,1,1,1,1,1,1,0,
|
||||
1,1,1,0,1,1,1,0,
|
||||
1,1,0,0,0,1,1,0,
|
||||
// la X
|
||||
1,1,0,0,0,1,1,0,
|
||||
0,1,1,0,1,1,0,0,
|
||||
0,0,1,1,1,0,0,0,
|
||||
0,0,1,1,1,0,0,0,
|
||||
0,1,1,0,1,1,0,0,
|
||||
1,1,0,0,0,1,1,0,
|
||||
1,1,0,0,0,1,1,0,
|
||||
// la Y
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,1,1,0,0,1,1,0,
|
||||
0,0,1,1,1,1,0,0,
|
||||
0,0,0,1,1,0,0,0,
|
||||
0,0,0,1,1,0,0,0,
|
||||
0,0,1,1,1,1,0,0,
|
||||
// la Z
|
||||
0,1,1,1,1,1,1,0,
|
||||
1,0,0,0,0,0,0,1,
|
||||
1,0,1,0,0,1,0,1,
|
||||
1,0,0,0,0,0,0,1,
|
||||
1,0,1,1,1,1,0,1,
|
||||
1,1,0,0,0,0,1,1,
|
||||
0,1,1,1,1,1,1,0,
|
||||
};
|
||||
|
||||
//Funcion principal
|
||||
void main()
|
||||
{
|
||||
int gdriver=DETECT,gmode;
|
||||
initgraph(&gdriver,&gmode,"c:\\program\\borlandc\\bgi");
|
||||
clearviewport();
|
||||
demo1();
|
||||
letrasm(" GRAFICOS IMPRESIONANTEMENTE CUTRES PA LLORA");
|
||||
demo2();
|
||||
letrasm(" HAY VA UNA CAIDITA DE LINEAS ASEXUALES");
|
||||
demo3();
|
||||
letrasm(" VAMO A DADLE A LAS IMAGENES");
|
||||
demo4();
|
||||
letrasm(" Y QUE TAL UN TUNEL INCREIBLEBLE");
|
||||
demo5();
|
||||
demo6();
|
||||
|
||||
}
|
||||
//DEMO1
|
||||
void demo1()
|
||||
{
|
||||
char texto1[100]={"OGA MUESTRA"};
|
||||
int V;
|
||||
int a=0,ac1,color;
|
||||
int i=0;
|
||||
int n[100],l;
|
||||
int c=48,c1=0,x=0,y=250;
|
||||
delay(500);
|
||||
//Flan
|
||||
l=strlen(texto1);
|
||||
for(a=0;a<l;a++)
|
||||
{
|
||||
if(toascii(texto1[a]-65)<14)
|
||||
n[a]=toascii(texto1[a]-64);
|
||||
else if(texto1[a]=='<EFBFBD>')
|
||||
n[a]=15;
|
||||
else if(texto1[a]==' ')
|
||||
n[a]=0;
|
||||
else
|
||||
n[a]=toascii(texto1[a]-63);
|
||||
}
|
||||
a=0;
|
||||
while(kbhit())getch();
|
||||
while(y>170&&!kbhit())
|
||||
{
|
||||
while(a<l)
|
||||
{
|
||||
x=x+7;
|
||||
if(letras[n[a]][c]==0||y<190) setcolor(0);
|
||||
else { randomize();color=rand() %14+1;setcolor(color);}
|
||||
for(i=1;i<10;i++)
|
||||
{
|
||||
line(x+i,1,x+i,y);
|
||||
delay(1);
|
||||
}
|
||||
c++;
|
||||
if(c==56-c1) {a++;c=48-c1;}
|
||||
}
|
||||
c1=c1+8;
|
||||
c=c-8;
|
||||
a=0;
|
||||
x=0;
|
||||
y=y-10;
|
||||
}
|
||||
sleep(1);
|
||||
//Borrado
|
||||
for(a=170;a<260;a++)
|
||||
{
|
||||
for(x=1;x<640;x++)
|
||||
{
|
||||
putpixel(x,a,0);
|
||||
}
|
||||
delay(5);
|
||||
}
|
||||
clearviewport();
|
||||
}
|
||||
|
||||
//DEMO2
|
||||
void demo2()
|
||||
{
|
||||
int b=10,p=0,i,j,cont=0,a=0,x;
|
||||
char c;
|
||||
while(cont<25&&!kbhit())
|
||||
{
|
||||
clearviewport();
|
||||
x=(rand() %14)+1;
|
||||
setcolor(x);
|
||||
for(i=0;i<360;i++)
|
||||
{
|
||||
line(320+p*cos(b*i),230+p*sin(b*i),320+p*cos(b*(i+1)),230+p*sin(b*(i+1)));
|
||||
a++;
|
||||
if (a==4)
|
||||
{
|
||||
a=0;
|
||||
p=p+4;
|
||||
}
|
||||
delay(1);
|
||||
}
|
||||
//nuevos valores para variables
|
||||
delay(500);
|
||||
b=b+1;
|
||||
p=0;
|
||||
cont++;
|
||||
}
|
||||
setcolor(0);
|
||||
for(i=0;i<480;i=i+2)
|
||||
{
|
||||
line(0,i,640,i);
|
||||
line(0,479-i,640,479-i);
|
||||
delay(20);
|
||||
}
|
||||
}
|
||||
//DEMO3
|
||||
void demo3()
|
||||
{
|
||||
int x,y,cont=0,x1,y1;
|
||||
while(cont<4&&!kbhit())
|
||||
{
|
||||
for(x=1;x<320;x++)
|
||||
{
|
||||
for(y=1;y<360;y++)
|
||||
{
|
||||
if(cont==0) {x1=y+160+x*cos(y);y1=x+10+x*sin(y);}
|
||||
if(cont==1) {x1=y+160+x*cos(y);y1=x+10+x*tan(y);}
|
||||
if(cont==2) {x1=y+160+x*cos(y);y1=x+10+x*cos(y);}
|
||||
if(cont==3) {x1=y+160+x*tan(y);y1=x+10+x*sin(y);}
|
||||
putpixel(x1,y1,cont+1);
|
||||
}
|
||||
delay(10);
|
||||
}
|
||||
sleep(1);
|
||||
cont++;
|
||||
clearviewport();
|
||||
}
|
||||
}
|
||||
//DEMO4
|
||||
void demo4()
|
||||
{
|
||||
|
||||
// Inicializamos el modo SVGA 640*480 256 c. ( VESA )
|
||||
closegraph();
|
||||
InicializaSVGA();
|
||||
MuestraImagen( "dac.pcx" );
|
||||
sleep(5);
|
||||
clearviewport();
|
||||
//closegraph();
|
||||
|
||||
}
|
||||
int MuestraImagen( char *file )
|
||||
{
|
||||
int alto, ancho, contador;
|
||||
unsigned char byte;
|
||||
FILE *fp;
|
||||
|
||||
CargaPaleta( file );
|
||||
|
||||
|
||||
if ( (fp = fopen( file,"rb")) != NULL )
|
||||
{
|
||||
// Saltamos la cabecera
|
||||
fseek( fp, 128, SEEK_SET );
|
||||
|
||||
for(alto=0; alto<RES_Y; alto++)
|
||||
{
|
||||
for(ancho=0; ancho<RES_X; )
|
||||
{
|
||||
byte=getc(fp);
|
||||
if(byte<=0xC0)
|
||||
{
|
||||
putpixel (ancho, alto, byte);
|
||||
ancho++;
|
||||
} else {
|
||||
contador=byte&0x3F; byte=getc(fp);
|
||||
for(; contador>0; contador--)
|
||||
{
|
||||
putpixel (ancho, alto, byte);
|
||||
ancho++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
fclose(fp);
|
||||
|
||||
} else return ERROR;
|
||||
|
||||
|
||||
|
||||
return OK;
|
||||
}
|
||||
int CargaPaleta(char *file)
|
||||
{
|
||||
int index;
|
||||
FILE *fp;
|
||||
|
||||
if ( (fp=fopen( file, "rb" ) ) == NULL )
|
||||
return ERROR;
|
||||
|
||||
|
||||
if ( fseek( fp, -768L, SEEK_END ) == 0 )
|
||||
{
|
||||
for (index=0; index<256; index++)
|
||||
{
|
||||
// get the red component
|
||||
// get the green component
|
||||
// get the blue component
|
||||
// set components
|
||||
setrgbpalette( index, (getc(fp) >> 2), (getc(fp) >> 2), (getc(fp) >> 2) );
|
||||
} // end for index
|
||||
|
||||
}
|
||||
|
||||
fclose( fp );
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
||||
void InicializaSVGA(void) {
|
||||
|
||||
int Gd = DETECT, Gm;
|
||||
int Drv, errorcode;
|
||||
|
||||
installuserdriver("Svga256",DetectVGA256);
|
||||
// registerfarbgidriver(Svga256_fdriver);
|
||||
|
||||
initgraph(&Gd,&Gm,"c:\\program\\borlandc\\bgi");
|
||||
|
||||
/* read result of initialization */
|
||||
errorcode = graphresult();
|
||||
|
||||
if (errorcode != grOk) /* an error occurred */
|
||||
{
|
||||
cprintf("Graphics error: %s\n", grapherrormsg(errorcode));
|
||||
cprintf("Presione una tecla para finalizar:");
|
||||
getch();
|
||||
exit(1); /* return with error code */
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//DEMO5
|
||||
void demo5()
|
||||
{
|
||||
int ok=0;
|
||||
RellenaTablas();
|
||||
// Cambiamos a modo grafico
|
||||
asm mov ax, 0x13
|
||||
asm int 0x10
|
||||
// <20> Porque no mejoramos la paleta 16x2 ?
|
||||
CreaPaleta();
|
||||
ReadPal(Pal);
|
||||
{
|
||||
auto int I, J;
|
||||
/* // (* Use this if you want to view the palette *)
|
||||
for( I=0; I<255; I++ )
|
||||
{
|
||||
for( J=0; J<20; J++ )
|
||||
Put(I,J,I);
|
||||
}
|
||||
getch();
|
||||
*/
|
||||
}
|
||||
|
||||
while( kbhit() ) getch();
|
||||
ok = 0;
|
||||
//TUNEL
|
||||
while(ok<4000&&!kbhit())
|
||||
{
|
||||
TunelEstrellas();
|
||||
ok++;
|
||||
}
|
||||
// PERFECCION_CIRCULO = 360;
|
||||
/*while( !ok )
|
||||
{
|
||||
if ( kbhit() )
|
||||
switch( getch() )
|
||||
{
|
||||
case 13:
|
||||
qeu = !qeu;
|
||||
Pal[0].R = qeu ? 255:0;
|
||||
Pal[0].G = qeu ? 255:0;
|
||||
Pal[0].B = qeu ? 255:0;
|
||||
WritePal(Pal);
|
||||
break;
|
||||
case 32:
|
||||
getch();
|
||||
break;
|
||||
case 27:
|
||||
ok = 1;
|
||||
break;
|
||||
case '+':
|
||||
PERFECCION_CIRCULO++;
|
||||
_fmemset( MK_FP( 0xA000, 0 ), 0, 320*200 );
|
||||
break;
|
||||
case '-':
|
||||
PERFECCION_CIRCULO--;
|
||||
if ( PERFECCION_CIRCULO < 1 ) PERFECCION_CIRCULO = 1;
|
||||
_fmemset( MK_FP( 0xA000, 0 ), 0, 320*200 );
|
||||
break;
|
||||
}
|
||||
*/
|
||||
|
||||
//}
|
||||
|
||||
// Cambiamos a modo texto
|
||||
asm mov ax, 3
|
||||
asm int 0x10
|
||||
|
||||
}
|
||||
//Funcion de DEMO5
|
||||
void RellenaTablas(void)
|
||||
{
|
||||
float angle;
|
||||
|
||||
angle = 0;
|
||||
while( angle < 256 )
|
||||
{
|
||||
XSinMov[angle] = YSinMov[angle] = (int)( sin( (2*M_PI*angle*1.4)/360 ) * 360) / (2*M_PI);
|
||||
YSinMov[angle] = 0;
|
||||
angle+=1;
|
||||
};
|
||||
|
||||
angle = 0;
|
||||
while( angle < (360+90) )
|
||||
{
|
||||
TSin[angle] = (int)(sin( (2*M_PI*angle)/360 ) * 360 / (2*M_PI) );
|
||||
angle+=1;
|
||||
};
|
||||
|
||||
}
|
||||
//Funcion de DEMO5
|
||||
void Put( int x, int y, char c)
|
||||
{
|
||||
if ( x < 0 || x >= 320 ) return;
|
||||
if ( y < 0 || y >= 200 ) return;
|
||||
|
||||
// { Written by Matt Sottile }
|
||||
asm mov ax,y
|
||||
asm mov bx,ax
|
||||
asm shl ax,8
|
||||
asm shl bx,6
|
||||
asm add bx,ax
|
||||
asm add bx,x
|
||||
asm mov ax,0xa000
|
||||
asm mov es,ax
|
||||
asm mov al,c
|
||||
asm mov es:[bx],al
|
||||
};
|
||||
//Funcion de DEMO5
|
||||
// Circulo con impresi<73>n de giro ( MEJORA POR JD )
|
||||
void Circulo( int x, int y, int radio, int giro, int Color )
|
||||
{
|
||||
int angle;
|
||||
|
||||
for ( angle = 0; angle < 360; angle+=PERFECCION_CIRCULO )
|
||||
Put( x + (radio*FACTOR_SERPIENTE*TSin[ (giro + angle)%360 + 90 ]), y + (radio*FACTOR_SERPIENTE*TSin[ (giro+angle)%360 ]), angle >= 0 && angle <= 50 ? (Color-PROFUNDIDAD_TUNEL) : Color );
|
||||
|
||||
};
|
||||
//Funcion de DEMO5
|
||||
// Circulo con impresi<73>n de giro ( MEJORA POR JD )
|
||||
void CirculoB( int x, int y, int radio, int giro )
|
||||
{
|
||||
int angle;
|
||||
|
||||
for ( angle = 0; angle < 360; angle+=PERFECCION_CIRCULO )
|
||||
Put( x + (radio*FACTOR_SERPIENTE*TSin[ (giro + angle)%360 + 90 ]), y + (radio*FACTOR_SERPIENTE*TSin[ (giro+angle)%360 ]), 0 );
|
||||
};
|
||||
//Funcion de DEMO5
|
||||
void TunelEstrellas(void)
|
||||
{
|
||||
int depth, Color;
|
||||
static unsigned char ZMov = 0;
|
||||
static int GiroAngular = 0;
|
||||
unsigned char Movimiento = ZMov;
|
||||
static Subidon = 255;
|
||||
|
||||
static Velocidad = 0;
|
||||
// Controles de giro por JD:
|
||||
// SUAVE ZMov
|
||||
// DURO Movimiento
|
||||
int OGiroAngular = GiroAngular = 60;
|
||||
// GiroAngular = ( GiroAngular++ ) % 360;
|
||||
|
||||
|
||||
|
||||
ZMov ++;
|
||||
Movimiento = ZMov;
|
||||
Color = 255-PROFUNDIDAD_TUNEL;
|
||||
// Color = 255;
|
||||
Velocidad++;
|
||||
if ( Velocidad == 5 )
|
||||
{
|
||||
Velocidad = 0;
|
||||
// Subidon --; if ( Subidon < 255-PROFUNDIDAD_TUNEL ) Subidon = 255;
|
||||
Subidon = (Subidon++)%PROFUNDIDAD_TUNEL;
|
||||
}
|
||||
|
||||
for ( depth=0; depth<SALTOS_ANCHOS*PROFUNDIDAD_TUNEL; depth+=SALTOS_ANCHOS*INCREMENTAL, Movimiento+=SALTOS_PROFUNDOS, Color++ )
|
||||
// for ( depth=INCREMENTAL*SALTOS_ANCHOS*(PROFUNDIDAD_TUNEL-1); depth>=0; depth-=SALTOS_ANCHOS*INCREMENTAL, Movimiento+=SALTOS_PROFUNDOS, Color-- )
|
||||
{
|
||||
/*
|
||||
OGiroAngular = GiroAngular;
|
||||
GiroAngular = ( GiroAngular++ ) % 360;
|
||||
*/
|
||||
|
||||
// Borra el anterior
|
||||
CirculoB( XSinMov[(unsigned char)(Movimiento-1)] + 160, YSinMov[(unsigned char)(Movimiento-1)] + 100, RADIO - depth*BLOQUEO_RADIO, OGiroAngular + 0*Movimiento );
|
||||
|
||||
Subidon = (Subidon++)%PROFUNDIDAD_TUNEL;
|
||||
|
||||
// Dibuja el nuevo circulo
|
||||
// Circulo( XSinMov[Movimiento] + 160, YSinMov[Movimiento] + 100, RADIO - depth*BLOQUEO_RADIO, GiroAngular + 0*Movimiento, (Subidon >= Color && Subidon <= Color + 2 ) ? 1: Color );
|
||||
Circulo( XSinMov[Movimiento] + 160, YSinMov[Movimiento] + 100, RADIO - depth*BLOQUEO_RADIO, GiroAngular + 0*Movimiento, Subidon%6 == 0 || Subidon%6 == 1 ? 1+Subidon : Color);
|
||||
}
|
||||
|
||||
// delay(10);
|
||||
}
|
||||
//Funcion de DEMO5
|
||||
void ReadPal( VGAPaletteType K )
|
||||
{
|
||||
struct REGPACK outR;
|
||||
|
||||
outR.r_ax = 0x1017;
|
||||
outR.r_bx = 0;
|
||||
outR.r_cx = 256;
|
||||
outR.r_es = FP_SEG(K);
|
||||
outR.r_dx = FP_OFF(K);
|
||||
while( ( inport(0x03DA) & 0x08 ) == 0x08 ); // {Wait for rescan}
|
||||
intr( 0x10, &outR );
|
||||
};
|
||||
//Funcion de DEMO5
|
||||
void WritePal( VGAPaletteType K )
|
||||
{
|
||||
struct REGPACK outR;
|
||||
|
||||
outR.r_ax = 0x1012;
|
||||
outR.r_bx = 0;
|
||||
outR.r_cx = 256;
|
||||
outR.r_es = FP_SEG(K);
|
||||
outR.r_dx = FP_OFF(K);
|
||||
while( ( inport(0x03DA) & 0x08 ) == 0x08 ); // {Wait for rescan}
|
||||
intr( 0x10, &outR );
|
||||
};
|
||||
//Funcion de DEMO5
|
||||
void CreaPaleta(void)
|
||||
{
|
||||
unsigned char I;
|
||||
|
||||
memset( Pal, 0, sizeof(Pal) );
|
||||
|
||||
Pal[1].R = 255;
|
||||
Pal[1].G = 255;
|
||||
Pal[1].B = 255;
|
||||
|
||||
Pal[255].R = 20;
|
||||
Pal[255].G = 0;
|
||||
Pal[255].B = 0;
|
||||
for ( I=254/*MaxColor*/; I > 254-PROFUNDIDAD_TUNEL; I-- )
|
||||
{
|
||||
Pal[I] = Pal[I+1];
|
||||
{
|
||||
if ( Pal[I].R<63 ) Pal[I].R++;
|
||||
if ( Pal[I].R<63 ) Pal[I].R++;
|
||||
if ( (I % 2==0) && (Pal[I].G<53) ) Pal[I].G++;
|
||||
if ( (I % 2==0) && (Pal[I].B<63) ) Pal[I].B++;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef TODO_GRIS
|
||||
Pal[5].R = 255;
|
||||
Pal[5].G = 255;
|
||||
Pal[5].B = 255;
|
||||
for ( I=5; I < 255; I++ )
|
||||
{
|
||||
Pal[I] = Pal[I-1];
|
||||
{
|
||||
Pal[I].R--;
|
||||
Pal[I].G--;
|
||||
Pal[I].B--;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
Pal[255-PROFUNDIDAD_TUNEL+1].R = 0;
|
||||
Pal[255-PROFUNDIDAD_TUNEL+1].G = 0;
|
||||
Pal[255-PROFUNDIDAD_TUNEL+1].B = 20;
|
||||
for ( I=/*MaxColor*/255-PROFUNDIDAD_TUNEL; I > 255-2*PROFUNDIDAD_TUNEL; I-- )
|
||||
{
|
||||
Pal[I] = Pal[I+1];
|
||||
{
|
||||
if ( Pal[I].B<63 ) Pal[I].B++;
|
||||
if ( Pal[I].B<63 ) Pal[I].B++;
|
||||
if ( (I % 2==0) && (Pal[I].G<53) ) Pal[I].G++;
|
||||
if ( (I % 2==0) && (Pal[I].R<63) ) Pal[I].R++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#ifdef TODO_BLANCO
|
||||
memset( Pal, 255, sizeof(Pal) );
|
||||
Pal[0].R = 0;
|
||||
Pal[0].G = 0;
|
||||
Pal[0].B = 0;
|
||||
#endif
|
||||
|
||||
WritePal(Pal);
|
||||
}
|
||||
//DEMO6
|
||||
void demo6()
|
||||
{
|
||||
int y;
|
||||
int gdriver=DETECT,gmode;
|
||||
char texto[5][100]={"Programador:Oscar","Musica:NO HAY",
|
||||
"Agradecimientos a:","Jose David(el tunel es de el)",
|
||||
"PROMETO MEJORAR"};
|
||||
|
||||
initgraph(&gdriver,&gmode,"c:\\program\\borlandc\\bgi");
|
||||
clearviewport();
|
||||
for(y=440;y>-70;y--)
|
||||
{
|
||||
setcolor(15);
|
||||
if(y>1) outtextxy(230,y,texto[0]);
|
||||
if(y>-20&&y<430) outtextxy(230,y+20,texto[1]);
|
||||
if(y>-40&&y<420) outtextxy(230,y+40,texto[2]);
|
||||
if(y>-60&&y<410) outtextxy(230,y+60,texto[3]);
|
||||
delay(20);
|
||||
setcolor(0);
|
||||
if(y>1) outtextxy(230,y,texto[0]);
|
||||
if(y>-20&&y<430) outtextxy(230,y+20,texto[1]);
|
||||
if(y>-40&&y<420) outtextxy(230,y+40,texto[2]);
|
||||
if(y>-60&&y<410) outtextxy(230,y+60,texto[3]);
|
||||
}
|
||||
clearviewport();
|
||||
letrasm(" QUIERO LA REVANCHAAAAAA ZZZZZ ");
|
||||
closegraph();
|
||||
}
|
||||
//LETRAS
|
||||
void letrasm(char texto[100])
|
||||
{
|
||||
//Letras moviendose
|
||||
int V;
|
||||
int finali=8,i=0,c3=0;
|
||||
int r=0,i1=0,ac3=0,c4=0;
|
||||
int n[100],l;
|
||||
int c=0,c1=640,x=0,y=0;
|
||||
int a=0,ac1=c1,color;
|
||||
randomize();
|
||||
color=rand()%14+1;
|
||||
l=strlen(texto);
|
||||
for(a=0;a<l;a++)
|
||||
{
|
||||
if(toascii(texto[a]-65)<14)
|
||||
n[a]=toascii(texto[a]-64);
|
||||
else if(texto[a]=='<EFBFBD>')
|
||||
n[a]=15;
|
||||
else if(texto[a]==' ')
|
||||
n[a]=0;
|
||||
else
|
||||
n[a]=toascii(texto[a]-63);
|
||||
}
|
||||
while(c3!=l&&!kbhit())
|
||||
{
|
||||
while(y<70)
|
||||
{
|
||||
if(c3<l)
|
||||
{
|
||||
if(letras[n[c3]][i]==1) setcolor(color);
|
||||
else setcolor(0);
|
||||
}
|
||||
//V =20*sin(x*k);
|
||||
outtextxy(x,200+y,"*");
|
||||
if(x>=c1||c1<0) {i++;}
|
||||
if(i==finali) {i=finali-8;c3++;}
|
||||
x=x+10;
|
||||
if(x==640)
|
||||
{
|
||||
c1=ac1;x=0;y=y+10;c3=ac3;c=c+8;i=c+i1;finali=c+8;}
|
||||
}
|
||||
|
||||
x=0;y=0;
|
||||
finali=8;
|
||||
i=0;
|
||||
c=0;
|
||||
delay(10);
|
||||
c1=c1-10;
|
||||
ac1=c1;
|
||||
if(c1<0)
|
||||
{
|
||||
i1=0;
|
||||
if(c1>-640)
|
||||
r=10;
|
||||
else
|
||||
r=abs(c1)-640;
|
||||
while(y<r)
|
||||
{
|
||||
i++;
|
||||
if(i==finali) {i=finali-8;c3++;}
|
||||
x=x+10;
|
||||
if(x==640)
|
||||
{c1=ac1;x=0;y=y+10;c3=ac3;c=c+8;i=c+i1;finali=c+8;}
|
||||
if(x==abs(c1)) break;
|
||||
}
|
||||
c4++;
|
||||
}
|
||||
if(c4==8) {c4=0;ac3++;ac1=0;}
|
||||
y=0;x=0;
|
||||
i1=i;
|
||||
}
|
||||
}
|
BIN
DEMO/DEMO.EXE
Normal file
BIN
DEMO/DEMO.EXE
Normal file
Binary file not shown.
BIN
DEMO/SVGA256.BGI
Normal file
BIN
DEMO/SVGA256.BGI
Normal file
Binary file not shown.
Reference in New Issue
Block a user