First commit 09/03/1997
This commit is contained in:
commit
a3680b0f9d
906
DEMO.CPP
Normal file
906
DEMO.CPP
Normal file
@ -0,0 +1,906 @@
|
||||
#include <time.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <conio.h>
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
#include <dos.h>
|
||||
#include <mem.h>
|
||||
|
||||
#include "demo.h"
|
||||
#include "..\modex\modex.h"
|
||||
|
||||
#define ERROR 1
|
||||
#define OK 0
|
||||
|
||||
char *Pato[3], *BufferV;
|
||||
int LeePato( char *file, char *dir );
|
||||
void ReducePato( char *Dest, char *Org, char Magn );
|
||||
|
||||
void LeeFuentes(char *file);
|
||||
void JugadorDyna( int x, int y, char mov );
|
||||
void BombaDyna( int x, int y, char mov );
|
||||
void MensajeIntermedio(char *buffer);
|
||||
void FuenteAmplia( char *Frase, p_Ampliada far *FA );
|
||||
void FuenteAmplia2( char *Frase, p_Ampliada far *FA );
|
||||
void PatoSimpsons(void);
|
||||
|
||||
char *ptr_char;
|
||||
|
||||
int XSinMov[256], YSinMov[256];
|
||||
int TSin[360+90];
|
||||
|
||||
/**************************************************************************\
|
||||
|* *|
|
||||
|* CargaPaleta *|
|
||||
|* *|
|
||||
|* Descripci¢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
|
||||
Palette256[index][0] = ( ( getc(fp) >> 2 ) )/* *63 )/255*/;
|
||||
Palette256[index][1] = ( ( getc(fp) >> 2 ) )/* *63 )/255*/;
|
||||
Palette256[index][2] = ( ( getc(fp) >> 2 ) )/* *63 )/255*/;
|
||||
} // end for index
|
||||
|
||||
}
|
||||
setvgapalette256( &Palette256 );
|
||||
|
||||
|
||||
fclose( fp );
|
||||
return OK;
|
||||
};
|
||||
|
||||
|
||||
void RellenaTablas(void)
|
||||
{
|
||||
float angle;
|
||||
|
||||
angle = 0;
|
||||
while( angle < 256 )
|
||||
{
|
||||
XSinMov[angle] = YSinMov[angle] = (int)( sin( (M_PI*angle*1.4)/180.0 ) * 180.0) / M_PI;
|
||||
YSinMov[angle] = 0;
|
||||
angle+=1;
|
||||
};
|
||||
|
||||
angle = 0;
|
||||
while( angle < (360+90) )
|
||||
{
|
||||
TSin[angle] = (int)(sin( (M_PI*angle)/180.0 ) * 100 );
|
||||
angle+=1;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
void Put( int x, int y, char c)
|
||||
{
|
||||
if ( x < 0 || x >= 320 ) return;
|
||||
if ( y < 0 || y >= 200 ) return;
|
||||
|
||||
// { Written by Matt Sottile }
|
||||
asm mov ax,y
|
||||
asm mov bx,ax
|
||||
asm shl ax,8
|
||||
asm shl bx,6
|
||||
asm add bx,ax
|
||||
asm add bx,x
|
||||
asm mov ax,0xa000
|
||||
asm mov es,ax
|
||||
asm mov al,c
|
||||
asm mov es:[bx],al
|
||||
};
|
||||
|
||||
//#define RADIO 255
|
||||
#define RADIO 255
|
||||
//#define SALTOS_PROFUNDOS 8
|
||||
#define SALTOS_PROFUNDOS 8
|
||||
//#define SALTOS_ANCHOS 7
|
||||
#define SALTOS_ANCHOS 7
|
||||
#define BLOQUEO_RADIO 1
|
||||
|
||||
|
||||
#define INCREMENTAL 1
|
||||
|
||||
#define PROFUNDIDAD_TUNEL 35
|
||||
//#define FACTOR_SERPIENTE 0.015F
|
||||
#define FACTOR_SERPIENTE 0.008594366927F
|
||||
|
||||
//#define TODO_BLANCO
|
||||
//#define TODO_GRIS
|
||||
|
||||
int PERFECCION_CIRCULO = 8;
|
||||
// Circulo con impresi¢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¢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;
|
||||
}
|
||||
|
||||
for ( depth=0; depth<SALTOS_ANCHOS*PROFUNDIDAD_TUNEL; depth+=SALTOS_ANCHOS*INCREMENTAL, Movimiento+=SALTOS_PROFUNDOS, Color++ )
|
||||
// for ( depth=INCREMENTAL*SALTOS_ANCHOS*(PROFUNDIDAD_TUNEL-1); depth>=0; depth-=SALTOS_ANCHOS*INCREMENTAL, Movimiento+=SALTOS_PROFUNDOS, Color-- )
|
||||
{
|
||||
/*
|
||||
OGiroAngular = GiroAngular;
|
||||
GiroAngular = ( GiroAngular++ ) % 360;
|
||||
*/
|
||||
|
||||
// Borra el anterior
|
||||
CirculoB( XSinMov[(unsigned char)(Movimiento-1)] + 160, YSinMov[(unsigned char)(Movimiento-1)] + 100, RADIO - depth*BLOQUEO_RADIO, OGiroAngular + 0*Movimiento );
|
||||
|
||||
Subidon = (Subidon++)%PROFUNDIDAD_TUNEL;
|
||||
|
||||
// Dibuja el nuevo circulo
|
||||
// Circulo( XSinMov[Movimiento] + 160, YSinMov[Movimiento] + 100, RADIO - depth*BLOQUEO_RADIO, GiroAngular + 0*Movimiento, (Subidon >= Color && Subidon <= Color + 2 ) ? 1: Color );
|
||||
Circulo( XSinMov[Movimiento] + 160, YSinMov[Movimiento] + 100, RADIO - depth*BLOQUEO_RADIO, GiroAngular + 0*Movimiento, Subidon%6 == 0 || Subidon%6 == 1 ? 1+Subidon : Color);
|
||||
}
|
||||
|
||||
delay(10);
|
||||
}
|
||||
|
||||
typedef struct
|
||||
{
|
||||
unsigned char R, G, B;
|
||||
|
||||
} ColorValue;
|
||||
|
||||
typedef ColorValue VGAPaletteType[256];
|
||||
|
||||
void ReadPal( VGAPaletteType K )
|
||||
{
|
||||
struct REGPACK outR;
|
||||
|
||||
outR.r_ax = 0x1017;
|
||||
outR.r_bx = 0;
|
||||
outR.r_cx = 256;
|
||||
outR.r_es = FP_SEG(K);
|
||||
outR.r_dx = FP_OFF(K);
|
||||
while( ( inport(0x03DA) & 0x08 ) == 0x08 ); // {Wait for rescan}
|
||||
intr( 0x10, &outR );
|
||||
};
|
||||
|
||||
void WritePal( VGAPaletteType K )
|
||||
{
|
||||
struct REGPACK outR;
|
||||
|
||||
outR.r_ax = 0x1012;
|
||||
outR.r_bx = 0;
|
||||
outR.r_cx = 256;
|
||||
outR.r_es = FP_SEG(K);
|
||||
outR.r_dx = FP_OFF(K);
|
||||
// while( ( inport(0x03DA) & 0x08 ) == 0x08 ); // {Wait for rescan}
|
||||
sync_display();
|
||||
intr( 0x10, &outR );
|
||||
};
|
||||
|
||||
VGAPaletteType Pal;
|
||||
void CreaPaleta(void)
|
||||
{
|
||||
unsigned char I;
|
||||
|
||||
memset( Pal, 0, sizeof(Pal) );
|
||||
|
||||
Pal[1].R = 255;
|
||||
Pal[1].G = 255;
|
||||
Pal[1].B = 255;
|
||||
|
||||
Pal[255].R = 20;
|
||||
Pal[255].G = 0;
|
||||
Pal[255].B = 0;
|
||||
for ( I=254/*MaxColor*/; I > 254-PROFUNDIDAD_TUNEL; I-- )
|
||||
{
|
||||
Pal[I] = Pal[I+1];
|
||||
{
|
||||
if ( Pal[I].R<63 ) Pal[I].R++;
|
||||
if ( Pal[I].R<63 ) Pal[I].R++;
|
||||
if ( (I % 2==0) && (Pal[I].G<53) ) Pal[I].G++;
|
||||
if ( (I % 2==0) && (Pal[I].B<63) ) Pal[I].B++;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef TODO_GRIS
|
||||
Pal[5].R = 255;
|
||||
Pal[5].G = 255;
|
||||
Pal[5].B = 255;
|
||||
for ( I=5; I < 255; I++ )
|
||||
{
|
||||
Pal[I] = Pal[I-1];
|
||||
{
|
||||
Pal[I].R--;
|
||||
Pal[I].G--;
|
||||
Pal[I].B--;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
Pal[255-PROFUNDIDAD_TUNEL+1].R = 0;
|
||||
Pal[255-PROFUNDIDAD_TUNEL+1].G = 0;
|
||||
Pal[255-PROFUNDIDAD_TUNEL+1].B = 20;
|
||||
for ( I=/*MaxColor*/255-PROFUNDIDAD_TUNEL; I > 255-2*PROFUNDIDAD_TUNEL; I-- )
|
||||
{
|
||||
Pal[I] = Pal[I+1];
|
||||
{
|
||||
if ( Pal[I].B<63 ) Pal[I].B++;
|
||||
if ( Pal[I].B<63 ) Pal[I].B++;
|
||||
if ( (I % 2==0) && (Pal[I].G<53) ) Pal[I].G++;
|
||||
if ( (I % 2==0) && (Pal[I].R<63) ) Pal[I].R++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#ifdef TODO_BLANCO
|
||||
memset( Pal, 255, sizeof(Pal) );
|
||||
Pal[0].R = 0;
|
||||
Pal[0].G = 0;
|
||||
Pal[0].B = 0;
|
||||
#endif
|
||||
|
||||
WritePal(Pal);
|
||||
}
|
||||
|
||||
|
||||
#define Longitud_Despedida (64+13)*8
|
||||
void DynaFin( char *buffer, char *buffer1 )
|
||||
{
|
||||
long i; char mov, acel;
|
||||
int salida, index, x, y;
|
||||
|
||||
p_Ampliada Despedida = { 0, 50, 40, 2, 2, 0, 255, 255 };
|
||||
|
||||
setvgapalette256( &PaletteDyn );
|
||||
|
||||
// Mostramos el mensaje de despedia.
|
||||
|
||||
i = 0;
|
||||
Despedida.AX = 2;
|
||||
Despedida.AY = 2;
|
||||
while ( i < Longitud_Despedida )
|
||||
{
|
||||
i++;
|
||||
FuenteAmplia( buffer, &Despedida );
|
||||
delay(3);
|
||||
};
|
||||
|
||||
i = 0;
|
||||
// Despedida.y += 30;
|
||||
Despedida.AX = 1;
|
||||
Despedida.AY = 1;
|
||||
while ( i < (28+24)*8 )
|
||||
{
|
||||
i++;
|
||||
FuenteAmplia( buffer1, &Despedida );
|
||||
delay(3);
|
||||
};
|
||||
|
||||
delay(2000);
|
||||
|
||||
// Acercamiento del mu¤eco, colocaci¢n de la bomba, y alejamiento mu¤eco
|
||||
mov = 1; acel = 0;
|
||||
for ( x = 320; x > -30; x -=2 )
|
||||
{
|
||||
acel = (acel++) % 2;
|
||||
if ( acel == 1 )
|
||||
mov = (mov++) % 3;
|
||||
if ( x < 160 )
|
||||
BombaDyna( 160, 150, mov-1 );
|
||||
JugadorDyna( x, 150, mov-1 );
|
||||
delay(50);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Explosion de la bomba
|
||||
// Gradiente rapidisimo hasta el blanco
|
||||
Palette256[64][0] = 32;
|
||||
Palette256[64][1] = 32;
|
||||
Palette256[64][2] = 32;
|
||||
memset( MK_FP( 0xA000, 0 ), 64, 320*200 );
|
||||
|
||||
salida = 0;
|
||||
for( ; salida == 0; )
|
||||
{
|
||||
for (index=100; index>=0; index--)
|
||||
{
|
||||
// set components
|
||||
if( Palette256[index][0]<63 ) Palette256[index][0] ++;
|
||||
if( Palette256[index][1]<63 ) Palette256[index][1] ++;
|
||||
if( Palette256[index][2]<63 ) Palette256[index][2] ++;
|
||||
if( Palette256[index][0]==63 && Palette256[index][1]==63 && Palette256[index][2]==63 )
|
||||
salida = 1;
|
||||
else
|
||||
salida = 0;
|
||||
} // end for index
|
||||
setvgapalette256( &Palette256 );
|
||||
}
|
||||
|
||||
delay(2000);
|
||||
|
||||
// Gradiente algo mas lento hacia el negro
|
||||
salida = 0;
|
||||
for( ; salida == 0; )
|
||||
{
|
||||
for (index=0; index<256; index++)
|
||||
{
|
||||
// set components
|
||||
if( Palette256[index][0]>0 ) Palette256[index][0] --;
|
||||
if( Palette256[index][1]>0 ) Palette256[index][1] --;
|
||||
if( Palette256[index][2]>0 ) Palette256[index][2] --;
|
||||
if( Palette256[index][0]==0 && Palette256[index][1]==0 && Palette256[index][2]==0 )
|
||||
salida = 1;
|
||||
else
|
||||
salida = 0;
|
||||
} // end for index
|
||||
setvgapalette256( &Palette256 );
|
||||
delay(50);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
void JugadorDyna( int x, int y, char mov )
|
||||
{
|
||||
char x1, y1;
|
||||
|
||||
if ( mov < 0 )
|
||||
{
|
||||
// Borra el mu¤eco anterior
|
||||
|
||||
} else {
|
||||
// Pinta el nuevo mu¤eco
|
||||
for ( x1=0; x1 < 23; x1++ )
|
||||
for ( y1=0; y1 < 23; y1++ )
|
||||
Put( x+x1, y+y1, DynaMovs[mov][y1][x1] );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void BombaDyna( int x, int y, char mov )
|
||||
{
|
||||
char x1, y1;
|
||||
|
||||
if ( mov < 0 )
|
||||
{
|
||||
// Borra el mu¤eco anterior
|
||||
|
||||
} else {
|
||||
// Pinta el nuevo mu¤eco
|
||||
for ( x1=0; x1 < 16; x1++ )
|
||||
for ( y1=0; y1 < 18; y1++ )
|
||||
Put( x+x1, y+y1, BombMovs[mov][y1][x1] );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
void CirculoGradiente(void)
|
||||
{
|
||||
int x, y;
|
||||
float angle; int radio;
|
||||
|
||||
VGAPaletteType K;
|
||||
|
||||
ReadPal( K );
|
||||
K[x].R =0;
|
||||
K[x].G =0;
|
||||
K[x].B =0;
|
||||
|
||||
// Intentemos mejorar la paleta
|
||||
for ( x = 1; x <= 127; x++ )
|
||||
{
|
||||
K[x].R = K[x-1].R+1;
|
||||
K[x].G = K[x-1].G+1;
|
||||
K[x].B = K[x-1].B+1;
|
||||
}
|
||||
for ( x = 127; x < 256; x++ )
|
||||
{
|
||||
K[x].R = K[255-x].R;
|
||||
K[x].G = 0*K[255-x].G;
|
||||
K[x].B = 0*K[255-x].B;
|
||||
}
|
||||
|
||||
|
||||
// Calculamos los circulos
|
||||
for ( radio = 1; radio < 320; radio++ )
|
||||
for ( angle = 0; angle < 360; angle+=0.1 )
|
||||
{
|
||||
x = 160 + (radio*sin( angle * M_PI / 180.0 ));
|
||||
y = 100 + ((radio/*+20*/)*cos( (angle-15) * M_PI / 180.0 ));
|
||||
if ( x >= 0 && x < 320 && y >= 0 && y < 200 )
|
||||
Put( x, y, (radio%(255/*-32*/))/*+32*/ );
|
||||
}
|
||||
|
||||
clock_t start, end;
|
||||
start = clock();
|
||||
while( ( ( clock() - start) / CLK_TCK ) < 30 )
|
||||
{
|
||||
for ( x = 0; x < 256; x++ )
|
||||
K[x]=K[ (x+1)%255+1 ];
|
||||
WritePal( K );
|
||||
}
|
||||
};
|
||||
|
||||
/*************************************************************************\
|
||||
|* *|
|
||||
|* El control es poder, y aqui esta el control de todo el demo... *|
|
||||
|* *|
|
||||
|* *|
|
||||
|* *|
|
||||
|* *|
|
||||
|* *|
|
||||
|* *|
|
||||
|* *|
|
||||
|* *|
|
||||
|* *|
|
||||
|* *|
|
||||
\*************************************************************************/
|
||||
void main(void)
|
||||
{
|
||||
int ok;
|
||||
|
||||
if ( ( ptr_char = (char *)malloc( 4096*sizeof(char) ) ) == NULL )
|
||||
return;
|
||||
LeeFuentes( "demo.fnt" );
|
||||
|
||||
RellenaTablas();
|
||||
|
||||
// Cambiamos a modo grafico
|
||||
asm mov ax, 0x13
|
||||
asm int 0x10
|
||||
|
||||
|
||||
while( kbhit() ) getch();
|
||||
|
||||
//°±±²²²ÛÛÛþþ þ þ Tunel de Estrellas (JD) þ þ þþÛÛÛ²²²±±°
|
||||
PatoSimpsons();
|
||||
|
||||
MensajeIntermedio( "Que tal un poco de plasma para tus ojos" );
|
||||
|
||||
CirculoGradiente();
|
||||
|
||||
|
||||
MensajeIntermedio( "Waooo, eso ha estado bien, pero esto estar aun mejor" );
|
||||
|
||||
//°±±²²²ÛÛÛþþ þ þ Tunel de Estrellas (JD) þ þ þþÛÛÛ²²²±±°
|
||||
CreaPaleta(); // ¨ Porque no mejoramos la paleta 16x2 ?
|
||||
ReadPal(Pal);
|
||||
|
||||
clock_t start, end;
|
||||
start = clock();
|
||||
while( ( ( clock() - start) / CLK_TCK ) < 30 )
|
||||
TunelEstrellas();
|
||||
|
||||
MensajeIntermedio( "Y por si fuera poco, miraa esto:" );
|
||||
|
||||
|
||||
//°±±²²²ÛÛÛþþ þ þ Mensaje y dyna poniendo una bomba þ þ þþÛÛÛ²²²±±°
|
||||
DynaFin( " Agradecimiento a todos los que han hecho posible este demo. ", " Jose David Guillen 1997 (c)" );
|
||||
|
||||
|
||||
|
||||
// Cambiamos a modo texto
|
||||
asm mov ax, 3
|
||||
asm int 0x10
|
||||
/*
|
||||
gotoxy(1,1);
|
||||
cprintf( "C:\\>");
|
||||
sleep(30);
|
||||
cprintf( "\n\r Que no me he quedao' colgao' tio... " );
|
||||
cprintf( "\n\r -- Hasta el proximo intro -- " );
|
||||
cprintf( "\n\r Jos‚ David Guill‚n 1997 (c) " );
|
||||
cprintf( "\n\r " );
|
||||
*/
|
||||
free ( ptr_char );
|
||||
}
|
||||
|
||||
void MensajeIntermedio(char *buffer)
|
||||
{
|
||||
char buffer1[500];
|
||||
long i, len;
|
||||
p_Ampliada Despedida = { 0, 50, 40, 1, 1, 0, 200, 200 };
|
||||
|
||||
memset( MK_FP( 0xA000, 0 ), 0, 320*200 );
|
||||
while( kbhit() ) getch();
|
||||
i = 0;
|
||||
sprintf( buffer1, " %s", buffer );
|
||||
len = (strlen( buffer1 ))*8;
|
||||
while ( i < len )
|
||||
{
|
||||
i++;
|
||||
FuenteAmplia2( buffer1, &Despedida );
|
||||
delay(3);
|
||||
};
|
||||
memset( MK_FP( 0xA000, 0 ), 0, 320*200 );
|
||||
}
|
||||
|
||||
|
||||
|
||||
/////ÜÜ/////////////////////////////////////////////////////////////////////////////
|
||||
////Û/////////////////////////////////////////////////////////////////////////////////
|
||||
/////ßÜ/////Ü///////////////////////////////////////////////////////////////////////
|
||||
//////ß///Ü////ß/Ü//////////////////////////////////////////////////////////////////
|
||||
///////ß/Ü///Ü//////////////////////////////////////////////////////////////////////
|
||||
////////Ü//ß////ß///////////////////////////////////////////////////////////////////
|
||||
/////////ß////Ü/////////////////////////////////////////////////////////////////////
|
||||
///////////ß////////////////////////////////////////////////////////////////////////
|
||||
#define TAMx 8
|
||||
#define TAMy 16
|
||||
void FuenteAmplia( char *Frase, p_Ampliada far *FA )
|
||||
{
|
||||
int i, j, k; // Variables de avance
|
||||
int c_elec; // Color en el momento de imprimir
|
||||
int PosX, PosY; // Posicion fisica final
|
||||
char LCaract; // Caracter de linea a tratar
|
||||
|
||||
if ( FA->Flen != _fstrlen( Frase ) ) // Reseteamos las variables de control interno
|
||||
{
|
||||
// Obtenemos la longitud de la frase. ( En d¡gitos )
|
||||
FA -> Flen = _fstrlen( Frase );
|
||||
// Contador de digito actual a cero
|
||||
FA -> BitByte = 0;
|
||||
// Posicion dentro de la frase
|
||||
FA -> currByte = 0;
|
||||
}
|
||||
|
||||
// Avance horizontal de bit's ( avance de digitos )
|
||||
for ( i = 0; i < ( TAMx * (FA -> ndigitos) ); i++ )
|
||||
{
|
||||
k = ( Frase[ ( (i+FA->BitByte)/TAMx + FA -> currByte ) % FA->Flen ] ) << 4;
|
||||
LCaract = ( (char)0x01 << (7 - (i+FA->BitByte)%TAMx) );
|
||||
PosX = FA -> x + FA->AX * i; // Posicion f¡sica horizontal
|
||||
// Avance vertical de bit's
|
||||
for ( j = 0; j < TAMy; j ++ )
|
||||
{
|
||||
PosY = FA -> y + FA->AY * j; // Posicion f¡sica vertical
|
||||
|
||||
if ( ptr_char[ k + j ] & LCaract )
|
||||
c_elec = FA->C2;
|
||||
else
|
||||
c_elec = FA->C1;
|
||||
|
||||
Put ( PosX, PosY, c_elec );
|
||||
}
|
||||
}
|
||||
// Tenemos en cuenta el avance dentro de la frase
|
||||
if ( ( FA -> BitByte ++ ) >= 7 )
|
||||
{
|
||||
FA -> BitByte = 0; FA -> currByte ++;
|
||||
if ( FA -> currByte >= FA -> Flen )
|
||||
FA -> currByte = 0;
|
||||
}
|
||||
|
||||
}
|
||||
#undef TAMy
|
||||
#undef TAMx
|
||||
|
||||
|
||||
#define TAMx 8
|
||||
#define TAMy 16
|
||||
void FuenteAmplia2( char *Frase, p_Ampliada far *FA )
|
||||
{
|
||||
int i, j, k; // Variables de avance
|
||||
int c_elec; // Color en el momento de imprimir
|
||||
int PosX, PosY; // Posicion fisica final
|
||||
char LCaract; // Caracter de linea a tratar
|
||||
|
||||
if ( FA->Flen != _fstrlen( Frase ) ) // Reseteamos las variables de control interno
|
||||
{
|
||||
// Obtenemos la longitud de la frase. ( En d¡gitos )
|
||||
FA -> Flen = _fstrlen( Frase );
|
||||
// Contador de digito actual a cero
|
||||
FA -> BitByte = 0;
|
||||
// Posicion dentro de la frase
|
||||
FA -> currByte = 0;
|
||||
}
|
||||
|
||||
// Avance horizontal de bit's ( avance de digitos )
|
||||
for ( i = 0; i < ( TAMx * (FA -> ndigitos) ); i++ )
|
||||
{
|
||||
k = ( Frase[ ( (i+FA->BitByte)/TAMx + FA -> currByte ) % FA->Flen ] ) << 4;
|
||||
LCaract = ( (char)0x01 << (7 - (i+FA->BitByte)%TAMx) );
|
||||
PosX = FA -> x + FA->AX * i; // Posicion f¡sica horizontal
|
||||
// Avance vertical de bit's
|
||||
for ( j = 0; j < TAMy; j ++ )
|
||||
{
|
||||
PosY = FA -> y + FA->AY * j; // Posicion f¡sica vertical
|
||||
|
||||
if ( ptr_char[ k + j ] & LCaract )
|
||||
c_elec = /*FA->C2*/PosX;
|
||||
else
|
||||
c_elec = FA->C1;
|
||||
|
||||
Put ( PosX, PosY, c_elec );
|
||||
}
|
||||
}
|
||||
// Tenemos en cuenta el avance dentro de la frase
|
||||
if ( ( FA -> BitByte ++ ) >= 7 )
|
||||
{
|
||||
FA -> BitByte = 0; FA -> currByte ++;
|
||||
if ( FA -> currByte >= FA -> Flen )
|
||||
FA -> currByte = 0;
|
||||
}
|
||||
|
||||
}
|
||||
#undef TAMy
|
||||
#undef TAMx
|
||||
|
||||
/* Setvgapalette256 sets the entire 256 color palette */
|
||||
/* PalBuf contains RGB values for all 256 colors */
|
||||
/* R,G,B values range from 0 to 63 */
|
||||
/* Usage: */
|
||||
/* DacPalette256 dac256; */
|
||||
/* */
|
||||
/* setvgapalette256(&dac256); */
|
||||
void setvgapalette256(DacPalette256 *PalBuf)
|
||||
{
|
||||
struct REGPACK reg;
|
||||
|
||||
reg.r_ax = 0x1012;
|
||||
reg.r_bx = 0;
|
||||
reg.r_cx = 256;
|
||||
reg.r_es = FP_SEG(PalBuf);
|
||||
reg.r_dx = FP_OFF(PalBuf);
|
||||
// while( ( inport(0x03DA) & 0x08 ) == 0x08 ); // {Wait for rescan}
|
||||
sync_display();
|
||||
intr(0x10,®);
|
||||
}
|
||||
|
||||
/*************************************************************************\
|
||||
|* *|
|
||||
|* LeeFuentes *|
|
||||
|* *|
|
||||
|* Descripcion: *|
|
||||
|* Lee el conjunto de fuentes del archivo especificado *|
|
||||
|* *|
|
||||
|* Entradas: puntero al nombre del archivo *|
|
||||
|* *|
|
||||
|* Salidas: (ninguna) *|
|
||||
|* *|
|
||||
\*************************************************************************/
|
||||
void LeeFuentes(char *file)
|
||||
{
|
||||
FILE *fich;
|
||||
/* Reservamos 4 Kb. para cargar la fuente en memoria */
|
||||
|
||||
/* Abrimos el fichero de la fuente */
|
||||
|
||||
if ((fich=fopen(file,"rb"))==NULL) {
|
||||
printf("\a\nArchivo %s no encontrado.\n",file);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
fseek(fich, SEEK_SET, 0); /* Nos colocamos al principio del fichero */
|
||||
fread(ptr_char,1,4096,fich); /* Cargamos en memoria 4096 bytes del fichero */
|
||||
fclose(fich); /* Cerramos el fichero */
|
||||
}
|
||||
|
||||
#define RESP_X 151
|
||||
#define RESP_Y 141
|
||||
|
||||
|
||||
|
||||
void PatoSimpsons(void)
|
||||
{
|
||||
FILE *handle;
|
||||
char *Buffer2;
|
||||
int byteRot;
|
||||
int x, y, mov, i, ok;
|
||||
// Pido memoria para los tres patos 151x141
|
||||
if ( ( Pato[0] = (char *)malloc( sizeof(char)*155*145 ) ) == NULL ||
|
||||
( Pato[1] = (char *)malloc( sizeof(char)*155*145 ) ) == NULL ||
|
||||
( Pato[2] = (char *)malloc( sizeof(char)*155*145 ) ) == NULL ||
|
||||
( Buffer2 = (char *)malloc( sizeof(char)*320*200 ) ) == NULL ||
|
||||
( BufferV = (char *)malloc( sizeof(char)*320*200 ) ) == NULL
|
||||
) {
|
||||
printf( "\a" );
|
||||
return;
|
||||
}
|
||||
|
||||
// Buffer2 = (char *)MK_FP( 0xA000, 0 );
|
||||
|
||||
// Inicializamos la paleta
|
||||
CargaPaleta( "Pat0.pcx" );
|
||||
// Leemos los patos
|
||||
LeePato( "Pat0.pcx", Pato[0] );
|
||||
// Muestra el primer pato mientras acabamos los c lculos
|
||||
for ( x = 0; x < RESP_X; x ++ )
|
||||
for ( y = 0; y < RESP_Y; y ++ )
|
||||
Put( x+85, y+50, Pato[0][x + RESP_X*y] );
|
||||
LeePato( "Pat1.pcx", Pato[1] );
|
||||
LeePato( "Pat2.pcx", Pato[2] );
|
||||
|
||||
i = 0;
|
||||
while ( i < 5*6 )
|
||||
{
|
||||
i++;
|
||||
mov = (mov++) % 6;
|
||||
for ( x = 0; x < RESP_X; x ++ )
|
||||
for ( y = 0; y < RESP_Y; y ++ )
|
||||
Put( x+85, y+50, Pato[ mov > 3 ? (6 - mov) : (mov-1) ][x + RESP_X*y] );
|
||||
delay( 100 );
|
||||
}
|
||||
|
||||
// Tatatam tam
|
||||
sync_display(); memset( MK_FP( 0xA000, 0 ), 255, 320*200 ); delay( 50 ); sync_display(); memset( MK_FP( 0xA000, 0 ), 0, 320*200 ); delay( 50 );
|
||||
sync_display(); memset( MK_FP( 0xA000, 0 ), 255, 320*200 ); delay( 50 ); sync_display(); memset( MK_FP( 0xA000, 0 ), 0, 320*200 ); delay( 150 );
|
||||
sync_display(); memset( MK_FP( 0xA000, 0 ), 255, 320*200 ); delay( 50 ); sync_display(); memset( MK_FP( 0xA000, 0 ), 0, 320*200 );
|
||||
|
||||
// Patos reduciendoce:
|
||||
i = 1; ok = 0; byteRot = 0;
|
||||
int inc = 1, fVel = 0;
|
||||
float CosAngle, SinAngle;
|
||||
int xc, yc;
|
||||
|
||||
clock_t start, end;
|
||||
start = clock();
|
||||
while( ( ( clock() - start) / CLK_TCK ) < 30 )
|
||||
{
|
||||
fVel = (fVel++)%3;
|
||||
if ( fVel==1 )
|
||||
{
|
||||
i += inc; if ( i > 6 ) inc = -1; else if ( i < 2 ) inc = 1;
|
||||
}
|
||||
ReducePato( BufferV, Pato[ mov > 3 ? (6 - mov) : (mov-1) ], i );
|
||||
mov = (mov++) % 6;
|
||||
|
||||
/*
|
||||
Que tal una peque¤a rotaci¢n:
|
||||
*/
|
||||
byteRot = (byteRot+=8) % 360;
|
||||
CosAngle = TSin[ byteRot + 90 ] / 100.0;
|
||||
SinAngle = TSin[ byteRot ] / 100.0;
|
||||
|
||||
for ( x = 0; x < 320; x++ )
|
||||
// for ( y = 0; y < 200; y++ )
|
||||
for ( y = 0; y < 200; y++ )
|
||||
{
|
||||
xc = x - 160;
|
||||
yc = y - 100;
|
||||
|
||||
yc = xc * SinAngle + yc * CosAngle + 100;
|
||||
if ( yc >= 0 && yc < 200 )
|
||||
{
|
||||
xc = xc * CosAngle - ( y - 100 ) * SinAngle + 160;
|
||||
if ( xc >= 0 && xc < 320 )
|
||||
{
|
||||
Buffer2[ x + 320*y ] = BufferV[ xc + 320 * yc ];
|
||||
} else Buffer2[ x + 320*y ] = 0;
|
||||
} else Buffer2[ x + 320*y ] = 0;
|
||||
}
|
||||
sync_display(); memcpy( MK_FP( 0xA000, 0 ), Buffer2, 320*200 );
|
||||
delay( 100 );
|
||||
};
|
||||
|
||||
free( Pato[0] );
|
||||
free( Pato[1] );
|
||||
free( Pato[2] );
|
||||
free( BufferV );
|
||||
// free( Buffer2 );
|
||||
}
|
||||
|
||||
void ReducePato( char *Dest, char *Org, char Magn )
|
||||
{
|
||||
int x, y;
|
||||
int xR, yR;
|
||||
|
||||
// Escalamos el primer pato y despues...
|
||||
for ( x = 0, xR = 0; x < RESP_X; x +=Magn, xR++ )
|
||||
for ( y = 0, yR = 0; y < RESP_Y; y +=Magn, yR++ )
|
||||
Dest[xR + yR*320] = Org[x + y*RESP_X];
|
||||
|
||||
// Copiamos en el destino tantos patos reducidos como podamos
|
||||
// como la ovejita Dolly, pero con patos: a clonar se ha dicho...
|
||||
for ( x = 0; x < 320; x++ )
|
||||
for ( y = 0; y < 200; y++ )
|
||||
// for ( y = 0; y < 320; y++ )
|
||||
|
||||
Dest[x + y*320] = Dest[ (x%xR) + (y%yR)*320 ];
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
int LeePato( char *file, char *dir )
|
||||
{
|
||||
int alto, ancho, contador;
|
||||
unsigned char byte;
|
||||
FILE *fp;
|
||||
|
||||
if ( (fp = fopen( file,"rb")) != NULL )
|
||||
{
|
||||
// Saltamos la cabecera
|
||||
fseek( fp, 128, SEEK_SET );
|
||||
|
||||
for(alto=0; alto<RESP_Y; alto++)
|
||||
{
|
||||
for(ancho=0; ancho< (RESP_X+1); )
|
||||
{
|
||||
byte=getc(fp);
|
||||
if(byte<=0xC0)
|
||||
{
|
||||
// set_point (ancho, alto, byte);
|
||||
// ProcesaPunto( ancho, alto, byte );
|
||||
dir[ancho + alto*RESP_X] = byte;
|
||||
ancho++;
|
||||
} else {
|
||||
contador=byte&0x3F; byte=getc(fp);
|
||||
for(; contador>0; contador--)
|
||||
{
|
||||
// set_point (ancho, alto, byte);
|
||||
// ProcesaPunto( ancho, alto, byte );
|
||||
dir[ancho + alto*RESP_X] = byte;
|
||||
ancho++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
fclose(fp);
|
||||
} else return ERROR;
|
||||
|
||||
return OK;
|
||||
}
|
425
DEMO.H
Normal file
425
DEMO.H
Normal file
@ -0,0 +1,425 @@
|
||||
typedef struct
|
||||
{
|
||||
int x, y; // Coordenadas iniciales de muestreo
|
||||
char ndigitos; // n£mero de digitos a mostrar
|
||||
char AX, AY; // factor de espaciado
|
||||
char C1, C2, C3; // colores de fondo, texto, borde
|
||||
|
||||
// Datos privados y uso interno exclusivamente
|
||||
unsigned int Flen; // longitud de la frase actual
|
||||
char BitByte; // bit del byte por el que va en el recorrido
|
||||
char currByte; // byte actual dentro de la frase
|
||||
} p_Ampliada;
|
||||
|
||||
|
||||
typedef unsigned char DacPalette256[256][3];
|
||||
|
||||
void setvgapalette256(DacPalette256 *PalBuf);
|
||||
|
||||
|
||||
// Paleta para el Dyna ( apartir del 50 podemos tocar los gradientes )
|
||||
DacPalette256 Palette256;
|
||||
DacPalette256 PaletteDyn = {
|
||||
{ 0, 00, 00 },
|
||||
{ 32, 00, 00 },
|
||||
{ 0, 32, 00 },
|
||||
{ 32, 32, 00 },
|
||||
{ 0, 00, 32 },
|
||||
{ 32, 00, 32 },
|
||||
{ 0, 32, 32 },
|
||||
{ 48, 48, 48 },
|
||||
{ 48, 55, 48 },
|
||||
{ 41, 50, 60 },
|
||||
{ 0, 00, 00 },
|
||||
{ 42, 00, 00 },
|
||||
{ 53, 00, 00 },
|
||||
{ 0, 10, 00 },
|
||||
{ 21, 10, 00 },
|
||||
{ 32, 10, 00 },
|
||||
{ 42, 10, 00 },
|
||||
{ 53, 10, 00 },
|
||||
{ 63, 10, 00 },
|
||||
{ 0, 21, 00 },
|
||||
{ 21, 21, 00 },
|
||||
{ 32, 21, 00 },
|
||||
{ 42, 21, 00 },
|
||||
{ 53, 21, 00 },
|
||||
{ 63, 21, 00 },
|
||||
{ 21, 32, 00 },
|
||||
{ 42, 32, 00 },
|
||||
{ 53, 32, 00 },
|
||||
{ 63, 32, 00 },
|
||||
{ 0, 42, 00 },
|
||||
{ 21, 42, 00 },
|
||||
{ 32, 42, 00 },
|
||||
{ 42, 42, 00 },
|
||||
{ 53, 42, 00 },
|
||||
{ 63, 42, 00 },
|
||||
{ 0, 53, 00 },
|
||||
{ 21, 53, 00 },
|
||||
{ 32, 53, 00 },
|
||||
{ 42, 53, 00 },
|
||||
{ 53, 53, 00 },
|
||||
{ 63, 53, 00 },
|
||||
{ 21, 63, 00 },
|
||||
{ 32, 63, 00 },
|
||||
{ 42, 63, 00 },
|
||||
{ 53, 63, 00 },
|
||||
{ 21, 00, 21 },
|
||||
{ 32, 00, 21 },
|
||||
{ 42, 00, 21 },
|
||||
{ 53, 00, 21 },
|
||||
{ 63, 00, 21 },
|
||||
{ 0, 10, 21 },
|
||||
{ 21, 10, 21 },
|
||||
{ 32, 10, 21 },
|
||||
{ 42, 10, 21 },
|
||||
{ 53, 10, 21 },
|
||||
{ 63, 10, 21 },
|
||||
{ 0, 21, 21 },
|
||||
{ 21, 21, 21 },
|
||||
{ 32, 21, 21 },
|
||||
{ 42, 21, 21 },
|
||||
{ 53, 21, 21 },
|
||||
{ 63, 21, 21 },
|
||||
{ 0, 32, 21 },
|
||||
{ 21, 32, 21 },
|
||||
{ 32, 32, 21 },
|
||||
{ 42, 32, 21 },
|
||||
{ 53, 32, 21 },
|
||||
{ 63, 32, 21 },
|
||||
{ 0, 42, 21 },
|
||||
{ 21, 42, 21 },
|
||||
{ 32, 42, 21 },
|
||||
{ 42, 42, 21 },
|
||||
{ 53, 42, 21 },
|
||||
{ 63, 42, 21 },
|
||||
{ 0, 53, 21 },
|
||||
{ 21, 53, 21 },
|
||||
{ 32, 53, 21 },
|
||||
{ 42, 53, 21 },
|
||||
{ 53, 53, 21 },
|
||||
{ 63, 53, 21 },
|
||||
{ 0, 63, 21 },
|
||||
{ 21, 63, 21 },
|
||||
{ 32, 63, 21 },
|
||||
{ 42, 63, 21 },
|
||||
{ 53, 63, 21 },
|
||||
{ 63, 63, 21 },
|
||||
{ 21, 00, 32 },
|
||||
{ 42, 00, 32 },
|
||||
{ 53, 00, 32 },
|
||||
{ 63, 00, 32 },
|
||||
{ 0, 10, 32 },
|
||||
{ 21, 10, 32 },
|
||||
{ 32, 10, 32 },
|
||||
{ 42, 10, 32 },
|
||||
{ 53, 10, 32 },
|
||||
{ 63, 10, 32 },
|
||||
{ 0, 21, 32 },
|
||||
{ 21, 21, 32 },
|
||||
{ 32, 21, 32 },
|
||||
{ 42, 21, 32 },
|
||||
{ 53, 21, 32 },
|
||||
{ 63, 21, 32 },
|
||||
{ 21, 32, 32 },
|
||||
{ 42, 32, 32 },
|
||||
{ 53, 32, 32 },
|
||||
{ 63, 32, 32 },
|
||||
{ 0, 42, 32 },
|
||||
{ 21, 42, 32 },
|
||||
{ 32, 42, 32 },
|
||||
{ 42, 42, 32 },
|
||||
{ 53, 42, 32 },
|
||||
{ 63, 42, 32 },
|
||||
{ 0, 53, 32 },
|
||||
{ 21, 53, 32 },
|
||||
{ 32, 53, 32 },
|
||||
{ 42, 53, 32 },
|
||||
{ 53, 53, 32 },
|
||||
{ 63, 53, 32 },
|
||||
{ 0, 63, 32 },
|
||||
{ 21, 63, 32 },
|
||||
{ 32, 63, 32 },
|
||||
{ 42, 63, 32 },
|
||||
{ 53, 63, 32 },
|
||||
{ 63, 63, 32 },
|
||||
{ 00, 00, 42 },
|
||||
{ 21, 00, 42 },
|
||||
{ 32, 00, 42 },
|
||||
{ 42, 00, 42 },
|
||||
{ 53, 00, 42 },
|
||||
{ 63, 00, 42 },
|
||||
{ 00, 10, 42 },
|
||||
{ 21, 10, 42 },
|
||||
{ 32, 10, 42 },
|
||||
{ 42, 10, 42 },
|
||||
{ 53, 10, 42 },
|
||||
{ 63, 10, 42 },
|
||||
{ 00, 21, 42 },
|
||||
{ 21, 21, 42 },
|
||||
{ 32, 21, 42 },
|
||||
{ 42, 21, 42 },
|
||||
{ 53, 21, 42 },
|
||||
{ 63, 21, 42 },
|
||||
{ 00, 32, 42 },
|
||||
{ 21, 32, 42 },
|
||||
{ 32, 32, 42 },
|
||||
{ 42, 32, 42 },
|
||||
{ 53, 32, 42 },
|
||||
{ 63, 32, 42 },
|
||||
{ 00, 42, 42 },
|
||||
{ 21, 42, 42 },
|
||||
{ 32, 42, 42 },
|
||||
{ 42, 42, 42 },
|
||||
{ 53, 42, 42 },
|
||||
{ 63, 42, 42 },
|
||||
{ 00, 53, 42 },
|
||||
{ 21, 53, 42 },
|
||||
{ 32, 53, 42 },
|
||||
{ 42, 53, 42 },
|
||||
{ 53, 53, 42 },
|
||||
{ 63, 53, 42 },
|
||||
{ 00, 63, 42 },
|
||||
{ 21, 63, 42 },
|
||||
{ 32, 63, 42 },
|
||||
{ 42, 63, 42 },
|
||||
{ 53, 63, 42 },
|
||||
{ 63, 63, 42 },
|
||||
{ 00, 00, 53 },
|
||||
{ 21, 00, 53 },
|
||||
{ 32, 00, 53 },
|
||||
{ 42, 00, 53 },
|
||||
{ 53, 00, 53 },
|
||||
{ 63, 00, 53 },
|
||||
{ 00, 10, 53 },
|
||||
{ 21, 10, 53 },
|
||||
{ 32, 10, 53 },
|
||||
{ 42, 10, 53 },
|
||||
{ 53, 10, 53 },
|
||||
{ 63, 10, 53 },
|
||||
{ 00, 21, 53 },
|
||||
{ 21, 21, 53 },
|
||||
{ 32, 21, 53 },
|
||||
{ 42, 21, 53 },
|
||||
{ 53, 21, 53 },
|
||||
{ 63, 21, 53 },
|
||||
{ 00, 32, 53 },
|
||||
{ 21, 32, 53 },
|
||||
{ 32, 32, 53 },
|
||||
{ 42, 32, 53 },
|
||||
{ 53, 32, 53 },
|
||||
{ 63, 32, 53 },
|
||||
{ 00, 42, 53 },
|
||||
{ 21, 42, 53 },
|
||||
{ 32, 42, 53 },
|
||||
{ 42, 42, 53 },
|
||||
{ 53, 42, 53 },
|
||||
{ 63, 42, 53 },
|
||||
{ 00, 53, 53 },
|
||||
{ 21, 53, 53 },
|
||||
{ 32, 53, 53 },
|
||||
{ 42, 53, 53 },
|
||||
{ 53, 53, 53 },
|
||||
{ 63, 53, 53 },
|
||||
{ 00, 63, 53 },
|
||||
{ 21, 63, 53 },
|
||||
{ 32, 63, 53 },
|
||||
{ 42, 63, 53 },
|
||||
{ 53, 63, 53 },
|
||||
{ 63, 63, 53 },
|
||||
{ 21, 00, 63 },
|
||||
{ 32, 00, 63 },
|
||||
{ 42, 00, 63 },
|
||||
{ 53, 00, 63 },
|
||||
{ 00, 10, 63 },
|
||||
{ 21, 10, 63 },
|
||||
{ 32, 10, 63 },
|
||||
{ 42, 10, 63 },
|
||||
{ 53, 10, 63 },
|
||||
{ 63, 10, 63 },
|
||||
{ 00, 21, 63 },
|
||||
{ 21, 21, 63 },
|
||||
{ 32, 21, 63 },
|
||||
{ 42, 21, 63 },
|
||||
{ 53, 21, 63 },
|
||||
{ 63, 21, 63 },
|
||||
{ 00, 32, 63 },
|
||||
{ 21, 32, 63 },
|
||||
{ 32, 32, 63 },
|
||||
{ 42, 32, 63 },
|
||||
{ 53, 32, 63 },
|
||||
{ 63, 32, 63 },
|
||||
{ 00, 42, 63 },
|
||||
{ 21, 42, 63 },
|
||||
{ 32, 42, 63 },
|
||||
{ 42, 42, 63 },
|
||||
{ 53, 42, 63 },
|
||||
{ 63, 42, 63 },
|
||||
{ 00, 53, 63 },
|
||||
{ 21, 53, 63 },
|
||||
{ 32, 53, 63 },
|
||||
{ 42, 53, 63 },
|
||||
{ 53, 53, 63 },
|
||||
{ 63, 53, 63 },
|
||||
{ 21, 63, 63 },
|
||||
{ 32, 63, 63 },
|
||||
{ 42, 63, 63 },
|
||||
{ 53, 63, 63 },
|
||||
{ 63, 62, 60 },
|
||||
{ 40, 40, 41 },
|
||||
{ 32, 32, 32 },
|
||||
{ 63, 00, 00 },
|
||||
{ 00, 63, 00 },
|
||||
{ 63, 63, 00 },
|
||||
{ 00, 00, 63 },
|
||||
{ 63, 00, 63 },
|
||||
{ 00, 63, 63 },
|
||||
{ 63, 63, 63 }
|
||||
};
|
||||
|
||||
|
||||
|
||||
//unsigned char BombMovs[16][18][3] = {
|
||||
|
||||
// BLOQUE / FILA / COLUMNA
|
||||
unsigned char BombMovs[3][18][16] = {
|
||||
{
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0 },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 12, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 12, 12, 0 },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 12, 10, 0, 0 },
|
||||
{ 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 0, 10, 255, 10, 0, 0 },
|
||||
{ 0, 0, 0, 0, 10, 10, 51, 255, 51, 51, 10, 255, 33, 10, 0, 0 },
|
||||
{ 0, 0, 0, 10, 51, 0, 51, 13, 51, 13, 10, 0, 10, 0, 0, 0 },
|
||||
{ 0, 0, 10, 51, 255, 51, 13, 51, 51, 51, 51, 10, 10, 10, 0, 0 },
|
||||
{ 0, 0, 10, 0, 255, 13, 51, 13, 51, 13, 51, 13, 51, 10, 0, 0 },
|
||||
{ 0, 10, 51, 255, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 10, 0 },
|
||||
{ 0, 10, 51, 0, 51, 13, 51, 13, 51, 13, 51, 13, 51, 13, 10, 0 },
|
||||
{ 0, 10, 13, 51, 51, 51, 13, 51, 51, 51, 13, 51, 51, 51, 10, 0 },
|
||||
{ 0, 10, 51, 13, 51, 13, 51, 13, 51, 13, 51, 13, 51, 13, 10, 0 },
|
||||
{ 0, 0, 10, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 10, 0, 0 },
|
||||
{ 0, 0, 10, 13, 51, 13, 51, 13, 51, 13, 51, 13, 51, 10, 0, 0 },
|
||||
{ 0, 0, 0, 10, 51, 51, 13, 51, 51, 51, 51, 51, 10, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0, 10, 10, 51, 13, 51, 13, 10, 10, 0, 0, 0, 0 }
|
||||
},
|
||||
{
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 33 },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 33, 0, 12 },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 12, 10 },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 0, 10, 10, 255, 10 },
|
||||
{ 0, 0, 0, 0, 10, 10, 10, 51, 255, 51, 51, 10, 255, 255, 33, 10 },
|
||||
{ 0, 0, 0, 10, 51, 51, 51, 51, 13, 51, 13, 10, 0, 0, 10, 0 },
|
||||
{ 0, 0, 10, 51, 13, 51, 51, 13, 0, 51, 51, 51, 10, 10, 10, 10 },
|
||||
{ 0, 0, 10, 51, 51, 51, 13, 255, 255, 51, 13, 51, 13, 13, 51, 10 },
|
||||
{ 0, 10, 51, 51, 51, 51, 0, 255, 255, 51, 51, 51, 51, 51, 51, 51 },
|
||||
{ 0, 10, 51, 13, 13, 51, 255, 51, 13, 51, 13, 51, 13, 13, 51, 13 },
|
||||
{ 0, 10, 51, 51, 51, 51, 0, 51, 13, 51, 13, 51, 13, 13, 51, 13 },
|
||||
{ 0, 10, 13, 51, 51, 51, 0, 13, 51, 51, 51, 13, 51, 51, 51, 51 },
|
||||
{ 0, 10, 51, 13, 51, 51, 13, 51, 13, 51, 13, 51, 13, 13, 51, 13 },
|
||||
{ 0, 0, 10, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 10 },
|
||||
{ 0, 0, 10, 13, 51, 51, 13, 51, 13, 51, 13, 51, 13, 13, 51, 10 },
|
||||
{ 0, 0, 0, 10, 51, 51, 51, 13, 51, 51, 51, 51, 51, 51, 10, 0 },
|
||||
{ 0, 0, 0, 0, 10, 10, 10, 51, 13, 51, 13, 10, 10, 10, 0, 0 }
|
||||
},
|
||||
{
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 12, 0 },
|
||||
{ 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 12 },
|
||||
{ 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 12, 10 },
|
||||
{ 0, 10, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 0, 10, 255, 10 },
|
||||
{ 0, 10, 0, 0, 0, 0, 10, 10, 51, 51, 51, 51, 10, 255, 33, 10 },
|
||||
{ 0, 10, 0, 0, 0, 10, 51, 13, 51, 13, 255, 13, 10, 0, 10, 0 },
|
||||
{ 0, 10, 0, 0, 10, 51, 13, 51, 13, 51, 51, 51, 51, 10, 10, 10 },
|
||||
{ 0, 10, 0, 0, 10, 13, 13, 13, 51, 13, 51, 255, 255, 13, 51, 10 },
|
||||
{ 0, 10, 0, 10, 51, 13, 51, 51, 51, 51, 51, 51, 51, 0, 51, 51 },
|
||||
{ 0, 10, 0, 10, 51, 13, 51, 13, 51, 13, 51, 13, 51, 13, 255, 13 },
|
||||
{ 0, 10, 0, 10, 13, 51, 51, 51, 13, 51, 51, 51, 51, 51, 0, 51 },
|
||||
{ 0, 10, 0, 10, 51, 13, 51, 13, 51, 13, 51, 13, 51, 13, 0, 13 },
|
||||
{ 0, 10, 0, 0, 10, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 10 },
|
||||
{ 0, 10, 0, 0, 10, 13, 51, 13, 51, 13, 51, 13, 51, 13, 51, 10 },
|
||||
{ 0, 10, 0, 0, 0, 10, 51, 51, 13, 51, 51, 51, 51, 51, 10, 0 },
|
||||
{ 0, 10, 0, 0, 0, 0, 10, 10, 51, 13, 51, 13, 10, 10, 0, 0 },
|
||||
}
|
||||
};
|
||||
|
||||
unsigned char DynaMovs[3][23][23] = {
|
||||
{
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 10, 10, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 10, 10, 1, 11, 12, 12, 11, 11, 10, 0, 0, 10, 29, 35, 10, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 10, 11, 11, 12, 12, 12, 12, 12, 11, 11, 10, 10, 10, 35, 29, 10, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 10, 11, 12, 12, 12, 12, 12, 12, 12, 11, 11, 10, 0, 10, 10, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 10, 23, 24, 23, 24, 23, 11, 12, 12, 12, 12, 11, 10, 0, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 10, 24, 33, 10, 28, 28, 23, 11, 12, 12, 12, 12, 10, 0, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 10, 23, 28, 10, 28, 33, 24, 11, 12, 12, 12, 11, 10, 0, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 10, 24, 28, 10, 33, 28, 24, 11, 12, 12, 12, 11, 10, 0, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 10, 23, 24, 23, 24, 23, 11, 12, 12, 12, 11, 10, 10, 0, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 10, 12, 12, 12, 10, 10, 10, 11, 11, 10, 10, 0, 0, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 17, 28, 17, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 10, 12, 18, 10, 28, 28, 28, 10, 11, 10, 0, 0, 0, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 10, 12, 17, 10, 33, 28, 23, 10, 1, 10, 0, 0, 0, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 10, 33, 28, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 10, 12, 17, 10, 29, 35, 29, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 10, 28, 33, 28, 33, 28, 10, 0, 0, 0, 0, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 10, 10, 10, 10, 35, 29, 35, 29, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, }
|
||||
},
|
||||
{
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 10, 10, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 1, 11, 12, 12, 11, 11, 10, 0, 10, 35, 29, 10, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 10, 11, 12, 12, 12, 12, 12, 12, 12, 11, 10, 10, 29, 35, 10, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 10, 11, 12, 12, 12, 12, 12, 12, 12, 12, 11, 10, 10, 10, 10, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 10, 23, 24, 23, 11, 12, 12, 12, 12, 12, 12, 1, 10, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 10, 24, 10, 28, 24, 11, 12, 12, 12, 12, 12, 11, 10, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 10, 23, 10, 33, 24, 11, 12, 12, 12, 12, 12, 11, 10, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 10, 24, 10, 28, 24, 11, 12, 12, 12, 12, 12, 11, 10, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 10, 23, 24, 23, 11, 12, 12, 12, 12, 12, 11, 10, 10, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 10, 10, 10, 1, 11, 12, 12, 10, 10, 10, 11, 10, 10, 0, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 10, 29, 35, 10, 10, 10, 10, 10, 28, 23, 18, 10, 10, 0, 0, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 10, 35, 10, 10, 18, 24, 18, 10, 24, 28, 24, 18, 10, 10, 0, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 10, 28, 10, 18, 23, 18, 17, 10, 23, 28, 10, 35, 10, 0, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 10, 28, 10, 33, 28, 10, 10, 10, 10, 10, 35, 29, 10, 0, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 10, 10, 18, 17, 18, 17, 18, 12, 10, 10, 10, 0, 0, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 10, 10, 28, 33, 24, 12, 12, 12, 10, 35, 10, 0, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 10, 10, 10, 28, 33, 24, 17, 10, 10, 10, 10, 35, 10, 0, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 10, 35, 35, 10, 24, 18, 10, 10, 28, 28, 10, 29, 10, 0, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 10, 29, 35, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, }
|
||||
},
|
||||
{
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 0, 0, 10, 10, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 11, 12, 12, 12, 11, 11, 10, 10, 35, 35, 10, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 10, 11, 12, 12, 12, 12, 12, 12, 12, 11, 10, 35, 29, 10, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 11, 10, 10, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 10, 23, 24, 23, 24, 23, 24, 23, 11, 12, 12, 11, 10, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 10, 10, 33, 28, 10, 28, 33, 28, 24, 11, 12, 11, 10, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 10, 10, 28, 33, 10, 33, 28, 33, 24, 11, 12, 12, 10, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 10, 10, 28, 28, 10, 28, 28, 28, 24, 11, 12, 11, 10, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 10, 23, 24, 23, 24, 23, 24, 23, 11, 12, 12, 1, 10, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 18, 10, 10, 10, 1, 11, 12, 1, 10, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 10, 29, 35, 10, 10, 23, 18, 10, 10, 10, 10, 10, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 10, 35, 10, 24, 33, 28, 24, 10, 24, 12, 10, 18, 10, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 10, 10, 24, 33, 28, 23, 18, 10, 24, 12, 10, 17, 18, 10, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 28, 24, 18, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 10, 18, 10, 10, 10, 18, 17, 18, 17, 10, 10, 35, 10, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 10, 10, 18, 28, 18, 17, 18, 18, 12, 33, 24, 10, 10, 10, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 10, 29, 10, 33, 28, 23, 10, 10, 10, 23, 28, 33, 24, 10, 0, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 10, 35, 35, 10, 23, 10, 10, 10, 10, 10, 24, 28, 10, 35, 10, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 10, 35, 29, 10, 10, 10, 10, 10, 10, 10, 10, 10, 29, 10, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 29, 10, 10, 10, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, },
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, }
|
||||
}
|
||||
};
|
295
FOTO.CPP
Normal file
295
FOTO.CPP
Normal file
@ -0,0 +1,295 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <conio.h>
|
||||
#include <graphics.h>
|
||||
|
||||
#define OK 0
|
||||
#define ERROR 1
|
||||
|
||||
//#define RES_X 320
|
||||
//#define RES_Y 200
|
||||
#define RES_X 273+1
|
||||
#define RES_Y 411
|
||||
|
||||
typedef unsigned char DacPalette256[256][3];
|
||||
DacPalette256 Palette256;
|
||||
|
||||
int CargaPaleta(char *file );
|
||||
|
||||
unsigned char Movs[73][71][3];
|
||||
|
||||
int MuestraImagen( char *file );
|
||||
void ProcesaPunto( int x, int y, char byte );
|
||||
void Mem2CPP(void);
|
||||
FILE *out1,*out2,*out3,*out4;
|
||||
|
||||
void main( int argc, char *argv[] )
|
||||
{
|
||||
int gd=DETECT, gm, errorcode;
|
||||
int i, j, k;
|
||||
|
||||
// initgraph( &gd, &gm, "c:\\program\\borlandc\\bgi" );
|
||||
errorcode = graphresult();
|
||||
|
||||
if (errorcode != grOk) /* an error occurred */
|
||||
{
|
||||
printf("Graphics error: %s\n", grapherrormsg(errorcode));
|
||||
printf("Press any key to halt:");
|
||||
getch();
|
||||
return;
|
||||
}
|
||||
if ( (out1=fopen("foto1.txt", "wt" ) ) != NULL )
|
||||
if ( (out2=fopen("foto2.txt", "wt" ) ) != NULL )
|
||||
if ( (out3=fopen("foto3.txt", "wt" ) ) != NULL )
|
||||
if ( (out4=fopen("foto4.txt", "wt" ) ) != NULL )
|
||||
{
|
||||
|
||||
MuestraImagen( "D:\\JD2bin.pcx"/*argv[1]*/ );
|
||||
// CargaPaleta( argv[1] );
|
||||
fclose(out1);
|
||||
fclose(out2);
|
||||
fclose(out3);
|
||||
fclose(out4);
|
||||
// getch();
|
||||
}
|
||||
// Mem2CPP();
|
||||
|
||||
// closegraph();
|
||||
}
|
||||
|
||||
void Mem2CPP(void)
|
||||
{
|
||||
FILE *out;
|
||||
int i, j, k;
|
||||
|
||||
if ( (out=fopen("foto.txt", "wt" ) ) != NULL )
|
||||
{
|
||||
for ( i = 0; i < 411; i ++ )
|
||||
{
|
||||
for ( j = 0; j < 273; j ++ )
|
||||
{
|
||||
fprintf( out, "%d", (int)Movs[j][i][0] );
|
||||
}
|
||||
fprintf( out, "\n" );
|
||||
}
|
||||
/*
|
||||
fprintf( out, "unsigned char Movs[23][23][3] = { \n");
|
||||
for ( k = 0; k < 3; k ++ )
|
||||
{
|
||||
fprintf( out, " {\n");
|
||||
for ( i = 0; i < 22; i++ )
|
||||
{
|
||||
fprintf( out, " { ");
|
||||
for ( j = 0; j < 23; j++ )
|
||||
fprintf( out, "%03d, ", (int)Movs[j][i][k] );
|
||||
fprintf( out, " }, \n");
|
||||
}
|
||||
i = 22;
|
||||
fprintf( out, " { ");
|
||||
for ( j = 0; j < 23; j++ )
|
||||
fprintf( out, "%03d, ", (int)Movs[j][i][k] );
|
||||
fprintf( out, " } \n");
|
||||
fprintf( out, " },\n");
|
||||
}
|
||||
fprintf( out, " };");
|
||||
|
||||
fprintf( out, "\n\n\n");
|
||||
for ( i = 0; i < 256; i++ )
|
||||
fprintf ( out, "{ %03d, %03d, %03d }, \n", Palette256[i][0], Palette256[i][1], Palette256[i][2] );
|
||||
*/
|
||||
fclose(out);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**************************************************************************\
|
||||
|* *|
|
||||
|* MuestraImagen *|
|
||||
|* *|
|
||||
|* Descripci¢n: *|
|
||||
|* Descomprime y copia a la pagina indicada un PCX *|
|
||||
|* *|
|
||||
|* Entradas: nombre de la imagen *|
|
||||
|* *|
|
||||
|* *|
|
||||
|* Salidas: OK Todo ha ido bien *|
|
||||
|* ERROR Algo va mal *|
|
||||
|* *|
|
||||
\**************************************************************************/
|
||||
int MuestraImagen( char *file )
|
||||
{
|
||||
int alto, ancho, contador;
|
||||
unsigned char byte;
|
||||
FILE *fp;
|
||||
|
||||
if ( (fp = fopen( file,"rb")) != NULL )
|
||||
{
|
||||
// Saltamos la cabecera
|
||||
fseek( fp, 128, SEEK_SET );
|
||||
|
||||
for(alto=0; alto<RES_Y; alto++)
|
||||
{
|
||||
for(ancho=0; ancho<RES_X; )
|
||||
{
|
||||
|
||||
|
||||
byte=getc(fp);
|
||||
if(byte<=0xC0)
|
||||
{
|
||||
// set_point (ancho, alto, byte);
|
||||
// ProcesaPunto( ancho, alto, byte );
|
||||
// fprintf( out, "%d", (int)byte == 0 ? 0: 1 );
|
||||
if ( alto <= RES_Y/2 )
|
||||
{
|
||||
if ( ancho < RES_X/2 )
|
||||
{
|
||||
fprintf( out1, "%d", (int)byte == 0 ? 0: 1 );
|
||||
gotoxy( 1,1 );cprintf( " " );
|
||||
} else {
|
||||
fprintf( out2, "%d", (int)byte == 0 ? 0: 1 );
|
||||
gotoxy( 1,1 );cprintf( "*" );
|
||||
}
|
||||
} else {
|
||||
if ( ancho < RES_X/2 )
|
||||
{
|
||||
fprintf( out3, "%d", (int)byte == 0 ? 0: 1 );
|
||||
gotoxy( 1,1 );cprintf( " " );
|
||||
|
||||
} else {
|
||||
fprintf( out4, "%d", (int)byte == 0 ? 0: 1 );
|
||||
gotoxy( 1,1 );cprintf( "*" );
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if ( alto <= RES_Y/2 )
|
||||
{
|
||||
if ( ancho == RES_X/2 )
|
||||
{
|
||||
fprintf( out1, "\n" );
|
||||
} else {
|
||||
if ( ancho == RES_X - 1 )
|
||||
fprintf( out2, "\n" );
|
||||
}
|
||||
} else {
|
||||
if ( ancho == RES_X/2 )
|
||||
{
|
||||
fprintf( out3, "\n" );
|
||||
} else {
|
||||
if ( ancho == RES_X-1 )
|
||||
fprintf( out4, "\n" );
|
||||
}
|
||||
}
|
||||
ancho++;
|
||||
} else {
|
||||
contador=byte&0x3F; byte=getc(fp);
|
||||
for(; contador>0; contador--)
|
||||
{
|
||||
// set_point (ancho, alto, byte);
|
||||
// ProcesaPunto( ancho, alto, byte );
|
||||
// fprintf( out, "%d", (int)byte );
|
||||
// fprintf( out, "%d", (int)byte == 0 ? 0: 1 );
|
||||
if ( alto <= RES_Y/2 )
|
||||
{
|
||||
if ( ancho < RES_X/2 )
|
||||
{
|
||||
gotoxy( 1,1 );cprintf( " " );
|
||||
|
||||
fprintf( out1, "%d", (int)byte == 0 ? 0: 1 );
|
||||
} else {
|
||||
gotoxy( 1,1 );cprintf( "*" );
|
||||
|
||||
fprintf( out2, "%d", (int)byte == 0 ? 0: 1 );
|
||||
}
|
||||
} else {
|
||||
if ( ancho < RES_X/2 )
|
||||
{
|
||||
gotoxy( 1,1 );cprintf( " " );
|
||||
|
||||
fprintf( out3, "%d", (int)byte == 0 ? 0: 1 );
|
||||
}else{
|
||||
gotoxy( 1,1 );cprintf( "*" );
|
||||
|
||||
fprintf( out4, "%d", (int)byte == 0 ? 0: 1 );
|
||||
}
|
||||
}
|
||||
|
||||
if ( alto <= RES_Y/2 )
|
||||
{
|
||||
if ( ancho == RES_X/2 )
|
||||
fprintf( out1, "\n" );
|
||||
else if ( ancho == RES_X - 1 )
|
||||
fprintf( out2, "\n" );
|
||||
} else {
|
||||
if ( ancho == RES_X/2 )
|
||||
fprintf( out3, "\n" );
|
||||
else if ( ancho == RES_X-1 )
|
||||
fprintf( out4, "\n" );
|
||||
}
|
||||
ancho++;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
fclose(fp);
|
||||
} else return ERROR;
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
/**************************************************************************\
|
||||
|* *|
|
||||
|* CargaPaleta *|
|
||||
|* *|
|
||||
|* Descripci¢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
|
||||
Palette256[index][0] = getc(fp) >> 2;
|
||||
Palette256[index][1] = getc(fp) >> 2;
|
||||
Palette256[index][2] = getc(fp) >> 2;
|
||||
} // end for index
|
||||
|
||||
}
|
||||
|
||||
|
||||
fclose( fp );
|
||||
return OK;
|
||||
}
|
||||
|
||||
void ProcesaPunto( int x, int y, char byte )
|
||||
{
|
||||
/*
|
||||
if ( x > 0 && x < 23 && y > 0 && y < 23 )
|
||||
Movs[x][y][0] = byte;
|
||||
if ( x > 0 + 23 && x < 23 + 23 && y > 0 && y < 23 )
|
||||
Movs[x-23][y][1] = byte;
|
||||
if ( x > 0 + 23*2 && x < 23 + 23*2 && y > 0 && y < 23 )
|
||||
Movs[x-23*2][y][2] = byte;
|
||||
*/
|
||||
putpixel( x /*+ x*2*/, y /*+ y*2*/, byte );
|
||||
}
|
335
OUT.CPP
Normal file
335
OUT.CPP
Normal file
@ -0,0 +1,335 @@
|
||||
unsigned char Movs[23][23][3] = {
|
||||
{
|
||||
{ 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, },
|
||||
{ 000, 200, 200, 200, 200, 200, 200, 200, 200, 010, 010, 010, 010, 010, 010, 200, 200, 200, 200, 010, 010, 200, 200, },
|
||||
{ 000, 200, 200, 200, 200, 200, 200, 010, 010, 001, 011, 012, 012, 011, 011, 010, 200, 200, 010, 029, 035, 010, 200, },
|
||||
{ 000, 200, 200, 200, 200, 200, 010, 011, 011, 012, 012, 012, 012, 012, 011, 011, 010, 010, 010, 035, 029, 010, 200, },
|
||||
{ 000, 200, 200, 200, 200, 200, 010, 011, 012, 012, 012, 012, 012, 012, 012, 011, 011, 010, 200, 010, 010, 200, 200, },
|
||||
{ 000, 200, 200, 200, 200, 010, 023, 024, 023, 024, 023, 011, 012, 012, 012, 012, 011, 010, 200, 200, 200, 200, 200, },
|
||||
{ 000, 200, 200, 200, 200, 010, 024, 033, 010, 028, 028, 023, 011, 012, 012, 012, 012, 010, 200, 200, 200, 200, 200, },
|
||||
{ 000, 200, 200, 200, 200, 010, 023, 028, 010, 028, 033, 024, 011, 012, 012, 012, 011, 010, 200, 200, 200, 200, 200, },
|
||||
{ 000, 200, 200, 200, 200, 010, 024, 028, 010, 033, 028, 024, 011, 012, 012, 012, 011, 010, 200, 200, 200, 200, 200, },
|
||||
{ 000, 200, 200, 200, 200, 010, 023, 024, 023, 024, 023, 011, 012, 012, 012, 011, 010, 010, 200, 200, 200, 200, 200, },
|
||||
{ 000, 200, 200, 200, 200, 200, 010, 012, 012, 012, 010, 010, 010, 011, 011, 010, 010, 200, 200, 200, 200, 200, 200, },
|
||||
{ 000, 200, 200, 200, 200, 200, 200, 010, 010, 010, 017, 028, 017, 010, 010, 010, 200, 200, 200, 200, 200, 200, 200, },
|
||||
{ 000, 200, 200, 200, 200, 200, 010, 012, 018, 010, 028, 028, 028, 010, 011, 010, 200, 200, 200, 200, 200, 200, 200, },
|
||||
{ 000, 200, 200, 200, 200, 200, 010, 012, 017, 010, 033, 028, 023, 010, 001, 010, 200, 200, 200, 200, 200, 200, 200, },
|
||||
{ 000, 200, 200, 200, 200, 200, 010, 033, 028, 010, 010, 010, 010, 010, 010, 010, 200, 200, 200, 200, 200, 200, 200, },
|
||||
{ 000, 200, 200, 200, 200, 200, 010, 012, 017, 010, 029, 035, 029, 010, 010, 010, 200, 200, 200, 200, 200, 200, 200, },
|
||||
{ 000, 200, 200, 200, 200, 200, 200, 010, 010, 010, 010, 010, 010, 010, 010, 200, 200, 200, 200, 200, 200, 200, 200, },
|
||||
{ 000, 200, 200, 200, 200, 200, 200, 200, 010, 028, 033, 028, 033, 028, 010, 200, 200, 200, 200, 200, 200, 200, 200, },
|
||||
{ 000, 200, 200, 200, 200, 200, 200, 010, 010, 010, 010, 010, 010, 010, 010, 010, 200, 200, 200, 200, 200, 200, 200, },
|
||||
{ 000, 200, 200, 200, 200, 010, 010, 010, 010, 035, 029, 035, 029, 010, 010, 010, 010, 010, 200, 200, 200, 200, 200, },
|
||||
{ 000, 200, 200, 200, 010, 010, 010, 010, 010, 010, 010, 010, 010, 010, 010, 010, 010, 010, 010, 200, 200, 200, 200, },
|
||||
{ 000, 200, 200, 200, 200, 010, 010, 010, 010, 010, 010, 010, 010, 010, 010, 010, 010, 010, 200, 200, 200, 200, 200, },
|
||||
{ 000, 200, 200, 200, 200, 200, 200, 010, 010, 010, 010, 010, 010, 010, 010, 010, 200, 200, 200, 200, 200, 200, 200, }
|
||||
},
|
||||
{
|
||||
{ 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, },
|
||||
{ 000, 249, 200, 200, 200, 200, 200, 200, 200, 200, 010, 010, 010, 010, 010, 010, 200, 200, 200, 010, 010, 200, 200, },
|
||||
{ 000, 249, 200, 200, 200, 200, 200, 200, 010, 010, 001, 011, 012, 012, 011, 011, 010, 200, 010, 035, 029, 010, 200, },
|
||||
{ 000, 249, 200, 200, 200, 200, 200, 010, 011, 012, 012, 012, 012, 012, 012, 012, 011, 010, 010, 029, 035, 010, 200, },
|
||||
{ 000, 249, 200, 200, 200, 200, 010, 011, 012, 012, 012, 012, 012, 012, 012, 012, 011, 010, 010, 010, 010, 200, 200, },
|
||||
{ 000, 249, 200, 200, 200, 200, 010, 023, 024, 023, 011, 012, 012, 012, 012, 012, 012, 001, 010, 200, 200, 200, 200, },
|
||||
{ 000, 249, 200, 200, 200, 200, 010, 024, 010, 028, 024, 011, 012, 012, 012, 012, 012, 011, 010, 200, 200, 200, 200, },
|
||||
{ 000, 249, 200, 200, 200, 200, 010, 023, 010, 033, 024, 011, 012, 012, 012, 012, 012, 011, 010, 200, 200, 200, 200, },
|
||||
{ 000, 249, 200, 200, 200, 200, 010, 024, 010, 028, 024, 011, 012, 012, 012, 012, 012, 011, 010, 200, 200, 200, 200, },
|
||||
{ 000, 249, 200, 200, 200, 200, 010, 023, 024, 023, 011, 012, 012, 012, 012, 012, 011, 010, 010, 200, 200, 200, 200, },
|
||||
{ 000, 249, 200, 200, 200, 010, 010, 010, 001, 011, 012, 012, 010, 010, 010, 011, 010, 010, 200, 200, 200, 200, 200, },
|
||||
{ 000, 249, 200, 200, 010, 029, 035, 010, 010, 010, 010, 010, 028, 023, 018, 010, 010, 200, 200, 200, 200, 200, 200, },
|
||||
{ 000, 249, 200, 200, 010, 035, 010, 010, 018, 024, 018, 010, 024, 028, 024, 018, 010, 010, 200, 200, 200, 200, 200, },
|
||||
{ 000, 249, 200, 200, 200, 010, 028, 010, 018, 023, 018, 017, 010, 023, 028, 010, 035, 010, 200, 200, 200, 200, 200, },
|
||||
{ 000, 249, 200, 200, 200, 010, 028, 010, 033, 028, 010, 010, 010, 010, 010, 035, 029, 010, 200, 200, 200, 200, 200, },
|
||||
{ 000, 249, 200, 200, 200, 200, 010, 010, 018, 017, 018, 017, 018, 012, 010, 010, 010, 200, 200, 200, 200, 200, 200, },
|
||||
{ 000, 249, 200, 200, 200, 200, 200, 010, 010, 028, 033, 024, 012, 012, 012, 010, 035, 010, 200, 200, 200, 200, 200, },
|
||||
{ 000, 249, 200, 200, 200, 010, 010, 010, 028, 033, 024, 017, 010, 010, 010, 010, 035, 010, 200, 200, 200, 200, 200, },
|
||||
{ 000, 249, 200, 200, 200, 010, 035, 035, 010, 024, 018, 010, 010, 028, 028, 010, 029, 010, 200, 200, 200, 200, 200, },
|
||||
{ 000, 249, 200, 200, 200, 200, 010, 029, 035, 010, 010, 010, 010, 010, 010, 010, 010, 010, 010, 200, 200, 200, 200, },
|
||||
{ 000, 249, 200, 200, 200, 010, 010, 010, 010, 010, 010, 010, 010, 010, 010, 010, 010, 010, 010, 010, 200, 200, 200, },
|
||||
{ 000, 249, 200, 200, 200, 200, 010, 010, 010, 010, 010, 010, 010, 010, 010, 010, 010, 010, 010, 200, 200, 200, 200, },
|
||||
{ 000, 249, 200, 200, 200, 200, 200, 200, 010, 010, 010, 010, 010, 010, 010, 010, 010, 200, 200, 200, 200, 200, 200, }
|
||||
},
|
||||
{
|
||||
{ 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, },
|
||||
{ 000, 200, 249, 200, 200, 200, 200, 200, 200, 200, 010, 010, 010, 010, 010, 010, 010, 200, 200, 010, 010, 200, 200, },
|
||||
{ 000, 200, 249, 200, 200, 200, 200, 200, 200, 010, 001, 011, 012, 012, 012, 011, 011, 010, 010, 035, 035, 010, 200, },
|
||||
{ 000, 200, 249, 200, 200, 200, 200, 200, 010, 011, 012, 012, 012, 012, 012, 012, 012, 011, 010, 035, 029, 010, 200, },
|
||||
{ 000, 200, 249, 200, 200, 200, 200, 200, 010, 012, 012, 012, 012, 012, 012, 012, 012, 012, 011, 010, 010, 200, 200, },
|
||||
{ 000, 200, 249, 200, 200, 200, 200, 010, 023, 024, 023, 024, 023, 024, 023, 011, 012, 012, 011, 010, 200, 200, 200, },
|
||||
{ 000, 200, 249, 200, 200, 200, 200, 010, 010, 033, 028, 010, 028, 033, 028, 024, 011, 012, 011, 010, 200, 200, 200, },
|
||||
{ 000, 200, 249, 200, 200, 200, 200, 010, 010, 028, 033, 010, 033, 028, 033, 024, 011, 012, 012, 010, 200, 200, 200, },
|
||||
{ 000, 200, 249, 200, 200, 200, 200, 010, 010, 028, 028, 010, 028, 028, 028, 024, 011, 012, 011, 010, 200, 200, 200, },
|
||||
{ 000, 200, 249, 200, 200, 200, 200, 010, 023, 024, 023, 024, 023, 024, 023, 011, 012, 012, 001, 010, 200, 200, 200, },
|
||||
{ 000, 200, 249, 200, 200, 200, 200, 200, 010, 010, 018, 010, 010, 010, 001, 011, 012, 001, 010, 200, 200, 200, 200, },
|
||||
{ 000, 200, 249, 200, 200, 200, 200, 010, 029, 035, 010, 010, 023, 018, 010, 010, 010, 010, 010, 200, 200, 200, 200, },
|
||||
{ 000, 200, 249, 200, 200, 200, 200, 010, 035, 010, 024, 033, 028, 024, 010, 024, 012, 010, 018, 010, 200, 200, 200, },
|
||||
{ 000, 200, 249, 200, 200, 200, 200, 010, 010, 024, 033, 028, 023, 018, 010, 024, 012, 010, 017, 018, 010, 200, 200, },
|
||||
{ 000, 200, 249, 200, 200, 200, 200, 200, 010, 010, 028, 024, 018, 010, 010, 010, 010, 010, 010, 010, 010, 200, 200, },
|
||||
{ 000, 200, 249, 200, 200, 200, 200, 200, 010, 018, 010, 010, 010, 018, 017, 018, 017, 010, 010, 035, 010, 200, 200, },
|
||||
{ 000, 200, 249, 200, 200, 200, 010, 010, 018, 028, 018, 017, 018, 018, 012, 033, 024, 010, 010, 010, 200, 200, 200, },
|
||||
{ 000, 200, 249, 200, 200, 010, 029, 010, 033, 028, 023, 010, 010, 010, 023, 028, 033, 024, 010, 200, 200, 200, 200, },
|
||||
{ 000, 200, 249, 200, 200, 010, 035, 035, 010, 023, 010, 010, 010, 010, 010, 024, 028, 010, 035, 010, 200, 200, 200, },
|
||||
{ 000, 200, 249, 200, 200, 200, 010, 035, 029, 010, 010, 010, 010, 010, 010, 010, 010, 010, 029, 010, 200, 200, 200, },
|
||||
{ 000, 200, 249, 200, 200, 200, 010, 010, 010, 010, 010, 010, 010, 010, 010, 010, 010, 029, 010, 010, 010, 200, 200, },
|
||||
{ 000, 200, 249, 200, 200, 200, 200, 010, 010, 010, 010, 010, 010, 010, 010, 010, 010, 010, 010, 010, 200, 200, 200, },
|
||||
{ 000, 200, 249, 200, 200, 200, 200, 200, 200, 010, 010, 010, 010, 010, 010, 010, 010, 010, 200, 200, 200, 200, 200, }
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
{ 000, 000, 000 },
|
||||
{ 032, 000, 000 },
|
||||
{ 000, 032, 000 },
|
||||
{ 032, 032, 000 },
|
||||
{ 000, 000, 032 },
|
||||
{ 032, 000, 032 },
|
||||
{ 000, 032, 032 },
|
||||
{ 048, 048, 048 },
|
||||
{ 048, 055, 048 },
|
||||
{ 041, 050, 060 },
|
||||
{ 000, 000, 000 },
|
||||
{ 042, 000, 000 },
|
||||
{ 053, 000, 000 },
|
||||
{ 000, 010, 000 },
|
||||
{ 021, 010, 000 },
|
||||
{ 032, 010, 000 },
|
||||
{ 042, 010, 000 },
|
||||
{ 053, 010, 000 },
|
||||
{ 063, 010, 000 },
|
||||
{ 000, 021, 000 },
|
||||
{ 021, 021, 000 },
|
||||
{ 032, 021, 000 },
|
||||
{ 042, 021, 000 },
|
||||
{ 053, 021, 000 },
|
||||
{ 063, 021, 000 },
|
||||
{ 021, 032, 000 },
|
||||
{ 042, 032, 000 },
|
||||
{ 053, 032, 000 },
|
||||
{ 063, 032, 000 },
|
||||
{ 000, 042, 000 },
|
||||
{ 021, 042, 000 },
|
||||
{ 032, 042, 000 },
|
||||
{ 042, 042, 000 },
|
||||
{ 053, 042, 000 },
|
||||
{ 063, 042, 000 },
|
||||
{ 000, 053, 000 },
|
||||
{ 021, 053, 000 },
|
||||
{ 032, 053, 000 },
|
||||
{ 042, 053, 000 },
|
||||
{ 053, 053, 000 },
|
||||
{ 063, 053, 000 },
|
||||
{ 021, 063, 000 },
|
||||
{ 032, 063, 000 },
|
||||
{ 042, 063, 000 },
|
||||
{ 053, 063, 000 },
|
||||
{ 021, 000, 021 },
|
||||
{ 032, 000, 021 },
|
||||
{ 042, 000, 021 },
|
||||
{ 053, 000, 021 },
|
||||
{ 063, 000, 021 },
|
||||
{ 000, 010, 021 },
|
||||
{ 021, 010, 021 },
|
||||
{ 032, 010, 021 },
|
||||
{ 042, 010, 021 },
|
||||
{ 053, 010, 021 },
|
||||
{ 063, 010, 021 },
|
||||
{ 000, 021, 021 },
|
||||
{ 021, 021, 021 },
|
||||
{ 032, 021, 021 },
|
||||
{ 042, 021, 021 },
|
||||
{ 053, 021, 021 },
|
||||
{ 063, 021, 021 },
|
||||
{ 000, 032, 021 },
|
||||
{ 021, 032, 021 },
|
||||
{ 032, 032, 021 },
|
||||
{ 042, 032, 021 },
|
||||
{ 053, 032, 021 },
|
||||
{ 063, 032, 021 },
|
||||
{ 000, 042, 021 },
|
||||
{ 021, 042, 021 },
|
||||
{ 032, 042, 021 },
|
||||
{ 042, 042, 021 },
|
||||
{ 053, 042, 021 },
|
||||
{ 063, 042, 021 },
|
||||
{ 000, 053, 021 },
|
||||
{ 021, 053, 021 },
|
||||
{ 032, 053, 021 },
|
||||
{ 042, 053, 021 },
|
||||
{ 053, 053, 021 },
|
||||
{ 063, 053, 021 },
|
||||
{ 000, 063, 021 },
|
||||
{ 021, 063, 021 },
|
||||
{ 032, 063, 021 },
|
||||
{ 042, 063, 021 },
|
||||
{ 053, 063, 021 },
|
||||
{ 063, 063, 021 },
|
||||
{ 021, 000, 032 },
|
||||
{ 042, 000, 032 },
|
||||
{ 053, 000, 032 },
|
||||
{ 063, 000, 032 },
|
||||
{ 000, 010, 032 },
|
||||
{ 021, 010, 032 },
|
||||
{ 032, 010, 032 },
|
||||
{ 042, 010, 032 },
|
||||
{ 053, 010, 032 },
|
||||
{ 063, 010, 032 },
|
||||
{ 000, 021, 032 },
|
||||
{ 021, 021, 032 },
|
||||
{ 032, 021, 032 },
|
||||
{ 042, 021, 032 },
|
||||
{ 053, 021, 032 },
|
||||
{ 063, 021, 032 },
|
||||
{ 021, 032, 032 },
|
||||
{ 042, 032, 032 },
|
||||
{ 053, 032, 032 },
|
||||
{ 063, 032, 032 },
|
||||
{ 000, 042, 032 },
|
||||
{ 021, 042, 032 },
|
||||
{ 032, 042, 032 },
|
||||
{ 042, 042, 032 },
|
||||
{ 053, 042, 032 },
|
||||
{ 063, 042, 032 },
|
||||
{ 000, 053, 032 },
|
||||
{ 021, 053, 032 },
|
||||
{ 032, 053, 032 },
|
||||
{ 042, 053, 032 },
|
||||
{ 053, 053, 032 },
|
||||
{ 063, 053, 032 },
|
||||
{ 000, 063, 032 },
|
||||
{ 021, 063, 032 },
|
||||
{ 032, 063, 032 },
|
||||
{ 042, 063, 032 },
|
||||
{ 053, 063, 032 },
|
||||
{ 063, 063, 032 },
|
||||
{ 000, 000, 042 },
|
||||
{ 021, 000, 042 },
|
||||
{ 032, 000, 042 },
|
||||
{ 042, 000, 042 },
|
||||
{ 053, 000, 042 },
|
||||
{ 063, 000, 042 },
|
||||
{ 000, 010, 042 },
|
||||
{ 021, 010, 042 },
|
||||
{ 032, 010, 042 },
|
||||
{ 042, 010, 042 },
|
||||
{ 053, 010, 042 },
|
||||
{ 063, 010, 042 },
|
||||
{ 000, 021, 042 },
|
||||
{ 021, 021, 042 },
|
||||
{ 032, 021, 042 },
|
||||
{ 042, 021, 042 },
|
||||
{ 053, 021, 042 },
|
||||
{ 063, 021, 042 },
|
||||
{ 000, 032, 042 },
|
||||
{ 021, 032, 042 },
|
||||
{ 032, 032, 042 },
|
||||
{ 042, 032, 042 },
|
||||
{ 053, 032, 042 },
|
||||
{ 063, 032, 042 },
|
||||
{ 000, 042, 042 },
|
||||
{ 021, 042, 042 },
|
||||
{ 032, 042, 042 },
|
||||
{ 042, 042, 042 },
|
||||
{ 053, 042, 042 },
|
||||
{ 063, 042, 042 },
|
||||
{ 000, 053, 042 },
|
||||
{ 021, 053, 042 },
|
||||
{ 032, 053, 042 },
|
||||
{ 042, 053, 042 },
|
||||
{ 053, 053, 042 },
|
||||
{ 063, 053, 042 },
|
||||
{ 000, 063, 042 },
|
||||
{ 021, 063, 042 },
|
||||
{ 032, 063, 042 },
|
||||
{ 042, 063, 042 },
|
||||
{ 053, 063, 042 },
|
||||
{ 063, 063, 042 },
|
||||
{ 000, 000, 053 },
|
||||
{ 021, 000, 053 },
|
||||
{ 032, 000, 053 },
|
||||
{ 042, 000, 053 },
|
||||
{ 053, 000, 053 },
|
||||
{ 063, 000, 053 },
|
||||
{ 000, 010, 053 },
|
||||
{ 021, 010, 053 },
|
||||
{ 032, 010, 053 },
|
||||
{ 042, 010, 053 },
|
||||
{ 053, 010, 053 },
|
||||
{ 063, 010, 053 },
|
||||
{ 000, 021, 053 },
|
||||
{ 021, 021, 053 },
|
||||
{ 032, 021, 053 },
|
||||
{ 042, 021, 053 },
|
||||
{ 053, 021, 053 },
|
||||
{ 063, 021, 053 },
|
||||
{ 000, 032, 053 },
|
||||
{ 021, 032, 053 },
|
||||
{ 032, 032, 053 },
|
||||
{ 042, 032, 053 },
|
||||
{ 053, 032, 053 },
|
||||
{ 063, 032, 053 },
|
||||
{ 000, 042, 053 },
|
||||
{ 021, 042, 053 },
|
||||
{ 032, 042, 053 },
|
||||
{ 042, 042, 053 },
|
||||
{ 053, 042, 053 },
|
||||
{ 063, 042, 053 },
|
||||
{ 000, 053, 053 },
|
||||
{ 021, 053, 053 },
|
||||
{ 032, 053, 053 },
|
||||
{ 042, 053, 053 },
|
||||
{ 053, 053, 053 },
|
||||
{ 063, 053, 053 },
|
||||
{ 000, 063, 053 },
|
||||
{ 021, 063, 053 },
|
||||
{ 032, 063, 053 },
|
||||
{ 042, 063, 053 },
|
||||
{ 053, 063, 053 },
|
||||
{ 063, 063, 053 },
|
||||
{ 021, 000, 063 },
|
||||
{ 032, 000, 063 },
|
||||
{ 042, 000, 063 },
|
||||
{ 053, 000, 063 },
|
||||
{ 000, 010, 063 },
|
||||
{ 021, 010, 063 },
|
||||
{ 032, 010, 063 },
|
||||
{ 042, 010, 063 },
|
||||
{ 053, 010, 063 },
|
||||
{ 063, 010, 063 },
|
||||
{ 000, 021, 063 },
|
||||
{ 021, 021, 063 },
|
||||
{ 032, 021, 063 },
|
||||
{ 042, 021, 063 },
|
||||
{ 053, 021, 063 },
|
||||
{ 063, 021, 063 },
|
||||
{ 000, 032, 063 },
|
||||
{ 021, 032, 063 },
|
||||
{ 032, 032, 063 },
|
||||
{ 042, 032, 063 },
|
||||
{ 053, 032, 063 },
|
||||
{ 063, 032, 063 },
|
||||
{ 000, 042, 063 },
|
||||
{ 021, 042, 063 },
|
||||
{ 032, 042, 063 },
|
||||
{ 042, 042, 063 },
|
||||
{ 053, 042, 063 },
|
||||
{ 063, 042, 063 },
|
||||
{ 000, 053, 063 },
|
||||
{ 021, 053, 063 },
|
||||
{ 032, 053, 063 },
|
||||
{ 042, 053, 063 },
|
||||
{ 053, 053, 063 },
|
||||
{ 063, 053, 063 },
|
||||
{ 021, 063, 063 },
|
||||
{ 032, 063, 063 },
|
||||
{ 042, 063, 063 },
|
||||
{ 053, 063, 063 },
|
||||
{ 063, 062, 060 },
|
||||
{ 040, 040, 041 },
|
||||
{ 032, 032, 032 },
|
||||
{ 063, 000, 000 },
|
||||
{ 000, 063, 000 },
|
||||
{ 063, 063, 000 },
|
||||
{ 000, 000, 063 },
|
||||
{ 063, 000, 063 },
|
||||
{ 000, 063, 063 },
|
||||
{ 063, 063, 063 },
|
190
PCX.CPP
Normal file
190
PCX.CPP
Normal file
@ -0,0 +1,190 @@
|
||||
#include <stdio.h>
|
||||
#include <conio.h>
|
||||
#include <graphics.h>
|
||||
|
||||
#define OK 0
|
||||
#define ERROR 1
|
||||
|
||||
//#define RES_X 320
|
||||
//#define RES_Y 200
|
||||
#define RES_X 73+1
|
||||
#define RES_Y 25
|
||||
|
||||
typedef unsigned char DacPalette256[256][3];
|
||||
DacPalette256 Palette256;
|
||||
|
||||
int CargaPaleta(char *file );
|
||||
|
||||
unsigned char Movs[273][411][1];
|
||||
|
||||
int MuestraImagen( char *file );
|
||||
void ProcesaPunto( int x, int y, char byte );
|
||||
void Mem2CPP(void);
|
||||
|
||||
void main( int argc, char *argv[] )
|
||||
{
|
||||
int gd=DETECT, gm;
|
||||
|
||||
initgraph( &gd, &gm, "c:\\program\\borlandc\\bgi" );
|
||||
|
||||
MuestraImagen( argv[1] );
|
||||
CargaPaleta( argv[1] );
|
||||
getch();
|
||||
Mem2CPP();
|
||||
|
||||
closegraph();
|
||||
}
|
||||
|
||||
void Mem2CPP(void)
|
||||
{
|
||||
FILE *out;
|
||||
int i, j, k;
|
||||
|
||||
if ( (out=fopen("foto.txt", "wb" ) ) != NULL )
|
||||
{
|
||||
for ( i = 0; i < 411; i ++ )
|
||||
{
|
||||
for ( j = 0; j < 273; j ++ )
|
||||
{
|
||||
fprintf( out, "%d", (int)Movs[j][i][0] );
|
||||
}
|
||||
fprintf( out, "\n" );
|
||||
}
|
||||
/*
|
||||
fprintf( out, "unsigned char Movs[23][23][3] = { \n");
|
||||
for ( k = 0; k < 3; k ++ )
|
||||
{
|
||||
fprintf( out, " {\n");
|
||||
for ( i = 0; i < 22; i++ )
|
||||
{
|
||||
fprintf( out, " { ");
|
||||
for ( j = 0; j < 23; j++ )
|
||||
fprintf( out, "%03d, ", (int)Movs[j][i][k] );
|
||||
fprintf( out, " }, \n");
|
||||
}
|
||||
i = 22;
|
||||
fprintf( out, " { ");
|
||||
for ( j = 0; j < 23; j++ )
|
||||
fprintf( out, "%03d, ", (int)Movs[j][i][k] );
|
||||
fprintf( out, " } \n");
|
||||
fprintf( out, " },\n");
|
||||
}
|
||||
fprintf( out, " };");
|
||||
|
||||
fprintf( out, "\n\n\n");
|
||||
for ( i = 0; i < 256; i++ )
|
||||
fprintf ( out, "{ %03d, %03d, %03d }, \n", Palette256[i][0], Palette256[i][1], Palette256[i][2] );
|
||||
*/
|
||||
fclose(out);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**************************************************************************\
|
||||
|* *|
|
||||
|* MuestraImagen *|
|
||||
|* *|
|
||||
|* Descripci¢n: *|
|
||||
|* Descomprime y copia a la pagina indicada un PCX *|
|
||||
|* *|
|
||||
|* Entradas: nombre de la imagen *|
|
||||
|* *|
|
||||
|* *|
|
||||
|* Salidas: OK Todo ha ido bien *|
|
||||
|* ERROR Algo va mal *|
|
||||
|* *|
|
||||
\**************************************************************************/
|
||||
int MuestraImagen( char *file )
|
||||
{
|
||||
int alto, ancho, contador;
|
||||
unsigned char byte;
|
||||
FILE *fp;
|
||||
|
||||
if ( (fp = fopen( file,"rb")) != NULL )
|
||||
{
|
||||
// Saltamos la cabecera
|
||||
fseek( fp, 128, SEEK_SET );
|
||||
|
||||
for(alto=0; alto<RES_Y; alto++)
|
||||
{
|
||||
for(ancho=0; ancho<RES_X; )
|
||||
{
|
||||
byte=getc(fp);
|
||||
if(byte<=0xC0)
|
||||
{
|
||||
// set_point (ancho, alto, byte);
|
||||
ProcesaPunto( ancho, alto, byte );
|
||||
ancho++;
|
||||
} else {
|
||||
contador=byte&0x3F; byte=getc(fp);
|
||||
for(; contador>0; contador--)
|
||||
{
|
||||
// set_point (ancho, alto, byte);
|
||||
ProcesaPunto( ancho, alto, byte );
|
||||
ancho++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
fclose(fp);
|
||||
} else return ERROR;
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
/**************************************************************************\
|
||||
|* *|
|
||||
|* CargaPaleta *|
|
||||
|* *|
|
||||
|* Descripci¢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
|
||||
Palette256[index][0] = getc(fp) >> 2;
|
||||
Palette256[index][1] = getc(fp) >> 2;
|
||||
Palette256[index][2] = getc(fp) >> 2;
|
||||
} // end for index
|
||||
|
||||
}
|
||||
|
||||
|
||||
fclose( fp );
|
||||
return OK;
|
||||
}
|
||||
|
||||
void ProcesaPunto( int x, int y, char byte )
|
||||
{
|
||||
Movs[x][y][0]=byte;
|
||||
/*
|
||||
if ( x > 0 && x < 23 && y > 0 && y < 23 )
|
||||
Movs[x][y][0] = byte;
|
||||
if ( x > 0 + 23 && x < 23 + 23 && y > 0 && y < 23 )
|
||||
Movs[x-23][y][1] = byte;
|
||||
if ( x > 0 + 23*2 && x < 23 + 23*2 && y > 0 && y < 23 )
|
||||
Movs[x-23*2][y][2] = byte;
|
||||
*/
|
||||
putpixel( x /*+ x*2*/, y /*+ y*2*/, byte );
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user