//------------------------------------------------------------------------------ // File: gfx.h // Author: George Bain, // Date: May 14, 1997 // Description: Defines and structure related material for gfx // Copyright (C) 1997 George Bain, All Rights Reserved //------------------------------------------------------------------------------ #ifndef _GFX_H #define _GFX_H //-------------------------------------------------------------------------- // D E F I N E S //-------------------------------------------------------------------------- // display area #define SCREEN_WIDTH 320 #define SCREEN_HEIGHT 240 // data arangment #define SEQ_ONE_ADDR 0x80110000 #define VH_ADDR 0x80090000 #define VB_ADDR 0x800A0000 // sound #define MVOL 127 // main volume level #define SVOL 127 // SEQ volume level // other #define OT_LENGTH 1 // ordering table #define PACKETMAX (1000) // Graphics Processing Unit packet space #define PACKETMAX2 (PACKETMAX*24) #define DFILE 2 // sound related files to load from CD #define DITHER_OFF 0 // dither on when drawing #define VRAM_16 0 // frame buffer mode -> 16-bit, // must use 16-bit since we are using GsDrawOT() // game modes #define MODE_TITLE 0 #define MODE_STORY 1 #define MODE_OPTIONS 2 #define MODE_GAME 3 #define MODE_BONUS 4 #define MODE_GAME_OVER 5 #define LEVEL_ONE 6 #define LEVEL_TWO 7 // define explosions #define NUM_EXPLOSIONS 5 #define EXPLOSION_ALIVE 1 #define EXPLOSION_DEAD 0 #define EXPLOSION_WIDTH 19 #define EXPLOSION_HEIGHT 19 #define EXPLOSION_SPEED 2 // missile defines #define ENEMY_MISSILE 0 #define PLAYER_MISSILE 1 #define MISSILE_DEAD 0 #define MISSILE_ALIVE 1 #define NUM_MISSILES 20 #define RED_MISSILE 128 #define MISSILE_SPEED 2 // rocket defines #define ENEMY_ROCKET 0 #define PLAYER_ROCKET 1 #define ROCKET_DEAD 0 #define ROCKET_ALIVE 1 #define NUM_ROCKETS 4 #define ROCKET_WIDTH 24 #define ROCKET_HEIGHT 5 #define ROCKET_SPEED 2 // enemy defines #define NUM_ENEMIES 4 #define ENEMY_SPEED 1 #define ENEMY_DEAD 0 #define ENEMY_ALIVE 1 #define ENEMY_DYING 2 #define ENEMY_WIDTH 25 #define ENEMY_HEIGHT 19 // boss one defines #define BOSS_SPEED 1 #define BOSS_ENERGY 7000 #define BOSS_DEAD 0 #define BOSS_ALIVE 1 #define BOSS_DYING 2 #define BOSS_DEACTIVE 3 #define BOSS_TIME 5 #define BOSS_WIDTH 48 #define BOSS_HEIGHT 31 #define BOSS_LEFT 8 #define BOSS_RIGHT 9 // power up defines #define NUM_POWERUPS 3 #define POWERUP_SPEED 1 #define POWERUP_DEAD 0 #define POWERUP_ALIVE 1 #define POWERUP_DYING 2 #define POWERUP_WIDTH 19 #define POWERUP_HEIGHT 17 #define POWERUP_RIGHT 2 #define POWERUP_LEFT 3 // player defines #define PLAYER_SPEED 2 #define PLAYER_LIVES 2 #define PLAYER_ENERGY 3000 #define DIR_UP 0 #define DIR_DOWN 1 #define DIR_NORM 2 #define PLAYER_DEAD 0 #define PLAYER_ALIVE 1 #define PLAYER_DYING 2 #define PLAYER_WIDTH 25 #define PLAYER_HEIGHT 19 // game defines #define MAX_SPRITE_FRAMES 24 #define LEVELONE 1 #define LEVELTWO 2 #define ANIMATION_SPEED 11 #define STATUS_SCREEN_Y (SCREEN_HEIGHT-20) #define LIFE_BAR_X 190 #define LIFE_BAR_Y (SCREEN_HEIGHT-20) #define LIFE_BAR_HEIGHT 10 #define NUM_STARS 225 //------------------------------------------------------------------------------ // S T R U C T U R E S //------------------------------------------------------------------------------ // data structure for a object typedef struct object_type { GsSPRITE sprite; // sprite u_short dir; // direction of the object u_short anim_clock; // animation clock u_short anim_speed; // animation speed u_short curr_frame; // current frame being displayed u_short num_frames; // total number of frames u_short state; // state of the object u_short motion_speed; // speed of object }object_handler, *object_ptr; // data structure for missiles typedef struct particle_type { GsBOXF rect; // the particle size int xv, yv; // velocity of missle int state; // the state of the missile int tag; // player or enemy missle int counter; // used for counting int plane; // the plane particle is on }particle_handler, *particle_ptr; // data structure for game typedef struct game_type { int game_over; // game over flag short player_energy; // players energy short player_lives; // players lives short boss_energy; // boss energy int money; // money int level_mode; // the current level int bonus; // bonus points int boss_dead; // boss dead counter int game_mode; // display title screen mode int scroll_counter; // scroll tracker }game_handler, *game_ptr; //-------------------------------------------------------------------------- // G L O B A L S //-------------------------------------------------------------------------- extern int output_buffer_index; // which buffer is active extern GsOT world_ordering_table[2]; // ordering table headers extern int cos_look[SCREEN_WIDTH]; extern object_handler red_enemy[NUM_ENEMIES], blue_enemy[NUM_ENEMIES]; extern object_handler rockets[NUM_ROCKETS]; extern object_handler explosion[NUM_EXPLOSIONS]; extern object_handler power_up[NUM_POWERUPS]; extern object_handler player; extern object_handler boss_one; extern object_handler status; extern game_handler game_info; //------------------------------------------------------------------------------ // P R O T O T Y P E S //------------------------------------------------------------------------------ void GetFrame( object_ptr sprite, short sprite_w, short sprite_h, short grab_x, short grab_y, int sprite_frame ); short RandLocation( void ); void CreateLookup( void ); void InitSprite( object_ptr object, unsigned long attribute, short x, short y, unsigned short w, unsigned short h, unsigned short tpage, unsigned char u, unsigned char v, short cx, short cy, unsigned char r, unsigned char g, unsigned char b, short mx, short my, short scalex, short scaley, long rotate ); void InitParticle( particle_ptr particle, short x, short y, u_short w, u_short h, unsigned char r, unsigned char g, unsigned char b, int xv, int yv, int state, int tag, int counter); int MissileCollision( particle_ptr missile, object_ptr sprite); int SpriteCollision( object_ptr sprite, object_ptr sprite_two); #endif //-----------------------------------EOF----------------------------------------