First commit 06/08/1997
This commit is contained in:
		
							
								
								
									
										584
									
								
								GO.CPP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										584
									
								
								GO.CPP
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,584 @@
 | 
			
		||||
#include <alloc.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <mem.h>
 | 
			
		||||
#include <conio.h>
 | 
			
		||||
#include <math.h>
 | 
			
		||||
#include <dos.h>
 | 
			
		||||
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
/////////////////// Otro tipo de fondo: LLuvia de estrellas
 | 
			
		||||
typedef struct
 | 
			
		||||
{
 | 
			
		||||
 int Ex, Ey, Ez;
 | 
			
		||||
 char Ecolor;
 | 
			
		||||
} CAMPO_de_ESTRELLAS;
 | 
			
		||||
 | 
			
		||||
CAMPO_de_ESTRELLAS *Cestrellas, *o;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void Actualiza(CAMPO_de_ESTRELLAS *Cest);
 | 
			
		||||
void Star3d(CAMPO_de_ESTRELLAS *Cest);
 | 
			
		||||
void pon_estrella(CAMPO_de_ESTRELLAS *Cest);
 | 
			
		||||
void llena_campo(CAMPO_de_ESTRELLAS *Cest);
 | 
			
		||||
void deinit_star(void);
 | 
			
		||||
void init_star(void);
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
 | 
			
		||||
// Escribe un caracter en (x,y) -> Color|Fondo en VText                                    0x7900
 | 
			
		||||
#define WriteChar50( x, y, caracter, Col, Fon, VText )   VText[80*y + x] = (((unsigned)caracter)&0x00FF) | (((unsigned)( (Fon<<4)+Col )<<8)&0xFF00);
 | 
			
		||||
