mirror of
https://github.com/pret/pokered.git
synced 2024-10-23 06:58:24 +00:00
1a69d6b888
luckytyphlosion
2307 lines
51 KiB
NASM
Executable file
2307 lines
51 KiB
NASM
Executable file
|
||
INCLUDE "constants.asm"
|
||
|
||
flag_array: MACRO
|
||
ds ((\1) + 7) / 8
|
||
ENDM
|
||
|
||
box_struct_length EQU 25 + NUM_MOVES * 2
|
||
box_struct: MACRO
|
||
\1Species:: db
|
||
\1HP:: dw
|
||
\1BoxLevel:: db
|
||
\1Status:: db
|
||
\1Type::
|
||
\1Type1:: db
|
||
\1Type2:: db
|
||
\1CatchRate:: db
|
||
\1Moves:: ds NUM_MOVES
|
||
\1OTID:: dw
|
||
\1Exp:: ds 3
|
||
\1HPExp:: dw
|
||
\1AttackExp:: dw
|
||
\1DefenseExp:: dw
|
||
\1SpeedExp:: dw
|
||
\1SpecialExp:: dw
|
||
\1DVs:: ds 2
|
||
\1PP:: ds NUM_MOVES
|
||
ENDM
|
||
|
||
party_struct: MACRO
|
||
box_struct \1
|
||
\1Level:: db
|
||
\1Stats::
|
||
\1MaxHP:: dw
|
||
\1Attack:: dw
|
||
\1Defense:: dw
|
||
\1Speed:: dw
|
||
\1Special:: dw
|
||
ENDM
|
||
|
||
battle_struct: MACRO
|
||
\1Species:: db
|
||
\1HP:: dw
|
||
\1BoxLevel:: db
|
||
\1Status:: db
|
||
\1Type::
|
||
\1Type1:: db
|
||
\1Type2:: db
|
||
\1CatchRate:: db
|
||
\1Moves:: ds NUM_MOVES
|
||
\1DVs:: ds 2
|
||
\1Level:: db
|
||
\1MaxHP:: dw
|
||
\1Attack:: dw
|
||
\1Defense:: dw
|
||
\1Speed:: dw
|
||
\1Special:: dw
|
||
\1PP:: ds NUM_MOVES
|
||
ENDM
|
||
|
||
|
||
SECTION "WRAM Bank 0", WRAM0
|
||
|
||
wc000:: ds 1
|
||
wc001:: ds 1
|
||
wc002:: ds 1
|
||
wc003:: ds 1
|
||
wc004:: ds 1
|
||
wc005:: ds 1
|
||
wc006:: ds 8
|
||
wc00e:: ds 4
|
||
wc012:: ds 4
|
||
wc016:: ds 16
|
||
wc026:: ds 1
|
||
wc027:: ds 1
|
||
wc028:: ds 2
|
||
wc02a:: ds 1
|
||
wc02b:: ds 1
|
||
wc02c:: ds 1
|
||
wc02d:: ds 1
|
||
wc02e:: ds 8
|
||
wc036:: ds 8
|
||
wc03e:: ds 8
|
||
wc046:: ds 8
|
||
wc04e:: ds 8
|
||
wc056:: ds 8
|
||
wc05e:: ds 8
|
||
wc066:: ds 8
|
||
wc06e:: ds 8
|
||
wc076:: ds 8
|
||
wc07e:: ds 8
|
||
wc086:: ds 8
|
||
wc08e:: ds 8
|
||
wc096:: ds 8
|
||
wc09e:: ds 8
|
||
wc0a6:: ds 8
|
||
wc0ae:: ds 8
|
||
wc0b6:: ds 8
|
||
wc0be:: ds 8
|
||
wc0c6:: ds 8
|
||
wc0ce:: ds 1
|
||
wc0cf:: ds 1
|
||
wc0d0:: ds 1
|
||
wc0d1:: ds 1
|
||
wc0d2:: ds 1
|
||
wc0d3:: ds 1
|
||
wc0d4:: ds 1
|
||
wc0d5:: ds 1
|
||
wc0d6:: ds 8
|
||
wc0de:: ds 8
|
||
wc0e6:: ds 1
|
||
wc0e7:: ds 1
|
||
wc0e8:: ds 1
|
||
wc0e9:: ds 1
|
||
wc0ea:: ds 1
|
||
wc0eb:: ds 1
|
||
wc0ec:: ds 1
|
||
wc0ed:: ds 1
|
||
wc0ee:: ds 1
|
||
wc0ef:: ds 1
|
||
wc0f0:: ds 1
|
||
wc0f1:: ds 1
|
||
wc0f2:: ds 14
|
||
|
||
|
||
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
|
||
|
||
|
||
SECTION "Sprite State Data 2", WRAM0[$c200]
|
||
|
||
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
|
||
|
||
|
||
SECTION "OAM Buffer", WRAM0[$c300]
|
||
|
||
wOAMBuffer:: ; c300
|
||
; buffer for OAM data. Copied to OAM by DMA
|
||
ds 4 * 40
|
||
|
||
wTileMap:: ; c3a0
|
||
; buffer for tiles that are visible on screen (20 columns by 18 rows)
|
||
ds 20 * 18
|
||
|
||
wSerialPartyMonsPatchList:: ; c508
|
||
; list of indexes to patch with SERIAL_NO_DATA_BYTE after transfer
|
||
|
||
wTileMapBackup:: ; c508
|
||
; buffer for temporarily saving and restoring current screen's tiles
|
||
; (e.g. if menus are drawn on top)
|
||
; ds 20 * 18
|
||
|
||
ds 200
|
||
|
||
wSerialEnemyMonsPatchList:: ; c5d0
|
||
; list of indexes to patch with SERIAL_NO_DATA_BYTE after transfer
|
||
ds 200
|
||
|
||
ds 80
|
||
|
||
wTempPic::
|
||
wOverworldMap:: ; c6e8
|
||
ds 1300
|
||
|
||
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
|
||
|
||
; group these 3 addresses together because of an ld a,[hli]
|
||
wcc2b:: ds 1 ; used in party menu
|
||
wcc2c:: ds 1 ; used in item related menus (inventory, pc)
|
||
wcc2d:: ds 1 ; also used in inventory, supposed to save an item id
|
||
|
||
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
|
||
|
||
wMenuItemToSwap:: ; cc35
|
||
; id of menu item selected for swapping (counts from 1) (0 means that no menu item has been selected for swapping)
|
||
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
|
||
|
||
wcc37:: ds 1 ; menu related thing, used in pokedex and dialog boxes
|
||
|
||
wTradeCenterPointerTableIndex:: ; cc38
|
||
ds 1
|
||
|
||
ds 1
|
||
|
||
; group these two together
|
||
wcc3a:: ds 1 ; both used in home/text.asm
|
||
wcc3b:: ds 1
|
||
|
||
wDoNotWaitForButtonPressAfterDisplayingText:: ; cc3c
|
||
; if non-zero, skip waiting for a button press after displaying text in DisplayTextID
|
||
ds 1
|
||
|
||
wSerialSyncAndExchangeNybbleReceiveData:: ; cc3d
|
||
; the final received nybble is stored here by Serial_SyncAndExchangeNybble
|
||
|
||
wSerialExchangeNybbleTempReceiveData:: ; cc3d
|
||
; temporary nybble used by Serial_ExchangeNybble
|
||
|
||
wLinkMenuSelectionReceiveBuffer:: ; cc3d
|
||
; two byte buffer
|
||
; the received menu selection is stored twice
|
||
|
||
wcc3d:: ds 1 ; not used for anything other than mentioned above (haha link function)
|
||
|
||
wSerialExchangeNybbleReceiveData:: ; cc3e
|
||
; the final received nybble is stored here by Serial_ExchangeNybble
|
||
ds 1
|
||
|
||
ds 3
|
||
|
||
wSerialExchangeNybbleSendData:: ; cc42
|
||
; this nybble is sent when using Serial_SyncAndExchangeNybble or Serial_ExchangeNybble
|
||
|
||
wLinkMenuSelectionSendBuffer:: ; cc42
|
||
; two byte buffer
|
||
; the menu selection byte is stored twice before sending
|
||
|
||
ds 5
|
||
|
||
wLinkTimeoutCounter:: ; cc47
|
||
; 1 byte
|
||
|
||
wUnknownSerialCounter:: ; cc47
|
||
; 2 bytes
|
||
|
||
wcc47:: ds 1 ; used in text id stuff
|
||
wcc48:: ds 1 ; part of wUnknownSerialCounter
|
||
|
||
wWhichTradeMonSelectionMenu:: ; cc49
|
||
; $00 = player mons
|
||
; $01 = enemy mons
|
||
|
||
wcc49:: ds 1 ; used in some pokemon related stuff (some kind of species storage byte)
|
||
|
||
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
|
||
|
||
wcc4b:: ds 2 ; used as a joypad storage value
|
||
wcc4d:: ds 1 ; used in sprite hiding/showing related operations
|
||
|
||
wPredefID:: ; cc4e
|
||
ds 1
|
||
wPredefRegisters:: ; cc4f
|
||
ds 6
|
||
|
||
wTrainerHeaderFlagBit:: ; cc55
|
||
ds 1
|
||
|
||
ds 1
|
||
|
||
wNPCMovementScriptPointerTableNum:: ; cc57
|
||
; which NPC movement script pointer is being used
|
||
; 0 if an NPC movement script is not running
|
||
ds 1
|
||
|
||
wNPCMovementScriptBank:: ; cc58
|
||
; ROM bank of current NPC movement script
|
||
ds 1
|
||
|
||
ds 2
|
||
|
||
wHallOfFame:: ; cc5b
|
||
wBoostExpByExpAll:: ; cc5b
|
||
wAnimationType:: ; cc5b
|
||
; values between 0-6. Shake screen horizontally, shake screen vertically, blink Pokemon...
|
||
|
||
wcc5b:: ds 1 ; these upcoming values below are miscellaneous storage values
|
||
wcc5c:: ds 1 ; used in pokedex evaluation as well
|
||
wcc5d:: ds 1 ; used in pokedex evaluation
|
||
wcc5e:: ds 13 ; as well as used as miscellaneous storage value, this is also used for the game corner slots
|
||
|
||
wcc6b:: ds 14 ; doesn't seem to be used for anything, probably just more storage
|
||
wcc79:: ds 30 ; used in battle animations
|
||
|
||
wNPCMovementDirections2:: ; cc97
|
||
|
||
wSwitchPartyMonTempBuffer:: ; cc97
|
||
; temporary buffer when swapping party mon data
|
||
ds 10
|
||
|
||
wcca1:: ds 49 ; used in overworld npc movement
|
||
|
||
wRLEByteCount:: ; ccd2
|
||
ds 1
|
||
|
||
wSimulatedJoypadStatesEnd:: ; ccd3
|
||
; this is the end of the joypad states
|
||
; the list starts above this address and extends downwards in memory until here
|
||
; overloaded with below labels
|
||
|
||
wccd3:: ds 1 ; used in battle, pokemon, PC and game corner stuff
|
||
wccd4:: ds 1 ; used in evolving pokemon and has a direct reference for simulated joypad stuff in vermillion and seafoam
|
||
|
||
; if [ccd5] != 1, the second AI layer is not applied
|
||
wAILayer2Encouragement:: ; ccd5
|
||
ds 1
|
||
ds 1
|
||
|
||
; current HP of player and enemy substitutes
|
||
wPlayerSubstituteHP:: ; ccd7
|
||
ds 1
|
||
wEnemySubstituteHP:: ; ccd8
|
||
ds 1
|
||
|
||
wccd9:: ds 2 ; used in InitBattleVariablesLoop (written to after the loop is finished)
|
||
|
||
wMoveMenuType:: ; ccdb
|
||
; 0=regular, 1=mimic, 2=above message box (relearn, heal pp..)
|
||
ds 1
|
||
|
||
wPlayerSelectedMove:: ; ccdc
|
||
ds 1
|
||
wEnemySelectedMove:: ; ccdd
|
||
ds 1
|
||
|
||
wLinkBattleRandomNumberListIndex:: ; ccde
|
||
ds 1
|
||
|
||
wAICount:: ; ccdf
|
||
; number of times remaining that AI action can occur
|
||
ds 1
|
||
|
||
ds 2
|
||
|
||
wEnemyMoveListIndex:: ; cce2
|
||
ds 1
|
||
|
||
wcce3:: ds 1 ; used in battle-related text functions
|
||
wcce4:: ds 1 ; used in battle-related text functions
|
||
|
||
wTotalPayDayMoney:: ; cce5
|
||
; total amount of money made using Pay Day during the current battle
|
||
ds 3
|
||
|
||
wSafariEscapeFactor:: ; cce8
|
||
ds 1
|
||
wSafariBaitFactor:: ; cce9
|
||
ds 1;
|
||
|
||
ds 1
|
||
|
||
wcceb:: ds 1 ; used to save the dvs of a mon when it uses transform
|
||
wccec:: ds 1 ; also used with above case
|
||
|
||
wMonIsDisobedient:: ds 1 ; cced
|
||
|
||
wPlayerDisabledMoveNumber:: ds 1 ; ccee
|
||
wEnemyDisabledMoveNumber:: ds 1 ; ccef
|
||
|
||
wccf0:: ds 1 ; used as a check if a mon fainted
|
||
|
||
wPlayerUsedMove:: ds 1 ; ccf1
|
||
wEnemyUsedMove:: ds 1 ; ccf2
|
||
|
||
wccf3:: ds 1 ; used with the move minimize
|
||
|
||
wMoveDidntMiss:: ds 1 ; ccf4
|
||
|
||
wPartyFoughtCurrentEnemyFlags:: ; ccf5
|
||
; flags that indicate which party members have fought the current enemy mon
|
||
flag_array 6
|
||
|
||
wccf6:: ds 1 ; used in some hp bar thing
|
||
wccf7:: ds 14 ; used with substitute move sliding thing? (not sure)
|
||
|
||
wUnknownSlotVar:: ; cd05
|
||
|
||
wEnemyNumHits:: ; cd05
|
||
; number of hits by enemy in attacks like Double Slap, etc.
|
||
|
||
wEnemyBideAccumulatedDamage:: ; cd05
|
||
; the amount of damage accumulated by the enemy while biding (2 bytes)
|
||
|
||
ds 10
|
||
|
||
wInGameTradeGiveMonSpecies:: ; cd0f
|
||
|
||
wPlayerMonUnmodifiedLevel:: ; cd0f
|
||
ds 1
|
||
|
||
wInGameTradeTextPointerTablePointer:: ; cd10
|
||
|
||
wPlayerMonUnmodifiedMaxHP:: ; cd10
|
||
ds 2
|
||
|
||
wInGameTradeTextPointerTableIndex:: ; cd12
|
||
|
||
wPlayerMonUnmodifiedAttack:: ; cd12
|
||
ds 1
|
||
wInGameTradeGiveMonName:: ; cd13
|
||
ds 1
|
||
wPlayerMonUnmodifiedDefense:: ; cd14
|
||
ds 2
|
||
wPlayerMonUnmodifiedSpeed:: ; cd16
|
||
ds 2
|
||
wPlayerMonUnmodifiedSpecial:: ; cd18
|
||
ds 2
|
||
|
||
; 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
|
||
|
||
wInGameTradeReceiveMonName:: ; cd1e
|
||
|
||
wPlayerMonAccuracyMod:: ; cd1e
|
||
ds 1
|
||
wPlayerMonEvasionMod:: ; cd1f
|
||
ds 1
|
||
|
||
ds 3
|
||
|
||
wEnemyMonUnmodifiedLevel:: ; cd23
|
||
ds 1
|
||
wEnemyMonUnmodifiedMaxHP:: ; cd24
|
||
ds 2
|
||
wEnemyMonUnmodifiedAttack:: ; cd26
|
||
ds 2
|
||
wEnemyMonUnmodifiedDefense:: ; cd28
|
||
ds 1
|
||
|
||
wInGameTradeMonNick:: ; cd29
|
||
ds 1
|
||
|
||
wEnemyMonUnmodifiedSpeed:: ; cd2a
|
||
ds 2
|
||
wEnemyMonUnmodifiedSpecial:: ; cd2c
|
||
ds 1
|
||
|
||
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
|
||
|
||
wInGameTradeReceiveMonSpecies::
|
||
ds 1
|
||
|
||
ds 2
|
||
|
||
wNPCMovementDirections2Index:: ; cd37
|
||
|
||
wcd37:: ds 1 ; used in list menus, like the fossil lab menu or drink girl menu. Also used in link menu.
|
||
|
||
wSimulatedJoypadStatesIndex:: ; cd38
|
||
; the next simulated joypad state is at wSimulatedJoypadStatesEnd plus this value minus 1
|
||
; 0 if the joypad state is not being simulated
|
||
ds 1
|
||
|
||
wWastedByteCD39:: ; cd39
|
||
; written to but nothing ever reads it
|
||
ds 1
|
||
|
||
wWastedByteCD3A:: ; cd3a
|
||
; written to but nothing ever reads it
|
||
ds 1
|
||
|
||
wOverrideSimulatedJoypadStatesMask:: ; cd3b
|
||
; mask indicating which real button presses can override simulated ones
|
||
; XXX is it ever not 0?
|
||
ds 1
|
||
|
||
ds 1
|
||
|
||
wTradedPlayerMonSpecies:: ; cd3d
|
||
|
||
wTradingWhichPlayerMon:: ; cd3d
|
||
|
||
wChangeBoxSavedMapTextPointer:: ; cd3d
|
||
|
||
wFlyAnimUsingCoordList:: ; cd3d
|
||
|
||
wPlayerSpinInPlaceAnimFrameDelay:: ; cd3d
|
||
|
||
wPlayerSpinWhileMovingUpOrDownAnimDeltaY:: ; cd3d
|
||
|
||
wHiddenObjectFunctionArgument:: ; cd3d
|
||
|
||
wSubtrahend:: ; cd3d
|
||
; subtract (BCD) wSubtrahend, wSubtrahend+1, wSubtrahend+2
|
||
|
||
wWhichTrade:: ; cd3d
|
||
; which entry from TradeMons to select
|
||
|
||
wTrainerSpriteOffset:: ; cd3d
|
||
ds 1
|
||
|
||
wTradedEnemyMonSpecies:: ; cd3e
|
||
|
||
wTradingWhichEnemyMon:: ; cd3e
|
||
|
||
wFlyAnimCounter:: ; cd3e
|
||
|
||
wPlayerSpinInPlaceAnimFrameDelayDelta:: ; cd3e
|
||
|
||
wPlayerSpinWhileMovingUpOrDownAnimMaxY:: ; cd3e
|
||
|
||
wHiddenObjectFunctionRomBank:: ; cd3e
|
||
|
||
wTrainerEngageDistance:: ; cd3e
|
||
ds 1
|
||
|
||
wNameOfPlayerMonToBeTraded:: ; cd3f
|
||
|
||
wFlyAnimBirdSpriteImageIndex:: ; cd3f
|
||
|
||
wPlayerSpinInPlaceAnimFrameDelayEndValue:: ; cd3f
|
||
|
||
wPlayerSpinWhileMovingUpOrDownAnimFrameDelay:: ; cd3f
|
||
|
||
wHiddenObjectIndex:: ; cd3f
|
||
|
||
wTrainerFacingDirection:: ; cd3f
|
||
wcd3f:: ; used with daycare text for money amount
|
||
ds 1
|
||
|
||
wPlayerSpinInPlaceAnimSoundID:: ; cd40
|
||
|
||
wHiddenObjectY:: ; cd40
|
||
|
||
wTrainerScreenY:: ; cd40
|
||
ds 1
|
||
|
||
wTradedPlayerMonOT:: ; cd41
|
||
|
||
wHiddenObjectX:: ; cd41
|
||
|
||
wTrainerScreenX:: ; cd41
|
||
ds 1
|
||
; a lot of the uses for these values use more than the said address
|
||
|
||
wcd42:: ds 1 ; used in pewter center script, printing field mon moves, slot machines and HoF PC
|
||
wcd43:: ds 1 ; slot machine stuff and GetMonFieldMoves
|
||
wcd44:: ds 1 ; just slot machine
|
||
wcd45:: ds 1 ; slot machine...
|
||
wcd46:: ds 1 ; slot machine...
|
||
wcd47:: ds 1 ; used in slot machine and spinning player sprite
|
||
wcd48:: ds 1 ; same as above
|
||
wcd49:: ds 1 ; used in slot machine, displaying the gym leaders/badges on the trainer card, and displaying the town map
|
||
wcd4a:: ds 1 ; probably used in one of the above mentioned functions
|
||
wcd4b:: ds 1 ; same as above
|
||
|
||
wTradedPlayerMonOTID:: ; cd4c
|
||
|
||
wcd4c:: ds 1 ; slot machine and probably other above stuff
|
||
wcd4d:: ds 1 ; used with cut and slot machine
|
||
|
||
wTradedEnemyMonOT:: ; cd4e
|
||
|
||
wcd4e:: ds 1 ; used with in-game trades and slot machine
|
||
wcd4f:: ds 1 ; used with in-game trades, emotion bubbles, and player animations
|
||
wcd50:: ds 9 ; used with in-game trades, emotion bubbles, and player and miscellaneous sprite animations
|
||
|
||
wTradedEnemyMonOTID:: ; cd59
|
||
ds 2
|
||
|
||
wcd5b:: ds 1 ; used in some sprite stuff, town map and surge gym trash cans
|
||
wcd5c:: ds 1 ; used in town map
|
||
|
||
wMonPartySpriteSpecies:: ; cd5d
|
||
ds 1
|
||
|
||
wLeftGBMonSpecies:: ; cd5e
|
||
; in the trade animation, the mon that leaves the left gameboy
|
||
ds 1
|
||
|
||
wRightGBMonSpecies:: ; cd5f
|
||
; in the trade animation, the mon that leaves the right gameboy
|
||
ds 1
|
||
|
||
wFlags_0xcd60:: ; cd60
|
||
; bit 0: is player engaged by trainer (to avoid being engaged by multiple trainers simultaneously)
|
||
; bit 1: boulder dust animation (from using Strength) pending
|
||
; bit 5: don't play sound when A or B is pressed in menu
|
||
; bit 6: tried pushing against boulder once (you need to push twice before it will move)
|
||
ds 1
|
||
|
||
ds 9
|
||
|
||
wcd6a:: ds 1 ; used as the output of the outcome of an item (successful, unsuccessful, can't be used now, etc.)
|
||
|
||
wJoyIgnore:: ; cd6b
|
||
; Set buttons are ignored.
|
||
ds 1
|
||
|
||
; as well as the said function, these values are used as a buffer for PlaceString
|
||
wcd6c:: ds 1 ; used in pokemon status screen and battle stuff
|
||
wcd6d:: ds 4 ; used solely for PlaceString
|
||
wcd71:: ds 1 ; used with pokemon status screen
|
||
wcd72:: ds 5 ; used with restoring PP
|
||
wcd77:: ds 1 ; used as an end terminator for GetMonName: (@ is written to this location)
|
||
wcd78:: ds 9 ; also used with restoring PP
|
||
|
||
wSerialOtherGameboyRandomNumberListBlock:: ; cd81
|
||
; buffer for transferring the random number list generated by the other gameboy
|
||
|
||
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
|
||
; Temporary storage area of 30 bytes.
|
||
wHPBarMaxHP:: ; cee9
|
||
ds 2
|
||
wHPBarOldHP:: ; ceeb
|
||
ds 2
|
||
wHPBarNewHP:: ; ceed
|
||
ds 2
|
||
wHPBarDelta:: ; ceef
|
||
ds 1
|
||
|
||
wcef0:: ds 1 ; used with HP bar stuff, probably used with wBuffer too.
|
||
wcef1:: ds 12 ; same case as above
|
||
|
||
wHPBarHPDifference:: ; cefd
|
||
ds 1
|
||
ds 7
|
||
|
||
wcf05:: ds 1 ; used with enemy using healing moves
|
||
wcf06:: ds 1 ; used with healing items as a storage value to store wWhichPokemon
|
||
|
||
wAnimSoundID:: ; cf07
|
||
; sound ID during battle animations
|
||
ds 1
|
||
|
||
wcf08:: ds 1 ; used as a storage value for the bank to return to after a BankswitchHome (bankswitch in homebank)
|
||
wcf09:: ds 1 ; used as a temp storage value for the bank to switch to
|
||
wcf0a:: ds 1 ; used as flags for Poke Mart
|
||
wBattleResult:: ; cf0b
|
||
; $00 - win
|
||
; $01 - lose
|
||
; $02 - draw
|
||
ds 1
|
||
|
||
wAutoTextBoxDrawingControl:: ; cf0c
|
||
; bit 0: if set, DisplayTextID automatically draws a text box
|
||
ds 1
|
||
|
||
wcf0d:: ds 1 ; used with some overworld scripts (not exactly sure what it's used for)
|
||
wcf0e:: ds 1 ; used with some overworld collison check
|
||
wcf0f:: ds 1 ; used with moving overworld sprites
|
||
|
||
wNPCMovementScriptFunctionNum:: ; cf10
|
||
; which script function within the pointer table indicated by
|
||
; wNPCMovementScriptPointerTableNum
|
||
ds 1
|
||
|
||
wcf11:: ds 1 ; used as a flag if the game needs to switch to the bank which the map is in when displaying a text id (flag is set during predefs)
|
||
|
||
wPredefParentBank:: ; cf12
|
||
ds 1
|
||
|
||
wSpriteIndex:: ds 1
|
||
|
||
wCurSpriteMovement2:: ; cf14
|
||
; movement byte 2 of current sprite
|
||
ds 1
|
||
|
||
ds 2
|
||
|
||
wNPCMovementScriptSpriteOffset:: ; cf17
|
||
; sprite offset of sprite being controlled by NPC movement script
|
||
ds 1
|
||
|
||
wcf18:: ds 2 ; used with overworld movement
|
||
|
||
wGBC:: ; cf1a
|
||
ds 1
|
||
|
||
wOnSGB:: ; cf1b
|
||
; if running on SGB, it's 1, else it's 0
|
||
ds 1
|
||
|
||
wcf1c:: ds 1 ; used with sgb palettes
|
||
wcf1d:: ds 1 ; used when displaying palettes for Pokemon
|
||
wcf1e:: ds 1 ; used to display palettes for HP bar
|
||
wcf1f:: ds 6 ; used to display HP bars in Pokemon Menu (probably palettes)
|
||
wcf25:: ds 8 ; used to display HP bar for Pokemon Status Screen (probably palettes too)
|
||
wcf2d:: ds 1 ; also used to display HP bar for Pokemon Menu (something about HP colour)
|
||
wcf2e:: ds 2 ; more HP bar palette stuff.
|
||
wcf30:: ds 7 ; used with palettes (apparently for Pokedex)
|
||
wcf37:: ds 20 ; used with palletes too (used for Party Menu)
|
||
wcf4b:: ds 1 ; storage buffer for various strings
|
||
wcf4c:: ds 1 ; used with displaying EXP value, probably also overflowed with wcf4b
|
||
wGainBoostedExp:: ; cf4d
|
||
ds 1
|
||
ds 17
|
||
|
||
wGymCityName:: ; cf5f
|
||
wStringBuffer1:: ; cf5f
|
||
ds 16 + 1
|
||
wGymLeaderName:: ; cf70
|
||
wStringBuffer2:: ; cf70
|
||
ds 16 + 1
|
||
wStringBuffer3:: ; cf81
|
||
ds 9 + 1
|
||
|
||
wList:: ; cf8b
|
||
ds 2
|
||
|
||
wcf8d:: ds 1 ; used in GetMonName
|
||
wcf8e:: ds 1 ; also used in GetMonName (probably as a pointer)
|
||
|
||
wItemPrices:: ; cf8f
|
||
ds 2
|
||
|
||
wcf91:: ds 1 ; used with a lot of things (too much to list here)
|
||
|
||
wWhichPokemon:: ; cf92
|
||
; which pokemon you selected
|
||
ds 1
|
||
|
||
wcf93:: ds 1 ; used with lists
|
||
|
||
wHPBarType:: ; cf94
|
||
; type of HP bar
|
||
; $00 = enemy HUD in battle
|
||
; $01 = player HUD in battle / status screen
|
||
; $02 = party menu
|
||
|
||
wListMenuID:: ; cf94
|
||
; ID used by DisplayListMenuID
|
||
ds 1
|
||
|
||
wcf95:: ds 1 ; used with RemovePokemon (BoxMons, Daycare, Trades, etc.)
|
||
wcf96:: ds 1 ; used with removing items
|
||
wcf97:: ds 1 ; used with printing item quantities?
|
||
|
||
; LoadMonData copies mon data here
|
||
wLoadedMon:: party_struct wLoadedMon ; cf98
|
||
|
||
wFontLoaded:: ; cfc4
|
||
; bit 0: The space in VRAM that is used to store walk animation tile patterns
|
||
; for the player and NPCs is in use for font tile patterns.
|
||
; This means that NPC movement must be disabled.
|
||
; The other bits are unused.
|
||
ds 1
|
||
|
||
wWalkCounter:: ; cfc5
|
||
; walk animation counter
|
||
ds 1
|
||
|
||
wTileInFrontOfPlayer:: ; cfc6
|
||
; background tile number in front of the player (either 1 or 2 steps ahead)
|
||
ds 1
|
||
|
||
wMusicHeaderPointer:: ; cfc7
|
||
; (the current music channel address - $4000) / 3
|
||
ds 1
|
||
|
||
wcfc8:: ds 1 ; used with audio
|
||
wcfc9:: ds 1 ; also used with audio
|
||
wcfca:: ds 1 ; also used with audio too
|
||
|
||
wUpdateSpritesEnabled:: ; cfcb
|
||
; $01 enables UpdateSprites; anything else disables it
|
||
ds 1
|
||
|
||
W_ENEMYMOVENUM:: ; cfcc
|
||
ds 1
|
||
W_ENEMYMOVEEFFECT:: ; cfcd
|
||
ds 1
|
||
W_ENEMYMOVEPOWER:: ; cfce
|
||
ds 1
|
||
W_ENEMYMOVETYPE:: ; cfcf
|
||
ds 1
|
||
W_ENEMYMOVEACCURACY:: ; cfd0
|
||
ds 1
|
||
W_ENEMYMOVEMAXPP:: ; cfd1
|
||
ds 1
|
||
W_PLAYERMOVENUM:: ; cfd2
|
||
ds 1
|
||
W_PLAYERMOVEEFFECT:: ; cfd3
|
||
ds 1
|
||
W_PLAYERMOVEPOWER:: ; cfd4
|
||
ds 1
|
||
W_PLAYERMOVETYPE:: ; cfd5
|
||
ds 1
|
||
W_PLAYERMOVEACCURACY:: ; cfd6
|
||
ds 1
|
||
W_PLAYERMOVEMAXPP:: ; cfd7
|
||
ds 1
|
||
|
||
|
||
wEnemyMonSpecies2:: ; cfd8
|
||
ds 1
|
||
wBattleMonSpecies2:: ; cfd9
|
||
ds 1
|
||
|
||
wEnemyMonNick:: ds 11 ; cfda
|
||
|
||
wEnemyMon:: ; cfe5
|
||
; The wEnemyMon struct reaches past 0xcfff,
|
||
; the end of wram bank 0 on cgb.
|
||
; This has no significance on dmg, where wram
|
||
; isn't banked (c000-dfff is contiguous).
|
||
; However, recent versions of rgbds have replaced
|
||
; dmg-style wram with cgb wram banks.
|
||
|
||
; Until this is fixed, this struct will have
|
||
; to be declared manually.
|
||
|
||
wEnemyMonSpecies:: db
|
||
wEnemyMonHP:: dw
|
||
wEnemyMonPartyPos::
|
||
wEnemyMonBoxLevel:: db
|
||
wEnemyMonStatus:: db
|
||
wEnemyMonType::
|
||
wEnemyMonType1:: db
|
||
wEnemyMonType2:: db
|
||
wEnemyMonCatchRate_NotReferenced:: db
|
||
wEnemyMonMoves:: ds NUM_MOVES
|
||
wEnemyMonDVs:: ds 2
|
||
wEnemyMonLevel:: db
|
||
wEnemyMonMaxHP:: dw
|
||
wEnemyMonAttack:: dw
|
||
wEnemyMonDefense:: dw
|
||
wEnemyMonSpeed:: dw
|
||
wEnemyMonSpecial:: dw
|
||
wEnemyMonPP:: ds 2 ; NUM_MOVES - 2
|
||
SECTION "WRAM Bank 1", WRAMX, BANK[1]
|
||
ds 2 ; NUM_MOVES - 2
|
||
|
||
wEnemyMonBaseStats:: ds 5
|
||
wEnemyMonCatchRate:: ds 1
|
||
wEnemyMonBaseExp:: ds 1
|
||
|
||
wBattleMonNick:: ds 11 ; d009
|
||
wBattleMon:: battle_struct wBattleMon ; d014
|
||
|
||
|
||
W_TRAINERCLASS:: ; d031
|
||
ds 1
|
||
|
||
ds 1
|
||
|
||
wTrainerPicPointer:: ; wd033
|
||
ds 2
|
||
ds 1
|
||
wd036:: ds 16 ; used as a temporary buffer to print "XXX learned YYY"
|
||
wd046:: ds 1 ; used with trainer pointer stuff (not exactly sure, but the label is incremented and loaded with a value, so wd047 is accessed)
|
||
wd047:: ds 1 ; used with unloading trainer data?
|
||
wd048:: ds 2 ; used as a pointer for missable object loop
|
||
|
||
W_TRAINERNAME:: ; d04a
|
||
; 13 bytes for the letters of the opposing trainer
|
||
; the name is terminated with $50 with possible
|
||
; unused trailing letters
|
||
ds 13
|
||
|
||
W_ISINBATTLE:: ; d057
|
||
; no battle, this is 0
|
||
; wild battle, this is 1
|
||
; trainer battle, this is 2
|
||
ds 1
|
||
|
||
wPartyGainExpFlags:: ; d058
|
||
; flags that indicate which party members should be be given exp when GainExperience is called
|
||
flag_array 6
|
||
|
||
W_CUROPPONENT:: ; d059
|
||
; in a wild battle, this is the species of pokemon
|
||
; in a trainer battle, this is the trainer class + $C8
|
||
ds 1
|
||
|
||
W_BATTLETYPE:: ; d05a
|
||
; in normal battle, this is 0
|
||
; in old man battle, this is 1
|
||
; in safari battle, this is 2
|
||
ds 1
|
||
|
||
wDamageMultipliers:: ; d05b
|
||
; bits 0-6: Effectiveness
|
||
; $0 = immune
|
||
; $5 = not very effective
|
||
; $a = neutral
|
||
; $14 = super-effective
|
||
; bit 7: STAB
|
||
ds 1
|
||
|
||
W_LONEATTACKNO:: ; d05c
|
||
; which entry in LoneAttacks to use
|
||
W_GYMLEADERNO:: ; d05c
|
||
; it's actually the same thing as ^
|
||
ds 1
|
||
W_TRAINERNO:: ; d05d
|
||
; which instance of [youngster, lass, etc] is this?
|
||
ds 1
|
||
|
||
wCriticalHitOrOHKO:: ; d05e
|
||
; $00 = normal attack
|
||
; $01 = critical hit
|
||
; $02 = successful OHKO
|
||
; $ff = failed OHKO
|
||
ds 1
|
||
|
||
W_MOVEMISSED:: ; d05f
|
||
ds 1
|
||
|
||
wPlayerStatsToDouble:: ; d060
|
||
; always 0
|
||
ds 1
|
||
|
||
wPlayerStatsToHalve:: ; d061
|
||
; always 0
|
||
ds 1
|
||
|
||
W_PLAYERBATTSTATUS1:: ; d062
|
||
; 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
|
||
ds 1
|
||
|
||
W_PLAYERBATTSTATUS2:: ; d063
|
||
; 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
|
||
ds 1
|
||
|
||
W_PLAYERBATTSTATUS3:: ; d064
|
||
; bit 0 - toxic
|
||
; bit 1 - light screen
|
||
; bit 2 - reflect
|
||
; bit 3 - tranformed
|
||
ds 1
|
||
|
||
wEnemyStatsToDouble:: ; d065
|
||
; always 0
|
||
ds 1
|
||
|
||
wEnemyStatsToHalve:: ; d066
|
||
; always 0
|
||
ds 1
|
||
|
||
W_ENEMYBATTSTATUS1:: ; d067
|
||
ds 1
|
||
W_ENEMYBATTSTATUS2:: ; d068
|
||
ds 1
|
||
W_ENEMYBATTSTATUS3:: ; d069
|
||
ds 1
|
||
|
||
wPlayerNumAttacksLeft::
|
||
; when the player is attacking multiple times, the number of attacks left
|
||
ds 1
|
||
|
||
W_PLAYERCONFUSEDCOUNTER:: ; wd06b
|
||
ds 1
|
||
|
||
W_PLAYERTOXICCOUNTER:: ; d06c
|
||
ds 1
|
||
W_PLAYERDISABLEDMOVE:: ; d06d
|
||
; high nibble: which move is disabled (1-4)
|
||
; low nibble: disable turns left
|
||
ds 1
|
||
|
||
ds 1
|
||
|
||
wEnemyNumAttacksLeft:: ; d06f
|
||
; when the enemy is attacking multiple times, the number of attacks left
|
||
ds 1
|
||
|
||
W_ENEMYCONFUSEDCOUNTER:: ; wd070
|
||
ds 1
|
||
|
||
W_ENEMYTOXICCOUNTER:: ; d071
|
||
ds 1
|
||
W_ENEMYDISABLEDMOVE:: ; d072
|
||
; high nibble: which move is disabled (1-4)
|
||
; low nibble: disable turns left
|
||
ds 1
|
||
|
||
ds 1
|
||
|
||
wPlayerNumHits:: ; d074
|
||
; number of hits by player in attacks like Double Slap, etc.
|
||
|
||
wPlayerBideAccumulatedDamage:: ; d074
|
||
; the amount of damage accumulated by the player while biding (2 bytes)
|
||
|
||
wUnknownSerialCounter2:: ; d075
|
||
; 2 bytes
|
||
|
||
ds 4
|
||
|
||
wEscapedFromBattle::
|
||
; non-zero when an item or move that allows escape from battle was used
|
||
ds 1
|
||
|
||
wAmountMoneyWon:: ; wd079 - wd07b
|
||
wd079:: ds 1 ; used as a value to print the money won from a battle, as well as a misc. value in seafoam
|
||
wd07a:: ds 1 ; same case as above
|
||
wd07b:: ds 1 ; used as a buffer to convert the money won from a battle into BCD
|
||
|
||
W_ANIMATIONID:: ; d07c
|
||
; ID number of the current battle animation
|
||
ds 1
|
||
|
||
wd07d:: ds 1 ; used with naming functions and party display type
|
||
wd07e:: ds 3 ; used with mart and inventory
|
||
|
||
; base coordinates of frame block
|
||
W_BASECOORDX:: ; d081
|
||
ds 1
|
||
W_BASECOORDY:: ; d082
|
||
ds 1
|
||
|
||
; low health alarm counter/enable
|
||
; high bit = enable, others = timer to cycle frequencies
|
||
wLowHealthAlarm:: ds 1 ; d083
|
||
|
||
W_FBTILECOUNTER:: ; d084
|
||
; counts how many tiles of the current frame block have been drawn
|
||
ds 1
|
||
|
||
wd085:: ds 1 ; used with animating water/flowers
|
||
|
||
W_SUBANIMFRAMEDELAY:: ; d086
|
||
; duration of each frame of the current subanimation in terms of screen refreshes
|
||
ds 1
|
||
W_SUBANIMCOUNTER:: ; d087
|
||
; counts the number of subentries left in the current subanimation
|
||
ds 1
|
||
|
||
wd088:: ds 1 ; savefile checksum (if file is corrupted)
|
||
|
||
W_NUMFBTILES:: ; d089
|
||
; number of tiles in current battle animation frame block
|
||
ds 1
|
||
|
||
wTradedMonMovingRight:: ; d08a
|
||
; $01 if mon is moving from left gameboy to right gameboy; $00 if vice versa
|
||
|
||
wd08a:: ds 1 ; used with sprites and displaying the option menu on the main menu screen?
|
||
|
||
wTownMapSpriteBlinkingCounter:: ; d08b
|
||
|
||
wPartyMonAnimCounter:: ; d08b
|
||
|
||
W_SUBANIMTRANSFORM:: ; 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
|
||
ds 1
|
||
|
||
wEndBattleWinTextPointer:: ; d08c
|
||
ds 2
|
||
|
||
wEndBattleLoseTextPointer:: ; d08e
|
||
ds 2
|
||
|
||
ds 2
|
||
|
||
wEndBattleTextRomBank:: ; d092
|
||
ds 1
|
||
|
||
ds 1
|
||
|
||
W_SUBANIMADDRPTR:: ; d094
|
||
; the address _of the address_ of the current subanimation entry
|
||
ds 2
|
||
W_SUBANIMSUBENTRYADDR:: ; d096
|
||
; the address of the current subentry of the current subanimation
|
||
ds 2
|
||
|
||
ds 2
|
||
|
||
wd09a:: ds 1 ; used with the battle transition screen when entering a battle (screen slowly draws into black)
|
||
|
||
wTownMapSpriteBlinkingEnabled:: ; d09b
|
||
; non-zero when enabled. causes nest locations to blink on and off.
|
||
; the town selection cursor will blink regardless of what this value is
|
||
|
||
wd09b:: ds 1 ; also used with battle transition screen and move animations
|
||
|
||
W_FBDESTADDR:: ; d09c
|
||
; current destination address in OAM for frame blocks (big endian)
|
||
ds 2
|
||
|
||
W_FBMODE:: ; 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
|
||
ds 1
|
||
|
||
wNewTileBlockID:: ; d09f
|
||
|
||
wd09f:: ds 1 ; used with predef ReplaceTileBlock
|
||
wd0a0:: ds 1 ; used in VBlank and ChangeBGPalColor0_4Frames
|
||
|
||
W_SPRITECURPOSX:: ; d0a1
|
||
ds 1
|
||
W_SPRITECURPOSY:: ; d0a2
|
||
ds 1
|
||
W_SPRITEWITDH:: ; d0a3
|
||
ds 1
|
||
W_SPRITEHEIGHT:: ; d0a4
|
||
ds 1
|
||
W_SPRITEINPUTCURBYTE:: ; d0a5
|
||
; current input byte
|
||
ds 1
|
||
W_SPRITEINPUTBITCOUNTER:: ; d0a6
|
||
; bit offset of last read input bit
|
||
ds 1
|
||
|
||
W_SPRITEOUTPUTBITOFFSET:: ; d0a7; 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
|
||
ds 1
|
||
|
||
W_SPRITELOADFLAGS:: ; d0a8
|
||
; bit 0 determines used buffer (0 -> $a188, 1 -> $a310)
|
||
; bit 1 loading last sprite chunk? (there are at most 2 chunks per load operation)
|
||
ds 1
|
||
W_SPRITEUNPACKMODE:: ; d0a9
|
||
ds 1
|
||
W_SPRITEFLIPPED:: ; d0aa
|
||
ds 1
|
||
|
||
W_SPRITEINPUTPTR:: ; d0ab
|
||
; pointer to next input byte
|
||
ds 2
|
||
W_SPRITEOUTPUTPTR:: ; d0ad
|
||
; pointer to current output byte
|
||
ds 2
|
||
W_SPRITEOUTPUTPTRCACHED:: ; d0af
|
||
; used to revert pointer for different bit offsets
|
||
ds 2
|
||
W_SPRITEDECODETABLE0PTR:: ; d0b1
|
||
; pointer to differential decoding table (assuming initial value 0)
|
||
ds 2
|
||
W_SPRITEDECODETABLE1PTR:: ; d0b3
|
||
; pointer to differential decoding table (assuming initial value 1)
|
||
ds 2
|
||
|
||
wd0b5:: ds 1 ; used as a temp storage area for Pokemon Species, and other Pokemon/Battle related things
|
||
|
||
wNameListType:: ; d0b6
|
||
ds 1
|
||
|
||
wPredefBank:: ; d0b7
|
||
ds 1
|
||
|
||
W_MONHEADER:: ; d0b8
|
||
W_MONHDEXNUM:: ; d0b8
|
||
ds 1
|
||
|
||
W_MONHBASESTATS:: ; d0b9
|
||
W_MONHBASEHP:: ; d0b9
|
||
ds 1
|
||
W_MONHBASEATTACK:: ; d0ba
|
||
ds 1
|
||
W_MONHBASEDEFENSE:: ; d0bb
|
||
ds 1
|
||
W_MONHBASESPEED:: ; d0bc
|
||
ds 1
|
||
W_MONHBASESPECIAL:: ; d0bd
|
||
ds 1
|
||
|
||
W_MONHTYPES:: ; d0be
|
||
W_MONHTYPE1:: ; d0be
|
||
ds 1
|
||
W_MONHTYPE2:: ; d0bf
|
||
ds 1
|
||
|
||
W_MONHCATCHRATE:: ; d0c0
|
||
ds 1
|
||
W_MONHBASEXP:: ; d0c1
|
||
ds 1
|
||
W_MONHSPRITEDIM:: ; d0c2
|
||
ds 1
|
||
W_MONHFRONTSPRITE:: ; d0c3
|
||
ds 2
|
||
W_MONHBACKSPRITE:: ; d0c5
|
||
ds 2
|
||
|
||
W_MONHMOVES:: ; d0c7
|
||
ds 4
|
||
|
||
W_MONHGROWTHRATE:: ; d0cb
|
||
ds 1
|
||
|
||
W_MONHLEARNSET:: ; d0cc
|
||
; bit field
|
||
flag_array 50 + 5
|
||
ds 1
|
||
|
||
wd0d4:: ds 3 ; temp storage for hTilesetType
|
||
|
||
W_MONHPADDING:: ; d0d7
|
||
|
||
|
||
W_DAMAGE:: ; d0d7
|
||
ds 2
|
||
|
||
ds 2
|
||
|
||
wRepelRemainingSteps:: ; wd0db
|
||
ds 1
|
||
|
||
wMoves:: ; wd0dc
|
||
; list of moves for FormatMovesString
|
||
ds 4
|
||
|
||
wMoveNum:: ; d0e0
|
||
ds 1
|
||
|
||
wMovesString:: ; d0e1
|
||
ds 56
|
||
|
||
wd119:: ds 1 ; written to from W_CURMAPTILESET but never read
|
||
|
||
wWalkBikeSurfStateCopy:: ; d11a
|
||
; wWalkBikeSurfState is sometimes copied here, but it doesn't seem to be used for anything
|
||
ds 1
|
||
|
||
wd11b:: ds 1 ; used with mart text box and cable club
|
||
wd11c:: ds 1 ; temp storage value for catching pokemon
|
||
wd11d:: ds 1 ; used with battle switchout and testing if the enemy mon fainted
|
||
wd11e:: ds 1 ; used as a Pokemon and Item storage value. Also used as an output value for CountSetBits
|
||
wd11f:: ds 1 ; used when running from battle and PartyMenuInit
|
||
|
||
wNumRunAttempts::
|
||
; number of times the player has tried to run from battle
|
||
ds 1
|
||
|
||
wd121:: ds 1 ; used with evolving pokemon
|
||
wd122:: ds 2 ; saved ROM bank number for vblank
|
||
wd124:: ds 1 ; used as an output value when determining if an item is a key item
|
||
|
||
wTextBoxID:: ; d125
|
||
ds 1
|
||
|
||
wd126:: ds 1 ; not exactly sure what this is used for, but it seems to be used as a multipurpose temp flag value
|
||
|
||
W_CURENEMYLVL:: ; d127
|
||
ds 1
|
||
|
||
wd128:: ds 1 ; used as a pointer to displaying Poke Mart inventory, also used to store the pointer of LoadItemList (pointer to item list initially in hl)
|
||
wd129:: ds 1 ; second half of above mentioned pointer
|
||
wd12a:: ds 1 ; Number of list entries for displaying a list
|
||
|
||
wLinkState:: ; d12b
|
||
ds 1
|
||
|
||
wTwoOptionMenuID:: ds 1
|
||
wd12d:: ds 1 ; used with item menus and pokemart menu, also used with testing if all Pokemon Fainted?
|
||
wd12e:: ds 1 ; used as an output value to determine if A or B was pressed in a yes/no box
|
||
wd12f:: ds 1 ; used in some coordinatestuff, npc pathstuff, and game corner prize stuff
|
||
wd130:: ds 1 ; saved value of screen Y coord of trainer sprite
|
||
wd131:: ds 1 ; saved value of screen X coord of trainer sprite
|
||
wd132:: ds 1 ; saved value of map Y coordinate of trainer sprite (not sure for purpose)
|
||
wd133:: ds 6 ; saved value of map X coordinate of trainer sprite
|
||
wd139:: ds 1 ; backup of selected menu entry for game corner prizes
|
||
|
||
wIgnoreInputCounter:: ; d13a
|
||
; counts downward each frame
|
||
; when it hits 0, bit 5 (ignore input bit) of wd730 is reset
|
||
ds 1
|
||
|
||
wStepCounter:: ; d13b
|
||
; counts down once every step
|
||
ds 1
|
||
|
||
wNumberOfNoRandomBattleStepsLeft:: ; d13c
|
||
; after a battle, you have at least 3 steps before a random battle can occur
|
||
ds 1
|
||
|
||
W_PRIZE1:: ; d13d
|
||
ds 1
|
||
W_PRIZE2:: ; d13e
|
||
ds 1
|
||
W_PRIZE3:: ; d13f
|
||
ds 1
|
||
|
||
ds 1
|
||
|
||
wSerialRandomNumberListBlock:: ; d141
|
||
; the first 7 bytes are the preamble
|
||
|
||
wd141:: ds 2 ; prices for prizes
|
||
wd143:: ds 2 ; prices for prizes
|
||
wd145:: ds 3 ; prices for prizes
|
||
|
||
wLinkBattleRandomNumberList:: ; d148
|
||
; shared list of 9 random numbers, indexed by wLinkBattleRandomNumberListIndex
|
||
ds 10
|
||
|
||
wSerialPlayerDataBlock:: ; d152
|
||
; the first 6 bytes are the preamble
|
||
|
||
wd152:: ds 1 ; used as a temporary storage for the item used
|
||
wd153:: ds 3 ; written to during pokedex flag action but doesn't seem to be read from
|
||
wd156:: ds 1 ; evolution stone ID used
|
||
wd157:: ds 1 ; used with oak's lab script (related to npc movement directions), possibly indirectly accessed with values below
|
||
|
||
|
||
wPlayerName:: ; d158
|
||
ds 11
|
||
|
||
wPartyCount:: ds 1 ; d163
|
||
wPartySpecies:: ds PARTY_LENGTH ; d164
|
||
wPartyEnd:: ds 1 ; d16a
|
||
|
||
wPartyMons::
|
||
wPartyMon1:: party_struct wPartyMon1 ; d16b
|
||
wPartyMon2:: party_struct wPartyMon2 ; d197
|
||
wPartyMon3:: party_struct wPartyMon3 ; d1c3
|
||
wPartyMon4:: party_struct wPartyMon4 ; d1ef
|
||
wPartyMon5:: party_struct wPartyMon5 ; d21b
|
||
wPartyMon6:: party_struct wPartyMon6 ; d247
|
||
|
||
wPartyMonOT:: ds 11 * PARTY_LENGTH ; d273
|
||
wPartyMonNicks:: ds 11 * PARTY_LENGTH ; d2b5
|
||
|
||
|
||
wPokedexOwned:: ; d2f7
|
||
flag_array NUM_POKEMON
|
||
wPokedexOwnedEnd::
|
||
|
||
wPokedexSeen:: ; d30a
|
||
flag_array NUM_POKEMON
|
||
wPokedexSeenEnd::
|
||
|
||
|
||
wNumBagItems:: ; d31d
|
||
ds 1
|
||
wBagItems:: ; d31e
|
||
; item, quantity
|
||
ds 20 * 2
|
||
ds 1 ; end
|
||
|
||
wPlayerMoney:: ; d347
|
||
ds 3 ; BCD
|
||
|
||
W_RIVALNAME:: ; d34a
|
||
ds 11
|
||
|
||
W_OPTIONS:: ; 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
|
||
ds 1
|
||
|
||
W_OBTAINEDBADGES:: ; d356
|
||
ds 1
|
||
|
||
ds 1
|
||
|
||
wd358:: ds 1 ; bit 0 set = no delay when printing text (W_OPTIONS is still checked though)
|
||
|
||
wPlayerID:: ; d359
|
||
ds 2
|
||
|
||
wd35b:: ds 1 ; used with audio stuff
|
||
wd35c:: ds 1 ; storage for audio bank for current map?
|
||
|
||
wMapPalOffset:: ; d35d
|
||
; offset subtracted from FadePal4 to get the background and object palettes for the current map
|
||
; normally, it is 0. it is 6 when Flash is needed, causing FadePal2 to be used instead of FadePal4
|
||
ds 1
|
||
|
||
W_CURMAP:: ; d35e
|
||
ds 1
|
||
|
||
wCurrentTileBlockMapViewPointer:: ; d35f
|
||
; pointer to the upper left corner of the current view in the tile block map
|
||
ds 2
|
||
|
||
W_YCOORD:: ; d361
|
||
; player’s position on the current map
|
||
ds 1
|
||
|
||
W_XCOORD:: ; d362
|
||
ds 1
|
||
|
||
W_YBLOCKCOORD:: ; d363
|
||
; player's y position (by block)
|
||
ds 1
|
||
|
||
W_XBLOCKCOORD:: ; d364
|
||
ds 1
|
||
|
||
wLastMap:: ; d365
|
||
ds 1
|
||
|
||
wd366:: ds 1 ; W_CURMAPWIDTH of the last outdoor map visited when entering an inside map
|
||
|
||
W_CURMAPTILESET:: ; d367
|
||
ds 1
|
||
|
||
W_CURMAPHEIGHT:: ; d368
|
||
; blocks
|
||
ds 1
|
||
|
||
W_CURMAPWIDTH:: ; d369
|
||
; blocks
|
||
ds 1
|
||
|
||
W_MAPDATAPTR:: ; d36a
|
||
ds 2
|
||
|
||
W_MAPTEXTPTR:: ; d36c
|
||
ds 2
|
||
|
||
W_MAPSCRIPTPTR:: ; d36e
|
||
ds 2
|
||
|
||
W_MAPCONNECTIONS:: ; d370
|
||
; connection byte
|
||
ds 1
|
||
|
||
W_MAPCONN1PTR:: ; d371
|
||
ds 1
|
||
|
||
wd372:: ds 1 ; some connection stuff, too bothered to label it
|
||
wd373:: ds 1
|
||
wd374:: ds 1
|
||
wd375:: ds 1
|
||
wd376:: ds 1
|
||
wd377:: ds 1
|
||
wd378:: ds 1
|
||
wd379:: ds 1
|
||
wd37a:: ds 1
|
||
wd37b:: ds 1
|
||
|
||
W_MAPCONN2PTR:: ; d37c
|
||
ds 1
|
||
|
||
wd37d:: ds 1
|
||
wd37e:: ds 1
|
||
wd37f:: ds 1
|
||
wd380:: ds 1
|
||
wd381:: ds 1
|
||
wd382:: ds 1
|
||
wd383:: ds 1
|
||
wd384:: ds 1
|
||
wd385:: ds 1
|
||
wd386:: ds 1
|
||
|
||
W_MAPCONN3PTR:: ; d387
|
||
ds 1
|
||
|
||
wd388:: ds 1
|
||
wd389:: ds 1
|
||
wd38a:: ds 1
|
||
wd38b:: ds 1
|
||
wd38c:: ds 1
|
||
wd38d:: ds 1
|
||
wd38e:: ds 1
|
||
wd38f:: ds 1
|
||
wd390:: ds 1
|
||
wd391:: ds 1
|
||
|
||
W_MAPCONN4PTR:: ; d392
|
||
ds 1
|
||
|
||
wd393:: ds 1
|
||
wd394:: ds 1
|
||
wd395:: ds 1
|
||
wd396:: ds 1
|
||
wd397:: ds 1
|
||
wd398:: ds 1
|
||
wd399:: ds 1
|
||
wd39a:: ds 1
|
||
wd39b:: ds 1
|
||
wd39c:: ds 1
|
||
|
||
W_SPRITESET:: ; d39d
|
||
; sprite set for the current map (11 sprite picture ID's)
|
||
ds 11
|
||
|
||
W_SPRITESETID:: ; d3a8
|
||
; sprite set ID for the current map
|
||
ds 1
|
||
|
||
wd3a9:: ds 1 ; used when getting the object data pointer
|
||
wd3aa:: ds 3 ; second part of the pointer
|
||
wd3ad:: ds 1 ; used as the beginning value for copying warp data
|
||
|
||
wNumberOfWarps:: ; d3ae
|
||
; number of warps in current map
|
||
ds 1
|
||
|
||
wWarpEntries:: ; d3af
|
||
; current map warp entries
|
||
ds 128
|
||
|
||
wDestinationWarpID:: ; d42f
|
||
; if $ff, the player's coordinates are not updated when entering the map
|
||
ds 1
|
||
|
||
ds 128
|
||
|
||
wd4b0:: ds 1 ; number of signs on the map
|
||
wd4b1:: ds 32 ; starting address for sign coords
|
||
wd4d1:: ds 16 ; starting address for sign text IDs
|
||
|
||
W_NUMSPRITES:: ; d4e1
|
||
; number of sprites on the current map
|
||
ds 1
|
||
|
||
; these two variables track the X and Y offset in blocks from the last special warp used
|
||
; they don't seem to be used for anything
|
||
wYOffsetSinceLastSpecialWarp:: ; d4e2
|
||
ds 1
|
||
wXOffsetSinceLastSpecialWarp:: ; d4e3
|
||
ds 1
|
||
|
||
W_MAPSPRITEDATA:: ; d4e4
|
||
; two bytes per sprite (movement byte 2, text ID)
|
||
ds 32
|
||
|
||
W_MAPSPRITEEXTRADATA:: ; d504
|
||
; two bytes per sprite (trainer class/item ID, trainer set ID)
|
||
ds 32
|
||
|
||
wd524:: ds 1 ; map height in 2x2 metatiles, also used with checking connections
|
||
wd525:: ds 1 ; map width in 2x2 metatiles, also used with checking connections
|
||
|
||
wMapViewVRAMPointer:: ; d526
|
||
; the address of the upper left corner of the visible portion of the BG tile map in VRAM
|
||
ds 2
|
||
|
||
wd528:: ds 1 ; additional storage for directions
|
||
wd529:: ds 1 ; same case as above, but used differently
|
||
wd52a:: ds 1 ; same case as above
|
||
|
||
W_TILESETBANK:: ; d52b
|
||
ds 1
|
||
|
||
W_TILESETBLOCKSPTR:: ; d52c
|
||
; maps blocks (4x4 tiles) to tiles
|
||
ds 2
|
||
|
||
W_TILESETGFXPTR:: ; d52e
|
||
ds 2
|
||
|
||
W_TILESETCOLLISIONPTR:: ; d530
|
||
; list of all walkable tiles
|
||
ds 2
|
||
|
||
W_TILESETTALKINGOVERTILES:: ; d532
|
||
ds 3
|
||
|
||
W_GRASSTILE:: ; d535
|
||
ds 1
|
||
|
||
ds 4
|
||
|
||
wNumBoxItems:: ; d53a
|
||
ds 1
|
||
wBoxItems:: ; d53b
|
||
; item, quantity
|
||
ds 50 * 2
|
||
ds 1 ; end
|
||
|
||
wd5a0:: ds 2 ; current box number
|
||
wd5a2:: ds 1 ; number of HOF teams
|
||
wd5a3:: ds 1 ; unused? (written to when loading map data)
|
||
|
||
wPlayerCoins:: ; d5a4
|
||
ds 2 ; BCD
|
||
|
||
W_MISSABLEOBJECTFLAGS:: ; d5a6
|
||
; bit array of missable objects. set = removed
|
||
ds 39
|
||
|
||
wd5cd:: ds 1 ; temp copy of c1x2 (sprite facing/anim)
|
||
|
||
W_MISSABLEOBJECTLIST:: ; d5ce
|
||
; 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
|
||
ds 17 * 2
|
||
|
||
W_GAMEPROGRESSFLAGS:: ; d5f0
|
||
; $c8 bytes
|
||
ds 0
|
||
|
||
W_OAKSLABCURSCRIPT:: ; d5f0
|
||
ds 1
|
||
W_PALLETTOWNCURSCRIPT:: ; d5f1
|
||
ds 1
|
||
ds 1
|
||
W_BLUESHOUSECURSCRIPT:: ; d5f3
|
||
ds 1
|
||
W_VIRIDIANCITYCURSCRIPT:: ; d5f4
|
||
ds 1
|
||
ds 2
|
||
W_PEWTERCITYCURSCRIPT:: ; d5f7
|
||
ds 1
|
||
W_ROUTE3CURSCRIPT:: ; d5f8
|
||
ds 1
|
||
W_ROUTE4CURSCRIPT:: ; d5f9
|
||
ds 1
|
||
ds 1
|
||
W_VIRIDIANGYMCURSCRIPT:: ; d5fb
|
||
ds 1
|
||
W_PEWTERGYMCURSCRIPT:: ; d5fc
|
||
ds 1
|
||
W_CERULEANGYMCURSCRIPT:: ; d5fd
|
||
ds 1
|
||
W_VERMILIONGYMCURSCRIPT:: ; d5fe
|
||
ds 1
|
||
W_CELADONGYMCURSCRIPT:: ; d5ff
|
||
ds 1
|
||
W_ROUTE6CURSCRIPT:: ; d600
|
||
ds 1
|
||
W_ROUTE8CURSCRIPT:: ; d601
|
||
ds 1
|
||
W_ROUTE24CURSCRIPT:: ; d602
|
||
ds 1
|
||
W_ROUTE25CURSCRIPT:: ; d603
|
||
ds 1
|
||
W_ROUTE9CURSCRIPT:: ; d604
|
||
ds 1
|
||
W_ROUTE10CURSCRIPT:: ; d605
|
||
ds 1
|
||
W_MTMOON1CURSCRIPT:: ; d606
|
||
ds 1
|
||
W_MTMOON3CURSCRIPT:: ; d607
|
||
ds 1
|
||
W_SSANNE8CURSCRIPT:: ; d608
|
||
ds 1
|
||
W_SSANNE9CURSCRIPT:: ; d609
|
||
ds 1
|
||
W_ROUTE22CURSCRIPT:: ; d60a
|
||
ds 1
|
||
ds 1
|
||
W_REDSHOUSE2CURSCRIPT:: ; d60c
|
||
ds 1
|
||
W_VIRIDIANMARKETCURSCRIPT:: ; d60d
|
||
ds 1
|
||
W_ROUTE22GATECURSCRIPT:: ; d60e
|
||
ds 1
|
||
W_CERULEANCITYCURSCRIPT:: ; d60f
|
||
ds 1
|
||
ds 7
|
||
W_SSANNE5CURSCRIPT:: ; d617
|
||
ds 1
|
||
W_VIRIDIANFORESTCURSCRIPT:: ; d618
|
||
ds 1
|
||
W_MUSEUM1FCURSCRIPT:: ; d619
|
||
ds 1
|
||
W_ROUTE13CURSCRIPT:: ; d61a
|
||
ds 1
|
||
W_ROUTE14CURSCRIPT:: ; d61b
|
||
ds 1
|
||
W_ROUTE17CURSCRIPT:: ; d61c
|
||
ds 1
|
||
W_ROUTE19CURSCRIPT:: ; d61d
|
||
ds 1
|
||
W_ROUTE21CURSCRIPT:: ; d61e
|
||
ds 1
|
||
W_SAFARIZONEENTRANCECURSCRIPT:: ; d61f
|
||
ds 1
|
||
W_ROCKTUNNEL2CURSCRIPT:: ; d620
|
||
ds 1
|
||
W_ROCKTUNNEL1CURSCRIPT:: ; d621
|
||
ds 1
|
||
ds 1
|
||
W_ROUTE11CURSCRIPT:: ; d623
|
||
ds 1
|
||
W_ROUTE12CURSCRIPT:: ; d624
|
||
ds 1
|
||
W_ROUTE15CURSCRIPT:: ; d625
|
||
ds 1
|
||
W_ROUTE16CURSCRIPT:: ; d626
|
||
ds 1
|
||
W_ROUTE18CURSCRIPT:: ; d627
|
||
ds 1
|
||
W_ROUTE20CURSCRIPT:: ; d628
|
||
ds 1
|
||
W_SSANNE10CURSCRIPT:: ; d629
|
||
ds 1
|
||
W_VERMILIONCITYCURSCRIPT:: ; d62a
|
||
ds 1
|
||
W_POKEMONTOWER2CURSCRIPT:: ; d62b
|
||
ds 1
|
||
W_POKEMONTOWER3CURSCRIPT:: ; d62c
|
||
ds 1
|
||
W_POKEMONTOWER4CURSCRIPT:: ; d62d
|
||
ds 1
|
||
W_POKEMONTOWER5CURSCRIPT:: ; d62e
|
||
ds 1
|
||
W_POKEMONTOWER6CURSCRIPT:: ; d62f
|
||
ds 1
|
||
W_POKEMONTOWER7CURSCRIPT:: ; d630
|
||
ds 1
|
||
W_ROCKETHIDEOUT1CURSCRIPT:: ; d631
|
||
ds 1
|
||
W_ROCKETHIDEOUT2CURSCRIPT:: ; d632
|
||
ds 1
|
||
W_ROCKETHIDEOUT3CURSCRIPT:: ; d633
|
||
ds 1
|
||
W_ROCKETHIDEOUT4CURSCRIPT:: ; d634
|
||
ds 2
|
||
W_ROUTE6GATECURSCRIPT:: ; d636
|
||
ds 1
|
||
W_ROUTE8GATECURSCRIPT:: ; d637
|
||
ds 2
|
||
W_CINNABARISLANDCURSCRIPT:: ; d639
|
||
ds 1
|
||
W_MANSION1CURSCRIPT:: ; d63a
|
||
ds 2
|
||
W_MANSION2CURSCRIPT:: ; d63c
|
||
ds 1
|
||
W_MANSION3CURSCRIPT:: ; d63d
|
||
ds 1
|
||
W_MANSION4CURSCRIPT:: ; d63e
|
||
ds 1
|
||
W_VICTORYROAD2CURSCRIPT:: ; d63f
|
||
ds 1
|
||
W_VICTORYROAD3CURSCRIPT:: ; d640
|
||
ds 2
|
||
W_FIGHTINGDOJOCURSCRIPT:: ; d642
|
||
ds 1
|
||
W_SILPHCO2CURSCRIPT:: ; d643
|
||
ds 1
|
||
W_SILPHCO3CURSCRIPT:: ; d644
|
||
ds 1
|
||
W_SILPHCO4CURSCRIPT:: ; d645
|
||
ds 1
|
||
W_SILPHCO5CURSCRIPT:: ; d646
|
||
ds 1
|
||
W_SILPHCO6CURSCRIPT:: ; d647
|
||
ds 1
|
||
W_SILPHCO7CURSCRIPT:: ; d648
|
||
ds 1
|
||
W_SILPHCO8CURSCRIPT:: ; d649
|
||
ds 1
|
||
W_SILPHCO9CURSCRIPT:: ; d64a
|
||
ds 1
|
||
W_HALLOFFAMEROOMCURSCRIPT:: ; d64b
|
||
ds 1
|
||
W_GARYCURSCRIPT:: ; d64c
|
||
ds 1
|
||
W_LORELEICURSCRIPT:: ; d64d
|
||
ds 1
|
||
W_BRUNOCURSCRIPT:: ; d64e
|
||
ds 1
|
||
W_AGATHACURSCRIPT:: ; d64f
|
||
ds 1
|
||
W_UNKNOWNDUNGEON3CURSCRIPT:: ; d650
|
||
ds 1
|
||
W_VICTORYROAD1CURSCRIPT:: ; d651
|
||
ds 1
|
||
ds 1
|
||
W_LANCECURSCRIPT:: ; d653
|
||
ds 1
|
||
ds 4
|
||
W_SILPHCO10CURSCRIPT:: ; d658
|
||
ds 1
|
||
W_SILPHCO11CURSCRIPT:: ; d659
|
||
ds 1
|
||
ds 1
|
||
W_FUCHSIAGYMCURSCRIPT:: ; d65b
|
||
ds 1
|
||
W_SAFFRONGYMCURSCRIPT:: ; d65c
|
||
ds 1
|
||
ds 1
|
||
W_CINNABARGYMCURSCRIPT:: ; d65e
|
||
ds 1
|
||
W_CELADONGAMECORNERCURSCRIPT:: ; d65f
|
||
ds 1
|
||
W_ROUTE16GATECURSCRIPT:: ; d660
|
||
ds 1
|
||
W_BILLSHOUSECURSCRIPT:: ; d661
|
||
ds 1
|
||
W_ROUTE5GATECURSCRIPT:: ; d662
|
||
ds 1
|
||
W_POWERPLANTCURSCRIPT:: ; d663
|
||
; overload
|
||
ds 0
|
||
W_ROUTE7GATECURSCRIPT:: ; d663
|
||
; overload
|
||
ds 1
|
||
ds 1
|
||
W_SSANNE2CURSCRIPT:: ; d665
|
||
ds 1
|
||
W_SEAFOAMISLANDS4CURSCRIPT:: ; d666
|
||
ds 1
|
||
W_ROUTE23CURSCRIPT:: ; d667
|
||
ds 1
|
||
W_SEAFOAMISLANDS5CURSCRIPT:: ; d668
|
||
ds 1
|
||
W_ROUTE18GATECURSCRIPT:: ; d669
|
||
ds 1
|
||
|
||
ds 134
|
||
|
||
wd6f0:: ds 14 ; flags for hidden items?
|
||
wd6fe:: ds 2 ; flags for hidden coins?
|
||
|
||
wWalkBikeSurfState:: ; d700
|
||
; $00 = walking
|
||
; $01 = biking
|
||
; $02 = surfing
|
||
ds 1
|
||
|
||
ds 10
|
||
|
||
W_TOWNVISITEDFLAG:: ; d70b
|
||
flag_array 13
|
||
|
||
wSafariSteps:: ; d70d
|
||
; starts at 502
|
||
ds 2
|
||
|
||
W_FOSSILITEM:: ; d70f
|
||
; item given to cinnabar lab
|
||
ds 1
|
||
|
||
W_FOSSILMON:: ; d710
|
||
; mon that will result from the item
|
||
ds 1
|
||
|
||
ds 2
|
||
|
||
W_ENEMYMONORTRAINERCLASS:: ; d713
|
||
; trainer classes start at $c8
|
||
ds 1
|
||
|
||
wPlayerJumpingYScreenCoordsIndex:: ; d714
|
||
ds 1
|
||
|
||
W_RIVALSTARTER:: ; d715
|
||
ds 1
|
||
|
||
ds 1
|
||
|
||
W_PLAYERSTARTER:: ; d717
|
||
ds 1
|
||
|
||
wBoulderSpriteIndex:: ; d718
|
||
; sprite index of the boulder the player is trying to push
|
||
ds 1
|
||
|
||
wLastBlackoutMap:: ; d719
|
||
ds 1
|
||
|
||
wDestinationMap:: ; d71a
|
||
; destination map (for certain types of special warps, not ordinary walking)
|
||
ds 1
|
||
|
||
wd71b:: ds 1 ; written to but doesn't seem to be read
|
||
|
||
wTileInFrontOfBoulderAndBoulderCollisionResult:: ; d71c
|
||
; used to store the tile in front of the boulder when trying to push a boulder
|
||
; also used to store the result of the collision check ($ff for a collision and $00 for no collision)
|
||
ds 1
|
||
|
||
wDungeonWarpDestinationMap:: ; d71d
|
||
; destination map for dungeon warps
|
||
ds 1
|
||
|
||
wWhichDungeonWarp:: ; d71e
|
||
; which dungeon warp within the source map was used
|
||
ds 1
|
||
|
||
wd71f:: ds 9 ; used with card key
|
||
|
||
wd728::
|
||
; bit 0: using Strength outside of battle
|
||
ds 1
|
||
|
||
ds 1
|
||
|
||
wd72a:: ds 2 ; flags for if a gym is beaten, also used to determine whether to display your name on the gym statues
|
||
|
||
wd72c:: ; d72c
|
||
; bit 0: if not set, the 3 minimum steps between random battles have passed
|
||
ds 1
|
||
|
||
wd72d:: ds 1 ; misc temp flags? (in some scripts, bit 6 and 7 set after a special battle (e.g. gym leaders) has been won)
|
||
; also used as a start menu flag
|
||
wd72e:: ds 2 ; more temp misc flags, used with npc movement, main menu and other stuff
|
||
|
||
wd730::
|
||
; bit 0: NPC sprite being moved by script
|
||
; bit 5: ignore joypad input
|
||
; bit 6: print text with no delay between each letter
|
||
; bit 7: set if joypad states are being simulated in the overworld
|
||
ds 1
|
||
|
||
ds 1
|
||
|
||
wd732:: ; d732
|
||
; bit 0: play time being counted
|
||
; bit 1: remnant of debug mode? not set by the game code.
|
||
; if it is set
|
||
; 1. skips most of Prof. Oak's speech, and uses NINTEN as the player's name and SONY as the rival's name
|
||
; 2. does not have the player start in floor two of the playyer's house (instead sending them to [wLastMap])
|
||
; 3. allows wild battles to be avoided by holding down B
|
||
; bit 2: the target warp is a fly warp (bit 3 set or blacked out) or a dungeon warp (bit 4 set)
|
||
; bit 3: used warp pad, escape rope, dig, teleport, or fly, so the target warp is a "fly warp"
|
||
; bit 4: jumped into hole (Pokemon Mansion, Seafoam Islands, Victory Road) or went down waterfall (Seafoam Islands), so the target warp is a "dungeon warp"
|
||
; bit 5: currently being forced to ride bike (cycling road)
|
||
; bit 6: map destination is [wLastBlackoutMap] (usually the last used pokemon center, but could be the player's house)
|
||
ds 1
|
||
|
||
W_FLAGS_D733:: ; d733
|
||
; 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)
|
||
; bit 7: used fly out of battle
|
||
ds 1
|
||
|
||
wd734:: ds 2 ; flag for indigo plateau and lorelei (not sure what it's for)
|
||
|
||
wd736:: ; d736
|
||
; bit 0: check if the player is standing on a door and make him walk down a step if so
|
||
; bit 1: the player is currently stepping down from a door
|
||
; bit 2: standing on a warp
|
||
; bit 6: jumping down a ledge
|
||
ds 1
|
||
|
||
wCompletedInGameTradeFlags:: ; d737
|
||
ds 2
|
||
|
||
ds 2
|
||
|
||
wd73b:: ds 1 ; used with elevator warps
|
||
wd73c:: ds 3 ; also used with elevator warps
|
||
|
||
wCardKeyDoorY:: ; d73f
|
||
ds 1
|
||
|
||
wCardKeyDoorX:: ; d740
|
||
ds 1
|
||
|
||
ds 2
|
||
|
||
wd743:: ds 1 ; used with surge gym trash cans
|
||
wd744:: ds 3 ; also used with surge gym trash cans
|
||
wd747:: ds 3 ; and we're getting to flags, which I'm not going to bother commenting
|
||
wd74a:: ds 1
|
||
|
||
wd74b:: ; d74b
|
||
; bit 0: Prof. Oak has lead the player to the north end of his lab
|
||
; bit 1: Prof. Oak has asked the player to choose a pokemon
|
||
; bit 2: the player and the rival have received their pokemon
|
||
; bit 3: the player has battled the rival in Oak's lab
|
||
; bit 4: Prof. Oak has given the player 5 pokeballs
|
||
; bit 5: received pokedex
|
||
ds 1
|
||
|
||
wd74c:: ds 2
|
||
wd74e:: ds 3
|
||
wd751:: ds 1
|
||
wd752:: ds 2
|
||
wd754:: ds 1
|
||
wd755:: ds 5
|
||
wd75a:: ds 1
|
||
wd75b:: ds 3
|
||
wd75e:: ds 1
|
||
wd75f:: ds 5
|
||
wd764:: ds 1
|
||
wd765:: ds 1
|
||
wd766:: ds 1
|
||
wd767:: ds 1
|
||
wd768:: ds 1
|
||
wd769:: ds 3
|
||
wd76c:: ds 5
|
||
wd771:: ds 2
|
||
wd773:: ds 4
|
||
wd777:: ds 1
|
||
wd778:: ds 4
|
||
wd77c:: ds 1
|
||
wd77d:: ds 1
|
||
wd77e:: ds 5
|
||
wd783:: ds 11
|
||
wd78e:: ds 2
|
||
wd790:: ds 2
|
||
wd792:: ds 4
|
||
wd796:: ds 2
|
||
wd798:: ds 2
|
||
wd79a:: ds 1
|
||
wd79b:: ds 1
|
||
wd79c:: ds 5
|
||
wd7a1:: ds 2
|
||
wd7a3:: ds 12
|
||
wd7af:: ds 2
|
||
wd7b1:: ds 2
|
||
wd7b3:: ds 1
|
||
wd7b4:: ds 5
|
||
wd7b9:: ds 4
|
||
wd7bd:: ds 2
|
||
wd7bf:: ds 3
|
||
wd7c2:: ds 1
|
||
wd7c3:: ds 2
|
||
wd7c5:: ds 1
|
||
wd7c6:: ds 3
|
||
wd7c9:: ds 4
|
||
wd7cd:: ds 2
|
||
wd7cf:: ds 2
|
||
wd7d1:: ds 1
|
||
wd7d2:: ds 1
|
||
wd7d3:: ds 2
|
||
wd7d5:: ds 1
|
||
wd7d6:: ds 1
|
||
wd7d7:: ds 1
|
||
wd7d8:: ds 1
|
||
wd7d9:: ds 2
|
||
wd7db:: ds 2
|
||
wd7dd:: ds 2
|
||
wd7df:: ds 1
|
||
wd7e0:: ds 1
|
||
wd7e1:: ds 2
|
||
wd7e3:: ds 2
|
||
wd7e5:: ds 2
|
||
wd7e7:: ds 1
|
||
wd7e8:: ds 1
|
||
wd7e9:: ds 2
|
||
wd7eb:: ds 2
|
||
wd7ed:: ds 1
|
||
wd7ee:: ds 1
|
||
wd7ef:: ds 1
|
||
wd7f0:: ds 1
|
||
wd7f1:: ds 1
|
||
wd7f2:: ds 1
|
||
wd7f3:: ds 2
|
||
wd7f5:: ds 1
|
||
wd7f6:: ds 9
|
||
wd7ff:: ds 4
|
||
wd803:: ds 2
|
||
wd805:: ds 2
|
||
wd807:: ds 2
|
||
wd809:: ds 10
|
||
wd813:: ds 2
|
||
wd815:: ds 1
|
||
wd816:: ds 1
|
||
wd817:: ds 2
|
||
wd819:: ds 2
|
||
wd81b:: ds 10
|
||
wd825:: ds 1
|
||
wd826:: ds 1
|
||
wd827:: ds 1
|
||
wd828:: ds 1
|
||
wd829:: ds 1
|
||
wd82a:: ds 1
|
||
wd82b:: ds 1
|
||
wd82c:: ds 1
|
||
wd82d:: ds 1
|
||
wd82e:: ds 1
|
||
wd82f:: ds 1
|
||
wd830:: ds 1
|
||
wd831:: ds 1
|
||
wd832:: ds 1
|
||
wd833:: ds 1
|
||
wd834:: ds 1
|
||
wd835:: ds 1
|
||
wd836:: ds 1
|
||
wd837:: ds 1
|
||
wd838:: ds 15
|
||
wd847:: ds 2
|
||
wd849:: ds 2
|
||
wd84b:: ds 12
|
||
wd857:: ds 8
|
||
wd85f:: ds 4
|
||
wd863:: ds 1
|
||
wd864:: ds 1
|
||
wd865:: ds 1
|
||
wd866:: ds 1
|
||
wd867:: ds 2
|
||
wd869:: ds 20
|
||
wd87d:: ds 2
|
||
wd87f:: ds 1
|
||
wd880:: ds 1
|
||
wd881:: ds 1
|
||
wd882:: ds 5
|
||
|
||
wLinkEnemyTrainerName:: ; d887
|
||
; linked game's trainer name
|
||
|
||
W_GRASSRATE:: ; d887
|
||
ds 1
|
||
|
||
W_GRASSMONS:: ; d888
|
||
ds 20
|
||
|
||
wEnemyPartyCount:: ds 1 ; d89c
|
||
wEnemyPartyMons:: ds PARTY_LENGTH + 1 ; d89d
|
||
|
||
wEnemyMons:: ; d8a4
|
||
wEnemyMon1:: party_struct wEnemyMon1
|
||
wEnemyMon2:: party_struct wEnemyMon2
|
||
wEnemyMon3:: party_struct wEnemyMon3
|
||
wEnemyMon4:: party_struct wEnemyMon4
|
||
wEnemyMon5:: party_struct wEnemyMon5
|
||
wEnemyMon6:: party_struct wEnemyMon6
|
||
|
||
wEnemyMonOT:: ds 11 * PARTY_LENGTH ; d9ac
|
||
wEnemyMonNicks:: ds 11 * PARTY_LENGTH ; d9ee
|
||
|
||
|
||
W_TRAINERHEADERPTR:: ; da30
|
||
ds 2
|
||
|
||
ds 6
|
||
|
||
wda38:: ds 1 ; used with cinnabar gym questions and pokemon tower 7F?
|
||
|
||
W_CURMAPSCRIPT:: ; da39
|
||
; 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
|
||
ds 1
|
||
|
||
ds 6
|
||
|
||
W_PLAYTIMEHOURS:: ; da40
|
||
ds 2
|
||
W_PLAYTIMEMINUTES:: ; da42
|
||
ds 2
|
||
W_PLAYTIMESECONDS:: ; da44
|
||
ds 1
|
||
W_PLAYTIMEFRAMES:: ; da45
|
||
ds 1
|
||
|
||
wSafariZoneGameOver:: ; da46
|
||
ds 1
|
||
|
||
W_NUMSAFARIBALLS:: ; da47
|
||
ds 1
|
||
|
||
|
||
W_DAYCARE_IN_USE:: ; da48
|
||
; 0 if no pokemon is in the daycare
|
||
; 1 if pokemon is in the daycare
|
||
ds 1
|
||
|
||
W_DAYCAREMONNAME:: ds 11 ; da49
|
||
W_DAYCAREMONOT:: ds 11 ; da54
|
||
|
||
wDayCareMon:: box_struct wDayCareMon ; da5f
|
||
|
||
|
||
W_NUMINBOX:: ds 1 ; da80
|
||
wBoxSpecies:: ds MONS_PER_BOX + 1
|
||
|
||
wBoxMons::
|
||
wBoxMon1:: box_struct wBoxMon1 ; da96
|
||
wBoxMon2:: ds box_struct_length * (MONS_PER_BOX + -1) ; dab7
|
||
|
||
wBoxMonOT:: ds 11 * MONS_PER_BOX ; dd2a
|
||
wBoxMonNicks:: ds 11 * MONS_PER_BOX ; de06
|
||
wBoxMonNicksEnd:: ; dee2
|
||
|
||
|
||
SECTION "Stack", WRAMX[$dfff], BANK[1]
|
||
wStack:: ; dfff
|
||
ds -$100
|
||
|
||
|
||
SECTION "Sprite Buffers", SRAM, BANK[0]
|
||
|
||
S_SPRITEBUFFER0:: ds SPRITEBUFFERSIZE ; a000
|
||
S_SPRITEBUFFER1:: ds SPRITEBUFFERSIZE ; a188
|
||
S_SPRITEBUFFER2:: ds SPRITEBUFFERSIZE ; a310
|
||
|
||
ds $100
|
||
|
||
sHallOfFame:: ds HOF_TEAM * NUM_HOF_TEAMS ; a598
|