From 35a3a19fda87d95e829aa99bf1b6cf18a839c1a6 Mon Sep 17 00:00:00 2001 From: Remy Oukaour Date: Tue, 26 Dec 2017 18:45:04 -0500 Subject: Use "battle_anims" and "sprite_anims" for clarity, not just "anims" --- engine/anims/anim_commands.asm | 1514 ------- engine/anims/bg_effects.asm | 2958 -------------- engine/anims/engine.asm | 314 -- engine/anims/functions.asm | 4157 -------------------- engine/anims/helpers.asm | 130 - engine/battle/battlestart_copytilemapatonce.asm | 3 + engine/battle/checkbattlescene.asm | 47 + engine/battle/consumehelditem.asm | 80 + engine/battle/returntobattle_useball.asm | 19 + engine/battle/updatebattlehuds.asm | 9 + engine/battle_anims/anim_commands.asm | 1514 +++++++ engine/battle_anims/bg_effects.asm | 2958 ++++++++++++++ engine/battle_anims/engine.asm | 314 ++ engine/battle_anims/functions.asm | 4157 ++++++++++++++++++++ engine/battle_anims/getpokeballwobble.asm | 88 + engine/battle_anims/helpers.asm | 130 + engine/color.asm | 5 +- engine/mon_icons.asm | 2 +- engine/movement.asm | 2 +- engine/routines/battlestart_copytilemapatonce.asm | 3 - engine/routines/checkbattlescene.asm | 47 - engine/routines/consumehelditem.asm | 80 - engine/routines/getpokeballwobble.asm | 88 - .../kurt_selectquantity_interpretjoypad.asm | 4 - engine/routines/returntobattle_useball.asm | 19 - engine/routines/updatebattlehuds.asm | 9 - engine/scripting.asm | 2 +- engine/sprites.asm | 6 +- engine/trade_animation.asm | 2 +- 29 files changed, 9329 insertions(+), 9332 deletions(-) delete mode 100644 engine/anims/anim_commands.asm delete mode 100644 engine/anims/bg_effects.asm delete mode 100755 engine/anims/engine.asm delete mode 100755 engine/anims/functions.asm delete mode 100755 engine/anims/helpers.asm create mode 100644 engine/battle/battlestart_copytilemapatonce.asm create mode 100644 engine/battle/checkbattlescene.asm create mode 100644 engine/battle/consumehelditem.asm create mode 100644 engine/battle/returntobattle_useball.asm create mode 100644 engine/battle/updatebattlehuds.asm create mode 100644 engine/battle_anims/anim_commands.asm create mode 100644 engine/battle_anims/bg_effects.asm create mode 100755 engine/battle_anims/engine.asm create mode 100755 engine/battle_anims/functions.asm create mode 100755 engine/battle_anims/getpokeballwobble.asm create mode 100755 engine/battle_anims/helpers.asm delete mode 100644 engine/routines/battlestart_copytilemapatonce.asm delete mode 100644 engine/routines/checkbattlescene.asm delete mode 100644 engine/routines/consumehelditem.asm delete mode 100755 engine/routines/getpokeballwobble.asm delete mode 100644 engine/routines/kurt_selectquantity_interpretjoypad.asm delete mode 100644 engine/routines/returntobattle_useball.asm delete mode 100644 engine/routines/updatebattlehuds.asm (limited to 'engine') diff --git a/engine/anims/anim_commands.asm b/engine/anims/anim_commands.asm deleted file mode 100644 index 1977f9112..000000000 --- a/engine/anims/anim_commands.asm +++ /dev/null @@ -1,1514 +0,0 @@ -; Battle animation command interpreter. - -PlayBattleAnim: ; cc0d6 - - ld a, [rSVBK] - push af - - ld a, 5 - ld [rSVBK], a - - call _PlayBattleAnim - - pop af - ld [rSVBK], a - ret -; cc0e4 - -_PlayBattleAnim: ; cc0e4 - - ld c, 6 -.wait - call BattleAnimDelayFrame - dec c - jr nz, .wait - - call BattleAnimAssignPals - call BattleAnimRequestPals - call BattleAnimDelayFrame - - ld c, 1 - ld a, [rKEY1] - bit 7, a - jr nz, .asm_cc0ff - ld c, 3 - -.asm_cc0ff - ld hl, hVBlank - ld a, [hl] - push af - - ld [hl], c - call BattleAnimRunScript - - pop af - ld [hVBlank], a - - ld a, $1 - ld [hBGMapMode], a - - call BattleAnimDelayFrame - call BattleAnimDelayFrame - call BattleAnimDelayFrame - call WaitSFX - ret -; cc11c - -BattleAnimRunScript: ; cc11c - - ld a, [FXAnimID + 1] - and a - jr nz, .hi_byte - - farcall CheckBattleScene - jr c, .disabled - - call BattleAnimClearHud - call RunBattleAnimScript - - call BattleAnimAssignPals - call BattleAnimRequestPals - - xor a - ld [hSCX], a - ld [hSCY], a - call BattleAnimDelayFrame - call BattleAnimRestoreHuds - -.disabled - ld a, [wNumHits] - and a - jr z, .done - - ld l, a - ld h, 0 - ld de, ANIM_MISS - add hl, de - ld a, l - ld [FXAnimID], a - ld a, h - ld [FXAnimID + 1], a - -.hi_byte - call WaitSFX - call PlayHitSound - call RunBattleAnimScript - -.done - call BattleAnim_RevertPals - ret -; cc163 - -RunBattleAnimScript: ; cc163 - - call ClearBattleAnims - -.playframe - call RunBattleAnimCommand - call _ExecuteBGEffects - call BattleAnim_UpdateOAM_All - call PushLYOverrides - call BattleAnimRequestPals - -; Speed up Rollout's animation. - ld a, [FXAnimID + 1] - or a - jr nz, .not_rollout - - ld a, [FXAnimID] - cp ROLLOUT - jr nz, .not_rollout - - ld a, $2e - ld b, 5 - ld de, 4 - ld hl, ActiveBGEffects -.find - cp [hl] - jr z, .done - add hl, de - dec b - jr nz, .find - -.not_rollout - call BattleAnimDelayFrame - -.done - ld a, [BattleAnimFlags] - bit 0, a - jr z, .playframe - - call BattleAnim_ClearCGB_OAMFlags - ret -; cc1a1 - -BattleAnimClearHud: ; cc1a1 - - call BattleAnimDelayFrame - call WaitTop - call ClearActorHud - ld a, $1 - ld [hBGMapMode], a - call BattleAnimDelayFrame - call BattleAnimDelayFrame - call BattleAnimDelayFrame - call WaitTop - ret -; cc1bb - -BattleAnimRestoreHuds: ; cc1bb - - call BattleAnimDelayFrame - call WaitTop - - ld a, [rSVBK] - push af - ld a, $1 - ld [rSVBK], a - - ld hl, UpdateBattleHuds - ld a, BANK(UpdatePlayerHUD) - rst FarCall ; Why not "call UpdateBattleHuds"? - - pop af - ld [rSVBK], a - - ld a, $1 - ld [hBGMapMode], a - call BattleAnimDelayFrame - call BattleAnimDelayFrame - call BattleAnimDelayFrame - call WaitTop - ret -; cc1e2 - -BattleAnimRequestPals: ; cc1e2 - - ld a, [hCGB] - and a - ret z - - ld a, [rBGP] - ld b, a - ld a, [wBGP] - cp b - call nz, BattleAnim_SetBGPals - - ld a, [rOBP0] - ld b, a - ld a, [wOBP0] - cp b - call nz, BattleAnim_SetOBPals - ret -; cc1fb - -BattleAnimDelayFrame: ; cc1fb -; Like DelayFrame but wastes battery life. - - ld a, 1 - ld [VBlankOccurred], a -.wait - ld a, [VBlankOccurred] - and a - jr nz, .wait - ret -; cc207 - -ClearActorHud: ; cc207 - - ld a, [hBattleTurn] - and a - jr z, .player - - hlcoord 1, 0 - lb bc, 4, 10 - call ClearBox - ret - -.player - hlcoord 9, 7 - lb bc, 5, 11 - call ClearBox - ret -; cc220 - -Functioncc220: ; cc220 -; Appears to be unused. - xor a - ld [hBGMapMode], a - ld a, LOW(VBGMap0 tile $28) - ld [hBGMapAddress], a - ld a, HIGH(VBGMap0 tile $28) - ld [hBGMapAddress + 1], a - call WaitBGMap2 - ld a, $60 - ld [hWY], a - xor a ; LOW(VBGMap0) - ld [hBGMapAddress], a - ld a, HIGH(VBGMap0) - ld [hBGMapAddress + 1], a - call BattleAnimDelayFrame - ret -; cc23d - - -BattleAnim_ClearCGB_OAMFlags: ; cc23d - - ld a, [BattleAnimFlags] - bit 3, a - jr z, .delete - - ld hl, Sprites + 3 - ld c, (SpritesEnd - Sprites) / 4 -.loop - ld a, [hl] - and $f0 - ld [hli], a - inc hl - inc hl - inc hl - dec c - jr nz, .loop - ret - -.delete - ld hl, Sprites - ld c, SpritesEnd - Sprites - xor a -.loop2 - ld [hli], a - dec c - jr nz, .loop2 - ret -; cc25f - -RunBattleAnimCommand: ; cc25f - call .CheckTimer - ret nc - call .RunScript - ret -; cc267 - -.CheckTimer: ; cc267 - ld a, [BattleAnimDuration] - and a - jr z, .done - - dec a - ld [BattleAnimDuration], a - and a - ret - -.done - scf - ret -; cc275 - -.RunScript: ; cc275 -.loop - call GetBattleAnimByte - - cp $ff - jr nz, .not_done_with_anim - -; Return from a subroutine. - ld hl, BattleAnimFlags - bit 1, [hl] - jr nz, .do_anim - - set 0, [hl] - ret - -.not_done_with_anim - cp $d0 - jr nc, .do_anim - - ld [BattleAnimDuration], a - ret - -.do_anim - call .DoCommand - - jr .loop -; cc293 - -.DoCommand: ; cc293 -; Execute battle animation command in [BattleAnimByte]. - ld a, [BattleAnimByte] - sub $d0 - - ld e, a - ld d, 0 - ld hl, BattleAnimCommands - add hl, de - add hl, de - - ld a, [hli] - ld h, [hl] - ld l, a - jp hl -; cc2a4 - - -BattleAnimCommands:: ; cc2a4 (33:42a4) -; entries correspond to macros/move_anim.asm enumeration - dw BattleAnimCmd_Obj - dw BattleAnimCmd_1GFX - dw BattleAnimCmd_2GFX - dw BattleAnimCmd_3GFX - dw BattleAnimCmd_4GFX - dw BattleAnimCmd_5GFX - dw BattleAnimCmd_IncObj - dw BattleAnimCmd_SetObj - dw BattleAnimCmd_IncBGEffect - dw BattleAnimCmd_EnemyFeetObj - dw BattleAnimCmd_PlayerHeadObj - dw BattleAnimCmd_CheckPokeball - dw BattleAnimCmd_Transform - dw BattleAnimCmd_RaiseSub - dw BattleAnimCmd_DropSub - dw BattleAnimCmd_ResetObp0 - dw BattleAnimCmd_Sound - dw BattleAnimCmd_Cry - dw BattleAnimCmd_MinimizeOpp - dw BattleAnimCmd_OAMOn - dw BattleAnimCmd_OAMOff - dw BattleAnimCmd_ClearObjs - dw BattleAnimCmd_BeatUp - dw BattleAnimCmd_E7 - dw BattleAnimCmd_UpdateActorPic - dw BattleAnimCmd_Minimize - dw BattleAnimCmd_EA ; dummy - dw BattleAnimCmd_EB ; dummy - dw BattleAnimCmd_EC ; dummy - dw BattleAnimCmd_ED ; dummy - dw BattleAnimCmd_IfParamAnd - dw BattleAnimCmd_JumpUntil - dw BattleAnimCmd_BGEffect - dw BattleAnimCmd_BGP - dw BattleAnimCmd_OBP0 - dw BattleAnimCmd_OBP1 - dw BattleAnimCmd_ClearSprites - dw BattleAnimCmd_F5 - dw BattleAnimCmd_F6 - dw BattleAnimCmd_F7 - dw BattleAnimCmd_IfParamEqual - dw BattleAnimCmd_SetVar - dw BattleAnimCmd_IncVar - dw BattleAnimCmd_IfVarEqual - dw BattleAnimCmd_Jump - dw BattleAnimCmd_Loop - dw BattleAnimCmd_Call - dw BattleAnimCmd_Ret - - -BattleAnimCmd_EA: -BattleAnimCmd_EB: -BattleAnimCmd_EC: -BattleAnimCmd_ED: ; cc304 (33:4304) - ret - -BattleAnimCmd_Ret: ; cc305 (33:4305) - ld hl, BattleAnimFlags - res 1, [hl] - ld hl, BattleAnimParent - ld e, [hl] - inc hl - ld d, [hl] - ld hl, BattleAnimAddress - ld [hl], e - inc hl - ld [hl], d - ret - -BattleAnimCmd_Call: ; cc317 (33:4317) - call GetBattleAnimByte - ld e, a - call GetBattleAnimByte - ld d, a - push de - ld hl, BattleAnimAddress - ld e, [hl] - inc hl - ld d, [hl] - ld hl, BattleAnimParent - ld [hl], e - inc hl - ld [hl], d - pop de - ld hl, BattleAnimAddress - ld [hl], e - inc hl - ld [hl], d - ld hl, BattleAnimFlags - set 1, [hl] - ret - -BattleAnimCmd_Jump: ; cc339 (33:4339) - call GetBattleAnimByte - ld e, a - call GetBattleAnimByte - ld d, a - ld hl, BattleAnimAddress - ld [hl], e - inc hl - ld [hl], d - ret - -BattleAnimCmd_Loop: ; cc348 (33:4348) - call GetBattleAnimByte - ld hl, BattleAnimFlags - bit 2, [hl] - jr nz, .continue_loop - and a - jr z, .perpetual - dec a - set 2, [hl] - ld [BattleAnimLoops], a -.continue_loop - ld hl, BattleAnimLoops - ld a, [hl] - and a - jr z, .return_from_loop - dec [hl] -.perpetual - call GetBattleAnimByte - ld e, a - call GetBattleAnimByte - ld d, a - ld hl, BattleAnimAddress - ld [hl], e - inc hl - ld [hl], d - ret - -.return_from_loop - ld hl, BattleAnimFlags - res 2, [hl] - ld hl, BattleAnimAddress - ld e, [hl] - inc hl - ld d, [hl] - inc de - inc de - ld [hl], d - dec hl - ld [hl], e - ret - -BattleAnimCmd_JumpUntil: ; cc383 (33:4383) - ld hl, wBattleAnimParam - ld a, [hl] - and a - jr z, .dont_jump - - dec [hl] - call GetBattleAnimByte - ld e, a - call GetBattleAnimByte - ld d, a - ld hl, BattleAnimAddress - ld [hl], e - inc hl - ld [hl], d - ret - -.dont_jump - ld hl, BattleAnimAddress - ld e, [hl] - inc hl - ld d, [hl] - inc de - inc de - ld [hl], d - dec hl - ld [hl], e - ret - -BattleAnimCmd_SetVar: ; cc3a6 (33:43a6) - call GetBattleAnimByte - ld [BattleAnimVar], a - ret - -BattleAnimCmd_IncVar: ; cc3ad (33:43ad) - ld hl, BattleAnimVar - inc [hl] - ret - -BattleAnimCmd_IfVarEqual: ; cc3b2 (33:43b2) - call GetBattleAnimByte - ld hl, BattleAnimVar - cp [hl] - jr z, .jump - - ld hl, BattleAnimAddress - ld e, [hl] - inc hl - ld d, [hl] - inc de - inc de - ld [hl], d - dec hl - ld [hl], e - ret - -.jump - call GetBattleAnimByte - ld e, a - call GetBattleAnimByte - ld d, a - ld hl, BattleAnimAddress - ld [hl], e - inc hl - ld [hl], d - ret - -BattleAnimCmd_IfParamEqual: ; cc3d6 (33:43d6) - call GetBattleAnimByte - ld hl, wBattleAnimParam - cp [hl] - jr z, .jump - - ld hl, BattleAnimAddress - ld e, [hl] - inc hl - ld d, [hl] - inc de - inc de - ld [hl], d - dec hl - ld [hl], e - ret - -.jump - call GetBattleAnimByte - ld e, a - call GetBattleAnimByte - ld d, a - ld hl, BattleAnimAddress - ld [hl], e - inc hl - ld [hl], d - ret - -BattleAnimCmd_IfParamAnd: ; cc3fa (33:43fa) - call GetBattleAnimByte - ld e, a - ld a, [wBattleAnimParam] - and e - jr nz, .jump - - ld hl, BattleAnimAddress - ld e, [hl] - inc hl - ld d, [hl] - inc de - inc de - ld [hl], d - dec hl - ld [hl], e - ret - -.jump - call GetBattleAnimByte - ld e, a - call GetBattleAnimByte - ld d, a - ld hl, BattleAnimAddress - ld [hl], e - inc hl - ld [hl], d - ret - -BattleAnimCmd_Obj: ; cc41f (33:441f) -; index, x, y, param - call GetBattleAnimByte - ld [wBattleAnimTemp0], a - call GetBattleAnimByte - ld [wBattleAnimTemp1], a - call GetBattleAnimByte - ld [wBattleAnimTemp2], a - call GetBattleAnimByte - ld [wBattleAnimTemp3], a - call QueueBattleAnimation - ret - -BattleAnimCmd_BGEffect: ; cc43b (33:443b) - call GetBattleAnimByte - ld [wBattleAnimTemp0], a - call GetBattleAnimByte - ld [wBattleAnimTemp1], a - call GetBattleAnimByte - ld [wBattleAnimTemp2], a - call GetBattleAnimByte - ld [wBattleAnimTemp3], a - call _QueueBGEffect - ret - -BattleAnimCmd_BGP: ; cc457 (33:4457) - call GetBattleAnimByte - ld [wBGP], a - ret - -BattleAnimCmd_OBP0: ; cc45e (33:445e) - call GetBattleAnimByte - ld [wOBP0], a - ret - -BattleAnimCmd_OBP1: ; cc465 (33:4465) - call GetBattleAnimByte - ld [wOBP1], a - ret - -BattleAnimCmd_ResetObp0: ; cc46c (33:446c) - ld a, [hSGB] - and a - ld a, $e0 - jr z, .not_sgb - ld a, $f0 -.not_sgb - ld [wOBP0], a - ret - -BattleAnimCmd_ClearObjs: ; cc479 (33:4479) - ld hl, ActiveAnimObjects - ld a, $a0 -.loop - ld [hl], $0 - inc hl - dec a - jr nz, .loop - ret - -BattleAnimCmd_1GFX: -BattleAnimCmd_2GFX: -BattleAnimCmd_3GFX: -BattleAnimCmd_4GFX: -BattleAnimCmd_5GFX: ; cc485 (33:4485) - ld a, [BattleAnimByte] - and $f - ld c, a - ld hl, wBattleAnimTileDict - xor a - ld [wBattleAnimTemp0], a -.loop - ld a, [wBattleAnimTemp0] - cp (VTiles1 - VTiles0) / $10 - $31 - ret nc - call GetBattleAnimByte - ld [hli], a - ld a, [wBattleAnimTemp0] - ld [hli], a - push bc - push hl - ld l, a - ld h, $0 -rept 4 - add hl, hl -endr - ld de, VTiles0 tile $31 - add hl, de - ld a, [BattleAnimByte] - call LoadBattleAnimObj - ld a, [wBattleAnimTemp0] - add c - ld [wBattleAnimTemp0], a - pop hl - pop bc - dec c - jr nz, .loop - ret - -BattleAnimCmd_IncObj: ; cc4c0 (33:44c0) - call GetBattleAnimByte - ld e, 10 - ld bc, ActiveAnimObjects -.loop - ld hl, BATTLEANIMSTRUCT_INDEX - add hl, bc - ld d, [hl] - ld a, [BattleAnimByte] - cp d - jr z, .found - ld hl, BATTLEANIMSTRUCT_LENGTH - add hl, bc - ld c, l - ld b, h - dec e - jr nz, .loop - ret - -.found - ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX - add hl, bc - inc [hl] - ret - -BattleAnimCmd_IncBGEffect: ; cc4e3 (33:44e3) - call GetBattleAnimByte - ld e, 5 - ld bc, ActiveBGEffects -.loop - ld hl, $0 - add hl, bc - ld d, [hl] - ld a, [BattleAnimByte] - cp d - jr z, .found - ld hl, 4 - add hl, bc - ld c, l - ld b, h - dec e - jr nz, .loop - ret - -.found - ld hl, BG_EFFECT_STRUCT_JT_INDEX - add hl, bc - inc [hl] - ret - -BattleAnimCmd_SetObj: ; cc506 (33:4506) - call GetBattleAnimByte - ld e, 10 - ld bc, ActiveAnimObjects -.loop - ld hl, BATTLEANIMSTRUCT_INDEX - add hl, bc - ld d, [hl] - ld a, [BattleAnimByte] - cp d - jr z, .found - ld hl, BATTLEANIMSTRUCT_LENGTH - add hl, bc - ld c, l - ld b, h - dec e - jr nz, .loop - ret - -.found - call GetBattleAnimByte - ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX - add hl, bc - ld [hl], a - ret - -BattleAnimCmd_EnemyFeetObj: ; cc52c (33:452c) - - ld hl, wBattleAnimTileDict -.loop - ld a, [hl] - and a - jr z, .okay - inc hl - inc hl - jr .loop - -.okay - ld a, $28 - ld [hli], a - ld a, $42 - ld [hli], a - ld a, $29 - ld [hli], a - ld a, $49 - ld [hl], a - - ld hl, VTiles0 tile $73 - ld de, VTiles2 tile $06 - ld a, $70 - ld [wBattleAnimTemp0], a - ld a, $7 - call .LoadFootprint - ld de, VTiles2 tile $31 - ld a, $60 - ld [wBattleAnimTemp0], a - ld a, $6 - call .LoadFootprint - ret - -.LoadFootprint: ; cc561 (33:4561) - push af - push hl - push de - lb bc, BANK(BattleAnimCmd_EnemyFeetObj), 1 - call Request2bpp - pop de - ld a, [wBattleAnimTemp0] - ld l, a - ld h, 0 - add hl, de - ld e, l - ld d, h - pop hl - ld bc, 1 tiles - add hl, bc - pop af - dec a - jr nz, .LoadFootprint - ret - -BattleAnimCmd_PlayerHeadObj: ; cc57e (33:457e) - - ld hl, wBattleAnimTileDict -.loop - ld a, [hl] - and a - jr z, .okay - inc hl - inc hl - jr .loop - -.okay - ld a, $28 - ld [hli], a - ld a, $35 - ld [hli], a - ld a, $29 - ld [hli], a - ld a, $43 - ld [hl], a - - ld hl, VTiles0 tile $66 - ld de, VTiles2 tile $05 - ld a, $70 - ld [wBattleAnimTemp0], a - ld a, $7 - call .LoadHead - ld de, VTiles2 tile $31 - ld a, $60 - ld [wBattleAnimTemp0], a - ld a, $6 - call .LoadHead - ret - -.LoadHead: ; cc5b3 (33:45b3) - push af - push hl - push de - lb bc, BANK(BattleAnimCmd_EnemyFeetObj), 2 - call Request2bpp - pop de - ld a, [wBattleAnimTemp0] - ld l, a - ld h, 0 - add hl, de - ld e, l - ld d, h - pop hl - ld bc, 2 tiles - add hl, bc - pop af - dec a - jr nz, .LoadHead - ret - -BattleAnimCmd_CheckPokeball: ; cc5d0 (33:45d0) - callfar GetPokeBallWobble - ld a, c - ld [BattleAnimVar], a - ret - -BattleAnimCmd_E7: ; cc5db (33:45db) - ret - -BattleAnimCmd_Transform: ; cc5dc (33:45dc) - ld a, [rSVBK] - push af - ld a, 1 - ld [rSVBK], a - ld a, [CurPartySpecies] ; CurPartySpecies - push af - - ld a, [hBattleTurn] - and a - jr z, .player - - ld a, [TempBattleMonSpecies] ; TempBattleMonSpecies - ld [CurPartySpecies], a ; CurPartySpecies - ld hl, BattleMonDVs ; BattleMonDVs - predef GetUnownLetter - ld de, VTiles0 tile $00 - predef GetMonFrontpic - jr .done - -.player - ld a, [TempEnemyMonSpecies] ; TempEnemyMonSpecies - ld [CurPartySpecies], a ; CurPartySpecies - ld hl, EnemyMonDVs ; EnemyMonDVs - predef GetUnownLetter - ld de, VTiles0 tile $00 - predef GetMonBackpic - -.done - pop af - ld [CurPartySpecies], a ; CurPartySpecies - pop af - ld [rSVBK], a - ret - -BattleAnimCmd_UpdateActorPic: ; cc622 (33:4622) - - ld de, VTiles0 tile $00 - ld a, [hBattleTurn] - and a - jr z, .player - - ld hl, VTiles2 tile $00 - ld b, 0 - ld c, $31 - call Request2bpp - ret - -.player - ld hl, VTiles2 tile $31 - ld b, 0 - ld c, $24 - call Request2bpp - ret - -BattleAnimCmd_RaiseSub: ; cc640 (33:4640) - - ld a, [rSVBK] - push af - ld a, 1 - ld [rSVBK], a - xor a - call GetSRAMBank - -GetSubstitutePic: ; cc64c - - ld hl, sScratch - ld bc, (7 * 7) tiles -.loop - xor a - ld [hli], a - dec bc - ld a, c - or b - jr nz, .loop - - ld a, [hBattleTurn] - and a - jr z, .player - - ld hl, MonsterSpriteGFX + 0 tiles - ld de, sScratch + (2 * 7 + 5) tiles - call .CopyTile - ld hl, MonsterSpriteGFX + 1 tiles - ld de, sScratch + (3 * 7 + 5) tiles - call .CopyTile - ld hl, MonsterSpriteGFX + 2 tiles - ld de, sScratch + (2 * 7 + 6) tiles - call .CopyTile - ld hl, MonsterSpriteGFX + 3 tiles - ld de, sScratch + (3 * 7 + 6) tiles - call .CopyTile - - ld hl, VTiles2 tile $00 - ld de, sScratch - lb bc, BANK(GetSubstitutePic), 7 * 7 - call Request2bpp - jr .done - -.player - ld hl, MonsterSpriteGFX + 4 tiles - ld de, sScratch + (2 * 6 + 4) tiles - call .CopyTile - ld hl, MonsterSpriteGFX + 5 tiles - ld de, sScratch + (3 * 6 + 4) tiles - call .CopyTile - ld hl, MonsterSpriteGFX + 6 tiles - ld de, sScratch + (2 * 6 + 5) tiles - call .CopyTile - ld hl, MonsterSpriteGFX + 7 tiles - ld de, sScratch + (3 * 6 + 5) tiles - call .CopyTile - - ld hl, VTiles2 tile $31 - ld de, sScratch - lb bc, BANK(GetSubstitutePic), 6 * 6 - call Request2bpp - -.done - call CloseSRAM - pop af - ld [rSVBK], a - ret - -.CopyTile: ; cc6c6 (33:46c6) - ld bc, 1 tiles - ld a, BANK(MonsterSpriteGFX) - call FarCopyBytes - ret - -BattleAnimCmd_MinimizeOpp: ; cc6cf (33:46cf) - ld a, [rSVBK] - push af - ld a, $1 - ld [rSVBK], a - xor a - call GetSRAMBank - call GetMinimizePic - call Request2bpp - call CloseSRAM - pop af - ld [rSVBK], a - ret - -GetMinimizePic: ; cc6e7 (33:46e7) - ld hl, sScratch - ld bc, $31 tiles -.loop - xor a - ld [hli], a - dec bc - ld a, c - or b - jr nz, .loop - - ld a, [hBattleTurn] - and a - jr z, .player - - ld de, sScratch + $1a tiles - call CopyMinimizePic - ld hl, VTiles2 tile $00 - ld de, sScratch - lb bc, BANK(GetMinimizePic), $31 - ret - -.player - ld de, sScratch + $160 - call CopyMinimizePic - ld hl, VTiles2 tile $31 - ld de, sScratch - lb bc, BANK(GetMinimizePic), $24 - ret - -CopyMinimizePic: ; cc719 (33:4719) - ld hl, MinimizePic - ld bc, $10 - ld a, BANK(MinimizePic) - call FarCopyBytes - ret -; cc725 (33:4725) - -MinimizePic: ; cc725 -INCBIN "gfx/battle/minimize.2bpp" -; cc735 - -BattleAnimCmd_Minimize: ; cc735 (33:4735) - ld a, [rSVBK] - push af - ld a, $1 - ld [rSVBK], a - xor a - call GetSRAMBank - call GetMinimizePic - ld hl, VTiles0 tile $00 - call Request2bpp - call CloseSRAM - pop af - ld [rSVBK], a - ret - -BattleAnimCmd_DropSub: ; cc750 (33:4750) - ld a, [rSVBK] - push af - ld a, $1 - ld [rSVBK], a - - ld a, [CurPartySpecies] ; CurPartySpecies - push af - ld a, [hBattleTurn] - and a - jr z, .player - - callfar DropEnemySub - jr .done - -.player - callfar DropPlayerSub - -.done - pop af - ld [CurPartySpecies], a ; CurPartySpecies - pop af - ld [rSVBK], a - ret - -BattleAnimCmd_BeatUp: ; cc776 (33:4776) - ld a, [rSVBK] - push af - ld a, $1 - ld [rSVBK], a - ld a, [CurPartySpecies] ; CurPartySpecies - push af - - ld a, [wBattleAnimParam] - ld [CurPartySpecies], a ; CurPartySpecies - - ld a, [hBattleTurn] - and a - jr z, .player - - ld hl, BattleMonDVs - predef GetUnownLetter - ld de, VTiles2 tile $00 - predef GetMonFrontpic - jr .done - -.player - ld hl, EnemyMonDVs - predef GetUnownLetter - ld de, VTiles2 tile $31 - predef GetMonBackpic - -.done - pop af - ld [CurPartySpecies], a ; CurPartySpecies - ld b, SCGB_BATTLE_COLORS - call GetSGBLayout - pop af - ld [rSVBK], a - ret - -BattleAnimCmd_OAMOn: ; cc7bb (33:47bb) - xor a - ld [hOAMUpdate], a - ret - -BattleAnimCmd_OAMOff: ; cc7bf (33:47bf) - ld a, $1 - ld [hOAMUpdate], a - ret - -BattleAnimCmd_ClearSprites: ; cc7c4 (33:47c4) - ld hl, BattleAnimFlags - set 3, [hl] - ret - -BattleAnimCmd_F5: ; cc7ca (33:47ca) - ret - -BattleAnimCmd_F6: ; cc7cb (33:47cb) - ret - -BattleAnimCmd_F7: ; cc7cc (33:47cc) - ret - -BattleAnimCmd_Sound: ; cc7cd (33:47cd) - call GetBattleAnimByte - ld e, a - srl a - srl a - ld [wSFXDuration], a - call .GetCryTrack - and 3 - ld [CryTracks], a ; CryTracks - - ld e, a - ld d, 0 - ld hl, .GetPanning - add hl, de - ld a, [hl] - ld [wStereoPanningMask], a - - call GetBattleAnimByte - ld e, a - ld d, 0 - callfar PlayStereoSFX - - ret -; cc7f8 (33:47f8) - -.GetPanning: ; cc7f8 - db $f0, $0f, $f0, $0f -; cc7fc - -.GetCryTrack: ; cc7fc (33:47fc) - ld a, [hBattleTurn] - and a - jr nz, .enemy - - ld a, e - ret - -.enemy - ld a, e - xor 1 - ret - -BattleAnimCmd_Cry: ; cc807 (33:4807) - call GetBattleAnimByte - and 3 - ld e, a - ld d, 0 - ld hl, .CryData -rept 4 - add hl, de -endr - - ld a, [rSVBK] - push af - ld a, 1 - ld [rSVBK], a - - ld a, [hBattleTurn] - and a - jr nz, .enemy - - ld a, $f0 - ld [CryTracks], a ; CryTracks - ld a, [BattleMonSpecies] ; BattleMonSpecies - jr .done_cry_tracks - -.enemy - ld a, $0f - ld [CryTracks], a ; CryTracks - ld a, [EnemyMonSpecies] ; EnemyMon - -.done_cry_tracks - push hl - call LoadCryHeader - pop hl - jr c, .done - - ld a, [hli] - ld c, a - ld a, [hli] - ld b, a - - push hl - ld hl, CryPitch - ld a, [hli] - ld h, [hl] - ld l, a - add hl, bc - ld a, l - ld [CryPitch], a - ld a, h - ld [CryPitch + 1], a - pop hl - - ld a, [hli] - ld c, a - ld b, [hl] - ld hl, CryLength ; CryLength - ld a, [hli] - ld h, [hl] - ld l, a - add hl, bc - - ld a, l - ld [CryLength], a ; CryLength - ld a, h - ld [CryLength + 1], a - ld a, 1 - ld [wStereoPanningMask], a - - callfar _PlayCryHeader - -.done - pop af - ld [rSVBK], a - ret -; cc871 (33:4871) - -.CryData: ; cc871 -; +pitch, +length - dw $0000, $00c0 - dw $0000, $0040 - dw $0000, $0000 - dw $0000, $0000 -; cc881 - - -PlayHitSound: ; cc881 - ld a, [wNumHits] - cp $1 - jr z, .okay - cp $4 - ret nz - -.okay - ld a, [TypeModifier] - and $7f - ret z - - cp 10 - ld de, SFX_DAMAGE - jr z, .play - - ld de, SFX_SUPER_EFFECTIVE - jr nc, .play - - ld de, SFX_NOT_VERY_EFFECTIVE - -.play - call PlaySFX - ret -; cc8a4 - -BattleAnimAssignPals: ; cc8a4 - ld a, [hCGB] - and a - jr nz, .cgb - ld a, [hSGB] - and a - ld a, %11100000 - jr z, .sgb - ld a, %11110000 - -.sgb - ld [wOBP0], a - ld a, %11100100 - ld [wBGP], a - ld [wOBP1], a - ret - -.cgb - ld a, %11100100 - ld [wBGP], a - ld [wOBP0], a - ld [wOBP1], a - call DmgToCgbBGPals - lb de, %11100100, %11100100 - call DmgToCgbObjPals - ret -; cc8d3 - -ClearBattleAnims: ; cc8d3 -; Clear animation block - ld hl, LYOverrides - ld bc, wBattleAnimEnd - LYOverrides -.loop - ld [hl], $0 - inc hl - dec bc - ld a, c - or b - jr nz, .loop - - ld hl, FXAnimID - ld e, [hl] - inc hl - ld d, [hl] - ld hl, BattleAnimations - add hl, de - add hl, de - call GetBattleAnimPointer - call BattleAnimAssignPals - call BattleAnimDelayFrame - ret -; cc8f6 - -BattleAnim_RevertPals: ; cc8f6 - call WaitTop - ld a, %11100100 - ld [wBGP], a - ld [wOBP0], a - ld [wOBP1], a - call DmgToCgbBGPals - lb de, %11100100, %11100100 - call DmgToCgbObjPals - xor a - ld [hSCX], a - ld [hSCY], a - call BattleAnimDelayFrame - ld a, $1 - ld [hBGMapMode], a - ret -; cc91a - -BattleAnim_SetBGPals: ; cc91a - ld [rBGP], a - ld a, [hCGB] - and a - ret z - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, BGPals - ld de, UnknBGPals - ld a, [rBGP] - ld b, a - ld c, 7 - call CopyPals - ld hl, OBPals - ld de, UnknOBPals - ld a, [rBGP] - ld b, a - ld c, 2 - call CopyPals - pop af - ld [rSVBK], a - ld a, $1 - ld [hCGBPalUpdate], a - ret -; cc94b - -BattleAnim_SetOBPals: ; cc94b - ld [rOBP0], a - ld a, [hCGB] - and a - ret z - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, OBPals palette PAL_BATTLE_OB_GRAY - ld de, UnknOBPals palette PAL_BATTLE_OB_GRAY - ld a, [rOBP0] - ld b, a - ld c, 2 - call CopyPals - pop af - ld [rSVBK], a - ld a, $1 - ld [hCGBPalUpdate], a - ret -; cc96e - -BattleAnim_UpdateOAM_All: ; cc96e - ld a, $0 - ld [wBattleAnimOAMPointerLo], a - ld hl, ActiveAnimObjects - ld e, 10 -.loop - ld a, [hl] - and a - jr z, .next - ld c, l - ld b, h - push hl - push de - call DoBattleAnimFrame - call BattleAnimOAMUpdate - pop de - pop hl - jr c, .done - -.next - ld bc, BATTLEANIMSTRUCT_LENGTH - add hl, bc - dec e - jr nz, .loop - ld a, [wBattleAnimOAMPointerLo] - ld l, a - ld h, HIGH(Sprites) -.loop2 - ld a, l - cp LOW(SpritesEnd) - jr nc, .done - xor a - ld [hli], a - jr .loop2 - -.done - ret -; cc9a1 diff --git a/engine/anims/bg_effects.asm b/engine/anims/bg_effects.asm deleted file mode 100644 index ab4a8036b..000000000 --- a/engine/anims/bg_effects.asm +++ /dev/null @@ -1,2958 +0,0 @@ - const_def - const BGSQUARE_SIX - const BGSQUARE_FOUR - const BGSQUARE_TWO - const BGSQUARE_SEVEN - const BGSQUARE_FIVE - const BGSQUARE_THREE - -; BG effects for use in battle animations. - -ExecuteBGEffects: ; c8000 (32:4000) - ld hl, ActiveBGEffects - ld e, 5 -.loop - ld a, [hl] - and a - jr z, .next - ld c, l - ld b, h - push hl - push de - call DoBattleBGEffectFunction - pop de - pop hl -.next - ld bc, 4 - add hl, bc - dec e - jr nz, .loop - ret - -QueueBGEffect: ; c801a (32:401a) - ld hl, ActiveBGEffects - ld e, 5 -.loop - ld a, [hl] - and a - jr z, .load - ld bc, 4 - add hl, bc - dec e - jr nz, .loop - scf - ret - -.load - ld c, l - ld b, h - ld hl, BG_EFFECT_STRUCT_FUNCTION - add hl, bc - ld a, [wBattleAnimTemp0] - ld [hli], a - ld a, [wBattleAnimTemp1] - ld [hli], a - ld a, [wBattleAnimTemp2] - ld [hli], a - ld a, [wBattleAnimTemp3] - ld [hl], a - ret - -EndBattleBGEffect: ; c8043 (32:4043) - ld hl, BG_EFFECT_STRUCT_FUNCTION - add hl, bc - ld [hl], 0 - ret - -DoBattleBGEffectFunction: ; c804a (32:404a) - ld hl, BG_EFFECT_STRUCT_FUNCTION - add hl, bc - ld e, [hl] - ld d, 0 - ld hl, BattleBGEffects - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - jp hl - -BattleBGEffects: ; c805a (32:405a) -; entries correspond to ANIM_BG_* constants - dw BattleBGEffect_End - dw BattleBGEffect_FlashInverted - dw BattleBGEffect_FlashWhite - dw BattleBGEffect_WhiteHues - dw BattleBGEffect_BlackHues - dw BattleBGEffect_AlternateHues - dw BattleBGEffect_06 - dw BattleBGEffect_07 - dw BattleBGEffect_08 - dw BattleBGEffect_HideMon - dw BattleBGEffect_ShowMon - dw BattleBGEffect_EnterMon - dw BattleBGEffect_ReturnMon - dw BattleBGEffect_Surf - dw BattleBGEffect_Whirlpool - dw BattleBGEffect_Teleport - dw BattleBGEffect_NightShade - dw BattleBGEffect_FeetFollow - dw BattleBGEffect_HeadFollow - dw BattleBGEffect_DoubleTeam - dw BattleBGEffect_AcidArmor - dw BattleBGEffect_RapidFlash - dw BattleBGEffect_16 - dw BattleBGEffect_17 - dw BattleBGEffect_18 - dw BattleBGEffect_19 - dw BattleBGEffect_1a - dw BattleBGEffect_1b - dw BattleBGEffect_1c - dw BattleBGEffect_1d - dw BattleBGEffect_1e - dw BattleBGEffect_1f - dw BattleBGEffect_20 - dw BattleBGEffect_Withdraw - dw BattleBGEffect_BounceDown - dw BattleBGEffect_Dig - dw BattleBGEffect_Tackle - dw BattleBGEffect_25 - dw BattleBGEffect_26 - dw BattleBGEffect_27 - dw BattleBGEffect_28 - dw BattleBGEffect_Psychic - dw BattleBGEffect_2a - dw BattleBGEffect_2b - dw BattleBGEffect_2c - dw BattleBGEffect_2d - dw BattleBGEffect_2e - dw BattleBGEffect_2f - dw BattleBGEffect_30 - dw BattleBGEffect_31 - dw BattleBGEffect_32 - dw BattleBGEffect_VibrateMon - dw BattleBGEffect_WobbleMon - dw BattleBGEffect_35 - - -BattleBGEffect_End: ; c80c6 (32:40c6) - call EndBattleBGEffect - ret - -BatttleBGEffects_GetNamedJumptablePointer: ; c80ca (32:40ca) - ld hl, BG_EFFECT_STRUCT_JT_INDEX - add hl, bc - ld l, [hl] - ld h, 0 - add hl, hl - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - ret - -BattleBGEffects_AnonJumptable: ; c80d7 (32:40d7) - pop de - ld hl, BG_EFFECT_STRUCT_JT_INDEX - add hl, bc - ld l, [hl] - ld h, 0 - add hl, hl - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - jp hl - -BattleBGEffects_IncrementJumptable: ; c80e5 (32:40e5) - ld hl, BG_EFFECT_STRUCT_JT_INDEX - add hl, bc - inc [hl] - ret - -BattleBGEffect_FlashInverted: ; c80eb (32:40eb) - ld de, .inverted - jp BattleBGEffect_FlashContinue - -.inverted - db %11100100 ; 3210 - db %00011011 ; 0123 -; c80f3 - -BattleBGEffect_FlashWhite: ; c80f3 (32:40f3) - ld de, .white - jp BattleBGEffect_FlashContinue - -.white - db %11100100 ; 3210 - db %00000000 ; 0000 -; c80fb - -BattleBGEffect_FlashContinue: ; c80fb (32:40fb) -; current timer, flash duration, number of flashes - ld a, $1 - ld [wBattleAnimTemp0], a - ld hl, BG_EFFECT_STRUCT_JT_INDEX - add hl, bc - ld a, [hl] - and a - jr z, .init - dec [hl] - ret - -.init - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - ld a, [hl] - ld hl, BG_EFFECT_STRUCT_JT_INDEX - add hl, bc - ld [hl], a - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld a, [hl] - and a - jr nz, .apply_pal - call EndBattleBGEffect - ret - -.apply_pal - dec a - ld [hl], a - and 1 - ld l, a - ld h, 0 - add hl, de - ld a, [hl] - ld [wBGP], a - ret - -BattleBGEffect_WhiteHues: ; c812d (32:412d) - ld de, .Pals - call BattleBGEffect_GetNthDMGPal - jr c, .quit - ld [wBGP], a - ret - -.quit - call EndBattleBGEffect - ret - -.Pals: - db %11100100 - db %11100000 - db %11010000 - db -1 -; c8141 - -BattleBGEffect_BlackHues: ; c8141 (32:4141) - ld de, .Pals - call BattleBGEffect_GetNthDMGPal - jr c, .quit - ld [wBGP], a - ret - -.quit - call EndBattleBGEffect - ret - -.Pals: - db %11100100 - db %11110100 - db %11111000 - db -1 -; c8155 - -BattleBGEffect_AlternateHues: ; c8155 (32:4155) - ld de, .Pals - call BattleBGEffect_GetNthDMGPal - jr c, .quit - ld [wBGP], a - ld [wOBP1], a - ret - -.quit - call EndBattleBGEffect - ret - -.Pals: - db %11100100 - db %11111000 - db %11111100 - db %11111000 - db %11100100 - db %10010000 - db %01000000 - db %10010000 - db -2 -; c8171 - -BattleBGEffect_06: ; c8171 (32:4171) - call BattleBGEffects_CheckSGB - jr nz, .sgb - ld de, .PalsCGB - jr .okay - -.sgb - ld de, .PalsSGB -.okay - call BattleBGEffect_GetNthDMGPal - ld [wOBP0], a - ret - -.PalsCGB: - db %11100100 - db %10010000 - db -2 - -.PalsSGB: - db %11110000 - db %11000000 - db -2 -; c818b - -BattleBGEffect_07: ; c818b (32:418b) - call BattleBGEffects_CheckSGB - jr nz, .sgb - ld de, .PalsCGB - jr .okay - -.sgb - ld de, .PalsSGB -.okay - call BattleBGEffect_GetNthDMGPal - ld [wOBP0], a - ret - -.PalsCGB: - db %11100100 - db %11011000 - db -2 - -.PalsSGB: - db %11110000 - db %11001100 - db -2 -; c81a5 - -BattleBGEffect_08: ; c81a5 (32:41a5) - ld de, .Pals - call BattleBGEffect_GetNthDMGPal - ld [wBGP], a - ret - -.Pals: - db %00011011 - db %01100011 - db %10000111 - db -2 -; c81b3 - -BattleBGEffect_HideMon: ; c81b3 (32:41b3) - call BattleBGEffects_AnonJumptable -.anon_dw - dw .zero - dw BattleBGEffects_IncrementJumptable - dw BattleBGEffects_IncrementJumptable - dw BattleBGEffects_IncrementJumptable - dw .four - - -.zero - call BattleBGEffects_IncrementJumptable - push bc - call BGEffect_CheckBattleTurn - jr nz, .player_side - hlcoord 12, 0 - lb bc, 7, 7 - jr .got_pointer - -.player_side - hlcoord 2, 6 - lb bc, 6, 6 -.got_pointer - call ClearBox - pop bc - xor a - ld [hBGMapThird], a - ld a, $1 - ld [hBGMapMode], a - ret - -.four - xor a - ld [hBGMapMode], a - call EndBattleBGEffect - ret - -BattleBGEffect_ShowMon: ; c81ea (32:41ea) - call BGEffect_CheckFlyDigStatus - jr z, .not_flying - call EndBattleBGEffect - ret - -.not_flying - call BGEffect_CheckBattleTurn - jr nz, .player_side - ld de, .EnemyData - jr .got_pointer - -.player_side - ld de, .PlayerData -.got_pointer - ld a, e - ld [wBattleAnimTemp1], a - ld a, d - ld [wBattleAnimTemp2], a - call BattleBGEffect_RunPicResizeScript - ret - -.PlayerData: - db 0, $31, 0 - db -1 -.EnemyData: - db 3, $00, 3 - db -1 -; c8214 - -BattleBGEffect_FeetFollow: ; c8214 (32:4214) - call BattleBGEffects_AnonJumptable -.anon_dw - dw .zero - dw .one - dw BattleBGEffects_IncrementJumptable - dw BattleBGEffects_IncrementJumptable - dw BattleBGEffects_IncrementJumptable - dw .five - - -.zero - call BGEffect_CheckFlyDigStatus - jr z, .not_flying_digging - ld hl, wNumActiveBattleAnims - inc [hl] - call EndBattleBGEffect - ret - -.not_flying_digging - call BattleBGEffects_IncrementJumptable - push bc - call BGEffect_CheckBattleTurn - jr nz, .player_turn - ld a, ANIM_OBJ_PLAYERFEETFOLLOW - ld [wBattleAnimTemp0], a - ld a, 16 * 8 + 4 - jr .okay - -.player_turn - ld a, ANIM_OBJ_ENEMYFEETFOLLOW - ld [wBattleAnimTemp0], a - ld a, 6 * 8 -.okay - ld [wBattleAnimTemp1], a - ld a, 8 * 8 - ld [wBattleAnimTemp2], a - xor a - ld [wBattleAnimTemp3], a - call _QueueBattleAnimation - pop bc - ret - -.one - call BattleBGEffects_IncrementJumptable - push bc - call BGEffect_CheckBattleTurn - jr nz, .player_turn_2 - hlcoord 12, 6 - lb bc, 1, 7 - jr .okay2 - -.player_turn_2 - hlcoord 2, 6 - lb bc, 1, 6 -.okay2 - call ClearBox - ld a, $1 - ld [hBGMapMode], a - pop bc - ret - -.five - xor a - ld [hBGMapMode], a - call EndBattleBGEffect - ret - -BattleBGEffect_HeadFollow: ; c8281 (32:4281) - call BattleBGEffects_AnonJumptable -.anon_dw - dw .zero - dw .one - dw BattleBGEffects_IncrementJumptable - dw BattleBGEffects_IncrementJumptable - dw BattleBGEffects_IncrementJumptable - dw .five - - -.zero - call BGEffect_CheckFlyDigStatus - jr z, .not_flying_digging - ld hl, wNumActiveBattleAnims - inc [hl] - call EndBattleBGEffect - ret - -.not_flying_digging - call BattleBGEffects_IncrementJumptable - push bc - call BGEffect_CheckBattleTurn - jr nz, .player_turn - ld a, ANIM_OBJ_BA - ld [wBattleAnimTemp0], a - ld a, 16 * 8 + 4 - jr .okay - -.player_turn - ld a, ANIM_OBJ_BB - ld [wBattleAnimTemp0], a - ld a, 6 * 8 -.okay - ld [wBattleAnimTemp1], a - ld a, 8 * 8 - ld [wBattleAnimTemp2], a - xor a - ld [wBattleAnimTemp3], a - call _QueueBattleAnimation - pop bc - ret - -.one - call BattleBGEffects_IncrementJumptable - push bc - call BGEffect_CheckBattleTurn - jr nz, .player_turn_2 - hlcoord 12, 5 - lb bc, 2, 7 - jr .okay2 - -.player_turn_2 - hlcoord 2, 6 - lb bc, 2, 6 -.okay2 - call ClearBox - ld a, $1 - ld [hBGMapMode], a - pop bc - ret - -.five - xor a - ld [hBGMapMode], a - call EndBattleBGEffect - ret - -_QueueBattleAnimation: ; c82ee (32:42ee) - callfar QueueBattleAnimation - ret - -BattleBGEffect_27: ; c82f5 (32:42f5) - call BattleBGEffects_AnonJumptable -.anon_dw - dw .zero - dw .one - dw BattleBGEffects_IncrementJumptable - dw BattleBGEffects_IncrementJumptable - dw .four - - -.zero - call BattleBGEffects_IncrementJumptable - call BGEffect_CheckBattleTurn - ld [hl], a - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - ld a, [hl] - and a - jr z, .user - ld a, $9 - jr .okay - -.user - ld a, $8 -.okay - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld [hl], a - ret - -.one - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - ld a, [hl] - and a - jr z, .user_2 - hlcoord 0, 6 - lb de, 8, 6 -.row1 - push de - push hl -.col1 - inc hl - ld a, [hld] - ld [hli], a - dec d - jr nz, .col1 - pop hl - ld de, SCREEN_WIDTH - add hl, de - pop de - dec e - jr nz, .row1 - jr .okay2 - -.user_2 - hlcoord 19, 0 - lb de, 8, 7 -.row2 - push de - push hl -.col2 - dec hl - ld a, [hli] - ld [hld], a - dec d - jr nz, .col2 - pop hl - ld de, SCREEN_WIDTH - add hl, de - pop de - dec e - jr nz, .row2 -.okay2 - xor a - ld [hBGMapThird], a - ld a, $1 - ld [hBGMapMode], a - call BattleBGEffects_IncrementJumptable - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - dec [hl] - ret - -.four - xor a - ld [hBGMapMode], a - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld a, [hl] - and a - jr z, .done - ld hl, BG_EFFECT_STRUCT_JT_INDEX - add hl, bc - ld [hl], $1 - ret - -.done - call EndBattleBGEffect - ret - -BattleBGEffect_EnterMon: ; c837b (32:437b) - call BGEffect_CheckBattleTurn - jr nz, .player_turn - ld de, .EnemyData - jr .okay - -.player_turn - ld de, .PlayerData -.okay - ld a, e - ld [wBattleAnimTemp1], a - ld a, d - ld [wBattleAnimTemp2], a - call BattleBGEffect_RunPicResizeScript - ret - -.PlayerData: - db 2, $31, 2 - db 1, $31, 1 - db 0, $31, 0 - db -1 -.EnemyData: - db 5, $00, 5 - db 4, $00, 4 - db 3, $00, 3 - db -1 -; c83a8 - -BattleBGEffect_ReturnMon: ; c83a8 (32:43a8) - call BGEffect_CheckBattleTurn - jr nz, .player_turn - ld de, .EnemyData - jr .okay - -.player_turn - ld de, .PlayerData -.okay - ld a, e - ld [wBattleAnimTemp1], a - ld a, d - ld [wBattleAnimTemp2], a - call BattleBGEffect_RunPicResizeScript - ret - -.PlayerData: - db 0, $31, 0 - db -2, $66, 0 - db 1, $31, 1 - db -2, $44, 1 - db 2, $31, 2 - db -2, $22, 2 - db -3, $00, 0 - db -1 -.EnemyData: - db 3, $00, 3 - db -2, $77, 3 - db 4, $00, 4 - db -2, $55, 4 - db 5, $00, 5 - db -2, $33, 5 - db -3, $00, 0 - db -1 -; c83ed - -BattleBGEffect_RunPicResizeScript: ; c83ed (32:43ed) - call BattleBGEffects_AnonJumptable -.anon_dw - dw .zero - dw BattleBGEffects_IncrementJumptable - dw BattleBGEffects_IncrementJumptable - dw .restart - dw .end - - -.zero - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld e, [hl] - ld d, $0 - inc [hl] - ld a, [wBattleAnimTemp1] - ld l, a - ld a, [wBattleAnimTemp2] - ld h, a - add hl, de - add hl, de - add hl, de - ld a, [hl] - cp -1 - jr z, .end - cp -2 - jr z, .clear - cp -3 - jr z, .skip - call .PlaceGraphic -.skip - call BattleBGEffects_IncrementJumptable - ld a, $1 - ld [hBGMapMode], a - ret - -.clear - call .ClearBox - jr .zero - -.restart - xor a - ld [hBGMapMode], a - ld hl, BG_EFFECT_STRUCT_JT_INDEX - add hl, bc - ld [hl], $0 - ret - -.end - xor a - ld [hBGMapMode], a - call EndBattleBGEffect - ret - -.ClearBox: -; get dims - push bc - inc hl - ld a, [hli] - ld b, a - and $f - ld c, a - ld a, b - swap a - and $f - ld b, a -; get coords - ld e, [hl] - ld d, 0 - ld hl, .Coords - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - call ClearBox - pop bc - ret - -.PlaceGraphic: -; get dims - push bc - push hl - ld e, [hl] - ld d, 0 - ld hl, .BGSquares - add hl, de - add hl, de - add hl, de - ld a, [hli] - ld b, a - and $f - ld c, a - ld a, b - swap a - and $f - ld b, a -; store pointer - ld e, [hl] - inc hl - ld d, [hl] -; get byte - pop hl - inc hl - ld a, [hli] - ld [wBattleAnimTemp0], a -; get coord - push de - ld e, [hl] - ld d, 0 - ld hl, .Coords - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - pop de -; fill box -.row - push bc - push hl - ld a, [wBattleAnimTemp0] - ld b, a -.col - ld a, [de] - add b - ld [hli], a - inc de - dec c - jr nz, .col - pop hl - ld bc, SCREEN_WIDTH - add hl, bc - pop bc - dec b - jr nz, .row - pop bc - ret - -.Coords: - dwcoord 2, 6 - dwcoord 3, 8 - dwcoord 4, 10 - dwcoord 12, 0 - dwcoord 13, 2 - dwcoord 14, 4 - -.BGSquares: -bgsquare: MACRO - dn \1, \2 - dw \3 -endm - - bgsquare 6, 6, .SixBySix - bgsquare 4, 4, .FourByFour - bgsquare 2, 2, .TwoByTwo - bgsquare 7, 7, .SevenBySeven - bgsquare 5, 5, .FiveByFive - bgsquare 3, 3, .ThreeByThree - -.SixBySix: - db $00, $06, $0c, $12, $18, $1e - db $01, $07, $0d, $13, $19, $1f - db $02, $08, $0e, $14, $1a, $20 - db $03, $09, $0f, $15, $1b, $21 - db $04, $0a, $10, $16, $1c, $22 - db $05, $0b, $11, $17, $1d, $23 - -.FourByFour: - db $00, $0c, $12, $1e - db $02, $0e, $14, $20 - db $03, $0f, $15, $21 - db $05, $11, $17, $23 - -.TwoByTwo: - db $00, $1e - db $05, $23 - -.SevenBySeven: - db $00, $07, $0e, $15, $1c, $23, $2a - db $01, $08, $0f, $16, $1d, $24, $2b - db $02, $09, $10, $17, $1e, $25, $2c - db $03, $0a, $11, $18, $1f, $26, $2d - db $04, $0b, $12, $19, $20, $27, $2e - db $05, $0c, $13, $1a, $21, $28, $2f - db $06, $0d, $14, $1b, $22, $29, $30 - -.FiveByFive: - db $00, $07, $15, $23, $2a - db $01, $08, $16, $24, $2b - db $03, $0a, $18, $26, $2d - db $05, $0c, $1a, $28, $2f - db $06, $0d, $1b, $29, $30 - -.ThreeByThree: - db $00, $15, $2a - db $03, $18, $2d - db $06, $1b, $30 -; c8545 - -BattleBGEffect_Surf: ; c8545 (32:4545) - call BattleBGEffects_AnonJumptable -.anon_dw - dw .zero - dw .one - dw .two - - -.zero - call BattleBGEffects_IncrementJumptable - lb de, 2, 2 - call InitSurfWaves - -.one - ld a, [hLCDCPointer] - and a - ret z - push bc - call .RotatewSurfWaveBGEffect - pop bc - ret - -.two - call BattleAnim_ResetLCDStatCustom - ret - -.RotatewSurfWaveBGEffect: - ld hl, wSurfWaveBGEffect - ld de, wSurfWaveBGEffect + 1 - ld c, wSurfWaveBGEffectEnd - wSurfWaveBGEffect - 1 - ld a, [hl] - push af -.loop - ld a, [de] - inc de - ld [hli], a - dec c - jr nz, .loop - pop af - ld [hl], a - ld de, LYOverridesBackup - ld hl, wSurfWaveBGEffect - ld bc, $0 -.loop2 - ld a, [hLYOverrideStart] - cp e - jr nc, .load_zero - push hl - add hl, bc - ld a, [hl] - pop hl - jr .okay - -.load_zero - xor a -.okay - ld [de], a - ld a, c - inc a - and $3f - ld c, a - inc de - ld a, e - cp $5f - jr c, .loop2 - ret - -BattleBGEffect_Whirlpool: ; c8599 (32:4599) - call BattleBGEffects_AnonJumptable -.anon_dw - dw .zero - dw .one - dw .two - - -.zero - call BattleBGEffects_IncrementJumptable - call BattleBGEffects_ClearLYOverrides - ld a, rSCY - $ff00 - ld [hLCDCPointer], a - xor a - ld [hLYOverrideStart], a - ld a, $5e - ld [hLYOverrideEnd], a - lb de, 2, 2 - call Functionc8f2e - ret - -.one - call BattleBGEffect_WavyScreenFX - ret - -.two - call BattleAnim_ResetLCDStatCustom - ret - -BattleBGEffect_30: ; c85c2 (32:45c2) - call BattleBGEffects_ClearLYOverrides - ld a, rSCY - $ff00 - call BattleBGEffect_SetLCDStatCustoms1 - call EndBattleBGEffect - ret - -BattleBGEffect_31: ; c85ce (32:45ce) - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld a, [hl] - ld e, a - add $4 - ld [hl], a - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - ld a, [hl] - and $f0 - swap a - xor $ff - add $4 - ld d, a - ld hl, BG_EFFECT_STRUCT_JT_INDEX - add hl, bc - ld a, [hl] - ld [wBattleAnimTemp0], a - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - ld a, [hl] - cp $20 - jr nc, .done - inc [hl] - inc [hl] - call Functionc8f9a - ret - -.done - call BattleBGEffects_ClearLYOverrides - call EndBattleBGEffect - ret - -BattleBGEffect_32: ; c8603 (32:4603) - call BattleAnim_ResetLCDStatCustom - ret - -BattleBGEffect_Psychic: ; c8607 (32:4607) - call BattleBGEffects_AnonJumptable -.anon_dw - dw .zero - dw .one - dw .two - - -.zero - call BattleBGEffects_IncrementJumptable - call BattleBGEffects_ClearLYOverrides - ld a, rSCX - $ff00 - ld [hLCDCPointer], a - xor a - ld [hLYOverrideStart], a - ld a, $5f - ld [hLYOverrideEnd], a - lb de, 6, 5 - call Functionc8f2e - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld [hl], $0 - ret - -.one - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld a, [hl] - inc [hl] - and $3 - ret nz - call BattleBGEffect_WavyScreenFX - ret - -.two - call BattleAnim_ResetLCDStatCustom - ret - -BattleBGEffect_Teleport: ; c863f (32:463f) - call BattleBGEffects_AnonJumptable -.anon_dw - dw .zero - dw .one - dw .two - - -.zero - call BattleBGEffects_IncrementJumptable - call BattleBGEffects_ClearLYOverrides - ld a, rSCX - $ff00 - call BattleBGEffect_SetLCDStatCustoms1 - lb de, 6, 5 - call Functionc8f2e - ret - -.one - call BattleBGEffect_WavyScreenFX - ret - -.two - call BattleAnim_ResetLCDStatCustom - ret - -BattleBGEffect_NightShade: ; c8662 (32:4662) - call BattleBGEffects_AnonJumptable -.anon_dw - dw .zero - dw .one - dw .two - - -.zero - call BattleBGEffects_IncrementJumptable - call BattleBGEffects_ClearLYOverrides - ld a, rSCY - $ff00 - call BattleBGEffect_SetLCDStatCustoms1 - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld e, [hl] - ld d, 2 - call Functionc8f2e - ret - -.one - call BattleBGEffect_WavyScreenFX - ret - -.two - call BattleAnim_ResetLCDStatCustom - ret - -BattleBGEffect_DoubleTeam: ; c8689 (32:4689) - call BattleBGEffects_AnonJumptable -.anon_dw - dw .zero - dw .one - dw .two - dw .three - dw .four - dw .five - - -.zero - call BattleBGEffects_IncrementJumptable - call BattleBGEffects_ClearLYOverrides - ld a, rSCX - $ff00 - call BattleBGEffect_SetLCDStatCustoms1 - ld a, [hLYOverrideEnd] - inc a - ld [hLYOverrideEnd], a - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - ld [hl], $0 - ret - -.one - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld a, [hl] - cp $10 - jr nc, .next - inc [hl] - call .UpdateLYOverrides - ret - -.three - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld a, [hl] - cp $ff - jr z, .next - dec [hl] - call .UpdateLYOverrides - ret - -.next - call BattleBGEffects_IncrementJumptable - ret - -.two - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - ld a, [hl] - ld d, $2 - call BattleBGEffects_Sine - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - add [hl] - call .UpdateLYOverrides - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - ld a, [hl] - add $4 - ld [hl], a - -.four - ret - -.UpdateLYOverrides: - ld e, a - xor $ff - inc a - ld d, a - ld h, HIGH(LYOverridesBackup) - ld a, [hLYOverrideStart] - ld l, a - ld a, [hLYOverrideEnd] - sub l - srl a - push af -.loop - ld [hl], e - inc hl - ld [hl], d - inc hl - dec a - jr nz, .loop - pop af - ret nc - ld [hl], e - ret - -.five - call BattleAnim_ResetLCDStatCustom - ret - -BattleBGEffect_AcidArmor: ; c8709 (32:4709) - call BattleBGEffects_AnonJumptable -.anon_dw - dw .zero - dw .one - dw .two - - -.zero - call BattleBGEffects_IncrementJumptable - call BattleBGEffects_ClearLYOverrides - ld a, rSCY - $ff00 - call BattleBGEffect_SetLCDStatCustoms1 - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld e, [hl] - ld d, 2 - call Functionc8f2e - ld h, HIGH(LYOverridesBackup) - ld a, [hLYOverrideEnd] - ld l, a - ld [hl], $0 - dec l - ld [hl], $0 - ret - -.one - ld a, [hLYOverrideEnd] - ld l, a - ld h, HIGH(LYOverridesBackup) - ld e, l - ld d, h - dec de -.loop - ld a, [de] - dec de - ld [hld], a - ld a, [hLYOverrideStart] - cp l - jr nz, .loop - ld [hl], $90 - ld a, [hLYOverrideEnd] - ld l, a - ld a, [hl] - cp $1 - jr c, .okay - cp $90 - jr z, .okay - ld [hl], $0 -.okay - dec l - ld a, [hl] - cp $2 - ret c - cp $90 - ret z - ld [hl], $0 - ret - -.two - call BattleAnim_ResetLCDStatCustom - ret - -BattleBGEffect_Withdraw: ; c8761 (32:4761) - call BattleBGEffects_AnonJumptable -.anon_dw - dw .zero - dw .one - dw .two - - -.zero - call BattleBGEffects_IncrementJumptable - call BattleBGEffects_ClearLYOverrides - ld a, rSCY - $ff00 - call BattleBGEffect_SetLCDStatCustoms1 - ld a, [hLYOverrideEnd] - inc a - ld [hLYOverrideEnd], a - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - ld [hl], $1 - ret - -.one - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld a, [hl] - and $3f - ld d, a - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - ld a, [hl] - cp d - ret nc - call BGEffect_DisplaceLYOverridesBackup - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld a, [hl] - rlca - rlca - and $3 - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - add [hl] - ld [hl], a - ret - -.two - call BattleAnim_ResetLCDStatCustom - ret - -BattleBGEffect_Dig: ; c87a7 (32:47a7) - call BattleBGEffects_AnonJumptable -.anon_dw - dw .zero - dw .one - dw .two - dw .three - - -.zero - call BattleBGEffects_IncrementJumptable - call BattleBGEffects_ClearLYOverrides - ld a, rSCY - $ff00 - call BattleBGEffect_SetLCDStatCustoms1 - ld a, [hLYOverrideEnd] - inc a - ld [hLYOverrideEnd], a - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - ld [hl], $2 - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld [hl], $0 - ret - -.one - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld a, [hl] - and a - jr z, .next - dec [hl] - ret - -.next - ld [hl], $10 - call BattleBGEffects_IncrementJumptable -.two - ld a, [hLYOverrideStart] - ld l, a - ld a, [hLYOverrideEnd] - sub l - dec a - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - cp [hl] - ret c - ld a, [hl] - push af - and $7 - jr nz, .skip - ld hl, BG_EFFECT_STRUCT_JT_INDEX - add hl, bc - dec [hl] -.skip - pop af - call BGEffect_DisplaceLYOverridesBackup - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - inc [hl] - inc [hl] - ret - -.three - call BattleAnim_ResetLCDStatCustom - ret - -BattleBGEffect_Tackle: ; c8805 (32:4805) - call BattleBGEffects_AnonJumptable -.anon_dw - dw .zero - dw Tackle_BGEffect25_2d_one - dw Tackle_BGEffect25_2d_two - dw .three - - -.zero - call BattleBGEffects_IncrementJumptable - call BattleBGEffects_ClearLYOverrides - ld a, rSCX - $ff00 - call BattleBGEffect_SetLCDStatCustoms1 - ld a, [hLYOverrideEnd] - inc a - ld [hLYOverrideEnd], a - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld [hl], $0 - call BGEffect_CheckBattleTurn - jr nz, .player_side - ld a, 2 - jr .okay - -.player_side - ld a, -2 -.okay - ld [hl], a - ret - -.three - call BattleAnim_ResetLCDStatCustom - ret - -BattleBGEffect_25: ; c8837 (32:4837) - call BattleBGEffects_AnonJumptable -.anon_dw - dw .zero - dw Tackle_BGEffect25_2d_one - dw Tackle_BGEffect25_2d_two - dw .three - - -.zero - call BattleBGEffects_IncrementJumptable - call BattleBGEffects_ClearLYOverrides - ld a, rSCX - $ff00 - call BattleBGEffect_SetLCDStatCustoms2 - ld a, [hLYOverrideEnd] - inc a - ld [hLYOverrideEnd], a - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld [hl], $0 - call BGEffect_CheckBattleTurn - jr nz, .player_side - ld a, 2 - jr .okay - -.player_side - ld a, -2 -.okay - ld [hl], a - ret - -.three - call BattleAnim_ResetLCDStatCustom - ret - -Tackle_BGEffect25_2d_one: - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld a, [hl] - cp -8 - jr z, .reached_limit - cp 8 - jr nz, .finish -.reached_limit - call BattleBGEffects_IncrementJumptable -.finish - call Functionc88a5 - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - ld a, [hl] - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - add [hl] - ld [hl], a - ret - -Tackle_BGEffect25_2d_two: - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld a, [hl] - and a - jr nz, .asm_c8893 - call BattleBGEffects_IncrementJumptable -.asm_c8893 - call Functionc88a5 - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - ld a, [hl] - xor $ff - inc a - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - add [hl] - ld [hl], a - ret - -Functionc88a5: ; c88a5 (32:48a5) - push af - ld a, [FXAnimID + 1] ; FXAnimID + 1 - or a - jr nz, .not_rollout - ld a, [FXAnimID] ; FXAnimID - cp ROLLOUT - jr z, .rollout -.not_rollout - pop af - jp BGEffect_FillLYOverridesBackup - -.rollout - ld a, [hLYOverrideStart] - ld d, a - ld a, [hLYOverrideEnd] - sub d - ld d, a - ld h, HIGH(LYOverridesBackup) - ld a, [hSCY] - or a - jr nz, .skip1 - ld a, [hLYOverrideStart] - or a - jr z, .skip2 - dec a - ld l, a - ld [hl], $0 - jr .skip2 - -.skip1 - ld a, [hLYOverrideEnd] - dec a - ld l, a - ld [hl], $0 -.skip2 - ld a, [hSCY] - ld l, a - ld a, [hLYOverrideStart] - sub l - jr nc, .skip3 - xor a - dec d -.skip3 - ld l, a - pop af -.loop - ld [hli], a - dec d - jr nz, .loop - ret - -BattleBGEffect_2d: ; c88e7 (32:48e7) - call BattleBGEffects_AnonJumptable -.anon_dw - dw BGEffect2d_2f_zero - dw Tackle_BGEffect25_2d_one - dw Tackle_BGEffect25_2d_two - dw .three - - -.three - call BattleAnim_ResetLCDStatCustom - ret - -BGEffect2d_2f_zero: - call BattleBGEffects_IncrementJumptable - call BattleBGEffects_ClearLYOverrides - ld a, rSCX - $ff00 - call BattleBGEffect_SetLCDStatCustoms1 - ld a, [hLYOverrideEnd] - inc a - ld [hLYOverrideEnd], a - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld [hl], $0 - call BGEffect_CheckBattleTurn - jr nz, .player_turn - ld a, -2 - jr .okay - -.player_turn - ld a, 2 -.okay - ld [hl], a - ret - -BattleBGEffect_2f: ; c8919 (32:4919) - call BattleBGEffects_AnonJumptable -.anon_dw - dw BGEffect2d_2f_zero - dw Tackle_BGEffect25_2d_one - dw .two - dw Tackle_BGEffect25_2d_two - dw .four - -.four - call BattleAnim_ResetLCDStatCustom -.two - ret - -BattleBGEffect_26: ; c892a (32:492a) - call BattleBGEffects_AnonJumptable -.anon_dw - dw .zero - dw .one - dw .two - - -.zero - call BattleBGEffects_IncrementJumptable - call BattleBGEffects_ClearLYOverrides - ld a, rSCX - $ff00 - call BattleBGEffect_SetLCDStatCustoms1 - ld a, [hLYOverrideEnd] - inc a - ld [hLYOverrideEnd], a - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld [hl], $0 - ret - -.one - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld a, [hl] - ld d, $8 - call BattleBGEffects_Sine - call BGEffect_FillLYOverridesBackup - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld a, [hl] - add $4 - ld [hl], a - ret - -.two - call BattleAnim_ResetLCDStatCustom - ret - -BattleBGEffect_2c: ; c8964 (32:4964) - call BattleBGEffects_AnonJumptable -.anon_dw - dw .zero - dw .one - dw .two - - -.zero - call BattleBGEffects_IncrementJumptable - call BattleBGEffects_ClearLYOverrides - ld a, rSCX - $ff00 - call BattleBGEffect_SetLCDStatCustoms1 - ld a, [hLYOverrideEnd] - inc a - ld [hLYOverrideEnd], a - xor a - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - ld [hli], a - ld [hl], a - ret - -.one - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld a, [hl] - ld d, $6 - call BattleBGEffects_Sine - push af - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - ld a, [hl] - ld d, $2 - call BattleBGEffects_Sine - ld e, a - pop af - add e - call BGEffect_FillLYOverridesBackup - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - ld a, [hl] - add $8 - ld [hl], a - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld a, [hl] - add $2 - ld [hl], a - ret - -.two - call BattleAnim_ResetLCDStatCustom - ret - -BattleBGEffect_28: ; c89b5 (32:49b5) - call BattleBGEffects_AnonJumptable -.anon_dw - dw .zero - dw .one - dw .two - - -.zero - call BattleBGEffects_IncrementJumptable - call BattleBGEffects_ClearLYOverrides - ld a, rSCX - $ff00 - call BattleBGEffect_SetLCDStatCustoms1 - ret - -.one - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld a, [hl] - cp $20 - ret nc - inc [hl] - ld d, a - ld e, 4 - call Functionc8f2e - ret - -.two - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld a, [hl] - and a - jr z, .reset - dec [hl] - ld d, a - ld e, 4 - call Functionc8f2e - ret - -.reset - call BattleAnim_ResetLCDStatCustom - ret - -BattleBGEffect_BounceDown: ; c89ee (32:49ee) - call BattleBGEffects_AnonJumptable -.anon_dw - dw .zero - dw .one - dw .two - - -.zero - call BattleBGEffects_IncrementJumptable - call BattleBGEffects_ClearLYOverrides - ld a, rSCY - $ff00 - call BattleBGEffect_SetLCDStatCustoms2 - ld a, [hLYOverrideEnd] - inc a - ld [hLYOverrideEnd], a - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - ld [hl], $1 - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld [hl], $20 - ret - -.one - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - ld a, [hl] - cp $38 - ret nc - push af - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld a, [hl] - ld d, $10 - call BattleBGEffects_Cosine - add $10 - ld d, a - pop af - add d - call BGEffect_DisplaceLYOverridesBackup - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - inc [hl] - inc [hl] - ret - -.two - call BattleAnim_ResetLCDStatCustom - ret - -BattleBGEffect_2a: ; c8a3a (32:4a3a) - call BattleBGEffects_AnonJumptable -.anon_dw - dw .zero - dw .one - dw .two - dw .three - dw .four - dw .five - -.zero - call BattleBGEffects_IncrementJumptable - ld a, $e4 - call BattleBGEffects_SetLYOverrides - ld a, $47 - call BattleBGEffect_SetLCDStatCustoms1 - ld a, [hLYOverrideEnd] - inc a - ld [hLYOverrideEnd], a - ld a, [hLYOverrideStart] - ld l, a - ld h, HIGH(LYOverridesBackup) -.loop - ld a, [hLYOverrideEnd] - cp l - jr z, .done - xor a - ld [hli], a - jr .loop - -.done - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld [hl], $0 -.one -.four - ret - -.two - call .GetLYOverride - jr nc, .next - call .SetLYOverridesBackup - ret - -.next - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld [hl], $0 - ld a, [hLYOverrideStart] - inc a - ld [hLYOverrideStart], a - call BattleBGEffects_IncrementJumptable - ret - -.three - call .GetLYOverride - jr nc, .finish - call .SetLYOverridesBackup - ld a, [hLYOverrideEnd] - dec a - ld l, a - ld [hl], e - ret - -.finish - call BattleBGEffects_IncrementJumptable - ret - -.SetLYOverridesBackup: - ld e, a - ld a, [hLYOverrideStart] - ld l, a - ld a, [hLYOverrideEnd] - sub l - srl a - ld h, HIGH(LYOverridesBackup) -.loop2 - ld [hl], e - inc hl - inc hl - dec a - jr nz, .loop2 - ret - -.five - call BattleBGEffects_ResetVideoHRAM - ret - -.GetLYOverride: - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld a, [hl] - inc [hl] - srl a - srl a - srl a - ld e, a - ld d, 0 - ld hl, .data - add hl, de - ld a, [hl] - cp $ff - ret - -.data - db $00, $40, $90, $e4 - db -1 -; c8acc - -BattleBGEffect_2b: ; c8acc (32:4acc) - call BattleBGEffects_AnonJumptable -.anon_dw - dw .zero - dw .one - - -.zero - call BattleBGEffects_IncrementJumptable - call BattleBGEffects_ClearLYOverrides - ld a, rSCX - $ff00 - call BattleBGEffect_SetLCDStatCustoms1 - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - ld [hl], $40 - ret - -.one - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - ld a, [hl] - and a - jr z, .done - dec [hl] - srl a - srl a - srl a - and $f - ld d, a - ld e, a - call Functionc8f2e - ret - -.done - call BattleAnim_ResetLCDStatCustom - ret - -BattleBGEffect_1c: ; c8b00 (32:4b00) - ld a, [hCGB] - and a - jr nz, .cgb - call BattleBGEffects_AnonJumptable -.anon_dw - dw .zero - dw .one - dw .two - - -.zero - call BattleBGEffects_IncrementJumptable - ld a, $e4 - call BattleBGEffects_SetLYOverrides - ld a, rBGP - $ff00 - ld [hLCDCPointer], a - xor a - ld [hLYOverrideStart], a - ld a, $60 - ld [hLYOverrideEnd], a - ret - -.one - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld a, [hl] - inc [hl] - ld e, a - and $7 - ret nz - ld a, e - and $18 - sla a - swap a - sla a - ld e, a - ld d, $0 - push bc - call BGEffect_CheckBattleTurn - jr nz, .player - ld hl, .CGB_DMGEnemyData - add hl, de - ld a, [hli] - ld [wOBP1], a - ld d, a - ld e, [hl] - lb bc, $2f, $30 - jr .okay - -.player - ld hl, .DMG_PlayerData - add hl, de - ld d, [hl] - inc hl - ld a, [hl] - ld [wOBP1], a - ld e, a - lb bc, $37, $28 -.okay - call .DMG_LYOverrideLoads - pop bc - ret - -.two - call BattleBGEffects_ResetVideoHRAM - ld a, $e4 - ld [wBGP], a - ld [wOBP1], a - ret - -.DMG_LYOverrideLoads: - ld hl, LYOverridesBackup -.loop1 - ld [hl], d - inc hl - dec b - jr nz, .loop1 -.loop2 - ld [hl], e - inc hl - dec c - jr nz, .loop2 - ret - -.cgb - ld de, .Jumptable - call BatttleBGEffects_GetNamedJumptablePointer - jp hl - -.Jumptable: - dw .cgb_zero - dw .cgb_one - dw .cgb_two -.cgb_zero - call BattleBGEffects_IncrementJumptable - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld [hl], $0 - ret - -.cgb_one - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld a, [hl] - inc [hl] - ld e, a - and $7 - ret nz - ld a, e - and $18 - sla a - swap a - sla a - ld e, a - ld d, 0 - call BGEffect_CheckBattleTurn - jr nz, .player_2 - ld hl, .CGB_DMGEnemyData - add hl, de - ld a, [hli] - push hl - call BGEffects_LoadBGPal1_OBPal0 - pop hl - ld a, [hl] - call BGEffects_LoadBGPal0_OBPal1 - ret - -.player_2 - ld hl, .CGB_DMGEnemyData - add hl, de - ld a, [hli] - push hl - call BGEffects_LoadBGPal0_OBPal1 - pop hl - ld a, [hl] - call BGEffects_LoadBGPal1_OBPal0 - ret - -.cgb_two - ld a, $e4 - call BGEffects_LoadBGPal0_OBPal1 - ld a, $e4 - call BGEffects_LoadBGPal1_OBPal0 - call EndBattleBGEffect - ret - -.CGB_DMGEnemyData: - db $e4, $e4 - db $f8, $90 - db $fc, $40 - db $f8, $90 -.DMG_PlayerData: - db $e4, $e4 - db $90, $f8 - db $40, $fc - db $90, $f8 -; c8be8 - -BattleBGEffect_RapidFlash: ; c8be8 (32:4be8) - ld de, .FlashPals - call BGEffect_RapidCyclePals - ret - -.FlashPals: - db $e4, $6c, $fe -; c8bf2 - -BattleBGEffect_16: ; c8bf2 (32:4bf2) - ld de, .Pals - call BGEffect_RapidCyclePals - ret - -.Pals: - db $e4, $90, $40, $ff -; c8bfd - -BattleBGEffect_17: ; c8bfd (32:4bfd) - ld de, .Pals - call BGEffect_RapidCyclePals - ret - -.Pals: - db $e4, $f8, $fc, $ff -; c8c08 - -BattleBGEffect_18: ; c8c08 (32:4c08) - ld de, .Pals - call BGEffect_RapidCyclePals - ret - -.Pals: - db $e4, $90, $40, $90, $fe -; c8c14 - -BattleBGEffect_19: ; c8c14 (32:4c14) - ld de, .Pals - call BGEffect_RapidCyclePals - ret - -.Pals: - db $e4, $f8, $fc, $f8, $fe -; c8c20 - -BattleBGEffect_1a: ; c8c20 (32:4c20) - ld de, .Pals - call BGEffect_RapidCyclePals - ret - -.Pals: - db $e4, $f8, $fc, $f8, $e4, $90, $40, $90, $fe -; c8c30 - -BattleBGEffect_1b: ; c8c30 (32:4c30) - ld de, .Pals - call BGEffect_RapidCyclePals - ret - -.Pals: - db $e4, $fc, $e4, $00, $fe -; c8c3c - -BattleBGEffect_1d: ; c8c3c (32:4c3c) - ld de, .Pals - call BGEffect_RapidCyclePals - ret - -.Pals: - db $e4, $90, $40, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $40, $90, $e4, $ff -; c8c55 - -BattleBGEffect_1e: ; c8c55 (32:4c55) - ld de, .Pals - call BGEffect_RapidCyclePals - ret - -.Pals: - db $00, $40, $90, $e4, $ff -; c8c61 - -BattleBGEffect_VibrateMon: ; c8c61 (32:4c61) - call BattleBGEffects_AnonJumptable -.anon_dw - dw .zero - dw .one - - -.zero ; c8c68 (32:4c68) - call BattleBGEffects_IncrementJumptable - call BattleBGEffects_ClearLYOverrides - ld a, rSCX - $ff00 - call BattleBGEffect_SetLCDStatCustoms1 - ld a, [hLYOverrideEnd] - inc a - ld [hLYOverrideEnd], a - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - ld [hl], $1 - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld [hl], $20 - ret - -.one ; c8c85 (32:4c85) - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld a, [hl] - and a - jr z, .finish - dec [hl] - and $1 - ret nz - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - ld a, [hl] - xor $ff - inc a - ld [hl], a - call BGEffect_FillLYOverridesBackup - ret - -.finish - call BattleAnim_ResetLCDStatCustom - ret - -BattleBGEffect_WobbleMon: ; c8ca2 (32:4ca2) - call BattleBGEffects_AnonJumptable -.anon_dw - dw .zero - dw .one - dw .two - - -.zero ; c8cab (32:4cab) - call BattleBGEffects_IncrementJumptable - call BattleBGEffects_ClearLYOverrides - ld a, rSCX - $ff00 - ld [hLCDCPointer], a - xor a - ld [hLYOverrideStart], a - ld a, $37 - ld [hLYOverrideEnd], a - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld [hl], $0 - ret - -.one ; c8cc3 (32:4cc3) - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld a, [hl] - cp $40 - jr nc, .two - ld d, $6 - call BattleBGEffects_Sine - call BGEffect_FillLYOverridesBackup - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld a, [hl] - add $2 - ld [hl], a - ret - -.two ; c8cdd (32:4cdd) - call BattleAnim_ResetLCDStatCustom - ret - -BattleBGEffect_2e: ; c8ce1 (32:4ce1) - call Functionc8d0b - jr c, .xor_a - bit 7, a - jr z, .okay -.xor_a - xor a -.okay - push af - call DelayFrame - pop af - ld [hSCY], a - xor $ff - inc a - ld [AnimObject01_YOffset], a - ret - -BattleBGEffect_1f: ; c8cf9 (32:4cf9) - call Functionc8d0b - jr nc, .skip - xor a -.skip - ld [hSCX], a - ret - -BattleBGEffect_20: ; c8d02 (32:4d02) - call Functionc8d0b - jr nc, .skip - xor a -.skip - ld [hSCY], a - ret - -Functionc8d0b: ; c8d0b (32:4d0b) - ld hl, BG_EFFECT_STRUCT_JT_INDEX - add hl, bc - ld a, [hl] - and a - jr nz, .okay - call EndBattleBGEffect - scf - ret - -.okay - dec [hl] - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld a, [hl] - and $f - jr z, .every_16_frames - dec [hl] - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - ld a, [hl] - and a - ret - -.every_16_frames - ld a, [hl] - swap a - or [hl] - ld [hl], a - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - ld a, [hl] - xor $ff - inc a - ld [hl], a - and a - ret - -BattleBGEffect_35: ; c8d3a (32:4d3a) - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld a, [hl] - cp $40 - jr nc, .finish - ld d, $6 - call BattleBGEffects_Sine - ld [hSCX], a - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld a, [hl] - add $2 - ld [hl], a - ret - -.finish - xor a - ld [hSCX], a - ret - -BattleBGEffect_GetNthDMGPal: ; c8d57 (32:4d57) - ld hl, BG_EFFECT_STRUCT_JT_INDEX - add hl, bc - ld a, [hl] - and a - jr z, .zero - dec [hl] - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld a, [hl] - call BattleBGEffect_GetNextDMGPal - ret - -.zero - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - ld a, [hl] - ld hl, BG_EFFECT_STRUCT_JT_INDEX - add hl, bc - ld [hl], a - call BattleBGEffect_GetFirstDMGPal - ret - -BGEffect_RapidCyclePals: ; c8d77 (32:4d77) - ld a, [hCGB] - and a - jr nz, .cgb - push de - ld de, .Jumptable_DMG - call BatttleBGEffects_GetNamedJumptablePointer - pop de - jp hl - -.Jumptable_DMG: - dw .zero_dmg - dw .one_dmg - dw .two_dmg - - -.zero_dmg ; c8d8b (32:4d8b) - call BattleBGEffects_IncrementJumptable - ld a, $e4 - call BattleBGEffects_SetLYOverrides - ld a, $47 - call BattleBGEffect_SetLCDStatCustoms1 - ld a, [hLYOverrideEnd] - inc a - ld [hLYOverrideEnd], a - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld a, [hl] - ld [hl], $0 - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - ld [hl], a - ret - -.one_dmg ; c8daa (32:4daa) - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - ld a, [hl] - and $f - jr z, .okay_1_dmg - dec [hl] - ret - -.okay_1_dmg - ld a, [hl] - swap a - or [hl] - ld [hl], a - call BattleBGEffect_GetFirstDMGPal - jr c, .okay_2_dmg - call BGEffect_FillLYOverridesBackup - ret - -.okay_2_dmg - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - dec [hl] - ret - -.two_dmg ; c8dc9 (32:4dc9) - call BattleBGEffects_ResetVideoHRAM - ld a, %11100100 - ld [rBGP], a - call EndBattleBGEffect - ret - -.cgb - push de - ld de, .Jumptable_CGB - call BatttleBGEffects_GetNamedJumptablePointer - pop de - jp hl - -.Jumptable_CGB: ; c8ddd (32:4ddd) - dw .zero_cgb - dw .one_cgb - dw .two_cgb - dw .three_cgb - dw .four_cgb - - -.zero_cgb ; c8de7 (32:4de7) - call BGEffect_CheckBattleTurn - jr nz, .player_turn_cgb - call BattleBGEffects_IncrementJumptable - call BattleBGEffects_IncrementJumptable -.player_turn_cgb - call BattleBGEffects_IncrementJumptable - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld a, [hl] - ld [hl], $0 - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - ld [hl], a - ret - -.one_cgb ; c8e02 (32:4e02) - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - ld a, [hl] - and $f - jr z, .okay_1_cgb - dec [hl] - ret - -.okay_1_cgb - ld a, [hl] - swap a - or [hl] - ld [hl], a - call BattleBGEffect_GetFirstDMGPal - jr c, .okay_2_cgb - call BGEffects_LoadBGPal0_OBPal1 - ret - -.okay_2_cgb - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - dec [hl] - ret - -.two_cgb ; c8e21 (32:4e21) - ld a, $e4 - call BGEffects_LoadBGPal0_OBPal1 - call EndBattleBGEffect - ret - -.three_cgb ; c8e2a (32:4e2a) - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - ld a, [hl] - and $f - jr z, .okay_3_cgb - dec [hl] - ret - -.okay_3_cgb - ld a, [hl] - swap a - or [hl] - ld [hl], a - call BattleBGEffect_GetFirstDMGPal - jr c, .okay_4_cgb - call BGEffects_LoadBGPal1_OBPal0 - ret - -.okay_4_cgb - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - dec [hl] - ret - -.four_cgb ; c8e49 (32:4e49) - ld a, $e4 - call BGEffects_LoadBGPal1_OBPal0 - call EndBattleBGEffect - ret - -BGEffects_LoadBGPal0_OBPal1: ; c8e52 (32:4e52) - ld h, a - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld a, h - push bc - push af - ld hl, BGPals - ld de, UnknBGPals - ld b, a - ld c, $1 - call CopyPals - ld hl, OBPals + 8 - ld de, UnknOBPals + 8 - pop af - ld b, a - ld c, $1 - call CopyPals - pop bc - pop af - ld [rSVBK], a - ld a, $1 - ld [hCGBPalUpdate], a - ret - -BGEffects_LoadBGPal1_OBPal0: ; c8e7f (32:4e7f) - ld h, a - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld a, h - push bc - push af - ld hl, BGPals + 8 - ld de, UnknBGPals + 8 - ld b, a - ld c, $1 - call CopyPals - ld hl, OBPals ; OBPals - ld de, UnknOBPals ; wd040 - pop af - ld b, a - ld c, $1 - call CopyPals - pop bc - pop af - ld [rSVBK], a - ld a, $1 - ld [hCGBPalUpdate], a - ret - -BattleBGEffect_GetFirstDMGPal: ; c8eac (32:4eac) - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld a, [hl] - inc [hl] -BattleBGEffect_GetNextDMGPal: ; c8eb2 (32:4eb2) - ld l, a - ld h, $0 - add hl, de - ld a, [hl] - cp -1 - jr z, .quit - cp -2 - jr nz, .repeat - ld a, [de] - ld hl, BG_EFFECT_STRUCT_03 - add hl, bc - ld [hl], $0 -.repeat - and a - ret - -.quit - scf - ret - -BattleBGEffects_ClearLYOverrides: ; c8eca (32:4eca) - xor a -BattleBGEffects_SetLYOverrides: ; c8ecb (32:4ecb) - ld hl, LYOverrides ; wListPointer - ld e, $99 -.loop1 - ld [hli], a - dec e - jr nz, .loop1 - ld hl, LYOverridesBackup - ld e, $91 -.loop2 - ld [hli], a - dec e - jr nz, .loop2 - ret - -BattleBGEffect_SetLCDStatCustoms1: ; c8ede (32:4ede) - ld [hLCDCPointer], a - call BGEffect_CheckBattleTurn - jr nz, .player_turn - lb de, $00, $36 - jr .okay - -.player_turn - lb de, $2f, $5e -.okay - ld a, d - ld [hLYOverrideStart], a - ld a, e - ld [hLYOverrideEnd], a - ret - -BattleBGEffect_SetLCDStatCustoms2: ; c8ef4 (32:4ef4) - ld [hLCDCPointer], a - call BGEffect_CheckBattleTurn - jr nz, .player_turn - lb de, $00, $36 - jr .okay - -.player_turn - lb de, $2d, $5e -.okay - ld a, d - ld [hLYOverrideStart], a - ld a, e - ld [hLYOverrideEnd], a - ret - -BattleAnim_ResetLCDStatCustom: ; c8f0a (32:4f0a) - xor a - ld [hLYOverrideStart], a - ld [hLYOverrideEnd], a - call BattleBGEffects_ClearLYOverrides - xor a - ld [hLCDCPointer], a - call EndBattleBGEffect - ret - -BattleBGEffects_ResetVideoHRAM: ; c8f19 (32:4f19) - xor a - ld [hLCDCPointer], a - ld a, %11100100 - ld [rBGP], a - ld [wBGP], a - ld [wOBP1], a - ld [hLYOverrideStart], a - ld [hLYOverrideEnd], a - call BattleBGEffects_ClearLYOverrides - ret - -Functionc8f2e: ; c8f2e (32:4f2e) - push bc - xor a - ld [wBattleAnimTemp0], a - ld a, e - ld [wBattleAnimTemp1], a - ld a, d - ld [wBattleAnimTemp2], a - ld a, $80 - ld [wBattleAnimTemp3], a - ld bc, LYOverridesBackup -.loop - ld a, [hLYOverrideStart] - cp c - jr nc, .next - ld a, [hLYOverrideEnd] - cp c - jr c, .next - ld a, [wBattleAnimTemp2] - ld d, a - ld a, [wBattleAnimTemp0] - call BattleBGEffects_Sine - ld [bc], a -.next - inc bc - ld a, [wBattleAnimTemp1] - ld hl, wBattleAnimTemp0 - add [hl] - ld [hl], a - ld hl, wBattleAnimTemp3 - dec [hl] - jr nz, .loop - pop bc - ret - -InitSurfWaves: ; c8f69 (32:4f69) - push bc - xor a - ld [wBattleAnimTemp0], a - ld a, e - ld [wBattleAnimTemp1], a - ld a, d - ld [wBattleAnimTemp2], a - ld a, $40 - ld [wBattleAnimTemp3], a - ld bc, wSurfWaveBGEffect -.loop - ld a, [wBattleAnimTemp2] - ld d, a - ld a, [wBattleAnimTemp0] - call BattleBGEffects_Sine - ld [bc], a - inc bc - ld a, [wBattleAnimTemp1] - ld hl, wBattleAnimTemp0 - add [hl] - ld [hl], a - ld hl, wBattleAnimTemp3 - dec [hl] - jr nz, .loop - pop bc - ret - -Functionc8f9a: ; c8f9a (32:4f9a) - push bc - ld [wBattleAnimTemp3], a - ld a, e - ld [wBattleAnimTemp1], a - ld a, d - ld [wBattleAnimTemp2], a - call .GetLYOverrideBackupAddrOffset - ld hl, LYOverridesBackup - add hl, de - ld c, l - ld b, h -.loop - ld a, [wBattleAnimTemp3] - and a - jr z, .done - dec a - ld [wBattleAnimTemp3], a - push af - ld a, [wBattleAnimTemp2] - ld d, a - ld a, [wBattleAnimTemp1] - push hl - call BattleBGEffects_Sine - ld e, a - pop hl - ld a, [hLYOverrideEnd] - cp c - jr c, .skip1 - ld a, e - ld [bc], a - inc bc -.skip1 - ld a, [hLYOverrideStart] - cp l - jr nc, .skip2 - ld [hl], e - dec hl -.skip2 - ld a, [wBattleAnimTemp1] - add $4 - ld [wBattleAnimTemp1], a - pop af - jr .loop - -.done - pop bc - and a - ret - -.GetLYOverrideBackupAddrOffset: - ld a, [hLYOverrideStart] - ld e, a - ld a, [wBattleAnimTemp0] - add e - ld e, a - ld d, $0 - ret - -BattleBGEffect_WavyScreenFX: ; c8fef (32:4fef) - push bc - ld a, [hLYOverrideStart] - ld l, a - inc a - ld e, a - ld h, HIGH(LYOverridesBackup) - ld d, h - ld a, [hLYOverrideEnd] - sub l - and a - jr z, .done - ld c, a - ld a, [hl] - push af -.loop - ld a, [de] - inc de - ld [hli], a - dec c - jr nz, .loop - pop af - ld [hl], a -.done - pop bc - ret - -BGEffect_FillLYOverridesBackup: ; c900b (32:500b) - push af - ld h, HIGH(LYOverridesBackup) - ld a, [hLYOverrideStart] - ld l, a - ld a, [hLYOverrideEnd] - sub l - ld d, a - pop af -.loop - ld [hli], a - dec d - jr nz, .loop - ret - -BGEffect_DisplaceLYOverridesBackup: ; c901b (32:501b) - ; e = a; d = [hLYOverrideEnd] - [hLYOverrideStart] - a - push af - ld e, a - ld a, [hLYOverrideStart] - ld l, a - ld a, [hLYOverrideEnd] - sub l - sub e - ld d, a - ld h, HIGH(LYOverridesBackup) - ld a, [hLYOverrideStart] - ld l, a - ld a, $90 -.loop - ld [hli], a - dec e - jr nz, .loop - pop af - xor $ff -.loop2 - ld [hli], a - dec d - jr nz, .loop2 - ret - -BGEffect_CheckBattleTurn: ; c9038 (32:5038) - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - ld a, [hBattleTurn] - and $1 - xor [hl] - ret - -BGEffect_CheckFlyDigStatus: ; c9042 (32:5042) - ld hl, BG_EFFECT_STRUCT_BATTLE_TURN - add hl, bc - ld a, [hBattleTurn] - and $1 - xor [hl] - jr nz, .player - ld a, [EnemySubStatus3] ; EnemySubStatus3 - and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND - ret - -.player - ld a, [PlayerSubStatus3] ; PlayerSubStatus3 - and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND - ret - -BattleBGEffects_CheckSGB: ; c9059 (32:5059) - ld a, [hSGB] - and a - ret - -BattleBGEffects_Sine: ; c905d (32:505d) - ld e, a - callfar BattleAnim_Sine_e - ld a, e - ret - -BattleBGEffects_Cosine: ; c9066 (32:5066) - ld e, a - callfar BattleAnim_Cosine_e - ld a, e - ret - -; c906f (32:506f) diff --git a/engine/anims/engine.asm b/engine/anims/engine.asm deleted file mode 100755 index ae3bdde28..000000000 --- a/engine/anims/engine.asm +++ /dev/null @@ -1,314 +0,0 @@ -QueueBattleAnimation: ; cc9a1 (33:49a1) - ld hl, ActiveAnimObjects - ld e, 10 -.loop - ld a, [hl] - and a - jr z, .done - ld bc, BATTLEANIMSTRUCT_LENGTH - add hl, bc - dec e - jr nz, .loop - scf - ret - -.done - ld c, l - ld b, h - ld hl, wNumActiveBattleAnims - inc [hl] - call InitBattleAnimation - ret - -DeinitBattleAnimation: ; cc9bd - ld hl, BATTLEANIMSTRUCT_INDEX - add hl, bc - ld [hl], $0 - ret - -; cc9c4 - -InitBattleAnimation: ; cc9c4 (33:49c4) - ld a, [wBattleAnimTemp0] - ld e, a - ld d, 0 - ld hl, BattleAnimObjects -rept 6 - add hl, de -endr - ld e, l - ld d, h - ld hl, BATTLEANIMSTRUCT_INDEX - add hl, bc - ld a, [wNumActiveBattleAnims] - ld [hli], a ; Index - ld a, [de] - inc de - ld [hli], a ; 01 - ld a, [de] - inc de - ld [hli], a ; 02 - ld a, [de] - inc de - ld [hli], a ; Frameset ID - ld a, [de] - inc de - ld [hli], a ; Function - ld a, [de] - inc de - ld [hli], a ; 05 - ld a, [de] - call GetBattleAnimTileOffset - ld [hli], a ; Tile ID - ld a, [wBattleAnimTemp1] - ld [hli], a ; X Coord - ld a, [wBattleAnimTemp2] - ld [hli], a ; Y Coord - xor a - ld [hli], a ; X Offset - ld [hli], a ; Y Offset - ld a, [wBattleAnimTemp3] - ld [hli], a ; 0b - xor a - ld [hli], a ; 0c - dec a - ld [hli], a ; 0d - xor a - ld [hli], a ; 0e - ld [hli], a ; 0f - ld [hl], a ; 10 - ret - -BattleAnimOAMUpdate: ; cca09 - call InitBattleAnimBuffer - call GetBattleAnimFrame - cp -3 - jp z, .done - cp -4 - jp z, .delete - push af - ld hl, wBattleAnimTempOAMFlags - ld a, [wBattleAnimTemp7] - xor [hl] - and $e0 - ld [hl], a - pop af - push bc - call GetBattleAnimOAMPointer - ld a, [wBattleAnimTempTileID] - add [hl] - ld [wBattleAnimTempTileID], a - inc hl - ld a, [hli] - ld c, a - ld a, [hli] - ld h, [hl] - ld l, a - ld a, [wBattleAnimOAMPointerLo] - ld e, a - ld d, HIGH(Sprites) -.loop - ld a, [wBattleAnimTempYCoord] - ld b, a - ld a, [wBattleAnimTempYOffset] - add b - ld b, a - push hl - ld a, [hl] - ld hl, wBattleAnimTempOAMFlags - bit 6, [hl] - jr z, .no_yflip - add $8 - xor $ff - inc a - -.no_yflip - pop hl - add b - ld [de], a - inc hl - inc de - ld a, [wBattleAnimTempXCoord] - ld b, a - ld a, [wBattleAnimTempXOffset] - add b - ld b, a - push hl - ld a, [hl] - ld hl, wBattleAnimTempOAMFlags - bit 5, [hl] - jr z, .no_xflip - add $8 - xor $ff - inc a - -.no_xflip - pop hl - add b - ld [de], a - inc hl - inc de - ld a, [wBattleAnimTempTileID] - add $31 - add [hl] - ld [de], a - inc hl - inc de - ld a, [wBattleAnimTempOAMFlags] - ld b, a - ld a, [hl] - xor b - and $e0 - ld b, a - ld a, [hl] - and $10 - or b - ld b, a - ld a, [wBattleAnimTempPalette] - and $f - or b - ld [de], a - inc hl - inc de - ld a, e - ld [wBattleAnimOAMPointerLo], a - cp $a0 - jr nc, .exit_set_carry - dec c - jr nz, .loop - pop bc - jr .done - -.delete - call DeinitBattleAnimation - -.done - and a - ret - -.exit_set_carry - pop bc - scf - ret - -; ccaaa - -InitBattleAnimBuffer: ; ccaaa - ld hl, BATTLEANIMSTRUCT_01 - add hl, bc - ld a, [hl] - and %10000000 - ld [wBattleAnimTempOAMFlags], a - xor a - ld [wBattleAnimTemp7], a - ld hl, BATTLEANIMSTRUCT_PALETTE - add hl, bc - ld a, [hl] - ld [wBattleAnimTempPalette], a - ld hl, BATTLEANIMSTRUCT_02 - add hl, bc - ld a, [hl] - ld [wBattleAnimTemp1], a - ld hl, BATTLEANIMSTRUCT_TILEID - add hl, bc - ld a, [hli] - ld [wBattleAnimTempTileID], a - ld a, [hli] - ld [wBattleAnimTempXCoord], a - ld a, [hli] - ld [wBattleAnimTempYCoord], a - ld a, [hli] - ld [wBattleAnimTempXOffset], a - ld a, [hli] - ld [wBattleAnimTempYOffset], a - ld a, [hBattleTurn] - and a - ret z - ld hl, BATTLEANIMSTRUCT_01 - add hl, bc - ld a, [hl] - ld [wBattleAnimTempOAMFlags], a - bit 0, [hl] - ret z - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hli] - ld d, a - ld a, (-10 * 8) + 4 - sub d - ld [wBattleAnimTempXCoord], a - ld a, [hli] - ld d, a - ld a, [wBattleAnimTemp1] - cp $ff - jr nz, .check_kinesis_softboiled_milkdrink - ld a, 5 * 8 - add d - jr .done - -.check_kinesis_softboiled_milkdrink - sub d - push af - ld a, [FXAnimID + 1] - or a - jr nz, .no_sub - ld a, [FXAnimID] - cp KINESIS - jr z, .kinesis - cp SOFTBOILED - jr z, .softboiled - cp MILK_DRINK - jr nz, .no_sub -.kinesis -.softboiled -.milk_drink - pop af - sub 1 * 8 - jr .done - -.no_sub - pop af -.done - ld [wBattleAnimTempYCoord], a - ld a, [hli] - xor $ff - inc a - ld [wBattleAnimTempXOffset], a - ret - -; ccb31 - -GetBattleAnimTileOffset: ; ccb31 (33:4b31) - push hl - push bc - ld hl, wBattleAnimTileDict - ld b, a - ld c, 10 / 2 -.loop - ld a, [hli] - cp b - jr z, .load - inc hl - dec c - jr nz, .loop - xor a - jr .done - -.load - ld a, [hl] -.done - pop bc - pop hl - ret - -_ExecuteBGEffects: ; ccb48 - callfar ExecuteBGEffects - ret - -; ccb4f - -_QueueBGEffect: ; ccb4f (33:4b4f) - callfar QueueBGEffect - ret - -; ccb56 (33:4b56) diff --git a/engine/anims/functions.asm b/engine/anims/functions.asm deleted file mode 100755 index e5b2b16c4..000000000 --- a/engine/anims/functions.asm +++ /dev/null @@ -1,4157 +0,0 @@ -DoBattleAnimFrame: ; ccfbe - ld hl, BATTLEANIMSTRUCT_FUNCTION - add hl, bc - ld e, [hl] - ld d, 0 - ld hl, .Jumptable - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - jp hl -; ccfce - -.Jumptable: -; entries correspond to BATTLEANIMFUNC_* constants - dw BattleAnimFunction_Null ; 00 - dw BattleAnimFunction_01 ; 01 - dw BattleAnimFunction_02 ; 02 - dw BattleAnimFunction_03 ; 03 - dw BattleAnimFunction_04 ; 04 - dw BattleAnimFunction_ThrowFromPlayerToEnemy ; 05 - dw BattleAnimFunction_ThrowFromPlayerToEnemyAndDisappear ; 06 - dw BattleAnimFunction_07 ; 07 - dw BattleAnimFunction_08 ; 08 - dw BattleAnimFunction_09 ; 09 - dw BattleAnimFunction_0A ; 0a - dw BattleAnimFunction_RazorLeaf ; 0b - dw BattleAnimFunction_0C ; 0c - dw BattleAnimFunction_0D ; 0d - dw BattleAnimFunction_0E ; 0e - dw BattleAnimFunction_0F ; 0f - dw BattleAnimFunction_10 ; 10 - dw BattleAnimFunction_11 ; 11 - dw BattleAnimFunction_PokeBall ; 12 - dw BattleAnimFunction_PokeBallBlocked ; 13 - dw BattleAnimFunction_14 ; 14 - dw BattleAnimFunction_15 ; 15 - dw BattleAnimFunction_16 ; 16 - dw BattleAnimFunction_17 ; 17 - dw BattleAnimFunction_18 ; 18 - dw BattleAnimFunction_19 ; 19 - dw BattleAnimFunction_1A ; 1a - dw BattleAnimFunction_1B ; 1b - dw BattleAnimFunction_1C ; 1c - dw BattleAnimFunction_1D ; 1d - dw BattleAnimFunction_1E ; 1e - dw BattleAnimFunction_1F ; 1f - dw BattleAnimFunction_LeechSeed ; 20 - dw BattleAnimFunction_21 ; 21 - dw BattleAnimFunction_22 ; 22 - dw BattleAnimFunction_23 ; 23 - dw BattleAnimFunction_24 ; 24 - dw BattleAnimFunction_25 ; 25 - dw BattleAnimFunction_26 ; 26 - dw BattleAnimFunction_27 ; 27 - dw BattleAnimFunction_28 ; 28 - dw BattleAnimFunction_SpiralDescent ; 29 - dw BattleAnimFunction_PoisonGas ; 2a - dw BattleAnimFunction_Horn ; 2b - dw BattleAnimFunction_2C ; 2c - dw BattleAnimFunction_2D ; 2d - dw BattleAnimFunction_2E ; 2e - dw BattleAnimFunction_2F ; 2f - dw BattleAnimFunction_30 ; 30 - dw BattleAnimFunction_31 ; 31 - dw BattleAnimFunction_32 ; 32 - dw BattleAnimFunction_33 ; 33 - dw BattleAnimFunction_34 ; 34 - dw BattleAnimFunction_35 ; 35 - dw BattleAnimFunction_36 ; 36 - dw BattleAnimFunction_37 ; 37 - dw BattleAnimFunction_38 ; 38 - dw BattleAnimFunction_39 ; 39 - dw BattleAnimFunction_3A ; 3a - dw BattleAnimFunction_3B ; 3b - dw BattleAnimFunction_3C ; 3c - dw BattleAnimFunction_3D ; 3d - dw BattleAnimFunction_3E ; 3e - dw BattleAnimFunction_3F ; 3f - dw BattleAnimFunction_40 ; 40 - dw BattleAnimFunction_41 ; 41 - dw BattleAnimFunction_42 ; 42 - dw BattleAnimFunction_43 ; 43 - dw BattleAnimFunction_44 ; 44 - dw BattleAnimFunction_45 ; 45 - dw BattleAnimFunction_46 ; 46 - dw BattleAnimFunction_47 ; 47 - dw BattleAnimFunction_48 ; 48 - dw BattleAnimFunction_49 ; 49 - dw BattleAnimFunction_4A ; 4a - dw BattleAnimFunction_4B ; 4b - dw BattleAnimFunction_4C ; 4c - dw BattleAnimFunction_4D ; 4d - dw BattleAnimFunction_4E ; 4e - dw BattleAnimFunction_4F ; 4f - -BattleAnimFunction_Null: ; cd06e (33:506e) - call BattleAnim_AnonJumptable -.anon_dw - dw .zero - dw .one -.one - call DeinitBattleAnimation -.zero - ret - -BattleAnimFunction_ThrowFromPlayerToEnemyAndDisappear: ; cd079 (33:5079) - call BattleAnimFunction_ThrowFromPlayerToEnemy - ret c - call DeinitBattleAnimation - ret - -BattleAnimFunction_ThrowFromPlayerToEnemy: ; cd081 (33:5081) - ; If x coord at $88 or beyond, abort. - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - cp $88 - ret nc - ; Move right 2 pixels - add $2 - ld [hl], a - ; Move down 1 pixel - ld hl, BATTLEANIMSTRUCT_YCOORD - add hl, bc - dec [hl] - ; Decrease ??? and hold onto its previous value (argument of the sine function) - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - dec [hl] - ; Get ???, which is the amplitude of the sine function - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld d, [hl] - call BattleAnim_Sine - ; Store the result in the Y offset - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - ; Carry flag denotes success - scf - ret - -BattleAnimFunction_04: ; cd0a6 (33:50a6) - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - cp $88 - jr c, .asm_cd0b3 - call DeinitBattleAnimation - ret - -.asm_cd0b3 - add $2 - ld [hl], a - ld hl, BATTLEANIMSTRUCT_YCOORD - add hl, bc - dec [hl] - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - inc [hl] - inc [hl] - inc [hl] - inc [hl] - ld d, $10 - push af - push de - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - pop de - pop af - call BattleAnim_Cosine - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - sra a - sra a - sra a - sra a - ld [hl], a - ret - -BattleAnimFunction_03: ; cd0e3 (33:50e3) - call BattleAnim_AnonJumptable -.anon_dw - dw .zero - dw .one -.zero - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - bit 7, [hl] - ld a, $0 - jr z, .asm_cd0f9 - ld a, $20 -.asm_cd0f9 - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - and $7f - ld [hl], a -.one - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld d, [hl] - push af - push de - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - pop de - pop af - call BattleAnim_Cosine - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - inc [hl] - ret - -BattleAnimFunction_01: ; cd12a (33:512a) - call BattleAnim_AnonJumptable -.anon_dw - dw .zero - dw .one -.one - call DeinitBattleAnimation - ret - -.zero - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - cp $84 - ret nc - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - call Functionce70a - ret - -BattleAnimFunction_02: ; cd146 (33:5146) - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - cp $84 - jr nc, .asm_cd158 - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - call Functionce70a - ret - -.asm_cd158 - call DeinitBattleAnimation - ret - -BattleAnimFunction_PokeBall: ; cd15c (33:515c) - call BattleAnim_AnonJumptable -.anon_dw - dw .zero - dw .one - dw .two - dw .three - dw .four - dw .five - dw .six - dw .seven - dw .eight - dw .nine - dw .ten - dw .eleven -.zero ; init - call GetBallAnimPal - call BattleAnim_IncAnonJumptableIndex - ret - -.one - call BattleAnimFunction_ThrowFromPlayerToEnemy - ret c - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld a, [hl] - ld hl, BATTLEANIMSTRUCT_YCOORD - add hl, bc - add [hl] - ld [hl], a - ld a, BATTLEANIMFRAMESET_0B - call ReinitBattleAnimFrameset - call BattleAnim_IncAnonJumptableIndex - ret - -.three - call BattleAnim_IncAnonJumptableIndex - ld a, BATTLEANIMFRAMESET_09 - call ReinitBattleAnimFrameset - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], $0 - inc hl - ld [hl], $10 -.four - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hli] - ld d, [hl] - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - dec a - ld [hl], a - and $1f - ret nz - ld [hl], a - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld a, [hl] - sub $4 - ld [hl], a - ret nz - ld a, BATTLEANIMFRAMESET_0C - call ReinitBattleAnimFrameset - call BattleAnim_IncAnonJumptableIndex - ret - -.six - ld a, BATTLEANIMFRAMESET_0D - call ReinitBattleAnimFrameset - ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX - add hl, bc - dec [hl] -.two -.five -.nine - ret - -.seven - call GetBallAnimPal - ld a, BATTLEANIMFRAMESET_0A - call ReinitBattleAnimFrameset - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld [hl], $20 -.eight -.ten - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hli] - ld d, [hl] - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - dec a - ld [hl], a - and $1f - jr z, .eleven - and $f - ret nz - call BattleAnim_IncAnonJumptableIndex - ret - -.eleven - call DeinitBattleAnimation - ret - -BattleAnimFunction_PokeBallBlocked: ; cd212 (33:5212) - call BattleAnim_AnonJumptable -.anon_dw - dw .zero - dw .one - dw .two -.zero - call GetBallAnimPal - call BattleAnim_IncAnonJumptableIndex - ret - -.one - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - cp $70 - jr nc, .next - call BattleAnimFunction_ThrowFromPlayerToEnemy - ret - -.next - call BattleAnim_IncAnonJumptableIndex -.two - ld hl, BATTLEANIMSTRUCT_YCOORD - add hl, bc - ld a, [hl] - cp $80 - jr nc, .done - add $4 - ld [hl], a - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - dec [hl] - dec [hl] - ret - -.done - call DeinitBattleAnimation - ret - -GetBallAnimPal: ; cd249 (33:5249) - ld hl, BallColors - ld a, [rSVBK] - push af - ld a, $1 - ld [rSVBK], a - ld a, [CurItem] ; CurItem - ld e, a - pop af - ld [rSVBK], a -.IsInArray: - ld a, [hli] - cp -1 - jr z, .load - cp e - jr z, .load - inc hl - jr .IsInArray - -.load - ld a, [hl] - ld hl, BATTLEANIMSTRUCT_PALETTE - add hl, bc - ld [hl], a - ret -; cd26c (33:526c) - -INCLUDE "data/anims/ball_colors.asm" - -BattleAnimFunction_10: ; cd284 (33:5284) - call BattleAnim_AnonJumptable -.anon_dw - dw .zero - dw .one - dw .two - dw .three - dw .four -.zero - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - swap a - and $f - ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX - add hl, bc - ld [hl], a - ret - -.one - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - cp $88 - ret nc - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - call Functionce70a - ret - -.two - call DeinitBattleAnimation - ret - -.three - call BattleAnim_IncAnonJumptableIndex - ld a, BATTLEANIMFRAMESET_0F - call ReinitBattleAnimFrameset -.four - ret - -BattleAnimFunction_07: ; cd2be (33:52be) - call BattleAnim_AnonJumptable -.anon_dw - dw .zero - dw .one -.zero - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], $30 - inc hl - ld [hl], $48 -.one - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hli] - ld d, [hl] - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - inc [hl] - ld a, [hl] - and $3f - ret nz - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], $20 - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld a, [hl] - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - sub [hl] - jr z, .done - jr c, .done - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld [hl], a - ret - -.done - call DeinitBattleAnimation - ret - -BattleAnimFunction_08: ; cd306 (33:5306) - call BattleAnim_AnonJumptable -.anon_dw - dw .zero - dw .one - dw .two - dw .three -.zero - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - cp $80 - jr nc, .next - call .SetCoords - ret - -.next - call BattleAnim_IncAnonJumptableIndex -.one - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], $0 -.two - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - cp $40 - jr nc, .loop_back - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - ld d, $18 - call BattleAnim_Cosine - sub $18 - sra a - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - ld d, $18 - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - and $f - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - add [hl] - ld [hl], a - ret - -.loop_back - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - and $f0 - jr z, .finish - sub $10 - ld d, a - ld a, [hl] - and $f - or d - ld [hl], a - ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX - add hl, bc - dec [hl] - ret - -.finish - call BattleAnim_IncAnonJumptableIndex -.three - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - cp $b0 - jr c, .retain - call DeinitBattleAnimation - ret - -.retain - call .SetCoords - ret - -.SetCoords: - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - and $f - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - add [hl] - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - and $f - ld e, a - srl e - ld hl, BATTLEANIMSTRUCT_YCOORD - add hl, bc -.loop - dec [hl] - dec e - jr nz, .loop - ret - -BattleAnimFunction_09: ; cd3ae (33:53ae) - call BattleAnim_AnonJumptable -.anon_dw - dw .zero - dw .one - dw .two -.zero - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], $0 - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - and $f - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld [hl], a -.one - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - and a - jr z, .done_one - dec [hl] - ret - -.done_one - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - swap a - and $f - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld a, [hl] - xor $ff - inc a - ld [hl], a - ret - -.two - call DeinitBattleAnimation - ret - -BattleAnimFunction_0A: ; cd3f2 (33:53f2) - call BattleAnim_AnonJumptable -.anon_dw - dw .zero - dw .one - dw .two - dw .three - dw .four - dw .five - dw .six - dw .seven - dw .eight - dw .nine -.zero - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX - add hl, bc - ld [hl], a - cp $7 - jr z, .seven - ld a, BATTLEANIMFRAMESET_11 - call ReinitBattleAnimFrameset - ret - -.seven - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - cp $88 - jr nc, .set_up_eight - add $2 - ld [hl], a - ld hl, BATTLEANIMSTRUCT_YCOORD - add hl, bc - dec [hl] - ret - -.set_up_eight - call BattleAnim_IncAnonJumptableIndex - ld a, BATTLEANIMFRAMESET_10 - call ReinitBattleAnimFrameset -.eight - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - ld d, $10 - push af - push de - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - pop de - pop af - call BattleAnim_Cosine - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - inc [hl] - ret - -.nine - call DeinitBattleAnimation - ret - -.one - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - dec [hl] - ret - -.four - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - inc [hl] -.two - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - dec [hl] - ret - -.five - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - inc [hl] -.three - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - inc [hl] -.six - ret - -BattleAnimFunction_RazorLeaf: ; cd478 (33:5478) - call BattleAnim_AnonJumptable -.anon_dw - dw .zero - dw .one - dw .two - dw .three - dw .four - dw .five - dw .six - dw .seven - dw .eight -.zero - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], $40 -.one - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - cp $30 - jr nc, .sine_cosine - call BattleAnim_IncAnonJumptableIndex - xor a - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hli], a - ld [hl], a - ld a, BATTLEANIMFRAMESET_17 - call ReinitBattleAnimFrameset - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - bit 6, [hl] - ret z - ld hl, BATTLEANIMSTRUCT_FRAME - add hl, bc - ld [hl], $5 - ret - -.sine_cosine - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - and $3f - ld d, a - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - dec [hl] - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - call Functioncd557 - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld a, [hl] - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld h, [hl] - ld l, a - add hl, de - ld e, l - ld d, h - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld [hl], d - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld [hl], e - ret - -.two - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld a, [hl] - cp $20 - jr nz, .sine_cosine_2 - call DeinitBattleAnimation - ret - -.sine_cosine_2 - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - ld d, $10 - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - bit 6, [hl] - jr nz, .decrease - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - inc [hl] - jr .finish - -.decrease - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - dec [hl] -.finish - ld de, $80 - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld a, [hl] - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld h, [hl] - ld l, a - add hl, de - ld e, l - ld d, h - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], d - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld [hl], e - ret - -.three - ld a, BATTLEANIMFRAMESET_16 - call ReinitBattleAnimFrameset - ld hl, BATTLEANIMSTRUCT_01 - add hl, bc - res 5, [hl] -.four -.five -.six -.seven - call BattleAnim_IncAnonJumptableIndex - ret - -.eight - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - cp $c0 - ret nc - ld a, $8 - call Functionce70a - ret - -Functioncd557: ; cd557 (33:5557) - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - bit 7, a - jr nz, .negative - cp $20 - jr nc, .plus_256 - cp $18 - jr nc, .plus_384 - ld de, $200 - ret - -.plus_384 - ld de, $180 - ret - -.plus_256 - ld de, $100 - ret - -.negative - and $3f - cp $20 - jr nc, .minus_256 - cp $18 - jr nc, .minus_384 - ld de, -$200 - ret - -.minus_384 - ld de, -$180 - ret - -.minus_256 - ld de, -$100 - ret - -BattleAnimFunction_4E: ; cd58a (33:558a) - call BattleAnim_AnonJumptable -.anon_dw - dw .zero - dw .one -.zero - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - and $40 - rlca - rlca - add $19 - ld hl, BATTLEANIMSTRUCT_FRAMESET_ID - add hl, bc - ld [hl], a - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], $40 -.one - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - cp $30 - jr nc, .sine_cosine - call DeinitBattleAnimation - ret - -.sine_cosine - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - and $3f - ld d, a - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - dec [hl] - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - call Functioncd557 - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld a, [hl] - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld h, [hl] - ld l, a - add hl, de - ld e, l - ld d, h - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld [hl], d - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld [hl], e - ret - -BattleAnimFunction_0C: ; cd5e9 (33:55e9) - call BattleAnim_AnonJumptable -.anon_dw - dw .zero - dw .one - dw .two -.zero - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], $c -.one - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - and a - jr z, .next - dec [hl] - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - call Functionce70a - ret - -.next - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], $0 - ld a, BATTLEANIMFRAMESET_22 - call ReinitBattleAnimFrameset -.two - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - cp $98 - jr nc, .okay - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld h, [hl] - ld l, a - ld de, $60 - add hl, de - ld e, l - ld d, h - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], e - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld [hl], d -.okay - ld hl, BATTLEANIMSTRUCT_YCOORD - add hl, bc - ld a, [hl] - cp $20 - ret c - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - and $f0 - ld e, a - ld d, $ff - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld a, [hl] - ld hl, BATTLEANIMSTRUCT_YCOORD - add hl, bc - ld h, [hl] - ld l, a - add hl, de - ld e, l - ld d, h - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld [hl], e - ld hl, BATTLEANIMSTRUCT_YCOORD - add hl, bc - ld [hl], d - ret - -BattleAnimFunction_0D: ; cd66a (33:566a) - call BattleAnim_AnonJumptable -.anon_dw - dw .zero - dw .one - dw .two - dw .three - dw .four -.zero - call BattleAnim_IncAnonJumptableIndex - ld a, rSCY - $ff00 - ld [hLCDCPointer], a - ld a, $58 - ld [hLYOverrideStart], a - ld a, $5e - ld [hLYOverrideEnd], a - ret - -.one - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld e, [hl] - ld hl, BATTLEANIMSTRUCT_YCOORD - add hl, bc - ld a, [hl] - cp e - jr nc, .asm_cd69b - call BattleAnim_IncAnonJumptableIndex - xor a - ld [hLYOverrideStart], a - ret - -.asm_cd69b - dec a - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - ld d, $10 - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_YCOORD - add hl, bc - add [hl] - sub $10 - ret c - ld [hLYOverrideStart], a - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld a, [hl] - inc a - and $7 - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - inc [hl] - inc [hl] -.two - ret - -.three - ld hl, BATTLEANIMSTRUCT_YCOORD - add hl, bc - ld a, [hl] - cp $70 - jr c, asm_cd6da - xor a - ld [hLCDCPointer], a - ld [hLYOverrideStart], a - ld [hLYOverrideEnd], a -.four - call DeinitBattleAnimation - ret - -asm_cd6da: ; cd6da (33:56da) - inc a - inc a - ld [hl], a - sub $10 - ret c - ld [hLYOverrideStart], a - ret - -BattleAnimFunction_0E: ; cd6e3 (33:56e3) - call BattleAnim_AnonJumptable -.anon_dw - dw Functioncd6ea - dw Functioncd6f7 -Functioncd6ea: ; cd6ea (33:56ea) - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, BATTLEANIMFRAMESET_24 - add [hl] ; offset - call ReinitBattleAnimFrameset -Functioncd6f7: ; cd6f7 (33:56f7) - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - cp $b8 - jr c, .asm_cd704 - call DeinitBattleAnimation - ret - -.asm_cd704 - ld a, $2 - call Functionce70a - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - dec [hl] - ld d, $8 - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - ret - -BattleAnimFunction_0F: ; cd71a (33:571a) - call BattleAnim_AnonJumptable -.anon_dw - dw Functioncd725 - dw Functioncd728 - dw Functioncd763 - dw Functioncd776 -Functioncd725: ; cd725 (33:5725) - call BattleAnim_IncAnonJumptableIndex -Functioncd728: ; cd728 (33:5728) - ld hl, BATTLEANIMSTRUCT_YCOORD - add hl, bc - ld a, [hl] - cp $30 - jr c, .asm_cd747 - ld a, $2 - call Functionce70a - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - dec [hl] - ld d, $8 - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - ret - -.asm_cd747 - call BattleAnim_IncAnonJumptableIndex - ld a, BATTLEANIMFRAMESET_28 - call ReinitBattleAnimFrameset - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], $0 - ld hl, BATTLEANIMSTRUCT_YCOORD - add hl, bc - ld [hl], $30 - ld hl, BATTLEANIMSTRUCT_01 - add hl, bc - ld a, [hl] - and $1 - ld [hl], a -Functioncd763: ; cd763 (33:5763) - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld a, [hl] - cp $18 - jr nc, .asm_cd76e - inc [hl] - ret - -.asm_cd76e - call BattleAnim_IncAnonJumptableIndex - ld a, BATTLEANIMFRAMESET_29 - call ReinitBattleAnimFrameset -Functioncd776: ; cd776 (33:5776) - ret - -BattleAnimFunction_11: ; cd777 (33:5777) - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld a, [hl] - cp $38 - jr c, .asm_cd784 - call DeinitBattleAnimation - ret - -.asm_cd784 - ld a, [hl] - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld l, [hl] - ld h, a - ld de, $80 - add hl, de - ld e, l - ld d, h - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], e - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], d - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld a, [hl] - xor $10 - ld [hl], a - ret - -BattleAnimFunction_14: ; cd7a4 (33:57a4) - call BattleAnim_AnonJumptable -.anon_dw - dw Functioncd7ab - dw Functioncd7d2 -Functioncd7ab: ; cd7ab (33:57ab) - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - and $f0 - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - and $f - sla a - sla a - sla a - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld [hl], $1 -Functioncd7d2: ; cd7d2 (33:57d2) - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld a, [hl] - and a - jr nz, .asm_cd7de - call DeinitBattleAnimation - ret - -.asm_cd7de - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - inc [hl] - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld d, [hl] - push af - push de - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - pop de - pop af - call BattleAnim_Cosine - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - xor $1 - ld [hl], a - ret z - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - dec [hl] - ret - -BattleAnimFunction_15: ; cd80c (33:580c) - call BattleAnim_AnonJumptable -.anon_dw - dw Functioncd81f - dw Functioncd817 - dw Functioncd81f - dw Functioncd820 -Functioncd817: ; cd817 (33:5817) - call BattleAnim_IncAnonJumptableIndex - ld a, BATTLEANIMFRAMESET_35 - call ReinitBattleAnimFrameset -Functioncd81f: ; cd81f (33:581f) - ret - -Functioncd820: ; cd820 (33:5820) - call DeinitBattleAnimation - ret - -BattleAnimFunction_16: ; cd824 (33:5824) - call BattleAnim_AnonJumptable -.anon_dw - dw Functioncd835 - dw Functioncd860 - dw Functioncd88f - dw Functioncd88f - dw Functioncd88f - dw Functioncd88f - dw Functioncd893 -Functioncd835: ; cd835 (33:5835) - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_FRAMESET_ID - add hl, bc - ld a, [hl] - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - bit 7, [hl] - jr nz, .asm_cd852 - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], $10 - jr .asm_cd858 - -.asm_cd852 - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], $30 -.asm_cd858 - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - and $7f - ld [hl], a -Functioncd860: ; cd860 (33:5860) - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld d, [hl] - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld [hl], a - bit 7, a - jr nz, .load_no_inc - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld a, [hl] - inc a - jr .reinit - -.load_no_inc - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld a, [hl] -.reinit - call ReinitBattleAnimFrameset - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - inc [hl] - ld a, [hl] - and $1f - ret nz -Functioncd88f: ; cd88f (33:588f) - call BattleAnim_IncAnonJumptableIndex - ret - -Functioncd893: ; cd893 (33:5893) - ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX - add hl, bc - ld [hl], $1 - ret - -BattleAnimFunction_17: ; cd89a (33:589a) - call BattleAnim_AnonJumptable -.anon_dw - dw Functioncd8ab - dw Functioncd8cc - dw Functioncd8f5 - dw Functioncd8f5 - dw Functioncd8f5 - dw Functioncd8f5 - dw Functioncd8f9 -Functioncd8ab: ; cd8ab (33:58ab) - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - bit 7, [hl] - jr nz, .asm_cd8be - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], $10 - jr .asm_cd8c4 - -.asm_cd8be - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], $30 -.asm_cd8c4 - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - and $7f - ld [hl], a -Functioncd8cc: ; cd8cc (33:58cc) - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld d, [hl] - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - bit 7, a - jr nz, .asm_cd8e6 - ld a, $3d - jr .asm_cd8e8 - -.asm_cd8e6 - ld a, $3c -.asm_cd8e8 - call ReinitBattleAnimFrameset - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - inc [hl] - inc [hl] - ld a, [hl] - and $1f - ret nz -Functioncd8f5: ; cd8f5 (33:58f5) - call BattleAnim_IncAnonJumptableIndex - ret - -Functioncd8f9: ; cd8f9 (33:58f9) - ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX - add hl, bc - ld [hl], $1 - ret - -BattleAnimFunction_18: ; cd900 (33:5900) - call BattleAnim_AnonJumptable -.anon_dw - dw Functioncd907 - dw Functioncd913 -Functioncd907: ; cd907 (33:5907) - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], $28 - inc hl - ld [hl], $0 -Functioncd913: ; cd913 (33:5913) - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld d, [hl] - push af - push de - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - pop de - pop af - call BattleAnim_Cosine - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - and a - jr z, .asm_cd950 - ld d, a - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld e, [hl] - ld hl, hPushOAM ; $ff80 - add hl, de - ld e, l - ld d, h - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld [hl], e - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], d - ret - -.asm_cd950 - call DeinitBattleAnimation - ret - -BattleAnimFunction_19: ; cd954 (33:5954) - call BattleAnim_AnonJumptable -.anon_dw - dw Functioncd961 - dw Functioncd96a - dw Functioncd96e - dw Functioncd96a - dw Functioncd97b -Functioncd961: ; cd961 (33:5961) - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld [hl], $0 -Functioncd96a: ; cd96a (33:596a) - call Functioncd99a - ret - -Functioncd96e: ; cd96e (33:596e) - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - cp $88 - jr c, asm_cd988 - call BattleAnim_IncAnonJumptableIndex - ret - -Functioncd97b: ; cd97b (33:597b) - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - cp $b8 - jr c, asm_cd988 - call DeinitBattleAnimation - ret - -asm_cd988: ; cd988 (33:5988) - call Functioncd99a - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - inc [hl] - ld a, [hl] - and $1 - ret nz - ld hl, BATTLEANIMSTRUCT_YCOORD - add hl, bc - dec [hl] - ret - -Functioncd99a: ; cd99a (33:599a) - call Functioncd9f4 - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - push af - push de - call BattleAnim_Sine - sra a - sra a - sra a - sra a - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - add [hl] - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - pop de - pop af - call BattleAnim_Cosine - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - sub $8 - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - and a - jr z, .asm_cd9d7 - cp $c2 - jr c, .asm_cd9e2 -.asm_cd9d7 - dec a - ld [hl], a - and $7 - ret nz - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - inc [hl] - ret - -.asm_cd9e2 - xor a - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld [hli], a - ld [hl], a - ret - -Functioncd9f4: ; cd9f4 (33:59f4) - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld e, [hl] - ld d, 0 - ld hl, Unknown_cda01 - add hl, de - ld d, [hl] - ret - -; cda01 (33:5a01) -Unknown_cda01: ; cda01 - db 8, 6, 5, 4, 5, 6, 8, 12, 16 -; cda0a -BattleAnimFunction_1C: ; cda0a (33:5a0a) - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - cp $30 - jr nc, .asm_cda17 - call DeinitBattleAnimation - ret - -.asm_cda17 - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - and $f - ld e, a - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - sub e - ld [hl], a - srl e - ld hl, BATTLEANIMSTRUCT_YCOORD - add hl, bc -.asm_cda2c - inc [hl] - dec e - jr nz, .asm_cda2c - ret - -BattleAnimFunction_1F: ; cda31 (33:5a31) - call BattleAnim_AnonJumptable -.anon_dw - dw Functioncda4c - dw Functioncda3a - dw Functioncda4c -Functioncda3a: ; cda3a (33:5a3a) - ld hl, BATTLEANIMSTRUCT_FRAMESET_ID - add hl, bc - ld a, [hl] - inc a - call ReinitBattleAnimFrameset - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], $8 -Functioncda4c: ; cda4c (33:5a4c) - ret - -BattleAnimFunction_LeechSeed: ; cda4d (33:5a4d) - call BattleAnim_AnonJumptable -.anon_dw - dw .zero - dw .one - dw .two - dw .three -.zero: ; cda58 (33:5a58) - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld [hl], $40 - ret - -.one: ; cda62 (33:5a62) - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld a, [hl] - cp $20 - jr c, .sprout - call Functioncda8d - ret - -.sprout - ld [hl], $40 - ld a, BATTLEANIMFRAMESET_57 - call ReinitBattleAnimFrameset - call BattleAnim_IncAnonJumptableIndex - ret - -.two: ; cda7a (33:5a7a) - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld a, [hl] - and a - jr z, .flutter - dec [hl] - ret - -.flutter - call BattleAnim_IncAnonJumptableIndex - ld a, BATTLEANIMFRAMESET_58 - call ReinitBattleAnimFrameset -.three: ; cda8c (33:5a8c) - ret - -Functioncda8d: ; cda8d (33:5a8d) - dec [hl] - ld d, $20 - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_02 - add hl, bc - ld a, [hl] - add $2 - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld e, [hl] - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld d, [hl] - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld h, [hl] - ld a, h - and $f - swap a - ld l, a - ld a, h - and $f0 - swap a - ld h, a - add hl, de - ld e, l - ld d, h - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], e - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld [hl], d - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld a, [hl] - and $1 - ret nz - ld hl, BATTLEANIMSTRUCT_YCOORD - add hl, bc - dec [hl] - ret - -BattleAnimFunction_3F: ; cdad6 (33:5ad6) - call BattleAnim_AnonJumptable -.anon_dw - dw Functioncdadf - dw Functioncdae9 - dw Functioncdaf9 -Functioncdadf: ; cdadf (33:5adf) - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld [hl], $40 - ret - -Functioncdae9: ; cdae9 (33:5ae9) - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld a, [hl] - cp $20 - jr c, .asm_cdaf6 - call Functioncda8d - ret - -.asm_cdaf6 - call BattleAnim_IncAnonJumptableIndex -Functioncdaf9: ; cdaf9 (33:5af9) - ret - -BattleAnimFunction_1A: ; cdafa (33:5afa) - call BattleAnimFunction_03 - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - add $f - ld [hl], a - ret - -BattleAnimFunction_1B: ; cdb06 (33:5b06) - call BattleAnim_AnonJumptable -.anon_dw - dw Functioncdb13 - dw Functioncdb14 - dw Functioncdb28 - dw Functioncdb50 - dw Functioncdb65 -Functioncdb13: ; cdb13 (33:5b13) - ret - -Functioncdb14: ; cdb14 (33:5b14) - ld hl, BATTLEANIMSTRUCT_YCOORD - add hl, bc - ld a, [hl] - cp $30 - jr c, .asm_cdb24 - ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX - add hl, bc - ld [hl], $0 - ret - -.asm_cdb24 - add $4 - ld [hl], a - ret - -Functioncdb28: ; cdb28 (33:5b28) - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - cp $98 - ret nc - inc [hl] - inc [hl] - ld hl, BATTLEANIMSTRUCT_01 - add hl, bc - set 0, [hl] - ld hl, BATTLEANIMSTRUCT_02 - add hl, bc - ld [hl], $90 - ld hl, BATTLEANIMSTRUCT_FRAME - add hl, bc - ld [hl], $0 - ld hl, BATTLEANIMSTRUCT_DURATION - add hl, bc - ld [hl], $2 - ld hl, BATTLEANIMSTRUCT_YCOORD - add hl, bc - dec [hl] - ret - -Functioncdb50: ; cdb50 (33:5b50) - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], $2c - ld hl, BATTLEANIMSTRUCT_FRAME - add hl, bc - ld [hl], $0 - ld hl, BATTLEANIMSTRUCT_DURATION - add hl, bc - ld [hl], $80 -Functioncdb65: ; cdb65 (33:5b65) - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - cp $98 - ret nc - inc [hl] - inc [hl] - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - inc [hl] - ld d, $8 - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - ret - -BattleAnimFunction_1D: ; cdb80 (33:5b80) - call BattleAnim_AnonJumptable -.anon_dw - dw Functioncdb9f - dw Functioncdbb3 - dw Functioncdbcf - dw Functioncdbeb - dw Functioncdc74 - dw Functioncdc1a - dw Functioncdbc1 - dw Functioncdc1e - dw Functioncdc27 - dw Functioncdc39 - dw Functioncdc74 - dw Functioncdc48 - dw Functioncdc57 - dw Functioncdc74 -Functioncdb9f: ; cdb9f (33:5b9f) - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], $28 - inc hl - ld [hl], $10 - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX - add hl, bc - ld [hl], a - ret - -Functioncdbb3: ; cdbb3 (33:5bb3) - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - cp $40 - jr nc, .asm_cdbbd - inc [hl] -.asm_cdbbd - call Functioncdc75 - ret - -Functioncdbc1: ; cdbc1 (33:5bc1) - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - cp $4b - jr nc, .asm_cdbcb - inc [hl] -.asm_cdbcb - call Functioncdc75 - ret - -Functioncdbcf: ; cdbcf (33:5bcf) - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - cp $88 - jr nc, .asm_cdbe6 - and $f - jr nz, asm_cdbfa - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld [hl], $10 - call BattleAnim_IncAnonJumptableIndex - ret - -.asm_cdbe6 - call BattleAnim_IncAnonJumptableIndex - inc [hl] - ret - -Functioncdbeb: ; cdbeb (33:5beb) - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld a, [hl] - and a - jr z, .asm_cdbf5 - dec [hl] - ret - -.asm_cdbf5 - ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX - add hl, bc - dec [hl] -asm_cdbfa: ; cdbfa (33:5bfa) - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - inc [hl] - ld hl, BATTLEANIMSTRUCT_YCOORD - add hl, bc - ld d, [hl] - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld e, [hl] - ld hl, hPushOAM ; $ff80 - add hl, de - ld e, l - ld d, h - ld hl, BATTLEANIMSTRUCT_YCOORD - add hl, bc - ld [hl], d - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], e - ret - -Functioncdc1a: ; cdc1a (33:5c1a) - call DeinitBattleAnimation - ret - -Functioncdc1e: ; cdc1e (33:5c1e) - ld a, BATTLEANIMFRAMESET_4E - call ReinitBattleAnimFrameset - call BattleAnim_IncAnonJumptableIndex - ret - -Functioncdc27: ; cdc27 (33:5c27) - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - inc [hl] - inc [hl] - ld d, $2 - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld [hl], a - ret - -Functioncdc39: ; cdc39 (33:5c39) - ld a, BATTLEANIMFRAMESET_50 - call ReinitBattleAnimFrameset - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], $4 - call BattleAnim_IncAnonJumptableIndex - ret - -Functioncdc48: ; cdc48 (33:5c48) - ld a, BATTLEANIMFRAMESET_4F - call ReinitBattleAnimFrameset - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], $40 - ret - -Functioncdc57: ; cdc57 (33:5c57) - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - ld d, $20 - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - cp $30 - jr c, .asm_cdc71 - dec [hl] - ret - -.asm_cdc71 - call BattleAnim_IncAnonJumptableIndex -Functioncdc74: ; cdc74 (33:5c74) - ret - -Functioncdc75: ; cdc75 (33:5c75) - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hli] - ld d, [hl] - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - inc [hl] - ld a, [hl] - and $3f - ret nz - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], $20 - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld a, [hl] - sub $8 - ld [hl], a - ret nz - xor a - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hli], a - ld [hl], a - call BattleAnim_IncAnonJumptableIndex - ret - -BattleAnimFunction_1E: ; cdca6 (33:5ca6) - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld a, [hl] - and a - jr z, .asm_cdcb6 - cp $d8 - jr nc, .asm_cdcb6 - call DeinitBattleAnimation - ret - -.asm_cdcb6 - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld d, [hl] - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld a, [hl] - sub d - ld [hl], a - ret - -BattleAnimFunction_21: ; cdcc3 (33:5cc3) - call BattleAnim_AnonJumptable -.anon_dw - dw Functioncdcca - dw Functioncdced -Functioncdcca: ; cdcca (33:5cca) - ld a, [hBattleTurn] - and a - jr z, .asm_cdcd9 - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - xor $ff - add $3 - ld [hl], a -.asm_cdcd9 - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], $8 - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, BATTLEANIMFRAMESET_59 - add [hl] - call ReinitBattleAnimFrameset - ret - -Functioncdced: ; cdced (33:5ced) - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - and a - jr z, .asm_cdcfa - dec [hl] - call Functioncdcfe - ret - -.asm_cdcfa - call DeinitBattleAnimation - ret - -Functioncdcfe: ; cdcfe (33:5cfe) - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld a, [hl] - inc [hl] - inc [hl] - ld d, $10 - call BattleAnim_Sine - ld d, a - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - and a - jr z, .asm_cdd20 - dec a - ret z - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], d - ret - -.asm_cdd20 - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld a, d - xor $ff - inc a - ld [hl], a - ret - -BattleAnimFunction_22: ; cdd2a (33:5d2a) - call BattleAnim_AnonJumptable -.anon_dw - dw Functioncdd31 - dw Functioncdd4f -Functioncdd31: ; cdd31 (33:5d31) - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - and $3f - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - and $80 - rlca - ld [hl], a - add BATTLEANIMFRAMESET_5D - call ReinitBattleAnimFrameset - ret - -Functioncdd4f: ; cdd4f (33:5d4f) - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - swap a - ld d, a - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld a, [hl] - inc [hl] - push af - push de - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - pop de - pop af - call BattleAnim_Cosine - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - cp $80 - ret nc - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld a, [hl] - and $3 - jr nz, .asm_cdd87 - ld hl, BATTLEANIMSTRUCT_YCOORD - add hl, bc - dec [hl] -.asm_cdd87 - and $1 - ret nz - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - inc [hl] - ret - -BattleAnimFunction_23: ; cdd90 (33:5d90) - call BattleAnim_AnonJumptable -.anon_dw - dw Functioncdd97 - dw Functioncddbc -Functioncdd97: ; cdd97 (33:5d97) - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_FRAMESET_ID - add hl, bc - ld a, [hl] - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - and $80 - rlca - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - add [hl] - call ReinitBattleAnimFrameset - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - and $7f - ld [hl], a -Functioncddbc: ; cddbc (33:5dbc) - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - ld d, $10 - push af - push de - call BattleAnim_Sine - sra a - sra a - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - pop de - pop af - call BattleAnim_Cosine - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - inc [hl] - and $3f - jr z, .asm_cddf0 - and $1f - ret nz - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - inc a - jr .asm_cddf5 - -.asm_cddf0 - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] -.asm_cddf5 - call ReinitBattleAnimFrameset - ret - -BattleAnimFunction_24: ; cddf9 (33:5df9) - call BattleAnim_AnonJumptable -.anon_dw - dw Functioncde02 - dw Functioncde20 - dw Functioncde21 -Functioncde02: ; cde02 (33:5e02) - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - add BATTLEANIMFRAMESET_63 - call ReinitBattleAnimFrameset - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld e, [hl] - ld d, 0 - ld hl, Unknown_cde25 - add hl, de - ld a, [hl] - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a -Functioncde20: ; cde20 (33:5e20) - ret - -Functioncde21: ; cde21 (33:5e21) - call DeinitBattleAnimation - ret - -; cde25 (33:5e25) -Unknown_cde25: ; cde25 - db $ec, $f8, $00 -; cde28 -BattleAnimFunction_25: ; cde28 (33:5e28) - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - inc [hl] - inc [hl] - ld d, $4 - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld d, [hl] - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld e, [hl] - ld hl, $ffa0 - add hl, de - ld e, l - ld d, h - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], d - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld [hl], e - ret - -BattleAnimFunction_26: ; cde54 (33:5e54) - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - dec [hl] - dec [hl] - ld d, $10 - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - inc [hl] - ret - -BattleAnimFunction_27: ; cde6b (33:5e6b) - call BattleAnim_AnonJumptable -.anon_dw - dw Functioncde72 - dw Functioncde88 -Functioncde72: ; cde72 (33:5e72) - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - and a - jr nz, .asm_cde83 - ld hl, BATTLEANIMSTRUCT_01 - add hl, bc - set 6, [hl] -.asm_cde83 - add BATTLEANIMFRAMESET_6A - call ReinitBattleAnimFrameset -Functioncde88: ; cde88 (33:5e88) - ret - -BattleAnimFunction_28: ; cde89 (33:5e89) - call BattleAnim_AnonJumptable -.anon_dw - dw Functioncde90 - dw Functioncdebf -Functioncde90: ; cde90 (33:5e90) - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], $0 - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld e, [hl] - ld a, e - and $70 - swap a - ld [hl], a - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld a, e - and $80 - jr nz, .asm_cdeb2 - ld a, e - and $f - ld [hl], a - ret - -.asm_cdeb2 - ld a, e - and $f - xor $ff - inc a - ld [hl], a - ld a, BATTLEANIMFRAMESET_6E - call ReinitBattleAnimFrameset - ret - -Functioncdebf: ; cdebf (33:5ebf) - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - and a - jr z, .asm_cdec9 - dec [hl] - ret - -.asm_cdec9 - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld a, [hl] - xor $ff - inc a - ld [hl], a - ret - -BattleAnimFunction_SpiralDescent: ; cdedd (33:5edd) - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - ld d, $18 - push af - push de - call BattleAnim_Sine - sra a - sra a - sra a - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - add [hl] - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - pop de - pop af - call BattleAnim_Cosine - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - inc [hl] - ld a, [hl] - and $7 - ret nz - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld a, [hl] - cp $28 - jr nc, .delete - inc [hl] - ret - -.delete - call DeinitBattleAnimation - ret - -BattleAnimFunction_2D: ; cdf1b (33:5f1b) - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - ld d, $18 - push af - push de - call BattleAnim_Sine - sra a - sra a - sra a - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - add [hl] - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - pop de - pop af - call BattleAnim_Cosine - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - inc [hl] - ld a, [hl] - and $3 - ret nz - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld a, [hl] - cp $28 - jr nc, .asm_cdf55 - inc [hl] - ret - -.asm_cdf55 - call DeinitBattleAnimation - ret - -BattleAnimFunction_PoisonGas: ; cdf59 (33:5f59) - call BattleAnim_AnonJumptable -.anon_dw - dw Functioncdf60 - dw BattleAnimFunction_SpiralDescent -Functioncdf60: ; cdf60 (33:5f60) - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - cp $84 - jr nc, .next - inc [hl] - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - inc [hl] - ld d, $18 - call BattleAnim_Cosine - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - and $1 - ret nz - ld hl, BATTLEANIMSTRUCT_YCOORD - add hl, bc - dec [hl] - ret - -.next - call BattleAnim_IncAnonJumptableIndex - ret - -BattleAnimFunction_34: ; cdf8c (33:5f8c) - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - ld d, $18 - push af - push de - call BattleAnim_Sine - sra a - sra a - sra a - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - add [hl] - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - pop de - pop af - call BattleAnim_Cosine - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - inc [hl] - inc [hl] - ld a, [hl] - and $7 - ret nz - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld a, [hl] - cp $e8 - jr z, .asm_cdfc7 - dec [hl] - ret - -.asm_cdfc7 - call DeinitBattleAnimation - ret - -BattleAnimFunction_3C: ; cdfcb (33:5fcb) - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - ld d, $18 - push af - push de - call BattleAnim_Sine - sra a - sra a - sra a - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - add [hl] - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - pop de - pop af - call BattleAnim_Cosine - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - inc [hl] - inc [hl] - ld a, [hl] - and $3 - ret nz - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld a, [hl] - cp $d0 - jr z, .asm_ce007 - dec [hl] - dec [hl] - ret - -.asm_ce007 - call DeinitBattleAnimation - ret - -BattleAnimFunction_35: ; ce00b (33:600b) - call BattleAnim_AnonJumptable -.anon_dw - dw Functionce014 - dw Functionce023 - dw Functionce05f -Functionce014: ; ce014 (33:6014) - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], $34 - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld [hl], $10 -Functionce023: ; ce023 (33:6023) - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - cp $6c - jr c, .asm_ce02d - ret - -.asm_ce02d - ld a, $2 - call Functionce70a - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld d, [hl] - call BattleAnim_Sine - bit 7, a - jr nz, .asm_ce046 - xor $ff - inc a -.asm_ce046 - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - sub $4 - ld [hl], a - and $1f - cp $20 - ret nz - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - srl [hl] - ret - -Functionce05f: ; ce05f (33:605f) - call DeinitBattleAnimation - ret - -BattleAnimFunction_Horn: ; ce063 (33:6063) - call BattleAnim_AnonJumptable -.anon_dw - dw .zero - dw .one - dw .two - dw Functionce09e -.zero: ; ce06e (33:606e) - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_YCOORD - add hl, bc - ld a, [hl] - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], a - ret - -.one: ; ce083 (33:6083) - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - cp $58 - ret nc - ld a, $2 - call Functionce70a - ret - -.two: ; ce091 (33:6091) - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld a, [hl] - cp $20 - jr c, Functionce09e - call DeinitBattleAnimation - ret - -Functionce09e: ; ce09e (33:609e) - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld a, [hl] - ld d, $8 - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld [hl], a - sra a - xor $ff - inc a - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - add [hl] - ld hl, BATTLEANIMSTRUCT_YCOORD - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld a, [hl] - add $8 - ld [hl], a - ret - -BattleAnimFunction_2C: ; ce0c5 (33:60c5) - call BattleAnim_AnonJumptable -.anon_dw - dw Functionce0ce - dw Functionce0f8 - dw Functionce0dd -Functionce0ce: ; ce0ce (33:60ce) - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - and $f0 - swap a - ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX - add hl, bc - ld [hl], a - ret - -Functionce0dd: ; ce0dd (33:60dd) - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - ld d, $10 - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - bit 7, a - jr z, .asm_ce0f0 - ld [hl], a -.asm_ce0f0 - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - sub $4 - ld [hl], a -Functionce0f8: ; ce0f8 (33:60f8) - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - cp $84 - jr c, .asm_ce105 - call DeinitBattleAnimation - ret - -.asm_ce105 - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - call Functionce70a - ret - -BattleAnimFunction_2E: ; ce10e (33:610e) - call BattleAnim_AnonJumptable -.anon_dw - dw Functionce115 - dw Functionce12a -Functionce115: ; ce115 (33:6115) - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], $28 - ld hl, BATTLEANIMSTRUCT_YCOORD - add hl, bc - ld a, [hl] - sub $28 - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld [hl], a -Functionce12a: ; ce12a (33:612a) - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hli] - ld d, [hl] - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - and [hl] - jr nz, .asm_ce149 - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - dec [hl] -.asm_ce149 - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - inc [hl] - ld a, [hl] - and $3f - ret nz - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], $20 - inc hl - srl [hl] - ret - -BattleAnimFunction_2F: ; ce15c (33:615c) - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld d, [hl] - push af - push de - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - pop de - pop af - call BattleAnim_Cosine - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - inc [hl] - ld a, [hl] - and $1 - jr nz, .asm_ce189 - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - dec [hl] -.asm_ce189 - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - and $3 - jr nz, .asm_ce197 - ld hl, BATTLEANIMSTRUCT_YCOORD - add hl, bc - inc [hl] -.asm_ce197 - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - cp $5a - jr nc, .asm_ce1aa - ld a, [hl] - and a - jr z, .asm_ce1ac - dec [hl] - ret - -.asm_ce1aa - inc [hl] - ret - -.asm_ce1ac - call DeinitBattleAnimation - ret - -BattleAnimFunction_42: ; ce1b0 (33:61b0) - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - inc [hl] - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld d, [hl] - push af - push de - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - pop de - pop af - call BattleAnim_Cosine - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld a, [hl] - inc [hl] - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - cp $40 - jr nc, .asm_ce1df - inc [hl] - ret - -.asm_ce1df - ld a, [hl] - dec [hl] - and a - ret nz - call DeinitBattleAnimation - ret - -BattleAnimFunction_30: ; ce1e7 (33:61e7) - call BattleAnim_AnonJumptable -.anon_dw - dw Functionce1ee - dw Functionce1fb -Functionce1ee: ; ce1ee (33:61ee) - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_YCOORD - add hl, bc - ld a, [hl] - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld [hl], a -Functionce1fb: ; ce1fb (33:61fb) - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - ld d, $30 - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - add [hl] - ld hl, BATTLEANIMSTRUCT_YCOORD - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - add $8 - ld d, $30 - call BattleAnim_Cosine - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - inc [hl] - ret - -BattleAnimFunction_31: ; ce226 (33:6226) - call BattleAnim_AnonJumptable -.anon_dw - dw Functionce22d - dw Functionce254 -Functionce22d: ; ce22d (33:622d) - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - ld d, $10 - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - ld d, $10 - call BattleAnim_Cosine - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld [hl], $f -Functionce254: ; ce254 (33:6254) - ret - -BattleAnimFunction_32: ; ce255 (33:6255) - call BattleAnim_AnonJumptable -.anon_dw - dw Functionce260 - dw Functionce274 - dw Functionce278 - dw Functionce289 -Functionce260: ; ce260 (33:6260) - call BattleAnim_IncAnonJumptableIndex - ld a, [hBattleTurn] - and a - jr nz, .asm_ce26c - ld a, $f0 - jr .asm_ce26e - -.asm_ce26c - ld a, $cc -.asm_ce26e - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], a - ret - -Functionce274: ; ce274 (33:6274) - call Functionce29f - ret - -Functionce278: ; ce278 (33:6278) - call Functionce29f - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - cp $84 - ret nc - ld a, $4 - call Functionce70a - ret - -Functionce289: ; ce289 (33:6289) - call Functionce29f - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - cp $d0 - jr nc, .asm_ce29b - ld a, $4 - call Functionce70a - ret - -.asm_ce29b - call DeinitBattleAnimation - ret - -Functionce29f: ; ce29f (33:629f) - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld a, [hl] - and $7 - inc [hl] - srl a - ld e, a - ld d, $0 - ld a, [hSGB] - and a - jr nz, .asm_ce2b6 - ld hl, Unknown_ce2c4 - jr .asm_ce2b9 - -.asm_ce2b6 - ld hl, Unknown_ce2c8 -.asm_ce2b9 - add hl, de - ld a, [hl] - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - and [hl] - ld [wOBP0], a - ret - -; ce2c4 (33:62c4) -Unknown_ce2c4: ; ce2c4 - db $ff, $aa, $55, $aa -Unknown_ce2c8: ; ce2c8 - db $ff, $ff, $00, $00 -; ce2cc -BattleAnimFunction_33: ; ce2cc (33:62cc) - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - ld d, $18 - call BattleAnim_Sine - sra a - sra a - sra a - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - add [hl] - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - inc [hl] - ld d, $18 - call BattleAnim_Cosine - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - dec [hl] - dec [hl] - ret - -BattleAnimFunction_36: ; ce2fd (33:62fd) - call BattleAnim_AnonJumptable -.anon_dw - dw Functionce306 - dw Functionce330 - dw Functionce34c -Functionce306: ; ce306 (33:6306) - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld a, [hl] - cp $e0 - jr nz, .asm_ce319 - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], $2 - ret - -.asm_ce319 - ld d, a - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld e, [hl] - ld hl, hPushOAM ; $ff80 - add hl, de - ld e, l - ld d, h - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], d - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], e - ret - -Functionce330: ; ce330 (33:6330) - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld a, [hl] - and a - jr z, .asm_ce33a - dec [hl] - ret - -.asm_ce33a - ld [hl], $4 - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - xor $ff - inc a - ld [hl], a - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - add [hl] - ld [hl], a - ret - -Functionce34c: ; ce34c (33:634c) - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - cp $84 - jr nc, .asm_ce35b - ld a, $4 - call Functionce70a - ret - -.asm_ce35b - call DeinitBattleAnimation - ret - -BattleAnimFunction_37: ; ce35f (33:635f) - call BattleAnim_AnonJumptable -.anon_dw - dw Functionce366 - dw Functionce375 -Functionce366: ; ce366 (33:6366) - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - and $7f - add BATTLEANIMFRAMESET_81 - call ReinitBattleAnimFrameset -Functionce375: ; ce375 (33:6375) - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - bit 7, [hl] - jr nz, .asm_ce383 - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - inc [hl] - ret - -.asm_ce383 - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - dec [hl] - ret - -BattleAnimFunction_38: ; ce389 (33:6389) - call BattleAnim_AnonJumptable -.anon_dw - dw Functionce392 - dw Functionce39c - dw Functionce3ae -Functionce392: ; ce392 (33:6392) - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], $c - ret - -Functionce39c: ; ce39c (33:639c) - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - and a - jr z, .asm_ce3a6 - dec [hl] - ret - -.asm_ce3a6 - call BattleAnim_IncAnonJumptableIndex - ld a, BATTLEANIMFRAMESET_20 - call ReinitBattleAnimFrameset -Functionce3ae: ; ce3ae (33:63ae) - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - dec [hl] - ret - -BattleAnimFunction_39: ; ce3b4 (33:63b4) - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - inc [hl] - inc [hl] - push af - ld d, $2 - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - pop af - ld d, $8 - call BattleAnim_Cosine - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld [hl], a - ret - -BattleAnimFunction_3A: ; ce3d2 (33:63d2) - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld a, [hl] - cp $20 - jr c, .asm_ce3df - call DeinitBattleAnimation - ret - -.asm_ce3df - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - ld d, $8 - call BattleAnim_Cosine - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - add $2 - ld [hl], a - and $7 - ret nz - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - inc [hl] - ret - -BattleAnimFunction_3B: ; ce3ff (33:63ff) - call BattleAnim_AnonJumptable -.anon_dw - dw Functionce406 - dw Functionce412 -Functionce406: ; ce406 (33:6406) - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - add [hl] - ld [hl], a - ret - -Functionce412: ; ce412 (33:6412) - call DeinitBattleAnimation - ret - -BattleAnimFunction_3D: ; ce416 (33:6416) - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - ld d, $18 - push af - push de - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - pop de - pop af - call BattleAnim_Cosine - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - sra a - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - inc [hl] - ret - -BattleAnimFunction_3E: ; ce43a (33:643a) - call BattleAnim_AnonJumptable -.anon_dw - dw Functionce443 - dw Functionce465 - dw Functionce490 -Functionce443: ; ce443 (33:6443) - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], $28 - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - and $f - ld hl, BATTLEANIMSTRUCT_FRAMESET_ID - add hl, bc - add [hl] - call ReinitBattleAnimFrameset - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - and $f0 - or $8 - ld [hl], a -Functionce465: ; ce465 (33:6465) - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - and a - jr z, .asm_ce48b - dec [hl] - add $8 - ld d, a - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - push af - push de - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - pop de - pop af - call BattleAnim_Cosine - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld [hl], a - ret - -.asm_ce48b - ld [hl], $10 - call BattleAnim_IncAnonJumptableIndex -Functionce490: ; ce490 (33:6490) - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - dec [hl] - and a - ret nz - call DeinitBattleAnimation - ret - -BattleAnimFunction_40: ; ce49c (33:649c) - call BattleAnim_AnonJumptable -.anon_dw - dw Functionce4a3 - dw Functionce4b0 -Functionce4a3: ; ce4a3 (33:64a3) - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, BATTLEANIMFRAMESET_24 - add [hl] - call ReinitBattleAnimFrameset -Functionce4b0: ; ce4b0 (33:64b0) - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld a, [hl] - cp $38 - jr nc, .asm_ce4d8 - inc [hl] - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - inc [hl] - ld d, $18 - call BattleAnim_Cosine - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_YCOORD - add hl, bc - ld a, [hl] - and $1 - ret nz - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - dec [hl] - ret - -.asm_ce4d8 - call DeinitBattleAnimation - ret - -BattleAnimFunction_41: ; ce4dc (33:64dc) - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - and a - ret z - ld d, a - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - inc [hl] - call BattleAnim_Sine - bit 7, a - jr nz, .asm_ce4f4 - xor $ff - inc a -.asm_ce4f4 - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - and $1f - ret nz - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - srl [hl] - ret - -BattleAnimFunction_43: ; ce508 (33:6508) - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - cp $10 - jr nc, .asm_ce52e - inc [hl] - inc [hl] - ld d, a - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - push af - push de - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - pop de - pop af - call BattleAnim_Cosine - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld [hl], a - ret - -.asm_ce52e - call DeinitBattleAnimation - ret - -BattleAnimFunction_44: ; ce532 (33:6532) - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld e, [hl] - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld d, [hl] - ld a, e - and $c0 - rlca - rlca - add [hl] - ld [hl], a - ld a, e - and $3f - push af - push de - call BattleAnim_Sine - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - pop de - pop af - call BattleAnim_Cosine - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld [hl], a - ret - -BattleAnimFunction_45: ; ce55b (33:655b) - call BattleAnim_AnonJumptable -.anon_dw - dw Functionce564 - dw Functionce56e - dw Functionce577 -Functionce564: ; ce564 (33:6564) - ld d, $18 - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - inc [hl] - jr asm_ce58f - -Functionce56e: ; ce56e (33:656e) - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], $18 -Functionce577: ; ce577 (33:6577) - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - cp $80 - jr nc, .asm_ce58b - ld d, a - add $8 - ld [hl], a - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - jr asm_ce58f - -.asm_ce58b - call DeinitBattleAnimation - ret - -asm_ce58f: ; ce58f (33:658f) - call Functionce6f1 - ret - -BattleAnimFunction_46: ; ce593 (33:6593) - call BattleAnim_AnonJumptable -.anon_dw - dw Functionce5b3 - dw Functionce59a -Functionce59a: ; ce59a (33:659a) - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hl] - cp $30 - jr c, .asm_ce5b0 - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - dec [hl] - dec [hl] - ld hl, BATTLEANIMSTRUCT_YCOORD - add hl, bc - inc [hl] - inc [hl] - ret - -.asm_ce5b0 - call DeinitBattleAnimation -Functionce5b3: ; ce5b3 (33:65b3) - ret - -BattleAnimFunction_47: ; ce5b4 (33:65b4) - ld d, $50 - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - inc [hl] - inc [hl] - push af - push de - call BattleAnim_Sine - sra a - sra a - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - add [hl] - inc [hl] - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - pop de - pop af - call BattleAnim_Cosine - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld [hl], a - ret - -BattleAnimFunction_48: ; ce5dc (33:65dc) - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld a, [hl] - cp $d0 - jr z, .disappear - dec [hl] - dec [hl] - dec [hl] - dec [hl] - ret - -.disappear - call DeinitBattleAnimation - ret - -BattleAnimFunction_49: ; ce5ee (33:65ee) - call BattleAnim_AnonJumptable -.anon_dw - dw Functionce5f9 - dw Functionce60a - dw Functionce622 - dw Functionce618 -Functionce5f9: ; ce5f9 (33:65f9) - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - and a - jr nz, asm_ce61c - call BattleAnim_IncAnonJumptableIndex - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], $ec -Functionce60a: ; ce60a (33:660a) - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld a, [hl] - cp $4 - jr z, Functionce618 - inc [hl] - inc [hl] - inc [hl] - inc [hl] - ret - -Functionce618: ; ce618 (33:6618) - call DeinitBattleAnimation - ret - -asm_ce61c: ; ce61c (33:661c) - call BattleAnim_IncAnonJumptableIndex - call BattleAnim_IncAnonJumptableIndex -Functionce622: ; ce622 (33:6622) - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld a, [hl] - cp $d8 - ret z - dec [hl] - dec [hl] - dec [hl] - dec [hl] - ret - -BattleAnimFunction_4A: ; ce62f (33:662f) - call BattleAnim_AnonJumptable -.anon_dw - dw Functionce63a - dw Functionce648 - dw Functionce65c - dw Functionce672 -Functionce63a: ; ce63a (33:663a) - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX - add hl, bc - ld [hl], a - call BattleAnim_IncAnonJumptableIndex - ret - -Functionce648: ; ce648 (33:6648) - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld a, [hl] - add $4 - cp $70 - jr c, .asm_ce654 - xor a -.asm_ce654 - ld [hl], a - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - inc [hl] - inc [hl] - ret - -Functionce65c: ; ce65c (33:665c) - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld a, [hl] - add $4 - cp $70 - jr c, .asm_ce668 - xor a -.asm_ce668 - ld [hl], a - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld a, [hl] - add $8 - ld [hl], a - ret - -Functionce672: ; ce672 (33:6672) - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld a, [hl] - add $4 - cp $70 - jr c, .asm_ce67e - xor a -.asm_ce67e - ld [hl], a - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld a, [hl] - add $4 - ld [hl], a - ret - -BattleAnimFunction_4B: ; ce688 (33:6688) - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld d, [hl] - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld e, [hl] - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - ld l, a - and $f0 - ld h, a - swap a - or h - ld h, a - ld a, l - and $f - swap a - ld l, a - add hl, de - ld e, l - ld d, h - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld [hl], d - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld [hl], e - ret - -BattleAnimFunction_4C: ; ce6b3 (33:66b3) - ld d, $18 - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld a, [hl] - inc [hl] - call Functionce6f1 - ret - -BattleAnimFunction_4F: ; ce6bf (33:66bf) - ld d, $18 - ld hl, BATTLEANIMSTRUCT_10 - add hl, bc - ld a, [hl] - inc [hl] - srl a - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - add [hl] - call Functionce6f1 - ret - -BattleAnimFunction_4D: ; ce6d2 (33:66d2) - ld hl, BATTLEANIMSTRUCT_0F - add hl, bc - ld a, [hl] - cp $20 - jr nc, .asm_ce6ed - inc [hl] - ld hl, BATTLEANIMSTRUCT_0B - add hl, bc - ld d, [hl] - call BattleAnim_Sine - xor $ff - inc a - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - ret - -.asm_ce6ed - call DeinitBattleAnimation - ret - -Functionce6f1: ; ce6f1 (33:66f1) - push af - push de - call BattleAnim_Sine - sra a - sra a - ld hl, BATTLEANIMSTRUCT_YOFFSET - add hl, bc - ld [hl], a - pop de - pop af - call BattleAnim_Cosine - ld hl, BATTLEANIMSTRUCT_XOFFSET - add hl, bc - ld [hl], a - ret - -Functionce70a: ; ce70a (33:670a) - and $f - ld e, a - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - add [hl] - ld [hl], a - srl e - ld hl, BATTLEANIMSTRUCT_YCOORD - add hl, bc -.asm_ce719 - dec [hl] - dec e - jr nz, .asm_ce719 - ret - -BattleAnim_AnonJumptable: ; ce71e (33:671e) - pop de - ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX - add hl, bc - ld l, [hl] - ld h, $0 - add hl, hl - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - jp hl - -BattleAnim_IncAnonJumptableIndex: ; ce72c (33:672c) - ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX - add hl, bc - inc [hl] - ret - -BattleAnim_Cosine: ; ce732 (33:6732) - add $10 -BattleAnim_Sine: ; ce734 (33:6734) -; a = d sin a - and $3f - cp $20 - jr nc, .negative - call .ApplySineWave - ld a, h - ret - -.negative - and $1f - call .ApplySineWave - ld a, h - xor $ff - inc a - ret - -.ApplySineWave: - ld e, a - ld a, d - ld d, 0 - ld hl, BattleAnimSineWave - add hl, de - add hl, de - ld e, [hl] - inc hl - ld d, [hl] - ld hl, $0 -.multiply - srl a - jr nc, .even - add hl, de -.even - sla e - rl d - and a - jr nz, .multiply - ret - -BattleAnim_Sine_e: ; ce765 (33:6765) - ld a, e - call BattleAnim_Sine - ld e, a - ret - -BattleAnim_Cosine_e: ; ce76b (33:676b) - ld a, e - call BattleAnim_Cosine - ld e, a - ret - -; ce771 (33:6771) -BattleAnim_AbsSinePrecise: ; ce771 - ld a, e - call BattleAnim_Sine - ld e, l - ld d, h - ret - -; ce778 -BattleAnim_AbsCosinePrecise: ; ce778 - ld a, e - call BattleAnim_Cosine - ld e, l - ld d, h - ret - -; ce77f -BattleAnimSineWave: ; ce77f - sine_wave $100 -; ce7bf diff --git a/engine/anims/helpers.asm b/engine/anims/helpers.asm deleted file mode 100755 index a692211d3..000000000 --- a/engine/anims/helpers.asm +++ /dev/null @@ -1,130 +0,0 @@ -ReinitBattleAnimFrameset: ; ce7bf (33:67bf) - ld hl, BATTLEANIMSTRUCT_FRAMESET_ID - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_DURATION - add hl, bc - ld [hl], 0 - ld hl, BATTLEANIMSTRUCT_FRAME - add hl, bc - ld [hl], -1 - ret - -GetBattleAnimFrame: ; ce7d1 -.loop - ld hl, BATTLEANIMSTRUCT_DURATION - add hl, bc - ld a, [hl] - and a - jr z, .next_frame - dec [hl] - call .GetPointer - ld a, [hli] - push af - jr .okay - -.next_frame - ld hl, BATTLEANIMSTRUCT_FRAME - add hl, bc - inc [hl] - call .GetPointer - ld a, [hli] - cp -2 - jr z, .restart - cp -1 - jr z, .repeat_last - push af - ld a, [hl] - push hl - and $3f - ld hl, BATTLEANIMSTRUCT_DURATION - add hl, bc - ld [hl], a - pop hl - -.okay - ld a, [hl] - and $c0 - srl a - ld [wBattleAnimTemp7], a - pop af - ret - -.repeat_last - xor a - ld hl, BATTLEANIMSTRUCT_DURATION - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_FRAME - add hl, bc - dec [hl] - dec [hl] - jr .loop - -.restart - xor a - ld hl, BATTLEANIMSTRUCT_DURATION - add hl, bc - ld [hl], a - dec a - ld hl, BATTLEANIMSTRUCT_FRAME - add hl, bc - ld [hl], a - jr .loop - -; ce823 - -.GetPointer: ; ce823 - ld hl, BATTLEANIMSTRUCT_FRAMESET_ID - add hl, bc - ld e, [hl] - ld d, 0 - ld hl, BattleAnimFrameData - add hl, de - add hl, de - ld e, [hl] - inc hl - ld d, [hl] - ld hl, BATTLEANIMSTRUCT_FRAME - add hl, bc - ld l, [hl] - ld h, $0 - add hl, hl - add hl, de - ret - -; ce83c - -GetBattleAnimOAMPointer: ; ce83c - ld l, a - ld h, 0 - ld de, BattleAnimOAMData - add hl, hl - add hl, hl - add hl, de - ret - -; ce846 - -LoadBattleAnimObj: ; ce846 (33:6846) - push hl - ld l, a - ld h, 0 - add hl, hl - add hl, hl - ld de, AnimObjGFX - add hl, de - ld c, [hl] - inc hl - ld b, [hl] - inc hl - ld a, [hli] - ld h, [hl] - ld l, a - pop de - push bc - call DecompressRequest2bpp - pop bc - ret - -; ce85e (33:685e) diff --git a/engine/battle/battlestart_copytilemapatonce.asm b/engine/battle/battlestart_copytilemapatonce.asm new file mode 100644 index 000000000..2952e833b --- /dev/null +++ b/engine/battle/battlestart_copytilemapatonce.asm @@ -0,0 +1,3 @@ +BattleStart_CopyTilemapAtOnce: ; 8cf4f + call CGBOnly_CopyTilemapAtOnce + ret diff --git a/engine/battle/checkbattlescene.asm b/engine/battle/checkbattlescene.asm new file mode 100644 index 000000000..b63f00907 --- /dev/null +++ b/engine/battle/checkbattlescene.asm @@ -0,0 +1,47 @@ +CheckBattleScene: ; 4ea44 +; Return carry if battle scene is turned off. + + ld a, 0 + ld hl, wLinkMode + call GetFarWRAMByte + cp LINK_MOBILE + jr z, .mobile + + ld a, [Options] + bit BATTLE_SCENE, a + jr nz, .off + + and a + ret + +.mobile + ld a, [wcd2f] + and a + jr nz, .from_wram + + ld a, $4 + call GetSRAMBank + ld a, [$a60c] + ld c, a + call CloseSRAM + + ld a, c + bit 0, c + jr z, .off + + and a + ret + +.from_wram + ld a, $5 + ld hl, w5_dc00 + call GetFarWRAMByte + bit 0, a + jr z, .off + + and a + ret + +.off + scf + ret diff --git a/engine/battle/consumehelditem.asm b/engine/battle/consumehelditem.asm new file mode 100644 index 000000000..a6f7766fb --- /dev/null +++ b/engine/battle/consumehelditem.asm @@ -0,0 +1,80 @@ +ConsumeHeldItem: ; 27192 + push hl + push de + push bc + ld a, [hBattleTurn] + and a + ld hl, OTPartyMon1Item + ld de, EnemyMonItem + ld a, [CurOTMon] + jr z, .theirturn + ld hl, PartyMon1Item + ld de, BattleMonItem + ld a, [CurBattleMon] + +.theirturn + push hl + push af + ld a, [de] + ld b, a + farcall GetItemHeldEffect + ld hl, .ConsumableEffects +.loop + ld a, [hli] + cp b + jr z, .ok + inc a + jr nz, .loop + pop af + pop hl + pop bc + pop de + pop hl + ret + +.ok + xor a + ld [de], a + pop af + pop hl + call GetPartyLocation + ld a, [hBattleTurn] + and a + jr nz, .ourturn + ld a, [wBattleMode] + dec a + jr z, .done + +.ourturn + ld [hl], $0 + +.done + pop bc + pop de + pop hl + ret + +.ConsumableEffects: ; 271de +; Consumable items? + db HELD_BERRY + db HELD_2 + db HELD_5 + db HELD_HEAL_POISON + db HELD_HEAL_FREEZE + db HELD_HEAL_BURN + db HELD_HEAL_SLEEP + db HELD_HEAL_PARALYZE + db HELD_HEAL_STATUS + db HELD_30 + db HELD_ATTACK_UP + db HELD_DEFENSE_UP + db HELD_SPEED_UP + db HELD_SP_ATTACK_UP + db HELD_SP_DEFENSE_UP + db HELD_ACCURACY_UP + db HELD_EVASION_UP + db HELD_38 + db HELD_71 + db HELD_ESCAPE + db HELD_CRITICAL_UP + db -1 diff --git a/engine/battle/returntobattle_useball.asm b/engine/battle/returntobattle_useball.asm new file mode 100644 index 000000000..e6e33f900 --- /dev/null +++ b/engine/battle/returntobattle_useball.asm @@ -0,0 +1,19 @@ +_ReturnToBattle_UseBall: ; 2715c + call ClearBGPalettes + call ClearTileMap + ld a, [BattleType] + cp BATTLETYPE_TUTORIAL + jr z, .gettutorialbackpic + farcall GetBattleMonBackpic + jr .continue + +.gettutorialbackpic + farcall GetTrainerBackpic +.continue + farcall GetEnemyMonFrontpic + farcall _LoadBattleFontsHPBar + call GetMemSGBLayout + call CloseWindow + call LoadStandardMenuDataHeader + call WaitBGMap + jp SetPalettes diff --git a/engine/battle/updatebattlehuds.asm b/engine/battle/updatebattlehuds.asm new file mode 100644 index 000000000..ec7f662e8 --- /dev/null +++ b/engine/battle/updatebattlehuds.asm @@ -0,0 +1,9 @@ +_UpdateBattleHUDs: + farcall DrawPlayerHUD + ld hl, PlayerHPPal + call SetHPPal + farcall DrawEnemyHUD + ld hl, EnemyHPPal + call SetHPPal + farcall FinishBattleAnim + ret diff --git a/engine/battle_anims/anim_commands.asm b/engine/battle_anims/anim_commands.asm new file mode 100644 index 000000000..875849ce3 --- /dev/null +++ b/engine/battle_anims/anim_commands.asm @@ -0,0 +1,1514 @@ +; Battle animation command interpreter. + +PlayBattleAnim: ; cc0d6 + + ld a, [rSVBK] + push af + + ld a, 5 + ld [rSVBK], a + + call _PlayBattleAnim + + pop af + ld [rSVBK], a + ret +; cc0e4 + +_PlayBattleAnim: ; cc0e4 + + ld c, 6 +.wait + call BattleAnimDelayFrame + dec c + jr nz, .wait + + call BattleAnimAssignPals + call BattleAnimRequestPals + call BattleAnimDelayFrame + + ld c, 1 + ld a, [rKEY1] + bit 7, a + jr nz, .asm_cc0ff + ld c, 3 + +.asm_cc0ff + ld hl, hVBlank + ld a, [hl] + push af + + ld [hl], c + call BattleAnimRunScript + + pop af + ld [hVBlank], a + + ld a, $1 + ld [hBGMapMode], a + + call BattleAnimDelayFrame + call BattleAnimDelayFrame + call BattleAnimDelayFrame + call WaitSFX + ret +; cc11c + +BattleAnimRunScript: ; cc11c + + ld a, [FXAnimID + 1] + and a + jr nz, .hi_byte + + farcall CheckBattleScene + jr c, .disabled + + call BattleAnimClearHud + call RunBattleAnimScript + + call BattleAnimAssignPals + call BattleAnimRequestPals + + xor a + ld [hSCX], a + ld [hSCY], a + call BattleAnimDelayFrame + call BattleAnimRestoreHuds + +.disabled + ld a, [wNumHits] + and a + jr z, .done + + ld l, a + ld h, 0 + ld de, ANIM_MISS + add hl, de + ld a, l + ld [FXAnimID], a + ld a, h + ld [FXAnimID + 1], a + +.hi_byte + call WaitSFX + call PlayHitSound + call RunBattleAnimScript + +.done + call BattleAnim_RevertPals + ret +; cc163 + +RunBattleAnimScript: ; cc163 + + call ClearBattleAnims + +.playframe + call RunBattleAnimCommand + call _ExecuteBGEffects + call BattleAnim_UpdateOAM_All + call PushLYOverrides + call BattleAnimRequestPals + +; Speed up Rollout's animation. + ld a, [FXAnimID + 1] + or a + jr nz, .not_rollout + + ld a, [FXAnimID] + cp ROLLOUT + jr nz, .not_rollout + + ld a, $2e + ld b, 5 + ld de, 4 + ld hl, ActiveBGEffects +.find + cp [hl] + jr z, .done + add hl, de + dec b + jr nz, .find + +.not_rollout + call BattleAnimDelayFrame + +.done + ld a, [BattleAnimFlags] + bit 0, a + jr z, .playframe + + call BattleAnim_ClearCGB_OAMFlags + ret +; cc1a1 + +BattleAnimClearHud: ; cc1a1 + + call BattleAnimDelayFrame + call WaitTop + call ClearActorHud + ld a, $1 + ld [hBGMapMode], a + call BattleAnimDelayFrame + call BattleAnimDelayFrame + call BattleAnimDelayFrame + call WaitTop + ret +; cc1bb + +BattleAnimRestoreHuds: ; cc1bb + + call BattleAnimDelayFrame + call WaitTop + + ld a, [rSVBK] + push af + ld a, $1 + ld [rSVBK], a + + ld hl, UpdateBattleHuds + ld a, BANK(UpdatePlayerHUD) + rst FarCall ; Why not "call UpdateBattleHuds"? + + pop af + ld [rSVBK], a + + ld a, $1 + ld [hBGMapMode], a + call BattleAnimDelayFrame + call BattleAnimDelayFrame + call BattleAnimDelayFrame + call WaitTop + ret +; cc1e2 + +BattleAnimRequestPals: ; cc1e2 + + ld a, [hCGB] + and a + ret z + + ld a, [rBGP] + ld b, a + ld a, [wBGP] + cp b + call nz, BattleAnim_SetBGPals + + ld a, [rOBP0] + ld b, a + ld a, [wOBP0] + cp b + call nz, BattleAnim_SetOBPals + ret +; cc1fb + +BattleAnimDelayFrame: ; cc1fb +; Like DelayFrame but wastes battery life. + + ld a, 1 + ld [VBlankOccurred], a +.wait + ld a, [VBlankOccurred] + and a + jr nz, .wait + ret +; cc207 + +ClearActorHud: ; cc207 + + ld a, [hBattleTurn] + and a + jr z, .player + + hlcoord 1, 0 + lb bc, 4, 10 + call ClearBox + ret + +.player + hlcoord 9, 7 + lb bc, 5, 11 + call ClearBox + ret +; cc220 + +Functioncc220: ; cc220 +; Appears to be unused. + xor a + ld [hBGMapMode], a + ld a, LOW(VBGMap0 tile $28) + ld [hBGMapAddress], a + ld a, HIGH(VBGMap0 tile $28) + ld [hBGMapAddress + 1], a + call WaitBGMap2 + ld a, $60 + ld [hWY], a + xor a ; LOW(VBGMap0) + ld [hBGMapAddress], a + ld a, HIGH(VBGMap0) + ld [hBGMapAddress + 1], a + call BattleAnimDelayFrame + ret +; cc23d + + +BattleAnim_ClearCGB_OAMFlags: ; cc23d + + ld a, [BattleAnimFlags] + bit 3, a + jr z, .delete + + ld hl, Sprites + 3 + ld c, (SpritesEnd - Sprites) / 4 +.loop + ld a, [hl] + and $f0 + ld [hli], a + inc hl + inc hl + inc hl + dec c + jr nz, .loop + ret + +.delete + ld hl, Sprites + ld c, SpritesEnd - Sprites + xor a +.loop2 + ld [hli], a + dec c + jr nz, .loop2 + ret +; cc25f + +RunBattleAnimCommand: ; cc25f + call .CheckTimer + ret nc + call .RunScript + ret +; cc267 + +.CheckTimer: ; cc267 + ld a, [BattleAnimDuration] + and a + jr z, .done + + dec a + ld [BattleAnimDuration], a + and a + ret + +.done + scf + ret +; cc275 + +.RunScript: ; cc275 +.loop + call GetBattleAnimByte + + cp $ff + jr nz, .not_done_with_anim + +; Return from a subroutine. + ld hl, BattleAnimFlags + bit 1, [hl] + jr nz, .do_anim + + set 0, [hl] + ret + +.not_done_with_anim + cp $d0 + jr nc, .do_anim + + ld [BattleAnimDuration], a + ret + +.do_anim + call .DoCommand + + jr .loop +; cc293 + +.DoCommand: ; cc293 +; Execute battle animation command in [BattleAnimByte]. + ld a, [BattleAnimByte] + sub $d0 + + ld e, a + ld d, 0 + ld hl, BattleAnimCommands + add hl, de + add hl, de + + ld a, [hli] + ld h, [hl] + ld l, a + jp hl +; cc2a4 + + +BattleAnimCommands:: ; cc2a4 (33:42a4) +; entries correspond to macros/scripts/battle_anims.asm enumeration + dw BattleAnimCmd_Obj + dw BattleAnimCmd_1GFX + dw BattleAnimCmd_2GFX + dw BattleAnimCmd_3GFX + dw BattleAnimCmd_4GFX + dw BattleAnimCmd_5GFX + dw BattleAnimCmd_IncObj + dw BattleAnimCmd_SetObj + dw BattleAnimCmd_IncBGEffect + dw BattleAnimCmd_EnemyFeetObj + dw BattleAnimCmd_PlayerHeadObj + dw BattleAnimCmd_CheckPokeball + dw BattleAnimCmd_Transform + dw BattleAnimCmd_RaiseSub + dw BattleAnimCmd_DropSub + dw BattleAnimCmd_ResetObp0 + dw BattleAnimCmd_Sound + dw BattleAnimCmd_Cry + dw BattleAnimCmd_MinimizeOpp + dw BattleAnimCmd_OAMOn + dw BattleAnimCmd_OAMOff + dw BattleAnimCmd_ClearObjs + dw BattleAnimCmd_BeatUp + dw BattleAnimCmd_E7 + dw BattleAnimCmd_UpdateActorPic + dw BattleAnimCmd_Minimize + dw BattleAnimCmd_EA ; dummy + dw BattleAnimCmd_EB ; dummy + dw BattleAnimCmd_EC ; dummy + dw BattleAnimCmd_ED ; dummy + dw BattleAnimCmd_IfParamAnd + dw BattleAnimCmd_JumpUntil + dw BattleAnimCmd_BGEffect + dw BattleAnimCmd_BGP + dw BattleAnimCmd_OBP0 + dw BattleAnimCmd_OBP1 + dw BattleAnimCmd_ClearSprites + dw BattleAnimCmd_F5 + dw BattleAnimCmd_F6 + dw BattleAnimCmd_F7 + dw BattleAnimCmd_IfParamEqual + dw BattleAnimCmd_SetVar + dw BattleAnimCmd_IncVar + dw BattleAnimCmd_IfVarEqual + dw BattleAnimCmd_Jump + dw BattleAnimCmd_Loop + dw BattleAnimCmd_Call + dw BattleAnimCmd_Ret + + +BattleAnimCmd_EA: +BattleAnimCmd_EB: +BattleAnimCmd_EC: +BattleAnimCmd_ED: ; cc304 (33:4304) + ret + +BattleAnimCmd_Ret: ; cc305 (33:4305) + ld hl, BattleAnimFlags + res 1, [hl] + ld hl, BattleAnimParent + ld e, [hl] + inc hl + ld d, [hl] + ld hl, BattleAnimAddress + ld [hl], e + inc hl + ld [hl], d + ret + +BattleAnimCmd_Call: ; cc317 (33:4317) + call GetBattleAnimByte + ld e, a + call GetBattleAnimByte + ld d, a + push de + ld hl, BattleAnimAddress + ld e, [hl] + inc hl + ld d, [hl] + ld hl, BattleAnimParent + ld [hl], e + inc hl + ld [hl], d + pop de + ld hl, BattleAnimAddress + ld [hl], e + inc hl + ld [hl], d + ld hl, BattleAnimFlags + set 1, [hl] + ret + +BattleAnimCmd_Jump: ; cc339 (33:4339) + call GetBattleAnimByte + ld e, a + call GetBattleAnimByte + ld d, a + ld hl, BattleAnimAddress + ld [hl], e + inc hl + ld [hl], d + ret + +BattleAnimCmd_Loop: ; cc348 (33:4348) + call GetBattleAnimByte + ld hl, BattleAnimFlags + bit 2, [hl] + jr nz, .continue_loop + and a + jr z, .perpetual + dec a + set 2, [hl] + ld [BattleAnimLoops], a +.continue_loop + ld hl, BattleAnimLoops + ld a, [hl] + and a + jr z, .return_from_loop + dec [hl] +.perpetual + call GetBattleAnimByte + ld e, a + call GetBattleAnimByte + ld d, a + ld hl, BattleAnimAddress + ld [hl], e + inc hl + ld [hl], d + ret + +.return_from_loop + ld hl, BattleAnimFlags + res 2, [hl] + ld hl, BattleAnimAddress + ld e, [hl] + inc hl + ld d, [hl] + inc de + inc de + ld [hl], d + dec hl + ld [hl], e + ret + +BattleAnimCmd_JumpUntil: ; cc383 (33:4383) + ld hl, wBattleAnimParam + ld a, [hl] + and a + jr z, .dont_jump + + dec [hl] + call GetBattleAnimByte + ld e, a + call GetBattleAnimByte + ld d, a + ld hl, BattleAnimAddress + ld [hl], e + inc hl + ld [hl], d + ret + +.dont_jump + ld hl, BattleAnimAddress + ld e, [hl] + inc hl + ld d, [hl] + inc de + inc de + ld [hl], d + dec hl + ld [hl], e + ret + +BattleAnimCmd_SetVar: ; cc3a6 (33:43a6) + call GetBattleAnimByte + ld [BattleAnimVar], a + ret + +BattleAnimCmd_IncVar: ; cc3ad (33:43ad) + ld hl, BattleAnimVar + inc [hl] + ret + +BattleAnimCmd_IfVarEqual: ; cc3b2 (33:43b2) + call GetBattleAnimByte + ld hl, BattleAnimVar + cp [hl] + jr z, .jump + + ld hl, BattleAnimAddress + ld e, [hl] + inc hl + ld d, [hl] + inc de + inc de + ld [hl], d + dec hl + ld [hl], e + ret + +.jump + call GetBattleAnimByte + ld e, a + call GetBattleAnimByte + ld d, a + ld hl, BattleAnimAddress + ld [hl], e + inc hl + ld [hl], d + ret + +BattleAnimCmd_IfParamEqual: ; cc3d6 (33:43d6) + call GetBattleAnimByte + ld hl, wBattleAnimParam + cp [hl] + jr z, .jump + + ld hl, BattleAnimAddress + ld e, [hl] + inc hl + ld d, [hl] + inc de + inc de + ld [hl], d + dec hl + ld [hl], e + ret + +.jump + call GetBattleAnimByte + ld e, a + call GetBattleAnimByte + ld d, a + ld hl, BattleAnimAddress + ld [hl], e + inc hl + ld [hl], d + ret + +BattleAnimCmd_IfParamAnd: ; cc3fa (33:43fa) + call GetBattleAnimByte + ld e, a + ld a, [wBattleAnimParam] + and e + jr nz, .jump + + ld hl, BattleAnimAddress + ld e, [hl] + inc hl + ld d, [hl] + inc de + inc de + ld [hl], d + dec hl + ld [hl], e + ret + +.jump + call GetBattleAnimByte + ld e, a + call GetBattleAnimByte + ld d, a + ld hl, BattleAnimAddress + ld [hl], e + inc hl + ld [hl], d + ret + +BattleAnimCmd_Obj: ; cc41f (33:441f) +; index, x, y, param + call GetBattleAnimByte + ld [wBattleAnimTemp0], a + call GetBattleAnimByte + ld [wBattleAnimTemp1], a + call GetBattleAnimByte + ld [wBattleAnimTemp2], a + call GetBattleAnimByte + ld [wBattleAnimTemp3], a + call QueueBattleAnimation + ret + +BattleAnimCmd_BGEffect: ; cc43b (33:443b) + call GetBattleAnimByte + ld [wBattleAnimTemp0], a + call GetBattleAnimByte + ld [wBattleAnimTemp1], a + call GetBattleAnimByte + ld [wBattleAnimTemp2], a + call GetBattleAnimByte + ld [wBattleAnimTemp3], a + call _QueueBGEffect + ret + +BattleAnimCmd_BGP: ; cc457 (33:4457) + call GetBattleAnimByte + ld [wBGP], a + ret + +BattleAnimCmd_OBP0: ; cc45e (33:445e) + call GetBattleAnimByte + ld [wOBP0], a + ret + +BattleAnimCmd_OBP1: ; cc465 (33:4465) + call GetBattleAnimByte + ld [wOBP1], a + ret + +BattleAnimCmd_ResetObp0: ; cc46c (33:446c) + ld a, [hSGB] + and a + ld a, $e0 + jr z, .not_sgb + ld a, $f0 +.not_sgb + ld [wOBP0], a + ret + +BattleAnimCmd_ClearObjs: ; cc479 (33:4479) + ld hl, ActiveAnimObjects + ld a, $a0 +.loop + ld [hl], $0 + inc hl + dec a + jr nz, .loop + ret + +BattleAnimCmd_1GFX: +BattleAnimCmd_2GFX: +BattleAnimCmd_3GFX: +BattleAnimCmd_4GFX: +BattleAnimCmd_5GFX: ; cc485 (33:4485) + ld a, [BattleAnimByte] + and $f + ld c, a + ld hl, wBattleAnimTileDict + xor a + ld [wBattleAnimTemp0], a +.loop + ld a, [wBattleAnimTemp0] + cp (VTiles1 - VTiles0) / $10 - $31 + ret nc + call GetBattleAnimByte + ld [hli], a + ld a, [wBattleAnimTemp0] + ld [hli], a + push bc + push hl + ld l, a + ld h, $0 +rept 4 + add hl, hl +endr + ld de, VTiles0 tile $31 + add hl, de + ld a, [BattleAnimByte] + call LoadBattleAnimObj + ld a, [wBattleAnimTemp0] + add c + ld [wBattleAnimTemp0], a + pop hl + pop bc + dec c + jr nz, .loop + ret + +BattleAnimCmd_IncObj: ; cc4c0 (33:44c0) + call GetBattleAnimByte + ld e, 10 + ld bc, ActiveAnimObjects +.loop + ld hl, BATTLEANIMSTRUCT_INDEX + add hl, bc + ld d, [hl] + ld a, [BattleAnimByte] + cp d + jr z, .found + ld hl, BATTLEANIMSTRUCT_LENGTH + add hl, bc + ld c, l + ld b, h + dec e + jr nz, .loop + ret + +.found + ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX + add hl, bc + inc [hl] + ret + +BattleAnimCmd_IncBGEffect: ; cc4e3 (33:44e3) + call GetBattleAnimByte + ld e, 5 + ld bc, ActiveBGEffects +.loop + ld hl, $0 + add hl, bc + ld d, [hl] + ld a, [BattleAnimByte] + cp d + jr z, .found + ld hl, 4 + add hl, bc + ld c, l + ld b, h + dec e + jr nz, .loop + ret + +.found + ld hl, BG_EFFECT_STRUCT_JT_INDEX + add hl, bc + inc [hl] + ret + +BattleAnimCmd_SetObj: ; cc506 (33:4506) + call GetBattleAnimByte + ld e, 10 + ld bc, ActiveAnimObjects +.loop + ld hl, BATTLEANIMSTRUCT_INDEX + add hl, bc + ld d, [hl] + ld a, [BattleAnimByte] + cp d + jr z, .found + ld hl, BATTLEANIMSTRUCT_LENGTH + add hl, bc + ld c, l + ld b, h + dec e + jr nz, .loop + ret + +.found + call GetBattleAnimByte + ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX + add hl, bc + ld [hl], a + ret + +BattleAnimCmd_EnemyFeetObj: ; cc52c (33:452c) + + ld hl, wBattleAnimTileDict +.loop + ld a, [hl] + and a + jr z, .okay + inc hl + inc hl + jr .loop + +.okay + ld a, $28 + ld [hli], a + ld a, $42 + ld [hli], a + ld a, $29 + ld [hli], a + ld a, $49 + ld [hl], a + + ld hl, VTiles0 tile $73 + ld de, VTiles2 tile $06 + ld a, $70 + ld [wBattleAnimTemp0], a + ld a, $7 + call .LoadFootprint + ld de, VTiles2 tile $31 + ld a, $60 + ld [wBattleAnimTemp0], a + ld a, $6 + call .LoadFootprint + ret + +.LoadFootprint: ; cc561 (33:4561) + push af + push hl + push de + lb bc, BANK(BattleAnimCmd_EnemyFeetObj), 1 + call Request2bpp + pop de + ld a, [wBattleAnimTemp0] + ld l, a + ld h, 0 + add hl, de + ld e, l + ld d, h + pop hl + ld bc, 1 tiles + add hl, bc + pop af + dec a + jr nz, .LoadFootprint + ret + +BattleAnimCmd_PlayerHeadObj: ; cc57e (33:457e) + + ld hl, wBattleAnimTileDict +.loop + ld a, [hl] + and a + jr z, .okay + inc hl + inc hl + jr .loop + +.okay + ld a, $28 + ld [hli], a + ld a, $35 + ld [hli], a + ld a, $29 + ld [hli], a + ld a, $43 + ld [hl], a + + ld hl, VTiles0 tile $66 + ld de, VTiles2 tile $05 + ld a, $70 + ld [wBattleAnimTemp0], a + ld a, $7 + call .LoadHead + ld de, VTiles2 tile $31 + ld a, $60 + ld [wBattleAnimTemp0], a + ld a, $6 + call .LoadHead + ret + +.LoadHead: ; cc5b3 (33:45b3) + push af + push hl + push de + lb bc, BANK(BattleAnimCmd_EnemyFeetObj), 2 + call Request2bpp + pop de + ld a, [wBattleAnimTemp0] + ld l, a + ld h, 0 + add hl, de + ld e, l + ld d, h + pop hl + ld bc, 2 tiles + add hl, bc + pop af + dec a + jr nz, .LoadHead + ret + +BattleAnimCmd_CheckPokeball: ; cc5d0 (33:45d0) + callfar GetPokeBallWobble + ld a, c + ld [BattleAnimVar], a + ret + +BattleAnimCmd_E7: ; cc5db (33:45db) + ret + +BattleAnimCmd_Transform: ; cc5dc (33:45dc) + ld a, [rSVBK] + push af + ld a, 1 + ld [rSVBK], a + ld a, [CurPartySpecies] ; CurPartySpecies + push af + + ld a, [hBattleTurn] + and a + jr z, .player + + ld a, [TempBattleMonSpecies] ; TempBattleMonSpecies + ld [CurPartySpecies], a ; CurPartySpecies + ld hl, BattleMonDVs ; BattleMonDVs + predef GetUnownLetter + ld de, VTiles0 tile $00 + predef GetMonFrontpic + jr .done + +.player + ld a, [TempEnemyMonSpecies] ; TempEnemyMonSpecies + ld [CurPartySpecies], a ; CurPartySpecies + ld hl, EnemyMonDVs ; EnemyMonDVs + predef GetUnownLetter + ld de, VTiles0 tile $00 + predef GetMonBackpic + +.done + pop af + ld [CurPartySpecies], a ; CurPartySpecies + pop af + ld [rSVBK], a + ret + +BattleAnimCmd_UpdateActorPic: ; cc622 (33:4622) + + ld de, VTiles0 tile $00 + ld a, [hBattleTurn] + and a + jr z, .player + + ld hl, VTiles2 tile $00 + ld b, 0 + ld c, $31 + call Request2bpp + ret + +.player + ld hl, VTiles2 tile $31 + ld b, 0 + ld c, $24 + call Request2bpp + ret + +BattleAnimCmd_RaiseSub: ; cc640 (33:4640) + + ld a, [rSVBK] + push af + ld a, 1 + ld [rSVBK], a + xor a + call GetSRAMBank + +GetSubstitutePic: ; cc64c + + ld hl, sScratch + ld bc, (7 * 7) tiles +.loop + xor a + ld [hli], a + dec bc + ld a, c + or b + jr nz, .loop + + ld a, [hBattleTurn] + and a + jr z, .player + + ld hl, MonsterSpriteGFX + 0 tiles + ld de, sScratch + (2 * 7 + 5) tiles + call .CopyTile + ld hl, MonsterSpriteGFX + 1 tiles + ld de, sScratch + (3 * 7 + 5) tiles + call .CopyTile + ld hl, MonsterSpriteGFX + 2 tiles + ld de, sScratch + (2 * 7 + 6) tiles + call .CopyTile + ld hl, MonsterSpriteGFX + 3 tiles + ld de, sScratch + (3 * 7 + 6) tiles + call .CopyTile + + ld hl, VTiles2 tile $00 + ld de, sScratch + lb bc, BANK(GetSubstitutePic), 7 * 7 + call Request2bpp + jr .done + +.player + ld hl, MonsterSpriteGFX + 4 tiles + ld de, sScratch + (2 * 6 + 4) tiles + call .CopyTile + ld hl, MonsterSpriteGFX + 5 tiles + ld de, sScratch + (3 * 6 + 4) tiles + call .CopyTile + ld hl, MonsterSpriteGFX + 6 tiles + ld de, sScratch + (2 * 6 + 5) tiles + call .CopyTile + ld hl, MonsterSpriteGFX + 7 tiles + ld de, sScratch + (3 * 6 + 5) tiles + call .CopyTile + + ld hl, VTiles2 tile $31 + ld de, sScratch + lb bc, BANK(GetSubstitutePic), 6 * 6 + call Request2bpp + +.done + call CloseSRAM + pop af + ld [rSVBK], a + ret + +.CopyTile: ; cc6c6 (33:46c6) + ld bc, 1 tiles + ld a, BANK(MonsterSpriteGFX) + call FarCopyBytes + ret + +BattleAnimCmd_MinimizeOpp: ; cc6cf (33:46cf) + ld a, [rSVBK] + push af + ld a, $1 + ld [rSVBK], a + xor a + call GetSRAMBank + call GetMinimizePic + call Request2bpp + call CloseSRAM + pop af + ld [rSVBK], a + ret + +GetMinimizePic: ; cc6e7 (33:46e7) + ld hl, sScratch + ld bc, $31 tiles +.loop + xor a + ld [hli], a + dec bc + ld a, c + or b + jr nz, .loop + + ld a, [hBattleTurn] + and a + jr z, .player + + ld de, sScratch + $1a tiles + call CopyMinimizePic + ld hl, VTiles2 tile $00 + ld de, sScratch + lb bc, BANK(GetMinimizePic), $31 + ret + +.player + ld de, sScratch + $160 + call CopyMinimizePic + ld hl, VTiles2 tile $31 + ld de, sScratch + lb bc, BANK(GetMinimizePic), $24 + ret + +CopyMinimizePic: ; cc719 (33:4719) + ld hl, MinimizePic + ld bc, $10 + ld a, BANK(MinimizePic) + call FarCopyBytes + ret +; cc725 (33:4725) + +MinimizePic: ; cc725 +INCBIN "gfx/battle/minimize.2bpp" +; cc735 + +BattleAnimCmd_Minimize: ; cc735 (33:4735) + ld a, [rSVBK] + push af + ld a, $1 + ld [rSVBK], a + xor a + call GetSRAMBank + call GetMinimizePic + ld hl, VTiles0 tile $00 + call Request2bpp + call CloseSRAM + pop af + ld [rSVBK], a + ret + +BattleAnimCmd_DropSub: ; cc750 (33:4750) + ld a, [rSVBK] + push af + ld a, $1 + ld [rSVBK], a + + ld a, [CurPartySpecies] ; CurPartySpecies + push af + ld a, [hBattleTurn] + and a + jr z, .player + + callfar DropEnemySub + jr .done + +.player + callfar DropPlayerSub + +.done + pop af + ld [CurPartySpecies], a ; CurPartySpecies + pop af + ld [rSVBK], a + ret + +BattleAnimCmd_BeatUp: ; cc776 (33:4776) + ld a, [rSVBK] + push af + ld a, $1 + ld [rSVBK], a + ld a, [CurPartySpecies] ; CurPartySpecies + push af + + ld a, [wBattleAnimParam] + ld [CurPartySpecies], a ; CurPartySpecies + + ld a, [hBattleTurn] + and a + jr z, .player + + ld hl, BattleMonDVs + predef GetUnownLetter + ld de, VTiles2 tile $00 + predef GetMonFrontpic + jr .done + +.player + ld hl, EnemyMonDVs + predef GetUnownLetter + ld de, VTiles2 tile $31 + predef GetMonBackpic + +.done + pop af + ld [CurPartySpecies], a ; CurPartySpecies + ld b, SCGB_BATTLE_COLORS + call GetSGBLayout + pop af + ld [rSVBK], a + ret + +BattleAnimCmd_OAMOn: ; cc7bb (33:47bb) + xor a + ld [hOAMUpdate], a + ret + +BattleAnimCmd_OAMOff: ; cc7bf (33:47bf) + ld a, $1 + ld [hOAMUpdate], a + ret + +BattleAnimCmd_ClearSprites: ; cc7c4 (33:47c4) + ld hl, BattleAnimFlags + set 3, [hl] + ret + +BattleAnimCmd_F5: ; cc7ca (33:47ca) + ret + +BattleAnimCmd_F6: ; cc7cb (33:47cb) + ret + +BattleAnimCmd_F7: ; cc7cc (33:47cc) + ret + +BattleAnimCmd_Sound: ; cc7cd (33:47cd) + call GetBattleAnimByte + ld e, a + srl a + srl a + ld [wSFXDuration], a + call .GetCryTrack + and 3 + ld [CryTracks], a ; CryTracks + + ld e, a + ld d, 0 + ld hl, .GetPanning + add hl, de + ld a, [hl] + ld [wStereoPanningMask], a + + call GetBattleAnimByte + ld e, a + ld d, 0 + callfar PlayStereoSFX + + ret +; cc7f8 (33:47f8) + +.GetPanning: ; cc7f8 + db $f0, $0f, $f0, $0f +; cc7fc + +.GetCryTrack: ; cc7fc (33:47fc) + ld a, [hBattleTurn] + and a + jr nz, .enemy + + ld a, e + ret + +.enemy + ld a, e + xor 1 + ret + +BattleAnimCmd_Cry: ; cc807 (33:4807) + call GetBattleAnimByte + and 3 + ld e, a + ld d, 0 + ld hl, .CryData +rept 4 + add hl, de +endr + + ld a, [rSVBK] + push af + ld a, 1 + ld [rSVBK], a + + ld a, [hBattleTurn] + and a + jr nz, .enemy + + ld a, $f0 + ld [CryTracks], a ; CryTracks + ld a, [BattleMonSpecies] ; BattleMonSpecies + jr .done_cry_tracks + +.enemy + ld a, $0f + ld [CryTracks], a ; CryTracks + ld a, [EnemyMonSpecies] ; EnemyMon + +.done_cry_tracks + push hl + call LoadCryHeader + pop hl + jr c, .done + + ld a, [hli] + ld c, a + ld a, [hli] + ld b, a + + push hl + ld hl, CryPitch + ld a, [hli] + ld h, [hl] + ld l, a + add hl, bc + ld a, l + ld [CryPitch], a + ld a, h + ld [CryPitch + 1], a + pop hl + + ld a, [hli] + ld c, a + ld b, [hl] + ld hl, CryLength ; CryLength + ld a, [hli] + ld h, [hl] + ld l, a + add hl, bc + + ld a, l + ld [CryLength], a ; CryLength + ld a, h + ld [CryLength + 1], a + ld a, 1 + ld [wStereoPanningMask], a + + callfar _PlayCryHeader + +.done + pop af + ld [rSVBK], a + ret +; cc871 (33:4871) + +.CryData: ; cc871 +; +pitch, +length + dw $0000, $00c0 + dw $0000, $0040 + dw $0000, $0000 + dw $0000, $0000 +; cc881 + + +PlayHitSound: ; cc881 + ld a, [wNumHits] + cp $1 + jr z, .okay + cp $4 + ret nz + +.okay + ld a, [TypeModifier] + and $7f + ret z + + cp 10 + ld de, SFX_DAMAGE + jr z, .play + + ld de, SFX_SUPER_EFFECTIVE + jr nc, .play + + ld de, SFX_NOT_VERY_EFFECTIVE + +.play + call PlaySFX + ret +; cc8a4 + +BattleAnimAssignPals: ; cc8a4 + ld a, [hCGB] + and a + jr nz, .cgb + ld a, [hSGB] + and a + ld a, %11100000 + jr z, .sgb + ld a, %11110000 + +.sgb + ld [wOBP0], a + ld a, %11100100 + ld [wBGP], a + ld [wOBP1], a + ret + +.cgb + ld a, %11100100 + ld [wBGP], a + ld [wOBP0], a + ld [wOBP1], a + call DmgToCgbBGPals + lb de, %11100100, %11100100 + call DmgToCgbObjPals + ret +; cc8d3 + +ClearBattleAnims: ; cc8d3 +; Clear animation block + ld hl, LYOverrides + ld bc, wBattleAnimEnd - LYOverrides +.loop + ld [hl], $0 + inc hl + dec bc + ld a, c + or b + jr nz, .loop + + ld hl, FXAnimID + ld e, [hl] + inc hl + ld d, [hl] + ld hl, BattleAnimations + add hl, de + add hl, de + call GetBattleAnimPointer + call BattleAnimAssignPals + call BattleAnimDelayFrame + ret +; cc8f6 + +BattleAnim_RevertPals: ; cc8f6 + call WaitTop + ld a, %11100100 + ld [wBGP], a + ld [wOBP0], a + ld [wOBP1], a + call DmgToCgbBGPals + lb de, %11100100, %11100100 + call DmgToCgbObjPals + xor a + ld [hSCX], a + ld [hSCY], a + call BattleAnimDelayFrame + ld a, $1 + ld [hBGMapMode], a + ret +; cc91a + +BattleAnim_SetBGPals: ; cc91a + ld [rBGP], a + ld a, [hCGB] + and a + ret z + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, BGPals + ld de, UnknBGPals + ld a, [rBGP] + ld b, a + ld c, 7 + call CopyPals + ld hl, OBPals + ld de, UnknOBPals + ld a, [rBGP] + ld b, a + ld c, 2 + call CopyPals + pop af + ld [rSVBK], a + ld a, $1 + ld [hCGBPalUpdate], a + ret +; cc94b + +BattleAnim_SetOBPals: ; cc94b + ld [rOBP0], a + ld a, [hCGB] + and a + ret z + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld hl, OBPals palette PAL_BATTLE_OB_GRAY + ld de, UnknOBPals palette PAL_BATTLE_OB_GRAY + ld a, [rOBP0] + ld b, a + ld c, 2 + call CopyPals + pop af + ld [rSVBK], a + ld a, $1 + ld [hCGBPalUpdate], a + ret +; cc96e + +BattleAnim_UpdateOAM_All: ; cc96e + ld a, $0 + ld [wBattleAnimOAMPointerLo], a + ld hl, ActiveAnimObjects + ld e, 10 +.loop + ld a, [hl] + and a + jr z, .next + ld c, l + ld b, h + push hl + push de + call DoBattleAnimFrame + call BattleAnimOAMUpdate + pop de + pop hl + jr c, .done + +.next + ld bc, BATTLEANIMSTRUCT_LENGTH + add hl, bc + dec e + jr nz, .loop + ld a, [wBattleAnimOAMPointerLo] + ld l, a + ld h, HIGH(Sprites) +.loop2 + ld a, l + cp LOW(SpritesEnd) + jr nc, .done + xor a + ld [hli], a + jr .loop2 + +.done + ret +; cc9a1 diff --git a/engine/battle_anims/bg_effects.asm b/engine/battle_anims/bg_effects.asm new file mode 100644 index 000000000..ab4a8036b --- /dev/null +++ b/engine/battle_anims/bg_effects.asm @@ -0,0 +1,2958 @@ + const_def + const BGSQUARE_SIX + const BGSQUARE_FOUR + const BGSQUARE_TWO + const BGSQUARE_SEVEN + const BGSQUARE_FIVE + const BGSQUARE_THREE + +; BG effects for use in battle animations. + +ExecuteBGEffects: ; c8000 (32:4000) + ld hl, ActiveBGEffects + ld e, 5 +.loop + ld a, [hl] + and a + jr z, .next + ld c, l + ld b, h + push hl + push de + call DoBattleBGEffectFunction + pop de + pop hl +.next + ld bc, 4 + add hl, bc + dec e + jr nz, .loop + ret + +QueueBGEffect: ; c801a (32:401a) + ld hl, ActiveBGEffects + ld e, 5 +.loop + ld a, [hl] + and a + jr z, .load + ld bc, 4 + add hl, bc + dec e + jr nz, .loop + scf + ret + +.load + ld c, l + ld b, h + ld hl, BG_EFFECT_STRUCT_FUNCTION + add hl, bc + ld a, [wBattleAnimTemp0] + ld [hli], a + ld a, [wBattleAnimTemp1] + ld [hli], a + ld a, [wBattleAnimTemp2] + ld [hli], a + ld a, [wBattleAnimTemp3] + ld [hl], a + ret + +EndBattleBGEffect: ; c8043 (32:4043) + ld hl, BG_EFFECT_STRUCT_FUNCTION + add hl, bc + ld [hl], 0 + ret + +DoBattleBGEffectFunction: ; c804a (32:404a) + ld hl, BG_EFFECT_STRUCT_FUNCTION + add hl, bc + ld e, [hl] + ld d, 0 + ld hl, BattleBGEffects + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp hl + +BattleBGEffects: ; c805a (32:405a) +; entries correspond to ANIM_BG_* constants + dw BattleBGEffect_End + dw BattleBGEffect_FlashInverted + dw BattleBGEffect_FlashWhite + dw BattleBGEffect_WhiteHues + dw BattleBGEffect_BlackHues + dw BattleBGEffect_AlternateHues + dw BattleBGEffect_06 + dw BattleBGEffect_07 + dw BattleBGEffect_08 + dw BattleBGEffect_HideMon + dw BattleBGEffect_ShowMon + dw BattleBGEffect_EnterMon + dw BattleBGEffect_ReturnMon + dw BattleBGEffect_Surf + dw BattleBGEffect_Whirlpool + dw BattleBGEffect_Teleport + dw BattleBGEffect_NightShade + dw BattleBGEffect_FeetFollow + dw BattleBGEffect_HeadFollow + dw BattleBGEffect_DoubleTeam + dw BattleBGEffect_AcidArmor + dw BattleBGEffect_RapidFlash + dw BattleBGEffect_16 + dw BattleBGEffect_17 + dw BattleBGEffect_18 + dw BattleBGEffect_19 + dw BattleBGEffect_1a + dw BattleBGEffect_1b + dw BattleBGEffect_1c + dw BattleBGEffect_1d + dw BattleBGEffect_1e + dw BattleBGEffect_1f + dw BattleBGEffect_20 + dw BattleBGEffect_Withdraw + dw BattleBGEffect_BounceDown + dw BattleBGEffect_Dig + dw BattleBGEffect_Tackle + dw BattleBGEffect_25 + dw BattleBGEffect_26 + dw BattleBGEffect_27 + dw BattleBGEffect_28 + dw BattleBGEffect_Psychic + dw BattleBGEffect_2a + dw BattleBGEffect_2b + dw BattleBGEffect_2c + dw BattleBGEffect_2d + dw BattleBGEffect_2e + dw BattleBGEffect_2f + dw BattleBGEffect_30 + dw BattleBGEffect_31 + dw BattleBGEffect_32 + dw BattleBGEffect_VibrateMon + dw BattleBGEffect_WobbleMon + dw BattleBGEffect_35 + + +BattleBGEffect_End: ; c80c6 (32:40c6) + call EndBattleBGEffect + ret + +BatttleBGEffects_GetNamedJumptablePointer: ; c80ca (32:40ca) + ld hl, BG_EFFECT_STRUCT_JT_INDEX + add hl, bc + ld l, [hl] + ld h, 0 + add hl, hl + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + ret + +BattleBGEffects_AnonJumptable: ; c80d7 (32:40d7) + pop de + ld hl, BG_EFFECT_STRUCT_JT_INDEX + add hl, bc + ld l, [hl] + ld h, 0 + add hl, hl + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp hl + +BattleBGEffects_IncrementJumptable: ; c80e5 (32:40e5) + ld hl, BG_EFFECT_STRUCT_JT_INDEX + add hl, bc + inc [hl] + ret + +BattleBGEffect_FlashInverted: ; c80eb (32:40eb) + ld de, .inverted + jp BattleBGEffect_FlashContinue + +.inverted + db %11100100 ; 3210 + db %00011011 ; 0123 +; c80f3 + +BattleBGEffect_FlashWhite: ; c80f3 (32:40f3) + ld de, .white + jp BattleBGEffect_FlashContinue + +.white + db %11100100 ; 3210 + db %00000000 ; 0000 +; c80fb + +BattleBGEffect_FlashContinue: ; c80fb (32:40fb) +; current timer, flash duration, number of flashes + ld a, $1 + ld [wBattleAnimTemp0], a + ld hl, BG_EFFECT_STRUCT_JT_INDEX + add hl, bc + ld a, [hl] + and a + jr z, .init + dec [hl] + ret + +.init + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + ld a, [hl] + ld hl, BG_EFFECT_STRUCT_JT_INDEX + add hl, bc + ld [hl], a + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld a, [hl] + and a + jr nz, .apply_pal + call EndBattleBGEffect + ret + +.apply_pal + dec a + ld [hl], a + and 1 + ld l, a + ld h, 0 + add hl, de + ld a, [hl] + ld [wBGP], a + ret + +BattleBGEffect_WhiteHues: ; c812d (32:412d) + ld de, .Pals + call BattleBGEffect_GetNthDMGPal + jr c, .quit + ld [wBGP], a + ret + +.quit + call EndBattleBGEffect + ret + +.Pals: + db %11100100 + db %11100000 + db %11010000 + db -1 +; c8141 + +BattleBGEffect_BlackHues: ; c8141 (32:4141) + ld de, .Pals + call BattleBGEffect_GetNthDMGPal + jr c, .quit + ld [wBGP], a + ret + +.quit + call EndBattleBGEffect + ret + +.Pals: + db %11100100 + db %11110100 + db %11111000 + db -1 +; c8155 + +BattleBGEffect_AlternateHues: ; c8155 (32:4155) + ld de, .Pals + call BattleBGEffect_GetNthDMGPal + jr c, .quit + ld [wBGP], a + ld [wOBP1], a + ret + +.quit + call EndBattleBGEffect + ret + +.Pals: + db %11100100 + db %11111000 + db %11111100 + db %11111000 + db %11100100 + db %10010000 + db %01000000 + db %10010000 + db -2 +; c8171 + +BattleBGEffect_06: ; c8171 (32:4171) + call BattleBGEffects_CheckSGB + jr nz, .sgb + ld de, .PalsCGB + jr .okay + +.sgb + ld de, .PalsSGB +.okay + call BattleBGEffect_GetNthDMGPal + ld [wOBP0], a + ret + +.PalsCGB: + db %11100100 + db %10010000 + db -2 + +.PalsSGB: + db %11110000 + db %11000000 + db -2 +; c818b + +BattleBGEffect_07: ; c818b (32:418b) + call BattleBGEffects_CheckSGB + jr nz, .sgb + ld de, .PalsCGB + jr .okay + +.sgb + ld de, .PalsSGB +.okay + call BattleBGEffect_GetNthDMGPal + ld [wOBP0], a + ret + +.PalsCGB: + db %11100100 + db %11011000 + db -2 + +.PalsSGB: + db %11110000 + db %11001100 + db -2 +; c81a5 + +BattleBGEffect_08: ; c81a5 (32:41a5) + ld de, .Pals + call BattleBGEffect_GetNthDMGPal + ld [wBGP], a + ret + +.Pals: + db %00011011 + db %01100011 + db %10000111 + db -2 +; c81b3 + +BattleBGEffect_HideMon: ; c81b3 (32:41b3) + call BattleBGEffects_AnonJumptable +.anon_dw + dw .zero + dw BattleBGEffects_IncrementJumptable + dw BattleBGEffects_IncrementJumptable + dw BattleBGEffects_IncrementJumptable + dw .four + + +.zero + call BattleBGEffects_IncrementJumptable + push bc + call BGEffect_CheckBattleTurn + jr nz, .player_side + hlcoord 12, 0 + lb bc, 7, 7 + jr .got_pointer + +.player_side + hlcoord 2, 6 + lb bc, 6, 6 +.got_pointer + call ClearBox + pop bc + xor a + ld [hBGMapThird], a + ld a, $1 + ld [hBGMapMode], a + ret + +.four + xor a + ld [hBGMapMode], a + call EndBattleBGEffect + ret + +BattleBGEffect_ShowMon: ; c81ea (32:41ea) + call BGEffect_CheckFlyDigStatus + jr z, .not_flying + call EndBattleBGEffect + ret + +.not_flying + call BGEffect_CheckBattleTurn + jr nz, .player_side + ld de, .EnemyData + jr .got_pointer + +.player_side + ld de, .PlayerData +.got_pointer + ld a, e + ld [wBattleAnimTemp1], a + ld a, d + ld [wBattleAnimTemp2], a + call BattleBGEffect_RunPicResizeScript + ret + +.PlayerData: + db 0, $31, 0 + db -1 +.EnemyData: + db 3, $00, 3 + db -1 +; c8214 + +BattleBGEffect_FeetFollow: ; c8214 (32:4214) + call BattleBGEffects_AnonJumptable +.anon_dw + dw .zero + dw .one + dw BattleBGEffects_IncrementJumptable + dw BattleBGEffects_IncrementJumptable + dw BattleBGEffects_IncrementJumptable + dw .five + + +.zero + call BGEffect_CheckFlyDigStatus + jr z, .not_flying_digging + ld hl, wNumActiveBattleAnims + inc [hl] + call EndBattleBGEffect + ret + +.not_flying_digging + call BattleBGEffects_IncrementJumptable + push bc + call BGEffect_CheckBattleTurn + jr nz, .player_turn + ld a, ANIM_OBJ_PLAYERFEETFOLLOW + ld [wBattleAnimTemp0], a + ld a, 16 * 8 + 4 + jr .okay + +.player_turn + ld a, ANIM_OBJ_ENEMYFEETFOLLOW + ld [wBattleAnimTemp0], a + ld a, 6 * 8 +.okay + ld [wBattleAnimTemp1], a + ld a, 8 * 8 + ld [wBattleAnimTemp2], a + xor a + ld [wBattleAnimTemp3], a + call _QueueBattleAnimation + pop bc + ret + +.one + call BattleBGEffects_IncrementJumptable + push bc + call BGEffect_CheckBattleTurn + jr nz, .player_turn_2 + hlcoord 12, 6 + lb bc, 1, 7 + jr .okay2 + +.player_turn_2 + hlcoord 2, 6 + lb bc, 1, 6 +.okay2 + call ClearBox + ld a, $1 + ld [hBGMapMode], a + pop bc + ret + +.five + xor a + ld [hBGMapMode], a + call EndBattleBGEffect + ret + +BattleBGEffect_HeadFollow: ; c8281 (32:4281) + call BattleBGEffects_AnonJumptable +.anon_dw + dw .zero + dw .one + dw BattleBGEffects_IncrementJumptable + dw BattleBGEffects_IncrementJumptable + dw BattleBGEffects_IncrementJumptable + dw .five + + +.zero + call BGEffect_CheckFlyDigStatus + jr z, .not_flying_digging + ld hl, wNumActiveBattleAnims + inc [hl] + call EndBattleBGEffect + ret + +.not_flying_digging + call BattleBGEffects_IncrementJumptable + push bc + call BGEffect_CheckBattleTurn + jr nz, .player_turn + ld a, ANIM_OBJ_BA + ld [wBattleAnimTemp0], a + ld a, 16 * 8 + 4 + jr .okay + +.player_turn + ld a, ANIM_OBJ_BB + ld [wBattleAnimTemp0], a + ld a, 6 * 8 +.okay + ld [wBattleAnimTemp1], a + ld a, 8 * 8 + ld [wBattleAnimTemp2], a + xor a + ld [wBattleAnimTemp3], a + call _QueueBattleAnimation + pop bc + ret + +.one + call BattleBGEffects_IncrementJumptable + push bc + call BGEffect_CheckBattleTurn + jr nz, .player_turn_2 + hlcoord 12, 5 + lb bc, 2, 7 + jr .okay2 + +.player_turn_2 + hlcoord 2, 6 + lb bc, 2, 6 +.okay2 + call ClearBox + ld a, $1 + ld [hBGMapMode], a + pop bc + ret + +.five + xor a + ld [hBGMapMode], a + call EndBattleBGEffect + ret + +_QueueBattleAnimation: ; c82ee (32:42ee) + callfar QueueBattleAnimation + ret + +BattleBGEffect_27: ; c82f5 (32:42f5) + call BattleBGEffects_AnonJumptable +.anon_dw + dw .zero + dw .one + dw BattleBGEffects_IncrementJumptable + dw BattleBGEffects_IncrementJumptable + dw .four + + +.zero + call BattleBGEffects_IncrementJumptable + call BGEffect_CheckBattleTurn + ld [hl], a + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + ld a, [hl] + and a + jr z, .user + ld a, $9 + jr .okay + +.user + ld a, $8 +.okay + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld [hl], a + ret + +.one + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + ld a, [hl] + and a + jr z, .user_2 + hlcoord 0, 6 + lb de, 8, 6 +.row1 + push de + push hl +.col1 + inc hl + ld a, [hld] + ld [hli], a + dec d + jr nz, .col1 + pop hl + ld de, SCREEN_WIDTH + add hl, de + pop de + dec e + jr nz, .row1 + jr .okay2 + +.user_2 + hlcoord 19, 0 + lb de, 8, 7 +.row2 + push de + push hl +.col2 + dec hl + ld a, [hli] + ld [hld], a + dec d + jr nz, .col2 + pop hl + ld de, SCREEN_WIDTH + add hl, de + pop de + dec e + jr nz, .row2 +.okay2 + xor a + ld [hBGMapThird], a + ld a, $1 + ld [hBGMapMode], a + call BattleBGEffects_IncrementJumptable + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + dec [hl] + ret + +.four + xor a + ld [hBGMapMode], a + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld a, [hl] + and a + jr z, .done + ld hl, BG_EFFECT_STRUCT_JT_INDEX + add hl, bc + ld [hl], $1 + ret + +.done + call EndBattleBGEffect + ret + +BattleBGEffect_EnterMon: ; c837b (32:437b) + call BGEffect_CheckBattleTurn + jr nz, .player_turn + ld de, .EnemyData + jr .okay + +.player_turn + ld de, .PlayerData +.okay + ld a, e + ld [wBattleAnimTemp1], a + ld a, d + ld [wBattleAnimTemp2], a + call BattleBGEffect_RunPicResizeScript + ret + +.PlayerData: + db 2, $31, 2 + db 1, $31, 1 + db 0, $31, 0 + db -1 +.EnemyData: + db 5, $00, 5 + db 4, $00, 4 + db 3, $00, 3 + db -1 +; c83a8 + +BattleBGEffect_ReturnMon: ; c83a8 (32:43a8) + call BGEffect_CheckBattleTurn + jr nz, .player_turn + ld de, .EnemyData + jr .okay + +.player_turn + ld de, .PlayerData +.okay + ld a, e + ld [wBattleAnimTemp1], a + ld a, d + ld [wBattleAnimTemp2], a + call BattleBGEffect_RunPicResizeScript + ret + +.PlayerData: + db 0, $31, 0 + db -2, $66, 0 + db 1, $31, 1 + db -2, $44, 1 + db 2, $31, 2 + db -2, $22, 2 + db -3, $00, 0 + db -1 +.EnemyData: + db 3, $00, 3 + db -2, $77, 3 + db 4, $00, 4 + db -2, $55, 4 + db 5, $00, 5 + db -2, $33, 5 + db -3, $00, 0 + db -1 +; c83ed + +BattleBGEffect_RunPicResizeScript: ; c83ed (32:43ed) + call BattleBGEffects_AnonJumptable +.anon_dw + dw .zero + dw BattleBGEffects_IncrementJumptable + dw BattleBGEffects_IncrementJumptable + dw .restart + dw .end + + +.zero + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld e, [hl] + ld d, $0 + inc [hl] + ld a, [wBattleAnimTemp1] + ld l, a + ld a, [wBattleAnimTemp2] + ld h, a + add hl, de + add hl, de + add hl, de + ld a, [hl] + cp -1 + jr z, .end + cp -2 + jr z, .clear + cp -3 + jr z, .skip + call .PlaceGraphic +.skip + call BattleBGEffects_IncrementJumptable + ld a, $1 + ld [hBGMapMode], a + ret + +.clear + call .ClearBox + jr .zero + +.restart + xor a + ld [hBGMapMode], a + ld hl, BG_EFFECT_STRUCT_JT_INDEX + add hl, bc + ld [hl], $0 + ret + +.end + xor a + ld [hBGMapMode], a + call EndBattleBGEffect + ret + +.ClearBox: +; get dims + push bc + inc hl + ld a, [hli] + ld b, a + and $f + ld c, a + ld a, b + swap a + and $f + ld b, a +; get coords + ld e, [hl] + ld d, 0 + ld hl, .Coords + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + call ClearBox + pop bc + ret + +.PlaceGraphic: +; get dims + push bc + push hl + ld e, [hl] + ld d, 0 + ld hl, .BGSquares + add hl, de + add hl, de + add hl, de + ld a, [hli] + ld b, a + and $f + ld c, a + ld a, b + swap a + and $f + ld b, a +; store pointer + ld e, [hl] + inc hl + ld d, [hl] +; get byte + pop hl + inc hl + ld a, [hli] + ld [wBattleAnimTemp0], a +; get coord + push de + ld e, [hl] + ld d, 0 + ld hl, .Coords + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + pop de +; fill box +.row + push bc + push hl + ld a, [wBattleAnimTemp0] + ld b, a +.col + ld a, [de] + add b + ld [hli], a + inc de + dec c + jr nz, .col + pop hl + ld bc, SCREEN_WIDTH + add hl, bc + pop bc + dec b + jr nz, .row + pop bc + ret + +.Coords: + dwcoord 2, 6 + dwcoord 3, 8 + dwcoord 4, 10 + dwcoord 12, 0 + dwcoord 13, 2 + dwcoord 14, 4 + +.BGSquares: +bgsquare: MACRO + dn \1, \2 + dw \3 +endm + + bgsquare 6, 6, .SixBySix + bgsquare 4, 4, .FourByFour + bgsquare 2, 2, .TwoByTwo + bgsquare 7, 7, .SevenBySeven + bgsquare 5, 5, .FiveByFive + bgsquare 3, 3, .ThreeByThree + +.SixBySix: + db $00, $06, $0c, $12, $18, $1e + db $01, $07, $0d, $13, $19, $1f + db $02, $08, $0e, $14, $1a, $20 + db $03, $09, $0f, $15, $1b, $21 + db $04, $0a, $10, $16, $1c, $22 + db $05, $0b, $11, $17, $1d, $23 + +.FourByFour: + db $00, $0c, $12, $1e + db $02, $0e, $14, $20 + db $03, $0f, $15, $21 + db $05, $11, $17, $23 + +.TwoByTwo: + db $00, $1e + db $05, $23 + +.SevenBySeven: + db $00, $07, $0e, $15, $1c, $23, $2a + db $01, $08, $0f, $16, $1d, $24, $2b + db $02, $09, $10, $17, $1e, $25, $2c + db $03, $0a, $11, $18, $1f, $26, $2d + db $04, $0b, $12, $19, $20, $27, $2e + db $05, $0c, $13, $1a, $21, $28, $2f + db $06, $0d, $14, $1b, $22, $29, $30 + +.FiveByFive: + db $00, $07, $15, $23, $2a + db $01, $08, $16, $24, $2b + db $03, $0a, $18, $26, $2d + db $05, $0c, $1a, $28, $2f + db $06, $0d, $1b, $29, $30 + +.ThreeByThree: + db $00, $15, $2a + db $03, $18, $2d + db $06, $1b, $30 +; c8545 + +BattleBGEffect_Surf: ; c8545 (32:4545) + call BattleBGEffects_AnonJumptable +.anon_dw + dw .zero + dw .one + dw .two + + +.zero + call BattleBGEffects_IncrementJumptable + lb de, 2, 2 + call InitSurfWaves + +.one + ld a, [hLCDCPointer] + and a + ret z + push bc + call .RotatewSurfWaveBGEffect + pop bc + ret + +.two + call BattleAnim_ResetLCDStatCustom + ret + +.RotatewSurfWaveBGEffect: + ld hl, wSurfWaveBGEffect + ld de, wSurfWaveBGEffect + 1 + ld c, wSurfWaveBGEffectEnd - wSurfWaveBGEffect - 1 + ld a, [hl] + push af +.loop + ld a, [de] + inc de + ld [hli], a + dec c + jr nz, .loop + pop af + ld [hl], a + ld de, LYOverridesBackup + ld hl, wSurfWaveBGEffect + ld bc, $0 +.loop2 + ld a, [hLYOverrideStart] + cp e + jr nc, .load_zero + push hl + add hl, bc + ld a, [hl] + pop hl + jr .okay + +.load_zero + xor a +.okay + ld [de], a + ld a, c + inc a + and $3f + ld c, a + inc de + ld a, e + cp $5f + jr c, .loop2 + ret + +BattleBGEffect_Whirlpool: ; c8599 (32:4599) + call BattleBGEffects_AnonJumptable +.anon_dw + dw .zero + dw .one + dw .two + + +.zero + call BattleBGEffects_IncrementJumptable + call BattleBGEffects_ClearLYOverrides + ld a, rSCY - $ff00 + ld [hLCDCPointer], a + xor a + ld [hLYOverrideStart], a + ld a, $5e + ld [hLYOverrideEnd], a + lb de, 2, 2 + call Functionc8f2e + ret + +.one + call BattleBGEffect_WavyScreenFX + ret + +.two + call BattleAnim_ResetLCDStatCustom + ret + +BattleBGEffect_30: ; c85c2 (32:45c2) + call BattleBGEffects_ClearLYOverrides + ld a, rSCY - $ff00 + call BattleBGEffect_SetLCDStatCustoms1 + call EndBattleBGEffect + ret + +BattleBGEffect_31: ; c85ce (32:45ce) + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld a, [hl] + ld e, a + add $4 + ld [hl], a + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + ld a, [hl] + and $f0 + swap a + xor $ff + add $4 + ld d, a + ld hl, BG_EFFECT_STRUCT_JT_INDEX + add hl, bc + ld a, [hl] + ld [wBattleAnimTemp0], a + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + ld a, [hl] + cp $20 + jr nc, .done + inc [hl] + inc [hl] + call Functionc8f9a + ret + +.done + call BattleBGEffects_ClearLYOverrides + call EndBattleBGEffect + ret + +BattleBGEffect_32: ; c8603 (32:4603) + call BattleAnim_ResetLCDStatCustom + ret + +BattleBGEffect_Psychic: ; c8607 (32:4607) + call BattleBGEffects_AnonJumptable +.anon_dw + dw .zero + dw .one + dw .two + + +.zero + call BattleBGEffects_IncrementJumptable + call BattleBGEffects_ClearLYOverrides + ld a, rSCX - $ff00 + ld [hLCDCPointer], a + xor a + ld [hLYOverrideStart], a + ld a, $5f + ld [hLYOverrideEnd], a + lb de, 6, 5 + call Functionc8f2e + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld [hl], $0 + ret + +.one + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld a, [hl] + inc [hl] + and $3 + ret nz + call BattleBGEffect_WavyScreenFX + ret + +.two + call BattleAnim_ResetLCDStatCustom + ret + +BattleBGEffect_Teleport: ; c863f (32:463f) + call BattleBGEffects_AnonJumptable +.anon_dw + dw .zero + dw .one + dw .two + + +.zero + call BattleBGEffects_IncrementJumptable + call BattleBGEffects_ClearLYOverrides + ld a, rSCX - $ff00 + call BattleBGEffect_SetLCDStatCustoms1 + lb de, 6, 5 + call Functionc8f2e + ret + +.one + call BattleBGEffect_WavyScreenFX + ret + +.two + call BattleAnim_ResetLCDStatCustom + ret + +BattleBGEffect_NightShade: ; c8662 (32:4662) + call BattleBGEffects_AnonJumptable +.anon_dw + dw .zero + dw .one + dw .two + + +.zero + call BattleBGEffects_IncrementJumptable + call BattleBGEffects_ClearLYOverrides + ld a, rSCY - $ff00 + call BattleBGEffect_SetLCDStatCustoms1 + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld e, [hl] + ld d, 2 + call Functionc8f2e + ret + +.one + call BattleBGEffect_WavyScreenFX + ret + +.two + call BattleAnim_ResetLCDStatCustom + ret + +BattleBGEffect_DoubleTeam: ; c8689 (32:4689) + call BattleBGEffects_AnonJumptable +.anon_dw + dw .zero + dw .one + dw .two + dw .three + dw .four + dw .five + + +.zero + call BattleBGEffects_IncrementJumptable + call BattleBGEffects_ClearLYOverrides + ld a, rSCX - $ff00 + call BattleBGEffect_SetLCDStatCustoms1 + ld a, [hLYOverrideEnd] + inc a + ld [hLYOverrideEnd], a + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + ld [hl], $0 + ret + +.one + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld a, [hl] + cp $10 + jr nc, .next + inc [hl] + call .UpdateLYOverrides + ret + +.three + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld a, [hl] + cp $ff + jr z, .next + dec [hl] + call .UpdateLYOverrides + ret + +.next + call BattleBGEffects_IncrementJumptable + ret + +.two + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + ld a, [hl] + ld d, $2 + call BattleBGEffects_Sine + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + add [hl] + call .UpdateLYOverrides + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + ld a, [hl] + add $4 + ld [hl], a + +.four + ret + +.UpdateLYOverrides: + ld e, a + xor $ff + inc a + ld d, a + ld h, HIGH(LYOverridesBackup) + ld a, [hLYOverrideStart] + ld l, a + ld a, [hLYOverrideEnd] + sub l + srl a + push af +.loop + ld [hl], e + inc hl + ld [hl], d + inc hl + dec a + jr nz, .loop + pop af + ret nc + ld [hl], e + ret + +.five + call BattleAnim_ResetLCDStatCustom + ret + +BattleBGEffect_AcidArmor: ; c8709 (32:4709) + call BattleBGEffects_AnonJumptable +.anon_dw + dw .zero + dw .one + dw .two + + +.zero + call BattleBGEffects_IncrementJumptable + call BattleBGEffects_ClearLYOverrides + ld a, rSCY - $ff00 + call BattleBGEffect_SetLCDStatCustoms1 + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld e, [hl] + ld d, 2 + call Functionc8f2e + ld h, HIGH(LYOverridesBackup) + ld a, [hLYOverrideEnd] + ld l, a + ld [hl], $0 + dec l + ld [hl], $0 + ret + +.one + ld a, [hLYOverrideEnd] + ld l, a + ld h, HIGH(LYOverridesBackup) + ld e, l + ld d, h + dec de +.loop + ld a, [de] + dec de + ld [hld], a + ld a, [hLYOverrideStart] + cp l + jr nz, .loop + ld [hl], $90 + ld a, [hLYOverrideEnd] + ld l, a + ld a, [hl] + cp $1 + jr c, .okay + cp $90 + jr z, .okay + ld [hl], $0 +.okay + dec l + ld a, [hl] + cp $2 + ret c + cp $90 + ret z + ld [hl], $0 + ret + +.two + call BattleAnim_ResetLCDStatCustom + ret + +BattleBGEffect_Withdraw: ; c8761 (32:4761) + call BattleBGEffects_AnonJumptable +.anon_dw + dw .zero + dw .one + dw .two + + +.zero + call BattleBGEffects_IncrementJumptable + call BattleBGEffects_ClearLYOverrides + ld a, rSCY - $ff00 + call BattleBGEffect_SetLCDStatCustoms1 + ld a, [hLYOverrideEnd] + inc a + ld [hLYOverrideEnd], a + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + ld [hl], $1 + ret + +.one + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld a, [hl] + and $3f + ld d, a + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + ld a, [hl] + cp d + ret nc + call BGEffect_DisplaceLYOverridesBackup + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld a, [hl] + rlca + rlca + and $3 + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + add [hl] + ld [hl], a + ret + +.two + call BattleAnim_ResetLCDStatCustom + ret + +BattleBGEffect_Dig: ; c87a7 (32:47a7) + call BattleBGEffects_AnonJumptable +.anon_dw + dw .zero + dw .one + dw .two + dw .three + + +.zero + call BattleBGEffects_IncrementJumptable + call BattleBGEffects_ClearLYOverrides + ld a, rSCY - $ff00 + call BattleBGEffect_SetLCDStatCustoms1 + ld a, [hLYOverrideEnd] + inc a + ld [hLYOverrideEnd], a + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + ld [hl], $2 + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld [hl], $0 + ret + +.one + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld a, [hl] + and a + jr z, .next + dec [hl] + ret + +.next + ld [hl], $10 + call BattleBGEffects_IncrementJumptable +.two + ld a, [hLYOverrideStart] + ld l, a + ld a, [hLYOverrideEnd] + sub l + dec a + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + cp [hl] + ret c + ld a, [hl] + push af + and $7 + jr nz, .skip + ld hl, BG_EFFECT_STRUCT_JT_INDEX + add hl, bc + dec [hl] +.skip + pop af + call BGEffect_DisplaceLYOverridesBackup + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + inc [hl] + inc [hl] + ret + +.three + call BattleAnim_ResetLCDStatCustom + ret + +BattleBGEffect_Tackle: ; c8805 (32:4805) + call BattleBGEffects_AnonJumptable +.anon_dw + dw .zero + dw Tackle_BGEffect25_2d_one + dw Tackle_BGEffect25_2d_two + dw .three + + +.zero + call BattleBGEffects_IncrementJumptable + call BattleBGEffects_ClearLYOverrides + ld a, rSCX - $ff00 + call BattleBGEffect_SetLCDStatCustoms1 + ld a, [hLYOverrideEnd] + inc a + ld [hLYOverrideEnd], a + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld [hl], $0 + call BGEffect_CheckBattleTurn + jr nz, .player_side + ld a, 2 + jr .okay + +.player_side + ld a, -2 +.okay + ld [hl], a + ret + +.three + call BattleAnim_ResetLCDStatCustom + ret + +BattleBGEffect_25: ; c8837 (32:4837) + call BattleBGEffects_AnonJumptable +.anon_dw + dw .zero + dw Tackle_BGEffect25_2d_one + dw Tackle_BGEffect25_2d_two + dw .three + + +.zero + call BattleBGEffects_IncrementJumptable + call BattleBGEffects_ClearLYOverrides + ld a, rSCX - $ff00 + call BattleBGEffect_SetLCDStatCustoms2 + ld a, [hLYOverrideEnd] + inc a + ld [hLYOverrideEnd], a + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld [hl], $0 + call BGEffect_CheckBattleTurn + jr nz, .player_side + ld a, 2 + jr .okay + +.player_side + ld a, -2 +.okay + ld [hl], a + ret + +.three + call BattleAnim_ResetLCDStatCustom + ret + +Tackle_BGEffect25_2d_one: + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld a, [hl] + cp -8 + jr z, .reached_limit + cp 8 + jr nz, .finish +.reached_limit + call BattleBGEffects_IncrementJumptable +.finish + call Functionc88a5 + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + ld a, [hl] + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + add [hl] + ld [hl], a + ret + +Tackle_BGEffect25_2d_two: + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld a, [hl] + and a + jr nz, .asm_c8893 + call BattleBGEffects_IncrementJumptable +.asm_c8893 + call Functionc88a5 + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + ld a, [hl] + xor $ff + inc a + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + add [hl] + ld [hl], a + ret + +Functionc88a5: ; c88a5 (32:48a5) + push af + ld a, [FXAnimID + 1] ; FXAnimID + 1 + or a + jr nz, .not_rollout + ld a, [FXAnimID] ; FXAnimID + cp ROLLOUT + jr z, .rollout +.not_rollout + pop af + jp BGEffect_FillLYOverridesBackup + +.rollout + ld a, [hLYOverrideStart] + ld d, a + ld a, [hLYOverrideEnd] + sub d + ld d, a + ld h, HIGH(LYOverridesBackup) + ld a, [hSCY] + or a + jr nz, .skip1 + ld a, [hLYOverrideStart] + or a + jr z, .skip2 + dec a + ld l, a + ld [hl], $0 + jr .skip2 + +.skip1 + ld a, [hLYOverrideEnd] + dec a + ld l, a + ld [hl], $0 +.skip2 + ld a, [hSCY] + ld l, a + ld a, [hLYOverrideStart] + sub l + jr nc, .skip3 + xor a + dec d +.skip3 + ld l, a + pop af +.loop + ld [hli], a + dec d + jr nz, .loop + ret + +BattleBGEffect_2d: ; c88e7 (32:48e7) + call BattleBGEffects_AnonJumptable +.anon_dw + dw BGEffect2d_2f_zero + dw Tackle_BGEffect25_2d_one + dw Tackle_BGEffect25_2d_two + dw .three + + +.three + call BattleAnim_ResetLCDStatCustom + ret + +BGEffect2d_2f_zero: + call BattleBGEffects_IncrementJumptable + call BattleBGEffects_ClearLYOverrides + ld a, rSCX - $ff00 + call BattleBGEffect_SetLCDStatCustoms1 + ld a, [hLYOverrideEnd] + inc a + ld [hLYOverrideEnd], a + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld [hl], $0 + call BGEffect_CheckBattleTurn + jr nz, .player_turn + ld a, -2 + jr .okay + +.player_turn + ld a, 2 +.okay + ld [hl], a + ret + +BattleBGEffect_2f: ; c8919 (32:4919) + call BattleBGEffects_AnonJumptable +.anon_dw + dw BGEffect2d_2f_zero + dw Tackle_BGEffect25_2d_one + dw .two + dw Tackle_BGEffect25_2d_two + dw .four + +.four + call BattleAnim_ResetLCDStatCustom +.two + ret + +BattleBGEffect_26: ; c892a (32:492a) + call BattleBGEffects_AnonJumptable +.anon_dw + dw .zero + dw .one + dw .two + + +.zero + call BattleBGEffects_IncrementJumptable + call BattleBGEffects_ClearLYOverrides + ld a, rSCX - $ff00 + call BattleBGEffect_SetLCDStatCustoms1 + ld a, [hLYOverrideEnd] + inc a + ld [hLYOverrideEnd], a + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld [hl], $0 + ret + +.one + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld a, [hl] + ld d, $8 + call BattleBGEffects_Sine + call BGEffect_FillLYOverridesBackup + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld a, [hl] + add $4 + ld [hl], a + ret + +.two + call BattleAnim_ResetLCDStatCustom + ret + +BattleBGEffect_2c: ; c8964 (32:4964) + call BattleBGEffects_AnonJumptable +.anon_dw + dw .zero + dw .one + dw .two + + +.zero + call BattleBGEffects_IncrementJumptable + call BattleBGEffects_ClearLYOverrides + ld a, rSCX - $ff00 + call BattleBGEffect_SetLCDStatCustoms1 + ld a, [hLYOverrideEnd] + inc a + ld [hLYOverrideEnd], a + xor a + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + ld [hli], a + ld [hl], a + ret + +.one + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld a, [hl] + ld d, $6 + call BattleBGEffects_Sine + push af + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + ld a, [hl] + ld d, $2 + call BattleBGEffects_Sine + ld e, a + pop af + add e + call BGEffect_FillLYOverridesBackup + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + ld a, [hl] + add $8 + ld [hl], a + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld a, [hl] + add $2 + ld [hl], a + ret + +.two + call BattleAnim_ResetLCDStatCustom + ret + +BattleBGEffect_28: ; c89b5 (32:49b5) + call BattleBGEffects_AnonJumptable +.anon_dw + dw .zero + dw .one + dw .two + + +.zero + call BattleBGEffects_IncrementJumptable + call BattleBGEffects_ClearLYOverrides + ld a, rSCX - $ff00 + call BattleBGEffect_SetLCDStatCustoms1 + ret + +.one + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld a, [hl] + cp $20 + ret nc + inc [hl] + ld d, a + ld e, 4 + call Functionc8f2e + ret + +.two + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld a, [hl] + and a + jr z, .reset + dec [hl] + ld d, a + ld e, 4 + call Functionc8f2e + ret + +.reset + call BattleAnim_ResetLCDStatCustom + ret + +BattleBGEffect_BounceDown: ; c89ee (32:49ee) + call BattleBGEffects_AnonJumptable +.anon_dw + dw .zero + dw .one + dw .two + + +.zero + call BattleBGEffects_IncrementJumptable + call BattleBGEffects_ClearLYOverrides + ld a, rSCY - $ff00 + call BattleBGEffect_SetLCDStatCustoms2 + ld a, [hLYOverrideEnd] + inc a + ld [hLYOverrideEnd], a + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + ld [hl], $1 + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld [hl], $20 + ret + +.one + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + ld a, [hl] + cp $38 + ret nc + push af + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld a, [hl] + ld d, $10 + call BattleBGEffects_Cosine + add $10 + ld d, a + pop af + add d + call BGEffect_DisplaceLYOverridesBackup + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + inc [hl] + inc [hl] + ret + +.two + call BattleAnim_ResetLCDStatCustom + ret + +BattleBGEffect_2a: ; c8a3a (32:4a3a) + call BattleBGEffects_AnonJumptable +.anon_dw + dw .zero + dw .one + dw .two + dw .three + dw .four + dw .five + +.zero + call BattleBGEffects_IncrementJumptable + ld a, $e4 + call BattleBGEffects_SetLYOverrides + ld a, $47 + call BattleBGEffect_SetLCDStatCustoms1 + ld a, [hLYOverrideEnd] + inc a + ld [hLYOverrideEnd], a + ld a, [hLYOverrideStart] + ld l, a + ld h, HIGH(LYOverridesBackup) +.loop + ld a, [hLYOverrideEnd] + cp l + jr z, .done + xor a + ld [hli], a + jr .loop + +.done + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld [hl], $0 +.one +.four + ret + +.two + call .GetLYOverride + jr nc, .next + call .SetLYOverridesBackup + ret + +.next + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld [hl], $0 + ld a, [hLYOverrideStart] + inc a + ld [hLYOverrideStart], a + call BattleBGEffects_IncrementJumptable + ret + +.three + call .GetLYOverride + jr nc, .finish + call .SetLYOverridesBackup + ld a, [hLYOverrideEnd] + dec a + ld l, a + ld [hl], e + ret + +.finish + call BattleBGEffects_IncrementJumptable + ret + +.SetLYOverridesBackup: + ld e, a + ld a, [hLYOverrideStart] + ld l, a + ld a, [hLYOverrideEnd] + sub l + srl a + ld h, HIGH(LYOverridesBackup) +.loop2 + ld [hl], e + inc hl + inc hl + dec a + jr nz, .loop2 + ret + +.five + call BattleBGEffects_ResetVideoHRAM + ret + +.GetLYOverride: + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld a, [hl] + inc [hl] + srl a + srl a + srl a + ld e, a + ld d, 0 + ld hl, .data + add hl, de + ld a, [hl] + cp $ff + ret + +.data + db $00, $40, $90, $e4 + db -1 +; c8acc + +BattleBGEffect_2b: ; c8acc (32:4acc) + call BattleBGEffects_AnonJumptable +.anon_dw + dw .zero + dw .one + + +.zero + call BattleBGEffects_IncrementJumptable + call BattleBGEffects_ClearLYOverrides + ld a, rSCX - $ff00 + call BattleBGEffect_SetLCDStatCustoms1 + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + ld [hl], $40 + ret + +.one + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + ld a, [hl] + and a + jr z, .done + dec [hl] + srl a + srl a + srl a + and $f + ld d, a + ld e, a + call Functionc8f2e + ret + +.done + call BattleAnim_ResetLCDStatCustom + ret + +BattleBGEffect_1c: ; c8b00 (32:4b00) + ld a, [hCGB] + and a + jr nz, .cgb + call BattleBGEffects_AnonJumptable +.anon_dw + dw .zero + dw .one + dw .two + + +.zero + call BattleBGEffects_IncrementJumptable + ld a, $e4 + call BattleBGEffects_SetLYOverrides + ld a, rBGP - $ff00 + ld [hLCDCPointer], a + xor a + ld [hLYOverrideStart], a + ld a, $60 + ld [hLYOverrideEnd], a + ret + +.one + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld a, [hl] + inc [hl] + ld e, a + and $7 + ret nz + ld a, e + and $18 + sla a + swap a + sla a + ld e, a + ld d, $0 + push bc + call BGEffect_CheckBattleTurn + jr nz, .player + ld hl, .CGB_DMGEnemyData + add hl, de + ld a, [hli] + ld [wOBP1], a + ld d, a + ld e, [hl] + lb bc, $2f, $30 + jr .okay + +.player + ld hl, .DMG_PlayerData + add hl, de + ld d, [hl] + inc hl + ld a, [hl] + ld [wOBP1], a + ld e, a + lb bc, $37, $28 +.okay + call .DMG_LYOverrideLoads + pop bc + ret + +.two + call BattleBGEffects_ResetVideoHRAM + ld a, $e4 + ld [wBGP], a + ld [wOBP1], a + ret + +.DMG_LYOverrideLoads: + ld hl, LYOverridesBackup +.loop1 + ld [hl], d + inc hl + dec b + jr nz, .loop1 +.loop2 + ld [hl], e + inc hl + dec c + jr nz, .loop2 + ret + +.cgb + ld de, .Jumptable + call BatttleBGEffects_GetNamedJumptablePointer + jp hl + +.Jumptable: + dw .cgb_zero + dw .cgb_one + dw .cgb_two +.cgb_zero + call BattleBGEffects_IncrementJumptable + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld [hl], $0 + ret + +.cgb_one + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld a, [hl] + inc [hl] + ld e, a + and $7 + ret nz + ld a, e + and $18 + sla a + swap a + sla a + ld e, a + ld d, 0 + call BGEffect_CheckBattleTurn + jr nz, .player_2 + ld hl, .CGB_DMGEnemyData + add hl, de + ld a, [hli] + push hl + call BGEffects_LoadBGPal1_OBPal0 + pop hl + ld a, [hl] + call BGEffects_LoadBGPal0_OBPal1 + ret + +.player_2 + ld hl, .CGB_DMGEnemyData + add hl, de + ld a, [hli] + push hl + call BGEffects_LoadBGPal0_OBPal1 + pop hl + ld a, [hl] + call BGEffects_LoadBGPal1_OBPal0 + ret + +.cgb_two + ld a, $e4 + call BGEffects_LoadBGPal0_OBPal1 + ld a, $e4 + call BGEffects_LoadBGPal1_OBPal0 + call EndBattleBGEffect + ret + +.CGB_DMGEnemyData: + db $e4, $e4 + db $f8, $90 + db $fc, $40 + db $f8, $90 +.DMG_PlayerData: + db $e4, $e4 + db $90, $f8 + db $40, $fc + db $90, $f8 +; c8be8 + +BattleBGEffect_RapidFlash: ; c8be8 (32:4be8) + ld de, .FlashPals + call BGEffect_RapidCyclePals + ret + +.FlashPals: + db $e4, $6c, $fe +; c8bf2 + +BattleBGEffect_16: ; c8bf2 (32:4bf2) + ld de, .Pals + call BGEffect_RapidCyclePals + ret + +.Pals: + db $e4, $90, $40, $ff +; c8bfd + +BattleBGEffect_17: ; c8bfd (32:4bfd) + ld de, .Pals + call BGEffect_RapidCyclePals + ret + +.Pals: + db $e4, $f8, $fc, $ff +; c8c08 + +BattleBGEffect_18: ; c8c08 (32:4c08) + ld de, .Pals + call BGEffect_RapidCyclePals + ret + +.Pals: + db $e4, $90, $40, $90, $fe +; c8c14 + +BattleBGEffect_19: ; c8c14 (32:4c14) + ld de, .Pals + call BGEffect_RapidCyclePals + ret + +.Pals: + db $e4, $f8, $fc, $f8, $fe +; c8c20 + +BattleBGEffect_1a: ; c8c20 (32:4c20) + ld de, .Pals + call BGEffect_RapidCyclePals + ret + +.Pals: + db $e4, $f8, $fc, $f8, $e4, $90, $40, $90, $fe +; c8c30 + +BattleBGEffect_1b: ; c8c30 (32:4c30) + ld de, .Pals + call BGEffect_RapidCyclePals + ret + +.Pals: + db $e4, $fc, $e4, $00, $fe +; c8c3c + +BattleBGEffect_1d: ; c8c3c (32:4c3c) + ld de, .Pals + call BGEffect_RapidCyclePals + ret + +.Pals: + db $e4, $90, $40, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $40, $90, $e4, $ff +; c8c55 + +BattleBGEffect_1e: ; c8c55 (32:4c55) + ld de, .Pals + call BGEffect_RapidCyclePals + ret + +.Pals: + db $00, $40, $90, $e4, $ff +; c8c61 + +BattleBGEffect_VibrateMon: ; c8c61 (32:4c61) + call BattleBGEffects_AnonJumptable +.anon_dw + dw .zero + dw .one + + +.zero ; c8c68 (32:4c68) + call BattleBGEffects_IncrementJumptable + call BattleBGEffects_ClearLYOverrides + ld a, rSCX - $ff00 + call BattleBGEffect_SetLCDStatCustoms1 + ld a, [hLYOverrideEnd] + inc a + ld [hLYOverrideEnd], a + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + ld [hl], $1 + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld [hl], $20 + ret + +.one ; c8c85 (32:4c85) + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld a, [hl] + and a + jr z, .finish + dec [hl] + and $1 + ret nz + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + ld a, [hl] + xor $ff + inc a + ld [hl], a + call BGEffect_FillLYOverridesBackup + ret + +.finish + call BattleAnim_ResetLCDStatCustom + ret + +BattleBGEffect_WobbleMon: ; c8ca2 (32:4ca2) + call BattleBGEffects_AnonJumptable +.anon_dw + dw .zero + dw .one + dw .two + + +.zero ; c8cab (32:4cab) + call BattleBGEffects_IncrementJumptable + call BattleBGEffects_ClearLYOverrides + ld a, rSCX - $ff00 + ld [hLCDCPointer], a + xor a + ld [hLYOverrideStart], a + ld a, $37 + ld [hLYOverrideEnd], a + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld [hl], $0 + ret + +.one ; c8cc3 (32:4cc3) + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld a, [hl] + cp $40 + jr nc, .two + ld d, $6 + call BattleBGEffects_Sine + call BGEffect_FillLYOverridesBackup + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld a, [hl] + add $2 + ld [hl], a + ret + +.two ; c8cdd (32:4cdd) + call BattleAnim_ResetLCDStatCustom + ret + +BattleBGEffect_2e: ; c8ce1 (32:4ce1) + call Functionc8d0b + jr c, .xor_a + bit 7, a + jr z, .okay +.xor_a + xor a +.okay + push af + call DelayFrame + pop af + ld [hSCY], a + xor $ff + inc a + ld [AnimObject01_YOffset], a + ret + +BattleBGEffect_1f: ; c8cf9 (32:4cf9) + call Functionc8d0b + jr nc, .skip + xor a +.skip + ld [hSCX], a + ret + +BattleBGEffect_20: ; c8d02 (32:4d02) + call Functionc8d0b + jr nc, .skip + xor a +.skip + ld [hSCY], a + ret + +Functionc8d0b: ; c8d0b (32:4d0b) + ld hl, BG_EFFECT_STRUCT_JT_INDEX + add hl, bc + ld a, [hl] + and a + jr nz, .okay + call EndBattleBGEffect + scf + ret + +.okay + dec [hl] + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld a, [hl] + and $f + jr z, .every_16_frames + dec [hl] + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + ld a, [hl] + and a + ret + +.every_16_frames + ld a, [hl] + swap a + or [hl] + ld [hl], a + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + ld a, [hl] + xor $ff + inc a + ld [hl], a + and a + ret + +BattleBGEffect_35: ; c8d3a (32:4d3a) + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld a, [hl] + cp $40 + jr nc, .finish + ld d, $6 + call BattleBGEffects_Sine + ld [hSCX], a + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld a, [hl] + add $2 + ld [hl], a + ret + +.finish + xor a + ld [hSCX], a + ret + +BattleBGEffect_GetNthDMGPal: ; c8d57 (32:4d57) + ld hl, BG_EFFECT_STRUCT_JT_INDEX + add hl, bc + ld a, [hl] + and a + jr z, .zero + dec [hl] + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld a, [hl] + call BattleBGEffect_GetNextDMGPal + ret + +.zero + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + ld a, [hl] + ld hl, BG_EFFECT_STRUCT_JT_INDEX + add hl, bc + ld [hl], a + call BattleBGEffect_GetFirstDMGPal + ret + +BGEffect_RapidCyclePals: ; c8d77 (32:4d77) + ld a, [hCGB] + and a + jr nz, .cgb + push de + ld de, .Jumptable_DMG + call BatttleBGEffects_GetNamedJumptablePointer + pop de + jp hl + +.Jumptable_DMG: + dw .zero_dmg + dw .one_dmg + dw .two_dmg + + +.zero_dmg ; c8d8b (32:4d8b) + call BattleBGEffects_IncrementJumptable + ld a, $e4 + call BattleBGEffects_SetLYOverrides + ld a, $47 + call BattleBGEffect_SetLCDStatCustoms1 + ld a, [hLYOverrideEnd] + inc a + ld [hLYOverrideEnd], a + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld a, [hl] + ld [hl], $0 + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + ld [hl], a + ret + +.one_dmg ; c8daa (32:4daa) + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + ld a, [hl] + and $f + jr z, .okay_1_dmg + dec [hl] + ret + +.okay_1_dmg + ld a, [hl] + swap a + or [hl] + ld [hl], a + call BattleBGEffect_GetFirstDMGPal + jr c, .okay_2_dmg + call BGEffect_FillLYOverridesBackup + ret + +.okay_2_dmg + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + dec [hl] + ret + +.two_dmg ; c8dc9 (32:4dc9) + call BattleBGEffects_ResetVideoHRAM + ld a, %11100100 + ld [rBGP], a + call EndBattleBGEffect + ret + +.cgb + push de + ld de, .Jumptable_CGB + call BatttleBGEffects_GetNamedJumptablePointer + pop de + jp hl + +.Jumptable_CGB: ; c8ddd (32:4ddd) + dw .zero_cgb + dw .one_cgb + dw .two_cgb + dw .three_cgb + dw .four_cgb + + +.zero_cgb ; c8de7 (32:4de7) + call BGEffect_CheckBattleTurn + jr nz, .player_turn_cgb + call BattleBGEffects_IncrementJumptable + call BattleBGEffects_IncrementJumptable +.player_turn_cgb + call BattleBGEffects_IncrementJumptable + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld a, [hl] + ld [hl], $0 + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + ld [hl], a + ret + +.one_cgb ; c8e02 (32:4e02) + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + ld a, [hl] + and $f + jr z, .okay_1_cgb + dec [hl] + ret + +.okay_1_cgb + ld a, [hl] + swap a + or [hl] + ld [hl], a + call BattleBGEffect_GetFirstDMGPal + jr c, .okay_2_cgb + call BGEffects_LoadBGPal0_OBPal1 + ret + +.okay_2_cgb + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + dec [hl] + ret + +.two_cgb ; c8e21 (32:4e21) + ld a, $e4 + call BGEffects_LoadBGPal0_OBPal1 + call EndBattleBGEffect + ret + +.three_cgb ; c8e2a (32:4e2a) + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + ld a, [hl] + and $f + jr z, .okay_3_cgb + dec [hl] + ret + +.okay_3_cgb + ld a, [hl] + swap a + or [hl] + ld [hl], a + call BattleBGEffect_GetFirstDMGPal + jr c, .okay_4_cgb + call BGEffects_LoadBGPal1_OBPal0 + ret + +.okay_4_cgb + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + dec [hl] + ret + +.four_cgb ; c8e49 (32:4e49) + ld a, $e4 + call BGEffects_LoadBGPal1_OBPal0 + call EndBattleBGEffect + ret + +BGEffects_LoadBGPal0_OBPal1: ; c8e52 (32:4e52) + ld h, a + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld a, h + push bc + push af + ld hl, BGPals + ld de, UnknBGPals + ld b, a + ld c, $1 + call CopyPals + ld hl, OBPals + 8 + ld de, UnknOBPals + 8 + pop af + ld b, a + ld c, $1 + call CopyPals + pop bc + pop af + ld [rSVBK], a + ld a, $1 + ld [hCGBPalUpdate], a + ret + +BGEffects_LoadBGPal1_OBPal0: ; c8e7f (32:4e7f) + ld h, a + ld a, [rSVBK] + push af + ld a, $5 + ld [rSVBK], a + ld a, h + push bc + push af + ld hl, BGPals + 8 + ld de, UnknBGPals + 8 + ld b, a + ld c, $1 + call CopyPals + ld hl, OBPals ; OBPals + ld de, UnknOBPals ; wd040 + pop af + ld b, a + ld c, $1 + call CopyPals + pop bc + pop af + ld [rSVBK], a + ld a, $1 + ld [hCGBPalUpdate], a + ret + +BattleBGEffect_GetFirstDMGPal: ; c8eac (32:4eac) + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld a, [hl] + inc [hl] +BattleBGEffect_GetNextDMGPal: ; c8eb2 (32:4eb2) + ld l, a + ld h, $0 + add hl, de + ld a, [hl] + cp -1 + jr z, .quit + cp -2 + jr nz, .repeat + ld a, [de] + ld hl, BG_EFFECT_STRUCT_03 + add hl, bc + ld [hl], $0 +.repeat + and a + ret + +.quit + scf + ret + +BattleBGEffects_ClearLYOverrides: ; c8eca (32:4eca) + xor a +BattleBGEffects_SetLYOverrides: ; c8ecb (32:4ecb) + ld hl, LYOverrides ; wListPointer + ld e, $99 +.loop1 + ld [hli], a + dec e + jr nz, .loop1 + ld hl, LYOverridesBackup + ld e, $91 +.loop2 + ld [hli], a + dec e + jr nz, .loop2 + ret + +BattleBGEffect_SetLCDStatCustoms1: ; c8ede (32:4ede) + ld [hLCDCPointer], a + call BGEffect_CheckBattleTurn + jr nz, .player_turn + lb de, $00, $36 + jr .okay + +.player_turn + lb de, $2f, $5e +.okay + ld a, d + ld [hLYOverrideStart], a + ld a, e + ld [hLYOverrideEnd], a + ret + +BattleBGEffect_SetLCDStatCustoms2: ; c8ef4 (32:4ef4) + ld [hLCDCPointer], a + call BGEffect_CheckBattleTurn + jr nz, .player_turn + lb de, $00, $36 + jr .okay + +.player_turn + lb de, $2d, $5e +.okay + ld a, d + ld [hLYOverrideStart], a + ld a, e + ld [hLYOverrideEnd], a + ret + +BattleAnim_ResetLCDStatCustom: ; c8f0a (32:4f0a) + xor a + ld [hLYOverrideStart], a + ld [hLYOverrideEnd], a + call BattleBGEffects_ClearLYOverrides + xor a + ld [hLCDCPointer], a + call EndBattleBGEffect + ret + +BattleBGEffects_ResetVideoHRAM: ; c8f19 (32:4f19) + xor a + ld [hLCDCPointer], a + ld a, %11100100 + ld [rBGP], a + ld [wBGP], a + ld [wOBP1], a + ld [hLYOverrideStart], a + ld [hLYOverrideEnd], a + call BattleBGEffects_ClearLYOverrides + ret + +Functionc8f2e: ; c8f2e (32:4f2e) + push bc + xor a + ld [wBattleAnimTemp0], a + ld a, e + ld [wBattleAnimTemp1], a + ld a, d + ld [wBattleAnimTemp2], a + ld a, $80 + ld [wBattleAnimTemp3], a + ld bc, LYOverridesBackup +.loop + ld a, [hLYOverrideStart] + cp c + jr nc, .next + ld a, [hLYOverrideEnd] + cp c + jr c, .next + ld a, [wBattleAnimTemp2] + ld d, a + ld a, [wBattleAnimTemp0] + call BattleBGEffects_Sine + ld [bc], a +.next + inc bc + ld a, [wBattleAnimTemp1] + ld hl, wBattleAnimTemp0 + add [hl] + ld [hl], a + ld hl, wBattleAnimTemp3 + dec [hl] + jr nz, .loop + pop bc + ret + +InitSurfWaves: ; c8f69 (32:4f69) + push bc + xor a + ld [wBattleAnimTemp0], a + ld a, e + ld [wBattleAnimTemp1], a + ld a, d + ld [wBattleAnimTemp2], a + ld a, $40 + ld [wBattleAnimTemp3], a + ld bc, wSurfWaveBGEffect +.loop + ld a, [wBattleAnimTemp2] + ld d, a + ld a, [wBattleAnimTemp0] + call BattleBGEffects_Sine + ld [bc], a + inc bc + ld a, [wBattleAnimTemp1] + ld hl, wBattleAnimTemp0 + add [hl] + ld [hl], a + ld hl, wBattleAnimTemp3 + dec [hl] + jr nz, .loop + pop bc + ret + +Functionc8f9a: ; c8f9a (32:4f9a) + push bc + ld [wBattleAnimTemp3], a + ld a, e + ld [wBattleAnimTemp1], a + ld a, d + ld [wBattleAnimTemp2], a + call .GetLYOverrideBackupAddrOffset + ld hl, LYOverridesBackup + add hl, de + ld c, l + ld b, h +.loop + ld a, [wBattleAnimTemp3] + and a + jr z, .done + dec a + ld [wBattleAnimTemp3], a + push af + ld a, [wBattleAnimTemp2] + ld d, a + ld a, [wBattleAnimTemp1] + push hl + call BattleBGEffects_Sine + ld e, a + pop hl + ld a, [hLYOverrideEnd] + cp c + jr c, .skip1 + ld a, e + ld [bc], a + inc bc +.skip1 + ld a, [hLYOverrideStart] + cp l + jr nc, .skip2 + ld [hl], e + dec hl +.skip2 + ld a, [wBattleAnimTemp1] + add $4 + ld [wBattleAnimTemp1], a + pop af + jr .loop + +.done + pop bc + and a + ret + +.GetLYOverrideBackupAddrOffset: + ld a, [hLYOverrideStart] + ld e, a + ld a, [wBattleAnimTemp0] + add e + ld e, a + ld d, $0 + ret + +BattleBGEffect_WavyScreenFX: ; c8fef (32:4fef) + push bc + ld a, [hLYOverrideStart] + ld l, a + inc a + ld e, a + ld h, HIGH(LYOverridesBackup) + ld d, h + ld a, [hLYOverrideEnd] + sub l + and a + jr z, .done + ld c, a + ld a, [hl] + push af +.loop + ld a, [de] + inc de + ld [hli], a + dec c + jr nz, .loop + pop af + ld [hl], a +.done + pop bc + ret + +BGEffect_FillLYOverridesBackup: ; c900b (32:500b) + push af + ld h, HIGH(LYOverridesBackup) + ld a, [hLYOverrideStart] + ld l, a + ld a, [hLYOverrideEnd] + sub l + ld d, a + pop af +.loop + ld [hli], a + dec d + jr nz, .loop + ret + +BGEffect_DisplaceLYOverridesBackup: ; c901b (32:501b) + ; e = a; d = [hLYOverrideEnd] - [hLYOverrideStart] - a + push af + ld e, a + ld a, [hLYOverrideStart] + ld l, a + ld a, [hLYOverrideEnd] + sub l + sub e + ld d, a + ld h, HIGH(LYOverridesBackup) + ld a, [hLYOverrideStart] + ld l, a + ld a, $90 +.loop + ld [hli], a + dec e + jr nz, .loop + pop af + xor $ff +.loop2 + ld [hli], a + dec d + jr nz, .loop2 + ret + +BGEffect_CheckBattleTurn: ; c9038 (32:5038) + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + ld a, [hBattleTurn] + and $1 + xor [hl] + ret + +BGEffect_CheckFlyDigStatus: ; c9042 (32:5042) + ld hl, BG_EFFECT_STRUCT_BATTLE_TURN + add hl, bc + ld a, [hBattleTurn] + and $1 + xor [hl] + jr nz, .player + ld a, [EnemySubStatus3] ; EnemySubStatus3 + and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND + ret + +.player + ld a, [PlayerSubStatus3] ; PlayerSubStatus3 + and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND + ret + +BattleBGEffects_CheckSGB: ; c9059 (32:5059) + ld a, [hSGB] + and a + ret + +BattleBGEffects_Sine: ; c905d (32:505d) + ld e, a + callfar BattleAnim_Sine_e + ld a, e + ret + +BattleBGEffects_Cosine: ; c9066 (32:5066) + ld e, a + callfar BattleAnim_Cosine_e + ld a, e + ret + +; c906f (32:506f) diff --git a/engine/battle_anims/engine.asm b/engine/battle_anims/engine.asm new file mode 100755 index 000000000..ae3bdde28 --- /dev/null +++ b/engine/battle_anims/engine.asm @@ -0,0 +1,314 @@ +QueueBattleAnimation: ; cc9a1 (33:49a1) + ld hl, ActiveAnimObjects + ld e, 10 +.loop + ld a, [hl] + and a + jr z, .done + ld bc, BATTLEANIMSTRUCT_LENGTH + add hl, bc + dec e + jr nz, .loop + scf + ret + +.done + ld c, l + ld b, h + ld hl, wNumActiveBattleAnims + inc [hl] + call InitBattleAnimation + ret + +DeinitBattleAnimation: ; cc9bd + ld hl, BATTLEANIMSTRUCT_INDEX + add hl, bc + ld [hl], $0 + ret + +; cc9c4 + +InitBattleAnimation: ; cc9c4 (33:49c4) + ld a, [wBattleAnimTemp0] + ld e, a + ld d, 0 + ld hl, BattleAnimObjects +rept 6 + add hl, de +endr + ld e, l + ld d, h + ld hl, BATTLEANIMSTRUCT_INDEX + add hl, bc + ld a, [wNumActiveBattleAnims] + ld [hli], a ; Index + ld a, [de] + inc de + ld [hli], a ; 01 + ld a, [de] + inc de + ld [hli], a ; 02 + ld a, [de] + inc de + ld [hli], a ; Frameset ID + ld a, [de] + inc de + ld [hli], a ; Function + ld a, [de] + inc de + ld [hli], a ; 05 + ld a, [de] + call GetBattleAnimTileOffset + ld [hli], a ; Tile ID + ld a, [wBattleAnimTemp1] + ld [hli], a ; X Coord + ld a, [wBattleAnimTemp2] + ld [hli], a ; Y Coord + xor a + ld [hli], a ; X Offset + ld [hli], a ; Y Offset + ld a, [wBattleAnimTemp3] + ld [hli], a ; 0b + xor a + ld [hli], a ; 0c + dec a + ld [hli], a ; 0d + xor a + ld [hli], a ; 0e + ld [hli], a ; 0f + ld [hl], a ; 10 + ret + +BattleAnimOAMUpdate: ; cca09 + call InitBattleAnimBuffer + call GetBattleAnimFrame + cp -3 + jp z, .done + cp -4 + jp z, .delete + push af + ld hl, wBattleAnimTempOAMFlags + ld a, [wBattleAnimTemp7] + xor [hl] + and $e0 + ld [hl], a + pop af + push bc + call GetBattleAnimOAMPointer + ld a, [wBattleAnimTempTileID] + add [hl] + ld [wBattleAnimTempTileID], a + inc hl + ld a, [hli] + ld c, a + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [wBattleAnimOAMPointerLo] + ld e, a + ld d, HIGH(Sprites) +.loop + ld a, [wBattleAnimTempYCoord] + ld b, a + ld a, [wBattleAnimTempYOffset] + add b + ld b, a + push hl + ld a, [hl] + ld hl, wBattleAnimTempOAMFlags + bit 6, [hl] + jr z, .no_yflip + add $8 + xor $ff + inc a + +.no_yflip + pop hl + add b + ld [de], a + inc hl + inc de + ld a, [wBattleAnimTempXCoord] + ld b, a + ld a, [wBattleAnimTempXOffset] + add b + ld b, a + push hl + ld a, [hl] + ld hl, wBattleAnimTempOAMFlags + bit 5, [hl] + jr z, .no_xflip + add $8 + xor $ff + inc a + +.no_xflip + pop hl + add b + ld [de], a + inc hl + inc de + ld a, [wBattleAnimTempTileID] + add $31 + add [hl] + ld [de], a + inc hl + inc de + ld a, [wBattleAnimTempOAMFlags] + ld b, a + ld a, [hl] + xor b + and $e0 + ld b, a + ld a, [hl] + and $10 + or b + ld b, a + ld a, [wBattleAnimTempPalette] + and $f + or b + ld [de], a + inc hl + inc de + ld a, e + ld [wBattleAnimOAMPointerLo], a + cp $a0 + jr nc, .exit_set_carry + dec c + jr nz, .loop + pop bc + jr .done + +.delete + call DeinitBattleAnimation + +.done + and a + ret + +.exit_set_carry + pop bc + scf + ret + +; ccaaa + +InitBattleAnimBuffer: ; ccaaa + ld hl, BATTLEANIMSTRUCT_01 + add hl, bc + ld a, [hl] + and %10000000 + ld [wBattleAnimTempOAMFlags], a + xor a + ld [wBattleAnimTemp7], a + ld hl, BATTLEANIMSTRUCT_PALETTE + add hl, bc + ld a, [hl] + ld [wBattleAnimTempPalette], a + ld hl, BATTLEANIMSTRUCT_02 + add hl, bc + ld a, [hl] + ld [wBattleAnimTemp1], a + ld hl, BATTLEANIMSTRUCT_TILEID + add hl, bc + ld a, [hli] + ld [wBattleAnimTempTileID], a + ld a, [hli] + ld [wBattleAnimTempXCoord], a + ld a, [hli] + ld [wBattleAnimTempYCoord], a + ld a, [hli] + ld [wBattleAnimTempXOffset], a + ld a, [hli] + ld [wBattleAnimTempYOffset], a + ld a, [hBattleTurn] + and a + ret z + ld hl, BATTLEANIMSTRUCT_01 + add hl, bc + ld a, [hl] + ld [wBattleAnimTempOAMFlags], a + bit 0, [hl] + ret z + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hli] + ld d, a + ld a, (-10 * 8) + 4 + sub d + ld [wBattleAnimTempXCoord], a + ld a, [hli] + ld d, a + ld a, [wBattleAnimTemp1] + cp $ff + jr nz, .check_kinesis_softboiled_milkdrink + ld a, 5 * 8 + add d + jr .done + +.check_kinesis_softboiled_milkdrink + sub d + push af + ld a, [FXAnimID + 1] + or a + jr nz, .no_sub + ld a, [FXAnimID] + cp KINESIS + jr z, .kinesis + cp SOFTBOILED + jr z, .softboiled + cp MILK_DRINK + jr nz, .no_sub +.kinesis +.softboiled +.milk_drink + pop af + sub 1 * 8 + jr .done + +.no_sub + pop af +.done + ld [wBattleAnimTempYCoord], a + ld a, [hli] + xor $ff + inc a + ld [wBattleAnimTempXOffset], a + ret + +; ccb31 + +GetBattleAnimTileOffset: ; ccb31 (33:4b31) + push hl + push bc + ld hl, wBattleAnimTileDict + ld b, a + ld c, 10 / 2 +.loop + ld a, [hli] + cp b + jr z, .load + inc hl + dec c + jr nz, .loop + xor a + jr .done + +.load + ld a, [hl] +.done + pop bc + pop hl + ret + +_ExecuteBGEffects: ; ccb48 + callfar ExecuteBGEffects + ret + +; ccb4f + +_QueueBGEffect: ; ccb4f (33:4b4f) + callfar QueueBGEffect + ret + +; ccb56 (33:4b56) diff --git a/engine/battle_anims/functions.asm b/engine/battle_anims/functions.asm new file mode 100755 index 000000000..ea9fb70b3 --- /dev/null +++ b/engine/battle_anims/functions.asm @@ -0,0 +1,4157 @@ +DoBattleAnimFrame: ; ccfbe + ld hl, BATTLEANIMSTRUCT_FUNCTION + add hl, bc + ld e, [hl] + ld d, 0 + ld hl, .Jumptable + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp hl +; ccfce + +.Jumptable: +; entries correspond to BATTLEANIMFUNC_* constants + dw BattleAnimFunction_Null ; 00 + dw BattleAnimFunction_01 ; 01 + dw BattleAnimFunction_02 ; 02 + dw BattleAnimFunction_03 ; 03 + dw BattleAnimFunction_04 ; 04 + dw BattleAnimFunction_ThrowFromPlayerToEnemy ; 05 + dw BattleAnimFunction_ThrowFromPlayerToEnemyAndDisappear ; 06 + dw BattleAnimFunction_07 ; 07 + dw BattleAnimFunction_08 ; 08 + dw BattleAnimFunction_09 ; 09 + dw BattleAnimFunction_0A ; 0a + dw BattleAnimFunction_RazorLeaf ; 0b + dw BattleAnimFunction_0C ; 0c + dw BattleAnimFunction_0D ; 0d + dw BattleAnimFunction_0E ; 0e + dw BattleAnimFunction_0F ; 0f + dw BattleAnimFunction_10 ; 10 + dw BattleAnimFunction_11 ; 11 + dw BattleAnimFunction_PokeBall ; 12 + dw BattleAnimFunction_PokeBallBlocked ; 13 + dw BattleAnimFunction_14 ; 14 + dw BattleAnimFunction_15 ; 15 + dw BattleAnimFunction_16 ; 16 + dw BattleAnimFunction_17 ; 17 + dw BattleAnimFunction_18 ; 18 + dw BattleAnimFunction_19 ; 19 + dw BattleAnimFunction_1A ; 1a + dw BattleAnimFunction_1B ; 1b + dw BattleAnimFunction_1C ; 1c + dw BattleAnimFunction_1D ; 1d + dw BattleAnimFunction_1E ; 1e + dw BattleAnimFunction_1F ; 1f + dw BattleAnimFunction_LeechSeed ; 20 + dw BattleAnimFunction_21 ; 21 + dw BattleAnimFunction_22 ; 22 + dw BattleAnimFunction_23 ; 23 + dw BattleAnimFunction_24 ; 24 + dw BattleAnimFunction_25 ; 25 + dw BattleAnimFunction_26 ; 26 + dw BattleAnimFunction_27 ; 27 + dw BattleAnimFunction_28 ; 28 + dw BattleAnimFunction_SpiralDescent ; 29 + dw BattleAnimFunction_PoisonGas ; 2a + dw BattleAnimFunction_Horn ; 2b + dw BattleAnimFunction_2C ; 2c + dw BattleAnimFunction_2D ; 2d + dw BattleAnimFunction_2E ; 2e + dw BattleAnimFunction_2F ; 2f + dw BattleAnimFunction_30 ; 30 + dw BattleAnimFunction_31 ; 31 + dw BattleAnimFunction_32 ; 32 + dw BattleAnimFunction_33 ; 33 + dw BattleAnimFunction_34 ; 34 + dw BattleAnimFunction_35 ; 35 + dw BattleAnimFunction_36 ; 36 + dw BattleAnimFunction_37 ; 37 + dw BattleAnimFunction_38 ; 38 + dw BattleAnimFunction_39 ; 39 + dw BattleAnimFunction_3A ; 3a + dw BattleAnimFunction_3B ; 3b + dw BattleAnimFunction_3C ; 3c + dw BattleAnimFunction_3D ; 3d + dw BattleAnimFunction_3E ; 3e + dw BattleAnimFunction_3F ; 3f + dw BattleAnimFunction_40 ; 40 + dw BattleAnimFunction_41 ; 41 + dw BattleAnimFunction_42 ; 42 + dw BattleAnimFunction_43 ; 43 + dw BattleAnimFunction_44 ; 44 + dw BattleAnimFunction_45 ; 45 + dw BattleAnimFunction_46 ; 46 + dw BattleAnimFunction_47 ; 47 + dw BattleAnimFunction_48 ; 48 + dw BattleAnimFunction_49 ; 49 + dw BattleAnimFunction_4A ; 4a + dw BattleAnimFunction_4B ; 4b + dw BattleAnimFunction_4C ; 4c + dw BattleAnimFunction_4D ; 4d + dw BattleAnimFunction_4E ; 4e + dw BattleAnimFunction_4F ; 4f + +BattleAnimFunction_Null: ; cd06e (33:506e) + call BattleAnim_AnonJumptable +.anon_dw + dw .zero + dw .one +.one + call DeinitBattleAnimation +.zero + ret + +BattleAnimFunction_ThrowFromPlayerToEnemyAndDisappear: ; cd079 (33:5079) + call BattleAnimFunction_ThrowFromPlayerToEnemy + ret c + call DeinitBattleAnimation + ret + +BattleAnimFunction_ThrowFromPlayerToEnemy: ; cd081 (33:5081) + ; If x coord at $88 or beyond, abort. + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $88 + ret nc + ; Move right 2 pixels + add $2 + ld [hl], a + ; Move down 1 pixel + ld hl, BATTLEANIMSTRUCT_YCOORD + add hl, bc + dec [hl] + ; Decrease ??? and hold onto its previous value (argument of the sine function) + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + dec [hl] + ; Get ???, which is the amplitude of the sine function + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld d, [hl] + call BattleAnim_Sine + ; Store the result in the Y offset + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + ; Carry flag denotes success + scf + ret + +BattleAnimFunction_04: ; cd0a6 (33:50a6) + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $88 + jr c, .asm_cd0b3 + call DeinitBattleAnimation + ret + +.asm_cd0b3 + add $2 + ld [hl], a + ld hl, BATTLEANIMSTRUCT_YCOORD + add hl, bc + dec [hl] + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + inc [hl] + inc [hl] + inc [hl] + inc [hl] + ld d, $10 + push af + push de + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + pop de + pop af + call BattleAnim_Cosine + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + sra a + sra a + sra a + sra a + ld [hl], a + ret + +BattleAnimFunction_03: ; cd0e3 (33:50e3) + call BattleAnim_AnonJumptable +.anon_dw + dw .zero + dw .one +.zero + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + bit 7, [hl] + ld a, $0 + jr z, .asm_cd0f9 + ld a, $20 +.asm_cd0f9 + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + and $7f + ld [hl], a +.one + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld d, [hl] + push af + push de + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + pop de + pop af + call BattleAnim_Cosine + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + inc [hl] + ret + +BattleAnimFunction_01: ; cd12a (33:512a) + call BattleAnim_AnonJumptable +.anon_dw + dw .zero + dw .one +.one + call DeinitBattleAnimation + ret + +.zero + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $84 + ret nc + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + call Functionce70a + ret + +BattleAnimFunction_02: ; cd146 (33:5146) + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $84 + jr nc, .asm_cd158 + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + call Functionce70a + ret + +.asm_cd158 + call DeinitBattleAnimation + ret + +BattleAnimFunction_PokeBall: ; cd15c (33:515c) + call BattleAnim_AnonJumptable +.anon_dw + dw .zero + dw .one + dw .two + dw .three + dw .four + dw .five + dw .six + dw .seven + dw .eight + dw .nine + dw .ten + dw .eleven +.zero ; init + call GetBallAnimPal + call BattleAnim_IncAnonJumptableIndex + ret + +.one + call BattleAnimFunction_ThrowFromPlayerToEnemy + ret c + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_YCOORD + add hl, bc + add [hl] + ld [hl], a + ld a, BATTLEANIMFRAMESET_0B + call ReinitBattleAnimFrameset + call BattleAnim_IncAnonJumptableIndex + ret + +.three + call BattleAnim_IncAnonJumptableIndex + ld a, BATTLEANIMFRAMESET_09 + call ReinitBattleAnimFrameset + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $0 + inc hl + ld [hl], $10 +.four + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hli] + ld d, [hl] + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + dec a + ld [hl], a + and $1f + ret nz + ld [hl], a + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld a, [hl] + sub $4 + ld [hl], a + ret nz + ld a, BATTLEANIMFRAMESET_0C + call ReinitBattleAnimFrameset + call BattleAnim_IncAnonJumptableIndex + ret + +.six + ld a, BATTLEANIMFRAMESET_0D + call ReinitBattleAnimFrameset + ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX + add hl, bc + dec [hl] +.two +.five +.nine + ret + +.seven + call GetBallAnimPal + ld a, BATTLEANIMFRAMESET_0A + call ReinitBattleAnimFrameset + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld [hl], $20 +.eight +.ten + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hli] + ld d, [hl] + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + dec a + ld [hl], a + and $1f + jr z, .eleven + and $f + ret nz + call BattleAnim_IncAnonJumptableIndex + ret + +.eleven + call DeinitBattleAnimation + ret + +BattleAnimFunction_PokeBallBlocked: ; cd212 (33:5212) + call BattleAnim_AnonJumptable +.anon_dw + dw .zero + dw .one + dw .two +.zero + call GetBallAnimPal + call BattleAnim_IncAnonJumptableIndex + ret + +.one + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $70 + jr nc, .next + call BattleAnimFunction_ThrowFromPlayerToEnemy + ret + +.next + call BattleAnim_IncAnonJumptableIndex +.two + ld hl, BATTLEANIMSTRUCT_YCOORD + add hl, bc + ld a, [hl] + cp $80 + jr nc, .done + add $4 + ld [hl], a + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + dec [hl] + dec [hl] + ret + +.done + call DeinitBattleAnimation + ret + +GetBallAnimPal: ; cd249 (33:5249) + ld hl, BallColors + ld a, [rSVBK] + push af + ld a, $1 + ld [rSVBK], a + ld a, [CurItem] ; CurItem + ld e, a + pop af + ld [rSVBK], a +.IsInArray: + ld a, [hli] + cp -1 + jr z, .load + cp e + jr z, .load + inc hl + jr .IsInArray + +.load + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_PALETTE + add hl, bc + ld [hl], a + ret +; cd26c (33:526c) + +INCLUDE "data/battle_anims/ball_colors.asm" + +BattleAnimFunction_10: ; cd284 (33:5284) + call BattleAnim_AnonJumptable +.anon_dw + dw .zero + dw .one + dw .two + dw .three + dw .four +.zero + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + swap a + and $f + ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX + add hl, bc + ld [hl], a + ret + +.one + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $88 + ret nc + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + call Functionce70a + ret + +.two + call DeinitBattleAnimation + ret + +.three + call BattleAnim_IncAnonJumptableIndex + ld a, BATTLEANIMFRAMESET_0F + call ReinitBattleAnimFrameset +.four + ret + +BattleAnimFunction_07: ; cd2be (33:52be) + call BattleAnim_AnonJumptable +.anon_dw + dw .zero + dw .one +.zero + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $30 + inc hl + ld [hl], $48 +.one + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hli] + ld d, [hl] + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + inc [hl] + ld a, [hl] + and $3f + ret nz + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $20 + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + sub [hl] + jr z, .done + jr c, .done + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld [hl], a + ret + +.done + call DeinitBattleAnimation + ret + +BattleAnimFunction_08: ; cd306 (33:5306) + call BattleAnim_AnonJumptable +.anon_dw + dw .zero + dw .one + dw .two + dw .three +.zero + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $80 + jr nc, .next + call .SetCoords + ret + +.next + call BattleAnim_IncAnonJumptableIndex +.one + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $0 +.two + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + cp $40 + jr nc, .loop_back + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + ld d, $18 + call BattleAnim_Cosine + sub $18 + sra a + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + ld d, $18 + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + and $f + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + add [hl] + ld [hl], a + ret + +.loop_back + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + and $f0 + jr z, .finish + sub $10 + ld d, a + ld a, [hl] + and $f + or d + ld [hl], a + ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX + add hl, bc + dec [hl] + ret + +.finish + call BattleAnim_IncAnonJumptableIndex +.three + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $b0 + jr c, .retain + call DeinitBattleAnimation + ret + +.retain + call .SetCoords + ret + +.SetCoords: + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + and $f + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + add [hl] + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + and $f + ld e, a + srl e + ld hl, BATTLEANIMSTRUCT_YCOORD + add hl, bc +.loop + dec [hl] + dec e + jr nz, .loop + ret + +BattleAnimFunction_09: ; cd3ae (33:53ae) + call BattleAnim_AnonJumptable +.anon_dw + dw .zero + dw .one + dw .two +.zero + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $0 + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + and $f + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a +.one + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + and a + jr z, .done_one + dec [hl] + ret + +.done_one + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + swap a + and $f + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld a, [hl] + xor $ff + inc a + ld [hl], a + ret + +.two + call DeinitBattleAnimation + ret + +BattleAnimFunction_0A: ; cd3f2 (33:53f2) + call BattleAnim_AnonJumptable +.anon_dw + dw .zero + dw .one + dw .two + dw .three + dw .four + dw .five + dw .six + dw .seven + dw .eight + dw .nine +.zero + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX + add hl, bc + ld [hl], a + cp $7 + jr z, .seven + ld a, BATTLEANIMFRAMESET_11 + call ReinitBattleAnimFrameset + ret + +.seven + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $88 + jr nc, .set_up_eight + add $2 + ld [hl], a + ld hl, BATTLEANIMSTRUCT_YCOORD + add hl, bc + dec [hl] + ret + +.set_up_eight + call BattleAnim_IncAnonJumptableIndex + ld a, BATTLEANIMFRAMESET_10 + call ReinitBattleAnimFrameset +.eight + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + ld d, $10 + push af + push de + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + pop de + pop af + call BattleAnim_Cosine + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + inc [hl] + ret + +.nine + call DeinitBattleAnimation + ret + +.one + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + dec [hl] + ret + +.four + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + inc [hl] +.two + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + dec [hl] + ret + +.five + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + inc [hl] +.three + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + inc [hl] +.six + ret + +BattleAnimFunction_RazorLeaf: ; cd478 (33:5478) + call BattleAnim_AnonJumptable +.anon_dw + dw .zero + dw .one + dw .two + dw .three + dw .four + dw .five + dw .six + dw .seven + dw .eight +.zero + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $40 +.one + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + cp $30 + jr nc, .sine_cosine + call BattleAnim_IncAnonJumptableIndex + xor a + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hli], a + ld [hl], a + ld a, BATTLEANIMFRAMESET_17 + call ReinitBattleAnimFrameset + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + bit 6, [hl] + ret z + ld hl, BATTLEANIMSTRUCT_FRAME + add hl, bc + ld [hl], $5 + ret + +.sine_cosine + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + and $3f + ld d, a + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + dec [hl] + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + call Functioncd557 + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld h, [hl] + ld l, a + add hl, de + ld e, l + ld d, h + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld [hl], d + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld [hl], e + ret + +.two + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld a, [hl] + cp $20 + jr nz, .sine_cosine_2 + call DeinitBattleAnimation + ret + +.sine_cosine_2 + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + ld d, $10 + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + bit 6, [hl] + jr nz, .decrease + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + inc [hl] + jr .finish + +.decrease + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + dec [hl] +.finish + ld de, $80 + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld h, [hl] + ld l, a + add hl, de + ld e, l + ld d, h + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], d + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld [hl], e + ret + +.three + ld a, BATTLEANIMFRAMESET_16 + call ReinitBattleAnimFrameset + ld hl, BATTLEANIMSTRUCT_01 + add hl, bc + res 5, [hl] +.four +.five +.six +.seven + call BattleAnim_IncAnonJumptableIndex + ret + +.eight + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $c0 + ret nc + ld a, $8 + call Functionce70a + ret + +Functioncd557: ; cd557 (33:5557) + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + bit 7, a + jr nz, .negative + cp $20 + jr nc, .plus_256 + cp $18 + jr nc, .plus_384 + ld de, $200 + ret + +.plus_384 + ld de, $180 + ret + +.plus_256 + ld de, $100 + ret + +.negative + and $3f + cp $20 + jr nc, .minus_256 + cp $18 + jr nc, .minus_384 + ld de, -$200 + ret + +.minus_384 + ld de, -$180 + ret + +.minus_256 + ld de, -$100 + ret + +BattleAnimFunction_4E: ; cd58a (33:558a) + call BattleAnim_AnonJumptable +.anon_dw + dw .zero + dw .one +.zero + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + and $40 + rlca + rlca + add $19 + ld hl, BATTLEANIMSTRUCT_FRAMESET_ID + add hl, bc + ld [hl], a + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $40 +.one + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + cp $30 + jr nc, .sine_cosine + call DeinitBattleAnimation + ret + +.sine_cosine + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + and $3f + ld d, a + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + dec [hl] + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + call Functioncd557 + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld h, [hl] + ld l, a + add hl, de + ld e, l + ld d, h + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld [hl], d + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld [hl], e + ret + +BattleAnimFunction_0C: ; cd5e9 (33:55e9) + call BattleAnim_AnonJumptable +.anon_dw + dw .zero + dw .one + dw .two +.zero + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $c +.one + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + and a + jr z, .next + dec [hl] + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + call Functionce70a + ret + +.next + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $0 + ld a, BATTLEANIMFRAMESET_22 + call ReinitBattleAnimFrameset +.two + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $98 + jr nc, .okay + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld h, [hl] + ld l, a + ld de, $60 + add hl, de + ld e, l + ld d, h + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], e + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld [hl], d +.okay + ld hl, BATTLEANIMSTRUCT_YCOORD + add hl, bc + ld a, [hl] + cp $20 + ret c + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + and $f0 + ld e, a + ld d, $ff + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_YCOORD + add hl, bc + ld h, [hl] + ld l, a + add hl, de + ld e, l + ld d, h + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld [hl], e + ld hl, BATTLEANIMSTRUCT_YCOORD + add hl, bc + ld [hl], d + ret + +BattleAnimFunction_0D: ; cd66a (33:566a) + call BattleAnim_AnonJumptable +.anon_dw + dw .zero + dw .one + dw .two + dw .three + dw .four +.zero + call BattleAnim_IncAnonJumptableIndex + ld a, rSCY - $ff00 + ld [hLCDCPointer], a + ld a, $58 + ld [hLYOverrideStart], a + ld a, $5e + ld [hLYOverrideEnd], a + ret + +.one + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld e, [hl] + ld hl, BATTLEANIMSTRUCT_YCOORD + add hl, bc + ld a, [hl] + cp e + jr nc, .asm_cd69b + call BattleAnim_IncAnonJumptableIndex + xor a + ld [hLYOverrideStart], a + ret + +.asm_cd69b + dec a + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + ld d, $10 + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_YCOORD + add hl, bc + add [hl] + sub $10 + ret c + ld [hLYOverrideStart], a + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld a, [hl] + inc a + and $7 + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + inc [hl] + inc [hl] +.two + ret + +.three + ld hl, BATTLEANIMSTRUCT_YCOORD + add hl, bc + ld a, [hl] + cp $70 + jr c, asm_cd6da + xor a + ld [hLCDCPointer], a + ld [hLYOverrideStart], a + ld [hLYOverrideEnd], a +.four + call DeinitBattleAnimation + ret + +asm_cd6da: ; cd6da (33:56da) + inc a + inc a + ld [hl], a + sub $10 + ret c + ld [hLYOverrideStart], a + ret + +BattleAnimFunction_0E: ; cd6e3 (33:56e3) + call BattleAnim_AnonJumptable +.anon_dw + dw Functioncd6ea + dw Functioncd6f7 +Functioncd6ea: ; cd6ea (33:56ea) + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, BATTLEANIMFRAMESET_24 + add [hl] ; offset + call ReinitBattleAnimFrameset +Functioncd6f7: ; cd6f7 (33:56f7) + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $b8 + jr c, .asm_cd704 + call DeinitBattleAnimation + ret + +.asm_cd704 + ld a, $2 + call Functionce70a + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + dec [hl] + ld d, $8 + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + ret + +BattleAnimFunction_0F: ; cd71a (33:571a) + call BattleAnim_AnonJumptable +.anon_dw + dw Functioncd725 + dw Functioncd728 + dw Functioncd763 + dw Functioncd776 +Functioncd725: ; cd725 (33:5725) + call BattleAnim_IncAnonJumptableIndex +Functioncd728: ; cd728 (33:5728) + ld hl, BATTLEANIMSTRUCT_YCOORD + add hl, bc + ld a, [hl] + cp $30 + jr c, .asm_cd747 + ld a, $2 + call Functionce70a + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + dec [hl] + ld d, $8 + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + ret + +.asm_cd747 + call BattleAnim_IncAnonJumptableIndex + ld a, BATTLEANIMFRAMESET_28 + call ReinitBattleAnimFrameset + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], $0 + ld hl, BATTLEANIMSTRUCT_YCOORD + add hl, bc + ld [hl], $30 + ld hl, BATTLEANIMSTRUCT_01 + add hl, bc + ld a, [hl] + and $1 + ld [hl], a +Functioncd763: ; cd763 (33:5763) + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld a, [hl] + cp $18 + jr nc, .asm_cd76e + inc [hl] + ret + +.asm_cd76e + call BattleAnim_IncAnonJumptableIndex + ld a, BATTLEANIMFRAMESET_29 + call ReinitBattleAnimFrameset +Functioncd776: ; cd776 (33:5776) + ret + +BattleAnimFunction_11: ; cd777 (33:5777) + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld a, [hl] + cp $38 + jr c, .asm_cd784 + call DeinitBattleAnimation + ret + +.asm_cd784 + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld l, [hl] + ld h, a + ld de, $80 + add hl, de + ld e, l + ld d, h + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], e + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], d + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld a, [hl] + xor $10 + ld [hl], a + ret + +BattleAnimFunction_14: ; cd7a4 (33:57a4) + call BattleAnim_AnonJumptable +.anon_dw + dw Functioncd7ab + dw Functioncd7d2 +Functioncd7ab: ; cd7ab (33:57ab) + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + and $f0 + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + and $f + sla a + sla a + sla a + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld [hl], $1 +Functioncd7d2: ; cd7d2 (33:57d2) + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld a, [hl] + and a + jr nz, .asm_cd7de + call DeinitBattleAnimation + ret + +.asm_cd7de + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + inc [hl] + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld d, [hl] + push af + push de + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + pop de + pop af + call BattleAnim_Cosine + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + xor $1 + ld [hl], a + ret z + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + dec [hl] + ret + +BattleAnimFunction_15: ; cd80c (33:580c) + call BattleAnim_AnonJumptable +.anon_dw + dw Functioncd81f + dw Functioncd817 + dw Functioncd81f + dw Functioncd820 +Functioncd817: ; cd817 (33:5817) + call BattleAnim_IncAnonJumptableIndex + ld a, BATTLEANIMFRAMESET_35 + call ReinitBattleAnimFrameset +Functioncd81f: ; cd81f (33:581f) + ret + +Functioncd820: ; cd820 (33:5820) + call DeinitBattleAnimation + ret + +BattleAnimFunction_16: ; cd824 (33:5824) + call BattleAnim_AnonJumptable +.anon_dw + dw Functioncd835 + dw Functioncd860 + dw Functioncd88f + dw Functioncd88f + dw Functioncd88f + dw Functioncd88f + dw Functioncd893 +Functioncd835: ; cd835 (33:5835) + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_FRAMESET_ID + add hl, bc + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + bit 7, [hl] + jr nz, .asm_cd852 + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $10 + jr .asm_cd858 + +.asm_cd852 + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $30 +.asm_cd858 + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + and $7f + ld [hl], a +Functioncd860: ; cd860 (33:5860) + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld d, [hl] + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + bit 7, a + jr nz, .load_no_inc + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld a, [hl] + inc a + jr .reinit + +.load_no_inc + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld a, [hl] +.reinit + call ReinitBattleAnimFrameset + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + inc [hl] + ld a, [hl] + and $1f + ret nz +Functioncd88f: ; cd88f (33:588f) + call BattleAnim_IncAnonJumptableIndex + ret + +Functioncd893: ; cd893 (33:5893) + ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX + add hl, bc + ld [hl], $1 + ret + +BattleAnimFunction_17: ; cd89a (33:589a) + call BattleAnim_AnonJumptable +.anon_dw + dw Functioncd8ab + dw Functioncd8cc + dw Functioncd8f5 + dw Functioncd8f5 + dw Functioncd8f5 + dw Functioncd8f5 + dw Functioncd8f9 +Functioncd8ab: ; cd8ab (33:58ab) + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + bit 7, [hl] + jr nz, .asm_cd8be + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $10 + jr .asm_cd8c4 + +.asm_cd8be + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $30 +.asm_cd8c4 + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + and $7f + ld [hl], a +Functioncd8cc: ; cd8cc (33:58cc) + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld d, [hl] + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + bit 7, a + jr nz, .asm_cd8e6 + ld a, $3d + jr .asm_cd8e8 + +.asm_cd8e6 + ld a, $3c +.asm_cd8e8 + call ReinitBattleAnimFrameset + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + inc [hl] + inc [hl] + ld a, [hl] + and $1f + ret nz +Functioncd8f5: ; cd8f5 (33:58f5) + call BattleAnim_IncAnonJumptableIndex + ret + +Functioncd8f9: ; cd8f9 (33:58f9) + ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX + add hl, bc + ld [hl], $1 + ret + +BattleAnimFunction_18: ; cd900 (33:5900) + call BattleAnim_AnonJumptable +.anon_dw + dw Functioncd907 + dw Functioncd913 +Functioncd907: ; cd907 (33:5907) + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $28 + inc hl + ld [hl], $0 +Functioncd913: ; cd913 (33:5913) + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld d, [hl] + push af + push de + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + pop de + pop af + call BattleAnim_Cosine + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + and a + jr z, .asm_cd950 + ld d, a + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld e, [hl] + ld hl, hPushOAM ; $ff80 + add hl, de + ld e, l + ld d, h + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld [hl], e + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], d + ret + +.asm_cd950 + call DeinitBattleAnimation + ret + +BattleAnimFunction_19: ; cd954 (33:5954) + call BattleAnim_AnonJumptable +.anon_dw + dw Functioncd961 + dw Functioncd96a + dw Functioncd96e + dw Functioncd96a + dw Functioncd97b +Functioncd961: ; cd961 (33:5961) + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld [hl], $0 +Functioncd96a: ; cd96a (33:596a) + call Functioncd99a + ret + +Functioncd96e: ; cd96e (33:596e) + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $88 + jr c, asm_cd988 + call BattleAnim_IncAnonJumptableIndex + ret + +Functioncd97b: ; cd97b (33:597b) + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $b8 + jr c, asm_cd988 + call DeinitBattleAnimation + ret + +asm_cd988: ; cd988 (33:5988) + call Functioncd99a + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + inc [hl] + ld a, [hl] + and $1 + ret nz + ld hl, BATTLEANIMSTRUCT_YCOORD + add hl, bc + dec [hl] + ret + +Functioncd99a: ; cd99a (33:599a) + call Functioncd9f4 + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + push af + push de + call BattleAnim_Sine + sra a + sra a + sra a + sra a + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + add [hl] + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + pop de + pop af + call BattleAnim_Cosine + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + sub $8 + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + and a + jr z, .asm_cd9d7 + cp $c2 + jr c, .asm_cd9e2 +.asm_cd9d7 + dec a + ld [hl], a + and $7 + ret nz + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + inc [hl] + ret + +.asm_cd9e2 + xor a + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hli], a + ld [hl], a + ret + +Functioncd9f4: ; cd9f4 (33:59f4) + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld e, [hl] + ld d, 0 + ld hl, Unknown_cda01 + add hl, de + ld d, [hl] + ret + +; cda01 (33:5a01) +Unknown_cda01: ; cda01 + db 8, 6, 5, 4, 5, 6, 8, 12, 16 +; cda0a +BattleAnimFunction_1C: ; cda0a (33:5a0a) + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $30 + jr nc, .asm_cda17 + call DeinitBattleAnimation + ret + +.asm_cda17 + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + and $f + ld e, a + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + sub e + ld [hl], a + srl e + ld hl, BATTLEANIMSTRUCT_YCOORD + add hl, bc +.asm_cda2c + inc [hl] + dec e + jr nz, .asm_cda2c + ret + +BattleAnimFunction_1F: ; cda31 (33:5a31) + call BattleAnim_AnonJumptable +.anon_dw + dw Functioncda4c + dw Functioncda3a + dw Functioncda4c +Functioncda3a: ; cda3a (33:5a3a) + ld hl, BATTLEANIMSTRUCT_FRAMESET_ID + add hl, bc + ld a, [hl] + inc a + call ReinitBattleAnimFrameset + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $8 +Functioncda4c: ; cda4c (33:5a4c) + ret + +BattleAnimFunction_LeechSeed: ; cda4d (33:5a4d) + call BattleAnim_AnonJumptable +.anon_dw + dw .zero + dw .one + dw .two + dw .three +.zero: ; cda58 (33:5a58) + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld [hl], $40 + ret + +.one: ; cda62 (33:5a62) + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld a, [hl] + cp $20 + jr c, .sprout + call Functioncda8d + ret + +.sprout + ld [hl], $40 + ld a, BATTLEANIMFRAMESET_57 + call ReinitBattleAnimFrameset + call BattleAnim_IncAnonJumptableIndex + ret + +.two: ; cda7a (33:5a7a) + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld a, [hl] + and a + jr z, .flutter + dec [hl] + ret + +.flutter + call BattleAnim_IncAnonJumptableIndex + ld a, BATTLEANIMFRAMESET_58 + call ReinitBattleAnimFrameset +.three: ; cda8c (33:5a8c) + ret + +Functioncda8d: ; cda8d (33:5a8d) + dec [hl] + ld d, $20 + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_02 + add hl, bc + ld a, [hl] + add $2 + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld e, [hl] + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld d, [hl] + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld h, [hl] + ld a, h + and $f + swap a + ld l, a + ld a, h + and $f0 + swap a + ld h, a + add hl, de + ld e, l + ld d, h + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], e + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld [hl], d + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld a, [hl] + and $1 + ret nz + ld hl, BATTLEANIMSTRUCT_YCOORD + add hl, bc + dec [hl] + ret + +BattleAnimFunction_3F: ; cdad6 (33:5ad6) + call BattleAnim_AnonJumptable +.anon_dw + dw Functioncdadf + dw Functioncdae9 + dw Functioncdaf9 +Functioncdadf: ; cdadf (33:5adf) + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld [hl], $40 + ret + +Functioncdae9: ; cdae9 (33:5ae9) + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld a, [hl] + cp $20 + jr c, .asm_cdaf6 + call Functioncda8d + ret + +.asm_cdaf6 + call BattleAnim_IncAnonJumptableIndex +Functioncdaf9: ; cdaf9 (33:5af9) + ret + +BattleAnimFunction_1A: ; cdafa (33:5afa) + call BattleAnimFunction_03 + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + add $f + ld [hl], a + ret + +BattleAnimFunction_1B: ; cdb06 (33:5b06) + call BattleAnim_AnonJumptable +.anon_dw + dw Functioncdb13 + dw Functioncdb14 + dw Functioncdb28 + dw Functioncdb50 + dw Functioncdb65 +Functioncdb13: ; cdb13 (33:5b13) + ret + +Functioncdb14: ; cdb14 (33:5b14) + ld hl, BATTLEANIMSTRUCT_YCOORD + add hl, bc + ld a, [hl] + cp $30 + jr c, .asm_cdb24 + ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX + add hl, bc + ld [hl], $0 + ret + +.asm_cdb24 + add $4 + ld [hl], a + ret + +Functioncdb28: ; cdb28 (33:5b28) + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $98 + ret nc + inc [hl] + inc [hl] + ld hl, BATTLEANIMSTRUCT_01 + add hl, bc + set 0, [hl] + ld hl, BATTLEANIMSTRUCT_02 + add hl, bc + ld [hl], $90 + ld hl, BATTLEANIMSTRUCT_FRAME + add hl, bc + ld [hl], $0 + ld hl, BATTLEANIMSTRUCT_DURATION + add hl, bc + ld [hl], $2 + ld hl, BATTLEANIMSTRUCT_YCOORD + add hl, bc + dec [hl] + ret + +Functioncdb50: ; cdb50 (33:5b50) + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $2c + ld hl, BATTLEANIMSTRUCT_FRAME + add hl, bc + ld [hl], $0 + ld hl, BATTLEANIMSTRUCT_DURATION + add hl, bc + ld [hl], $80 +Functioncdb65: ; cdb65 (33:5b65) + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $98 + ret nc + inc [hl] + inc [hl] + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + inc [hl] + ld d, $8 + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + ret + +BattleAnimFunction_1D: ; cdb80 (33:5b80) + call BattleAnim_AnonJumptable +.anon_dw + dw Functioncdb9f + dw Functioncdbb3 + dw Functioncdbcf + dw Functioncdbeb + dw Functioncdc74 + dw Functioncdc1a + dw Functioncdbc1 + dw Functioncdc1e + dw Functioncdc27 + dw Functioncdc39 + dw Functioncdc74 + dw Functioncdc48 + dw Functioncdc57 + dw Functioncdc74 +Functioncdb9f: ; cdb9f (33:5b9f) + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $28 + inc hl + ld [hl], $10 + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX + add hl, bc + ld [hl], a + ret + +Functioncdbb3: ; cdbb3 (33:5bb3) + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $40 + jr nc, .asm_cdbbd + inc [hl] +.asm_cdbbd + call Functioncdc75 + ret + +Functioncdbc1: ; cdbc1 (33:5bc1) + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $4b + jr nc, .asm_cdbcb + inc [hl] +.asm_cdbcb + call Functioncdc75 + ret + +Functioncdbcf: ; cdbcf (33:5bcf) + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $88 + jr nc, .asm_cdbe6 + and $f + jr nz, asm_cdbfa + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld [hl], $10 + call BattleAnim_IncAnonJumptableIndex + ret + +.asm_cdbe6 + call BattleAnim_IncAnonJumptableIndex + inc [hl] + ret + +Functioncdbeb: ; cdbeb (33:5beb) + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld a, [hl] + and a + jr z, .asm_cdbf5 + dec [hl] + ret + +.asm_cdbf5 + ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX + add hl, bc + dec [hl] +asm_cdbfa: ; cdbfa (33:5bfa) + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + inc [hl] + ld hl, BATTLEANIMSTRUCT_YCOORD + add hl, bc + ld d, [hl] + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld e, [hl] + ld hl, hPushOAM ; $ff80 + add hl, de + ld e, l + ld d, h + ld hl, BATTLEANIMSTRUCT_YCOORD + add hl, bc + ld [hl], d + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], e + ret + +Functioncdc1a: ; cdc1a (33:5c1a) + call DeinitBattleAnimation + ret + +Functioncdc1e: ; cdc1e (33:5c1e) + ld a, BATTLEANIMFRAMESET_4E + call ReinitBattleAnimFrameset + call BattleAnim_IncAnonJumptableIndex + ret + +Functioncdc27: ; cdc27 (33:5c27) + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + inc [hl] + inc [hl] + ld d, $2 + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ret + +Functioncdc39: ; cdc39 (33:5c39) + ld a, BATTLEANIMFRAMESET_50 + call ReinitBattleAnimFrameset + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], $4 + call BattleAnim_IncAnonJumptableIndex + ret + +Functioncdc48: ; cdc48 (33:5c48) + ld a, BATTLEANIMFRAMESET_4F + call ReinitBattleAnimFrameset + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $40 + ret + +Functioncdc57: ; cdc57 (33:5c57) + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + ld d, $20 + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + cp $30 + jr c, .asm_cdc71 + dec [hl] + ret + +.asm_cdc71 + call BattleAnim_IncAnonJumptableIndex +Functioncdc74: ; cdc74 (33:5c74) + ret + +Functioncdc75: ; cdc75 (33:5c75) + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hli] + ld d, [hl] + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + inc [hl] + ld a, [hl] + and $3f + ret nz + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $20 + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld a, [hl] + sub $8 + ld [hl], a + ret nz + xor a + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hli], a + ld [hl], a + call BattleAnim_IncAnonJumptableIndex + ret + +BattleAnimFunction_1E: ; cdca6 (33:5ca6) + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld a, [hl] + and a + jr z, .asm_cdcb6 + cp $d8 + jr nc, .asm_cdcb6 + call DeinitBattleAnimation + ret + +.asm_cdcb6 + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld d, [hl] + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld a, [hl] + sub d + ld [hl], a + ret + +BattleAnimFunction_21: ; cdcc3 (33:5cc3) + call BattleAnim_AnonJumptable +.anon_dw + dw Functioncdcca + dw Functioncdced +Functioncdcca: ; cdcca (33:5cca) + ld a, [hBattleTurn] + and a + jr z, .asm_cdcd9 + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + xor $ff + add $3 + ld [hl], a +.asm_cdcd9 + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $8 + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, BATTLEANIMFRAMESET_59 + add [hl] + call ReinitBattleAnimFrameset + ret + +Functioncdced: ; cdced (33:5ced) + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + and a + jr z, .asm_cdcfa + dec [hl] + call Functioncdcfe + ret + +.asm_cdcfa + call DeinitBattleAnimation + ret + +Functioncdcfe: ; cdcfe (33:5cfe) + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld a, [hl] + inc [hl] + inc [hl] + ld d, $10 + call BattleAnim_Sine + ld d, a + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + and a + jr z, .asm_cdd20 + dec a + ret z + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], d + ret + +.asm_cdd20 + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld a, d + xor $ff + inc a + ld [hl], a + ret + +BattleAnimFunction_22: ; cdd2a (33:5d2a) + call BattleAnim_AnonJumptable +.anon_dw + dw Functioncdd31 + dw Functioncdd4f +Functioncdd31: ; cdd31 (33:5d31) + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + and $3f + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + and $80 + rlca + ld [hl], a + add BATTLEANIMFRAMESET_5D + call ReinitBattleAnimFrameset + ret + +Functioncdd4f: ; cdd4f (33:5d4f) + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + swap a + ld d, a + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld a, [hl] + inc [hl] + push af + push de + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + pop de + pop af + call BattleAnim_Cosine + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $80 + ret nc + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld a, [hl] + and $3 + jr nz, .asm_cdd87 + ld hl, BATTLEANIMSTRUCT_YCOORD + add hl, bc + dec [hl] +.asm_cdd87 + and $1 + ret nz + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + inc [hl] + ret + +BattleAnimFunction_23: ; cdd90 (33:5d90) + call BattleAnim_AnonJumptable +.anon_dw + dw Functioncdd97 + dw Functioncddbc +Functioncdd97: ; cdd97 (33:5d97) + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_FRAMESET_ID + add hl, bc + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + and $80 + rlca + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + add [hl] + call ReinitBattleAnimFrameset + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + and $7f + ld [hl], a +Functioncddbc: ; cddbc (33:5dbc) + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + ld d, $10 + push af + push de + call BattleAnim_Sine + sra a + sra a + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + pop de + pop af + call BattleAnim_Cosine + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + inc [hl] + and $3f + jr z, .asm_cddf0 + and $1f + ret nz + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + inc a + jr .asm_cddf5 + +.asm_cddf0 + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] +.asm_cddf5 + call ReinitBattleAnimFrameset + ret + +BattleAnimFunction_24: ; cddf9 (33:5df9) + call BattleAnim_AnonJumptable +.anon_dw + dw Functioncde02 + dw Functioncde20 + dw Functioncde21 +Functioncde02: ; cde02 (33:5e02) + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + add BATTLEANIMFRAMESET_63 + call ReinitBattleAnimFrameset + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld e, [hl] + ld d, 0 + ld hl, Unknown_cde25 + add hl, de + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a +Functioncde20: ; cde20 (33:5e20) + ret + +Functioncde21: ; cde21 (33:5e21) + call DeinitBattleAnimation + ret + +; cde25 (33:5e25) +Unknown_cde25: ; cde25 + db $ec, $f8, $00 +; cde28 +BattleAnimFunction_25: ; cde28 (33:5e28) + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + inc [hl] + inc [hl] + ld d, $4 + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld d, [hl] + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld e, [hl] + ld hl, $ffa0 + add hl, de + ld e, l + ld d, h + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], d + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld [hl], e + ret + +BattleAnimFunction_26: ; cde54 (33:5e54) + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + dec [hl] + dec [hl] + ld d, $10 + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + inc [hl] + ret + +BattleAnimFunction_27: ; cde6b (33:5e6b) + call BattleAnim_AnonJumptable +.anon_dw + dw Functioncde72 + dw Functioncde88 +Functioncde72: ; cde72 (33:5e72) + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + and a + jr nz, .asm_cde83 + ld hl, BATTLEANIMSTRUCT_01 + add hl, bc + set 6, [hl] +.asm_cde83 + add BATTLEANIMFRAMESET_6A + call ReinitBattleAnimFrameset +Functioncde88: ; cde88 (33:5e88) + ret + +BattleAnimFunction_28: ; cde89 (33:5e89) + call BattleAnim_AnonJumptable +.anon_dw + dw Functioncde90 + dw Functioncdebf +Functioncde90: ; cde90 (33:5e90) + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $0 + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld e, [hl] + ld a, e + and $70 + swap a + ld [hl], a + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld a, e + and $80 + jr nz, .asm_cdeb2 + ld a, e + and $f + ld [hl], a + ret + +.asm_cdeb2 + ld a, e + and $f + xor $ff + inc a + ld [hl], a + ld a, BATTLEANIMFRAMESET_6E + call ReinitBattleAnimFrameset + ret + +Functioncdebf: ; cdebf (33:5ebf) + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + and a + jr z, .asm_cdec9 + dec [hl] + ret + +.asm_cdec9 + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld a, [hl] + xor $ff + inc a + ld [hl], a + ret + +BattleAnimFunction_SpiralDescent: ; cdedd (33:5edd) + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + ld d, $18 + push af + push de + call BattleAnim_Sine + sra a + sra a + sra a + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + add [hl] + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + pop de + pop af + call BattleAnim_Cosine + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + inc [hl] + ld a, [hl] + and $7 + ret nz + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld a, [hl] + cp $28 + jr nc, .delete + inc [hl] + ret + +.delete + call DeinitBattleAnimation + ret + +BattleAnimFunction_2D: ; cdf1b (33:5f1b) + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + ld d, $18 + push af + push de + call BattleAnim_Sine + sra a + sra a + sra a + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + add [hl] + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + pop de + pop af + call BattleAnim_Cosine + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + inc [hl] + ld a, [hl] + and $3 + ret nz + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld a, [hl] + cp $28 + jr nc, .asm_cdf55 + inc [hl] + ret + +.asm_cdf55 + call DeinitBattleAnimation + ret + +BattleAnimFunction_PoisonGas: ; cdf59 (33:5f59) + call BattleAnim_AnonJumptable +.anon_dw + dw Functioncdf60 + dw BattleAnimFunction_SpiralDescent +Functioncdf60: ; cdf60 (33:5f60) + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $84 + jr nc, .next + inc [hl] + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + inc [hl] + ld d, $18 + call BattleAnim_Cosine + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + and $1 + ret nz + ld hl, BATTLEANIMSTRUCT_YCOORD + add hl, bc + dec [hl] + ret + +.next + call BattleAnim_IncAnonJumptableIndex + ret + +BattleAnimFunction_34: ; cdf8c (33:5f8c) + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + ld d, $18 + push af + push de + call BattleAnim_Sine + sra a + sra a + sra a + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + add [hl] + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + pop de + pop af + call BattleAnim_Cosine + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + inc [hl] + inc [hl] + ld a, [hl] + and $7 + ret nz + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld a, [hl] + cp $e8 + jr z, .asm_cdfc7 + dec [hl] + ret + +.asm_cdfc7 + call DeinitBattleAnimation + ret + +BattleAnimFunction_3C: ; cdfcb (33:5fcb) + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + ld d, $18 + push af + push de + call BattleAnim_Sine + sra a + sra a + sra a + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + add [hl] + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + pop de + pop af + call BattleAnim_Cosine + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + inc [hl] + inc [hl] + ld a, [hl] + and $3 + ret nz + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld a, [hl] + cp $d0 + jr z, .asm_ce007 + dec [hl] + dec [hl] + ret + +.asm_ce007 + call DeinitBattleAnimation + ret + +BattleAnimFunction_35: ; ce00b (33:600b) + call BattleAnim_AnonJumptable +.anon_dw + dw Functionce014 + dw Functionce023 + dw Functionce05f +Functionce014: ; ce014 (33:6014) + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $34 + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld [hl], $10 +Functionce023: ; ce023 (33:6023) + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $6c + jr c, .asm_ce02d + ret + +.asm_ce02d + ld a, $2 + call Functionce70a + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld d, [hl] + call BattleAnim_Sine + bit 7, a + jr nz, .asm_ce046 + xor $ff + inc a +.asm_ce046 + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + sub $4 + ld [hl], a + and $1f + cp $20 + ret nz + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + srl [hl] + ret + +Functionce05f: ; ce05f (33:605f) + call DeinitBattleAnimation + ret + +BattleAnimFunction_Horn: ; ce063 (33:6063) + call BattleAnim_AnonJumptable +.anon_dw + dw .zero + dw .one + dw .two + dw Functionce09e +.zero: ; ce06e (33:606e) + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_YCOORD + add hl, bc + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], a + ret + +.one: ; ce083 (33:6083) + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $58 + ret nc + ld a, $2 + call Functionce70a + ret + +.two: ; ce091 (33:6091) + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld a, [hl] + cp $20 + jr c, Functionce09e + call DeinitBattleAnimation + ret + +Functionce09e: ; ce09e (33:609e) + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld a, [hl] + ld d, $8 + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + sra a + xor $ff + inc a + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + add [hl] + ld hl, BATTLEANIMSTRUCT_YCOORD + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld a, [hl] + add $8 + ld [hl], a + ret + +BattleAnimFunction_2C: ; ce0c5 (33:60c5) + call BattleAnim_AnonJumptable +.anon_dw + dw Functionce0ce + dw Functionce0f8 + dw Functionce0dd +Functionce0ce: ; ce0ce (33:60ce) + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + and $f0 + swap a + ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX + add hl, bc + ld [hl], a + ret + +Functionce0dd: ; ce0dd (33:60dd) + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + ld d, $10 + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + bit 7, a + jr z, .asm_ce0f0 + ld [hl], a +.asm_ce0f0 + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + sub $4 + ld [hl], a +Functionce0f8: ; ce0f8 (33:60f8) + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $84 + jr c, .asm_ce105 + call DeinitBattleAnimation + ret + +.asm_ce105 + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + call Functionce70a + ret + +BattleAnimFunction_2E: ; ce10e (33:610e) + call BattleAnim_AnonJumptable +.anon_dw + dw Functionce115 + dw Functionce12a +Functionce115: ; ce115 (33:6115) + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $28 + ld hl, BATTLEANIMSTRUCT_YCOORD + add hl, bc + ld a, [hl] + sub $28 + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld [hl], a +Functionce12a: ; ce12a (33:612a) + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hli] + ld d, [hl] + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + and [hl] + jr nz, .asm_ce149 + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + dec [hl] +.asm_ce149 + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + inc [hl] + ld a, [hl] + and $3f + ret nz + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $20 + inc hl + srl [hl] + ret + +BattleAnimFunction_2F: ; ce15c (33:615c) + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld d, [hl] + push af + push de + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + pop de + pop af + call BattleAnim_Cosine + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + inc [hl] + ld a, [hl] + and $1 + jr nz, .asm_ce189 + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + dec [hl] +.asm_ce189 + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + and $3 + jr nz, .asm_ce197 + ld hl, BATTLEANIMSTRUCT_YCOORD + add hl, bc + inc [hl] +.asm_ce197 + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + cp $5a + jr nc, .asm_ce1aa + ld a, [hl] + and a + jr z, .asm_ce1ac + dec [hl] + ret + +.asm_ce1aa + inc [hl] + ret + +.asm_ce1ac + call DeinitBattleAnimation + ret + +BattleAnimFunction_42: ; ce1b0 (33:61b0) + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + inc [hl] + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld d, [hl] + push af + push de + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + pop de + pop af + call BattleAnim_Cosine + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld a, [hl] + inc [hl] + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + cp $40 + jr nc, .asm_ce1df + inc [hl] + ret + +.asm_ce1df + ld a, [hl] + dec [hl] + and a + ret nz + call DeinitBattleAnimation + ret + +BattleAnimFunction_30: ; ce1e7 (33:61e7) + call BattleAnim_AnonJumptable +.anon_dw + dw Functionce1ee + dw Functionce1fb +Functionce1ee: ; ce1ee (33:61ee) + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_YCOORD + add hl, bc + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld [hl], a +Functionce1fb: ; ce1fb (33:61fb) + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + ld d, $30 + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + add [hl] + ld hl, BATTLEANIMSTRUCT_YCOORD + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + add $8 + ld d, $30 + call BattleAnim_Cosine + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + inc [hl] + ret + +BattleAnimFunction_31: ; ce226 (33:6226) + call BattleAnim_AnonJumptable +.anon_dw + dw Functionce22d + dw Functionce254 +Functionce22d: ; ce22d (33:622d) + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + ld d, $10 + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + ld d, $10 + call BattleAnim_Cosine + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld [hl], $f +Functionce254: ; ce254 (33:6254) + ret + +BattleAnimFunction_32: ; ce255 (33:6255) + call BattleAnim_AnonJumptable +.anon_dw + dw Functionce260 + dw Functionce274 + dw Functionce278 + dw Functionce289 +Functionce260: ; ce260 (33:6260) + call BattleAnim_IncAnonJumptableIndex + ld a, [hBattleTurn] + and a + jr nz, .asm_ce26c + ld a, $f0 + jr .asm_ce26e + +.asm_ce26c + ld a, $cc +.asm_ce26e + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], a + ret + +Functionce274: ; ce274 (33:6274) + call Functionce29f + ret + +Functionce278: ; ce278 (33:6278) + call Functionce29f + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $84 + ret nc + ld a, $4 + call Functionce70a + ret + +Functionce289: ; ce289 (33:6289) + call Functionce29f + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $d0 + jr nc, .asm_ce29b + ld a, $4 + call Functionce70a + ret + +.asm_ce29b + call DeinitBattleAnimation + ret + +Functionce29f: ; ce29f (33:629f) + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld a, [hl] + and $7 + inc [hl] + srl a + ld e, a + ld d, $0 + ld a, [hSGB] + and a + jr nz, .asm_ce2b6 + ld hl, Unknown_ce2c4 + jr .asm_ce2b9 + +.asm_ce2b6 + ld hl, Unknown_ce2c8 +.asm_ce2b9 + add hl, de + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + and [hl] + ld [wOBP0], a + ret + +; ce2c4 (33:62c4) +Unknown_ce2c4: ; ce2c4 + db $ff, $aa, $55, $aa +Unknown_ce2c8: ; ce2c8 + db $ff, $ff, $00, $00 +; ce2cc +BattleAnimFunction_33: ; ce2cc (33:62cc) + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + ld d, $18 + call BattleAnim_Sine + sra a + sra a + sra a + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + add [hl] + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + inc [hl] + ld d, $18 + call BattleAnim_Cosine + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + dec [hl] + dec [hl] + ret + +BattleAnimFunction_36: ; ce2fd (33:62fd) + call BattleAnim_AnonJumptable +.anon_dw + dw Functionce306 + dw Functionce330 + dw Functionce34c +Functionce306: ; ce306 (33:6306) + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld a, [hl] + cp $e0 + jr nz, .asm_ce319 + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $2 + ret + +.asm_ce319 + ld d, a + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld e, [hl] + ld hl, hPushOAM ; $ff80 + add hl, de + ld e, l + ld d, h + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], d + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], e + ret + +Functionce330: ; ce330 (33:6330) + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld a, [hl] + and a + jr z, .asm_ce33a + dec [hl] + ret + +.asm_ce33a + ld [hl], $4 + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + xor $ff + inc a + ld [hl], a + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + add [hl] + ld [hl], a + ret + +Functionce34c: ; ce34c (33:634c) + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $84 + jr nc, .asm_ce35b + ld a, $4 + call Functionce70a + ret + +.asm_ce35b + call DeinitBattleAnimation + ret + +BattleAnimFunction_37: ; ce35f (33:635f) + call BattleAnim_AnonJumptable +.anon_dw + dw Functionce366 + dw Functionce375 +Functionce366: ; ce366 (33:6366) + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + and $7f + add BATTLEANIMFRAMESET_81 + call ReinitBattleAnimFrameset +Functionce375: ; ce375 (33:6375) + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + bit 7, [hl] + jr nz, .asm_ce383 + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + inc [hl] + ret + +.asm_ce383 + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + dec [hl] + ret + +BattleAnimFunction_38: ; ce389 (33:6389) + call BattleAnim_AnonJumptable +.anon_dw + dw Functionce392 + dw Functionce39c + dw Functionce3ae +Functionce392: ; ce392 (33:6392) + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $c + ret + +Functionce39c: ; ce39c (33:639c) + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + and a + jr z, .asm_ce3a6 + dec [hl] + ret + +.asm_ce3a6 + call BattleAnim_IncAnonJumptableIndex + ld a, BATTLEANIMFRAMESET_20 + call ReinitBattleAnimFrameset +Functionce3ae: ; ce3ae (33:63ae) + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + dec [hl] + ret + +BattleAnimFunction_39: ; ce3b4 (33:63b4) + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + inc [hl] + inc [hl] + push af + ld d, $2 + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + pop af + ld d, $8 + call BattleAnim_Cosine + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ret + +BattleAnimFunction_3A: ; ce3d2 (33:63d2) + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld a, [hl] + cp $20 + jr c, .asm_ce3df + call DeinitBattleAnimation + ret + +.asm_ce3df + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + ld d, $8 + call BattleAnim_Cosine + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + add $2 + ld [hl], a + and $7 + ret nz + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + inc [hl] + ret + +BattleAnimFunction_3B: ; ce3ff (33:63ff) + call BattleAnim_AnonJumptable +.anon_dw + dw Functionce406 + dw Functionce412 +Functionce406: ; ce406 (33:6406) + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + add [hl] + ld [hl], a + ret + +Functionce412: ; ce412 (33:6412) + call DeinitBattleAnimation + ret + +BattleAnimFunction_3D: ; ce416 (33:6416) + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + ld d, $18 + push af + push de + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + pop de + pop af + call BattleAnim_Cosine + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + sra a + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + inc [hl] + ret + +BattleAnimFunction_3E: ; ce43a (33:643a) + call BattleAnim_AnonJumptable +.anon_dw + dw Functionce443 + dw Functionce465 + dw Functionce490 +Functionce443: ; ce443 (33:6443) + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $28 + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + and $f + ld hl, BATTLEANIMSTRUCT_FRAMESET_ID + add hl, bc + add [hl] + call ReinitBattleAnimFrameset + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + and $f0 + or $8 + ld [hl], a +Functionce465: ; ce465 (33:6465) + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + and a + jr z, .asm_ce48b + dec [hl] + add $8 + ld d, a + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + push af + push de + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + pop de + pop af + call BattleAnim_Cosine + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ret + +.asm_ce48b + ld [hl], $10 + call BattleAnim_IncAnonJumptableIndex +Functionce490: ; ce490 (33:6490) + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + dec [hl] + and a + ret nz + call DeinitBattleAnimation + ret + +BattleAnimFunction_40: ; ce49c (33:649c) + call BattleAnim_AnonJumptable +.anon_dw + dw Functionce4a3 + dw Functionce4b0 +Functionce4a3: ; ce4a3 (33:64a3) + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, BATTLEANIMFRAMESET_24 + add [hl] + call ReinitBattleAnimFrameset +Functionce4b0: ; ce4b0 (33:64b0) + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld a, [hl] + cp $38 + jr nc, .asm_ce4d8 + inc [hl] + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + inc [hl] + ld d, $18 + call BattleAnim_Cosine + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_YCOORD + add hl, bc + ld a, [hl] + and $1 + ret nz + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + dec [hl] + ret + +.asm_ce4d8 + call DeinitBattleAnimation + ret + +BattleAnimFunction_41: ; ce4dc (33:64dc) + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + and a + ret z + ld d, a + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + inc [hl] + call BattleAnim_Sine + bit 7, a + jr nz, .asm_ce4f4 + xor $ff + inc a +.asm_ce4f4 + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + and $1f + ret nz + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + srl [hl] + ret + +BattleAnimFunction_43: ; ce508 (33:6508) + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + cp $10 + jr nc, .asm_ce52e + inc [hl] + inc [hl] + ld d, a + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + push af + push de + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + pop de + pop af + call BattleAnim_Cosine + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ret + +.asm_ce52e + call DeinitBattleAnimation + ret + +BattleAnimFunction_44: ; ce532 (33:6532) + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld e, [hl] + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld d, [hl] + ld a, e + and $c0 + rlca + rlca + add [hl] + ld [hl], a + ld a, e + and $3f + push af + push de + call BattleAnim_Sine + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + pop de + pop af + call BattleAnim_Cosine + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ret + +BattleAnimFunction_45: ; ce55b (33:655b) + call BattleAnim_AnonJumptable +.anon_dw + dw Functionce564 + dw Functionce56e + dw Functionce577 +Functionce564: ; ce564 (33:6564) + ld d, $18 + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + inc [hl] + jr asm_ce58f + +Functionce56e: ; ce56e (33:656e) + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $18 +Functionce577: ; ce577 (33:6577) + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + cp $80 + jr nc, .asm_ce58b + ld d, a + add $8 + ld [hl], a + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + jr asm_ce58f + +.asm_ce58b + call DeinitBattleAnimation + ret + +asm_ce58f: ; ce58f (33:658f) + call Functionce6f1 + ret + +BattleAnimFunction_46: ; ce593 (33:6593) + call BattleAnim_AnonJumptable +.anon_dw + dw Functionce5b3 + dw Functionce59a +Functionce59a: ; ce59a (33:659a) + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $30 + jr c, .asm_ce5b0 + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + dec [hl] + dec [hl] + ld hl, BATTLEANIMSTRUCT_YCOORD + add hl, bc + inc [hl] + inc [hl] + ret + +.asm_ce5b0 + call DeinitBattleAnimation +Functionce5b3: ; ce5b3 (33:65b3) + ret + +BattleAnimFunction_47: ; ce5b4 (33:65b4) + ld d, $50 + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + inc [hl] + inc [hl] + push af + push de + call BattleAnim_Sine + sra a + sra a + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + add [hl] + inc [hl] + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + pop de + pop af + call BattleAnim_Cosine + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ret + +BattleAnimFunction_48: ; ce5dc (33:65dc) + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld a, [hl] + cp $d0 + jr z, .disappear + dec [hl] + dec [hl] + dec [hl] + dec [hl] + ret + +.disappear + call DeinitBattleAnimation + ret + +BattleAnimFunction_49: ; ce5ee (33:65ee) + call BattleAnim_AnonJumptable +.anon_dw + dw Functionce5f9 + dw Functionce60a + dw Functionce622 + dw Functionce618 +Functionce5f9: ; ce5f9 (33:65f9) + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + and a + jr nz, asm_ce61c + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], $ec +Functionce60a: ; ce60a (33:660a) + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld a, [hl] + cp $4 + jr z, Functionce618 + inc [hl] + inc [hl] + inc [hl] + inc [hl] + ret + +Functionce618: ; ce618 (33:6618) + call DeinitBattleAnimation + ret + +asm_ce61c: ; ce61c (33:661c) + call BattleAnim_IncAnonJumptableIndex + call BattleAnim_IncAnonJumptableIndex +Functionce622: ; ce622 (33:6622) + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld a, [hl] + cp $d8 + ret z + dec [hl] + dec [hl] + dec [hl] + dec [hl] + ret + +BattleAnimFunction_4A: ; ce62f (33:662f) + call BattleAnim_AnonJumptable +.anon_dw + dw Functionce63a + dw Functionce648 + dw Functionce65c + dw Functionce672 +Functionce63a: ; ce63a (33:663a) + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX + add hl, bc + ld [hl], a + call BattleAnim_IncAnonJumptableIndex + ret + +Functionce648: ; ce648 (33:6648) + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld a, [hl] + add $4 + cp $70 + jr c, .asm_ce654 + xor a +.asm_ce654 + ld [hl], a + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + inc [hl] + inc [hl] + ret + +Functionce65c: ; ce65c (33:665c) + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld a, [hl] + add $4 + cp $70 + jr c, .asm_ce668 + xor a +.asm_ce668 + ld [hl], a + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld a, [hl] + add $8 + ld [hl], a + ret + +Functionce672: ; ce672 (33:6672) + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld a, [hl] + add $4 + cp $70 + jr c, .asm_ce67e + xor a +.asm_ce67e + ld [hl], a + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld a, [hl] + add $4 + ld [hl], a + ret + +BattleAnimFunction_4B: ; ce688 (33:6688) + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld d, [hl] + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld e, [hl] + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + ld l, a + and $f0 + ld h, a + swap a + or h + ld h, a + ld a, l + and $f + swap a + ld l, a + add hl, de + ld e, l + ld d, h + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld [hl], d + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], e + ret + +BattleAnimFunction_4C: ; ce6b3 (33:66b3) + ld d, $18 + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld a, [hl] + inc [hl] + call Functionce6f1 + ret + +BattleAnimFunction_4F: ; ce6bf (33:66bf) + ld d, $18 + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld a, [hl] + inc [hl] + srl a + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + add [hl] + call Functionce6f1 + ret + +BattleAnimFunction_4D: ; ce6d2 (33:66d2) + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + cp $20 + jr nc, .asm_ce6ed + inc [hl] + ld hl, BATTLEANIMSTRUCT_0B + add hl, bc + ld d, [hl] + call BattleAnim_Sine + xor $ff + inc a + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + ret + +.asm_ce6ed + call DeinitBattleAnimation + ret + +Functionce6f1: ; ce6f1 (33:66f1) + push af + push de + call BattleAnim_Sine + sra a + sra a + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a + pop de + pop af + call BattleAnim_Cosine + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hl], a + ret + +Functionce70a: ; ce70a (33:670a) + and $f + ld e, a + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + add [hl] + ld [hl], a + srl e + ld hl, BATTLEANIMSTRUCT_YCOORD + add hl, bc +.asm_ce719 + dec [hl] + dec e + jr nz, .asm_ce719 + ret + +BattleAnim_AnonJumptable: ; ce71e (33:671e) + pop de + ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX + add hl, bc + ld l, [hl] + ld h, $0 + add hl, hl + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp hl + +BattleAnim_IncAnonJumptableIndex: ; ce72c (33:672c) + ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX + add hl, bc + inc [hl] + ret + +BattleAnim_Cosine: ; ce732 (33:6732) + add $10 +BattleAnim_Sine: ; ce734 (33:6734) +; a = d sin a + and $3f + cp $20 + jr nc, .negative + call .ApplySineWave + ld a, h + ret + +.negative + and $1f + call .ApplySineWave + ld a, h + xor $ff + inc a + ret + +.ApplySineWave: + ld e, a + ld a, d + ld d, 0 + ld hl, BattleAnimSineWave + add hl, de + add hl, de + ld e, [hl] + inc hl + ld d, [hl] + ld hl, $0 +.multiply + srl a + jr nc, .even + add hl, de +.even + sla e + rl d + and a + jr nz, .multiply + ret + +BattleAnim_Sine_e: ; ce765 (33:6765) + ld a, e + call BattleAnim_Sine + ld e, a + ret + +BattleAnim_Cosine_e: ; ce76b (33:676b) + ld a, e + call BattleAnim_Cosine + ld e, a + ret + +; ce771 (33:6771) +BattleAnim_AbsSinePrecise: ; ce771 + ld a, e + call BattleAnim_Sine + ld e, l + ld d, h + ret + +; ce778 +BattleAnim_AbsCosinePrecise: ; ce778 + ld a, e + call BattleAnim_Cosine + ld e, l + ld d, h + ret + +; ce77f +BattleAnimSineWave: ; ce77f + sine_wave $100 +; ce7bf diff --git a/engine/battle_anims/getpokeballwobble.asm b/engine/battle_anims/getpokeballwobble.asm new file mode 100755 index 000000000..7fb4d3e38 --- /dev/null +++ b/engine/battle_anims/getpokeballwobble.asm @@ -0,0 +1,88 @@ +GetPokeBallWobble: ; f971 (3:7971) +; Returns whether a Poke Ball will wobble in the catch animation. +; Whether a Pokemon is caught is determined beforehand. + + push de + + ld a, [rSVBK] + ld d, a + push de + + ld a, 1 ; BANK(Buffer2) + ld [rSVBK], a + + ld a, [Buffer2] + inc a + ld [Buffer2], a + +; Wobble up to 3 times. + cp 3 + 1 + jr z, .finished + + ld a, [wWildMon] + and a + ld c, 0 ; next + jr nz, .done + + ld hl, .WobbleProbabilities + ld a, [Buffer1] + ld b, a +.loop + ld a, [hli] + cp b + jr nc, .checkwobble + inc hl + jr .loop + +.checkwobble + ld b, [hl] + call Random + cp b + ld c, 0 ; next + jr c, .done + ld c, 2 ; escaped + jr .done + +.finished + ld a, [wWildMon] + and a + ld c, 1 ; caught + jr nz, .done + ld c, 2 ; escaped + +.done + pop de + ld e, a + ld a, d + ld [rSVBK], a + ld a, e + pop de + ret + +.WobbleProbabilities: ; f9ba +; catch rate, chance of wobbling / 255 +; nLeft/255 = (nRight/255) ** 4 + db 1, 63 + db 2, 75 + db 3, 84 + db 4, 90 + db 5, 95 + db 7, 103 + db 10, 113 + db 15, 126 + db 20, 134 + db 30, 149 + db 40, 160 + db 50, 169 + db 60, 177 + db 80, 191 + db 100, 201 + db 120, 211 + db 140, 220 + db 160, 227 + db 180, 234 + db 200, 240 + db 220, 246 + db 240, 251 + db 254, 253 + db 255, 255 diff --git a/engine/battle_anims/helpers.asm b/engine/battle_anims/helpers.asm new file mode 100755 index 000000000..a692211d3 --- /dev/null +++ b/engine/battle_anims/helpers.asm @@ -0,0 +1,130 @@ +ReinitBattleAnimFrameset: ; ce7bf (33:67bf) + ld hl, BATTLEANIMSTRUCT_FRAMESET_ID + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_DURATION + add hl, bc + ld [hl], 0 + ld hl, BATTLEANIMSTRUCT_FRAME + add hl, bc + ld [hl], -1 + ret + +GetBattleAnimFrame: ; ce7d1 +.loop + ld hl, BATTLEANIMSTRUCT_DURATION + add hl, bc + ld a, [hl] + and a + jr z, .next_frame + dec [hl] + call .GetPointer + ld a, [hli] + push af + jr .okay + +.next_frame + ld hl, BATTLEANIMSTRUCT_FRAME + add hl, bc + inc [hl] + call .GetPointer + ld a, [hli] + cp -2 + jr z, .restart + cp -1 + jr z, .repeat_last + push af + ld a, [hl] + push hl + and $3f + ld hl, BATTLEANIMSTRUCT_DURATION + add hl, bc + ld [hl], a + pop hl + +.okay + ld a, [hl] + and $c0 + srl a + ld [wBattleAnimTemp7], a + pop af + ret + +.repeat_last + xor a + ld hl, BATTLEANIMSTRUCT_DURATION + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_FRAME + add hl, bc + dec [hl] + dec [hl] + jr .loop + +.restart + xor a + ld hl, BATTLEANIMSTRUCT_DURATION + add hl, bc + ld [hl], a + dec a + ld hl, BATTLEANIMSTRUCT_FRAME + add hl, bc + ld [hl], a + jr .loop + +; ce823 + +.GetPointer: ; ce823 + ld hl, BATTLEANIMSTRUCT_FRAMESET_ID + add hl, bc + ld e, [hl] + ld d, 0 + ld hl, BattleAnimFrameData + add hl, de + add hl, de + ld e, [hl] + inc hl + ld d, [hl] + ld hl, BATTLEANIMSTRUCT_FRAME + add hl, bc + ld l, [hl] + ld h, $0 + add hl, hl + add hl, de + ret + +; ce83c + +GetBattleAnimOAMPointer: ; ce83c + ld l, a + ld h, 0 + ld de, BattleAnimOAMData + add hl, hl + add hl, hl + add hl, de + ret + +; ce846 + +LoadBattleAnimObj: ; ce846 (33:6846) + push hl + ld l, a + ld h, 0 + add hl, hl + add hl, hl + ld de, AnimObjGFX + add hl, de + ld c, [hl] + inc hl + ld b, [hl] + inc hl + ld a, [hli] + ld h, [hl] + ld l, a + pop de + push bc + call DecompressRequest2bpp + pop bc + ret + +; ce85e (33:685e) diff --git a/engine/color.asm b/engine/color.asm index 53c727eef..f4a420f1c 100644 --- a/engine/color.asm +++ b/engine/color.asm @@ -1218,8 +1218,9 @@ INCLUDE "data/palettes/hp_bar.pal" ExpBarPalette: INCLUDE "data/palettes/exp_bar.pal" -INCLUDE "gfx/pokemon/palette_pointers.asm" -INCLUDE "gfx/trainer_palettes.asm" +INCLUDE "data/palettes/pokemon_palettes.asm" + +INCLUDE "data/palettes/trainer_palettes.asm" LoadMapPals: farcall LoadSpecialMapPalette diff --git a/engine/mon_icons.asm b/engine/mon_icons.asm index 965d9f0ef..2ebeb67fa 100755 --- a/engine/mon_icons.asm +++ b/engine/mon_icons.asm @@ -468,6 +468,6 @@ ReadMonMenuIcon: ; 8eab3 INCLUDE "data/pokemon/menu_icons.asm" -INCLUDE "gfx/icon_pointers.asm" +INCLUDE "data/icon_pointers.asm" INCLUDE "gfx/icons.asm" diff --git a/engine/movement.asm b/engine/movement.asm index 66c501909..bec089978 100644 --- a/engine/movement.asm +++ b/engine/movement.asm @@ -1,5 +1,5 @@ MovementPointers: ; 5075 -; entries correspond to macros/movement.asm enumeration +; entries correspond to macros/scripts/movement.asm enumeration dw Movement_turn_head_down ; 00 dw Movement_turn_head_up ; 01 dw Movement_turn_head_left ; 02 diff --git a/engine/routines/battlestart_copytilemapatonce.asm b/engine/routines/battlestart_copytilemapatonce.asm deleted file mode 100644 index 2952e833b..000000000 --- a/engine/routines/battlestart_copytilemapatonce.asm +++ /dev/null @@ -1,3 +0,0 @@ -BattleStart_CopyTilemapAtOnce: ; 8cf4f - call CGBOnly_CopyTilemapAtOnce - ret diff --git a/engine/routines/checkbattlescene.asm b/engine/routines/checkbattlescene.asm deleted file mode 100644 index b63f00907..000000000 --- a/engine/routines/checkbattlescene.asm +++ /dev/null @@ -1,47 +0,0 @@ -CheckBattleScene: ; 4ea44 -; Return carry if battle scene is turned off. - - ld a, 0 - ld hl, wLinkMode - call GetFarWRAMByte - cp LINK_MOBILE - jr z, .mobile - - ld a, [Options] - bit BATTLE_SCENE, a - jr nz, .off - - and a - ret - -.mobile - ld a, [wcd2f] - and a - jr nz, .from_wram - - ld a, $4 - call GetSRAMBank - ld a, [$a60c] - ld c, a - call CloseSRAM - - ld a, c - bit 0, c - jr z, .off - - and a - ret - -.from_wram - ld a, $5 - ld hl, w5_dc00 - call GetFarWRAMByte - bit 0, a - jr z, .off - - and a - ret - -.off - scf - ret diff --git a/engine/routines/consumehelditem.asm b/engine/routines/consumehelditem.asm deleted file mode 100644 index a6f7766fb..000000000 --- a/engine/routines/consumehelditem.asm +++ /dev/null @@ -1,80 +0,0 @@ -ConsumeHeldItem: ; 27192 - push hl - push de - push bc - ld a, [hBattleTurn] - and a - ld hl, OTPartyMon1Item - ld de, EnemyMonItem - ld a, [CurOTMon] - jr z, .theirturn - ld hl, PartyMon1Item - ld de, BattleMonItem - ld a, [CurBattleMon] - -.theirturn - push hl - push af - ld a, [de] - ld b, a - farcall GetItemHeldEffect - ld hl, .ConsumableEffects -.loop - ld a, [hli] - cp b - jr z, .ok - inc a - jr nz, .loop - pop af - pop hl - pop bc - pop de - pop hl - ret - -.ok - xor a - ld [de], a - pop af - pop hl - call GetPartyLocation - ld a, [hBattleTurn] - and a - jr nz, .ourturn - ld a, [wBattleMode] - dec a - jr z, .done - -.ourturn - ld [hl], $0 - -.done - pop bc - pop de - pop hl - ret - -.ConsumableEffects: ; 271de -; Consumable items? - db HELD_BERRY - db HELD_2 - db HELD_5 - db HELD_HEAL_POISON - db HELD_HEAL_FREEZE - db HELD_HEAL_BURN - db HELD_HEAL_SLEEP - db HELD_HEAL_PARALYZE - db HELD_HEAL_STATUS - db HELD_30 - db HELD_ATTACK_UP - db HELD_DEFENSE_UP - db HELD_SPEED_UP - db HELD_SP_ATTACK_UP - db HELD_SP_DEFENSE_UP - db HELD_ACCURACY_UP - db HELD_EVASION_UP - db HELD_38 - db HELD_71 - db HELD_ESCAPE - db HELD_CRITICAL_UP - db -1 diff --git a/engine/routines/getpokeballwobble.asm b/engine/routines/getpokeballwobble.asm deleted file mode 100755 index 7fb4d3e38..000000000 --- a/engine/routines/getpokeballwobble.asm +++ /dev/null @@ -1,88 +0,0 @@ -GetPokeBallWobble: ; f971 (3:7971) -; Returns whether a Poke Ball will wobble in the catch animation. -; Whether a Pokemon is caught is determined beforehand. - - push de - - ld a, [rSVBK] - ld d, a - push de - - ld a, 1 ; BANK(Buffer2) - ld [rSVBK], a - - ld a, [Buffer2] - inc a - ld [Buffer2], a - -; Wobble up to 3 times. - cp 3 + 1 - jr z, .finished - - ld a, [wWildMon] - and a - ld c, 0 ; next - jr nz, .done - - ld hl, .WobbleProbabilities - ld a, [Buffer1] - ld b, a -.loop - ld a, [hli] - cp b - jr nc, .checkwobble - inc hl - jr .loop - -.checkwobble - ld b, [hl] - call Random - cp b - ld c, 0 ; next - jr c, .done - ld c, 2 ; escaped - jr .done - -.finished - ld a, [wWildMon] - and a - ld c, 1 ; caught - jr nz, .done - ld c, 2 ; escaped - -.done - pop de - ld e, a - ld a, d - ld [rSVBK], a - ld a, e - pop de - ret - -.WobbleProbabilities: ; f9ba -; catch rate, chance of wobbling / 255 -; nLeft/255 = (nRight/255) ** 4 - db 1, 63 - db 2, 75 - db 3, 84 - db 4, 90 - db 5, 95 - db 7, 103 - db 10, 113 - db 15, 126 - db 20, 134 - db 30, 149 - db 40, 160 - db 50, 169 - db 60, 177 - db 80, 191 - db 100, 201 - db 120, 211 - db 140, 220 - db 160, 227 - db 180, 234 - db 200, 240 - db 220, 246 - db 240, 251 - db 254, 253 - db 255, 255 diff --git a/engine/routines/kurt_selectquantity_interpretjoypad.asm b/engine/routines/kurt_selectquantity_interpretjoypad.asm deleted file mode 100644 index 12a43e325..000000000 --- a/engine/routines/kurt_selectquantity_interpretjoypad.asm +++ /dev/null @@ -1,4 +0,0 @@ -Kurt_SelectQuantity_InterpretJoypad: ; 27a28 - call BuySellToss_InterpretJoypad - ld b, a - ret diff --git a/engine/routines/returntobattle_useball.asm b/engine/routines/returntobattle_useball.asm deleted file mode 100644 index e6e33f900..000000000 --- a/engine/routines/returntobattle_useball.asm +++ /dev/null @@ -1,19 +0,0 @@ -_ReturnToBattle_UseBall: ; 2715c - call ClearBGPalettes - call ClearTileMap - ld a, [BattleType] - cp BATTLETYPE_TUTORIAL - jr z, .gettutorialbackpic - farcall GetBattleMonBackpic - jr .continue - -.gettutorialbackpic - farcall GetTrainerBackpic -.continue - farcall GetEnemyMonFrontpic - farcall _LoadBattleFontsHPBar - call GetMemSGBLayout - call CloseWindow - call LoadStandardMenuDataHeader - call WaitBGMap - jp SetPalettes diff --git a/engine/routines/updatebattlehuds.asm b/engine/routines/updatebattlehuds.asm deleted file mode 100644 index ec7f662e8..000000000 --- a/engine/routines/updatebattlehuds.asm +++ /dev/null @@ -1,9 +0,0 @@ -_UpdateBattleHUDs: - farcall DrawPlayerHUD - ld hl, PlayerHPPal - call SetHPPal - farcall DrawEnemyHUD - ld hl, EnemyHPPal - call SetHPPal - farcall FinishBattleAnim - ret diff --git a/engine/scripting.asm b/engine/scripting.asm index 9818bbac3..826267f6b 100644 --- a/engine/scripting.asm +++ b/engine/scripting.asm @@ -64,7 +64,7 @@ RunScriptCommand: ScriptCommandTable: -; entries correspond to macros/event.asm enumeration +; entries correspond to macros/scripts/events.asm enumeration dw Script_scall ; 00 dw Script_farscall ; 01 dw Script_ptcall ; 02 diff --git a/engine/sprites.asm b/engine/sprites.asm index cc579a914..b52c9642b 100755 --- a/engine/sprites.asm +++ b/engine/sprites.asm @@ -551,13 +551,13 @@ BrokenGetStdGraphics: ; 8d1ac ; 8d1c4 -INCLUDE "data/sprites/sequences.asm" +INCLUDE "data/sprite_anims/sequences.asm" INCLUDE "engine/sprite_anims.asm" -INCLUDE "data/sprites/framesets.asm" +INCLUDE "data/sprite_anims/framesets.asm" -INCLUDE "data/sprites/oam.asm" +INCLUDE "data/sprite_anims/oam.asm" BrokenStdGFXPointers: ; Broken 2bpp pointers diff --git a/engine/trade_animation.asm b/engine/trade_animation.asm index fa631ae4e..1305fab5b 100755 --- a/engine/trade_animation.asm +++ b/engine/trade_animation.asm @@ -236,7 +236,7 @@ DoTradeAnimation: ; 29082 ; 290af .JumpTable: ; 290af -; entries correspond to macros/trade_anim.asm enumeration +; entries correspond to macros/scripts/trade_anims.asm enumeration dw TradeAnim_AdvanceScriptPointer ; 00 dw TradeAnim_ShowGivemonData ; 01 dw TradeAnim_ShowGetmonData ; 02 -- cgit v1.2.3