#ifndef VERSION_G2D #define VERSION_G2D "1.01" extern void initVideoMode( int, int, int ); extern void resetVideoMode( void ); #if (TRACE==1) || (TRACE==3) extern GsIMAGE* TloadImageFromMemoryAddress( u_long, char*, int ); extern void TfreeImage( GsIMAGE*, char*, int ); #define loadImageFromMemoryAddress( p1 ) TloadImageFromMemoryAddress( p1, __FILE__, __LINE__ ) #define freeImage( p1 ) TfreeImage( p1, __FILE__, __LINE__ ) #else extern GsIMAGE* loadImageFromMemoryAddress( u_long ); extern void freeImage( GsIMAGE* ); #endif extern void drawImageAt( GsIMAGE*, int, int, int ); extern void setBackground( int, int, int ); extern void noBackground( void ); extern u_int padRead( int ); #define LEFT 1 #define RIGHT 0 #define PADsquare (1<<15) #define PADcross (1<<14) #define PADcircle (1<<13) #define PADtriangle (1<<12) #define PADR1 (1<<11) #define PADL1 (1<<10) #define PADR2 (1<< 9) #define PADL2 (1<< 8) #define PADleft (1<< 7) #define PADdown (1<< 6) #define PADright (1<< 5) #define PADup (1<< 4) #define PADstart (1<< 3) #define PADselect (1<< 0) #define _4BITS 0 #define _8BITS 1 #define _16BITS 2 typedef struct { int type; int factor; GsIMAGE image; u_short tpage; u_short clut; }TextureInfo; extern TextureInfo* loadTexture( u_long ); extern void unloadTexture( u_long ); extern void traceMapTexture( void ); #if (TRACE==1) || (TRACE==3) extern GsBG* TcreateBGPicture( u_long, char*, int ); extern GsBG* TcreateBGMapPicture( u_long, int, int, u_short*, char*, int ); extern void TdisposeBGPicture( GsBG*, char*, int ); #define createBGPicture( p1 ) TcreateBGPicture( p1, __FILE__, __LINE__ ) #define createBGMapPicture( p1, p2, p3, p4 ) TcreateBGMapPicture( p1, p2, p3, p4, __FILE__, __LINE__ ) #define disposeBGPicture( p1 ) TdisposeBGPicture( p1, __FILE__, __LINE__ ) #else extern GsBG* createBGPicture( u_long ); extern GsBG* createBGMapPicture( u_long, int, int, u_short* ); extern void disposeBGPicture( GsBG* ); #endif #define FRONT 1 #define BACK 0 #if (TRACE==1) || (TRACE==3) extern GsBG* TaddBGBitmap( u_long, long, long, int, int, int, char*, int ); extern GsBG* TaddBG( GsBG*, long, long, int, int, int, char*, int ); extern void TremoveBG( GsBG*, char*, int ); extern void TremoveAllBGBitmap( char*, int ); #define addBGBitmap( p1, p2, p3, p4, p5, p6 ) TaddBGBitmap( p1, p2, p3, p4, p5, p6, __FILE__, __LINE__ ) #define addBG( p1, p2, p3, p4, p5, p6 ) TaddBG( p1, p2, p3, p4, p5, p6, __FILE__, __LINE__ ) #define removeBG( p1 ) TremoveBG( p1, __FILE__, __LINE__ ) #define removeAllBGBitmap() TremoveAllBGBitmap( __FILE__, __LINE__ ) #else extern GsBG* addBGBitmap( u_long, long, long, int, int, int ); extern GsBG* addBG( GsBG*, long, long, int, int, int ); extern void removeBG( GsBG* ); extern void removeAllBGBitmap( void ); #endif extern void wizardBG( int ); extern void moveBGtoLower( GsBG* ); extern void moveBGtoUpper( GsBG* ); #define CIRCLE (u_long)0x10000 #define RAYON(x) x #define ELIPSE (u_long)0x20000 #define A_B(x,y) ((x+128)<<8|(y+128)) #define RAND(mi,ma) (u_long)0x40000|A_B(mi,ma) #define MANUAL 0 typedef struct { int w; int h; TextureInfo texture; GsSPRITE sprite; int mx, my; }Sprite; #if (TRACE==1) || (TRACE==3) extern Sprite* TaddSprite( int, int, u_long, char*, int ); extern void TremoveSprite( Sprite*, char*, int ); extern void TremoveAllSprite( char*, int ); #define addSprite( p1, p2, p3 ) TaddSprite( p1, p2, p3, __FILE__, __LINE__ ) #define removeSprite( p1 ) TremoveSprite( p1, __FILE__, __LINE__ ) #define removeAllSprite() TremoveAllSprite( __FILE__, __LINE__ ) #else extern Sprite* addSprite( int, int, u_long ); extern void removeSprite( Sprite* ); extern void removeAllSprite( void ); #endif extern void moveSpritetoLower( Sprite* ); extern void moveSpritetoUpper( Sprite* ); #define enableSprite( sp, active, pos ) \ sp->sprite.attribute = (active)?(sp->sprite.attribute & ~(1<sprite.attribute|(1<sprite.attribute & (1<<31)) #define enableRotationScaling( sp, active ) enableSprite( sp, active, 27 ) #define enableBrightness( sp, active ) enableSprite( sp, active, 6 ) #define enableSemiTransparency( sp, active ) enableSprite( sp, !active, 30 ) #define changeSpriteLocation( sp, xv, yv ) sp->sprite.x = xv, sp->sprite.y = yv #define changeSpriteScale( sp, scx, scy ) sp->sprite.scalex = (scx)*ONE/10, sp->sprite.scaley = (scy)*ONE/10 #define changeSpriteRotation( sp, angle ) sp->sprite.rotate = ((angle+360)%360)*ONE #define changeSpriteFullBrightness( sp, level ) sp->sprite.r = sp->sprite.g = sp->sprite.b = level #define changeSpriteBrightness( sp, lr, lg, lb ) sp->sprite.r = lr, sp->sprite.g = lg, sp->sprite.b = lb extern void changeSpritePattern( Sprite*, int ); extern void changeSpriteTexture( Sprite*, u_long ); extern int getSpritePattern( Sprite* ); extern u_long getSpriteTexture( Sprite* ); extern void wizardSprite( void ); extern void setFrame( int, int, int, int, u_char, u_char, u_char ); extern void noFrame( void ); extern void wizardFrame( void ); extern void wizard( void ); #define LAYOUT0 0 #define LAYOUT1 1 #define LAYOUT2 2 #define LAYOUT3 3 #define LAYOUT4 4 #define LAYOUT5 5 #define LAYOUT6 6 extern void putElementsOn( int, GsOT* ); extern int changeStep( int ); extern int performStep( int, u_int, u_int ); extern void gamePlay( int, int, int ); typedef struct { int x, y; }Point; typedef struct { int height; int baseLine; int spaceWidth; int interChar; int interLine; TextureInfo texture; struct { int x, y; int width; }chr[96]; }Font; typedef GsSPRITE* Text; #if (TRACE==1) || (TRACE==3) extern Font* TcreateFont( u_long, int[], char*, int ); extern void TreleaseFont( Font*, char*, int ); #define createFont( p1, p2 ) TcreateFont( p1, p2, __FILE__, __LINE__ ) #define releaseFont( p1 ) TreleaseFont( p1, __FILE__, __LINE__ ) #else extern Font* createFont( u_long, int[] ); extern void releaseFont( Font* ); #endif #if (TRACE==1) || (TRACE==3) extern Text TaddText( Font*, u_char*, int, int, int, char*, int ); extern Text TchangeText( Text, u_char*, char*, int ); extern void TremoveText( Text, char*, int ); #define addText( p1, p2, p3, p4, p5 ) TaddText( p1, p2, p3, p4, p5, __FILE__, __LINE__ ) #define changeText( p1, p2 ) TchangeText( p1, p2, __FILE__, __LINE__ ) #define removeText( p1 ) TremoveText( p1, __FILE__, __LINE__ ) #else extern Text addText( Font*, u_char*, int, int, int ); extern Text changeText( Text, u_char* ); extern void removeText( Text ); #endif extern void wizardText( int ); extern int getTextWidth( Text ); extern int getTextHeight( Text ); extern void scrollText( Text, int, int ); extern void setTextLocation( Text, int, int ); extern void applyChangeToText( Text ); #define enableText( sprite, active, pos ) \ sprite->attribute = (active)?(sprite->attribute & ~(1<attribute|(1<attribute & (1<<31)) #define enableRotationScalingText( sp, active ) enableText( sp, active, 27 ) #define enableBrightnessText( sp, active ) enableText( sp, active, 6 ) #define enableSemiTransparencyText( sp, active ) enableText( sp, !active, 30 ) #define changeTextScale( sp, scx, scy ) sp->scalex = (scx)*ONE, sp->scaley = (scy)*ONE, applyChangeToText( sp ) #define changeTextRotation( sp, angle ) sp->rotate = ((angle+360)%360)*ONE, applyChangeToText( sp ) #define changeTextFullBrightness( sp, level ) sp->r = sp->g = sp->b = level, applyChangeToText( sp ) #define changeTextBrightness( sp, lr, lg, lb ) sp->r = lr, sp->g = lg, sp->b = lb, applyChangeToText( sp ) extern int automaticMotion; #define setAutomaticMotion( x ) automaticMotion = x #endif