diff options
41 files changed, 781 insertions, 642 deletions
diff --git a/constants/move_animation_constants.asm b/constants/move_animation_constants.asm index 61e25212..6d8f33ca 100644 --- a/constants/move_animation_constants.asm +++ b/constants/move_animation_constants.asm @@ -6,7 +6,7 @@ const_value = $D8 const SE_WAVY_SCREEN ; $D8 used in Psywave/Night Shade/Psychic etc. const SE_SUBSTITUTE_MON ; $D9 used in Substitute (turns the pokemon into a mini sprite) const SE_SHAKE_BACK_AND_FORTH ; $DA used in Double Team - const SE_SLIDE_ENEMY_MON_OUT ; $DB used in Whirlwind + const SE_SLIDE_ENEMY_MON_OFF ; $DB used in Whirlwind const SE_SHOW_ENEMY_MON_PIC ; $DC used in Seismic Toss const SE_SHOW_MON_PIC ; $DD used in Low Kick/Quick Attack/Seismic Toss etc. const SE_BLINK_ENEMY_MON ; $DE used in Seismic Toss @@ -16,7 +16,7 @@ const_value = $D8 const SE_SPIRAL_BALLS_INWARD ; $E2 used in Growth/Focus Energy/Hyper Beam etc. const SE_SHAKE_ENEMY_HUD_2 ; $E3 unused const SE_SHAKE_ENEMY_HUD ; $E4 - const SE_SLIDE_MON_HALF_LEFT ; $E5 used in Softboiled + const SE_SLIDE_MON_HALF_OFF ; $E5 used in Softboiled const SE_PETALS_FALLING ; $E6 used in Petal Dance const SE_LEAVES_FALLING ; $E7 used in Razor Leaf const SE_TRANSFORM_MON ; $E8 used in Transform @@ -31,7 +31,7 @@ const_value = $D8 const SE_RESET_MON_POSITION ; $F1 used in Tackle/Body Slam/etc. const SE_MOVE_MON_HORIZONTALLY ; $F2 used in Tackle/Body Slam/etc. const SE_BLINK_MON ; $F3 used in Recover - const SE_SLIDE_MON_OUT ; $F4 used in Seismic Toss/Low Kick/etc. + const SE_SLIDE_MON_OFF ; $F4 used in Seismic Toss/Low Kick/etc. const SE_FLASH_MON_PIC ; $F5 const SE_SLIDE_MON_DOWN ; $F6 used in Withdraw/Waterfall/fainting const SE_SLIDE_MON_UP ; $F7 used in Dig/Waterfall/etc. diff --git a/data/animations.asm b/data/animations.asm index a9d22e54..cf6dc150 100755 --- a/data/animations.asm +++ b/data/animations.asm @@ -296,7 +296,7 @@ WingAttackAnim: ; 7a277 (1e:6277) WhirlwindAnim: ; 7a27b (1e:627b) db $46,$11,$10 - db SE_SLIDE_ENEMY_MON_OUT, $FF + db SE_SLIDE_ENEMY_MON_OFF, $FF db $FF FlyAnim: ; 7a281 (1e:6281) @@ -550,19 +550,19 @@ DrillPeckAnim: ; 7a3c8 (1e:63c8) db $FF SubmissionAnim: ; 7a3cc (1e:63cc) - db SE_SLIDE_MON_OUT, $41 + db SE_SLIDE_MON_OFF, $41 db $06,$FF,$01 db SE_SHOW_MON_PIC, $FF db $FF LowKickAnim: ; 7a3d4 (1e:63d4) - db SE_SLIDE_MON_OUT, $42 + db SE_SLIDE_MON_OFF, $42 db $46,$FF,$04 db SE_SHOW_MON_PIC, $FF db $FF CounterAnim: ; 7a3dc (1e:63dc) - db SE_SLIDE_MON_OUT, $43 + db SE_SLIDE_MON_OFF, $43 db $46,$FF,$04 db SE_SHOW_MON_PIC, $FF db $FF @@ -571,7 +571,7 @@ SeismicTossAnim: ; 7a3e4 (1e:63e4) db SE_BLINK_ENEMY_MON, $FF db $41,$8B,$4E db SE_HIDE_ENEMY_MON_PIC, $FF - db SE_SLIDE_MON_OUT, $FF + db SE_SLIDE_MON_OFF, $FF db $42,$44,$4F db SE_DELAY_ANIMATION_10, $FF db SE_DELAY_ANIMATION_10, $FF @@ -736,7 +736,7 @@ AgilityAnim: ; 7a4c3 (1e:64c3) db $FF QuickAttackAnim: ; 7a4c8 (1e:64c8) - db SE_SLIDE_MON_OUT, $61 + db SE_SLIDE_MON_OFF, $61 db $46,$FF,$04 db SE_SHOW_MON_PIC, $FF db $FF @@ -960,7 +960,7 @@ KinesisAnim: ; 7a5fa (1e:65fa) db $FF SoftboiledAnim: ; 7a5fe (1e:65fe) - db SE_SLIDE_MON_HALF_LEFT, $48 + db SE_SLIDE_MON_HALF_OFF, $48 db $08,$86,$4C db SE_LIGHT_SCREEN_PALETTE, $FF db SE_SPIRAL_BALLS_INWARD, $FF @@ -1119,7 +1119,7 @@ SlashAnim: ; 7a6cd (1e:66cd) db $FF SubstituteAnim: ; 7a6d1 (1e:66d1) - db SE_SLIDE_MON_OUT, $A3 + db SE_SLIDE_MON_OFF, $A3 db $08,$FF,$47 db SE_SUBSTITUTE_MON, $FF db $FF diff --git a/engine/HoF_room_pc.asm b/engine/HoF_room_pc.asm index 104d32ff..15ea1524 100755 --- a/engine/HoF_room_pc.asm +++ b/engine/HoF_room_pc.asm @@ -65,16 +65,16 @@ DisplayCreditsMon: ; 740cb (1d:40cb) call GetMonHeader call LoadFrontSpriteByMonIndex ld hl,vBGMap0 + $c - call CopyTileMapToVRAM + call CreditsCopyTileMapToVRAM xor a ld [H_AUTOBGTRANSFERENABLED],a call LoadScreenTilesFromBuffer1 ld hl,vBGMap0 - call CopyTileMapToVRAM + call CreditsCopyTileMapToVRAM ld a,$A7 ld [rWX],a ld hl,vBGMap1 - call CopyTileMapToVRAM + call CreditsCopyTileMapToVRAM call FillMiddleOfScreenWithWhite ld a,%11111100 ; make the mon a black silhouette ld [rBGP],a @@ -136,12 +136,12 @@ HoFGBPalettes: ; 74160 (1d:4160) db %11100000 db %11110000 -CopyTileMapToVRAM: ; 74164 (1d:4164) +CreditsCopyTileMapToVRAM: ; 74164 (1d:4164) ld a, l ld [H_AUTOBGTRANSFERDEST], a ld a, h ld [H_AUTOBGTRANSFERDEST + 1], a - ld a, $1 + ld a, 1 ld [H_AUTOBGTRANSFERENABLED], a jp Delay3 diff --git a/engine/battle/animations.asm b/engine/battle/animations.asm index 73d152b8..424190d3 100755 --- a/engine/battle/animations.asm +++ b/engine/battle/animations.asm @@ -223,7 +223,7 @@ PlayAnimation: ; 780f1 (1e:40f1) rla sla c rla - ld [wd09f],a ; tile select + ld [wWhichBattleAnimTileset],a ld a,[hli] ; sound ld [wAnimSoundID],a ; store sound ld a,[hli] ; subanimation ID @@ -243,7 +243,7 @@ PlayAnimation: ; 780f1 (1e:40f1) push hl ld a,[rOBP0] push af - ld a,[wcc79] + ld a,[wAnimPalette] ld [rOBP0],a call LoadAnimationTileset call LoadSubanimation @@ -328,7 +328,7 @@ GetSubanimationTransform2: ; 781ca (1e:41ca) ; loads tile patterns for battle animations LoadAnimationTileset: ; 781d2 (1e:41d2) - ld a,[wd09f] ; tileset select + ld a,[wWhichBattleAnimTileset] add a add a ld hl,AnimationTilesetPointers @@ -412,7 +412,7 @@ MoveAnimation: ; 78d5e (1e:4d5e) call WaitForSoundToFinish xor a ld [W_SUBANIMSUBENTRYADDR],a - ld [wd09b],a + ld [wUnusedD09B],a ld [W_SUBANIMTRANSFORM],a dec a ld [wAnimSoundID],a @@ -472,16 +472,16 @@ AnimationTypePointerTable: ; 78dcf (1e:4dcf) ShakeScreenVertically: ; 78ddb (1e:4ddb) call PlayApplyingAttackSound - ld b, $8 + ld b, 8 jp AnimationShakeScreenVertically ShakeScreenHorizontallyHeavy: ; 78de3 (1e:4de3) call PlayApplyingAttackSound - ld b, $8 + ld b, 8 jp AnimationShakeScreenHorizontallyFast ShakeScreenHorizontallySlow: ; 78deb (1e:4deb) - ld bc, $602 + lb bc, 6, 2 jr AnimationShakeScreenHorizontallySlow BlinkEnemyMonSprite: ; 78df0 (1e:4df0) @@ -490,32 +490,32 @@ BlinkEnemyMonSprite: ; 78df0 (1e:4df0) ShakeScreenHorizontallyLight: ; 78df6 (1e:4df6) call PlayApplyingAttackSound - ld b, $2 + ld b, 2 jp AnimationShakeScreenHorizontallyFast ShakeScreenHorizontallySlow2: ; 78dfe (1e:4dfe) - ld bc, $302 + lb bc, 3, 2 AnimationShakeScreenHorizontallySlow: ; 78e01 (1e:4e01) push bc push bc -.asm_78e03 +.loop1 ld a, [rWX] inc a ld [rWX], a ld c, 2 call DelayFrames dec b - jr nz, .asm_78e03 + jr nz, .loop1 pop bc -.asm_78e11 +.loop2 ld a, [rWX] dec a ld [rWX], a ld c, 2 call DelayFrames dec b - jr nz, .asm_78e11 + jr nz, .loop2 pop bc dec c jr nz, AnimationShakeScreenHorizontallySlow @@ -525,25 +525,25 @@ SetAnimationPalette: ; 78e23 (1e:4e23) ld a, [wOnSGB] and a ld a, $e4 - jr z, .asm_78e47 + jr z, .notSGB ld a, $f0 - ld [wcc79], a + ld [wAnimPalette], a ld b, $e4 ld a, [W_ANIMATIONID] cp TRADE_BALL_DROP_ANIM - jr c, .asm_78e3f + jr c, .next cp TRADE_BALL_POOF_ANIM + 1 - jr nc, .asm_78e3f + jr nc, .next ld b, $f0 -.asm_78e3f +.next ld a, b ld [rOBP0], a ld a, $6c ld [rOBP1], a ret -.asm_78e47 +.notSGB ld a, $e4 - ld [wcc79], a + ld [wAnimPalette], a ld [rOBP0], a ld a, $6c ld [rOBP1], a @@ -761,11 +761,11 @@ DoBallTossSpecialEffects: ; 78f3e (1e:4f3e) .moveGhostMarowakLeft coord hl, 17, 0 ld de,20 - ld bc,$0707 ; 7 rows and 7 columns + lb bc, 7, 7 .loop push hl push bc - call Func_79862 ; move row of tiles left + call AnimCopyRowRight ; move row of tiles left pop bc pop hl add hl,de @@ -891,8 +891,8 @@ TradeHidePokemon: ; 79041 (1e:5041) ld a,[W_SUBANIMCOUNTER] cp a,6 ret nz - ld a,$2F - jp Func_7980c ; make pokemon disappear + ld a,2 * SCREEN_WIDTH + 7 + jp ClearMonPicFromTileMap ; make pokemon disappear ; function to make a shaking pokeball jump up at the end of the animation TradeShakePokeball: ; 7904c (1e:504c) @@ -1010,8 +1010,8 @@ SpecialEffectPointers: ; 790da (1e:50da) dw AnimationSlideMonDown db SE_FLASH_MON_PIC ; $F5 dw AnimationFlashMonPic - db SE_SLIDE_MON_OUT ; $F4 - dw AnimationSlideMonOut + db SE_SLIDE_MON_OFF ; $F4 + dw AnimationSlideMonOff db SE_BLINK_MON ; $F3 dw AnimationBlinkMon db SE_MOVE_MON_HORIZONTALLY ; $F2 @@ -1040,8 +1040,8 @@ SpecialEffectPointers: ; 790da (1e:50da) dw AnimationLeavesFalling db SE_PETALS_FALLING ; $E6 dw AnimationPetalsFalling - db SE_SLIDE_MON_HALF_LEFT ; $E5 - dw AnimationSlideMonHalfLeft + db SE_SLIDE_MON_HALF_OFF ; $E5 + dw AnimationSlideMonHalfOff db SE_SHAKE_ENEMY_HUD ; $E4 dw AnimationShakeEnemyHUD db SE_SHAKE_ENEMY_HUD_2 ; unused--same pointer as SE_SHAKE_ENEMY_HUD ($E4) @@ -1060,8 +1060,8 @@ SpecialEffectPointers: ; 790da (1e:50da) dw AnimationShowMonPic db SE_SHOW_ENEMY_MON_PIC ; $DC dw AnimationShowEnemyMonPic - db SE_SLIDE_ENEMY_MON_OUT ; $DB - dw AnimationSlideEnemyMonOut + db SE_SLIDE_ENEMY_MON_OFF ; $DB + dw AnimationSlideEnemyMonOff db SE_SHAKE_BACK_AND_FORTH ; $DA dw AnimationShakeBackAndForth db SE_SUBSTITUTE_MON ; $D9 @@ -1092,7 +1092,7 @@ CallWithTurnFlipped: ; 79155 (1e:5155) ; flashes the screen for an extended period (48 frames) AnimationFlashScreenLong: ; 79165 (1e:5165) ld a,3 ; cycle through the palettes 3 times - ld [wd08a],a + ld [wFlashScreenLongCounter],a ld a,[wOnSGB] ; running on SGB? and a ld hl,FlashScreenLongMonochrome @@ -1108,9 +1108,9 @@ AnimationFlashScreenLong: ; 79165 (1e:5165) call FlashScreenLongDelay jr .innerLoop .endOfPalettes - ld a,[wd08a] + ld a,[wFlashScreenLongCounter] dec a - ld [wd08a],a + ld [wFlashScreenLongCounter],a pop hl jr nz,.loop ret @@ -1150,8 +1150,8 @@ FlashScreenLongSGB: ; 7919b (1e:519b) ; causes a delay of 2 frames for the first cycle ; causes a delay of 1 frame for the second and third cycles FlashScreenLongDelay: ; 791a8 (1e:51a8) - ld a,[wd08a] - cp a,4 ; never true since [wd08a] starts at 3 + ld a,[wFlashScreenLongCounter] + cp a,4 ; never true since [wFlashScreenLongCounter] starts at 3 ld c,4 jr z,.delayFrames cp a,3 @@ -1179,46 +1179,46 @@ AnimationFlashScreen: ; 791be (1e:51be) AnimationDarkScreenPalette: ; 791d6 (1e:51d6) ; Changes the screen's palette to a dark palette. - ld bc, $6f6f + lb bc, $6f, $6f jr SetAnimationBGPalette AnimationDarkenMonPalette: ; 791db (1e:51db) ; Darkens the mon sprite's palette. - ld bc, $f9f4 + lb bc, $f9, $f4 jr SetAnimationBGPalette AnimationUnusedPalette1: ; 791e0 (1e:51e0) - ld bc, $fef8 + lb bc, $fe, $f8 jr SetAnimationBGPalette AnimationUnusedPalette2: ; 791e5 (1e:51e5) - ld bc, $ffff + lb bc, $ff, $ff jr SetAnimationBGPalette AnimationResetScreenPalette: ; 791ea (1e:51ea) ; Restores the screen's palette to the normal palette. - ld bc, $e4e4 + lb bc, $e4, $e4 jr SetAnimationBGPalette AnimationUnusedPalette3: ; 791ef (1e:51ef) - ld bc, $0000 + lb bc, $00, $00 jr SetAnimationBGPalette AnimationLightScreenPalette: ; 791f4 (1e:51f4) ; Changes the screen to use a palette with light colors. - ld bc, $9090 + lb bc, $90, $90 jr SetAnimationBGPalette AnimationUnusedPalette4: ; 791f9 (1e:51f9) - ld bc, $4040 + lb bc, $40, $40 SetAnimationBGPalette: ; 791fc (1e:51fc) ld a, [wOnSGB] and a ld a, b - jr z, .asm_79204 + jr z, .next ld a, c -.asm_79204 +.next ld [rBGP], a ret @@ -1239,75 +1239,75 @@ AnimationWaterDropletsEverywhere: ; 79215 (1e:5215) ; scroll. It's hard to describe, but it's the main animation ; in Surf/Mist/Toxic. xor a - ld [wd09f], a + ld [wWhichBattleAnimTileset], a call LoadAnimationTileset - ld d, $20 - ld a, $f0 + ld d, 32 + ld a, -16 ld [W_BASECOORDX], a ld a, $71 - ld [wd09f], a -.asm_79228 - ld a, $10 + ld [wDropletTile], a +.loop + ld a, 16 ld [W_BASECOORDY], a - ld a, $0 - ld [wd08a], a + ld a, 0 + ld [wUnusedD08A], a call _AnimationWaterDroplets - ld a, $18 + ld a, 24 ld [W_BASECOORDY], a - ld a, $20 - ld [wd08a], a + ld a, 32 + ld [wUnusedD08A], a call _AnimationWaterDroplets dec d - jr nz, .asm_79228 + jr nz, .loop ret _AnimationWaterDroplets: ; 79246 (1e:5246) ld hl, wOAMBuffer -.asm_79249 +.loop ld a, [W_BASECOORDY] - ld [hli], a + ld [hli], a ; Y ld a, [W_BASECOORDX] - add $1b + add 27 ld [W_BASECOORDX], a - ld [hli], a - ld a, [wd09f] - ld [hli], a + ld [hli], a ; X + ld a, [wDropletTile] + ld [hli], a ; tile xor a - ld [hli], a + ld [hli], a ; attribute ld a, [W_BASECOORDX] - cp $90 - jr c, .asm_79249 - sub $a8 + cp 144 + jr c, .loop + sub 168 ld [W_BASECOORDX], a ld a, [W_BASECOORDY] - add $10 + add 16 ld [W_BASECOORDY], a - cp $70 - jr c, .asm_79249 + cp 112 + jr c, .loop call AnimationCleanOAM jp DelayFrame AnimationSlideMonUp: ; 7927a (1e:527a) ; Slides the mon's sprite upwards. - ld c, $7 + ld c, 7 ld a, [H_WHOSETURN] and a coord hl, 1, 6 coord de, 1, 5 ld a, $30 - jr z, .asm_79291 + jr z, .next coord hl, 12, 1 coord de, 12, 0 ld a, $ff -.asm_79291 - ld [wd09f], a +.next + ld [wSlideMonUpBottomRowLeftTile], a jp _AnimationSlideMonUp AnimationSlideMonDown: ; 79297 (1e:5297) ; Slides the mon's sprite down out of the screen. xor a call GetTileIDList -.asm_7929b +.loop call GetMonSpriteTileMapPointerFromRowCount push bc push de @@ -1317,54 +1317,63 @@ AnimationSlideMonDown: ; 79297 (1e:5297) pop de pop bc dec b - jr nz, .asm_7929b + jr nz, .loop ret -AnimationSlideMonOut: ; 792af (1e:52af) -; Slides the mon's sprite out of the screen horizontally. - ld e, $8 - ld a, $3 - ld [W_SUBANIMTRANSFORM], a - jp AnimationSlideMonLeft +AnimationSlideMonOff: ; 792af (1e:52af) +; Slides the mon's sprite off the screen horizontally. + ld e, 8 + ld a, 3 + ld [wSlideMonDelay], a + jp _AnimationSlideMonOff -AnimationSlideEnemyMonOut: ; 792b9 (1e:52b9) -; Slides the enemy mon out of the screen horizontally. - ld hl, AnimationSlideMonOut +AnimationSlideEnemyMonOff: ; 792b9 (1e:52b9) +; Slides the enemy mon off the screen horizontally. + ld hl, AnimationSlideMonOff jp CallWithTurnFlipped _AnimationSlideMonUp: ; 792bf (1e:52bf) push de push hl push bc - ld b, $6 -.asm_792c4 + +; In each iteration, slide up all rows but the top one (which is overwritten). + ld b, 6 +.slideLoop push bc push de push hl - ld bc, $0007 + ld bc, 7 call CopyData +; Note that de and hl are popped in the same order they are pushed, swapping +; their values. When CopyData is called, hl points to a tile 1 row below +; the one de points to. To maintain this relationship, after swapping, we add 2 +; rows to hl so that it is 1 row below again. pop de pop hl ld bc, SCREEN_WIDTH * 2 add hl, bc pop bc dec b - jr nz, .asm_792c4 + jr nz, .slideLoop + +; Fill in the bottom row of the mon pic with the next row's tile IDs. ld a, [H_WHOSETURN] and a coord hl, 1, 11 - jr z, .asm_792e2 + jr z, .next coord hl, 12, 6 -.asm_792e2 - ld a, [wd09f] +.next + ld a, [wSlideMonUpBottomRowLeftTile] inc a - ld [wd09f], a - ld c, $7 -.asm_792eb + ld [wSlideMonUpBottomRowLeftTile], a + ld c, 7 +.fillBottomRowLoop ld [hli], a - add $7 + add 7 dec c - jr nz, .asm_792eb + jr nz, .fillBottomRowLoop + ld c, 2 call DelayFrames pop bc @@ -1374,35 +1383,41 @@ _AnimationSlideMonUp: ; 792bf (1e:52bf) jr nz, _AnimationSlideMonUp ret -_AnimationShakeEnemyHUD: ; 792fd (1e:52fd) +ShakeEnemyHUD_WritePlayerMonPicOAM: ; 792fd (1e:52fd) +; Writes the OAM entries for a copy of the player mon's pic in OAM. +; The top 5 rows are reproduced in OAM, although only 2 are actually needed. ld a, $10 ld [W_BASECOORDX], a ld a, $30 ld [W_BASECOORDY], a ld hl, wOAMBuffer - ld d, $0 - ld c, $7 -.asm_7930e + ld d, 0 + ld c, 7 +.loop ld a, [W_BASECOORDY] ld e, a - ld b, $5 -.asm_79314 - call Animations_79329 + ld b, 5 +.innerLoop + call BattleAnimWriteOAMEntry inc d dec b - jr nz, .asm_79314 + jr nz, .innerLoop dec c ret z inc d inc d ld a, [W_BASECOORDX] - add $8 + add 8 ld [W_BASECOORDX], a - jr .asm_7930e + jr .loop -Animations_79329: ; 79329 (1e:5329) +BattleAnimWriteOAMEntry: ; 79329 (1e:5329) +; Y coordinate = e (increased by 8 each call, before the write to OAM) +; X coordinate = [W_BASECOORDX] +; tile = d +; attributes = 0 ld a, e - add $8 + add 8 ld e, a ld [hli], a ld a, [W_BASECOORDX] @@ -1418,16 +1433,17 @@ AdjustOAMBlockXPos: ; 79337 (1e:5337) ld h, d AdjustOAMBlockXPos2: ; 79339 (1e:5339) - ld de, $4 + ld de, 4 .loop - ld a, [wd08a] + ld a, [wCoordAdjustmentAmount] ld b, a ld a, [hl] add b - cp $a8 + cp 168 jr c, .skipPuttingEntryOffScreen +; put off-screen if X >= 168 dec hl - ld a, $a0 + ld a, 160 ld [hli], a .skipPuttingEntryOffScreen ld [hl], a @@ -1441,16 +1457,16 @@ AdjustOAMBlockYPos: ; 79350 (1e:5350) ld h, d AdjustOAMBlockYPos2: ; 79352 (1e:5352) - ld de, $4 + ld de, 4 .loop - ld a, [wd08a] + ld a, [wCoordAdjustmentAmount] ld b, a ld a, [hl] add b - cp $70 + cp 112 jr c, .skipSettingPreviousEntrysAttribute dec hl - ld a, $a0 ; bug, sets previous OAM entry's attribute + ld a, 160 ; bug, sets previous OAM entry's attribute ld [hli], a .skipSettingPreviousEntrysAttribute ld [hl], a @@ -1467,8 +1483,8 @@ AnimationBlinkEnemyMon: ; 79369 (1e:5369) AnimationBlinkMon: ; 7936f (1e:536f) ; Make the mon's sprite blink on and off for a second or two. push af - ld c, $6 -.asm_79372 + ld c, 6 +.loop push bc call AnimationHideMonPic ld c, 5 @@ -1478,17 +1494,17 @@ AnimationBlinkMon: ; 7936f (1e:536f) call DelayFrames pop bc dec c - jr nz, .asm_79372 + jr nz, .loop pop af ret AnimationFlashMonPic: ; 79389 (1e:5389) ; Flashes the mon's sprite on and off ld a, [wBattleMonSpecies] - ld [wHPBarMaxHP + 1], a + ld [wChangeMonPicPlayerTurnSpecies], a ld a, [wEnemyMonSpecies] - ld [wHPBarMaxHP], a - jp Func_79793 + ld [wChangeMonPicEnemyTurnSpecies], a + jp ChangeMonPic AnimationFlashEnemyMonPic: ; 79398 (1e:5398) ; Flashes the enemy mon's sprite on and off @@ -1515,14 +1531,14 @@ AnimationShakeBackAndForth: ; 793b1 (1e:53b1) and a coord hl, 0, 5 coord de, 2, 5 - jr z, .asm_793c2 + jr z, .next coord hl, 11, 0 coord de, 13, 0 -.asm_793c2 +.next xor a ld c, $10 -.asm_793c5 +.loop push af push bc push de @@ -1537,7 +1553,7 @@ AnimationShakeBackAndForth: ; 793b1 (1e:53b1) call CopyPicTiles call Delay3 pop hl - ld bc, $0709 + lb bc, 7, 9 call ClearScreenArea pop af call GetTileIDList @@ -1545,14 +1561,14 @@ AnimationShakeBackAndForth: ; 793b1 (1e:53b1) call CopyPicTiles call Delay3 pop hl - ld bc, $0709 + lb bc, 7, 9 call ClearScreenArea pop hl pop de pop bc pop af dec c - jr nz, .asm_793c5 + jr nz, .loop ret AnimationMoveMonHorizontally: ; 793f9 (1e:53f9) @@ -1562,9 +1578,9 @@ AnimationMoveMonHorizontally: ; 793f9 (1e:53f9) ld a, [H_WHOSETURN] and a coord hl, 2, 5 - jr z, .asm_79407 + jr z, .next coord hl, 11, 0 -.asm_79407 +.next xor a push hl call GetTileIDList @@ -1577,70 +1593,70 @@ AnimationResetMonPosition: ; 79415 (1e:5415) ; Resets the mon's sprites to be located at the normal coordinates. ld a, [H_WHOSETURN] and a - ld a, $66 - jr z, .asm_7941e - ld a, $b -.asm_7941e - call Func_7980c + ld a, 5 * SCREEN_WIDTH + 2 + jr z, .next + ld a, 11 +.next + call ClearMonPicFromTileMap jp AnimationShowMonPic AnimationSpiralBallsInward: ; 79424 (1e:5424) -; Creates an effect that looks like energy balls sprialing into the +; Creates an effect that looks like energy balls spiralling into the ; player mon's sprite. Used in Focus Energy, for example. ld a, [H_WHOSETURN] and a - jr z, .asm_79435 - ld a, $d8 - ld [wd08a], a - ld a, $50 - ld [W_SUBANIMTRANSFORM], a - jr .asm_7943c -.asm_79435 + jr z, .playerTurn + ld a, -40 + ld [wSpiralBallsBaseY], a + ld a, 80 + ld [wSpiralBallsBaseX], a + jr .next +.playerTurn xor a - ld [wd08a], a - ld [W_SUBANIMTRANSFORM], a -.asm_7943c - ld d, $7a - ld c, $3 + ld [wSpiralBallsBaseY], a + ld [wSpiralBallsBaseX], a +.next + ld d, $7a ; ball tile + ld c, 3 ; number of balls xor a - call Func_797e8 + call InitMultipleObjectsOAM ld hl, SpiralBallAnimationCoordinates -.asm_79447 +.loop push hl - ld c, $3 + ld c, 3 ld de, wOAMBuffer -.asm_7944d +.innerLoop ld a, [hl] cp $ff - jr z, .asm_7946f - ld a, [wd08a] + jr z, .done + ld a, [wSpiralBallsBaseY] add [hl] - ld [de], a + ld [de], a ; Y inc de inc hl - ld a, [W_SUBANIMTRANSFORM] + ld a, [wSpiralBallsBaseX] add [hl] - ld [de], a + ld [de], a ; X inc hl inc de inc de inc de dec c - jr nz, .asm_7944d + jr nz, .innerLoop ld c, 5 call DelayFrames pop hl inc hl inc hl - jr .asm_79447 -.asm_7946f + jr .loop +.done pop hl call AnimationCleanOAM jp AnimationFlashScreen SpiralBallAnimationCoordinates: ; 79476 (1e:5476) ; y, x pairs -; This is the sequence of screen coordinates that the spiraling +; This is the sequence of screen coordinates that the spiralling ; balls are positioned at. db $38, $28 db $40, $18 @@ -1668,57 +1684,57 @@ SpiralBallAnimationCoordinates: ; 79476 (1e:5476) AnimationSquishMonPic: ; 794a1 (1e:54a1) ; Squishes the mon's sprite horizontally making it ; disappear. Used by Teleport/Sky Attack animations. - ld c, $4 -.asm_794a3 + ld c, 4 +.loop push bc ld a, [H_WHOSETURN] and a - jr z, .asm_794b1 + jr z, .playerTurn coord hl, 16, 0 coord de, 14, 0 - jr .asm_794b7 -.asm_794b1 + jr .next +.playerTurn coord hl, 5, 5 coord de, 3, 5 -.asm_794b7 +.next push de - xor a - ld [wd09f], a + xor a ; left + ld [wSquishMonCurrentDirection], a call _AnimationSquishMonPic pop hl - ld a, $1 - ld [wd09f], a + ld a, 1 ; right + ld [wSquishMonCurrentDirection], a call _AnimationSquishMonPic pop bc dec c - jr nz, .asm_794a3 + jr nz, .loop call AnimationHideMonPic - ld c, $2 + ld c, 2 jp DelayFrame _AnimationSquishMonPic: ; 794d4 (1e:54d4) - ld c, $7 -.asm_794d6 + ld c, 7 +.loop push bc push hl - ld c, $3 - ld a, [wd09f] - cp $0 - jr nz, .asm_794e7 - call Func_7985b + ld c, 3 + ld a, [wSquishMonCurrentDirection] + cp 0 + jr nz, .right + call AnimCopyRowLeft dec hl - jr .asm_794eb -.asm_794e7 - call Func_79862 + jr .next +.right + call AnimCopyRowRight inc hl -.asm_794eb +.next ld [hl], " " pop hl ld de, SCREEN_WIDTH add hl, de pop bc dec c - jr nz, .asm_794d6 + jr nz, .loop jp Delay3 AnimationShootBallsUpward: ; 794f9 (1e:54f9) @@ -1726,67 +1742,68 @@ AnimationShootBallsUpward: ; 794f9 (1e:54f9) ; animations. ld a, [H_WHOSETURN] and a - jr z, .asm_79503 - ld bc, $80 - jr .asm_79506 -.asm_79503 - ld bc, $3028 -.asm_79506 + jr z, .playerTurn + lb bc, 0, 16 * 8 + jr .next +.playerTurn + lb bc, 6 * 8, 5 * 8 +.next ld a, b ld [W_BASECOORDY], a ld a, c ld [W_BASECOORDX], a - ld bc, $501 + lb bc, 5, 1 call _AnimationShootBallsUpward jp AnimationCleanOAM _AnimationShootBallsUpward: ; 79517 (1e:5517) push bc xor a - ld [wd09f], a + ld [wWhichBattleAnimTileset], a call LoadAnimationTileset pop bc - ld d, $7a + ld d, $7a ; ball tile ld hl, wOAMBuffer push bc ld a, [W_BASECOORDY] ld e, a -.asm_7952a - call Animations_79329 +.initOAMLoop + call BattleAnimWriteOAMEntry dec b - jr nz, .asm_7952a + jr nz, .initOAMLoop call DelayFrame pop bc ld a, b - ld [wd08a], a -.asm_79538 + ld [wNumShootingBalls], a +.loop push bc ld hl, wOAMBuffer -.asm_7953c +.innerLoop ld a, [W_BASECOORDY] - add $8 + add 8 ld e, a ld a, [hl] - cp e - jr z, .asm_7954b - add $fc + cp e ; has the ball reached the top? + jr z, .reachedTop + add -4 ; ball hasn't reached the top. move it up 4 pixels ld [hl], a - jr .asm_79554 -.asm_7954b - ld [hl], $0 - ld a, [wd08a] + jr .next +.reachedTop +; remove the ball once it has reached the top + ld [hl], 0 ; put it off-screen + ld a, [wNumShootingBalls] dec a - ld [wd08a], a -.asm_79554 - ld de, $4 - add hl, de + ld [wNumShootingBalls], a +.next + ld de, 4 + add hl, de ; next OAM entry dec b - jr nz, .asm_7953c + jr nz, .innerLoop call DelayFrames pop bc - ld a, [wd08a] + ld a, [wNumShootingBalls] and a - jr nz, .asm_79538 + jr nz, .loop ret AnimationShootManyBallsUpward: ; 79566 (1e:5566) @@ -1799,15 +1816,15 @@ AnimationShootManyBallsUpward: ; 79566 (1e:5566) ld hl, UpwardBallsAnimXCoordinatesEnemyTurn ld a, $28 ; y coordinate for "energy" ball pillar .player - ld [wTrainerSpriteOffset], a + ld [wSavedY], a .loop - ld a, [wTrainerSpriteOffset] + ld a, [wSavedY] ld [W_BASECOORDY], a ld a, [hli] cp $ff jp z, AnimationCleanOAM ld [W_BASECOORDX], a - ld bc, $0401 + lb bc, 4, 1 push hl call _AnimationShootBallsUpward pop hl @@ -1838,14 +1855,14 @@ AnimationMinimizeMon: ; 7959f (1e:559f) add hl, de ld de, MinimizedMonSprite ld c, $5 -.asm_795b4 +.loop ld a, [de] ld [hli], a ld [hli], a inc de dec c - jr nz, .asm_795b4 - call Func_79652 + jr nz, .loop + call CopyTempPicToMonPic call Delay3 jp AnimationShowMonPic @@ -1856,7 +1873,7 @@ AnimationSlideMonDownAndHide: ; 795c9 (1e:55c9) ; Slides the mon's sprite down and disappears. Used in Acid Armor. ld a, $1 ld c, $2 -.asm_795cd +.loop push bc push af call AnimationHideMonPic @@ -1871,87 +1888,101 @@ AnimationSlideMonDownAndHide: ; 795c9 (1e:55c9) inc a pop bc dec c - jr nz, .asm_795cd + jr nz, .loop call AnimationHideMonPic ld hl, wTempPic ld bc, $0310 xor a call FillMemory - jp Func_79652 + jp CopyTempPicToMonPic -AnimationSlideMonLeft: ; 795f8 (1e:55f8) +_AnimationSlideMonOff: ; 795f8 (1e:55f8) +; Slides the mon's sprite off the screen horizontally by e tiles and waits +; [wSlideMonDelay] V-blanks each time the pic is slid by one tile. ld a, [H_WHOSETURN] and a - jr z, .asm_79602 + jr z, .playerTurn coord hl, 12, 0 - jr .asm_79605 -.asm_79602 + jr .next +.playerTurn coord hl, 0, 5 -.asm_79605 - ld d, $8 -.asm_79607 +.next + ld d, 8 ; d's value is unused +.slideLoop ; iterates once for each time the pic slides by one tile push hl - ld b, $7 -.asm_7960a - ld c, $8 -.asm_7960c + ld b, 7 +.rowLoop ; iterates once for each row + ld c, 8 +.tileLoop ; iterates once for each tile in the row ld a, [H_WHOSETURN] and a - jr z, .asm_79616 - call Func_7963c - jr .asm_79619 -.asm_79616 - call Func_79633 -.asm_79619 + jr z, .playerTurn2 + call .EnemyNextTile + jr .next2 +.playerTurn2 + call .PlayerNextTile +.next2 ld [hli], a dec c - jr nz, .asm_7960c + jr nz, .tileLoop push de - ld de, $c + ld de, SCREEN_WIDTH - 8 add hl, de pop de dec b - jr nz, .asm_7960a - ld a, [W_SUBANIMTRANSFORM] + jr nz, .rowLoop + ld a, [wSlideMonDelay] ld c, a call DelayFrames pop hl dec d dec e - jr nz, .asm_79607 + jr nz, .slideLoop ret -Func_79633: ; 79633 (1e:5633) +; Since mon pic tile numbers go from top to bottom, left to right in order, +; adding the height of the mon pic in tiles to a tile number gives the tile +; number of the tile one column to the right (and thus subtracting the height +; gives the reverse). If the next tile would be past the edge of the pic, the 2 +; functions below catch it by checking if the tile number is within the valid +; range and if not, replacing it with a blank tile. + +.PlayerNextTile ; 79633 (1e:5633) ld a, [hl] - add $7 + add 7 +; This is a bug. The lower right corner tile of the mon back pic is blanked +; while the mon is sliding off the screen. It should compare with the max tile +; plus one instead. cp $61 ret c - ld a, $7f + ld a, " " ret -Func_7963c: ; 7963c (1e:563c) +.EnemyNextTile ; 7963c (1e:563c) ld a, [hl] - sub $7 + sub 7 +; This has the same problem as above, but it has no visible effect because +; the lower right tile is in the first column to slide off the screen. cp $30 ret c - ld a, $7f + ld a, " " ret -AnimationSlideMonHalfLeft: ; 79645 (1e:5645) -; Slides the mon's sprite halfway out of the screen. It's used in Softboiled. - ld e, $4 - ld a, $4 - ld [W_SUBANIMTRANSFORM], a - call AnimationSlideMonLeft +AnimationSlideMonHalfOff: ; 79645 (1e:5645) +; Slides the mon's sprite halfway off the screen. It's used in Softboiled. + ld e, 4 + ld a, 4 + ld [wSlideMonDelay], a + call _AnimationSlideMonOff jp Delay3 -Func_79652: ; 79652 (1e:5652) +CopyTempPicToMonPic: ; 79652 (1e:5652) ld a, [H_WHOSETURN] and a - ld hl, vBackPic - jr z, .asm_7965d - ld hl, vFrontPic -.asm_7965d + ld hl, vBackPic ; player turn + jr z, .next + ld hl, vFrontPic ; enemy turn +.next ld de, wTempPic ld bc, 7 * 7 jp CopyVideoData @@ -1959,55 +1990,55 @@ Func_79652: ; 79652 (1e:5652) AnimationWavyScreen: ; 79666 (1e:5666) ; used in Psywave/Psychic etc. ld hl, vBGMap0 - call Func_79e0d + call BattleAnimCopyTileMapToVRAM call Delay3 xor a ld [H_AUTOBGTRANSFERENABLED], a - ld a, $90 + ld a, SCREEN_HEIGHT_PIXELS ld [hWY], a - ld d, $80 - ld e, $8f + ld d, $80 ; terminator + ld e, SCREEN_HEIGHT_PIXELS - 1 ld c, $ff ld hl, WavyScreenLineOffsets -.asm_7967f +.loop push hl -.asm_79680 - call Func_796ae +.innerLoop + call WavyScreen_SetSCX ld a, [rLY] - cp e - jr nz, .asm_79680 + cp e ; is it the last visible line in the frame? + jr nz, .innerLoop ; keep going if not pop hl inc hl ld a, [hl] - cp d - jr nz, .asm_79691 - ld hl, WavyScreenLineOffsets -.asm_79691 + cp d ; have we reached the end? + jr nz, .next + ld hl, WavyScreenLineOffsets ; go back to the beginning if so +.next dec c - jr nz, .asm_7967f + jr nz, .loop xor a ld [hWY], a call SaveScreenTilesToBuffer2 call ClearScreen - ld a, $1 + ld a, 1 ld [H_AUTOBGTRANSFERENABLED], a call Delay3 call LoadScreenTilesFromBuffer2 ld hl, vBGMap1 - call Func_79e0d + call BattleAnimCopyTileMapToVRAM ret -Func_796ae: ; 796ae (1e:56ae) +WavyScreen_SetSCX: ; 796ae (1e:56ae) ld a, [rSTAT] - and $3 - jr nz, Func_796ae + and $3 ; is it H-blank? + jr nz, WavyScreen_SetSCX ; wait until it's H-blank ld a, [hl] ld [rSCX], a inc hl ld a, [hl] - cp d + cp d ; have we reached the end? ret nz - ld hl, WavyScreenLineOffsets + ld hl, WavyScreenLineOffsets ; go back to the beginning if so ret WavyScreenLineOffsets: ; 796bf (1e:56bf) @@ -2023,9 +2054,9 @@ AnimationSubstitute: ; 796e0 (1e:56e0) xor a ld bc, $0310 call FillMemory - ld a, [$fff3] + ld a, [H_WHOSETURN] and a - jr z, .asm_79715 + jr z, .playerTurn ld hl, SlowbroSprite ; facing down sprite ld de, wTempPic + $120 call CopySlowbroSpriteData @@ -2038,8 +2069,8 @@ AnimationSubstitute: ; 796e0 (1e:56e0) ld hl, SlowbroSprite + $30 ld de, wTempPic + $120 + $10 + $70 call CopySlowbroSpriteData - jr .asm_79739 -.asm_79715 + jr .next +.playerTurn ld hl, SlowbroSprite + $40 ; facing up sprite ld de, wTempPic + $120 + $70 call CopySlowbroSpriteData @@ -2052,8 +2083,8 @@ AnimationSubstitute: ; 796e0 (1e:56e0) ld hl, SlowbroSprite + $70 ld de, wTempPic + $120 + $f0 call CopySlowbroSpriteData -.asm_79739 - call Func_79652 +.next + call CopyTempPicToMonPic jp AnimationShowMonPic CopySlowbroSpriteData: ; 7973f (1e:573f) @@ -2077,7 +2108,7 @@ HideSubstituteShowMonAnim: ; 79747 (1e:5747) call AnimationSlideMonDown jr .next2 .substituteStillUp - call AnimationSlideMonOut + call AnimationSlideMonOff .next2 pop hl ld a, [hl] @@ -2087,35 +2118,35 @@ HideSubstituteShowMonAnim: ; 79747 (1e:5747) jp AnimationShowMonPic ReshowSubstituteAnim: ; 79771 (1e:5771) - call AnimationSlideMonOut + call AnimationSlideMonOff call AnimationSubstitute jp AnimationShowMonPic AnimationBoundUpAndDown: ; 7977a (1e:577a) ; Bounces the mon's sprite up and down several times. It is used ; by Splash's animation. - ld c, $5 -.asm_7977c + ld c, 5 +.loop push bc call AnimationSlideMonDown pop bc dec c - jr nz, .asm_7977c + jr nz, .loop jp AnimationShowMonPic AnimationTransformMon: ; 79787 (1e:5787) ; Redraws this mon's sprite as the back/front sprite of the opposing mon. ; Used in Transform. ld a, [wEnemyMonSpecies] - ld [wHPBarMaxHP + 1], a + ld [wChangeMonPicPlayerTurnSpecies], a ld a, [wBattleMonSpecies] - ld [wHPBarMaxHP], a + ld [wChangeMonPicEnemyTurnSpecies], a -Func_79793: ; 79793 (1e:5793) +ChangeMonPic: ; 79793 (1e:5793) ld a, [H_WHOSETURN] and a - jr z, .asm_797b0 - ld a, [wHPBarMaxHP] + jr z, .playerTurn + ld a, [wChangeMonPicEnemyTurnSpecies] ld [wcf91], a ld [wd0b5], a xor a @@ -2123,11 +2154,11 @@ Func_79793: ; 79793 (1e:5793) call GetMonHeader coord hl, 12, 0 call LoadFrontSpriteByMonIndex - jr .asm_797d3 -.asm_797b0 + jr .done +.playerTurn ld a, [wBattleMonSpecies2] push af - ld a, [wHPBarMaxHP + 1] + ld a, [wChangeMonPicPlayerTurnSpecies] ld [wBattleMonSpecies2], a ld [wd0b5], a call GetMonHeader @@ -2138,7 +2169,7 @@ Func_79793: ; 79793 (1e:5793) call CopyPicTiles pop af ld [wBattleMonSpecies2], a -.asm_797d3 +.done ld b, $1 jp GoPAL_SET @@ -2152,10 +2183,14 @@ AnimationHideEnemyMonPic: ; 797d8 (1e:57d8) ld [H_AUTOBGTRANSFERENABLED], a jp Delay3 -Func_797e8: ; 797e8 (1e:57e8) +InitMultipleObjectsOAM: ; 797e8 (1e:57e8) +; Writes c OAM entries with tile d. +; Sets their Y coordinates to sequential multiples of 8, starting from 0. +; Sets their X coordinates to 0. +; Loads animation tileset a. push bc push de - ld [wd09f], a + ld [wWhichBattleAnimTileset], a call LoadAnimationTileset pop de pop bc @@ -2163,31 +2198,31 @@ Func_797e8: ; 797e8 (1e:57e8) ld e, a ld [W_BASECOORDX], a ld hl, wOAMBuffer -.asm_797fa - call Animations_79329 +.loop + call BattleAnimWriteOAMEntry dec c - jr nz, .asm_797fa + jr nz, .loop ret AnimationHideMonPic: ; 79801 (1e:5801) ; Hides the mon's sprite. ld a, [H_WHOSETURN] and a - jr z, .asm_7980a - ld a, $c - jr Func_7980c -.asm_7980a - ld a, $65 + jr z, .playerTurn + ld a, 12 + jr ClearMonPicFromTileMap +.playerTurn + ld a, 5 * SCREEN_WIDTH + 1 -Func_7980c: ; 7980c (1e:580c) +ClearMonPicFromTileMap: ; 7980c (1e:580c) push hl push de push bc ld e, a - ld d, $0 + ld d, 0 coord hl, 0, 0 add hl, de - ld bc, $707 + lb bc, 7, 7 call ClearScreenArea pop bc pop de @@ -2251,20 +2286,22 @@ GetTileIDList: ; 79842 (1e:5842) ld b, a ret -Func_7985b: ; 7985b (1e:585b) +AnimCopyRowLeft: ; 7985b (1e:585b) +; copy a row of c tiles 1 tile left ld a, [hld] ld [hli], a inc hl dec c - jr nz, Func_7985b + jr nz, AnimCopyRowLeft ret -Func_79862: ; 79862 (1e:5862) +AnimCopyRowRight: ; 79862 (1e:5862) +; copy a row of c tiles 1 tile right ld a, [hli] ld [hld], a dec hl dec c - jr nz, Func_79862 + jr nz, AnimCopyRowRight ret ; get the sound of the move id in b @@ -2649,12 +2686,12 @@ AnimationLeavesFalling: ; 79c74 (1e:5c74) ; in Razor Leaf's animation. ld a, [rOBP0] push af - ld a, [wcc79] + ld a, [wAnimPalette] ld [rOBP0], a - ld d, $37 - ld a, $3 - ld [W_SUBANIMTRANSFORM], a - call Func_79c97 + ld d, $37 ; leaf tile + ld a, 3 ; number of leaves + ld [wNumFallingObjects], a + call AnimationFallingObjects pop af ld [rOBP0], a ret @@ -2662,115 +2699,120 @@ AnimationLeavesFalling: ; 79c74 (1e:5c74) AnimationPetalsFalling: ; 79c8a (1e:5c8a) ; Makes lots of petals fall down from the top of the screen. It's used in ; the animation for Petal Dance. - ld d, $71 - ld a, $14 - ld [W_SUBANIMTRANSFORM], a - call Func_79c97 + ld d, $71 ; petal tile + ld a, 20 ; number of petals + ld [wNumFallingObjects], a + call AnimationFallingObjects jp ClearSprites -Func_79c97: ; 79c97 (1e:5c97) +AnimationFallingObjects: ; 79c97 (1e:5c97) ld c, a - ld a, $1 - call Func_797e8 - call Func_79d2a - call Func_79d52 + ld a, 1 + call InitMultipleObjectsOAM + call FallingObjects_InitXCoords + call FallingObjects_InitMovementData ld hl, wOAMBuffer - ld [hl], $0 -.asm_79ca8 - ld hl, wTrainerSpriteOffset - ld de, $0000 - ld a, [W_SUBANIMTRANSFORM] + ld [hl], 0 +.loop + ld hl, wFallingObjectsMovementData + ld de, 0 + ld a, [wNumFallingObjects] ld c, a -.asm_79cb2 +.innerLoop push bc push hl push de ld a, [hl] - ld [wd08a], a - call Func_79d16 - call Func_79cdb + ld [wFallingObjectMovementByte], a + call FallingObjects_UpdateMovementByte + call FallingObjects_UpdateOAMEntry pop de - ld hl, $0004 + ld hl, 4 add hl, de ld e, l ld d, h pop hl - ld a, [wd08a] + ld a, [wFallingObjectMovementByte] ld [hli], a pop bc dec c - jr nz, .asm_79cb2 + jr nz, .innerLoop call Delay3 ld hl, wOAMBuffer - ld a, [hl] - cp $68 - jr nz, .asm_79ca8 + ld a, [hl] ; Y + cp 104 ; has the top falling object reached 104 yet? + jr nz, .loop ; keep moving the falling objects down until it does ret -Func_79cdb: ; 79cdb (1e:5cdb) +FallingObjects_UpdateOAMEntry: ; 79cdb (1e:5cdb) +; Increases Y by 2 pixels and adjusts X and X flip based on the falling object's +; movement byte. ld hl, wOAMBuffer add hl, de ld a, [hl] inc a inc a - cp $70 - jr c, .asm_79ce8 - ld a, $a0 -.asm_79ce8 - ld [hli], a - ld a, [wd08a] + cp 112 + jr c, .next + ld a, 160 ; if Y >= 112, put it off-screen +.next + ld [hli], a ; Y + ld a, [wFallingObjectMovementByte] ld b, a - ld de, Unknown_79d0d + ld de, FallingObjects_DeltaXs and $7f add e - jr nc, .asm_79cf6 + jr nc, .noCarry inc d -.asm_79cf6 +.noCarry ld e, a ld a, b and $80 - jr nz, .asm_79d03 + jr nz, .movingLeft +; moving right ld a, [de] add [hl] - ld [hli], a + ld [hli], a ; X inc hl - xor a - jr .asm_79d0b -.asm_79d03 + xor a ; no horizontal flip + jr .next2 +.movingLeft ld a, [de] ld b, a ld a, [hl] sub b - ld [hli], a + ld [hli], a ; X inc hl - ld a, $20 -.asm_79d0b - ld [hl], a + ld a, (1 << OAM_X_FLIP) +.next2 + ld [hl], a ; attribute ret -Unknown_79d0d: ; 79d0d (1e:5d0d) - db $00,$01,$03,$05,$07,$09,$0B,$0D,$0F +FallingObjects_DeltaXs: ; 79d0d (1e:5d0d) + db 0, 1, 3, 5, 7, 9, 11, 13, 15 -Func_79d16: ; 79d16 (1e:5d16) - ld a, [wd08a] +FallingObjects_UpdateMovementByte: ; 79d16 (1e:5d16) + ld a, [wFallingObjectMovementByte] inc a ld b, a and $7f - cp $9 + cp 9 ; have we reached the end of the delta-Xs? ld a, b - jr nz, .asm_79d26 + jr nz, .next +; We've reached the end of the delta-Xs, so wrap to the start and change +; direction from right to left or vice versa. and $80 xor $80 -.asm_79d26 - ld [wd08a], a +.next + ld [wFallingObjectMovementByte], a ret -Func_79d2a: ; 79d2a (1e:5d2a) +FallingObjects_InitXCoords: ; 79d2a (1e:5d2a) ld hl, wOAMBuffer + $01 - ld de, Unknown_79d3e - ld a, [W_SUBANIMTRANSFORM] + ld de, FallingObjects_InitialXCoords + ld a, [wNumFallingObjects] ld c, a -.asm_79d34 +.loop ld a, [de] ld [hli], a inc hl @@ -2778,66 +2820,98 @@ Func_79d2a: ; 79d2a (1e:5d2a) inc hl inc de dec c - jr nz, .asm_79d34 + jr nz, .loop ret -Unknown_79d3e: ; 79d3e (1e:5d3e) +FallingObjects_InitialXCoords: ; 79d3e (1e:5d3e) db $38,$40,$50,$60,$70,$88,$90,$56,$67,$4A,$77,$84,$98,$32,$22,$5C,$6C,$7D,$8E,$99 -Func_79d52: ; 79d52 (1e:5d52) - ld hl, wTrainerSpriteOffset - ld de, Unknown_79d63 - ld a, [W_SUBANIMTRANSFORM] +FallingObjects_InitMovementData: ; 79d52 (1e:5d52) + ld hl, wFallingObjectsMovementData + ld de, FallingObjects_InitialMovementData + ld a, [wNumFallingObjects] ld c, a -.asm_79d5c +.loop ld a, [de] ld [hli], a inc de dec c - jr nz, .asm_79d5c + jr nz, .loop ret -Unknown_79d63: ; 79d63 (1e:5d63) +FallingObjects_InitialMovementData: ; 79d63 (1e:5d63) db $00,$84,$06,$81,$02,$88,$01,$83,$05,$89,$09,$80,$07,$87,$03,$82,$04,$85,$08,$86 AnimationShakeEnemyHUD: ; 79d77 (1e:5d77) +; Shakes the enemy HUD. + +; Make a copy of the back pic's tile patterns in sprite tile pattern VRAM. ld de, vBackPic ld hl, vSprites ld bc, 7 * 7 call CopyVideoData + xor a ld [hSCX], a + +; Copy wTileMap to BG map 0. The regular BG (not the window) is set to use +; map 0 and can be scrolled with SCX, which allows a shaking effect. ld hl, vBGMap0 - call Func_79e0d - ld a, $90 + call BattleAnimCopyTileMapToVRAM + +; Now that the regular BG is showing the same thing the window was, move the +; window off the screen so that we can modify its contents below. + ld a, SCREEN_HEIGHT_PIXELS ld [hWY], a - ld hl, vBGMap0 + $320 - call Func_79e0d - ld a, $38 + +; Copy wTileMap to VRAM such that the row below the enemy HUD (in wTileMap) is +; lined up with row 0 of the window. + ld hl, vBGMap1 - $20 * 7 + call BattleAnimCopyTileMapToVRAM + +; Move the window so that the row below the enemy HUD (in BG map 0) lines up +; with the top row of the window on the screen. This makes it so that the window +; covers everything below the enemy HD with a copy that looks just like what +; was there before. + ld a, 7 * 8 ld [hWY], a - call _AnimationShakeEnemyHUD + +; Write OAM entries so that the copy of the back pic from the top of this +; function shows up on screen. We need this because the back pic's Y coordinates +; range overlaps with that of the enemy HUD and we don't want to shake the top +; of the back pic when we shake the enemy HUD. The OAM copy won't be affected +; by SCX. + call ShakeEnemyHUD_WritePlayerMonPicOAM + ld hl, vBGMap0 - call Func_79e0d + call BattleAnimCopyTileMapToVRAM + +; Remove the back pic from the BG map. call AnimationHideMonPic call Delay3 - ld de, $0208 - call Func_79de9 + +; Use SCX to shake the regular BG. The window and the back pic OAM copy are +; not affected. + lb de, 2, 8 + call ShakeEnemyHUD_ShakeBG + +; Restore the original graphics. call AnimationShowMonPic call ClearSprites - ld a, $90 + ld a, SCREEN_HEIGHT_PIXELS ld [hWY], a ld hl, vBGMap1 - call Func_79e0d + call BattleAnimCopyTileMapToVRAM xor a ld [hWY], a call SaveScreenTilesToBuffer1 ld hl, vBGMap0 - call Func_79e0d + call BattleAnimCopyTileMapToVRAM call ClearScreen call Delay3 call LoadScreenTilesFromBuffer1 ld hl, vBGMap1 - jp Func_79e0d + jp BattleAnimCopyTileMapToVRAM ; b = tile ID list index ; c = base tile ID @@ -2851,27 +2925,27 @@ CopyTileIDsFromList: ; 79dda (1e:5dda) pop hl jp CopyTileIDs -Func_79de9: ; 79de9 (1e:5de9) +ShakeEnemyHUD_ShakeBG: ; 79de9 (1e:5de9) ld a, [hSCX] - ld [wTrainerSpriteOffset], a -.asm_79dee - ld a, [wTrainerSpriteOffset] + ld [wTempSCX], a +.loop + ld a, [wTempSCX] add d ld [hSCX], a ld c, 2 call DelayFrames - ld a, [wTrainerSpriteOffset] + ld a, [wTempSCX] sub d ld [hSCX], a ld c, 2 call DelayFrames dec e - jr nz, .asm_79dee - ld a, [wTrainerSpriteOffset] + jr nz, .loop + ld a, [wTempSCX] ld [hSCX], a ret -Func_79e0d: ; 79e0d (1e:5e0d) +BattleAnimCopyTileMapToVRAM: ; 79e0d (1e:5e0d) ld a, h ld [H_AUTOBGTRANSFERDEST + 1], a ld a, l @@ -2942,19 +3016,19 @@ PlayApplyingAttackSound: ; 79e6a (1e:5e6a) ld a, [wDamageMultipliers] and $7f ret z - cp $a + cp 10 ld a, $20 ld b, $30 ld c, SFX_DAMAGE - jr z, .asm_79e8b + jr z, .playSound ld a, $e0 ld b, $ff ld c, SFX_SUPER_EFFECTIVE - jr nc, .asm_79e8b + jr nc, .playSound ld a, $50 ld b, $1 ld c, SFX_NOT_VERY_EFFECTIVE -.asm_79e8b +.playSound ld [wc0f1], a ld a, b ld [wc0f2], a diff --git a/engine/battle/battle_transitions.asm b/engine/battle/battle_transitions.asm index 056c55ea..e64cbabb 100644 --- a/engine/battle/battle_transitions.asm +++ b/engine/battle/battle_transitions.asm @@ -210,28 +210,28 @@ BattleTransition_Spiral: ; 70a72 (1c:4a72) .outwardSpiral coord hl, 10, 10 ld a, $3 - ld [wd09f], a + ld [wOutwardSpiralCurrentDirection], a ld a, l - ld [wd09b], a + ld [wOutwardSpiralTileMapPointer + 1], a ld a, h - ld [wd09a], a - ld b, $78 -.loop1 - ld c, $3 -.loop2 + ld [wOutwardSpiralTileMapPointer], a + ld b, 120 +.loop + ld c, 3 +.innerLoop push bc call BattleTransition_OutwardSpiral_ pop bc dec c - jr nz, .loop2 + jr nz, .innerLoop call DelayFrame dec b - jr nz, .loop1 + jr nz, .loop .done call BattleTransition_BlackScreen xor a - ld [wd09b], a - ld [wd09a], a + ld [wOutwardSpiralTileMapPointer + 1], a + ld [wOutwardSpiralTileMapPointer], a ret BattleTransition_InwardSpiral: ; 70aaa (1c:4aaa) @@ -286,69 +286,69 @@ BattleTransition_InwardSpiral_: ; 70ae0 (1c:4ae0) BattleTransition_OutwardSpiral_: ; 70af9 (1c:4af9) ld bc, -SCREEN_WIDTH ld de, SCREEN_WIDTH - ld a, [wd09b] + ld a, [wOutwardSpiralTileMapPointer + 1] ld l, a - ld a, [wd09a] + ld a, [wOutwardSpiralTileMapPointer] ld h, a - ld a, [wd09f] + ld a, [wOutwardSpiralCurrentDirection] cp $0 - jr z, .zero + jr z, .up cp $1 - jr z, .one + jr z, .left cp $2 - jr z, .two + jr z, .down cp $3 - jr z, .three -.done1 + jr z, .right +.keepSameDirection ld [hl], $ff -.done2_ +.done ld a, l - ld [wd09b], a + ld [wOutwardSpiralTileMapPointer + 1], a ld a, h - ld [wd09a], a + ld [wOutwardSpiralTileMapPointer], a ret -.zero +.up dec hl ld a, [hl] cp $ff - jr nz, .done2 + jr nz, .changeDirection inc hl add hl, bc - jr .done1 -.one + jr .keepSameDirection +.left add hl, de ld a, [hl] cp $ff - jr nz, .done2 + jr nz, .changeDirection add hl, bc dec hl - jr .done1 -.two + jr .keepSameDirection +.down inc hl ld a, [hl] cp $ff - jr nz, .done2 + jr nz, .changeDirection dec hl add hl, de - jr .done1 -.three + jr .keepSameDirection +.right add hl, bc ld a, [hl] cp $ff - jr nz, .done2 + jr nz, .changeDirection add hl, de inc hl - jr .done1 -.done2 + jr .keepSameDirection +.changeDirection ld [hl], $ff - ld a, [wd09f] + ld a, [wOutwardSpiralCurrentDirection] inc a cp $4 jr nz, .skip xor a .skip - ld [wd09f], a - jr .done2_ + ld [wOutwardSpiralCurrentDirection], a + jr .done FlashScreen: BattleTransition_FlashScreen_: ; 70b5d (1c:4b5d) diff --git a/engine/battle/core.asm b/engine/battle/core.asm index 2be2f78a..0406fe7b 100755 --- a/engine/battle/core.asm +++ b/engine/battle/core.asm @@ -357,7 +357,7 @@ EnemyRan: ; 3c202 (f:4202) call PlaySoundWaitForCurrent xor a ld [H_WHOSETURN], a - jpab AnimationSlideEnemyMonOut + jpab AnimationSlideEnemyMonOff WildRanText: ; 3c229 (f:4229) TX_FAR _WildRanText diff --git a/engine/battle/ghost_marowak_anim.asm b/engine/battle/ghost_marowak_anim.asm index e3b3f42c..96e65f70 100644 --- a/engine/battle/ghost_marowak_anim.asm +++ b/engine/battle/ghost_marowak_anim.asm @@ -12,10 +12,10 @@ MarowakAnim: ; 708ca (1c:48ca) ld [H_AUTOBGTRANSFERENABLED], a ; disable BG transfer so we don't see the Marowak too soon ; replace ghost pic with Marowak in BG ld a, MAROWAK - ld [wHPBarMaxHP], a + ld [wChangeMonPicEnemyTurnSpecies], a ld a, $1 ld [H_WHOSETURN], a - callab Func_79793 + callab ChangeMonPic ; alternate between black and light grey 8 times. ; this makes the ghost's body appear to flash ld d, $80 diff --git a/engine/hidden_object_functions7.asm b/engine/hidden_object_functions7.asm index 283bf32f..4e76d996 100755 --- a/engine/hidden_object_functions7.asm +++ b/engine/hidden_object_functions7.asm @@ -293,7 +293,7 @@ UpdateCinnabarGymGateTileBlocks_: ; 1eb0a (7:6b0a) ld a, $e .next pop bc - ld [wd09f], a + ld [wNewTileBlockID], a predef ReplaceTileBlock ld hl, $ffdb dec [hl] diff --git a/engine/intro.asm b/engine/intro.asm index 6b5c46c9..c7c4a04d 100755 --- a/engine/intro.asm +++ b/engine/intro.asm @@ -38,7 +38,7 @@ PlayIntroScene: ; 4169d (10:569d) ld a, SFX_INTRO_HIP call PlaySound xor a - ld [wd09f], a + ld [wIntroNidorinoBaseTile], a ld de, IntroNidorinoAnimation1 call AnimateIntroNidorino ; hop @@ -86,7 +86,7 @@ PlayIntroScene: ; 4169d (10:569d) ld a, SFX_INTRO_HIP call PlaySound ld a, $24 - ld [wd09f], a + ld [wIntroNidorinoBaseTile], a ld de, IntroNidorinoAnimation3 call AnimateIntroNidorino ld c, $1e @@ -105,7 +105,7 @@ PlayIntroScene: ; 4169d (10:569d) ld a, SFX_INTRO_HIP call PlaySound xor a - ld [wd09f], a + ld [wIntroNidorinoBaseTile], a ld de, IntroNidorinoAnimation4 call AnimateIntroNidorino ; hop @@ -118,7 +118,7 @@ PlayIntroScene: ; 4169d (10:569d) ret c ld a, $24 - ld [wd09f], a + ld [wIntroNidorinoBaseTile], a ld de, IntroNidorinoAnimation6 call AnimateIntroNidorino ld c, $1e @@ -129,7 +129,7 @@ PlayIntroScene: ; 4169d (10:569d) ld a, SFX_INTRO_LUNGE call PlaySound ld a, $48 - ld [wd09f], a + ld [wIntroNidorinoBaseTile], a ld de, IntroNidorinoAnimation7 jp AnimateIntroNidorino @@ -152,17 +152,17 @@ AnimateIntroNidorino: ; 41793 (10:5793) UpdateIntroNidorinoOAM: ; 417ae (10:57ae) ld hl, wOAMBuffer - ld a, [wd09f] + ld a, [wIntroNidorinoBaseTile] ld d, a .loop ld a, [W_BASECOORDY] add [hl] - ld [hli], a + ld [hli], a ; Y ld a, [W_BASECOORDX] add [hl] - ld [hli], a + ld [hli], a ; X ld a, d - ld [hli], a + ld [hli], a ; tile inc hl inc d dec c diff --git a/engine/items/items.asm b/engine/items/items.asm index a60d765a..b0013b46 100755 --- a/engine/items/items.asm +++ b/engine/items/items.asm @@ -319,7 +319,7 @@ ItemUseBall: ; d687 (3:5687) ld a,TOSS_ANIM ld [W_ANIMATIONID],a xor a - ld [$fff3],a + ld [H_WHOSETURN],a ld [wAnimationType],a ld [wDamageMultipliers],a ld a,[wWhichPokemon] diff --git a/engine/overworld/card_key.asm b/engine/overworld/card_key.asm index 0bb2e1b4..cc9fe3a7 100755 --- a/engine/overworld/card_key.asm +++ b/engine/overworld/card_key.asm @@ -47,7 +47,7 @@ PrintCardKeyText: ; 52673 (14:6673) .notSilphCo11F ld a, $e .replaceCardKeyDoorTileBlock - ld [wd09f], a + ld [wNewTileBlockID], a predef ReplaceTileBlock ld hl, wd126 set 5, [hl] diff --git a/engine/overworld/cut.asm b/engine/overworld/cut.asm index 293daee7..2056bbb0 100755 --- a/engine/overworld/cut.asm +++ b/engine/overworld/cut.asm @@ -3,21 +3,21 @@ UsedCut: ; ef54 (3:6f54) ld [wActionResultOrTookBattleTurn], a ; initialise to failure value ld a, [W_CURMAPTILESET] and a ; OVERWORLD - jr z, .asm_ef6b + jr z, .overworld cp GYM - jr nz, .asm_ef77 + jr nz, .nothingToCut ld a, [wTileInFrontOfPlayer] cp $50 ; gym cut tree - jr nz, .asm_ef77 - jr .asm_ef82 -.asm_ef6b + jr nz, .nothingToCut + jr .canCut +.overworld dec a ld a, [wTileInFrontOfPlayer] cp $3d ; cut tree - jr z, .asm_ef82 + jr z, .canCut cp $52 ; grass - jr z, .asm_ef82 -.asm_ef77 + jr z, .canCut +.nothingToCut ld hl, .NothingToCutText jp PrintText @@ -25,9 +25,9 @@ UsedCut: ; ef54 (3:6f54) TX_FAR _NothingToCutText db "@" -.asm_ef82 +.canCut ld [wCutTile], a - ld a, $1 + ld a, 1 ld [wActionResultOrTookBattleTurn], a ; used cut ld a, [wWhichPokemon] ld hl, wPartyMonNicks @@ -37,7 +37,7 @@ UsedCut: ; ef54 (3:6f54) call GBPalWhiteOutWithDelay3 call ClearSprites call RestoreScreenTilesAndReloadTilePatterns - ld a, $90 + ld a, SCREEN_HEIGHT_PIXELS ld [hWY], a call Delay3 call LoadGBPal @@ -53,11 +53,11 @@ UsedCut: ; ef54 (3:6f54) res 6, [hl] ld a, $ff ld [wUpdateSpritesEnabled], a - call AnimateCutTree + call InitCutAnimOAM ld de, CutTreeBlockSwaps - call Func_f09f + call ReplaceTreeTileBlock call RedrawMapView - callba Func_79e96 + callba AnimCut ld a, $1 ld [wUpdateSpritesEnabled], a ld a, SFX_CUT @@ -71,14 +71,15 @@ UsedCutText: ; eff2 (3:6ff2) TX_FAR _UsedCutText db "@" -AnimateCutTree: ; eff7 (3:6ff7) +InitCutAnimOAM: ; eff7 (3:6ff7) xor a ld [wWhichAnimationOffsets], a ld a, $e4 ld [rOBP1], a ld a, [wCutTile] cp $52 - jr z, .asm_f020 + jr z, .grass +; tree ld de, Overworld_GFX + $2d0 ; cuttable tree sprite top row ld hl, vChars1 + $7c0 ld bc, (BANK(Overworld_GFX) << 8) + $02 @@ -87,45 +88,45 @@ AnimateCutTree: ; eff7 (3:6ff7) ld hl, vChars1 + $7e0 ld bc, (BANK(Overworld_GFX) << 8) + $02 call CopyVideoData - jr WriteCutTreeBoulderDustAnimationOAMBlock -.asm_f020 + jr WriteCutOrBoulderDustAnimationOAMBlock +.grass ld hl, vChars1 + $7c0 - call LoadCutTreeAnimationTilePattern + call LoadCutGrassAnimationTilePattern ld hl, vChars1 + $7d0 - call LoadCutTreeAnimationTilePattern + call LoadCutGrassAnimationTilePattern ld hl, vChars1 + $7e0 - call LoadCutTreeAnimationTilePattern + call LoadCutGrassAnimationTilePattern ld hl, vChars1 + $7f0 - call LoadCutTreeAnimationTilePattern - call WriteCutTreeBoulderDustAnimationOAMBlock + call LoadCutGrassAnimationTilePattern + call WriteCutOrBoulderDustAnimationOAMBlock ld hl, wOAMBuffer + $93 - ld de, $4 + ld de, 4 ld a, $30 ld c, e -.asm_f044 +.loop ld [hl], a add hl, de xor $60 dec c - jr nz, .asm_f044 + jr nz, .loop ret -LoadCutTreeAnimationTilePattern: ; f04c (3:704c) +LoadCutGrassAnimationTilePattern: ; f04c (3:704c) ld de, AnimationTileset2 + $60 ; tile depicting a leaf ld bc, (BANK(AnimationTileset2) << 8) + $01 jp CopyVideoData -WriteCutTreeBoulderDustAnimationOAMBlock: ; f055 (3:7055) - call GetCutTreeBoulderDustAnimationOffsets +WriteCutOrBoulderDustAnimationOAMBlock: ; f055 (3:7055) + call GetCutOrBoulderDustAnimationOffsets ld a, $9 - ld de, CutTreeBoulderDustAnimationTilesAndAttributes + ld de, CutOrBoulderDustAnimationTilesAndAttributes jp WriteOAMBlock -CutTreeBoulderDustAnimationTilesAndAttributes: ; f060 (3:7060) +CutOrBoulderDustAnimationTilesAndAttributes: ; f060 (3:7060) db $FC,$10,$FD,$10 db $FE,$10,$FF,$10 -GetCutTreeBoulderDustAnimationOffsets: ; f068 (3:7068) +GetCutOrBoulderDustAnimationOffsets: ; f068 (3:7068) ld hl, wSpriteStateData1 + 4 ld a, [hli] ; player's sprite screen Y position ld b, a @@ -140,10 +141,10 @@ GetCutTreeBoulderDustAnimationOffsets: ; f068 (3:7068) ld d, $0 ; de holds direction (00: down, 02: up, 04: left, 06: right) ld a, [wWhichAnimationOffsets] and a - ld hl, CutTreeAnimationOffsets - jr z, .asm_f084 + ld hl, CutAnimationOffsets + jr z, .next ld hl, BoulderDustAnimationOffsets -.asm_f084 +.next add hl, de ld e, [hl] inc hl @@ -156,7 +157,7 @@ GetCutTreeBoulderDustAnimationOffsets: ; f068 (3:7068) ld c, a ret -CutTreeAnimationOffsets: ; f08f (3:708f) +CutAnimationOffsets: ; f08f (3:708f) ; Each pair represents the x and y pixels offsets from the player of where the cut tree animation should be drawn db 8, 36 ; player is facing down db 8, 4 ; player is facing up @@ -171,75 +172,79 @@ BoulderDustAnimationOffsets: ; f097 (3:7097) db -24, 20 ; player is facing left db 40, 20 ; player is facing right -Func_f09f: ; f09f (3:709f) +ReplaceTreeTileBlock: ; f09f (3:709f) +; Determine the address of the tile block that contains the tile in front of the +; player (i.e. where the tree is) and replace it with the corresponding tile +; block that doesn't have the tree. push de ld a, [W_CURMAPWIDTH] - add $6 + add 6 ld c, a - ld b, $0 - ld d, $0 + ld b, 0 + ld d, 0 ld hl, wCurrentTileBlockMapViewPointer ld a, [hli] ld h, [hl] ld l, a add hl, bc - ld a, [wSpriteStateData1 + 9] + ld a, [wSpriteStateData1 + 9] ; player sprite's facing direction and a jr z, .down cp SPRITE_FACING_UP jr z, .up cp SPRITE_FACING_LEFT jr z, .left +; right ld a, [W_XBLOCKCOORD] and a - jr z, .asm_f0e0 - jr .asm_f0ec + jr z, .centerTileBlock + jr .rightOfCenter .down ld a, [W_YBLOCKCOORD] and a - jr z, .asm_f0e0 - jr .asm_f0df + jr z, .centerTileBlock + jr .belowCenter .up ld a, [W_YBLOCKCOORD] and a - jr z, .asm_f0e1 - jr .asm_f0e0 + jr z, .aboveCenter + jr .centerTileBlock .left ld a, [W_XBLOCKCOORD] and a - jr z, .asm_f0e6 - jr .asm_f0e0 -.asm_f0df + jr z, .leftOfCenter + jr .centerTileBlock +.belowCenter add hl, bc -.asm_f0e0 +.centerTileBlock add hl, bc -.asm_f0e1 +.aboveCenter ld e, $2 add hl, de - jr .asm_f0f0 -.asm_f0e6 + jr .next +.leftOfCenter ld e, $1 add hl, bc add hl, de - jr .asm_f0f0 -.asm_f0ec + jr .next +.rightOfCenter ld e, $3 add hl, bc add hl, de -.asm_f0f0 +.next pop de ld a, [hl] ld c, a -.asm_f0f3 +.loop ; find the matching tile block in the array ld a, [de] inc de inc de cp $ff ret z cp c - jr nz, .asm_f0f3 + jr nz, .loop dec de - ld a, [de] + ld a, [de] ; replacement tile block from matching array entry ld [hl], a ret diff --git a/engine/overworld/cut2.asm b/engine/overworld/cut2.asm index 3194b39b..1cf832b5 100755 --- a/engine/overworld/cut2.asm +++ b/engine/overworld/cut2.asm @@ -1,19 +1,19 @@ -Func_79e96: ; 79e96 (1e:5e96) +AnimCut: ; 79e96 (1e:5e96) ld a, [wCutTile] cp $52 - jr z, .asm_79ec8 + jr z, .grass ld c, $8 -.asm_79e9f +.cutTreeLoop push bc ld hl, wOAMBuffer + $91 - ld a, $1 - ld [wd08a], a - ld c, $2 + ld a, 1 + ld [wCoordAdjustmentAmount], a + ld c, 2 call AdjustOAMBlockXPos2 ld hl, wOAMBuffer + $99 - ld a, $ff - ld [wd08a], a - ld c, $2 + ld a, -1 + ld [wCoordAdjustmentAmount], a + ld c, 2 call AdjustOAMBlockXPos2 ld a, [rOBP1] xor $64 @@ -21,49 +21,49 @@ Func_79e96: ; 79e96 (1e:5e96) call DelayFrame pop bc dec c - jr nz, .asm_79e9f + jr nz, .cutTreeLoop ret -.asm_79ec8 - ld c, $2 -.asm_79eca +.grass + ld c, 2 +.cutGrassLoop push bc ld c, $8 - call Func_79eed - call Func_79f30 + call AnimCutGrass_UpdateOAMEntries + call AnimCutGrass_SwapOAMEntries ld c, $8 - call Func_79eed - call Func_79f30 + call AnimCutGrass_UpdateOAMEntries + call AnimCutGrass_SwapOAMEntries ld hl, wOAMBuffer + $90 - ld a, $2 - ld [wd08a], a - ld c, $4 + ld a, 2 + ld [wCoordAdjustmentAmount], a + ld c, 4 call AdjustOAMBlockYPos2 pop bc dec c - jr nz, .asm_79eca + jr nz, .cutGrassLoop ret -Func_79eed: ; 79eed (1e:5eed) +AnimCutGrass_UpdateOAMEntries: ; 79eed (1e:5eed) push bc ld hl, wOAMBuffer + $91 - ld a, $1 - ld [wd08a], a - ld c, $1 + ld a, 1 + ld [wCoordAdjustmentAmount], a + ld c, 1 call AdjustOAMBlockXPos2 ld hl, wOAMBuffer + $95 - ld a, $2 - ld [wd08a], a - ld c, $1 + ld a, 2 + ld [wCoordAdjustmentAmount], a + ld c, 1 call AdjustOAMBlockXPos2 ld hl, wOAMBuffer + $99 - ld a, $fe - ld [wd08a], a - ld c, $1 + ld a, -2 + ld [wCoordAdjustmentAmount], a + ld c, 1 call AdjustOAMBlockXPos2 ld hl, wOAMBuffer + $9d - ld a, $ff - ld [wd08a], a - ld c, $1 + ld a, -1 + ld [wCoordAdjustmentAmount], a + ld c, 1 call AdjustOAMBlockXPos2 ld a, [rOBP1] xor $64 @@ -71,19 +71,19 @@ Func_79eed: ; 79eed (1e:5eed) call DelayFrame pop bc dec c - jr nz, Func_79eed + jr nz, AnimCutGrass_UpdateOAMEntries ret -Func_79f30: ; 79f30 (1e:5f30) +AnimCutGrass_SwapOAMEntries: ; 79f30 (1e:5f30) ld hl, wOAMBuffer + $90 - ld de, wHPBarMaxHP + ld de, wBuffer ld bc, $8 call CopyData ld hl, wOAMBuffer + $98 ld de, wOAMBuffer + $90 ld bc, $8 call CopyData - ld hl, wHPBarMaxHP + ld hl, wBuffer ld de, wOAMBuffer + $98 ld bc, $8 jp CopyData diff --git a/engine/overworld/ssanne.asm b/engine/overworld/ssanne.asm index a59ae794..8c5485e2 100755 --- a/engine/overworld/ssanne.asm +++ b/engine/overworld/ssanne.asm @@ -8,14 +8,14 @@ AnimateBoulderDust: ; 79f54 (1e:5f54) ld a, %11100100 ld [rOBP1], a call LoadSmokeTileFourTimes - callba WriteCutTreeBoulderDustAnimationOAMBlock + callba WriteCutOrBoulderDustAnimationOAMBlock ld c, 8 ; number of steps in animation .loop push bc call GetMoveBoulderDustFunctionPointer ld bc, .returnAddress push bc - ld c, $4 + ld c, 4 jp [hl] .returnAddress ld a, [rOBP1] @@ -36,7 +36,7 @@ GetMoveBoulderDustFunctionPointer: ; 79f92 (1e:5f92) ld b, $0 add hl, bc ld a, [hli] - ld [wd08a], a + ld [wCoordAdjustmentAmount], a ld a, [hli] ld e, a ld a, [hli] diff --git a/engine/slot_machine.asm b/engine/slot_machine.asm index 990687ff..8e98f662 100755 --- a/engine/slot_machine.asm +++ b/engine/slot_machine.asm @@ -711,12 +711,12 @@ SlotMachine_PayCoinsToPlayer: ; 3776b (d:776b) SlotMachine_PutOutLitBalls: ; 377ce (d:77ce) ld a, $23 - ld [wd08a], a + ld [wNewSlotMachineBallTile], a jr SlotMachine_UpdateThreeCoinBallTiles SlotMachine_LightBalls: ; 377d5 (d:77d5) ld a, $14 - ld [wd08a], a + ld [wNewSlotMachineBallTile], a ld a, [wSlotMachineBet] dec a jr z, SlotMachine_UpdateOneCoinBallTiles @@ -739,7 +739,7 @@ SlotMachine_UpdateOneCoinBallTiles: ; 377fb (d:77fb) coord hl, 3, 6 SlotMachine_UpdateBallTiles: ; 377fe (d:77fe) - ld a, [wd08a] + ld a, [wNewSlotMachineBallTile] ld [hl], a ld bc, 13 add hl, bc diff --git a/engine/trade.asm b/engine/trade.asm index ba8de4ff..74fd3434 100755 --- a/engine/trade.asm +++ b/engine/trade.asm @@ -304,25 +304,25 @@ Trade_AnimateBallEnteringLinkCable: ; 412d2 (10:52d2) ld a, %11100100 ld [rOBP0], a xor a - ld [wd09f], a + ld [wLinkCableAnimBulgeToggle], a ld bc, $2060 .moveBallInsideLinkCableLoop push bc xor a ld de, Trade_BallInsideLinkCableOAM call WriteOAMBlock - ld a, [wd09f] + ld a, [wLinkCableAnimBulgeToggle] xor $1 - ld [wd09f], a + ld [wLinkCableAnimBulgeToggle], a add $7e ld hl, wOAMBuffer + $02 - ld de, $4 + ld de, 4 ld c, e -.cycleSpriteFramesLoop +.cycleLinkCableBulgeTile ld [hl], a add hl, de dec c - jr nz, .cycleSpriteFramesLoop + jr nz, .cycleLinkCableBulgeTile call Delay3 pop bc ld a, c @@ -411,12 +411,12 @@ HandlePartyMenuInput:: ; 145a (0:145a) ld a,1 ld [wMenuWrappingEnabled],a ld a,$40 - ld [wd09b],a - call HandleMenuInputPokemonSelection + ld [wPartyMenuAnimMonEnabled],a + call HandleMenuInput_ call PlaceUnfilledArrowMenuCursor ld b,a xor a - ld [wd09b],a + ld [wPartyMenuAnimMonEnabled],a ld a,[wCurrentMenuItem] ld [wPartyAndBillsPCSavedMenuItem],a ld hl,wd730 @@ -3897,9 +3897,9 @@ WriteOAMBlock:: ; 3a97 (0:3a97) HandleMenuInput:: ; 3abe (0:3abe) xor a - ld [wd09b],a + ld [wPartyMenuAnimMonEnabled],a -HandleMenuInputPokemonSelection:: ; 3ac2 (0:3ac2) +HandleMenuInput_:: ; 3ac2 (0:3ac2) ld a,[H_DOWNARROWBLINKCNT1] push af ld a,[H_DOWNARROWBLINKCNT2] @@ -3915,7 +3915,7 @@ HandleMenuInputPokemonSelection:: ; 3ac2 (0:3ac2) call Delay3 .loop2 push hl - ld a,[wd09b] + ld a,[wPartyMenuAnimMonEnabled] and a ; is it a pokemon selection menu? jr z,.getJoypadState callba AnimatePartyMon ; shake mini sprite of selected pokemon diff --git a/scripts/agatha.asm b/scripts/agatha.asm index f0607785..60ddf606 100755 --- a/scripts/agatha.asm +++ b/scripts/agatha.asm @@ -21,7 +21,7 @@ AgathaScript_76443: ; 76443 (1d:6443) ld a, $3b AgathaScript_76459: ; 76459 (1d:6459) - ld [wd09f], a + ld [wNewTileBlockID], a ld bc, $2 predef_jump ReplaceTileBlock diff --git a/scripts/bruno.asm b/scripts/bruno.asm index 1aae7d19..c39656b9 100755 --- a/scripts/bruno.asm +++ b/scripts/bruno.asm @@ -21,7 +21,7 @@ BrunoScript_762ec: ; 762ec (1d:62ec) ld a, $24 BrunoScript_76302: ; 76302 (1d:6302) - ld [wd09f], a + ld [wNewTileBlockID], a ld bc, $2 predef_jump ReplaceTileBlock diff --git a/scripts/celadongamecorner.asm b/scripts/celadongamecorner.asm index 48264603..84919b64 100755 --- a/scripts/celadongamecorner.asm +++ b/scripts/celadongamecorner.asm @@ -31,7 +31,7 @@ CeladonGameCornerScript_48bec: ; 48bec (12:4bec) CheckEvent EVENT_FOUND_ROCKET_HIDEOUT ret nz ld a, $2a - ld [wd09f], a + ld [wNewTileBlockID], a ld bc, $0208 predef_jump ReplaceTileBlock @@ -451,7 +451,7 @@ CeladonGameCornerText12: ; 48edd (12:4edd) call WaitForSoundToFinish SetEvent EVENT_FOUND_ROCKET_HIDEOUT ld a, $43 - ld [wd09f], a + ld [wNewTileBlockID], a ld bc, $0208 predef ReplaceTileBlock jp TextScriptEnd diff --git a/scripts/lance.asm b/scripts/lance.asm index 4d0072be..9fa621da 100755 --- a/scripts/lance.asm +++ b/scripts/lance.asm @@ -24,12 +24,12 @@ LanceScript_5a2c4: ; 5a2c4 (16:62c4) LanceScript_5a2de: ; 5a2de (16:62de) push bc - ld [wd09f], a + ld [wNewTileBlockID], a ld bc, $602 call LanceScript_5a2f0 pop bc ld a, b - ld [wd09f], a + ld [wNewTileBlockID], a ld bc, $603 LanceScript_5a2f0: ; 5a2f0 (16:62f0) diff --git a/scripts/lorelei.asm b/scripts/lorelei.asm index 4a245d93..3c639d1e 100755 --- a/scripts/lorelei.asm +++ b/scripts/lorelei.asm @@ -22,7 +22,7 @@ LoreleiScript_76191: ; 76191 (1d:6191) .asm_761a9 ld a, $24 .asm_761ab - ld [wd09f], a + ld [wNewTileBlockID], a ld bc, $2 predef_jump ReplaceTileBlock diff --git a/scripts/mansion1.asm b/scripts/mansion1.asm index 7d349276..88bdd3ed 100755 --- a/scripts/mansion1.asm +++ b/scripts/mansion1.asm @@ -35,12 +35,12 @@ Mansion1Subscript1: ; 442c5 (11:42c5) Mansion1Script_44304: ; 44304 (11:4304) ld a, $2d - ld [wd09f], a + ld [wNewTileBlockID], a jr Mansion1ReplaceBlock Mansion1Script_4430b: ; 4430b (11:430b) ld a, $e - ld [wd09f], a + ld [wNewTileBlockID], a Mansion1ReplaceBlock: ; 44310 (11:4310) predef ReplaceTileBlock ret diff --git a/scripts/mansion2.asm b/scripts/mansion2.asm index 4f5aac9f..cb697b94 100755 --- a/scripts/mansion2.asm +++ b/scripts/mansion2.asm @@ -38,7 +38,7 @@ Mansion2Script_51fee: ; 51fee (14:5fee) ret Mansion2Script_5202f: ; 5202f (14:602f) - ld [wd09f], a + ld [wNewTileBlockID], a predef_jump ReplaceTileBlock Mansion2Script_Switches: ; 52037 (14:6037) diff --git a/scripts/rockethideout1.asm b/scripts/rockethideout1.asm index ccf40cb4..c658596e 100755 --- a/scripts/rockethideout1.asm +++ b/scripts/rockethideout1.asm @@ -26,7 +26,7 @@ RocketHideout1Script_44be0: ; 44be0 (11:4be0) .asm_44c01 ld a, $e .asm_44c03 - ld [wd09f], a + ld [wNewTileBlockID], a ld bc, $080c predef_jump ReplaceTileBlock diff --git a/scripts/rockethideout4.asm b/scripts/rockethideout4.asm index 3c312d4c..ed2bb61d 100755 --- a/scripts/rockethideout4.asm +++ b/scripts/rockethideout4.asm @@ -26,7 +26,7 @@ RocketHideout4Script_45473: ; 45473 (11:5473) .asm_45496 ld a, $e .asm_45498 - ld [wd09f], a + ld [wNewTileBlockID], a ld bc, $050c predef_jump ReplaceTileBlock diff --git a/scripts/silphco10.asm b/scripts/silphco10.asm index 326b0aeb..fb419a22 100755 --- a/scripts/silphco10.asm +++ b/scripts/silphco10.asm @@ -19,7 +19,7 @@ SilphCo10Script_5a14f: ; 5a14f (16:614f) CheckEvent EVENT_SILPH_CO_10_UNLOCKED_DOOR ret nz ld a, $54 - ld [wd09f], a + ld [wNewTileBlockID], a ld bc, $405 predef_jump ReplaceTileBlock diff --git a/scripts/silphco11.asm b/scripts/silphco11.asm index 8f37b57f..5de025f0 100755 --- a/scripts/silphco11.asm +++ b/scripts/silphco11.asm @@ -19,7 +19,7 @@ SilphCo11Script_62110: ; 62110 (18:6110) CheckEvent EVENT_SILPH_CO_11_UNLOCKED_DOOR ret nz ld a, $20 - ld [wd09f], a + ld [wNewTileBlockID], a ld bc, $603 predef_jump ReplaceTileBlock diff --git a/scripts/silphco2.asm b/scripts/silphco2.asm index a8d0fa56..b758455e 100755 --- a/scripts/silphco2.asm +++ b/scripts/silphco2.asm @@ -20,7 +20,7 @@ SilphCo2Script_59d07: ; 59d07 (16:5d07) jr nz, .asm_59d2e push af ld a, $54 - ld [wd09f], a + ld [wNewTileBlockID], a ld bc, $0202 predef ReplaceTileBlock pop af @@ -28,7 +28,7 @@ SilphCo2Script_59d07: ; 59d07 (16:5d07) CheckEventAfterBranchReuseA EVENT_SILPH_CO_2_UNLOCKED_DOOR2, EVENT_SILPH_CO_2_UNLOCKED_DOOR1 ret nz ld a, $54 - ld [wd09f], a + ld [wNewTileBlockID], a ld bc, $0502 predef_jump ReplaceTileBlock diff --git a/scripts/silphco3.asm b/scripts/silphco3.asm index b55cc5eb..f693ea33 100755 --- a/scripts/silphco3.asm +++ b/scripts/silphco3.asm @@ -20,7 +20,7 @@ SilphCo3Script_59f71: ; 59f71 (16:5f71) jr nz, .asm_59f98 push af ld a, $5f - ld [wd09f], a + ld [wNewTileBlockID], a ld bc, $404 predef ReplaceTileBlock pop af @@ -28,7 +28,7 @@ SilphCo3Script_59f71: ; 59f71 (16:5f71) CheckEventAfterBranchReuseA EVENT_SILPH_CO_3_UNLOCKED_DOOR2, EVENT_SILPH_CO_3_UNLOCKED_DOOR1 ret nz ld a, $5f - ld [wd09f], a + ld [wNewTileBlockID], a ld bc, $408 predef_jump ReplaceTileBlock diff --git a/scripts/silphco4.asm b/scripts/silphco4.asm index 815170ff..0ea2c8c8 100755 --- a/scripts/silphco4.asm +++ b/scripts/silphco4.asm @@ -20,7 +20,7 @@ SilphCo4Script_19d21: ; 19d21 (6:5d21) jr nz, .asm_19d48 push af ld a, $54 - ld [wd09f], a + ld [wNewTileBlockID], a ld bc, $0602 predef ReplaceTileBlock pop af @@ -28,7 +28,7 @@ SilphCo4Script_19d21: ; 19d21 (6:5d21) CheckEventAfterBranchReuseA EVENT_SILPH_CO_4_UNLOCKED_DOOR2, EVENT_SILPH_CO_4_UNLOCKED_DOOR1 ret nz ld a, $54 - ld [wd09f], a + ld [wNewTileBlockID], a ld bc, $0406 predef_jump ReplaceTileBlock diff --git a/scripts/silphco5.asm b/scripts/silphco5.asm index ecc57537..d6f35993 100755 --- a/scripts/silphco5.asm +++ b/scripts/silphco5.asm @@ -20,7 +20,7 @@ SilphCo5Script_19f4d: ; 19f4d (6:5f4d) jr nz, .asm_19f74 push af ld a, $5f - ld [wd09f], a + ld [wNewTileBlockID], a ld bc, $0203 predef ReplaceTileBlock pop af @@ -29,7 +29,7 @@ SilphCo5Script_19f4d: ; 19f4d (6:5f4d) jr nz, .asm_19f87 push af ld a, $5f - ld [wd09f], a + ld [wNewTileBlockID], a ld bc, $0603 predef ReplaceTileBlock pop af @@ -37,7 +37,7 @@ SilphCo5Script_19f4d: ; 19f4d (6:5f4d) CheckEventAfterBranchReuseA EVENT_SILPH_CO_5_UNLOCKED_DOOR3, EVENT_SILPH_CO_5_UNLOCKED_DOOR2 ret nz ld a, $5f - ld [wd09f], a + ld [wNewTileBlockID], a ld bc, $0507 predef_jump ReplaceTileBlock diff --git a/scripts/silphco6.asm b/scripts/silphco6.asm index a84f0dc4..25fbcef9 100755 --- a/scripts/silphco6.asm +++ b/scripts/silphco6.asm @@ -19,7 +19,7 @@ SilphCo6Script_1a1bf: ; 1a1bf (6:61bf) CheckEvent EVENT_SILPH_CO_6_UNLOCKED_DOOR ret nz ld a, $5f - ld [wd09f], a + ld [wNewTileBlockID], a ld bc, $0602 predef_jump ReplaceTileBlock diff --git a/scripts/silphco7.asm b/scripts/silphco7.asm index 26d9e62f..7169f0c0 100755 --- a/scripts/silphco7.asm +++ b/scripts/silphco7.asm @@ -20,7 +20,7 @@ SilphCo7Script_51b77: ; 51b77 (14:5b77) jr nz, .asm_51b9e push af ld a, $54 - ld [wd09f], a + ld [wNewTileBlockID], a ld bc, $305 predef ReplaceTileBlock pop af @@ -29,7 +29,7 @@ SilphCo7Script_51b77: ; 51b77 (14:5b77) jr nz, .asm_51bb1 push af ld a, $54 - ld [wd09f], a + ld [wNewTileBlockID], a ld bc, $20a predef ReplaceTileBlock pop af @@ -37,7 +37,7 @@ SilphCo7Script_51b77: ; 51b77 (14:5b77) CheckEventAfterBranchReuseA EVENT_SILPH_CO_7_UNLOCKED_DOOR3, EVENT_SILPH_CO_7_UNLOCKED_DOOR2 ret nz ld a, $54 - ld [wd09f], a + ld [wNewTileBlockID], a ld bc, $60a predef_jump ReplaceTileBlock diff --git a/scripts/silphco8.asm b/scripts/silphco8.asm index 26a89355..7545f359 100755 --- a/scripts/silphco8.asm +++ b/scripts/silphco8.asm @@ -19,7 +19,7 @@ SilphCo8Script_5651a: ; 5651a (15:651a) CheckEvent EVENT_SILPH_CO_8_UNLOCKED_DOOR ret nz ld a, $5f - ld [wd09f], a + ld [wNewTileBlockID], a ld bc, $403 predef_jump ReplaceTileBlock diff --git a/scripts/silphco9.asm b/scripts/silphco9.asm index 8960c290..557ce1f1 100755 --- a/scripts/silphco9.asm +++ b/scripts/silphco9.asm @@ -20,7 +20,7 @@ SilphCo9Script_5d7d1: ; 5d7d1 (17:57d1) jr nz, .asm_5d7f8 push af ld a, $5f - ld [wd09f], a + ld [wNewTileBlockID], a ld bc, $401 predef ReplaceTileBlock pop af @@ -29,7 +29,7 @@ SilphCo9Script_5d7d1: ; 5d7d1 (17:57d1) jr nz, .asm_5d80b push af ld a, $54 - ld [wd09f], a + ld [wNewTileBlockID], a ld bc, $209 predef ReplaceTileBlock pop af @@ -38,7 +38,7 @@ SilphCo9Script_5d7d1: ; 5d7d1 (17:57d1) jr nz, .asm_5d81e push af ld a, $54 - ld [wd09f], a + ld [wNewTileBlockID], a ld bc, $509 predef ReplaceTileBlock pop af @@ -46,7 +46,7 @@ SilphCo9Script_5d7d1: ; 5d7d1 (17:57d1) CheckEventAfterBranchReuseA EVENT_SILPH_CO_9_UNLOCKED_DOOR4, EVENT_SILPH_CO_9_UNLOCKED_DOOR3 ret nz ld a, $5f - ld [wd09f], a + ld [wNewTileBlockID], a ld bc, $605 predef_jump ReplaceTileBlock diff --git a/scripts/vermiliongym.asm b/scripts/vermiliongym.asm index 8c400b5f..0282e340 100755 --- a/scripts/vermiliongym.asm +++ b/scripts/vermiliongym.asm @@ -37,7 +37,7 @@ VermilionGymScript_5ca6d: ; 5ca6d (17:4a6d) call PlaySound ld a, $5 .asm_5ca7f - ld [wd09f], a + ld [wNewTileBlockID], a ld bc, $202 predef_jump ReplaceTileBlock diff --git a/scripts/victoryroad1.asm b/scripts/victoryroad1.asm index 91e20ad3..dbb69a64 100755 --- a/scripts/victoryroad1.asm +++ b/scripts/victoryroad1.asm @@ -14,7 +14,7 @@ VictoryRoad1Script: ; 5da0a (17:5a0a) CheckEvent EVENT_VICTORY_ROAD_1_BOULDER_ON_SWITCH ret z ld a, $1d - ld [wd09f], a + ld [wNewTileBlockID], a ld bc, $604 predef_jump ReplaceTileBlock diff --git a/scripts/victoryroad2.asm b/scripts/victoryroad2.asm index b7aa40b5..41fe0212 100755 --- a/scripts/victoryroad2.asm +++ b/scripts/victoryroad2.asm @@ -33,7 +33,7 @@ VictoryRoad2Script_517c9: ; 517c9 (14:57c9) ld bc, $70b VictoryRoad2Script_517e2: ; 517e2 (14:57e2) - ld [wd09f], a + ld [wNewTileBlockID], a predef ReplaceTileBlock ret diff --git a/scripts/victoryroad3.asm b/scripts/victoryroad3.asm index 2984e4ae..33a29e44 100755 --- a/scripts/victoryroad3.asm +++ b/scripts/victoryroad3.asm @@ -16,7 +16,7 @@ VictoryRoad3Script_44996: ; 44996 (11:4996) CheckEventHL EVENT_VICTORY_ROAD_3_BOULDER_ON_SWITCH1 ret z ld a, $1d - ld [wd09f], a + ld [wNewTileBlockID], a ld bc, $503 predef_jump ReplaceTileBlock @@ -409,7 +409,11 @@ wSlotMachineSavedROMBank:: ; cc5e ds 12 wcc6b:: ds 14 ; doesn't seem to be used for anything, probably just more storage -wcc79:: ds 30 ; used in battle animations + +wAnimPalette:: ; cc79 + ds 1 + + ds 29 wNPCMovementDirections2:: ; cc97 @@ -647,6 +651,13 @@ wOverrideSimulatedJoypadStatesMask:: ; cd3b ds 1 +wFallingObjectsMovementData:: ; cd3d +; up to 20 bytes (one byte for each falling object) + +wSavedY:: ; cd3d + +wTempSCX:: ; cd3d + wBattleTransitionCircleScreenQuadrantY:: ; cd3d ; 0 = upper half (Y < 9) ; 1 = lower half (Y >= 9) @@ -1050,9 +1061,13 @@ wLearningMovesFromDayCare:: ; cee9 ; whether WriteMonMoves is being used to make a mon learn moves from day care ; non-zero if so +wChangeMonPicEnemyTurnSpecies:: ; cee9 + wHPBarMaxHP:: ; cee9 ds 1 +wChangeMonPicPlayerTurnSpecies:: ; ceea + wEvoNewSpecies:: ; ceea ds 1 @@ -1554,12 +1569,34 @@ W_NUMFBTILES:: ; d089 ; number of tiles in current battle animation frame block ds 1 +wFlashScreenLongCounter:: ; d08a + +wSpiralBallsBaseY:: ; d08a + +wFallingObjectMovementByte:: ; d08a +; bits 0-6: index into FallingObjects_DeltaXs array (0 - 8) +; bit 7: direction; 0 = right, 1 = left + +wNumShootingBalls:: ; d08a + wTradedMonMovingRight:: ; d08a ; $01 if mon is moving from left gameboy to right gameboy; $00 if vice versa wOptionsInitialized:: ; d08a -wd08a:: ds 1 ; used with sprites and displaying the option menu on the main menu screen? +wNewSlotMachineBallTile:: ; d08a + +wCoordAdjustmentAmount:: ; d08a +; how much to add to the X/Y coord + +wUnusedD08A:: ; d08a + ds 1 + +wSpiralBallsBaseX:: ; d08b + +wNumFallingObjects:: ; d08b + +wSlideMonDelay:: ; d08b wAnimCounter:: ; d08b ; generic counter variable for various animations @@ -1601,13 +1638,17 @@ W_SUBANIMSUBENTRYADDR:: ; d096 ds 2 -wd09a:: ds 1 ; used with the battle transition screen when entering a battle (screen slowly draws into black) +wOutwardSpiralTileMapPointer:: ; d09a + ds 1 + +wPartyMenuAnimMonEnabled:: ; d09b wTownMapSpriteBlinkingEnabled:: ; d09b ; non-zero when enabled. causes nest locations to blink on and off. ; the town selection cursor will blink regardless of what this value is -wd09b:: ds 1 ; also used with battle transition screen and move animations +wUnusedD09B:: ; d09b + ds 1 W_FBDESTADDR:: ; d09c ; current destination address in OAM for frame blocks (big endian) @@ -1625,9 +1666,28 @@ W_FBMODE:: ; d09e ; contain the upper and lower bit of each of the 8 pixels, respectively ds 1 +wLinkCableAnimBulgeToggle:: ; d09f +; 0 = small +; 1 = big + +wIntroNidorinoBaseTile:: ; d09f + +wOutwardSpiralCurrentDirection:: ; d09f + +wDropletTile:: ; d09f + wNewTileBlockID:: ; d09f -wd09f:: ds 1 ; used with predef ReplaceTileBlock +wWhichBattleAnimTileset:: ; d09f + +wSquishMonCurrentDirection:: ; d09f +; 0 = left +; 1 = right + +wSlideMonUpBottomRowLeftTile:: ; d09f +; the tile ID of the leftmost tile in the bottom row in AnimationSlideMonUp_ + ds 1 + wDisableVBlankWYUpdate:: ds 1 ; if non-zero, don't update WY during V-blank W_SPRITECURPOSX:: ; d0a1 |