pokecrystal/engine/battle_anims/functions.asm

4154 lines
62 KiB
NASM

DoBattleAnimFrame:
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
.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:
call BattleAnim_AnonJumptable
.anon_dw
dw .zero
dw .one
.one
call DeinitBattleAnimation
.zero
ret
BattleAnimFunction_ThrowFromPlayerToEnemyAndDisappear:
call BattleAnimFunction_ThrowFromPlayerToEnemy
ret c
call DeinitBattleAnimation
ret
BattleAnimFunction_ThrowFromPlayerToEnemy:
; 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:
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:
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:
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:
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:
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:
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:
ld hl, BallColors
ld a, [rSVBK]
push af
ld a, BANK(wCurItem)
ld [rSVBK], a
ld a, [wCurItem]
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
INCLUDE "data/battle_anims/ball_colors.asm"
BattleAnimFunction_10:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
inc a
inc a
ld [hl], a
sub $10
ret c
ld [hLYOverrideStart], a
ret
BattleAnimFunction_0E:
call BattleAnim_AnonJumptable
.anon_dw
dw Functioncd6ea
dw Functioncd6f7
Functioncd6ea:
call BattleAnim_IncAnonJumptableIndex
ld hl, BATTLEANIMSTRUCT_0B
add hl, bc
ld a, BATTLEANIMFRAMESET_24
add [hl] ; offset
call ReinitBattleAnimFrameset
Functioncd6f7:
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:
call BattleAnim_AnonJumptable
.anon_dw
dw Functioncd725
dw Functioncd728
dw Functioncd763
dw Functioncd776
Functioncd725:
call BattleAnim_IncAnonJumptableIndex
Functioncd728:
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:
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:
ret
BattleAnimFunction_11:
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:
call BattleAnim_AnonJumptable
.anon_dw
dw Functioncd7ab
dw Functioncd7d2
Functioncd7ab:
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:
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:
call BattleAnim_AnonJumptable
.anon_dw
dw Functioncd81f
dw Functioncd817
dw Functioncd81f
dw Functioncd820
Functioncd817:
call BattleAnim_IncAnonJumptableIndex
ld a, BATTLEANIMFRAMESET_35
call ReinitBattleAnimFrameset
Functioncd81f:
ret
Functioncd820:
call DeinitBattleAnimation
ret
BattleAnimFunction_16:
call BattleAnim_AnonJumptable
.anon_dw
dw Functioncd835
dw Functioncd860
dw Functioncd88f
dw Functioncd88f
dw Functioncd88f
dw Functioncd88f
dw Functioncd893
Functioncd835:
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:
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:
call BattleAnim_IncAnonJumptableIndex
ret
Functioncd893:
ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX
add hl, bc
ld [hl], $1
ret
BattleAnimFunction_17:
call BattleAnim_AnonJumptable
.anon_dw
dw Functioncd8ab
dw Functioncd8cc
dw Functioncd8f5
dw Functioncd8f5
dw Functioncd8f5
dw Functioncd8f5
dw Functioncd8f9
Functioncd8ab:
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:
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:
call BattleAnim_IncAnonJumptableIndex
ret
Functioncd8f9:
ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX
add hl, bc
ld [hl], $1
ret
BattleAnimFunction_18:
call BattleAnim_AnonJumptable
.anon_dw
dw Functioncd907
dw Functioncd913
Functioncd907:
call BattleAnim_IncAnonJumptableIndex
ld hl, BATTLEANIMSTRUCT_0F
add hl, bc
ld [hl], $28
inc hl
ld [hl], $0
Functioncd913:
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, hTransferVirtualOAM ; $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:
call BattleAnim_AnonJumptable
.anon_dw
dw Functioncd961
dw Functioncd96a
dw Functioncd96e
dw Functioncd96a
dw Functioncd97b
Functioncd961:
call BattleAnim_IncAnonJumptableIndex
ld hl, BATTLEANIMSTRUCT_0B
add hl, bc
ld [hl], $0
Functioncd96a:
call Functioncd99a
ret
Functioncd96e:
ld hl, BATTLEANIMSTRUCT_XCOORD
add hl, bc
ld a, [hl]
cp $88
jr c, asm_cd988
call BattleAnim_IncAnonJumptableIndex
ret
Functioncd97b:
ld hl, BATTLEANIMSTRUCT_XCOORD
add hl, bc
ld a, [hl]
cp $b8
jr c, asm_cd988
call DeinitBattleAnimation
ret
asm_cd988:
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:
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:
ld hl, BATTLEANIMSTRUCT_10
add hl, bc
ld e, [hl]
ld d, 0
ld hl, Unknown_cda01
add hl, de
ld d, [hl]
ret
Unknown_cda01:
db 8, 6, 5, 4, 5, 6, 8, 12, 16
BattleAnimFunction_1C:
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:
call BattleAnim_AnonJumptable
.anon_dw
dw Functioncda4c
dw Functioncda3a
dw Functioncda4c
Functioncda3a:
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:
ret
BattleAnimFunction_LeechSeed:
call BattleAnim_AnonJumptable
.anon_dw
dw .zero
dw .one
dw .two
dw .three
.zero:
call BattleAnim_IncAnonJumptableIndex
ld hl, BATTLEANIMSTRUCT_10
add hl, bc
ld [hl], $40
ret
.one:
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:
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:
ret
Functioncda8d:
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:
call BattleAnim_AnonJumptable
.anon_dw
dw Functioncdadf
dw Functioncdae9
dw Functioncdaf9
Functioncdadf:
call BattleAnim_IncAnonJumptableIndex
ld hl, BATTLEANIMSTRUCT_10
add hl, bc
ld [hl], $40
ret
Functioncdae9:
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:
ret
BattleAnimFunction_1A:
call BattleAnimFunction_03
ld hl, BATTLEANIMSTRUCT_0F
add hl, bc
ld a, [hl]
add $f
ld [hl], a
ret
BattleAnimFunction_1B:
call BattleAnim_AnonJumptable
.anon_dw
dw Functioncdb13
dw Functioncdb14
dw Functioncdb28
dw Functioncdb50
dw Functioncdb65
Functioncdb13:
ret
Functioncdb14:
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:
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:
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:
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:
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:
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:
ld hl, BATTLEANIMSTRUCT_XCOORD
add hl, bc
ld a, [hl]
cp $40
jr nc, .asm_cdbbd
inc [hl]
.asm_cdbbd
call Functioncdc75
ret
Functioncdbc1:
ld hl, BATTLEANIMSTRUCT_XCOORD
add hl, bc
ld a, [hl]
cp $4b
jr nc, .asm_cdbcb
inc [hl]
.asm_cdbcb
call Functioncdc75
ret
Functioncdbcf:
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:
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:
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, hTransferVirtualOAM ; $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:
call DeinitBattleAnimation
ret
Functioncdc1e:
ld a, BATTLEANIMFRAMESET_4E
call ReinitBattleAnimFrameset
call BattleAnim_IncAnonJumptableIndex
ret
Functioncdc27:
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:
ld a, BATTLEANIMFRAMESET_50
call ReinitBattleAnimFrameset
ld hl, BATTLEANIMSTRUCT_YOFFSET
add hl, bc
ld [hl], $4
call BattleAnim_IncAnonJumptableIndex
ret
Functioncdc48:
ld a, BATTLEANIMFRAMESET_4F
call ReinitBattleAnimFrameset
call BattleAnim_IncAnonJumptableIndex
ld hl, BATTLEANIMSTRUCT_0F
add hl, bc
ld [hl], $40
ret
Functioncdc57:
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:
ret
Functioncdc75:
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:
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:
call BattleAnim_AnonJumptable
.anon_dw
dw Functioncdcca
dw Functioncdced
Functioncdcca:
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:
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:
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:
call BattleAnim_AnonJumptable
.anon_dw
dw Functioncdd31
dw Functioncdd4f
Functioncdd31:
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:
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:
call BattleAnim_AnonJumptable
.anon_dw
dw Functioncdd97
dw Functioncddbc
Functioncdd97:
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:
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:
call BattleAnim_AnonJumptable
.anon_dw
dw Functioncde02
dw Functioncde20
dw Functioncde21
Functioncde02:
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:
ret
Functioncde21:
call DeinitBattleAnimation
ret
Unknown_cde25:
db $ec, $f8, $00
BattleAnimFunction_25:
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:
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:
call BattleAnim_AnonJumptable
.anon_dw
dw Functioncde72
dw Functioncde88
Functioncde72:
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:
ret
BattleAnimFunction_28:
call BattleAnim_AnonJumptable
.anon_dw
dw Functioncde90
dw Functioncdebf
Functioncde90:
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:
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:
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:
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:
call BattleAnim_AnonJumptable
.anon_dw
dw Functioncdf60
dw BattleAnimFunction_SpiralDescent
Functioncdf60:
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:
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:
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:
call BattleAnim_AnonJumptable
.anon_dw
dw Functionce014
dw Functionce023
dw Functionce05f
Functionce014:
call BattleAnim_IncAnonJumptableIndex
ld hl, BATTLEANIMSTRUCT_0F
add hl, bc
ld [hl], $34
ld hl, BATTLEANIMSTRUCT_10
add hl, bc
ld [hl], $10
Functionce023:
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:
call DeinitBattleAnimation
ret
BattleAnimFunction_Horn:
call BattleAnim_AnonJumptable
.anon_dw
dw .zero
dw .one
dw .two
dw Functionce09e
.zero:
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:
ld hl, BATTLEANIMSTRUCT_XCOORD
add hl, bc
ld a, [hl]
cp $58
ret nc
ld a, $2
call Functionce70a
ret
.two:
ld hl, BATTLEANIMSTRUCT_10
add hl, bc
ld a, [hl]
cp $20
jr c, Functionce09e
call DeinitBattleAnimation
ret
Functionce09e:
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:
call BattleAnim_AnonJumptable
.anon_dw
dw Functionce0ce
dw Functionce0f8
dw Functionce0dd
Functionce0ce:
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:
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:
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:
call BattleAnim_AnonJumptable
.anon_dw
dw Functionce115
dw Functionce12a
Functionce115:
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:
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:
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:
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:
call BattleAnim_AnonJumptable
.anon_dw
dw Functionce1ee
dw Functionce1fb
Functionce1ee:
call BattleAnim_IncAnonJumptableIndex
ld hl, BATTLEANIMSTRUCT_YCOORD
add hl, bc
ld a, [hl]
ld hl, BATTLEANIMSTRUCT_10
add hl, bc
ld [hl], a
Functionce1fb:
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:
call BattleAnim_AnonJumptable
.anon_dw
dw Functionce22d
dw Functionce254
Functionce22d:
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:
ret
BattleAnimFunction_32:
call BattleAnim_AnonJumptable
.anon_dw
dw Functionce260
dw Functionce274
dw Functionce278
dw Functionce289
Functionce260:
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:
call Functionce29f
ret
Functionce278:
call Functionce29f
ld hl, BATTLEANIMSTRUCT_XCOORD
add hl, bc
ld a, [hl]
cp $84
ret nc
ld a, $4
call Functionce70a
ret
Functionce289:
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:
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
Unknown_ce2c4:
db $ff, $aa, $55, $aa
Unknown_ce2c8:
db $ff, $ff, $00, $00
BattleAnimFunction_33:
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:
call BattleAnim_AnonJumptable
.anon_dw
dw Functionce306
dw Functionce330
dw Functionce34c
Functionce306:
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, hTransferVirtualOAM ; $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:
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:
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:
call BattleAnim_AnonJumptable
.anon_dw
dw Functionce366
dw Functionce375
Functionce366:
call BattleAnim_IncAnonJumptableIndex
ld hl, BATTLEANIMSTRUCT_0B
add hl, bc
ld a, [hl]
and $7f
add BATTLEANIMFRAMESET_81
call ReinitBattleAnimFrameset
Functionce375:
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:
call BattleAnim_AnonJumptable
.anon_dw
dw Functionce392
dw Functionce39c
dw Functionce3ae
Functionce392:
call BattleAnim_IncAnonJumptableIndex
ld hl, BATTLEANIMSTRUCT_0F
add hl, bc
ld [hl], $c
ret
Functionce39c:
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:
ld hl, BATTLEANIMSTRUCT_YOFFSET
add hl, bc
dec [hl]
ret
BattleAnimFunction_39:
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:
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:
call BattleAnim_AnonJumptable
.anon_dw
dw Functionce406
dw Functionce412
Functionce406:
ld hl, BATTLEANIMSTRUCT_0B
add hl, bc
ld a, [hl]
ld hl, BATTLEANIMSTRUCT_XCOORD
add hl, bc
add [hl]
ld [hl], a
ret
Functionce412:
call DeinitBattleAnimation
ret
BattleAnimFunction_3D:
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:
call BattleAnim_AnonJumptable
.anon_dw
dw Functionce443
dw Functionce465
dw Functionce490
Functionce443:
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:
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:
ld hl, BATTLEANIMSTRUCT_0F
add hl, bc
ld a, [hl]
dec [hl]
and a
ret nz
call DeinitBattleAnimation
ret
BattleAnimFunction_40:
call BattleAnim_AnonJumptable
.anon_dw
dw Functionce4a3
dw Functionce4b0
Functionce4a3:
call BattleAnim_IncAnonJumptableIndex
ld hl, BATTLEANIMSTRUCT_0B
add hl, bc
ld a, BATTLEANIMFRAMESET_24
add [hl]
call ReinitBattleAnimFrameset
Functionce4b0:
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:
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:
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:
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:
call BattleAnim_AnonJumptable
.anon_dw
dw Functionce564
dw Functionce56e
dw Functionce577
Functionce564:
ld d, $18
ld hl, BATTLEANIMSTRUCT_0B
add hl, bc
ld a, [hl]
inc [hl]
jr asm_ce58f
Functionce56e:
call BattleAnim_IncAnonJumptableIndex
ld hl, BATTLEANIMSTRUCT_0F
add hl, bc
ld [hl], $18
Functionce577:
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:
call Functionce6f1
ret
BattleAnimFunction_46:
call BattleAnim_AnonJumptable
.anon_dw
dw Functionce5b3
dw Functionce59a
Functionce59a:
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:
ret
BattleAnimFunction_47:
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:
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:
call BattleAnim_AnonJumptable
.anon_dw
dw Functionce5f9
dw Functionce60a
dw Functionce622
dw Functionce618
Functionce5f9:
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:
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:
call DeinitBattleAnimation
ret
asm_ce61c:
call BattleAnim_IncAnonJumptableIndex
call BattleAnim_IncAnonJumptableIndex
Functionce622:
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:
call BattleAnim_AnonJumptable
.anon_dw
dw Functionce63a
dw Functionce648
dw Functionce65c
dw Functionce672
Functionce63a:
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:
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:
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:
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:
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:
ld d, $18
ld hl, BATTLEANIMSTRUCT_0B
add hl, bc
ld a, [hl]
inc [hl]
call Functionce6f1
ret
BattleAnimFunction_4F:
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:
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:
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:
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:
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:
ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX
add hl, bc
inc [hl]
ret
BattleAnim_Cosine:
; a = d * cos(a * pi/32)
add %010000 ; cos(x) = sin(x + pi/2)
; fallthrough
BattleAnim_Sine:
; a = d * sin(a * pi/32)
calc_sine_wave BattleAnimSineWave
BattleAnim_Sine_e:
ld a, e
call BattleAnim_Sine
ld e, a
ret
BattleAnim_Cosine_e:
ld a, e
call BattleAnim_Cosine
ld e, a
ret
BattleAnim_AbsSinePrecise:
ld a, e
call BattleAnim_Sine
ld e, l
ld d, h
ret
BattleAnim_AbsCosinePrecise:
ld a, e
call BattleAnim_Cosine
ld e, l
ld d, h
ret
BattleAnimSineWave:
sine_table 32