summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2018-04-28 19:11:47 -0700
committerMarcus Huderle <huderlem@gmail.com>2018-04-28 19:11:47 -0700
commitdb5067c512a33ef913bb3e2d4cbef589d32a48a6 (patch)
tree94b50831d41c29064c31a7149a6f1c9e7fc24acb
parentbceafd3a21512167deb76fb46c3f5c4499361409 (diff)
Move more .rodata into battle anim files
-rw-r--r--data/battle_anim_80CA710.s427
-rw-r--r--ld_script.txt24
-rw-r--r--src/battle/anim/bottle.c38
-rw-r--r--src/battle/anim/brace.c28
-rw-r--r--src/battle/anim/cube.c38
-rw-r--r--src/battle/anim/fang.c27
-rw-r--r--src/battle/anim/glitter.c43
-rw-r--r--src/battle/anim/lunge.c339
-rw-r--r--src/battle/anim/lunge_1.c124
-rw-r--r--src/battle/anim/lunge_2.c163
-rw-r--r--src/battle/anim/moon.c14
-rw-r--r--src/battle/anim/scan.c46
-rw-r--r--src/battle/anim/shield.c14
-rw-r--r--src/battle/anim/slash.c63
-rw-r--r--src/battle/anim/sleep.c59
-rw-r--r--src/battle/anim/slice.c38
-rw-r--r--src/battle/anim/strike.c43
-rw-r--r--src/battle/anim/tile.c219
-rw-r--r--src/battle/anim/tile_in.c51
-rw-r--r--src/battle/anim/tile_out.c81
-rw-r--r--src/battle/anim/twinkle.c28
-rw-r--r--src/battle/anim/unused_2.c88
-rw-r--r--src/battle/anim/unused_3.c47
-rw-r--r--src/battle/anim/unused_4.c58
24 files changed, 1168 insertions, 932 deletions
diff --git a/data/battle_anim_80CA710.s b/data/battle_anim_80CA710.s
index 3cc5d05a9..5972e967c 100644
--- a/data/battle_anim_80CA710.s
+++ b/data/battle_anim_80CA710.s
@@ -4,433 +4,6 @@
.section .rodata
.align 2
-gSpriteAnim_83D6B10:: @ 83D6B10
- obj_image_anim_frame 0, 5
- obj_image_anim_frame 16, 5
- obj_image_anim_frame 32, 5
- obj_image_anim_frame 48, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_83D6B24:: @ 83D6B24
- .4byte gSpriteAnim_83D6B10
-
- .align 2
-gCuttingSliceSpriteTemplate:: @ 83D6B28
- spr_template 10138, 10138, gOamData_837E054, gSpriteAnimTable_83D6B24, NULL, gDummySpriteAffineAnimTable, AnimCuttingSlice
-
- .align 2
-gBattleAnimSpriteTemplate_83D6B40:: @ 83D6B40
- spr_template 10138, 10138, gOamData_837E054, gSpriteAnimTable_83D6B24, NULL, gDummySpriteAffineAnimTable, sub_80CC9BC
-
- .align 2
-gSpriteAnim_83D6B58:: @ 83D6B58
- obj_image_anim_frame 0, 1
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83D6B60:: @ 83D6B60
- obj_image_anim_frame 4, 1
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83D6B68:: @ 83D6B68
- obj_image_anim_frame 8, 1
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83D6B70:: @ 83D6B70
- obj_image_anim_frame 12, 1
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83D6B78:: @ 83D6B78
- obj_image_anim_frame 16, 1
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83D6B80:: @ 83D6B80
- obj_image_anim_frame 20, 1
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83D6B88:: @ 83D6B88
- obj_image_anim_frame 0, 1, OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83D6B90:: @ 83D6B90
- obj_image_anim_frame 4, 1, OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83D6B98:: @ 83D6B98
- obj_image_anim_frame 8, 1, OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83D6BA0:: @ 83D6BA0
- obj_image_anim_frame 12, 1, OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_83D6BA8:: @ 83D6BA8
- .4byte gSpriteAnim_83D6B58
- .4byte gSpriteAnim_83D6B60
- .4byte gSpriteAnim_83D6B68
- .4byte gSpriteAnim_83D6B70
- .4byte gSpriteAnim_83D6B78
- .4byte gSpriteAnim_83D6B80
- .4byte gSpriteAnim_83D6B88
- .4byte gSpriteAnim_83D6B90
- .4byte gSpriteAnim_83D6B98
- .4byte gSpriteAnim_83D6BA0
-
- .align 2
-gSpriteTemplate_83D6BD0:: @ 83D6BD0
- spr_template 10072, 10072, gOamData_837DF2C, gSpriteAnimTable_83D6BA8, NULL, gDummySpriteAffineAnimTable, sub_80CCC50
-
- .align 2
-gBattleAnimSpriteTemplate_83D6BE8:: @ 83D6BE8
- spr_template 10280, 10280, gOamData_837E05C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80CCD24
-
- .align 2
-gSpriteAffineAnim_83D6C00:: @ 83D6C00
- obj_rot_scal_anim_frame 0x100, 0x100, 0, 0
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_83D6C10:: @ 83D6C10
- obj_rot_scal_anim_frame 0x0, 0x0, 2, 12
- obj_rot_scal_anim_frame 0x0, 0x0, 0, 6
- obj_rot_scal_anim_frame 0x0, 0x0, -2, 24
- obj_rot_scal_anim_frame 0x0, 0x0, 0, 6
- obj_rot_scal_anim_frame 0x0, 0x0, 2, 12
- obj_rot_scal_anim_jump 0
-
- .align 2
-gSpriteAffineAnimTable_83D6C40:: @ 83D6C40
- .4byte gSpriteAffineAnim_83D6C00
- .4byte gSpriteAffineAnim_83D6C10
-
- .align 2
-gBattleAnimSpriteTemplate_83D6C48:: @ 83D6C48
- spr_template 10099, 10099, gOamData_837E0B4, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_83D6C40, sub_80CCF04
-
- .align 2
-gSpriteAnim_83D6C60:: @ 83D6C60
- obj_image_anim_frame 0, 7
- obj_image_anim_frame 16, 7
- obj_image_anim_frame 32, 7
- obj_image_anim_frame 48, 7
- obj_image_anim_frame 64, 7
- obj_image_anim_frame 80, 7
- obj_image_anim_frame 96, 7
- obj_image_anim_frame 112, 7
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnimTable_83D6C84:: @ 83D6C84
- .4byte gSpriteAnim_83D6C60
-
- .align 2
-gBattleAnimSpriteTemplate_83D6C88:: @ 83D6C88
- spr_template 10049, 10049, gOamData_837DF34, gSpriteAnimTable_83D6C84, NULL, gDummySpriteAffineAnimTable, sub_80CD140
-
- .align 2
-gBattleAnimSpriteTemplate_83D6CA0:: @ 83D6CA0
- spr_template 10049, 10049, gOamData_837DF34, gSpriteAnimTable_83D6C84, NULL, gDummySpriteAffineAnimTable, sub_80CD190
-
- .align 2
-gSpriteAnim_83D6CB8:: @ 83D6CB8
- obj_image_anim_frame 0, 10
- obj_image_anim_frame 4, 10
- obj_image_anim_frame 8, 10
- obj_image_anim_frame 12, 10
- obj_image_anim_frame 16, 26
- obj_image_anim_frame 16, 5
- obj_image_anim_frame 20, 5
- obj_image_anim_frame 24, 15
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83D6CDC:: @ 83D6CDC
- obj_image_anim_frame 0, 10, OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_frame 4, 10, OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_frame 8, 10, OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_frame 12, 10, OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_frame 16, 26, OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_frame 20, 5, OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_frame 24, 15, OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_83D6D00:: @ 83D6D00
- .4byte gSpriteAnim_83D6CB8
- .4byte gSpriteAnim_83D6CDC
-
- .align 2
-gSpriteTemplate_83D6D08:: @ 83D6D08
- spr_template 10032, 10032, gOamData_837DF2C, gSpriteAnimTable_83D6D00, NULL, gDummySpriteAffineAnimTable, sub_80CD274
-
- .align 2
-gSpriteAnim_83D6D20:: @ 83D6D20
- obj_image_anim_frame 0, 40
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_83D6D28:: @ 83D6D28
- .4byte gSpriteAnim_83D6D20
-
- .align 2
-gSpriteAffineAnim_83D6D2C:: @ 83D6D2C
- obj_rot_scal_anim_frame 0x14, 0x14, -30, 0
- obj_rot_scal_anim_frame 0x8, 0x8, 1, 24
- obj_rot_scal_anim_end
-
-@ unused
- obj_rot_scal_anim_loop 0
- obj_rot_scal_anim_frame 0x0, 0x0, 1, 24
- obj_rot_scal_anim_loop 10
-
- .align 2
-gSpriteAffineAnim_83D6D5C:: @ 83D6D5C
- obj_rot_scal_anim_frame 0x14, 0x14, 30, 0
- obj_rot_scal_anim_frame 0x8, 0x8, -1, 24
- obj_rot_scal_anim_end
-
-@ unused
- obj_rot_scal_anim_loop 0
- obj_rot_scal_anim_frame 0x0, 0x0, -1, 24
- obj_rot_scal_anim_loop 10
-
- .align 2
-gSpriteAffineAnimTable_83D6D8C:: @ 83D6D8C
- .4byte gSpriteAffineAnim_83D6D2C
- .4byte gSpriteAffineAnim_83D6D5C
-
- .align 2
-gBattleAnimSpriteTemplate_83D6D94:: @ 83D6D94
- spr_template 10228, 10228, gOamData_837DF94, gSpriteAnimTable_83D6D28, NULL, gSpriteAffineAnimTable_83D6D8C, sub_80CD328
-
- .align 2
-gBattleAnimSpriteTemplate_83D6DAC:: @ 83D6DAC
- spr_template 10014, 10014, gOamData_837DF34, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80CD3E0
-
- .align 2
-gBattleAnimSpriteTemplate_83D6DC4:: @ 83D6DC4
- spr_template 10014, 10014, gOamData_837DF2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80CD6CC
-
-gUnknown_083D6DDC:: @ 83D6DDC
- .byte 64, 64
- .byte 0,-64
- .byte -64, 64
- .byte 32,-32
-
- .align 2
-gBattleAnimSpriteTemplate_83D6DE4:: @ 83D6DE4
- spr_template 0, 0, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80CD774
-
- .align 2
-gSpriteTemplate_83D6DFC:: @ 83D6DFC
- spr_template 0, 0, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80CD9C4
-
- .align 2
-gSpriteAnim_83D6E14:: @ 83D6E14
- obj_image_anim_frame 0, 4
- obj_image_anim_frame 16, 4
- obj_image_anim_frame 32, 4
- obj_image_anim_frame 48, 4
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83D6E28:: @ 83D6E28
- obj_image_anim_frame 48, 4
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_83D6E30:: @ 83D6E30
- .4byte gSpriteAnim_83D6E14
- .4byte gSpriteAnim_83D6E28
-
- .align 2
-gBattleAnimSpriteTemplate_83D6E38:: @ 83D6E38
- spr_template 10183, 10183, gOamData_837DF34, gSpriteAnimTable_83D6E30, NULL, gDummySpriteAffineAnimTable, sub_80CDD74
-
- .align 2
-gBattleAnimSpriteTemplate_83D6E50:: @ 83D6E50
- spr_template 10286, 10286, gOamData_837DF34, gSpriteAnimTable_83D6E30, NULL, gDummySpriteAffineAnimTable, sub_80CDDDC
-
- .align 2
-gBattleAnimSpriteTemplate_83D6E68:: @ 83D6E68
- spr_template 10286, 10286, gOamData_837DF34, gSpriteAnimTable_83D6E30, NULL, gDummySpriteAffineAnimTable, sub_80CDE24
-
- .align 2
-gSpriteAnim_83D6E80:: @ 83D6E80
- obj_image_anim_frame 0, 4
- obj_image_anim_frame 8, 12
- obj_image_anim_frame 16, 4
- obj_image_anim_frame 24, 4
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_83D6E94:: @ 83D6E94
- .4byte gSpriteAnim_83D6E80
-
- .align 2
-gBattleAnimSpriteTemplate_EndureFlame:: @ 83D6E98
- spr_template 10184, 10184, gOamData_837DF74, gSpriteAnimTable_83D6E94, NULL, gDummySpriteAffineAnimTable, sub_80CDF0C
-
- .align 2
-gSpriteAnim_83D6EB0:: @ 83D6EB0
- obj_image_anim_frame 0, 18
- obj_image_anim_frame 0, 6
- obj_image_anim_frame 16, 18
- obj_image_anim_frame 0, 6
- obj_image_anim_frame 16, 6
- obj_image_anim_frame 32, 18
- obj_image_anim_frame 16, 6
- obj_image_anim_frame 32, 6
- obj_image_anim_frame 48, 18
- obj_image_anim_frame 32, 6
- obj_image_anim_frame 48, 6
- obj_image_anim_frame 64, 18
- obj_image_anim_frame 48, 6
- obj_image_anim_frame 64, 54
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_83D6EEC:: @ 83D6EEC
- .4byte gSpriteAnim_83D6EB0
-
- .align 2
-gBattleAnimSpriteTemplate_83D6EF0:: @ 83D6EF0
- spr_template 10185, 10185, gOamData_837DF34, gSpriteAnimTable_83D6EEC, NULL, gDummySpriteAffineAnimTable, sub_80CDFB0
-
- .align 2
-gBattleAnimSpriteTemplate_83D6F08:: @ 83D6F08
- spr_template 10017, 10017, gOamData_837DF24, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, TranslateAnimSpriteToTargetMonLocation
-
- .align 2
-gSpriteAnim_83D6F20:: @ 83D6F20
- obj_image_anim_frame 0, 3
- obj_image_anim_frame 16, 3
- obj_image_anim_frame 32, 3
- obj_image_anim_frame 48, 3
- obj_image_anim_frame 64, 3
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_83D6F38:: @ 83D6F38
- .4byte gSpriteAnim_83D6F20
-
- .align 2
-gBattleAnimSpriteTemplate_83D6F3C:: @ 83D6F3C
- spr_template 10030, 10030, gOamData_837DF34, gSpriteAnimTable_83D6F38, NULL, gDummySpriteAffineAnimTable, sub_80793C4
-
- .align 2
-gSpriteAnim_83D6F54:: @ 83D6F54
- obj_image_anim_frame 3, 5
- obj_image_anim_frame 2, 5
- obj_image_anim_frame 1, 5
- obj_image_anim_frame 0, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_83D6F68:: @ 83D6F68
- .4byte gSpriteAnim_83D6F54
-
- .align 2
-gSpriteAffineAnim_83D6F6C:: @ 83D6F6C
- obj_rot_scal_anim_frame 0x200, 0x200, 0, 0
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnimTable_83D6F7C:: @ 83D6F7C
- .4byte gSpriteAffineAnim_83D6F6C
-
- .align 2
-gBattleAnimSpriteTemplate_83D6F80:: @ 83D6F80
- spr_template 10018, 10018, gOamData_837E104, gSpriteAnimTable_83D6F68, NULL, gSpriteAffineAnimTable_83D6F7C, sub_80CE09C
-
- .align 2
-gSpriteAnim_83D6F98:: @ 83D6F98
- obj_image_anim_frame 0, 5
- obj_image_anim_frame 1, 5
- obj_image_anim_frame 2, 5
- obj_image_anim_frame 3, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_83D6FAC:: @ 83D6FAC
- .4byte gSpriteAnim_83D6F98
-
- .align 2
-gBattleAnimSpriteTemplate_83D6FB0:: @ 83D6FB0
- spr_template 10018, 10018, gOamData_837E104, gSpriteAnimTable_83D6FAC, NULL, gSpriteAffineAnimTable_83D6F7C, sub_80CE17C
-
- .align 2
-gBattleAnimSpriteTemplate_83D6FC8:: @ 83D6FC8
- spr_template 10194, 10194, gOamData_837E05C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80CE30C
-
- .align 2
-gSpriteAnim_83D6FE0:: @ 83D6FE0
- obj_image_anim_frame 0, 8
- obj_image_anim_frame 4, 8
- obj_image_anim_frame 8, 8
- obj_image_anim_frame 12, 8
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnimTable_83D6FF4:: @ 83D6FF4
- .4byte gSpriteAnim_83D6FE0
-
- .align 2
-gBattleAnimSpriteTemplate_83D6FF8:: @ 83D6FF8
- spr_template 10195, 10195, gOamData_837DF2C, gSpriteAnimTable_83D6FF4, NULL, gDummySpriteAffineAnimTable, sub_80CE36C
-
- .align 2
-gSpriteAnim_83D7010:: @ 83D7010
- obj_image_anim_frame 0, 2
- obj_image_anim_frame 16, 2
- obj_image_anim_frame 32, 2
- obj_image_anim_frame 48, 3
- obj_image_anim_frame 64, 5
- obj_image_anim_frame 80, 3
- obj_image_anim_frame 96, 2
- obj_image_anim_frame 0, 2
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_83D7034:: @ 83D7034
- .4byte gSpriteAnim_83D7010
-
- .align 2
-gBattleAnimSpriteTemplate_83D7038:: @ 83D7038
- spr_template 10031, 10031, gOamData_837DF34, gSpriteAnimTable_83D7034, NULL, gDummySpriteAffineAnimTable, sub_80793C4
-
- .align 2
-gBattleAnimSpriteTemplate_83D7050:: @ 83D7050
- spr_template 10020, 10020, gOamData_837DF34, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80CE670
-
- .align 2
-gSpriteAnim_83D7068:: @ 83D7068
- obj_image_anim_frame 0, 2
- obj_image_anim_frame 16, 2
- obj_image_anim_frame 32, 2
- obj_image_anim_frame 48, 2
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_83D707C:: @ 83D707C
- .4byte gSpriteAnim_83D7068
-
- .align 2
-gBattleAnimSpriteTemplate_83D7080:: @ 83D7080
- spr_template 10192, 10192, gOamData_837DF34, gSpriteAnimTable_83D707C, NULL, gDummySpriteAffineAnimTable, sub_80CEA04
-
- .align 2
gSpriteAnim_83D7098:: @ 83D7098
obj_image_anim_frame 0, 10
obj_image_anim_end
diff --git a/ld_script.txt b/ld_script.txt
index 86829f0b5..7295d8063 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -204,14 +204,11 @@ SECTIONS {
src/battle/anim/unused_3.o(.text);
src/battle/anim/sleep.o(.text);
src/battle/anim/scan.o(.text);
- src/battle/anim/lunge_1.o(.text);
- src/battle/anim/unused_4.o(.text);
- src/battle/anim/lunge_2.o(.text);
+ src/battle/anim/lunge.o(.text);
src/battle/anim/slash.o(.text);
src/battle/anim/brace.o(.text);
src/battle/anim/cube.o(.text);
- src/battle/anim/tile_in.o(.text);
- src/battle/anim/tile_out.o(.text);
+ src/battle/anim/tile.o(.text);
src/battle/anim/moon.o(.text);
src/battle/anim/twinkle.o(.text);
src/battle/anim/flash.o(.text);
@@ -624,6 +621,23 @@ SECTIONS {
src/battle/anim/homing.o(.rodata);
src/battle/anim/whip.o(.rodata);
src/battle/anim/unused_1.o(.rodata);
+ src/battle/anim/slice.o(.rodata);
+ src/battle/anim/unused_2.o(.rodata);
+ src/battle/anim/shield.o(.rodata);
+ src/battle/anim/bottle.o(.rodata);
+ src/battle/anim/glitter.o(.rodata);
+ src/battle/anim/unused_3.o(.rodata);
+ src/battle/anim/sleep.o(.rodata);
+ src/battle/anim/scan.o(.rodata);
+ src/battle/anim/lunge.o(.rodata);
+ src/battle/anim/slash.o(.rodata);
+ src/battle/anim/brace.o(.rodata);
+ src/battle/anim/cube.o(.rodata);
+ src/battle/anim/tile.o(.rodata);
+ src/battle/anim/moon.o(.rodata);
+ src/battle/anim/twinkle.o(.rodata);
+ src/battle/anim/strike.o(.rodata);
+ src/battle/anim/fang.o(.rodata);
data/battle_anim_80CA710.o(.rodata);
src/battle/anim/battle_intro.o(.rodata);
src/bike.o(.rodata);
diff --git a/src/battle/anim/bottle.c b/src/battle/anim/bottle.c
index 0d5a54e18..83a539f89 100644
--- a/src/battle/anim/bottle.c
+++ b/src/battle/anim/bottle.c
@@ -8,12 +8,46 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CCF04(struct Sprite* sprite);
static void sub_80CCF70(struct Sprite* sprite);
static void sub_80CD0CC(struct Sprite* sprite, int unk1, int unk2);
// bottle (shows a bottle swinging back and forth.)
// Used by Milk Drink.
+const union AffineAnimCmd gSpriteAffineAnim_83D6C00[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D6C10[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 2, 12),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 6),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -2, 24),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 6),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 2, 12),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D6C40[] =
+{
+ gSpriteAffineAnim_83D6C00,
+ gSpriteAffineAnim_83D6C10,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6C48 =
+{
+ .tileTag = 10099,
+ .paletteTag = 10099,
+ .oam = &gOamData_837E0B4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D6C40,
+ .callback = sub_80CCF04,
+};
+
void sub_80CCF04(struct Sprite* sprite)
{
sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 2);
@@ -30,7 +64,7 @@ void sub_80CCF04(struct Sprite* sprite)
sprite->callback = sub_80CCF70;
}
-void sub_80CCF70(struct Sprite* sprite)
+static void sub_80CCF70(struct Sprite* sprite)
{
switch (sprite->data[0])
{
@@ -103,7 +137,7 @@ void sub_80CCF70(struct Sprite* sprite)
}
}
-void sub_80CD0CC(struct Sprite* sprite, int unk1, int unk2)
+static void sub_80CD0CC(struct Sprite* sprite, int unk1, int unk2)
{
if (sprite->data[3] <= 11)
sprite->data[4] += 2;
diff --git a/src/battle/anim/brace.c b/src/battle/anim/brace.c
index a81af73ac..89330788c 100644
--- a/src/battle/anim/brace.c
+++ b/src/battle/anim/brace.c
@@ -8,11 +8,37 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CDF0C(struct Sprite* sprite);
static void sub_80CDF70(struct Sprite* sprite);
// brace (the Pokemon prepares to endure a hit)
// Used in Endure.
+const union AnimCmd gSpriteAnim_83D6E80[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(8, 12),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(24, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6E94[] =
+{
+ gSpriteAnim_83D6E80,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_EndureFlame =
+{
+ .tileTag = 10184,
+ .paletteTag = 10184,
+ .oam = &gOamData_837DF74,
+ .anims = gSpriteAnimTable_83D6E94,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CDF0C,
+};
+
void sub_80CDF0C(struct Sprite* sprite)
{
if (gBattleAnimArgs[0] == 0)
@@ -31,7 +57,7 @@ void sub_80CDF0C(struct Sprite* sprite)
sprite->callback = sub_80CDF70;
}
-void sub_80CDF70(struct Sprite* sprite)
+static void sub_80CDF70(struct Sprite* sprite)
{
if (++sprite->data[0] > sprite->data[1])
{
diff --git a/src/battle/anim/cube.c b/src/battle/anim/cube.c
index 6fef2de69..9d713ba46 100644
--- a/src/battle/anim/cube.c
+++ b/src/battle/anim/cube.c
@@ -9,11 +9,47 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CDFB0(struct Sprite* sprite);
static void sub_80CE000(struct Sprite* sprite);
// cube (shows a sphere sharpening into a cube.)
// Used in Sharpen.
+const union AnimCmd gSpriteAnim_83D6EB0[] =
+{
+ ANIMCMD_FRAME(0, 18),
+ ANIMCMD_FRAME(0, 6),
+ ANIMCMD_FRAME(16, 18),
+ ANIMCMD_FRAME(0, 6),
+ ANIMCMD_FRAME(16, 6),
+ ANIMCMD_FRAME(32, 18),
+ ANIMCMD_FRAME(16, 6),
+ ANIMCMD_FRAME(32, 6),
+ ANIMCMD_FRAME(48, 18),
+ ANIMCMD_FRAME(32, 6),
+ ANIMCMD_FRAME(48, 6),
+ ANIMCMD_FRAME(64, 18),
+ ANIMCMD_FRAME(48, 6),
+ ANIMCMD_FRAME(64, 54),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6EEC[] =
+{
+ gSpriteAnim_83D6EB0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6EF0 =
+{
+ .tileTag = 10185,
+ .paletteTag = 10185,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D6EEC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CDFB0,
+};
+
void sub_80CDFB0(struct Sprite* sprite)
{
sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
@@ -27,7 +63,7 @@ void sub_80CDFB0(struct Sprite* sprite)
sprite->callback = sub_80CE000;
}
-void sub_80CE000(struct Sprite* sprite)
+static void sub_80CE000(struct Sprite* sprite)
{
if (++sprite->data[0] >= sprite->data[1])
{
diff --git a/src/battle/anim/fang.c b/src/battle/anim/fang.c
index 5ed7372a8..c35898eea 100644
--- a/src/battle/anim/fang.c
+++ b/src/battle/anim/fang.c
@@ -8,10 +8,37 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CEA04(struct Sprite* sprite);
+
// fang
// Used by Super Fang (and probably Hyper Fang, but the actual callbacks are not in this file.)
// (Look into this one later.)
+const union AnimCmd gSpriteAnim_83D7068[] =
+{
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_FRAME(16, 2),
+ ANIMCMD_FRAME(32, 2),
+ ANIMCMD_FRAME(48, 2),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D707C[] =
+{
+ gSpriteAnim_83D7068,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7080 =
+{
+ .tileTag = 10192,
+ .paletteTag = 10192,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D707C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CEA04,
+};
+
void sub_80CEA04(struct Sprite* sprite)
{
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
diff --git a/src/battle/anim/glitter.c b/src/battle/anim/glitter.c
index d73b46bbd..fb7443575 100644
--- a/src/battle/anim/glitter.c
+++ b/src/battle/anim/glitter.c
@@ -8,9 +8,52 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CD140(struct Sprite* sprite);
+void sub_80CD190(struct Sprite* sprite);
+
// glitter (the sparkling effect seen on Pokemon, usually after healing or a beneficial effect.)
// Used by Heal Bell, Cosmic Power, and Aromatherapy.
+const union AnimCmd gSpriteAnim_83D6C60[] =
+{
+ ANIMCMD_FRAME(0, 7),
+ ANIMCMD_FRAME(16, 7),
+ ANIMCMD_FRAME(32, 7),
+ ANIMCMD_FRAME(48, 7),
+ ANIMCMD_FRAME(64, 7),
+ ANIMCMD_FRAME(80, 7),
+ ANIMCMD_FRAME(96, 7),
+ ANIMCMD_FRAME(112, 7),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6C84[] =
+{
+ gSpriteAnim_83D6C60,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6C88 =
+{
+ .tileTag = 10049,
+ .paletteTag = 10049,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D6C84,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CD140,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6CA0 =
+{
+ .tileTag = 10049,
+ .paletteTag = 10049,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D6C84,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CD190,
+};
+
void sub_80CD140(struct Sprite* sprite)
{
if (!gBattleAnimArgs[2])
diff --git a/src/battle/anim/lunge.c b/src/battle/anim/lunge.c
new file mode 100644
index 000000000..13cabb422
--- /dev/null
+++ b/src/battle/anim/lunge.c
@@ -0,0 +1,339 @@
+#include "global.h"
+#include "rom_8077ABC.h"
+#include "trig.h"
+#include "battle_anim.h"
+#include "sound.h"
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+
+extern u8 gBankSpriteIds[];
+
+void sub_80CD774(struct Sprite* sprite);
+void sub_80CD9C4(struct Sprite* sprite);
+static void sub_80CD7CC(struct Sprite* sprite);
+static void sub_80CD81C(struct Sprite* sprite);
+static void sub_80CD8A8(struct Sprite* sprite);
+static void sub_80CD8F8(struct Sprite* sprite);
+static void sub_80CD91C(struct Sprite* sprite);
+static void sub_80CD9B8(struct Sprite* sprite);
+static void sub_80CD9D4(struct Sprite* sprite);
+static void sub_80CDB60(u8 taskId);
+static void sub_80CDD20(u8 taskId);
+
+// lunge_1 (makes the pokemon sprite do a "lunge" where it leans back to attack, usually with its head or horn.)
+// Used in Drill Peck, Headbutt, Horn Attack, and Horn Drill.
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6DE4 =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CD774,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D6DFC =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CD9C4,
+};
+
+void sub_80CD774(struct Sprite* sprite)
+{
+ sprite->invisible = 1;
+ sprite->data[0] = 0;
+ switch (gBattleAnimArgs[0])
+ {
+ case 0:
+ sprite->callback = sub_80CD7CC;
+ break;
+ case 1:
+ sprite->callback = sub_80CD8A8;
+ break;
+ case 2:
+ sprite->callback = sub_80CD8F8;
+ break;
+ default:
+ sprite->callback = sub_80CD9B8;
+ break;
+ }
+}
+
+static void sub_80CD7CC(struct Sprite* sprite)
+{
+ sprite->data[0] = 6;
+ sprite->data[1] = (GetBattlerSide(gAnimBankAttacker)) ? 2 : -2;
+ sprite->data[2] = 0;
+ sprite->data[3] = gBankSpriteIds[gAnimBankAttacker];
+ StoreSpriteCallbackInData(sprite, sub_80CD81C);
+ sprite->callback = TranslateMonBGUntil;
+}
+
+static void sub_80CD81C(struct Sprite* sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ sprite->data[3] = gBankSpriteIds[gAnimBankAttacker];
+ sub_8078E70(sprite->data[3], 0);
+ sprite->data[4] = (sprite->data[6] = GetBattlerSide(gAnimBankAttacker)) ? 0x300 : 0xFFFFFD00;
+ sprite->data[5] = 0;
+ }
+
+ sprite->data[5] += sprite->data[4];
+ obj_id_set_rotscale(sprite->data[3], 0x100, 0x100, sprite->data[5]);
+ sub_8078F9C(sprite->data[3]);
+ if (++sprite->data[0] > 3)
+ {
+ sprite->data[0] = 0;
+ sprite->callback = sub_80CD9B8;
+ }
+}
+
+static void sub_80CD8A8(struct Sprite* sprite)
+{
+ sprite->data[0] = 4;
+ sprite->data[1] = (GetBattlerSide(gAnimBankAttacker)) ? -3 : 3;
+ sprite->data[2] = 0;
+ sprite->data[3] = gBankSpriteIds[gAnimBankAttacker];
+ StoreSpriteCallbackInData(sprite, sub_80CD9B8);
+ sprite->callback = TranslateMonBGUntil;
+}
+
+static void sub_80CD8F8(struct Sprite* sprite)
+{
+ if (++sprite->data[0] > 8)
+ {
+ sprite->data[0] = 0;
+ sprite->callback = sub_80CD91C;
+ }
+}
+
+static void sub_80CD91C(struct Sprite* sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ sprite->data[3] = gBankSpriteIds[gAnimBankAttacker];
+ sprite->data[6] = GetBattlerSide(gAnimBankAttacker);
+ if (GetBattlerSide(gAnimBankAttacker))
+ {
+ sprite->data[4] = 0xFC00;
+ sprite->data[5] = 0xC00;
+ }
+ else
+ {
+ sprite->data[4] = 0x400;
+ sprite->data[5] = 0xF400;
+ }
+ }
+
+ sprite->data[5] += sprite->data[4];
+ obj_id_set_rotscale(sprite->data[3], 0x100, 0x100, sprite->data[5]);
+ sub_8078F9C(sprite->data[3]);
+ if (++sprite->data[0] > 2)
+ {
+ sub_8078F40(sprite->data[3]);
+ sprite->callback = sub_80CD9B8;
+ }
+}
+
+static void sub_80CD9B8(struct Sprite* sprite)
+{
+ DestroyAnimSprite(sprite);
+}
+
+void sub_80CD9C4(struct Sprite* sprite)
+{
+ sprite->data[0] = 0;
+ sprite->callback = sub_80CD9D4;
+}
+
+static void sub_80CD9D4(struct Sprite* sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->data[1] = 0;
+ sprite->data[2] = gBankSpriteIds[gAnimBankAttacker];
+ sprite->data[3] = GetBattlerSide(gAnimBankAttacker);
+ sprite->data[4] = (sprite->data[3] != 0) ? 0x200 : -0x200;
+ sprite->data[5] = 0;
+ sub_8078E70(sprite->data[2], 0);
+ sprite->data[0]++;
+ case 1:
+ sprite->data[5] += sprite->data[4];
+ obj_id_set_rotscale(sprite->data[2], 0x100, 0x100, sprite->data[5]);
+ sub_8078F9C(sprite->data[2]);
+ if (++sprite->data[1] > 3)
+ {
+ sprite->data[1] = 0;
+ sprite->data[4] *= -1;
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ sprite->data[5] += sprite->data[4];
+ obj_id_set_rotscale(sprite->data[2], 0x100, 0x100, sprite->data[5]);
+ sub_8078F9C(sprite->data[2]);
+ if (++sprite->data[1] > 3)
+ {
+ sub_8078F40(sprite->data[2]);
+ DestroyAnimSprite(sprite);
+ }
+ break;
+ }
+}
+
+void sub_80CDAC8(u8 taskId)
+{
+ u8 a;
+
+ gTasks[taskId].data[0] = gBankSpriteIds[gAnimBankAttacker];
+ a = GetBattlerSide(gAnimBankAttacker);
+ gTasks[taskId].data[1] = a;
+ gTasks[taskId].data[2] = 0;
+ switch (gBattleAnimArgs[0])
+ {
+ default:
+ DestroyAnimVisualTask(taskId);
+ break;
+ case 0:
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[3] = 8;
+ gTasks[taskId].data[4] = 0;
+ gTasks[taskId].data[5] = 3;
+ if (a == 0)
+ gTasks[taskId].data[5] *= -1;
+
+ gTasks[taskId].func = sub_80CDB60;
+ break;
+ case 1:
+ gTasks[taskId].data[3] = 8;
+ gTasks[taskId].data[4] = 0x600;
+ gTasks[taskId].data[5] = 0xC0;
+ if (a == 0)
+ {
+ gTasks[taskId].data[4] = -gTasks[taskId].data[4];
+ gTasks[taskId].data[5] = -gTasks[taskId].data[5];
+ }
+
+ gTasks[taskId].func = sub_80CDD20;
+ break;
+ }
+}
+
+void sub_80CDB60(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ switch (task->data[2])
+ {
+ case 0:
+ if (task->data[3])
+ {
+ task->data[4] += task->data[5];
+ gSprites[task->data[0]].pos2.x = task->data[4];
+ task->data[3]--;
+ }
+ else
+ {
+ task->data[3] = 8;
+ task->data[4] = 0;
+ task->data[5] = (task->data[1] == 0) ? -0xC0 : 0xC0;
+ sub_8078E70(task->data[0], 0);
+ task->data[2]++;
+ }
+ break;
+ case 1:
+ if (task->data[3])
+ {
+ task->data[4] += task->data[5];
+ obj_id_set_rotscale(task->data[0], 0x100, 0x100, task->data[4]);
+ sub_8078F9C(task->data[0]);
+ task->data[3]--;
+ }
+ else
+ {
+ task->data[3] = 8;
+ task->data[4] = gSprites[task->data[0]].pos2.x;
+ task->data[5] = (task->data[1] == 0) ? 0x2 : -0x2;
+ task->data[6] = 1;
+ task->data[2]++;
+ }
+ break;
+ case 2:
+ if (task->data[3])
+ {
+ if (task->data[6])
+ {
+ task->data[6]--;
+ }
+ else
+ {
+ if (task->data[3] & 1)
+ gSprites[task->data[0]].pos2.x = task->data[4] + task->data[5];
+ else
+ gSprites[task->data[0]].pos2.x = task->data[4] - task->data[5];
+
+ task->data[6] = 1;
+ task->data[3]--;
+ }
+ }
+ else
+ {
+ gSprites[task->data[0]].pos2.x = task->data[4];
+ task->data[3] = 12;
+ task->data[2]++;
+ }
+ break;
+ case 3:
+ if (task->data[3])
+ {
+ task->data[3]--;
+ }
+ else
+ {
+ task->data[3] = 3;
+ task->data[4] = gSprites[task->data[0]].pos2.x;
+ task->data[5] = (task->data[1] == 0) ? 8 : -8;
+ task->data[2]++;
+ }
+ break;
+ case 4:
+ if (task->data[3])
+ {
+ task->data[4] += task->data[5];
+ gSprites[task->data[0]].pos2.x = task->data[4];
+ task->data[3]--;
+ }
+ else
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+ break;
+ }
+}
+
+void sub_80CDD20(u8 taskId)
+{
+ struct Task* task = &gTasks[taskId];
+ if (task->data[3])
+ {
+ task->data[4] -= task->data[5];
+ obj_id_set_rotscale(task->data[0], 0x100, 0x100, task->data[4]);
+ sub_8078F9C(task->data[0]);
+ task->data[3]--;
+ }
+ else
+ {
+ sub_8078F40(task->data[0]);
+ DestroyAnimVisualTask(taskId);
+ }
+}
diff --git a/src/battle/anim/lunge_1.c b/src/battle/anim/lunge_1.c
deleted file mode 100644
index 949fb89f4..000000000
--- a/src/battle/anim/lunge_1.c
+++ /dev/null
@@ -1,124 +0,0 @@
-#include "global.h"
-#include "rom_8077ABC.h"
-#include "trig.h"
-#include "battle_anim.h"
-#include "sound.h"
-
-extern s16 gBattleAnimArgs[];
-extern u8 gAnimBankAttacker;
-extern u8 gAnimBankTarget;
-
-extern u8 gBankSpriteIds[];
-
-static void sub_80CD7CC(struct Sprite* sprite);
-static void sub_80CD81C(struct Sprite* sprite);
-static void sub_80CD8A8(struct Sprite* sprite);
-static void sub_80CD8F8(struct Sprite* sprite);
-static void sub_80CD91C(struct Sprite* sprite);
-static void sub_80CD9B8(struct Sprite* sprite);
-
-// lunge_1 (makes the pokemon sprite do a "lunge" where it leans back to attack, usually with its head or horn.)
-// Used in Drill Peck, Headbutt, Horn Attack, and Horn Drill.
-
-void sub_80CD774(struct Sprite* sprite)
-{
- sprite->invisible = 1;
- sprite->data[0] = 0;
- switch (gBattleAnimArgs[0])
- {
- case 0:
- sprite->callback = sub_80CD7CC;
- break;
- case 1:
- sprite->callback = sub_80CD8A8;
- break;
- case 2:
- sprite->callback = sub_80CD8F8;
- break;
- default:
- sprite->callback = sub_80CD9B8;
- break;
- }
-}
-
-void sub_80CD7CC(struct Sprite* sprite)
-{
- sprite->data[0] = 6;
- sprite->data[1] = (GetBattlerSide(gAnimBankAttacker)) ? 2 : -2;
- sprite->data[2] = 0;
- sprite->data[3] = gBankSpriteIds[gAnimBankAttacker];
- StoreSpriteCallbackInData(sprite, sub_80CD81C);
- sprite->callback = TranslateMonBGUntil;
-}
-
-void sub_80CD81C(struct Sprite* sprite)
-{
- if (sprite->data[0] == 0)
- {
- sprite->data[3] = gBankSpriteIds[gAnimBankAttacker];
- sub_8078E70(sprite->data[3], 0);
- sprite->data[4] = (sprite->data[6] = GetBattlerSide(gAnimBankAttacker)) ? 0x300 : 0xFFFFFD00;
- sprite->data[5] = 0;
- }
-
- sprite->data[5] += sprite->data[4];
- obj_id_set_rotscale(sprite->data[3], 0x100, 0x100, sprite->data[5]);
- sub_8078F9C(sprite->data[3]);
- if (++sprite->data[0] > 3)
- {
- sprite->data[0] = 0;
- sprite->callback = sub_80CD9B8;
- }
-}
-
-void sub_80CD8A8(struct Sprite* sprite)
-{
- sprite->data[0] = 4;
- sprite->data[1] = (GetBattlerSide(gAnimBankAttacker)) ? -3 : 3;
- sprite->data[2] = 0;
- sprite->data[3] = gBankSpriteIds[gAnimBankAttacker];
- StoreSpriteCallbackInData(sprite, sub_80CD9B8);
- sprite->callback = TranslateMonBGUntil;
-}
-
-void sub_80CD8F8(struct Sprite* sprite)
-{
- if (++sprite->data[0] > 8)
- {
- sprite->data[0] = 0;
- sprite->callback = sub_80CD91C;
- }
-}
-
-void sub_80CD91C(struct Sprite* sprite)
-{
- if (sprite->data[0] == 0)
- {
- sprite->data[3] = gBankSpriteIds[gAnimBankAttacker];
- sprite->data[6] = GetBattlerSide(gAnimBankAttacker);
- if (GetBattlerSide(gAnimBankAttacker))
- {
- sprite->data[4] = 0xFC00;
- sprite->data[5] = 0xC00;
- }
- else
- {
- sprite->data[4] = 0x400;
- sprite->data[5] = 0xF400;
- }
- }
-
- sprite->data[5] += sprite->data[4];
- obj_id_set_rotscale(sprite->data[3], 0x100, 0x100, sprite->data[5]);
- sub_8078F9C(sprite->data[3]);
- if (++sprite->data[0] > 2)
- {
- sub_8078F40(sprite->data[3]);
- sprite->callback = sub_80CD9B8;
- }
-}
-
-void sub_80CD9B8(struct Sprite* sprite)
-{
- DestroyAnimSprite(sprite);
-}
diff --git a/src/battle/anim/lunge_2.c b/src/battle/anim/lunge_2.c
deleted file mode 100644
index c0100922c..000000000
--- a/src/battle/anim/lunge_2.c
+++ /dev/null
@@ -1,163 +0,0 @@
-#include "global.h"
-#include "rom_8077ABC.h"
-#include "trig.h"
-#include "battle_anim.h"
-#include "sound.h"
-
-extern s16 gBattleAnimArgs[];
-extern u8 gAnimBankAttacker;
-extern u8 gAnimBankTarget;
-
-extern u8 gBankSpriteIds[];
-
-static void sub_80CDB60(u8 taskId);
-static void sub_80CDD20(u8 taskId);
-
-// lunge_2
-// Drill Peck
-
-void sub_80CDAC8(u8 taskId)
-{
- u8 a;
-
- gTasks[taskId].data[0] = gBankSpriteIds[gAnimBankAttacker];
- a = GetBattlerSide(gAnimBankAttacker);
- gTasks[taskId].data[1] = a;
- gTasks[taskId].data[2] = 0;
- switch (gBattleAnimArgs[0])
- {
- default:
- DestroyAnimVisualTask(taskId);
- break;
- case 0:
- gTasks[taskId].data[2] = 0;
- gTasks[taskId].data[3] = 8;
- gTasks[taskId].data[4] = 0;
- gTasks[taskId].data[5] = 3;
- if (a == 0)
- gTasks[taskId].data[5] *= -1;
-
- gTasks[taskId].func = sub_80CDB60;
- break;
- case 1:
- gTasks[taskId].data[3] = 8;
- gTasks[taskId].data[4] = 0x600;
- gTasks[taskId].data[5] = 0xC0;
- if (a == 0)
- {
- gTasks[taskId].data[4] = -gTasks[taskId].data[4];
- gTasks[taskId].data[5] = -gTasks[taskId].data[5];
- }
-
- gTasks[taskId].func = sub_80CDD20;
- break;
- }
-}
-
-void sub_80CDB60(u8 taskId)
-{
- struct Task *task = &gTasks[taskId];
- switch (task->data[2])
- {
- case 0:
- if (task->data[3])
- {
- task->data[4] += task->data[5];
- gSprites[task->data[0]].pos2.x = task->data[4];
- task->data[3]--;
- }
- else
- {
- task->data[3] = 8;
- task->data[4] = 0;
- task->data[5] = (task->data[1] == 0) ? -0xC0 : 0xC0;
- sub_8078E70(task->data[0], 0);
- task->data[2]++;
- }
- break;
- case 1:
- if (task->data[3])
- {
- task->data[4] += task->data[5];
- obj_id_set_rotscale(task->data[0], 0x100, 0x100, task->data[4]);
- sub_8078F9C(task->data[0]);
- task->data[3]--;
- }
- else
- {
- task->data[3] = 8;
- task->data[4] = gSprites[task->data[0]].pos2.x;
- task->data[5] = (task->data[1] == 0) ? 0x2 : -0x2;
- task->data[6] = 1;
- task->data[2]++;
- }
- break;
- case 2:
- if (task->data[3])
- {
- if (task->data[6])
- {
- task->data[6]--;
- }
- else
- {
- if (task->data[3] & 1)
- gSprites[task->data[0]].pos2.x = task->data[4] + task->data[5];
- else
- gSprites[task->data[0]].pos2.x = task->data[4] - task->data[5];
-
- task->data[6] = 1;
- task->data[3]--;
- }
- }
- else
- {
- gSprites[task->data[0]].pos2.x = task->data[4];
- task->data[3] = 12;
- task->data[2]++;
- }
- break;
- case 3:
- if (task->data[3])
- {
- task->data[3]--;
- }
- else
- {
- task->data[3] = 3;
- task->data[4] = gSprites[task->data[0]].pos2.x;
- task->data[5] = (task->data[1] == 0) ? 8 : -8;
- task->data[2]++;
- }
- break;
- case 4:
- if (task->data[3])
- {
- task->data[4] += task->data[5];
- gSprites[task->data[0]].pos2.x = task->data[4];
- task->data[3]--;
- }
- else
- {
- DestroyAnimVisualTask(taskId);
- }
- break;
- }
-}
-
-void sub_80CDD20(u8 taskId)
-{
- struct Task* task = &gTasks[taskId];
- if (task->data[3])
- {
- task->data[4] -= task->data[5];
- obj_id_set_rotscale(task->data[0], 0x100, 0x100, task->data[4]);
- sub_8078F9C(task->data[0]);
- task->data[3]--;
- }
- else
- {
- sub_8078F40(task->data[0]);
- DestroyAnimVisualTask(taskId);
- }
-}
diff --git a/src/battle/anim/moon.c b/src/battle/anim/moon.c
index c532e8057..6e889008e 100644
--- a/src/battle/anim/moon.c
+++ b/src/battle/anim/moon.c
@@ -8,11 +8,23 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CE30C(struct Sprite* sprite);
static void sub_80CE354(struct Sprite* sprite);
// moon (shows a moon image.)
// Used in Moonlight.
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6FC8 =
+{
+ .tileTag = 10194,
+ .paletteTag = 10194,
+ .oam = &gOamData_837E05C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CE30C,
+};
+
void sub_80CE30C(struct Sprite* sprite)
{
if (IsContest())
@@ -32,7 +44,7 @@ void sub_80CE30C(struct Sprite* sprite)
sprite->callback = sub_80CE354;
}
-void sub_80CE354(struct Sprite* sprite)
+static void sub_80CE354(struct Sprite* sprite)
{
if (sprite->data[0])
DestroyAnimSprite(sprite);
diff --git a/src/battle/anim/scan.c b/src/battle/anim/scan.c
index abd54cef3..05859d31c 100644
--- a/src/battle/anim/scan.c
+++ b/src/battle/anim/scan.c
@@ -9,8 +9,8 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-extern s8 gUnknown_083D6DDC[4][2];
-
+void sub_80CD3E0(struct Sprite* sprite);
+void sub_80CD6CC(struct Sprite* sprite);
static void sub_80CD408(struct Sprite* sprite);
static void sub_80CD4B8(struct Sprite* sprite);
static void sub_80CD4EC(struct Sprite* sprite);
@@ -21,6 +21,36 @@ static void sub_80CD67C(struct Sprite* sprite);
// scan
// Used by Lock-On.
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6DAC =
+{
+ .tileTag = 10014,
+ .paletteTag = 10014,
+ .oam = &gOamData_837DF34,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CD3E0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6DC4 =
+{
+ .tileTag = 10014,
+ .paletteTag = 10014,
+ .oam = &gOamData_837DF2C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CD6CC,
+};
+
+const s8 gUnknown_083D6DDC[][2] =
+{
+ { 64, 64},
+ { 0, -64},
+ {-64, 64},
+ { 32, -32},
+};
+
void sub_80CD3E0(struct Sprite* sprite)
{
sprite->pos1.x -= 32;
@@ -30,7 +60,7 @@ void sub_80CD3E0(struct Sprite* sprite)
StoreSpriteCallbackInData(sprite, sub_80CD408);
}
-void sub_80CD408(struct Sprite* sprite)
+static void sub_80CD408(struct Sprite* sprite)
{
switch (sprite->data[5] & 1)
{
@@ -57,7 +87,7 @@ void sub_80CD408(struct Sprite* sprite)
sprite->data[5] ^= 1;
}
-void sub_80CD4B8(struct Sprite* sprite)
+static void sub_80CD4B8(struct Sprite* sprite)
{
if ((sprite->data[5] >> 8) == 4)
{
@@ -71,7 +101,7 @@ void sub_80CD4B8(struct Sprite* sprite)
}
}
-void sub_80CD4EC(struct Sprite* sprite)
+static void sub_80CD4EC(struct Sprite* sprite)
{
s16 a;
s16 b;
@@ -117,7 +147,7 @@ void sub_80CD4EC(struct Sprite* sprite)
}
}
-void sub_80CD5A8(struct Sprite* sprite)
+static void sub_80CD5A8(struct Sprite* sprite)
{
if (sprite->data[2] == 0)
{
@@ -144,7 +174,7 @@ void sub_80CD5A8(struct Sprite* sprite)
}
}
-void sub_80CD654(struct Sprite* sprite)
+static void sub_80CD654(struct Sprite* sprite)
{
if ((u16)gBattleAnimArgs[7] == 0xFFFF)
{
@@ -154,7 +184,7 @@ void sub_80CD654(struct Sprite* sprite)
}
}
-void sub_80CD67C(struct Sprite* sprite)
+static void sub_80CD67C(struct Sprite* sprite)
{
if (sprite->data[0] % 3 == 0)
{
diff --git a/src/battle/anim/shield.c b/src/battle/anim/shield.c
index 323df4ab2..d858f5100 100644
--- a/src/battle/anim/shield.c
+++ b/src/battle/anim/shield.c
@@ -9,11 +9,23 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CCD24(struct Sprite* sprite);
static void sub_80CCE0C(struct Sprite* sprite);
// shield
// Used by Protect.
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6BE8 =
+{
+ .tileTag = 10280,
+ .paletteTag = 10280,
+ .oam = &gOamData_837E05C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CCD24,
+};
+
void sub_80CCD24(struct Sprite* sprite)
{
if (IsContest() != 0)
@@ -36,7 +48,7 @@ void sub_80CCD24(struct Sprite* sprite)
sprite->callback = sub_80CCE0C;
}
-void sub_80CCE0C(struct Sprite* sprite)
+static void sub_80CCE0C(struct Sprite* sprite)
{
int a;
int i;
diff --git a/src/battle/anim/slash.c b/src/battle/anim/slash.c
index 68a1b81ef..f71bc6eaa 100644
--- a/src/battle/anim/slash.c
+++ b/src/battle/anim/slash.c
@@ -8,6 +8,9 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CDD74(struct Sprite* sprite);
+void sub_80CDDDC(struct Sprite* sprite);
+void sub_80CDE24(struct Sprite* sprite);
static void sub_80CDE78(struct Sprite* sprite);
static void sub_80CDEB0(struct Sprite* sprite);
static void sub_80CDEC0(struct Sprite* sprite);
@@ -15,6 +18,60 @@ static void sub_80CDEC0(struct Sprite* sprite);
// slash (a cutting animation)
// Used in Slash and False Swipe.
+const union AnimCmd gSpriteAnim_83D6E14[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(48, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6E28[] =
+{
+ ANIMCMD_FRAME(48, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6E30[] =
+{
+ gSpriteAnim_83D6E14,
+ gSpriteAnim_83D6E28,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6E38 =
+{
+ .tileTag = 10183,
+ .paletteTag = 10183,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D6E30,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CDD74,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6E50 =
+{
+ .tileTag = 10286,
+ .paletteTag = 10286,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D6E30,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CDDDC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6E68 =
+{
+ .tileTag = 10286,
+ .paletteTag = 10286,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D6E30,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CDE24,
+};
+
void sub_80CDD74(struct Sprite* sprite)
{
if (gBattleAnimArgs[0] == 0)
@@ -52,7 +109,7 @@ void sub_80CDE24(struct Sprite* sprite)
sprite->callback = sub_80CDEC0;
}
-void sub_80CDE78(struct Sprite* sprite)
+static void sub_80CDE78(struct Sprite* sprite)
{
if (++sprite->data[0] > 8)
{
@@ -64,14 +121,14 @@ void sub_80CDE78(struct Sprite* sprite)
}
}
-void sub_80CDEB0(struct Sprite* sprite)
+static void sub_80CDEB0(struct Sprite* sprite)
{
sprite->data[0] = 0;
sprite->data[1] = 0;
sprite->callback = sub_80CDEC0;
}
-void sub_80CDEC0(struct Sprite* sprite)
+static void sub_80CDEC0(struct Sprite* sprite)
{
if (++sprite->data[0] > 1)
{
diff --git a/src/battle/anim/sleep.c b/src/battle/anim/sleep.c
index cc3518395..40b984be7 100644
--- a/src/battle/anim/sleep.c
+++ b/src/battle/anim/sleep.c
@@ -8,11 +8,68 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CD328(struct Sprite* sprite);
static void sub_80CD394(struct Sprite* sprite);
// sleep (the "ZZZ" graphical effect)
// Used by Rest and the sleep turn when the Pokemon is still asleep.
+const union AnimCmd gSpriteAnim_83D6D20[] =
+{
+ ANIMCMD_FRAME(0, 40),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6D28[] =
+{
+ gSpriteAnim_83D6D20,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D6D2C[] =
+{
+ AFFINEANIMCMD_FRAME(0x14, 0x14, -30, 0),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 1, 24),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D6D44[] =
+{
+ AFFINEANIMCMD_LOOP(0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 24),
+ AFFINEANIMCMD_LOOP(10),
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D6D5C[] =
+{
+ AFFINEANIMCMD_FRAME(0x14, 0x14, 30, 0),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, -1, 24),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D6D74[] =
+{
+ AFFINEANIMCMD_LOOP(0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 24),
+ AFFINEANIMCMD_LOOP(10),
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D6D8C[] =
+{
+ gSpriteAffineAnim_83D6D2C,
+ gSpriteAffineAnim_83D6D5C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6D94 =
+{
+ .tileTag = 10228,
+ .paletteTag = 10228,
+ .oam = &gOamData_837DF94,
+ .anims = gSpriteAnimTable_83D6D28,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D6D8C,
+ .callback = sub_80CD328,
+};
+
void sub_80CD328(struct Sprite* sprite)
{
sub_8078650(sprite);
@@ -33,7 +90,7 @@ void sub_80CD328(struct Sprite* sprite)
sprite->callback = sub_80CD394;
}
-void sub_80CD394(struct Sprite* sprite)
+static void sub_80CD394(struct Sprite* sprite)
{
sprite->pos2.y = -(sprite->data[0] / 0x28);
sprite->pos2.x = sprite->data[4] / 10;
diff --git a/src/battle/anim/slice.c b/src/battle/anim/slice.c
index 8e7f35f46..4da414cbf 100644
--- a/src/battle/anim/slice.c
+++ b/src/battle/anim/slice.c
@@ -8,8 +8,46 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void AnimCuttingSlice(struct Sprite* sprite);
+void sub_80CC9BC(struct Sprite* sprite);
static void AnimSliceStep(struct Sprite* sprite);
+const union AnimCmd gSpriteAnim_83D6B10[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(32, 5),
+ ANIMCMD_FRAME(48, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6B24[] =
+{
+ gSpriteAnim_83D6B10,
+};
+
+const struct SpriteTemplate gCuttingSliceSpriteTemplate =
+{
+ .tileTag = 10138,
+ .paletteTag = 10138,
+ .oam = &gOamData_837E054,
+ .anims = gSpriteAnimTable_83D6B24,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = AnimCuttingSlice,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6B40 =
+{
+ .tileTag = 10138,
+ .paletteTag = 10138,
+ .oam = &gOamData_837E054,
+ .anims = gSpriteAnimTable_83D6B24,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CC9BC,
+};
+
// Moves the sprite in a diagonally slashing motion across the target mon.
// Used by moves such as MOVE_CUT and MOVE_AERIAL_ACE.
// arg 0: initial x pixel offset
diff --git a/src/battle/anim/strike.c b/src/battle/anim/strike.c
index 775485a79..79dd833a9 100644
--- a/src/battle/anim/strike.c
+++ b/src/battle/anim/strike.c
@@ -8,11 +8,52 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CE670(struct Sprite* sprite);
static void sub_80CE798(struct Sprite* sprite);
// strike (A red strike towards the opponent.)
// Used in Horn Attack, Fury Attack, and Horn Drill.
+const union AnimCmd gSpriteAnim_83D7010[] =
+{
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_FRAME(16, 2),
+ ANIMCMD_FRAME(32, 2),
+ ANIMCMD_FRAME(48, 3),
+ ANIMCMD_FRAME(64, 5),
+ ANIMCMD_FRAME(80, 3),
+ ANIMCMD_FRAME(96, 2),
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D7034[] =
+{
+ gSpriteAnim_83D7010,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7038 =
+{
+ .tileTag = 10031,
+ .paletteTag = 10031,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D7034,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80793C4,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7050 =
+{
+ .tileTag = 10020,
+ .paletteTag = 10020,
+ .oam = &gOamData_837DF34,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CE670,
+};
+
void sub_80CE670(struct Sprite* sprite)
{
if (gBattleAnimArgs[2] <= 1)
@@ -60,7 +101,7 @@ void sub_80CE670(struct Sprite* sprite)
sprite->callback = sub_80CE798;
}
-void sub_80CE798(struct Sprite* sprite)
+static void sub_80CE798(struct Sprite* sprite)
{
sprite->data[2] += sprite->data[3];
sprite->data[4] += sprite->data[5];
diff --git a/src/battle/anim/tile.c b/src/battle/anim/tile.c
new file mode 100644
index 000000000..a10850808
--- /dev/null
+++ b/src/battle/anim/tile.c
@@ -0,0 +1,219 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "battle_interface.h"
+#include "rom_8077ABC.h"
+#include "trig.h"
+#include "sound.h"
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+extern u8 gBattlersCount;
+extern u8 gHealthboxIDs[];
+
+void sub_80CE09C(struct Sprite* sprite);
+void sub_80CE17C(struct Sprite* sprite);
+static void sub_80CE1AC(struct Sprite* sprite);
+
+// tile_in (flips a white tile from the scene into facing the player.)
+// Used in Conversion.
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6F08 =
+{
+ .tileTag = 10017,
+ .paletteTag = 10017,
+ .oam = &gOamData_837DF24,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = TranslateAnimSpriteToTargetMonLocation,
+};
+
+const union AnimCmd gSpriteAnim_83D6F20[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(48, 3),
+ ANIMCMD_FRAME(64, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6F38[] =
+{
+ gSpriteAnim_83D6F20,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6F3C =
+{
+ .tileTag = 10030,
+ .paletteTag = 10030,
+ .oam = &gOamData_837DF34,
+ .anims = gSpriteAnimTable_83D6F38,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80793C4,
+};
+
+const union AnimCmd gSpriteAnim_83D6F54[] =
+{
+ ANIMCMD_FRAME(3, 5),
+ ANIMCMD_FRAME(2, 5),
+ ANIMCMD_FRAME(1, 5),
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6F68[] =
+{
+ gSpriteAnim_83D6F54,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83D6F6C[] =
+{
+ AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83D6F7C[] =
+{
+ gSpriteAffineAnim_83D6F6C,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6F80 =
+{
+ .tileTag = 10018,
+ .paletteTag = 10018,
+ .oam = &gOamData_837E104,
+ .anims = gSpriteAnimTable_83D6F68,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D6F7C,
+ .callback = sub_80CE09C,
+};
+
+const union AnimCmd gSpriteAnim_83D6F98[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(1, 5),
+ ANIMCMD_FRAME(2, 5),
+ ANIMCMD_FRAME(3, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6FAC[] =
+{
+ gSpriteAnim_83D6F98,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6FB0 =
+{
+ .tileTag = 10018,
+ .paletteTag = 10018,
+ .oam = &gOamData_837E104,
+ .anims = gSpriteAnimTable_83D6FAC,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83D6F7C,
+ .callback = sub_80CE17C,
+};
+
+void sub_80CE09C(struct Sprite* sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 0) + gBattleAnimArgs[0];
+ sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 1) + gBattleAnimArgs[1];
+ if (IsContest())
+ sprite->pos1.y += 10;
+ sprite->data[0]++;
+ }
+
+ if ((u16)gBattleAnimArgs[7] == 0xFFFF)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_80CE108(u8 taskId)
+{
+ if (gTasks[taskId].data[2] == 1)
+ {
+ gBattleAnimArgs[7] = 0xFFFF;
+ gTasks[taskId].data[2]++;
+ }
+ else if (gTasks[taskId].data[2] == 2)
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+ else
+ {
+ if (++gTasks[taskId].data[0] == 4)
+ {
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1]++;
+ REG_BLDALPHA = (gTasks[taskId].data[1] << 8) | (16 - gTasks[taskId].data[1]);
+ if (gTasks[taskId].data[1] == 16)
+ gTasks[taskId].data[2]++;
+ }
+ }
+}
+
+void sub_80CE17C(struct Sprite* sprite)
+{
+ sub_8078764(sprite, 0);
+ sprite->animPaused = 1;
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->callback = sub_80CE1AC;
+}
+
+static void sub_80CE1AC(struct Sprite* sprite)
+{
+ if (sprite->data[0])
+ {
+ sprite->data[0]--;
+ }
+ else
+ {
+ sprite->animPaused = 0;
+ sprite->data[0] = 30;
+ sprite->data[2] = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
+ sprite->data[4] = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+ }
+}
+
+void sub_80CE210(u8 taskId)
+{
+ if (++gTasks[taskId].data[0] == 4)
+ {
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1]++;
+ REG_BLDALPHA = gTasks[taskId].data[1] | ((16 - gTasks[taskId].data[1]) << 8);
+ if (gTasks[taskId].data[1] == 16)
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void unref_sub_80CE260(u8 taskId)
+{
+ u8 i;
+ for (i = 0; i < gBattlersCount; i++)
+ {
+ if (gBattleAnimArgs[0] == 1 && GetBattlerSide(i) == 0)
+ sub_8043DB0(gHealthboxIDs[i]);
+
+ if (gBattleAnimArgs[1] == 1 && GetBattlerSide(i) == 1)
+ sub_8043DB0(gHealthboxIDs[i]);
+ }
+
+ DestroyAnimVisualTask(taskId);
+}
+
+void unref_sub_80CE2D4(u8 taskId)
+{
+ u8 i;
+ for (i = 0; i < gBattlersCount; i++)
+ {
+ sub_8043DFC(gHealthboxIDs[i]);
+ }
+
+ DestroyAnimVisualTask(taskId);
+}
diff --git a/src/battle/anim/tile_in.c b/src/battle/anim/tile_in.c
deleted file mode 100644
index b1d804317..000000000
--- a/src/battle/anim/tile_in.c
+++ /dev/null
@@ -1,51 +0,0 @@
-#include "global.h"
-#include "rom_8077ABC.h"
-#include "trig.h"
-#include "battle_anim.h"
-#include "sound.h"
-
-extern s16 gBattleAnimArgs[];
-extern u8 gAnimBankAttacker;
-extern u8 gAnimBankTarget;
-
-// tile_in (flips a white tile from the scene into facing the player.)
-// Used in Conversion.
-
-void sub_80CE09C(struct Sprite* sprite)
-{
- if (sprite->data[0] == 0)
- {
- sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 0) + gBattleAnimArgs[0];
- sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 1) + gBattleAnimArgs[1];
- if (IsContest())
- sprite->pos1.y += 10;
- sprite->data[0]++;
- }
-
- if ((u16)gBattleAnimArgs[7] == 0xFFFF)
- DestroyAnimSprite(sprite);
-}
-
-void sub_80CE108(u8 taskId)
-{
- if (gTasks[taskId].data[2] == 1)
- {
- gBattleAnimArgs[7] = 0xFFFF;
- gTasks[taskId].data[2]++;
- }
- else if (gTasks[taskId].data[2] == 2)
- {
- DestroyAnimVisualTask(taskId);
- }
- else
- {
- if (++gTasks[taskId].data[0] == 4)
- {
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[1]++;
- REG_BLDALPHA = (gTasks[taskId].data[1] << 8) | (16 - gTasks[taskId].data[1]);
- if (gTasks[taskId].data[1] == 16)
- gTasks[taskId].data[2]++;
- }
- }
-}
diff --git a/src/battle/anim/tile_out.c b/src/battle/anim/tile_out.c
deleted file mode 100644
index 04f51e556..000000000
--- a/src/battle/anim/tile_out.c
+++ /dev/null
@@ -1,81 +0,0 @@
-#include "global.h"
-#include "rom_8077ABC.h"
-#include "trig.h"
-#include "battle_anim.h"
-#include "sound.h"
-#include "battle_interface.h"
-
-extern s16 gBattleAnimArgs[];
-extern u8 gAnimBankAttacker;
-extern u8 gAnimBankTarget;
-
-extern u8 gBattlersCount;
-extern u8 gHealthboxIDs[];
-
-static void sub_80CE1AC(struct Sprite* sprite);
-
-// tile_out (makes a tile fly inward into a center point.)
-// Used in Conversion 2.
-
-void sub_80CE17C(struct Sprite* sprite)
-{
- sub_8078764(sprite, 0);
- sprite->animPaused = 1;
- sprite->data[0] = gBattleAnimArgs[2];
- sprite->callback = sub_80CE1AC;
-}
-
-void sub_80CE1AC(struct Sprite* sprite)
-{
- if (sprite->data[0])
- {
- sprite->data[0]--;
- }
- else
- {
- sprite->animPaused = 0;
- sprite->data[0] = 30;
- sprite->data[2] = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
- sprite->data[4] = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
- sprite->callback = StartTranslateAnimSpriteByDeltas;
- StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
- }
-}
-
-void sub_80CE210(u8 taskId)
-{
- if (++gTasks[taskId].data[0] == 4)
- {
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[1]++;
- REG_BLDALPHA = gTasks[taskId].data[1] | ((16 - gTasks[taskId].data[1]) << 8);
- if (gTasks[taskId].data[1] == 16)
- DestroyAnimVisualTask(taskId);
- }
-}
-
-void unref_sub_80CE260(u8 taskId)
-{
- u8 i;
- for (i = 0; i < gBattlersCount; i++)
- {
- if (gBattleAnimArgs[0] == 1 && GetBattlerSide(i) == 0)
- sub_8043DB0(gHealthboxIDs[i]);
-
- if (gBattleAnimArgs[1] == 1 && GetBattlerSide(i) == 1)
- sub_8043DB0(gHealthboxIDs[i]);
- }
-
- DestroyAnimVisualTask(taskId);
-}
-
-void unref_sub_80CE2D4(u8 taskId)
-{
- u8 i;
- for (i = 0; i < gBattlersCount; i++)
- {
- sub_8043DFC(gHealthboxIDs[i]);
- }
-
- DestroyAnimVisualTask(taskId);
-}
diff --git a/src/battle/anim/twinkle.c b/src/battle/anim/twinkle.c
index 34082cc2f..bfe0c8da2 100644
--- a/src/battle/anim/twinkle.c
+++ b/src/battle/anim/twinkle.c
@@ -8,11 +8,37 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CE36C(struct Sprite* sprite);
static void sub_80CE3B0(struct Sprite* sprite);
// twinkle (a tiny twinkling star appears above the Pokemon and descends toward the Pokemon.)
// Used in Moonlight.
+const union AnimCmd gSpriteAnim_83D6FE0[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_FRAME(8, 8),
+ ANIMCMD_FRAME(12, 8),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6FF4[] =
+{
+ gSpriteAnim_83D6FE0,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6FF8 =
+{
+ .tileTag = 10195,
+ .paletteTag = 10195,
+ .oam = &gOamData_837DF2C,
+ .anims = gSpriteAnimTable_83D6FF4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CE36C,
+};
+
void sub_80CE36C(struct Sprite* sprite)
{
sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2) + gBattleAnimArgs[0];
@@ -25,7 +51,7 @@ void sub_80CE36C(struct Sprite* sprite)
sprite->callback = sub_80CE3B0;
}
-void sub_80CE3B0(struct Sprite* sprite)
+static void sub_80CE3B0(struct Sprite* sprite)
{
if (++sprite->data[1] > 1)
{
diff --git a/src/battle/anim/unused_2.c b/src/battle/anim/unused_2.c
index 71e5e92d7..f4ebe0e74 100644
--- a/src/battle/anim/unused_2.c
+++ b/src/battle/anim/unused_2.c
@@ -8,11 +8,97 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CCC50(struct Sprite* sprite);
static void sub_80CCCB4(struct Sprite* sprite);
// unused_2 (unknown effect with music notes.)
// possibly another unused effect. Unknown usage.
+const union AnimCmd gSpriteAnim_83D6B58[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6B60[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6B68[] =
+{
+ ANIMCMD_FRAME(8, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6B70[] =
+{
+ ANIMCMD_FRAME(12, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6B78[] =
+{
+ ANIMCMD_FRAME(16, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6B80[] =
+{
+ ANIMCMD_FRAME(20, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6B88[] =
+{
+ ANIMCMD_FRAME(0, 1, .vFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6B90[] =
+{
+ ANIMCMD_FRAME(4, 1, .vFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6B98[] =
+{
+ ANIMCMD_FRAME(8, 1, .vFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6BA0[] =
+{
+ ANIMCMD_FRAME(12, 1, .vFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6BA8[] =
+{
+ gSpriteAnim_83D6B58,
+ gSpriteAnim_83D6B60,
+ gSpriteAnim_83D6B68,
+ gSpriteAnim_83D6B70,
+ gSpriteAnim_83D6B78,
+ gSpriteAnim_83D6B80,
+ gSpriteAnim_83D6B88,
+ gSpriteAnim_83D6B90,
+ gSpriteAnim_83D6B98,
+ gSpriteAnim_83D6BA0,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D6BD0 =
+{
+ .tileTag = 10072,
+ .paletteTag = 10072,
+ .oam = &gOamData_837DF2C,
+ .anims = gSpriteAnimTable_83D6BA8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CCC50,
+};
+
void unref_sub_80CCB6C(struct Sprite* sprite)
{
if (sprite->data[2] > 1)
@@ -62,7 +148,7 @@ void sub_80CCC50(struct Sprite* sprite)
sub_80CCCB4(sprite);
}
-void sub_80CCCB4(struct Sprite* sprite)
+static void sub_80CCCB4(struct Sprite* sprite)
{
sprite->pos2.x = Cos(sprite->data[0], 100);
sprite->pos2.y = Sin(sprite->data[0], 20);
diff --git a/src/battle/anim/unused_3.c b/src/battle/anim/unused_3.c
index a89ed0246..1c3ab978e 100644
--- a/src/battle/anim/unused_3.c
+++ b/src/battle/anim/unused_3.c
@@ -8,10 +8,53 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
+void sub_80CD274(struct Sprite* sprite);
static void sub_80CD2D4(struct Sprite* sprite);
// unused_3 (seems to be some sort of popping effect with a growing diamond shape)
-// yet another unused effect...
+
+const union AnimCmd gSpriteAnim_83D6CB8[] =
+{
+ ANIMCMD_FRAME(0, 10),
+ ANIMCMD_FRAME(4, 10),
+ ANIMCMD_FRAME(8, 10),
+ ANIMCMD_FRAME(12, 10),
+ ANIMCMD_FRAME(16, 26),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(20, 5),
+ ANIMCMD_FRAME(24, 15),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_83D6CDC[] =
+{
+ ANIMCMD_FRAME(0, 10, .hFlip = TRUE),
+ ANIMCMD_FRAME(4, 10, .hFlip = TRUE),
+ ANIMCMD_FRAME(8, 10, .hFlip = TRUE),
+ ANIMCMD_FRAME(12, 10, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 26, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 5, .hFlip = TRUE),
+ ANIMCMD_FRAME(20, 5, .hFlip = TRUE),
+ ANIMCMD_FRAME(24, 15, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_83D6D00[] =
+{
+ gSpriteAnim_83D6CB8,
+ gSpriteAnim_83D6CDC,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83D6D08 =
+{
+ .tileTag = 10032,
+ .paletteTag = 10032,
+ .oam = &gOamData_837DF2C,
+ .anims = gSpriteAnimTable_83D6D00,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80CD274,
+};
void sub_80CD274(struct Sprite* sprite)
{
@@ -31,7 +74,7 @@ void sub_80CD274(struct Sprite* sprite)
sprite->callback = sub_80CD2D4;
}
-void sub_80CD2D4(struct Sprite* sprite)
+static void sub_80CD2D4(struct Sprite* sprite)
{
if (++sprite->data[0] > 30)
{
diff --git a/src/battle/anim/unused_4.c b/src/battle/anim/unused_4.c
deleted file mode 100644
index 63940f3e1..000000000
--- a/src/battle/anim/unused_4.c
+++ /dev/null
@@ -1,58 +0,0 @@
-#include "global.h"
-#include "rom_8077ABC.h"
-#include "trig.h"
-#include "battle_anim.h"
-#include "sound.h"
-
-extern s16 gBattleAnimArgs[];
-extern u8 gAnimBankAttacker;
-extern u8 gAnimBankTarget;
-
-extern u8 gBankSpriteIds[];
-
-static void sub_80CD9D4(struct Sprite* sprite);
-
-// unused_4
-// Unknown usage.
-
-void sub_80CD9C4(struct Sprite* sprite)
-{
- sprite->data[0] = 0;
- sprite->callback = sub_80CD9D4;
-}
-
-void sub_80CD9D4(struct Sprite* sprite)
-{
- switch (sprite->data[0])
- {
- case 0:
- sprite->data[1] = 0;
- sprite->data[2] = gBankSpriteIds[gAnimBankAttacker];
- sprite->data[3] = GetBattlerSide(gAnimBankAttacker);
- sprite->data[4] = (sprite->data[3] != 0) ? 0x200 : -0x200;
- sprite->data[5] = 0;
- sub_8078E70(sprite->data[2], 0);
- sprite->data[0]++;
- case 1:
- sprite->data[5] += sprite->data[4];
- obj_id_set_rotscale(sprite->data[2], 0x100, 0x100, sprite->data[5]);
- sub_8078F9C(sprite->data[2]);
- if (++sprite->data[1] > 3)
- {
- sprite->data[1] = 0;
- sprite->data[4] *= -1;
- sprite->data[0]++;
- }
- break;
- case 2:
- sprite->data[5] += sprite->data[4];
- obj_id_set_rotscale(sprite->data[2], 0x100, 0x100, sprite->data[5]);
- sub_8078F9C(sprite->data[2]);
- if (++sprite->data[1] > 3)
- {
- sub_8078F40(sprite->data[2]);
- DestroyAnimSprite(sprite);
- }
- break;
- }
-}