diff options
Diffstat (limited to 'engine/overworld')
-rwxr-xr-x | engine/overworld/card_key.asm | 4 | ||||
-rwxr-xr-x | engine/overworld/cut.asm | 10 | ||||
-rwxr-xr-x | engine/overworld/doors.asm | 4 | ||||
-rwxr-xr-x | engine/overworld/emotion_bubbles.asm | 6 | ||||
-rwxr-xr-x | engine/overworld/healing_machine.asm | 2 | ||||
-rwxr-xr-x | engine/overworld/hidden_items.asm | 4 | ||||
-rwxr-xr-x | engine/overworld/hidden_objects.asm | 4 | ||||
-rw-r--r-- | engine/overworld/item.asm | 2 | ||||
-rwxr-xr-x | engine/overworld/ledges.asm | 50 | ||||
-rwxr-xr-x | engine/overworld/npc_movement.asm | 20 | ||||
-rw-r--r-- | engine/overworld/oam.asm | 4 | ||||
-rwxr-xr-x | engine/overworld/player_animations.asm | 346 | ||||
-rwxr-xr-x | engine/overworld/pokemart.asm | 2 | ||||
-rwxr-xr-x | engine/overworld/ssanne.asm | 6 | ||||
-rwxr-xr-x | engine/overworld/trainers.asm | 12 |
15 files changed, 241 insertions, 235 deletions
diff --git a/engine/overworld/card_key.asm b/engine/overworld/card_key.asm index f48c26f4..885932d5 100755 --- a/engine/overworld/card_key.asm +++ b/engine/overworld/card_key.asm @@ -8,8 +8,8 @@ PrintCardKeyText: ; 52673 (14:6673) ret z cp b jr nz, .asm_5267a - predef Func_c586 - ld a, [wcfc6] + predef GetTileAndCoordsInFrontOfPlayer + ld a, [wTileInFrontOfPlayer] cp $18 jr z, .asm_5269c cp $24 diff --git a/engine/overworld/cut.asm b/engine/overworld/cut.asm index 59abe791..0cbc0214 100755 --- a/engine/overworld/cut.asm +++ b/engine/overworld/cut.asm @@ -6,13 +6,13 @@ UsedCut: ; ef54 (3:6f54) jr z, .asm_ef6b cp GYM jr nz, .asm_ef77 - ld a, [wcfc6] + ld a, [wTileInFrontOfPlayer] cp $50 ; gym cut tree jr nz, .asm_ef77 jr asm_ef82 .asm_ef6b dec a - ld a, [wcfc6] + ld a, [wTileInFrontOfPlayer] cp $3d ; cut tree jr z, asm_ef82 cp $52 ; grass @@ -52,14 +52,14 @@ asm_ef82: ; ef82 (3:6f82) ld hl, wd730 res 6, [hl] ld a, $ff - ld [wcfcb], a + ld [wUpdateSpritesEnabled], a call AnimateCutTree ld de, CutTreeBlockSwaps ; $7100 call Func_f09f call Func_eedc callba Func_79e96 ld a, $1 - ld [wcfcb], a + ld [wUpdateSpritesEnabled], a ld a, (SFX_02_56 - SFX_Headers_02) / 3 call PlaySound ld a, $90 @@ -178,7 +178,7 @@ Func_f09f: ; f09f (3:709f) ld c, a ld b, $0 ld d, $0 - ld hl, wd35f + ld hl, wCurrentTileBlockMapViewPointer ld a, [hli] ld h, [hl] ld l, a diff --git a/engine/overworld/doors.asm b/engine/overworld/doors.asm index 85ff58b2..ac345af9 100755 --- a/engine/overworld/doors.asm +++ b/engine/overworld/doors.asm @@ -1,5 +1,5 @@ -; returns whether the player is standing on a door in carry -IsPlayerStandingOnDoor: ; 1a609 (6:6609) +; returns whether the player is standing on a door tile in carry +IsPlayerStandingOnDoorTile: ; 1a609 (6:6609) push de ld hl, DoorTileIDPointers ; $662c ld a, [W_CURMAPTILESET] ; W_CURMAPTILESET diff --git a/engine/overworld/emotion_bubbles.asm b/engine/overworld/emotion_bubbles.asm index ae7702b4..7106063b 100755 --- a/engine/overworld/emotion_bubbles.asm +++ b/engine/overworld/emotion_bubbles.asm @@ -11,10 +11,10 @@ EmotionBubble: ; 17c47 (5:7c47) ld hl, vChars1 + $780 ld bc, (BANK(EmotionBubblesPointerTable) << 8) + $04 call CopyVideoData - ld a, [wcfcb] + ld a, [wUpdateSpritesEnabled] push af ld a, $ff - ld [wcfcb], a + ld [wUpdateSpritesEnabled], a ld a, [wd736] bit 6, a ld hl, wOAMBuffer + $8f @@ -51,7 +51,7 @@ EmotionBubble: ; 17c47 (5:7c47) ld c, $3c call DelayFrames pop af - ld [wcfcb], a + ld [wUpdateSpritesEnabled], a call DelayFrame jp UpdateSprites diff --git a/engine/overworld/healing_machine.asm b/engine/overworld/healing_machine.asm index 9c93583d..53174630 100755 --- a/engine/overworld/healing_machine.asm +++ b/engine/overworld/healing_machine.asm @@ -3,7 +3,7 @@ AnimateHealingMachine: ; 70433 (1c:4433) ld hl, vChars0 + $7c0 ld bc, (BANK(PokeCenterFlashingMonitorAndHealBall) << 8) + $03 call CopyVideoData - ld hl, wcfcb + ld hl, wUpdateSpritesEnabled ld a, [hl] push af ld [hl], $ff diff --git a/engine/overworld/hidden_items.asm b/engine/overworld/hidden_items.asm index 77bd8fe6..befe2935 100755 --- a/engine/overworld/hidden_items.asm +++ b/engine/overworld/hidden_items.asm @@ -12,7 +12,7 @@ HiddenItems: ; 76688 (1d:6688) ret nz call EnableAutoTextBoxDrawing ld a, $1 - ld [wcc3c], a + ld [wDoNotWaitForButtonPressAfterDisplayingText], a ld a, [wWhichTrade] ; item ID ld [wd11e], a call GetItemName @@ -42,7 +42,7 @@ FoundHiddenItemText: ; 7675b (1d:675b) .BagFull call WaitForTextScrollButtonPress ; wait for button press xor a - ld [wcc3c], a + ld [wDoNotWaitForButtonPressAfterDisplayingText], a ld hl, HiddenItemBagFullText call PrintText jp TextScriptEnd diff --git a/engine/overworld/hidden_objects.asm b/engine/overworld/hidden_objects.asm index d2114293..1be5170c 100755 --- a/engine/overworld/hidden_objects.asm +++ b/engine/overworld/hidden_objects.asm @@ -1,13 +1,13 @@ Func_46981: ; 46981 (11:6981) xor a - ld [wd71e], a + ld [wWhichDungeonWarp], a ld a, [wd72d] bit 4, a ret nz call ArePlayerCoordsInArray ret nc ld a, [wWhichTrade] ; wWhichTrade - ld [wd71e], a + ld [wWhichDungeonWarp], a ld hl, wd72d set 4, [hl] ld hl, wd732 diff --git a/engine/overworld/item.asm b/engine/overworld/item.asm index a69ec106..a49fc268 100644 --- a/engine/overworld/item.asm +++ b/engine/overworld/item.asm @@ -34,7 +34,7 @@ PickupItem: ld [wcc4d], a predef HideObject ld a, 1 - ld [wcc3c], a + ld [wDoNotWaitForButtonPressAfterDisplayingText], a ld hl, FoundItemText jr .print diff --git a/engine/overworld/ledges.asm b/engine/overworld/ledges.asm index 21e1b567..b8c19181 100755 --- a/engine/overworld/ledges.asm +++ b/engine/overworld/ledges.asm @@ -1,48 +1,48 @@ HandleLedges: ; 1a672 (6:6672) ld a, [wd736] - bit 6, a + bit 6, a ; already jumping down ledge ret nz ld a, [W_CURMAPTILESET] ; W_CURMAPTILESET and a ; OVERWORLD ret nz - predef Func_c586 + predef GetTileAndCoordsInFrontOfPlayer ld a, [wSpriteStateData1 + 9] ld b, a aCoord 8, 9 ld c, a - ld a, [wcfc6] + ld a, [wTileInFrontOfPlayer] ld d, a - ld hl, LedgeTiles ; $66cf -.asm_1a691 + ld hl, LedgeTiles +.loop ld a, [hli] cp $ff ret z cp b - jr nz, .asm_1a6a4 + jr nz, .nextLedgeTile1 ld a, [hli] cp c - jr nz, .asm_1a6a5 + jr nz, .nextLedgeTile2 ld a, [hli] cp d - jr nz, .asm_1a6a6 + jr nz, .nextLedgeTile3 ld a, [hl] ld e, a - jr .asm_1a6a9 -.asm_1a6a4 + jr .foundMatch +.nextLedgeTile1 inc hl -.asm_1a6a5 +.nextLedgeTile2 inc hl -.asm_1a6a6 +.nextLedgeTile3 inc hl - jr .asm_1a691 -.asm_1a6a9 + jr .loop +.foundMatch ld a, [hJoyHeld] and e ret z ld a, $ff ld [wJoyIgnore], a ld hl, wd736 - set 6, [hl] + set 6, [hl] ; jumping down ledge call StartSimulatingJoypadStates ld a, e ld [wSimulatedJoypadStatesEnd], a @@ -56,24 +56,24 @@ HandleLedges: ; 1a672 (6:6672) ; (player direction) (tile player standing on) (ledge tile) (input required) LedgeTiles: ; 1a6cf (6:66cf) - db $00,$2C,$37,$80 - db $00,$39,$36,$80 - db $00,$39,$37,$80 - db $08,$2C,$27,$20 - db $08,$39,$27,$20 - db $0C,$2C,$0D,$10 - db $0C,$2C,$1D,$10 - db $0C,$39,$0D,$10 + db SPRITE_FACING_DOWN, $2C,$37,D_DOWN + db SPRITE_FACING_DOWN, $39,$36,D_DOWN + db SPRITE_FACING_DOWN, $39,$37,D_DOWN + db SPRITE_FACING_LEFT, $2C,$27,D_LEFT + db SPRITE_FACING_LEFT, $39,$27,D_LEFT + db SPRITE_FACING_RIGHT,$2C,$0D,D_RIGHT + db SPRITE_FACING_RIGHT,$2C,$1D,D_RIGHT + db SPRITE_FACING_RIGHT,$39,$0D,D_RIGHT db $FF LoadHoppingShadowOAM: ; 1a6f0 (6:66f0) ld hl, vChars1 + $7f0 - ld de, LedgeHoppingShadow ; $6708 + ld de, LedgeHoppingShadow ld bc, (BANK(LedgeHoppingShadow) << 8) + $01 call CopyVideoDataDouble ld a, $9 ld bc, $5448 ; b, c = y, x coordinates of shadow - ld de, LedgeHoppingShadowOAM ; $6710 + ld de, LedgeHoppingShadowOAM call WriteOAMBlock ret diff --git a/engine/overworld/npc_movement.asm b/engine/overworld/npc_movement.asm index e49c6af1..07a73be6 100755 --- a/engine/overworld/npc_movement.asm +++ b/engine/overworld/npc_movement.asm @@ -1,7 +1,7 @@ PlayerStepOutFromDoor: ; 1a3e0 (6:63e0) ld hl, wd730 res 1, [hl] - call IsPlayerStandingOnDoor + call IsPlayerStandingOnDoorTile jr nc, .notStandingOnDoor ld a, $fc ld [wJoyIgnore], a @@ -62,7 +62,7 @@ Func_1a44c: ; 1a44c (6:644c) ld a, $80 call FillMemory ld [hl], $ff - ld a, [wcf13] + ld a, [wSpriteIndex] ld [H_DOWNARROWBLINKCNT2], a ; $ff8c ld de, wNPCMovementDirections2 call MoveSprite @@ -100,18 +100,18 @@ Func_1a4a1: ; 1a4a1 (6:64a1) Func_1a4a6: ; 1a4a6 (6:64a6) xor a ld [wOverrideSimulatedJoypadStatesMask], a - ld a, [wcf13] + ld a, [wSpriteIndex] swap a ld [wNPCMovementScriptSpriteOffset], a xor a ld [wSpriteStateData2 + $06], a ld hl, wSimulatedJoypadStatesEnd - ld de, RLEList_1a4e9 + ld de, RLEList_PlayerWalkToLab call DecodeRLEList dec a ld [wSimulatedJoypadStatesIndex], a ld hl, wNPCMovementDirections2 - ld de, RLEList_1a4dc + ld de, RLEList_ProfOakWalkToLab call DecodeRLEList ld hl, wd72e res 7, [hl] @@ -121,7 +121,7 @@ Func_1a4a6: ; 1a4a6 (6:64a6) ld [wNPCMovementScriptFunctionNum], a ret -RLEList_1a4dc: ; 1a4dc (6:64dc) +RLEList_ProfOakWalkToLab: ; 1a4dc (6:64dc) db $00, $05 db $80, $01 db $00, $05 @@ -130,7 +130,7 @@ RLEList_1a4dc: ; 1a4dc (6:64dc) db $E0, $01 db $FF -RLEList_1a4e9: ; 1a4e9 (6:64e9) +RLEList_PlayerWalkToLab: ; 1a4e9 (6:64e9) db D_UP, $02 db D_RIGHT, $03 db D_DOWN, $05 @@ -162,7 +162,7 @@ Func_1a514: ; 1a514 (6:6514) ld a, MUSIC_MUSEUM_GUY ld [wc0ee], a call PlaySound - ld a, [wcf13] + ld a, [wSpriteIndex] swap a ld [wNPCMovementScriptSpriteOffset], a call StartSimulatingJoypadStates @@ -218,7 +218,7 @@ Func_1a581: ; 1a581 (6:6581) ld a, MUSIC_MUSEUM_GUY ld [wc0ee], a call PlaySound - ld a, [wcf13] + ld a, [wSpriteIndex] swap a ld [wNPCMovementScriptSpriteOffset], a xor a @@ -276,7 +276,7 @@ Func_1a5e7: ; 1a5e7 (6:65e7) ret z jr .loop .notRival - ld a, [wcf13] + ld a, [wSpriteIndex] ld [H_DOWNARROWBLINKCNT2], a ; $ff8c jp SetSpriteMovementBytesToFF diff --git a/engine/overworld/oam.asm b/engine/overworld/oam.asm index 63495d22..b4247257 100644 --- a/engine/overworld/oam.asm +++ b/engine/overworld/oam.asm @@ -2,13 +2,13 @@ PrepareOAMData: ; Determine OAM data for currently visible ; sprites and write it to wOAMBuffer. - ld a, [wcfcb] + ld a, [wUpdateSpritesEnabled] dec a jr z, .asm_4b1e cp 0 - 1 ret nz - ld [wcfcb], a + ld [wUpdateSpritesEnabled], a jp HideSprites .asm_4b1e diff --git a/engine/overworld/player_animations.asm b/engine/overworld/player_animations.asm index f915a2b9..473b0d5a 100755 --- a/engine/overworld/player_animations.asm +++ b/engine/overworld/player_animations.asm @@ -1,66 +1,67 @@ -Func_70510: ; 70510 (1c:4510) - call Func_706ef +EnterMapAnim: ; 70510 (1c:4510) + call InitFacingDirectionBuffer ld a, $ec - ld [wSpriteStateData1 + 4], a + ld [wSpriteStateData1 + 4], a ; player's sprite Y screen position call Delay3 push hl - call GBFadeIn2 + call GBFadeInFromWhite ld hl, W_FLAGS_D733 - bit 7, [hl] + bit 7, [hl] ; used fly out of battle? res 7, [hl] - jr nz, .asm_70568 + jr nz, .flyAnimation ld a, (SFX_02_4c - SFX_Headers_02) / 3 call PlaySound ld hl, wd732 - bit 4, [hl] + bit 4, [hl] ; used dungeon warp? res 4, [hl] pop hl - jr nz, .asm_7055e - call Func_705aa + jr nz, .dungeonWarpAnimation + call PlayerSpinWhileMovingDown ld a, (SFX_02_4f - SFX_Headers_02) / 3 call PlaySound - call Func_70787 + call IsPlayerStandingOnWarpPadOrHole ld a, b and a - jr nz, .asm_7055b - ld hl, wWhichTrade ; wWhichTrade + jr nz, .done +; if the player is not standing on a warp pad or hole + ld hl, wPlayerSpinInPlaceAnimFrameDelay xor a - ld [hli], a + ld [hli], a ; wPlayerSpinInPlaceAnimFrameDelay inc a - ld [hli], a + ld [hli], a ; wPlayerSpinInPlaceAnimFrameDelayDelta ld a, $8 - ld [hli], a - ld [hl], $ff + ld [hli], a ; wPlayerSpinInPlaceAnimFrameDelayEndValue + ld [hl], $ff ; wPlayerSpinInPlaceAnimSoundID ld hl, wcd48 - call Func_70730 -.asm_70558 + call PlayerSpinInPlace +.restoreDefaultMusic call PlayDefaultMusic -.asm_7055b - jp Func_70772 -.asm_7055e - ld c, $32 +.done + jp RestoreFacingDirectionAndYScreenPos +.dungeonWarpAnimation + ld c, 50 call DelayFrames - call Func_705aa - jr .asm_7055b -.asm_70568 + call PlayerSpinWhileMovingDown + jr .done +.flyAnimation pop hl - ld de, BirdSprite ; $4d80 + ld de, BirdSprite ld hl, vNPCSprites ld bc, (BANK(BirdSprite) << 8) + $0c call CopyVideoData - call Func_706d7 + call LoadBirdSpriteGraphics ld a, (SFX_02_50 - SFX_Headers_02) / 3 call PlaySound - ld hl, wWhichTrade ; wWhichTrade - xor a - ld [hli], a - ld a, $c - ld [hli], a - ld [hl], $8 + ld hl, wFlyAnimUsingCoordList + xor a ; is using coord list + ld [hli], a ; wFlyAnimUsingCoordList + ld a, 12 + ld [hli], a ; wFlyAnimCounter + ld [hl], $8 ; wFlyAnimBirdSpriteImageIndex (facing right) ld de, FlyAnimationEnterScreenCoords ; $4592 - call Func_706ae + call DoFlyAnimation call LoadPlayerSpriteGraphics - jr .asm_70558 + jr .restoreDefaultMusic FlyAnimationEnterScreenCoords: ; 70592 (1c:4592) ; y, x pairs @@ -79,90 +80,92 @@ FlyAnimationEnterScreenCoords: ; 70592 (1c:4592) db $3C, $48 db $3C, $40 -Func_705aa: ; 705aa (1c:45aa) - ld hl, wWhichTrade ; wWhichTrade +PlayerSpinWhileMovingDown: ; 705aa (1c:45aa) + ld hl, wPlayerSpinWhileMovingUpOrDownAnimDeltaY ld a, $10 - ld [hli], a + ld [hli], a ; wPlayerSpinWhileMovingUpOrDownAnimDeltaY ld a, $3c - ld [hli], a - call Func_7077f - ld [hl], a - jp Func_70755 + ld [hli], a ; wPlayerSpinWhileMovingUpOrDownAnimMaxY + call GetPlayerTeleportAnimFrameDelay + ld [hl], a ; wPlayerSpinWhileMovingUpOrDownAnimFrameDelay + jp PlayerSpinWhileMovingUpOrDown _LeaveMapAnim: ; 705ba (1c:45ba) - call Func_706ef - call Func_70787 + call InitFacingDirectionBuffer + call IsPlayerStandingOnWarpPadOrHole ld a, b and a - jr z, .asm_705ef + jr z, .playerNotStandingOnWarpPadOrHole dec a - jp nz, Func_7067d -.asm_705c8 + jp nz, LeaveMapThroughHoleAnim +.spinWhileMovingUp ld a, (SFX_02_4b - SFX_Headers_02) / 3 call PlaySound - ld hl, wWhichTrade ; wWhichTrade - ld a, $f0 - ld [hli], a + ld hl, wPlayerSpinWhileMovingUpOrDownAnimDeltaY + ld a, -$10 + ld [hli], a ; wPlayerSpinWhileMovingUpOrDownAnimDeltaY ld a, $ec - ld [hli], a - call Func_7077f - ld [hl], a - call Func_70755 - call Func_70787 + ld [hli], a ; wPlayerSpinWhileMovingUpOrDownAnimMaxY + call GetPlayerTeleportAnimFrameDelay + ld [hl], a ; wPlayerSpinWhileMovingUpOrDownAnimFrameDelay + call PlayerSpinWhileMovingUpOrDown + call IsPlayerStandingOnWarpPadOrHole ld a, b dec a - jr z, .asm_705e9 - ld c, $a + jr z, .playerStandingOnWarpPad +; if not standing on a warp pad, there is an extra delay + ld c, 10 call DelayFrames -.asm_705e9 - call GBFadeOut2 - jp Func_70772 -.asm_705ef +.playerStandingOnWarpPad + call GBFadeOutToWhite + jp RestoreFacingDirectionAndYScreenPos +.playerNotStandingOnWarpPadOrHole ld a, $4 call StopMusic ld a, [wd732] - bit 6, a - jr z, .asm_70610 - ld hl, wWhichTrade ; wWhichTrade - ld a, $10 - ld [hli], a - ld a, $ff - ld [hli], a + bit 6, a ; is the last used pokemon center the destination? + jr z, .flyAnimation +; if going to the last used pokemon center + ld hl, wPlayerSpinInPlaceAnimFrameDelay + ld a, 16 + ld [hli], a ; wPlayerSpinInPlaceAnimFrameDelay + ld a, -1 + ld [hli], a ; wPlayerSpinInPlaceAnimFrameDelayDelta xor a - ld [hli], a - ld [hl], $a1 + ld [hli], a ; wPlayerSpinInPlaceAnimFrameDelayEndValue + ld [hl], $a1 ; wPlayerSpinInPlaceAnimSoundID ld hl, wcd48 - call Func_70730 - jr .asm_705c8 -.asm_70610 - call Func_706d7 - ld hl, wWhichTrade ; wWhichTrade - ld a, $ff - ld [hli], a - ld a, $8 - ld [hli], a - ld [hl], $c - call Func_706ae + call PlayerSpinInPlace + jr .spinWhileMovingUp +.flyAnimation + call LoadBirdSpriteGraphics + ld hl, wFlyAnimUsingCoordList + ld a, $ff ; is not using coord list (flap in place) + ld [hli], a ; wFlyAnimUsingCoordList + ld a, 8 + ld [hli], a ; wFlyAnimCounter + ld [hl], $c ; wFlyAnimBirdSpriteImageIndex + call DoFlyAnimation ld a, (SFX_02_50 - SFX_Headers_02) / 3 call PlaySound - ld hl, wWhichTrade ; wWhichTrade - xor a - ld [hli], a + ld hl, wFlyAnimUsingCoordList + xor a ; is using coord list + ld [hli], a ; wFlyAnimUsingCoordList ld a, $c - ld [hli], a - ld [hl], $c + ld [hli], a ; wFlyAnimCounter + ld [hl], $c ; wFlyAnimBirdSpriteImageIndex (facing right) ld de, FlyAnimationScreenCoords1 ; $464f - call Func_706ae - ld c, $28 + call DoFlyAnimation + ld c, 40 call DelayFrames - ld hl, wTrainerEngageDistance - ld a, $b - ld [hli], a - ld [hl], $8 + ld hl, wFlyAnimCounter + ld a, 11 + ld [hli], a ; wFlyAnimCounter + ld [hl], $8 ; wFlyAnimBirdSpriteImageIndex (facing left) ld de, FlyAnimationScreenCoords2 ; $4667 - call Func_706ae - call GBFadeOut2 - jp Func_70772 + call DoFlyAnimation + call GBFadeOutToWhite + jp RestoreFacingDirectionAndYScreenPos FlyAnimationScreenCoords1: ; 7064f (1c:464f) ; y, x pairs @@ -198,33 +201,35 @@ FlyAnimationScreenCoords2: ; 70667 (1c:4667) db $F0, $00 -Func_7067d: ; 7067d (1c:467d) +LeaveMapThroughHoleAnim: ; 7067d (1c:467d) ld a, $ff - ld [wcfcb], a - ld a, [wOAMBuffer + $02] - ld [wOAMBuffer + $0a], a - ld a, [wOAMBuffer + $06] - ld [wOAMBuffer + $0e], a + ld [wUpdateSpritesEnabled], a ; disable UpdateSprites + ; shift upper half of player's sprite down 8 pixels and hide lower half + ld a, [wOAMBuffer + 0 * 4 + 2] + ld [wOAMBuffer + 2 * 4 + 2], a + ld a, [wOAMBuffer + 1 * 4 + 2] + ld [wOAMBuffer + 3 * 4 + 2], a ld a, $a0 - ld [wOAMBuffer], a - ld [wOAMBuffer + $04], a - ld c, $2 + ld [wOAMBuffer + 0 * 4], a + ld [wOAMBuffer + 1 * 4], a + ld c, 2 call DelayFrames + ; hide lower half of player's sprite ld a, $a0 - ld [wOAMBuffer + $08], a - ld [wOAMBuffer + $0c], a - call GBFadeOut2 + ld [wOAMBuffer + 2 * 4], a + ld [wOAMBuffer + 3 * 4], a + call GBFadeOutToWhite ld a, $1 - ld [wcfcb], a - jp Func_70772 + ld [wUpdateSpritesEnabled], a ; enable UpdateSprites + jp RestoreFacingDirectionAndYScreenPos -Func_706ae: ; 706ae (1c:46ae) - ld a, [wTrainerFacingDirection] - xor $1 - ld [wTrainerFacingDirection], a +DoFlyAnimation: ; 706ae (1c:46ae) + ld a, [wFlyAnimBirdSpriteImageIndex] + xor $1 ; make the bird flap its wings + ld [wFlyAnimBirdSpriteImageIndex], a ld [wSpriteStateData1 + 2], a call Delay3 - ld a, [wWhichTrade] ; wWhichTrade + ld a, [wFlyAnimUsingCoordList] cp $ff jr z, .asm_706cd ld hl, wSpriteStateData1 + 4 @@ -236,13 +241,13 @@ Func_706ae: ; 706ae (1c:46ae) inc de ld [hl], a .asm_706cd - ld a, [wTrainerEngageDistance] + ld a, [wFlyAnimCounter] dec a - ld [wTrainerEngageDistance], a - jr nz, Func_706ae + ld [wFlyAnimCounter], a + jr nz, DoFlyAnimation ret -Func_706d7: ; 706d7 (1c:46d7) +LoadBirdSpriteGraphics: ; 706d7 (1c:46d7) ld de, BirdSprite ; $4d80 ld hl, vNPCSprites ld bc, (BANK(BirdSprite) << 8) + $0c @@ -252,32 +257,32 @@ Func_706d7: ; 706d7 (1c:46d7) ld bc, (BANK(BirdSprite) << 8) + $0c jp CopyVideoData -Func_706ef: ; 706ef (1c:46ef) - ld a, [wSpriteStateData1 + 2] +InitFacingDirectionBuffer: ; 706ef (1c:46ef) + ld a, [wSpriteStateData1 + 2] ; player's sprite facing direction (image index is locked to standing images) ld [wcd50], a - ld a, [wSpriteStateData1 + 4] + ld a, [wSpriteStateData1 + 4] ; player's sprite Y screen position ld [wcd4f], a - ld hl, PlayerSpinningFacingOrder ; $4713 + ld hl, PlayerSpinningFacingOrder ld de, wcd48 ld bc, $4 call CopyData - ld a, [wSpriteStateData1 + 2] + ld a, [wSpriteStateData1 + 2] ; player's sprite facing direction (image index is locked to standing images) ld hl, wcd48 -.asm_7070d +.loop cp [hl] inc hl - jr nz, .asm_7070d + jr nz, .loop dec hl ret PlayerSpinningFacingOrder: ; 70713 (1c:4713) ; The order of the direction the player's sprite is facing when teleporting ; away. Creates a spinning effect. - db $00, $08, $04, $0C ; down, left, up, right + db SPRITE_FACING_DOWN, SPRITE_FACING_LEFT, SPRITE_FACING_UP, SPRITE_FACING_RIGHT -Func_70717: ; 70717 (1c:4717) +SpinPlayerSprite: ; 70717 (1c:4717) ld a, [hl] - ld [wSpriteStateData1 + 2], a + ld [wSpriteStateData1 + 2], a ; player's sprite facing direction (image index is locked to standing images) push hl ld hl, wcd48 ld de, wcd47 @@ -288,84 +293,85 @@ Func_70717: ; 70717 (1c:4717) pop hl ret -Func_70730: ; 70730 (1c:4730) - call Func_70717 - ld a, [wWhichTrade] ; wWhichTrade +PlayerSpinInPlace: ; 70730 (1c:4730) + call SpinPlayerSprite + ld a, [wPlayerSpinInPlaceAnimFrameDelay] ld c, a and $3 jr nz, .asm_70743 - ld a, [wTrainerScreenY] + ld a, [wPlayerSpinInPlaceAnimSoundID] cp $ff call nz, PlaySound .asm_70743 - ld a, [wTrainerEngageDistance] + ld a, [wPlayerSpinInPlaceAnimFrameDelayDelta] add c - ld [wWhichTrade], a ; wWhichTrade + ld [wPlayerSpinInPlaceAnimFrameDelay], a ld c, a - ld a, [wTrainerFacingDirection] + ld a, [wPlayerSpinInPlaceAnimFrameDelayEndValue] cp c ret z call DelayFrames - jr Func_70730 + jr PlayerSpinInPlace -Func_70755: ; 70755 (1c:4755) - call Func_70717 - ld a, [wWhichTrade] ; wWhichTrade +PlayerSpinWhileMovingUpOrDown: ; 70755 (1c:4755) + call SpinPlayerSprite + ld a, [wPlayerSpinWhileMovingUpOrDownAnimDeltaY] ld c, a - ld a, [wSpriteStateData1 + 4] + ld a, [wSpriteStateData1 + 4] ; player's sprite Y screen position add c ld [wSpriteStateData1 + 4], a ld c, a - ld a, [wTrainerEngageDistance] + ld a, [wPlayerSpinWhileMovingUpOrDownAnimMaxY] cp c ret z - ld a, [wTrainerFacingDirection] + ld a, [wPlayerSpinWhileMovingUpOrDownAnimFrameDelay] ld c, a call DelayFrames - jr Func_70755 + jr PlayerSpinWhileMovingUpOrDown -Func_70772: ; 70772 (1c:4772) +RestoreFacingDirectionAndYScreenPos: ; 70772 (1c:4772) ld a, [wcd4f] ld [wSpriteStateData1 + 4], a ld a, [wcd50] ld [wSpriteStateData1 + 2], a ret -Func_7077f: ; 7077f (1c:477f) - ld a, [wcf1b] +; if SGB, 2 frames, else 3 frames +GetPlayerTeleportAnimFrameDelay: ; 7077f (1c:477f) + ld a, [wOnSGB] xor $1 inc a inc a ret -Func_70787: ; 70787 (1c:4787) +IsPlayerStandingOnWarpPadOrHole: ; 70787 (1c:4787) ld b, 0 - ld hl, DataTable_707a9 ; $47a9 - ld a, [W_CURMAPTILESET] ; W_CURMAPTILESET + ld hl, .warpPadAndHoleData + ld a, [W_CURMAPTILESET] ld c, a -.asm_70790 +.loop ld a, [hli] cp $ff - jr z, .asm_707a4 + jr z, .done cp c - jr nz, .asm_7079e + jr nz, .nextEntry aCoord 8, 9 cp [hl] - jr z, .asm_707a2 -.asm_7079e + jr z, .foundMatch +.nextEntry inc hl inc hl - jr .asm_70790 -.asm_707a2 + jr .loop +.foundMatch inc hl ld b, [hl] -.asm_707a4 +.done ld a, b ld [wcd5b], a ret ; format: db tileset id, tile id, value to be put in wcd5b -DataTable_707a9: ; 707a9 (1c:47a9) +.warpPadAndHoleData: ; 707a9 (1c:47a9) db FACILITY, $20, 1 ; warp pad db FACILITY, $11, 2 ; hole db CAVERN, $22, 2 ; hole @@ -454,7 +460,7 @@ ItsABiteText: ; 70851 (1c:4851) db "@" FishingRodGfxProperties: ; 70856 (1c:4856) -; specicies how the fishing rod should be drawn on the screen +; specifies how the fishing rod should be drawn on the screen ; first byte = screen y coordinate ; second byte = screen x coordinate ; third byte = tile number @@ -482,21 +488,21 @@ RedFishingTiles: ; 70866 (1c:4866) dw vNPCSprites2 + $7d0 _HandleMidJump: ; 7087e (1c:487e) - ld a, [wd714] + ld a, [wPlayerJumpingYScreenCoordsIndex] ld c, a inc a cp $10 - jr nc, .asm_70895 - ld [wd714], a - ld b, $0 - ld hl, PlayerJumpingYScreenCoords ; $48ba + jr nc, .finishedJump + ld [wPlayerJumpingYScreenCoordsIndex], a + ld b, 0 + ld hl, PlayerJumpingYScreenCoords add hl, bc ld a, [hl] ld [wSpriteStateData1 + 4], a ; player's sprite y coordinate ret -.asm_70895 - ld a, [wWalkCounter] ; wcfc5 - cp $0 +.finishedJump + ld a, [wWalkCounter] + cp 0 ret nz call UpdateSprites call Delay3 @@ -504,11 +510,11 @@ _HandleMidJump: ; 7087e (1c:487e) ld [hJoyHeld], a ld [hJoyPressed], a ld [hJoyReleased], a - ld [wd714], a + ld [wPlayerJumpingYScreenCoordsIndex], a ld hl, wd736 - res 6, [hl] + res 6, [hl] ; not jumping down a ledge any more ld hl, wd730 - res 7, [hl] + res 7, [hl] ; not simulating joypad states any more xor a ld [wJoyIgnore], a ret diff --git a/engine/overworld/pokemart.asm b/engine/overworld/pokemart.asm index 1c2c23bf..a27f6b0a 100755 --- a/engine/overworld/pokemart.asm +++ b/engine/overworld/pokemart.asm @@ -203,7 +203,7 @@ DisplayPokemartDialogue_: ; 6c20 (1:6c20) ld hl,PokemartThankYouText call PrintText ld a,$01 - ld [wcfcb],a + ld [wUpdateSpritesEnabled],a call UpdateSprites ; move sprites ld a,[wd07e] ld [wListScrollOffset],a diff --git a/engine/overworld/ssanne.asm b/engine/overworld/ssanne.asm index bdbbd17e..f1a8ecf9 100755 --- a/engine/overworld/ssanne.asm +++ b/engine/overworld/ssanne.asm @@ -1,10 +1,10 @@ AnimateBoulderDust: ; 79f54 (1e:5f54) ld a, $1 ld [wcd50], a ; select the boulder dust offsets - ld a, [wcfcb] + ld a, [wUpdateSpritesEnabled] push af ld a, $ff - ld [wcfcb], a + ld [wUpdateSpritesEnabled], a ld a, %11100100 ld [rOBP1], a call LoadSmokeTileFourTimes @@ -26,7 +26,7 @@ AnimateBoulderDust: ; 79f54 (1e:5f54) dec c jr nz, .loop pop af - ld [wcfcb], a + ld [wUpdateSpritesEnabled], a jp LoadPlayerSpriteGraphics GetMoveBoulderDustFunctionPointer: ; 79f92 (1e:5f92) diff --git a/engine/overworld/trainers.asm b/engine/overworld/trainers.asm index 5237df0d..4aaab3ed 100755 --- a/engine/overworld/trainers.asm +++ b/engine/overworld/trainers.asm @@ -1,7 +1,7 @@ _GetSpritePosition1: ; 567f9 (15:67f9) ld hl, wSpriteStateData1 ld de, $4 - ld a, [wcf13] + ld a, [wSpriteIndex] ld [H_SPRITEINDEX], a call GetSpriteDataPointer ld a, [hli] @@ -20,7 +20,7 @@ _GetSpritePosition1: ; 567f9 (15:67f9) _GetSpritePosition2: ; 56819 (15:6819) ld hl, wSpriteStateData1 ld de, $4 - ld a, [wcf13] + ld a, [wSpriteIndex] ld [H_SPRITEINDEX], a call GetSpriteDataPointer ld a, [hli] ; c1x4 (screen Y pos) @@ -39,7 +39,7 @@ _GetSpritePosition2: ; 56819 (15:6819) _SetSpritePosition1: ; 5683d (15:683d) ld hl, wSpriteStateData1 ld de, $4 - ld a, [wcf13] + ld a, [wSpriteIndex] ld [H_SPRITEINDEX], a call GetSpriteDataPointer ld a, [$ffeb] ; c1x4 (screen Y pos) @@ -58,7 +58,7 @@ _SetSpritePosition1: ; 5683d (15:683d) _SetSpritePosition2: ; 5685d (15:685d) ld hl, wSpriteStateData1 ld de, $0004 - ld a, [wcf13] + ld a, [wSpriteIndex] ld [H_SPRITEINDEX], a call GetSpriteDataPointer ld a, [wd130] @@ -75,7 +75,7 @@ _SetSpritePosition2: ; 5685d (15:685d) ret TrainerWalkUpToPlayer: ; 56881 (15:6881) - ld a, [wcf13] + ld a, [wSpriteIndex] swap a ld [wTrainerSpriteOffset], a ; wWhichTrade call ReadTrainerScreenPosition @@ -143,7 +143,7 @@ TrainerWalkUpToPlayer: ; 56881 (15:6881) ld de, wNPCMovementDirections2 call FillMemory ; write the necessary steps to reach player ld [hl], $ff ; write end of list sentinel - ld a, [wcf13] + ld a, [wSpriteIndex] ld [H_SPRITEINDEX], a jp MoveSprite_ |