Files
2025-09-29 00:52:08 +02:00

2815 lines
122 KiB
Scheme
Executable File

//-------------------------------------------------
// 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