//------------------------------------------------- // File: ggsm_arcade_structs.sch // Purpose: structs required by the system //------------------------------------------------- //------------------------------------------------- // INCLUDES //------------------------------------------------- USING "arcade_cabinet_minigame_common.sch" USING "arcade_games_leaderboard.sch" USING "arcade_games_help_text.sch" USING "arcade_games_sound.sch" USING "script_maths.sch" //------------------------------------------------- // CONSTANTS //------------------------------------------------- // Invalid Constants CONST_INT GGSM_INVALID_ENTITY 21 CONST_INT GGSM_INVALID_FX_SPRITE -1 CONST_INT GGSM_INVALID_GROUP_ID -1 CONST_INT GGSM_INVALID_PATH -1 CONST_INT GGSM_INVALID_PROJECTILE -1 CONST_INT GGSM_INVALID_BOSS_CONTROLLER -1 // Max Size Constants CONST_INT GGSM_MAX_ACTIVE_SPWEAPONS 2 CONST_INT GGSM_MAX_BG_SPRITE 6 CONST_INT GGSM_MAX_ENEMIES 14 // no more than 32 or the formation stuff will break CONST_INT GGSM_MAX_ENTITIES 20 CONST_INT GGSM_MAX_ENTITY_GROUPS 6 CONST_INT GGSM_MAX_FLOOR_BG 5 CONST_INT GGSM_MAX_FX_SPRITES 20 CONST_INT GGSM_MAX_PARALLAX_PANELS 4 CONST_INT GGSM_MAX_PATHS 8 CONST_INT GGSM_MAX_PATH_POINTS 6 CONST_INT GGSM_MAX_PATH_LIBRARY 10 CONST_INT GGSM_MAX_PLAYERS 3 // 0 is player, 1 is decoy, 2 is shield CONST_INT GGSM_MAX_POWER_UPS 2 CONST_INT GGSM_MAX_PROJECTILES 50 CONST_INT GGSM_MAX_SPAWN_DATA 59 CONST_INT GGSM_MAX_STAR_BG 3 CONST_INT GGSM_MAX_TEXDICT 13 CONST_INT GGSM_MAX_TILE_POLYPOINTS 6 CONST_INT GGSM_MAX_TILES_IN_TILE_SET 12 CONST_INT GGSM_MAX_TILEMAP_SIZE_X 60 CONST_INT GGSM_MAX_TILEMAP_SIZE_Y 5 CONST_INT GGSM_MAX_WEAPON_SLOTS 2 // Screen Constants CONST_FLOAT cfBASE_SAFE_AREA_WIDTH 1264.0 CONST_FLOAT cfBASE_SAFE_AREA_HEIGHT 930.0 CONST_FLOAT cfBASE_SCREEN_HALF_WIDTH 960.0 CONST_FLOAT cfBASE_SCREEN_HALF_HEIGHT 540.0 // Overscan Constants CONST_FLOAT GGSM_PX_OVERSCAN_MIN_X 298.0 CONST_FLOAT GGSM_PX_OVERSCAN_MAX_X 1692.0 CONST_FLOAT GGSM_PX_OVERSCAN_MIN_Y 66.0 CONST_FLOAT GGSM_PX_OVERSCAN_MAX_Y 1028.0 CONST_FLOAT GGSM_PX_OVERSCAN_WIDTH 1334.0 CONST_FLOAT GGSM_PX_OVERSCAN_HEIGHT 962.0 // Math Constants CONST_FLOAT GGSM_EPSILON 0.000000001 CONST_FLOAT GGSM_PI 3.141592654 CONST_FLOAT GGSM_PROJECTILE_ROTHACK 90.0 // Chain Constants CONST_INT GGSM_CHAIN_GRACE_TIME_MS 1000 CONST_FLOAT GGSM_CHAIN_REDUCE_RATE_PER_SECOND 10.0 CONST_INT GGSM_CHAIN_MAX 25 // Damage Constants CONST_INT GGSM_PLAYER_INITIAL_INV_TIME 2500 CONST_INT GGSM_PLAYER_INV_TIME 1000 CONST_INT GGSM_ENTITY_INV_TIME 24 CONST_INT GGSM_BOSS_INV_TIME 96 CONST_INT GGSM_MAX_ENTITY_BG_COLLISIONPOINTS 4 CONST_INT GGSM_MAX_PLAYER_HP 4 CONST_INT GGSM_PLAYER_DAMAGE_PER_ENEMY_COLLISION 3 CONST_INT GGSM_BASE_ENEMY_HP 2 // Sector Constants CONST_INT GGSM_SECTOR_EARTH 0 CONST_INT GGSM_SECTOR_ASTEROID_BELT 1 CONST_INT GGSM_SECTOR_PINK_RING 2 CONST_INT GGSM_SECTOR_YELLOW_CLAM 3 CONST_INT GGSM_SECTOR_DOUGHBALL 4 CONST_INT GGSM_SECTOR_BANANASTAR 5 CONST_INT GGSM_SECTOR_BOSSRUSH 6 CONST_INT GGSM_SECTOR_BOSS_TEST 7 CONST_INT GGSM_SECTOR_FIRST GGSM_SECTOR_ASTEROID_BELT CONST_INT GGSM_SECTOR_MAX 5 // Tilemap Constants CONST_INT GGSM_TILE_MAP_ENTRY_BIT_WIDTH 8 CONST_INT GGSM_TILE_BIT_H_FLIP 6 CONST_INT GGSM_TILE_BIT_Y_FLIP 7 CONST_INT GGSM_TILEROW_ARRAY_SIZE ((GGSM_MAX_TILEMAP_SIZE_X * 32) / GGSM_TILE_MAP_ENTRY_BIT_WIDTH) // Path Constants CONST_INT GGSM_PATH_POINT_ARRAY_SIZE (GGSM_MAX_PATH_POINTS / 2) CONST_INT GGSM_PATH_GRID_SEPERATION 64 CONST_INT GGSM_PATH_BIT_WIDTH 16 CONST_INT GGSM_PATH_X_POS_BIT_START 0 CONST_INT GGSM_PATH_X_POS_BIT_END 5 CONST_INT GGSM_PATH_Y_POS_BIT_START 6 CONST_INT GGSM_PATH_Y_POS_BIT_END 12 // Points Constants CONST_INT GGSM_SECTOR_CLEAR_BONUS 50000 CONST_INT GGSM_NO_MISS_CLEAR_BONUS 200000 CONST_INT GGSM_NO_DAMAGE_CLEAR_BONUS 300000 CONST_INT GGSM_TAKEDOWN_BONUS 100000 CONST_INT GGSM_BONUS_COUNT_RATE 10000 CONST_INT GGSM_POINTS_FOR_FULL_HEALTH 50000 CONST_INT GGSM_POINTS_PER_LIFE_ALL_CLEAR 50000 CONST_INT GGSM_KILLS_NEEDED_FOR_NUKE_TSHIRT 6 CONST_INT GGSM_KILLS_NEEDED_FOR_KILL_STREAK 5 CONST_FLOAT GGSM_TIME_FOR_KILL_STREAK 2.0 // Hud Constants CONST_INT GGSM_HUD_MAX_NUM_LENGTH 10 CONST_FLOAT GGSM_PX_HUD_LIFE_ICON_SIZE 32.0 CONST_FLOAT GGSM_PX_HUD_MIN_X 425.0 CONST_FLOAT GGSM_PX_HUD_MAX_X 1490.0 CONST_FLOAT GGSM_PX_HUD_MIN_Y 95.0 CONST_FLOAT GGSM_PX_HUD_MAX_Y 995.0 CONST_FLOAT GGSM_PX_HUD_HEALTH_BAR_WIDTH 230.0 CONST_FLOAT GGSM_PX_HUD_HEALTH_BAR_HEIGHT 25.0 CONST_FLOAT GGSM_PX_HUD_WEAPON_BOX_SIZE 64.0 CONST_FLOAT GGSM_PX_HUD_MINIMAP_X 1170.0 CONST_FLOAT GGSM_PX_HUD_MINIMAP_Y 670.0 CONST_FLOAT GGSM_PX_HUD_MINIMAP_WIDTH 350.0 CONST_FLOAT GGSM_PX_HUD_MINIMAP_HEIGHT 196.0 CONST_FLOAT GGSM_PX_HUD_THIN_CHAR_WIDTH 12.0 CONST_FLOAT GGSM_PX_HUD_CHAR_WIDTH 28.0 CONST_FLOAT GGSM_PX_HUD_CHAR_HEIGHT 52.0 CONST_FLOAT GGSM_PX_HUD_SCORE_Y 95.0 CONST_FLOAT GGSM_PX_BOSS_HP_BAR_LENGTH 1040.0 CONST_FLOAT GGSM_PX_BOSS_HP_BAR_HEIGHT 25.0 CONST_FLOAT GGSM_PX_BOSS_HP_BAR_X_POS 480.0 CONST_FLOAT GGSM_PX_BOSS_HP_BAR_Y_POS 940.0 CONST_FLOAT GGSM_PX_BOSS_BAR_SEPERATION 35.0 // Dialog Constants CONST_INT GGSM_DIALOG_MAX_SLIDEIN 700 CONST_INT GGSM_DIALOG_SLIDEIN_RATE 30 CONST_INT GGSM_DIALOG_READ_TIME 4000 // Weapon Constants CONST_INT GGSM_NUM_POWER_UPS 15 CONST_FLOAT GGSM_POWER_UP_SPEED 200.0 CONST_FLOAT GGSM_DECOY_ACTIVE_TIME 10.0 CONST_FLOAT GGSM_REPLUSE_ACTIVE_TIME 20.0 CONST_FLOAT GGSM_TEMPORAL_ACTIVE_TIME 12.0 CONST_FLOAT GGSM_BOMB_EXP_ACTIVE_TIME 2.0 CONST_FLOAT GGSM_TEMPORAL_TIME_SCALE 0.25 CONST_INT GGSM_WEAPON_SLOT_SPECIAL 1 CONST_INT GGSM_WEAPON_SLOT_ALT 2 CONST_INT GGSM_WEAPON_SLOT_DEFENSE 0 // Boss Contants CONST_INT GGSM_MAX_BOSS_CONTROLLERS 1 CONST_INT GGSM_MAX_BOSS_LIST_ARRAY_SIZE 2 CONST_INT GGSM_BOSS_LIST_BIT_WIDTH 8 //CONST_INT GGSM_MAX_BOSS_PARTS ((32 * GGSM_MAX_BOSS_LIST_ARRAY_SIZE) / GGSM_BOSS_LIST_BIT_WIDTH) CONST_INT GGSM_MAX_BOSS_PARTS 8 // Boss Section Constants CONST_INT GGSM_BOSS_SECTION_DR_DANK_TOP 0 CONST_INT GGSM_BOSS_SECTION_DR_DANK_MIDDLE 1 CONST_INT GGSM_BOSS_SECTION_DR_DANK_BOTTOM 2 CONST_INT GGSM_BOSS_SECTION_DR_DANK_ROCKET_L1 3 CONST_INT GGSM_BOSS_SECTION_DR_DANK_ROCKET_L2 4 CONST_INT GGSM_BOSS_SECTION_DR_DANK_ROCKET_R1 5 CONST_INT GGSM_BOSS_SECTION_DR_DANK_ROCKET_R2 6 CONST_INT GGSM_BOSS_SECTION_GRANANA 0 CONST_INT GGSM_BOSS_SECTION_GRANANA_HAIR 1 CONST_INT GGSM_BOSS_SECTION_GRANANA_GLASSES 2 CONST_INT GGSM_BOSS_SECTION_MARINE 0 CONST_INT GGSM_BOSS_SECTION_MARINE_LAUNCHER 1 CONST_INT GGSM_BOSS_SECTION_BREAD_FACE 0 CONST_INT GGSM_BOSS_SECTION_BREAD_BASE_LEFT 1 CONST_INT GGSM_BOSS_SECTION_BREAD_TOP_LEFT 2 CONST_INT GGSM_BOSS_SECTION_BREAD_TOP_RIGHT 3 CONST_INT GGSM_BOSS_SECTION_BREAD_BASE_RIGHT 4 CONST_INT GGSM_BOSS_SECTION_BREAD_BROWS 5 CONST_INT GGSM_BOSS_SECTION_SMOOTHIE 0 // Explosion Constants CONST_FLOAT GGSM_UBER_BOSS_EXPLOSION_TIME 7.0 CONST_FLOAT GGSM_BOSS_EXPLOSION_TIME 5.0 CONST_FLOAT GGSM_SUB_BOSS_EXPLOSION_TIME 3.0 CONST_FLOAT GGSM_PLAYER_EXPLOSION_TIME 1.0 CONST_FLOAT GGSM_SP_ENEMY_EXPLOSION_TIME 0.5 CONST_FLOAT GGSM_STANDARD_EXPLOSION_TIME 0.0 // Story Constants CONST_FLOAT GGSM_STORY_MIN_Y_POS -750.0 CONST_FLOAT GGSM_STORY_MAX_Y_POS 1038.0 // Sector Map CONST_FLOAT GGSM_PX_SECTOR_MAP_MIN_X 590.0 //670.0 CONST_FLOAT GGSM_PX_SECTOR_MAP_MIN_Y 300.0 //300.0 CONST_FLOAT GGSM_PX_SECTOR_MAP_X_SPREAD 370.0 //290.0 CONST_FLOAT GGSM_PX_SECTOR_MAP_Y_SPREAD 360.0 //300.0 CONST_INT GGSM_EASY_ENEMIES 0 CONST_INT GGSM_NO_INTRO 0 CONST_FLOAT GGSM_SCROLL_TIME_PER_FRAME 0.034 //------------------------------------------------- // DEBUG CONSTANTS //------------------------------------------------- #IF IS_DEBUG_BUILD CONST_INT GGSM_ENTITY_EDITOR_ACTIVE 0 CONST_INT GGSM_SPAWN_EDITOR_ACTIVE 0 CONST_INT GGSM_TILEMAP_EDITOR_ACTIVE 0 CONST_INT GGSM_POWER_UP_SELECTOR_ACTIVE 0 CONST_INT GGSM_DEBUG_TSHIRT_HELP 1 CONST_INT GGSM_SOUND_TEST 0 CONST_INT GGSM_CHALLENGE_DEBUG 1 // Entity Editor Constants CONST_INT GGSM_ENTITY_EDITOR_OPTION_DATA_SELECT 0 CONST_INT GGSM_ENTITY_EDITOR_OPTION_POINT_EDIT 1 CONST_INT GGSM_ENTITY_EDITOR_OPTION_RADIUS_SELECT 2 CONST_INT GGSM_ENTITY_EDITOR_OPTION_GUNPOS_SELECT 3 CONST_INT GGSM_ENTITY_EDITOR_OPTION_MAX 4 // Spawn Editor Constants CONST_INT GGSM_SPAWN_EDITOR_OPTION_DATA_SELECT 0 CONST_INT GGSM_SPAWN_EDITOR_OPTION_FORMATION_SELECT 1 CONST_INT GGSM_SPAWN_EDITOR_OPTION_ENTITY_SELECT 2 CONST_INT GGSM_SPAWN_EDITOR_OPTION_MOVEMENT_SELECT 3 CONST_INT GGSM_SPAWN_EDITOR_OPTION_WEAPON_SELECT 4 CONST_INT GGSM_SPAWN_EDITOR_OPTION_UNITCOUNT_SELECT 5 CONST_INT GGSM_SPAWN_EDITOR_OPTION_PATH_SELECT 6 CONST_INT GGSM_SPAWN_EDITOR_OPTION_XSPACE_SELECT 7 CONST_INT GGSM_SPAWN_EDITOR_OPTION_YSPACE_SELECT 8 CONST_INT GGSM_SPAWN_EDITOR_OPTION_FORMATION_SHIFT 9 CONST_INT GGSM_SPAWN_EDITOR_OPTION_MAX 10 // Map Editor Constants CONST_INT GGSM_TILEMAP_EDITOR_OPTION_TILE_SELECT 0 CONST_INT GGSM_TILEMAP_EDITOR_OPTION_FLIP_SELECT 1 CONST_INT GGSM_TILEMAP_EDITOR_OPTION_MAX_X_SELECT 2 CONST_INT GGSM_TILEMAP_EDITOR_OPTION_MAX_Y_SELECT 3 CONST_INT GGSM_TILEMAP_EDITOR_OPTION_EDIT_MAP_SELECT 4 CONST_INT GGSM_TILEMAP_EDITOR_OPTION_MAX 5 #ENDIF //------------------------------------------------- // ENUMS //------------------------------------------------- ENUM GGSM_ANIM_BIT GGSM_ANIM_BIT_NONE = 0, GGSM_ANIM_BIT_LOOP = BIT0, GGSM_ANIM_BIT_PING_PONG = BIT1, GGSM_ANIM_BIT_DESTROY_AT_END = BIT2 ENDENUM ENUM GGSM_BOSS_TYPE GGSM_BOSS_NONE, GGSM_BOSS_BREAD, GGSM_BOSS_DR_DANK, GGSM_BOSS_GRANANA, GGSM_BOSS_MARINE, GGSM_BOSS_SMOOTHIE, NUM_GGSM_BOSS_TYPE ENDENUM ENUM GGSM_BOSS_STATE GGSM_BOSS_STATE_NONE, GGSM_BOSS_STATE_LOADING, GGSM_BOSS_STATE_CREATE, GGSM_BOSS_STATE_ARRIVE, GGSM_BOSS_STATE_ACTIVE, GGSM_BOSS_STATE_PATTERN_A, GGSM_BOSS_STATE_PATTERN_B, GGSM_BOSS_STATE_PATTERN_C, GGSM_BOSS_STATE_PATTERN_D, GGSM_BOSS_STATE_PATTERN_E, GGSM_BOSS_STATE_PLAYER_DEAD, GGSM_BOSS_STATE_DEAD, GGSM_BOSS_STATE_DONE, NUM_GGSM_BOSS_STATE ENDENUM ENUM GGSM_CHALLENGE_BIT GGSM_CHALLENGE_BIT_NONE = 0, GGSM_CHALLENGE_BIT_APE_ESCAPE = BIT0, GGSM_CHALLENGE_BIT_MONKEY_MIND = BIT1, GGSM_CHALLENGE_BIT_ASTROCHIMP_B = BIT2, GGSM_CHALLENGE_BIT_ASTROCHIMP_S = BIT3, GGSM_CHALLENGE_BIT_ASTROCHIMP_G = BIT4, GGSM_CHALLENGE_BIT_ASTROCHIMP_P = BIT5 ENDENUM ENUM GGSM_SUBSTATE GGSM_SUBSTATE_NONE = 0, GGSM_SUBSTATE_INIT, GGSM_SUBSTATE_LOADING, GGSM_SUBSTATE_ACTIVE, GGSM_SUBSTATE_MAP_FLY_START, GGSM_SUBSTATE_MAP_FLY, GGSM_SUBSTATE_MAP_FLY_WAIT, GGSM_SUBSTATE_MAP_DONE, GGSM_SUBSTATE_CLR_DIALOG, GGSM_SUBSTATE_CLR_STAGE_CLEAR, GGSM_SUBSTATE_CLR_STAGE_BONUS, GGSM_SUBSTATE_CLR_SECTOR_BONUS, GGSM_SUBSTATE_CLR_TAKEDOWN_BONUS, GGSM_SUBSTATE_CLR_NO_DMG_BONUS, GGSM_SUBSTATE_CLR_NO_MISS_BONUS, GGSM_SUBSTATE_CLR_ALL_CLEAR_BONUS, GGSM_SUBSTATE_CLR_FLY_OFF, GGSM_SUBSTATE_CLR_FLY_OFF_DONE, GGSM_SUBSTATE_CLEANUP_TO_LDB, GGSM_SUBSTATE_CLEANUP, NUM_GGSM_SUBSTATE ENDENUM ENUM GGSM_STATE GGSM_STATE_INIT = 0, GGSM_STATE_REQUESTING_ASSETS, GGSM_STATE_PLAYING, GGSM_STATE_DEVELOPER_LOGO, GGSM_STATE_FIB_WARNING, GGSM_STATE_PSA_SCREEN, GGSM_STATE_TITLE_SCREEN, GGSM_STATE_STORY, GGSM_STATE_STAGE_SELECT, GGSM_STATE_STAGE_ACTIVE, GGSM_STATE_STAGE_CLEAR, GGSM_STATE_STAGE_ALL_CLEAR, GGSM_STATE_STAGE_CONGRATS, GGSM_STATE_GAME_OVER, GGSM_STATE_LEADERBOARD, GGSM_STATE_LEADERBOARD_ENTRY, GGSM_STATE_TEST_STATE, GGSM_STATE_CLEANUP, NUM_GGSM_STATE ENDENUM ENUM GGSM_COLLISION_SHAPE GGSM_COLLISION_CIRCLE, GGSM_COLLISION_CAPSULE, NUM_GGSM_COLLISION_SHAPE ENDENUM ENUM GGSM_DIALOG_TYPE GGSM_DIALOG_NONE, GGSM_DIALOG_ASTEROID_ENTER, GGSM_DIALOG_ASTEROID_LEAVE, GGSM_DIALOG_GAME_OVER, GGSM_DIALOG_BOSS_SMOOTHIE_START, GGSM_DIALOG_BOSS_SMOOTHIE_DEFEATED, GGSM_DIALOG_BOSS_SMOOTHIE_FAILED, GGSM_DIALOG_BOSS_MARINE_START, GGSM_DIALOG_BOSS_MARINE_DEFEATED, GGSM_DIALOG_BOSS_MARINE_FAILED, GGSM_DIALOG_BOSS_GRANANA_START, GGSM_DIALOG_BOSS_GRANANA_DEFEATED, GGSM_DIALOG_BOSS_GRANANA_FAILED, GGSM_DIALOG_BOSS_BREAD_START, GGSM_DIALOG_BOSS_BREAD_DEFEATED, GGSM_DIALOG_BOSS_BREAD_FAILED, GGSM_DIALOG_BOSS_DR_DANK_START, GGSM_DIALOG_BOSS_DR_DANK_DEFEATED, GGSM_DIALOG_BOSS_DR_DANK_FAILED, NUM_GGSM_DIALOG_TYPE ENDENUM ENUM GGSM_DIALOG_STATE GGSM_DIALOG_STATE_NONE, GGSM_DIALOG_STATE_INIT, GGSM_DIALOG_STATE_START, GGSM_DIALOG_STATE_ACTIVE, GGSM_DIALOG_STATE_LEFT_SPEAK, GGSM_DIALOG_STATE_RIGHT_SPEAK, GGSM_DIALOG_STATE_END, GGSM_DIALOG_STATE_DONE, GGSM_DIALOG_STATE_SHUTDOWN, NUM_GGSM_DIALOG_STATE ENDENUM ENUM GGSM_EDITOR_BIT GGSM_EDITOR_BIT_NONE = 0, GGSM_EDITOR_BIT_EXPORT = BIT0, GGSM_EDITOR_BIT_COPY_FROM_DATA = BIT1, GGSM_EDITOR_BIT_COPY_TO_DATA = BIT2, GGSM_EDITOR_BIT_EDIT_MODE = BIT3, GGSM_EDITOR_BIT_TEST_SYSTEM = BIT4, GGSM_EDITOR_BIT_SAVED = BIT5 ENDENUM ENUM GGSM_ENTITY_BIT GGSM_ENTITY_BIT_NONE = 0, GGSM_ENTITY_BIT_IS_PLAYER_ALLIED = BIT1, GGSM_ENTITY_BIT_ON_SCREEN = BIT2, GGSM_ENTITY_BIT_ENTERED_PLAYFIELD = BIT3, GGSM_ENTITY_BIT_REMOVE_WHEN_OFFSCREEN = BIT4, GGSM_ENTITY_BIT_FORCE_SCROLLING_TO_STOP = BIT5, GGSM_ENTITY_BIT_NO_COLLISION = BIT6, GGSM_ENTITY_BIT_TOOK_DAMAGE_THIS_FRAME = BIT7, GGSM_ENTITY_BIT_SELF_DESTRUCT = BIT8, GGSM_ENTITY_BIT_DAMAGE_HURTS_ROOT = BIT9, GGSM_ENTITY_BIT_REFLECT_BULLETS = BIT10, GGSM_ENTITY_BIT_WPN_ACTIVE = BIT11, GGSM_ENTITY_BIT_WPN_ALT_SPREAD = BIT12, GGSM_ENTITY_BIT_WPN_RANDOM_SPREAD = BIT13, GGSM_ENTITY_BIT_WPN_FIRED_THIS_FRAME = BIT14, GGSM_ENTITY_BIT_WPN_MANUAL = BIT15, GGSM_ENTITY_BIT_WPN_TARGETTED = BIT16, GGSM_ENTITY_BIT_WPN_FIRED_ALT_SPREAD = BIT17, GGSM_ENTITY_BIT_WPN_SINGLE_SHOT_MODE = BIT18, GGSM_ENTITY_BIT_WPN_BURST_FIRED = BIT19, GGSM_ENTITY_BIT_WPN_BURST_RELOAD_THIS_FRAME = BIT20, GGSM_ENTITY_BIT_WPN_FIRE_ON_ARRIVE = BIT21, GGSM_ENTITY_BIT_NO_TAKEDOWN_BONUS = BIT22, GGSM_ENTITY_BIT_IS_IN_BACKGROUND = BIT23, GGSM_ENTITY_BIT_DIE_ONLY_FROM_EXPLOSIONS = BIT24 ENDENUM ENUM GGSM_ENTITY_STATE GGSM_ENTITY_STATE_NONE, GGSM_ENTITY_STATE_ALIVE, GGSM_ENTITY_STATE_FAKE_EXPLODING, GGSM_ENTITY_STATE_EXPLODING, GGSM_ENTITY_STATE_UNDEAD, GGSM_ENTITY_STATE_DEAD, NUM_GGSM_ENTITY_STATE ENDENUM ENUM GGSM_ENTITY_TYPE GGSM_ENTITY_PLAYERSHIP, GGSM_ENTITY_PLAYERDECOY, GGSM_ENTITY_PLAYERSHIELD, GGSM_ENTITY_BANANAGREEN, GGSM_ENTITY_BANANAYELLOW, GGSM_ENTITY_BANANARED, GGSM_ENTITY_BANANARED_ATTACK, GGSM_ENTITY_BANANAJETPAC, GGSM_ENTITY_BANANAJETPAC_RED, GGSM_ENTITY_BANANAJETPAC_GREEN, GGSM_ENTITY_BANDANA_RED, GGSM_ENTITY_BANDANA_GREEN, GGSM_ENTITY_CHERRYBOMB, GGSM_ENTITY_CIRCLE_SHIP_RED, GGSM_ENTITY_CIRCLE_SHIP_GREEN, GGSM_ENTITY_CIRCLE_SHIP_YELLOW, GGSM_ENTITY_ARMOUR_FRUITBOWL, GGSM_ENTITY_FRUITBOWL, GGSM_ENTITY_METEOR_BIG, GGSM_ENTITY_METEOR_MEDIUM, GGSM_ENTITY_METEOR_SMALL, GGSM_ENTITY_METEOR_VERY_BIG, GGSM_ENTITY_METEOR_HUGE, GGSM_ENTITY_CRUMB_METEOR, GGSM_ENTITY_PEANUT_METEOR, GGSM_ENTITY_SMALL_SMOOTHIE, GGSM_ENTITY_BANANASLICE_FRONT, GGSM_ENTITY_BANANASLICE, GGSM_ENTITY_BANANASLICE_BACK, GGSM_ENTITY_BOSS_BREAD_EYEBROWS, GGSM_ENTITY_BOSS_BREAD_FACE, GGSM_ENTITY_BOSS_BREAD_BOTTOM_LEFT, GGSM_ENTITY_BOSS_BREAD_BOTTOM_RIGHT, GGSM_ENTITY_BOSS_BREAD_TOP_LEFT, GGSM_ENTITY_BOSS_BREAD_TOP_RIGHT, GGSM_ENTITY_BOSS_GRANANA, GGSM_ENTITY_BOSS_GRANANA_GLASSES, GGSM_ENTITY_BOSS_GRANANA_HAIR, GGSM_ENTITY_BOSS_DR_DANK_TOP, GGSM_ENTITY_BOSS_DR_DANK_MIDDLE, GGSM_ENTITY_BOSS_DR_DANK_BOTTOM, GGSM_ENTITY_BOSS_DR_DANK_RLAUNCHER, GGSM_ENTITY_BOSS_DR_DANK_RHLAUNCHER, GGSM_ENTITY_BOSS_MARINE, GGSM_ENTITY_BOSS_MARINE_LAUNCHER, GGSM_ENTITY_BOSS_SMOOTHIE, GGSM_ENTITY_BANANASPLIT_1, GGSM_ENTITY_BANANASPLIT_2, GGSM_ENTITY_BANANASPLIT_3, GGSM_ENTITY_BANANASPLIT_4, NUM_GGSM_ENTITY_TYPE, GGSM_ENTITY_INVALID = -1 ENDENUM ENUM GGSM_EXPLOSION_TYPE GGSM_EXPLOSION_STANDARD, GGSM_EXPLOSION_MULTIPLE, GGSM_EXPLOSION_BOSS ENDENUM ENUM GGSM_FORMATION_TYPE GGSM_FORMATION_NONE, GGSM_FORMATION_STANDARD, GGSM_FORMATION_POWER_UP, GGSM_FORMATION_HORZLINE, GGSM_FORMATION_VERTLINE, GGSM_FORMATION_FLYING_V, GGSM_FORMATION_LINE, GGSM_FORMATION_MIRROR_X, GGSM_FORMATION_MIRROR_Y, GGSM_FORMATION_INTERLEAVED, GGSM_FORMATION_DELAYED_HLINE, GGSM_FORMATION_DELAYED_VLINE, GGSM_FORMATION_ARMOUR_FRUITBOWL, GGSM_FORMATION_ARMOUR_FRUITBOWL1, GGSM_FORMATION_ARMOUR_FRUITBOWL2, GGSM_FORMATION_ARMOUR_FRUITBOWL3, GGSM_FORMATION_ARMOUR_FRUITBOWL4, GGSM_FORMATION_BANANASNAKE, GGSM_FORMATION_BOSS_BREAD, GGSM_FORMATION_BOSS_GRANANA, GGSM_FORMATION_BOSS_DR_DANK, GGSM_FORMATION_BOSS_MARINE, GGSM_FORMATION_BOSS_SMOOTHIE, NUM_GGSM_FORMATION_TYPE ENDENUM ENUM GGSM_FX_SPRITE_BIT GGSM_FX_SPRITE_BIT_NONE = 0, GGSM_FX_SPRITE_BIT_ACTIVE = BIT0, GGSM_FX_SPRITE_BIT_ON_SCREEN = BIT1, GGSM_FX_SPRITE_BIT_ENTERED_PLAYFIELD = BIT2, GGSM_FX_SPRITE_BIT_REMOVE_WHEN_OFFSCREEN = BIT3, GGSM_FX_SPRITE_BIT_BG_SPRITE = BIT4 ENDENUM ENUM GGSM_HELP_BIT GGSM_HELP_BIT_NONE = 0, GGSM_HELP_BIT_MOVE = BIT0, GGSM_HELP_BIT_SHOOT = BIT1, GGSM_HELP_BIT_SPECIAL = BIT2, GGSM_HELP_BIT_DEFENSE = BIT3, GGSM_HELP_BIT_POWERUP = BIT4 ENDENUM ENUM GGSM_HUD_CHAR GGSM_HUD_CHAR_INVALID = 0, GGSM_HUD_CHAR_SPACE = 1, GGSM_HUD_CHAR_0 = 2, GGSM_HUD_CHAR_1 = 3, GGSM_HUD_CHAR_2 = 4, GGSM_HUD_CHAR_3 = 5, GGSM_HUD_CHAR_4 = 6, GGSM_HUD_CHAR_5 = 7, GGSM_HUD_CHAR_6 = 8, GGSM_HUD_CHAR_7 = 9, GGSM_HUD_CHAR_8 = 10, GGSM_HUD_CHAR_9 = 11, GGSM_HUD_CHAR_A = 12, GGSM_HUD_CHAR_B = 13, GGSM_HUD_CHAR_C = 14, GGSM_HUD_CHAR_D = 15, GGSM_HUD_CHAR_E = 16, GGSM_HUD_CHAR_F = 17, GGSM_HUD_CHAR_G = 18, GGSM_HUD_CHAR_H = 19, GGSM_HUD_CHAR_I = 20, GGSM_HUD_CHAR_J = 21, GGSM_HUD_CHAR_K = 22, GGSM_HUD_CHAR_L = 23, GGSM_HUD_CHAR_M = 24, GGSM_HUD_CHAR_N = 25, GGSM_HUD_CHAR_O = 26, GGSM_HUD_CHAR_P = 27, GGSM_HUD_CHAR_Q = 28, GGSM_HUD_CHAR_R = 29, GGSM_HUD_CHAR_S = 30, GGSM_HUD_CHAR_T = 31, GGSM_HUD_CHAR_U = 32, GGSM_HUD_CHAR_V = 33, GGSM_HUD_CHAR_W = 34, GGSM_HUD_CHAR_X = 35, GGSM_HUD_CHAR_Y = 36, GGSM_HUD_CHAR_Z = 37, GGSM_HUD_CHAR_APOSTROPHE = 38, GGSM_HUD_CHAR_BACKSLASH = 39, GGSM_HUD_CHAR_CLOSEBRACKET = 40, GGSM_HUD_CHAR_COLON = 41, GGSM_HUD_CHAR_COMMA = 42, GGSM_HUD_CHAR_DOLLAR = 43, GGSM_HUD_CHAR_EXCLAMATION = 44, GGSM_HUD_CHAR_FULL_STOP = 45, GGSM_HUD_CHAR_MINUS = 46, GGSM_HUD_CHAR_OPEN_BRACKET = 47, GGSM_HUD_CHAR_PLUS = 48, GGSM_HUD_CHAR_QUESTION = 49, GGSM_HUD_CHAR_SEMI_COLON = 50, GGSM_HUD_CHAR_SPEECH = 51, GGSM_HUD_CHAR_STAR = 52, NUM_GGSM_HUD_CHAR ENDENUM ENUM GGSM_GROUP_BIT GGSM_GROUP_BIT_NONE = 0, GGSM_GROUP_BIT_ACTIVE = BIT0, GGSM_GROUP_BIT_IS_PLAYER_GROUP = BIT1, GGSM_GROUP_BIT_DIE_WHEN_LEADER_DIES = BIT2, GGSM_GROUP_BIT_ALLOW_OFFSCREEN = BIT3, GGSM_GROUP_BIT_END_WHEN_ALL_OFFSCREEN = BIT4, GGSM_GROUP_BIT_IS_FORMATION = BIT5 ENDENUM ENUM GGSM_INPUT GGSM_INPUT_LSTICK, GGSM_INPUT_RSTICK, GGSM_INPUT_DPAD ENDENUM ENUM GGSM_MOVE_BIT GGSM_MOVE_BIT_NONE = 0, GGSM_MOVE_BIT_COMPLETE = BIT0, GGSM_MOVE_BIT_LAST_PLANE_SIDE = BIT1, GGSM_MOVE_BIT_TARGET_POINT_REACHED = BIT2, GGSM_MOVE_BIT_ROTATE_TO_FACE_DIRECTION = BIT3, GGSM_MOVE_BIT_POSITION_OVERRIDE = BIT4, GGSM_MOVE_BIT_ACCELERATE_TO_SPEED = BIT5, GGSM_MOVE_BIT_DEACCELERATE_TO_SPEED = BIT6, GGSM_MOVE_BIT_FORCE_MOVEMENT_TO_END = BIT7, GGSM_MOVE_BIT_TO_ORIGIN_ON_MOVE_ABORT = BIT8, GGSM_MOVE_BIT_FLIP_RELATIVE_PATH_X = BIT9, GGSM_MOVE_BIT_FLIP_RELATIVE_PATH_Y = BIT10, GGSM_MOVE_BIT_TARGET_POINT_REACHED_THIS_FRAME = BIT11 ENDENUM ENUM GGSM_MOVESTATE_TYPE GGSM_MOVESTATE_NONE, GGSM_MOVESTATE_START, GGSM_MOVESTATE_ACTIVE, GGSM_MOVESTATE_ARC, GGSM_MOVESTATE_ATTACK, GGSM_MOVESTATE_GOTO_POS, GGSM_MOVESTATE_GOTO_STARTPOS, GGSM_MOVESTATE_GOTO_ORIGIN, GGSM_MOVESTATE_PLYR_DIALOG, GGSM_MOVESTATE_PLYR_DIALOG_DONE, GGSM_MOVESTATE_PLYR_INVUNERABLE, GGSM_MOVESTATE_RAMMING, GGSM_MOVESTATE_SELECT_POS, GGSM_MOVESTATE_COMPLETE, NUM_GGSM_MOVESTATE_TYPE ENDENUM ENUM GGSM_MOVEMENT_TYPE GGSM_MOVEMENT_NONE, GGSM_MOVEMENT_STRAIGHT, GGSM_MOVEMENT_SIN_WAVE, GGSM_MOVEMENT_FOLLOW_PATH, GGSM_MOVEMENT_FOLLOW_REL_PATH, GGSM_MOVEMENT_MOVE_TO_VECTOR, GGSM_MOVEMENT_ROTATE_TO_FACE_VECTOR, GGSM_MOVEMENT_TARGETTED_WANDER, GGSM_MOVEMENT_BG_ATTACK, GGSM_MOVEMENT_ARC_BASE_LEFT, GGSM_MOVEMENT_ARC_TOP_RIGHT, GGSM_MOVEMENT_ARC_BASE_RIGHT, GGSM_MOVEMENT_ARC_TOP_LEFT, GGSM_MOVEMENT_ATTACK_KAMAZAKE, GGSM_MOVEMENT_BACK_AND_FORTH_X, GGSM_MOVEMENT_DESTRUCT_ON_IMPACT, GGSM_MOVEMENT_FOLLOW_TEST_PATH, GGSM_MOVEMENT_FOLLOW_REL_TEST_PATH, GGSM_MOVEMENT_FORWARD_THEN_BACK, GGSM_MOVEMENT_HALF_ARC_BASE_LEFT, GGSM_MOVEMENT_HALF_ARC_TOP_RIGHT, GGSM_MOVEMENT_HALF_ARC_BASE_RIGHT, GGSM_MOVEMENT_HALF_ARC_TOP_LEFT, GGSM_MOVEMENT_KAMAZAKE, GGSM_MOVEMENT_ORBIT, GGSM_MOVEMENT_RANDOM_WANDER, GGSM_MOVEMENT_SNAKE_SECTION, GGSM_MOVEMENT_MIDDLE_Y_RANGE, GGSM_MOVEMENT_TRACK_PLAYER_Y, GGSM_MOVEMENT_PLAYER_CONTROLLED, NUM_GGSM_MOVEMENT_TYPE ENDENUM ENUM GGSM_PLANESIDE GGSM_PLANESIDE_ON, GGSM_PLANESIDE_FRONT, GGSM_PLANESIDE_BEHIND ENDENUM ENUM GGSM_PROJECTILE_BIT GGSM_PROJECTILE_BIT_NONE = 0, GGSM_PROJECTILE_BIT_ACTIVE = BIT0, GGSM_PROJECTILE_BIT_ON_SCREEN = BIT1, GGSM_PROJECTILE_BIT_ENTERED_PLAYFIELD = BIT2, GGSM_PROJECTILE_BIT_IS_PLAYER_ALLIED = BIT3, GGSM_PROJECTILE_BIT_ACCELERATE_TO_SPEED = BIT4, GGSM_PROJECTILE_BIT_IS_HOMING = BIT5, GGSM_PROJECTILE_BIT_HAS_NO_COLLISION = BIT6, GGSM_PROJECTILE_BIT_LOCKED_TO_PARENT = BIT7, GGSM_PROJECTILE_BIT_BEAM_WEAPON = BIT8, GGSM_PROJECTILE_BIT_IS_SINEWAVE = BIT9, GGSM_PROJECTILE_BIT_IS_NEG_SINEWAVE = BIT10, GGSM_PROJECTILE_BIT_IS_CLUSTER_BOMB = BIT11, GGSM_PROJECTILE_BIT_FIRED_BY_PLAYER = BIT12, GGSM_PROJECTILE_BIT_IS_DELAYED_HOMING = BIT13 ENDENUM ENUM GGSM_PROJECTILE_TYPE GGSM_PROJECTILE_SCATTER, GGSM_PROJECTILE_LASER, GGSM_PROJECTILE_HOMING_ROCKET, GGSM_PROJECTILE_VULKAN, GGSM_PROJECTILE_DUAL_ARCH, GGSM_PROJECTILE_WAVE, GGSM_PROJECTILE_BOMB_EXPLOSION, GGSM_PROJECTILE_EXP_SHELL, GGSM_PROJECTILE_ENEMY_LASER, GGSM_PROJECTILE_ENEMY_LASER_PURPLE, GGSM_PROJECTILE_ENEMY_BEAM, GGSM_PROJECTILE_ENEMY_ROUND_RED, GGSM_PROJECTILE_ENEMY_ROUND_PURPLE, GGSM_PROJECTILE_ENEMY_SHOT, GGSM_PROJECTILE_ENEMY_SHOT_RAPID, GGSM_PROJECTILE_ENEMY_SHOT_PURPLE, GGSM_PROJECTILE_ENEMY_SHOT_YELLOW, GGSM_PROJECTILE_ENEMY_VULKAN, GGSM_PROJECTILE_ENEMY_CLUSTER_BOMB, GGSM_PROJECTILE_BREAD_CRUMB, GGSM_PROJECTILE_SMOOTHIE_VULKAN, GGSM_PROJECTILE_SMOOTHIE_SPREAD, GGSM_PROJECTILE_ACID, GGSM_PROJECTILE_ACID_VULKAN, GGSM_PROJECTILE_DANK_ROCKET, GGSM_PROJECTILE_DANK_HOMING_ROCKET, GGSM_PROJECTILE_DANK_SCATTER, GGSM_PROJECTILE_DANK_SPREAD, GGSM_PROJECTILE_DANK_VULCAN, GGSM_PROJECTILE_DANK_CLUSTERBOMB, GGSM_PROJECTILE_MARINE_LAUNCHER, GGSM_PROJECTILE_MARINE_SPREAD, GGSM_PROJECTILE_TEST, NUM_GGSM_PROJECTILE_TYPE, GGSM_PROJECTILE_INVALID = -1 ENDENUM ENUM GGSM_SCREEN_BIT GGSM_SCREEN_BIT_NONE = 0, GGSM_SCREEN_BIT_ON_SCREEN = BIT0, GGSM_SCREEN_BIT_ENTERED_PLAYFIELD = BIT1, GGSM_SCREEN_BIT_REMOVE_WHEN_OFFSCREEEN = BIT2, GGSM_SCREEN_BIT_STOP_SCROLLING = BIT3 ENDENUM ENUM GGSM_SPREAD_TYPE GGSM_SPREAD_NONE, GGSM_SPREAD_LINEAR, GGSM_SPREAD_CONE, GGSM_SPREAD_RADIAL, GGSM_SPREAD_WAVE, GGSM_SPREAD_DUALARCH, GGSM_SPREAD_BACKVULCAN, NUM_GGSM_SPREAD_TYPE ENDENUM ENUM GGSM_SPRITE_ANIM GGSM_SPRITE_ANIM_NONE, GGSM_SPRITE_ANIM_BOMB_EXPLOSION, GGSM_SPRITE_ANIM_BREAD_EYEBROWS, GGSM_SPRITE_ANIM_DANK_CANNON, GGSM_SPRITE_ANIM_EXPLOSION, GGSM_SPRITE_ANIM_GRANANA, GGSM_SPRITE_ANIM_GRAN_GLASS, GGSM_SPRITE_ANIM_GRAN_GLASSCRACK, GGSM_SPRITE_ANIM_MARINE, GGSM_SPRITE_ANIM_MARINE_ALIEN, GGSM_SPRITE_ANIM_PLYR_EXPLOSION, GGSM_SPRITE_ANIM_PLYRSHIP_FLAME, GGSM_SPRITE_ANIM_SMALL_SMOOTHIE, GGSM_SPRITE_ANIM_SMOOTHIE, NUM_GGSM_SPRITE_ANIM ENDENUM ENUM GGSM_SPRITE_TYPE GGSM_SPRITE_NONE, GGSM_SPRITE_ACID, GGSM_SPRITE_ACID_BLUE, GGSM_SPRITE_BANANA_GREEN, GGSM_SPRITE_BANANA_RED, GGSM_SPRITE_BANANA_YELLOW, GGSM_SPRITE_BANANA_JETPAC_GREEN, GGSM_SPRITE_BANANA_JETPAC_RED, GGSM_SPRITE_BANANA_JETPAC_YELLOW, GGSM_SPRITE_BANANA_RED_ATTACK, GGSM_SPRITE_BANANA_SLICE, GGSM_SPRITE_BANANA_SLICE_BACK, GGSM_SPRITE_BANANA_SLICE_FRONT, GGSM_SPRITE_BANDANA_RED, GGSM_SPRITE_BANDANA_GREEN, GGSM_SPRITE_BIG_SMOKE, GGSM_SPRITE_BOSS_TEXT, GGSM_SPRITE_BOMB_EXPLOSION, GGSM_SPRITE_CHERRY_BOMB, GGSM_SPRITE_CIRCLE_SHIP_GREEN, GGSM_SPRITE_CIRCLE_SHIP_YELLOW, GGSM_SPRITE_CIRCLE_SHIP_RED, GGSM_SPRITE_CRUMB_MEDIUM, GGSM_SPRITE_CRUMB_SMALL, GGSM_SPRITE_ENEMY_BULLET_BLUE, GGSM_SPRITE_ENEMY_BULLET_PURPLE, GGSM_SPRITE_ENEMY_BULLET_RED, GGSM_SPRITE_ENEMY_BULLET_YELLOW, GGSM_SPRITE_EXP_SHELL, GGSM_SPRITE_EXPLOSION, GGSM_SPRITE_FLAME, GGSM_SPRITE_FRUITBOWL, GGSM_SPRITE_LIVES_REMAINING, GGSM_SPRITE_METEOR_BIG, GGSM_SPRITE_METEOR_MEDIUM, GGSM_SPRITE_METEOR_SMALL, GGSM_SPRITE_METEOR_VERY_BIG, GGSM_SPRITE_METEOR_HUGE, GGSM_SPRITE_MONKEY, GGSM_SPRITE_MONKEY_CONGRATS, GGSM_SPRITE_PEANUT_METEOR, GGSM_SPRITE_POWER_UP_BEAM, GGSM_SPRITE_POWER_UP_FORWARD_BACK, GGSM_SPRITE_POWER_UP_BOLT, GGSM_SPRITE_POWER_UP_DECOY, GGSM_SPRITE_POWER_UP_DUALARCH, GGSM_SPRITE_POWER_UP_EXPLOSION, GGSM_SPRITE_POWER_UP_EXTRALIFE, GGSM_SPRITE_POWER_UP_HEALTH, GGSM_SPRITE_POWER_UP_NUKE, GGSM_SPRITE_POWER_UP_REPULSE, GGSM_SPRITE_POWER_UP_ROCKET, GGSM_SPRITE_POWER_UP_SCATTER, GGSM_SPRITE_POWER_UP_SHIELD, GGSM_SPRITE_POWER_UP_STUN, GGSM_SPRITE_POWER_UP_WAVE, GGSM_SPRITE_PROJ_BEAM_BLUE, GGSM_SPRITE_PROJ_BEAM_PURPLE, GGSM_SPRITE_RAIL_GUN_FIRE_BLUE, GGSM_SPRITE_RAIL_GUN_FIRE_PURPLE, GGSM_SPRITE_RAIL_GUN_FIRE_RED, GGSM_SPRITE_RAIL_GUN_FIRE_YELLOW, GGSM_SPRITE_ROCKET, GGSM_SPRITE_ROCKET_BLUE, GGSM_SPRITE_SHIELD, GGSM_SPRITE_SHOT_LONG_BLUE, GGSM_SPRITE_SHOT_LONG_PURPLE, GGSM_SPRITE_SHOT_LONG_RED, GGSM_SPRITE_SHOT_LONG_YELLOW, GGSM_SPRITE_SHOT_ROUND_BLUE, GGSM_SPRITE_SHOT_ROUND_PURPLE, GGSM_SPRITE_SHOT_ROUND_RED, GGSM_SPRITE_SHOT_ROUND_YELLOW, GGSM_SPRITE_SMALL_SMOKE, GGSM_SPRITE_SMALL_SMOOTHIE, GGSM_SPRITE_BOSS_BREAD, GGSM_SPRITE_BOSS_BREAD_FACE, GGSM_SPRITE_BOSS_BREAD_EYEBROWS, GGSM_SPRITE_BOSS_BREAD_BOTTOM_LEFT, GGSM_SPRITE_BOSS_BREAD_BOTTOM_RIGHT, GGSM_SPRITE_BOSS_BREAD_TOP_LEFT, GGSM_SPRITE_BOSS_BREAD_TOP_RIGHT, GGSM_SPRITE_BOSS_BANANA_SPLIT, GGSM_SPRITE_BOSS_DR_DANK_TOP, GGSM_SPRITE_BOSS_DR_DANK_MIDDLE, GGSM_SPRITE_BOSS_DR_DANK_BOTTOM, GGSM_SPRITE_BOSS_GRANANA, GGSM_SPRITE_BOSS_GRANANA_GLASSES, GGSM_SPRITE_BOSS_GRANANA_HAIR, GGSM_SPRITE_BOSS_MARINE, GGSM_SPRITE_BOSS_MARINE_ALIEN, GGSM_SPRITE_BOSS_SMOOTHIE, GGSM_SPRITE_PIC_BREAD_MAIN, GGSM_SPRITE_PIC_DR_DANK_FAIL, GGSM_SPRITE_PIC_DR_DANK_MAIN, GGSM_SPRITE_PIC_GRANANA_MAIN, GGSM_SPRITE_PIC_MARINE_MAIN, GGSM_SPRITE_PIC_MONKEY_ASTEROID, GGSM_SPRITE_PIC_MONKEY_FAIL, GGSM_SPRITE_PIC_MONKEY_MAIN, GGSM_SPRITE_PIC_SMOOTHIE_MAIN, GGSM_SPRITE_PIC_BREAD_64, GGSM_SPRITE_PIC_GRANANA_64, GGSM_SPRITE_PIC_SMOOTHIE_64, GGSM_SPRITE_PIC_MARINE_64, GGSM_SPRITE_PIC_DR_DANK_64, GGSM_SPRITE_HEALTH_BAR_BOSS, GGSM_SPRITE_HEALTH_BAR_MONKEY, GGSM_SPRITE_HEALTH_BOX_BOSS, GGSM_SPRITE_HEALTH_BOX_MONKEY, GGSM_SPRITE_WEAPON_BOX, GGSM_SPRITE_BOX_LVL1_BOSS_FAIL, GGSM_SPRITE_BOX_LVL1_BOSS_START, GGSM_SPRITE_BOX_LVL1_BOSS_WIN, GGSM_SPRITE_BOX_LVL1_MONKEY_START, GGSM_SPRITE_BOX_LVL1_MONKEY_FAIL, GGSM_SPRITE_BOX_LVL1_MONKEY_WIN, GGSM_SPRITE_BOX_LVL2_BOSS_FAIL, GGSM_SPRITE_BOX_LVL2_BOSS_START, GGSM_SPRITE_BOX_LVL2_BOSS_WIN, GGSM_SPRITE_BOX_LVL2_MONKEY_FAIL, GGSM_SPRITE_BOX_LVL2_MONKEY_START, GGSM_SPRITE_BOX_LVL2_MONKEY_WIN, GGSM_SPRITE_BOX_LVL3_BOSS_FAIL, GGSM_SPRITE_BOX_LVL3_BOSS_START, GGSM_SPRITE_BOX_LVL3_BOSS_WIN, GGSM_SPRITE_BOX_LVL3_MONKEY_FAIL, GGSM_SPRITE_BOX_LVL3_MONKEY_START, GGSM_SPRITE_BOX_LVL3_MONKEY_WIN, GGSM_SPRITE_BOX_LVL4_BOSS_FAIL, GGSM_SPRITE_BOX_LVL4_BOSS_START, GGSM_SPRITE_BOX_LVL4_BOSS_WIN, GGSM_SPRITE_BOX_LVL4_MONKEY_FAIL, GGSM_SPRITE_BOX_LVL4_MONKEY_START, GGSM_SPRITE_BOX_LVL4_MONKEY_WIN, GGSM_SPRITE_BOX_LVL5_BOSS_FAIL, GGSM_SPRITE_BOX_LVL5_BOSS_START, GGSM_SPRITE_BOX_LVL5_BOSS_START2, GGSM_SPRITE_BOX_LVL5_BOSS_WIN, GGSM_SPRITE_BOX_LVL5_BOSS_WIN2, GGSM_SPRITE_BOX_LVL5_MONKEY_FAIL, GGSM_SPRITE_BOX_LVL5_MONKEY_START, GGSM_SPRITE_BOX_LVL5_MONKEY_START2, GGSM_SPRITE_BOX_LVL5_MONKEY_WIN, GGSM_SPRITE_BOX_ASTEROID_LEAVING, GGSM_SPRITE_BOX_ASTEROID_NEARING, GGSM_SPRITE_BOX_FAILSCRN_BOSS1, GGSM_SPRITE_BOX_FAILSCRN_BOSS2, GGSM_SPRITE_BOX_FAILSCRN_BOSS3, GGSM_SPRITE_BOX_FAILSCRN_BOSS4, GGSM_SPRITE_BOX_FAILSCRN_BOSS5, GGSM_SPRITE_BOX_FAILSCRN_BOSS6, GGSM_SPRITE_BOX_FAILSCRN_MONKEY_1, GGSM_SPRITE_BOX_FAILSCRN_MONKEY_2, GGSM_SPRITE_BOX_FAILSCRN_MONKEY_3, GGSM_SPRITE_BOX_FAILSCRN_MONKEY_4, GGSM_SPRITE_BOX_FAILSCRN_MONKEY_5, GGSM_SPRITE_BOX_FAILSCRN_MONKEY_6, GGSM_SPRITE_BG_LAYER_BREAD_PLANET, GGSM_SPRITE_BG_LAYER_BOSS_PLANET, GGSM_SPRITE_BG_LAYER_CRATERS, GGSM_SPRITE_BG_LAYER_EARTH, GGSM_SPRITE_BG_LAYER_PINK_PLANET, GGSM_SPRITE_BG_SPACE, GGSM_SPRITE_BG_STARS, GGSM_SPRITE_BG_MAP, GGSM_SPRITE_FACADE, GGSM_SPRITE_FBI_WARN, GGSM_SPRITE_PSA, GGSM_SPRITE_GAME_OVER_SCREEN, GGSM_SPRITE_LEVEL_SCREEN_BANANASTAR, GGSM_SPRITE_LEVEL_SCREEN_CAVERN, GGSM_SPRITE_LEVEL_SCREEN_DOUGHBALL, GGSM_SPRITE_LEVEL_SCREEN_EARTH, GGSM_SPRITE_LEVEL_SCREEN_METEORS, GGSM_SPRITE_LEVEL_SCREEN_PINK, GGSM_SPRITE_LEVEL_SCREEN_DASH, GGSM_SPRITE_OPENING_TEXT_1, GGSM_SPRITE_OPENING_TEXT_2, GGSM_SPRITE_OPENING_TEXT_3, GGSM_SPRITE_OPENING_TEXT_4, GGSM_SPRITE_OPENING_TEXT_5, GGSM_SPRITE_OPENING_TEXT_6, GGSM_SPRITE_OPENING_TEXT_7, GGSM_SPRITE_OPENING_TEXT_8, GGSM_SPRITE_OPENING_TEXT_9, GGSM_SPRITE_PRESS_START, NUM_GGSM_SPRITE_TYPE ENDENUM ENUM GGSM_SPECIAL_WEAPON_TYPE GGSM_SPECIAL_WEAPON_NONE, GGSM_SPECIAL_WEAPON_NUKE, GGSM_SPECIAL_WEAPON_DECOY, GGSM_SPECIAL_WEAPON_TEMPORAL, GGSM_SPECIAL_WEAPON_SHIELD, GGSM_SPECIAL_WEAPON_REFLECT, NUM_GGSM_SPECIAL_WEAPON_TYPE ENDENUM ENUM GGSM_SPWEAPON_STATE GGSM_SPWEAPON_INACTIVE, GGSM_SPWEAPON_LAUNCH, GGSM_SPWEAPON_DETONATE, GGSM_SPWEAPON_ACTIVE, GGSM_SPWEAPON_COOLDOWN, NUM_GGSM_SPWEAPON_STATE ENDENUM ENUM GGSM_STAGE_BIT GGSM_STAGE_BIT_NONE = 0, GGSM_STAGE_BIT_FORCE_Z_SORT = BIT0, GGSM_STAGE_BIT_STAGE_STARTED = BIT1, GGSM_STAGE_BIT_PLAYER_DAMAGED = BIT2, GGSM_STAGE_BIT_PLAYER_DIED = BIT3, GGSM_STAGE_BIT_PLAYER_DEFENSE_WPN_USED = BIT4, GGSM_STAGE_BIT_PLAYER_SPECIAL_WPN_USED = BIT5, GGSM_STAGE_BIT_DISABLE_WEAPONS = BIT6, GGSM_STAGE_BIT_BRING_CAMERA_TO_STOP = BIT7, GGSM_STAGE_BIT_PLAYER_BOSS_INVUNERABLE = BIT8, GGSM_STAGE_BIT_PLAYER_PROJECTILES_ACTIVE = BIT9, GGSM_STAGE_BIT_ENEMY_PROJECTILES_ACTIVE = BIT10, GGSM_STAGE_BIT_ENEMIES_ACTIVE = BIT11, GGSM_STAGE_BIT_GROUPS_ACTIVE = BIT12, GGSM_STAGE_BIT_BOSSES_ACTIVE = BIT13, GGSM_STAGE_BIT_EXPLOSIONS_ACTIVE = BIT14, GGSM_STAGE_BIT_INTRO_DONE = BIT15 ENDENUM ENUM GGSM_TEXDICT GGSM_TEXDICT_NONE = 0, GGSM_TEXDICT_RESIDENT = BIT0, GGSM_TEXDICT_GAME = BIT1, GGSM_TEXDICT_DIALOG = BIT2, GGSM_TEXDICT_PORTRAITS = BIT3, GGSM_TEXDICT_FRONTEND = BIT4, GGSM_TEXDICT_PSA = BIT5, GGSM_TEXDICT_BG = BIT6, GGSM_TEXDICT_BOSS_BREAD = BIT7, GGSM_TEXDICT_BOSS_BANANA_SPLIT = BIT8, GGSM_TEXDICT_BOSS_DR_DANK = BIT9, GGSM_TEXDICT_BOSS_GRANANA = BIT10, GGSM_TEXDICT_BOSS_MARINE = BIT11, GGSM_TEXDICT_BOSS_SMOOTHIE = BIT12, GGSM_TEXDICT_CAVERN_STAGE = BIT13, GGSM_TEXDICT_BOSS_ALIEN = BIT14 ENDENUM ENUM GGSM_TEXTPIVOT GGSM_TEXTPIVOT_LEFT, GGSM_TEXTPIVOT_CENTER, GGSM_TEXTPIVOT_RIGHT ENDENUM ENUM GGSM_TILE_COLLISION_TYPE GGSM_TILE_COLLISION_NONE, GGSM_TILE_COLLISION_BOX, GGSM_TILE_COLLISION_FULLBOX, GGSM_TILE_COLLISION_LINE, GGSM_TILE_COLLISION_POLYGON, NUM_GGSM_TILE_COLLISION_TYPE ENDENUM ENUM GGSM_WEAPON_STATE GGSM_WEAPON_STATE_INACTIVE, GGSM_WEAPON_STATE_READY, GGSM_WEAPON_STATE_FIRING, GGSM_WEAPON_STATE_FIRED, GGSM_WEAPON_STATE_RELOAD, GGSM_WEAPON_STATE_BURST_RELOAD, GGSM_WEAPON_STATE_SPINUP, GGSM_WEAPON_STATE_COOLDOWN ENDENUM ENUM GGSM_WEAPON_TYPE GGSM_WEAPON_NONE, GGSM_WEAPON_DEFAULT, GGSM_WEAPON_ENEMYBEAM, GGSM_WEAPON_ENEMYCONESPREAD, GGSM_WEAPON_ENEMYLASER, GGSM_WEAPON_ENEMYSHOT, GGSM_WEAPON_ENEMYSHOT_RAPID, GGSM_WEAPON_ENEMYSPREAD, GGSM_WEAPON_ENEMYTIMEDSPREAD, GGSM_WEAPON_ENEMYVULCAN, GGSM_WEAPON_ENEMYCLUSTERBOMB, GGSM_WEAPON_FRUITBOWL, GGSM_WEAPON_GRANANAGLASSES, GGSM_WEAPON_GRANANAGLASSES2, GGSM_WEAPON_GRANANAHAIR, GGSM_WEAPON_GRANANASPREAD1, GGSM_WEAPON_GRANANASPREAD1A, GGSM_WEAPON_PLYREXPSHELL, GGSM_WEAPON_PLYRVULCAN, GGSM_WEAPON_PLYRSCATTER, GGSM_WEAPON_PLYRHOMINGROCKET, GGSM_WEAPON_PLYRDUALARCH, GGSM_WEAPON_PLYRWAVEBLASTER, GGSM_WEAPON_PLYRBACKVULCAN, GGSM_WEAPON_BREADSPREAD, GGSM_WEAPON_SMOOTHIESPREAD, GGSM_WEAPON_SMOOTHIEVULCAN, GGSM_WEAPON_DANK_CANNON, GGSM_WEAPON_DANK_ROCKET, GGSM_WEAPON_DANK_HROCKET, GGSM_WEAPON_DANK_SCATTER, GGSM_WEAPON_DANK_SPREAD, GGSM_WEAPON_DANK_CLUSTERBOMB, GGSM_WEAPON_ACID, GGSM_WEAPON_ACID_VULKAN, GGSM_WEAPON_MARINE_LAUNCHER, GGSM_WEAPON_MARINE_SPREAD, GGSM_WEAPON_TEST_WEAPON, NUM_GGSM_WEAPON_TYPE, GGSM_WEAPON_INVALID = -1 ENDENUM ENUM GGSM_UNLOCK_TYPE GGSM_UNLOCK_NONE, GGSM_UNLOCK_TSHIRTS_GGSM_ASTEROID, GGSM_UNLOCK_TSHIRTS_GGSM_CLOCKEDIT, GGSM_UNLOCK_TSHIRTS_GGSM_NODAMAGE, GGSM_UNLOCK_TSHIRTS_GGSM_NUKE, GGSM_UNLOCK_TSHIRTS_GGSM_SCORE, GGSM_UNLOCK_TSHIRTS_GGSM_COMPLETE, GGSM_UNLOCK_TROPHY, GGSM_UNLOCK_TROPHY_PENTHOUSE, NUM_GGSM_UNLOCK_TYPE ENDENUM //------------------------------------------------- // MATHS STRUCTS //------------------------------------------------- STRUCT GGSM_AABB VECTOR_2D vCenter VECTOR_2D vHalfSize ENDSTRUCT STRUCT GGSM_COLLISION_DATA GGSM_COLLISION_SHAPE eType VECTOR_2D vCollisionVectors[2] // circle - v[0] center of sphere relative to origin, capsule // v[0] p1, v[1] p2, // Box v[0] center, v[1] halfsize FLOAT fColRadius ENDSTRUCT STRUCT GGSM_COLLIDER GGSM_COLLISION_DATA sData GGSM_AABB sAABB // axial orientated bounding box used for broadphase or the actual box for aabbs ENDSTRUCT STRUCT GGSM_INTRECT INT x, y, w, h ENDSTRUCT STRUCT GGSM_PATH_DATA // 16 bits per point // 6 bits for x (0 - 31) * GGSM_PATH_GRID_SEPERATION) // 6 bits for y (0 - 31) * GGSM_PATH_GRID_SEPERATION) // 4 bits for other shit INT iPackedPathPoints[GGSM_PATH_POINT_ARRAY_SIZE] // path is 2 points int INT iNumPoints ENDSTRUCT STRUCT GGSM_TILE_COLLISION_DATA GGSM_TILE_COLLISION_TYPE eType VECTOR_2D vCollisionVectors[GGSM_MAX_TILE_POLYPOINTS] INT iNumPoints ENDSTRUCT STRUCT GGSM_TRANSFORM VECTOR_2D vPosition VECTOR_2D vScale FLOAT fRotation ENDSTRUCT STRUCT GGSM_ZSORTDATA INT iEntityIndex = GGSM_INVALID_ENTITY INT iZDepth ENDSTRUCT //------------------------------------------------- // DATA STRUCTS //------------------------------------------------- STRUCT GGSM_ENTITY_DATA GGSM_COLLISION_DATA sCollisionData FLOAT fBaseSpeed INT iMaxHP INT iPackedDefaultLocation GGSM_WEAPON_TYPE eWeaponType GGSM_TRANSFORM sGunPos VECTOR_2D vExplodeVelocity FLOAT fTotalExplodeTime FLOAT fExplodeDelay // sound fx ARCADE_GAMES_SOUND eDamageSound ARCADE_GAMES_SOUND eDieSound // rendering GGSM_SPRITE_TYPE eSpriteType GGSM_EXPLOSION_TYPE eExplosionType INT iDefaultAnimFrame = 0 FLOAT fSpriteRotationFix = 0.0 ENDSTRUCT STRUCT GGSM_PROJECTILE_DATA GGSM_SPRITE_TYPE eAlliedSprite GGSM_SPRITE_TYPE eEnemySprite ARCADE_GAMES_SOUND eProjSound FLOAT fShotReloadTime FLOAT fBaseSpeed FLOAT fLength // if it has as length of 0 it's a circle FLOAT fRadius ENDSTRUCT STRUCT GGSM_WEAPON_DATA GGSM_PROJECTILE_TYPE eProjectileType = GGSM_PROJECTILE_VULKAN GGSM_SPREAD_TYPE eSpreadType = GGSM_SPREAD_LINEAR FLOAT fBurstReloadTime = 0.0 FLOAT fSpreadValue = 0.0 INT iNumShots = 1 INT iNumBursts = 0 ENDSTRUCT //------------------------------------------------- // GAME STRUCTS //------------------------------------------------- STRUCT GGSM_BOSS_CONTROLLER GGSM_BOSS_TYPE eType GGSM_BOSS_STATE eState BOOL bStateInit = FALSE BOOL bFiftyPercent = FALSE FLOAT fStateTimer INT iEntityIndex[GGSM_MAX_BOSS_PARTS] //INT iPackedEntityList[GGSM_MAX_BOSS_LIST_ARRAY_SIZE] INT iTotalHP INT iMaxTotalHP INT iInternalCounter INT iGroupID = GGSM_INVALID_GROUP_ID INT iSubGroupID = GGSM_INVALID_GROUP_ID INT iSummedMaxHPBitSet INT iBossPatternState INT iMaxPatterns INT iPatternUsedBitSet #IF IS_DEBUG_BUILD BOOL bDebugSetState INT iDebugSetState INT iCurrentState #ENDIF ENDSTRUCT STRUCT GGSM_FX_SPRITE GGSM_FX_SPRITE_BIT eFlags GGSM_SPRITE_TYPE eSpriteType GGSM_SPRITE_ANIM eSpriteAnim INT iPackedPosition VECTOR_2D vVelocity FLOAT fAnimFrame FLOAT fScale INT iPackedColor ENDSTRUCT STRUCT GGSM_BGSCROLLER INT iStage FLOAT fSpaceScrollRate FLOAT fFloorScrollRate FLOAT fObjScrollRate VECTOR_2D vSpaceBgPos[GGSM_MAX_STAR_BG] VECTOR_2D vFloorBgPos[GGSM_MAX_FLOOR_BG] GGSM_FX_SPRITE sBgSprite[GGSM_MAX_BG_SPRITE] FLOAT fTimer = 0.0 ENDSTRUCT STRUCT GGSM_CAMERA // viewport VECTOR_2D vWorldPosition // this is where we are in the world - top left of the screen VECTOR_2D vLastWorldPosition VECTOR_2D vWorldViewportOffset VECTOR_2D vViewportSize VECTOR_2D vScrollDirection FLOAT fDistTravelled FLOAT fTileScrollSpeed FLOAT fScrollPCController = 1.0 VECTOR_2D vTileSize FLOAT fSpd #IF IS_DEBUG_BUILD BOOL bDebugMoveCamera FLOAT fDebugMoveCameraDist #ENDIF ENDSTRUCT STRUCT GGSM_DIALOG_CONTROLLER BOOL bStateInit GGSM_DIALOG_TYPE eType GGSM_DIALOG_STATE eState GGSM_SPRITE_TYPE eLeftPicture GGSM_SPRITE_TYPE eRightPicture GGSM_SPRITE_TYPE eLeftDialog GGSM_SPRITE_TYPE eRightDialog ARCADE_GAMES_SOUND eLeftSpeak ARCADE_GAMES_SOUND eRightSpeak INT iSlideInOffset INT iVariation INT iMsgNumber INT iMsgTimerMS ENDSTRUCT STRUCT GGSM_FORMATION_DATA INT iPackedTypeData // holds formation, entity, move and weapon type packed INT iFormationMembers = 0 INT iPackedBasePosition INT iPackedBaseDirection INT iPathNumber = GGSM_INVALID_PATH FLOAT fScrollDistance = 0.0 VECTOR_2D vSpacing ENDSTRUCT STRUCT GGSM_ENTITY_GROUP INT iGroupID = GGSM_INVALID_GROUP_ID GGSM_GROUP_BIT eFlags = GGSM_GROUP_BIT_NONE INT iLeader = GGSM_INVALID_ENTITY INT iMemberBitSet = 0 INT iMembersToCreate = 0 INT iActiveCount = 0 INT iMembersOnStageBitSet = 0 // spawning FLOAT fDistCounter INT iFormSpawnBitSet = 0 GGSM_FORMATION_DATA sFormSettings ENDSTRUCT STRUCT GGSM_ENTITY GGSM_ENTITY_TYPE eType GGSM_ENTITY_STATE eState GGSM_TRANSFORM sLocal GGSM_TRANSFORM sWorld GGSM_COLLIDER sCollider // damage INT iHP INT iInvTimeMS FLOAT fTimer FLOAT fExplodeTimer FLOAT fMoveTimer // flags GGSM_ENTITY_BIT eFlags GGSM_MOVE_BIT eMoveFlags // movement GGSM_MOVEMENT_TYPE eMoveType GGSM_MOVESTATE_TYPE eMoveState FLOAT fMoveParam[3] VECTOR_2D vLocalDirection FLOAT fDistTravelled FLOAT fSpeed INT iPackedLocalTargetPosition INT iPackedLocalOrigin INT iPathNumber = GGSM_INVALID_PATH FLOAT fPathValue // groups and parenting INT iGroupID = GGSM_INVALID_GROUP_ID INT iArrayIndex = GGSM_INVALID_ENTITY INT iEntityParentIndex = GGSM_INVALID_ENTITY // weapons GGSM_WEAPON_STATE eWeaponState GGSM_WEAPON_TYPE eWeaponType INT iWeaponBurstCounter = 0 INT iWeaponShotCounter = 0 INT iNumShotsOverride = -1 FLOAT fWeaponTimer // rendering GGSM_SPRITE_ANIM eSpriteAnim INT iPackedColor FLOAT fAnimFrame = 0.0 ENDSTRUCT STRUCT GGSM_POWER_UP GGSM_SPRITE_TYPE eType INT iPackedPosition ENDSTRUCT STRUCT GGSM_PROJECTILE GGSM_PROJECTILE_TYPE eType GGSM_PROJECTILE_BIT eFlags // movement VECTOR_2D vDirection FLOAT fSpeed FLOAT fDistTravelled // other INT iTargetIndex = GGSM_INVALID_ENTITY INT iPackedOrigin // collider GGSM_COLLIDER sCollider FLOAT fLength FLOAT fTimer ENDSTRUCT STRUCT GGSM_SPRITE_ANIM_DATA GGSM_SPRITE_TYPE eSprite GGSM_ANIM_BIT eAnimFlags ARCADE_GAMES_SOUND eSound = ARCADE_GAMES_SOUND_END FLOAT fStartFrame FLOAT fEndFrame FLOAT fAnimTime FLOAT fFrameRange ENDSTRUCT STRUCT GGSM_SPWEAPON_DATA GGSM_SPECIAL_WEAPON_TYPE eType GGSM_SPWEAPON_STATE eState FLOAT fTimer ENDSTRUCT // Compressed Row // We store each element in a 8 byte block (so value at most can be 255) // But bit 6 and 7 tell us if the tile is h or v flipped so realistically // So we can have up to 32 tiles (well 31 as 0 is always blank) STRUCT GGSM_TILEMAP_ROW INT iData[GGSM_TILEROW_ARRAY_SIZE] ENDSTRUCT STRUCT GGSM_TILEMAP BOOL bWrapped = TRUE INT iMaxTiles = GGSM_MAX_TILES_IN_TILE_SET INT iMapWidth = GGSM_MAX_TILEMAP_SIZE_X INT iMapHeight = GGSM_MAX_TILEMAP_SIZE_Y FLOAT fTileSize = 128.0 FLOAT fTileDrawSize = 0.0 STRING sTileDirectory STRING sTileSetBaseName GGSM_INTRECT sVisibleTileRect GGSM_TILEMAP_ROW sMapRow[GGSM_MAX_TILEMAP_SIZE_Y] GGSM_TILE_COLLISION_DATA sCollisionData[GGSM_MAX_TILES_IN_TILE_SET] ENDSTRUCT //------------------------------------------------- // EDITOR STRUCTS //------------------------------------------------- #IF IS_DEBUG_BUILD STRUCT GGSM_EDITOR_CORE BOOL bEditorActive BOOL bLastEditorActive BOOL bLastPauseState GGSM_EDITOR_BIT eFlags INT iCurrentEditIndex INT iLastEditIndex INT iCurrentEditDatam INT iLastEditDatam INT iOption INT iActiveTestGroup = GGSM_INVALID_GROUP_ID ENDSTRUCT STRUCT GGSM_ENTITY_EDITOR GGSM_ENTITY_DATA sDebugEntData[NUM_GGSM_ENTITY_TYPE] GGSM_EDITOR_CORE sEditCore GGSM_ENTITY sTestEntity GGSM_ENTITY_DATA sEditData GGSM_ENTITY_TYPE eEditType ENDSTRUCT STRUCT GGSM_SPAWN_EDITOR GGSM_EDITOR_CORE sEditCore VECTOR_2D vFormPosition FLOAT fFormAngle = 90.0 INT iFormationType INT iEntityType INT iMoveType INT iWeaponType FLOAT fFormShift = 0.0 GGSM_FORMATION_DATA sEditData ENDSTRUCT STRUCT GGSM_TILEMAP_EDITOR GGSM_EDITOR_CORE sEditCore INT iFlipBits = 0 INT iEditMapX INT iEditMapY INT iLastEditMapX INT iLastEditMapY ENDSTRUCT #ENDIF //------------------------------------------------- // MAIN STRUCT //------------------------------------------------- STRUCT GGSM_DATA #IF IS_DEBUG_BUILD WIDGET_GROUP_ID widgetGroupExample BOOL bDebugCreatedWidgets BOOL bDebugDumpToLogs BOOL bDebugDisableSFX BOOL bDebugDisablePostFX// = TRUE BOOL bDrawCollisionDebug INT iDebugCurrentStackSize FLOAT fDebugFrameTime BOOL bDebugChangeState INT iDebugStateSelector INT iDebugCurrentState INT iDebugCurrentSubstate BOOL bDebugIsHelpDisplayed BOOL bDrawDebugRect BOOL bDebugRectCenterMode VECTOR_2D vDebugRect[2] BOOL bDebugCreatePowerUp BOOL bDebugNoPowerUps BOOL bDebugJumpToBoss BOOL bDebugDisableEnemySpawn BOOL bDebugKillAllEnemies BOOL bDebugPlayerInvunerable BOOL bDebugSetStage BOOL bShowSpawnDebug// = TRUE FLOAT fDebugStoryT #IF GGSM_DEBUG_TSHIRT_HELP BOOL bDebugShowUnlock BOOL bDebugResetUnlocks INT iDebugUnlockSelector #ENDIF #IF GGSM_CHALLENGE_DEBUG BOOL bDebugResetChallenge BOOL bDebugChallengeApeEscape BOOL bDebugChallengeMonkeyMind BOOL bDebugChallengeAstroChimpB BOOL bDebugChallengeAstroChimpS BOOL bDebugChallengeAstroChimpG BOOL bDebugChallengeAstroChimpP BOOL bDebugChallengeAquaApe BOOL bDebugAwardAllChallenges BOOL bDebugShowAwardsOnScreen #ENDIF #IF GGSM_ENTITY_EDITOR_ACTIVE GGSM_ENTITY_EDITOR sDebugEntityEditor #ENDIF #IF GGSM_SPAWN_EDITOR_ACTIVE GGSM_SPAWN_EDITOR sDebugSpawnEditor #ENDIF #IF GGSM_TILEMAP_EDITOR_ACTIVE GGSM_TILEMAP_EDITOR sDebugMapEditor #ENDIF #IF GGSM_SOUND_TEST BOOL bDebugPlaySound INT iSoundSelector #ENDIF #ENDIF // Client State GGSM_STATE eState GGSM_SUBSTATE eSubState FLOAT fStateTimer FLOAT fStateInterpolateValue BOOL bGamePaused BOOL bGameForceQuit BOOL bHasInitPCControls FLOAT fAnalogDeadZone = 0.1 FLOAT fDPadScalar = 0.8 // Cabinet Anims ARCADE_CABINET_ANIM_CLIPS eAvatarClip = ARCADE_CABINET_ANIM_CLIP_IDLE INT iAvatarClipFrames // Data GGSM_FORMATION_DATA sSpawnData[GGSM_MAX_SPAWN_DATA] // Objects GGSM_ENTITY sEntities[GGSM_MAX_ENTITIES] GGSM_PROJECTILE sProjectiles[GGSM_MAX_PROJECTILES] GGSM_BOSS_CONTROLLER sBossController[GGSM_MAX_BOSS_CONTROLLERS] INT iPlayerShipIndex = GGSM_INVALID_ENTITY INT iPlayerDecoyIndex = GGSM_INVALID_ENTITY INT iPlayerShieldIndex = GGSM_INVALID_ENTITY // Internal Counters INT iEntitySearchIndex INT iProjectileSearchIndex INT iExplosionSearchIndex INT iEntitiesActive INT iGroupsActive INT iProjectilesActive INT iEnemyProjectilesActive INT iSpawnIndexCounter INT iSpawnsUsed INT iMaxEntitiesActive INT iMaxGroupsActive INT iMaxProjectilesActive // Sundry GGSM_DIALOG_CONTROLLER sDialogController GGSM_ENTITY_GROUP sEntityGroup[GGSM_MAX_ENTITY_GROUPS] GGSM_SPRITE_TYPE eWeaponSlot[GGSM_MAX_WEAPON_SLOTS] GGSM_FX_SPRITE sFXSprite[GGSM_MAX_FX_SPRITES] GGSM_POWER_UP sPowerUp[GGSM_MAX_POWER_UPS] GGSM_SPWEAPON_DATA sSpWeaponData[GGSM_MAX_ACTIVE_SPWEAPONS] GGSM_BGSCROLLER sBGScroller // Rendering GGSM_CAMERA sCamera GGSM_TILEMAP sTileMap GGSM_TEXTPIVOT eTextPivot VECTOR_2D vTextScale GGSM_ZSORTDATA sZSortData[GGSM_MAX_ENTITIES] // Story Variables VECTOR_2D vStoryBasePos FLOAT fStoryScrollRate FLOAT fStoryMinWidth = 800.0 //200.0 FLOAT fStoryMaxWidth = 1600.0 FLOAT fStoryFadeOutYPos = 400.0 //-750.0 // Flags GGSM_HELP_BIT eHelpFlags GGSM_STAGE_BIT eStageFlags GGSM_CHALLENGE_BIT eChallengeFlags GGSM_TEXDICT eLoadedTextureFlags // Timers FLOAT fScrollTimePerFrame = GGSM_SCROLL_TIME_PER_FRAME FLOAT fTimeScale = 1.0 FLOAT fDeltaTime FLOAT fFadeTime = 0.0 FLOAT fFadeAlpha = 0.0 FLOAT fFakeFadeAlpha = 0.0 FLOAT fFakeFadeTime = 0.0 FLOAT fWhiteOutAlpha = 0.0 FLOAT fWhiteOutFadeTime = 0.0 FLOAT fPlayerDeadTimer = 0.0 FLOAT fGrazeRadius = 70.0 FLOAT fGrazeTimer = 0.0 FLOAT fGrazeTime = 0.1625 BOOL bGrazed = FALSE BOOL bPowerUpCollected = FALSE INT iGraze = 0 INT iLastEnemyDeathTimeMS INT iLastMonkeyFireSoundTimeMS = -HIGHEST_INT // Stats STRUCT_ARCADE_CABINET sGameStats INT iPlayerLives = 3 INT iExtendPtsCounter = 0 INT iEnemiesCreated INT iEnemiesDestroyed INT iSectorBonus INT iNoMissBonus INT iTakedownBonus INT iAllClearBonus INT iNoDamageBonus FLOAT fChainMultiplier = 0.0 FLOAT fKillStreakTimer INT iKillStreak INT iUnlockedBitField BOOL bTrophyUnlockedThisSession BOOL bHardMode = FALSE // Other Stuff BINK_MOVIE_ID sBinkMovie RGBA_COLOUR_STRUCT rgbaBlack RGBA_COLOUR_STRUCT rgbaWhite RGBA_COLOUR_STRUCT rgbaSprite RGBA_COLOUR_STRUCT rgbaBGSprite SCRIPT_CONTROL_HOLD_TIMER sQuitTimer SCRIPT_CONTROL_HOLD_TIMER sStartBtnTimer ARCADE_CABINET_ANIM_EVENT_STRUCT sArcadeCabinetAnimEvent ENDSTRUCT //------------------------------------------------- // VARIABLES //------------------------------------------------- GGSM_DATA sGGSMData //------------------------------------------------- // SYSTEM DEBUG STRING FUNCS //------------------------------------------------- #IF IS_DEBUG_BUILD FUNC STRING GGSM_ANIM_BIT_TO_STRING(GGSM_ANIM_BIT eType) SWITCH (eType) CASE GGSM_ANIM_BIT_NONE RETURN "GGSM_ANIM_BIT_NONE" CASE GGSM_ANIM_BIT_LOOP RETURN "GGSM_ANIM_BIT_LOOP" CASE GGSM_ANIM_BIT_PING_PONG RETURN "GGSM_ANIM_BIT_PING_PONG" CASE GGSM_ANIM_BIT_DESTROY_AT_END RETURN "GGSM_ANIM_BIT_DESTROY_AT_END" ENDSWITCH RETURN "GGSM_ANIM_BIT_INVALID" ENDFUNC FUNC STRING GGSM_BOSS_TYPE_TO_STRING(GGSM_BOSS_TYPE eType) SWITCH (eType) CASE GGSM_BOSS_NONE RETURN "GGSM_BOSS_NONE" CASE GGSM_BOSS_BREAD RETURN "GGSM_BOSS_BREAD" CASE GGSM_BOSS_DR_DANK RETURN "GGSM_BOSS_DR_DANK" CASE GGSM_BOSS_GRANANA RETURN "GGSM_BOSS_GRANANA" CASE GGSM_BOSS_MARINE RETURN "GGSM_BOSS_MARINE" CASE GGSM_BOSS_SMOOTHIE RETURN "GGSM_BOSS_SMOOTHIE" CASE NUM_GGSM_BOSS_TYPE RETURN "NUM_GGSM_BOSS_TYPE" ENDSWITCH RETURN "GGSM_BOSS_TYPE_INVALID" ENDFUNC FUNC STRING GGSM_BOSS_STATE_TO_STRING(GGSM_BOSS_STATE eType) SWITCH (eType) CASE GGSM_BOSS_STATE_NONE RETURN "GGSM_BOSS_STATE_NONE" CASE GGSM_BOSS_STATE_LOADING RETURN "GGSM_BOSS_STATE_LOADING" CASE GGSM_BOSS_STATE_CREATE RETURN "GGSM_BOSS_STATE_CREATE" CASE GGSM_BOSS_STATE_ARRIVE RETURN "GGSM_BOSS_STATE_ARRIVE" CASE GGSM_BOSS_STATE_ACTIVE RETURN "GGSM_BOSS_STATE_ACTIVE" CASE GGSM_BOSS_STATE_PATTERN_A RETURN "GGSM_BOSS_STATE_PATTERN_A" CASE GGSM_BOSS_STATE_PATTERN_B RETURN "GGSM_BOSS_STATE_PATTERN_B" CASE GGSM_BOSS_STATE_PATTERN_C RETURN "GGSM_BOSS_STATE_PATTERN_C" CASE GGSM_BOSS_STATE_PATTERN_D RETURN "GGSM_BOSS_STATE_PATTERN_D" CASE GGSM_BOSS_STATE_PATTERN_E RETURN "GGSM_BOSS_STATE_PATTERN_E" CASE GGSM_BOSS_STATE_PLAYER_DEAD RETURN "GGSM_BOSS_STATE_PLAYER_DEAD" CASE GGSM_BOSS_STATE_DEAD RETURN "GGSM_BOSS_STATE_DEAD" CASE GGSM_BOSS_STATE_DONE RETURN "GGSM_BOSS_STATE_DONE" CASE NUM_GGSM_BOSS_STATE RETURN "NUM_GGSM_BOSS_STATE" ENDSWITCH RETURN "GGSM_BOSS_STATE_INVALID" ENDFUNC FUNC STRING GGSM_CHALLENGE_BIT_TO_STRING(GGSM_CHALLENGE_BIT eType) SWITCH (eType) CASE GGSM_CHALLENGE_BIT_NONE RETURN "GGSM_CHALLENGE_BIT_NONE" CASE GGSM_CHALLENGE_BIT_APE_ESCAPE RETURN "GGSM_CHALLENGE_BIT_APE_ESCAPE" CASE GGSM_CHALLENGE_BIT_MONKEY_MIND RETURN "GGSM_CHALLENGE_BIT_MONKEY_MIND" CASE GGSM_CHALLENGE_BIT_ASTROCHIMP_B RETURN "GGSM_CHALLENGE_BIT_ASTROCHIMP_B" CASE GGSM_CHALLENGE_BIT_ASTROCHIMP_S RETURN "GGSM_CHALLENGE_BIT_ASTROCHIMP_S" CASE GGSM_CHALLENGE_BIT_ASTROCHIMP_G RETURN "GGSM_CHALLENGE_BIT_ASTROCHIMP_G" CASE GGSM_CHALLENGE_BIT_ASTROCHIMP_P RETURN "GGSM_CHALLENGE_BIT_ASTROCHIMP_P" ENDSWITCH RETURN "GGSM_CHALLENGE_BIT_INVALID" ENDFUNC FUNC STRING GGSM_SUBSTATE_TO_STRING(GGSM_SUBSTATE eType) SWITCH (eType) CASE GGSM_SUBSTATE_NONE RETURN "GGSM_SUBSTATE_NONE" CASE GGSM_SUBSTATE_INIT RETURN "GGSM_SUBSTATE_INIT" CASE GGSM_SUBSTATE_LOADING RETURN "GGSM_SUBSTATE_LOADING" CASE GGSM_SUBSTATE_ACTIVE RETURN "GGSM_SUBSTATE_ACTIVE" CASE GGSM_SUBSTATE_MAP_FLY_START RETURN "GGSM_SUBSTATE_MAP_FLY_START" CASE GGSM_SUBSTATE_MAP_FLY RETURN "GGSM_SUBSTATE_MAP_FLY" CASE GGSM_SUBSTATE_MAP_FLY_WAIT RETURN "GGSM_SUBSTATE_MAP_FLY_WAIT" CASE GGSM_SUBSTATE_MAP_DONE RETURN "GGSM_SUBSTATE_MAP_DONE" CASE GGSM_SUBSTATE_CLR_DIALOG RETURN "GGSM_SUBSTATE_CLR_DIALOG" CASE GGSM_SUBSTATE_CLR_STAGE_CLEAR RETURN "GGSM_SUBSTATE_CLR_STAGE_CLEAR" CASE GGSM_SUBSTATE_CLR_STAGE_BONUS RETURN "GGSM_SUBSTATE_CLR_STAGE_BONUS" CASE GGSM_SUBSTATE_CLR_SECTOR_BONUS RETURN "GGSM_SUBSTATE_CLR_SECTOR_BONUS" CASE GGSM_SUBSTATE_CLR_TAKEDOWN_BONUS RETURN "GGSM_SUBSTATE_CLR_TAKEDOWN_BONUS" CASE GGSM_SUBSTATE_CLR_NO_MISS_BONUS RETURN "GGSM_SUBSTATE_CLR_NO_MISS_BONUS" CASE GGSM_SUBSTATE_CLR_ALL_CLEAR_BONUS RETURN "GGSM_SUBSTATE_CLR_ALL_CLEAR_BONUS" CASE GGSM_SUBSTATE_CLR_FLY_OFF RETURN "GGSM_SUBSTATE_CLR_FLY_OFF" CASE GGSM_SUBSTATE_CLR_FLY_OFF_DONE RETURN "GGSM_SUBSTATE_CLR_FLY_OFF_DONE" CASE GGSM_SUBSTATE_CLEANUP_TO_LDB RETURN "GGSM_SUBSTATE_CLEANUP_TO_LDB" CASE GGSM_SUBSTATE_CLEANUP RETURN "GGSM_SUBSTATE_CLEANUP" CASE NUM_GGSM_SUBSTATE RETURN "NUM_GGSM_SUBSTATE" ENDSWITCH RETURN "GGSM_SUBSTATE_INVALID" ENDFUNC FUNC STRING GGSM_STATE_TO_STRING(GGSM_STATE eType) SWITCH (eType) CASE GGSM_STATE_INIT RETURN "GGSM_STATE_INIT" CASE GGSM_STATE_REQUESTING_ASSETS RETURN "GGSM_STATE_REQUESTING_ASSETS" CASE GGSM_STATE_PLAYING RETURN "GGSM_STATE_PLAYING" CASE GGSM_STATE_DEVELOPER_LOGO RETURN "GGSM_STATE_DEVELOPER_LOGO" CASE GGSM_STATE_FIB_WARNING RETURN "GGSM_STATE_FIB_WARNING" CASE GGSM_STATE_PSA_SCREEN RETURN "GGSM_STATE_PSA_SCREEN" CASE GGSM_STATE_TITLE_SCREEN RETURN "GGSM_STATE_TITLE_SCREEN" CASE GGSM_STATE_STORY RETURN "GGSM_STATE_STORY" CASE GGSM_STATE_STAGE_SELECT RETURN "GGSM_STATE_STAGE_SELECT" CASE GGSM_STATE_STAGE_ACTIVE RETURN "GGSM_STATE_STAGE_ACTIVE" CASE GGSM_STATE_STAGE_CLEAR RETURN "GGSM_STATE_STAGE_CLEAR" CASE GGSM_STATE_STAGE_ALL_CLEAR RETURN "GGSM_STATE_STAGE_ALL_CLEAR" CASE GGSM_STATE_STAGE_CONGRATS RETURN "GGSM_STATE_STAGE_CONGRATS" CASE GGSM_STATE_GAME_OVER RETURN "GGSM_STATE_GAME_OVER" CASE GGSM_STATE_LEADERBOARD RETURN "GGSM_STATE_LEADERBOARD" CASE GGSM_STATE_LEADERBOARD_ENTRY RETURN "GGSM_STATE_LEADERBOARD_ENTRY" CASE GGSM_STATE_TEST_STATE RETURN "GGSM_STATE_TEST_STATE" CASE GGSM_STATE_CLEANUP RETURN "GGSM_STATE_CLEANUP" CASE NUM_GGSM_STATE RETURN "NUM_GGSM_STATE" ENDSWITCH RETURN "GGSM_STATE_INVALID" ENDFUNC FUNC STRING GGSM_COLLISION_SHAPE_TO_STRING(GGSM_COLLISION_SHAPE eType) SWITCH (eType) CASE GGSM_COLLISION_CIRCLE RETURN "GGSM_COLLISION_CIRCLE" CASE GGSM_COLLISION_CAPSULE RETURN "GGSM_COLLISION_CAPSULE" CASE NUM_GGSM_COLLISION_SHAPE RETURN "NUM_GGSM_COLLISION_SHAPE" ENDSWITCH RETURN "GGSM_COLLISION_SHAPE_INVALID" ENDFUNC FUNC STRING GGSM_DIALOG_TYPE_TO_STRING(GGSM_DIALOG_TYPE eType) SWITCH (eType) CASE GGSM_DIALOG_NONE RETURN "GGSM_DIALOG_NONE" CASE GGSM_DIALOG_ASTEROID_ENTER RETURN "GGSM_DIALOG_ASTEROID_ENTER" CASE GGSM_DIALOG_ASTEROID_LEAVE RETURN "GGSM_DIALOG_ASTEROID_LEAVE" CASE GGSM_DIALOG_GAME_OVER RETURN "GGSM_DIALOG_GAME_OVER" CASE GGSM_DIALOG_BOSS_SMOOTHIE_START RETURN "GGSM_DIALOG_BOSS_SMOOTHIE_START" CASE GGSM_DIALOG_BOSS_SMOOTHIE_DEFEATED RETURN "GGSM_DIALOG_BOSS_SMOOTHIE_DEFEATED" CASE GGSM_DIALOG_BOSS_SMOOTHIE_FAILED RETURN "GGSM_DIALOG_BOSS_SMOOTHIE_FAILED" CASE GGSM_DIALOG_BOSS_MARINE_START RETURN "GGSM_DIALOG_BOSS_MARINE_START" CASE GGSM_DIALOG_BOSS_MARINE_DEFEATED RETURN "GGSM_DIALOG_BOSS_MARINE_DEFEATED" CASE GGSM_DIALOG_BOSS_MARINE_FAILED RETURN "GGSM_DIALOG_BOSS_MARINE_FAILED" CASE GGSM_DIALOG_BOSS_GRANANA_START RETURN "GGSM_DIALOG_BOSS_GRANANA_START" CASE GGSM_DIALOG_BOSS_GRANANA_DEFEATED RETURN "GGSM_DIALOG_BOSS_GRANANA_DEFEATED" CASE GGSM_DIALOG_BOSS_GRANANA_FAILED RETURN "GGSM_DIALOG_BOSS_GRANANA_FAILED" CASE GGSM_DIALOG_BOSS_BREAD_START RETURN "GGSM_DIALOG_BOSS_BREAD_START" CASE GGSM_DIALOG_BOSS_BREAD_DEFEATED RETURN "GGSM_DIALOG_BOSS_BREAD_DEFEATED" CASE GGSM_DIALOG_BOSS_BREAD_FAILED RETURN "GGSM_DIALOG_BOSS_BREAD_FAILED" CASE GGSM_DIALOG_BOSS_DR_DANK_START RETURN "GGSM_DIALOG_BOSS_DR_DANK_START" CASE GGSM_DIALOG_BOSS_DR_DANK_DEFEATED RETURN "GGSM_DIALOG_BOSS_DR_DANK_DEFEATED" CASE GGSM_DIALOG_BOSS_DR_DANK_FAILED RETURN "GGSM_DIALOG_BOSS_DR_DANK_FAILED" CASE NUM_GGSM_DIALOG_TYPE RETURN "NUM_GGSM_DIALOG_TYPE" ENDSWITCH RETURN "GGSM_DIALOG_TYPE_INVALID" ENDFUNC FUNC STRING GGSM_DIALOG_STATE_TO_STRING(GGSM_DIALOG_STATE eType) SWITCH (eType) CASE GGSM_DIALOG_STATE_NONE RETURN "GGSM_DIALOG_STATE_NONE" CASE GGSM_DIALOG_STATE_INIT RETURN "GGSM_DIALOG_STATE_INIT" CASE GGSM_DIALOG_STATE_START RETURN "GGSM_DIALOG_STATE_START" CASE GGSM_DIALOG_STATE_ACTIVE RETURN "GGSM_DIALOG_STATE_ACTIVE" CASE GGSM_DIALOG_STATE_LEFT_SPEAK RETURN "GGSM_DIALOG_STATE_LEFT_SPEAK" CASE GGSM_DIALOG_STATE_RIGHT_SPEAK RETURN "GGSM_DIALOG_STATE_RIGHT_SPEAK" CASE GGSM_DIALOG_STATE_END RETURN "GGSM_DIALOG_STATE_END" CASE GGSM_DIALOG_STATE_DONE RETURN "GGSM_DIALOG_STATE_DONE" CASE GGSM_DIALOG_STATE_SHUTDOWN RETURN "GGSM_DIALOG_STATE_SHUTDOWN" CASE NUM_GGSM_DIALOG_STATE RETURN "NUM_GGSM_DIALOG_STATE" ENDSWITCH RETURN "GGSM_DIALOG_STATE_INVALID" ENDFUNC FUNC STRING GGSM_EDITOR_BIT_TO_STRING(GGSM_EDITOR_BIT eType) SWITCH (eType) CASE GGSM_EDITOR_BIT_NONE RETURN "GGSM_EDITOR_BIT_NONE" CASE GGSM_EDITOR_BIT_EXPORT RETURN "GGSM_EDITOR_BIT_EXPORT" CASE GGSM_EDITOR_BIT_COPY_FROM_DATA RETURN "GGSM_EDITOR_BIT_COPY_FROM_DATA" CASE GGSM_EDITOR_BIT_COPY_TO_DATA RETURN "GGSM_EDITOR_BIT_COPY_TO_DATA" CASE GGSM_EDITOR_BIT_EDIT_MODE RETURN "GGSM_EDITOR_BIT_EDIT_MODE" CASE GGSM_EDITOR_BIT_TEST_SYSTEM RETURN "GGSM_EDITOR_BIT_TEST_SYSTEM" CASE GGSM_EDITOR_BIT_SAVED RETURN "GGSM_EDITOR_BIT_SAVED" ENDSWITCH RETURN "GGSM_EDITOR_BIT_INVALID" ENDFUNC FUNC STRING GGSM_ENTITY_BIT_TO_STRING(GGSM_ENTITY_BIT eType) SWITCH (eType) CASE GGSM_ENTITY_BIT_NONE RETURN "GGSM_ENTITY_BIT_NONE" CASE GGSM_ENTITY_BIT_IS_PLAYER_ALLIED RETURN "GGSM_ENTITY_BIT_IS_PLAYER_ALLIED" CASE GGSM_ENTITY_BIT_ON_SCREEN RETURN "GGSM_ENTITY_BIT_ON_SCREEN" CASE GGSM_ENTITY_BIT_ENTERED_PLAYFIELD RETURN "GGSM_ENTITY_BIT_ENTERED_PLAYFIELD" CASE GGSM_ENTITY_BIT_REMOVE_WHEN_OFFSCREEN RETURN "GGSM_ENTITY_BIT_REMOVE_WHEN_OFFSCREEN" CASE GGSM_ENTITY_BIT_FORCE_SCROLLING_TO_STOP RETURN "GGSM_ENTITY_BIT_FORCE_SCROLLING_TO_STOP" CASE GGSM_ENTITY_BIT_NO_COLLISION RETURN "GGSM_ENTITY_BIT_NO_COLLISION" CASE GGSM_ENTITY_BIT_TOOK_DAMAGE_THIS_FRAME RETURN "GGSM_ENTITY_BIT_TOOK_DAMAGE_THIS_FRAME" CASE GGSM_ENTITY_BIT_SELF_DESTRUCT RETURN "GGSM_ENTITY_BIT_SELF_DESTRUCT" CASE GGSM_ENTITY_BIT_DAMAGE_HURTS_ROOT RETURN "GGSM_ENTITY_BIT_DAMAGE_HURTS_ROOT" CASE GGSM_ENTITY_BIT_REFLECT_BULLETS RETURN "GGSM_ENTITY_BIT_REFLECT_BULLETS" CASE GGSM_ENTITY_BIT_WPN_ACTIVE RETURN "GGSM_ENTITY_BIT_WPN_ACTIVE" CASE GGSM_ENTITY_BIT_WPN_ALT_SPREAD RETURN "GGSM_ENTITY_BIT_WPN_ALT_SPREAD" CASE GGSM_ENTITY_BIT_WPN_RANDOM_SPREAD RETURN "GGSM_ENTITY_BIT_WPN_RANDOM_SPREAD" CASE GGSM_ENTITY_BIT_WPN_FIRED_THIS_FRAME RETURN "GGSM_ENTITY_BIT_WPN_FIRED_THIS_FRAME" CASE GGSM_ENTITY_BIT_WPN_MANUAL RETURN "GGSM_ENTITY_BIT_WPN_MANUAL" CASE GGSM_ENTITY_BIT_WPN_TARGETTED RETURN "GGSM_ENTITY_BIT_WPN_TARGETTED" CASE GGSM_ENTITY_BIT_WPN_FIRED_ALT_SPREAD RETURN "GGSM_ENTITY_BIT_WPN_FIRED_ALT_SPREAD" CASE GGSM_ENTITY_BIT_WPN_SINGLE_SHOT_MODE RETURN "GGSM_ENTITY_BIT_WPN_SINGLE_SHOT_MODE" CASE GGSM_ENTITY_BIT_WPN_BURST_FIRED RETURN "GGSM_ENTITY_BIT_WPN_BURST_FIRED" CASE GGSM_ENTITY_BIT_WPN_BURST_RELOAD_THIS_FRAME RETURN "GGSM_ENTITY_BIT_WPN_BURST_RELOAD_THIS_FRAME" CASE GGSM_ENTITY_BIT_WPN_FIRE_ON_ARRIVE RETURN "GGSM_ENTITY_BIT_WPN_FIRE_ON_ARRIVE" CASE GGSM_ENTITY_BIT_NO_TAKEDOWN_BONUS RETURN "GGSM_ENTITY_BIT_NO_TAKEDOWN_BONUS" CASE GGSM_ENTITY_BIT_IS_IN_BACKGROUND RETURN "GGSM_ENTITY_BIT_IS_IN_BACKGROUND" CASE GGSM_ENTITY_BIT_DIE_ONLY_FROM_EXPLOSIONS RETURN "GGSM_ENTITY_BIT_DIE_ONLY_FROM_EXPLOSIONS" ENDSWITCH RETURN "GGSM_ENTITY_BIT_INVALID" ENDFUNC FUNC STRING GGSM_ENTITY_STATE_TO_STRING(GGSM_ENTITY_STATE eType) SWITCH (eType) CASE GGSM_ENTITY_STATE_NONE RETURN "GGSM_ENTITY_STATE_NONE" CASE GGSM_ENTITY_STATE_ALIVE RETURN "GGSM_ENTITY_STATE_ALIVE" CASE GGSM_ENTITY_STATE_FAKE_EXPLODING RETURN "GGSM_ENTITY_STATE_FAKE_EXPLODING" CASE GGSM_ENTITY_STATE_EXPLODING RETURN "GGSM_ENTITY_STATE_EXPLODING" CASE GGSM_ENTITY_STATE_UNDEAD RETURN "GGSM_ENTITY_STATE_UNDEAD" CASE GGSM_ENTITY_STATE_DEAD RETURN "GGSM_ENTITY_STATE_DEAD" CASE NUM_GGSM_ENTITY_STATE RETURN "NUM_GGSM_ENTITY_STATE" ENDSWITCH RETURN "GGSM_ENTITY_STATE_INVALID" ENDFUNC FUNC STRING GGSM_ENTITY_TYPE_TO_STRING(GGSM_ENTITY_TYPE eType) SWITCH (eType) CASE GGSM_ENTITY_PLAYERSHIP RETURN "GGSM_ENTITY_PLAYERSHIP" CASE GGSM_ENTITY_PLAYERDECOY RETURN "GGSM_ENTITY_PLAYERDECOY" CASE GGSM_ENTITY_PLAYERSHIELD RETURN "GGSM_ENTITY_PLAYERSHIELD" CASE GGSM_ENTITY_BANANAGREEN RETURN "GGSM_ENTITY_BANANAGREEN" CASE GGSM_ENTITY_BANANAYELLOW RETURN "GGSM_ENTITY_BANANAYELLOW" CASE GGSM_ENTITY_BANANARED RETURN "GGSM_ENTITY_BANANARED" CASE GGSM_ENTITY_BANANARED_ATTACK RETURN "GGSM_ENTITY_BANANARED_ATTACK" CASE GGSM_ENTITY_BANANAJETPAC RETURN "GGSM_ENTITY_BANANAJETPAC" CASE GGSM_ENTITY_BANANAJETPAC_RED RETURN "GGSM_ENTITY_BANANAJETPAC_RED" CASE GGSM_ENTITY_BANANAJETPAC_GREEN RETURN "GGSM_ENTITY_BANANAJETPAC_GREEN" CASE GGSM_ENTITY_BANDANA_RED RETURN "GGSM_ENTITY_BANDANA_RED" CASE GGSM_ENTITY_BANDANA_GREEN RETURN "GGSM_ENTITY_BANDANA_GREEN" CASE GGSM_ENTITY_CHERRYBOMB RETURN "GGSM_ENTITY_CHERRYBOMB" CASE GGSM_ENTITY_CIRCLE_SHIP_RED RETURN "GGSM_ENTITY_CIRCLE_SHIP_RED" CASE GGSM_ENTITY_CIRCLE_SHIP_GREEN RETURN "GGSM_ENTITY_CIRCLE_SHIP_GREEN" CASE GGSM_ENTITY_CIRCLE_SHIP_YELLOW RETURN "GGSM_ENTITY_CIRCLE_SHIP_YELLOW" CASE GGSM_ENTITY_ARMOUR_FRUITBOWL RETURN "GGSM_ENTITY_ARMOUR_FRUITBOWL" CASE GGSM_ENTITY_FRUITBOWL RETURN "GGSM_ENTITY_FRUITBOWL" CASE GGSM_ENTITY_METEOR_BIG RETURN "GGSM_ENTITY_METEOR_BIG" CASE GGSM_ENTITY_METEOR_MEDIUM RETURN "GGSM_ENTITY_METEOR_MEDIUM" CASE GGSM_ENTITY_METEOR_SMALL RETURN "GGSM_ENTITY_METEOR_SMALL" CASE GGSM_ENTITY_METEOR_VERY_BIG RETURN "GGSM_ENTITY_METEOR_VERY_BIG" CASE GGSM_ENTITY_METEOR_HUGE RETURN "GGSM_ENTITY_METEOR_HUGE" CASE GGSM_ENTITY_CRUMB_METEOR RETURN "GGSM_ENTITY_CRUMB_METEOR" CASE GGSM_ENTITY_PEANUT_METEOR RETURN "GGSM_ENTITY_PEANUT_METEOR" CASE GGSM_ENTITY_SMALL_SMOOTHIE RETURN "GGSM_ENTITY_SMALL_SMOOTHIE" CASE GGSM_ENTITY_BANANASLICE_FRONT RETURN "GGSM_ENTITY_BANANASLICE_FRONT" CASE GGSM_ENTITY_BANANASLICE RETURN "GGSM_ENTITY_BANANASLICE" CASE GGSM_ENTITY_BANANASLICE_BACK RETURN "GGSM_ENTITY_BANANASLICE_BACK" CASE GGSM_ENTITY_BOSS_BREAD_EYEBROWS RETURN "GGSM_ENTITY_BOSS_BREAD_EYEBROWS" CASE GGSM_ENTITY_BOSS_BREAD_FACE RETURN "GGSM_ENTITY_BOSS_BREAD_FACE" CASE GGSM_ENTITY_BOSS_BREAD_BOTTOM_LEFT RETURN "GGSM_ENTITY_BOSS_BREAD_BOTTOM_LEFT" CASE GGSM_ENTITY_BOSS_BREAD_BOTTOM_RIGHT RETURN "GGSM_ENTITY_BOSS_BREAD_BOTTOM_RIGHT" CASE GGSM_ENTITY_BOSS_BREAD_TOP_LEFT RETURN "GGSM_ENTITY_BOSS_BREAD_TOP_LEFT" CASE GGSM_ENTITY_BOSS_BREAD_TOP_RIGHT RETURN "GGSM_ENTITY_BOSS_BREAD_TOP_RIGHT" CASE GGSM_ENTITY_BOSS_GRANANA RETURN "GGSM_ENTITY_BOSS_GRANANA" CASE GGSM_ENTITY_BOSS_GRANANA_GLASSES RETURN "GGSM_ENTITY_BOSS_GRANANA_GLASSES" CASE GGSM_ENTITY_BOSS_GRANANA_HAIR RETURN "GGSM_ENTITY_BOSS_GRANANA_HAIR" CASE GGSM_ENTITY_BOSS_DR_DANK_TOP RETURN "GGSM_ENTITY_BOSS_DR_DANK_TOP" CASE GGSM_ENTITY_BOSS_DR_DANK_MIDDLE RETURN "GGSM_ENTITY_BOSS_DR_DANK_MIDDLE" CASE GGSM_ENTITY_BOSS_DR_DANK_BOTTOM RETURN "GGSM_ENTITY_BOSS_DR_DANK_BOTTOM" CASE GGSM_ENTITY_BOSS_DR_DANK_RLAUNCHER RETURN "GGSM_ENTITY_BOSS_DR_DANK_RLAUNCHER" CASE GGSM_ENTITY_BOSS_DR_DANK_RHLAUNCHER RETURN "GGSM_ENTITY_BOSS_DR_DANK_RHLAUNCHER" CASE GGSM_ENTITY_BOSS_MARINE RETURN "GGSM_ENTITY_BOSS_MARINE" CASE GGSM_ENTITY_BOSS_MARINE_LAUNCHER RETURN "GGSM_ENTITY_BOSS_MARINE_LAUNCHER" CASE GGSM_ENTITY_BOSS_SMOOTHIE RETURN "GGSM_ENTITY_BOSS_SMOOTHIE" CASE GGSM_ENTITY_BANANASPLIT_1 RETURN "GGSM_ENTITY_BANANASPLIT_1" CASE GGSM_ENTITY_BANANASPLIT_2 RETURN "GGSM_ENTITY_BANANASPLIT_2" CASE GGSM_ENTITY_BANANASPLIT_3 RETURN "GGSM_ENTITY_BANANASPLIT_3" CASE GGSM_ENTITY_BANANASPLIT_4 RETURN "GGSM_ENTITY_BANANASPLIT_4" CASE NUM_GGSM_ENTITY_TYPE RETURN "NUM_GGSM_ENTITY_TYPE" CASE GGSM_ENTITY_INVALID RETURN "GGSM_ENTITY_INVALID" ENDSWITCH RETURN "GGSM_ENTITY_TYPE_INVALID" ENDFUNC FUNC STRING GGSM_EXPLOSION_TYPE_TO_STRING(GGSM_EXPLOSION_TYPE eType) SWITCH (eType) CASE GGSM_EXPLOSION_STANDARD RETURN "GGSM_EXPLOSION_STANDARD" CASE GGSM_EXPLOSION_MULTIPLE RETURN "GGSM_EXPLOSION_MULTIPLE" CASE GGSM_EXPLOSION_BOSS RETURN "GGSM_EXPLOSION_BOSS" ENDSWITCH RETURN "GGSM_EXPLOSION_TYPE_INVALID" ENDFUNC FUNC STRING GGSM_FORMATION_TYPE_TO_STRING(GGSM_FORMATION_TYPE eType) SWITCH (eType) CASE GGSM_FORMATION_NONE RETURN "GGSM_FORMATION_NONE" CASE GGSM_FORMATION_STANDARD RETURN "GGSM_FORMATION_STANDARD" CASE GGSM_FORMATION_POWER_UP RETURN "GGSM_FORMATION_POWER_UP" CASE GGSM_FORMATION_HORZLINE RETURN "GGSM_FORMATION_HORZLINE" CASE GGSM_FORMATION_VERTLINE RETURN "GGSM_FORMATION_VERTLINE" CASE GGSM_FORMATION_FLYING_V RETURN "GGSM_FORMATION_FLYING_V" CASE GGSM_FORMATION_LINE RETURN "GGSM_FORMATION_LINE" CASE GGSM_FORMATION_MIRROR_X RETURN "GGSM_FORMATION_MIRROR_X" CASE GGSM_FORMATION_MIRROR_Y RETURN "GGSM_FORMATION_MIRROR_Y" CASE GGSM_FORMATION_INTERLEAVED RETURN "GGSM_FORMATION_INTERLEAVED" CASE GGSM_FORMATION_DELAYED_HLINE RETURN "GGSM_FORMATION_DELAYED_HLINE" CASE GGSM_FORMATION_DELAYED_VLINE RETURN "GGSM_FORMATION_DELAYED_VLINE" CASE GGSM_FORMATION_ARMOUR_FRUITBOWL RETURN "GGSM_FORMATION_ARMOUR_FRUITBOWL" CASE GGSM_FORMATION_ARMOUR_FRUITBOWL1 RETURN "GGSM_FORMATION_ARMOUR_FRUITBOWL1" CASE GGSM_FORMATION_ARMOUR_FRUITBOWL2 RETURN "GGSM_FORMATION_ARMOUR_FRUITBOWL2" CASE GGSM_FORMATION_ARMOUR_FRUITBOWL3 RETURN "GGSM_FORMATION_ARMOUR_FRUITBOWL3" CASE GGSM_FORMATION_ARMOUR_FRUITBOWL4 RETURN "GGSM_FORMATION_ARMOUR_FRUITBOWL4" CASE GGSM_FORMATION_BANANASNAKE RETURN "GGSM_FORMATION_BANANASNAKE" CASE GGSM_FORMATION_BOSS_BREAD RETURN "GGSM_FORMATION_BOSS_BREAD" CASE GGSM_FORMATION_BOSS_GRANANA RETURN "GGSM_FORMATION_BOSS_GRANANA" CASE GGSM_FORMATION_BOSS_DR_DANK RETURN "GGSM_FORMATION_BOSS_DR_DANK" CASE GGSM_FORMATION_BOSS_MARINE RETURN "GGSM_FORMATION_BOSS_MARINE" CASE GGSM_FORMATION_BOSS_SMOOTHIE RETURN "GGSM_FORMATION_BOSS_SMOOTHIE" CASE NUM_GGSM_FORMATION_TYPE RETURN "NUM_GGSM_FORMATION_TYPE" ENDSWITCH RETURN "GGSM_FORMATION_TYPE_INVALID" ENDFUNC FUNC STRING GGSM_FX_SPRITE_BIT_TO_STRING(GGSM_FX_SPRITE_BIT eType) SWITCH (eType) CASE GGSM_FX_SPRITE_BIT_NONE RETURN "GGSM_FX_SPRITE_BIT_NONE" CASE GGSM_FX_SPRITE_BIT_ACTIVE RETURN "GGSM_FX_SPRITE_BIT_ACTIVE" CASE GGSM_FX_SPRITE_BIT_ON_SCREEN RETURN "GGSM_FX_SPRITE_BIT_ON_SCREEN" CASE GGSM_FX_SPRITE_BIT_ENTERED_PLAYFIELD RETURN "GGSM_FX_SPRITE_BIT_ENTERED_PLAYFIELD" CASE GGSM_FX_SPRITE_BIT_REMOVE_WHEN_OFFSCREEN RETURN "GGSM_FX_SPRITE_BIT_REMOVE_WHEN_OFFSCREEN" CASE GGSM_FX_SPRITE_BIT_BG_SPRITE RETURN "GGSM_FX_SPRITE_BIT_BG_SPRITE" ENDSWITCH RETURN "GGSM_FX_SPRITE_BIT_INVALID" ENDFUNC FUNC STRING GGSM_HELP_BIT_TO_STRING(GGSM_HELP_BIT eType) SWITCH (eType) CASE GGSM_HELP_BIT_NONE RETURN "GGSM_HELP_BIT_NONE" CASE GGSM_HELP_BIT_MOVE RETURN "GGSM_HELP_BIT_MOVE" CASE GGSM_HELP_BIT_SHOOT RETURN "GGSM_HELP_BIT_SHOOT" CASE GGSM_HELP_BIT_SPECIAL RETURN "GGSM_HELP_BIT_SPECIAL" CASE GGSM_HELP_BIT_DEFENSE RETURN "GGSM_HELP_BIT_DEFENSE" CASE GGSM_HELP_BIT_POWERUP RETURN "GGSM_HELP_BIT_POWERUP" ENDSWITCH RETURN "GGSM_HELP_BIT_INVALID" ENDFUNC FUNC STRING GGSM_HUD_CHAR_TO_STRING(GGSM_HUD_CHAR eType) SWITCH (eType) CASE GGSM_HUD_CHAR_INVALID RETURN "GGSM_HUD_CHAR_INVALID" CASE GGSM_HUD_CHAR_SPACE RETURN "GGSM_HUD_CHAR_SPACE" CASE GGSM_HUD_CHAR_0 RETURN "GGSM_HUD_CHAR_0" CASE GGSM_HUD_CHAR_1 RETURN "GGSM_HUD_CHAR_1" CASE GGSM_HUD_CHAR_2 RETURN "GGSM_HUD_CHAR_2" CASE GGSM_HUD_CHAR_3 RETURN "GGSM_HUD_CHAR_3" CASE GGSM_HUD_CHAR_4 RETURN "GGSM_HUD_CHAR_4" CASE GGSM_HUD_CHAR_5 RETURN "GGSM_HUD_CHAR_5" CASE GGSM_HUD_CHAR_6 RETURN "GGSM_HUD_CHAR_6" CASE GGSM_HUD_CHAR_7 RETURN "GGSM_HUD_CHAR_7" CASE GGSM_HUD_CHAR_8 RETURN "GGSM_HUD_CHAR_8" CASE GGSM_HUD_CHAR_9 RETURN "GGSM_HUD_CHAR_9" CASE GGSM_HUD_CHAR_A RETURN "GGSM_HUD_CHAR_A" CASE GGSM_HUD_CHAR_B RETURN "GGSM_HUD_CHAR_B" CASE GGSM_HUD_CHAR_C RETURN "GGSM_HUD_CHAR_C" CASE GGSM_HUD_CHAR_D RETURN "GGSM_HUD_CHAR_D" CASE GGSM_HUD_CHAR_E RETURN "GGSM_HUD_CHAR_E" CASE GGSM_HUD_CHAR_F RETURN "GGSM_HUD_CHAR_F" CASE GGSM_HUD_CHAR_G RETURN "GGSM_HUD_CHAR_G" CASE GGSM_HUD_CHAR_H RETURN "GGSM_HUD_CHAR_H" CASE GGSM_HUD_CHAR_I RETURN "GGSM_HUD_CHAR_I" CASE GGSM_HUD_CHAR_J RETURN "GGSM_HUD_CHAR_J" CASE GGSM_HUD_CHAR_K RETURN "GGSM_HUD_CHAR_K" CASE GGSM_HUD_CHAR_L RETURN "GGSM_HUD_CHAR_L" CASE GGSM_HUD_CHAR_M RETURN "GGSM_HUD_CHAR_M" CASE GGSM_HUD_CHAR_N RETURN "GGSM_HUD_CHAR_N" CASE GGSM_HUD_CHAR_O RETURN "GGSM_HUD_CHAR_O" CASE GGSM_HUD_CHAR_P RETURN "GGSM_HUD_CHAR_P" CASE GGSM_HUD_CHAR_Q RETURN "GGSM_HUD_CHAR_Q" CASE GGSM_HUD_CHAR_R RETURN "GGSM_HUD_CHAR_R" CASE GGSM_HUD_CHAR_S RETURN "GGSM_HUD_CHAR_S" CASE GGSM_HUD_CHAR_T RETURN "GGSM_HUD_CHAR_T" CASE GGSM_HUD_CHAR_U RETURN "GGSM_HUD_CHAR_U" CASE GGSM_HUD_CHAR_V RETURN "GGSM_HUD_CHAR_V" CASE GGSM_HUD_CHAR_W RETURN "GGSM_HUD_CHAR_W" CASE GGSM_HUD_CHAR_X RETURN "GGSM_HUD_CHAR_X" CASE GGSM_HUD_CHAR_Y RETURN "GGSM_HUD_CHAR_Y" CASE GGSM_HUD_CHAR_Z RETURN "GGSM_HUD_CHAR_Z" CASE GGSM_HUD_CHAR_APOSTROPHE RETURN "GGSM_HUD_CHAR_APOSTROPHE" CASE GGSM_HUD_CHAR_BACKSLASH RETURN "GGSM_HUD_CHAR_BACKSLASH" CASE GGSM_HUD_CHAR_CLOSEBRACKET RETURN "GGSM_HUD_CHAR_CLOSEBRACKET" CASE GGSM_HUD_CHAR_COLON RETURN "GGSM_HUD_CHAR_COLON" CASE GGSM_HUD_CHAR_COMMA RETURN "GGSM_HUD_CHAR_COMMA" CASE GGSM_HUD_CHAR_DOLLAR RETURN "GGSM_HUD_CHAR_DOLLAR" CASE GGSM_HUD_CHAR_EXCLAMATION RETURN "GGSM_HUD_CHAR_EXCLAMATION" CASE GGSM_HUD_CHAR_FULL_STOP RETURN "GGSM_HUD_CHAR_FULL_STOP" CASE GGSM_HUD_CHAR_MINUS RETURN "GGSM_HUD_CHAR_MINUS" CASE GGSM_HUD_CHAR_OPEN_BRACKET RETURN "GGSM_HUD_CHAR_OPEN_BRACKET" CASE GGSM_HUD_CHAR_PLUS RETURN "GGSM_HUD_CHAR_PLUS" CASE GGSM_HUD_CHAR_QUESTION RETURN "GGSM_HUD_CHAR_QUESTION" CASE GGSM_HUD_CHAR_SEMI_COLON RETURN "GGSM_HUD_CHAR_SEMI_COLON" CASE GGSM_HUD_CHAR_SPEECH RETURN "GGSM_HUD_CHAR_SPEECH" CASE GGSM_HUD_CHAR_STAR RETURN "GGSM_HUD_CHAR_STAR" CASE NUM_GGSM_HUD_CHAR RETURN "NUM_GGSM_HUD_CHAR" ENDSWITCH RETURN "GGSM_HUD_CHAR_INVALID" ENDFUNC FUNC STRING GGSM_GROUP_BIT_TO_STRING(GGSM_GROUP_BIT eType) SWITCH (eType) CASE GGSM_GROUP_BIT_NONE RETURN "GGSM_GROUP_BIT_NONE" CASE GGSM_GROUP_BIT_ACTIVE RETURN "GGSM_GROUP_BIT_ACTIVE" CASE GGSM_GROUP_BIT_IS_PLAYER_GROUP RETURN "GGSM_GROUP_BIT_IS_PLAYER_GROUP" CASE GGSM_GROUP_BIT_DIE_WHEN_LEADER_DIES RETURN "GGSM_GROUP_BIT_DIE_WHEN_LEADER_DIES" CASE GGSM_GROUP_BIT_ALLOW_OFFSCREEN RETURN "GGSM_GROUP_BIT_ALLOW_OFFSCREEN" CASE GGSM_GROUP_BIT_END_WHEN_ALL_OFFSCREEN RETURN "GGSM_GROUP_BIT_END_WHEN_ALL_OFFSCREEN" CASE GGSM_GROUP_BIT_IS_FORMATION RETURN "GGSM_GROUP_BIT_IS_FORMATION" ENDSWITCH RETURN "GGSM_GROUP_BIT_INVALID" ENDFUNC FUNC STRING GGSM_INPUT_TO_STRING(GGSM_INPUT eType) SWITCH (eType) CASE GGSM_INPUT_LSTICK RETURN "GGSM_INPUT_LSTICK" CASE GGSM_INPUT_RSTICK RETURN "GGSM_INPUT_RSTICK" CASE GGSM_INPUT_DPAD RETURN "GGSM_INPUT_DPAD" ENDSWITCH RETURN "GGSM_INPUT_INVALID" ENDFUNC FUNC STRING GGSM_MOVE_BIT_TO_STRING(GGSM_MOVE_BIT eType) SWITCH (eType) CASE GGSM_MOVE_BIT_NONE RETURN "GGSM_MOVE_BIT_NONE" CASE GGSM_MOVE_BIT_COMPLETE RETURN "GGSM_MOVE_BIT_COMPLETE" CASE GGSM_MOVE_BIT_LAST_PLANE_SIDE RETURN "GGSM_MOVE_BIT_LAST_PLANE_SIDE" CASE GGSM_MOVE_BIT_TARGET_POINT_REACHED RETURN "GGSM_MOVE_BIT_TARGET_POINT_REACHED" CASE GGSM_MOVE_BIT_ROTATE_TO_FACE_DIRECTION RETURN "GGSM_MOVE_BIT_ROTATE_TO_FACE_DIRECTION" CASE GGSM_MOVE_BIT_POSITION_OVERRIDE RETURN "GGSM_MOVE_BIT_POSITION_OVERRIDE" CASE GGSM_MOVE_BIT_ACCELERATE_TO_SPEED RETURN "GGSM_MOVE_BIT_ACCELERATE_TO_SPEED" CASE GGSM_MOVE_BIT_DEACCELERATE_TO_SPEED RETURN "GGSM_MOVE_BIT_DEACCELERATE_TO_SPEED" CASE GGSM_MOVE_BIT_FORCE_MOVEMENT_TO_END RETURN "GGSM_MOVE_BIT_FORCE_MOVEMENT_TO_END" CASE GGSM_MOVE_BIT_TO_ORIGIN_ON_MOVE_ABORT RETURN "GGSM_MOVE_BIT_TO_ORIGIN_ON_MOVE_ABORT" CASE GGSM_MOVE_BIT_FLIP_RELATIVE_PATH_X RETURN "GGSM_MOVE_BIT_FLIP_RELATIVE_PATH_X" CASE GGSM_MOVE_BIT_FLIP_RELATIVE_PATH_Y RETURN "GGSM_MOVE_BIT_FLIP_RELATIVE_PATH_Y" CASE GGSM_MOVE_BIT_TARGET_POINT_REACHED_THIS_FRAME RETURN "GGSM_MOVE_BIT_TARGET_POINT_REACHED_THIS_FRAME" ENDSWITCH RETURN "GGSM_MOVE_BIT_INVALID" ENDFUNC FUNC STRING GGSM_MOVESTATE_TYPE_TO_STRING(GGSM_MOVESTATE_TYPE eType) SWITCH (eType) CASE GGSM_MOVESTATE_NONE RETURN "GGSM_MOVESTATE_NONE" CASE GGSM_MOVESTATE_START RETURN "GGSM_MOVESTATE_START" CASE GGSM_MOVESTATE_ACTIVE RETURN "GGSM_MOVESTATE_ACTIVE" CASE GGSM_MOVESTATE_ARC RETURN "GGSM_MOVESTATE_ARC" CASE GGSM_MOVESTATE_ATTACK RETURN "GGSM_MOVESTATE_ATTACK" CASE GGSM_MOVESTATE_GOTO_POS RETURN "GGSM_MOVESTATE_GOTO_POS" CASE GGSM_MOVESTATE_GOTO_STARTPOS RETURN "GGSM_MOVESTATE_GOTO_STARTPOS" CASE GGSM_MOVESTATE_GOTO_ORIGIN RETURN "GGSM_MOVESTATE_GOTO_ORIGIN" CASE GGSM_MOVESTATE_PLYR_DIALOG RETURN "GGSM_MOVESTATE_PLYR_DIALOG" CASE GGSM_MOVESTATE_PLYR_DIALOG_DONE RETURN "GGSM_MOVESTATE_PLYR_DIALOG_DONE" CASE GGSM_MOVESTATE_PLYR_INVUNERABLE RETURN "GGSM_MOVESTATE_PLYR_INVUNERABLE" CASE GGSM_MOVESTATE_RAMMING RETURN "GGSM_MOVESTATE_RAMMING" CASE GGSM_MOVESTATE_SELECT_POS RETURN "GGSM_MOVESTATE_SELECT_POS" CASE GGSM_MOVESTATE_COMPLETE RETURN "GGSM_MOVESTATE_COMPLETE" CASE NUM_GGSM_MOVESTATE_TYPE RETURN "NUM_GGSM_MOVESTATE_TYPE" ENDSWITCH RETURN "GGSM_MOVESTATE_TYPE_INVALID" ENDFUNC FUNC STRING GGSM_MOVEMENT_TYPE_TO_STRING(GGSM_MOVEMENT_TYPE eType) SWITCH (eType) CASE GGSM_MOVEMENT_NONE RETURN "GGSM_MOVEMENT_NONE" CASE GGSM_MOVEMENT_STRAIGHT RETURN "GGSM_MOVEMENT_STRAIGHT" CASE GGSM_MOVEMENT_SIN_WAVE RETURN "GGSM_MOVEMENT_SIN_WAVE" CASE GGSM_MOVEMENT_FOLLOW_PATH RETURN "GGSM_MOVEMENT_FOLLOW_PATH" CASE GGSM_MOVEMENT_FOLLOW_REL_PATH RETURN "GGSM_MOVEMENT_FOLLOW_REL_PATH" CASE GGSM_MOVEMENT_MOVE_TO_VECTOR RETURN "GGSM_MOVEMENT_MOVE_TO_VECTOR" CASE GGSM_MOVEMENT_ROTATE_TO_FACE_VECTOR RETURN "GGSM_MOVEMENT_ROTATE_TO_FACE_VECTOR" CASE GGSM_MOVEMENT_TARGETTED_WANDER RETURN "GGSM_MOVEMENT_TARGETTED_WANDER" CASE GGSM_MOVEMENT_BG_ATTACK RETURN "GGSM_MOVEMENT_BG_ATTACK" CASE GGSM_MOVEMENT_ARC_BASE_LEFT RETURN "GGSM_MOVEMENT_ARC_BASE_LEFT" CASE GGSM_MOVEMENT_ARC_TOP_RIGHT RETURN "GGSM_MOVEMENT_ARC_TOP_RIGHT" CASE GGSM_MOVEMENT_ARC_BASE_RIGHT RETURN "GGSM_MOVEMENT_ARC_BASE_RIGHT" CASE GGSM_MOVEMENT_ARC_TOP_LEFT RETURN "GGSM_MOVEMENT_ARC_TOP_LEFT" CASE GGSM_MOVEMENT_ATTACK_KAMAZAKE RETURN "GGSM_MOVEMENT_ATTACK_KAMAZAKE" CASE GGSM_MOVEMENT_BACK_AND_FORTH_X RETURN "GGSM_MOVEMENT_BACK_AND_FORTH_X" CASE GGSM_MOVEMENT_DESTRUCT_ON_IMPACT RETURN "GGSM_MOVEMENT_DESTRUCT_ON_IMPACT" CASE GGSM_MOVEMENT_FOLLOW_TEST_PATH RETURN "GGSM_MOVEMENT_FOLLOW_TEST_PATH" CASE GGSM_MOVEMENT_FOLLOW_REL_TEST_PATH RETURN "GGSM_MOVEMENT_FOLLOW_REL_TEST_PATH" CASE GGSM_MOVEMENT_FORWARD_THEN_BACK RETURN "GGSM_MOVEMENT_FORWARD_THEN_BACK" CASE GGSM_MOVEMENT_HALF_ARC_BASE_LEFT RETURN "GGSM_MOVEMENT_HALF_ARC_BASE_LEFT" CASE GGSM_MOVEMENT_HALF_ARC_TOP_RIGHT RETURN "GGSM_MOVEMENT_HALF_ARC_TOP_RIGHT" CASE GGSM_MOVEMENT_HALF_ARC_BASE_RIGHT RETURN "GGSM_MOVEMENT_HALF_ARC_BASE_RIGHT" CASE GGSM_MOVEMENT_HALF_ARC_TOP_LEFT RETURN "GGSM_MOVEMENT_HALF_ARC_TOP_LEFT" CASE GGSM_MOVEMENT_KAMAZAKE RETURN "GGSM_MOVEMENT_KAMAZAKE" CASE GGSM_MOVEMENT_ORBIT RETURN "GGSM_MOVEMENT_ORBIT" CASE GGSM_MOVEMENT_RANDOM_WANDER RETURN "GGSM_MOVEMENT_RANDOM_WANDER" CASE GGSM_MOVEMENT_SNAKE_SECTION RETURN "GGSM_MOVEMENT_SNAKE_SECTION" CASE GGSM_MOVEMENT_MIDDLE_Y_RANGE RETURN "GGSM_MOVEMENT_MIDDLE_Y_RANGE" CASE GGSM_MOVEMENT_TRACK_PLAYER_Y RETURN "GGSM_MOVEMENT_TRACK_PLAYER_Y" CASE GGSM_MOVEMENT_PLAYER_CONTROLLED RETURN "GGSM_MOVEMENT_PLAYER_CONTROLLED" CASE NUM_GGSM_MOVEMENT_TYPE RETURN "NUM_GGSM_MOVEMENT_TYPE" ENDSWITCH RETURN "GGSM_MOVEMENT_TYPE_INVALID" ENDFUNC FUNC STRING GGSM_PLANESIDE_TO_STRING(GGSM_PLANESIDE eType) SWITCH (eType) CASE GGSM_PLANESIDE_ON RETURN "GGSM_PLANESIDE_ON" CASE GGSM_PLANESIDE_FRONT RETURN "GGSM_PLANESIDE_FRONT" CASE GGSM_PLANESIDE_BEHIND RETURN "GGSM_PLANESIDE_BEHIND" ENDSWITCH RETURN "GGSM_PLANESIDE_INVALID" ENDFUNC FUNC STRING GGSM_PROJECTILE_BIT_TO_STRING(GGSM_PROJECTILE_BIT eType) SWITCH (eType) CASE GGSM_PROJECTILE_BIT_NONE RETURN "GGSM_PROJECTILE_BIT_NONE" CASE GGSM_PROJECTILE_BIT_ACTIVE RETURN "GGSM_PROJECTILE_BIT_ACTIVE" CASE GGSM_PROJECTILE_BIT_ON_SCREEN RETURN "GGSM_PROJECTILE_BIT_ON_SCREEN" CASE GGSM_PROJECTILE_BIT_ENTERED_PLAYFIELD RETURN "GGSM_PROJECTILE_BIT_ENTERED_PLAYFIELD" CASE GGSM_PROJECTILE_BIT_IS_PLAYER_ALLIED RETURN "GGSM_PROJECTILE_BIT_IS_PLAYER_ALLIED" CASE GGSM_PROJECTILE_BIT_ACCELERATE_TO_SPEED RETURN "GGSM_PROJECTILE_BIT_ACCELERATE_TO_SPEED" CASE GGSM_PROJECTILE_BIT_IS_HOMING RETURN "GGSM_PROJECTILE_BIT_IS_HOMING" CASE GGSM_PROJECTILE_BIT_HAS_NO_COLLISION RETURN "GGSM_PROJECTILE_BIT_HAS_NO_COLLISION" CASE GGSM_PROJECTILE_BIT_LOCKED_TO_PARENT RETURN "GGSM_PROJECTILE_BIT_LOCKED_TO_PARENT" CASE GGSM_PROJECTILE_BIT_BEAM_WEAPON RETURN "GGSM_PROJECTILE_BIT_BEAM_WEAPON" CASE GGSM_PROJECTILE_BIT_IS_SINEWAVE RETURN "GGSM_PROJECTILE_BIT_IS_SINEWAVE" CASE GGSM_PROJECTILE_BIT_IS_NEG_SINEWAVE RETURN "GGSM_PROJECTILE_BIT_IS_NEG_SINEWAVE" CASE GGSM_PROJECTILE_BIT_IS_CLUSTER_BOMB RETURN "GGSM_PROJECTILE_BIT_IS_CLUSTER_BOMB" CASE GGSM_PROJECTILE_BIT_FIRED_BY_PLAYER RETURN "GGSM_PROJECTILE_BIT_FIRED_BY_PLAYER" CASE GGSM_PROJECTILE_BIT_IS_DELAYED_HOMING RETURN "GGSM_PROJECTILE_BIT_IS_DELAYED_HOMING" ENDSWITCH RETURN "GGSM_PROJECTILE_BIT_INVALID" ENDFUNC FUNC STRING GGSM_PROJECTILE_TYPE_TO_STRING(GGSM_PROJECTILE_TYPE eType) SWITCH (eType) CASE GGSM_PROJECTILE_SCATTER RETURN "GGSM_PROJECTILE_SCATTER" CASE GGSM_PROJECTILE_LASER RETURN "GGSM_PROJECTILE_LASER" CASE GGSM_PROJECTILE_HOMING_ROCKET RETURN "GGSM_PROJECTILE_HOMING_ROCKET" CASE GGSM_PROJECTILE_VULKAN RETURN "GGSM_PROJECTILE_VULKAN" CASE GGSM_PROJECTILE_DUAL_ARCH RETURN "GGSM_PROJECTILE_DUAL_ARCH" CASE GGSM_PROJECTILE_WAVE RETURN "GGSM_PROJECTILE_WAVE" CASE GGSM_PROJECTILE_BOMB_EXPLOSION RETURN "GGSM_PROJECTILE_BOMB_EXPLOSION" CASE GGSM_PROJECTILE_EXP_SHELL RETURN "GGSM_PROJECTILE_EXP_SHELL" CASE GGSM_PROJECTILE_ENEMY_LASER RETURN "GGSM_PROJECTILE_ENEMY_LASER" CASE GGSM_PROJECTILE_ENEMY_LASER_PURPLE RETURN "GGSM_PROJECTILE_ENEMY_LASER_PURPLE" CASE GGSM_PROJECTILE_ENEMY_BEAM RETURN "GGSM_PROJECTILE_ENEMY_BEAM" CASE GGSM_PROJECTILE_ENEMY_ROUND_RED RETURN "GGSM_PROJECTILE_ENEMY_ROUND_RED" CASE GGSM_PROJECTILE_ENEMY_ROUND_PURPLE RETURN "GGSM_PROJECTILE_ENEMY_ROUND_PURPLE" CASE GGSM_PROJECTILE_ENEMY_SHOT RETURN "GGSM_PROJECTILE_ENEMY_SHOT" CASE GGSM_PROJECTILE_ENEMY_SHOT_RAPID RETURN "GGSM_PROJECTILE_ENEMY_SHOT_RAPID" CASE GGSM_PROJECTILE_ENEMY_SHOT_PURPLE RETURN "GGSM_PROJECTILE_ENEMY_SHOT_PURPLE" CASE GGSM_PROJECTILE_ENEMY_SHOT_YELLOW RETURN "GGSM_PROJECTILE_ENEMY_SHOT_YELLOW" CASE GGSM_PROJECTILE_ENEMY_VULKAN RETURN "GGSM_PROJECTILE_ENEMY_VULKAN" CASE GGSM_PROJECTILE_ENEMY_CLUSTER_BOMB RETURN "GGSM_PROJECTILE_ENEMY_CLUSTER_BOMB" CASE GGSM_PROJECTILE_BREAD_CRUMB RETURN "GGSM_PROJECTILE_BREAD_CRUMB" CASE GGSM_PROJECTILE_SMOOTHIE_VULKAN RETURN "GGSM_PROJECTILE_SMOOTHIE_VULKAN" CASE GGSM_PROJECTILE_SMOOTHIE_SPREAD RETURN "GGSM_PROJECTILE_SMOOTHIE_SPREAD" CASE GGSM_PROJECTILE_ACID RETURN "GGSM_PROJECTILE_ACID" CASE GGSM_PROJECTILE_ACID_VULKAN RETURN "GGSM_PROJECTILE_ACID_VULKAN" CASE GGSM_PROJECTILE_DANK_ROCKET RETURN "GGSM_PROJECTILE_DANK_ROCKET" CASE GGSM_PROJECTILE_DANK_HOMING_ROCKET RETURN "GGSM_PROJECTILE_DANK_HOMING_ROCKET" CASE GGSM_PROJECTILE_DANK_SCATTER RETURN "GGSM_PROJECTILE_DANK_SCATTER" CASE GGSM_PROJECTILE_DANK_SPREAD RETURN "GGSM_PROJECTILE_DANK_SPREAD" CASE GGSM_PROJECTILE_DANK_VULCAN RETURN "GGSM_PROJECTILE_DANK_VULCAN" CASE GGSM_PROJECTILE_DANK_CLUSTERBOMB RETURN "GGSM_PROJECTILE_DANK_CLUSTERBOMB" CASE GGSM_PROJECTILE_MARINE_LAUNCHER RETURN "GGSM_PROJECTILE_MARINE_LAUNCHER" CASE GGSM_PROJECTILE_MARINE_SPREAD RETURN "GGSM_PROJECTILE_MARINE_SPREAD" CASE GGSM_PROJECTILE_TEST RETURN "GGSM_PROJECTILE_TEST" CASE NUM_GGSM_PROJECTILE_TYPE RETURN "NUM_GGSM_PROJECTILE_TYPE" CASE GGSM_PROJECTILE_INVALID RETURN "GGSM_PROJECTILE_INVALID" ENDSWITCH RETURN "GGSM_PROJECTILE_TYPE_INVALID" ENDFUNC FUNC STRING GGSM_SCREEN_BIT_TO_STRING(GGSM_SCREEN_BIT eType) SWITCH (eType) CASE GGSM_SCREEN_BIT_NONE RETURN "GGSM_SCREEN_BIT_NONE" CASE GGSM_SCREEN_BIT_ON_SCREEN RETURN "GGSM_SCREEN_BIT_ON_SCREEN" CASE GGSM_SCREEN_BIT_ENTERED_PLAYFIELD RETURN "GGSM_SCREEN_BIT_ENTERED_PLAYFIELD" CASE GGSM_SCREEN_BIT_REMOVE_WHEN_OFFSCREEEN RETURN "GGSM_SCREEN_BIT_REMOVE_WHEN_OFFSCREEEN" CASE GGSM_SCREEN_BIT_STOP_SCROLLING RETURN "GGSM_SCREEN_BIT_STOP_SCROLLING" ENDSWITCH RETURN "GGSM_SCREEN_BIT_INVALID" ENDFUNC FUNC STRING GGSM_SPREAD_TYPE_TO_STRING(GGSM_SPREAD_TYPE eType) SWITCH (eType) CASE GGSM_SPREAD_NONE RETURN "GGSM_SPREAD_NONE" CASE GGSM_SPREAD_LINEAR RETURN "GGSM_SPREAD_LINEAR" CASE GGSM_SPREAD_CONE RETURN "GGSM_SPREAD_CONE" CASE GGSM_SPREAD_RADIAL RETURN "GGSM_SPREAD_RADIAL" CASE GGSM_SPREAD_WAVE RETURN "GGSM_SPREAD_WAVE" CASE GGSM_SPREAD_DUALARCH RETURN "GGSM_SPREAD_DUALARCH" CASE GGSM_SPREAD_BACKVULCAN RETURN "GGSM_SPREAD_BACKVULCAN" CASE NUM_GGSM_SPREAD_TYPE RETURN "NUM_GGSM_SPREAD_TYPE" ENDSWITCH RETURN "GGSM_SPREAD_TYPE_INVALID" ENDFUNC FUNC STRING GGSM_SPRITE_ANIM_TO_STRING(GGSM_SPRITE_ANIM eType) SWITCH (eType) CASE GGSM_SPRITE_ANIM_NONE RETURN "GGSM_SPRITE_ANIM_NONE" CASE GGSM_SPRITE_ANIM_BOMB_EXPLOSION RETURN "GGSM_SPRITE_ANIM_BOMB_EXPLOSION" CASE GGSM_SPRITE_ANIM_BREAD_EYEBROWS RETURN "GGSM_SPRITE_ANIM_BREAD_EYEBROWS" CASE GGSM_SPRITE_ANIM_DANK_CANNON RETURN "GGSM_SPRITE_ANIM_DANK_CANNON" CASE GGSM_SPRITE_ANIM_EXPLOSION RETURN "GGSM_SPRITE_ANIM_EXPLOSION" CASE GGSM_SPRITE_ANIM_GRANANA RETURN "GGSM_SPRITE_ANIM_GRANANA" CASE GGSM_SPRITE_ANIM_GRAN_GLASS RETURN "GGSM_SPRITE_ANIM_GRAN_GLASS" CASE GGSM_SPRITE_ANIM_GRAN_GLASSCRACK RETURN "GGSM_SPRITE_ANIM_GRAN_GLASSCRACK" CASE GGSM_SPRITE_ANIM_MARINE RETURN "GGSM_SPRITE_ANIM_MARINE" CASE GGSM_SPRITE_ANIM_MARINE_ALIEN RETURN "GGSM_SPRITE_ANIM_MARINE_ALIEN" CASE GGSM_SPRITE_ANIM_PLYR_EXPLOSION RETURN "GGSM_SPRITE_ANIM_PLYR_EXPLOSION" CASE GGSM_SPRITE_ANIM_PLYRSHIP_FLAME RETURN "GGSM_SPRITE_ANIM_PLYRSHIP_FLAME" CASE GGSM_SPRITE_ANIM_SMALL_SMOOTHIE RETURN "GGSM_SPRITE_ANIM_SMALL_SMOOTHIE" CASE GGSM_SPRITE_ANIM_SMOOTHIE RETURN "GGSM_SPRITE_ANIM_SMOOTHIE" CASE NUM_GGSM_SPRITE_ANIM RETURN "NUM_GGSM_SPRITE_ANIM" ENDSWITCH RETURN "GGSM_SPRITE_ANIM_INVALID" ENDFUNC FUNC STRING GGSM_SPRITE_TYPE_TO_STRING(GGSM_SPRITE_TYPE eType) SWITCH (eType) CASE GGSM_SPRITE_NONE RETURN "GGSM_SPRITE_NONE" CASE GGSM_SPRITE_ACID RETURN "GGSM_SPRITE_ACID" CASE GGSM_SPRITE_ACID_BLUE RETURN "GGSM_SPRITE_ACID_BLUE" CASE GGSM_SPRITE_BANANA_GREEN RETURN "GGSM_SPRITE_BANANA_GREEN" CASE GGSM_SPRITE_BANANA_RED RETURN "GGSM_SPRITE_BANANA_RED" CASE GGSM_SPRITE_BANANA_YELLOW RETURN "GGSM_SPRITE_BANANA_YELLOW" CASE GGSM_SPRITE_BANANA_JETPAC_GREEN RETURN "GGSM_SPRITE_BANANA_JETPAC_GREEN" CASE GGSM_SPRITE_BANANA_JETPAC_RED RETURN "GGSM_SPRITE_BANANA_JETPAC_RED" CASE GGSM_SPRITE_BANANA_JETPAC_YELLOW RETURN "GGSM_SPRITE_BANANA_JETPAC_YELLOW" CASE GGSM_SPRITE_BANANA_RED_ATTACK RETURN "GGSM_SPRITE_BANANA_RED_ATTACK" CASE GGSM_SPRITE_BANANA_SLICE RETURN "GGSM_SPRITE_BANANA_SLICE" CASE GGSM_SPRITE_BANANA_SLICE_BACK RETURN "GGSM_SPRITE_BANANA_SLICE_BACK" CASE GGSM_SPRITE_BANANA_SLICE_FRONT RETURN "GGSM_SPRITE_BANANA_SLICE_FRONT" CASE GGSM_SPRITE_BANDANA_RED RETURN "GGSM_SPRITE_BANDANA_RED" CASE GGSM_SPRITE_BANDANA_GREEN RETURN "GGSM_SPRITE_BANDANA_GREEN" CASE GGSM_SPRITE_BIG_SMOKE RETURN "GGSM_SPRITE_BIG_SMOKE" CASE GGSM_SPRITE_BOSS_TEXT RETURN "GGSM_SPRITE_BOSS_TEXT" CASE GGSM_SPRITE_BOMB_EXPLOSION RETURN "GGSM_SPRITE_BOMB_EXPLOSION" CASE GGSM_SPRITE_CHERRY_BOMB RETURN "GGSM_SPRITE_CHERRY_BOMB" CASE GGSM_SPRITE_CIRCLE_SHIP_GREEN RETURN "GGSM_SPRITE_CIRCLE_SHIP_GREEN" CASE GGSM_SPRITE_CIRCLE_SHIP_YELLOW RETURN "GGSM_SPRITE_CIRCLE_SHIP_YELLOW" CASE GGSM_SPRITE_CIRCLE_SHIP_RED RETURN "GGSM_SPRITE_CIRCLE_SHIP_RED" CASE GGSM_SPRITE_CRUMB_MEDIUM RETURN "GGSM_SPRITE_CRUMB_MEDIUM" CASE GGSM_SPRITE_CRUMB_SMALL RETURN "GGSM_SPRITE_CRUMB_SMALL" CASE GGSM_SPRITE_ENEMY_BULLET_BLUE RETURN "GGSM_SPRITE_ENEMY_BULLET_BLUE" CASE GGSM_SPRITE_ENEMY_BULLET_PURPLE RETURN "GGSM_SPRITE_ENEMY_BULLET_PURPLE" CASE GGSM_SPRITE_ENEMY_BULLET_RED RETURN "GGSM_SPRITE_ENEMY_BULLET_RED" CASE GGSM_SPRITE_ENEMY_BULLET_YELLOW RETURN "GGSM_SPRITE_ENEMY_BULLET_YELLOW" CASE GGSM_SPRITE_EXP_SHELL RETURN "GGSM_SPRITE_EXP_SHELL" CASE GGSM_SPRITE_EXPLOSION RETURN "GGSM_SPRITE_EXPLOSION" CASE GGSM_SPRITE_FLAME RETURN "GGSM_SPRITE_FLAME" CASE GGSM_SPRITE_FRUITBOWL RETURN "GGSM_SPRITE_FRUITBOWL" CASE GGSM_SPRITE_LIVES_REMAINING RETURN "GGSM_SPRITE_LIVES_REMAINING" CASE GGSM_SPRITE_METEOR_BIG RETURN "GGSM_SPRITE_METEOR_BIG" CASE GGSM_SPRITE_METEOR_MEDIUM RETURN "GGSM_SPRITE_METEOR_MEDIUM" CASE GGSM_SPRITE_METEOR_SMALL RETURN "GGSM_SPRITE_METEOR_SMALL" CASE GGSM_SPRITE_METEOR_VERY_BIG RETURN "GGSM_SPRITE_METEOR_VERY_BIG" CASE GGSM_SPRITE_METEOR_HUGE RETURN "GGSM_SPRITE_METEOR_HUGE" CASE GGSM_SPRITE_MONKEY RETURN "GGSM_SPRITE_MONKEY" CASE GGSM_SPRITE_MONKEY_CONGRATS RETURN "GGSM_SPRITE_MONKEY_CONGRATS" CASE GGSM_SPRITE_PEANUT_METEOR RETURN "GGSM_SPRITE_PEANUT_METEOR" CASE GGSM_SPRITE_POWER_UP_BEAM RETURN "GGSM_SPRITE_POWER_UP_BEAM" CASE GGSM_SPRITE_POWER_UP_FORWARD_BACK RETURN "GGSM_SPRITE_POWER_UP_FORWARD_BACK" CASE GGSM_SPRITE_POWER_UP_BOLT RETURN "GGSM_SPRITE_POWER_UP_BOLT" CASE GGSM_SPRITE_POWER_UP_DECOY RETURN "GGSM_SPRITE_POWER_UP_DECOY" CASE GGSM_SPRITE_POWER_UP_DUALARCH RETURN "GGSM_SPRITE_POWER_UP_DUALARCH" CASE GGSM_SPRITE_POWER_UP_EXPLOSION RETURN "GGSM_SPRITE_POWER_UP_EXPLOSION" CASE GGSM_SPRITE_POWER_UP_EXTRALIFE RETURN "GGSM_SPRITE_POWER_UP_EXTRALIFE" CASE GGSM_SPRITE_POWER_UP_HEALTH RETURN "GGSM_SPRITE_POWER_UP_HEALTH" CASE GGSM_SPRITE_POWER_UP_NUKE RETURN "GGSM_SPRITE_POWER_UP_NUKE" CASE GGSM_SPRITE_POWER_UP_REPULSE RETURN "GGSM_SPRITE_POWER_UP_REPULSE" CASE GGSM_SPRITE_POWER_UP_ROCKET RETURN "GGSM_SPRITE_POWER_UP_ROCKET" CASE GGSM_SPRITE_POWER_UP_SCATTER RETURN "GGSM_SPRITE_POWER_UP_SCATTER" CASE GGSM_SPRITE_POWER_UP_SHIELD RETURN "GGSM_SPRITE_POWER_UP_SHIELD" CASE GGSM_SPRITE_POWER_UP_STUN RETURN "GGSM_SPRITE_POWER_UP_STUN" CASE GGSM_SPRITE_POWER_UP_WAVE RETURN "GGSM_SPRITE_POWER_UP_WAVE" CASE GGSM_SPRITE_PROJ_BEAM_BLUE RETURN "GGSM_SPRITE_PROJ_BEAM_BLUE" CASE GGSM_SPRITE_PROJ_BEAM_PURPLE RETURN "GGSM_SPRITE_PROJ_BEAM_PURPLE" CASE GGSM_SPRITE_RAIL_GUN_FIRE_BLUE RETURN "GGSM_SPRITE_RAIL_GUN_FIRE_BLUE" CASE GGSM_SPRITE_RAIL_GUN_FIRE_PURPLE RETURN "GGSM_SPRITE_RAIL_GUN_FIRE_PURPLE" CASE GGSM_SPRITE_RAIL_GUN_FIRE_RED RETURN "GGSM_SPRITE_RAIL_GUN_FIRE_RED" CASE GGSM_SPRITE_RAIL_GUN_FIRE_YELLOW RETURN "GGSM_SPRITE_RAIL_GUN_FIRE_YELLOW" CASE GGSM_SPRITE_ROCKET RETURN "GGSM_SPRITE_ROCKET" CASE GGSM_SPRITE_ROCKET_BLUE RETURN "GGSM_SPRITE_ROCKET_BLUE" CASE GGSM_SPRITE_SHIELD RETURN "GGSM_SPRITE_SHIELD" CASE GGSM_SPRITE_SHOT_LONG_BLUE RETURN "GGSM_SPRITE_SHOT_LONG_BLUE" CASE GGSM_SPRITE_SHOT_LONG_PURPLE RETURN "GGSM_SPRITE_SHOT_LONG_PURPLE" CASE GGSM_SPRITE_SHOT_LONG_RED RETURN "GGSM_SPRITE_SHOT_LONG_RED" CASE GGSM_SPRITE_SHOT_LONG_YELLOW RETURN "GGSM_SPRITE_SHOT_LONG_YELLOW" CASE GGSM_SPRITE_SHOT_ROUND_BLUE RETURN "GGSM_SPRITE_SHOT_ROUND_BLUE" CASE GGSM_SPRITE_SHOT_ROUND_PURPLE RETURN "GGSM_SPRITE_SHOT_ROUND_PURPLE" CASE GGSM_SPRITE_SHOT_ROUND_RED RETURN "GGSM_SPRITE_SHOT_ROUND_RED" CASE GGSM_SPRITE_SHOT_ROUND_YELLOW RETURN "GGSM_SPRITE_SHOT_ROUND_YELLOW" CASE GGSM_SPRITE_SMALL_SMOKE RETURN "GGSM_SPRITE_SMALL_SMOKE" CASE GGSM_SPRITE_SMALL_SMOOTHIE RETURN "GGSM_SPRITE_SMALL_SMOOTHIE" CASE GGSM_SPRITE_BOSS_BREAD RETURN "GGSM_SPRITE_BOSS_BREAD" CASE GGSM_SPRITE_BOSS_BREAD_FACE RETURN "GGSM_SPRITE_BOSS_BREAD_FACE" CASE GGSM_SPRITE_BOSS_BREAD_EYEBROWS RETURN "GGSM_SPRITE_BOSS_BREAD_EYEBROWS" CASE GGSM_SPRITE_BOSS_BREAD_BOTTOM_LEFT RETURN "GGSM_SPRITE_BOSS_BREAD_BOTTOM_LEFT" CASE GGSM_SPRITE_BOSS_BREAD_BOTTOM_RIGHT RETURN "GGSM_SPRITE_BOSS_BREAD_BOTTOM_RIGHT" CASE GGSM_SPRITE_BOSS_BREAD_TOP_LEFT RETURN "GGSM_SPRITE_BOSS_BREAD_TOP_LEFT" CASE GGSM_SPRITE_BOSS_BREAD_TOP_RIGHT RETURN "GGSM_SPRITE_BOSS_BREAD_TOP_RIGHT" CASE GGSM_SPRITE_BOSS_BANANA_SPLIT RETURN "GGSM_SPRITE_BOSS_BANANA_SPLIT" CASE GGSM_SPRITE_BOSS_DR_DANK_TOP RETURN "GGSM_SPRITE_BOSS_DR_DANK_TOP" CASE GGSM_SPRITE_BOSS_DR_DANK_MIDDLE RETURN "GGSM_SPRITE_BOSS_DR_DANK_MIDDLE" CASE GGSM_SPRITE_BOSS_DR_DANK_BOTTOM RETURN "GGSM_SPRITE_BOSS_DR_DANK_BOTTOM" CASE GGSM_SPRITE_BOSS_GRANANA RETURN "GGSM_SPRITE_BOSS_GRANANA" CASE GGSM_SPRITE_BOSS_GRANANA_GLASSES RETURN "GGSM_SPRITE_BOSS_GRANANA_GLASSES" CASE GGSM_SPRITE_BOSS_GRANANA_HAIR RETURN "GGSM_SPRITE_BOSS_GRANANA_HAIR" CASE GGSM_SPRITE_BOSS_MARINE RETURN "GGSM_SPRITE_BOSS_MARINE" CASE GGSM_SPRITE_BOSS_MARINE_ALIEN RETURN "GGSM_SPRITE_BOSS_MARINE_ALIEN" CASE GGSM_SPRITE_BOSS_SMOOTHIE RETURN "GGSM_SPRITE_BOSS_SMOOTHIE" CASE GGSM_SPRITE_PIC_BREAD_MAIN RETURN "GGSM_SPRITE_PIC_BREAD_MAIN" CASE GGSM_SPRITE_PIC_DR_DANK_FAIL RETURN "GGSM_SPRITE_PIC_DR_DANK_FAIL" CASE GGSM_SPRITE_PIC_DR_DANK_MAIN RETURN "GGSM_SPRITE_PIC_DR_DANK_MAIN" CASE GGSM_SPRITE_PIC_GRANANA_MAIN RETURN "GGSM_SPRITE_PIC_GRANANA_MAIN" CASE GGSM_SPRITE_PIC_MARINE_MAIN RETURN "GGSM_SPRITE_PIC_MARINE_MAIN" CASE GGSM_SPRITE_PIC_MONKEY_ASTEROID RETURN "GGSM_SPRITE_PIC_MONKEY_ASTEROID" CASE GGSM_SPRITE_PIC_MONKEY_FAIL RETURN "GGSM_SPRITE_PIC_MONKEY_FAIL" CASE GGSM_SPRITE_PIC_MONKEY_MAIN RETURN "GGSM_SPRITE_PIC_MONKEY_MAIN" CASE GGSM_SPRITE_PIC_SMOOTHIE_MAIN RETURN "GGSM_SPRITE_PIC_SMOOTHIE_MAIN" CASE GGSM_SPRITE_PIC_BREAD_64 RETURN "GGSM_SPRITE_PIC_BREAD_64" CASE GGSM_SPRITE_PIC_GRANANA_64 RETURN "GGSM_SPRITE_PIC_GRANANA_64" CASE GGSM_SPRITE_PIC_SMOOTHIE_64 RETURN "GGSM_SPRITE_PIC_SMOOTHIE_64" CASE GGSM_SPRITE_PIC_MARINE_64 RETURN "GGSM_SPRITE_PIC_MARINE_64" CASE GGSM_SPRITE_PIC_DR_DANK_64 RETURN "GGSM_SPRITE_PIC_DR_DANK_64" CASE GGSM_SPRITE_HEALTH_BAR_BOSS RETURN "GGSM_SPRITE_HEALTH_BAR_BOSS" CASE GGSM_SPRITE_HEALTH_BAR_MONKEY RETURN "GGSM_SPRITE_HEALTH_BAR_MONKEY" CASE GGSM_SPRITE_HEALTH_BOX_BOSS RETURN "GGSM_SPRITE_HEALTH_BOX_BOSS" CASE GGSM_SPRITE_HEALTH_BOX_MONKEY RETURN "GGSM_SPRITE_HEALTH_BOX_MONKEY" CASE GGSM_SPRITE_WEAPON_BOX RETURN "GGSM_SPRITE_WEAPON_BOX" CASE GGSM_SPRITE_BOX_LVL1_BOSS_FAIL RETURN "GGSM_SPRITE_BOX_LVL1_BOSS_FAIL" CASE GGSM_SPRITE_BOX_LVL1_BOSS_START RETURN "GGSM_SPRITE_BOX_LVL1_BOSS_START" CASE GGSM_SPRITE_BOX_LVL1_BOSS_WIN RETURN "GGSM_SPRITE_BOX_LVL1_BOSS_WIN" CASE GGSM_SPRITE_BOX_LVL1_MONKEY_START RETURN "GGSM_SPRITE_BOX_LVL1_MONKEY_START" CASE GGSM_SPRITE_BOX_LVL1_MONKEY_FAIL RETURN "GGSM_SPRITE_BOX_LVL1_MONKEY_FAIL" CASE GGSM_SPRITE_BOX_LVL1_MONKEY_WIN RETURN "GGSM_SPRITE_BOX_LVL1_MONKEY_WIN" CASE GGSM_SPRITE_BOX_LVL2_BOSS_FAIL RETURN "GGSM_SPRITE_BOX_LVL2_BOSS_FAIL" CASE GGSM_SPRITE_BOX_LVL2_BOSS_START RETURN "GGSM_SPRITE_BOX_LVL2_BOSS_START" CASE GGSM_SPRITE_BOX_LVL2_BOSS_WIN RETURN "GGSM_SPRITE_BOX_LVL2_BOSS_WIN" CASE GGSM_SPRITE_BOX_LVL2_MONKEY_FAIL RETURN "GGSM_SPRITE_BOX_LVL2_MONKEY_FAIL" CASE GGSM_SPRITE_BOX_LVL2_MONKEY_START RETURN "GGSM_SPRITE_BOX_LVL2_MONKEY_START" CASE GGSM_SPRITE_BOX_LVL2_MONKEY_WIN RETURN "GGSM_SPRITE_BOX_LVL2_MONKEY_WIN" CASE GGSM_SPRITE_BOX_LVL3_BOSS_FAIL RETURN "GGSM_SPRITE_BOX_LVL3_BOSS_FAIL" CASE GGSM_SPRITE_BOX_LVL3_BOSS_START RETURN "GGSM_SPRITE_BOX_LVL3_BOSS_START" CASE GGSM_SPRITE_BOX_LVL3_BOSS_WIN RETURN "GGSM_SPRITE_BOX_LVL3_BOSS_WIN" CASE GGSM_SPRITE_BOX_LVL3_MONKEY_FAIL RETURN "GGSM_SPRITE_BOX_LVL3_MONKEY_FAIL" CASE GGSM_SPRITE_BOX_LVL3_MONKEY_START RETURN "GGSM_SPRITE_BOX_LVL3_MONKEY_START" CASE GGSM_SPRITE_BOX_LVL3_MONKEY_WIN RETURN "GGSM_SPRITE_BOX_LVL3_MONKEY_WIN" CASE GGSM_SPRITE_BOX_LVL4_BOSS_FAIL RETURN "GGSM_SPRITE_BOX_LVL4_BOSS_FAIL" CASE GGSM_SPRITE_BOX_LVL4_BOSS_START RETURN "GGSM_SPRITE_BOX_LVL4_BOSS_START" CASE GGSM_SPRITE_BOX_LVL4_BOSS_WIN RETURN "GGSM_SPRITE_BOX_LVL4_BOSS_WIN" CASE GGSM_SPRITE_BOX_LVL4_MONKEY_FAIL RETURN "GGSM_SPRITE_BOX_LVL4_MONKEY_FAIL" CASE GGSM_SPRITE_BOX_LVL4_MONKEY_START RETURN "GGSM_SPRITE_BOX_LVL4_MONKEY_START" CASE GGSM_SPRITE_BOX_LVL4_MONKEY_WIN RETURN "GGSM_SPRITE_BOX_LVL4_MONKEY_WIN" CASE GGSM_SPRITE_BOX_LVL5_BOSS_FAIL RETURN "GGSM_SPRITE_BOX_LVL5_BOSS_FAIL" CASE GGSM_SPRITE_BOX_LVL5_BOSS_START RETURN "GGSM_SPRITE_BOX_LVL5_BOSS_START" CASE GGSM_SPRITE_BOX_LVL5_BOSS_START2 RETURN "GGSM_SPRITE_BOX_LVL5_BOSS_START2" CASE GGSM_SPRITE_BOX_LVL5_BOSS_WIN RETURN "GGSM_SPRITE_BOX_LVL5_BOSS_WIN" CASE GGSM_SPRITE_BOX_LVL5_BOSS_WIN2 RETURN "GGSM_SPRITE_BOX_LVL5_BOSS_WIN2" CASE GGSM_SPRITE_BOX_LVL5_MONKEY_FAIL RETURN "GGSM_SPRITE_BOX_LVL5_MONKEY_FAIL" CASE GGSM_SPRITE_BOX_LVL5_MONKEY_START RETURN "GGSM_SPRITE_BOX_LVL5_MONKEY_START" CASE GGSM_SPRITE_BOX_LVL5_MONKEY_START2 RETURN "GGSM_SPRITE_BOX_LVL5_MONKEY_START2" CASE GGSM_SPRITE_BOX_LVL5_MONKEY_WIN RETURN "GGSM_SPRITE_BOX_LVL5_MONKEY_WIN" CASE GGSM_SPRITE_BOX_ASTEROID_LEAVING RETURN "GGSM_SPRITE_BOX_ASTEROID_LEAVING" CASE GGSM_SPRITE_BOX_ASTEROID_NEARING RETURN "GGSM_SPRITE_BOX_ASTEROID_NEARING" CASE GGSM_SPRITE_BOX_FAILSCRN_BOSS1 RETURN "GGSM_SPRITE_BOX_FAILSCRN_BOSS1" CASE GGSM_SPRITE_BOX_FAILSCRN_BOSS2 RETURN "GGSM_SPRITE_BOX_FAILSCRN_BOSS2" CASE GGSM_SPRITE_BOX_FAILSCRN_BOSS3 RETURN "GGSM_SPRITE_BOX_FAILSCRN_BOSS3" CASE GGSM_SPRITE_BOX_FAILSCRN_BOSS4 RETURN "GGSM_SPRITE_BOX_FAILSCRN_BOSS4" CASE GGSM_SPRITE_BOX_FAILSCRN_BOSS5 RETURN "GGSM_SPRITE_BOX_FAILSCRN_BOSS5" CASE GGSM_SPRITE_BOX_FAILSCRN_BOSS6 RETURN "GGSM_SPRITE_BOX_FAILSCRN_BOSS6" CASE GGSM_SPRITE_BOX_FAILSCRN_MONKEY_1 RETURN "GGSM_SPRITE_BOX_FAILSCRN_MONKEY_1" CASE GGSM_SPRITE_BOX_FAILSCRN_MONKEY_2 RETURN "GGSM_SPRITE_BOX_FAILSCRN_MONKEY_2" CASE GGSM_SPRITE_BOX_FAILSCRN_MONKEY_3 RETURN "GGSM_SPRITE_BOX_FAILSCRN_MONKEY_3" CASE GGSM_SPRITE_BOX_FAILSCRN_MONKEY_4 RETURN "GGSM_SPRITE_BOX_FAILSCRN_MONKEY_4" CASE GGSM_SPRITE_BOX_FAILSCRN_MONKEY_5 RETURN "GGSM_SPRITE_BOX_FAILSCRN_MONKEY_5" CASE GGSM_SPRITE_BOX_FAILSCRN_MONKEY_6 RETURN "GGSM_SPRITE_BOX_FAILSCRN_MONKEY_6" CASE GGSM_SPRITE_BG_LAYER_BREAD_PLANET RETURN "GGSM_SPRITE_BG_LAYER_BREAD_PLANET" CASE GGSM_SPRITE_BG_LAYER_BOSS_PLANET RETURN "GGSM_SPRITE_BG_LAYER_BOSS_PLANET" CASE GGSM_SPRITE_BG_LAYER_CRATERS RETURN "GGSM_SPRITE_BG_LAYER_CRATERS" CASE GGSM_SPRITE_BG_LAYER_EARTH RETURN "GGSM_SPRITE_BG_LAYER_EARTH" CASE GGSM_SPRITE_BG_LAYER_PINK_PLANET RETURN "GGSM_SPRITE_BG_LAYER_PINK_PLANET" CASE GGSM_SPRITE_BG_SPACE RETURN "GGSM_SPRITE_BG_SPACE" CASE GGSM_SPRITE_BG_STARS RETURN "GGSM_SPRITE_BG_STARS" CASE GGSM_SPRITE_BG_MAP RETURN "GGSM_SPRITE_BG_MAP" CASE GGSM_SPRITE_FACADE RETURN "GGSM_SPRITE_FACADE" CASE GGSM_SPRITE_FBI_WARN RETURN "GGSM_SPRITE_FBI_WARN" CASE GGSM_SPRITE_PSA RETURN "GGSM_SPRITE_PSA" CASE GGSM_SPRITE_GAME_OVER_SCREEN RETURN "GGSM_SPRITE_GAME_OVER_SCREEN" CASE GGSM_SPRITE_LEVEL_SCREEN_BANANASTAR RETURN "GGSM_SPRITE_LEVEL_SCREEN_BANANASTAR" CASE GGSM_SPRITE_LEVEL_SCREEN_CAVERN RETURN "GGSM_SPRITE_LEVEL_SCREEN_CAVERN" CASE GGSM_SPRITE_LEVEL_SCREEN_DOUGHBALL RETURN "GGSM_SPRITE_LEVEL_SCREEN_DOUGHBALL" CASE GGSM_SPRITE_LEVEL_SCREEN_EARTH RETURN "GGSM_SPRITE_LEVEL_SCREEN_EARTH" CASE GGSM_SPRITE_LEVEL_SCREEN_METEORS RETURN "GGSM_SPRITE_LEVEL_SCREEN_METEORS" CASE GGSM_SPRITE_LEVEL_SCREEN_PINK RETURN "GGSM_SPRITE_LEVEL_SCREEN_PINK" CASE GGSM_SPRITE_LEVEL_SCREEN_DASH RETURN "GGSM_SPRITE_LEVEL_SCREEN_DASH" CASE GGSM_SPRITE_OPENING_TEXT_1 RETURN "GGSM_SPRITE_OPENING_TEXT_1" CASE GGSM_SPRITE_OPENING_TEXT_2 RETURN "GGSM_SPRITE_OPENING_TEXT_2" CASE GGSM_SPRITE_OPENING_TEXT_3 RETURN "GGSM_SPRITE_OPENING_TEXT_3" CASE GGSM_SPRITE_OPENING_TEXT_4 RETURN "GGSM_SPRITE_OPENING_TEXT_4" CASE GGSM_SPRITE_OPENING_TEXT_5 RETURN "GGSM_SPRITE_OPENING_TEXT_5" CASE GGSM_SPRITE_OPENING_TEXT_6 RETURN "GGSM_SPRITE_OPENING_TEXT_6" CASE GGSM_SPRITE_OPENING_TEXT_7 RETURN "GGSM_SPRITE_OPENING_TEXT_7" CASE GGSM_SPRITE_OPENING_TEXT_8 RETURN "GGSM_SPRITE_OPENING_TEXT_8" CASE GGSM_SPRITE_OPENING_TEXT_9 RETURN "GGSM_SPRITE_OPENING_TEXT_9" CASE GGSM_SPRITE_PRESS_START RETURN "GGSM_SPRITE_PRESS_START" CASE NUM_GGSM_SPRITE_TYPE RETURN "NUM_GGSM_SPRITE_TYPE" ENDSWITCH RETURN "GGSM_SPRITE_TYPE_INVALID" ENDFUNC FUNC STRING GGSM_SPECIAL_WEAPON_TYPE_TO_STRING(GGSM_SPECIAL_WEAPON_TYPE eType) SWITCH (eType) CASE GGSM_SPECIAL_WEAPON_NONE RETURN "GGSM_SPECIAL_WEAPON_NONE" CASE GGSM_SPECIAL_WEAPON_NUKE RETURN "GGSM_SPECIAL_WEAPON_NUKE" CASE GGSM_SPECIAL_WEAPON_DECOY RETURN "GGSM_SPECIAL_WEAPON_DECOY" CASE GGSM_SPECIAL_WEAPON_TEMPORAL RETURN "GGSM_SPECIAL_WEAPON_TEMPORAL" CASE GGSM_SPECIAL_WEAPON_SHIELD RETURN "GGSM_SPECIAL_WEAPON_SHIELD" CASE GGSM_SPECIAL_WEAPON_REFLECT RETURN "GGSM_SPECIAL_WEAPON_REFLECT" CASE NUM_GGSM_SPECIAL_WEAPON_TYPE RETURN "NUM_GGSM_SPECIAL_WEAPON_TYPE" ENDSWITCH RETURN "GGSM_SPECIAL_WEAPON_TYPE_INVALID" ENDFUNC FUNC STRING GGSM_SPWEAPON_STATE_TO_STRING(GGSM_SPWEAPON_STATE eType) SWITCH (eType) CASE GGSM_SPWEAPON_INACTIVE RETURN "GGSM_SPWEAPON_INACTIVE" CASE GGSM_SPWEAPON_LAUNCH RETURN "GGSM_SPWEAPON_LAUNCH" CASE GGSM_SPWEAPON_DETONATE RETURN "GGSM_SPWEAPON_DETONATE" CASE GGSM_SPWEAPON_ACTIVE RETURN "GGSM_SPWEAPON_ACTIVE" CASE GGSM_SPWEAPON_COOLDOWN RETURN "GGSM_SPWEAPON_COOLDOWN" CASE NUM_GGSM_SPWEAPON_STATE RETURN "NUM_GGSM_SPWEAPON_STATE" ENDSWITCH RETURN "GGSM_SPWEAPON_STATE_INVALID" ENDFUNC FUNC STRING GGSM_STAGE_BIT_TO_STRING(GGSM_STAGE_BIT eType) SWITCH (eType) CASE GGSM_STAGE_BIT_NONE RETURN "GGSM_STAGE_BIT_NONE" CASE GGSM_STAGE_BIT_FORCE_Z_SORT RETURN "GGSM_STAGE_BIT_FORCE_Z_SORT" CASE GGSM_STAGE_BIT_STAGE_STARTED RETURN "GGSM_STAGE_BIT_STAGE_STARTED" CASE GGSM_STAGE_BIT_PLAYER_DAMAGED RETURN "GGSM_STAGE_BIT_PLAYER_DAMAGED" CASE GGSM_STAGE_BIT_PLAYER_DIED RETURN "GGSM_STAGE_BIT_PLAYER_DIED" CASE GGSM_STAGE_BIT_PLAYER_DEFENSE_WPN_USED RETURN "GGSM_STAGE_BIT_PLAYER_DEFENSE_WPN_USED" CASE GGSM_STAGE_BIT_PLAYER_SPECIAL_WPN_USED RETURN "GGSM_STAGE_BIT_PLAYER_SPECIAL_WPN_USED" CASE GGSM_STAGE_BIT_DISABLE_WEAPONS RETURN "GGSM_STAGE_BIT_DISABLE_WEAPONS" CASE GGSM_STAGE_BIT_BRING_CAMERA_TO_STOP RETURN "GGSM_STAGE_BIT_BRING_CAMERA_TO_STOP" CASE GGSM_STAGE_BIT_PLAYER_BOSS_INVUNERABLE RETURN "GGSM_STAGE_BIT_PLAYER_BOSS_INVUNERABLE" CASE GGSM_STAGE_BIT_PLAYER_PROJECTILES_ACTIVE RETURN "GGSM_STAGE_BIT_PLAYER_PROJECTILES_ACTIVE" CASE GGSM_STAGE_BIT_ENEMY_PROJECTILES_ACTIVE RETURN "GGSM_STAGE_BIT_ENEMY_PROJECTILES_ACTIVE" CASE GGSM_STAGE_BIT_ENEMIES_ACTIVE RETURN "GGSM_STAGE_BIT_ENEMIES_ACTIVE" CASE GGSM_STAGE_BIT_GROUPS_ACTIVE RETURN "GGSM_STAGE_BIT_GROUPS_ACTIVE" CASE GGSM_STAGE_BIT_BOSSES_ACTIVE RETURN "GGSM_STAGE_BIT_BOSSES_ACTIVE" CASE GGSM_STAGE_BIT_EXPLOSIONS_ACTIVE RETURN "GGSM_STAGE_BIT_EXPLOSIONS_ACTIVE" CASE GGSM_STAGE_BIT_INTRO_DONE RETURN "GGSM_STAGE_BIT_INTRO_DONE" ENDSWITCH RETURN "GGSM_STAGE_BIT_INVALID" ENDFUNC FUNC STRING GGSM_TEXDICT_TO_STRING(GGSM_TEXDICT eType) SWITCH (eType) CASE GGSM_TEXDICT_NONE RETURN "GGSM_TEXDICT_NONE" CASE GGSM_TEXDICT_RESIDENT RETURN "GGSM_TEXDICT_RESIDENT" CASE GGSM_TEXDICT_GAME RETURN "GGSM_TEXDICT_GAME" CASE GGSM_TEXDICT_DIALOG RETURN "GGSM_TEXDICT_DIALOG" CASE GGSM_TEXDICT_PORTRAITS RETURN "GGSM_TEXDICT_PORTRAITS" CASE GGSM_TEXDICT_FRONTEND RETURN "GGSM_TEXDICT_FRONTEND" CASE GGSM_TEXDICT_PSA RETURN "GGSM_TEXDICT_PSA" CASE GGSM_TEXDICT_BG RETURN "GGSM_TEXDICT_BG" CASE GGSM_TEXDICT_BOSS_BREAD RETURN "GGSM_TEXDICT_BOSS_BREAD" CASE GGSM_TEXDICT_BOSS_BANANA_SPLIT RETURN "GGSM_TEXDICT_BOSS_BANANA_SPLIT" CASE GGSM_TEXDICT_BOSS_DR_DANK RETURN "GGSM_TEXDICT_BOSS_DR_DANK" CASE GGSM_TEXDICT_BOSS_GRANANA RETURN "GGSM_TEXDICT_BOSS_GRANANA" CASE GGSM_TEXDICT_BOSS_MARINE RETURN "GGSM_TEXDICT_BOSS_MARINE" CASE GGSM_TEXDICT_BOSS_SMOOTHIE RETURN "GGSM_TEXDICT_BOSS_SMOOTHIE" CASE GGSM_TEXDICT_CAVERN_STAGE RETURN "GGSM_TEXDICT_CAVERN_STAGE" CASE GGSM_TEXDICT_BOSS_ALIEN RETURN "GGSM_TEXDICT_BOSS_ALIEN" ENDSWITCH RETURN "GGSM_TEXDICT_INVALID" ENDFUNC FUNC STRING GGSM_TEXTPIVOT_TO_STRING(GGSM_TEXTPIVOT eType) SWITCH (eType) CASE GGSM_TEXTPIVOT_LEFT RETURN "GGSM_TEXTPIVOT_LEFT" CASE GGSM_TEXTPIVOT_CENTER RETURN "GGSM_TEXTPIVOT_CENTER" CASE GGSM_TEXTPIVOT_RIGHT RETURN "GGSM_TEXTPIVOT_RIGHT" ENDSWITCH RETURN "GGSM_TEXTPIVOT_INVALID" ENDFUNC FUNC STRING GGSM_TILE_COLLISION_TYPE_TO_STRING(GGSM_TILE_COLLISION_TYPE eType) SWITCH (eType) CASE GGSM_TILE_COLLISION_NONE RETURN "GGSM_TILE_COLLISION_NONE" CASE GGSM_TILE_COLLISION_BOX RETURN "GGSM_TILE_COLLISION_BOX" CASE GGSM_TILE_COLLISION_FULLBOX RETURN "GGSM_TILE_COLLISION_FULLBOX" CASE GGSM_TILE_COLLISION_LINE RETURN "GGSM_TILE_COLLISION_LINE" CASE GGSM_TILE_COLLISION_POLYGON RETURN "GGSM_TILE_COLLISION_POLYGON" CASE NUM_GGSM_TILE_COLLISION_TYPE RETURN "NUM_GGSM_TILE_COLLISION_TYPE" ENDSWITCH RETURN "GGSM_TILE_COLLISION_TYPE_INVALID" ENDFUNC FUNC STRING GGSM_WEAPON_STATE_TO_STRING(GGSM_WEAPON_STATE eType) SWITCH (eType) CASE GGSM_WEAPON_STATE_INACTIVE RETURN "GGSM_WEAPON_STATE_INACTIVE" CASE GGSM_WEAPON_STATE_READY RETURN "GGSM_WEAPON_STATE_READY" CASE GGSM_WEAPON_STATE_FIRING RETURN "GGSM_WEAPON_STATE_FIRING" CASE GGSM_WEAPON_STATE_FIRED RETURN "GGSM_WEAPON_STATE_FIRED" CASE GGSM_WEAPON_STATE_RELOAD RETURN "GGSM_WEAPON_STATE_RELOAD" CASE GGSM_WEAPON_STATE_BURST_RELOAD RETURN "GGSM_WEAPON_STATE_BURST_RELOAD" CASE GGSM_WEAPON_STATE_SPINUP RETURN "GGSM_WEAPON_STATE_SPINUP" CASE GGSM_WEAPON_STATE_COOLDOWN RETURN "GGSM_WEAPON_STATE_COOLDOWN" ENDSWITCH RETURN "GGSM_WEAPON_STATE_INVALID" ENDFUNC FUNC STRING GGSM_WEAPON_TYPE_TO_STRING(GGSM_WEAPON_TYPE eType) SWITCH (eType) CASE GGSM_WEAPON_NONE RETURN "GGSM_WEAPON_NONE" CASE GGSM_WEAPON_DEFAULT RETURN "GGSM_WEAPON_DEFAULT" CASE GGSM_WEAPON_ENEMYBEAM RETURN "GGSM_WEAPON_ENEMYBEAM" CASE GGSM_WEAPON_ENEMYCONESPREAD RETURN "GGSM_WEAPON_ENEMYCONESPREAD" CASE GGSM_WEAPON_ENEMYLASER RETURN "GGSM_WEAPON_ENEMYLASER" CASE GGSM_WEAPON_ENEMYSHOT RETURN "GGSM_WEAPON_ENEMYSHOT" CASE GGSM_WEAPON_ENEMYSHOT_RAPID RETURN "GGSM_WEAPON_ENEMYSHOT_RAPID" CASE GGSM_WEAPON_ENEMYSPREAD RETURN "GGSM_WEAPON_ENEMYSPREAD" CASE GGSM_WEAPON_ENEMYTIMEDSPREAD RETURN "GGSM_WEAPON_ENEMYTIMEDSPREAD" CASE GGSM_WEAPON_ENEMYVULCAN RETURN "GGSM_WEAPON_ENEMYVULCAN" CASE GGSM_WEAPON_ENEMYCLUSTERBOMB RETURN "GGSM_WEAPON_ENEMYCLUSTERBOMB" CASE GGSM_WEAPON_FRUITBOWL RETURN "GGSM_WEAPON_FRUITBOWL" CASE GGSM_WEAPON_GRANANAGLASSES RETURN "GGSM_WEAPON_GRANANAGLASSES" CASE GGSM_WEAPON_GRANANAGLASSES2 RETURN "GGSM_WEAPON_GRANANAGLASSES2" CASE GGSM_WEAPON_GRANANAHAIR RETURN "GGSM_WEAPON_GRANANAHAIR" CASE GGSM_WEAPON_GRANANASPREAD1 RETURN "GGSM_WEAPON_GRANANASPREAD1" CASE GGSM_WEAPON_GRANANASPREAD1A RETURN "GGSM_WEAPON_GRANANASPREAD1A" CASE GGSM_WEAPON_PLYREXPSHELL RETURN "GGSM_WEAPON_PLYREXPSHELL" CASE GGSM_WEAPON_PLYRVULCAN RETURN "GGSM_WEAPON_PLYRVULCAN" CASE GGSM_WEAPON_PLYRSCATTER RETURN "GGSM_WEAPON_PLYRSCATTER" CASE GGSM_WEAPON_PLYRHOMINGROCKET RETURN "GGSM_WEAPON_PLYRHOMINGROCKET" CASE GGSM_WEAPON_PLYRDUALARCH RETURN "GGSM_WEAPON_PLYRDUALARCH" CASE GGSM_WEAPON_PLYRWAVEBLASTER RETURN "GGSM_WEAPON_PLYRWAVEBLASTER" CASE GGSM_WEAPON_PLYRBACKVULCAN RETURN "GGSM_WEAPON_PLYRBACKVULCAN" CASE GGSM_WEAPON_BREADSPREAD RETURN "GGSM_WEAPON_BREADSPREAD" CASE GGSM_WEAPON_SMOOTHIESPREAD RETURN "GGSM_WEAPON_SMOOTHIESPREAD" CASE GGSM_WEAPON_SMOOTHIEVULCAN RETURN "GGSM_WEAPON_SMOOTHIEVULCAN" CASE GGSM_WEAPON_DANK_CANNON RETURN "GGSM_WEAPON_DANK_CANNON" CASE GGSM_WEAPON_DANK_ROCKET RETURN "GGSM_WEAPON_DANK_ROCKET" CASE GGSM_WEAPON_DANK_HROCKET RETURN "GGSM_WEAPON_DANK_HROCKET" CASE GGSM_WEAPON_DANK_SCATTER RETURN "GGSM_WEAPON_DANK_SCATTER" CASE GGSM_WEAPON_DANK_SPREAD RETURN "GGSM_WEAPON_DANK_SPREAD" CASE GGSM_WEAPON_DANK_CLUSTERBOMB RETURN "GGSM_WEAPON_DANK_CLUSTERBOMB" CASE GGSM_WEAPON_ACID RETURN "GGSM_WEAPON_ACID" CASE GGSM_WEAPON_ACID_VULKAN RETURN "GGSM_WEAPON_ACID_VULKAN" CASE GGSM_WEAPON_MARINE_LAUNCHER RETURN "GGSM_WEAPON_MARINE_LAUNCHER" CASE GGSM_WEAPON_MARINE_SPREAD RETURN "GGSM_WEAPON_MARINE_SPREAD" CASE GGSM_WEAPON_TEST_WEAPON RETURN "GGSM_WEAPON_TEST_WEAPON" CASE NUM_GGSM_WEAPON_TYPE RETURN "NUM_GGSM_WEAPON_TYPE" CASE GGSM_WEAPON_INVALID RETURN "GGSM_WEAPON_INVALID" ENDSWITCH RETURN "GGSM_WEAPON_TYPE_INVALID" ENDFUNC FUNC STRING GGSM_UNLOCK_TYPE_TO_STRING(GGSM_UNLOCK_TYPE eType) SWITCH (eType) CASE GGSM_UNLOCK_NONE RETURN "GGSM_UNLOCK_NONE" CASE GGSM_UNLOCK_TSHIRTS_GGSM_ASTEROID RETURN "GGSM_UNLOCK_TSHIRTS_GGSM_ASTEROID" CASE GGSM_UNLOCK_TSHIRTS_GGSM_CLOCKEDIT RETURN "GGSM_UNLOCK_TSHIRTS_GGSM_CLOCKEDIT" CASE GGSM_UNLOCK_TSHIRTS_GGSM_NODAMAGE RETURN "GGSM_UNLOCK_TSHIRTS_GGSM_NODAMAGE" CASE GGSM_UNLOCK_TSHIRTS_GGSM_NUKE RETURN "GGSM_UNLOCK_TSHIRTS_GGSM_NUKE" CASE GGSM_UNLOCK_TSHIRTS_GGSM_SCORE RETURN "GGSM_UNLOCK_TSHIRTS_GGSM_SCORE" CASE GGSM_UNLOCK_TSHIRTS_GGSM_COMPLETE RETURN "GGSM_UNLOCK_TSHIRTS_GGSM_COMPLETE" CASE GGSM_UNLOCK_TROPHY RETURN "GGSM_UNLOCK_TROPHY" CASE GGSM_UNLOCK_TROPHY_PENTHOUSE RETURN "GGSM_UNLOCK_TROPHY_PENTHOUSE" CASE NUM_GGSM_UNLOCK_TYPE RETURN "NUM_GGSM_UNLOCK_TYPE" ENDSWITCH RETURN "GGSM_UNLOCK_TYPE_INVALID" ENDFUNC #ENDIF