summaryrefslogtreecommitdiff
path: root/wram.asm
diff options
context:
space:
mode:
Diffstat (limited to 'wram.asm')
-rwxr-xr-xwram.asm439
1 files changed, 222 insertions, 217 deletions
diff --git a/wram.asm b/wram.asm
index 3c31929..a1ddab6 100755
--- a/wram.asm
+++ b/wram.asm
@@ -2,196 +2,196 @@
SECTION "WRAM Bank 0", WRAM0
wc000::
- ds $400
+ ds $400
wMonAnimatedCollisionMask:: ; 0xc400
- ds $80
+ ds $80
- ds $80
+ ds $80
wcBottomMessageText:: ; 0xc500
- ds $200
+ ds $200
wStageCollisionMap:: ; 0xc700
; Collision data for each tile for the current stage.
- ds $300
+ ds $300
- ds $600
+ ds $600
SECTION "WRAM Bank 1", WRAMX, BANK[1]
wOAMBuffer:: ; d000
- ; buffer for OAM data. Copied to OAM by DMA
- ds 4 * 40
+ ; buffer for OAM data. Copied to OAM by DMA
+ ds 4 * 40
- ds $160
+ ds $160
wPaletteData:: ; 0xd200
- ; 16 palette definitions
- ds $100
+ ; 16 palette definitions
+ ds $100
wPartyMons:: ; 0xd300
; List of pokemon in the player's party.
; When a pokemon is caught, it's appended to this list.
; When a pokemon is evolved, the pokemon's evolution replaces its entry in the list.
- ds $160
+ ds $160
wNumPartyMons:: ; ; 0xd460
; Number of pokemon in the wPartyMons list.
- ds 1
+ ds 1
- ds 9
+ ds 9
wScore:: ; 0xd46a
; player's current score
- ds 6
+ ds 6
- ds $e
+ ds $e
wBallType:: ; 0xd47e
; PokeBall, Great Ball, Ultra Ball, or Master Ball
- ds 1
+ ds 1
wBallTypeCounter:: ; 0xd47f
; two-byte counter that represents how many frames remain until the Ball uprade goes down to the next level.
- ds 2
+ ds 2
wBallTypeBackup:: ; 0xd481
; Holds the ball type during bonus stages, since they always use a regular pokeball.
- ds 1
+ ds 1
- ds $1f
+ ds $1f
wBallSaverIconOn:: ; 0xd4a1
; The blue Ball Saver icon is illuminated when this byte is non-zero.
- ds 1
+ ds 1
- ds 1
+ ds 1
wBallSaverTimerFrames:: ; 0xd4a3
; Count the number of frames until wBallSaverTimerSeconds should be decremented
- ds 1
+ ds 1
wBallSaverTimerSeconds:: ; 0xd4a4
; Remaining seconds for Ball Saver
- ds 1
+ ds 1
- ds 1
+ ds 1
wBallSaverTimerFramesBackup:: ; 0xd4a6
; Used to store a backup of wBallSaverTimerFrames
- ds 1
+ ds 1
wBallSaverTimerSecondsBackup:: ; 0xd4a7
; Used to store a backup of wBallSaverTimerSeconds
- ds 1
+ ds 1
- ds 4
+ ds 4
wCurrentStage:: ; 0xd4ac
- ds 1
+ ds 1
- ds 2
+ ds 2
wStageCollisionState:: ; 0xd4af
; Stores the current collision state id for the stage
; For example, the Red stage can have different collision states when
; the Ditto lane is open, or when there is a wall above the Voltorbs.
- ds 1
+ ds 1
- ds 3
+ ds 3
wBallXPos:: ; 0xd4b3
; x coordinate of the center of the pokeball
; little-endian word
; Most-significant byte is the pixel, and least-significant byte is fraction of a pixel
- ds 2
+ ds 2
wBallYPos:: ; 0xd4b5
; y coordinate of the center of the pokeball
; little-endian word
; Most-significant byte is the pixel, and least-significant byte is fraction of a pixel
- ds 2
+ ds 2
wPreviousBallXPos:: ; 0xd4b7
; x coordinate of the center of the pokeball in the previous frame
; little-endian word
; Most-significant byte is the pixel, and least-significant byte is fraction of a pixel
- ds 2
+ ds 2
wPreviousBallYPos:: ; 0xd4b9
; y coordinate of the center of the pokeball in the previous frame
; little-endian word
; Most-significant byte is the pixel, and least-significant byte is fraction of a pixel
- ds 2
+ ds 2
wBallXVelocity:: ; 0xd4bb
; little-endian word
; This is added to wBallXPos every frame.
- ds 2
+ ds 2
wBallYVelocity:: ; 0xd4bd
; little-endian word
; This is added to wBallYPos every frame.
- ds 2
+ ds 2
- ds 4
+ ds 4
wBallSpin:: ; 0xd4c3
- ds 1
+ ds 1
wBallRotation:: ; 0xd4c4
; wBallSpin is added to this every frame
- ds 1
+ ds 1
- ds $1c
+ ds $1c
wInitialMapSelectionIndex:: ; 0xd4e1
; index to keep track of the spinning map selection at the start of a new game
- ds 1
+ ds 1
- ds $d
+ ds $d
- ds 1
+ ds 1
wLeftMapMoveCounter:: ; 0xd4f0
; Diglett or Poliwag counter that counts to three to trigger a Map Move
- ds 1
+ ds 1
- ds 1
+ ds 1
wRightMapMoveCounter:: ; 0xd4f2
; Diglett or Psyduck counter that counts to three to trigger a Map Move\
- ds 1
+ ds 1
wLeftMapMoveDiglettAnimationCounter:: ; 0xd4f3
; Counter that loops to control the left-side map move diglett head bobbing animation
- ds 1
+ ds 1
wLeftMapMoveDiglettFrame:: ; 0xd4f4
; Contains frame for map move diglett head bobbing animation
- ds 1
+ ds 1
wRightMapMoveDiglettAnimationCounter :: ; 0xd4f5
; Counter that loops to control the left-side map move diglett head bobbing animation
- ds 1
+ ds 1
wRightMapMoveDiglettFrame:: ; 0xd4f6
; Contains frame for map move diglett head bobbing animation
- ds 1
+ ds 1
- ds 6
+ ds 6
wBellsproutAnimationFrameCounter:: ; 0xd4fd
- ds 1
+ ds 1
wBellsproutAnimationFrame:: ; 0xd4fe
- ds 1
+ ds 1
wBellsproutAnimationFrameIndex:: ; 0xd4ff
- ds 1
+ ds 1
- ds $19
+ ds $19
wPikachuSaverAnimationFrameCounter:: ; 0xd519
- ds 1
+ ds 1
wPikachuSaverAnimationFrame:: ; 0xd51a
- ds 1
+ ds 1
wPikachuSaverAnimationFrameIndex:: ; 0xd51b
- ds 1
+ ds 1
- ds $13
+ ds $13
wIndicatorStates:: ; 0xd52f
; Each byte represents the status of each possible indicator on the stage.
@@ -199,104 +199,109 @@ wIndicatorStates:: ; 0xd52f
; a certain area. For example, when the Cloyster can be entered in the Blue
; Stage, the blue right arrow will starting blinking in the bottom half of that
; stage.
- ds $13
+ ds $13
wLeftAlleyTrigger:: ; 0xd542
; Set to $1 when ball passes over the bottom-left corner of the Blue/Red field top screen
; It's used to determine if the Ball was hit up the left side alley.
- ds 1
+ ds 1
wLeftAlleyCount:: ; 0xd543
; Increments when the Ball travels up the left alley.
; When the count is 3, evolution mode can be triggered.
- ds 1
+ ds 1
wRightAlleyTrigger:: ; 0xd544
; Set to $1 when Ball passes over the bottom-right corner of the Blue/Red field top screen
; It's used to determine if the Ball was hit up the right side alley.
- ds 1
+ ds 1
wRightAlleyCount:: ; 0xd545
; Increments when the Ball travels up the right alley.
; When the count is 2, Catch 'Em Mode can be triggered.
; If the count is 3, the current map's rare pokemon will be used for Catch 'Em Mode.
- ds 1
+ ds 1
wSecondaryLeftAlleyTrigger:: ; 0xd546
; Set to $1 when Ball passes over the bottom of the skinny alley between the left alley and Staryu button on the Red Field top screen.
; It's used to determine if the Ball was hit up the Red Stage's secondary left-side alley.
- ds 1
+ ds 1
- ds 3
+ ds 3
wCurrentMap:: ; 0xd54a
; Current map during play. See map_constants.asm
- ds 1
+ ds 1
wInSpecialMode:: ; 0xd54b
; Set to non-zero when things like Catch 'em Mode or Map Move mode start.
- ds 1
+ ds 1
- ds 4
+ ds 4
wSpecialMode:: ; 0xd550
; wInSpecialMode must be non-zero to activate this.
; 0 = Catch Em Mode
; 1 = Evolution Mode
; 2 = Map Move Mode
- ds 1
+ ds 1
- ds 1
+ ds 1
wCurrentEvolutionMon:: ; 0xd552
; Current mon id for Evolution Mode.
; It stores (mon id - 1).
- ds 1
+ ds 1
wCurrentEvolutionType:: ; 0xd553
; Evolution type for the current mon in Evolution Mode.
; See evolution_type_constants.asm
- ds 1
+ ds 1
- ds 7
+ ds 7
wRareMonsFlag:: ; 0xd55b
; Gets set to $8 when the rare mons should be used for catch 'em mode. $8 is then doubled to add $10 to the base address of the map's wild mons table.
- ds 1
+ ds 1
- ds $1d
+ ds $1d
wCurrentCatchEmMon:: ; 0xd579
; Current mon id for CatchEm Mode.
; It stores (mon id - 1).
- ds 1
+ ds 1
wTimerSeconds:: ; 0xd57a
- ds 1
+ ds 1
wTimerMinutes:: ; 0xd57b
- ds 1
+ ds 1
wTimerFrames:: ; 0xd57c
- ds 1
+ ds 1
- ds $43
+ ds $43
wNumMonHits:: ; 0xd5c0
; Number of times the wild pokemon has been hit in Catch'em mode
- ds 1
+ ds 1
- ds $33
+ ds $33
wBallCaptureAnimationFrameCounter:: ; 0xd5f4
- ds 1
+ ds 1
wBallCaptureAnimationFrame:: ; 0xd5f5
; OAM id
- ds 1
+ ds 1
wBallCaptureAnimationFrameIndex:: ; 0xd5f6
- ds 1
+ ds 1
- ds $38
+ ds $1f
+
+wGameOver::
+ ds 1
+
+ ds $18 ; d617
; Number of times the Mewtwo Bonus stage has been defeated.
; Counts up at most to 2, and is reset if Mew is encountered.
wNumMewtwoBonusCompletions:: ; 0xd62f
- ds 1
+ ds 1
- ds $e
+ ds $e
wBlueStageForceFieldDirection:: ; 0xd63e
; Controls the direction of the arrow force field in between Cloyster and Slowpoke in the Blue Stage.
@@ -304,54 +309,54 @@ wBlueStageForceFieldDirection:: ; 0xd63e
; $1 = right
; $2 = down
; $3 = left
- ds 1
+ ds 1
- ds $aa
+ ds $aa
wMeowthAnimationFrameCounter:: ; 0xd6e9
; Counts down. When it hits 0, the next animation frame happens.
- ds 1
+ ds 1
wMeowthAnimationFrame:: ; 0xd6ea
; OAM id
- ds 1
+ ds 1
wMeowthAnimationFrameIndex:: ; 0xd6eb
- ds 1
+ ds 1
- ds 1
+ ds 1
wMeowthXPosition:: ; 0xd6ed
- ds 1
+ ds 1
wMeowthYPosition:: ; 0xd6ee
- ds 1
+ ds 1
- ds 1
+ ds 1
wMeowthXMovement:: ; 0xd6f0
; Used to move meowth horizontally.
; Value is $01 when moving right.
; Value is $ff when moving left.
- ds 1
+ ds 1
wMeowthYMovement:: ; 0xd6f1
; Used to move meowth vertically.
; Value is $01 when moving down.
; Value is $ff when moving up.
- ds 1
+ ds 1
- ds $1d
+ ds $1d
wMeowthStageBonusCounter:: ; 0xd70f
; Keeps track of how many bonus points you get from collecting a coin.
; The bonus increases by 1 each time you collect a coin.
; If Meowth is hit, the bonus resets to 0.
- ds 1
+ ds 1
- ds 1
+ ds 1
wMeowthStageScore:: ; 0xd711
; Number of Meowth coins collected.
- ds 1
+ ds 1
- ds $2b
+ ds $2b
wDiglettStates:: ; 0xd73d
; Each diglett has a sprite state 1 - 5.
@@ -363,29 +368,29 @@ wDiglettStates:: ; 0xd73d
; $4 = straight up
; $5 = leaning right
; $6 = getting hit
- ds 31
+ ds 31
wCurrentDiglett:: ; 0xd75c
; Keeps track of which diglett is being updated.
- ds 1
+ ds 1
wDiglettsInitializedFlag:: ; 0xd75d
; bit 0 is set after all digletts have been initialized
- ds 1
+ ds 1
wDiglettInitDelayCounter:: ; 0xd75e
; used to faciliate how fast the digletts are initialized
- ds 1
+ ds 1
- ds 2
+ ds 2
wDugtrioAnimationFrameCounter:: ; 0xd761
- ds 1
+ ds 1
wDugtrioAnimationFrame:: ; 0xd762
; OAM id
- ds 1
+ ds 1
wDugtrioAnimationFrameIndex:: ; 0xd763
- ds 1
+ ds 1
wDugrioState:: ; 0xd764
; Similar function as wDiglettStates.
@@ -397,280 +402,280 @@ wDugrioState:: ; 0xd764
; $5 = 1 healthy dugtrio
; $6 = Getting hit third time
; $7 = Disappearing
- ds 1
+ ds 1
- ds $3c
+ ds $3c
wLeftTiltCounter:: ; 0xd7a1
; Counts up to 3 and back down to time the left tilt animation
- ds 1
+ ds 1
wLeftTiltReset:: ; 0xd7a2
; Set to $1 when the left tilt button has been held down long enough
- ds 1
+ ds 1
wRightTiltCounter:: ; 0xd7a3
; Counts up to 3 and back down to time the right tilt animation
- ds 1
+ ds 1
wRightTiltReset:: ; 0xd7a4
; Set to $1 when the right tilt button has been held down long enough
- ds 1
+ ds 1
wUpperTiltCounter:: ; 0xd7a5
; Counts up to 3 and back down to time the upper tilt animation
- ds 1
+ ds 1
wUpperTiltReset:: ; 0xd7a6
; Set to $1 when the upper tilt button has been held down long enough
- ds 1
+ ds 1
wLeftTiltPushing:: ; 0xd7a7
; Set to $1 when the left tilt is in the first half of its animation
- ds 1
+ ds 1
wRightTiltPushing:: ; 0xd7a8
; Set to $1 when the right tilt is in the first half of its animation
- ds 1
+ ds 1
wUpperTiltPushing:: ; 0xd7a9
; Set to $1 when the upper tilt is in the first half of its animation
- ds 1
+ ds 1
- ds 12
+ ds 12
wLeftFlipperAnimationState:: ; 0xd7b6
; Counts from $0 to $f when using the left flipper.
- ds 1
+ ds 1
wRightFlipperAnimationState:: ; 0xd7b7
; Counts from $0 to $f when using the right flipper.
- ds 1
+ ds 1
wFlipperXCollisionAttribute:: ; 0xd7b8
; Goes with hFlipperYCollisionAttribute
- ds 1
+ ds 1
wFlipperCollision:: ; 0xd7b9
; Set to $1 when the ball is colliding with a flipper
- ds 1
+ ds 1
- ds 9
+ ds 9
wSubTileBallXPos:: ; 0xd7c3
- ds 1
+ ds 1
wSubTileBallYPos:: ; 0xd7c4
- ds 1
+ ds 1
wUpperLeftCollisionAttribute:: ; 0xd7c5
- ds 1
+ ds 1
wLowerLeftCollisionAttribute:: ; 0xd7c6
- ds 1
+ ds 1
wUpperRightCollisionAttribute:: ; 0xd7c7
- ds 1
+ ds 1
wLowerRightCollisionAttribute:: ; 0xd7c8
- ds 1
+ ds 1
- ds $23
+ ds $23
wStageCollisionMapPointer:: ; 0xd7ec
; pointer to the current collision map (always points to wStageCollisionMapPointer, except when loading new attributes)
- ds 2
+ ds 2
wStageCollisionMapBank:: ; 0xd7ee
; holds bank of current collision map (always $00, except when loading new attributes)
- ds 1
+ ds 1
wStageCollisionMasksPointer:: ; 0xd7ef
; Pointer to the current collision masks array
- ds 2
+ ds 2
wStageCollisionMasksBank:: ; 0xd7f1
; Holds bank of current collision masks array
- ds 1
+ ds 1
- ds 7
+ ds 7
wInGameMenuIndex:: ; 0xd7f9
- ds 1
+ ds 1
- ds $61
+ ds $61
wCurrentSongBank:: ; 0xd85b
- ds 1
+ ds 1
- ds $95
+ ds $95
wCurrentScreen:: ; 0xd8f1
; The game is driven by state machines. This is the current screen.
- ds 1
+ ds 1
wScreenState:: ; 0xd8f2
; The game is driven by state machines. This is the current state for the current screen.
- ds 1
+ ds 1
- ds 22
+ ds 22
wTitleScreenCursorSelection:: ; 0xd909
; 0 = Game Start
; 1 = PokeDex
; 2 = Option
- ds 1
+ ds 1
wTitleScreenGameStartCursorSelection:: ; 0xd90a
; 0 = New Game
; 1 = Continue
- ds 1
+ ds 1
- ds 1
+ ds 1
wTitleScreenBlinkAnimationFrame:: ; 0xd90c
; Pikachu's blinking animation is looped through frames. This keeps track of the current frame.
- ds 1
+ ds 1
wTitleScreenBlinkAnimationCounter:: ; 0xd90d
; Counts down. When it hits 0, wTitleScreenBlinkAnimationFrame is incremented.
- ds 1
+ ds 1
wTitleScreenBouncingBallAnimationFrame:: ; 0xd90e
; The bouncing Pokeball on the title screen has a 6-frame animation. This keeps track of the current frame.
- ds 1
+ ds 1
wTitleScreenPokeballAnimationCounter:: ; 0xd90f
- ds 1
+ ds 1
- ds 2
+ ds 2
wFieldSelectBlinkingBorderTimer:: ; 0xd912
; Number of frames to blink the field select screen border after the player chooses a field.
- ds 1
+ ds 1
wSelectedFieldIndex:: ; d913
; $0 if player is hovering cursor over Red Stage
; $1 if player is hovering cursor over Blue Stage
- ds 1
+ ds 1
wFieldSelectBlinkingBorderFrame:: ; 0xd914
; The blinking border's current animation frame.
- ds 1
+ ds 1
- ds 5
+ ds 5
wSoundTestCurrentBackgroundMusic:: ; d91a
- ds 1
+ ds 1
wSoundTextCurrentSoundEffect:: ; 0xd91b
- ds 1
+ ds 1
- ds 44
+ ds 44
wKeyConfigs:: ; 0xd948
; each function map to two joypad buttons (see joy_constants.asm)
wKeyConfigBallStart:: ; 0xd948
- ds 2
+ ds 2
wKeyConfigLeftFlipper:: ; 0xd94a
- ds 2
+ ds 2
wKeyConfigRightFlipper:: ; 0xd94c
- ds 2
+ ds 2
wKeyConfigLeftTilt:: ; 0xd94e
- ds 2
+ ds 2
wKeyConfigRightTilt:: ; 0xd950
- ds 2
+ ds 2
wKeyConfigUpperTilt:: ; 0xd952
- ds 2
+ ds 2
wKeyConfigMenu:: ; 0xd954
- ds 2
+ ds 2
- ds 3
+ ds 3
wCurPokedexIndex:: ; 0xd959
; Stores the mon index of which pokemon the cursor is on in the Pokedex screen.
- ds 1
+ ds 1
wPokedexOffset:: ; 0xd95a
; Stores the number of pokedex entries that are above the current displayed pokemon entries.
- ds 1
+ ds 1
- ds 7
+ ds 7
wPokedexFlags:: ; 0xd962
; Each pokemon is represented by one byte in the normal Pokedex order
; byte == 0: mon hasn't been seen
; byte == 1: mon has been seen
; byte >= 2: mon has been captured
- ds 151
+ ds 151
wNumPokemonSeen:: ; 0xd9f9
- ds 2
+ ds 2
wNumPokemonOwned:: ; 0xd9fb
- ds 2
+ ds 2
wRedHighScores:: ; 0xd9fd
wRedHighScore1Points:: ; 0xd9fd
- ds 6
+ ds 6
wRedHighScore1Name:: ; 0xda03
- ds 3
- ds 4
+ ds 3
+ ds 4
wRedHighScore2Points:: ; 0xda0a
- ds 6
+ ds 6
wRedHighScore2Name:: ; 0xda10
- ds 3
- ds 4
+ ds 3
+ ds 4
wRedHighScore3Points:: ; 0xda17
- ds 6
+ ds 6
wRedHighScore3Name:: ; 0xda1d
- ds 3
- ds 4
+ ds 3
+ ds 4
wRedHighScore4Points:: ; 0xda24
- ds 6
+ ds 6
wRedHighScore4Name:: ; 0xda2a
- ds 3
- ds 4
+ ds 3
+ ds 4
wRedHighScore5Points:: ; 0xda31
- ds 6
+ ds 6
wRedHighScore5Name:: ; 0xda37
- ds 3
- ds 4
+ ds 3
+ ds 4
wBlueHighScores:: ; 0xda3e
wBlueHighScore1Points:: ; 0xda3e
- ds 6
+ ds 6
wBlueHighScore1Name:: ; 0xda44
- ds 3
- ds 4
+ ds 3
+ ds 4
wBlueHighScore2Points:: ; 0xda4b
- ds 6
+ ds 6
wBlueHighScore2Name:: ; 0xda52
- ds 3
- ds 4
+ ds 3
+ ds 4
wBlueHighScore3Points:: ; 0xda58
- ds 6
+ ds 6
wBlueHighScore3Name:: ; 0xda5e
- ds 3
- ds 4
+ ds 3
+ ds 4
wBlueHighScore4Points:: ; 0xda65
- ds 6
+ ds 6
wBlueHighScore4Name:: ; 0xda6b
- ds 3
- ds 4
+ ds 3
+ ds 4
wBlueHighScore5Points:: ; 0xda72
- ds 6
+ ds 6
wBlueHighScore5Name:: ; 0xda78
- ds 3
- ds 4
+ ds 3
+ ds 4
- ds 4
+ ds 4
wHighScoresStage:: ; 0xda83
; Current stage's high scores.
; 0 = Red Stage
; 1 = Blue stage
- ds 1
+ ds 1
wHighScoresArrowAnimationCounter:: ; 0xda84
; Counts up to $28 and wraps around to $0 to control the animation of the
; arrows in the bottom corner of the high scores screen.
- ds 1
+ ds 1
- ds 2
+ ds 2
wSendHighScoresAnimationFrameCounter:: ; 0xda87
- ds 1
+ ds 1
wSendHighScoresAnimationFrame:: ; 0xda88
- ds 1
+ ds 1
wSendHighScoresAnimationFrameIndex:: ; 0xda89
- ds 1
+ ds 1