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;
|
||||||
|
}
|
BIN
DEMO.EXE
Normal file
BIN
DEMO.EXE
Normal file
Binary file not shown.
BIN
DEMO.FNT
Normal file
BIN
DEMO.FNT
Normal file
Binary file not shown.
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, }
|
||||||
|
}
|
||||||
|
};
|
BIN
DEMO.PAL
Normal file
BIN
DEMO.PAL
Normal file
Binary file not shown.
BIN
DEMO.PCX
Normal file
BIN
DEMO.PCX
Normal file
Binary file not shown.
BIN
DEMO.PRJ
Normal file
BIN
DEMO.PRJ
Normal file
Binary file not shown.
BIN
DEMO1.PCX
Normal file
BIN
DEMO1.PCX
Normal file
Binary file not shown.
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 );
|
||||||
|
}
|
BIN
FOTO.EXE
Normal file
BIN
FOTO.EXE
Normal file
Binary file not shown.
0
FOTO1.TXT
Normal file
0
FOTO1.TXT
Normal file
0
FOTO2.TXT
Normal file
0
FOTO2.TXT
Normal file
0
FOTO3.TXT
Normal file
0
FOTO3.TXT
Normal file
0
FOTO4.TXT
Normal file
0
FOTO4.TXT
Normal file
BIN
MODEX.OBJ
Normal file
BIN
MODEX.OBJ
Normal file
Binary file not shown.
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 },
|
BIN
PAT0.PCX
Normal file
BIN
PAT0.PCX
Normal file
Binary file not shown.
BIN
PAT1.PCX
Normal file
BIN
PAT1.PCX
Normal file
Binary file not shown.
BIN
PAT2.PCX
Normal file
BIN
PAT2.PCX
Normal file
Binary file not shown.
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 );
|
||||||
|
}
|
BIN
PCX.EXE
Normal file
BIN
PCX.EXE
Normal file
Binary file not shown.
4
README.md
Normal file
4
README.md
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
#DEMO
|
||||||
|
*09/03/1997*
|
||||||
|
ToDo: wwtcf?
|
||||||
|

|
Loading…
x
Reference in New Issue
Block a user