;-----------------------------------------------------------; ; ; ; Invaded ; ; Version 1.0 ; ; Variable Declarations ; ; ; ;-----------------------------------------------------------; vars = saferam1 ; Main variable pointer, starts at beginning of saferam1 ;------------------------------------------------------------------------------ ; Variable Name Location Size Description ;------------------------------------------------------------------------------ menuItem = vars+000 ; 1 Selection at main menu speed = vars+001 ; 1 Game speed vatPtr = vars+002 ; 2 Pointer to current location in VAT noLevelsets = vars+004 ; 1 Number of levels found dataPtr = vars+005 ; 2 Pointer to levelset data levelsetName = vars+007 ; 6 Where levelset name is copied to tileData = vars+013 ; 2 Save pointer to start of tile data solidTiles = vars+015 ; 1 Number where solid tiles begin hurtyTiles = vars+016 ; 1 Number where hurty tiles begin pScreenX = vars+017 ; 1 Player screen X Coord cpX = vars+018 ; 1 X Block value of last checkpoint passed levelPtr = vars+019 ; 2 Pointer to start of level data noLevels = vars+021 ; 1 Number of levels in this Levelset level = vars+022 ; 1 Current level x = vars+023 ; 2 X Coord of player y = vars+025 ; 1 Y Coord of player xScr = vars+026 ; 2 X scroll counter xBlock = vars+028 ; 1 X block of top-left tile frame = vars+029 ; 1 Frame counter clipMask = vars+030 ; 1 Temp byte for ASCR83 rows2Put = vars+031 ; 1 Temp byte for ASCR83 bitMask = vars+032 ; 1 Temp byte for ASCR83 playerBG = vars+033 ; 10 Old X/Y coords & background behind player lives = vars+043 ; 1 Number of lives left score = vars+044 ; 2 Score beam = vars+046 ; 1 Beam Power dead = vars+047 ; 1 0 = Player alive, else player dead hiScore = vars+048 ; 2 Hi-Score for this Levelset noEnemies = vars+050 ; 1 Number of enemies in a Levelset #ifdef TI83 tempMem = vars+051 ; 2 Pointer to temp program #endif orbY = vars+053 ; 1 Orb Y Coordinate orbX = vars+054 ; 1 Orb X Coordinate orbBG = vars+055 ; 10 Old X/Y coords & background behind orb enemyIni = vars+065 ; 2 Pointer to enemy initialisation array numEnemiesThisLevel = vars+067 ; 1 Number of enemies left in the level lastSprite = vars+068 ; 2 Pointer to last enemy sprite that was drawn aiCnt = vars+070 ; 1 Input parameter for AI scripts collideObject1 = vars+071 ; 4 Object 1 for collision detection [x, width, y, height] collideObject2 = vars+075 ; 4 Object 2 for collision detection [x, width, y, height] guardian = vars+079 ; 1 1 = Fighting end-of-level boss gAICnt1 = vars+080 ; 1 AI Script 1 counter for end-of-level boss gAICnt2 = vars+081 ; 1 AI Script 2 counter for end-of-level boss gEnemyCnt = vars+082 ; 1 Counter for end-of-level bosses that produce normal enemies gEnemyIni = vars+083 ; 4 Fake enemyIni entry used by end-of-level boss orb = vars+087 ; 1 Flags for Orb ; bit 0 = Is Orb on screen ; bit 1 = Is player wearing Orb ; bit 2 = Is it being worn on the front or back ; bit 3 = Is it being shot off the player specialWeapon = vars+088 ; 1 Special weapon player has (0 = None) cmpPtr = vars+089 ; 2 Pointer to start of compressed data scrolled = vars+091 ; 1 0 = Didn't scroll this frame, 1 = Scrolled this frame showHLBuffer = vars+092 ; 7 String buffer arrays = vars+768 ; Main array pointer, starts at end of saferam1 ;------------------------------------------------------------------------------ ; Array Name Location Size Description ;------------------------------------------------------------------------------ enemyBG = arrays-080 ; 80 Enemy backgrounds (8 entries * 10 bytes) [x, y, BG] enemyArray = arrays-128 ; 48 Enemies (8 entries * 6 bytes) [type, x, y, health, aiCnt1, aiCnt2] animationArray = arrays-143 ; 15 Explosions (5 entries * 3 bytes) [counter, x, y] eBulletArray = arrays-183 ; 40 Enemy bullets (10 entries * 4 bytes) [type, x, y, dir] levelDataTable = arrays-261 ; 78 Data for current level guardianBG = arrays-301 ; 40 End-Of-Level Boss backgrounds pickupArray = arrays-313 ; 12 Floating pickups (4 entries * 3 bytes) [type, x, y] bulletArray = arrays-413 ; 100 Player bullets (25 entries * 4 bytes) [type, x, y, dir] enemyScoreTable = arrays-453 ; 40 Amount of points each enemy is worth (20 entries * 2 bytes) ;------------------------------------------------------------------------------ ; Storage Area to store System Pointers (normally after gbuf) ;------------------------------------------------------------------------------ #ifdef TI83 systemPointers = vars+100 #else systemPointers = vars+100 #endif ;------------------------------------------------------------------------------ ; levelDataTable layout: ;------------------------------------------------------------------------------ levelLength = levelDataTable+0 numEnemies = levelDataTable+1 guardianSizeX = levelDataTable+2 guardianSizeY = levelDataTable+3 guardianSpr1 = levelDataTable+4 guardianSpr2 = levelDataTable+20 guardianSpr3 = levelDataTable+36 guardianSpr4 = levelDataTable+52 gX = levelDataTable+68 gY = levelDataTable+69 gHealth = levelDataTable+70 gAI1 = levelDataTable+71 gAI2 = levelDataTable+72 gClearScreen = levelDataTable+73 gEnemy = levelDataTable+74 cp1 = levelDataTable+75 cp2 = levelDataTable+76 cp3 = levelDataTable+77 ;------------------------------------------------------------------------------ ; Constants: ;------------------------------------------------------------------------------ verMajor = '1' verMinor = '0' LEVELSET_HEADER_LENGTH = 9 LEVEL_HEADER_LENGTH = 78 ENEMY_DATA_LENGTH = 21 INI_DEAD = 101 MENU_MAX = 4 MEM_NEEDED = 1800+LEVEL_HEADER_LENGTH MAX_ANIMS = 5 MAX_BULLETS = 25 MAX_EBULLETS = 10 MAX_ENEMIES = 8 MAX_PICKUPS = 4 EBULLET_THROUGH_SOLIDS = 4 E_TYPE = 0 E_X = 1 E_Y = 2 E_HEALTH = 3 E_AICNT1 = 4 E_AICNT2 = 5 ;------------------------------------------------------------------------------ ; Some extra equates: ;------------------------------------------------------------------------------ #ifndef MIRAGE apdable = 2 apdrunning = 3 apdflags = 8 #endif #ifdef TI83 timer = $8009 #else timer = $8448 #endif .end