summaryrefslogtreecommitdiff
path: root/constants.asm
diff options
context:
space:
mode:
Diffstat (limited to 'constants.asm')
-rw-r--r--constants.asm1157
1 files changed, 2 insertions, 1155 deletions
diff --git a/constants.asm b/constants.asm
index fa0f3afc..8345cbbe 100644
--- a/constants.asm
+++ b/constants.asm
@@ -103,396 +103,15 @@ PREDEF_JUMP: MACRO
jp Predef
ENDM
-; wram locations
-
-; 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
-W_SPRITESTATEDATA1 EQU $C100 ; to $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
-W_SPRITESTATEDATA2 EQU $C200 ; to $C300
-
-; buffer for OAM data. Is copied to OAM RAM by OAM DMA
-W_OAMBUFFER EQU $C300 ; size $a0, to $C3A0
-
-; buffer for tiles that are visible on screen (20 columns by 18 rows = $168 bytes)
-W_SCREENTILESBUFFER EQU $C3A0 ; size $168, to $C508
-
-; buffer for temporarily saving and restoring current screen's tiles (e.g. if menus are drawn on top)
-W_SCREENTILESBACKBUFFER EQU $C508 ; size $168, to $C670
-
-; the tiles of the row or column to be redrawn by RedrawExposedScreenEdge
-W_SCREENEDGETILES EQU $CBFC
-
-; coordinates of the position of the cursor for the top menu item (id 0)
-W_TOPMENUITEMY EQU $CC24
-W_TOPMENUITEMX EQU $CC25
-
-; 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 [W_LISTSCROLLOFFSET] to get the item's position within the list
-W_CURMENUITEMID EQU $CC26
-
-; the tile that was behind the menu cursor's current location
-W_TILEBEHINDCURSOR EQU $CC27
-
-W_MAXMENUITEMID EQU $CC28 ; id of the bottom menu item
-
-W_MENUWATCHEDKEYS EQU $CC29 ; bit mask of keys that the menu will respond to
-
-W_OLDMENUITEMID EQU $CC2A ; id of previously selected menu item
-; how many times should HandleMenuInput poll the joypad state before it returns?
-W_MENUJOYPADPOLLCOUNT EQU $CC34
-
-W_PLAYERMOVELISTINDEX EQU $CC2E
-W_PLAYERMONNUMBER EQU $CC2F
-
-; the address of the menu cursor's current location within C3A0-C507
-W_MENUCURSORLOCATION EQU $CC30 ; 2 bytes
-
-; offset of the current top menu item from the beginning of the list
-; keeps track of what section of the list is on screen
-W_LISTSCROLLOFFSET EQU $CC36
-
-; 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
-W_MENUWRAPPINGENABLED EQU $CC4A
-
-W_TRAINERHEADERFLAGBIT EQU $CC55
-
-W_RLEBYTECOUNTER EQU $CCD2
-
-; current HP of player and enemy substitutes
-W_PLAYERSUBSITUTEHP EQU $CCD7
-W_ENEMYSUBSITUTEHP EQU $CCD8
-
-W_MOVEMENUTYPE EQU $CCDB ; 0=regular, 1=mimic, 2=above message box (relearn, heal pp..)
-W_PLAYERSELECTEDMOVE EQU $CCDC
-W_ENEMYSELECTEDMOVE EQU $CCDD
-
-W_ENEMYMOVELISTINDEX EQU $CCE2
-
-W_AICOUNT EQU $CCDF ; number of times remaining that AI action can occur
-
-; stat modifiers for the player's current pokemon
-; value can range from 1 - 13 ($1 to $D)
-; 7 is normal
-
-W_PLAYERMONATTACKMOD EQU $CD1A
-W_PLAYERMONDEFENSEMOD EQU $CD1B
-W_PLAYERMONSPEEDMOD EQU $CD1C
-W_PLAYERMONSPECIALMOD EQU $CD1D
-W_PLAYERMONACCURACYMOD EQU $CD1E
-W_PLAYERMONEVASIONMOD EQU $CD1F
-
-
-W_ENGAGEDTRAINERCLASS EQU $CD2D
-W_ENGAGEDTRAINERSETNUM EQU $CD2E
-
-; stat modifiers for the enemy's current pokemon
-; value can range from 1 - 13 ($1 to $D)
-; 7 is normal
-W_ENEMYMONATTACKMOD EQU $CD2E
-W_ENEMYMONDEFENSEMOD EQU $CD2F
-W_ENEMYMONSPEEDMOD EQU $CD30
-W_ENEMYMONSPECIALMOD EQU $CD31
-W_ENEMYMONACCURACYMOD EQU $CD32
-W_ENEMYMONEVASIONMOD EQU $CD33
-
-W_WHICHTRADE EQU $CD3D ; which entry from TradeMons to select
-W_TRAINERSPRITEOFFSET EQU $CD3D
-W_TRAINERENGAGEDISTANCE EQU $CD3E
-W_TRAINERFACINGDIR EQU $CD3F
-W_TRAINERSCREENYPOS EQU $CD40
-W_TRAINERSCREENXPOS EQU $CD41
-
-; bit 0: is player engaged by trainer (to avoid being engaged by multiple trainers simultaniously)
-W_FLAGS_CD60 EQU $CD60
-
-; bit 1 means button presses will be ignored for that futton
-W_JOYPADFORBIDDENBUTTONSMASK EQU $CD6B
-
-; second buffer for temporarily saving and restoring current screen's tiles (e.g. if menus are drawn on top)
-W_SCREENTILESBACKBUFFER2 EQU $CD81 ; size $168, to $CEE9
-
-W_HPBARMAXHP EQU $CEE9
-W_HPBAROLDHP EQU $CEEB
-W_HPBARNEWHP EQU $CEED
-W_HPBARDELTA EQU $CEEF
-
-W_HPBARHPDIFFERENCE EQU $CEFD
-
-W_BUFFER EQU $CEE9 ; used for temporary things
-
-W_ANIMSOUNDID EQU $CF07 ; sound ID during battle animations
-
-; movement byte 2 of current sprite
-W_CURSPRITEMOVEMENT2 EQU $CF14
-
-W_GYMCITYNAME EQU $CF5F
-W_GYMLEADERNAME EQU $CF70
-
-W_WHICHPOKEMON EQU $CF92 ; which pokemon you selected
-
-W_LISTMENUID EQU $CF94 ; ID used by DisplayListMenuID
-
-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
-
-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)
-
-H_SPRITEWIDTH EQU $FF8B ; in bytes
-H_SPRITEINTERLACECOUNTER EQU $FF8B
-H_SPRITEHEIGHT EQU $FF8C ; in bytes
-H_SPRITEOFFSET EQU $FF8D
+INCLUDE "hram.asm"
+
; OAM flags used by this game
OAMFLAG_ENDOFDATA EQU %00000001 ; pseudo OAM flag, only used by game logic
OAMFLAG_CANBEMASKED EQU %00000010 ; pseudo OAM flag, only used by game logic
OAMFLAG_VFLIPPED EQU %00100000 ; OAM flag flips the sprite vertically. Used for making left facing sprites face right and to alternate between left and right foot animation when walking up or down
-; List type
-; used in $D0B6
-W_LISTTYPE EQU $D0B6
MONSTER_NAME EQU 1
MOVE_NAME EQU 2
; ???_NAME EQU 3
@@ -501,778 +120,6 @@ PLAYEROT_NAME EQU 5
ENEMYOT_NAME EQU 6
TRAINER_NAME EQU 7
-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
-
-W_OWNEDPOKEMON EQU $D2F7 ; bit field, 19 bytes
-
-W_SEENPOKEMON EQU $D30A ; bit field, 19 bytes
-
-;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
-
-
-H_SOFTRESETCOUNTER EQU $FF8A ; initialized to 16, decremented each input iteration if the user presses the reset sequence (A+B+S+s). Soft reset when 0 is reached.
-
-; counters for blinking down arrow
-H_DOWNARROWBLINKCNT1 EQU $FF8B
-H_DOWNARROWBLINKCNT2 EQU $FF8C
-
-; Note: the following multiplication and division addresses are used for multiple purposes
-; and so they overlap with each other
-
-H_MULTIPLICAND EQU $FF96 ; 3 bytes, big endian order
-H_MULTIPLIER EQU $FF99 ; 1 byte
-H_PRODUCT EQU $FF95 ; 4 bytes, big endian order
-
-H_DIVIDEND EQU $FF95 ; 4 bytes, big endian order
-H_DIVISOR EQU $FF99 ; 1 byte
-H_QUOTIENT EQU $FF95 ; 4 bytes, big endian order
-H_REMAINDER EQU $FF99 ; 1 byte
-
-; used to convert numbers to decimal
-H_PASTLEADINGZEROES EQU $FF95 ; flag to indicate that a nonzero digit has been printed
-H_NUMTOPRINT EQU $FF96 ; 3 bytes, big endian order
-H_POWEROFTEN EQU $FF99 ; 3 bytes, big endian order
-H_SAVEDNUMTOPRINT EQU $FF9C ; 3 bytes, big endian order (to back out of a subtraction)
-
-H_OLDPRESSEDBUTTONS EQU $FFB1
-H_NEWLYRELEASEDBUTTONS EQU $FFB2
-H_NEWLYPRESSEDBUTTONS EQU $FFB3
-H_CURRENTPRESSEDBUTTONS EQU $FFB4
-
-H_LOADEDROMBANK EQU $FFB8
-
-; is automatic background transfer during V-blank enabled?
-; if nonzero, yes
-; if zero, no
-H_AUTOBGTRANSFERENABLED EQU $FFBA
-
-TRANSFERTOP EQU 0
-TRANSFERMIDDLE EQU 1
-TRANSFERBOTTOM EQU 2
-
-; 00 = top third of background
-; 01 = middle third of background
-; 02 = bottom third of background
-H_AUTOBGTRANSFERPORTION EQU $FFBB
-
-; the destination address of the automatic background transfer
-H_AUTOBGTRANSFERDEST EQU $FFBC ; 2 bytes
-
-; temporary storage for stack pointer during memory transfers that use pop
-; to increase speed
-H_SPTEMP EQU $FFBF ; 2 bytes
-
-; source address for VBlankCopyBgMap function
-; the first byte doubles as the byte that enabled the transfer.
-; if it is 0, the transfer is disabled
-; if it is not 0, the transfer is enabled
-; this means that XX00 is not a valid source address
-H_VBCOPYBGSRC EQU $FFC1 ; 2 bytes
-
-; destination address for VBlankCopyBgMap function
-H_VBCOPYBGDEST EQU $FFC3 ; 2 bytes
-
-; number of rows for VBlankCopyBgMap to copy
-H_VBCOPYBGNUMROWS EQU $FFC5
-
-; size of VBlankCopy transfer in 16-byte units
-H_VBCOPYSIZE EQU $FFC6
-
-; source address for VBlankCopy function
-H_VBCOPYSRC EQU $FFC7
-
-; destination address for VBlankCopy function
-H_VBCOPYDEST EQU $FFC9
-
-; size of source data for VBlankCopyDouble in 8-byte units
-H_VBCOPYDOUBLESIZE EQU $FFCB
-
-; source address for VBlankCopyDouble function
-H_VBCOPYDOUBLESRC EQU $FFCC
-
-; destination address for VBlankCopyDouble function
-H_VBCOPYDOUBLEDEST EQU $FFCE
-
-; controls whether a row or column of 2x2 tile blocks is redrawn in V-blank
-; 00 = no redraw
-; 01 = redraw column
-; 02 = redraw row
-H_SCREENEDGEREDRAW EQU $FFD0
-
-REDRAWCOL EQU 1
-REDRAWROW EQU 2
-
-H_SCREENEDGEREDRAWADDR EQU $FFD1
-
-H_RAND1 EQU $FFD3
-H_RAND2 EQU $FFD4
-
-H_FRAMECOUNTER EQU $FFD5 ; decremented every V-blank (used for delays)
-
-; V-blank sets this to 0 each time it runs.
-; So, by setting it to a nonzero value and waiting for it to become 0 again,
-; you can detect that the V-blank handler has run since then.
-H_VBLANKOCCURRED EQU $FFD6
-
-H_CURRENTSPRITEOFFSET EQU $FFDA ; multiple of $10
-
-H_WHOSETURN EQU $FFF3 ; 0 on player’s turn, 1 on enemy’s turn
-
-H_JOYPADSTATE EQU $FFF8
; hardware registers, from the pandocs http://nocash.emubase.de/pandocs.htm
rJOYP EQU $FF00