diff options
Diffstat (limited to 'wram.asm')
-rwxr-xr-x | wram.asm | 439 |
1 files changed, 222 insertions, 217 deletions
@@ -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 |