First commit 14/08/1997
This commit is contained in:
		
							
								
								
									
										
											BIN
										
									
								
								AVENTURA.EXE
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								AVENTURA.EXE
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								AVENTURA.PRJ
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								AVENTURA.PRJ
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										553
									
								
								AVNTR_MM.CPP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										553
									
								
								AVNTR_MM.CPP
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,553 @@
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|*                                                                          *|
 | 
			
		||||
|*  AVNTR_MM                                                                *|
 | 
			
		||||
|*                                                                          *|
 | 
			
		||||
|*  Descripci<63>n:                                                            *|
 | 
			
		||||
|*                M<>dulo principal de la aventura, y hasta el momento el    *|
 | 
			
		||||
|*                <20>nico.                                                    *|
 | 
			
		||||
|*                                                                          *|
 | 
			
		||||
|*                1er Proyecto com<6F>n entre Oscar y JD. ( 1<> de muchos )     *|
 | 
			
		||||
|*                                                                          *|
 | 
			
		||||
|*                                         Fecha:  12-06-97  00.58 / 01.34  *|
 | 
			
		||||
|*                                                 10-07-97  13:05 / 14:07  *|
 | 
			
		||||
|*                                                                          *|
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
 | 
			
		||||
#include <time.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <dos.h>
 | 
			
		||||
#include <mem.h>
 | 
			
		||||
#include <alloc.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
 | 
			
		||||
#include "..\modex\modex.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <conio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
 | 
			
		||||
#define OK    0
 | 
			
		||||
#define ERROR 1
 | 
			
		||||
 | 
			
		||||
#define CURSOR_NORMAL 1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
char raton;
 | 
			
		||||
void Error(int code);
 | 
			
		||||
void Inicializa_Raton(int x1, int y1, int x2, int y2);
 | 
			
		||||
