diff options
Diffstat (limited to 'wram.asm')
-rw-r--r-- | wram.asm | 1204 |
1 files changed, 1201 insertions, 3 deletions
@@ -1,4 +1,1202 @@ -SECTION "pokedex",WRAMX[$d2f7],BANK[1] -WPokedexOwned: + + +SECTION "WRAM Bank 0", WRAM0 + + +SECTION "Sprite State Data", WRAM0[$c100] + +wSpriteStateData1: ; c100 +; data for all sprites on the current map +; holds info for 16 sprites with $10 bytes each +; player sprite is always sprite 0 +; C1x0: picture ID (fixed, loaded at map init) +; C1x1: movement status (0: uninitialized, 1: ready, 2: delayed, 3: moving) +; C1x2: sprite image index (changed on update, $ff if off screen, includes facing direction, progress in walking animation and a sprite-specific offset) +; C1x3: Y screen position delta (-1,0 or 1; added to c1x4 on each walking animation update) +; C1x4: Y screen position (in pixels, always 4 pixels above grid which makes sprites appear to be in the center of a tile) +; C1x5: X screen position delta (-1,0 or 1; added to c1x6 on each walking animation update) +; C1x6: X screen position (in pixels, snaps to grid if not currently walking) +; C1x7: intra-animation-frame counter (counting upwards to 4 until c1x8 is incremented) +; C1x8: animation frame counter (increased every 4 updates, hold four states (totalling to 16 walking frames) +; C1x9: facing direction (0: down, 4: up, 8: left, $c: right) +; C1xA +; C1xB +; C1xC +; C1xD +; C1xE +; C1xF + ds $10 * $10 + +wSpriteStateData2: ; c200 +; more data for all sprites on the current map +; holds info for 16 sprites with $10 bytes each +; player sprite is always sprite 0 +; C2x0: walk animation counter (counting from $10 backwards when moving) +; C2x1: +; C2x2: Y displacement (initialized at 8, supposed to keep moving sprites from moving too far, but bugged) +; C2x3: X displacement (initialized at 8, supposed to keep moving sprites from moving too far, but bugged) +; C2x4: Y position (in 2x2 tile grid steps, topmost 2x2 tile has value 4) +; C2x5: X position (in 2x2 tile grid steps, leftmost 2x2 tile has value 4) +; C2x6: movement byte 1 (determines whether a sprite can move, $ff:not moving, $fe:random movements, others unknown) +; C2x7: (?) (set to $80 when in grass, else $0; may be used to draw grass above the sprite) +; C2x8: delay until next movement (counted downwards, status (c1x1) is set to ready if reached 0) +; C2x9 +; C2xA +; C2xB +; C2xC +; C2xD +; C2xE: sprite image base offset (in video ram, player always has value 1, used to compute c1x2) +; C2xF + ds $10 * $10 + + +wOAMBuffer: ; c300 +; buffer for OAM data. Copied to OAM by DMA + ds 4 * 40 + + +SECTION "Tile Map", WRAM0[$c3a0] + +wTileMap: ; c3a0 +; buffer for tiles that are visible on screen (20 columns by 18 rows) + ds 20 * 18 + +wTileMapBackup: ; c508 +; buffer for temporarily saving and restoring current screen's tiles +; (e.g. if menus are drawn on top) + ds 20 * 18 + +; c670 + + +SECTION "Screen Edge Tiles", WRAM0[$cbfc] + +wScreenEdgeTiles: ; cbfc +; the tiles of the row or column to be redrawn by RedrawExposedScreenEdge + ds 20 * 2 + +; coordinates of the position of the cursor for the top menu item (id 0) +wTopMenuItemY: ; cc24 + ds 1 +wTopMenuItemX: ; cc25 + ds 1 + +wCurrentMenuItem: ; cc26 +; the id of the currently selected menu item +; the top item has id 0, the one below that has id 1, etc. +; note that the "top item" means the top item currently visible on the screen +; add this value to [wListScrollOffset] to get the item's position within the list + ds 1 + +wTileBehindCursor: ; cc27 +; the tile that was behind the menu cursor's current location + ds 1 + +wMaxMenuItem: ; cc28 +; id of the bottom menu item + ds 1 + +wMenuWatchedKeys: ; cc29 +; bit mask of keys that the menu will respond to + ds 1 + +wLastMenuItem: ; cc2a +; id of previously selected menu item + ds 1 + +; cc2b + + ds 3 + +wPlayerMoveListIndex: ; cc2e + ds 1 + +wPlayerMonNumber: ; cc2f + ds 1 + +wMenuCursorLocation: ; cc30 +; the address of the menu cursor's current location within wTileMap + ds 2 + + ds 2 + +wMenuJoypadPollCount: ; cc34 +; how many times should HandleMenuInput poll the joypad state before it returns? + ds 1 + + ds 1 + +wListScrollOffset: ; cc36 +; offset of the current top menu item from the beginning of the list +; keeps track of what section of the list is on screen + ds 1 + + ds 19 + +wMenuWrappingEnabled: ; cc4a +; set to 1 if you can go from the bottom to the top or top to bottom of a menu +; set to 0 if you can't go past the top or bottom of the menu + ds 1 + + ds 10 + +wTrainerHeaderFlagBit: ; cc55 + ds 1 + +; cc56 + + +SECTION "RLE", WRAM0[$ccd2] +wRLEByteCount: ; ccd2 + ds 1 + + ds 4 + +; current HP of player and enemy substitutes +wPlayerSubstituteHP: ; ccd7 + ds 1 +wEnemySubstituteHP: ; ccd8 + ds 1 + + ds 2 + +wMoveMenuType: ; ccdb +; 0=regular, 1=mimic, 2=above message box (relearn, heal pp..) + ds 1 + +wPlayerSelectedMove: ; ccdc + ds 1 +wEnemySelectedMove: ; ccdd + ds 1 + + ds 1 + +wAICount: ; ccdf +; number of times remaining that AI action can occur + ds 1 + + ds 2 + +wEnemyMoveListIndex: ; cce2 + ds 1 + +; cce3 + + +SECTION "Stat Modifiers", WRAM0[$cd1a] + +; stat modifiers for the player's current pokemon +; value can range from 1 - 13 ($1 to $D) +; 7 is normal + +wPlayerMonStatMods: +wPlayerMonAttackMod: ; cd1a + ds 1 +wPlayerMonDefenseMod: ; cd1b + ds 1 +wPlayerMonSpeedMod: ; cd1c + ds 1 +wPlayerMonSpecialMod: ; cd1d + ds 1 +wPlayerMonAccuracyMod: ; cd1e + ds 1 +wPlayerMonEvasionMod: ; cd1f + ds 1 + + ds 13 + +wEngagedTrainerClass: ; cd2d + ds 1 +wEngagedTrainerSet: ; cd2e +; ds 1 + +; stat modifiers for the enemy's current pokemon +; value can range from 1 - 13 ($1 to $D) +; 7 is normal + +wEnemyMonStatMods: +wEnemyMonAttackMod: ; cd2e + ds 1 +wEnemyMonDefenseMod: ; cd2f + ds 1 +wEnemyMonSpeedMod: ; cd30 + ds 1 +wEnemyMonSpecialMod: ; cd31 + ds 1 +wEnemyMonAccuracyMod: ; cd32 + ds 1 +wEnemyMonEvasionMod: ; cd33 + ds 1 + + ds 9 + +wWhichTrade: ; cd3d +; which entry from TradeMons to select +; ds 1 + +wTrainerSpriteOffset: ; cd3d + ds 1 +wTrainerEngageDistance: ; cd3e + ds 1 +wTrainerFacingDirection: ; cd3f + ds 1 +wTrainerScreenY: ; cd40 + ds 1 +wTrainerScreenX: ; cd41 + ds 1 + + ds 30 + +wFlags_0xcd60: ; cd60 +; bit 0: is player engaged by trainer (to avoid being engaged by multiple trainers simultaniously) + ds 1 + + ds 10 + +wJoypadForbiddenButtonsMask: ; cd6b +; bit 1 means button presses will be ignored for that button + ds 1 + + ds 21 + +wTileMapBackup2: ; cd81 +; second buffer for temporarily saving and restoring current screen's tiles (e.g. if menus are drawn on top) + ds 20 * 18 + +wBuffer: ; cee9 +; used for temporary things + +wHPBarMaxHP: ; cee9 + ds 2 +wHPBarOldHP: ; ceeb + ds 2 +wHPBarNewHP: ; ceed + ds 2 +wHPBarDelta: ; ceef + ds 1 + + ds 13 + +wHPBarHPDifference: ; cefd + ds 1 + + ds 9 + +wAnimSoundID: ; cf07 +; sound ID during battle animations + ds 1 + + ds 12 + +wCurSpriteMovement2: ; cf14 +; movement byte 2 of current sprite + ds 1 + + ds 74 + +wGymCityName: ; cf5f +wStringBuffer1: ; cf5f + ds 16 + 1 +wGymLeaderName: ; cf70 +wStringBuffer2: ; cf70 + ds 16 + 1 +wStringBuffer3: ; cf81 + ds 16 + 1 + +wWhichPokemon: ; cf92 +; which pokemon you selected + ds 1 + + ds 1 + +wListMenuID: ; cf94 +; ID used by DisplayListMenuID + ds 1 + + + +W_WALKCOUNTER EQU $CFC5 ; walk animation counter + +W_CURCHANNELPOINTER EQU $CFC7 ; (the current music channel pointer - $4000) / 3 + +W_ENEMYMOVENUM EQU $CFCC +W_ENEMYMOVEEFFECT EQU $CFCD +W_ENEMYMOVEPOWER EQU $CFCE +W_ENEMYMOVETYPE EQU $CFCF +W_ENEMYMOVEACCURACY EQU $CFD0 +W_ENEMYMOVEMAXPP EQU $CFD1 + +W_PLAYERMOVENUM EQU $CFD2 +W_PLAYERMOVEEFFECT EQU $CFD3 +W_PLAYERMOVEPOWER EQU $CFD4 +W_PLAYERMOVETYPE EQU $CFD5 +W_PLAYERMOVEACCURACY EQU $CFD6 +W_PLAYERMOVEMAXPP EQU $CFD7 + +W_ENEMYMONID EQU $CFD8 + +W_ENEMYMONNAME EQU $CFDA + +W_ENEMYMONCURHP EQU $CFE6 ; active opponent's hp (16 bits) +W_ENEMYMONNUMBER EQU $CFE8 ; active opponent's position in team (0 to 5) +W_ENEMYMONSTATUS EQU $CFE9 ; active opponent's status condition + ; bit 0 slp + ; bit 1 slp + ; bit 2 slp + ; bit 3 psn + ; bit 4 brn + ; bit 5 frz + ; bit 6 par + ; unused? (XXX confirm) +W_ENEMYMONTYPES EQU $CFEA +W_ENEMYMONTYPE1 EQU $CFEA +W_ENEMYMONTYPE2 EQU $CFEB +W_ENEMYMONMOVES EQU $CFED +W_ENEMYMONATKDEFIV EQU $CFF1 +W_ENEMYMONSPDSPCIV EQU $CFF2 +W_ENEMYMONLEVEL EQU $CFF3 +W_ENEMYMONMAXHP EQU $CFF4 ; (16 bits) +W_ENEMYMONATTACK EQU $CFF6 +W_ENEMYMONDEFENSE EQU $CFF8 +W_ENEMYMONSPEED EQU $CFFA +W_ENEMYMONSPECIAL EQU $CFFC +W_ENEMYMONPP EQU $CFFE + + +SECTION "WRAM Bank 1", WRAMX, BANK[1] + +W_PLAYERMONNAME EQU $D009 +W_PLAYERMONID EQU $D014 +W_PLAYERMONCURHP EQU $D015 ; active opponent's hp (16 bits) +W_PLAYERMONSTATUS EQU $D018 ; the status of the player’s current monster + ; bit 0 slp + ; bit 1 slp + ; bit 2 slp + ; bit 3 psn + ; bit 4 brn + ; bit 5 frz + ; bit 6 par + ; unused? (XXX confirm) +W_PLAYERMONTYPES EQU $D019 +W_PLAYERMONTYPE1 EQU $D019 +W_PLAYERMONTYPE2 EQU $D01A +W_PLAYERMONMOVES EQU $D01C +W_PLAYERMONIVS EQU $D020 ; 4x 4 bit: atk, def, spd, spc +W_PLAYERMONLEVEL EQU $D022 +W_PLAYERMONMAXHP EQU $D023 ; (16 bits) +W_PLAYERMONATK EQU $D025 +W_PLAYERMONDEF EQU $D027 +W_PLAYERMONSPEED EQU $D029 +W_PLAYERMONSPECIAL EQU $D02B +W_PLAYERMONPP EQU $D02D + +W_TRAINERCLASS EQU $D031 + +W_ISINBATTLE EQU $D057 ; no battle, this is 0 + ; wild battle, this is 1 + ; trainer battle, this is 2 + +W_PLAYERMONSALIVEFLAGS EQU $D058 ; 6 bit array, 1 if player mon is alive + +W_CUROPPONENT EQU $D059 ; in a wild battle, this is the species of pokemon + ; in a trainer battle, this is the trainer class + $C8 + +W_BATTLETYPE EQU $D05A ; in normal battle, this is 0 + ; in old man battle, this is 1 + ; in safari battle, this is 2 + +W_LONEATTACKNO EQU $D05C ; which entry in LoneAttacks to use +W_GYMLEADERNO EQU $D05C ; it's actually the same thing as ^ +W_TRAINERNO EQU $D05D ; which instance of [youngster, lass, etc] is this? + +W_MOVEMISSED EQU $D05F + +; not entirely sure that all these bits are 100% correct +; Battle Status Byte 1 +; bit 0 - bide +; bit 1 - thrash / petal dance +; bit 2 - attacking multiple times (e.g. double kick) +; bit 3 - flinch +; bit 4 - charging up for attack +; bit 5 - using multi-turn move (e.g. wrap) +; bit 6 - invulnerable to normal attack (using fly/dig) +; bit 7 - confusion + +; Battle Status Byte 2 +; bit 0 - X Accuracy effect +; bit 1 - protected by "mist" +; bit 2 - focus energy effect +; bit 4 - has a substitute +; bit 5 - need to recharge +; bit 6 - rage +; bit 7 - leech seeded + +; Battle Status Byte 3 +; bit 0 - toxic +; bit 1 - light screen +; bit 2 - reflect +; bit 3 - tranformed + +W_PLAYERBATTSTATUS1 EQU $D062 +W_PLAYERBATTSTATUS2 EQU $D063 +W_PLAYERBATTSTATUS3 EQU $D064 + +W_ENEMYBATTSTATUS1 EQU $D067 +W_ENEMYBATTSTATUS2 EQU $D068 +W_ENEMYBATTSTATUS3 EQU $D069 + +W_PLAYERTOXICCOUNTER EQU $D06C +W_PLAYERDISABLEDMOVE EQU $D06D + +W_ENEMYTOXICCOUNTER EQU $D071 +W_ENEMYDISABLEDMOVE EQU $D072 + +W_NUMHITS EQU $D074 ; number of hits in attacks like Doubleslap, etc. + +W_ANIMATIONID EQU $D07C ; ID number of the current battle animation + +; base coordinates of frame block +W_BASECOORDX EQU $D081 +W_BASECOORDY EQU $D082 + +W_FBTILECOUNTER EQU $D084 ; counts how many tiles of the current frame block have been drawn + +W_SUBANIMFRAMEDELAY EQU $D086 ; duration of each frame of the current subanimation in terms of screen refreshes +W_SUBANIMCOUNTER EQU $D087 ; counts the number of subentries left in the current subanimation + +W_NUMFBTILES EQU $D089 ; number of tiles in current battle animation frame block + +W_SUBANIMTRANSFORM EQU $D08B ; controls what transformations are applied to the subanimation +; 01: flip horizontally and vertically +; 02: flip horizontally and translate downwards 40 pixels +; 03: translate base coordinates of frame blocks, but don't change their internal coordinates or flip their tiles +; 04: reverse the subanimation + +W_PBSTOREDREGISTERH EQU $D08C +W_PBSTOREDREGISTERL EQU $D08D +W_PBSTOREDREGISTERD EQU $D08E +W_PBSTOREDREGISTERE EQU $D08F +W_PBSTOREDROMBANK EQU $D092 + +W_SUBANIMADDRPTR EQU $D094 ; the address _of the address_ of the current subanimation entry (2 bytes) + +W_SUBANIMSUBENTRYADDR EQU $D096 ; the address of the current subentry of the current subanimation (2 bytes) + +W_FBDESTADDR EQU $D09C ; current destination address in OAM for frame blocks (2 bytes, big endian) + +W_FBMODE EQU $D09E ; controls how the frame blocks are put together to form frames +; specifically, after finishing drawing the frame block, the frame block's mode determines what happens +; 00: clean OAM buffer and delay +; 02: move onto the next frame block with no delay and no cleaning OAM buffer +; 03: delay, but don't clean OAM buffer +; 04: delay, without cleaning OAM buffer, and do not advance [W_FBDESTADDR], so that the next frame block will overwrite this one + +; sprite data is written column by column, each byte contains 8 columns (one for ech bit) +; for 2bpp sprites, pairs of two consecutive bytes (i.e. pairs of consecutive rows of sprite data) +; contain the upper and lower bit of each of the 8 pixels, respectively +SPRITEBUFFERSIZE EQU $188 ; 7 * 7 (tiles) * 8 (bytes per tile) +S_SPRITEBUFFER0 EQU $A000 + 0 * SPRITEBUFFERSIZE +S_SPRITEBUFFER1 EQU $A000 + 1 * SPRITEBUFFERSIZE +S_SPRITEBUFFER2 EQU $A000 + 2 * SPRITEBUFFERSIZE + +W_SPRITECURPOSX EQU $D0A1 +W_SPRITECURPOSY EQU $D0A2 +W_SPRITEWITDH EQU $D0A3 +W_SPRITEHEIGHT EQU $D0A4 +W_SPRITEINPUTCURBYTE EQU $D0A5 ; current input byte +W_SPRITEINPUTBITCOUNTER EQU $D0A6 ; bit offset of last read input bit + +; determines where in the output byte the two bits are placed. Each byte contains four columns (2bpp data) +; 3 -> XX000000 1st column +; 2 -> 00XX0000 2nd column +; 1 -> 0000XX00 3rd column +; 0 -> 000000XX 4th column +W_SPRITEOUTPUTBITOFFSET EQU $D0A7 + +; bit 0 determines used buffer (0 -> $a188, 1 -> $a310) +; bit 1 loading last sprite chunk? (there are at most 2 chunks per load operation) +W_SPRITELOADFLAGS EQU $D0A8 +W_SPRITEUNPACKMODE EQU $D0A9 +W_SPRITEFLIPPED EQU $D0AA + +W_SPRITEINPUTPTR EQU $D0AB ; pointer to next input byte +W_SPRITEOUTPUTPTR EQU $D0AD ; pointer to current output byte +W_SPRITEOUTPUTPTRCACHED EQU $D0AF ; used to revert pointer for different bit offsets +W_SPRITEDECODETABLE0PTR EQU $D0B1 ; pointer to differential decoding table (assuming initial value 0) +W_SPRITEDECODETABLE1PTR EQU $D0B3 ; pointer to differential decoding table (assuming initial value 1) + + +; List type +; used in $D0B6 +W_LISTTYPE EQU $D0B6 + +W_MONHEADER EQU $d0b8 +W_MONHDEXNUM EQU $d0b8 +W_MONHBASESTATS EQU $d0b9 +;W_MONHBASEHP EQU $d0b9 +;W_MONHBASEATTACK EQU $d0ba +;W_MONHBASEDEFENSE EQU $d0bb +W_MONHBASESPEED EQU $d0bc +;W_MONHBASESPECIAL EQU $d0bd +W_MONHTYPES EQU $d0be +W_MONHTYPE1 EQU $d0be +W_MONHTYPE2 EQU $d0bf +W_MONHCATCHRATE EQU $d0c0 +;W_MONHBASEXP EQU $d0c1 +W_MONHSPRITEDIM EQU $d0c2 +W_MONHFRONTSPRITE EQU $d0c3 +W_MONHBACKSPRITE EQU $d0c5 +W_MONHMOVES EQU $d0c7 +;W_MONHMOVE1 EQU $d0c7 +;W_MONHMOVE2 EQU $d0c8 +;W_MONHMOVE3 EQU $d0c9 +;W_MONHMOVE4 EQU $d0ca +W_MONHGROWTHRATE EQU $d0cb +W_MONHLEARNSET EQU $d0cc ; bit field, 7 bytes +;W_MONHPADDING EQU $d0d7 + + + +W_DAMAGE EQU $D0D7 + + +W_CURENEMYLVL EQU $D127 + +W_ISLINKBATTLE EQU $D12B + +W_PRIZE1 EQU $D13D +W_PRIZE2 EQU $D13E +W_PRIZE3 EQU $D13F + +W_PLAYERNAME EQU $D158 ; 11 characters, including null + +W_NUMINPARTY EQU $D163 + +W_PARTYMON1 EQU $D164 +W_PARTYMON2 EQU $D165 +W_PARTYMON3 EQU $D166 +W_PARTYMON4 EQU $D167 +W_PARTYMON5 EQU $D168 +W_PARTYMON6 EQU $D169 +W_PARTYMONEND EQU $D16A + +W_PARTYMON1DATA EQU $D16B +W_PARTYMON1_NUM EQU $D16B +W_PARTYMON1_HP EQU $D16C +W_PARTYMON1_BOXLEVEL EQU $D16E +W_PARTYMON1_STATUS EQU $D16F +W_PARTYMON1_TYPE1 EQU $D170 +W_PARTYMON1_TYPE2 EQU $D171 +W_PARTYMON1_CRATE EQU $D172 +W_PARTYMON1_MOVE1 EQU $D173 +W_PARTYMON1_MOVE2 EQU $D174 +W_PARTYMON1_MOVE3 EQU $D175 +W_PARTYMON1_MOVE4 EQU $D176 +W_PARTYMON1_OTID EQU $D177 +W_PARTYMON1_EXP EQU $D179 +W_PARTYMON1_EVHP EQU $D17C +W_PARTYMON1_EVATTACK EQU $D17E +W_PARTYMON1_EVDEFENSE EQU $D180 +W_PARTYMON1_EVSPEED EQU $D182 +W_PARTYMON1_EVSECIAL EQU $D184 +W_PARTYMON1_IV EQU $D186 +W_PARTYMON1_MOVE1PP EQU $D188 +W_PARTYMON1_MOVE2PP EQU $D189 +W_PARTYMON1_MOVE3PP EQU $D18A +W_PARTYMON1_MOVE4PP EQU $D18B +W_PARTYMON1_LEVEL EQU $D18C +W_PARTYMON1_MAXHP EQU $D18D +W_PARTYMON1_ATACK EQU $D18F +W_PARTYMON1_DEFENSE EQU $D191 +W_PARTYMON1_SPEED EQU $D193 +W_PARTYMON1_SPECIAL EQU $D195 + +W_PARTYMON2DATA EQU $D197 +W_PARTYMON2_NUM EQU $D197 +W_PARTYMON2_HP EQU $D198 +W_PARTYMON2_BOXLEVEL EQU $D19A +W_PARTYMON2_STATUS EQU $D19B +W_PARTYMON2_TYPE1 EQU $D19C +W_PARTYMON2_TYPE2 EQU $D19D +W_PARTYMON2_CRATE EQU $D19E +W_PARTYMON2_MOVE1 EQU $D19F +W_PARTYMON2_MOVE2 EQU $D1A0 +W_PARTYMON2_MOVE3 EQU $D1A1 +W_PARTYMON2_MOVE4 EQU $D1A2 +W_PARTYMON2_OTID EQU $D1A3 +W_PARTYMON2_EXP EQU $D1A5 +W_PARTYMON2_EVHP EQU $D1A8 +W_PARTYMON2_EVATTACK EQU $D1AA +W_PARTYMON2_EVDEFENSE EQU $D1AC +W_PARTYMON2_EVSPEED EQU $D1AE +W_PARTYMON2_EVSECIAL EQU $D1B0 +W_PARTYMON2_IV EQU $D1B2 +W_PARTYMON2_MOVE1PP EQU $D1B4 +W_PARTYMON2_MOVE2PP EQU $D1B5 +W_PARTYMON2_MOVE3PP EQU $D1B6 +W_PARTYMON2_MOVE4PP EQU $D1B7 +W_PARTYMON2_LEVEL EQU $D1B8 +W_PARTYMON2_MAXHP EQU $D1B9 +W_PARTYMON2_ATACK EQU $D1BB +W_PARTYMON2_DEFENSE EQU $D1BD +W_PARTYMON2_SPEED EQU $D1BF +W_PARTYMON2_SPECIAL EQU $D1C1 + +W_PARTYMON3DATA EQU $D1C3 +W_PARTYMON3_NUM EQU $D1C3 +W_PARTYMON3_HP EQU $D1C4 +W_PARTYMON3_BOXLEVEL EQU $D1C6 +W_PARTYMON3_STATUS EQU $D1C7 +W_PARTYMON3_TYPE1 EQU $D1C8 +W_PARTYMON3_TYPE2 EQU $D1C9 +W_PARTYMON3_CRATE EQU $D1CA +W_PARTYMON3_MOVE1 EQU $D1CB +W_PARTYMON3_MOVE2 EQU $D1CC +W_PARTYMON3_MOVE3 EQU $D1CD +W_PARTYMON3_MOVE4 EQU $D1CE +W_PARTYMON3_OTID EQU $D1CF +W_PARTYMON3_EXP EQU $D1D1 +W_PARTYMON3_EVHP EQU $D1D4 +W_PARTYMON3_EVATTACK EQU $D1D6 +W_PARTYMON3_EVDEFENSE EQU $D1D8 +W_PARTYMON3_EVSPEED EQU $D1DA +W_PARTYMON3_EVSECIAL EQU $D1DC +W_PARTYMON3_IV EQU $D1DE +W_PARTYMON3_MOVE1PP EQU $D1E0 +W_PARTYMON3_MOVE2PP EQU $D1E1 +W_PARTYMON3_MOVE3PP EQU $D1E2 +W_PARTYMON3_MOVE4PP EQU $D1E3 +W_PARTYMON3_LEVEL EQU $D1E4 +W_PARTYMON3_MAXHP EQU $D1E5 +W_PARTYMON3_ATACK EQU $D1E7 +W_PARTYMON3_DEFENSE EQU $D1E9 +W_PARTYMON3_SPEED EQU $D1EB +W_PARTYMON3_SPECIAL EQU $D1ED + +W_PARTYMON4DATA EQU $D1EF +W_PARTYMON4_NUM EQU $D1EF +W_PARTYMON4_HP EQU $D1F0 +W_PARTYMON4_BOXLEVEL EQU $D1F2 +W_PARTYMON4_STATUS EQU $D1F3 +W_PARTYMON4_TYPE1 EQU $D1F4 +W_PARTYMON4_TYPE2 EQU $D1F5 +W_PARTYMON4_CRATE EQU $D1F6 +W_PARTYMON4_MOVE1 EQU $D1F7 +W_PARTYMON4_MOVE2 EQU $D1F8 +W_PARTYMON4_MOVE3 EQU $D1F9 +W_PARTYMON4_MOVE4 EQU $D1FA +W_PARTYMON4_OTID EQU $D1FB +W_PARTYMON4_EXP EQU $D1FD +W_PARTYMON4_EVHP EQU $D200 +W_PARTYMON4_EVATTACK EQU $D202 +W_PARTYMON4_EVDEFENSE EQU $D204 +W_PARTYMON4_EVSPEED EQU $D206 +W_PARTYMON4_EVSECIAL EQU $D208 +W_PARTYMON4_IV EQU $D20A +W_PARTYMON4_MOVE1PP EQU $D20C +W_PARTYMON4_MOVE2PP EQU $D20D +W_PARTYMON4_MOVE3PP EQU $D20E +W_PARTYMON4_MOVE4PP EQU $D20F +W_PARTYMON4_LEVEL EQU $D210 +W_PARTYMON4_MAXHP EQU $D211 +W_PARTYMON4_ATACK EQU $D213 +W_PARTYMON4_DEFENSE EQU $D215 +W_PARTYMON4_SPEED EQU $D217 +W_PARTYMON4_SPECIAL EQU $D219 + +W_PARTYMON5DATA EQU $D21B +W_PARTYMON5_NUM EQU $D21B +W_PARTYMON5_HP EQU $D21C +W_PARTYMON5_BOXLEVEL EQU $D21E +W_PARTYMON5_STATUS EQU $D21F +W_PARTYMON5_TYPE1 EQU $D220 +W_PARTYMON5_TYPE2 EQU $D221 +W_PARTYMON5_CRATE EQU $D222 +W_PARTYMON5_MOVE1 EQU $D223 +W_PARTYMON5_MOVE2 EQU $D224 +W_PARTYMON5_MOVE3 EQU $D225 +W_PARTYMON5_MOVE4 EQU $D226 +W_PARTYMON5_OTID EQU $D227 +W_PARTYMON5_EXP EQU $D229 +W_PARTYMON5_EVHP EQU $D22C +W_PARTYMON5_EVATTACK EQU $D22E +W_PARTYMON5_EVDEFENSE EQU $D230 +W_PARTYMON5_EVSPEED EQU $D232 +W_PARTYMON5_EVSECIAL EQU $D234 +W_PARTYMON5_IV EQU $D236 +W_PARTYMON5_MOVE1PP EQU $D238 +W_PARTYMON5_MOVE2PP EQU $D239 +W_PARTYMON5_MOVE3PP EQU $D23A +W_PARTYMON5_MOVE4PP EQU $D23B +W_PARTYMON5_LEVEL EQU $D23C +W_PARTYMON5_MAXHP EQU $D23D +W_PARTYMON5_ATACK EQU $D23F +W_PARTYMON5_DEFENSE EQU $D241 +W_PARTYMON5_SPEED EQU $D243 +W_PARTYMON5_SPECIAL EQU $D245 + +W_PARTYMON6DATA EQU $D247 +W_PARTYMON6_NUM EQU $D247 +W_PARTYMON6_HP EQU $D248 +W_PARTYMON6_BOXLEVEL EQU $D24A +W_PARTYMON6_STATUS EQU $D24B +W_PARTYMON6_TYPE1 EQU $D24C +W_PARTYMON6_TYPE2 EQU $D24D +W_PARTYMON6_CRATE EQU $D24E +W_PARTYMON6_MOVE1 EQU $D24F +W_PARTYMON6_MOVE2 EQU $D250 +W_PARTYMON6_MOVE3 EQU $D251 +W_PARTYMON6_MOVE4 EQU $D252 +W_PARTYMON6_OTID EQU $D253 +W_PARTYMON6_EXP EQU $D255 +W_PARTYMON6_EVHP EQU $D258 +W_PARTYMON6_EVATTACK EQU $D25A +W_PARTYMON6_EVDEFENSE EQU $D25C +W_PARTYMON6_EVSPEED EQU $D25E +W_PARTYMON6_EVSECIAL EQU $D260 +W_PARTYMON6_IV EQU $D262 +W_PARTYMON6_MOVE1PP EQU $D264 +W_PARTYMON6_MOVE2PP EQU $D265 +W_PARTYMON6_MOVE3PP EQU $D266 +W_PARTYMON6_MOVE4PP EQU $D267 +W_PARTYMON6_LEVEL EQU $D268 +W_PARTYMON6_MAXHP EQU $D269 +W_PARTYMON6_ATACK EQU $D26B +W_PARTYMON6_DEFENSE EQU $D26D +W_PARTYMON6_SPEED EQU $D26F +W_PARTYMON6_SPECIAL EQU $D271 + +W_PARTYMON1OT EQU $D273 +W_PARTYMON2OT EQU $D27E +W_PARTYMON3OT EQU $D289 +W_PARTYMON4OT EQU $D294 +W_PARTYMON5OT EQU $D29F +W_PARTYMON6OT EQU $D2AA + +W_PARTYMON1NAME EQU $D2B5 +W_PARTYMON2NAME EQU $D2C0 +W_PARTYMON3NAME EQU $D2CB +W_PARTYMON4NAME EQU $D2D6 +W_PARTYMON5NAME EQU $D2E1 +W_PARTYMON6NAME EQU $D2EC + + +SECTION "Pokedex", WRAMX[$d2f7], BANK[1] + +wPokedexOwned: ; d2f7 ds (150 / 8) + 1 -WPokedexOwnedEnd: +wPokedexOwnedEnd: + +wPokedexSeen: ; d30a + ds (150 / 8) + 1 +wPokedexSeenEnd: + + +;number of items in bag +W_NUMBAGITEMS EQU $D31D +; BAGITEM01 is an item id +; BAGCOUNT01 is how many of this item +W_BAGITEM01 EQU $D31E +W_BAGITEM01QTY EQU $D31F +W_BAGITEM02 EQU $D320 +W_BAGITEM02QTY EQU $D321 +W_BAGITEM03 EQU $D322 +W_BAGITEM03QTY EQU $D323 +W_BAGITEM04 EQU $D324 +W_BAGITEM04QTY EQU $D325 +W_BAGITEM05 EQU $D326 +W_BAGITEM05QTY EQU $D327 +W_BAGITEM06 EQU $D328 +W_BAGITEM06QTY EQU $D329 +W_BAGITEM07 EQU $D32A +W_BAGITEM07QTY EQU $D32B +W_BAGITEM08 EQU $D32C +W_BAGITEM08QTY EQU $D32D +W_BAGITEM09 EQU $D32E +W_BAGITEM09QTY EQU $D32F +W_BAGITEM10 EQU $D330 +W_BAGITEM10QTY EQU $D331 +W_BAGITEM11 EQU $D332 +W_BAGITEM11QTY EQU $D333 +W_BAGITEM12 EQU $D334 +W_BAGITEM12QTY EQU $D335 +W_BAGITEM13 EQU $D336 +W_BAGITEM13QTY EQU $D337 +W_BAGITEM14 EQU $D338 +W_BAGITEM14QTY EQU $D339 +W_BAGITEM15 EQU $D33A +W_BAGITEM15QTY EQU $D33B +W_BAGITEM16 EQU $D33C +W_BAGITEM16QTY EQU $D33D +W_BAGITEM17 EQU $D33E +W_BAGITEM17QTY EQU $D33F +W_BAGITEM18 EQU $D340 +W_BAGITEM18QTY EQU $D341 +W_BAGITEM19 EQU $D342 +W_BAGITEM19QTY EQU $D343 +W_BAGITEM20 EQU $D344 +W_BAGITEM20QTY EQU $D345 + +; money is in decimal +W_PLAYERMONEY3 EQU $D347 +W_PLAYERMONEY2 EQU $D348 +W_PLAYERMONEY1 EQU $D349 + +W_RIVALNAME EQU $D34A ; 11 characters, including null + +W_OPTIONS EQU $D355 +; bit 7 = battle animation +; 0: On +; 1: Off +; bit 6 = battle style +; 0: Shift +; 1: Set +; bits 0-3 = text speed (number of frames to delay after printing a letter) +; 1: Fast +; 3: Medium +; 5: Slow + +W_OBTAINEDBADGES EQU $D356 + +W_PLAYERIDHI EQU $D359 +W_PLAYERIDLO EQU $D35A + +W_CURMAP EQU $D35E + +W_YCOORD EQU $D361 ; player’s position on the current map +W_XCOORD EQU $D362 +W_YBLOCKCOORD EQU $D363 ; player's y position (by block) +W_XBLOCKCOORD EQU $D364 + +W_CURMAPTILESET EQU $D367 +W_CURMAPHEIGHT EQU $D368 ; blocks +W_CURMAPWIDTH EQU $D369 ; blocks + +W_MAPDATAPTR EQU $D36A +W_MAPTEXTPTR EQU $D36C +W_MAPSCRIPTPTR EQU $D36E +W_MAPCONNECTIONS EQU $D370 ; connection byte +W_MAPCONN1PTR EQU $D371 +W_MAPCONN2PTR EQU $D37C +W_MAPCONN3PTR EQU $D387 +W_MAPCONN4PTR EQU $D392 + +W_SPRITESET EQU $D39D ; sprite set for the current map (11 sprite picture ID's) +W_SPRITESETID EQU $D3A8 ; sprite set ID for the current map + +W_NUMSPRITES EQU $D4E1 ; number of sprites on the current map + +; two bytes per sprite (movement byte 2 , text ID) +W_MAPSPRITEDATA EQU $D4e4 + +; two bytes per sprite (trainer class/item ID , trainer set ID) +W_MAPSPRITEEXTRADATA EQU $D504 + +W_TILESETBANK EQU $D52B +W_TILESETBLOCKSPTR EQU $D52C ; maps blocks (4x4 tiles) to it's tiles +W_TILESETGFXPTR EQU $D52E +W_TILESETCOLLISIONPTR EQU $D530 ; list of all walkable tiles +W_TILESETTALKINGOVERTILES EQU $D532 ; 3 bytes +W_GRASSTILE EQU $D535 + +;number of items in box +W_NUMBOXITEMS EQU $D53A +; BOXITEM01 is an item id +; BOXITEM01QTY is how many of this item +W_BOXITEM01 EQU $D53B +W_BOXITEM01QTY EQU $D53C +W_BOXITEM02 EQU $D53D +W_BOXITEM02QTY EQU $D53E +W_BOXITEM03 EQU $D53F +W_BOXITEM03QTY EQU $D540 +W_BOXITEM04 EQU $D541 +W_BOXITEM04QTY EQU $D542 +W_BOXITEM05 EQU $D543 +W_BOXITEM05QTY EQU $D544 +W_BOXITEM06 EQU $D545 +W_BOXITEM06QTY EQU $D546 +W_BOXITEM07 EQU $D547 +W_BOXITEM07QTY EQU $D548 +W_BOXITEM08 EQU $D549 +W_BOXITEM08QTY EQU $D54A +W_BOXITEM09 EQU $D54B +W_BOXITEM09QTY EQU $D54C +W_BOXITEM10 EQU $D54D +W_BOXITEM10QTY EQU $D54E +W_BOXITEM11 EQU $D54F +W_BOXITEM11QTY EQU $D550 +W_BOXITEM12 EQU $D551 +W_BOXITEM12QTY EQU $D552 +W_BOXITEM13 EQU $D553 +W_BOXITEM13QTY EQU $D554 +W_BOXITEM14 EQU $D555 +W_BOXITEM14QTY EQU $D556 +W_BOXITEM15 EQU $D557 +W_BOXITEM15QTY EQU $D558 +W_BOXITEM16 EQU $D559 +W_BOXITEM16QTY EQU $D55A +W_BOXITEM17 EQU $D55B +W_BOXITEM17QTY EQU $D55C +W_BOXITEM18 EQU $D55D +W_BOXITEM18QTY EQU $D55E +W_BOXITEM19 EQU $D55F +W_BOXITEM19QTY EQU $D560 +W_BOXITEM20 EQU $D561 +W_BOXITEM20QTY EQU $D562 +W_BOXITEM21 EQU $D563 +W_BOXITEM21QTY EQU $D564 +W_BOXITEM22 EQU $D565 +W_BOXITEM22QTY EQU $D566 +W_BOXITEM23 EQU $D567 +W_BOXITEM23QTY EQU $D568 +W_BOXITEM24 EQU $D569 +W_BOXITEM24QTY EQU $D56A +W_BOXITEM25 EQU $D56B +W_BOXITEM25QTY EQU $D56C +W_BOXITEM26 EQU $D56D +W_BOXITEM26QTY EQU $D56E +W_BOXITEM27 EQU $D56F +W_BOXITEM27QTY EQU $D570 +W_BOXITEM28 EQU $D571 +W_BOXITEM28QTY EQU $D572 +W_BOXITEM29 EQU $D573 +W_BOXITEM29QTY EQU $D574 +W_BOXITEM30 EQU $D575 +W_BOXITEM30QTY EQU $D576 +W_BOXITEM31 EQU $D577 +W_BOXITEM31QTY EQU $D578 +W_BOXITEM32 EQU $D579 +W_BOXITEM32QTY EQU $D57A +W_BOXITEM33 EQU $D57B +W_BOXITEM33QTY EQU $D57C +W_BOXITEM34 EQU $D57D +W_BOXITEM34QTY EQU $D57E +W_BOXITEM35 EQU $D57F +W_BOXITEM35QTY EQU $D580 +W_BOXITEM36 EQU $D581 +W_BOXITEM36QTY EQU $D582 +W_BOXITEM37 EQU $D583 +W_BOXITEM37QTY EQU $D584 +W_BOXITEM38 EQU $D585 +W_BOXITEM38QTY EQU $D586 +W_BOXITEM39 EQU $D587 +W_BOXITEM39QTY EQU $D588 +W_BOXITEM40 EQU $D589 +W_BOXITEM40QTY EQU $D58A +W_BOXITEM41 EQU $D58B +W_BOXITEM41QTY EQU $D58C +W_BOXITEM42 EQU $D58D +W_BOXITEM42QTY EQU $D58E +W_BOXITEM43 EQU $D58F +W_BOXITEM43QTY EQU $D590 +W_BOXITEM44 EQU $D591 +W_BOXITEM44QTY EQU $D592 +W_BOXITEM45 EQU $D593 +W_BOXITEM45QTY EQU $D594 +W_BOXITEM46 EQU $D595 +W_BOXITEM46QTY EQU $D596 +W_BOXITEM47 EQU $D597 +W_BOXITEM47QTY EQU $D598 +W_BOXITEM48 EQU $D599 +W_BOXITEM48QTY EQU $D59A +W_BOXITEM49 EQU $D59B +W_BOXITEM49QTY EQU $D59C +W_BOXITEM50 EQU $D59D +W_BOXITEM50QTY EQU $D59E +;box end of list $D59F + +; coins are in decimal +W_PLAYERCOINS1 EQU $D5A4 +W_PLAYERCOINS2 EQU $D5A5 +W_MISSABLEOBJECTFLAGS EQU $D5A6 ; $20 bytes, bit array of missable objects. bit 1 = removed + +; each entry consists of 2 bytes +; * the sprite ID (depending on the current map) +; * the missable object index (global, used for W_MISSABLEOBJECTFLAGS) +; terminated with $FF +W_MISSABLEOBJECTLIST EQU $D5CE + +W_GAMEPROGRESSFLAGS EQU $D5F0 ; $c8 bytes +W_OAKSLABCURSCRIPT EQU $D5F0 +W_PALLETTOWNCURSCRIPT EQU $D5F1 + +W_BLUESHOUSECURSCRIPT EQU $D5F3 +W_VIRIDIANCITYCURSCRIPT EQU $D5F4 + +W_PEWTERCITYCURSCRIPT EQU $D5F7 +W_ROUTE3CURSCRIPT EQU $D5F8 +W_ROUTE4CURSCRIPT EQU $D5F9 + +W_VIRIDIANGYMCURSCRIPT EQU $D5FB +W_PEWTERGYMCURSCRIPT EQU $D5FC +W_CERULEANGYMCURSCRIPT EQU $D5FD +W_VERMILIONGYMCURSCRIPT EQU $D5FE +W_CELADONGYMCURSCRIPT EQU $D5FF +W_ROUTE6CURSCRIPT EQU $D600 +W_ROUTE8CURSCRIPT EQU $D601 +W_ROUTE24CURSCRIPT EQU $D602 +W_ROUTE25CURSCRIPT EQU $D603 +W_ROUTE9CURSCRIPT EQU $D604 +W_ROUTE10CURSCRIPT EQU $D605 +W_MTMOON1CURSCRIPT EQU $D606 +W_MTMOON3CURSCRIPT EQU $D607 +W_SSANNE8CURSCRIPT EQU $D608 +W_SSANNE9CURSCRIPT EQU $D609 +W_ROUTE22CURSCRIPT EQU $D60A + +W_REDSHOUSE2CURSCRIPT EQU $D60C +W_VIRIDIANMARKETCURSCRIPT EQU $D60D +W_ROUTE22GATECURSCRIPT EQU $D60E +W_CERULEANCITYCURSCRIPT EQU $D60F + +W_SSANNE5CURSCRIPT EQU $D617 +W_VIRIDIANFORESTCURSCRIPT EQU $D618 +W_MUSEUMF1CURSCRIPT EQU $D619 +W_ROUTE13CURSCRIPT EQU $D61A +W_ROUTE14CURSCRIPT EQU $D61B +W_ROUTE17CURSCRIPT EQU $D61C +W_ROUTE19CURSCRIPT EQU $D61D +W_ROUTE21CURSCRIPT EQU $D61E +W_SAFARIZONEENTRANCECURSCRIPT EQU $D61F +W_ROCKTUNNEL2CURSCRIPT EQU $D620 +W_ROCKTUNNEL1CURSCRIPT EQU $D621 + +W_ROUTE11CURSCRIPT EQU $D623 +W_ROUTE12CURSCRIPT EQU $D624 +W_ROUTE15CURSCRIPT EQU $D625 +W_ROUTE16CURSCRIPT EQU $D626 +W_ROUTE18CURSCRIPT EQU $D627 +W_ROUTE20CURSCRIPT EQU $D628 +W_SSANNE10CURSCRIPT EQU $D629 +W_VERMILIONCITYCURSCRIPT EQU $D62A +W_POKEMONTOWER2CURSCRIPT EQU $D62B +W_POKEMONTOWER3CURSCRIPT EQU $D62C +W_POKEMONTOWER4CURSCRIPT EQU $D62D +W_POKEMONTOWER5CURSCRIPT EQU $D62E +W_POKEMONTOWER6CURSCRIPT EQU $D62F +W_POKEMONTOWER7CURSCRIPT EQU $D630 +W_ROCKETHIDEOUT1CURSCRIPT EQU $D631 +W_ROCKETHIDEOUT2CURSCRIPT EQU $D632 +W_ROCKETHIDEOUT3CURSCRIPT EQU $D633 +W_ROCKETHIDEOUT4CURSCRIPT EQU $D634 + +W_ROUTE6GATECURSCRIPT EQU $D636 +W_ROUTE8GATECURSCRIPT EQU $D637 + +W_CINNABARISLANDCURSCRIPT EQU $D639 +W_MANSION1CURSCRIPT EQU $D63A + +W_MANSION2CURSCRIPT EQU $D63C +W_MANSION3CURSCRIPT EQU $D63D +W_MANSION4CURSCRIPT EQU $D63E +W_VICTORYROAD2CURSCRIPT EQU $D63F +W_VICTORYROAD3CURSCRIPT EQU $D640 + +W_FIGHTINGDOJOCURSCRIPT EQU $D642 +W_SILPHCO2CURSCRIPT EQU $D643 +W_SILPHCO3CURSCRIPT EQU $D644 +W_SILPHCO4CURSCRIPT EQU $D645 +W_SILPHCO5CURSCRIPT EQU $D646 +W_SILPHCO6CURSCRIPT EQU $D647 +W_SILPHCO7CURSCRIPT EQU $D648 +W_SILPHCO8CURSCRIPT EQU $D649 +W_SILPHCO9CURSCRIPT EQU $D64A +W_HALLOFFAMEROOMCURSCRIPT EQU $D64B +W_GARYCURSCRIPT EQU $D64C +W_LORELEICURSCRIPT EQU $D64D +W_BRUNOCURSCRIPT EQU $D64E +W_AGATHACURSCRIPT EQU $D64F +W_UNKNOWNDUNGEON3CURSCRIPT EQU $D650 +W_VICTORYROAD1CURSCRIPT EQU $D651 + +W_LANCECURSCRIPT EQU $D653 + +W_SILPHCO10CURSCRIPT EQU $D658 +W_SILPHCO11CURSCRIPT EQU $D659 + +W_FUCHSIAGYMCURSCRIPT EQU $D65B +W_SAFFRONGYMCURSCRIPT EQU $D65C + +W_CINNABARGYMCURSCRIPT EQU $D65E +W_CELADONGAMECORNERCURSCRIPT EQU $D65F +W_ROUTE16GATECURSCRIPT EQU $D660 +W_BILLSHOUSECURSCRIPT EQU $D661 +W_ROUTE5GATECURSCRIPT EQU $D662 +W_POWERPLANTCURSCRIPT EQU $D663 ; overload +W_ROUTE7GATECURSCRIPT EQU $D663 ; overload + +W_SSANNE2CURSCRIPT EQU $D665 +W_SEAFOAMISLANDS4CURSCRIPT EQU $D666 +W_ROUTE23CURSCRIPT EQU $D667 +W_SEAFOAMISLANDS5CURSCRIPT EQU $D668 +W_ROUTE18GATECURSCRIPT EQU $D669 + +W_TOWNVISITEDFLAG EQU $D70B ; 2 bytes bit array, 1 means visited + +W_SAFARITIMER1 EQU $D70D ; use 01 for maximum +W_SAFARITIMER2 EQU $D70E ; use F4 for maximum +W_FOSSILITEM EQU $D70F ; item given to cinnabar lab +W_FOSSILMON EQU $D710 ; mon that will result from the item + +W_ENEMYMONORTRAINERCLASS EQU $D713 ; trainer classes start at $c8 + +W_RIVALSTARTER EQU $D715 + +W_PLAYERSTARTER EQU $D717 + +; bit 4: use variable [W_CURMAPSCRIPT] instead of the provided index for next frame's map script (used to start battle when talking to trainers) +W_FLAGS_D733 EQU $D733 + + +W_GRASSRATE EQU $D887 +W_GRASSMONS EQU $D888 +W_WATERRATE EQU $D8A4 ; OVERLOADED +W_WATERMONS EQU $D8A5 ; OVERLOADED + +W_ENEMYMONCOUNT EQU $D89C + +W_ENEMYMON1HP EQU $D8A5 ; 16 bits + +W_ENEMYMON1MOVE3 EQU $D8AE + +W_ENEMYMON2MOVE3 EQU $D8DA + +W_ENEMYMON3MOVE3 EQU $D906 + +W_ENEMYMON4MOVE3 EQU $D932 + +W_ENEMYMON5MOVE3 EQU $D95E + +W_ENEMYMON6MOVE3 EQU $D98A + +W_ENEMYMON1OT EQU $D9AC +W_ENEMYMON2OT EQU $D9B7 +W_ENEMYMON3OT EQU $D9C2 +W_ENEMYMON4OT EQU $D9CD +W_ENEMYMON5OT EQU $D9D8 +W_ENEMYMON6OT EQU $D9E3 + +W_ENEMYMON1NAME EQU $D9EE +W_ENEMYMON2NAME EQU $D9F9 +W_ENEMYMON3NAME EQU $DA04 +W_ENEMYMON4NAME EQU $DA0F +W_ENEMYMON5NAME EQU $DA1A +W_ENEMYMON6NAME EQU $DA25 ; to $da2f +W_TRAINERHEADERPTR EQU $DA30 + +; index of current map script, mostly used as index for function pointer array +; mostly copied from map-specific map script pointer and wirtten back later +W_CURMAPSCRIPT EQU $DA39 + +W_PLAYTIMEHOURS EQU $DA40 ; two bytes +W_PLAYTIMEMINUTES EQU $DA42 ; two bytes +W_PLAYTIMESECONDS EQU $DA44 ; one byte +W_PLAYTIMEFRAMES EQU $DA45 ; one byte + +W_NUMSAFARIBALLS EQU $DA47 + +; number of mons in current box +W_NUMINBOX EQU $DA80 +W_BOXMON1DATA EQU $DA96 +W_BOXMON2DATA EQU $DAB7 + |