/*
 | 
			
		||||
( (Fon<<4)+Col )
 | 
			
		||||
 | 
			
		||||
( ( (int)( (char)Fon << 4) + Col )<< 8 )
 | 
			
		||||
 | 
			
		||||
   7   6   5   4 <20> 3   2   1   0
 | 
			
		||||
 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
 | 
			
		||||
 <20> B <20> b <20> b <20> b <20> f <20> f <20> f <20> f <20>
 | 
			
		||||
 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
                 <20>
 | 
			
		||||
 | 
			
		||||
In this 8-bit newattr parameter,
 | 
			
		||||
  <20> ffff = 4-bit foreground color (0 to 15)
 | 
			
		||||
  <20> bbb  = 3-bit background color (0 to 7)
 | 
			
		||||
  <20> B    = blink-enable bit
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
// Proyecto para mostrar cosas en modo texto: 80x50
 | 
			
		||||
 | 
			
		||||
// Preparamos un buffer virtual a pantalla: 80x50*2 bytes/punto = 8000 bytes
 | 
			
		||||
int *textoVirtual;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int XSinMov[256], YSinMov[256];
 | 
			
		||||
int TSin[360+90];
 | 
			
		||||
 | 
			
		||||
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;
 | 
			
		||||
 };
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
char PRIMARIO8 = YELLOW; char SECUNDARIO1 = RED;
 | 
			
		||||
void Put( int x, int y, unsigned char c)
 | 
			
		||||
{
 | 
			
		||||
 if ( x < 0 || x >= 80 ) return;
 | 
			
		||||
 if ( y < 0 || y >= 50 ) return;
 | 
			
		||||
 | 
			
		||||
 WriteChar50( x, y, '<EFBFBD>', (c==0 ? 0 : PRIMARIO8), SECUNDARIO1, textoVirtual );
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
//#define RADIO 255
 | 
			
		||||
// Radio de partida
 | 
			
		||||
#define RADIO 255
 | 
			
		||||
#define SALTOS_ANCHOS     7
 | 
			
		||||
 | 
			
		||||
//#define SALTOS_PROFUNDOS 8
 | 
			
		||||
// Grado de torcion
 | 
			
		||||
#define SALTOS_PROFUNDOS 8
 | 
			
		||||
//#define SALTOS_ANCHOS    7
 | 
			
		||||
 | 
			
		||||
// Saltos de radio
 | 
			
		||||
#define BLOQUEO_RADIO     1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define INCREMENTAL       1
 | 
			
		||||
 | 
			
		||||
//#define PROFUNDIDAD_TUNEL 35
 | 
			
		||||
#define PROFUNDIDAD_TUNEL 35
 | 
			
		||||
#define FACTOR_SERPIENTE  0.015F
 | 
			
		||||
 | 
			
		||||
//#define TODO_BLANCO
 | 
			
		||||
//#define TODO_GRIS
 | 
			
		||||
 | 
			
		||||
int PERFECCION_CIRCULO = 8;
 | 
			
		||||
// 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 );
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// 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 );
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
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;
 | 
			
		||||
 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;
 | 
			
		||||
 }
 | 
			
		||||
int Retorcido = 0;
 | 
			
		||||
 | 
			
		||||
 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-- )
 | 
			
		||||
 {
 | 
			
		||||
  Retorcido+=15;
 | 
			
		||||
/*
 | 
			
		||||
OGiroAngular = GiroAngular;
 | 
			
		||||
GiroAngular = ( GiroAngular++ ) % 360;
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
                  // Borra el anterior
 | 
			
		||||
                  CirculoB( XSinMov[(unsigned char)(Movimiento-1)] + 40, YSinMov[(unsigned char)(Movimiento-1)] + 25, RADIO - depth*BLOQUEO_RADIO, OGiroAngular + 0*Movimiento + Retorcido );
 | 
			
		||||
 | 
			
		||||
  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] + 40, YSinMov[Movimiento] + 25, RADIO - depth*BLOQUEO_RADIO, GiroAngular + 0*Movimiento + Retorcido, Subidon%6 == 0 || Subidon%6 == 1 ? 1+Subidon : Color);
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 delay(10);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Escribe un caracter en (x,y) -> Color|Fondo en VText                                    0x7900
 | 
			
		||||
#define WriteChar50( x, y, caracter, Col, Fon, VText )   VText[80*y + x] = (((unsigned)caracter)&0x00FF) | (((unsigned)( (Fon<<4)+Col )<<8)&0xFF00);
 | 
			
		||||
class TextoAnimado
 | 
			
		||||
{
 | 
			
		||||
 private:
 | 
			
		||||
      int *pPlanoVirtual;
 | 
			
		||||
      int *sPlanoVirtual;
 | 
			
		||||
      int *tPlanoVirtual;
 | 
			
		||||
 public:
 | 
			
		||||
      TextoAnimado(void);
 | 
			
		||||
     ~TextoAnimado(void){ delete [] pPlanoVirtual; delete [] sPlanoVirtual; delete [] tPlanoVirtual; };
 | 
			
		||||
      void locateText( int x, int y, unsigned char *texto, char color, char fondo );
 | 
			
		||||
      void VuelcaPantallas(void);
 | 
			
		||||
      void BorraTodo(void) { memset( MK_FP( 0xB800, 0 ),      0, 8000 );
 | 
			
		||||
                             memset(      tPlanoVirtual,      0, 8000 );
 | 
			
		||||
                             memset(      pPlanoVirtual,      0, 8000 );
 | 
			
		||||
                             memset(      sPlanoVirtual,      0, 8000 ); };
 | 
			
		||||
      int *pPlano(void){ return pPlanoVirtual; };
 | 
			
		||||
      int *sPlano(void){ return sPlanoVirtual; };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void TextoAnimado::locateText( int x, int y, unsigned char *texto, char color, char fondo )
 | 
			
		||||
{
 | 
			
		||||
 while( *texto != '\0' )
 | 
			
		||||
 {
 | 
			
		||||
  if ( (*texto) != (unsigned char)'<EFBFBD>' )
 | 
			
		||||
  {
 | 
			
		||||
   WriteChar50( x++, y, *(texto++), color, fondo, pPlanoVirtual )
 | 
			
		||||
  }  else {
 | 
			
		||||
   WriteChar50( x++, y, 0, 0, 0, pPlanoVirtual )
 | 
			
		||||
   texto++;
 | 
			
		||||
  }
 | 
			
		||||
 }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TextoAnimado::TextoAnimado(void)
 | 
			
		||||
{
 | 
			
		||||
 if ( ( pPlanoVirtual = new int  [4000] ) == NULL )
 | 
			
		||||
 {
 | 
			
		||||
  pPlanoVirtual = sPlanoVirtual = tPlanoVirtual = (int *)MK_FP( 0xB800, 0 );
 | 
			
		||||
 } else
 | 
			
		||||
       if ( ( sPlanoVirtual = new int  [4000] ) == NULL )
 | 
			
		||||
       {
 | 
			
		||||
         sPlanoVirtual = tPlanoVirtual = (int *)MK_FP( 0xB800, 0 );
 | 
			
		||||
       } else
 | 
			
		||||
        if ( ( tPlanoVirtual = new int  [4000] ) == NULL )
 | 
			
		||||
          tPlanoVirtual = (int *)MK_FP( 0xB800, 0 );
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TextoAnimado::VuelcaPantallas(void)
 | 
			
		||||
{
 | 
			
		||||
 int count = 3999;//4000;
 | 
			
		||||
 int * dest, * scr;
 | 
			
		||||
 | 
			
		||||
 // Volcamos el segundo plano, ENTERO
 | 
			
		||||
 memcpy( tPlanoVirtual, sPlanoVirtual, 8000 );
 | 
			
		||||
 // Volcamos el primer plano, pero cuidado caracter <20> == transparente
 | 
			
		||||
 dest = tPlanoVirtual;
 | 
			
		||||
 scr  = pPlanoVirtual;
 | 
			
		||||
 while( count-- )
 | 
			
		||||
 {
 | 
			
		||||
  if ( *scr )
 | 
			
		||||
  {
 | 
			
		||||
   *(dest++) = *(scr++);
 | 
			
		||||
  } else {
 | 
			
		||||
   scr++; dest++;
 | 
			
		||||
  }
 | 
			
		||||
 };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 memcpy( MK_FP( 0xB800, 0 ), tPlanoVirtual, 8000 );
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
TextoAnimado prueba1;
 | 
			
		||||
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
 | 
			
		||||
#include <dir.h>
 | 
			
		||||
#include <dos.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <conio.h>
 | 
			
		||||
#include <process.h>
 | 
			
		||||
 | 
			
		||||
typedef struct
 | 
			
		||||
{
 | 
			
		||||
 int x, y;          // Posicion en la pantalla
 | 
			
		||||
 | 
			
		||||
 char Direc[80];    // Directorio donde localizarlo
 | 
			
		||||
 char Passw[10];    // Password
 | 
			
		||||
 | 
			
		||||
} DATOS_CD;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
DATOS_CD ArbolActual[] = {
 | 
			
		||||
                          { 2,  3, "\\arcade\\ALIEN.RAR", "neila" },
 | 
			
		||||
                          { 2,  4, "\\arcade\\BLAM.RAR", "malb" },
 | 
			
		||||
                          { 2,  5, "\\arcade\\BUBBLE.RAR", "elbbub" },
 | 
			
		||||
                          { 2,  6, "\\arcade\\ERADICAT.RAR", "tacidare" },
 | 
			
		||||
                          { 2,  7, "\\arcade\\SYNDICA2.RAR", "2acidnys" },
 | 
			
		||||
                          { 2,  8, "\\arcade\\TOMBRAID.RAR", "diarbmot" },
 | 
			
		||||
 | 
			
		||||
                          { 2, 12, "\\deportiv\\AIRBORNE.RAR", "enrobria" },
 | 
			
		||||
                          { 2, 13, "\\deportiv\\RLA.RAR", "lra" },
 | 
			
		||||
                          { 2, 14, "\\deportiv\\FIFA97.RAR", "79afif" },
 | 
			
		||||
                          { 2, 15, "\\deportiv\\FUTBOL5.RAR", "5lobtuf" },
 | 
			
		||||
                          { 2, 16, "\\deportiv\\SPACEJAM.RAR", "majecaps" },
 | 
			
		||||
 | 
			
		||||
                          {47,  3, "\\estrateg\\BC.RAR", "cb" },
 | 
			
		||||
                          {47,  4, "\\estrateg\\DEADLY.RAR", "yldaed" },
 | 
			
		||||
                          {47,  5, "\\estrateg\\REICH.RAR", "hcier" },
 | 
			
		||||
                          {47,  6, "\\estrateg\\RIFLES.RAR", "selfir" },
 | 
			
		||||
                          {47,  7, "\\estrateg\\HARPOON2.RAR", "2nooprah" },
 | 
			
		||||
                          {47,  8, "\\estrateg\\REDALERT.RAR", "trelader" },
 | 
			
		||||
 | 
			
		||||
                          {47, 12, "\\simulado\\AMOK.RAR", "koma" },
 | 
			
		||||
                          {47, 13, "\\simulado\\SCREAM2.RAR", "2maercs" },
 | 
			
		||||
                          {47, 14, "\\simulado\\SWIV3.RAR", "3viws" },
 | 
			
		||||
 | 
			
		||||
                          {47, 18, "\\aventura\\FABLE.RAR", "elbaf" },
 | 
			
		||||
                          {47, 19, "\\aventura\\HAVE.RAR", "evah" }
 | 
			
		||||
                         };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void DibujaPantalla(void)
 | 
			
		||||
{
 | 
			
		||||
 clrscr();
 | 
			
		||||
 | 
			
		||||
 prueba1.locateText( 0, 0,   "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0, 1,   " Arcade     <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Estrategia  <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0, 2,   "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0, 3,   "<EFBFBD><EFBFBD> Alien Trilogy             <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Battle Cruiser 3000 AD    ", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0, 4,   "<EFBFBD><EFBFBD> Balm Machine Head         <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Jagged Alliance           ", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0, 5,   "<EFBFBD><EFBFBD> Bubble Bobble Combo       <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Third Reich               ", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0, 6,   "<EFBFBD><EFBFBD> Eradicator                <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Age of Rifles             ", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0, 7,   "<EFBFBD><EFBFBD> Syndicate Wars 2          <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Harpoon 2                 ", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0, 8,   "<EFBFBD><EFBFBD> Tomb Raider               <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Command Conquer Red Alert ", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0, 9,   "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,10,   " Deportivos <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Simuladores <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,11,   "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,12,   "<EFBFBD><EFBFBD> Espn NBA AirBorne'96      <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Amok                      ", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,13,   "<EFBFBD><EFBFBD> Australian Rugby League   <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Screamer 2                ", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,14,   "<EFBFBD><EFBFBD> Fifa Soccer 97            <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Swiv 3D                   ", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,15,   "<EFBFBD><EFBFBD> Pc Futbol v5.0            <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,16,   "<EFBFBD><EFBFBD> Space Jam                 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Aventuras   <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,17,   "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,18,   "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Fable                     ", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,19,   "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> No tengo boca y quiero gr.", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,20,   "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,21,   "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", BLACK, LIGHTGRAY );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 prueba1.locateText( 1,46,  "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", WHITE, LIGHTGRAY);textcolor(BLACK); prueba1.locateText(78,46, "<EFBFBD>", BLACK, LIGHTGRAY);
 | 
			
		||||
 prueba1.locateText( 1,47,  "<EFBFBD>", WHITE, LIGHTGRAY);prueba1.locateText( 2,47, "                                                                            <20>", BLACK, LIGHTGRAY);
 | 
			
		||||
 prueba1.locateText( 1,48,  "<EFBFBD>", WHITE, LIGHTGRAY);textcolor(BLACK); prueba1.locateText( 2,48, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", BLACK, LIGHTGRAY);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
char far *screen;// = (char far *)0xB8000000;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void Kit(void)
 | 
			
		||||
{
 | 
			
		||||
 static char Dir = 1;
 | 
			
		||||
 static char Pos = 0;
 | 
			
		||||
 char longt;
 | 
			
		||||
 | 
			
		||||
 for ( longt = 0; longt < 10; longt++ )
 | 
			
		||||
 {
 | 
			
		||||
  if ( (Dir*longt + Pos) >= 0 && (Dir*longt + Pos) <= 75 )
 | 
			
		||||
  {
 | 
			
		||||
   screen[ 47*80*2 + ( Pos + Dir*longt + 2)*2 + 1 ] &= 0x8F;
 | 
			
		||||
   screen[ 47*80*2 + ( Pos + Dir*longt + 2)*2 + 1 ] |= 7<<4;
 | 
			
		||||
/*
 | 
			
		||||
   gotoxy( Pos + Dir*longt + 3, 24 );
 | 
			
		||||
   prueba1.locateText( 0, 0,  " " );
 | 
			
		||||
*/
 | 
			
		||||
  }
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 Pos += Dir;
 | 
			
		||||
 if ( Pos < 0  -2 ) Dir = 1;
 | 
			
		||||
 if ( Pos > 75 +2 ) Dir = -1;
 | 
			
		||||
 | 
			
		||||
 for ( longt = 0; longt < 10; longt++ )
 | 
			
		||||
 {
 | 
			
		||||
  if ( (Dir*longt + Pos) >= 0 && (Dir*longt + Pos) <= 75 )
 | 
			
		||||
  {
 | 
			
		||||
/*
 | 
			
		||||
   gotoxy( Pos + Dir*longt + 3, 24 );
 | 
			
		||||
   prueba1.locateText( 0, 0,  "<22>" );
 | 
			
		||||
*/
 | 
			
		||||
   screen[ 47*80*2 + ( Pos + Dir*longt + 2)*2 + 1 ] &= 0x8F;
 | 
			
		||||
   screen[ 47*80*2 + ( Pos + Dir*longt + 2)*2 + 1 ] |= 3<<4;
 | 
			
		||||
  }
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 delay( /*1000*/25 );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void main(void)
 | 
			
		||||
{
 | 
			
		||||
  int ok = 0;
 | 
			
		||||
  int Item = 0, i;
 | 
			
		||||
  char buffer[80];
 | 
			
		||||
  char *p;
 | 
			
		||||
 | 
			
		||||
  screen =(char *) prueba1.pPlano();
 | 
			
		||||
 | 
			
		||||
  p = searchpath("rar.EXE");
 | 
			
		||||
  printf("Search for rar.EXE : %s\n", p);
 | 
			
		||||
  if ( p == NULL )
 | 
			
		||||
  {
 | 
			
		||||
        printf( "Debes copiar el archivo rar.ex al path como rar.exe\n");
 | 
			
		||||
        printf( "Ejemplo:                                           \n");
 | 
			
		||||
        printf( "        copy rar.ex C:\\dos\\RAR.EXE               \n");
 | 
			
		||||
        return;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  textmode( C4350 );
 | 
			
		||||
  RellenaTablas(); _setcursortype( _NOCURSOR ); prueba1.BorraTodo(); textoVirtual = prueba1.sPlano();
 | 
			
		||||
  init_star();
 | 
			
		||||
 | 
			
		||||
  DibujaPantalla();
 | 
			
		||||
 | 
			
		||||
  for ( i = 0; i < 27; i++ )
 | 
			
		||||
  {
 | 
			
		||||
   screen[ ArbolActual[Item].y*80*2 + (ArbolActual[Item].x+i)*2 + 1 ] &= 0x8F;
 | 
			
		||||
   screen[ ArbolActual[Item].y*80*2 + (ArbolActual[Item].x+i)*2 + 1 ] |= 5<<4;
 | 
			
		||||
     prueba1.locateText( 4, 47, "                                                                      ", LIGHTGRAY, LIGHTGRAY );
 | 
			
		||||
     sprintf( buffer, "Linea de comandos: rar x -p%s %s C:", /*strrev( */ArbolActual[Item].Passw/* )*/,  ArbolActual[Item].Direc );
 | 
			
		||||
     prueba1.locateText( 4,47, buffer, RED, LIGHTGRAY );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  while ( !ok )
 | 
			
		||||
  {
 | 
			
		||||
   TunelEstrellas();
 | 
			
		||||
   Actualiza(Cestrellas);
 | 
			
		||||
 | 
			
		||||
   prueba1.VuelcaPantallas();
 | 
			
		||||
 | 
			
		||||
   Kit();
 | 
			
		||||
 | 
			
		||||
   if ( kbhit() && (ok = getch()) == 0 )
 | 
			
		||||
   {
 | 
			
		||||
    for ( i = 0; i < 27; i++ )
 | 
			
		||||
    {
 | 
			
		||||
     screen[ ArbolActual[Item].y*80*2 + (ArbolActual[Item].x+i)*2 + 1 ] &= 0x8F;
 | 
			
		||||
     screen[ ArbolActual[Item].y*80*2 + (ArbolActual[Item].x+i)*2 + 1 ] |= 7<<4;
 | 
			
		||||
    }
 | 
			
		||||
    switch ( getch() )
 | 
			
		||||
    {
 | 
			
		||||
      case 72:
 | 
			
		||||
              Item--; if ( Item < 0 ) Item = 21;
 | 
			
		||||
              break;
 | 
			
		||||
      case 80:
 | 
			
		||||
              Item++; if ( Item >= 22 ) Item =  0;
 | 
			
		||||
              break;
 | 
			
		||||
    }
 | 
			
		||||
    for ( i = 0; i < 27; i++ )
 | 
			
		||||
    {
 | 
			
		||||
     screen[ ArbolActual[Item].y*80*2 + (ArbolActual[Item].x+i)*2 + 1 ] &= 0x8F;
 | 
			
		||||
     screen[ ArbolActual[Item].y*80*2 + (ArbolActual[Item].x+i)*2 + 1 ] |= 5<<4;
 | 
			
		||||
     prueba1.locateText( 4, 47, "                                                                      ", LIGHTGRAY, LIGHTGRAY );
 | 
			
		||||
     sprintf( buffer, "Linea de comandos: rar x -p%s %s C:", /*strrev( */ArbolActual[Item].Passw/* )*/,  ArbolActual[Item].Direc );
 | 
			
		||||
     prueba1.locateText( 4,47, buffer, RED, LIGHTGRAY );
 | 
			
		||||
    }
 | 
			
		||||
   }
 | 
			
		||||
   if ( ok == 13 )
 | 
			
		||||
   {
 | 
			
		||||
    sprintf( buffer, "-p%s", ArbolActual[Item].Passw );
 | 
			
		||||
    execl  ( p, p, "x", buffer, ArbolActual[Item].Direc, "C:", NULL);
 | 
			
		||||
    ok = 1;
 | 
			
		||||
   }
 | 
			
		||||
   if ( ok == 27 ) ok = 1; else ok = 0;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  textbackground( BLACK );
 | 
			
		||||
  textcolor( LIGHTGRAY );
 | 
			
		||||
  textmode( C80 );
 | 
			
		||||
  clrscr();
 | 
			
		||||
  deinit_star();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
 | 
			
		||||
void init_star(void)
 | 
			
		||||
{
 | 
			
		||||
  randomize();
 | 
			
		||||
  if ( ( Cestrellas = (CAMPO_de_ESTRELLAS *)malloc( sizeof(CAMPO_de_ESTRELLAS)*200 ) ) == NULL ) return;
 | 
			
		||||
  if ( ( o = (CAMPO_de_ESTRELLAS *)malloc( sizeof(CAMPO_de_ESTRELLAS)*200 ) ) == NULL ) return;
 | 
			
		||||
 | 
			
		||||
  llena_campo(Cestrellas);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void deinit_star(void)
 | 
			
		||||
{
 | 
			
		||||
 free( Cestrellas );
 | 
			
		||||
 free( o          );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void llena_campo(CAMPO_de_ESTRELLAS *Cest)
 | 
			
		||||
{
 | 
			
		||||
 int estrellas;
 | 
			
		||||
 for ( estrellas = 0; estrellas < 200; estrellas++ )
 | 
			
		||||
                                                pon_estrella( &Cest[estrellas] );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void pon_estrella(CAMPO_de_ESTRELLAS *Cest)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  Cest -> Ex = random(40)+1;
 | 
			
		||||
  Cest -> Ey = random(25)+1;
 | 
			
		||||
  Cest -> Ez = 100          ;
 | 
			
		||||
  Cest -> Ecolor = WHITE;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Star3d(CAMPO_de_ESTRELLAS *Cest)
 | 
			
		||||
{
 | 
			
		||||
//  Star3d( Cestrellas );
 | 
			
		||||
  while( !kbhit() ) Actualiza(Cest);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Actualiza(CAMPO_de_ESTRELLAS *Cest)
 | 
			
		||||
{
 | 
			
		||||
 int Ex, Ey, conta;
 | 
			
		||||
 static float FactorMovimientoX = 0, FactorMovimientoY = 0, ox = 0, oy = 0;
 | 
			
		||||
 static float x=0.1, y=0.1;
 | 
			
		||||
 static char color = 0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 for( conta=0; conta<200; conta++ )
 | 
			
		||||
 {
 | 
			
		||||
if (  o[conta].Ex+ox> 0 && o[conta].Ex+ox < 79 && o[conta].Ey+oy > 0 && o[conta].Ey+oy < 49 )
 | 
			
		||||
  WriteChar50 ( o[conta].Ex+ox, o[conta].Ey+oy, '*', 0, 0, textoVirtual );
 | 
			
		||||
 | 
			
		||||
//  putpixel ( o[conta].Ex+ox+5, o[conta].Ey+oy+(317/2), 0 );
 | 
			
		||||
  Ex = ( ((200*Cest[conta].Ex)/Cest[conta].Ez));//+40;
 | 
			
		||||
  Ey = ( ((200*Cest[conta].Ey)/Cest[conta].Ez));//+25;//240;
 | 
			
		||||
  Cest[conta].Ez = Cest[conta].Ez - 5            ;
 | 
			
		||||
 | 
			
		||||
  o[conta].Ex = Ex;
 | 
			
		||||
  o[conta].Ey = Ey;
 | 
			
		||||
 | 
			
		||||
color++;
 | 
			
		||||
if ( color > 10 )
 | 
			
		||||
{
 | 
			
		||||
if ( Cest[conta].Ecolor == WHITE )
 | 
			
		||||
  Cest[conta].Ecolor = LIGHTGRAY;
 | 
			
		||||
else if ( Cest[conta].Ecolor == LIGHTGRAY )
 | 
			
		||||
  Cest[conta].Ecolor = DARKGRAY;
 | 
			
		||||
else
 | 
			
		||||
  Cest[conta].Ecolor = WHITE;
 | 
			
		||||
color = 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
  if ( Ex>79 && Ey>49 )
 | 
			
		||||
                  pon_estrella ( &Cest[conta] );
 | 
			
		||||
 | 
			
		||||
  if ( Cest[conta].Ez <= 20  || Ex>79 || Ey>49 || Ex<0 || Ey<0 )
 | 
			
		||||
//  if ( Cest[conta].Ez <= 20  || Ex>635 || Ey>470 || Ex<5 || Ey<317 )
 | 
			
		||||
                 pon_estrella ( &Cest[conta] );
 | 
			
		||||
 | 
			
		||||
if ( Ex+FactorMovimientoX > 0 && Ex+FactorMovimientoX < 79 && Ey+FactorMovimientoY > 0  && Ey+FactorMovimientoY < 49 )
 | 
			
		||||
//  putpixel ( Ex+FactorMovimientoX, Ey+FactorMovimientoY+100, Cest[conta].Ecolor );
 | 
			
		||||
  WriteChar50 ( Ex+FactorMovimientoX, Ey+FactorMovimientoY, '*', Cest[conta].Ecolor%16, 0, textoVirtual );
 | 
			
		||||
//  putpixel ( Ex+FactorMovimientoX+5, Ey+FactorMovimientoY+(317/2), Cest[conta].Ecolor );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 ox = FactorMovimientoX;
 | 
			
		||||
 oy = FactorMovimientoY;
 | 
			
		||||
 | 
			
		||||
 FactorMovimientoX+= x;
 | 
			
		||||
 FactorMovimientoY+= y;
 | 
			
		||||
 | 
			
		||||
 if ( FactorMovimientoX > 1 ) x = -0.1;
 | 
			
		||||
 if ( FactorMovimientoX < -1 ) x =  0.1;
 | 
			
		||||
 if ( FactorMovimientoY > 1 ) y = -0.1;
 | 
			
		||||
 if ( FactorMovimientoY < -1 ) y =  0.1;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										255
									
								
								PRUEBA1.CPP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										255
									
								
								PRUEBA1.CPP
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,255 @@
 | 
			
		||||
#include <mem.h>
 | 
			
		||||
#include <conio.h>
 | 
			
		||||
#include <math.h>
 | 
			
		||||
#include <dos.h>
 | 
			
		||||
 | 
			
		||||
// Escribe un caracter en (x,y) -> Color|Fondo en VText                                    0x7900
 | 
			
		||||
#define WriteChar50( x, y, caracter, Col, Fon, VText )   VText[80*y + x] = (((unsigned)caracter)&0x00FF) | (((unsigned)( (Fon<<4)+Col )<<8)&0xFF00);
 | 
			
		||||
/*
 | 
			
		||||
( (Fon<<4)+Col )
 | 
			
		||||
 | 
			
		||||
( ( (int)( (char)Fon << 4) + Col )<< 8 )
 | 
			
		||||
 | 
			
		||||
   7   6   5   4 <20> 3   2   1   0
 | 
			
		||||
 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
 | 
			
		||||
 <20> B <20> b <20> b <20> b <20> f <20> f <20> f <20> f <20>
 | 
			
		||||
 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
                 <20>
 | 
			
		||||
 | 
			
		||||
In this 8-bit newattr parameter,
 | 
			
		||||
  <20> ffff = 4-bit foreground color (0 to 15)
 | 
			
		||||
  <20> bbb  = 3-bit background color (0 to 7)
 | 
			
		||||
  <20> B    = blink-enable bit
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
// Proyecto para mostrar cosas en modo texto: 80x50
 | 
			
		||||
 | 
			
		||||
// Preparamos un buffer virtual a pantalla: 80x50*2 bytes/punto = 8000 bytes
 | 
			
		||||
int *textoVirtual;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int XSinMov[256], YSinMov[256];
 | 
			
		||||
int TSin[360+90];
 | 
			
		||||
 | 
			
		||||
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;
 | 
			
		||||
 };
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
char PRIMARIO8 = YELLOW; char SECUNDARIO1 = RED;
 | 
			
		||||
void Put( int x, int y, unsigned char c)
 | 
			
		||||
{
 | 
			
		||||
 if ( x < 0 || x >= 80 ) return;
 | 
			
		||||
 if ( y < 0 || y >= 50 ) return;
 | 
			
		||||
 | 
			
		||||
 WriteChar50( x, y, '<EFBFBD>', (c==0 ? 0 : PRIMARIO8), SECUNDARIO1, textoVirtual );
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
//#define RADIO 255
 | 
			
		||||
// Radio de partida
 | 
			
		||||
#define RADIO 255
 | 
			
		||||
#define SALTOS_ANCHOS     7
 | 
			
		||||
 | 
			
		||||
//#define SALTOS_PROFUNDOS 8
 | 
			
		||||
// Grado de torcion
 | 
			
		||||
#define SALTOS_PROFUNDOS 8
 | 
			
		||||
//#define SALTOS_ANCHOS    7
 | 
			
		||||
 | 
			
		||||
// Saltos de radio
 | 
			
		||||
#define BLOQUEO_RADIO     1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define INCREMENTAL       1
 | 
			
		||||
 | 
			
		||||
//#define PROFUNDIDAD_TUNEL 35
 | 
			
		||||
#define PROFUNDIDAD_TUNEL 35
 | 
			
		||||
#define FACTOR_SERPIENTE  0.015F
 | 
			
		||||
 | 
			
		||||
//#define TODO_BLANCO
 | 
			
		||||
//#define TODO_GRIS
 | 
			
		||||
 | 
			
		||||
int PERFECCION_CIRCULO = 8;
 | 
			
		||||
// 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 );
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// 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 );
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
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;
 | 
			
		||||
 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;
 | 
			
		||||
 }
 | 
			
		||||
int Retorcido = 0;
 | 
			
		||||
 | 
			
		||||
 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-- )
 | 
			
		||||
 {
 | 
			
		||||
  Retorcido+=15;
 | 
			
		||||
/*
 | 
			
		||||
OGiroAngular = GiroAngular;
 | 
			
		||||
GiroAngular = ( GiroAngular++ ) % 360;
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
                  // Borra el anterior
 | 
			
		||||
                  CirculoB( XSinMov[(unsigned char)(Movimiento-1)] + 40, YSinMov[(unsigned char)(Movimiento-1)] + 25, RADIO - depth*BLOQUEO_RADIO, OGiroAngular + 0*Movimiento + Retorcido );
 | 
			
		||||
 | 
			
		||||
  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] + 40, YSinMov[Movimiento] + 25, RADIO - depth*BLOQUEO_RADIO, GiroAngular + 0*Movimiento + Retorcido, Subidon%6 == 0 || Subidon%6 == 1 ? 1+Subidon : Color);
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 delay(10);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Escribe un caracter en (x,y) -> Color|Fondo en VText                                    0x7900
 | 
			
		||||
#define WriteChar50( x, y, caracter, Col, Fon, VText )   VText[80*y + x] = (((unsigned)caracter)&0x00FF) | (((unsigned)( (Fon<<4)+Col )<<8)&0xFF00);
 | 
			
		||||
class TextoAnimado
 | 
			
		||||
{
 | 
			
		||||
 private:
 | 
			
		||||
      int *pPlanoVirtual;
 | 
			
		||||
      int *sPlanoVirtual;
 | 
			
		||||
      int *tPlanoVirtual;
 | 
			
		||||
 public:
 | 
			
		||||
      TextoAnimado(void);
 | 
			
		||||
     ~TextoAnimado(void){ delete [] pPlanoVirtual; delete [] sPlanoVirtual; delete [] tPlanoVirtual; };
 | 
			
		||||
      void locateText( int x, int y, unsigned char *texto, char color, char fondo );
 | 
			
		||||
      void VuelcaPantallas(void);
 | 
			
		||||
      void BorraTodo(void) { memset( MK_FP( 0xB800, 0 ),      0, 8000 );
 | 
			
		||||
                             memset(      tPlanoVirtual,      0, 8000 );
 | 
			
		||||
                             memset(      pPlanoVirtual,      0, 8000 );
 | 
			
		||||
                             memset(      sPlanoVirtual,      0, 8000 ); };
 | 
			
		||||
      int *pPlano(void){ return pPlanoVirtual; };
 | 
			
		||||
      int *sPlano(void){ return sPlanoVirtual; };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void TextoAnimado::locateText( int x, int y, unsigned char *texto, char color, char fondo )
 | 
			
		||||
{
 | 
			
		||||
 while( *texto != '\0' ) WriteChar50( x++, y, *(texto++), color, fondo, pPlanoVirtual )
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TextoAnimado::TextoAnimado(void)
 | 
			
		||||
{
 | 
			
		||||
 if ( ( pPlanoVirtual = new int  [4000] ) == NULL )
 | 
			
		||||
 {
 | 
			
		||||
  pPlanoVirtual = sPlanoVirtual = tPlanoVirtual = (int *)MK_FP( 0xB800, 0 );
 | 
			
		||||
 } else
 | 
			
		||||
       if ( ( sPlanoVirtual = new int  [4000] ) == NULL )
 | 
			
		||||
       {
 | 
			
		||||
         sPlanoVirtual = tPlanoVirtual = (int *)MK_FP( 0xB800, 0 );
 | 
			
		||||
       } else
 | 
			
		||||
        if ( ( tPlanoVirtual = new int  [4000] ) == NULL )
 | 
			
		||||
          tPlanoVirtual = (int *)MK_FP( 0xB800, 0 );
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TextoAnimado::VuelcaPantallas(void)
 | 
			
		||||
{
 | 
			
		||||
 int count = 3999;//4000;
 | 
			
		||||
 int * dest, * scr;
 | 
			
		||||
 | 
			
		||||
 // Volcamos el segundo plano, ENTERO
 | 
			
		||||
 memcpy( tPlanoVirtual, sPlanoVirtual, 8000 );
 | 
			
		||||
 // Volcamos el primer plano, pero cuidado caracter <20> == transparente
 | 
			
		||||
 dest = tPlanoVirtual;
 | 
			
		||||
 scr  = pPlanoVirtual;
 | 
			
		||||
 while( count-- )
 | 
			
		||||
 {
 | 
			
		||||
  if ( *scr && ((*scr)&0x00FF) != '<EFBFBD>' )
 | 
			
		||||
  {
 | 
			
		||||
   *(dest++) = *(scr++);
 | 
			
		||||
  } else {
 | 
			
		||||
   scr++; dest++;
 | 
			
		||||
  }
 | 
			
		||||
 };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 memcpy( MK_FP( 0xB800, 0 ), tPlanoVirtual, 8000 );
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void main(void)
 | 
			
		||||
{
 | 
			
		||||
 TextoAnimado prueba1;
 | 
			
		||||
 | 
			
		||||
 textmode( C4350 );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 RellenaTablas();
 | 
			
		||||
 _setcursortype( _NOCURSOR );
 | 
			
		||||
 | 
			
		||||
 prueba1.BorraTodo();
 | 
			
		||||
 prueba1.locateText( 10, 10, "Esto es una prueba de mis librerias", WHITE, BLACK );
 | 
			
		||||
 | 
			
		||||
 prueba1.locateText( 10, 15, "Los espacio pueden aparecer. <20>Lo ves?", WHITE, BLACK );
 | 
			
		||||
 prueba1.locateText( 10, 17, "O<EFBFBD>no<EFBFBD>aparecer,<2C>como<6D>mas<61>te<74>guste,<2C>o<EFBFBD>convenga!!!.", WHITE, BLACK );
 | 
			
		||||
 | 
			
		||||
 textoVirtual = prueba1.sPlano();
 | 
			
		||||
 | 
			
		||||
 while ( !kbhit()  )
 | 
			
		||||
 {
 | 
			
		||||
  TunelEstrellas();
 | 
			
		||||
  prueba1.VuelcaPantallas();
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 textmode( C80 );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										9
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,9 @@
 | 
			
		||||
#TEXTO 
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
*06/08/1997* 
 | 
			
		||||
 
 | 
			
		||||
ToDo: wwtcf? 
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										623
									
								
								SNES.CPP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										623
									
								
								SNES.CPP
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,623 @@
 | 
			
		||||
#include <alloc.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <mem.h>
 | 
			
		||||
#include <conio.h>
 | 
			
		||||
#include <math.h>
 | 
			
		||||
#include <dos.h>
 | 
			
		||||
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
/////////////////// Otro tipo de fondo: LLuvia de estrellas
 | 
			
		||||
typedef struct
 | 
			
		||||
{
 | 
			
		||||
 int Ex, Ey, Ez;
 | 
			
		||||
 char Ecolor;
 | 
			
		||||
} CAMPO_de_ESTRELLAS;
 | 
			
		||||
 | 
			
		||||
CAMPO_de_ESTRELLAS *Cestrellas, *o;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void Actualiza(CAMPO_de_ESTRELLAS *Cest);
 | 
			
		||||
void Star3d(CAMPO_de_ESTRELLAS *Cest);
 | 
			
		||||
void pon_estrella(CAMPO_de_ESTRELLAS *Cest);
 | 
			
		||||
void llena_campo(CAMPO_de_ESTRELLAS *Cest);
 | 
			
		||||
void deinit_star(void);
 | 
			
		||||
void init_star(void);
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
 | 
			
		||||
// Escribe un caracter en (x,y) -> Color|Fondo en VText                                    0x7900
 | 
			
		||||
#define WriteChar50( x, y, caracter, Col, Fon, VText )   VText[80*y + x] = (((unsigned)caracter)&0x00FF) | (((unsigned)( (Fon<<4)+Col )<<8)&0xFF00);
 | 
			
		||||
/*
 | 
			
		||||
( (Fon<<4)+Col )
 | 
			
		||||
 | 
			
		||||
( ( (int)( (char)Fon << 4) + Col )<< 8 )
 | 
			
		||||
 | 
			
		||||
   7   6   5   4 <20> 3   2   1   0
 | 
			
		||||
 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
 | 
			
		||||
 <20> B <20> b <20> b <20> b <20> f <20> f <20> f <20> f <20>
 | 
			
		||||
 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
                 <20>
 | 
			
		||||
 | 
			
		||||
In this 8-bit newattr parameter,
 | 
			
		||||
  <20> ffff = 4-bit foreground color (0 to 15)
 | 
			
		||||
  <20> bbb  = 3-bit background color (0 to 7)
 | 
			
		||||
  <20> B    = blink-enable bit
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
// Proyecto para mostrar cosas en modo texto: 80x50
 | 
			
		||||
 | 
			
		||||
// Preparamos un buffer virtual a pantalla: 80x50*2 bytes/punto = 8000 bytes
 | 
			
		||||
int *textoVirtual;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int XSinMov[256], YSinMov[256];
 | 
			
		||||
int TSin[360+90];
 | 
			
		||||
 | 
			
		||||
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;
 | 
			
		||||
 };
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
char PRIMARIO8 = YELLOW; char SECUNDARIO1 = RED;
 | 
			
		||||
void Put( int x, int y, unsigned char c)
 | 
			
		||||
{
 | 
			
		||||
 if ( x < 0 || x >= 80 ) return;
 | 
			
		||||
 if ( y < 0 || y >= 50 ) return;
 | 
			
		||||
 | 
			
		||||
 WriteChar50( x, y, '<EFBFBD>', (c==0 ? 0 : PRIMARIO8), SECUNDARIO1, textoVirtual );
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
//#define RADIO 255
 | 
			
		||||
// Radio de partida
 | 
			
		||||
#define RADIO 255
 | 
			
		||||
#define SALTOS_ANCHOS     7
 | 
			
		||||
 | 
			
		||||
//#define SALTOS_PROFUNDOS 8
 | 
			
		||||
// Grado de torcion
 | 
			
		||||
#define SALTOS_PROFUNDOS 8
 | 
			
		||||
//#define SALTOS_ANCHOS    7
 | 
			
		||||
 | 
			
		||||
// Saltos de radio
 | 
			
		||||
#define BLOQUEO_RADIO     1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define INCREMENTAL       1
 | 
			
		||||
 | 
			
		||||
//#define PROFUNDIDAD_TUNEL 35
 | 
			
		||||
#define PROFUNDIDAD_TUNEL 35
 | 
			
		||||
#define FACTOR_SERPIENTE  0.015F
 | 
			
		||||
 | 
			
		||||
//#define TODO_BLANCO
 | 
			
		||||
//#define TODO_GRIS
 | 
			
		||||
 | 
			
		||||
int PERFECCION_CIRCULO = 8;
 | 
			
		||||
// 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 );
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// 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 );
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
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;
 | 
			
		||||
 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;
 | 
			
		||||
 }
 | 
			
		||||
int Retorcido = 0;
 | 
			
		||||
 | 
			
		||||
 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-- )
 | 
			
		||||
 {
 | 
			
		||||
  Retorcido+=15;
 | 
			
		||||
/*
 | 
			
		||||
OGiroAngular = GiroAngular;
 | 
			
		||||
GiroAngular = ( GiroAngular++ ) % 360;
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
                  // Borra el anterior
 | 
			
		||||
                  CirculoB( XSinMov[(unsigned char)(Movimiento-1)] + 40, YSinMov[(unsigned char)(Movimiento-1)] + 25, RADIO - depth*BLOQUEO_RADIO, OGiroAngular + 0*Movimiento + Retorcido );
 | 
			
		||||
 | 
			
		||||
  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] + 40, YSinMov[Movimiento] + 25, RADIO - depth*BLOQUEO_RADIO, GiroAngular + 0*Movimiento + Retorcido, Subidon%6 == 0 || Subidon%6 == 1 ? 1+Subidon : Color);
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 delay(10);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Escribe un caracter en (x,y) -> Color|Fondo en VText                                    0x7900
 | 
			
		||||
#define WriteChar50( x, y, caracter, Col, Fon, VText )   VText[80*y + x] = (((unsigned)caracter)&0x00FF) | (((unsigned)( (Fon<<4)+Col )<<8)&0xFF00);
 | 
			
		||||
class TextoAnimado
 | 
			
		||||
{
 | 
			
		||||
 private:
 | 
			
		||||
      int *pPlanoVirtual;
 | 
			
		||||
      int *sPlanoVirtual;
 | 
			
		||||
      int *tPlanoVirtual;
 | 
			
		||||
 public:
 | 
			
		||||
      TextoAnimado(void);
 | 
			
		||||
     ~TextoAnimado(void){ delete [] pPlanoVirtual; delete [] sPlanoVirtual; delete [] tPlanoVirtual; };
 | 
			
		||||
      void locateText( int x, int y, unsigned char *texto, char color, char fondo );
 | 
			
		||||
      void VuelcaPantallas(void);
 | 
			
		||||
      void BorraTodo(void) { memset( MK_FP( 0xB800, 0 ),      0, 8000 );
 | 
			
		||||
                             memset(      tPlanoVirtual,      0, 8000 );
 | 
			
		||||
                             memset(      pPlanoVirtual,      0, 8000 );
 | 
			
		||||
                             memset(      sPlanoVirtual,      0, 8000 ); };
 | 
			
		||||
      int *pPlano(void){ return pPlanoVirtual; };
 | 
			
		||||
      int *sPlano(void){ return sPlanoVirtual; };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void TextoAnimado::locateText( int x, int y, unsigned char *texto, char color, char fondo )
 | 
			
		||||
{
 | 
			
		||||
 while( *texto != '\0' )
 | 
			
		||||
 {
 | 
			
		||||
  if ( (*texto) != (unsigned char)'<EFBFBD>' )
 | 
			
		||||
  {
 | 
			
		||||
   WriteChar50( x++, y, *(texto++), color, fondo, pPlanoVirtual )
 | 
			
		||||
  }  else {
 | 
			
		||||
   WriteChar50( x++, y, 0, 0, 0, pPlanoVirtual )
 | 
			
		||||
   texto++;
 | 
			
		||||
  }
 | 
			
		||||
 }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TextoAnimado::TextoAnimado(void)
 | 
			
		||||
{
 | 
			
		||||
 if ( ( pPlanoVirtual = new int  [4000] ) == NULL )
 | 
			
		||||
 {
 | 
			
		||||
  pPlanoVirtual = sPlanoVirtual = tPlanoVirtual = (int *)MK_FP( 0xB800, 0 );
 | 
			
		||||
 } else
 | 
			
		||||
       if ( ( sPlanoVirtual = new int  [4000] ) == NULL )
 | 
			
		||||
       {
 | 
			
		||||
         sPlanoVirtual = tPlanoVirtual = (int *)MK_FP( 0xB800, 0 );
 | 
			
		||||
       } else
 | 
			
		||||
        if ( ( tPlanoVirtual = new int  [4000] ) == NULL )
 | 
			
		||||
          tPlanoVirtual = (int *)MK_FP( 0xB800, 0 );
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TextoAnimado::VuelcaPantallas(void)
 | 
			
		||||
{
 | 
			
		||||
 int count = 3999;//4000;
 | 
			
		||||
 int * dest, * scr;
 | 
			
		||||
 | 
			
		||||
 // Volcamos el segundo plano, ENTERO
 | 
			
		||||
 memcpy( tPlanoVirtual, sPlanoVirtual, 8000 );
 | 
			
		||||
 // Volcamos el primer plano, pero cuidado caracter <20> == transparente
 | 
			
		||||
 dest = tPlanoVirtual;
 | 
			
		||||
 scr  = pPlanoVirtual;
 | 
			
		||||
 while( count-- )
 | 
			
		||||
 {
 | 
			
		||||
  if ( *scr )
 | 
			
		||||
  {
 | 
			
		||||
   *(dest++) = *(scr++);
 | 
			
		||||
  } else {
 | 
			
		||||
   scr++; dest++;
 | 
			
		||||
  }
 | 
			
		||||
 };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 memcpy( MK_FP( 0xB800, 0 ), tPlanoVirtual, 8000 );
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
TextoAnimado prueba1;
 | 
			
		||||
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
 | 
			
		||||
#include <dir.h>
 | 
			
		||||
#include <dos.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <conio.h>
 | 
			
		||||
#include <process.h>
 | 
			
		||||
 | 
			
		||||
typedef struct
 | 
			
		||||
{
 | 
			
		||||
 int x, y;          // Posicion en la pantalla
 | 
			
		||||
 | 
			
		||||
 char Direc[80];    // Directorio donde localizarlo
 | 
			
		||||
 char Passw[10];    // Password
 | 
			
		||||
 | 
			
		||||
} DATOS_CD;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
DATOS_CD ArbolActual[] = {
 | 
			
		||||
                          { 2,  2, "a\\Aerofght.smc", "neila" },
 | 
			
		||||
                          { 2,  5, "d\\darkness.smc", "neila" },
 | 
			
		||||
                          { 2,  6, "d\\dazebefo.smc", "neila" },
 | 
			
		||||
                          { 2,  7, "d\\dbzlots.smc", "neila" },
 | 
			
		||||
                          { 2,  8, "d\\demonbla.smc", "neila" },
 | 
			
		||||
                          { 2,  9, "d\\demoncre.smc", "neila" },
 | 
			
		||||
                          { 2, 10, "d\\devilsto.smc", "neila" },
 | 
			
		||||
                          { 2, 11, "d\\dezaemon.smc", "neila" },
 | 
			
		||||
                          { 2, 12, "d\\dochers.smc", "neila" },
 | 
			
		||||
                          { 2, 13, "d\\dokapon2.smc", "neila" },
 | 
			
		||||
                          { 2, 14, "d\\doluckyp.smc", "neila" },
 | 
			
		||||
                          { 2, 15, "d\\donkeykc.smc", "neila" },
 | 
			
		||||
                          { 2, 16, "d\\donkeyko.smc", "neila" },
 | 
			
		||||
                          { 2, 17, "d\\doraemon.smc", "neila" },
 | 
			
		||||
                          { 2, 18, "d\\doubled5.smc", "neila" },
 | 
			
		||||
                          { 2, 19, "d\\doenworl.smc", "neila" },
 | 
			
		||||
                          { 2, 20, "d\\dragon.smc", "neila" },
 | 
			
		||||
                          { 2, 21, "d\\dragonvi.smc", "neila" },
 | 
			
		||||
                          { 2, 22, "d\\dreambak.smc", "neila" },
 | 
			
		||||
                          { 2, 23, "d\\dropzone.smc", "neila" },
 | 
			
		||||
                          { 2, 26, "f\\F1hero94.smc", "neila" },
 | 
			
		||||
                          { 2, 27, "f\\F1polep2.smc", "neila" },
 | 
			
		||||
                          { 2, 28, "f\\Famfishm.smc", "neila" },
 | 
			
		||||
                          { 2, 29, "f\\Familyci.smc", "neila" },
 | 
			
		||||
                          { 2, 30, "f\\Fantasy3.smc", "neila" },
 | 
			
		||||
                          { 2, 31, "f\\Fzero.smc", "neila" },
 | 
			
		||||
                          { 50,  2,"g\\Ghostsan.smc", "neila" },
 | 
			
		||||
                          { 50,  5, "M\\Madden95.smc", "neila" },
 | 
			
		||||
                          { 50,  6, "M\\Magnabra.smc", "neila" },
 | 
			
		||||
                          { 50,  7, "M\\Mahjong2.smc", "neila" },
 | 
			
		||||
                          { 50,  8, "M\\Mahjongg.smc", "neila" },
 | 
			
		||||
                          { 50,  9, "M\\Majang3.smc", "neila" },
 | 
			
		||||
                          { 50, 10, "M\\Makeruna.smc", "neila" },
 | 
			
		||||
                          { 50, 11, "M\\Mario-ea.smc", "neila" },
 | 
			
		||||
                          { 50, 12, "M\\Marioall.smc", "neila" },
 | 
			
		||||
                          { 50, 13, "M\\Mariowor.smc", "neila" },
 | 
			
		||||
                          { 50, 16, "P\\Parodius.smc", "neila" },
 | 
			
		||||
                          { 50, 17, "P\\Pbobble.smc", "neila" },
 | 
			
		||||
                          { 50, 18, "P\\Pilot.smc", "neila" },
 | 
			
		||||
                          { 50, 19, "P\\Punchout.smc", "neila" },
 | 
			
		||||
                          { 50, 22, "S\\Sunsetro.smc", "neila" },
 | 
			
		||||
                          { 50, 23, "S\\Superbom.smc", "neila" },
 | 
			
		||||
                          { 50, 26, "U\\Uniracer.smc", "neila" },
 | 
			
		||||
                          { 50, 27, "U\\Unsquadr.smc", "neila" },
 | 
			
		||||
                          { 50, 30, "W\\Wings2.smc", "neila" },
 | 
			
		||||
                         };
 | 
			
		||||
void DibujaPantalla(void)
 | 
			
		||||
{
 | 
			
		||||
 clrscr();
 | 
			
		||||
 | 
			
		||||
 prueba1.locateText( 0, 0,   "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0, 1,   "<EFBFBD>A<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>G<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0, 2,   "<EFBFBD><EFBFBD> Aero Fighter         <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ghost'an'Gobblins<6E><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0, 3,   "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0, 4,   "<EFBFBD>D<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0, 5,   "<EFBFBD><EFBFBD> Lord of Darkness     <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Madden NFL'95        <20><>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0, 6,   "<EFBFBD><EFBFBD> Daze Before Chrismas <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Magna Braban         <20><>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0, 7,   "<EFBFBD><EFBFBD> Dragon Ball Z LOTS   <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Super Mahjongg2      <20><>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0, 8,   "<EFBFBD><EFBFBD> Demon's Blazon       <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Mahjong Goku Tenjiku <20><>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0, 9,   "<EFBFBD><EFBFBD> Demon's Crest        <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Majang 3             <20><>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,10,   "<EFBFBD><EFBFBD> Devil Storm          <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Makeruna MakeDou     <20><>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,11,   "<EFBFBD><EFBFBD> Dezaemon             <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Fun with Numbers     <20><>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,12,   "<EFBFBD><EFBFBD> Bakto! Dochers       <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Super Mario all Star <20><>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,13,   "<EFBFBD><EFBFBD> Dokapon2             <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Super Mario World    <20><>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,14,   "<EFBFBD><EFBFBD> Dolucky Puzzle Tour  <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,15,   "<EFBFBD><EFBFBD> Donkey Kong Country  <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>P<EFBFBD><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,16,   "<EFBFBD><EFBFBD> Donkey Kong Country2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Parodius             <20><>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,17,   "<EFBFBD><EFBFBD> Doraemon Tokihougyok <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Puzzle Bobble        <20><>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,18,   "<EFBFBD><EFBFBD> DD5 The Shadow Falls <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Pilot Wings          <20><>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,19,   "<EFBFBD><EFBFBD> Down the World       <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Super Punch-Out!     <20><>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,20,   "<EFBFBD><EFBFBD> Dragon - Bruce Lee   <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,21,   "<EFBFBD><EFBFBD> Dragon View          <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,22,   "<EFBFBD><EFBFBD> Dream Basketball DH  <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Sunset Riders        <20><>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,23,   "<EFBFBD><EFBFBD> DropZone             <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Super Bomberman      <20><>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,24,   "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,25,   "<EFBFBD>F<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,26,   "<EFBFBD><EFBFBD> F-1 Hero 94          <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Uniracer             <20><>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,27,   "<EFBFBD><EFBFBD> F1 Pole Position 2   <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> U.N. Squadron        <20><>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,28,   "<EFBFBD><EFBFBD> FamFishM             <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,29,   "<EFBFBD><EFBFBD> Family City          <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>W<EFBFBD><57><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,30,   "<EFBFBD><EFBFBD> Final Fantasy 3      <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Wings races high     <20><>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,31,   "<EFBFBD><EFBFBD> F-Zero               <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", BLACK, LIGHTGRAY );
 | 
			
		||||
 prueba1.locateText( 0,32,   "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>l<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", WHITE, BLACK );
 | 
			
		||||
 prueba1.locateText( 0,33,   "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>l<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>l<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", WHITE, BLACK );
 | 
			
		||||
 prueba1.locateText( 0,34,   "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>S<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>g<EFBFBD>r<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", WHITE, BLACK );
 | 
			
		||||
 prueba1.locateText( 0,35,   "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>g<EFBFBD>e<EFBFBD><EFBFBD><EFBFBD>S<EFBFBD> Sol Neg<65><67><EFBFBD><EFBFBD><EFBFBD>N<EFBFBD>e<EFBFBD><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", WHITE, BLACK );
 | 
			
		||||
 prueba1.locateText( 0,36,   "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>l<EFBFBD>o<EFBFBD><EFBFBD><EFBFBD><EFBFBD>N<EFBFBD><EFBFBD><EFBFBD>egro Sol N<><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", WHITE, BLACK );
 | 
			
		||||
 prueba1.locateText( 0,37,   "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>S<EFBFBD><EFBFBD><EFBFBD><EFBFBD>gro Sol Negro<72><6F><EFBFBD><EFBFBD>S<EFBFBD>o<EFBFBD><6F><EFBFBD><EFBFBD>N<EFBFBD><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", WHITE, BLACK );
 | 
			
		||||
 prueba1.locateText( 0,38,   "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>r<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Sol Negro Sol Neg<65><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD>l<EFBFBD><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", WHITE, BLACK );
 | 
			
		||||
 prueba1.locateText( 0,39,   "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>g<EFBFBD>e<EFBFBD>N<EFBFBD><EFBFBD>Sol Negro Sol Negro<72><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", WHITE, BLACK );
 | 
			
		||||
 prueba1.locateText( 0,40,   "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>l Negro Sol Negro<72><6F><EFBFBD>e<EFBFBD><65><EFBFBD><EFBFBD>o<EFBFBD><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", WHITE, BLACK );
 | 
			
		||||
 prueba1.locateText( 0,41,   "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>l<EFBFBD>o<EFBFBD>S<EFBFBD><EFBFBD><EFBFBD>Negro Sol Negro<72><6F><EFBFBD><EFBFBD><EFBFBD>g<EFBFBD>r<EFBFBD><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", WHITE, BLACK );
 | 
			
		||||
 prueba1.locateText( 0,42,   "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>e<EFBFBD>N<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ro Sol Negro<72><6F><EFBFBD><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", WHITE, BLACK );
 | 
			
		||||
 prueba1.locateText( 0,43,   "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>g<EFBFBD>e<EFBFBD>N<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Sol Negr<67><72><EFBFBD>N<EFBFBD><4E><EFBFBD><EFBFBD>o<EFBFBD>l<EFBFBD><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", WHITE, BLACK );
 | 
			
		||||
 prueba1.locateText( 0,44,   "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>r<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>e<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", WHITE, BLACK );
 | 
			
		||||
 prueba1.locateText( 0,45,   "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>l<EFBFBD><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD><EFBFBD><EFBFBD><EFBFBD>S<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>g<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", WHITE, BLACK );
 | 
			
		||||
 prueba1.locateText( 1,46,  "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", WHITE, LIGHTGRAY);textcolor(BLACK); prueba1.locateText(78,46, "<EFBFBD>", BLACK, LIGHTGRAY);
 | 
			
		||||
 prueba1.locateText( 1,47,  "<EFBFBD>", WHITE, LIGHTGRAY);prueba1.locateText( 2,47, "                                                                            <20>", BLACK, LIGHTGRAY);
 | 
			
		||||
 prueba1.locateText( 1,48,  "<EFBFBD>", WHITE, LIGHTGRAY);textcolor(BLACK); prueba1.locateText( 2,48, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", BLACK, LIGHTGRAY);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
char far *screen;// = (char far *)0xB8000000;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void Kit(void)
 | 
			
		||||
{
 | 
			
		||||
 static char Dir = 1;
 | 
			
		||||
 static char Pos = 0;
 | 
			
		||||
 char longt;
 | 
			
		||||
 | 
			
		||||
 for ( longt = 0; longt < 10; longt++ )
 | 
			
		||||
 {
 | 
			
		||||
  if ( (Dir*longt + Pos) >= 0 && (Dir*longt + Pos) <= 75 )
 | 
			
		||||
  {
 | 
			
		||||
   screen[ 47*80*2 + ( Pos + Dir*longt + 2)*2 + 1 ] &= 0x8F;
 | 
			
		||||
   screen[ 47*80*2 + ( Pos + Dir*longt + 2)*2 + 1 ] |= 7<<4;
 | 
			
		||||
/*
 | 
			
		||||
   gotoxy( Pos + Dir*longt + 3, 24 );
 | 
			
		||||
   prueba1.locateText( 0, 0,  " " );
 | 
			
		||||
*/
 | 
			
		||||
  }
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 Pos += Dir;
 | 
			
		||||
 if ( Pos < 0  -2 ) Dir = 1;
 | 
			
		||||
 if ( Pos > 75 +2 ) Dir = -1;
 | 
			
		||||
 | 
			
		||||
 for ( longt = 0; longt < 10; longt++ )
 | 
			
		||||
 {
 | 
			
		||||
  if ( (Dir*longt + Pos) >= 0 && (Dir*longt + Pos) <= 75 )
 | 
			
		||||
  {
 | 
			
		||||
/*
 | 
			
		||||
   gotoxy( Pos + Dir*longt + 3, 24 );
 | 
			
		||||
   prueba1.locateText( 0, 0,  "<22>" );
 | 
			
		||||
*/
 | 
			
		||||
   screen[ 47*80*2 + ( Pos + Dir*longt + 2)*2 + 1 ] &= 0x8F;
 | 
			
		||||
   screen[ 47*80*2 + ( Pos + Dir*longt + 2)*2 + 1 ] |= 3<<4;
 | 
			
		||||
  }
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 delay( /*1000*/25 );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void main(void)
 | 
			
		||||
{
 | 
			
		||||
  int ok = 0;
 | 
			
		||||
  int Item = 0, i;
 | 
			
		||||
  char buffer[80];
 | 
			
		||||
  char *p;
 | 
			
		||||
 | 
			
		||||
  screen =(char *) prueba1.pPlano();
 | 
			
		||||
 | 
			
		||||
  p = searchpath("snes.EXE");
 | 
			
		||||
  printf("Search for snes.EXE : %s\n", p);
 | 
			
		||||
  if ( p == NULL )
 | 
			
		||||
  {
 | 
			
		||||
        printf( "Debes copiar el EMULADOR SNES al path como snes.exe\n");
 | 
			
		||||
        printf( "Ejemplo:                                           \n");
 | 
			
		||||
        printf( "        copy snes.ex C:\\dos\\snes.EXE             \n");
 | 
			
		||||
        return;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  textmode( C4350 );
 | 
			
		||||
  RellenaTablas(); _setcursortype( _NOCURSOR ); prueba1.BorraTodo(); textoVirtual = prueba1.sPlano();
 | 
			
		||||
  init_star();
 | 
			
		||||
 | 
			
		||||
  DibujaPantalla();
 | 
			
		||||
 | 
			
		||||
  for ( i = 0; i < 22; i++ )
 | 
			
		||||
  {
 | 
			
		||||
   screen[ ArbolActual[Item].y*80*2 + (ArbolActual[Item].x+i)*2 + 1 ] &= 0x8F;
 | 
			
		||||
   screen[ ArbolActual[Item].y*80*2 + (ArbolActual[Item].x+i)*2 + 1 ] |= 5<<4;
 | 
			
		||||
  }
 | 
			
		||||
     prueba1.locateText( 4, 47, "                                                                      ", LIGHTGRAY, LIGHTGRAY );
 | 
			
		||||
     sprintf( buffer, "Linea de comandos: snes %s", /*ArbolActual[Item].Passw,*/  ArbolActual[Item].Direc );
 | 
			
		||||
     prueba1.locateText( 4,47, buffer, RED, LIGHTGRAY );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  while ( !ok )
 | 
			
		||||
  {
 | 
			
		||||
   TunelEstrellas();
 | 
			
		||||
//   Actualiza(Cestrellas);
 | 
			
		||||
 | 
			
		||||
   prueba1.VuelcaPantallas();
 | 
			
		||||
 | 
			
		||||
   Kit();
 | 
			
		||||
 | 
			
		||||
   if ( kbhit() && (ok = getch()) == 0 )
 | 
			
		||||
   {
 | 
			
		||||
    for ( i = 0; i < 22; i++ )
 | 
			
		||||
    {
 | 
			
		||||
     screen[ ArbolActual[Item].y*80*2 + (ArbolActual[Item].x+i)*2 + 1 ] &= 0x8F;
 | 
			
		||||
     screen[ ArbolActual[Item].y*80*2 + (ArbolActual[Item].x+i)*2 + 1 ] |= 7<<4;
 | 
			
		||||
    }
 | 
			
		||||
    switch ( getch() )
 | 
			
		||||
    {
 | 
			
		||||
      case 72:
 | 
			
		||||
              Item--; if ( Item < 0 ) Item = 44;
 | 
			
		||||
              break;
 | 
			
		||||
      case 80:
 | 
			
		||||
              Item++; if ( Item > 44 ) Item =  0;
 | 
			
		||||
              break;
 | 
			
		||||
    }
 | 
			
		||||
    for ( i = 0; i < 22; i++ )
 | 
			
		||||
    {
 | 
			
		||||
     screen[ ArbolActual[Item].y*80*2 + (ArbolActual[Item].x+i)*2 + 1 ] &= 0x8F;
 | 
			
		||||
     screen[ ArbolActual[Item].y*80*2 + (ArbolActual[Item].x+i)*2 + 1 ] |= 5<<4;
 | 
			
		||||
    }
 | 
			
		||||
     prueba1.locateText( 4, 47, "                                                                      ", LIGHTGRAY, LIGHTGRAY );
 | 
			
		||||
//     sprintf( buffer, "Linea de comandos: rar x -p%s %s C:", /*strrev( */ArbolActual[Item].Passw/* )*/,  ArbolActual[Item].Direc );
 | 
			
		||||
     sprintf( buffer, "Linea de comandos: snes %s", /*ArbolActual[Item].Passw,*/  ArbolActual[Item].Direc );
 | 
			
		||||
     prueba1.locateText( 4,47, buffer, RED, LIGHTGRAY );
 | 
			
		||||
   }
 | 
			
		||||
   if ( ok == 13 )
 | 
			
		||||
   {
 | 
			
		||||
//    sprintf( buffer, "-p%s", ArbolActual[Item].Passw );
 | 
			
		||||
    execl  ( p, p, ArbolActual[Item].Direc, NULL);
 | 
			
		||||
    ok = 1;
 | 
			
		||||
   }
 | 
			
		||||
   if ( ok == 27 ) ok = 1; else ok = 0;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  textbackground( BLACK );
 | 
			
		||||
  textcolor( LIGHTGRAY );
 | 
			
		||||
  textmode( C80 );
 | 
			
		||||
  clrscr();
 | 
			
		||||
  deinit_star();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
 | 
			
		||||
void init_star(void)
 | 
			
		||||
{
 | 
			
		||||
  randomize();
 | 
			
		||||
  if ( ( Cestrellas = (CAMPO_de_ESTRELLAS *)malloc( sizeof(CAMPO_de_ESTRELLAS)*200 ) ) == NULL ) return;
 | 
			
		||||
  if ( ( o = (CAMPO_de_ESTRELLAS *)malloc( sizeof(CAMPO_de_ESTRELLAS)*200 ) ) == NULL ) return;
 | 
			
		||||
 | 
			
		||||
  llena_campo(Cestrellas);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void deinit_star(void)
 | 
			
		||||
{
 | 
			
		||||
 free( Cestrellas );
 | 
			
		||||
 free( o          );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void llena_campo(CAMPO_de_ESTRELLAS *Cest)
 | 
			
		||||
{
 | 
			
		||||
 int estrellas;
 | 
			
		||||
 for ( estrellas = 0; estrellas < 200; estrellas++ )
 | 
			
		||||
                                                pon_estrella( &Cest[estrellas] );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void pon_estrella(CAMPO_de_ESTRELLAS *Cest)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  Cest -> Ex = random(40)+1;
 | 
			
		||||
  Cest -> Ey = random(25)+1;
 | 
			
		||||
  Cest -> Ez = 100          ;
 | 
			
		||||
  Cest -> Ecolor = WHITE;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Star3d(CAMPO_de_ESTRELLAS *Cest)
 | 
			
		||||
{
 | 
			
		||||
//  Star3d( Cestrellas );
 | 
			
		||||
  while( !kbhit() ) Actualiza(Cest);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Actualiza(CAMPO_de_ESTRELLAS *Cest)
 | 
			
		||||
{
 | 
			
		||||
 int Ex, Ey, conta;
 | 
			
		||||
 static float FactorMovimientoX = 0, FactorMovimientoY = 0, ox = 0, oy = 0;
 | 
			
		||||
 static float x=0.1, y=0.1;
 | 
			
		||||
 static char color = 0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 for( conta=0; conta<200; conta++ )
 | 
			
		||||
 {
 | 
			
		||||
if (  o[conta].Ex+ox> 0 && o[conta].Ex+ox < 79 && o[conta].Ey+oy > 0 && o[conta].Ey+oy < 49 )
 | 
			
		||||
  WriteChar50 ( o[conta].Ex+ox, o[conta].Ey+oy, '*', 0, 0, textoVirtual );
 | 
			
		||||
 | 
			
		||||
//  putpixel ( o[conta].Ex+ox+5, o[conta].Ey+oy+(317/2), 0 );
 | 
			
		||||
  Ex = ( ((200*Cest[conta].Ex)/Cest[conta].Ez));//+40;
 | 
			
		||||
  Ey = ( ((200*Cest[conta].Ey)/Cest[conta].Ez));//+25;//240;
 | 
			
		||||
  Cest[conta].Ez = Cest[conta].Ez - 5            ;
 | 
			
		||||
 | 
			
		||||
  o[conta].Ex = Ex;
 | 
			
		||||
  o[conta].Ey = Ey;
 | 
			
		||||
 | 
			
		||||
color++;
 | 
			
		||||
if ( color > 10 )
 | 
			
		||||
{
 | 
			
		||||
if ( Cest[conta].Ecolor == WHITE )
 | 
			
		||||
  Cest[conta].Ecolor = LIGHTGRAY;
 | 
			
		||||
else if ( Cest[conta].Ecolor == LIGHTGRAY )
 | 
			
		||||
  Cest[conta].Ecolor = DARKGRAY;
 | 
			
		||||
else
 | 
			
		||||
  Cest[conta].Ecolor = WHITE;
 | 
			
		||||
color = 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
  if ( Ex>79 && Ey>49 )
 | 
			
		||||
                  pon_estrella ( &Cest[conta] );
 | 
			
		||||
 | 
			
		||||
  if ( Cest[conta].Ez <= 20  || Ex>79 || Ey>49 || Ex<0 || Ey<0 )
 | 
			
		||||
//  if ( Cest[conta].Ez <= 20  || Ex>635 || Ey>470 || Ex<5 || Ey<317 )
 | 
			
		||||
                 pon_estrella ( &Cest[conta] );
 | 
			
		||||
 | 
			
		||||
if ( Ex+FactorMovimientoX > 0 && Ex+FactorMovimientoX < 79 && Ey+FactorMovimientoY > 0  && Ey+FactorMovimientoY < 49 )
 | 
			
		||||
//  putpixel ( Ex+FactorMovimientoX, Ey+FactorMovimientoY+100, Cest[conta].Ecolor );
 | 
			
		||||
  WriteChar50 ( Ex+FactorMovimientoX, Ey+FactorMovimientoY, '*', Cest[conta].Ecolor%16, 0, textoVirtual );
 | 
			
		||||
//  putpixel ( Ex+FactorMovimientoX+5, Ey+FactorMovimientoY+(317/2), Cest[conta].Ecolor );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 ox = FactorMovimientoX;
 | 
			
		||||
 oy = FactorMovimientoY;
 | 
			
		||||
 | 
			
		||||
 FactorMovimientoX+= x;
 | 
			
		||||
 FactorMovimientoY+= y;
 | 
			
		||||
 | 
			
		||||
 if ( FactorMovimientoX > 1 ) x = -0.1;
 | 
			
		||||
 if ( FactorMovimientoX < -1 ) x =  0.1;
 | 
			
		||||
 if ( FactorMovimientoY > 1 ) y = -0.1;
 | 
			
		||||
 if ( FactorMovimientoY < -1 ) y =  0.1;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										281
									
								
								TEXTO.CPP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										281
									
								
								TEXTO.CPP
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,281 @@
 | 
			
		||||
#include <mem.h>
 | 
			
		||||
#include <conio.h>
 | 
			
		||||
#include <math.h>
 | 
			
		||||
#include <dos.h>
 | 
			
		||||
 | 
			
		||||
// Jos<6F> David Guillen   (Pruebas para el muestreo de multiplanos en modo texto)
 | 
			
		||||
// 1997 (c) || Sol Negro
 | 
			
		||||
// http://www.arrakis.es/~infomundo/JD
 | 
			
		||||
 | 
			
		||||
// Escribe un caracter en (x,y) -> Color|Fondo en VText                                    0x7900
 | 
			
		||||
#define WriteChar50( x, y, caracter, Col, Fon, VText )   VText[80*y + x] = (((unsigned)caracter)&0x00FF) | (((unsigned)( (Fon<<4)+Col )<<8)&0xFF00);
 | 
			
		||||
/*
 | 
			
		||||
( (Fon<<4)+Col )
 | 
			
		||||
 | 
			
		||||
( ( (int)( (char)Fon << 4) + Col )<< 8 )
 | 
			
		||||
 | 
			
		||||
   7   6   5   4 <20> 3   2   1   0
 | 
			
		||||
 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
 | 
			
		||||
 <20> B <20> b <20> b <20> b <20> f <20> f <20> f <20> f <20>
 | 
			
		||||
 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
                 <20>
 | 
			
		||||
 | 
			
		||||
In this 8-bit newattr parameter,
 | 
			
		||||
  <20> ffff = 4-bit foreground color (0 to 15)
 | 
			
		||||
  <20> bbb  = 3-bit background color (0 to 7)
 | 
			
		||||
  <20> B    = blink-enable bit
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
// Proyecto para mostrar cosas en modo texto: 80x50
 | 
			
		||||
 | 
			
		||||
// Preparamos un buffer virtual a pantalla: 80x50*2 bytes/punto = 8000 bytes
 | 
			
		||||
int *textoVirtual;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int XSinMov[256], YSinMov[256];
 | 
			
		||||
int TSin[360+90];
 | 
			
		||||
 | 
			
		||||
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;
 | 
			
		||||
 };
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
char PRIMARIO8 = YELLOW; char SECUNDARIO1 = RED;
 | 
			
		||||
void Put( int x, int y, unsigned char c)
 | 
			
		||||
{
 | 
			
		||||
 if ( x < 0 || x >= 80 ) return;
 | 
			
		||||
 if ( y < 0 || y >= 50 ) return;
 | 
			
		||||
 | 
			
		||||
 WriteChar50( x, y, '<EFBFBD>', (c==0 ? 0 : PRIMARIO8), SECUNDARIO1, textoVirtual );
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
//#define RADIO 255
 | 
			
		||||
// Radio de partida
 | 
			
		||||
#define RADIO 255
 | 
			
		||||
#define SALTOS_ANCHOS     7
 | 
			
		||||
 | 
			
		||||
//#define SALTOS_PROFUNDOS 8
 | 
			
		||||
// Grado de torcion
 | 
			
		||||
#define SALTOS_PROFUNDOS 8
 | 
			
		||||
//#define SALTOS_ANCHOS    7
 | 
			
		||||
 | 
			
		||||
// Saltos de radio
 | 
			
		||||
#define BLOQUEO_RADIO     1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define INCREMENTAL       1
 | 
			
		||||
 | 
			
		||||
//#define PROFUNDIDAD_TUNEL 35
 | 
			
		||||
#define PROFUNDIDAD_TUNEL 35
 | 
			
		||||
#define FACTOR_SERPIENTE  0.015F
 | 
			
		||||
 | 
			
		||||
//#define TODO_BLANCO
 | 
			
		||||
//#define TODO_GRIS
 | 
			
		||||
 | 
			
		||||
int PERFECCION_CIRCULO = 8;
 | 
			
		||||
// 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 );
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// 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 );
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
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;
 | 
			
		||||
 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;
 | 
			
		||||
 }
 | 
			
		||||
int Retorcido = 0;
 | 
			
		||||
 | 
			
		||||
 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-- )
 | 
			
		||||
 {
 | 
			
		||||
  Retorcido+=15;
 | 
			
		||||
/*
 | 
			
		||||
OGiroAngular = GiroAngular;
 | 
			
		||||
GiroAngular = ( GiroAngular++ ) % 360;
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
                  // Borra el anterior
 | 
			
		||||
                  CirculoB( XSinMov[(unsigned char)(Movimiento-1)] + 40, YSinMov[(unsigned char)(Movimiento-1)] + 25, RADIO - depth*BLOQUEO_RADIO, OGiroAngular + 0*Movimiento + Retorcido );
 | 
			
		||||
 | 
			
		||||
  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] + 40, YSinMov[Movimiento] + 25, RADIO - depth*BLOQUEO_RADIO, GiroAngular + 0*Movimiento + Retorcido, Subidon%6 == 0 || Subidon%6 == 1 ? 1+Subidon : Color);
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 delay(10);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
// Escribe un caracter en (x,y) -> Color|Fondo en VText                                    0x7900
 | 
			
		||||
#define WriteChar50( x, y, caracter, Col, Fon, VText )   VText[80*y + x] = (((unsigned)caracter)&0x00FF) | (((unsigned)( (Fon<<4)+Col )<<8)&0xFF00);
 | 
			
		||||
class TextoAnimado
 | 
			
		||||
{
 | 
			
		||||
 private:
 | 
			
		||||
      int *pPlanoVirtual;
 | 
			
		||||
      int *sPlanoVirtual;
 | 
			
		||||
      int *tPlanoVirtual;
 | 
			
		||||
 public:
 | 
			
		||||
      TextoAnimado(void);
 | 
			
		||||
     ~TextoAnimado(void){ delete [] pPlanoVirtual; delete [] sPlanoVirtual; delete [] tPlanoVirtual; };
 | 
			
		||||
      void locateText( int x, int y, unsigned char *texto, char color, char fondo );
 | 
			
		||||
      void VuelcaPantallas(void);
 | 
			
		||||
      void BorraTodo(void) { memset( MK_FP( 0xB800, 0 ),      0, 8000 );
 | 
			
		||||
                             memset(      tPlanoVirtual,      0, 8000 );
 | 
			
		||||
                             memset(      pPlanoVirtual,      0, 8000 );
 | 
			
		||||
                             memset(      sPlanoVirtual,      0, 8000 ); };
 | 
			
		||||
      int *pPlano(void){ return pPlanoVirtual; };
 | 
			
		||||
      int *sPlano(void){ return sPlanoVirtual; };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void TextoAnimado::locateText( int x, int y, unsigned char *texto, char color, char fondo )
 | 
			
		||||
{
 | 
			
		||||
 while( *texto != '\0' )
 | 
			
		||||
 {
 | 
			
		||||
  if ( (*texto) != (unsigned char)'<EFBFBD>' )
 | 
			
		||||
  {
 | 
			
		||||
   WriteChar50( x++, y, *(texto++), color, fondo, pPlanoVirtual )
 | 
			
		||||
  }  else {
 | 
			
		||||
   WriteChar50( x++, y, 0, 0, 0, pPlanoVirtual )
 | 
			
		||||
   texto++;
 | 
			
		||||
  }
 | 
			
		||||
 }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TextoAnimado::TextoAnimado(void)
 | 
			
		||||
{
 | 
			
		||||
 if ( ( pPlanoVirtual = new int  [4000] ) == NULL )
 | 
			
		||||
 {
 | 
			
		||||
  pPlanoVirtual = sPlanoVirtual = tPlanoVirtual = (int *)MK_FP( 0xB800, 0 );
 | 
			
		||||
 } else
 | 
			
		||||
       if ( ( sPlanoVirtual = new int  [4000] ) == NULL )
 | 
			
		||||
       {
 | 
			
		||||
         sPlanoVirtual = tPlanoVirtual = (int *)MK_FP( 0xB800, 0 );
 | 
			
		||||
       } else
 | 
			
		||||
        if ( ( tPlanoVirtual = new int  [4000] ) == NULL )
 | 
			
		||||
          tPlanoVirtual = (int *)MK_FP( 0xB800, 0 );
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TextoAnimado::VuelcaPantallas(void)
 | 
			
		||||
{
 | 
			
		||||
 int count = 3999;//4000;
 | 
			
		||||
 int * dest, * scr;
 | 
			
		||||
 | 
			
		||||
 // Volcamos el segundo plano, ENTERO
 | 
			
		||||
 memcpy( tPlanoVirtual, sPlanoVirtual, 8000 );
 | 
			
		||||
 // Volcamos el primer plano, pero cuidado caracter <20> == transparente
 | 
			
		||||
 dest = tPlanoVirtual;
 | 
			
		||||
 scr  = pPlanoVirtual;
 | 
			
		||||
 while( count-- )
 | 
			
		||||
 {
 | 
			
		||||
  if ( *scr )
 | 
			
		||||
  {
 | 
			
		||||
   *(dest++) = *(scr++);
 | 
			
		||||
  } else {
 | 
			
		||||
   scr++; dest++;
 | 
			
		||||
  }
 | 
			
		||||
 };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 memcpy( MK_FP( 0xB800, 0 ), tPlanoVirtual, 8000 );
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
 | 
			
		||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
void main(void)
 | 
			
		||||
{
 | 
			
		||||
 TextoAnimado prueba1;
 | 
			
		||||
 | 
			
		||||
 textmode( C4350 );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 RellenaTablas();
 | 
			
		||||
 _setcursortype( _NOCURSOR );
 | 
			
		||||
 | 
			
		||||
 prueba1.BorraTodo();
 | 
			
		||||
 prueba1.locateText( 10, 10, "Esto es una prueba de mis librerias", WHITE, BROWN );
 | 
			
		||||
 | 
			
		||||
 prueba1.locateText( 10, 15, "Los espacio pueden aparecer. <20>Lo ves?", WHITE, BROWN );
 | 
			
		||||
 prueba1.locateText( 10, 17, "O<EFBFBD>no<EFBFBD>aparecer,<2C>como<6D>mas<61>te<74>guste,<2C>o<EFBFBD>convenga!!!.", WHITE, BROWN );
 | 
			
		||||
 | 
			
		||||
 textoVirtual = prueba1.sPlano();
 | 
			
		||||
 | 
			
		||||
 while ( !kbhit()  )
 | 
			
		||||
 {
 | 
			
		||||
  TunelEstrellas();
 | 
			
		||||
  prueba1.VuelcaPantallas();
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 textmode( C80 );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user