summaryrefslogtreecommitdiff
path: root/battle/anim_commands.asm
diff options
context:
space:
mode:
authoryenatch <yenatch@gmail.com>2013-12-17 23:54:25 -0500
committeryenatch <yenatch@gmail.com>2013-12-17 23:54:25 -0500
commitfa2e0108b9c1def3bede35cb6c59442d6ceb92e8 (patch)
tree3a80805b4902d5ec6457e0ca76f9902f14e2c685 /battle/anim_commands.asm
parent48be8d206c32377ec15538e9b8b6c0a60713ac81 (diff)
split out battle animation asm (bg effects, objects, commands)
Diffstat (limited to 'battle/anim_commands.asm')
-rw-r--r--battle/anim_commands.asm1549
1 files changed, 1549 insertions, 0 deletions
diff --git a/battle/anim_commands.asm b/battle/anim_commands.asm
new file mode 100644
index 000000000..c8077b710
--- /dev/null
+++ b/battle/anim_commands.asm
@@ -0,0 +1,1549 @@
+; 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, $ff9e
+ ld a, [hl]
+ push af
+
+ ld [hl], c
+ call Functioncc11c
+
+ pop af
+ ld [$ff9e], a
+
+ ld a, $1
+ ld [hBGMapMode], a
+
+ call BattleAnimDelayFrame
+ call BattleAnimDelayFrame
+ call BattleAnimDelayFrame
+ call WaitSFX
+ ret
+; cc11c
+
+Functioncc11c: ; cc11c
+
+ ld a, [FXAnimIDHi]
+ and a
+ jr nz, .asm_cc156
+
+ callba CheckBattleScene
+ jr c, .asm_cc141
+
+ call BattleAnimClearHud
+ call Functioncc163
+
+ call BattleAnimAssignPals
+ call BattleAnimRequestPals
+
+ xor a
+ ld [hSCX], a
+ ld [hSCY], a
+ call BattleAnimDelayFrame
+ call BattleAnimRestoreHuds
+
+.asm_cc141
+ ld a, [$cfca]
+ and a
+ jr z, .asm_cc15f
+
+ ld l, a
+ ld h, 0
+ ld de, $10e
+ add hl, de
+ ld a, l
+ ld [FXAnimIDLo], a
+ ld a, h
+ ld [FXAnimIDHi], a
+
+.asm_cc156
+ call WaitSFX
+ call Functioncc881
+ call Functioncc163
+
+.asm_cc15f
+ call Functioncc8f6
+ ret
+; cc163
+
+Functioncc163: ; cc163
+
+ call Functioncc8d3
+
+.playframe
+ call Functioncc25f
+ call Functionccb48
+ call Functioncc96e
+ call Function3b0c
+ call BattleAnimRequestPals
+
+; Speed up Rollout's animation.
+ ld a, [FXAnimIDHi]
+ or a
+ jr nz, .asm_cc193
+
+ ld a, [FXAnimIDLo]
+ cp ROLLOUT
+ jr nz, .asm_cc193
+
+ ld a, $2e
+ ld b, 5
+ ld de, 4
+ ld hl, ActiveBGEffects
+.asm_cc18c
+ cp [hl]
+ jr z, .asm_cc196
+ add hl, de
+ dec b
+ jr nz, .asm_cc18c
+
+.asm_cc193
+ call BattleAnimDelayFrame
+
+.asm_cc196
+ ld a, [$d40f]
+ bit 0, a
+ jr z, .playframe
+
+ call Functioncc23d
+ 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, $f
+ rst FarCall
+
+ 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, [$cfc7]
+ cp b
+ call nz, Functioncc91a
+
+ ld a, [rOBP0]
+ ld b, a
+ ld a, [$cfc8]
+ cp b
+ call nz, Functioncc94b
+ 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
+
+INCBIN "baserom.gbc",$cc220,$cc23d - $cc220
+
+
+Functioncc23d: ; cc23d
+
+ ld a, [$d40f]
+ bit 3, a
+ jr z, .asm_cc254
+
+ ld hl, Sprites + 3
+ ld c, (SpritesEnd - Sprites) / 4
+.asm_cc249
+ ld a, [hl]
+ and $f0
+ ld [hli], a
+ inc hl
+ inc hl
+ inc hl
+ dec c
+ jr nz, .asm_cc249
+ ret
+
+.asm_cc254
+ ld hl, Sprites
+ ld c, SpritesEnd - Sprites
+ xor a
+.asm_cc25a
+ ld [hli], a
+ dec c
+ jr nz, .asm_cc25a
+ ret
+; cc25f
+
+Functioncc25f: ; cc25f
+ call Functioncc267
+ ret nc
+ call Functioncc275
+ ret
+; cc267
+
+Functioncc267: ; cc267
+ ld a, [$d412]
+ and a
+ jr z, .asm_cc273
+
+ dec a
+ ld [$d412], a
+ and a
+ ret
+
+.asm_cc273
+ scf
+ ret
+; cc275
+
+Functioncc275: ; cc275
+
+ call GetBattleAnimByte
+
+ cp $ff
+ jr nz, .asm_cc286
+
+; Return from a subroutine.
+ ld hl, $d40f
+ bit 1, [hl]
+ jr nz, .asm_cc28e
+
+ set 0, [hl]
+ ret
+
+.asm_cc286
+ cp $d0
+ jr nc, .asm_cc28e
+
+ ld [$d412], a
+ ret
+
+.asm_cc28e
+ call Functioncc293
+
+ jr Functioncc275
+; cc293
+
+Functioncc293: ; cc293
+; Execute battle animation command in [$d417].
+ ld a, [$d417]
+ 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
+
+
+; no known jump sources
+BattleAnimCommands: ; cc2a4 (33:42a4)
+ dw BattleAnimCmd_D0
+ dw BattleAnimCmd_D1
+ dw BattleAnimCmd_D2
+ dw BattleAnimCmd_D3
+ dw BattleAnimCmd_D4
+ dw BattleAnimCmd_D5
+ dw BattleAnimCmd_D6
+ dw BattleAnimCmd_D7
+ dw BattleAnimCmd_D8
+ dw BattleAnimCmd_D9
+ dw BattleAnimCmd_DA
+ dw BattleAnimCmd_DB
+ dw BattleAnimCmd_DC
+ dw BattleAnimCmd_DD
+ dw BattleAnimCmd_DE
+ dw BattleAnimCmd_DF
+ dw BattleAnimCmd_E0
+ dw BattleAnimCmd_E1
+ dw BattleAnimCmd_E2
+ dw BattleAnimCmd_E3
+ dw BattleAnimCmd_E4
+ dw BattleAnimCmd_E5
+ dw BattleAnimCmd_E6
+ dw BattleAnimCmd_E7
+ dw BattleAnimCmd_E8
+ dw BattleAnimCmd_E9
+ dw BattleAnimCmd_EA
+ dw BattleAnimCmd_EB
+ dw BattleAnimCmd_EC
+ dw BattleAnimCmd_ED
+ dw BattleAnimCmd_EE
+ dw BattleAnimCmd_EF
+ dw BattleAnimCmd_F0
+ dw BattleAnimCmd_F1
+ dw BattleAnimCmd_F2
+ dw BattleAnimCmd_F3
+ dw BattleAnimCmd_F4
+ dw BattleAnimCmd_F5
+ dw BattleAnimCmd_F6
+ dw BattleAnimCmd_F7
+ dw BattleAnimCmd_F8
+ dw BattleAnimCmd_F9
+ dw BattleAnimCmd_FA
+ dw BattleAnimCmd_FB
+ dw BattleAnimCmd_FC
+ dw BattleAnimCmd_FD
+ dw BattleAnimCmd_FE
+ dw BattleAnimCmd_FF
+
+
+; no known jump sources
+BattleAnimCmd_EA:
+BattleAnimCmd_EB:
+BattleAnimCmd_EC:
+BattleAnimCmd_ED: ; cc304 (33:4304)
+ ret
+
+; no known jump sources
+BattleAnimCmd_FF: ; cc305 (33:4305)
+ ld hl, $d40f
+ res 1, [hl]
+ ld hl, $d413
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $d410
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ret
+
+; no known jump sources
+BattleAnimCmd_FE: ; cc317 (33:4317)
+ call GetBattleAnimByte
+ ld e, a
+ call GetBattleAnimByte
+ ld d, a
+ push de
+ ld hl, $d410
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $d413
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ pop de
+ ld hl, $d410
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld hl, $d40f
+ set 1, [hl]
+ ret
+
+; no known jump sources
+BattleAnimCmd_FC: ; cc339 (33:4339)
+ call GetBattleAnimByte
+ ld e, a
+ call GetBattleAnimByte
+ ld d, a
+ ld hl, $d410
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ret
+
+; no known jump sources
+BattleAnimCmd_FD: ; cc348 (33:4348)
+ call GetBattleAnimByte
+ ld hl, $d40f
+ bit 2, [hl]
+ jr nz, .asm_cc35b
+ and a
+ jr z, .asm_cc363
+ dec a
+ set 2, [hl]
+ ld [$d415], a
+.asm_cc35b
+ ld hl, $d415
+ ld a, [hl]
+ and a
+ jr z, .asm_cc372
+ dec [hl]
+.asm_cc363
+ call GetBattleAnimByte
+ ld e, a
+ call GetBattleAnimByte
+ ld d, a
+ ld hl, $d410
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ret
+.asm_cc372
+ ld hl, $d40f
+ res 2, [hl]
+ ld hl, $d410
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ inc de
+ inc de
+ ld [hl], d
+ dec hl
+ ld [hl], e
+ ret
+
+; no known jump sources
+BattleAnimCmd_EF: ; cc383 (33:4383)
+ ld hl, $c689
+ ld a, [hl]
+ and a
+ jr z, .asm_cc39a
+
+ dec [hl]
+ call GetBattleAnimByte
+ ld e, a
+ call GetBattleAnimByte
+ ld d, a
+ ld hl, $d410
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ret
+
+.asm_cc39a
+ ld hl, $d410
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ inc de
+ inc de
+ ld [hl], d
+ dec hl
+ ld [hl], e
+ ret
+
+; no known jump sources
+BattleAnimCmd_F9: ; cc3a6 (33:43a6)
+ call GetBattleAnimByte
+ ld [$d416], a
+ ret
+
+; no known jump sources
+BattleAnimCmd_FA: ; cc3ad (33:43ad)
+ ld hl, $d416
+ inc [hl]
+ ret
+
+; no known jump sources
+BattleAnimCmd_FB: ; cc3b2 (33:43b2)
+ call GetBattleAnimByte
+ ld hl, $d416
+ cp [hl]
+ jr z, .jump
+
+ ld hl, $d410
+ 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, $d410
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ret
+
+; no known jump sources
+BattleAnimCmd_F8: ; cc3d6 (33:43d6)
+ call GetBattleAnimByte
+ ld hl, $c689
+ cp [hl]
+ jr z, .jump
+
+ ld hl, $d410
+ 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, $d410
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ret
+
+; no known jump sources
+BattleAnimCmd_EE: ; cc3fa (33:43fa)
+ call GetBattleAnimByte
+ ld e, a
+ ld a, [$c689]
+ and e
+ jr nz, .jump
+
+ ld hl, $d410
+ 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, $d410
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ret
+
+; no known jump sources
+BattleAnimCmd_D0: ; cc41f (33:441f)
+ call GetBattleAnimByte
+ ld [$d419], a
+ call GetBattleAnimByte
+ ld [$d41a], a
+ call GetBattleAnimByte
+ ld [$d41b], a
+ call GetBattleAnimByte
+ ld [$d41c], a
+ call Functioncc9a1
+ ret
+
+; no known jump sources
+BattleAnimCmd_F0: ; cc43b (33:443b)
+ call GetBattleAnimByte
+ ld [$d419], a
+ call GetBattleAnimByte
+ ld [$d41a], a
+ call GetBattleAnimByte
+ ld [$d41b], a
+ call GetBattleAnimByte
+ ld [$d41c], a
+ call Functionccb4f
+ ret
+
+; no known jump sources
+BattleAnimCmd_F1: ; cc457 (33:4457)
+ call GetBattleAnimByte
+ ld [$cfc7], a
+ ret
+
+; no known jump sources
+BattleAnimCmd_F2: ; cc45e (33:445e)
+ call GetBattleAnimByte
+ ld [$cfc8], a
+ ret
+
+; no known jump sources
+BattleAnimCmd_F3: ; cc465 (33:4465)
+ call GetBattleAnimByte
+ ld [$cfc9], a
+ ret
+
+; no known jump sources
+BattleAnimCmd_DF: ; cc46c (33:446c)
+ ld a, [hSGB] ; $ff00+$e7
+ and a
+ ld a, $e0
+ jr z, .asm_cc475
+ ld a, $f0
+.asm_cc475
+ ld [$cfc8], a
+ ret
+
+; no known jump sources
+BattleAnimCmd_E5: ; cc479 (33:4479)
+ ld hl, $d30a
+ ld a, $a0
+.asm_cc47e
+ ld [hl], $0
+ inc hl
+ dec a
+ jr nz, .asm_cc47e
+ ret
+
+; no known jump sources
+BattleAnimCmd_D1:
+BattleAnimCmd_D2:
+BattleAnimCmd_D3:
+BattleAnimCmd_D4:
+BattleAnimCmd_D5: ; cc485 (33:4485)
+ ld a, [$d417]
+ and $f
+ ld c, a
+ ld hl, $d300
+ xor a
+ ld [$d419], a
+.asm_cc492
+ ld a, [$d419]
+ cp $4f
+ ret nc
+ call GetBattleAnimByte
+ ld [hli], a
+ ld a, [$d419]
+ ld [hli], a
+ push bc
+ push hl
+ ld l, a
+ ld h, $0
+ add hl, hl
+ add hl, hl
+ add hl, hl
+ add hl, hl
+ ld de, $8310
+ add hl, de
+ ld a, [$d417]
+ call Functionce846
+ ld a, [$d419]
+ add c
+ ld [$d419], a
+ pop hl
+ pop bc
+ dec c
+ jr nz, .asm_cc492
+ ret
+
+; no known jump sources
+BattleAnimCmd_D6: ; cc4c0 (33:44c0)
+ call GetBattleAnimByte
+ ld e, $a
+ ld bc, $d30a
+.asm_cc4c8
+ ld hl, $0
+ add hl, bc
+ ld d, [hl]
+ ld a, [$d417]
+ cp d
+ jr z, .asm_cc4dd
+ ld hl, $18
+ add hl, bc
+ ld c, l
+ ld b, h
+ dec e
+ jr nz, .asm_cc4c8
+ ret
+.asm_cc4dd
+ ld hl, $e
+ add hl, bc
+ inc [hl]
+ ret
+
+; no known jump sources
+BattleAnimCmd_D8: ; cc4e3 (33:44e3)
+ call GetBattleAnimByte
+ ld e, $5
+ ld bc, $d3fa
+.asm_cc4eb
+ ld hl, $0
+ add hl, bc
+ ld d, [hl]
+ ld a, [$d417]
+ cp d
+ jr z, .asm_cc500
+ ld hl, $4
+ add hl, bc
+ ld c, l
+ ld b, h
+ dec e
+ jr nz, .asm_cc4eb
+ ret
+.asm_cc500
+ ld hl, $1
+ add hl, bc
+ inc [hl]
+ ret
+
+; no known jump sources
+BattleAnimCmd_D7: ; cc506 (33:4506)
+ call GetBattleAnimByte
+ ld e, $a
+ ld bc, $d30a
+.asm_cc50e
+ ld hl, $0
+ add hl, bc
+ ld d, [hl]
+ ld a, [$d417]
+ cp d
+ jr z, .asm_cc523
+ ld hl, $18
+ add hl, bc
+ ld c, l
+ ld b, h
+ dec e
+ jr nz, .asm_cc50e
+ ret
+.asm_cc523
+ call GetBattleAnimByte
+ ld hl, $e
+ add hl, bc
+ ld [hl], a
+ ret
+
+; no known jump sources
+BattleAnimCmd_D9: ; cc52c (33:452c)
+
+ ld hl, $d300
+.asm_cc52f
+ ld a, [hl]
+ and a
+ jr z, .asm_cc537
+ inc hl
+ inc hl
+ jr .asm_cc52f
+
+.asm_cc537
+ 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, $8730
+ ld de, $9060
+ ld a, $70
+ ld [$d419], a
+ ld a, $7
+ call Functioncc561
+ ld de, $9310
+ ld a, $60
+ ld [$d419], a
+ ld a, $6
+ call Functioncc561
+ ret
+
+; known jump sources: cc550 (33:4550), cc55d (33:455d), cc57b (33:457b)
+Functioncc561: ; cc561 (33:4561)
+ push af
+ push hl
+ push de
+ ld bc, $3301
+ call Request2bpp
+ pop de
+ ld a, [$d419]
+ ld l, a
+ ld h, $0
+ add hl, de
+ ld e, l
+ ld d, h
+ pop hl
+ ld bc, $10
+ add hl, bc
+ pop af
+ dec a
+ jr nz, Functioncc561
+ ret
+
+; no known jump sources
+BattleAnimCmd_DA: ; cc57e (33:457e)
+
+ ld hl, $d300
+.asm_cc581
+ ld a, [hl]
+ and a
+ jr z, .asm_cc589
+ inc hl
+ inc hl
+ jr .asm_cc581
+
+.asm_cc589
+ 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, $8660
+ ld de, $9050
+ ld a, $70
+ ld [$d419], a
+ ld a, $7
+ call Functioncc5b3
+ ld de, $9310
+ ld a, $60
+ ld [$d419], a
+ ld a, $6
+ call Functioncc5b3
+ ret
+
+; known jump sources: cc5a2 (33:45a2), cc5af (33:45af), cc5cd (33:45cd)
+Functioncc5b3: ; cc5b3 (33:45b3)
+ push af
+ push hl
+ push de
+ ld bc, $3302
+ call Request2bpp
+ pop de
+ ld a, [$d419]
+ ld l, a
+ ld h, $0
+ add hl, de
+ ld e, l
+ ld d, h
+ pop hl
+ ld bc, $20
+ add hl, bc
+ pop af
+ dec a
+ jr nz, Functioncc5b3
+ ret
+
+; no known jump sources
+BattleAnimCmd_DB: ; cc5d0 (33:45d0)
+ callab GetPokeBallWobble
+ ld a, c
+ ld [$d416], a
+ ret
+
+; no known jump sources
+BattleAnimCmd_E7: ; cc5db (33:45db)
+ ret
+
+; no known jump sources
+BattleAnimCmd_DC: ; cc5dc (33:45dc)
+ ld a, [rSVBK] ; $ff00+$70
+ push af
+ ld a, 1
+ ld [rSVBK], a ; $ff00+$70
+ ld a, [CurPartySpecies] ; $d108
+ push af
+
+ ld a, [hBattleTurn] ; $ff00+$e4
+ and a
+ jr z, .player
+
+ ld a, [TempBattleMonSpecies] ; $d205
+ ld [CurPartySpecies], a ; $d108
+ ld hl, BattleMonDVs ; $c632
+ ld a, PREDEF_GET_UNOWN_LETTER
+ call Predef
+ ld de, $8000
+ ld a, $3c
+ call Predef
+ jr .done
+
+.player
+ ld a, [TempEnemyMonSpecies] ; $d204
+ ld [CurPartySpecies], a ; $d108
+ ld hl, EnemyMonDVs ; $d20c
+ ld a, PREDEF_GET_UNOWN_LETTER
+ call Predef
+ ld de, $8000
+ ld a, $3d
+ call Predef
+
+.done
+ pop af
+ ld [CurPartySpecies], a ; $d108
+ pop af
+ ld [rSVBK], a ; $ff00+$70
+ ret
+
+; no known jump sources
+BattleAnimCmd_E8: ; cc622 (33:4622)
+
+ ld de, $8000
+ ld a, [hBattleTurn] ; $ff00+$e4
+ and a
+ jr z, .player
+
+ ld hl, $9000
+ ld b, 0
+ ld c, $31
+ call Request2bpp
+ ret
+
+.player
+ ld hl, $9310
+ ld b, 0
+ ld c, $24
+ call Request2bpp
+ ret
+
+; no known jump sources
+BattleAnimCmd_DD: ; cc640 (33:4640)
+
+ ld a, [rSVBK] ; $ff00+$70
+ push af
+ ld a, 1
+ ld [rSVBK], a ; $ff00+$70
+ xor a
+ call GetSRAMBank
+
+GetSubstitutePic: ; cc64c
+
+ ld hl, $a000
+ ld bc, $310
+.loop
+ xor a
+ ld [hli], a
+ dec bc
+ ld a, c
+ or b
+ jr nz, .loop
+
+ ld a, [hBattleTurn] ; $ff00+$e4
+ and a
+ jr z, .player
+
+ ld hl, MonsterSpriteGFX
+ ld de, $a000 + $130
+ call CopyMonsterSpriteTile
+ ld hl, MonsterSpriteGFX + $10
+ ld de, $a000 + $1a0
+ call CopyMonsterSpriteTile
+ ld hl, MonsterSpriteGFX + $20
+ ld de, $a000 + $140
+ call CopyMonsterSpriteTile
+ ld hl, MonsterSpriteGFX + $30
+ ld de, $a000 + $1b0
+ call CopyMonsterSpriteTile
+
+ ld hl, $9000
+ ld de, $a000
+ lb bc, BANK(GetSubstitutePic), 7 * 7
+ call Request2bpp
+ jr .done
+
+.player
+ ld hl, MonsterSpriteGFX + $40
+ ld de, $a000 + $100
+ call CopyMonsterSpriteTile
+ ld hl, MonsterSpriteGFX + $50
+ ld de, $a000 + $160
+ call CopyMonsterSpriteTile
+ ld hl, MonsterSpriteGFX + $60
+ ld de, $a000 + $110
+ call CopyMonsterSpriteTile
+ ld hl, MonsterSpriteGFX + $70
+ ld de, $a000 + $170
+ call CopyMonsterSpriteTile
+
+ ld hl, $9310
+ ld de, $a000
+ lb bc, BANK(GetSubstitutePic), 6 * 6
+ call Request2bpp
+
+.done
+ call CloseSRAM
+ pop af
+ ld [rSVBK], a ; $ff00+$70
+ ret
+
+; known jump sources: cc663 (33:4663), cc66c (33:466c), cc675 (33:4675), cc67e (33:467e), cc695 (33:4695), cc69e (33:469e), cc6a7 (33:46a7), cc6b0 (33:46b0)
+CopyMonsterSpriteTile: ; cc6c6 (33:46c6)
+ ld bc, $10
+ ld a, BANK(MonsterSpriteGFX)
+ call FarCopyBytes
+ ret
+
+; no known jump sources
+BattleAnimCmd_E2: ; cc6cf (33:46cf)
+ ld a, [rSVBK] ; $ff00+$70
+ push af
+ ld a, $1
+ ld [rSVBK], a ; $ff00+$70
+ xor a
+ call GetSRAMBank
+ call GetMinimizePic
+ call Request2bpp
+ call CloseSRAM
+ pop af
+ ld [rSVBK], a ; $ff00+$70
+ ret
+
+; known jump sources: cc6da (33:46da), cc740 (33:4740)
+GetMinimizePic: ; cc6e7 (33:46e7)
+ ld hl, $a000
+ ld bc, $310
+.loop
+ xor a
+ ld [hli], a
+ dec bc
+ ld a, c
+ or b
+ jr nz, .loop
+
+ ld a, [hBattleTurn] ; $ff00+$e4
+ and a
+ jr z, .player
+
+ ld de, $a1a0
+ call CopyMinimizePic
+ ld hl, $9000
+ ld de, $a000
+ lb bc, BANK(GetMinimizePic), $31
+ ret
+
+.player
+ ld de, $a160
+ call CopyMinimizePic
+ ld hl, $9310
+ ld de, $a000
+ lb bc, BANK(GetMinimizePic), $24
+ ret
+
+; known jump sources: cc6fc (33:46fc), cc70c (33:470c)
+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
+
+; no known jump sources
+BattleAnimCmd_E9: ; cc735 (33:4735)
+ ld a, [rSVBK] ; $ff00+$70
+ push af
+ ld a, $1
+ ld [rSVBK], a ; $ff00+$70
+ xor a
+ call GetSRAMBank
+ call GetMinimizePic
+ ld hl, $8000
+ call Request2bpp
+ call CloseSRAM
+ pop af
+ ld [rSVBK], a ; $ff00+$70
+ ret
+
+; no known jump sources
+BattleAnimCmd_DE: ; cc750 (33:4750)
+ ld a, [rSVBK] ; $ff00+$70
+ push af
+ ld a, $1
+ ld [rSVBK], a ; $ff00+$70
+
+ ld a, [CurPartySpecies] ; $d108
+ push af
+ ld a, [hBattleTurn] ; $ff00+$e4
+ and a
+ jr z, .player
+
+ callab Function3f486
+ jr .done
+
+.player
+ callab Function3f447
+
+.done
+ pop af
+ ld [CurPartySpecies], a ; $d108
+ pop af
+ ld [rSVBK], a ; $ff00+$70
+ ret
+
+; no known jump sources
+BattleAnimCmd_E6: ; cc776 (33:4776)
+ ld a, [rSVBK] ; $ff00+$70
+ push af
+ ld a, $1
+ ld [rSVBK], a ; $ff00+$70
+ ld a, [CurPartySpecies] ; $d108
+ push af
+
+ ld a, [$c689]
+ ld [CurPartySpecies], a ; $d108
+
+ ld a, [hBattleTurn] ; $ff00+$e4
+ and a
+ jr z, .player
+
+ ld hl, BattleMonDVs ; $c632
+ ld a, PREDEF_GET_UNOWN_LETTER
+ call Predef
+ ld de, $9000
+ ld a, $3c
+ call Predef
+ jr .done
+
+.player
+ ld hl, EnemyMonDVs ; $d20c
+ ld a, PREDEF_GET_UNOWN_LETTER
+ call Predef
+ ld de, $9310
+ ld a, $3d
+ call Predef
+
+.done
+ pop af
+ ld [CurPartySpecies], a ; $d108
+ ld b, $1
+ call GetSGBLayout
+ pop af
+ ld [rSVBK], a ; $ff00+$70
+ ret
+
+; no known jump sources
+BattleAnimCmd_E3: ; cc7bb (33:47bb)
+ xor a
+ ld [hOAMUpdate], a ; $ff00+$d8
+ ret
+
+; no known jump sources
+BattleAnimCmd_E4: ; cc7bf (33:47bf)
+ ld a, $1
+ ld [hOAMUpdate], a ; $ff00+$d8
+ ret
+
+; no known jump sources
+BattleAnimCmd_F4: ; cc7c4 (33:47c4)
+ ld hl, $d40f
+ set 3, [hl]
+ ret
+
+; no known jump sources
+BattleAnimCmd_F5: ; cc7ca (33:47ca)
+ ret
+
+; no known jump sources
+BattleAnimCmd_F6: ; cc7cb (33:47cb)
+ ret
+
+; no known jump sources
+BattleAnimCmd_F7: ; cc7cc (33:47cc)
+ ret
+
+; no known jump sources
+BattleAnimCmd_E0: ; cc7cd (33:47cd)
+ call GetBattleAnimByte
+ ld e, a
+ srl a
+ srl a
+ ld [$c2be], a
+ call Functioncc7fc
+ and 3
+ ld [CryTracks], a ; $c2bd
+
+ ld e, a
+ ld d, 0
+ ld hl, Datacc7f8
+ add hl, de
+ ld a, [hl]
+ ld [$c2bc], a
+
+ call GetBattleAnimByte
+ ld e, a
+ ld d, 0
+ callab PlayStereoSFX
+
+ ret
+; cc7f8 (33:47f8)
+
+Datacc7f8: ; cc7f8
+ db $f0, $0f, $f0, $0f
+; cc7fc
+
+; known jump sources: cc7d8 (33:47d8)
+Functioncc7fc: ; cc7fc (33:47fc)
+ ld a, [hBattleTurn] ; $ff00+$e4
+ and a
+ jr nz, .enemy
+
+ ld a, e
+ ret
+
+.enemy
+ ld a, e
+ xor 1
+ ret
+
+; no known jump sources
+BattleAnimCmd_E1: ; cc807 (33:4807)
+ call GetBattleAnimByte
+ and 3
+ ld e, a
+ ld d, 0
+ ld hl, Datacc871
+ add hl, de
+ add hl, de
+ add hl, de
+ add hl, de
+
+ ld a, [rSVBK] ; $ff00+$70
+ push af
+ ld a, 1
+ ld [rSVBK], a ; $ff00+$70
+
+ ld a, [hBattleTurn] ; $ff00+$e4
+ and a
+ jr nz, .enemy
+
+ ld a, $f0
+ ld [CryTracks], a ; $c2bd
+ ld a, [BattleMonSpecies] ; $c62c
+ jr .asm_cc834
+
+.enemy
+ ld a, $0f
+ ld [CryTracks], a ; $c2bd
+ ld a, [EnemyMonSpecies] ; $d206
+
+.asm_cc834
+ push hl
+ call Function37f3
+ pop hl
+ jr c, .done
+
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+
+ push hl
+ ld hl, CryPitch ; $c2b0
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ add hl, bc
+ ld a, l
+ ld [CryPitch], a ; $c2b0
+ ld a, h
+ ld [CryEcho], a ; $c2b1
+ pop hl
+
+ ld a, [hli]
+ ld c, a
+ ld b, [hl]
+ ld hl, CryLength ; $c2b2
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ add hl, bc
+
+ ld a, l
+ ld [CryLength], a ; $c2b2
+ ld a, h
+ ld [CryLength + 1], a
+ ld a, 1
+ ld [$c2bc], a
+
+ callab PlayCry
+
+.done
+ pop af
+ ld [rSVBK], a ; $ff00+$70
+ ret
+; cc871 (33:4871)
+
+Datacc871: ; cc871
+; +pitch, +echo, +length
+ db $00, $00, $c0, $00
+ db $00, $00, $40, $00
+ db $00, $00, $00, $00
+ db $00, $00, $00, $00
+; cc881
+
+
+Functioncc881: ; cc881
+ ld a, [$cfca]
+ cp $1
+ jr z, .asm_cc88b
+ cp $4
+ ret nz
+
+.asm_cc88b
+ 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, .asm_cc8be
+ ld a, [hSGB]
+ and a
+ ld a, $e0
+ jr z, .asm_cc8b2
+ ld a, $f0
+
+.asm_cc8b2
+ ld [$cfc8], a
+ ld a, $e4
+ ld [$cfc7], a
+ ld [$cfc9], a
+ ret
+
+.asm_cc8be
+ ld a, $e4
+ ld [$cfc7], a
+ ld [$cfc8], a
+ ld [$cfc9], a
+ call DmgToCgbBGPals
+ ld de, $e4e4
+ call DmgToCgbObjPals
+ ret
+; cc8d3
+
+Functioncc8d3: ; cc8d3
+ ld hl, LYOverrides
+ ld bc, $0354
+.asm_cc8d9
+ ld [hl], $0
+ inc hl
+ dec bc
+ ld a, c
+ or b
+ jr nz, .asm_cc8d9
+ ld hl, FXAnimIDLo
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $506f
+ add hl, de
+ add hl, de
+ call Function3ae1
+ call BattleAnimAssignPals
+ call BattleAnimDelayFrame
+ ret
+; cc8f6
+
+Functioncc8f6: ; cc8f6
+ call WaitTop
+ ld a, $e4
+ ld [$cfc7], a
+ ld [$cfc8], a
+ ld [$cfc9], a
+ call DmgToCgbBGPals
+ ld de, $e4e4
+ call DmgToCgbObjPals
+ xor a
+ ld [hSCX], a
+ ld [hSCY], a
+ call BattleAnimDelayFrame
+ ld a, $1
+ ld [hBGMapMode], a
+ ret
+; cc91a
+
+Functioncc91a: ; cc91a
+ ld [rBGP], a
+ ld a, [hCGB]
+ and a
+ ret z
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld hl, $d080
+ ld de, $d000
+ ld a, [rBGP]
+ ld b, a
+ ld c, $7
+ call CopyPals
+ ld hl, $d0c0
+ ld de, MartPointer
+ ld a, [rBGP]
+ ld b, a
+ ld c, $2
+ call CopyPals
+ pop af
+ ld [rSVBK], a
+ ld a, $1
+ ld [hCGBPalUpdate], a
+ ret
+; cc94b
+
+Functioncc94b: ; cc94b
+ ld [rOBP0], a
+ ld a, [hCGB]
+ and a
+ ret z
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld hl, $d0d0
+ ld de, $d050
+ ld a, [rOBP0]
+ ld b, a
+ ld c, $2
+ call CopyPals
+ pop af
+ ld [rSVBK], a
+ ld a, $1
+ ld [hCGBPalUpdate], a
+ ret
+; cc96e
+
+Functioncc96e: ; cc96e
+ ld a, $0
+ ld [$d418], a
+ ld hl, $d30a
+ ld e, $a
+.asm_cc978
+ ld a, [hl]
+ and a
+ jr z, .asm_cc98a
+ ld c, l
+ ld b, h
+ push hl
+ push de
+ call Functionccfbe
+ call Functioncca09
+ pop de
+ pop hl
+ jr c, .asm_cc9a0
+
+.asm_cc98a
+ ld bc, $0018
+ add hl, bc
+ dec e
+ jr nz, .asm_cc978
+ ld a, [$d418]
+ ld l, a
+ ld h, $c4
+.asm_cc997
+ ld a, l
+ cp $a0
+ jr nc, .asm_cc9a0
+ xor a
+ ld [hli], a
+ jr .asm_cc997
+
+.asm_cc9a0
+ ret
+; cc9a1
+
+