pokepinball/wram.asm
2017-07-08 17:48:39 -07:00

2543 lines
33 KiB
NASM

; OAM Animations use this 3-byte struct.
animation: MACRO
\1FrameCounter:: ds 1
\1Frame:: ds 1
\1Index:: ds 1
endm
SECTION "WRAM Bank 0", WRAM0
wc000:: ; 0xc000
ds $10
wc010:: ; 0xc010
ds $140
wc150:: ; 0xc150
ds $68
wc1b8:: ; 0xc1b8
ds $c8
wc280:: ; 0xc280
ds $9
wc289:: ; 0xc289
ds $37
wc2c0:: ; 0xc2c0
ds $140
wMonAnimatedCollisionMask:: ; 0xc400
ds $80
wc480:: ; 0xc480
ds $40
wc4c0:: ; 0xc4c0
ds $c
wc4cc:: ; 0xc4cc
ds $34
wBottomMessageText:: ; 0xc500 WARNING: text loading code may break if this is moved
; This must be aligned with $100, since there is some logic that depends on the lower byte of the address. (See LoadMonNameIntoEvolutionSelectionList)
ds $100
wBottomMessageBuffer:: ; 0xc600
; This acts as a buffer to hold the scrolling text message.
; Rather than storing the raw text, it stores tile ids for the text.
; The lower-left most tile is at 0xc640, so everything before isn't visible on screen.
ds $100
wStageCollisionMap:: ; 0xc700
ds $300
wca00::
ds $100
wcb00:: ; 0xcb00
ds $500
SECTION "WRAM Bank 1", WRAMX
wOAMBuffer:: ; 0xd000
ds $a0
wOAMBufferEnd:: ; 0xd0a0
SECTION "WRAM Bank 1.1", WRAMX
wPaletteData:: ; 0xd200
ds $80
; This buffer holds the intermediate palette data when fading to a new palette.
; The target palette is held in wPaletteData.
wFadeBGPaletteData:: ; 0xd280
ds $40
wFadeOBJPaletteData:: ; 0xd2c0
ds $40
wPartyMons:: ; 0xd300
ds $100
wAddScoreQueue:: ; 0xd400
ds $60
wAddScoreQueueEnd:: ; 0xd460
wNumPartyMons:: ; 0xd460
; Number of pokemon caught in the current pinball game.
ds $1
wCurSelectedPartyMon:: ; 0xd461
; The index of the selected party pokemon.
; This is mainly used during evolution mode, when the player selects which of their
; caught pokemon to evolve.
ds $1
wCurSelectedPartyMonScrollOffset:: ; 0xd462
; Holds the scrolling offset for the pokemon list when choosing which
; pokemon to evolve.
ds $1
wPartySelectionCursorCounter:: ; 0xd463
; Counter to animate the blinking cursor when choosing a pokemon to evolve.
ds $1
wScoreToAdd:: ; 0xd464
; Holds a 6-byte BCD value to add to the player's score.
ds $6
wScore:: ; 0xd46a
; 6-byte BCD value that represents the player's score.
ds $6
wPlayerName:: ; 0xd470
; Player's 3-character name when entering High Scores.
ds $3
wHighScoreId:: ; 0xd473
; 4 randomly-generated bytes when a high score is achieved.
; These 4 bytes are appended to the high score data structure.
; See the high_scores macro.
; These 4 bytes don't appear to be used by anything. It's possible they're used by the
; "send high scores" capability, but haven't tested it.
ds $4
wAddScoreQueueOffset:: ; 0xd477
ds $1
wd478:: ; 0xd478
ds $1
wd479:: ; 0xd479
ds $1
wd47a:: ; 0xd47a
; BCD buffer
ds $4
wBallType:: ; 0xd47e
; See constants/ball_types.asm
ds $1
wBallTypeCounter:: ; 0xd47f
ds $2
wBallTypeBackup:: ; 0xd481
ds $1
wCurBonusMultiplier:: ; 0xd482
; Current value of the bonus multplier. Incremented from achieving various events during the game, or hitting the two bonus multiplier
; railings. (left one first, then right one). See MAX_BONUS_MULTIPLIER
ds $1
wd483:: ; 0xd483
ds $6
wd489:: ; 0xd489
ds $6
wd48f:: ; 0xd48f
ds $6
wd495:: ; 0xd495
ds $1
wd496:: ; 0xd496
ds $1
wd497:: ; 0xd497
ds $1
wd498:: ; 0xd498
ds $1
wd499:: ; 0xd499
ds $1
wCompletedBonusStage:: ; 0xd49a
; Set to 1 when a bonus stage is successfully cleared.
ds $1
wCurBonusMultiplierFromFieldEvents:: ; 0xd49b
; Current value of the bonus multiplier received from field events, like catching a pokemon or hitting psyduck 3 times. See MAX_BONUS_MULTIPLIER_FIELD_EVENTS.
ds $1
wd49c:: ; 0xd49c
ds $1
wd49d:: ; 0xd49d
ds $1
wd49e:: ; 0xd49e
ds $1
wd49f:: ; 0xd49f
ds $2
wBallSaverIconOn:: ; 0xd4a1
ds $1
wd4a2:: ; 0xd4a2
ds $1
wBallSaverTimerFrames:: ; 0xd4a3
ds $1
wBallSaverTimerSeconds:: ; 0xd4a4
ds $1
wNumTimesBallSavedTextWillDisplay:: ; 0xd4a5
ds $1
wBallSaverTimerFramesBackup:: ; 0xd4a6
ds $1
wBallSaverTimerSecondsBackup:: ; 0xd4a7
ds $1
wNumTimesBallSavedTextWillDisplayBackup:: ; 0xd4a8
ds $1
wd4a9:: ; 0xd4a9
ds $1
wDrawBottomMessageBox:: ; 0xd4aa
; Set to non-zero value if enable drawing the 1-tile high bottom message bar during V-Blank in normal pinball gameplay.
; Set to 0 to disable.
ds $1
wd4ab:: ; 0xd4ab
ds $1
wCurrentStage:: ; 0xd4ac
ds $1
wd4ad:: ; 0xd4ad
ds $1
wd4ae:: ; 0xd4ae
ds $1
wStageCollisionState:: ; 0xd4af
ds $1
wd4b0:: ; 0xd4b0
ds $3
wBallXPos:: ; 0xd4b3
ds $2
wBallYPos:: ; 0xd4b5
ds $2
wPreviousBallXPos:: ; 0xd4b7
ds $2
wPreviousBallYPos:: ; 0xd4b9
ds $2
wBallXVelocity:: ; 0xd4bb
ds $2
wBallYVelocity:: ; 0xd4bd
ds $2
ds $4
wBallSpin:: ; 0xd4c3
ds $1
wBallRotation:: ; 0xd4c4
ds $1
wd4c5:: ; 0xd4c5
ds $1
wd4c6:: ; 0xd4c6
ds $1
wd4c7:: ; 0xd4c7
ds $1
wd4c8:: ; 0xd4c8
ds $1
wd4c9:: ; 0xd4c9
ds $1
wd4ca:: ; 0xd4ca
ds $1
wWhichVoltorb:: ; 0xd4cb
wWhichShellder::
ds $1
wWhichVoltorbId:: ; 0xd4cc
wWhichShellderId::
ds $1
wVoltorb1Animation:: ; 0xd4cd
wShellder1Animation_Unused::
animation wVoltorb1Animation
wVoltorb2Animation:: ; 0xd4d0
wShellder2Animation_Unused::
animation wVoltorb2Animation
wVoltorb3Animation:: ; 0xd4d3
wShellder3Animation_Unused::
animation wVoltorb3Animation
wVoltorbHitAnimationDuration:: ; 0xd4d6
wShellderHitAnimationDuration::
; Number of frames remaining in the light-up animation when a Shellder/Voltorb is hit.
; This single byte actually controls all three of them, since only one can be animated at a time.
ds $1
wWhichAnimatedVoltorb:: ; 0xd4d7
wWhichAnimatedShellder::
; Hold the index (0,1,2) of the Shellder/Voltorb that is currently being animated after it was hit.
ds $1
wWhichBumper:: ; 0xd4d8
; 0 = neither
; 1 = left bumper
; 2 = right bumper
ds $1
wWhichBumperId:: ; 0xd4d9
ds $1
wd4da:: ; 0xd4da
ds $1
wd4db:: ; 0xd4db
ds $1
wPinballLaunchCollision:: ; 0xd4dc
; 0 = pinball isn't resting at the start, waiting to be launched by the player
; 1 = pinball can be launched to start the round
; second byte is unused, but it's written by HandleGameObjectCollision
ds $2
wPinballLaunched:: ; 0xd4de
; 0 = pinball hasn't been launched, yet
; 1 = pinball was launched
ds $1
wd4df:: ; 0xd4df
ds $1
wChoseInitialMap:: ; 0xd4e0
; Set to 1 after the player chooses the initial map during first pinball launch.
ds $1
wInitialMapSelectionIndex:: ; 0xd4e1
ds $1
wNumMapMoves:: ; 0xd4e2
; Number of times the player has successfully completed a map move.
; Resets to 0 after completing 6.
ds $1
wVisitedMaps:: ; 0xd4e3
; List of the visited maps in order.
; It is reset after moving past Indigo Plateau.
; The last byte is unused, since there are only 6 map moves.
ds $7
wTriggeredGameObject:: ; 0xd4ea
; Game objects, such as the two bumpers, Pikachu savers, CAVE, etc. have unique ids.
; This byte saves the object which the pinball is currently colliding with.
ds $1
wTriggeredGameObjectIndex:: ; 0xd4eb
; Many game objects come in pairs, wuch as the two bumpers, Pikachu savers, etc.
; This byte stores which of them the pinball is currently colliding with.
ds $1
wPreviousTriggeredGameObject:: ; 0xd4ec
; Store the previous triggered game object's id, so that the pinball can't trigger
; an object two frames in a row. It has to "un-collide" before it can collide again.
ds $1
wWhichDiglett:: ; 0xd4ed
wWhichPsyduckPoliwag::
ds $1
wWhichDiglettId:: ; 0xd4ee
wWhichPsyduckPoliwagId::
ds $1
wd4ef:: ; 0xd4ef
ds $1
wLeftMapMoveCounter:: ; 0xd4f0
ds $1
wd4f1:: ; 0xd4f1
ds $1
wRightMapMoveCounter:: ; 0xd4f2
ds $1
wLeftMapMoveDiglettAnimationCounter:: ; 0xd4f3
wLeftMapMovePoliwagAnimationCounter::
ds $1
wLeftMapMoveDiglettFrame:: ; 0xd4f4
wLeftMapMovePoliwagFrame::
ds $1
wRightMapMoveDiglettAnimationCounter:: ; 0xd4f5
wRightMapMovePsyduckAnimationCounter::
ds $1
wRightMapMoveDiglettFrame:: ; 0xd4f6
wRightMapMovePsyduckFrame::
ds $1
wLeftMapMoveCounterFramesUntilDecrease:: ; 0xd4f7
; Holds the number of frames remaining until the wLeftMapMoveCounter
; counter will decrease by 1.
ds $2
wRightMapMoveCounterFramesUntilDecrease:: ; 0xd4f9
; Holds the number of frames remaining until the wRightMapMoveCounter
; counter will decrease by 1.
ds $2
wBellsproutCollision:: ; 0xd4fb
; Second byte is set by HandleGameObjectCollision, but is unused
ds $2
wBellsproutAnimation:: ; 0xd4fd
animation wBellsproutAnimation
wStaryuCollision:: ; 0xd500
; Second byte is set by HandleGameObjectCollision, but is unused
ds $2
wd502:: ; 0xd502
ds $1
wd503:: ; 0xd503
ds $1
wd504:: ; 0xd504
ds $1
wd505:: ; 0xd505
ds $1
wd506:: ; 0xd506
ds $1
wSpinnerCollision:: ; 0xd507
; Second byte is set by HandleGameObjectCollision, but is unused
ds $2
wd509:: ; 0xd509
ds $1
wd50a:: ; 0xd50a
ds $1
wd50b:: ; 0xd50b
ds $1
wd50c:: ; 0xd50c
ds $1
wWhichCAVELight:: ; 0xd50d
ds $1
wWhichCAVELightId:: ; 0xd50e
ds $1
wd50f:: ; 0xd50f
ds $3
wd512:: ; 0xd512
ds $1
wd513:: ; 0xd513
ds $1
wd514:: ; 0xd514
ds $1
wWhichPikachu:: ; 0xd515
ds $1
wWhichPikachuId:: ; 0xd516
ds $1
wPikachuSaverCharge:: ; 0xd517
; Holds the amount of Pikachu "charge" that has been generated by spinning the spinner
; in the right alley. The charge's value ranges from 0 - 15.
ds $1
wd518:: ; 0xd518
ds $1
wPikachuSaverAnimation:: ; 0xd519
animation wPikachuSaverAnimation
wd51c:: ; 0xd51c
ds $1
wPikachuSaverSlotRewardActive:: ; 0xd51d
; Set to 1 if the Pikachu Saver slot reward is active. 0 otherwise.
ds $1
wd51e:: ; 0xd51e
ds $1
wWhichBoardTrigger:: ; 0xd51f
ds $1
wWhichBoardTriggerId:: ; 0xd520
ds $1
wCollidedAlleyTriggers:: ; 0xd521
; These bytes are pretty unnecessary, but the original code decided it would use a roundabout way to decide which function to call based on wWhichBoardTriggerId was collided with.
ds $8
ds $6 ; free space
wIndicatorStates:: ; 0xd52f
ds $13
wLeftAlleyTrigger:: ; 0xd542
ds $1
wLeftAlleyCount:: ; 0xd543
ds $1
wRightAlleyTrigger:: ; 0xd544
ds $1
wRightAlleyCount:: ; 0xd545
ds $1
wSecondaryLeftAlleyTrigger:: ; 0xd546
ds $2
wPinballIsVisible:: ; 0xd548
; Set to 1 if the pinball is visible in play.
; Set to 0 when the pinball disappears in things like the Slot, Slowpoke, Cloyster, Bellsprout, etc.
; When it's set to 0, it disables tilt effects on the pinball.
ds $1
wEnableBallGravityAndTilt:: ; 0xd549
; Set to 1 to enable the effect of gravity and tilt on the pinball.
; 0 disables these forces. Used for things likes the initial pinball launch or to hold the ball stationary.
ds $1
wCurrentMap:: ; 0xd54a
ds $1
wInSpecialMode:: ; 0xd54b
; Set to 1 if currently in special game mode. See wSpecialMode.
ds $1
wd54c:: ; 0xd54c
ds $1
wd54d:: ; 0xd54d
ds $1
wd54e:: ; 0xd54e
ds $1
wd54f:: ; 0xd54f
ds $1
wSpecialMode:: ; 0xd550
; Represents the current pinball mode. Example special modes would be, Catch'Em, Evolution, Map Move
; See SPECIAL_MODE constants.
ds $1
wd551:: ; 0xd551
ds $1
wCurrentEvolutionMon:: ; 0xd552
ds $1
wCurrentEvolutionType:: ; 0xd553
ds $1
wd554:: ; 0xd554
ds $1
wd555:: ; 0xd555
ds $1
wd556:: ; 0xd556
ds $1
wd557:: ; 0xd557
ds $1
wd558:: ; 0xd558
ds $1
wd559:: ; 0xd559
ds $1
wd55a:: ; 0xd55a
ds $1
wRareMonsFlag:: ; 0xd55b
ds $1
wd55c:: ; 0xd55c
ds $1
wd55d:: ; 0xd55d
ds $1
wd55e:: ; 0xd55e
ds $1
wd55f:: ; 0xd55f
ds $1
wd560:: ; 0xd560
ds $1
wd561:: ; 0xd561
ds $1
wd562:: ; 0xd562
ds $1
wd563:: ; 0xd563
ds $1
wd564:: ; 0xd564
ds $1
wd565:: ; 0xd565
ds $1
wd566:: ; 0xd566
ds $c
wd572:: ; 0xd572
ds $6
wd578:: ; 0xd578
ds $1
wCurrentCatchEmMon:: ; 0xd579
ds $1
wTimerSeconds:: ; 0xd57a
ds $1
wTimerMinutes:: ; 0xd57b
ds $1
wTimerFrames:: ; 0xd57c
ds $1
wTimerActive:: ; 0xd57d
; Set to 1 when the Timer is displayed and counting down.
ds $1
wd57e:: ; 0xd57e
ds $1
wd57f:: ; 0xd57f
ds $1
wd580:: ; 0xd580
ds $1
wd581:: ; 0xd581
ds $1
wTimerDigits:: ; 0xd582
; first byte = minutes
; second byte = tens place
; third byte = ones place
; fourth byte = unused, but still written to
ds $4
wd586:: ; 0xd586
ds $30
wd5b6:: ; 0xd5b6 a 24 wide block starts here and is filled before catch mode
ds $5
wWildMonIsHittable:: ; 0xd5bb
; Set to 1 when the wild pokemon is animated and hittable with the pinball.
ds $1
wd5bc:: ; 0xd5bc
ds $1
wd5bd:: ; 0xd5bd
ds $1
wd5be:: ; 0xd5be
ds $1
wBallHitWildMon:: ; 0xd5bf
ds $1
wNumMonHits:: ; 0xd5c0
ds $1
wd5c1:: ; 0xd5c1
ds $1
wd5c2:: ; 0xd5c2
ds $1
wd5c3:: ; 0xd5c3
ds $1
wd5c4:: ; 0xd5c4
ds $1
wNumMewHitsLow:: ; 0xd5c5
ds $1
wd5c6:: ; 0xd5c6
ds $1
wWildMonCollision:: ; 0xd5c7
; Set by HandleGameObjectCollision
; Second byte gets set, but is unused
ds $2
ds $1
wd5ca:: ; 0xd5ca set to 1 by a commonly called text function that is called at the start of catch and raises the score bar
ds $1
wd5cb:: ; 0xd5cb set to 0 if the above is 0 during Func_33e3
ds $1
wScrollingTextStruct1:: ; 0xd5cc Start of a scrolling message struct that contains 8 1-byte vars.
; Byte 1: Toggles if enabled. 0 is off, non-0 is on
; Byte 2: is how many frames until the next scroll
; Byte 3: holds how long, in frames, it should take for the scroll to move 1 tile
; Byte 4: is the current position to place the start of the text
; Byte 5: is where in the scroll the message should stop for an extended period
; Byte 6: is how many frames the extended stop from Byte 5 has left
; Byte 7: is a pointer to the source text's position in the buffer
; Byte 8: is decremented each scroll and scroll denied by the stop
; Scrolling text relies on byte allignment for the text buffer and display area
ds $8
wScrollingTextStruct2:: ; 0xd5d4 Start of a scrolling struct2
ds $4
wd5d8:: ; 0xd5d8
ds $3
wd5db:: ; 0xd5db
ds $1
wScrollingTextStruct3:: ; 0xd5dc Start of a scrolling struct3
ds $8
wd5e4:: ; 0xd5e4
ds $5
wd5e9:: ; 0xd5e9
ds $5
wd5ee:: ; 0xd5ee
ds $5
wCapturingMon:: ; 0xd5f3
; Set to 1 when the capturing animation starts.
ds $1
wBallCaptureAnimation:: ; 0xd5f4
animation wBallCaptureAnimation
wWhichPinballUpgradeTrigger:: ; 0xd5f7
ds $1
wWhichPinballUpgradeTriggerId:: ; 0xd5f8
ds $1
wd5f9:: ; 0xd5f9
ds $2
wd5fb:: ; 0xd5fb
ds $1
wd5fc:: ; 0xd5fc
ds $1
wd5fd:: ; 0xd5fd
ds $1
wDittoSlotCollision:: ; 0xd5fe
; Second byte is set by HandleGameObjectCollision, but is unused
ds $2
wd600:: ; 0xd600
ds $1
wSlotCollision:: ; 0xd601
; Second byte is set by HandleGameObjectCollision, but is unused
ds $2
wd603:: ; 0xd603
ds $1
wd604:: ; 0xd604
ds $2
wd606:: ; 0xd606
ds $1
wd607:: ; 0xd607
ds $1
wd608:: ; 0xd608
ds $1
wd609:: ; 0xd609
ds $1
wWhichBonusMultiplierRailing:: ; 0xd60a
ds $1
wWhichBonusMultiplierRailingId:: ; 0xd60b
ds $1
wBonusMultiplierTensDigit:: ; 0xd60c
; Holds the tens digit for the current bonus multiplier value. This number is displayed on the left-side bonus multiplier railing.
ds $1
wBonusMultiplierOnesDigit:: ; 0xd60d
; Holds the ones digit for the current bonus multiplier value. This number is displayed on the right-side bonus multiplier railing.
ds $1
wd60e:: ; 0xd60e
ds $1
wd60f:: ; 0xd60f
ds $1
wd610:: ; 0xd610
ds $1
wd611:: ; 0xd611
ds $1
wd612:: ; 0xd612
ds $1
wd613:: ; 0xd613
ds $1
wd614:: ; 0xd614
ds $1
wd615:: ; 0xd615
ds $1
wGameOver:: ; 0xd616
ds $3
wd619:: ; 0xd619
ds $1
wd61a:: ; 0xd61a
ds $1
wd61b:: ; 0xd61b
ds $2
wd61d:: ; 0xd61d
ds $1
wd61e:: ; 0xd61e
ds $1
wCurSlotBonus:: ; 0xd61f
ds $1
wSlotAnyPokemonCaught:: ; 0xd620
; Used by the slot logic to store whether or not any pokemon are caught.
ds $1
wd621:: ; 0xd621
ds $1
wCatchEmOrEvolutionSlotRewardActive:: ; 0xd622
; Set to 1 if the "Start Catch 'Em Mode" Slot Reward is received.
; Set to 2 if the "Start Evolution Mode" Slot Reward is received.
ds $1
wBonusStageSlotRewardActive:: ; 0xd623
; Set to 1 when the "Go To Bonus" Slot Reward is received.
ds $1
wPreviousNumPokeballs:: ; 0xd624
; See wNumPokeballs. This holds the previous number of them to handle the blinking
; animation, so that it only blinks the newly-acquired pokeballs.
ds $1
wNumPokeballs:: ; 0xd625
; The number of Pokeballs that appear directly underneath the billboard area.
; When you get 3 of these, the bonus stage opens up. This number is increased
; when doing things like catching of evolving a pokemon.
ds $1
wPokeballBlinkingCounter:: ; 0xd626
; Counts the number of frames left in the blinking pokeballs animation.
; These Pokeballs are located underneath the billboard area, and blink after
; doing things such as catching or evolving a pokemon.
ds $1
ds $1 ; unused byte
wNumPokemonCaughtInBallBonus:: ; 0xd628
; Counts the number of pokemon caught in a single ball bonus.
ds $1
wNumPokemonEvolvedInBallBonus:: ; 0xd629
; Counts the number of pokemon evolved in a single ball bonus.
ds $1
wNumBellsproutEntries:: ; 0xd62a
; Counts the number of times Bellsprout was entered without triggering Catch'Em mode.
ds $1
wNumDugtrioTriples:: ; 0xd62b
; Counts the number of times either of the two Dugtrio was hit 3 times on the red field.
ds $1
wNumCAVECompletions:: ; 0xd62c
; Counts the number of times all CAVE lights were lit.
ds $1
wNumSpinnerTurns:: ; 0xd62d
; Counts the number of spinner turns in a single ball bonus.
ds $1
wNumPikachuSaves:: ; 0xd62e
; Counts the number of times the ball was saved by a charged Pikachu.
; This is unused, but was probably intended to be used in the Ball Bonus.
ds $1
wNumMewtwoBonusCompletions:: ; 0xd62f
ds $1
wSlowpokeCollision:: ; 0xd630
; Second byte is set by HandleGameObjectCollision, but is unused
ds $2
wSlowpokeAnimation:: ; 0xd632
animation wSlowpokeAnimation
wCloysterCollision:: ; 0xd635
; Second byte is set by HandleGameObjectCollision, but is unused
ds $2
wCloysterAnimation:: ; 0xd637
animation wCloysterAnimation
wNumSlowpokeEntries:: ; 0xd63a
; Counts the number of times Slowpoke was entered without triggering Evolution mode.
ds $1
wNumCloysterEntries:: ; 0xd63b
; Counts the number of times Cloyster was entered without triggering Catch'Em mode.
ds $1
wNumPsyduckTriples:: ; 0xd63c
; Counts the number of times Psyduck was hit 3 times.
ds $1
wNumPoliwagTriples:: ; 0xd63d
; Counts the number of times Poliwag was hit 3 times.
ds $1
wBlueStageForceFieldDirection:: ; 0xd63e
ds $1
wIndicatorState2Backup:: ; 0xd63f
ds $1
wBlueStageForceFieldGfxNeedsLoading:: ; 0xd640
; A flag to signal that the force field arrow graphics need to be updated because
; it recently changed direction.
ds $1
wBlueStageForceFieldFlippedDown:: ; 0xd641
ds $1
wd642:: ; 0xd642
ds $1
wd643:: ; 0xd643
ds $1
wd644:: ; 0xd644
ds $1
wd645:: ; 0xd645
ds $1
wd646:: ; 0xd646
ds $1
wd647:: ; 0xd647
ds $1
wd648:: ; 0xd648
ds $1
wd649:: ; 0xd649
ds $1
wd64a:: ; 0xd64a
ds $1
wd64b:: ; 0xd64b
ds $1
wBlueFieldForceFieldFrameCounter:: ; 0xd64c
; Continuosly counts up to 60--wraps around to 0.
ds $1
wBlueFieldForceFieldSecondsCounter:: ; 0xd64d
; Increments once every second, based on wBlueFieldForceFieldFrameCounter.
; When it hits 5 seconds, it wraps back to 0.
ds $1
wd64e:: ; 0xd64e
ds $1
wd64f:: ; 0xd64f
ds $1
wd650:: ; 0xd650
ds $1
wd651:: ; 0xd651
ds $1
wd652:: ; 0xd652
ds $1
wd653:: ; 0xd653
ds $1
wWhichGravestone:: ; 0xd654
; second byte is unused
ds $2
wd656:: ; 0xd656
ds $1
wd657:: ; 0xd657
ds $1
wd658:: ; 0xd658
ds $1
wd659:: ; 0xd659
ds $2
wGastly1AnimationState:: ; 0xd65b
ds $2
wd65d:: ; 0xd65d
ds $1
wGastly1XPos:: ; 0xd65e
ds $2
wGastly1YPos:: ; 0xd660
ds $2
wd662:: ; 0xd662
ds $2
wGastly2AnimationState:: ; 0xd664
ds $2
wd666:: ; 0xd666
ds $1
wGastly2XPos:: ; 0xd668
ds $2
wGastly2YPos:: ; 0xd66a
ds $2
wd66b:: ; 0xd66b
ds $2
wGastly3AnimationState:: ; 0xd66d
ds $2
wd66f:: ; 0xd66f
ds $1
wGastly3XPos:: ; 0xd671
ds $2
wGastly3YPos:: ; 0xd673
ds $2
wd674:: ; 0xd674
ds $1
wd675:: ; 0xd675
ds $2
wd677:: ; 0xd677
ds $2
wd679:: ; 0xd679
ds $2
wd67b:: ; 0xd67b
ds $1
wd67c:: ; 0xd67c
ds $1
wd67d:: ; 0xd67d
ds $1
wd67e:: ; 0xd67e
ds $2
wHaunter1AnimationState:: ; 0xd680
ds $2
wd682:: ; 0xd682
ds $1
wHaunter1XPos:: ; 0xd683
ds $2
wHaunter1YPos:: ; 0xd685
ds $2
wd687:: ; 0xd687
ds $2
wHaunter2AnimationState:: ; 0xd689
ds $1
ds $1
wd68b:: ; 0xd68b
ds $1
wHaunter2XPos:: ; 0xd68c
ds $2
wHaunter2YPos:: ; 0xd68e
ds $2
wd690:: ; 0xd690
ds $1
wd691:: ; 0xd691
ds $2
wd693:: ; 0xd693
ds $2
wd695:: ; 0xd695
ds $1
wd696:: ; 0xd696
ds $1
wd697:: ; 0xd697
ds $1
wd698:: ; 0xd698
ds $2
wGengarAnimationState:: ; 0xd69a
ds $1
wd69b:: ; 0xd69b
ds $1
wd69c:: ; 0xd69c
ds $1
wGengarXPos:: ; 0xd69d
ds $2
wGengarYPos:: ; 0xd69f
ds 2
wd6a1:: ; 0xd6a1
ds $1
wd6a2:: ; 0xd6a2
ds $1
wd6a3:: ; 0xd6a3
ds $1
wd6a4:: ; 0xd6a4
ds $1
wd6a5:: ; 0xd6a5
ds $1
wd6a6:: ; 0xd6a6
ds $1
wd6a7:: ; 0xd6a7
ds $1
wd6a8:: ; 0xd6a8
ds $1
wd6a9:: ; 0xd6a9
ds $1
wd6aa:: ; 0xd6aa
ds $2
wd6ac:: ; 0xd6ac
ds $1
wd6ad:: ; 0xd6ad
ds $1
wd6ae:: ; 0xd6ae
ds $1
wd6af:: ; 0xd6af
ds $1
wd6b0:: ; 0xd6b0
ds $1
wd6b1:: ; 0xd6b1
ds $1
wd6b2:: ; 0xd6b2
ds $1
wd6b3:: ; 0xd6b3
ds $1
wd6b4:: ; 0xd6b4
ds $1
wd6b5:: ; 0xd6b5
ds $1
wd6b6:: ; 0xd6b6
ds $4
wd6ba:: ; 0xd6ba
ds $1
wd6bb:: ; 0xd6bb
ds $2
wd6bd:: ; 0xd6bd
ds $1
wd6be:: ; 0xd6be
ds $7
wd6c5:: ; 0xd6c5
ds $1
wd6c6:: ; 0xd6c6
ds $7
wd6cd:: ; 0xd6cd
ds $1
wd6ce:: ; 0xd6ce
ds $7
wd6d5:: ; 0xd6d5
ds $1
wd6d6:: ; 0xd6d6
ds $7
wd6dd:: ; 0xd6dd
ds $1
wd6de:: ; 0xd6de
ds $7
wd6e5:: ; 0xd6e5
ds $1
wd6e6:: ; 0xd6e6
ds $1
wd6e7:: ; 0xd6e7
ds $2
wMeowthAnimation:: ; 0xd6e9
animation wMeowthAnimation
wd6ec:: ; 0xd6ec
ds $1
wMeowthXPosition:: ; 0xd6ed
ds $1
wMeowthYPosition:: ; 0xd6ee
ds $2
wMeowthXMovement:: ; 0xd6f0
ds $1
wMeowthYMovement:: ; 0xd6f1
ds $2
wd6f3:: ; 0xd6f3
ds $1
wd6f4:: ; 0xd6f4
ds $1
wd6f5:: ; 0xd6f5
ds $1
wd6f6:: ; 0xd6f6
ds $1
wd6f7:: ; 0xd6f7
ds $1
wd6f8:: ; 0xd6f8
ds $1
wd6f9:: ; 0xd6f9
ds $1
wd6fa:: ; 0xd6fa
ds $1
wd6fb:: ; 0xd6fb
ds $1
wd6fc:: ; 0xd6fc
ds $1
wd6fd:: ; 0xd6fd
ds $2
wd6ff:: ; 0xd6ff
ds $1
wd700:: ; 0xd700
ds $1
wd701:: ; 0xd701
ds $1
wd702:: ; 0xd702
ds $1
wd703:: ; 0xd703
ds $1
wd704:: ; 0xd704
ds $1
wd705:: ; 0xd705
ds $1
wd706:: ; 0xd706
ds $1
wd707:: ; 0xd707
ds $4
wd70b:: ; 0xd70b
ds $1
wd70c:: ; 0xd70c
ds $3
wMeowthStageBonusCounter:: ; 0xd70f
ds $1
wd710:: ; 0xd710
ds $1
wMeowthStageScore:: ; 0xd711
ds $1
wd712:: ; 0xd712
ds $1
wd713:: ; 0xd713
ds $1
wd714:: ; 0xd714
ds $1
wd715:: ; 0xd715
ds $1
wd716:: ; 0xd716
ds $1
wd717:: ; 0xd717
ds $1
wd718:: ; 0xd718
ds $1
wd719:: ; 0xd719
ds $1
wd71a:: ; 0xd71a
ds $1
wd71b:: ; 0xd71b
ds $1
wd71c:: ; 0xd71c
ds $2
wd71e:: ; 0xd71e
ds $1
wd71f:: ; 0xd71f
ds $1
wd720:: ; 0xd720
ds $1
wd721:: ; 0xd721
ds $1
wd722:: ; 0xd722
ds $1
wd723:: ; 0xd723
ds $1
wd724:: ; 0xd724
ds $1
wd725:: ; 0xd725
ds $1
wd726:: ; 0xd726
ds $1
wd727:: ; 0xd727
ds $1
wd728:: ; 0xd728
ds $1
wd729:: ; 0xd729
ds $1
wd72a:: ; 0xd72a
ds $1
wd72b:: ; 0xd72b
ds $1
wd72c:: ; 0xd72c
ds $5
wd731:: ; 0xd731
ds $1
wd732:: ; 0xd732
ds $1
wd733:: ; 0xd733
ds $1
wd734:: ; 0xd734
ds $1
wd735:: ; 0xd735
ds $1
wd736:: ; 0xd736
ds $3
wd739:: ; 0xd739
ds $1
wd73a:: ; 0xd73a
ds $1
wd73b:: ; 0xd73b
ds $1
wd73c:: ; 0xd73c
ds $1
wDiglettStates:: ; 0xd73d
ds $1f
wCurrentDiglett:: ; 0xd75c
ds $1
wDiglettsInitializedFlag:: ; 0xd75d
ds $1
wDiglettInitDelayCounter:: ; 0xd75e
ds $1
wd75f:: ; 0xd75f
ds $2
wDugtrioAnimation:: ; 0xd761
animation wDugtrioAnimation
wDugrioState:: ; 0xd764
ds $1
wd765:: ; 0xd765
ds $1
wd766:: ; 0xd766
ds $1
wd767:: ; 0xd767
ds $1
wd768:: ; 0xd768
ds $3
wd76b:: ; 0xd76b
ds $1
wd76c:: ; 0xd76c
ds $1
wd76d:: ; 0xd76d
ds $1
wd76e:: ; 0xd76e
ds $2
wd770:: ; 0xd770
ds $1
wd771:: ; 0xd771
ds $1
wd772:: ; 0xd772
ds $3
wd775:: ; 0xd775
ds $1
wd776:: ; 0xd776
ds $1
wd777:: ; 0xd777
ds $1
wd778:: ; 0xd778
ds $2
wd77a:: ; 0xd77a
ds $1
wd77b:: ; 0xd77b
ds $1
wd77c:: ; 0xd77c
ds $3
wd77f:: ; 0xd77f
ds $1
wd780:: ; 0xd780
ds $1
wd781:: ; 0xd781
ds $1
wd782:: ; 0xd782
ds $2
wd784:: ; 0xd784
ds $1
wd785:: ; 0xd785
ds $1
wd786:: ; 0xd786
ds $b
wd791:: ; 0xd791
ds $1
wd792:: ; 0xd792
ds $1
wd793:: ; 0xd793
ds $1
wd794:: ; 0xd794
ds $1
wd795:: ; 0xd795
ds $1
wd796:: ; 0xd796
ds $1
wd797:: ; 0xd797
ds $1
wd798:: ; 0xd798
ds $1
wd799:: ; 0xd799
ds $1
wd79a:: ; 0xd79a
ds $2
wd79c:: ; 0xd79c
ds $2
wd79e:: ; 0xd79e
ds $1
wd79f:: ; 0xd79f
ds $1
wd7a0:: ; 0xd7a0
ds $1
wLeftTiltCounter:: ; 0xd7a1
ds $1
wLeftTiltReset:: ; 0xd7a2
ds $1
wRightTiltCounter:: ; 0xd7a3
ds $1
wRightTiltReset:: ; 0xd7a4
ds $1
wUpperTiltCounter:: ; 0xd7a5
ds $1
wUpperTiltReset:: ; 0xd7a6
ds $1
wLeftTiltPushing:: ; 0xd7a7
ds $1
wRightTiltPushing:: ; 0xd7a8
ds $1
wUpperTiltPushing:: ; 0xd7a9
ds $1
wd7aa:: ; 0xd7aa
ds $1
wSCX:: ; 0xd7ab
ds $1
wd7ac:: ; 0xd7ac
ds $1
wd7ad:: ; 0xd7ad
ds $1
wd7ae:: ; 0xd7ae
ds $1
wd7af:: ; 0xd7af
ds $1
wd7b0:: ; 0xd7b0
ds $1
wd7b1:: ; 0xd7b1
ds $1
wd7b2:: ; 0xd7b2
ds $1
wd7b3:: ; 0xd7b3
ds $1
wd7b4:: ; 0xd7b4
ds $1
wd7b5:: ; 0xd7b5
ds $1
wLeftFlipperAnimationState:: ; 0xd7b6
ds $1
wRightFlipperAnimationState:: ; 0xd7b7
ds $1
wFlipperXCollisionAttribute:: ; 0xd7b8
ds $1
wFlipperCollision:: ; 0xd7b9
ds $1
wFlipperXForce:: ; 0xd7ba
dw
wFlipperYForce:: ; 0xd7bc
dw
wd7be:: ; 0xd7be
ds $1
wStageSong:: ; 0xd7bf
ds $1
wStageSongBank:: ; 0xd7c0
ds $1
wd7c1:: ; 0xd7c1
ds $1
wd7c2:: ; 0xd7c2
ds $1
wSubTileBallXPos:: ; 0xd7c3
ds $1
wSubTileBallYPos:: ; 0xd7c4
ds $1
wUpperLeftCollisionAttribute:: ; 0xd7c5
ds $1
wLowerLeftCollisionAttribute:: ; 0xd7c6
ds $1
wUpperRightCollisionAttribute:: ; 0xd7c7
ds $1
wLowerRightCollisionAttribute:: ; 0xd7c8
ds $1
wd7c9:: ; 0xd7c9
ds $10
wd7d9:: ; 0xd7d9
ds $10
wd7e9:: ; 0xd7e9
ds $1
wCollisionForceAngle:: ; 0xd7ea
ds $1
wd7eb:: ; 0xd7eb
ds $1
wStageCollisionMapPointer:: ; 0xd7ec
ds $2
wStageCollisionMapBank:: ; 0xd7ee
ds $1
wStageCollisionMasksPointer:: ; 0xd7ef
ds $2
wStageCollisionMasksBank:: ; 0xd7f1
ds $1
wd7f2:: ; 0xd7f2
ds $1
wBallPositionPointerOffsetFromStageTopLeft:: ; 0xd7f3
dw
wCurCollisionAttribute:: ; 0xd7f5
ds $1
wd7f6:: ; 0xd7f6
ds $1
wd7f7:: ; 0xd7f7
ds $1
wd7f8:: ; 0xd7f8
ds $1
wInGameMenuIndex:: ; 0xd7f9
ds $1
wd7fa:: ; 0xd7fa
ds $1
wd7fb:: ; 0xd7fb
ds $1
wd7fc:: ; 0xd7fc
ds $1
wd7fd:: ; 0xd7fd
ds $1
wd7fe:: ; 0xd7fe
ds $2
wSFXTimer:: ; 0xd800
ds $1
wd801:: ; 0xd801
ds $1
wOAMBufferSize:: ; 0xd802
ds $1
wd803:: ; 0xd803
ds $1
wd804:: ; 0xd804
ds $1
wd805:: ; 0xd805 enables unused and odd PlaceString
ds $1
wd806:: ; 0xd806
ds $1
wd807:: ; 0xd807
ds $1
; These three bytes track different joypad states cummulatively, until they are manually cleared.
; They inherit from their similarly-named counterparts found in hram.asm. (See ReadJoyPad)
wJoypadStatesPersistent:: ; 0xd808
wJoypadStatePersistent::
ds $1
wNewlyPressedButtonsPersistent:: ; 0xd809
ds $1
wPressedButtonsPersistent:: ; 0xd80a
ds $1
ds $1 ; unused byte
wBGP:: ; 0xd80c
ds $1
wOBP0:: ; 0xd80d
ds $1
wOBP1:: ; 0xd80e
ds $1
wd80f:: ; 0xd80f
ds $1
wd810:: ; 0xd810
ds $1
wd811:: ; 0xd811
ds $1
wd812:: ; 0xd812
ds $18
wd82a:: ; 0xd82a
ds $7
wd831:: ; 0xd831
ds $c
wd83d:: ; 0xd83d
ds $9
wd846:: ; 0xd846
ds $2
wd848:: ; 0xd848
ds $1
wd849:: ; 0xd849
ds $1
wd84a:: ; 0xd84a
ds $1
wd84b:: ; 0xd84b
ds $4
wd84f:: ; 0xd84f
ds $c
wCurrentSongBank:: ; 0xd85b
ds $2
wd85d:: ; 0xd85d
ds $1
wd85e:: ; 0xd85e
ds $1
wd85f:: ; 0xd85f
ds $1
wd860:: ; 0xd860
ds $1
wd861:: ; 0xd861
ds $1
wd862:: ; 0xd862
ds $1
wd863:: ; 0xd863
ds $1
wd864:: ; 0xd864
ds $1
wd865:: ; 0xd865
ds $1
wd866:: ; 0xd866
ds $1
wd867:: ; 0xd867
ds $1
wd868:: ; 0xd868
ds $1
wd869:: ; 0xd869
ds $1
wd86a:: ; 0xd86a
ds $1
wd86b:: ; 0xd86b
ds $1
wd86c:: ; 0xd86c
ds $1
wd86d:: ; 0xd86d
ds $1
wd86e:: ; 0xd86e
ds $1d
wd88b:: ; 0xd88b
ds $12
wd89d:: ; 0xd89d
ds $a
wd8a7:: ; 0xd8a7
ds $1
wd8a8:: ; 0xd8a8
ds $1
wd8a9:: ; 0xd8a9
ds $1
wd8aa:: ; 0xd8aa
ds $1
wd8ab:: ; 0xd8ab
ds $1
wd8ac:: ; 0xd8ac
ds $1
wd8ad:: ; 0xd8ad
ds $1
wd8ae:: ; 0xd8ae
ds $1
wd8af:: ; 0xd8af
ds $1
wd8b0:: ; 0xd8b0
ds $1
wd8b1:: ; 0xd8b1
ds $1
wd8b2:: ; 0xd8b2
ds $1
wd8b3:: ; 0xd8b3
ds $1
wd8b4:: ; 0xd8b4
ds $1
wd8b5:: ; 0xd8b5
ds $1
wd8b6:: ; 0xd8b6
ds $1
wd8b7:: ; 0xd8b7
ds $1
wd8b8:: ; 0xd8b8
ds $1
wd8b9:: ; 0xd8b9
ds $1
wd8ba:: ; 0xd8ba
ds $1
wd8bb:: ; 0xd8bb
ds $1
wd8bc:: ; 0xd8bc
ds $1
wd8bd:: ; 0xd8bd
ds $1
wd8be:: ; 0xd8be
ds $1
wd8bf:: ; 0xd8bf
ds $1
wd8c0:: ; 0xd8c0
ds $1
wd8c1:: ; 0xd8c1
ds $1
wd8c2:: ; 0xd8c2
ds $1
wd8c3:: ; 0xd8c3
ds $1
wd8c4:: ; 0xd8c4
ds $1
wd8c5:: ; 0xd8c5
ds $1
wd8c6:: ; 0xd8c6
ds $1
wd8c7:: ; 0xd8c7
ds $1
wd8c8:: ; 0xd8c8
ds $2
wd8ca:: ; 0xd8ca
ds $1
wd8cb:: ; 0xd8cb
ds $1
wd8cc:: ; 0xd8cc
ds $1
wd8cd:: ; 0xd8cd
ds $1
wd8ce:: ; 0xd8ce
ds $1
wd8cf:: ; 0xd8cf
ds $1
wd8d0:: ; 0xd8d0
ds $1
wd8d1:: ; 0xd8d1
ds $1
wd8d2:: ; 0xd8d2
ds $1
wd8d3:: ; 0xd8d3
ds $1
wd8d4:: ; 0xd8d4
ds $1
wd8d5:: ; 0xd8d5
ds $1
wd8d6:: ; 0xd8d6
ds $1
wd8d7:: ; 0xd8d7
ds $1
wd8d8:: ; 0xd8d8
ds $3
wd8db:: ; 0xd8db
ds $1
wd8dc:: ; 0xd8dc
ds $1
wd8dd:: ; 0xd8dd
ds $1
wd8de:: ; 0xd8de
ds $2
wd8e0:: ; 0xd8e0
ds $1
wd8e1:: ; 0xd8e1
ds $1
wd8e2:: ; 0xd8e2
ds $1
wd8e3:: ; 0xd8e3
ds $1
wd8e4:: ; 0xd8e4
ds $1
wd8e5:: ; 0xd8e5
ds $1
wd8e6:: ; 0xd8e6
ds $1
wd8e7:: ; 0xd8e7
ds $1
wd8e8:: ; 0xd8e8
ds $1
wd8e9:: ; 0xd8e9
ds $1
wd8ea:: ; 0xd8ea
ds $1
wd8eb:: ; 0xd8eb
ds $1
wd8ec:: ; 0xd8ec
ds $1
wd8ed:: ; 0xd8ed
ds $1
wd8ee:: ; 0xd8ee
ds $1
wd8ef:: ; 0xd8ef
ds $1
wd8f0:: ; 0xd8f0
ds $1
wCurrentScreen:: ; 0xd8f1
ds $1
wScreenState:: ; 0xd8f2
ds $1
ds $3
wd8f6:: ; 0xd8f6
ds $12
wd908:: ; 0xd908
ds $1
wTitleScreenCursorSelection:: ; 0xd909
ds $1
wTitleScreenGameStartCursorSelection:: ; 0xd90a
ds $2
wTitleScreenBlinkAnimationFrame:: ; 0xd90c
ds $1
wTitleScreenBlinkAnimationCounter:: ; 0xd90d
ds $1
wTitleScreenBouncingBallAnimationFrame:: ; 0xd90e
ds $1
wTitleScreenPokeballAnimationCounter:: ; 0xd90f
ds $1
wd910:: ; 0xd910
ds $1
wd911:: ; 0xd911
ds $1
wFieldSelectBlinkingBorderTimer:: ; 0xd912
ds $1
wSelectedFieldIndex:: ; 0xd913
ds $1
wFieldSelectBlinkingBorderFrame:: ; 0xd914
ds $1
wd915:: ; 0xd915
ds $1
wd916:: ; 0xd916
ds $1
wd917:: ; 0xd917
ds $1
wd918:: ; 0xd918
ds $1
wd919:: ; 0xd919
ds $1
wSoundTestCurrentBackgroundMusic:: ; 0xd91a
ds $1
wSoundTextCurrentSoundEffect:: ; 0xd91b
ds $1
wd91c:: ; 0xd91c
ds $1
wd91d:: ; 0xd91d
ds $1
wd91e:: ; 0xd91e
ds $1
wd91f:: ; 0xd91f
ds $1
wd920:: ; 0xd920
ds $1
wd921:: ; 0xd921
ds $1
wd922:: ; 0xd922
ds $14
wd936:: ; 0xd936
ds $8
wd93e:: ; 0xd93e
ds $1
wd93f:: ; 0xd93f
ds $8
wd947:: ; 0xd947
ds $1
wKeyConfigs::
wKeyConfigBallStart:: ; 0xd948
ds $2
wKeyConfigLeftFlipper:: ; 0xd94a
ds $2
wKeyConfigRightFlipper:: ; 0xd94c
ds $2
wKeyConfigLeftTilt:: ; 0xd94e
ds $2
wKeyConfigRightTilt:: ; 0xd950
ds $2
wKeyConfigUpperTilt:: ; 0xd952
ds $2
wKeyConfigMenu:: ; 0xd954
ds $2
wd956:: ; 0xd956
ds $1
wd957:: ; 0xd957
ds $1
wd958:: ; 0xd958
ds $1
wCurPokedexIndex:: ; 0xd959
ds $1
wPokedexOffset:: ; 0xd95a
ds $1
wd95b:: ; 0xd95b
ds $1
wd95c:: ; 0xd95c
ds $1
wd95d:: ; 0xd95d
ds $1
wd95e:: ; 0xd95e
ds $1
wd95f:: ; 0xd95f
ds $1
wd960:: ; 0xd960
ds $1
wd961:: ; 0xd961
ds $1
wPokedexFlags:: ; 0xd962
ds $96
wd9f8:: ; 0xd9f8
ds $1
wNumPokemonSeen:: ; 0xd9f9
ds $2
wNumPokemonOwned:: ; 0xd9fb
ds $2
high_scores: MACRO
\1Points:: ds 6
\1Name:: ds 3
\1Id:: ds 4
ENDM
wRedHighScores:: ; 0xd9fd
high_scores wRedHighScore1
high_scores wRedHighScore2
high_scores wRedHighScore3
high_scores wRedHighScore4
high_scores wRedHighScore5
wBlueHighScores:: ; 0xd9fd
high_scores wBlueHighScore1
high_scores wBlueHighScore2
high_scores wBlueHighScore3
high_scores wBlueHighScore4
high_scores wBlueHighScore5
wda7f:: ; 0xda7f
ds $1
wda80:: ; 0xda80
ds $1
wda81:: ; 0xda81
ds $1
wda82:: ; 0xda82
ds $1
wHighScoresStage:: ; 0xda83
ds $1
wHighScoresArrowAnimationCounter:: ; 0xda84
ds $1
wda85:: ; 0xda85
ds $1
wda86:: ; 0xda86
ds $1
wSendHighScoresAnimation:: ; 0xda87
animation wSendHighScoresAnimation
wda8a:: ; 0xda8a
ds $2
wda8c:: ; 0xda8c
ds $3
wda8f:: ; 0xda8f
ds $3
wda92:: ; 0xda92
ds $3
wda95:: ; 0xda95
ds $3
wda98:: ; 0xda98
ds $3
wda9b:: ; 0xda9b
ds $3
wda9e:: ; 0xda9e
ds $3
wdaa1:: ; 0xdaa1
ds $1
wdaa2:: ; 0xdaa2
ds $1
wBootCheck:: ; 0xdaa3
; Used to do a single check during first VBLANK.
ds $1
; $25c bytes of free space
SECTION "Audio RAM", WRAMX
wdd00:: ; 0xdd00
ds $1
wChannel0:: ; 0xdd01
ds $32
wChannel1:: ; 0xdd33
ds $32
wChannel2:: ; 0xdd65
ds $32
wChannel3:: ; 0xdd97
ds $32
wChannel4:: ; 0xddc9
ds $32
wChannel5:: ; 0xddfb
ds $32
wChannel6:: ; 0xde2d
ds $32
wChannel7:: ; 0xde5f
ds $32
wde91:: ; 0xde91
ds $1
wde92:: ; 0xde92
ds $1
wde93:: ; 0xde93
ds $1
wde94:: ; 0xde94
ds $1
wde95:: ; 0xde95
ds $1
wde96:: ; 0xde96
ds $1
wde97:: ; 0xde97
ds $1
wde98:: ; 0xde98
ds $1
wde99:: ; 0xde99
ds $1
wde9a:: ; 0xde9a
ds $1
wde9b:: ; 0xde9b
ds $1
wde9c:: ; 0xde9c
ds $1
wde9d:: ; 0xde9d
ds $1
wde9e:: ; 0xde9e
ds $1
wde9f:: ; 0xde9f
ds $2
wdea1:: ; 0xdea1
ds $1
wdea2:: ; 0xdea2
ds $1
wdea3:: ; 0xdea3
ds $1
wdea4:: ; 0xdea4
ds $1
wdea5:: ; 0xdea5
ds $3
wdea8:: ; 0xdea8
ds $1
wdea9:: ; 0xdea9
ds $1
wdeaa:: ; 0xdeaa
ds $1
wdeab:: ; 0xdeab
ds $1
wdeac:: ; 0xdeac
ds $1
wdead:: ; 0xdead
ds $1
wdeae:: ; 0xdeae
ds $2
wMusicRAMEnd:: ; deb0
wdeb0:: ; 0xdeb0
ds $50
SECTION "Stack", WRAMX
ds $ff ;stack area
wStack:: ; 0xdfff
ds 1