#define MEMORIA 1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class VirtualVGA
 | 
			
		||||
{
 | 
			
		||||
 private:
 | 
			
		||||
      long size, Planos, uPlano;
 | 
			
		||||
 | 
			
		||||
      char huge *memVGA;
 | 
			
		||||
 | 
			
		||||
 public:
 | 
			
		||||
      long cX, cY;
 | 
			
		||||
 | 
			
		||||
      VirtualVGA( long X, long Y );
 | 
			
		||||
     ~VirtualVGA() { delete[] memVGA; };
 | 
			
		||||
      void copiaImagen( long offset, char huge *src, long size );
 | 
			
		||||
      long Size( void  ){ return size; };
 | 
			
		||||
      void VGA(void);
 | 
			
		||||
 | 
			
		||||
      char huge *memVirtual(void) { return memVGA; };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
VirtualVGA::VirtualVGA( long X, long Y )
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
 cY = Y; cX = X;
 | 
			
		||||
 | 
			
		||||
 size = sizeof( char ) * Y * X;
 | 
			
		||||
 if ( ( memVGA = new char huge[size] ) == NULL )
 | 
			
		||||
  Error( MEMORIA );
 | 
			
		||||
 | 
			
		||||
 // Calculamos el n<> de planos cortados que existen y el tama<6D>o del <20>ltimo
 | 
			
		||||
 Planos = size / 0xFFFF;
 | 
			
		||||
 uPlano = size % 0xFFFF;
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void VirtualVGA::copiaImagen( long offset, char huge *src, long size )
 | 
			
		||||
{
 | 
			
		||||
 char huge *dst;
 | 
			
		||||
 // offset indica el comienzo dentro del bloque destino
 | 
			
		||||
 // src    puntero
 | 
			
		||||
 | 
			
		||||
 dst = memVGA + offset;
 | 
			
		||||
 while ( size-- ) *(dst++) = *(src++);
 | 
			
		||||
 | 
			
		||||
 // _fmemcpy( dst, scr, size );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void VirtualVGA::VGA(void)
 | 
			
		||||
{
 | 
			
		||||
  int i;
 | 
			
		||||
 | 
			
		||||
//  for ( i=0; i<Planos; i++ )
 | 
			
		||||
  draw_bitmap( (char far *)(memVGA + 0*0 ), 0,   0, cX, 150 );
 | 
			
		||||
  draw_bitmap( (char far *)(memVGA +(150*360)), 0, 150, cX, 150 );
 | 
			
		||||
  draw_bitmap( (char far *)(memVGA +(300*360)), 0, 300,           360, 100 );
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void set_video_mode ( char mode )
 | 
			
		||||
{
 | 
			
		||||
 asm {
 | 
			
		||||
  mov AH, 0
 | 
			
		||||
  mov AL, mode
 | 
			
		||||
  int 0x10
 | 
			
		||||
 }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void ControlPrincipal(void);
 | 
			
		||||
 | 
			
		||||
int CargaPaleta(char *file );
 | 
			
		||||
void CargaCursor( VirtualVGA **CursorN, VirtualVGA **CursorP, char TipoCursor );
 | 
			
		||||
void LiberaCursor( VirtualVGA **CursorN, VirtualVGA **CursorP );
 | 
			
		||||
void copiaBitmap( char huge *src, int cX, int cY, int wX, int wY, char huge *tgt );
 | 
			
		||||
 | 
			
		||||
void GetBitmap( char far *BitMapSRC, char far *TRG, int X, int Y, int Xw1, int Yw1, int Xw2 );
 | 
			
		||||
char far *CargaImagen( char *file, char huge *VGA, int cX, int cY );
 | 
			
		||||
 | 
			
		||||
long i = 0;
 | 
			
		||||
 | 
			
		||||
int main( void )
 | 
			
		||||
{
 | 
			
		||||
 clock_t Start;
 | 
			
		||||
 | 
			
		||||
 if (set_vga_modex( Mode_360x400, 360, 400, 1) == 0) Error(0x00);
 | 
			
		||||
 | 
			
		||||
 Inicializa_Raton( 0, 0, 360-32, 400 );
 | 
			
		||||
 // ancho del cursor ---------^
 | 
			
		||||
 | 
			
		||||
 Start = clock();
 | 
			
		||||
 ControlPrincipal();
 | 
			
		||||
 Start = ( clock() - Start ) / CLK_TCK;
 | 
			
		||||
 | 
			
		||||
 set_video_mode (3);
 | 
			
		||||
 | 
			
		||||
 printf( "\n%ld segundos %ld planos y %ld planos por segundo\n", (long)Start, (long)i, (long)(i/Start) );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 fflush( stdin );
 | 
			
		||||
 return OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void GetBitmap( char far *BitMapSRC, char far *TRG, int X, int Y, int Xw1, int Yw1, int Xw2 )
 | 
			
		||||
{
 | 
			
		||||
 int x, y;
 | 
			
		||||
 | 
			
		||||
   for ( x = 0; x < Xw1; x++ )
 | 
			
		||||
    for ( y = 0; y < Yw1; y++ )
 | 
			
		||||
     *( TRG + x + y*Xw1 ) = *( BitMapSRC + X+x + (Y+y)*Xw2 );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void ControlPrincipal(void)
 | 
			
		||||
{
 | 
			
		||||
 int oX, oY;
 | 
			
		||||
 int X_Mouse, Y_Mouse;
 | 
			
		||||
 union REGS io;
 | 
			
		||||
 io.x.ax = 3;
 | 
			
		||||
 char pCanim, nCanim;
 | 
			
		||||
 | 
			
		||||
 pCanim = 0;
 | 
			
		||||
 nCanim = 1;
 | 
			
		||||
 | 
			
		||||
 VirtualVGA *CursorN, *CursorP;
 | 
			
		||||
 CursorN = CursorP = NULL;
 | 
			
		||||
 CargaCursor( &CursorN, &CursorP, CURSOR_NORMAL );
 | 
			
		||||
 | 
			
		||||
 // Cuadro de Mandos
 | 
			
		||||
 VirtualVGA cuadroMandos( 360, 100 );
 | 
			
		||||
 CargaImagen( "control.pcx", cuadroMandos.memVirtual(), cuadroMandos.cX, cuadroMandos.cY );
 | 
			
		||||
 // Dibujo del cuadro de mandos
 | 
			
		||||
 draw_bitmap( (char far *)cuadroMandos.memVirtual(), 0, 300, cuadroMandos.cX, cuadroMandos.cY );
 | 
			
		||||
// CargaMuestraControles( cuadroMandos );
 | 
			
		||||
 | 
			
		||||
 // VGA virtual, ( imprescindible volcarla )
 | 
			
		||||
 VirtualVGA VGAvirtual( 360, 400 );
 | 
			
		||||
 VirtualVGA FondoAvntr( 360, 300 );
 | 
			
		||||
 CargaImagen( "boceto.pcx", FondoAvntr.memVirtual(), FondoAvntr.cX, FondoAvntr.cY );
 | 
			
		||||
 | 
			
		||||
 CargaPaleta( "boceto.pcx" );
 | 
			
		||||
 | 
			
		||||
 oX = oY = 0;
 | 
			
		||||
 | 
			
		||||
 do {
 | 
			
		||||
 | 
			
		||||
  // 1<> Rellenamos la virtual con los datos OK!
 | 
			
		||||
  /**//**/  /**//**/  /**//**/  /**//**/  /**//**/
 | 
			
		||||
  VGAvirtual.copiaImagen(       0, FondoAvntr.memVirtual(), FondoAvntr.Size() );
 | 
			
		||||
/*
 | 
			
		||||
  copiaBitmap( FondoAvntr.memVGA, 0, 0, FondoAvntr.cX, FondoAvntr.cY, VGAvirtual.memVGA );
 | 
			
		||||
  copiaBitmap( cuadroMandos.memVGA, 0, 300, cuadroMandos.cX, cuadroMandos.cY, VGAvirtual.memVGA );
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
  // 2<> Mostramos los <20>ltimos objetos de primer plano:
 | 
			
		||||
  //    <20><><EFBFBD><EFBFBD><EFBFBD>Ŀ VGAvirtual
 | 
			
		||||
  //    <20> 1 <20><><EFBFBD><EFBFBD><EFBFBD>Ŀ Objetos de 1er plano
 | 
			
		||||
  //    <20><><EFBFBD>Ĵ 2   <20>
 | 
			
		||||
  //        <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
  // Mostramos y controlamos el rat<61>n ( redibujo de los controles y procesamiento de todo )
 | 
			
		||||
  {
 | 
			
		||||
/*
 | 
			
		||||
  if ( ( Y_Mouse + CursorP[ 0 ].cY ) >= 300  )
 | 
			
		||||
     draw_bitmap( (char far *)cuadroMandos.memVGA, 0, 300, cuadroMandos.cX, cuadroMandos.cY );
 | 
			
		||||
*/
 | 
			
		||||
   int86(0x33, &io, &io);    // lee posici<63>n y estados del bot<6F>n
 | 
			
		||||
   X_Mouse = io.x.cx;
 | 
			
		||||
   Y_Mouse = io.x.dx;
 | 
			
		||||
 | 
			
		||||
   // Comprueba el tablero de control
 | 
			
		||||
//   CompruebaMandos( X_Mouse, Y_Mouse, &cuadroMandos );
 | 
			
		||||
   // Comprueba el resto de posibilidades ( el juego en s<> )
 | 
			
		||||
 | 
			
		||||
   // <20> Se Puls<6C> Un BOTON ?
 | 
			
		||||
   //     B.Izquierdo       B. Derecho
 | 
			
		||||
   if (  (io.x.bx & 1) != 0 ||  ( (io.x.bx >> 1) & 1 ) != 0  )
 | 
			
		||||
   {
 | 
			
		||||
//    copiaBitmap( CursorP[ pCanim ].memVirtual(), X_Mouse, Y_Mouse, CursorP[ pCanim ].cX, CursorP[ pCanim ].cY, VGAvirtual.memVirtual() );
 | 
			
		||||
    copiaBitmap( CursorP[ pCanim ].memVirtual(), X_Mouse, Y_Mouse, 32, 32, VGAvirtual.memVirtual() );
 | 
			
		||||
//    tdraw_bitmap( CursorP[ pCanim ].memVGA, X_Mouse, Y_Mouse, CursorP[ pCanim ].cX, CursorP[ pCanim ].cY );
 | 
			
		||||
   } else {
 | 
			
		||||
//    copiaBitmap( CursorN[ pCanim ].memVirtual(), X_Mouse, Y_Mouse, CursorN[ pCanim ].cX, CursorN[ pCanim ].cY, VGAvirtual.memVirtual() );
 | 
			
		||||
    copiaBitmap( CursorN[ pCanim ].memVirtual(), X_Mouse, Y_Mouse, 32, 32, VGAvirtual.memVirtual() );
 | 
			
		||||
//    tdraw_bitmap( CursorN[ pCanim ].memVGA, X_Mouse, Y_Mouse, CursorN[ pCanim ].cX, CursorN[ pCanim ].cY );
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
  // Copiamos la virtual a la real...
 | 
			
		||||
  // Partido por la mierda de la segmentaci<63>n de la memoria
 | 
			
		||||
  VGAvirtual.VGA();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  i++;
 | 
			
		||||
 } while ( !kbhit() );
 | 
			
		||||
 | 
			
		||||
 LiberaCursor( &CursorN, &CursorP );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|*                                                                          *|
 | 
			
		||||
|*  CargaPaleta                                                             *|
 | 
			
		||||
|*                                                                          *|
 | 
			
		||||
|*  Descripci<63>n:                                                            *|
 | 
			
		||||
|*              Carga la paleta con los colores por defecto                 *|
 | 
			
		||||
|*                                                                          *|
 | 
			
		||||
|*                                                                          *|
 | 
			
		||||
|*  Entradas: achivo PCX de donde cargar la paleta                          *|
 | 
			
		||||
|*                                                                          *|
 | 
			
		||||
|*  Salidas:  OK    Todo ha ido bien                                        *|
 | 
			
		||||
|*            ERROR Algo va mal                                             *|
 | 
			
		||||
|*                                                                          *|
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
int CargaPaleta(char *file )
 | 
			
		||||
{
 | 
			
		||||
 int index;
 | 
			
		||||
 FILE *fp;
 | 
			
		||||
 | 
			
		||||
 if ( (fp=fopen( file, "rb" ) ) == NULL )
 | 
			
		||||
                                                  return ERROR;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 if ( fseek( fp, -768L, SEEK_END ) == 0 )
 | 
			
		||||
 {
 | 
			
		||||
    for (index=0; index<256; index++)
 | 
			
		||||
    {
 | 
			
		||||
    // get the red component
 | 
			
		||||
    // get the green component
 | 
			
		||||
    // get the blue component
 | 
			
		||||
    // set components
 | 
			
		||||
    set_dac_register ( index, (getc(fp) >> 2), (getc(fp) >> 2), (getc(fp) >> 2) );
 | 
			
		||||
    } // end for index
 | 
			
		||||
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 fclose( fp );
 | 
			
		||||
 return OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|*                                                                          *|
 | 
			
		||||
|*  MuestraImagen                                                           *|
 | 
			
		||||
|*                                                                          *|
 | 
			
		||||
|*  Descripci<63>n:                                                            *|
 | 
			
		||||
|*              Descomprime y copia a la pagina indicada un PCX             *|
 | 
			
		||||
|*                                                                          *|
 | 
			
		||||
|*  Entradas: nombre de la imagen                                           *|
 | 
			
		||||
|*            pagina                                                        *|
 | 
			
		||||
|*            color_invisible ( -1 si ninguno )                             *|
 | 
			
		||||
|*                                                                          *|
 | 
			
		||||
|*                                                                          *|
 | 
			
		||||
|*  Salidas:  OK    Todo ha ido bien                                        *|
 | 
			
		||||
|*            ERROR Algo va mal                                             *|
 | 
			
		||||
|*                                                                          *|
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
int MuestraImagen( char *file, int page, int col_Inv )
 | 
			
		||||
{
 | 
			
		||||
  int curr_page;
 | 
			
		||||
  FILE *fp;
 | 
			
		||||
  int alto, ancho, contador;
 | 
			
		||||
  unsigned char byte;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  if ( (fp = fopen( file,"rb")) != NULL )
 | 
			
		||||
  {
 | 
			
		||||
 | 
			
		||||
  curr_page = get_active_page();
 | 
			
		||||
  set_active_page(page);
 | 
			
		||||
 | 
			
		||||
  // Saltamos la cabecera
 | 
			
		||||
  fseek( fp, 128, SEEK_SET );
 | 
			
		||||
 | 
			
		||||
  for(alto=0; alto<240; alto++)
 | 
			
		||||
  {
 | 
			
		||||
    for(ancho=0; ancho<360; )
 | 
			
		||||
    {
 | 
			
		||||
      byte=getc(fp);
 | 
			
		||||
      if(byte<=0xC0)
 | 
			
		||||
      {
 | 
			
		||||
        if ( col_Inv < 0 || byte != col_Inv ) set_point (ancho, alto, byte);
 | 
			
		||||
	ancho++;
 | 
			
		||||
      }
 | 
			
		||||
      else
 | 
			
		||||
      {
 | 
			
		||||
	contador=byte&0x3F; byte=getc(fp);
 | 
			
		||||
	for(; contador>0; contador--)
 | 
			
		||||
	{
 | 
			
		||||
          if ( col_Inv < 0 || byte != col_Inv ) set_point (ancho, alto, byte);
 | 
			
		||||
          ancho++;
 | 
			
		||||
	}
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  fclose(fp);
 | 
			
		||||
  } else return ERROR;
 | 
			
		||||
 | 
			
		||||
  set_active_page(curr_page);
 | 
			
		||||
 | 
			
		||||
  return OK;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
char far *CargaImagen( char *file, char huge *VGA, int cX, int cY )
 | 
			
		||||
{
 | 
			
		||||
  int curr_page;
 | 
			
		||||
  FILE *fp;
 | 
			
		||||
  long alto, ancho, contador;
 | 
			
		||||
  unsigned char byte;
 | 
			
		||||
 | 
			
		||||
  if ( (fp = fopen( file,"rb")) != NULL )
 | 
			
		||||
  {
 | 
			
		||||
 | 
			
		||||
  // Saltamos la cabecera
 | 
			
		||||
  fseek( fp, 128, SEEK_SET );
 | 
			
		||||
 | 
			
		||||
  for(alto=0; alto<cY; alto++)
 | 
			
		||||
  {
 | 
			
		||||
    for(ancho=0; ancho<cX; )
 | 
			
		||||
    {
 | 
			
		||||
      byte=getc(fp);
 | 
			
		||||
      if(byte<=0xC0)
 | 
			
		||||
      {
 | 
			
		||||
        *VGA  = byte;        VGA++;
 | 
			
		||||
//        set_point( ancho, alto, *(emptyVGA.memVGA + alto*emptyVGA.cX + ancho) );
 | 
			
		||||
	ancho++;
 | 
			
		||||
      }
 | 
			
		||||
      else
 | 
			
		||||
      {
 | 
			
		||||
	contador=byte&0x3F; byte=getc(fp);
 | 
			
		||||
	for(; contador>0; contador--)
 | 
			
		||||
	{
 | 
			
		||||
          *VGA  = byte;      VGA ++;
 | 
			
		||||
//          set_point( ancho, alto, *(emptyVGA.memVGA + alto*emptyVGA.cX + ancho) );
 | 
			
		||||
          ancho++;
 | 
			
		||||
	}
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  fclose(fp);
 | 
			
		||||
  } else return NULL;
 | 
			
		||||
 | 
			
		||||
 return VGA;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|*                                                                          *|
 | 
			
		||||
|*  Error                                                                   *|
 | 
			
		||||
|*                                                                          *|
 | 
			
		||||
|*  Descripci<63>n:                                                            *|
 | 
			
		||||
|*              Aborta anormalmente el programa, mostrando un mensaje de    *|
 | 
			
		||||
|*              de error.                                                   *|
 | 
			
		||||
|*                                                                          *|
 | 
			
		||||
|*  Entradas: Codigo del mensaje de error a mostrar                         *|
 | 
			
		||||
|*  Salidas:  (ninguna)                                                     *|
 | 
			
		||||
|*                                                                          *|
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
void Error(int code)
 | 
			
		||||
{
 | 
			
		||||
 set_video_mode (3);
 | 
			
		||||
 switch( code )
 | 
			
		||||
 {
 | 
			
		||||
  case MEMORIA:
 | 
			
		||||
   printf( "Ni un byte libre para mi!\n");
 | 
			
		||||
   break;
 | 
			
		||||
 | 
			
		||||
 }
 | 
			
		||||
 exit(code);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// los par<61>metros son las cotas para el raton
 | 
			
		||||
void Inicializa_Raton(int x1, int y1, int x2, int y2)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
// Por defecto el raton aparecer<65> en las coordenadas ( 50, 50 )
 | 
			
		||||
int px = 50, py = 50;
 | 
			
		||||
 | 
			
		||||
// Pero si Y_ y X_ tienen unas coordenadas el raton se posiciona alli.
 | 
			
		||||
/*
 | 
			
		||||
if ( Y_Mouse != -1 && X_Mouse != -1 )
 | 
			
		||||
 {
 | 
			
		||||
  px = X_Mouse;   py = Y_Mouse;
 | 
			
		||||
 }
 | 
			
		||||
*/
 | 
			
		||||
	union   REGS ent, sal;
 | 
			
		||||
	long         dir;
 | 
			
		||||
 | 
			
		||||
	ent.x.ax =   0;
 | 
			
		||||
	int86(0x33, &ent, &sal);          /* averigua si hay rat<61>n conectado */
 | 
			
		||||
 | 
			
		||||
	raton = sal.x.ax;                /* indica a la variable global el estado
 | 
			
		||||
					    del raton */
 | 
			
		||||
 | 
			
		||||
 if(raton!=0) {
 | 
			
		||||
 | 
			
		||||
	ent.x.ax =  15;
 | 
			
		||||
	ent.x.cx =  5;
 | 
			
		||||
	ent.x.dx =  11;
 | 
			
		||||
	int86(0x33, &ent, &sal);               /* fija la raz<61>n mickey/pixel */
 | 
			
		||||
 | 
			
		||||
	ent.x.ax =   7;
 | 
			
		||||
	ent.x.cx =  x1;
 | 
			
		||||
	ent.x.dx =  x2;
 | 
			
		||||
	int86(0x33, &ent, &sal);  /* fija la posici<63>n m<>x. y m<>n. horizontal */
 | 
			
		||||
 | 
			
		||||
	ent.x.ax =   8;
 | 
			
		||||
	ent.x.cx =  y1;
 | 
			
		||||
	ent.x.dx =  y2;
 | 
			
		||||
	int86(0x33, &ent, &sal);    /* fija la posici<63>n m<>x. y m<>n. vertical */
 | 
			
		||||
 | 
			
		||||
	ent.x.ax =   4;
 | 
			
		||||
	ent.x.cx =  px;
 | 
			
		||||
	ent.x.dx =  py;
 | 
			
		||||
	int86(0x33, &ent, &sal);               /* fija la posici<63>n del rat<61>n */
 | 
			
		||||
 | 
			
		||||
	ent.x.ax =   2;          // Como sabes hacer esto, no sirve para nada
 | 
			
		||||
	int86(0x33, &ent, &ent); // por que el raton no se puede mostrar y por
 | 
			
		||||
				 // deducion, tan poco ocultar.
 | 
			
		||||
				 // Pero " Por si el modo no es SVGA ", lo ocultamos
 | 
			
		||||
 | 
			
		||||
 }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void LiberaCursor( VirtualVGA **CursorN, VirtualVGA **CursorP )
 | 
			
		||||
{
 | 
			
		||||
/*
 | 
			
		||||
 int i;
 | 
			
		||||
 | 
			
		||||
 if ( (*CursorP) != NULL )
 | 
			
		||||
 {
 | 
			
		||||
  for ( i=0; i<10; i++ )
 | 
			
		||||
   EliminaVirtual( &((*CursorP)[i]) );
 | 
			
		||||
 | 
			
		||||
  free( (*CursorP) );
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 if ( (*CursorN) != NULL )
 | 
			
		||||
 {
 | 
			
		||||
  for ( i=0; i<10; i++ )
 | 
			
		||||
   EliminaVirtual( &((*CursorN)[i]) );
 | 
			
		||||
 | 
			
		||||
   free( (*CursorN) );
 | 
			
		||||
 }
 | 
			
		||||
*/
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void CargaCursor( VirtualVGA **CursorN, VirtualVGA **CursorP, char TipoCursor )
 | 
			
		||||
{
 | 
			
		||||
/*
 | 
			
		||||
 int i;
 | 
			
		||||
 | 
			
		||||
 // El cursor presionado solo se carga una vez ( siempre es el mismo )
 | 
			
		||||
 if ( (*CursorP) == NULL )
 | 
			
		||||
 {
 | 
			
		||||
  // cargamos el cursor animado ( presionado ) :: 10 animaciones ::
 | 
			
		||||
  if ( ( (*CursorP) = (VirtualVGA *)malloc( sizeof(VirtualVGA)*10 ) ) == NULL )
 | 
			
		||||
    Error( 0x00 );
 | 
			
		||||
 | 
			
		||||
  for ( i=0; i<10; i++ )
 | 
			
		||||
  {
 | 
			
		||||
   // CURSOR PRESIONADO: 32x32
 | 
			
		||||
   (*CursorP)[i].cX = 32; (*CursorP)[i].cY = 32;
 | 
			
		||||
   CreaVirtual( &((*CursorP)[i]) );
 | 
			
		||||
  }
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 if ( (*CursorN) == NULL )
 | 
			
		||||
 {
 | 
			
		||||
  // cargamos el cursor animado ( liberado ) :: 10 animaciones ::
 | 
			
		||||
  if ( ( (*CursorN) = (VirtualVGA *)malloc( sizeof(VirtualVGA)*10 ) ) == NULL )
 | 
			
		||||
    Error( 0x00 );
 | 
			
		||||
 | 
			
		||||
  for ( i=0; i<10; i++ )
 | 
			
		||||
  {
 | 
			
		||||
   // CURSOR PRESIONADO: 32x32
 | 
			
		||||
   (*CursorN)[i].cX = 32; (*CursorN)[i].cY = 32;
 | 
			
		||||
   CreaVirtual( &((*CursorN)[i]) );
 | 
			
		||||
  }
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 switch( TipoCursor )
 | 
			
		||||
 {
 | 
			
		||||
  case CURSOR_NORMAL:
 | 
			
		||||
  default:
 | 
			
		||||
   for ( i=0; i<10; i++ )
 | 
			
		||||
   {
 | 
			
		||||
    // CURSOR PRESIONADO: 32x32
 | 
			
		||||
   }
 | 
			
		||||
   break;
 | 
			
		||||
 }
 | 
			
		||||
*/
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void copiaBitmap( char huge *src, int cX, int cY, int wX, int wY, char huge *tgt )
 | 
			
		||||
{
 | 
			
		||||
 long i; char c;
 | 
			
		||||
 long offY;
 | 
			
		||||
 | 
			
		||||
 wY = (cY + wY); wY = wY >= 400 ? 400 : wY;
 | 
			
		||||
 wX = (cX + wX); wX = wX >= 360 ? 360 : wX;
 | 
			
		||||
 | 
			
		||||
 for ( ; cY < wY; cY++ )
 | 
			
		||||
 {
 | 
			
		||||
  offY = (long)cY*360;
 | 
			
		||||
  for ( i = cX; i < wX; i++ )
 | 
			
		||||
   if ( ( c = *(src++) ) != 0 )
 | 
			
		||||
           *(tgt + offY + i ) = c;
 | 
			
		||||
 }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								BOCETO.PCX
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								BOCETO.PCX
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								CONTROL.PCX
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								CONTROL.PCX
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
		Reference in New Issue
	
	Block a user