aboutsummaryrefslogtreecommitdiffstats
path: root/wram.asm
diff options
context:
space:
mode:
authorRangi <remy.oukaour+rangi42@gmail.com>2022-06-17 22:54:49 -0400
committerRangi <remy.oukaour+rangi42@gmail.com>2022-06-17 22:54:49 -0400
commit61b7f6c61647d4a60145049579fff101c0c44cd9 (patch)
tree615397cfc448e31a1a1785e09d68b4a586e19735 /wram.asm
parentRename `SLP` to `SLP_MASK` (#89) (diff)
downloadpokeyellow-61b7f6c61647d4a60145049579fff101c0c44cd9.tar.gz
pokeyellow-61b7f6c61647d4a60145049579fff101c0c44cd9.tar.xz
pokeyellow-61b7f6c61647d4a60145049579fff101c0c44cd9.zip
Add a subdirectory for RAM files
Diffstat (limited to 'wram.asm')
-rw-r--r--wram.asm2614
1 files changed, 0 insertions, 2614 deletions
diff --git a/wram.asm b/wram.asm
deleted file mode 100644
index 6e0deaed..00000000
--- a/wram.asm
+++ /dev/null
@@ -1,2614 +0,0 @@
-INCLUDE "constants.asm"
-
-INCLUDE "macros/wram.asm"
-
-
-INCLUDE "vram.asm"
-
-
-SECTION "Audio RAM", WRAM0
-
-wUnusedC000:: db
-
-wSoundID:: db
-
-; bit 7: whether sound has been muted
-; all bits: whether the effective is active
-; Store 1 to activate effect (any value in the range [1, 127] works).
-; All audio is muted and music is paused. Sfx continues playing until it
-; ends normally.
-; Store 0 to resume music.
-wMuteAudioAndPauseMusic:: db
-
-wDisableChannelOutputWhenSfxEnds:: db
-
-wStereoPanning:: db
-
-wSavedVolume:: db
-
-wChannelCommandPointers:: ds NUM_CHANNELS * 2
-wChannelReturnAddresses:: ds NUM_CHANNELS * 2
-
-wChannelSoundIDs:: ds NUM_CHANNELS
-
-wChannelFlags1:: ds NUM_CHANNELS
-wChannelFlags2:: ds NUM_CHANNELS
-
-wChannelDutyCycles:: ds NUM_CHANNELS
-wChannelDutyCyclePatterns:: ds NUM_CHANNELS
-
-; reloaded at the beginning of a note. counts down until the vibrato begins.
-wChannelVibratoDelayCounters:: ds NUM_CHANNELS
-wChannelVibratoExtents:: ds NUM_CHANNELS
-; high nybble is rate (counter reload value) and low nybble is counter.
-; time between applications of vibrato.
-wChannelVibratoRates:: ds NUM_CHANNELS
-wChannelFrequencyLowBytes:: ds NUM_CHANNELS
-; delay of the beginning of the vibrato from the start of the note
-wChannelVibratoDelayCounterReloadValues:: ds NUM_CHANNELS
-
-wChannelPitchSlideLengthModifiers:: ds NUM_CHANNELS
-wChannelPitchSlideFrequencySteps:: ds NUM_CHANNELS
-wChannelPitchSlideFrequencyStepsFractionalPart:: ds NUM_CHANNELS
-wChannelPitchSlideCurrentFrequencyFractionalPart:: ds NUM_CHANNELS
-wChannelPitchSlideCurrentFrequencyHighBytes:: ds NUM_CHANNELS
-wChannelPitchSlideCurrentFrequencyLowBytes:: ds NUM_CHANNELS
-wChannelPitchSlideTargetFrequencyHighBytes:: ds NUM_CHANNELS
-wChannelPitchSlideTargetFrequencyLowBytes:: ds NUM_CHANNELS
-
-; Note delays are stored as 16-bit fixed-point numbers where the integer part
-; is 8 bits and the fractional part is 8 bits.
-wChannelNoteDelayCounters:: ds NUM_CHANNELS
-wChannelLoopCounters:: ds NUM_CHANNELS
-wChannelNoteSpeeds:: ds NUM_CHANNELS
-wChannelNoteDelayCountersFractionalPart:: ds NUM_CHANNELS
-
-wChannelOctaves:: ds NUM_CHANNELS
-; also includes fade for hardware channels that support it
-wChannelVolumes:: ds NUM_CHANNELS
-
-wMusicWaveInstrument:: db
-wSfxWaveInstrument:: db
-wMusicTempo:: dw
-wSfxTempo:: dw
-wSfxHeaderPointer:: dw
-
-wNewSoundID:: db
-
-wAudioROMBank:: db
-wAudioSavedROMBank:: db
-
-wFrequencyModifier:: db
-wTempoModifier:: db
-
-wc0f3:: dw
-
- ds 11
-
-
-SECTION "Sprite State Data", WRAM0
-
-wSpriteDataStart::
-
-; data for all sprites on the current map
-; holds info for 16 sprites with $10 bytes each
-wSpriteStateData1::
-; struct fields:
-; - 0: picture ID (fixed, loaded at map init)
-; - 1: movement status (0: uninitialized, 1: ready, 2: delayed, 3: moving)
-; - 2: sprite image index (changed on update, $ff if off screen, includes facing direction, progress in walking animation and a sprite-specific offset)
-; - 3: Y screen position delta (-1,0 or 1; added to Y pixels on each walking animation update)
-; - 4: Y screen position (in pixels, always 4 pixels above grid which makes sprites appear to be in the center of a tile)
-; - 5: X screen position delta (-1,0 or 1; added to field X pixels on each walking animation update)
-; - 6: X screen position (in pixels, snaps to grid if not currently walking)
-; - 7: intra-animation-frame counter (counting upwards to 4 until animation frame counter is incremented)
-; - 8: animation frame counter (increased every 4 updates, hold four states (totalling to 16 walking frames)
-; - 9: facing direction ($0: down, $4: up, $8: left, $c: right)
-; - A: adjusted Y coordinate
-; - B: adjusted X coordinate
-; - C: direction of collision
-; - D
-; - E
-; - F
-wSpritePlayerStateData1:: spritestatedata1 wSpritePlayerStateData1 ; player is struct 0
-; wSprite02StateData1 - wSprite15StateData1
-FOR n, 1, NUM_SPRITESTATEDATA_STRUCTS - 1
-wSprite{02d:n}StateData1:: spritestatedata1 wSprite{02d:n}StateData1
-ENDR
-wSpritePikachuStateData1:: spritestatedata1 wSpritePikachuStateData1 ; pikachu is struct 15
-
-; more data for all sprites on the current map
-; holds info for 16 sprites with $10 bytes each
-wSpriteStateData2::
-; struct fields:
-; - 0: walk animation counter (counting from $10 backwards when moving)
-; - 1:
-; - 2: Y displacement (initialized at 8, supposed to keep moving sprites from moving too far, but bugged)
-; - 3: X displacement (initialized at 8, supposed to keep moving sprites from moving too far, but bugged)
-; - 4: Y position (in 2x2 tile grid steps, topmost 2x2 tile has value 4)
-; - 5: X position (in 2x2 tile grid steps, leftmost 2x2 tile has value 4)
-; - 6: movement byte 1 (determines whether a sprite can move, $ff:not moving, $fe:random movements, others unknown)
-; - 7: (?) (set to $80 when in grass, else $0; may be used to draw grass above the sprite)
-; - 8: delay until next movement (counted downwards, movement status is set to ready if reached 0)
-; - 9: original facing direction (backed up by DisplayTextIDInit, restored by CloseTextDisplay)
-; - A
-; - B
-; - C
-; - D: picture ID
-; - E: sprite image base offset (in video ram, player always has value 1, used to compute sprite image index)
-; - F
-wSpritePlayerStateData2:: spritestatedata2 wSpritePlayerStateData2 ; player is struct 0
-; wSprite02StateData2 - wSprite15StateData2
-FOR n, 1, NUM_SPRITESTATEDATA_STRUCTS - 1
-wSprite{02d:n}StateData2:: spritestatedata2 wSprite{02d:n}StateData2
-ENDR
-wSpritePikachuStateData2:: spritestatedata2 wSpritePikachuStateData2 ; pikachu is struct 15
-
-; The high byte of a pointer to anywhere within wSpriteStateData1 can be incremented
-; to reach within wSpriteStateData2, and vice-versa for decrementing.
-ASSERT HIGH(wSpriteStateData1) + 1 == HIGH(wSpriteStateData2)
-ASSERT LOW(wSpriteStateData1) == 0 && LOW(wSpriteStateData2) == 0
-
-wSpriteDataEnd::
-
-
-SECTION "OAM Buffer", WRAM0
-
-; buffer for OAM data. Copied to OAM by DMA
-wOAMBuffer::
-; wOAMBufferSprite00 - wOAMBufferSprite39
-FOR n, NUM_SPRITE_OAM_STRUCTS
-wOAMBufferSprite{02d:n}:: sprite_oam_struct wOAMBufferSprite{02d:n}
-ENDR
-wOAMBufferEnd::
-
-
-SECTION "Tilemap", WRAM0
-
-; buffer for tiles that are visible on screen (20 columns by 18 rows)
-wTileMap:: ds SCREEN_WIDTH * SCREEN_HEIGHT
-
-UNION
-; buffer for temporarily saving and restoring current screen's tiles
-; (e.g. if menus are drawn on top)
-wTileMapBackup:: ds SCREEN_WIDTH * SCREEN_HEIGHT
-
-NEXTU
-; list of indexes to patch with SERIAL_NO_DATA_BYTE after transfer
-wSerialPartyMonsPatchList:: ds 200
-
-; list of indexes to patch with SERIAL_NO_DATA_BYTE after transfer
-wSerialEnemyMonsPatchList:: ds 200
-
-NEXTU
-; this looks similar to the address structure for Gen 2 OAM animations.
-wAnimatedObjectsData::
-
-wAnimatedObjectStartTileOffsets:: ds 10 * 2
-
-wAnimatedObjectDataStructs::
-; wAnimatedObject0 - wAnimatedObject9
-FOR n, 10
-wAnimatedObject{d:n}:: animated_object wAnimatedObject{d:n}
-ENDR
-
-wNumLoadedAnimatedObjects:: db
-wCurrentAnimatedObjectOAMBufferOffset::
- ds 3
-wAnimatedObjectSpawnStateDataPointer:: dw
-wAnimatedObjectFramesDataPointer:: dw
-wAnimatedObjectJumptablePointer:: dw
-wAnimatedObjectOAMDataPointer:: dw
-
-wCurAnimatedObjectOAMAttributes:: db
-wCurrentAnimatedObjectVTileOffset:: db
-wCurrentAnimatedObjectXCoord:: db
-wCurrentAnimatedObjectYCoord:: db
-wCurrentAnimatedObjectXOffset:: db
-wCurrentAnimatedObjectYOffset:: db
-wAnimatedObjectGlobalYOffset:: db
-wAnimatedObjectGlobalXOffset:: db
-
-wAnimatedObjectsDataEnd::
-
-; Surfing minigame
-wSurfingMinigameData:: db
-wSurfingMinigameRoutineNumber:: db
-wc5d2:: db
-wSurfingMinigameWaveFunctionNumber:: dw
-wc5d5:: db
-wSurfingMinigamePikachuHP:: dw ; little-endian BCD
-wc5d8:: db ; unused?
-; number of consecutive tricks
-wSurfingMinigameRadnessMeter:: db
-wSurfingMinigameRadnessScore:: dw ; little-endian BCD
-wSurfingMinigameTotalScore:: dw ; little-endian BCD
-wc5de:: db
-wc5df:: db
-wc5e0:: db
-wc5e1:: db
-wc5e2:: db
-wSurfingMinigamePikachuSpeed:: dw ; little-endian
-wc5e5:: ds 3 ; big-endian
-wSurfingMinigameWaveHeightBuffer:: dw
-wSurfingMinigamePikachuObjectHeight:: db
-wc5eb:: db
-wc5ec:: db
-wc5ed:: db
-wc5ee:: db
-wSurfingMinigameBGMapReadBuffer:: ds 1 tiles
- ds 24
-wSurfingMinigameSCX:: db
-wSurfingMinigameSCX2:: db
-wSurfingMinigameSCXHi:: db
-wSurfingMinigameWaveHeight:: ds SCREEN_WIDTH
-wSurfingMinigameXOffset:: db
-wSurfingMinigameTrickFlags:: db
-wc630:: db
-wc631:: db
-wSurfingMinigameRoutineDelay:: db
-wSurfingMinigameIntroAnimationFinished:: db
-
-; Yellow intro
-wYellowIntroCurrentScene::
-wc634:: db
-wYellowIntroSceneTimer::
-wc635:: db
-wYellowIntroAnimatedObjectStructPointer:: db
-wSurfingMinigameDataEnd::
-ENDU
-
- ds 80
-
-
-SECTION "Overworld Map", WRAM0
-
-UNION
-wOverworldMap:: ds 1300
-wOverworldMapEnd::
-
-NEXTU
-wTempPic:: ds 7 * 7 tiles
-
-NEXTU
-wPrinterData::
-wPrinterSendState:: db
-wPrinterRowIndex:: db
-
-; Printer data header
-wPrinterDataHeader::
-wc6ea:: db
-wc6eb:: db
-wc6ec:: db
-wc6ed:: db
-wPrinterChecksum:: dw
-
-UNION
-wPrinterSerialReceived:: db
-; bit 7: set if error 1 (battery low)
-; bit 6: set if error 4 (too hot or cold)
-; bit 5: set if error 3 (paper jammed or empty)
-; if this and the previous byte are both $ff: error 2 (connection error)
-wPrinterStatusReceived:: db
-
-wc6f2:: db
-wc6f3:: db
- ds 12
-wLYOverrides:: ds $100
-wLYOverridesEnd::
-wLYOverridesBuffer:: ds $100
-wLYOverridesBufferEnd::
-
-NEXTU
-wPrinterSendDataSource1:: ds 20 tiles
-wPrinterSendDataSource2:: ds 20 tiles
-ENDU
-
-wPrinterSendDataSource1End::
-
-wPrinterHandshake:: db
-wPrinterStatusFlags:: db
-wHandshakeFrameDelay:: db
-wPrinterSerialFrameDelay:: db
-wPrinterSendByteOffset:: dw
-wPrinterDataSize:: dw
-wPrinterTileBuffer:: ds SCREEN_HEIGHT * SCREEN_WIDTH
-wPrinterStatusIndicator:: dw
-wcae2:: db
-wPrinterSettingsTempCopy:: db
- ds 16
-wPrinterQueueLength:: db
-wPrinterDataEnd::
-
-wPrinterPokedexEntryTextPointer:: dw
- ds 2
-wPrinterPokedexMonIsOwned:: db
- ds 226
-UNION
-wcbdc:: ds 1 tiles
-NEXTU
- ds 14
-wcbea:: dw
-ENDU
-wcbec:: ds 1 tiles
-ENDU
-
-
-SECTION "WRAM", WRAM0
-
-; the tiles of the row or column to be redrawn by RedrawRowOrColumn
-wRedrawRowOrColumnSrcTiles:: ds SCREEN_WIDTH * 2
-
-; coordinates of the position of the cursor for the top menu item (id 0)
-wTopMenuItemY:: db
-wTopMenuItemX:: db
-
-; 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
-wCurrentMenuItem:: db
-
-; the tile that was behind the menu cursor's current location
-wTileBehindCursor:: db
-
-; id of the bottom menu item
-wMaxMenuItem:: db
-
-; bit mask of keys that the menu will respond to
-wMenuWatchedKeys:: db
-
-; id of previously selected menu item
-wLastMenuItem:: db
-
-; It is mainly used by the party menu to remember the cursor position while the
-; menu isn't active.
-; It is also used to remember the cursor position of mon lists (for the
-; withdraw/deposit/release actions) in Bill's PC so that it doesn't get lost
-; when you choose a mon from the list and a sub-menu is shown. It's reset when
-; you return to the main Bill's PC menu.
-wPartyAndBillsPCSavedMenuItem:: db
-
-; It is used by the bag list to remember the cursor position while the menu
-; isn't active.
-wBagSavedMenuItem:: db
-
-; It is used by the start menu to remember the cursor position while the menu
-; isn't active.
-; The battle menu uses it so that the cursor position doesn't get lost when
-; a sub-menu is shown. It's reset at the start of each battle.
-wBattleAndStartSavedMenuItem:: db
-
-wPlayerMoveListIndex:: db
-
-; index in party of currently battling mon
-wPlayerMonNumber:: db
-
-; the address of the menu cursor's current location within wTileMap
-wMenuCursorLocation:: dw
-
- ds 2
-
-; how many times should HandleMenuInput poll the joypad state before it returns?
-wMenuJoypadPollCount:: db
-
-; id of menu item selected for swapping (counts from 1) (0 means that no menu item has been selected for swapping)
-wMenuItemToSwap:: db
-
-; offset of the current top menu item from the beginning of the list
-; keeps track of what section of the list is on screen
-wListScrollOffset:: db
-
-; If non-zero, then when wrapping is disabled and the player tries to go past
-; the top or bottom of the menu, return from HandleMenuInput. This is useful for
-; menus that have too many items to display at once on the screen because it
-; allows the caller to scroll the entire menu up or down when this happens.
-wMenuWatchMovingOutOfBounds:: db
-
-wTradeCenterPointerTableIndex:: db
-
- ds 1
-
-; destination pointer for text output
-; this variable is written to, but is never read from
-wTextDest:: dw
-
-; if non-zero, skip waiting for a button press after displaying text in DisplayTextID
-wDoNotWaitForButtonPressAfterDisplayingText:: db
-
-UNION
-; the received menu selection is stored twice
-wLinkMenuSelectionReceiveBuffer:: dw
- ds 3
-; the menu selection byte is stored twice before sending
-wLinkMenuSelectionSendBuffer:: dw
- ds 3
-wEnteringCableClub::
-wLinkTimeoutCounter:: db
-
-NEXTU
-; temporary nybble used by Serial_ExchangeNybble
-wSerialExchangeNybbleTempReceiveData::
-; the final received nybble is stored here by Serial_SyncAndExchangeNybble
-wSerialSyncAndExchangeNybbleReceiveData:: db
-; the final received nybble is stored here by Serial_ExchangeNybble
-wSerialExchangeNybbleReceiveData:: db
- ds 3
-; this nybble is sent when using Serial_SyncAndExchangeNybble or Serial_ExchangeNybble
-wSerialExchangeNybbleSendData:: db
- ds 4
-wUnknownSerialCounter:: dw
-ENDU
-
-; $00 = player mons
-; $01 = enemy mons
-wWhichTradeMonSelectionMenu::
-; 0 = player's party
-; 1 = enemy party
-; 2 = current box
-; 3 = daycare
-; 4 = in-battle mon
-;
-; AddPartyMon uses it slightly differently.
-; If the lower nybble is 0, the mon is added to the player's party, else the enemy's.
-; If the entire value is 0, then the player is allowed to name the mon.
-wMonDataLocation:: db
-
-; 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
-wMenuWrappingEnabled:: db
-
-; whether to check for 180-degree turn (0 = don't, 1 = do)
-wCheckFor180DegreeTurn:: db
-
- ds 1
-
-wMissableObjectIndex:: db
-
-wPredefID:: db
-wPredefHL:: dw
-wPredefDE:: dw
-wPredefBC:: dw
-
-wTrainerHeaderFlagBit:: db
-
- ds 1
-
-; which NPC movement script pointer is being used
-; 0 if an NPC movement script is not running
-wNPCMovementScriptPointerTableNum:: db
-
-; ROM bank of current NPC movement script
-wNPCMovementScriptBank:: db
-
- ds 2
-
-; This union spans 180 bytes.
-UNION
-wVermilionDockTileMapBuffer:: ds 5 * BG_MAP_WIDTH + SCREEN_WIDTH
-wVermilionDockTileMapBufferEnd::
-
-NEXTU
-wOaksAideRewardItemName:: ds ITEM_NAME_LENGTH
-
-NEXTU
-wElevatorWarpMaps:: ds 11 * 2
-
-NEXTU
-; List of bag items that has been filtered to a certain type of items,
-; such as drinks or fossils.
-wFilteredBagItems:: ds 4
-
-NEXTU
-; Saved copy of OAM for the first frame of the animation to make it easy to
-; flip back from the second frame.
-wMonPartySpritesSavedOAM:: ds $60
-
-NEXTU
-wTrainerCardBlkPacket:: ds $40
-
-NEXTU
-wHallOfFame:: ds HOF_TEAM
-
-NEXTU
-wNPCMovementDirections:: ds 180
-
-NEXTU
-wDexRatingNumMonsSeen:: db
-wDexRatingNumMonsOwned:: db
-wDexRatingText:: db
-
-NEXTU
-; If a random number greater than this value is generated, then the player is
-; allowed to have three 7 symbols or bar symbols line up.
-; So, this value is actually the chance of NOT entering that mode.
-; If the slot is lucky, it equals 250, giving a 5/256 (~2%) chance.
-; Otherwise, it equals 253, giving a 2/256 (~0.8%) chance.
-wSlotMachineSevenAndBarModeChance:: db
- ds 2
-; ROM back to return to when the player is done with the slot machine
-wSlotMachineSavedROMBank:: db
- ds 166
-wLuckySlotHiddenObjectIndex:: db
-
-NEXTU
-; values between 0-6. Shake screen horizontally, shake screen vertically, blink Pokemon...
-wAnimationType:: db
- ds 29
-wAnimPalette:: db
-
-NEXTU
- ds 60
-; temporary buffer when swapping party mon data
-wSwitchPartyMonTempBuffer:: ds 44 ; party_struct size
-
-NEXTU
- ds 120
-; 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
-wSimulatedJoypadStatesEnd::
-
-NEXTU
-wBoostExpByExpAll::
-wUnusedCC5B:: db
-
- ds 59
-
-wNPCMovementDirections2:: ds 10
-; used in Pallet Town scripted movement
-wNumStepsToTake:: db
-
- ds 48
-
-wRLEByteCount:: db
-
-wParentMenuItem::
-; 0 = not added
-; 1 = added
-wAddedToParty::
-; 1 flag for each party member indicating whether it can evolve
-; The purpose of these flags is to track which mons levelled up during the
-; current battle at the end of the battle when evolution occurs.
-; Other methods of evolution simply set it by calling TryEvolvingMon.
-wCanEvolveFlags:: db
-
-wForceEvolution:: db
-
-; if [wAILayer2Encouragement] != 1, the second AI layer is not applied
-wAILayer2Encouragement:: db
-
- ds 1
-
-; current HP of player and enemy substitutes
-wPlayerSubstituteHP:: db
-wEnemySubstituteHP:: db
-
-; The player's selected move during a test battle.
-; InitBattleVariables sets it to the move Pound.
-wTestBattlePlayerSelectedMove:: db
-
- ds 1
-
-; 0=regular, 1=mimic, 2=above message box (relearn, heal pp..)
-wMoveMenuType:: db
-
-wPlayerSelectedMove:: db
-wEnemySelectedMove:: db
-
-wLinkBattleRandomNumberListIndex:: db
-
-; number of times remaining that AI action can occur
-wAICount:: db
-
- ds 2
-
-wEnemyMoveListIndex:: db
-
-; The enemy mon's HP when it was switched in or when the current player mon
-; was switched in, which was more recent.
-; It's used to determine the message to print when switching out the player mon.
-wLastSwitchInEnemyMonHP:: dw
-
-; total amount of money made using Pay Day during the current battle
-wTotalPayDayMoney:: ds 3
-
-wSafariEscapeFactor:: db
-wSafariBaitFactor:: db
-
- ds 1
-
-wTransformedEnemyMonOriginalDVs:: dw
-
-wMonIsDisobedient:: db
-
-wPlayerDisabledMoveNumber:: db
-wEnemyDisabledMoveNumber:: db
-
-; When running in the scope of HandlePlayerMonFainted, it equals 1.
-; When running in the scope of HandleEnemyMonFainted, it equals 0.
-wInHandlePlayerMonFainted:: db
-
-wPlayerUsedMove:: db
-wEnemyUsedMove:: db
-
-wEnemyMonMinimized:: db
-
-wMoveDidntMiss:: db
-
-; flags that indicate which party members have fought the current enemy mon
-wPartyFoughtCurrentEnemyFlags:: flag_array PARTY_LENGTH
-
-; Whether the low health alarm has been disabled due to the player winning the
-; battle.
-wLowHealthAlarmDisabled:: db
-
-wPlayerMonMinimized:: db
-
- ds 13
-
-; number of hits by enemy in attacks like Double Slap, etc.
-wEnemyNumHits:: ; db
-; the amount of damage accumulated by the enemy while biding
-wEnemyBideAccumulatedDamage:: dw
-
- ds 8
-
-NEXTU
- ds 2
-wTrainerCardBadgeAttributes:: ds 6 * 9 + 1
-
-NEXTU
-wPikaPicUsedGFXCount:: db
-
-wPikaPicUsedGFX:: ds 8 * 2
-wPikaPicUsedGFXEnd::
-
- ds 43
-
-wPikaPicAnimObjectDataBufferSize:: db
-
-wPikaPicAnimObjectDataBuffer::
-; 4 structs each of length 8
-; 0: buffer index
-; 1: script index
-; 2: frame index
-; 3: frame timer
-; 4: vtile offset
-; 5: x offset
-; 6: y offset
-; 7: unused
- ds 4 * 8
-wPikaPicAnimObjectDataBufferEnd::
-ENDU
-
-; This union spans 39 bytes.
-UNION
-wInGameTradeGiveMonSpecies:: db
-wInGameTradeTextPointerTablePointer:: dw
-wInGameTradeTextPointerTableIndex:: db
-wInGameTradeGiveMonName:: ds NAME_LENGTH
-wInGameTradeReceiveMonName:: ds NAME_LENGTH
-wInGameTradeMonNick:: ds NAME_LENGTH
-wInGameTradeReceiveMonSpecies:: db
-
-NEXTU
-wPlayerMonUnmodifiedLevel:: db
-wPlayerMonUnmodifiedMaxHP:: dw
-wPlayerMonUnmodifiedAttack:: dw
-wPlayerMonUnmodifiedDefense:: dw
-wPlayerMonUnmodifiedSpeed:: dw
-wPlayerMonUnmodifiedSpecial:: dw
-
-; stat modifiers for the player's current pokemon
-; value can range from 1 - 13 ($1 to $D)
-; 7 is normal
-wPlayerMonStatMods::
-wPlayerMonAttackMod:: db
-wPlayerMonDefenseMod:: db
-wPlayerMonSpeedMod:: db
-wPlayerMonSpecialMod:: db
-wPlayerMonAccuracyMod:: db
-wPlayerMonEvasionMod:: db
- ds 2
-wPlayerMonStatModsEnd::
-
- ds 1
-
-wEnemyMonUnmodifiedLevel:: db
-wEnemyMonUnmodifiedMaxHP:: dw
-wEnemyMonUnmodifiedAttack:: dw
-wEnemyMonUnmodifiedDefense:: dw
-wEnemyMonUnmodifiedSpeed:: dw
-wEnemyMonUnmodifiedSpecial:: dw
-
-; stat modifiers for the enemy's current pokemon
-; value can range from 1 - 13 ($1 to $D)
-; 7 is normal
-wEnemyMonStatMods::
-wEnemyMonAttackMod:: db
-wEnemyMonDefenseMod:: db
-wEnemyMonSpeedMod:: db
-wEnemyMonSpecialMod:: db
-wEnemyMonAccuracyMod:: db
-wEnemyMonEvasionMod:: db
- ds 2
-wEnemyMonStatModsEnd::
-
-NEXTU
- ds 30
-wEngagedTrainerClass:: db
-wEngagedTrainerSet:: db
-ENDU
-
- ds 1
-
-wNPCMovementDirections2Index::
-wUnusedCD37::
-; number of items in wFilteredBagItems list
-wFilteredBagItemsCount:: db
-
-; the next simulated joypad state is at wSimulatedJoypadStatesEnd plus this value minus 1
-; 0 if the joypad state is not being simulated
-wSimulatedJoypadStatesIndex:: db
-
-; written to but nothing ever reads it
-wWastedByteCD39:: db
-
-; written to but nothing ever reads it
-wWastedByteCD3A:: db
-
-; mask indicating which real button presses can override simulated ones
-; XXX is it ever not 0?
-wOverrideSimulatedJoypadStatesMask:: db
-
- ds 1
-
-; This union spans 30 bytes.
-UNION
-wTradedPlayerMonSpecies:: db
-wTradedEnemyMonSpecies:: db
- ds 2
-wTradedPlayerMonOT:: ds NAME_LENGTH
-wTradedPlayerMonOTID:: dw
-wTradedEnemyMonOT:: ds NAME_LENGTH
-wTradedEnemyMonOTID:: dw
-
-NEXTU
-wTradingWhichPlayerMon:: db
-wTradingWhichEnemyMon:: db
-wNameOfPlayerMonToBeTraded:: ds NAME_LENGTH
-
-NEXTU
-; one byte for each falling object
-wFallingObjectsMovementData:: ds 20
-
-NEXTU
-; array of the number of mons in each box
-wBoxMonCounts:: ds NUM_BOXES
-
-NEXTU
-wPriceTemp:: ds 3 ; BCD
-
-NEXTU
-; the current mon's field moves
-wFieldMoves:: ds NUM_MOVES
-wNumFieldMoves:: db
-wFieldMovesLeftmostXCoord:: db
-wLastFieldMoveID:: db ; unused
-
-NEXTU
-wBoxNumString:: ds 3
-
-NEXTU
-; 0 = upper half (Y < 9)
-; 1 = lower half (Y >= 9)
-wBattleTransitionCircleScreenQuadrantY:: db
-wBattleTransitionCircleScreenQuadrantX:: db
-
-NEXTU
-; after 1 row/column has been copied, the offset to the next one to copy from
-wBattleTransitionCopyTilesOffset:: dw
-
-NEXTU
-; counts down from 7 so that every time 7 more tiles of the spiral have been
-; placed, the tile map buffer is copied to VRAM so that progress is visible
-wInwardSpiralUpdateScreenCounter:: db
- ds 9
-; 0 = outward, 1 = inward
-wBattleTransitionSpiralDirection:: db
-
-NEXTU
-; multiplied by 16 to get the number of times to go right by 2 pixels
-wSSAnneSmokeDriftAmount:: db
-; 0 = left half (X < 10)
-; 1 = right half (X >= 10)
-wSSAnneSmokeX:: db
-
-NEXTU
-wHoFMonSpecies::
-wHoFTeamIndex:: db
-wHoFPartyMonIndex:: db
-wHoFMonLevel:: db
-; 0 = mon, 1 = player
-wHoFMonOrPlayer:: db
-wHoFTeamIndex2:: db
-wHoFTeamNo:: db
-
-NEXTU
-wRivalStarterTemp:: db
-wRivalStarterBallSpriteIndex:: db
-
-NEXTU
-wFlyAnimUsingCoordList:: db
-; $ff sentinel values at each end
-wFlyLocationsList:: ds NUM_CITY_MAPS + 2
-
-NEXTU
-wWhichTownMapLocation:: db
-wFlyAnimCounter:: db
-wFlyAnimBirdSpriteImageIndex:: db
-
-NEXTU
- ds 1
-; difference in X between the next ball and the current one
-wHUDPokeballGfxOffsetX:: db
-wHUDGraphicsTiles:: ds 3
-
-NEXTU
-; the level of the mon at the time it entered day care
-wDayCareStartLevel:: db
-wDayCareNumLevelsGrown:: db
-wDayCareTotalCost:: dw ; BCD
-wDayCarePerLevelCost:: dw ; BCD (always $100)
-
-NEXTU
-; which wheel the player is trying to stop
-; 0 = none, 1 = wheel 1, 2 = wheel 2, 3 or greater = wheel 3
-wStoppingWhichSlotMachineWheel:: db
-wSlotMachineWheel1Offset:: db
-wSlotMachineWheel2Offset:: db
-wSlotMachineWheel3Offset:: db
-; the OAM tile number of the upper left corner of the winning symbol minus 2
-wSlotMachineWinningSymbol::
-wSlotMachineWheel1BottomTile:: db
-wSlotMachineWheel1MiddleTile:: db
-wSlotMachineWheel1TopTile:: db
-wSlotMachineWheel2BottomTile:: db
-wSlotMachineWheel2MiddleTile:: db
-wSlotMachineWheel2TopTile:: db
-wSlotMachineWheel3BottomTile:: db
-wSlotMachineWheel3MiddleTile:: db
-wSlotMachineWheel3TopTile:: db
-wPayoutCoins:: dw
-; These flags are set randomly and control when the wheels stop.
-; bit 6: allow the player to win in general
-; bit 7: allow the player to win with 7 or bar (plus the effect of bit 6)
-wSlotMachineFlags:: db
-; wheel 1 can "slip" while this is non-zero
-wSlotMachineWheel1SlipCounter:: db
-; wheel 2 can "slip" while this is non-zero
-wSlotMachineWheel2SlipCounter:: db
-; The remaining number of times wheel 3 will roll down a symbol until a match is
-; found, when winning is enabled. It's initialized to 4 each bet.
-wSlotMachineRerollCounter:: db
-; how many coins the player bet on the slot machine (1 to 3)
-wSlotMachineBet:: db
-
-NEXTU
-wCanPlaySlots:: db
- ds 8
-; temporary variable used to add payout amount to the player's coins
-wTempCoins1:: dw
- ds 2
-; temporary variable used to subtract the bet amount from the player's coins
-wTempCoins2:: dw
-
-NEXTU
-wHiddenObjectFunctionArgument:: db
-wHiddenObjectFunctionRomBank:: db
-wHiddenObjectIndex:: db
-wHiddenObjectY:: db
-wHiddenItemOrCoinsIndex::
-wHiddenObjectX:: db
-
-NEXTU
-wPlayerSpinInPlaceAnimFrameDelay:: db
-wPlayerSpinInPlaceAnimFrameDelayDelta:: db
-wPlayerSpinInPlaceAnimFrameDelayEndValue:: db
-wPlayerSpinInPlaceAnimSoundID:: db
- ds 6
- db ; temporary space used when wFacingDirectionList is rotated
-; used when spinning the player's sprite
-wFacingDirectionList:: ds 4
- ds 3
-wSavedPlayerScreenY:: db
-wSavedPlayerFacingDirection:: db
-
-NEXTU
-wPlayerSpinWhileMovingUpOrDownAnimDeltaY:: db
-wPlayerSpinWhileMovingUpOrDownAnimMaxY:: db
-wPlayerSpinWhileMovingUpOrDownAnimFrameDelay:: db
-
-NEXTU
-wTrainerSpriteOffset:: db
-wTrainerEngageDistance:: db
-wTrainerFacingDirection:: db
-wTrainerScreenY:: db
-wTrainerScreenX:: db
-
-NEXTU
-wTrainerInfoTextBoxWidthPlus1:: db
-wTrainerInfoTextBoxWidth:: db
-wTrainerInfoTextBoxNextRowOffset:: db
-
-NEXTU
-wOptionsTextSpeedCursorX:: db
-wOptionsBattleAnimCursorX:: db
-wOptionsBattleStyleCursorX:: db
-wOptionsCancelCursorX:: db
-
-NEXTU
-; tile ID of the badge number being drawn
-wBadgeNumberTile:: db
-; first tile ID of the name being drawn
-wBadgeNameTile:: db
-; a list of the first tile IDs of each badge or face (depending on whether the
-; badge is owned) to be drawn on the trainer screen
-; the byte after the list gets read when shifting back one byte
-wBadgeOrFaceTiles:: ds NUM_BADGES + 1
- ds 1
-; temporary list created when displaying the badges on the trainer screen
-; one byte for each badge; 0 = not obtained, 1 = obtained
-wTempObtainedBadgesBooleans:: ds NUM_BADGES
-
-NEXTU
-wUnusedCD3D:: db
-; the number of credits mons that have been displayed so far
-wNumCreditsMonsDisplayed:: db
-
-NEXTU
- ds 1
- db ; temporary space used when wJigglypuffFacingDirections is rotated
-wJigglypuffFacingDirections:: ds 4
-
-NEXTU
- ds 16
-; $3d = tree tile, $52 = grass tile
-wCutTile:: db
- ds 2
-; 0 = cut animation, 1 = boulder dust animation
-wWhichAnimationOffsets:: db
-
-NEXTU
- ds 18
-; the index of the sprite the emotion bubble is to be displayed above
-wEmotionBubbleSpriteIndex:: db
-wWhichEmotionBubble:: db
-
-NEXTU
-wChangeBoxSavedMapTextPointer:: dw
-
-NEXTU
-wSavedY::
-wTempSCX::
-; which entry from TradeMons to select
-wWhichTrade::
-wDexMaxSeenMon::
-wPPRestoreItem::
-wWereAnyMonsAsleep::
-wNumShakes::
-wWhichBadge::
-wTitleMonSpecies::
-wPlayerCharacterOAMTile::
-; the number of small stars OAM entries to move down
-wMoveDownSmallStarsOAMCount::
-wChargeMoveNum::
-wCoordIndex::
-wSwappedMenuItem::
-; 0 = no bite
-; 1 = bite
-; 2 = no fish on map
-wRodResponse::
-wOptionsCursorLocation::
- db
-
-NEXTU
-wTitleScreenScene:: db
-wTitleScreenTimer:: db
-ENDU
-
-; 0 = neither
-; 1 = warp pad
-; 2 = hole
-wStandingOnWarpPadOrHole::
-wOAMBaseTile::
-wGymTrashCanIndex:: db
-
-wSymmetricSpriteOAMAttributes:: db
-
-wMonPartySpriteSpecies:: db
-
-; in the trade animation, the mon that leaves the left gameboy
-wLeftGBMonSpecies:: db
-
-; in the trade animation, the mon that leaves the right gameboy
-wRightGBMonSpecies:: db
-
-; 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 3: using generic PC
-; 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)
-wFlags_0xcd60:: db
-
- ds 9
-
-; This has overlapping related uses.
-; When the player tries to use an item or use certain field moves, 0 is stored
-; when the attempt fails and 1 is stored when the attempt succeeds.
-; In addition, some items store 2 for certain types of failures, but this
-; cannot happen in battle.
-; In battle, a non-zero value indicates the player has taken their turn using
-; something other than a move (e.g. using an item or switching pokemon).
-; So, when an item is successfully used in battle, this value becomes non-zero
-; and the player is not allowed to make a move and the two uses are compatible.
-wActionResultOrTookBattleTurn:: db
-
-; Set buttons are ignored.
-wJoyIgnore:: db
-
-; size of downscaled mon pic used in pokeball entering/exiting animation
-; $00 = 5×5
-; $01 = 3×3
-wDownscaledMonSize::
-; FormatMovesString stores the number of moves minus one here
-wNumMovesMinusOne:: db
-
-UNION
-wcd6d:: ds NAME_BUFFER_LENGTH ; buffer for various data
-
-NEXTU
-wEvosMoves:: ds MAX_EVOLUTIONS * EVOLUTION_SIZE + 1
-wEvosMovesEnd::
-
-NEXTU
- ds 4
-; temp variable used to print a move's current PP on the status screen
-wStatusScreenCurrentPP:: db
- ds 6
-; list of normal max PP (without PP up) values
-wNormalMaxPPList:: ds NUM_MOVES
- ds 5
-ENDU
-
-UNION
-; buffer for transferring the random number list generated by the other gameboy
-wSerialOtherGameboyRandomNumberListBlock:: ds $11
-NEXTU
-; second buffer for temporarily saving and restoring current screen's tiles (e.g. if menus are drawn on top)
-wTileMapBackup2:: ds SCREEN_WIDTH * SCREEN_HEIGHT
-ENDU
-
-; This union spans 30 bytes.
-UNION
-; Temporary storage area
-wBuffer:: ds 30
-
-NEXTU
-wEvoOldSpecies:: db
-wEvoNewSpecies:: db
-wEvoMonTileOffset:: db
-wEvoCancelled:: db
-
-NEXTU
-wNamingScreenNameLength:: db
-; non-zero when the player has chosen to submit the name
-wNamingScreenSubmitName:: db
-; 0 = upper case
-; 1 = lower case
-wAlphabetCase:: db
- ds 1
-wNamingScreenLetter:: db
-
-NEXTU
-wChangeMonPicEnemyTurnSpecies:: db
-wChangeMonPicPlayerTurnSpecies:: db
-
-NEXTU
-wHPBarMaxHP:: dw
-wHPBarOldHP:: dw
-wHPBarNewHP:: dw
-wHPBarDelta:: db
-wHPBarTempHP:: dw
- ds 11
-wHPBarHPDifference:: dw
-
-NEXTU
-; lower nybble is x, upper nybble is y
-wTownMapCoords::
-; whether WriteMonMoves is being used to make a mon learn moves from day care
-; non-zero if so
-wLearningMovesFromDayCare::
- db
-
- ds 27
-
-; the item that the AI used
-wAIItem:: db
-wUsedItemOnWhichPokemon:: db
-ENDU
-
-; sound ID during battle animations
-wAnimSoundID:: db
-
-; used as a storage value for the bank to return to after a BankswitchHome (bankswitch in homebank)
-wBankswitchHomeSavedROMBank:: db
-
-; used as a temp storage value for the bank to switch to
-wBankswitchHomeTemp:: db
-
-; 0 = nothing bought or sold in pokemart
-; 1 = bought or sold something in pokemart
-; this value is not used for anything
-wBoughtOrSoldItemInMart:: db
-
-; $00 - win
-; $01 - lose
-; $02 - draw
-wBattleResult:: db
-
-; bit 0: if set, DisplayTextID automatically draws a text box
-wAutoTextBoxDrawingControl:: db
-
-wcf0d:: db ; used with some overworld scripts (not exactly sure what it's used for)
-
-; used in CheckForTilePairCollisions2 to store the tile the player is on
-wTilePlayerStandingOn:: db
-
-wNPCNumScriptedSteps:: db
-
-; which script function within the pointer table indicated by
-; wNPCMovementScriptPointerTableNum
-wNPCMovementScriptFunctionNum:: db
-
-; bit 0: set when printing a text predef so that DisplayTextID doesn't switch
-; to the current map's bank
-wTextPredefFlag:: db
-
-wPredefParentBank:: db
-
-wSpriteIndex:: db
-
-; movement byte 2 of current sprite
-wCurSpriteMovement2:: db
-
- ds 2
-
-; sprite offset of sprite being controlled by NPC movement script
-wNPCMovementScriptSpriteOffset:: db
-
-wScriptedNPCWalkCounter:: db
-
- ds 1
-
-; if running on SGB, it's 1, else it's 0
-wOnSGB:: db
-
-wDefaultPaletteCommand:: db
-
-UNION
-wPlayerHPBarColor:: dw
-
-NEXTU
-; species of the mon whose palette is used for the whole screen
-wWholeScreenPaletteMonSpecies:: db
-
-wEnemyHPBarColor:: db
-ENDU
-
-; 0: green
-; 1: yellow
-; 2: red
-wPartyMenuHPBarColors:: ds PARTY_LENGTH
-
-wStatusScreenHPBarColor:: db
-
- ds 7
-
-wCopyingSGBTileData::
-wWhichPartyMenuHPBar::
-wPalPacket::
- db
-
-; This union spans 49 bytes.
-UNION
-wPartyMenuBlkPacket:: ds $30
-
-NEXTU
- ds 29
-; storage buffer for various strings
-wStringBuffer:: ds 20
-
-NEXTU
- ds 29
-; the total amount of exp a mon gained
-wExpAmountGained:: dw
-wGainBoostedExp:: db
-
-NEXTU
- ds 9
-wPartyHPBarAttributes:: ds PARTY_LENGTH
-ENDU
-
-wGymCityName:: ds 17
-
-wGymLeaderName:: ds NAME_LENGTH
-
-wItemList:: ds 16
-
-wListPointer:: dw
-
-; used to store pointers, but never read
-wUnusedCF8D:: dw
-
-wItemPrices:: dw
-
-wcf91:: db ; used with a lot of things (too much to list here)
-
-; which pokemon you selected
-wWhichPokemon:: db
-
-; if non-zero, then print item prices when displaying lists
-wPrintItemPrices:: db
-
-; type of HP bar
-; $00 = enemy HUD in battle
-; $01 = player HUD in battle / status screen
-; $02 = party menu
-wHPBarType::
-; ID used by DisplayListMenuID
-wListMenuID:: db
-
-; if non-zero, RemovePokemon will remove the mon from the current box,
-; else it will remove the mon from the party
-wRemoveMonFromBox::
-; 0 = move from box to party
-; 1 = move from party to box
-; 2 = move from daycare to party
-; 3 = move from party to daycare
-wMoveMonType:: db
-
-wItemQuantity:: db
-
-wMaxItemQuantity:: db
-
-; LoadMonData copies mon data here
-wLoadedMon:: party_struct wLoadedMon
-
-; 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.
-wFontLoaded:: db
-
-; walk animation counter
-wWalkCounter:: db
-
-; background tile number in front of the player (either 1 or 2 steps ahead)
-wTileInFrontOfPlayer:: db
-
-; The desired fade counter reload value is stored here prior to calling
-; PlaySound in order to cause the current music to fade out before the new
-; music begins playing. Storing 0 causes no fade out to occur and the new music
-; to begin immediately.
-; This variable has another use related to fade-out, as well. PlaySound stores
-; the sound ID of the music that should be played after the fade-out is finished
-; in this variable. FadeOutAudio checks if it's non-zero every V-Blank and
-; fades out the current audio if it is. Once it has finished fading out the
-; audio, it zeroes this variable and starts playing the sound ID stored in it.
-wAudioFadeOutControl:: db
-
-wAudioFadeOutCounterReloadValue:: db
-
-wAudioFadeOutCounter:: db
-
-; This is used to determine whether the default music is already playing when
-; attempting to play the default music (in order to avoid restarting the same
-; music) and whether the music has already been stopped when attempting to
-; fade out the current music (so that the new music can be begin immediately
-; instead of waiting).
-; It sometimes contains the sound ID of the last music played, but it may also
-; contain $ff (if the music has been stopped) or 0 (because some routines zero
-; it in order to prevent assumptions from being made about the current state of
-; the music).
-wLastMusicSoundID:: db
-
-; $00 = causes sprites to be hidden and the value to change to $ff
-; $01 = enabled
-; $ff = disabled
-; other values aren't used
-wUpdateSpritesEnabled:: db
-
-wEnemyMoveNum:: db
-wEnemyMoveEffect:: db
-wEnemyMovePower:: db
-wEnemyMoveType:: db
-wEnemyMoveAccuracy:: db
-wEnemyMoveMaxPP:: db
-wPlayerMoveNum:: db
-wPlayerMoveEffect:: db
-wPlayerMovePower:: db
-wPlayerMoveType:: db
-wPlayerMoveAccuracy:: db
-wPlayerMoveMaxPP:: db
-
-wEnemyMonSpecies2:: db
-wBattleMonSpecies2:: db
-
-wEnemyMonNick:: ds NAME_LENGTH
-
-wEnemyMon:: battle_struct wEnemyMon
-
-wEnemyMonBaseStats:: ds NUM_STATS
-wEnemyMonActualCatchRate:: db
-wEnemyMonBaseExp:: db
-
-wBattleMonNick:: ds NAME_LENGTH
-wBattleMon:: battle_struct wBattleMon
-
-
-wTrainerClass:: db
-
- ds 1
-
-wTrainerPicPointer:: dw
-
- ds 1
-
-UNION
-wTempMoveNameBuffer:: ds 14
-
-NEXTU
-; The name of the mon that is learning a move.
-wLearnMoveMonName:: ds NAME_LENGTH
-ENDU
-
- ds 2
-
-; money received after battle = base money × level of highest-level enemy mon
-wTrainerBaseMoney:: dw ; BCD
-
-wMissableObjectCounter:: db
-
- ds 1
-
-; 13 bytes for the letters of the opposing trainer
-; the name is terminated with $50 with possible
-; unused trailing letters
-wTrainerName:: ds 13
-
-; lost battle, this is -1
-; no battle, this is 0
-; wild battle, this is 1
-; trainer battle, this is 2
-wIsInBattle:: db
-
-; flags that indicate which party members should be be given exp when GainExperience is called
-wPartyGainExpFlags:: flag_array PARTY_LENGTH
-
-; in a wild battle, this is the species of pokemon
-; in a trainer battle, this is the trainer class + OPP_ID_OFFSET
-wCurOpponent:: db
-
-; in normal battle, this is 0
-; in old man battle, this is 1
-; in safari battle, this is 2
-wBattleType:: db
-
-; bits 0-6: Effectiveness
- ; $0 = immune
- ; $5 = not very effective
- ; $a = neutral
- ; $14 = super-effective
-; bit 7: STAB
-wDamageMultipliers:: db
-
-; which entry in LoneAttacks to use
-; it's actually the same thing as ^
-wLoneAttackNo::
-wGymLeaderNo:: db
-; which instance of [youngster, lass, etc] is this?
-wTrainerNo:: db
-
-; $00 = normal attack
-; $01 = critical hit
-; $02 = successful OHKO
-; $ff = failed OHKO
-wCriticalHitOrOHKO:: db
-
-wMoveMissed:: db
-
-; always 0
-wPlayerStatsToDouble:: db
-
-; always 0
-wPlayerStatsToHalve:: db
-
-; 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
-wPlayerBattleStatus1:: db
-
-; 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
-wPlayerBattleStatus2:: db
-
-; bit 0 - toxic
-; bit 1 - light screen
-; bit 2 - reflect
-; bit 3 - transformed
-wPlayerBattleStatus3:: db
-
-; always 0
-wEnemyStatsToDouble:: db
-
-; always 0
-wEnemyStatsToHalve:: db
-
-wEnemyBattleStatus1:: db
-wEnemyBattleStatus2:: db
-wEnemyBattleStatus3:: db
-
-; when the player is attacking multiple times, the number of attacks left
-wPlayerNumAttacksLeft:: db
-
-wPlayerConfusedCounter:: db
-
-wPlayerToxicCounter:: db
-
-; high nibble: which move is disabled (1-4)
-; low nibble: disable turns left
-wPlayerDisabledMove:: db
-
- ds 1
-
-; when the enemy is attacking multiple times, the number of attacks left
-wEnemyNumAttacksLeft:: db
-
-wEnemyConfusedCounter:: db
-
-wEnemyToxicCounter:: db
-
-; high nibble: which move is disabled (1-4)
-; low nibble: disable turns left
-wEnemyDisabledMove:: db
-
- ds 1
-
-UNION
-; the amount of damage accumulated by the player while biding
-wPlayerBideAccumulatedDamage:: dw
-
-NEXTU
-wUnknownSerialCounter2:: dw
-
-NEXTU
-; number of hits by player in attacks like Double Slap, etc.
-wPlayerNumHits:: db
-ENDU
-
- ds 2
-
-; non-zero when an item or move that allows escape from battle was used
-wEscapedFromBattle:: db
-
-UNION
-wAmountMoneyWon:: ds 3 ; BCD
-
-NEXTU
-wObjectToHide:: db
-wObjectToShow:: db
-ENDU
-
-; the map you will start at when the debug bit is set
-wDefaultMap::
-wMenuItemOffset::
-; ID number of the current battle animation
-wAnimationID:: db
-
-wNamingScreenType::
-wPartyMenuTypeOrMessageID::
-; temporary storage for the number of tiles in a tileset
-wTempTilesetNumTiles:: db
-
-; used by the pokemart code to save the existing value of wListScrollOffset
-; so that it can be restored when the player is done with the pokemart NPC
-wSavedListScrollOffset:: db
-
- ds 2
-
-; base coordinates of frame block
-wBaseCoordX:: db
-wBaseCoordY:: db
-
-; low health alarm counter/enable
-; high bit = enable, others = timer to cycle frequencies
-wLowHealthAlarm:: db
-
-; counts how many tiles of the current frame block have been drawn
-wFBTileCounter:: db
-
-wMovingBGTilesCounter2:: db
-
-; duration of each frame of the current subanimation in terms of screen refreshes
-wSubAnimFrameDelay:: db
-; counts the number of subentries left in the current subanimation
-wSubAnimCounter:: db
-
-; 1 = no save file or save file is corrupted
-; 2 = save file exists and no corruption has been detected
-wSaveFileStatus:: db
-
-; number of tiles in current battle animation frame block
-wNumFBTiles:: db
-
-UNION
-wSpiralBallsBaseY:: db
-wSpiralBallsBaseX:: db
-
-NEXTU
-; bits 0-6: index into FallingObjects_DeltaXs array (0 - 8)
-; bit 7: direction; 0 = right, 1 = left
-wFallingObjectMovementByte:: db
-wNumFallingObjects:: db
-
-NEXTU
-wFlashScreenLongCounter::
-wNumShootingBalls::
-; $01 if mon is moving from left gameboy to right gameboy; $00 if vice versa
-wTradedMonMovingRight::
-wOptionsInitialized::
-wNewSlotMachineBallTile::
-; how much to add to the X/Y coord
-wCoordAdjustmentAmount::
-wUnusedD08A::
- db
-
-wSlideMonDelay::
-; generic counter variable for various animations
-wAnimCounter::
-; 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
-wSubAnimTransform::
- db
-ENDU
-
-wEndBattleWinTextPointer:: dw
-wEndBattleLoseTextPointer:: dw
- ds 2
-wEndBattleTextRomBank:: db
-
- ds 1
-
-; the address _of the address_ of the current subanimation entry
-wSubAnimAddrPtr:: dw
-
-UNION
-; the address of the current subentry of the current subanimation
-wSubAnimSubEntryAddr:: dw
-
-NEXTU
-; If non-zero, the allow matches flag is always set.
-; There is a 1/256 (~0.4%) chance that this value will be set to 60, which is
-; the only way it can increase. Winning certain payout amounts will decrement it
-; or zero it.
-wSlotMachineAllowMatchesCounter:: db
-ENDU
-
- ds 2
-
-wOutwardSpiralTileMapPointer:: db
-
-wPartyMenuAnimMonEnabled::
-; non-zero when enabled. causes nest locations to blink on and off.
-; the town selection cursor will blink regardless of what this value is
-wTownMapSpriteBlinkingEnabled::
-wUnusedD09B:: db
-
-; current destination address in OAM for frame blocks (big endian)
-wFBDestAddr:: dw
-
-; 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 [wFBDestAddr], so that the next frame block will overwrite this one
-wFBMode:: db
-
-; 0 = small
-; 1 = big
-wLinkCableAnimBulgeToggle::
-wIntroNidorinoBaseTile::
-wOutwardSpiralCurrentDirection::
-wDropletTile::
-wNewTileBlockID::
-wWhichBattleAnimTileset::
-; 0 = left
-; 1 = right
-wSquishMonCurrentDirection::
-; the tile ID of the leftmost tile in the bottom row in AnimationSlideMonUp_
-wSlideMonUpBottomRowLeftTile::
- db
-
-wDisableVBlankWYUpdate:: db ; if non-zero, don't update WY during V-blank
-
-wSpriteCurPosX:: db
-wSpriteCurPosY:: db
-wSpriteWidth:: db
-wSpriteHeight:: db
-; current input byte
-wSpriteInputCurByte:: db
-; bit offset of last read input bit
-wSpriteInputBitCounter:: db
-
-; 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
-wSpriteOutputBitOffset:: db
-
-; bit 0 determines used buffer (0 -> sSpriteBuffer1, 1 -> sSpriteBuffer2)
-; bit 1 loading last sprite chunk? (there are at most 2 chunks per load operation)
-wSpriteLoadFlags:: db
-wSpriteUnpackMode:: db
-wSpriteFlipped:: db
-
-; pointer to next input byte
-wSpriteInputPtr:: dw
-; pointer to current output byte
-wSpriteOutputPtr:: dw
-; used to revert pointer for different bit offsets
-wSpriteOutputPtrCached:: dw
-; pointer to differential decoding table (assuming initial value 0)
-wSpriteDecodeTable0Ptr:: dw
-; pointer to differential decoding table (assuming initial value 1)
-wSpriteDecodeTable1Ptr:: dw
-
-wd0b5:: db ; used as a temp storage area for Pokemon Species, and other Pokemon/Battle related things
-
-wNameListType:: db
-
-wPredefBank:: db
-
-wMonHeader::
-; In the ROM base stats data structure, this is the dex number, but it is
-; overwritten with the internal index number after the header is copied to WRAM.
-wMonHIndex:: db
-wMonHBaseStats::
-wMonHBaseHP:: db
-wMonHBaseAttack:: db
-wMonHBaseDefense:: db
-wMonHBaseSpeed:: db
-wMonHBaseSpecial:: db
-wMonHTypes::
-wMonHType1:: db
-wMonHType2:: db
-wMonHCatchRate:: db
-wMonHBaseEXP:: db
-wMonHSpriteDim:: db
-wMonHFrontSprite:: dw
-wMonHBackSprite:: dw
-wMonHMoves:: ds NUM_MOVES
-wMonHGrowthRate:: db
-wMonHLearnset:: flag_array NUM_TMS + NUM_HMS
- ds 1
-wMonHeaderEnd::
-
-; saved at the start of a battle and then written back at the end of the battle
-wSavedTileAnimations:: db
-
- ds 2
-
-wDamage:: dw
-
- ds 2
-
-wRepelRemainingSteps:: db
-
-; list of moves for FormatMovesString
-wMoves:: ds NUM_MOVES
-
-wMoveNum:: db
-
-wMovesString:: ds 56
-
-wUnusedD119:: db
-
-; wWalkBikeSurfState is sometimes copied here, but it doesn't seem to be used for anything
-wWalkBikeSurfStateCopy:: db
-
-; the type of list for InitList to init
-wInitListType:: db
-
-; 0 if no mon was captured
-wCapturedMonSpecies:: db
-
-; Non-zero when the first player mon and enemy mon haven't been sent out yet.
-; It prevents the game from asking if the player wants to choose another mon
-; when the enemy sends out their first mon and suppresses the "no will to fight"
-; message when the game searches for the first non-fainted mon in the party,
-; which will be the first mon sent out.
-wFirstMonsNotOutYet:: db
-
-wPokeBallCaptureCalcTemp::
-; lower nybble: number of shakes
-; upper nybble: number of animations to play
-wPokeBallAnimData::
-wUsingPPUp::
-wMaxPP::
-; 0 for player, non-zero for enemy
-wCalculateWhoseStats::
-wTypeEffectiveness::
-wMoveType::
-wNumSetBits::
-; used as a Pokemon and Item storage value. Also used as an output value for CountSetBits
-wd11e::
- db
-
-; When this value is non-zero, the player isn't allowed to exit the party menu
-; by pressing B and not choosing a mon.
-wForcePlayerToChooseMon:: db
-
-; number of times the player has tried to run from battle
-wNumRunAttempts:: db
-
-wEvolutionOccurred:: db
-
-wVBlankSavedROMBank:: db
-
-wFarCopyDataSavedROMBank:: db
-
-wIsKeyItem:: db
-
-wTextBoxID:: db
-
-wCurrentMapScriptFlags:: db ; not exactly sure what this is used for, but it seems to be used as a multipurpose temp flag value
-
-wCurEnemyLVL:: db
-
-; pointer to list of items terminated by $FF
-wItemListPointer:: dw
-
-; number of entries in a list
-wListCount:: db
-
-wLinkState:: db
-
-wTwoOptionMenuID:: db
-
-; the id of the menu item the player ultimately chose
-wChosenMenuItem::
-; non-zero when the whole party has fainted due to out-of-battle poison damage
-wOutOfBattleBlackout:: db
-
-; the way the user exited a menu
-; for list menus and the buy/sell/quit menu:
-; $01 = the user pressed A to choose a menu item
-; $02 = the user pressed B to cancel
-; for two-option menus:
-; $01 = the user pressed A with the first menu item selected
-; $02 = the user pressed B or pressed A with the second menu item selected
-wMenuExitMethod:: db
-
-; the size is always 6, so they didn't need a variable in RAM for this
-wDungeonWarpDataEntrySize::
-; 0 = museum guy
-; 1 = gym guy
-wWhichPewterGuy::
-; there are 3 windows, from 0 to 2
-wWhichPrizeWindow::
-; a horizontal or vertical gate block
-wGymGateTileBlock:: db
-
-wSavedSpriteScreenY:: db
-wSavedSpriteScreenX:: db
-wSavedSpriteMapY:: db
-wSavedSpriteMapX:: db
-
- ds 5
-
-wWhichPrize:: db
-
-; counts downward each frame
-; when it hits 0, bit 5 (ignore input bit) of wd730 is reset
-wIgnoreInputCounter:: db
-
-; counts down once every step
-wStepCounter:: db
-
-; after a battle, you have at least 3 steps before a random battle can occur
-wNumberOfNoRandomBattleStepsLeft:: db
-
-wPrize1:: db
-wPrize2:: db
-wPrize3:: db
-
- ds 1
-
-UNION
-wSerialRandomNumberListBlock:: ds $11
-
-NEXTU
-wPrize1Price:: dw
-wPrize2Price:: dw
-wPrize3Price:: dw
-
- ds 1
-
-; shared list of 9 random numbers, indexed by wLinkBattleRandomNumberListIndex
-wLinkBattleRandomNumberList:: ds 10
-ENDU
-
-wSerialPlayerDataBlock:: ; ds $1a8
-
-; When a real item is being used, this is 0.
-; When a move is acting as an item, this is the ID of the item it's acting as.
-; For example, out-of-battle Dig is executed using a fake Escape Rope item. In
-; that case, this would be ESCAPE_ROPE.
-wPseudoItemID:: db
-
-wUnusedD153:: db
-
- ds 2
-
-wEvoStoneItemID:: db
-
-wSavedNPCMovementDirections2Index:: db
-
-wPlayerName:: ds NAME_LENGTH
-
-
-SECTION "Party Data", WRAM0
-
-wPartyDataStart::
-
-wPartyCount:: db
-wPartySpecies:: ds PARTY_LENGTH + 1
-
-wPartyMons::
-; wPartyMon1 - wPartyMon6
-FOR n, 1, PARTY_LENGTH + 1
-wPartyMon{d:n}:: party_struct wPartyMon{d:n}
-ENDR
-
-wPartyMonOT::
-; wPartyMon1OT - wPartyMon6OT
-FOR n, 1, PARTY_LENGTH + 1
-wPartyMon{d:n}OT:: ds NAME_LENGTH
-ENDR
-
-wPartyMonNicks::
-; wPartyMon1Nick - wPartyMon6Nick
-FOR n, 1, PARTY_LENGTH + 1
-wPartyMon{d:n}Nick:: ds NAME_LENGTH
-ENDR
-wPartyMonNicksEnd::
-
-wPartyDataEnd::
-
-
-SECTION "Main Data", WRAM0
-
-wMainDataStart::
-
-wPokedexOwned:: flag_array NUM_POKEMON
-wPokedexOwnedEnd::
-
-wPokedexSeen:: flag_array NUM_POKEMON
-wPokedexSeenEnd::
-
-wNumBagItems:: db
-; item, quantity
-wBagItems:: ds BAG_ITEM_CAPACITY * 2 + 1
-
-wPlayerMoney:: ds 3 ; BCD
-
-wRivalName:: ds NAME_LENGTH
-
-; 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
-wOptions:: db
-
-wObtainedBadges:: flag_array NUM_BADGES
-
- ds 1
-
-; bit 0: If 0, limit the delay to 1 frame. Note that this has no effect if
-; the delay has been disabled entirely through bit 1 of this variable
-; or bit 6 of wd730.
-; bit 1: If 0, no delay.
-wLetterPrintingDelayFlags:: db
-
-wPlayerID:: dw
-
-wMapMusicSoundID:: db
-wMapMusicROMBank:: db
-
-; 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
-wMapPalOffset:: db
-
-wCurMap:: db
-
-; pointer to the upper left corner of the current view in the tile block map
-wCurrentTileBlockMapViewPointer:: dw
-
-; player's position on the current map
-wYCoord:: db
-wXCoord:: db
-
-; player's position (by block)
-wYBlockCoord:: db
-wXBlockCoord:: db
-
-wLastMap:: db
-
-wUnusedD366:: db
-
-wCurMapTileset:: db
-
-; blocks
-wCurMapHeight:: db
-wCurMapWidth:: db
-
-wMapDataPtr:: dw
-wMapTextPtr:: dw
-wMapScriptPtr:: dw
-
-wMapConnections:: db
-wNorthConnectionHeader:: map_connection_struct wNorth
-wSouthConnectionHeader:: map_connection_struct wSouth
-wWestConnectionHeader:: map_connection_struct wWest
-wEastConnectionHeader:: map_connection_struct wEast
-
-; sprite set for the current map (11 sprite picture ID's)
-wSpriteSet:: ds 11
-; sprite set ID for the current map
-wSpriteSetID:: db
-
-wObjectDataPointerTemp:: dw
-
- ds 2
-
-; the tile shown outside the boundaries of the map
-wMapBackgroundTile:: db
-
-; number of warps in current map (up to 32)
-wNumberOfWarps:: db
-
-; current map warp entries
-wWarpEntries:: ds 32 * 4 ; Y, X, warp ID, map ID
-
-; if $ff, the player's coordinates are not updated when entering the map
-wDestinationWarpID:: db
-
-wPikachuOverworldStateFlags:: db
-wPikachuSpawnState:: db
-wd432:: db
-wd433:: db
-wd434:: db
-wd435:: db
-wd436:: db
-wPikachuFollowCommandBufferSize:: db
-wPikachuFollowCommandBuffer:: ds 16
-
-wExpressionNumber:: db
-wPikaPicAnimNumber:: db
-
-wPikachuMovementScriptBank:: db
-wPikachuMovementScriptAddress:: dw
-; bit 6 - spawn shadow
-; bit 7 - signal end of command
-wPikachuMovementFlags:: db
-
-UNION
-wCurPikaMovementData::
-wCurPikaMovementParam1:: db
-wCurPikaMovementFunc1:: db
-wCurPikaMovementParam2:: db
-wCurPikaMovementFunc2:: db
-wd451:: db
-wCurPikaMovementSpriteImageIdx:: db
-wPikaSpriteX:: db
-wPikaSpriteY:: db
-wPikachuMovementXOffset:: db
-wPikachuMovementYOffset:: db
-wPikachuStepTimer:: db
-wPikachuStepSubtimer:: db
- ds 5
-wCurPikaMovementDataEnd::
-
-NEXTU
-wPikaPicAnimPointer:: dw
-wPikaPicAnimPointerSetupFinished:: db
-wPikaPicAnimCurGraphicID:: db
-wPikaPicAnimTimer:: dw
-wPikaPicAnimDelay:: db
-wPikaPicPikaDrawStartX:: db
-wPikaPicPikaDrawStartY:: db
-
-wCurPikaPicAnimObject::
-wCurPikaPicAnimObjectVTileOffset:: db
-wCurPikaPicAnimObjectXOffset:: db
-wCurPikaPicAnimObjectYOffset:: db
-wCurPikaPicAnimObjectScriptIdx:: db
-wCurPikaPicAnimObjectFrameIdx:: db
-wCurPikaPicAnimObjectFrameTimer:: db
- ds 1
-wCurPikaPicAnimObjectEnd::
-
- ds 18
-ENDU
-
-wPikachuHappiness:: db
-wPikachuMood:: db
-wd472:: db
-wd473:: db
- ds 1
-wd475:: db
- ds 4
-wd47a:: db
- ds 24
-wd492:: db
- ds 1
-wSurfingMinigameHiScore:: dw ; little-endian BCD
- ds 1
-wPrinterSettings:: db
-wUnknownSerialFlag_d499:: db
-wPrinterConnectionOpen:: db
-wPrinterOpcode:: db
-wd49c:: db
-
- ds 19
-
-; number of signs in the current map (up to 16)
-wNumSigns:: db
-
-wSignCoords:: ds 16 * 2 ; Y, X
-wSignTextIDs:: ds 16
-
-; number of sprites on the current map (up to 16)
-wNumSprites:: db
-
-; 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:: db
-wXOffsetSinceLastSpecialWarp:: db
-
-wMapSpriteData:: ds 16 * 2 ; movement byte 2, text ID
-wMapSpriteExtraData:: ds 16 * 2 ; trainer class/item ID, trainer set ID
-
-; map height in 2x2 meta-tiles
-wCurrentMapHeight2:: db
-
-; map width in 2x2 meta-tiles
-wCurrentMapWidth2:: db
-
-; the address of the upper left corner of the visible portion of the BG tile map in VRAM
-wMapViewVRAMPointer:: dw
-
-; In the comments for the player direction variables below, "moving" refers to
-; both walking and changing facing direction without taking a step.
-
-; if the player is moving, the current direction
-; if the player is not moving, zero
-; map scripts write to this in order to change the player's facing direction
-wPlayerMovingDirection:: db
-
-; the direction in which the player was moving before the player last stopped
-wPlayerLastStopDirection:: db
-
-; if the player is moving, the current direction
-; if the player is not moving, the last the direction in which the player moved
-wPlayerDirection:: db
-
-wTilesetBank:: db
-
-; maps blocks (4x4 tiles) to tiles
-wTilesetBlocksPtr:: dw
-
-wTilesetGfxPtr:: dw
-
-; list of all walkable tiles
-wTilesetCollisionPtr:: dw
-
-wTilesetTalkingOverTiles:: ds 3
-
-wGrassTile:: db
-
- ds 4
-
-wNumBoxItems:: db
-; item, quantity
-wBoxItems:: ds PC_ITEM_CAPACITY * 2 + 1
-
-; bits 0-6: box number
-; bit 7: whether the player has changed boxes before
-wCurrentBoxNum:: dw
-
-; number of HOF teams
-wNumHoFTeams:: db
-
-wUnusedD5A3:: db
-
-wPlayerCoins:: ds 2 ; BCD
-
-; bit array of missable objects. set = removed
-wMissableObjectFlags:: flag_array $100
-wMissableObjectFlagsEnd::
-
- ds 7
-
-; temp copy of SPRITESTATEDATA1_IMAGEINDEX (used for sprite facing/anim)
-wd5cd:: db
-
-; each entry consists of 2 bytes
-; * the sprite ID (depending on the current map)
-; * the missable object index (global, used for wMissableObjectFlags)
-; terminated with $FF
-wMissableObjectList:: ds 16 * 2 + 1
-
- ds 1
-
-wGameProgressFlags::
-wOaksLabCurScript:: db
-wPalletTownCurScript:: db
- ds 1
-wBluesHouseCurScript:: db
-wViridianCityCurScript:: db
- ds 2
-wPewterCityCurScript:: db
-wRoute3CurScript:: db
-wRoute4CurScript:: db
-wFanClubCurScript:: db
-wViridianGymCurScript:: db
-wPewterGymCurScript:: db
-wCeruleanGymCurScript:: db
-wVermilionGymCurScript:: db
-wCeladonGymCurScript:: db
-wRoute6CurScript:: db
-wRoute8CurScript:: db
-wRoute24CurScript:: db
-wRoute25CurScript:: db
-wRoute9CurScript:: db
-wRoute10CurScript:: db
-wMtMoon1FCurScript:: db
-wMtMoonB2FCurScript:: db
-wSSAnne1FRoomsCurScript:: db
-wSSAnne2FRoomsCurScript:: db
-wRoute22CurScript:: db
- ds 1
-wRedsHouse2FCurScript:: db
-wViridianMartCurScript:: db
-wRoute22GateCurScript:: db
-wCeruleanCityCurScript:: db
- ds 7
-wSSAnneBowCurScript:: db
-wViridianForestCurScript:: db
-wMuseum1FCurScript:: db
-wRoute13CurScript:: db
-wRoute14CurScript:: db
-wRoute17CurScript:: db
-wRoute19CurScript:: db
-wRoute21CurScript:: db
-wSafariZoneGateCurScript:: db
-wRockTunnelB1FCurScript:: db
-wRockTunnel1FCurScript:: db
- ds 1
-wRoute11CurScript:: db
-wRoute12CurScript:: db
-wRoute15CurScript:: db
-wRoute16CurScript:: db
-wRoute18CurScript:: db
-wRoute20CurScript:: db
-wSSAnneB1FRoomsCurScript:: db
-wVermilionCityCurScript:: db
-wPokemonTower2FCurScript:: db
-wPokemonTower3FCurScript:: db
-wPokemonTower4FCurScript:: db
-wPokemonTower5FCurScript:: db
-wPokemonTower6FCurScript:: db
-wPokemonTower7FCurScript:: db
-wRocketHideoutB1FCurScript:: db
-wRocketHideoutB2FCurScript:: db
-wRocketHideoutB3FCurScript:: db
-wRocketHideoutB4FCurScript:: db
- ds 1
-wRoute6GateCurScript:: db
-wRoute8GateCurScript:: db
- ds 1
-wCinnabarIslandCurScript:: db
-wPokemonMansion1FCurScript:: db
- ds 1
-wPokemonMansion2FCurScript:: db
-wPokemonMansion3FCurScript:: db
-wPokemonMansionB1FCurScript:: db
-wVictoryRoad2FCurScript:: db
-wVictoryRoad3FCurScript:: db
-wCeladonCityCurScript:: db
-wFightingDojoCurScript:: db
-wSilphCo2FCurScript:: db
-wSilphCo3FCurScript:: db
-wSilphCo4FCurScript:: db
-wSilphCo5FCurScript:: db
-wSilphCo6FCurScript:: db
-wSilphCo7FCurScript:: db
-wSilphCo8FCurScript:: db
-wSilphCo9FCurScript:: db
-wHallOfFameCurScript:: db
-wChampionsRoomCurScript:: db
-wLoreleisRoomCurScript:: db
-wBrunosRoomCurScript:: db
-wAgathasRoomCurScript:: db
-wCeruleanCaveB1FCurScript:: db
-wVictoryRoad1FCurScript:: db
- ds 1
-wLancesRoomCurScript:: db
- ds 4
-wSilphCo10FCurScript:: db
-wSilphCo11FCurScript:: db
- ds 1
-wFuchsiaGymCurScript:: db
-wSaffronGymCurScript:: db
- ds 1
-wCinnabarGymCurScript:: db
-wGameCornerCurScript:: db
-wRoute16Gate1FCurScript:: db
-wBillsHouseCurScript:: db
-wRoute5GateCurScript:: db
-wPowerPlantCurScript:: ; overload
-wRoute7GateCurScript:: db
- ds 1
-wSSAnne2FCurScript:: db
-wSeafoamIslandsB3FCurScript:: db
-wRoute23CurScript:: db
-wSeafoamIslandsB4FCurScript:: db
-wRoute18Gate1FCurScript:: db
- ds 78
-wGameProgressFlagsEnd::
-
- ds 56
-
-wObtainedHiddenItemsFlags:: flag_array 112
-
-wObtainedHiddenCoinsFlags:: flag_array 16
-
-; $00 = walking
-; $01 = biking
-; $02 = surfing
-wWalkBikeSurfState:: db
-
- ds 10
-
-wTownVisitedFlag:: flag_array NUM_CITY_MAPS
-
-; starts at 502
-wSafariSteps:: dw
-
-; item given to cinnabar lab
-wFossilItem:: db
-; mon that will result from the item
-wFossilMon:: db
-
- ds 2
-
-; trainer classes start at OPP_ID_OFFSET
-wEnemyMonOrTrainerClass:: db
-
-wPlayerJumpingYScreenCoordsIndex:: db
-
-wRivalStarter:: db
-
-IF DEF(_DEBUG)
-; this byte gets set to NUM_POKEMON by DebugStart
-wUnknownDebugByte:: db
-ELSE
- ds 1
-ENDC
-
-wPlayerStarter:: db
-
-; sprite index of the boulder the player is trying to push
-wBoulderSpriteIndex:: db
-
-wLastBlackoutMap:: db
-
-; destination map (for certain types of special warps, not ordinary walking)
-wDestinationMap:: db
-
-wUnusedD71B:: db
-
-; 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)
-wTileInFrontOfBoulderAndBoulderCollisionResult:: db
-
-; destination map for dungeon warps
-wDungeonWarpDestinationMap:: db
-
-; which dungeon warp within the source map was used
-wWhichDungeonWarp:: db
-
-wUnusedD71F:: db
-
- ds 8
-
-; bit 0: using Strength outside of battle
-; bit 1: set by IsSurfingAllowed when surfing's allowed, but the caller resets it after checking the result
-; bit 3: received Old Rod
-; bit 4: received Good Rod
-; bit 5: received Super Rod
-; bit 6: gave one of the Saffron guards a drink
-; bit 7: set by ItemUseCardKey, which is leftover code from a previous implementation of the Card Key
-wd728:: db
-
- ds 1
-
-; redundant because it matches wObtainedBadges
-; used to determine whether to show name on statue and in two NPC text scripts
-wBeatGymFlags:: db
-
- ds 1
-
-; bit 0: if not set, the 3 minimum steps between random battles have passed
-; bit 1: prevent audio fade out
-wd72c:: db
-
-; This variable is used for temporary flags and as the destination map when
-; warping to the Trade Center or Colosseum.
-; bit 0: sprite facing directions have been initialised in the Trade Center
-; bit 3: do scripted warp (used to warp back to Lavender Town from the top of the pokemon tower)
-; bit 4: on a dungeon warp
-; bit 5: don't make NPCs face the player when spoken to
-; Bits 6 and 7 are set by scripts when starting major battles in the storyline,
-; but they do not appear to affect anything. Bit 6 is reset after all battles
-; and bit 7 is reset after trainer battles (but it's only set before trainer
-; battles anyway).
-wd72d:: db
-
-; bit 0: the player has received Lapras in the Silph Co. building
-; bit 1: set in various places, but doesn't appear to have an effect
-; bit 2: the player has healed pokemon at a pokemon center at least once
-; bit 3: the player has a received a pokemon from Prof. Oak
-; bit 4: disable battles
-; bit 5: set when a battle ends and when the player blacks out in the overworld due to poison
-; bit 6: using the link feature
-; bit 7: set if scripted NPC movement has been initialised
-wd72e:: db
-
- ds 1
-
-; 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 or an NPC's movement is being scripted
-wd730:: db
-
- ds 1
-
-; bit 0: play time being counted
-; bit 1: remnant of debug mode; only set by the debug build.
-; 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 player's house (instead sending them to [wLastMap])
-; 3. allows wild battles to be avoided by holding down B
-; furthermore, in the debug build:
-; 4. allows trainers to be avoided by holding down B
-; 5. skips Safari Zone step counter by holding down B
-; 6. skips the NPC who blocks Route 3 before beating Brock by holding down B
-; 7. skips Cerulean City rival battle by holding down B
-; 8. skips Pokémon Tower rival battle 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)
-wd732:: db
-
-; bit 0: running a test battle
-; bit 1: prevent music from changing when entering new map
-; bit 2: skip the joypad check in CheckWarpsNoCollision (used for the forced warp down the waterfall in the Seafoam Islands)
-; bit 3: trainer wants to battle
-; bit 4: use variable [wCurMapScript] 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
-wFlags_D733:: db
-
-; bit 1: set when you beat Lorelei and reset in Indigo Plateau lobby
-; the game uses this to tell when Elite 4 events need to be reset
-wBeatLorelei:: db
-
- ds 1
-
-; 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 / fishing animation
-; bit 7: player sprite spinning due to spin tiles (Rocket hideout / Viridian Gym)
-wd736:: db
-
-wCompletedInGameTradeFlags:: dw
-
- ds 2
-
-wWarpedFromWhichWarp:: db
-wWarpedFromWhichMap:: db
-
- ds 2
-
-wCardKeyDoorY:: db
-wCardKeyDoorX:: db
-
- ds 2
-
-wFirstLockTrashCanIndex:: db
-wSecondLockTrashCanIndex:: db
-
- ds 2
-
-wEventFlags:: flag_array NUM_EVENTS
-
-
-UNION
-wGrassRate:: db
-wGrassMons:: ds 10 * 2
-
- ds 8
-
-wWaterRate:: db
-wWaterMons:: ds 10 * 2
-
-NEXTU
-; linked game's trainer name
-wLinkEnemyTrainerName:: ds NAME_LENGTH
-
- ds 1
-
-wSerialEnemyDataBlock:: ; ds $1a8
-
- ds 9
-
-wEnemyPartyCount:: ds 1
-wEnemyPartySpecies:: ds PARTY_LENGTH + 1
-
-wEnemyMons::
-; wEnemyMon1 - wEnemyMon6
-FOR n, 1, PARTY_LENGTH + 1
-wEnemyMon{d:n}:: party_struct wEnemyMon{d:n}
-ENDR
-
-wEnemyMonOT::
-; wEnemyMon1OT - wEnemyMon6OT
-FOR n, 1, PARTY_LENGTH + 1
-wEnemyMon{d:n}OT:: ds NAME_LENGTH
-ENDR
-
-wEnemyMonNicks::
-; wEnemyMon1Nick - wEnemyMon6Nick
-FOR n, 1, PARTY_LENGTH + 1
-wEnemyMon{d:n}Nick:: ds NAME_LENGTH
-ENDR
-
-ENDU
-
-
-wTrainerHeaderPtr:: dw
-
- ds 6
-
-; the trainer the player must face after getting a wrong answer in the Cinnabar
-; gym quiz
-wOpponentAfterWrongAnswer::
-wUnusedDA38:: db
-
-; index of current map script, mostly used as index for function pointer array
-; mostly copied from map-specific map script pointer and written back later
-wCurMapScript:: db
-
- ds 7
-
-wPlayTimeHours:: db
-wPlayTimeMaxed:: db
-wPlayTimeMinutes:: db
-wPlayTimeSeconds:: db
-wPlayTimeFrames:: db
-
-wSafariZoneGameOver:: db
-
-wNumSafariBalls:: db
-
-
-; 0 if no pokemon is in the daycare
-; 1 if pokemon is in the daycare
-wDayCareInUse:: db
-
-wDayCareMonName:: ds NAME_LENGTH
-wDayCareMonOT:: ds NAME_LENGTH
-
-wDayCareMon:: box_struct wDayCareMon
-
-wMainDataEnd::
-
-
-SECTION "Current Box Data", WRAM0
-
-wBoxDataStart::
-
-wBoxCount:: db
-wBoxSpecies:: ds MONS_PER_BOX + 1
-
-wBoxMons::
-; wBoxMon1 - wBoxMon20
-FOR n, 1, MONS_PER_BOX + 1
-wBoxMon{d:n}:: box_struct wBoxMon{d:n}
-ENDR
-
-wBoxMonOT::
-; wBoxMon1OT - wBoxMon20OT
-FOR n, 1, MONS_PER_BOX + 1
-wBoxMon{d:n}OT:: ds NAME_LENGTH
-ENDR
-
-wBoxMonNicks::
-; wBoxMon1Nick - wBoxMon20Nick
-FOR n, 1, MONS_PER_BOX + 1
-wBoxMon{d:n}Nick:: ds NAME_LENGTH
-ENDR
-wBoxMonNicksEnd::
-
-wBoxDataEnd::
-
-
-SECTION "GBC Palette Data", WRAM0
-
-wGBCBasePalPointers:: ds NUM_ACTIVE_PALS * 2
-wGBCPal:: ds PALETTE_SIZE
-wLastBGP:: db
-wLastOBP0:: db
-wLastOBP1:: db
-wdef5:: db
-wBGPPalsBuffer:: ds NUM_ACTIVE_PALS * PALETTE_SIZE
-
-
-SECTION "Stack", WRAM0
-
-; the stack grows downward
- ds $eb - 1
-wStack:: db
-
-
-INCLUDE "sram.asm"
-
-INCLUDE "hram.asm"