diff options
-rw-r--r-- | constants/battle_anim_constants.asm | 2 | ||||
-rwxr-xr-x | data/battle_anims/ball_colors.asm | 15 | ||||
-rwxr-xr-x | data/battle_anims/framesets.asm | 1268 | ||||
-rwxr-xr-x | data/battle_anims/oam.asm | 1085 | ||||
-rwxr-xr-x | data/battle_anims/object_gfx.asm | 50 | ||||
-rwxr-xr-x | data/battle_anims/objects.asm | 208 | ||||
-rwxr-xr-x | engine/battle_anims/anim_commands.asm | 1358 | ||||
-rwxr-xr-x | engine/battle_anims/core.asm | 317 | ||||
-rwxr-xr-x | engine/battle_anims/functions.asm | 4154 | ||||
-rwxr-xr-x | engine/battle_anims/helpers.asm | 123 | ||||
-rwxr-xr-x | engine/events/bug_contest/display_stats.asm | 104 | ||||
-rwxr-xr-x | gfx/battle/minimize.2bpp | bin | 0 -> 16 bytes | |||
-rwxr-xr-x | gfx/battle/minimize.png | bin | 0 -> 85 bytes | |||
-rw-r--r-- | main.asm | 33 |
14 files changed, 8693 insertions, 24 deletions
diff --git a/constants/battle_anim_constants.asm b/constants/battle_anim_constants.asm index 1b57b240..57bbfcc8 100644 --- a/constants/battle_anim_constants.asm +++ b/constants/battle_anim_constants.asm @@ -807,6 +807,8 @@ BATTLEANIM_BASE_TILE EQU 7 * 7 ; Maximum size of a pokemon picture const ANIM_GFX_ANGELS const ANIM_GFX_WAVE const ANIM_GFX_AEROBLAST + const ANIM_GFX_PLAYERHEAD + const ANIM_GFX_ENEMYFEET ; battle_bg_effect struct members (see macros/wram.asm) const_def diff --git a/data/battle_anims/ball_colors.asm b/data/battle_anims/ball_colors.asm new file mode 100755 index 00000000..0453c14b --- /dev/null +++ b/data/battle_anims/ball_colors.asm @@ -0,0 +1,15 @@ +; colors of balls thrown in battle + +BallColors: + db MASTER_BALL, PAL_BATTLE_OB_GREEN + db ULTRA_BALL, PAL_BATTLE_OB_YELLOW + db GREAT_BALL, PAL_BATTLE_OB_BLUE + db POKE_BALL, PAL_BATTLE_OB_RED + db HEAVY_BALL, PAL_BATTLE_OB_GRAY + db LEVEL_BALL, PAL_BATTLE_OB_BROWN + db LURE_BALL, PAL_BATTLE_OB_BLUE + db FAST_BALL, PAL_BATTLE_OB_BLUE + db FRIEND_BALL, PAL_BATTLE_OB_YELLOW + db MOON_BALL, PAL_BATTLE_OB_GRAY + db LOVE_BALL, PAL_BATTLE_OB_RED + db -1, PAL_BATTLE_OB_GRAY diff --git a/data/battle_anims/framesets.asm b/data/battle_anims/framesets.asm new file mode 100755 index 00000000..a5641570 --- /dev/null +++ b/data/battle_anims/framesets.asm @@ -0,0 +1,1268 @@ +BattleAnimFrameData: +; entries correspond to BATTLEANIMFRAMESET_* constants + dw .Frameset_00 ; BATTLEANIMFRAMESET_00 + dw .Frameset_01 ; BATTLEANIMFRAMESET_01 + dw .Frameset_02 ; BATTLEANIMFRAMESET_02 + dw .Frameset_03 ; BATTLEANIMFRAMESET_03 + dw .Frameset_04 ; BATTLEANIMFRAMESET_04 + dw .Frameset_05 ; BATTLEANIMFRAMESET_05 + dw .Frameset_06 ; BATTLEANIMFRAMESET_06 + dw .Frameset_07 ; BATTLEANIMFRAMESET_07 + dw .Frameset_08 ; BATTLEANIMFRAMESET_08 + dw .Frameset_09 ; BATTLEANIMFRAMESET_09 + dw .Frameset_0a ; BATTLEANIMFRAMESET_0A + dw .Frameset_0b ; BATTLEANIMFRAMESET_0B + dw .Frameset_0c ; BATTLEANIMFRAMESET_0C + dw .Frameset_0d ; BATTLEANIMFRAMESET_0D + dw .Frameset_0e ; BATTLEANIMFRAMESET_0E + dw .Frameset_0f ; BATTLEANIMFRAMESET_0F + dw .Frameset_10 ; BATTLEANIMFRAMESET_10 + dw .Frameset_11 ; BATTLEANIMFRAMESET_11 + dw .Frameset_12 ; BATTLEANIMFRAMESET_12 + dw .Frameset_13 ; BATTLEANIMFRAMESET_13 + dw .Frameset_14 ; BATTLEANIMFRAMESET_14 + dw .Frameset_15 ; BATTLEANIMFRAMESET_15 + dw .Frameset_16 ; BATTLEANIMFRAMESET_16 + dw .Frameset_17 ; BATTLEANIMFRAMESET_17 + dw .Frameset_18 ; BATTLEANIMFRAMESET_18 + dw .Frameset_19 ; BATTLEANIMFRAMESET_19 + dw .Frameset_1a ; BATTLEANIMFRAMESET_1A + dw .Frameset_1b ; BATTLEANIMFRAMESET_1B + dw .Frameset_1c ; BATTLEANIMFRAMESET_1C + dw .Frameset_1d ; BATTLEANIMFRAMESET_1D + dw .Frameset_1e ; BATTLEANIMFRAMESET_1E + dw .Frameset_1f ; BATTLEANIMFRAMESET_1F + dw .Frameset_20 ; BATTLEANIMFRAMESET_20 + dw .Frameset_21 ; BATTLEANIMFRAMESET_21 + dw .Frameset_22 ; BATTLEANIMFRAMESET_22 + dw .Frameset_23 ; BATTLEANIMFRAMESET_23 + dw .Frameset_24 ; BATTLEANIMFRAMESET_24 + dw .Frameset_25 ; BATTLEANIMFRAMESET_25 + dw .Frameset_26 ; BATTLEANIMFRAMESET_26 + dw .Frameset_27 ; BATTLEANIMFRAMESET_27 + dw .Frameset_28 ; BATTLEANIMFRAMESET_28 + dw .Frameset_29 ; BATTLEANIMFRAMESET_29 + dw .Frameset_2a ; BATTLEANIMFRAMESET_2A + dw .Frameset_2b ; BATTLEANIMFRAMESET_2B + dw .Frameset_2c ; BATTLEANIMFRAMESET_2C + dw .Frameset_2d ; BATTLEANIMFRAMESET_2D + dw .Frameset_2e ; BATTLEANIMFRAMESET_2E + dw .Frameset_2f ; BATTLEANIMFRAMESET_2F + dw .Frameset_30 ; BATTLEANIMFRAMESET_30 + dw .Frameset_31 ; BATTLEANIMFRAMESET_31 + dw .Frameset_32 ; BATTLEANIMFRAMESET_32 + dw .Frameset_33 ; BATTLEANIMFRAMESET_33 + dw .Frameset_34 ; BATTLEANIMFRAMESET_34 + dw .Frameset_35 ; BATTLEANIMFRAMESET_35 + dw .Frameset_36 ; BATTLEANIMFRAMESET_36 + dw .Frameset_37 ; BATTLEANIMFRAMESET_37 + dw .Frameset_38 ; BATTLEANIMFRAMESET_38 + dw .Frameset_39 ; BATTLEANIMFRAMESET_39 + dw .Frameset_3a ; BATTLEANIMFRAMESET_3A + dw .Frameset_3b ; BATTLEANIMFRAMESET_3B + dw .Frameset_3c ; BATTLEANIMFRAMESET_3C + dw .Frameset_3d ; BATTLEANIMFRAMESET_3D + dw .Frameset_3e ; BATTLEANIMFRAMESET_3E + dw .Frameset_3f ; BATTLEANIMFRAMESET_3F + dw .Frameset_40 ; BATTLEANIMFRAMESET_40 + dw .Frameset_41 ; BATTLEANIMFRAMESET_41 + dw .Frameset_42 ; BATTLEANIMFRAMESET_42 + dw .Frameset_43 ; BATTLEANIMFRAMESET_43 + dw .Frameset_44 ; BATTLEANIMFRAMESET_44 + dw .Frameset_45 ; BATTLEANIMFRAMESET_45 + dw .Frameset_46 ; BATTLEANIMFRAMESET_46 + dw .Frameset_47 ; BATTLEANIMFRAMESET_47 + dw .Frameset_48 ; BATTLEANIMFRAMESET_48 + dw .Frameset_49 ; BATTLEANIMFRAMESET_49 + dw .Frameset_4a ; BATTLEANIMFRAMESET_4A + dw .Frameset_4b ; BATTLEANIMFRAMESET_4B + dw .Frameset_4c ; BATTLEANIMFRAMESET_4C + dw .Frameset_4d ; BATTLEANIMFRAMESET_4D + dw .Frameset_4e ; BATTLEANIMFRAMESET_4E + dw .Frameset_4f ; BATTLEANIMFRAMESET_4F + dw .Frameset_50 ; BATTLEANIMFRAMESET_50 + dw .Frameset_51 ; BATTLEANIMFRAMESET_51 + dw .Frameset_52 ; BATTLEANIMFRAMESET_52 + dw .Frameset_53 ; BATTLEANIMFRAMESET_53 + dw .Frameset_54 ; BATTLEANIMFRAMESET_54 + dw .Frameset_55 ; BATTLEANIMFRAMESET_55 + dw .Frameset_56 ; BATTLEANIMFRAMESET_56 + dw .Frameset_57 ; BATTLEANIMFRAMESET_57 + dw .Frameset_58 ; BATTLEANIMFRAMESET_58 + dw .Frameset_59 ; BATTLEANIMFRAMESET_59 + dw .Frameset_5a ; BATTLEANIMFRAMESET_5A + dw .Frameset_5b ; BATTLEANIMFRAMESET_5B + dw .Frameset_5c ; BATTLEANIMFRAMESET_5C + dw .Frameset_5d ; BATTLEANIMFRAMESET_5D + dw .Frameset_5e ; BATTLEANIMFRAMESET_5E + dw .Frameset_5f ; BATTLEANIMFRAMESET_5F + dw .Frameset_60 ; BATTLEANIMFRAMESET_60 + dw .Frameset_61 ; BATTLEANIMFRAMESET_61 + dw .Frameset_62 ; BATTLEANIMFRAMESET_62 + dw .Frameset_63 ; BATTLEANIMFRAMESET_63 + dw .Frameset_64 ; BATTLEANIMFRAMESET_64 + dw .Frameset_65 ; BATTLEANIMFRAMESET_65 + dw .Frameset_66 ; BATTLEANIMFRAMESET_66 + dw .Frameset_67 ; BATTLEANIMFRAMESET_67 + dw .Frameset_68 ; BATTLEANIMFRAMESET_68 + dw .Frameset_69 ; BATTLEANIMFRAMESET_69 + dw .Frameset_6a ; BATTLEANIMFRAMESET_6A + dw .Frameset_6b ; BATTLEANIMFRAMESET_6B + dw .Frameset_6c ; BATTLEANIMFRAMESET_6C + dw .Frameset_6d ; BATTLEANIMFRAMESET_6D + dw .Frameset_6e ; BATTLEANIMFRAMESET_6E + dw .Frameset_6f ; BATTLEANIMFRAMESET_6F + dw .Frameset_70 ; BATTLEANIMFRAMESET_70 + dw .Frameset_71 ; BATTLEANIMFRAMESET_71 + dw .Frameset_72 ; BATTLEANIMFRAMESET_72 + dw .Frameset_73 ; BATTLEANIMFRAMESET_73 + dw .Frameset_74 ; BATTLEANIMFRAMESET_74 + dw .Frameset_75 ; BATTLEANIMFRAMESET_75 + dw .Frameset_76 ; BATTLEANIMFRAMESET_76 + dw .Frameset_77 ; BATTLEANIMFRAMESET_77 + dw .Frameset_78 ; BATTLEANIMFRAMESET_78 + dw .Frameset_79 ; BATTLEANIMFRAMESET_79 + dw .Frameset_7a ; BATTLEANIMFRAMESET_7A + dw .Frameset_7b ; BATTLEANIMFRAMESET_7B + dw .Frameset_7c ; BATTLEANIMFRAMESET_7C + dw .Frameset_7d ; BATTLEANIMFRAMESET_7D + dw .Frameset_7e ; BATTLEANIMFRAMESET_7E + dw .Frameset_7f ; BATTLEANIMFRAMESET_7F + dw .Frameset_80 ; BATTLEANIMFRAMESET_80 + dw .Frameset_81 ; BATTLEANIMFRAMESET_81 + dw .Frameset_82 ; BATTLEANIMFRAMESET_82 + dw .Frameset_83 ; BATTLEANIMFRAMESET_83 + dw .Frameset_84 ; BATTLEANIMFRAMESET_84 + dw .Frameset_85 ; BATTLEANIMFRAMESET_85 + dw .Frameset_86 ; BATTLEANIMFRAMESET_86 + dw .Frameset_87 ; BATTLEANIMFRAMESET_87 + dw .Frameset_88 ; BATTLEANIMFRAMESET_88 + dw .Frameset_89 ; BATTLEANIMFRAMESET_89 + dw .Frameset_8a ; BATTLEANIMFRAMESET_8A + dw .Frameset_8b ; BATTLEANIMFRAMESET_8B + dw .Frameset_8c ; BATTLEANIMFRAMESET_8C + dw .Frameset_8d ; BATTLEANIMFRAMESET_8D + dw .Frameset_8e ; BATTLEANIMFRAMESET_8E + dw .Frameset_8f ; BATTLEANIMFRAMESET_8F + dw .Frameset_90 ; BATTLEANIMFRAMESET_90 + dw .Frameset_91 ; BATTLEANIMFRAMESET_91 + dw .Frameset_92 ; BATTLEANIMFRAMESET_92 + dw .Frameset_93 ; BATTLEANIMFRAMESET_93 + dw .Frameset_94 ; BATTLEANIMFRAMESET_94 + dw .Frameset_95 ; BATTLEANIMFRAMESET_95 + dw .Frameset_96 ; BATTLEANIMFRAMESET_96 + dw .Frameset_97 ; BATTLEANIMFRAMESET_97 + dw .Frameset_98 ; BATTLEANIMFRAMESET_98 + dw .Frameset_99 ; BATTLEANIMFRAMESET_99 + dw .Frameset_9a ; BATTLEANIMFRAMESET_9A + dw .Frameset_9b ; BATTLEANIMFRAMESET_9B + dw .Frameset_9c ; BATTLEANIMFRAMESET_9C + dw .Frameset_9d ; BATTLEANIMFRAMESET_9D + dw .Frameset_9e ; BATTLEANIMFRAMESET_9E + dw .Frameset_9f ; BATTLEANIMFRAMESET_9F + dw .Frameset_a0 ; BATTLEANIMFRAMESET_A0 + dw .Frameset_a1 ; BATTLEANIMFRAMESET_A1 + dw .Frameset_a2 ; BATTLEANIMFRAMESET_A2 + dw .Frameset_a3 ; BATTLEANIMFRAMESET_A3 + dw .Frameset_a4 ; BATTLEANIMFRAMESET_A4 + dw .Frameset_a5 ; BATTLEANIMFRAMESET_A5 + dw .Frameset_a6 ; BATTLEANIMFRAMESET_A6 + dw .Frameset_a7 ; BATTLEANIMFRAMESET_A7 + dw .Frameset_a8 ; BATTLEANIMFRAMESET_A8 + dw .Frameset_a9 ; BATTLEANIMFRAMESET_A9 + dw .Frameset_aa ; BATTLEANIMFRAMESET_AA + dw .Frameset_ab ; BATTLEANIMFRAMESET_AB + dw .Frameset_ac ; BATTLEANIMFRAMESET_AC + dw .Frameset_ad ; BATTLEANIMFRAMESET_AD + dw .Frameset_ae ; BATTLEANIMFRAMESET_AE + dw .Frameset_af ; BATTLEANIMFRAMESET_AF + dw .Frameset_b0 ; BATTLEANIMFRAMESET_B0 + dw .Frameset_b1 ; BATTLEANIMFRAMESET_B1 + dw .Frameset_b2 ; BATTLEANIMFRAMESET_B2 + dw .Frameset_b3 ; BATTLEANIMFRAMESET_B3 + dw .Frameset_b4 ; BATTLEANIMFRAMESET_B4 + dw .Frameset_b5 ; BATTLEANIMFRAMESET_B5 + dw .Frameset_b6 ; BATTLEANIMFRAMESET_B6 + dw .Frameset_b7 ; BATTLEANIMFRAMESET_B7 + dw .Frameset_b8 ; BATTLEANIMFRAMESET_B8 + +.Frameset_00: + frame BATTLEANIMOAMSET_00, 6 + delanim + +.Frameset_01: + frame BATTLEANIMOAMSET_01, 6 + delanim + +.Frameset_02: + frame BATTLEANIMOAMSET_02, 6 + delanim + +.Frameset_03: + frame BATTLEANIMOAMSET_03, 6 + delanim + +.Frameset_04: + frame BATTLEANIMOAMSET_04, 6 + delanim + +.Frameset_05: + frame BATTLEANIMOAMSET_05, 6 + delanim + +.Frameset_06: + frame BATTLEANIMOAMSET_06, 6 + delanim + +.Frameset_07: + frame BATTLEANIMOAMSET_03, 4 + frame BATTLEANIMOAMSET_01, 1 + frame BATTLEANIMOAMSET_03, 4 + frame BATTLEANIMOAMSET_01, 1 + frame BATTLEANIMOAMSET_03, 4 + frame BATTLEANIMOAMSET_01, 1 + frame BATTLEANIMOAMSET_03, 4 + frame BATTLEANIMOAMSET_01, 1 + delanim + +.Frameset_3e: + frame BATTLEANIMOAMSET_4B, 2 + frame BATTLEANIMOAMSET_4C, 2 + frame BATTLEANIMOAMSET_4D, 4 + frame BATTLEANIMOAMSET_4E, 2 + dowait 2 + frame BATTLEANIMOAMSET_4E, 2 + dowait 2 + frame BATTLEANIMOAMSET_4E, 2 + dowait 2 + frame BATTLEANIMOAMSET_4E, 2 + delanim + +.Frameset_3f: + frame BATTLEANIMOAMSET_4B, 2, OAM_X_FLIP + frame BATTLEANIMOAMSET_4C, 2, OAM_X_FLIP + frame BATTLEANIMOAMSET_4D, 4, OAM_X_FLIP + frame BATTLEANIMOAMSET_4E, 2, OAM_X_FLIP + dowait 2 + frame BATTLEANIMOAMSET_4E, 2, OAM_X_FLIP + dowait 2 + frame BATTLEANIMOAMSET_4E, 2, OAM_X_FLIP + dowait 2 + frame BATTLEANIMOAMSET_4E, 2, OAM_X_FLIP + delanim + +.Frameset_40: + frame BATTLEANIMOAMSET_4B, 2, OAM_X_FLIP, OAM_Y_FLIP + frame BATTLEANIMOAMSET_4C, 2, OAM_X_FLIP, OAM_Y_FLIP + frame BATTLEANIMOAMSET_4D, 4, OAM_X_FLIP, OAM_Y_FLIP + frame BATTLEANIMOAMSET_4E, 2, OAM_X_FLIP, OAM_Y_FLIP + dowait 2 + frame BATTLEANIMOAMSET_4E, 2, OAM_X_FLIP, OAM_Y_FLIP + dowait 2 + frame BATTLEANIMOAMSET_4E, 2, OAM_X_FLIP, OAM_Y_FLIP + dowait 2 + frame BATTLEANIMOAMSET_4E, 2, OAM_X_FLIP, OAM_Y_FLIP + delanim + +.Frameset_41: + frame BATTLEANIMOAMSET_4B, 1 + frame BATTLEANIMOAMSET_4C, 1 + frame BATTLEANIMOAMSET_4D, 1 + frame BATTLEANIMOAMSET_4F, 1 + frame BATTLEANIMOAMSET_50, 1 + frame BATTLEANIMOAMSET_51, 1 + frame BATTLEANIMOAMSET_52, 2 + dowait 2 + frame BATTLEANIMOAMSET_52, 2 + dowait 2 + frame BATTLEANIMOAMSET_52, 2 + dowait 2 + frame BATTLEANIMOAMSET_52, 2 + delanim + +.Frameset_42: + frame BATTLEANIMOAMSET_4B, 1, OAM_X_FLIP + frame BATTLEANIMOAMSET_4C, 1, OAM_X_FLIP + frame BATTLEANIMOAMSET_4D, 1, OAM_X_FLIP + frame BATTLEANIMOAMSET_4F, 1, OAM_X_FLIP + frame BATTLEANIMOAMSET_50, 1, OAM_X_FLIP + frame BATTLEANIMOAMSET_51, 1, OAM_X_FLIP + frame BATTLEANIMOAMSET_52, 2, OAM_X_FLIP + dowait 2 + frame BATTLEANIMOAMSET_52, 2, OAM_X_FLIP + dowait 2 + frame BATTLEANIMOAMSET_52, 2, OAM_X_FLIP + dowait 2 + frame BATTLEANIMOAMSET_52, 2, OAM_X_FLIP + delanim + +.Frameset_08: + frame BATTLEANIMOAMSET_00, 3 + frame BATTLEANIMOAMSET_07, 3 + frame BATTLEANIMOAMSET_08, 3 + frame BATTLEANIMOAMSET_09, 3 + delanim + +.Frameset_09: + frame BATTLEANIMOAMSET_0A, 7 + frame BATTLEANIMOAMSET_0B, 7 + frame BATTLEANIMOAMSET_0A, 7 + frame BATTLEANIMOAMSET_0B, 7, OAM_X_FLIP + dorestart + +.Frameset_0a: + frame BATTLEANIMOAMSET_0C, 8 + endanim + +.Frameset_0b: + frame BATTLEANIMOAMSET_0D, 8 + endanim + +.Frameset_0c: + frame BATTLEANIMOAMSET_0A, 8 + endanim + +.Frameset_0d: + frame BATTLEANIMOAMSET_0A, 7 + frame BATTLEANIMOAMSET_0B, 7 + frame BATTLEANIMOAMSET_0A, 7 + frame BATTLEANIMOAMSET_0B, 7, OAM_X_FLIP + frame BATTLEANIMOAMSET_0A, 7 + endanim + +.Frameset_0e: + frame BATTLEANIMOAMSET_0A, 8 + endanim + +.Frameset_0f: + frame BATTLEANIMOAMSET_0A, 4 + frame BATTLEANIMOAMSET_0E, 4 + dorestart + +.Frameset_10: + frame BATTLEANIMOAMSET_0F, 4 + frame BATTLEANIMOAMSET_10, 4 + dorestart + +.Frameset_11: + frame BATTLEANIMOAMSET_10, 4 + frame BATTLEANIMOAMSET_0F, 4 + frame BATTLEANIMOAMSET_0E, 4 + frame BATTLEANIMOAMSET_0A, 4 + frame BATTLEANIMOAMSET_0E, 4 + frame BATTLEANIMOAMSET_0A, 4 + frame BATTLEANIMOAMSET_0E, 4 + frame BATTLEANIMOAMSET_0A, 4 + delanim + +.Frameset_12: + frame BATTLEANIMOAMSET_10, 1 + frame BATTLEANIMOAMSET_0F, 1 + frame BATTLEANIMOAMSET_12, 1 + frame BATTLEANIMOAMSET_11, 1 + frame BATTLEANIMOAMSET_12, 1 + frame BATTLEANIMOAMSET_0F, 1 + dorestart + +.Frameset_13: + frame BATTLEANIMOAMSET_10, 3 + frame BATTLEANIMOAMSET_0F, 3 + frame BATTLEANIMOAMSET_12, 1 + dowait 1 + frame BATTLEANIMOAMSET_12, 1 + dowait 1 + frame BATTLEANIMOAMSET_12, 1 + dowait 1 + frame BATTLEANIMOAMSET_12, 1 + dowait 1 + frame BATTLEANIMOAMSET_12, 3 + delanim + +.Frameset_14: + frame BATTLEANIMOAMSET_13, 20 + delanim + +.Frameset_15: + frame BATTLEANIMOAMSET_10, 1 + frame BATTLEANIMOAMSET_0F, 1 + dorestart + +.Frameset_16: + frame BATTLEANIMOAMSET_14, 8 + endanim + +.Frameset_17: + frame BATTLEANIMOAMSET_17, 4 + frame BATTLEANIMOAMSET_16, 8 + frame BATTLEANIMOAMSET_15, 8 + frame BATTLEANIMOAMSET_16, 8 + frame BATTLEANIMOAMSET_17, 4 + frame BATTLEANIMOAMSET_17, 4 + frame BATTLEANIMOAMSET_16, 8, OAM_X_FLIP + frame BATTLEANIMOAMSET_15, 8, OAM_X_FLIP + frame BATTLEANIMOAMSET_16, 8, OAM_X_FLIP + frame BATTLEANIMOAMSET_17, 4 + dorestart + +.Frameset_56: + frame BATTLEANIMOAMSET_69, 8 + endanim + +.Frameset_57: + frame BATTLEANIMOAMSET_69, 32 + frame BATTLEANIMOAMSET_6A, 4 + frame BATTLEANIMOAMSET_6B, 4 + frame BATTLEANIMOAMSET_6D, 4 + frame BATTLEANIMOAMSET_6C, 4 + endanim + +.Frameset_58: + frame BATTLEANIMOAMSET_6C, 8 + frame BATTLEANIMOAMSET_6D, 8 + dorestart + +.Frameset_18: + frame BATTLEANIMOAMSET_18, 4 + frame BATTLEANIMOAMSET_19, 4 + frame BATTLEANIMOAMSET_1A, 4 + delanim + +.Frameset_19: + frame BATTLEANIMOAMSET_1B, 8 + endanim + +.Frameset_1a: + frame BATTLEANIMOAMSET_0F, 8 + endanim + +.Frameset_1b: + frame BATTLEANIMOAMSET_1C, 8 + endanim + +.Frameset_1c: + frame BATTLEANIMOAMSET_0A, 8 + delanim + +.Frameset_1d: + frame BATTLEANIMOAMSET_1D, 8 + endanim + +.Frameset_1e: + frame BATTLEANIMOAMSET_17, 8 + endanim + +.Frameset_1f: + frame BATTLEANIMOAMSET_0F, 3 + frame BATTLEANIMOAMSET_10, 3 + frame BATTLEANIMOAMSET_1E, 3 + endanim + +.Frameset_20: + frame BATTLEANIMOAMSET_1F, 16 + frame BATTLEANIMOAMSET_20, 3 + delanim + +.Frameset_21: + frame BATTLEANIMOAMSET_20, 8 + endanim + +.Frameset_22: + frame BATTLEANIMOAMSET_20, 8 + frame BATTLEANIMOAMSET_21, 8 + frame BATTLEANIMOAMSET_1B, 8 + frame BATTLEANIMOAMSET_21, 8 + dorestart + +.Frameset_23: + frame BATTLEANIMOAMSET_22, 8 + endanim + +.Frameset_24: + frame BATTLEANIMOAMSET_1B, 8 + endanim + +.Frameset_25: + frame BATTLEANIMOAMSET_23, 8 + endanim + +.Frameset_26: + frame BATTLEANIMOAMSET_24, 8 + endanim + +.Frameset_27: + frame BATTLEANIMOAMSET_25, 8 + endanim + +.Frameset_28: + frame BATTLEANIMOAMSET_26, 8 + frame BATTLEANIMOAMSET_27, 8 + endanim + +.Frameset_29: + frame BATTLEANIMOAMSET_28, 8 + frame BATTLEANIMOAMSET_29, 8 + delanim + +.Frameset_2a: + frame BATTLEANIMOAMSET_2A, 1 + frame BATTLEANIMOAMSET_2B, 1 + frame BATTLEANIMOAMSET_2C, 1 + frame BATTLEANIMOAMSET_2D, 1 + frame BATTLEANIMOAMSET_2E, 1 + frame BATTLEANIMOAMSET_2D, 1 + frame BATTLEANIMOAMSET_2C, 1 + frame BATTLEANIMOAMSET_2B, 1 + frame BATTLEANIMOAMSET_2A, 1 + delanim + +.Frameset_2b: + frame BATTLEANIMOAMSET_14, 1 + frame BATTLEANIMOAMSET_15, 1 + dorestart + +.Frameset_2c: + frame BATTLEANIMOAMSET_2F, 4 + frame BATTLEANIMOAMSET_30, 40 + delanim + +.Frameset_2d: + frame BATTLEANIMOAMSET_31, 8 + endanim + +.Frameset_2e: + frame BATTLEANIMOAMSET_32, 32 + frame BATTLEANIMOAMSET_33, 32 + frame BATTLEANIMOAMSET_34, 32 + frame BATTLEANIMOAMSET_35, 32 ; fallthrough +.Frameset_2f: + dowait 2 + frame BATTLEANIMOAMSET_35, 4 + dowait 2 + frame BATTLEANIMOAMSET_35, 4 + dowait 2 + frame BATTLEANIMOAMSET_35, 4 + dowait 2 + frame BATTLEANIMOAMSET_35, 4 + delanim + +.Frameset_30: + frame BATTLEANIMOAMSET_14, 4 + frame BATTLEANIMOAMSET_15, 4 + dorestart + +.Frameset_31: + frame BATTLEANIMOAMSET_36, 2 + frame BATTLEANIMOAMSET_37, 2 + frame BATTLEANIMOAMSET_38, 2 + frame BATTLEANIMOAMSET_39, 32 + delanim + +.Frameset_32: + frame BATTLEANIMOAMSET_3A, 2 + frame BATTLEANIMOAMSET_3B, 2 + frame BATTLEANIMOAMSET_3C, 2 + frame BATTLEANIMOAMSET_3D, 32 + delanim + +.Frameset_33: + frame BATTLEANIMOAMSET_3A, 2, OAM_X_FLIP + frame BATTLEANIMOAMSET_3B, 2, OAM_X_FLIP + frame BATTLEANIMOAMSET_3C, 2, OAM_X_FLIP + frame BATTLEANIMOAMSET_3D, 32, OAM_X_FLIP + delanim + +.Frameset_34: + frame BATTLEANIMOAMSET_3E, 8 + frame BATTLEANIMOAMSET_3F, 8 + frame BATTLEANIMOAMSET_40, 8 + endanim + +.Frameset_35: + frame BATTLEANIMOAMSET_40, 2 + dowait 2 + frame BATTLEANIMOAMSET_40, 2 + dowait 2 + frame BATTLEANIMOAMSET_41, 2 + dowait 2 + frame BATTLEANIMOAMSET_41, 2 + dowait 2 + dorestart + +.Frameset_36: + frame BATTLEANIMOAMSET_42, 2 + frame BATTLEANIMOAMSET_43, 2 + frame BATTLEANIMOAMSET_44, 2 + frame BATTLEANIMOAMSET_45, 2 + dorestart + +.Frameset_37: + frame BATTLEANIMOAMSET_19, 2 + dowait 2 + dorestart + +.Frameset_38: + frame BATTLEANIMOAMSET_46, 4 + frame BATTLEANIMOAMSET_47, 4 + dorestart + +.Frameset_39: + frame BATTLEANIMOAMSET_18, 2 + dowait 2 + dorestart + +.Frameset_3a: + frame BATTLEANIMOAMSET_48, 8 + endanim + +.Frameset_3b: + frame BATTLEANIMOAMSET_48, 8, OAM_X_FLIP + endanim + +.Frameset_3c: + frame BATTLEANIMOAMSET_49, 8 + endanim + +.Frameset_3d: + frame BATTLEANIMOAMSET_4A, 8 + endanim + +.Frameset_43: + frame BATTLEANIMOAMSET_20, 16 + frame BATTLEANIMOAMSET_1F, 16 + frame BATTLEANIMOAMSET_1E, 16 + endanim + +.Frameset_4c: + frame BATTLEANIMOAMSET_20, 8 + frame BATTLEANIMOAMSET_1F, 8 + frame BATTLEANIMOAMSET_1E, 8 + endanim + +.Frameset_44: + dowait 20 + frame BATTLEANIMOAMSET_55, 40 + frame BATTLEANIMOAMSET_54, 40 + frame BATTLEANIMOAMSET_53, 20 + dowait 4 + frame BATTLEANIMOAMSET_53, 4 + dowait 4 + frame BATTLEANIMOAMSET_53, 4 + dowait 4 + frame BATTLEANIMOAMSET_53, 4 + delanim + +.Frameset_7e: + frame BATTLEANIMOAMSET_1E, 8 + frame BATTLEANIMOAMSET_1F, 8 + frame BATTLEANIMOAMSET_20, 8 + delanim + +.Frameset_45: + dowait 0 + frame BATTLEANIMOAMSET_14, 0 + frame BATTLEANIMOAMSET_15, 0 + frame BATTLEANIMOAMSET_14, 0, OAM_X_FLIP + dowait 0 + frame BATTLEANIMOAMSET_16, 0, OAM_X_FLIP + frame BATTLEANIMOAMSET_15, 0 + frame BATTLEANIMOAMSET_16, 0 + dorestart + +.Frameset_46: + frame BATTLEANIMOAMSET_56, 2 + frame BATTLEANIMOAMSET_57, 4 + delanim + +.Frameset_47: + frame BATTLEANIMOAMSET_56, 2, OAM_X_FLIP, OAM_Y_FLIP + frame BATTLEANIMOAMSET_57, 4, OAM_X_FLIP, OAM_Y_FLIP + delanim + +.Frameset_48: + frame BATTLEANIMOAMSET_56, 1 + frame BATTLEANIMOAMSET_57, 1 + frame BATTLEANIMOAMSET_58, 1 + frame BATTLEANIMOAMSET_57, 1, OAM_X_FLIP, OAM_Y_FLIP + frame BATTLEANIMOAMSET_58, 1, OAM_X_FLIP, OAM_Y_FLIP + frame BATTLEANIMOAMSET_57, 2 + delanim + +.Frameset_49: + frame BATTLEANIMOAMSET_56, 1, OAM_X_FLIP, OAM_Y_FLIP + frame BATTLEANIMOAMSET_57, 1, OAM_X_FLIP, OAM_Y_FLIP + frame BATTLEANIMOAMSET_58, 1, OAM_X_FLIP, OAM_Y_FLIP + frame BATTLEANIMOAMSET_57, 1 + frame BATTLEANIMOAMSET_58, 1 + frame BATTLEANIMOAMSET_57, 2, OAM_X_FLIP, OAM_Y_FLIP + delanim + +.Frameset_4a: + frame BATTLEANIMOAMSET_57, 1, OAM_X_FLIP, OAM_Y_FLIP + frame BATTLEANIMOAMSET_58, 1, OAM_X_FLIP, OAM_Y_FLIP + frame BATTLEANIMOAMSET_57, 1 + frame BATTLEANIMOAMSET_58, 1 + dorestart + +.Frameset_4b: + frame BATTLEANIMOAMSET_59, 1 + frame BATTLEANIMOAMSET_5A, 1 + frame BATTLEANIMOAMSET_5B, 1 + frame BATTLEANIMOAMSET_5C, 2 + delanim + +.Frameset_4d: + frame BATTLEANIMOAMSET_0A, 10 + frame BATTLEANIMOAMSET_0B, 3, OAM_X_FLIP + frame BATTLEANIMOAMSET_5D, 3, OAM_X_FLIP + frame BATTLEANIMOAMSET_0B, 3, OAM_X_FLIP, OAM_Y_FLIP + frame BATTLEANIMOAMSET_0A, 2, OAM_Y_FLIP + frame BATTLEANIMOAMSET_0B, 1, OAM_Y_FLIP + frame BATTLEANIMOAMSET_5D, 1 + frame BATTLEANIMOAMSET_0B, 1 + dorestart + +.Frameset_4e: + frame BATTLEANIMOAMSET_0A, 3 + frame BATTLEANIMOAMSET_0B, 7, OAM_X_FLIP + frame BATTLEANIMOAMSET_0A, 7 + frame BATTLEANIMOAMSET_0B, 7 + frame BATTLEANIMOAMSET_0A, 3 + dorestart + +.Frameset_4f: + frame BATTLEANIMOAMSET_5E, 32 + frame BATTLEANIMOAMSET_5E, 32 + delanim + +.Frameset_50: + frame BATTLEANIMOAMSET_5F, 32 + frame BATTLEANIMOAMSET_5F, 32 + delanim + +.Frameset_51: + frame BATTLEANIMOAMSET_60, 8 + endanim + +.Frameset_52: + frame BATTLEANIMOAMSET_61, 1 + frame BATTLEANIMOAMSET_62, 1 + frame BATTLEANIMOAMSET_63, 1 + endanim + +.Frameset_53: + frame BATTLEANIMOAMSET_63, 7 + frame BATTLEANIMOAMSET_64, 7 + dorestart + +.Frameset_54: + frame BATTLEANIMOAMSET_65, 1 + frame BATTLEANIMOAMSET_66, 1 + frame BATTLEANIMOAMSET_67, 1 + endanim + +.Frameset_55: + frame BATTLEANIMOAMSET_67, 7 + frame BATTLEANIMOAMSET_68, 7 + dorestart + +.Frameset_59: + frame BATTLEANIMOAMSET_6E, 8 + endanim + +.Frameset_5a: + frame BATTLEANIMOAMSET_6F, 8 + endanim + +.Frameset_5b: + frame BATTLEANIMOAMSET_6E, 8, OAM_Y_FLIP + endanim + +.Frameset_5c: + frame BATTLEANIMOAMSET_18, 4 + frame BATTLEANIMOAMSET_70, 4 + frame BATTLEANIMOAMSET_71, 4 + frame BATTLEANIMOAMSET_72, 4 + frame BATTLEANIMOAMSET_73, 4 + delanim + +.Frameset_5d: + frame BATTLEANIMOAMSET_74, 4 + frame BATTLEANIMOAMSET_75, 4 + dorestart + +.Frameset_5e: + frame BATTLEANIMOAMSET_14, 8 + endanim + +.Frameset_7a: + frame BATTLEANIMOAMSET_74, 3 + frame BATTLEANIMOAMSET_14, 3 + frame BATTLEANIMOAMSET_15, 3 + frame BATTLEANIMOAMSET_14, 3 + frame BATTLEANIMOAMSET_15, 3 + delanim + +.Frameset_af: + frame BATTLEANIMOAMSET_14, 0 + frame BATTLEANIMOAMSET_15, 0 + frame BATTLEANIMOAMSET_14, 0 + frame BATTLEANIMOAMSET_15, 0 + frame BATTLEANIMOAMSET_74, 12 + delanim + +.Frameset_5f: + frame BATTLEANIMOAMSET_76, 8 + endanim + +.Frameset_60: + frame BATTLEANIMOAMSET_77, 1 + frame BATTLEANIMOAMSET_78, 1 + frame BATTLEANIMOAMSET_79, 1 + frame BATTLEANIMOAMSET_7A, 1 + frame BATTLEANIMOAMSET_7B, 1 + frame BATTLEANIMOAMSET_7C, 1 + frame BATTLEANIMOAMSET_7D, 1 + frame BATTLEANIMOAMSET_7C, 1, OAM_X_FLIP, OAM_Y_FLIP + frame BATTLEANIMOAMSET_7B, 1, OAM_X_FLIP, OAM_Y_FLIP + frame BATTLEANIMOAMSET_7A, 1, OAM_X_FLIP, OAM_Y_FLIP + frame BATTLEANIMOAMSET_79, 1, OAM_X_FLIP, OAM_Y_FLIP + frame BATTLEANIMOAMSET_78, 1, OAM_X_FLIP, OAM_Y_FLIP + frame BATTLEANIMOAMSET_77, 1, OAM_X_FLIP, OAM_Y_FLIP + delanim + +.Frameset_61: + frame BATTLEANIMOAMSET_1B, 4 + frame BATTLEANIMOAMSET_7E, 4 + dorestart + +.Frameset_62: + frame BATTLEANIMOAMSET_1B, 4, OAM_X_FLIP + frame BATTLEANIMOAMSET_7E, 4, OAM_X_FLIP + dorestart + +.Frameset_63: + frame BATTLEANIMOAMSET_7F, 8 + endanim + +.Frameset_64: + frame BATTLEANIMOAMSET_25, 8 + endanim + +.Frameset_65: + frame BATTLEANIMOAMSET_80, 8 + endanim + +.Frameset_66: + frame BATTLEANIMOAMSET_83, 7 + frame BATTLEANIMOAMSET_82, 7 + frame BATTLEANIMOAMSET_81, 7 + frame BATTLEANIMOAMSET_82, 7 + frame BATTLEANIMOAMSET_83, 7 + frame BATTLEANIMOAMSET_82, 7 + frame BATTLEANIMOAMSET_81, 7 + delanim + +.Frameset_67: + frame BATTLEANIMOAMSET_1B, 16 + delanim + +.Frameset_68: + dowait 15 + frame BATTLEANIMOAMSET_84, 15 + frame BATTLEANIMOAMSET_85, 15 + frame BATTLEANIMOAMSET_29, 15 + frame BATTLEANIMOAMSET_28, 15 + frame BATTLEANIMOAMSET_86, 32 + delanim + +.Frameset_69: + frame BATTLEANIMOAMSET_1B, 3 + frame BATTLEANIMOAMSET_87, 3 + frame BATTLEANIMOAMSET_88, 3 + frame BATTLEANIMOAMSET_89, 3 + delanim + +.Frameset_6a: + frame BATTLEANIMOAMSET_8A, 2 + frame BATTLEANIMOAMSET_8B, 2 + frame BATTLEANIMOAMSET_8C, 2 + frame BATTLEANIMOAMSET_8D, 2 + delanim + +.Frameset_6b: + frame BATTLEANIMOAMSET_61, 2 + frame BATTLEANIMOAMSET_62, 2 + frame BATTLEANIMOAMSET_63, 2 + endanim + +.Frameset_6c: + frame BATTLEANIMOAMSET_65, 2 + frame BATTLEANIMOAMSET_66, 2 + frame BATTLEANIMOAMSET_67, 2 + endanim + +.Frameset_6d: + frame BATTLEANIMOAMSET_8E, 8 + endanim + +.Frameset_6e: + frame BATTLEANIMOAMSET_8E, 8, OAM_X_FLIP + endanim + +.Frameset_6f: + frame BATTLEANIMOAMSET_8F, 16 + frame BATTLEANIMOAMSET_90, 16 + dorestart + +.Frameset_70: + frame BATTLEANIMOAMSET_91, 16 + frame BATTLEANIMOAMSET_92, 16 + dorestart + +.Frameset_71: + frame BATTLEANIMOAMSET_93, 8 + endanim + +.Frameset_72: + frame BATTLEANIMOAMSET_1E, 8 + endanim + +.Frameset_73: + frame BATTLEANIMOAMSET_1B, 7 + frame BATTLEANIMOAMSET_94, 7 + dorestart + +.Frameset_74: + frame BATTLEANIMOAMSET_95, 8 + endanim + +.Frameset_75: + frame BATTLEANIMOAMSET_96, 8 + endanim + +.Frameset_76: + frame BATTLEANIMOAMSET_95, 8 + endanim + +.Frameset_77: + frame BATTLEANIMOAMSET_97, 1 + frame BATTLEANIMOAMSET_97, 1, OAM_X_FLIP + dorestart + +.Frameset_78: + frame BATTLEANIMOAMSET_98, 8 + endanim + +.Frameset_79: + frame BATTLEANIMOAMSET_99, 32 + frame BATTLEANIMOAMSET_99, 32 + frame BATTLEANIMOAMSET_99, 32 + frame BATTLEANIMOAMSET_99, 32 + frame BATTLEANIMOAMSET_99, 32 + frame BATTLEANIMOAMSET_9A, 8 + endanim + +.Frameset_7b: + frame BATTLEANIMOAMSET_9B, 8 + endanim + +.Frameset_7c: + frame BATTLEANIMOAMSET_9C, 2 + frame BATTLEANIMOAMSET_9D, 2 + frame BATTLEANIMOAMSET_9E, 8 + dowait 2 + frame BATTLEANIMOAMSET_9E, 2 + dowait 2 + frame BATTLEANIMOAMSET_9E, 2 + dowait 2 + frame BATTLEANIMOAMSET_9E, 2 + delanim + +.Frameset_7d: + frame BATTLEANIMOAMSET_9F, 8 + endanim + +.Frameset_7f: + frame BATTLEANIMOAMSET_0F, 8 + endanim + +.Frameset_80: + frame BATTLEANIMOAMSET_6B, 24 + delanim + +.Frameset_81: + frame BATTLEANIMOAMSET_A0, 1 ; fallthrough +.Frameset_82: + frame BATTLEANIMOAMSET_A1, 1 ; fallthrough +.Frameset_83: + frame BATTLEANIMOAMSET_A2, 1 + delanim + +.Frameset_84: + frame BATTLEANIMOAMSET_A3, 8 + endanim + +.Frameset_85: + frame BATTLEANIMOAMSET_A4, 4 + frame BATTLEANIMOAMSET_A5, 4 + frame BATTLEANIMOAMSET_A6, 4 + frame BATTLEANIMOAMSET_A7, 4 + frame BATTLEANIMOAMSET_A6, 4, OAM_X_FLIP + frame BATTLEANIMOAMSET_A5, 4, OAM_X_FLIP + dorestart + +.Frameset_86: + frame BATTLEANIMOAMSET_A8, 4 + frame BATTLEANIMOAMSET_A9, 4 + frame BATTLEANIMOAMSET_AA, 4 + frame BATTLEANIMOAMSET_AB, 4 + frame BATTLEANIMOAMSET_AA, 4, OAM_X_FLIP + frame BATTLEANIMOAMSET_A9, 4, OAM_X_FLIP + dorestart + +.Frameset_87: + frame BATTLEANIMOAMSET_1B, 8 + endanim + +.Frameset_88: + frame BATTLEANIMOAMSET_AC, 8 + endanim + +.Frameset_89: + frame BATTLEANIMOAMSET_AD, 8 + endanim + +.Frameset_8a: + frame BATTLEANIMOAMSET_AE, 8 + endanim + +.Frameset_8b: + frame BATTLEANIMOAMSET_AF, 8 + endanim + +.Frameset_8c: + frame BATTLEANIMOAMSET_B0, 32 + delanim + +.Frameset_8d: + frame BATTLEANIMOAMSET_B1, 7 + frame BATTLEANIMOAMSET_B1, 7, OAM_X_FLIP + dorestart + +.Frameset_8e: + frame BATTLEANIMOAMSET_B2, 8 + endanim + +.Frameset_8f: + frame BATTLEANIMOAMSET_B3, 8 + endanim + +.Frameset_90: + frame BATTLEANIMOAMSET_B3, 8, OAM_X_FLIP + endanim + +.Frameset_91: + frame BATTLEANIMOAMSET_B3, 8, OAM_Y_FLIP + endanim + +.Frameset_92: + frame BATTLEANIMOAMSET_B3, 8, OAM_X_FLIP, OAM_Y_FLIP + endanim + +.Frameset_93: + frame BATTLEANIMOAMSET_B5, 8 + endanim + +.Frameset_94: + frame BATTLEANIMOAMSET_B5, 8, OAM_X_FLIP + endanim + +.Frameset_95: + frame BATTLEANIMOAMSET_B5, 8, OAM_Y_FLIP + endanim + +.Frameset_96: + frame BATTLEANIMOAMSET_B5, 8, OAM_X_FLIP, OAM_Y_FLIP + endanim + +.Frameset_97: + frame BATTLEANIMOAMSET_B4, 8 + endanim + +.Frameset_98: + frame BATTLEANIMOAMSET_6B, 8 + endanim + +.Frameset_99: + frame BATTLEANIMOAMSET_B6, 8 + endanim + +.Frameset_9a: + frame BATTLEANIMOAMSET_B7, 32 + endanim + +.Frameset_9b: + frame BATTLEANIMOAMSET_1B, 32 + endanim + +.Frameset_9c: + frame BATTLEANIMOAMSET_B8, 32 + endanim + +.Frameset_9d: + frame BATTLEANIMOAMSET_B8, 32, OAM_X_FLIP + endanim + +.Frameset_9e: + frame BATTLEANIMOAMSET_B9, 32 + endanim + +.Frameset_9f: + frame BATTLEANIMOAMSET_BA, 32 + endanim + +.Frameset_a0: + frame BATTLEANIMOAMSET_BB, 32, OAM_X_FLIP + endanim + +.Frameset_a1: + frame BATTLEANIMOAMSET_BB, 32 + endanim + +.Frameset_a2: + frame BATTLEANIMOAMSET_BC, 32 + endanim + +.Frameset_a3: + frame BATTLEANIMOAMSET_BD, 11 + frame BATTLEANIMOAMSET_BE, 11 + frame BATTLEANIMOAMSET_1B, 11 + delanim + +.Frameset_a4: + frame BATTLEANIMOAMSET_BF, 4 + frame BATTLEANIMOAMSET_C0, 4 + frame BATTLEANIMOAMSET_C1, 4 + delanim + +.Frameset_a5: + frame BATTLEANIMOAMSET_C2, 32 + frame BATTLEANIMOAMSET_C2, 32 + delanim + +.Frameset_a6: + frame BATTLEANIMOAMSET_4B, 2 + frame BATTLEANIMOAMSET_4C, 2 + frame BATTLEANIMOAMSET_4D, 32 + frame BATTLEANIMOAMSET_4D, 32 + frame BATTLEANIMOAMSET_4D, 32 + frame BATTLEANIMOAMSET_4F, 1 + frame BATTLEANIMOAMSET_50, 1 + frame BATTLEANIMOAMSET_51, 1 + frame BATTLEANIMOAMSET_52, 2 + dowait 2 + frame BATTLEANIMOAMSET_52, 2 + dowait 2 + frame BATTLEANIMOAMSET_52, 2 + dowait 2 + frame BATTLEANIMOAMSET_52, 2 + delanim + +.Frameset_a7: + frame BATTLEANIMOAMSET_4B, 2, OAM_X_FLIP, OAM_Y_FLIP + frame BATTLEANIMOAMSET_4C, 2, OAM_X_FLIP, OAM_Y_FLIP + frame BATTLEANIMOAMSET_4D, 32, OAM_X_FLIP, OAM_Y_FLIP + frame BATTLEANIMOAMSET_4D, 32, OAM_X_FLIP, OAM_Y_FLIP + frame BATTLEANIMOAMSET_4D, 32, OAM_X_FLIP, OAM_Y_FLIP + frame BATTLEANIMOAMSET_4F, 1, OAM_X_FLIP, OAM_Y_FLIP + frame BATTLEANIMOAMSET_50, 1, OAM_X_FLIP, OAM_Y_FLIP + frame BATTLEANIMOAMSET_51, 1, OAM_X_FLIP, OAM_Y_FLIP + frame BATTLEANIMOAMSET_52, 2, OAM_X_FLIP, OAM_Y_FLIP + dowait 2 + frame BATTLEANIMOAMSET_52, 2, OAM_X_FLIP, OAM_Y_FLIP + dowait 2 + frame BATTLEANIMOAMSET_52, 2, OAM_X_FLIP, OAM_Y_FLIP + dowait 2 + frame BATTLEANIMOAMSET_52, 2, OAM_X_FLIP, OAM_Y_FLIP + delanim + +.Frameset_a8: + frame BATTLEANIMOAMSET_C3, 1 + frame BATTLEANIMOAMSET_C3, 1, OAM_X_FLIP, OAM_Y_FLIP + dorestart + +.Frameset_a9: + frame BATTLEANIMOAMSET_C4, 32 + endanim + +.Frameset_aa: + frame BATTLEANIMOAMSET_C5, 4 + frame BATTLEANIMOAMSET_C6, 4 + frame BATTLEANIMOAMSET_C7, 4 + delanim + +.Frameset_ab: + frame BATTLEANIMOAMSET_C8, 1 + frame BATTLEANIMOAMSET_C8, 1, OAM_X_FLIP + dorestart + +.Frameset_ac: + frame BATTLEANIMOAMSET_C9, 3 + frame BATTLEANIMOAMSET_05, 3 + delanim + +.Frameset_ad: + frame BATTLEANIMOAMSET_CA, 32 + frame BATTLEANIMOAMSET_CB, 3 + frame BATTLEANIMOAMSET_CA, 3 + frame BATTLEANIMOAMSET_CB, 3 + dorestart + +.Frameset_ae: + frame BATTLEANIMOAMSET_03, 32, OAM_Y_FLIP + endanim + +.Frameset_b0: + frame BATTLEANIMOAMSET_CC, 32 + endanim + +.Frameset_b1: + frame BATTLEANIMOAMSET_7F, 2 + frame BATTLEANIMOAMSET_25, 2 + frame BATTLEANIMOAMSET_80, 2 + frame BATTLEANIMOAMSET_25, 2 + dorestart + +.Frameset_b2: + frame BATTLEANIMOAMSET_CD, 4 + frame BATTLEANIMOAMSET_CE, 4 + frame BATTLEANIMOAMSET_CD, 4, OAM_X_FLIP, OAM_Y_FLIP + frame BATTLEANIMOAMSET_CE, 4, OAM_X_FLIP, OAM_Y_FLIP + dorestart + +.Frameset_b3: + frame BATTLEANIMOAMSET_CF, 4 + frame BATTLEANIMOAMSET_D0, 4 + frame BATTLEANIMOAMSET_D1, 4 + frame BATTLEANIMOAMSET_D2, 4 + delanim + +.Frameset_b4: + frame BATTLEANIMOAMSET_D3, 32 + endanim + +.Frameset_b5: + frame BATTLEANIMOAMSET_D4, 8 + endanim + +.Frameset_b6: + frame BATTLEANIMOAMSET_D5, 8 + endanim + +.Frameset_b7: + frame BATTLEANIMOAMSET_D6, 8 + endanim + +.Frameset_b8: + frame BATTLEANIMOAMSET_D7, 8 + endanim diff --git a/data/battle_anims/oam.asm b/data/battle_anims/oam.asm new file mode 100755 index 00000000..4bf4a331 --- /dev/null +++ b/data/battle_anims/oam.asm @@ -0,0 +1,1085 @@ +BattleAnimOAMData: +; entries correspond to BATTLEANIMOAMSET_* constants + ; vtile offset, data length, data pointer + dbbw $00, 16, .OAMData_00 ; BATTLEANIMOAMSET_00 + dbbw $04, 9, .OAMData_01 ; BATTLEANIMOAMSET_01 + dbbw $08, 4, .OAMData_02 ; BATTLEANIMOAMSET_02 + dbbw $09, 4, .OAMData_03 ; BATTLEANIMOAMSET_03 + dbbw $0d, 4, .OAMData_04 ; BATTLEANIMOAMSET_04 + dbbw $0f, 4, .OAMData_03 ; BATTLEANIMOAMSET_05 + dbbw $13, 4, .OAMData_04 ; BATTLEANIMOAMSET_06 + dbbw $04, 16, .OAMData_00 ; BATTLEANIMOAMSET_07 + dbbw $08, 16, .OAMData_00 ; BATTLEANIMOAMSET_08 + dbbw $08, 16, .OAMData_09 ; BATTLEANIMOAMSET_09 + dbbw $00, 4, .OAMData_04 ; BATTLEANIMOAMSET_0A + dbbw $02, 4, .OAMData_03 ; BATTLEANIMOAMSET_0B + dbbw $06, 2, .OAMData_0c ; BATTLEANIMOAMSET_0C + dbbw $07, 2, .OAMData_0c ; BATTLEANIMOAMSET_0D + dbbw $02, 4, .OAMData_04 ; BATTLEANIMOAMSET_0E + dbbw $04, 1, .OAMData_0f ; BATTLEANIMOAMSET_0F + dbbw $05, 1, .OAMData_0f ; BATTLEANIMOAMSET_10 + dbbw $00, 2, .OAMData_11 ; BATTLEANIMOAMSET_11 + dbbw $02, 2, .OAMData_11 ; BATTLEANIMOAMSET_12 + dbbw $00, 4, .OAMData_13 ; BATTLEANIMOAMSET_13 + dbbw $00, 1, .OAMData_0f ; BATTLEANIMOAMSET_14 + dbbw $01, 1, .OAMData_0f ; BATTLEANIMOAMSET_15 + dbbw $02, 1, .OAMData_0f ; BATTLEANIMOAMSET_16 + dbbw $03, 1, .OAMData_0f ; BATTLEANIMOAMSET_17 + dbbw $00, 4, .OAMData_02 ; BATTLEANIMOAMSET_18 + dbbw $01, 16, .OAMData_00 ; BATTLEANIMOAMSET_19 + dbbw $05, 16, .OAMData_00 ; BATTLEANIMOAMSET_1A + dbbw $00, 4, .OAMData_03 ; BATTLEANIMOAMSET_1B + dbbw $05, 12, .OAMData_1c ; BATTLEANIMOAMSET_1C + dbbw $02, 4, .OAMData_02 ; BATTLEANIMOAMSET_1D + dbbw $06, 1, .OAMData_0f ; BATTLEANIMOAMSET_1E + dbbw $07, 1, .OAMData_0f ; BATTLEANIMOAMSET_1F + dbbw $08, 1, .OAMData_0f ; BATTLEANIMOAMSET_20 + dbbw $04, 4, .OAMData_03 ; BATTLEANIMOAMSET_21 + dbbw $09, 22, .OAMData_22 ; BATTLEANIMOAMSET_22 + dbbw $04, 2, .OAMData_11 ; BATTLEANIMOAMSET_23 + dbbw $06, 2, .OAMData_11 ; BATTLEANIMOAMSET_24 + dbbw $0c, 1, .OAMData_0f ; BATTLEANIMOAMSET_25 + dbbw $0a, 1, .OAMData_0f ; BATTLEANIMOAMSET_26 + dbbw $0b, 4, .OAMData_02 ; BATTLEANIMOAMSET_27 + dbbw $08, 4, .OAMData_04 ; BATTLEANIMOAMSET_28 + dbbw $06, 4, .OAMData_04 ; BATTLEANIMOAMSET_29 + dbbw $00, 5, .OAMData_2a ; BATTLEANIMOAMSET_2A + dbbw $03, 6, .OAMData_2b ; BATTLEANIMOAMSET_2B + dbbw $00, 7, .OAMData_2c ; BATTLEANIMOAMSET_2C + dbbw $03, 8, .OAMData_2d ; BATTLEANIMOAMSET_2D + dbbw $00, 9, .OAMData_2e ; BATTLEANIMOAMSET_2E + dbbw $00, 4, .OAMData_2f ; BATTLEANIMOAMSET_2F + dbbw $02, 4, .OAMData_30 ; BATTLEANIMOAMSET_30 + dbbw $04, 6, .OAMData_31 ; BATTLEANIMOAMSET_31 + dbbw $00, 2, .OAMData_32 ; BATTLEANIMOAMSET_32 + dbbw $00, 7, .OAMData_33 ; BATTLEANIMOAMSET_33 + dbbw $00, 14, .OAMData_32 ; BATTLEANIMOAMSET_34 + dbbw $00, 21, .OAMData_33 ; BATTLEANIMOAMSET_35 + dbbw $00, 2, .OAMData_36 ; BATTLEANIMOAMSET_36 + dbbw $00, 6, .OAMData_36 ; BATTLEANIMOAMSET_37 + dbbw $00, 10, .OAMData_36 ; BATTLEANIMOAMSET_38 + dbbw $00, 14, .OAMData_36 ; BATTLEANIMOAMSET_39 + dbbw $00, 2, .OAMData_3a ; BATTLEANIMOAMSET_3A + dbbw $00, 6, .OAMData_3a ; BATTLEANIMOAMSET_3B + dbbw $00, 10, .OAMData_3a ; BATTLEANIMOAMSET_3C + dbbw $00, 14, .OAMData_3a ; BATTLEANIMOAMSET_3D + dbbw $00, 4, .OAMData_3e ; BATTLEANIMOAMSET_3E + dbbw $00, 16, .OAMData_3e ; BATTLEANIMOAMSET_3F + dbbw $00, 26, .OAMData_3e ; BATTLEANIMOAMSET_40 + dbbw $00, 26, .OAMData_41 ; BATTLEANIMOAMSET_41 + dbbw $0e, 4, .OAMData_42 ; BATTLEANIMOAMSET_42 + dbbw $0e, 8, .OAMData_42 ; BATTLEANIMOAMSET_43 + dbbw $0e, 4, .OAMData_44 ; BATTLEANIMOAMSET_44 + dbbw $0e, 8, .OAMData_44 ; BATTLEANIMOAMSET_45 + dbbw $0e, 4, .OAMData_46 ; BATTLEANIMOAMSET_46 + dbbw $0e, 4, .OAMData_47 ; BATTLEANIMOAMSET_47 + dbbw $00, 6, .OAMData_48 ; BATTLEANIMOAMSET_48 + dbbw $03, 4, .OAMData_49 ; BATTLEANIMOAMSET_49 + dbbw $03, 2, .OAMData_4a ; BATTLEANIMOAMSET_4A + dbbw $01, 5, .OAMData_0f ; BATTLEANIMOAMSET_4B + dbbw $01, 6, .OAMData_4c ; BATTLEANIMOAMSET_4C + dbbw $01, 7, .OAMData_4d ; BATTLEANIMOAMSET_4D + dbbw $01, 3, .OAMData_4d ; BATTLEANIMOAMSET_4E + dbbw $01, 8, .OAMData_4f ; BATTLEANIMOAMSET_4F + dbbw $01, 9, .OAMData_50 ; BATTLEANIMOAMSET_50 + dbbw $01, 10, .OAMData_51 ; BATTLEANIMOAMSET_51 + dbbw $01, 6, .OAMData_51 ; BATTLEANIMOAMSET_52 + dbbw $00, 9, .OAMData_01 ; BATTLEANIMOAMSET_53 + dbbw $04, 4, .OAMData_02 ; BATTLEANIMOAMSET_54 + dbbw $05, 4, .OAMData_02 ; BATTLEANIMOAMSET_55 + dbbw $00, 2, .OAMData_56 ; BATTLEANIMOAMSET_56 + dbbw $02, 2, .OAMData_56 ; BATTLEANIMOAMSET_57 + dbbw $04, 2, .OAMData_56 ; BATTLEANIMOAMSET_58 + dbbw $02, 4, .OAMData_59 ; BATTLEANIMOAMSET_59 + dbbw $02, 4, .OAMData_5a ; BATTLEANIMOAMSET_5A + dbbw $02, 2, .OAMData_0c ; BATTLEANIMOAMSET_5B + dbbw $04, 2, .OAMData_0c ; BATTLEANIMOAMSET_5C + dbbw $06, 4, .OAMData_5d ; BATTLEANIMOAMSET_5D + dbbw $08, 2, .OAMData_0c ; BATTLEANIMOAMSET_5E + dbbw $09, 2, .OAMData_0c ; BATTLEANIMOAMSET_5F + dbbw $05, 2, .OAMData_60 ; BATTLEANIMOAMSET_60 + dbbw $00, 2, .OAMData_61 ; BATTLEANIMOAMSET_61 + dbbw $00, 5, .OAMData_61 ; BATTLEANIMOAMSET_62 + dbbw $00, 9, .OAMData_61 ; BATTLEANIMOAMSET_63 + dbbw $09, 9, .OAMData_61 ; BATTLEANIMOAMSET_64 + dbbw $00, 4, .OAMData_65 ; BATTLEANIMOAMSET_65 + dbbw $00, 7, .OAMData_65 ; BATTLEANIMOAMSET_66 + dbbw $00, 9, .OAMData_65 ; BATTLEANIMOAMSET_67 + dbbw $09, 9, .OAMData_65 ; BATTLEANIMOAMSET_68 + dbbw $04, 1, .OAMData_69 ; BATTLEANIMOAMSET_69 + dbbw $05, 2, .OAMData_6a ; BATTLEANIMOAMSET_6A + dbbw $06, 4, .OAMData_03 ; BATTLEANIMOAMSET_6B + dbbw $0a, 4, .OAMData_03 ; BATTLEANIMOAMSET_6C + dbbw $0e, 4, .OAMData_03 ; BATTLEANIMOAMSET_6D + dbbw $08, 5, .OAMData_6e ; BATTLEANIMOAMSET_6E + dbbw $0d, 3, .OAMData_6f ; BATTLEANIMOAMSET_6F + dbbw $01, 8, .OAMData_70 ; BATTLEANIMOAMSET_70 + dbbw $03, 8, .OAMData_70 ; BATTLEANIMOAMSET_71 + dbbw $05, 8, .OAMData_70 ; BATTLEANIMOAMSET_72 + dbbw $07, 8, .OAMData_70 ; BATTLEANIMOAMSET_73 + dbbw $06, 4, .OAMData_02 ; BATTLEANIMOAMSET_74 + dbbw $07, 4, .OAMData_02 ; BATTLEANIMOAMSET_75 + dbbw $0a, 2, .OAMData_76 ; BATTLEANIMOAMSET_76 + dbbw $00, 1, .OAMData_77 ; BATTLEANIMOAMSET_77 + dbbw $00, 3, .OAMData_78 ; BATTLEANIMOAMSET_78 + dbbw $00, 6, .OAMData_79 ; BATTLEANIMOAMSET_79 + dbbw $00, 9, .OAMData_7a ; BATTLEANIMOAMSET_7A + dbbw $00, 12, .OAMData_7b ; BATTLEANIMOAMSET_7B + dbbw $00, 14, .OAMData_7c ; BATTLEANIMOAMSET_7C + dbbw $00, 15, .OAMData_7d ; BATTLEANIMOAMSET_7D + dbbw $04, 4, .OAMData_03 ; BATTLEANIMOAMSET_7E + dbbw $08, 4, .OAMData_03 ; BATTLEANIMOAMSET_7F + dbbw $0d, 1, .OAMData_0f ; BATTLEANIMOAMSET_80 + dbbw $0e, 4, .OAMData_81 ; BATTLEANIMOAMSET_81 + dbbw $10, 1, .OAMData_0f ; BATTLEANIMOAMSET_82 + dbbw $11, 1, .OAMData_0f ; BATTLEANIMOAMSET_83 + dbbw $04, 2, .OAMData_6a ; BATTLEANIMOAMSET_84 + dbbw $05, 2, .OAMData_6a ; BATTLEANIMOAMSET_85 + dbbw $0a, 4, .OAMData_04 ; BATTLEANIMOAMSET_86 + dbbw $00, 8, .OAMData_87 ; BATTLEANIMOAMSET_87 + dbbw $00, 12, .OAMData_88 ; BATTLEANIMOAMSET_88 + dbbw $00, 16, .OAMData_87 ; BATTLEANIMOAMSET_89 + dbbw $09, 2, .OAMData_8a ; BATTLEANIMOAMSET_8A + dbbw $09, 4, .OAMData_8a ; BATTLEANIMOAMSET_8B + dbbw $09, 6, .OAMData_8a ; BATTLEANIMOAMSET_8C + dbbw $09, 8, .OAMData_8a ; BATTLEANIMOAMSET_8D + dbbw $12, 5, .OAMData_8e ; BATTLEANIMOAMSET_8E + dbbw $00, 4, .OAMData_8f ; BATTLEANIMOAMSET_8F + dbbw $04, 4, .OAMData_8f ; BATTLEANIMOAMSET_90 + dbbw $08, 4, .OAMData_8f ; BATTLEANIMOAMSET_91 + dbbw $0c, 4, .OAMData_8f ; BATTLEANIMOAMSET_92 + dbbw $00, 6, .OAMData_93 ; BATTLEANIMOAMSET_93 + dbbw $04, 4, .OAMData_03 ; BATTLEANIMOAMSET_94 + dbbw $0a, 4, .OAMData_04 ; BATTLEANIMOAMSET_95 + dbbw $15, 4, .OAMData_30 ; BATTLEANIMOAMSET_96 + dbbw $04, 4, .OAMData_30 ; BATTLEANIMOAMSET_97 + dbbw $0c, 4, .OAMData_04 ; BATTLEANIMOAMSET_98 + dbbw $0a, 4, .OAMData_99 ; BATTLEANIMOAMSET_99 + dbbw $0c, 4, .OAMData_03 ; BATTLEANIMOAMSET_9A + dbbw $00, 36, .OAMData_9b ; BATTLEANIMOAMSET_9B + dbbw $0d, 2, .OAMData_9c ; BATTLEANIMOAMSET_9C + dbbw $0d, 4, .OAMData_9c ; BATTLEANIMOAMSET_9D + dbbw $0d, 6, .OAMData_9c ; BATTLEANIMOAMSET_9E + dbbw $02, 8, .OAMData_9f ; BATTLEANIMOAMSET_9F + dbbw $08, 7, .OAMData_a0 ; BATTLEANIMOAMSET_A0 + dbbw $08, 5, .OAMData_a0 ; BATTLEANIMOAMSET_A1 + dbbw $08, 3, .OAMData_a0 ; BATTLEANIMOAMSET_A2 + dbbw $00, 16, .OAMData_1c ; BATTLEANIMOAMSET_A3 + dbbw $00, 9, .OAMData_a4 ; BATTLEANIMOAMSET_A4 + dbbw $06, 9, .OAMData_a4 ; BATTLEANIMOAMSET_A5 + dbbw $0c, 9, .OAMData_a4 ; BATTLEANIMOAMSET_A6 + dbbw $12, 9, .OAMData_a4 ; BATTLEANIMOAMSET_A7 + dbbw $18, 9, .OAMData_a4 ; BATTLEANIMOAMSET_A8 + dbbw $1e, 9, .OAMData_a4 ; BATTLEANIMOAMSET_A9 + dbbw $24, 9, .OAMData_a4 ; BATTLEANIMOAMSET_AA + dbbw $2a, 9, .OAMData_a4 ; BATTLEANIMOAMSET_AB + dbbw $03, 4, .OAMData_ac ; BATTLEANIMOAMSET_AC + dbbw $12, 4, .OAMData_03 ; BATTLEANIMOAMSET_AD + dbbw $10, 4, .OAMData_04 ; BATTLEANIMOAMSET_AE + dbbw $16, 1, .OAMData_0f ; BATTLEANIMOAMSET_AF + dbbw $17, 4, .OAMData_02 ; BATTLEANIMOAMSET_B0 + dbbw $18, 4, .OAMData_03 ; BATTLEANIMOAMSET_B1 + dbbw $1c, 4, .OAMData_03 ; BATTLEANIMOAMSET_B2 + dbbw $20, 3, .OAMData_03 ; BATTLEANIMOAMSET_B3 + dbbw $23, 4, .OAMData_04 ; BATTLEANIMOAMSET_B4 + dbbw $25, 3, .OAMData_03 ; BATTLEANIMOAMSET_B5 + dbbw $17, 4, .OAMData_03 ; BATTLEANIMOAMSET_B6 + dbbw $0a, 16, .OAMData_00 ; BATTLEANIMOAMSET_B7 + dbbw $10, 16, .OAMData_1c ; BATTLEANIMOAMSET_B8 + dbbw $00, 16, .OAMData_1c ; BATTLEANIMOAMSET_B9 + dbbw $04, 4, .OAMData_03 ; BATTLEANIMOAMSET_BA + dbbw $08, 2, .OAMData_11 ; BATTLEANIMOAMSET_BB + dbbw $20, 6, .OAMData_bc ; BATTLEANIMOAMSET_BC + dbbw $08, 1, .OAMData_0f ; BATTLEANIMOAMSET_BD + dbbw $04, 4, .OAMData_03 ; BATTLEANIMOAMSET_BE + dbbw $1a, 4, .OAMData_30 ; BATTLEANIMOAMSET_BF + dbbw $16, 9, .OAMData_01 ; BATTLEANIMOAMSET_C0 + dbbw $10, 16, .OAMData_c1 ; BATTLEANIMOAMSET_C1 + dbbw $09, 6, .OAMData_c2 ; BATTLEANIMOAMSET_C2 + dbbw $11, 9, .OAMData_c3 ; BATTLEANIMOAMSET_C3 + dbbw $0e, 4, .OAMData_03 ; BATTLEANIMOAMSET_C4 + dbbw $0b, 4, .OAMData_30 ; BATTLEANIMOAMSET_C5 + dbbw $1c, 6, .OAMData_02 ; BATTLEANIMOAMSET_C6 + dbbw $20, 16, .OAMData_c1 ; BATTLEANIMOAMSET_C7 + dbbw $05, 6, .OAMData_c8 ; BATTLEANIMOAMSET_C8 + dbbw $0b, 4, .OAMData_03 ; BATTLEANIMOAMSET_C9 + dbbw $09, 4, .OAMData_ca ; BATTLEANIMOAMSET_CA + dbbw $0b, 4, .OAMData_04 ; BATTLEANIMOAMSET_CB + dbbw $11, 13, .OAMData_cc ; BATTLEANIMOAMSET_CC + dbbw $00, 9, .OAMData_c3 ; BATTLEANIMOAMSET_CD + dbbw $09, 9, .OAMData_c3 ; BATTLEANIMOAMSET_CE + dbbw $00, 12, .OAMData_cf ; BATTLEANIMOAMSET_CF + dbbw $06, 12, .OAMData_cf ; BATTLEANIMOAMSET_D0 + dbbw $0c, 12, .OAMData_cf ; BATTLEANIMOAMSET_D1 + dbbw $12, 12, .OAMData_cf ; BATTLEANIMOAMSET_D2 + dbbw $00, 13, .OAMData_cc ; BATTLEANIMOAMSET_D3 + dbbw $00, 7, .OAMData_d4 ; BATTLEANIMOAMSET_D4 + dbbw $00, 6, .OAMData_d5 ; BATTLEANIMOAMSET_D5 + dbbw $00, 14, .OAMData_d6 ; BATTLEANIMOAMSET_D6 + dbbw $00, 12, .OAMData_d7 ; BATTLEANIMOAMSET_D7 + +.OAMData_11: + dbsprite -1, -1, 4, 0, $00, $0 + dbsprite -1, 0, 4, 0, $01, $0 + +.OAMData_56: + dbsprite -1, -1, 0, 4, $00, $0 + dbsprite 0, -1, 0, 4, $01, $0 + +.OAMData_03: + dbsprite -1, -1, 0, 0, $00, $0 + dbsprite 0, -1, 0, 0, $01, $0 + dbsprite -1, 0, 0, 0, $02, $0 + dbsprite 0, 0, 0, 0, $03, $0 + +.OAMData_02: + dbsprite -1, -1, 0, 0, $00, $0 + dbsprite 0, -1, 0, 0, $00, X_FLIP + dbsprite -1, 0, 0, 0, $00, Y_FLIP + dbsprite 0, 0, 0, 0, $00, X_FLIP | Y_FLIP + +.OAMData_c3: + dbsprite -2, -2, 4, 4, $00, $0 + dbsprite -1, -2, 4, 4, $01, $0 + dbsprite 0, -2, 4, 4, $02, $0 + dbsprite -2, -1, 4, 4, $03, $0 + dbsprite -1, -1, 4, 4, $04, $0 + dbsprite 0, -1, 4, 4, $05, $0 + dbsprite -2, 0, 4, 4, $06, $0 + dbsprite -1, 0, 4, 4, $07, $0 + dbsprite 0, 0, 4, 4, $08, $0 + +.OAMData_01: + dbsprite -2, -2, 4, 4, $00, $0 + dbsprite -1, -2, 4, 4, $01, $0 + dbsprite 0, -2, 4, 4, $00, X_FLIP + dbsprite -2, -1, 4, 4, $02, $0 + dbsprite -1, -1, 4, 4, $03, $0 + dbsprite 0, -1, 4, 4, $02, X_FLIP | Y_FLIP + dbsprite -2, 0, 4, 4, $00, Y_FLIP + dbsprite -1, 0, 4, 4, $01, X_FLIP | Y_FLIP + dbsprite 0, 0, 4, 4, $00, X_FLIP | Y_FLIP + +.OAMData_cf: + dbsprite -2, -2, 4, 0, $00, $0 + dbsprite -1, -2, 4, 0, $01, $0 + dbsprite 0, -2, 4, 0, $02, $0 + dbsprite -2, -1, 4, 0, $03, $0 + dbsprite -1, -1, 4, 0, $04, $0 + dbsprite 0, -1, 4, 0, $05, $0 + dbsprite -2, 0, 4, 0, $05, X_FLIP | Y_FLIP + dbsprite -1, 0, 4, 0, $04, X_FLIP | Y_FLIP + dbsprite 0, 0, 4, 0, $03, X_FLIP | Y_FLIP + dbsprite -2, 1, 4, 0, $02, X_FLIP | Y_FLIP + dbsprite -1, 1, 4, 0, $01, X_FLIP | Y_FLIP + dbsprite 0, 1, 4, 0, $00, X_FLIP | Y_FLIP + +.OAMData_1c: + dbsprite -2, -2, 0, 0, $00, $0 + dbsprite -1, -2, 0, 0, $01, $0 + dbsprite 0, -2, 0, 0, $02, $0 + dbsprite 1, -2, 0, 0, $03, $0 + dbsprite -2, -1, 0, 0, $04, $0 + dbsprite -1, -1, 0, 0, $05, $0 + dbsprite 0, -1, 0, 0, $06, $0 + dbsprite 1, -1, 0, 0, $07, $0 + dbsprite -2, 0, 0, 0, $08, $0 + dbsprite -1, 0, 0, 0, $09, $0 + dbsprite 0, 0, 0, 0, $0a, $0 + dbsprite 1, 0, 0, 0, $0b, $0 + dbsprite -2, 1, 0, 0, $0c, $0 + dbsprite -1, 1, 0, 0, $0d, $0 + dbsprite 0, 1, 0, 0, $0e, $0 + dbsprite 1, 1, 0, 0, $0f, $0 + +.OAMData_00: + dbsprite -2, -2, 0, 0, $00, $0 + dbsprite -1, -2, 0, 0, $01, $0 + dbsprite -2, -1, 0, 0, $02, $0 + dbsprite -1, -1, 0, 0, $03, $0 + dbsprite 0, -2, 0, 0, $01, X_FLIP + dbsprite 1, -2, 0, 0, $00, X_FLIP + dbsprite 0, -1, 0, 0, $03, X_FLIP + dbsprite 1, -1, 0, 0, $02, X_FLIP + dbsprite -2, 0, 0, 0, $02, Y_FLIP + dbsprite -1, 0, 0, 0, $03, Y_FLIP + dbsprite -2, 1, 0, 0, $00, Y_FLIP + dbsprite -1, 1, 0, 0, $01, Y_FLIP + dbsprite 0, 0, 0, 0, $03, X_FLIP | Y_FLIP + dbsprite 1, 0, 0, 0, $02, X_FLIP | Y_FLIP + dbsprite 0, 1, 0, 0, $01, X_FLIP | Y_FLIP + dbsprite 1, 1, 0, 0, $00, X_FLIP | Y_FLIP + +.OAMData_09: + dbsprite -3, -3, 4, 4, $00, $0 + dbsprite -2, -3, 4, 4, $01, $0 + dbsprite -3, -2, 4, 4, $02, $0 + dbsprite -2, -2, 4, 4, $03, $0 + dbsprite 0, -3, 4, 4, $01, X_FLIP + dbsprite 1, -3, 4, 4, $00, X_FLIP + dbsprite 0, -2, 4, 4, $03, X_FLIP + dbsprite 1, -2, 4, 4, $02, X_FLIP + dbsprite -3, 0, 4, 4, $02, Y_FLIP + dbsprite -2, 0, 4, 4, $03, Y_FLIP + dbsprite -3, 1, 4, 4, $00, Y_FLIP + dbsprite -2, 1, 4, 4, $01, Y_FLIP + dbsprite 0, 0, 4, 4, $03, X_FLIP | Y_FLIP + dbsprite 1, 0, 4, 4, $02, X_FLIP | Y_FLIP + dbsprite 0, 1, 4, 4, $01, X_FLIP | Y_FLIP + dbsprite 1, 1, 4, 4, $00, X_FLIP | Y_FLIP + +.OAMData_0c: + dbsprite -1, -1, 0, 4, $00, $0 + dbsprite 0, -1, 0, 4, $00, X_FLIP + +.OAMData_6a: + dbsprite -1, 0, 0, 0, $00, $0 + dbsprite 0, 0, 0, 0, $00, X_FLIP + +.OAMData_04: + dbsprite -1, -1, 0, 0, $00, $0 + dbsprite 0, -1, 0, 0, $00, X_FLIP + dbsprite -1, 0, 0, 0, $01, $0 + dbsprite 0, 0, 0, 0, $01, X_FLIP + +.OAMData_5d: + dbsprite -1, -1, 0, 0, $00, $0 + dbsprite 0, -1, 0, 0, $01, $0 + dbsprite -1, 0, 0, 0, $00, Y_FLIP + dbsprite 0, 0, 0, 0, $01, Y_FLIP + +.OAMData_13: + dbsprite -1, -1, 0, 2, $02, $0 + dbsprite -1, 0, 0, 2, $03, $0 + dbsprite 0, -2, 0, 6, $02, $0 + dbsprite 0, -1, 0, 6, $03, $0 + +.OAMData_22: + dbsprite -11, 1, 0, 0, $01, $0 + dbsprite -10, 0, 0, 0, $02, $0 + dbsprite -9, 0, 0, 0, $03, $0 + dbsprite -8, 0, 0, 0, $00, $0 + dbsprite -7, 0, 0, 0, $03, $0 + dbsprite -6, 0, 0, 0, $00, $0 + dbsprite -5, 0, 0, 0, $03, $0 + dbsprite -4, 0, 0, 0, $00, $0 + dbsprite -3, 0, 0, 0, $03, $0 + dbsprite -2, 0, 0, 0, $00, $0 + dbsprite -1, 0, 0, 0, $01, $0 + dbsprite 0, -1, 0, 0, $02, $0 + dbsprite 1, -1, 0, 0, $03, $0 + dbsprite 2, -1, 0, 0, $00, $0 + dbsprite 3, -1, 0, 0, $03, $0 + dbsprite 4, -1, 0, 0, $00, $0 + dbsprite 5, -1, 0, 0, $03, $0 + dbsprite 6, -1, 0, 0, $00, $0 + dbsprite 7, -1, 0, 0, $03, $0 + dbsprite 8, -1, 0, 0, $00, $0 + dbsprite 9, -1, 0, 0, $01, $0 + dbsprite 10, -2, 0, 0, $02, $0 + +.OAMData_2a: + dbsprite -1, -3, 0, 4, $00, $0 + dbsprite 0, -3, 0, 4, $00, X_FLIP + dbsprite -1, -2, 0, 4, $01, $0 + dbsprite 0, -2, 0, 4, $01, X_FLIP + dbsprite -1, -1, 4, 4, $02, $0 + +.OAMData_2b: + dbsprite -1, -4, 0, 4, $00, $0 + dbsprite 0, -4, 0, 4, $00, X_FLIP + dbsprite -1, -3, 0, 4, $01, $0 + dbsprite 0, -3, 0, 4, $01, X_FLIP + dbsprite -1, -2, 4, 4, $02, $0 + dbsprite -1, -1, 4, 4, $02, $0 + +.OAMData_2c: + dbsprite -1, -5, 0, 4, $00, $0 + dbsprite 0, -5, 0, 4, $00, X_FLIP + dbsprite -1, -4, 0, 4, $01, $0 + dbsprite 0, -4, 0, 4, $01, X_FLIP + dbsprite -1, -3, 4, 4, $02, $0 + dbsprite -1, -2, 4, 4, $02, $0 + dbsprite -1, -1, 4, 4, $02, $0 + +.OAMData_2d: + dbsprite -1, -6, 0, 4, $00, $0 + dbsprite 0, -6, 0, 4, $00, X_FLIP + dbsprite -1, -5, 0, 4, $01, $0 + dbsprite 0, -5, 0, 4, $01, X_FLIP + dbsprite -1, -4, 4, 4, $02, $0 + dbsprite -1, -3, 4, 4, $02, $0 + dbsprite -1, -2, 4, 4, $02, $0 + dbsprite -1, -1, 4, 4, $02, $0 + +.OAMData_2e: + dbsprite -1, -7, 0, 4, $00, $0 + dbsprite 0, -7, 0, 4, $00, X_FLIP + dbsprite -1, -6, 0, 4, $01, $0 + dbsprite 0, -6, 0, 4, $01, X_FLIP + dbsprite -1, -5, 4, 4, $02, $0 + dbsprite -1, -4, 4, 4, $02, $0 + dbsprite -1, -3, 4, 4, $02, $0 + dbsprite -1, -2, 4, 4, $02, $0 + dbsprite -1, -1, 4, 4, $02, $0 + +.OAMData_2f: + dbsprite -1, -1, 0, 0, $00, $0 + dbsprite 0, -1, 0, 0, $00, X_FLIP + dbsprite -1, 0, 0, 0, $01, $0 + dbsprite 0, 0, 0, 0, $00, X_FLIP | Y_FLIP + +.OAMData_30: + dbsprite -1, -1, 0, 0, $00, $0 + dbsprite 0, -1, 0, 0, $01, $0 + dbsprite -1, 0, 0, 0, $01, X_FLIP | Y_FLIP + dbsprite 0, 0, 0, 0, $00, X_FLIP | Y_FLIP + +.OAMData_31: + dbsprite -1, -2, 0, 4, $00, $0 + dbsprite 0, -2, 0, 4, $01, $0 + dbsprite -1, -1, 0, 4, $02, $0 + dbsprite 0, -1, 0, 4, $03, $0 + dbsprite -1, 0, 0, 4, $04, $0 + dbsprite 0, 0, 0, 4, $05, $0 + +.OAMData_76: + dbsprite -1, -1, 0, 5, $00, $0 + dbsprite 0, -1, 0, 1, $00, $0 + +.OAMData_32: + dbsprite -2, -1, 4, 0, $00, $0 + dbsprite 0, -1, 4, 0, $00, $0 + dbsprite -2, -3, 4, 0, $00, $0 + dbsprite 0, -3, 4, 0, $00, $0 + dbsprite -3, -2, 4, 0, $00, $0 + dbsprite -2, -2, 4, 0, $01, $0 + dbsprite -1, -2, 4, 0, $00, $0 + dbsprite 0, -2, 4, 0, $01, $0 + dbsprite 1, -2, 4, 0, $00, $0 + dbsprite -4, -1, 4, 0, $00, $0 + dbsprite -3, -1, 4, 0, $01, $0 + dbsprite -1, -1, 4, 0, $01, $0 + dbsprite 1, -1, 4, 0, $01, $0 + dbsprite 2, -1, 4, 0, $00, $0 + +.OAMData_33: + dbsprite -2, -2, 4, 0, $00, $0 + dbsprite 0, -2, 4, 0, $00, $0 + dbsprite -3, -1, 4, 0, $00, $0 + dbsprite -2, -1, 4, 0, $01, $0 + dbsprite -1, -1, 4, 0, $00, $0 + dbsprite 0, -1, 4, 0, $01, $0 + dbsprite 1, -1, 4, 0, $00, $0 + dbsprite -2, -4, 4, 0, $00, $0 + dbsprite 0, -4, 4, 0, $00, $0 + dbsprite -3, -3, 4, 0, $00, $0 + dbsprite -2, -3, 4, 0, $01, $0 + dbsprite -1, -3, 4, 0, $00, $0 + dbsprite 0, -3, 4, 0, $01, $0 + dbsprite 1, -3, 4, 0, $00, $0 + dbsprite -4, -2, 4, 0, $00, $0 + dbsprite -3, -2, 4, 0, $01, $0 + dbsprite -1, -2, 4, 0, $01, $0 + dbsprite 1, -2, 4, 0, $01, $0 + dbsprite 2, -2, 4, 0, $00, $0 + dbsprite -4, -1, 4, 0, $01, $0 + dbsprite 2, -1, 4, 0, $01, $0 + +.OAMData_36: + dbsprite -1, -7, 0, 4, $00, $0 + dbsprite 0, -7, 0, 4, $01, $0 + dbsprite -1, -6, 0, 4, $02, $0 + dbsprite 0, -6, 0, 4, $03, $0 + dbsprite -1, -5, 0, 4, $04, $0 + dbsprite 0, -5, 0, 4, $05, $0 + dbsprite -1, -4, 0, 4, $06, $0 + dbsprite 0, -4, 0, 4, $07, $0 + dbsprite -1, -3, 0, 4, $08, $0 + dbsprite 0, -3, 0, 4, $09, $0 + dbsprite -1, -2, 0, 4, $0a, $0 + dbsprite 0, -2, 0, 4, $0b, $0 + dbsprite -1, -1, 0, 4, $0c, $0 + dbsprite 0, -1, 0, 4, $0d, $0 + +.OAMData_3a: + dbsprite -1, -7, 0, 4, $0c, $0 + dbsprite 0, -7, 0, 4, $0d, $0 + dbsprite -1, -6, 0, 4, $08, $0 + dbsprite 0, -6, 0, 4, $09, $0 + dbsprite -1, -5, 0, 4, $04, $0 + dbsprite 0, -5, 0, 4, $05, $0 + dbsprite -1, -4, 0, 4, $00, $0 + dbsprite 0, -4, 0, 4, $01, $0 + dbsprite -1, -3, 0, 4, $02, $0 + dbsprite 0, -3, 0, 4, $03, $0 + dbsprite 0, -2, 0, 4, $02, $0 + dbsprite 1, -2, 0, 4, $03, $0 + dbsprite 0, -1, 0, 4, $0a, $0 + dbsprite 1, -1, 0, 4, $0b, $0 + +.OAMData_3e: + dbsprite -2, 1, 0, 4, $00, Y_FLIP + dbsprite -1, 1, 0, 4, $02, Y_FLIP + dbsprite 0, 1, 0, 4, $02, X_FLIP | Y_FLIP + dbsprite 1, 1, 0, 4, $00, X_FLIP | Y_FLIP + dbsprite -3, -1, 0, 4, $09, X_FLIP + dbsprite -2, -1, 0, 4, $08, X_FLIP + dbsprite -1, -1, 0, 4, $06, $0 + dbsprite 0, -1, 0, 4, $07, $0 + dbsprite 1, -1, 0, 4, $08, $0 + dbsprite 2, -1, 0, 4, $09, $0 + dbsprite -3, 0, 0, 4, $01, X_FLIP + dbsprite -2, 0, 0, 4, $00, X_FLIP + dbsprite -1, 0, 0, 4, $0c, $0 + dbsprite 0, 0, 0, 4, $0d, $0 + dbsprite 1, 0, 0, 4, $00, $0 + dbsprite 2, 0, 0, 4, $01, $0 + dbsprite -2, -3, 0, 4, $00, $0 + dbsprite -1, -3, 0, 4, $02, $0 + dbsprite 0, -3, 0, 4, $02, X_FLIP + dbsprite 1, -3, 0, 4, $00, X_FLIP + dbsprite -3, -2, 0, 4, $03, X_FLIP + dbsprite -2, -2, 0, 4, $02, X_FLIP + dbsprite -1, -2, 0, 4, $04, $0 + dbsprite 0, -2, 0, 4, $05, $0 + dbsprite 1, -2, 0, 4, $02, $0 + dbsprite 2, -2, 0, 4, $03, $0 + +.OAMData_41: + dbsprite -2, -3, 0, 4, $00, $0 + dbsprite -1, -3, 0, 4, $02, $0 + dbsprite 0, -3, 0, 4, $02, X_FLIP + dbsprite 1, -3, 0, 4, $00, X_FLIP + dbsprite -3, -2, 4, 4, $00, $0 + dbsprite -2, -2, 4, 4, $01, $0 + dbsprite -1, -2, 0, 4, $05, X_FLIP + dbsprite 0, -2, 0, 4, $04, X_FLIP + dbsprite 0, -2, 4, 4, $01, X_FLIP + dbsprite 1, -2, 4, 4, $00, X_FLIP + dbsprite -3, -1, 4, 4, $02, $0 + dbsprite -2, -1, 4, 4, $03, $0 + dbsprite -1, -1, 0, 4, $07, X_FLIP + dbsprite 0, -1, 0, 4, $06, X_FLIP + dbsprite 0, -1, 4, 4, $03, X_FLIP + dbsprite 1, -1, 4, 4, $02, X_FLIP + dbsprite -3, 0, 4, 4, $04, $0 + dbsprite -2, 0, 4, 4, $05, $0 + dbsprite -1, 0, 0, 4, $0d, X_FLIP + dbsprite 0, 0, 0, 4, $0c, X_FLIP + dbsprite 0, 0, 4, 4, $05, X_FLIP + dbsprite 1, 0, 4, 4, $04, X_FLIP + dbsprite -2, 1, 0, 4, $00, Y_FLIP + dbsprite -1, 1, 0, 4, $02, Y_FLIP + dbsprite 0, 1, 0, 4, $02, X_FLIP | Y_FLIP + dbsprite 1, 1, 0, 4, $00, X_FLIP | Y_FLIP + +.OAMData_42: + dbsprite -1, -3, 4, 0, $02, $0 + dbsprite -1, 2, 4, 0, $02, X_FLIP | Y_FLIP + dbsprite -3, -1, 0, 4, $01, $0 + dbsprite 2, -1, 0, 4, $01, X_FLIP | Y_FLIP + dbsprite -1, -4, 4, 0, $02, $0 + dbsprite -1, 3, 4, 0, $02, X_FLIP | Y_FLIP + dbsprite -4, -1, 0, 4, $01, $0 + dbsprite 3, -1, 0, 4, $01, X_FLIP | Y_FLIP + +.OAMData_44: + dbsprite -3, -3, 5, 5, $00, X_FLIP + dbsprite 1, -3, 3, 5, $00, $0 + dbsprite -3, 1, 5, 3, $00, X_FLIP | Y_FLIP + dbsprite 1, 1, 3, 3, $00, Y_FLIP + dbsprite -4, -4, 5, 5, $00, X_FLIP + dbsprite 2, -4, 3, 5, $00, $0 + dbsprite -4, 2, 5, 3, $00, X_FLIP | Y_FLIP + dbsprite 2, 2, 3, 3, $00, Y_FLIP + +.OAMData_46: + dbsprite -1, -3, 4, 4, $02, $0 + dbsprite -1, 1, 4, 4, $02, X_FLIP | Y_FLIP + dbsprite -3, -1, 4, 4, $01, $0 + dbsprite 1, -1, 4, 4, $01, X_FLIP | Y_FLIP + +.OAMData_47: + dbsprite -2, -2, 0, 0, $00, X_FLIP + dbsprite 1, -2, 0, 0, $00, $0 + dbsprite -2, 1, 0, 0, $00, X_FLIP | Y_FLIP + dbsprite 1, 1, 0, 0, $00, Y_FLIP + +.OAMData_48: + dbsprite -1, -3, 4, 0, $00, $0 + dbsprite -1, -2, 2, 0, $00, $0 + dbsprite -1, -1, 0, 0, $00, $0 + dbsprite -1, 0, 0, 0, $00, $0 + dbsprite -1, 1, 2, 0, $00, $0 + dbsprite -1, 2, 4, 0, $00, $0 + +.OAMData_49: + dbsprite -2, -1, 0, 4, $00, X_FLIP + dbsprite -1, -1, 0, 2, $00, X_FLIP + dbsprite 0, -1, 0, 2, $00, $0 + dbsprite 1, -1, 0, 4, $00, $0 + +.OAMData_4a: + dbsprite -1, -1, 0, 4, $00, X_FLIP | Y_FLIP + dbsprite 0, -1, 0, 4, $00, Y_FLIP + +.OAMData_0f: + dbsprite -1, -1, 4, 4, $00, $0 + dbsprite -2, -1, 4, 4, $01, $0 + dbsprite -1, -1, 4, 4, $01, X_FLIP + dbsprite -2, 0, 4, 4, $01, Y_FLIP + dbsprite -1, 0, 4, 4, $01, X_FLIP | Y_FLIP + +.OAMData_4c: + dbsprite -1, -1, 4, 4, $00, $0 + dbsprite -2, 0, 6, 2, $00, $0 + dbsprite -3, 0, 6, 2, $01, $0 + dbsprite -2, 0, 6, 2, $01, X_FLIP + dbsprite -3, 1, 6, 2, $01, Y_FLIP + dbsprite -2, 1, 6, 2, $01, X_FLIP | Y_FLIP + +.OAMData_4d: + dbsprite -1, -1, 4, 4, $00, $0 + dbsprite -2, 0, 6, 2, $00, $0 + dbsprite -2, 1, 0, 0, $00, $0 + dbsprite -3, 1, 0, 0, $01, $0 + dbsprite -2, 1, 0, 0, $01, X_FLIP + dbsprite -3, 2, 0, 0, $01, Y_FLIP + dbsprite -2, 2, 0, 0, $01, X_FLIP | Y_FLIP + +.OAMData_4f: + dbsprite -1, -1, 4, 4, $00, $0 + dbsprite -2, 0, 6, 2, $00, $0 + dbsprite -2, 1, 0, 0, $00, $0 + dbsprite -3, 1, 2, 6, $00, $0 + dbsprite -4, 1, 2, 6, $01, $0 + dbsprite -3, 1, 2, 6, $01, X_FLIP + dbsprite -4, 2, 2, 6, $01, Y_FLIP + dbsprite -3, 2, 2, 6, $01, X_FLIP | Y_FLIP + +.OAMData_50: + dbsprite -1, -1, 4, 4, $00, $0 + dbsprite -2, 0, 6, 2, $00, $0 + dbsprite -2, 1, 0, 0, $00, $0 + dbsprite -3, 1, 2, 6, $00, $0 + dbsprite -4, 2, 4, 4, $00, $0 + dbsprite -5, 2, 4, 4, $01, $0 + dbsprite -4, 2, 4, 4, $01, X_FLIP + dbsprite -5, 3, 4, 4, $01, Y_FLIP + dbsprite -4, 3, 4, 4, $01, X_FLIP | Y_FLIP + +.OAMData_51: + dbsprite -1, -1, 4, 4, $00, $0 + dbsprite -2, 0, 6, 2, $00, $0 + dbsprite -2, 1, 0, 0, $00, $0 + dbsprite -3, 1, 2, 6, $00, $0 + dbsprite -4, 2, 4, 4, $00, $0 + dbsprite -5, 3, 6, 2, $00, $0 + dbsprite -6, 3, 6, 2, $01, $0 + dbsprite -5, 3, 6, 2, $01, X_FLIP + dbsprite -6, 4, 6, 2, $01, Y_FLIP + dbsprite -5, 4, 6, 2, $01, X_FLIP | Y_FLIP + +.OAMData_59: + dbsprite -2, -1, 0, 4, $00, $0 + dbsprite -1, -1, 0, 4, $01, $0 + dbsprite 0, -1, 0, 4, $01, X_FLIP + dbsprite 1, -1, 0, 4, $00, X_FLIP + +.OAMData_5a: + dbsprite -2, -1, 0, 4, $02, $0 + dbsprite -1, -1, 0, 4, $01, $0 + dbsprite 0, -1, 0, 4, $01, X_FLIP + dbsprite 1, -1, 0, 4, $02, X_FLIP + +.OAMData_60: + dbsprite -1, -1, 4, 0, $00, $0 + +.OAMData_69: + dbsprite -1, 0, 4, 0, $00, $0 + +.OAMData_61: + dbsprite -4, -1, 4, 4, $00, $0 + dbsprite -3, -1, 4, 4, $01, $0 + dbsprite -2, -1, 4, 4, $02, $0 + dbsprite -1, -1, 4, 4, $03, $0 + dbsprite 0, -1, 4, 4, $04, $0 + dbsprite 1, -1, 4, 4, $05, $0 + dbsprite 2, -1, 4, 4, $06, $0 + dbsprite 1, -2, 4, 4, $07, $0 + dbsprite 2, -2, 4, 4, $08, $0 + +.OAMData_65: + dbsprite -4, -2, 4, 4, $08, X_FLIP + dbsprite -3, -2, 4, 4, $07, X_FLIP + dbsprite -4, -1, 4, 4, $06, X_FLIP + dbsprite -3, -1, 4, 4, $05, X_FLIP + dbsprite -2, -1, 4, 4, $04, X_FLIP + dbsprite -1, -1, 4, 4, $03, X_FLIP + dbsprite 0, -1, 4, 4, $02, X_FLIP + dbsprite 1, -1, 4, 4, $01, X_FLIP + dbsprite 2, -1, 4, 4, $00, X_FLIP + +.OAMData_d4: + dbsprite -4, 0, 4, 0, $00, OBP_NUM + dbsprite -3, 0, 4, 0, $01, OBP_NUM + dbsprite -2, 0, 4, 0, $02, OBP_NUM + dbsprite -1, 0, 4, 0, $03, OBP_NUM + dbsprite 0, 0, 4, 0, $04, OBP_NUM + dbsprite 1, 0, 4, 0, $05, OBP_NUM + dbsprite 2, 0, 4, 0, $06, OBP_NUM + +.OAMData_d6: + dbsprite -4, -1, 4, 0, $00, OBP_NUM + dbsprite -4, 0, 4, 0, $01, OBP_NUM + dbsprite -3, -1, 4, 0, $02, OBP_NUM + dbsprite -3, 0, 4, 0, $03, OBP_NUM + dbsprite -2, -1, 4, 0, $04, OBP_NUM + dbsprite -2, 0, 4, 0, $05, OBP_NUM + dbsprite -1, -1, 4, 0, $06, OBP_NUM + dbsprite -1, 0, 4, 0, $07, OBP_NUM + dbsprite 0, -1, 4, 0, $08, OBP_NUM + dbsprite 0, 0, 4, 0, $09, OBP_NUM + dbsprite 1, -1, 4, 0, $0a, OBP_NUM + dbsprite 1, 0, 4, 0, $0b, OBP_NUM + dbsprite 2, -1, 4, 0, $0c, OBP_NUM + dbsprite 2, 0, 4, 0, $0d, OBP_NUM + +.OAMData_d5: + dbsprite -3, 0, 0, 0, $00, $1 | OBP_NUM + dbsprite -2, 0, 0, 0, $01, $1 | OBP_NUM + dbsprite -1, 0, 0, 0, $02, $1 | OBP_NUM + dbsprite 0, 0, 0, 0, $03, $1 | OBP_NUM + dbsprite 1, 0, 0, 0, $04, $1 | OBP_NUM + dbsprite 2, 0, 0, 0, $05, $1 | OBP_NUM + +.OAMData_d7: + dbsprite -3, 0, 0, 0, $00, $1 | OBP_NUM + dbsprite -3, 1, 0, 0, $01, $1 | OBP_NUM + dbsprite -2, 0, 0, 0, $02, $1 | OBP_NUM + dbsprite -2, 1, 0, 0, $03, $1 | OBP_NUM + dbsprite -1, 0, 0, 0, $04, $1 | OBP_NUM + dbsprite -1, 1, 0, 0, $05, $1 | OBP_NUM + dbsprite 0, 0, 0, 0, $06, $1 | OBP_NUM + dbsprite 0, 1, 0, 0, $07, $1 | OBP_NUM + dbsprite 1, 0, 0, 0, $08, $1 | OBP_NUM + dbsprite 1, 1, 0, 0, $09, $1 | OBP_NUM + dbsprite 2, 0, 0, 0, $0a, $1 | OBP_NUM + dbsprite 2, 1, 0, 0, $0b, $1 | OBP_NUM + +.OAMData_6e: + dbsprite 0, -2, 4, 4, $00, $0 + dbsprite -2, -1, 4, 4, $01, $0 + dbsprite -1, -1, 4, 4, $02, $0 + dbsprite 0, -1, 4, 4, $03, $0 + dbsprite -2, 0, 4, 4, $04, $0 + +.OAMData_6f: + dbsprite -2, -1, 4, 4, $00, $0 + dbsprite -1, -1, 4, 4, $01, $0 + dbsprite 0, -1, 4, 4, $02, $0 + +.OAMData_77: + dbsprite 1, -4, 4, 4, $01, X_FLIP | Y_FLIP + +.OAMData_78: + dbsprite 1, -4, 4, 4, $00, $0 + dbsprite 0, -4, 4, 4, $01, X_FLIP | Y_FLIP + dbsprite 1, -3, 4, 4, $01, X_FLIP | Y_FLIP + +.OAMData_79: + dbsprite 1, -4, 4, 4, $01, $0 + dbsprite 0, -4, 4, 4, $00, $0 + dbsprite -1, -4, 4, 4, $01, X_FLIP | Y_FLIP + dbsprite 1, -3, 4, 4, $00, $0 + dbsprite 0, -3, 4, 4, $01, X_FLIP | Y_FLIP + dbsprite 1, -2, 4, 4, $01, X_FLIP | Y_FLIP + +.OAMData_7a: + dbsprite -2, -4, 4, 4, $01, X_FLIP | Y_FLIP + dbsprite -1, -4, 4, 4, $00, $0 + dbsprite 0, -4, 4, 4, $01, $0 + dbsprite -1, -3, 4, 4, $01, X_FLIP | Y_FLIP + dbsprite 0, -3, 4, 4, $00, $0 + dbsprite 1, -3, 4, 4, $01, $0 + dbsprite 0, -2, 4, 4, $01, X_FLIP | Y_FLIP + dbsprite 1, -2, 4, 4, $00, $0 + dbsprite 1, -1, 4, 4, $01, X_FLIP | Y_FLIP + +.OAMData_7b: + dbsprite -3, -4, 4, 4, $01, X_FLIP | Y_FLIP + dbsprite -2, -4, 4, 4, $00, $0 + dbsprite -1, -4, 4, 4, $01, $0 + dbsprite -2, -3, 4, 4, $01, X_FLIP | Y_FLIP + dbsprite -1, -3, 4, 4, $00, $0 + dbsprite 0, -3, 4, 4, $01, $0 + dbsprite -1, -2, 4, 4, $01, X_FLIP | Y_FLIP + dbsprite 0, -2, 4, 4, $00, $0 + dbsprite 1, -2, 4, 4, $01, $0 + dbsprite 0, -1, 4, 4, $01, X_FLIP | Y_FLIP + dbsprite 1, -1, 4, 4, $00, $0 + dbsprite 1, 0, 4, 4, $01, X_FLIP | Y_FLIP + +.OAMData_7c: + dbsprite -3, -4, 4, 4, $00, $0 + dbsprite -2, -4, 4, 4, $01, $0 + dbsprite -3, -3, 4, 4, $01, X_FLIP | Y_FLIP + dbsprite -2, -3, 4, 4, $00, $0 + dbsprite -1, -3, 4, 4, $01, $0 + dbsprite -2, -2, 4, 4, $01, X_FLIP | Y_FLIP + dbsprite -1, -2, 4, 4, $00, $0 + dbsprite 0, -2, 4, 4, $01, $0 + dbsprite -1, -1, 4, 4, $01, X_FLIP | Y_FLIP + dbsprite 0, -1, 4, 4, $00, $0 + dbsprite 1, -1, 4, 4, $01, $0 + dbsprite 0, 0, 4, 4, $01, X_FLIP | Y_FLIP + dbsprite 1, 0, 4, 4, $00, $0 + dbsprite 1, 1, 4, 4, $01, X_FLIP | Y_FLIP + +.OAMData_7d: + dbsprite -3, -4, 4, 4, $01, $0 + dbsprite -3, -3, 4, 4, $00, $0 + dbsprite -2, -3, 4, 4, $01, $0 + dbsprite -3, -2, 4, 4, $01, X_FLIP | Y_FLIP + dbsprite -2, -2, 4, 4, $00, $0 + dbsprite -1, -2, 4, 4, $01, $0 + dbsprite -2, -1, 4, 4, $01, X_FLIP | Y_FLIP + dbsprite -1, -1, 4, 4, $00, $0 + dbsprite 0, -1, 4, 4, $01, $0 + dbsprite -1, 0, 4, 4, $01, X_FLIP | Y_FLIP + dbsprite 0, 0, 4, 4, $00, $0 + dbsprite 1, 0, 4, 4, $01, $0 + dbsprite 0, 1, 4, 4, $01, X_FLIP | Y_FLIP + dbsprite 1, 1, 4, 4, $00, $0 + dbsprite 1, 2, 4, 4, $01, X_FLIP | Y_FLIP + +.OAMData_70: + dbsprite -1, -2, 0, 0, $00, $0 + dbsprite -1, -1, 0, 0, $01, $0 + dbsprite 0, -2, 0, 0, $00, X_FLIP + dbsprite 0, -1, 0, 0, $01, X_FLIP + dbsprite -1, 0, 0, 0, $01, Y_FLIP + dbsprite -1, 1, 0, 0, $00, Y_FLIP + dbsprite 0, 0, 0, 0, $01, X_FLIP | Y_FLIP + dbsprite 0, 1, 0, 0, $00, X_FLIP | Y_FLIP + +.OAMData_81: + dbsprite -1, -1, 0, 0, $00, $0 + dbsprite 0, -1, 0, 0, $01, $0 + dbsprite -1, 0, 0, 0, $01, X_FLIP | Y_FLIP + dbsprite 0, 0, 0, 0, $00, X_FLIP | Y_FLIP + +.OAMData_87: + dbsprite -1, -2, 0, 4, $00, $0 + dbsprite 0, -2, 0, 4, $01, $0 + dbsprite -1, -1, 0, 4, $02, $0 + dbsprite 0, -1, 0, 4, $03, $0 + dbsprite -1, -1, 0, 4, $00, $0 + dbsprite 0, -1, 0, 4, $01, $0 + dbsprite -1, 0, 0, 4, $02, $0 + dbsprite 0, 0, 0, 4, $03, $0 + dbsprite -1, -3, 0, 4, $00, $0 + dbsprite 0, -3, 0, 4, $01, $0 + dbsprite -1, -2, 0, 4, $02, $0 + dbsprite 0, -2, 0, 4, $03, $0 + dbsprite -1, 0, 0, 4, $00, $0 + dbsprite 0, 0, 0, 4, $01, $0 + dbsprite -1, 1, 0, 4, $02, $0 + dbsprite 0, 1, 0, 4, $03, $0 + +.OAMData_88: + dbsprite -1, -2, 0, 0, $00, $0 + dbsprite 0, -2, 0, 0, $01, $0 + dbsprite -1, -1, 0, 0, $02, $0 + dbsprite 0, -1, 0, 0, $03, $0 + dbsprite -1, -1, 0, 0, $00, $0 + dbsprite 0, -1, 0, 0, $01, $0 + dbsprite -1, 0, 0, 0, $02, $0 + dbsprite 0, 0, 0, 0, $03, $0 + dbsprite -1, 0, 0, 0, $00, $0 + dbsprite 0, 0, 0, 0, $01, $0 + dbsprite -1, 1, 0, 0, $02, $0 + dbsprite 0, 1, 0, 0, $03, $0 + +.OAMData_8a: + dbsprite -1, -1, 4, 4, $00, $0 + dbsprite 0, -1, 4, 0, $00, $0 + dbsprite 1, -2, 4, 4, $00, $0 + dbsprite 2, -2, 4, 0, $00, $0 + dbsprite 3, -3, 4, 4, $00, $0 + dbsprite 4, -3, 4, 0, $00, $0 + dbsprite 5, -4, 4, 0, $00, $0 + dbsprite 6, -5, 4, 4, $00, $0 + +.OAMData_8e: + dbsprite -1, -3, 4, 4, $00, $0 + dbsprite -1, -2, 4, 4, $01, $0 + dbsprite -1, -1, 4, 4, $02, $0 + dbsprite -1, 0, 4, 4, $01, Y_FLIP + dbsprite -1, 1, 4, 4, $00, Y_FLIP + +.OAMData_8f: + dbsprite -2, -1, 0, 4, $00, $0 + dbsprite -1, -1, 0, 4, $01, $0 + dbsprite 0, -1, 0, 4, $02, $0 + dbsprite 1, -1, 0, 4, $03, $0 + +.OAMData_93: + dbsprite -2, -1, 4, 0, $00, $0 + dbsprite -1, -1, 4, 0, $01, $0 + dbsprite 0, -1, 4, 0, $02, $0 + dbsprite -2, 0, 4, 0, $03, $0 + dbsprite -1, 0, 4, 0, $04, $0 + dbsprite 0, 0, 4, 0, $05, $0 + +.OAMData_99: + dbsprite -1, -1, 0, 0, $00, $0 + dbsprite 0, -1, 0, 0, $05, $0 + dbsprite -1, 0, 0, 0, $01, $0 + dbsprite 0, 0, 0, 0, $05, $0 + +.OAMData_9b: + dbsprite 1, -4, 0, 4, $00, $0 + dbsprite 2, -4, 0, 4, $01, $0 + dbsprite -1, -3, 0, 4, $02, $0 + dbsprite 0, -3, 0, 4, $03, $0 + dbsprite 1, -3, 0, 4, $04, $0 + dbsprite 2, -3, 0, 4, $05, $0 + dbsprite 3, -3, 0, 4, $06, $0 + dbsprite -2, -2, 0, 4, $07, $0 + dbsprite -1, -2, 0, 4, $08, $0 + dbsprite 0, -2, 0, 4, $09, $0 + dbsprite 1, -2, 0, 4, $0a, $0 + dbsprite 2, -2, 0, 4, $0b, $0 + dbsprite 3, -2, 0, 4, $0c, $0 + dbsprite 4, -2, 0, 4, $0d, $0 + dbsprite -3, -1, 0, 4, $0e, $0 + dbsprite -2, -1, 0, 4, $0f, $0 + dbsprite -1, -1, 0, 4, $10, $0 + dbsprite 0, -1, 0, 4, $11, $0 + dbsprite 1, -1, 0, 4, $12, $0 + dbsprite 2, -1, 0, 4, $13, $0 + dbsprite -5, 0, 0, 4, $14, $0 + dbsprite -4, 0, 0, 4, $15, $0 + dbsprite -3, 0, 0, 4, $16, $0 + dbsprite -2, 0, 0, 4, $17, $0 + dbsprite -1, 0, 0, 4, $18, $0 + dbsprite 0, 0, 0, 4, $19, $0 + dbsprite 1, 0, 0, 4, $1a, $0 + dbsprite 2, 0, 0, 4, $1b, $0 + dbsprite 3, 0, 0, 4, $1c, $0 + dbsprite -5, 1, 0, 4, $1d, $0 + dbsprite -4, 1, 0, 4, $1e, $0 + dbsprite -2, 1, 0, 4, $1f, $0 + dbsprite -1, 1, 0, 4, $20, $0 + dbsprite 0, 1, 0, 4, $21, $0 + dbsprite 1, 1, 0, 4, $22, $0 + dbsprite 0, 2, 0, 4, $23, $0 + +.OAMData_9c: + dbsprite -1, 0, 0, 4, $02, $0 + dbsprite 0, 0, 0, 4, $03, $0 + dbsprite -1, -1, 0, 4, $01, $0 + dbsprite 0, -1, 0, 4, $01, X_FLIP + dbsprite -1, -2, 0, 4, $00, $0 + dbsprite 0, -2, 0, 4, $00, X_FLIP + +.OAMData_9f: + dbsprite -2, -1, 0, 0, $00, $0 + dbsprite -1, -1, 0, 0, $01, $0 + dbsprite 0, -1, 0, 0, $02, $0 + dbsprite 1, -1, 0, 0, $03, $0 + dbsprite -2, 0, 0, 0, $04, $0 + dbsprite -1, 0, 0, 0, $05, $0 + dbsprite 0, 0, 0, 0, $06, $0 + dbsprite 1, 0, 0, 0, $07, $0 + +.OAMData_a0: + dbsprite -1, -2, 4, 4, $00, $0 + dbsprite -1, -1, 4, 4, $00, $0 + dbsprite -1, 0, 4, 4, $00, $0 + dbsprite -1, -3, 4, 4, $00, $0 + dbsprite -1, 1, 4, 4, $00, $0 + dbsprite -1, -4, 4, 4, $00, $0 + dbsprite -1, 2, 4, 4, $00, $0 + +.OAMData_a4: + dbsprite -2, -2, 4, 4, $00, $0 + dbsprite -1, -2, 4, 4, $01, $0 + dbsprite 0, -2, 4, 4, $02, $0 + dbsprite -2, -1, 4, 4, $03, $0 + dbsprite -1, -1, 4, 4, $04, $0 + dbsprite 0, -1, 4, 4, $05, $0 + dbsprite -2, 0, 4, 4, $00, Y_FLIP + dbsprite -1, 0, 4, 4, $01, Y_FLIP + dbsprite 0, 0, 4, 4, $02, Y_FLIP + +.OAMData_ac: + dbsprite -2, -1, 0, 4, $00, $0 + dbsprite -1, -1, 0, 4, $01, $0 + dbsprite 0, -1, 0, 4, $01, X_FLIP + dbsprite 1, -1, 0, 4, $00, X_FLIP + +.OAMData_bc: + dbsprite -3, -1, 0, 4, $00, $0 + dbsprite -2, -1, 0, 4, $01, $0 + dbsprite -1, -1, 0, 4, $02, $0 + dbsprite 0, -1, 0, 4, $02, X_FLIP + dbsprite 1, -1, 0, 4, $01, X_FLIP + dbsprite 2, -1, 0, 4, $00, X_FLIP + +.OAMData_c1: + dbsprite -2, -2, 0, 0, $00, $0 + dbsprite -1, -2, 0, 0, $01, $0 + dbsprite 0, -2, 0, 0, $02, $0 + dbsprite 1, -2, 0, 0, $00, X_FLIP + dbsprite -2, -1, 0, 0, $03, $0 + dbsprite -1, -1, 0, 0, $04, $0 + dbsprite 0, -1, 0, 0, $04, X_FLIP + dbsprite 1, -1, 0, 0, $05, $0 + dbsprite -2, 0, 0, 0, $05, X_FLIP | Y_FLIP + dbsprite -1, 0, 0, 0, $04, Y_FLIP + dbsprite 0, 0, 0, 0, $04, X_FLIP | Y_FLIP + dbsprite 1, 0, 0, 0, $03, X_FLIP | Y_FLIP + dbsprite -2, 1, 0, 0, $00, Y_FLIP + dbsprite -1, 1, 0, 0, $02, X_FLIP | Y_FLIP + dbsprite 0, 1, 0, 0, $01, X_FLIP | Y_FLIP + dbsprite 1, 1, 0, 0, $00, X_FLIP | Y_FLIP + +.OAMData_c2: + dbsprite -2, -1, 0, 0, $00, $0 + dbsprite -1, -1, 0, 0, $01, $0 + dbsprite 0, -1, 0, 0, $00, X_FLIP | Y_FLIP + dbsprite -1, 0, 0, 0, $00, $0 + dbsprite 0, 0, 0, 0, $01, $0 + dbsprite 1, 0, 0, 0, $00, X_FLIP | Y_FLIP + +.OAMData_c8: + dbsprite 1, -1, 4, 0, $00, $0 + dbsprite 2, -1, 4, 0, $01, $0 + dbsprite -1, 0, 4, 0, $02, $0 + dbsprite 0, 0, 4, 0, $03, $0 + dbsprite 1, 0, 4, 0, $04, $0 + dbsprite 2, 0, 4, 0, $05, $0 + +.OAMData_ca: + dbsprite -1, -1, 0, 0, $00, $0 + dbsprite 0, -1, 0, 0, $01, X_FLIP | Y_FLIP + dbsprite -1, 0, 0, 0, $01, $0 + dbsprite 0, 0, 0, 0, $01, X_FLIP + +.OAMData_cc: + dbsprite -13, -2, 4, 0, $00, $0 + dbsprite -11, -4, 4, 0, $00, $0 + dbsprite -9, -1, 4, 0, $00, $0 + dbsprite -7, -5, 4, 0, $00, $0 + dbsprite -5, -3, 4, 0, $00, $0 + dbsprite -3, -5, 4, 0, $00, $0 + dbsprite -1, -3, 4, 0, $00, $0 + dbsprite 0, -3, 4, 0, $00, $0 + dbsprite 2, -5, 4, 0, $00, $0 + dbsprite 4, 0, 4, 0, $00, $0 + dbsprite 6, -2, 4, 0, $00, $0 + dbsprite 8, -4, 4, 0, $00, $0 + dbsprite 10, -2, 4, 0, $00, $0 diff --git a/data/battle_anims/object_gfx.asm b/data/battle_anims/object_gfx.asm new file mode 100755 index 00000000..432e513d --- /dev/null +++ b/data/battle_anims/object_gfx.asm @@ -0,0 +1,50 @@ +anim_obj_gfx: MACRO +; # tiles, label + db \1 + dba \2 +ENDM + +AnimObjGFX: +; entries correspond to ANIM_GFX_* constants + anim_obj_gfx 0, AnimObj00GFX + anim_obj_gfx 21, AnimObjHitGFX + anim_obj_gfx 6, AnimObjCutGFX + anim_obj_gfx 6, AnimObjFireGFX + anim_obj_gfx 20, AnimObjWaterGFX + anim_obj_gfx 26, AnimObjLightningGFX + anim_obj_gfx 18, AnimObjPlantGFX + anim_obj_gfx 12, AnimObjSmokeGFX + anim_obj_gfx 9, AnimObjExplosionGFX + anim_obj_gfx 17, AnimObjRocksGFX + anim_obj_gfx 6, AnimObjIceGFX + anim_obj_gfx 10, AnimObjPokeBallGFX + anim_obj_gfx 9, AnimObjPoisonGFX + anim_obj_gfx 13, AnimObjBubbleGFX + anim_obj_gfx 16, AnimObjNoiseGFX + anim_obj_gfx 2, AnimObjPowderGFX + anim_obj_gfx 11, AnimObjBeamGFX + anim_obj_gfx 9, AnimObjSpeedGFX + anim_obj_gfx 9, AnimObjChargeGFX + anim_obj_gfx 19, AnimObjWindGFX + anim_obj_gfx 10, AnimObjWhipGFX + anim_obj_gfx 12, AnimObjEggGFX + anim_obj_gfx 18, AnimObjRopeGFX + anim_obj_gfx 13, AnimObjPsychicGFX + anim_obj_gfx 10, AnimObjReflectGFX + anim_obj_gfx 27, AnimObjStatusGFX + anim_obj_gfx 12, AnimObjSandGFX + anim_obj_gfx 14, AnimObjWebGFX + anim_obj_gfx 16, AnimObjHazeGFX + anim_obj_gfx 7, AnimObjHornGFX + anim_obj_gfx 8, AnimObjFlowerGFX + anim_obj_gfx 40, AnimObjMiscGFX + anim_obj_gfx 36, AnimObjSkyAttackGFX + anim_obj_gfx 16, AnimObjGlobeGFX + anim_obj_gfx 48, AnimObjShapesGFX + anim_obj_gfx 18, AnimObjObjectsGFX + anim_obj_gfx 38, AnimObjShineGFX + anim_obj_gfx 35, AnimObjAngelsGFX + anim_obj_gfx 18, AnimObjWaveGFX + anim_obj_gfx 24, AnimObjAeroblastGFX + anim_obj_gfx 1, NULL + anim_obj_gfx 1, NULL diff --git a/data/battle_anims/objects.asm b/data/battle_anims/objects.asm new file mode 100755 index 00000000..7c6e0759 --- /dev/null +++ b/data/battle_anims/objects.asm @@ -0,0 +1,208 @@ +ABSOLUTE_X EQU $00 +RELATIVE_X EQU $01 + +battleanimobj: MACRO + db \1 ; flags + ; bit 7: priority + ; bit 6: y flip (for enemy) + ; bit 5: x flip (for enemy) + ; bit 0: enable enemy animation coord fixing (x = $b4 - x; see below for y) + db \2 ; enemy animation y fix param + ; if $FF: y = y + 5 tiles + ; else: y = -y - (1 tile) * (is_softboiled_animation) + db \3 ; video sequence + db \4 ; callback + db \5 ; palette + db \6 ; tile offset +ENDM + +BattleAnimObjects: +; entries correspond to ANIM_OBJ_* constants + battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_00, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_HIT ; ANIM_OBJ_00 + battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_01, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_HIT ; ANIM_OBJ_01 + battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_02, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_HIT ; ANIM_OBJ_02 + battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_00, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_HIT ; ANIM_OBJ_03 + battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_01, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_HIT ; ANIM_OBJ_04 + battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_02, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_HIT ; ANIM_OBJ_05 + battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_03, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_HIT ; ANIM_OBJ_06 + battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_04, BATTLEANIMFUNC_1B, PAL_BATTLE_OB_GRAY, ANIM_GFX_HIT ; ANIM_OBJ_07 + battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_05, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_HIT ; ANIM_OBJ_08 + battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_06, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_HIT ; ANIM_OBJ_FANG + battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_07, BATTLEANIMFUNC_09, PAL_BATTLE_OB_GRAY, ANIM_GFX_HIT ; ANIM_OBJ_0A + battleanimobj RELATIVE_X, $aa, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_10, PAL_BATTLE_OB_RED, ANIM_GFX_FIRE ; ANIM_OBJ_EMBER + battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0E, BATTLEANIMFUNC_04, PAL_BATTLE_OB_RED, ANIM_GFX_FIRE ; ANIM_OBJ_DRAGON_RAGE + battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_03, PAL_BATTLE_OB_RED, ANIM_GFX_FIRE ; ANIM_OBJ_FLAMETHROWER + battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_08, PAL_BATTLE_OB_RED, ANIM_GFX_FIRE ; ANIM_OBJ_FIRE_SPIN + battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_0A, PAL_BATTLE_OB_RED, ANIM_GFX_FIRE ; ANIM_OBJ_FIRE_BLAST + battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_11, BATTLEANIMFUNC_03, PAL_BATTLE_OB_RED, ANIM_GFX_FIRE ; ANIM_OBJ_BURNED + battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_12, BATTLEANIMFUNC_08, PAL_BATTLE_OB_BLUE, ANIM_GFX_ICE ; ANIM_OBJ_BLIZZARD + battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_13, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, ANIM_GFX_ICE ; ANIM_OBJ_12 + battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_14, BATTLEANIMFUNC_01, PAL_BATTLE_OB_BLUE, ANIM_GFX_ICE ; ANIM_OBJ_ICE_BEAM + battleanimobj RELATIVE_X | X_FLIP, $78, BATTLEANIMFRAMESET_16, BATTLEANIMFUNC_RAZOR_LEAF, PAL_BATTLE_OB_GREEN, ANIM_GFX_PLANT ; ANIM_OBJ_RAZOR_LEAF + battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_09, BATTLEANIMFUNC_12, PAL_BATTLE_OB_RED, ANIM_GFX_POKE_BALL ; ANIM_OBJ_POKE_BALL + battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_09, BATTLEANIMFUNC_13, PAL_BATTLE_OB_RED, ANIM_GFX_POKE_BALL ; ANIM_OBJ_POKE_BALL_BLOCKED + battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_18, BATTLEANIMFUNC_00, PAL_BATTLE_OB_RED, ANIM_GFX_EXPLOSION ; ANIM_OBJ_17 + battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_18, BATTLEANIMFUNC_00, PAL_BATTLE_OB_RED, ANIM_GFX_EXPLOSION ; ANIM_OBJ_18 + battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_1D, BATTLEANIMFUNC_06, PAL_BATTLE_OB_GRAY, ANIM_GFX_POISON ; ANIM_OBJ_19 + battleanimobj RELATIVE_X, $b4, BATTLEANIMFRAMESET_1F, BATTLEANIMFUNC_38, PAL_BATTLE_OB_GRAY, ANIM_GFX_POISON ; ANIM_OBJ_1A + battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_08, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_SMOKE ; ANIM_OBJ_1B + battleanimobj RELATIVE_X, $a0, BATTLEANIMFRAMESET_08, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_SMOKE ; ANIM_OBJ_BALL_POOF + battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_07, PAL_BATTLE_OB_BROWN, ANIM_GFX_ROCKS ; ANIM_OBJ_BIG_ROCK + battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_1A, BATTLEANIMFUNC_07, PAL_BATTLE_OB_BROWN, ANIM_GFX_ROCKS ; ANIM_OBJ_SMALL_ROCK + battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_1B, BATTLEANIMFUNC_36, PAL_BATTLE_OB_BROWN, ANIM_GFX_ROCKS ; ANIM_OBJ_STRENGTH + battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_84, BATTLEANIMFUNC_36, PAL_BATTLE_OB_BLUE, ANIM_GFX_GLOBE ; ANIM_OBJ_SEISMIC_TOSS + battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_0C, PAL_BATTLE_OB_BLUE, ANIM_GFX_BUBBLE ; ANIM_OBJ_BUBBLE + battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_23, BATTLEANIMFUNC_0D, PAL_BATTLE_OB_BLUE, ANIM_GFX_BUBBLE ; ANIM_OBJ_SURF + battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_0E, PAL_BATTLE_OB_GRAY, ANIM_GFX_NOISE ; ANIM_OBJ_SING + battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $80, BATTLEANIMFRAMESET_27, BATTLEANIMFUNC_0F, PAL_BATTLE_OB_BLUE, ANIM_GFX_WATER ; ANIM_OBJ_WATER_GUN + battleanimobj RELATIVE_X, $b4, BATTLEANIMFRAMESET_2A, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, ANIM_GFX_WATER ; ANIM_OBJ_HYDRO_PUMP + battleanimobj RELATIVE_X, $40, BATTLEANIMFRAMESET_2B, BATTLEANIMFUNC_11, PAL_BATTLE_OB_GREEN, ANIM_GFX_POWDER ; ANIM_OBJ_POWDER + battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_2C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, ANIM_GFX_BEAM ; ANIM_OBJ_27 + battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_2D, BATTLEANIMFUNC_09, PAL_BATTLE_OB_YELLOW, ANIM_GFX_BEAM ; ANIM_OBJ_28 + battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_2E, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, ANIM_GFX_ICE ; ANIM_OBJ_ICE_BUILDUP + battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_2F, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, ANIM_GFX_ICE ; ANIM_OBJ_FROZEN + battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_14, PAL_BATTLE_OB_BROWN, ANIM_GFX_SPEED ; ANIM_OBJ_MASTER_BALL_SPARKLE + battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_14, PAL_BATTLE_OB_YELLOW, ANIM_GFX_BUBBLE ; ANIM_OBJ_RECOVER + battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_31, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, ANIM_GFX_LIGHTNING ; ANIM_OBJ_2D + battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_32, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, ANIM_GFX_LIGHTNING ; ANIM_OBJ_2E + battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_33, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, ANIM_GFX_LIGHTNING ; ANIM_OBJ_2F + battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_34, BATTLEANIMFUNC_15, PAL_BATTLE_OB_YELLOW, ANIM_GFX_LIGHTNING ; ANIM_OBJ_THUNDER_WAVE + battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_36, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, ANIM_GFX_LIGHTNING ; ANIM_OBJ_31 + battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_37, BATTLEANIMFUNC_03, PAL_BATTLE_OB_GRAY, ANIM_GFX_EXPLOSION ; ANIM_OBJ_LIGHTNING_BOLT + battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_38, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, ANIM_GFX_LIGHTNING ; ANIM_OBJ_33 + battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_39, BATTLEANIMFUNC_03, PAL_BATTLE_OB_GRAY, ANIM_GFX_EXPLOSION ; ANIM_OBJ_34 + battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_3A, BATTLEANIMFUNC_16, PAL_BATTLE_OB_GRAY, ANIM_GFX_CUT ; ANIM_OBJ_CLAMP + battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_3C, BATTLEANIMFUNC_17, PAL_BATTLE_OB_GRAY, ANIM_GFX_CUT ; ANIM_OBJ_BITE + battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_3E, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_CUT ; ANIM_OBJ_37 + battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_3F, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_CUT ; ANIM_OBJ_38 + battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_40, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_CUT ; ANIM_OBJ_39 + battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_41, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_CUT ; ANIM_OBJ_3A + battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_42, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_CUT ; ANIM_OBJ_3B + battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_43, BATTLEANIMFUNC_18, PAL_BATTLE_OB_GREEN, ANIM_GFX_CHARGE ; ANIM_OBJ_3C + battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_44, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GREEN, ANIM_GFX_CHARGE ; ANIM_OBJ_3D + battleanimobj RELATIVE_X | X_FLIP, $b8, BATTLEANIMFRAMESET_45, BATTLEANIMFUNC_19, PAL_BATTLE_OB_GRAY, ANIM_GFX_WIND ; ANIM_OBJ_GUST + battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_46, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_WHIP ; ANIM_OBJ_3F + battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_47, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_WHIP ; ANIM_OBJ_40 + battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_48, BATTLEANIMFUNC_1A, PAL_BATTLE_OB_GRAY, ANIM_GFX_WHIP ; ANIM_OBJ_41 + battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_49, BATTLEANIMFUNC_1A, PAL_BATTLE_OB_GRAY, ANIM_GFX_WHIP ; ANIM_OBJ_42 + battleanimobj RELATIVE_X | X_FLIP, $98, BATTLEANIMFRAMESET_4A, BATTLEANIMFUNC_01, PAL_BATTLE_OB_GRAY, ANIM_GFX_WHIP ; ANIM_OBJ_SONICBOOM_JP + battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_4B, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, ANIM_GFX_SPEED ; ANIM_OBJ_44 + battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_4C, BATTLEANIMFUNC_1C, PAL_BATTLE_OB_GREEN, ANIM_GFX_CHARGE ; ANIM_OBJ_ABSORB + battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_4D, BATTLEANIMFUNC_1D, PAL_BATTLE_OB_GRAY, ANIM_GFX_EGG ; ANIM_OBJ_EGG + battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_51, BATTLEANIMFUNC_1E, PAL_BATTLE_OB_YELLOW, ANIM_GFX_SPEED ; ANIM_OBJ_47 + battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_52, BATTLEANIMFUNC_1F, PAL_BATTLE_OB_GREEN, ANIM_GFX_ROPE ; ANIM_OBJ_48 + battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_54, BATTLEANIMFUNC_1F, PAL_BATTLE_OB_GREEN, ANIM_GFX_ROPE ; ANIM_OBJ_49 + battleanimobj RELATIVE_X | X_FLIP, $68, BATTLEANIMFRAMESET_56, BATTLEANIMFUNC_LEECH_SEED, PAL_BATTLE_OB_GREEN, ANIM_GFX_PLANT ; ANIM_OBJ_LEECH_SEED + battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_59, BATTLEANIMFUNC_21, PAL_BATTLE_OB_GRAY, ANIM_GFX_NOISE ; ANIM_OBJ_4B + battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_5C, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, ANIM_GFX_PSYCHIC ; ANIM_OBJ_WAVE + battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_5D, BATTLEANIMFUNC_22, PAL_BATTLE_OB_YELLOW, ANIM_GFX_SPEED ; ANIM_OBJ_CONFUSE_RAY + battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $88, BATTLEANIMFRAMESET_5F, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, ANIM_GFX_BEAM ; ANIM_OBJ_4E + battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $88, BATTLEANIMFRAMESET_2D, BATTLEANIMFUNC_09, PAL_BATTLE_OB_YELLOW, ANIM_GFX_BEAM ; ANIM_OBJ_4F + battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_60, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, ANIM_GFX_REFLECT ; ANIM_OBJ_SCREEN + battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_60, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_REFLECT ; ANIM_OBJ_HARDEN + battleanimobj RELATIVE_X | X_FLIP, $50, BATTLEANIMFRAMESET_61, BATTLEANIMFUNC_23, PAL_BATTLE_OB_YELLOW, ANIM_GFX_STATUS ; ANIM_OBJ_CHICK + battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_63, BATTLEANIMFUNC_24, PAL_BATTLE_OB_GRAY, ANIM_GFX_STATUS ; ANIM_OBJ_AMNESIA + battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_66, BATTLEANIMFUNC_25, PAL_BATTLE_OB_GRAY, ANIM_GFX_STATUS ; ANIM_OBJ_ASLEEP + battleanimobj RELATIVE_X, $50, BATTLEANIMFRAMESET_1C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_POISON ; ANIM_OBJ_SKULL + battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLEANIMFRAMESET_67, BATTLEANIMFUNC_26, PAL_BATTLE_OB_BROWN, ANIM_GFX_SAND ; ANIM_OBJ_56 + battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLEANIMFRAMESET_68, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BROWN, ANIM_GFX_SAND ; ANIM_OBJ_57 + battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_69, BATTLEANIMFUNC_01, PAL_BATTLE_OB_GRAY, ANIM_GFX_SAND ; ANIM_OBJ_58 + battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_6D, BATTLEANIMFUNC_28, PAL_BATTLE_OB_YELLOW, ANIM_GFX_STATUS ; ANIM_OBJ_PARALYZED + battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_6A, BATTLEANIMFUNC_27, PAL_BATTLE_OB_GRAY, ANIM_GFX_WEB ; ANIM_OBJ_STRING_SHOT + battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, ANIM_GFX_HAZE ; ANIM_OBJ_HAZE + battleanimobj RELATIVE_X | X_FLIP, $48, BATTLEANIMFRAMESET_70, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, ANIM_GFX_HAZE ; ANIM_OBJ_MIST + battleanimobj RELATIVE_X | X_FLIP, $48, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, ANIM_GFX_HAZE ; ANIM_OBJ_SMOG + battleanimobj RELATIVE_X | X_FLIP, $78, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_POISON_GAS, PAL_BATTLE_OB_GRAY, ANIM_GFX_HAZE ; ANIM_OBJ_POISON_GAS + battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLEANIMFRAMESET_71, BATTLEANIMFUNC_HORN, PAL_BATTLE_OB_GRAY, ANIM_GFX_HORN ; ANIM_OBJ_HORN + battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLEANIMFRAMESET_72, BATTLEANIMFUNC_2C, PAL_BATTLE_OB_GRAY, ANIM_GFX_HORN ; ANIM_OBJ_60 + battleanimobj RELATIVE_X, $48, BATTLEANIMFRAMESET_73, BATTLEANIMFUNC_2D, PAL_BATTLE_OB_RED, ANIM_GFX_FLOWER ; ANIM_OBJ_PETAL_DANCE + battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_06, PAL_BATTLE_OB_GRAY, ANIM_GFX_EGG ; ANIM_OBJ_SLUDGE_BOMB + battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_75, BATTLEANIMFUNC_2E, PAL_BATTLE_OB_BROWN, ANIM_GFX_STATUS ; ANIM_OBJ_PAY_DAY + battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_4A, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, ANIM_GFX_WHIP ; ANIM_OBJ_64 + battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_2F, PAL_BATTLE_OB_GRAY, ANIM_GFX_SPEED ; ANIM_OBJ_MIMIC + battleanimobj RELATIVE_X, $78, BATTLEANIMFRAMESET_76, BATTLEANIMFUNC_POISON_GAS, PAL_BATTLE_OB_RED, ANIM_GFX_OBJECTS ; ANIM_OBJ_ATTRACT + battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_30, PAL_BATTLE_OB_GRAY, ANIM_GFX_MISC ; ANIM_OBJ_BONEMERANG + battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, ANIM_GFX_MISC ; ANIM_OBJ_BONE_CLUB + battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_MISC ; ANIM_OBJ_BONE_RUSH + battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_08, PAL_BATTLE_OB_YELLOW, ANIM_GFX_OBJECTS ; ANIM_OBJ_SWIFT + battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_79, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_MISC ; ANIM_OBJ_KINESIS + battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_7A, BATTLEANIMFUNC_31, PAL_BATTLE_OB_YELLOW, ANIM_GFX_SPEED ; ANIM_OBJ_FLASH + battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_7A, BATTLEANIMFUNC_31, PAL_BATTLE_OB_YELLOW, ANIM_GFX_SPEED ; ANIM_OBJ_SHINY + battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_7B, BATTLEANIMFUNC_32, PAL_BATTLE_OB_GRAY, ANIM_GFX_SKY_ATTACK ; ANIM_OBJ_SKY_ATTACK + battleanimobj RELATIVE_X | X_FLIP, $98, BATTLEANIMFRAMESET_7C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_WATER ; ANIM_OBJ_LICK + battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_7D, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_REFLECT ; ANIM_OBJ_WITHDRAW + battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_2F, PAL_BATTLE_OB_BLUE, ANIM_GFX_BUBBLE ; ANIM_OBJ_71 + battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_7E, BATTLEANIMFUNC_33, PAL_BATTLE_OB_YELLOW, ANIM_GFX_CHARGE ; ANIM_OBJ_GROWTH + battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_7F, BATTLEANIMFUNC_2F, PAL_BATTLE_OB_GRAY, ANIM_GFX_EXPLOSION ; ANIM_OBJ_CONVERSION2 + battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_34, PAL_BATTLE_OB_GRAY, ANIM_GFX_HAZE ; ANIM_OBJ_SMOKE + battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_35, PAL_BATTLE_OB_GRAY, ANIM_GFX_EGG ; ANIM_OBJ_SMOKESCREEN + battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_80, BATTLEANIMFUNC_33, PAL_BATTLE_OB_GRAY, ANIM_GFX_WHIP ; ANIM_OBJ_SWORDS_DANCE + battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_81, BATTLEANIMFUNC_37, PAL_BATTLE_OB_GRAY, ANIM_GFX_SPEED ; ANIM_OBJ_SPEED_LINE + battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_85, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_SHAPES ; ANIM_OBJ_SHARPEN + battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_86, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_SHAPES ; ANIM_OBJ_DEFENSE_CURL + battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_87, BATTLEANIMFUNC_39, PAL_BATTLE_OB_GRAY, ANIM_GFX_MISC ; ANIM_OBJ_7A + battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_3A, PAL_BATTLE_OB_YELLOW, ANIM_GFX_SPEED ; ANIM_OBJ_7B + battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_34, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, ANIM_GFX_LIGHTNING ; ANIM_OBJ_DISABLE + battleanimobj RELATIVE_X | X_FLIP | PRIORITY, $88, BATTLEANIMFRAMESET_88, BATTLEANIMFUNC_3B, PAL_BATTLE_OB_BLUE, ANIM_GFX_WIND ; ANIM_OBJ_AGILITY + battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_76, BATTLEANIMFUNC_25, PAL_BATTLE_OB_RED, ANIM_GFX_OBJECTS ; ANIM_OBJ_HEART + battleanimobj RELATIVE_X, $98, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_34, PAL_BATTLE_OB_RED, ANIM_GFX_FIRE ; ANIM_OBJ_FLAME_WHEEL + battleanimobj RELATIVE_X, $a8, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_3C, PAL_BATTLE_OB_RED, ANIM_GFX_FIRE ; ANIM_OBJ_SACRED_FIRE + battleanimobj RELATIVE_X | X_FLIP, $68, BATTLEANIMFRAMESET_89, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, ANIM_GFX_MISC ; ANIM_OBJ_COTTON_SPORE + battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_8A, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_MISC ; ANIM_OBJ_MILK_DRINK + battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_8C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_MISC ; ANIM_OBJ_ANGER + battleanimobj RELATIVE_X | X_FLIP, $50, BATTLEANIMFRAMESET_8D, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, ANIM_GFX_MISC ; ANIM_OBJ_84 + battleanimobj RELATIVE_X, $40, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_40, PAL_BATTLE_OB_GRAY, ANIM_GFX_NOISE ; ANIM_OBJ_85 + battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLEANIMFRAMESET_8E, BATTLEANIMFUNC_41, PAL_BATTLE_OB_RED, ANIM_GFX_MISC ; ANIM_OBJ_BATON_PASS + battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_8F, BATTLEANIMFUNC_3E, PAL_BATTLE_OB_GRAY, ANIM_GFX_MISC ; ANIM_OBJ_LOCK_ON + battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_93, BATTLEANIMFUNC_3E, PAL_BATTLE_OB_GRAY, ANIM_GFX_MISC ; ANIM_OBJ_MIND_READER + battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_97, BATTLEANIMFUNC_3D, PAL_BATTLE_OB_GRAY, ANIM_GFX_MISC ; ANIM_OBJ_SAFEGUARD + battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_3D, PAL_BATTLE_OB_YELLOW, ANIM_GFX_OBJECTS ; ANIM_OBJ_PROTECT + battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_99, BATTLEANIMFUNC_2E, PAL_BATTLE_OB_GRAY, ANIM_GFX_STATUS ; ANIM_OBJ_THIEF + battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, ANIM_GFX_EGG ; ANIM_OBJ_OCTAZOOKA + battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_99, BATTLEANIMFUNC_35, PAL_BATTLE_OB_RED, ANIM_GFX_STATUS ; ANIM_OBJ_PRESENT + battleanimobj RELATIVE_X | X_FLIP, $70, BATTLEANIMFRAMESET_8B, BATTLEANIMFUNC_3F, PAL_BATTLE_OB_GRAY, ANIM_GFX_MISC ; ANIM_OBJ_SPIKES + battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_15, BATTLEANIMFUNC_08, PAL_BATTLE_OB_GRAY, ANIM_GFX_ICE ; ANIM_OBJ_POWDER_SNOW + battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_11, BATTLEANIMFUNC_02, PAL_BATTLE_OB_RED, ANIM_GFX_FIRE ; ANIM_OBJ_DRAGONBREATH + battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_7F, BATTLEANIMFUNC_42, PAL_BATTLE_OB_GRAY, ANIM_GFX_EXPLOSION ; ANIM_OBJ_CONVERSION + battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_9A, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_WEB ; ANIM_OBJ_SPIDER_WEB + battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_9B, BATTLEANIMFUNC_35, PAL_BATTLE_OB_RED, ANIM_GFX_OBJECTS ; ANIM_OBJ_93 + battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_23, PAL_BATTLE_OB_GRAY, ANIM_GFX_ANGELS ; ANIM_OBJ_NIGHTMARE + battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9D, BATTLEANIMFUNC_25, PAL_BATTLE_OB_GRAY, ANIM_GFX_ANGELS ; ANIM_OBJ_IN_NIGHTMARE + battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_ANGELS ; ANIM_OBJ_LOVELY_KISS + battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9E, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, ANIM_GFX_ANGELS ; ANIM_OBJ_SWEET_KISS + battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $80, BATTLEANIMFRAMESET_9F, BATTLEANIMFUNC_3A, PAL_BATTLE_OB_GREEN, ANIM_GFX_OBJECTS ; ANIM_OBJ_SKETCH + battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_A0, BATTLEANIMFUNC_16, PAL_BATTLE_OB_GRAY, ANIM_GFX_OBJECTS ; ANIM_OBJ_99 + battleanimobj RELATIVE_X | X_FLIP, $70, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_43, PAL_BATTLE_OB_YELLOW, ANIM_GFX_OBJECTS ; ANIM_OBJ_9A + battleanimobj RELATIVE_X | X_FLIP, $c0, BATTLEANIMFRAMESET_A2, BATTLEANIMFUNC_01, PAL_BATTLE_OB_GRAY, ANIM_GFX_ANGELS ; ANIM_OBJ_DESTINY_BOND + battleanimobj RELATIVE_X | X_FLIP, $40, BATTLEANIMFRAMESET_A3, BATTLEANIMFUNC_44, PAL_BATTLE_OB_YELLOW, ANIM_GFX_SHINE ; ANIM_OBJ_MORNING_SUN + battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_A4, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_SHINE ; ANIM_OBJ_GLIMMER + battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_A5, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, ANIM_GFX_SHINE ; ANIM_OBJ_MOONLIGHT + battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_43, BATTLEANIMFUNC_45, PAL_BATTLE_OB_RED, ANIM_GFX_CHARGE ; ANIM_OBJ_HIDDEN_POWER + battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_A6, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_CUT ; ANIM_OBJ_A0 + battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_A7, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_CUT ; ANIM_OBJ_A1 + battleanimobj RELATIVE_X | X_FLIP, $00, BATTLEANIMFRAMESET_B4, BATTLEANIMFUNC_4A, PAL_BATTLE_OB_BROWN, ANIM_GFX_POWDER ; ANIM_OBJ_SANDSTORM + battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_A8, BATTLEANIMFUNC_02, PAL_BATTLE_OB_YELLOW, ANIM_GFX_LIGHTNING ; ANIM_OBJ_ZAP_CANNON + battleanimobj RELATIVE_X | X_FLIP, $40, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_11, PAL_BATTLE_OB_GRAY, ANIM_GFX_ANGELS ; ANIM_OBJ_SPITE + battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLEANIMFRAMESET_A9, BATTLEANIMFUNC_46, PAL_BATTLE_OB_GRAY, ANIM_GFX_OBJECTS ; ANIM_OBJ_CURSE + battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_47, PAL_BATTLE_OB_GRAY, ANIM_GFX_NOISE ; ANIM_OBJ_PERISH_SONG + battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_AA, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_SHINE ; ANIM_OBJ_FORESIGHT + battleanimobj RELATIVE_X | X_FLIP, $b8, BATTLEANIMFRAMESET_AB, BATTLEANIMFUNC_48, PAL_BATTLE_OB_GRAY, ANIM_GFX_WIND ; ANIM_OBJ_RAPID_SPIN + battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_AC, BATTLEANIMFUNC_44, PAL_BATTLE_OB_GRAY, ANIM_GFX_WIND ; ANIM_OBJ_SWAGGER + battleanimobj RELATIVE_X, $a8, BATTLEANIMFRAMESET_05, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, ANIM_GFX_HIT ; ANIM_OBJ_AA + battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_43, PAL_BATTLE_OB_GRAY, ANIM_GFX_NOISE ; ANIM_OBJ_AB + battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_AD, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, ANIM_GFX_PSYCHIC ; ANIM_OBJ_MEAN_LOOK + battleanimobj RELATIVE_X, $a8, BATTLEANIMFRAMESET_AE, BATTLEANIMFUNC_49, PAL_BATTLE_OB_GRAY, ANIM_GFX_HIT ; ANIM_OBJ_AD + battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_AF, BATTLEANIMFUNC_01, PAL_BATTLE_OB_YELLOW, ANIM_GFX_SPEED ; ANIM_OBJ_AE + battleanimobj RELATIVE_X | X_FLIP, $00, BATTLEANIMFRAMESET_B0, BATTLEANIMFUNC_4A, PAL_BATTLE_OB_GRAY, ANIM_GFX_WATER ; ANIM_OBJ_RAIN + battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_70, BATTLEANIMFUNC_4B, PAL_BATTLE_OB_RED, ANIM_GFX_HAZE ; ANIM_OBJ_B0 + battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_B1, BATTLEANIMFUNC_4C, PAL_BATTLE_OB_GRAY, ANIM_GFX_STATUS ; ANIM_OBJ_PSYCH_UP + battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_4D, PAL_BATTLE_OB_BROWN, ANIM_GFX_ROCKS ; ANIM_OBJ_ANCIENTPOWER + battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_B3, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, ANIM_GFX_AEROBLAST ; ANIM_OBJ_AEROBLAST + battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_04, PAL_BATTLE_OB_BLUE, ANIM_GFX_EGG ; ANIM_OBJ_SHADOW_BALL + battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_4E, PAL_BATTLE_OB_BROWN, ANIM_GFX_ROCKS ; ANIM_OBJ_ROCK_SMASH + battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_73, BATTLEANIMFUNC_08, PAL_BATTLE_OB_RED, ANIM_GFX_FLOWER ; ANIM_OBJ_FLOWER + battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_89, BATTLEANIMFUNC_4F, PAL_BATTLE_OB_RED, ANIM_GFX_MISC ; ANIM_OBJ_COTTON + battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B5, BATTLEANIMFUNC_00, PAL_BATTLE_OB_ENEMY, ANIM_GFX_PLAYERHEAD ; ANIM_OBJ_ENEMYFEET_1ROW + battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B6, BATTLEANIMFUNC_00, PAL_BATTLE_OB_PLAYER, ANIM_GFX_ENEMYFEET ; ANIM_OBJ_PLAYERHEAD_1ROW + battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B7, BATTLEANIMFUNC_00, PAL_BATTLE_OB_ENEMY, ANIM_GFX_PLAYERHEAD ; ANIM_OBJ_ENEMYFEET_2ROW + battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B8, BATTLEANIMFUNC_00, PAL_BATTLE_OB_PLAYER, ANIM_GFX_ENEMYFEET ; ANIM_OBJ_PLAYERHEAD_2ROW diff --git a/engine/battle_anims/anim_commands.asm b/engine/battle_anims/anim_commands.asm new file mode 100755 index 00000000..a60a2645 --- /dev/null +++ b/engine/battle_anims/anim_commands.asm @@ -0,0 +1,1358 @@ +; Battle animation command interpreter. + +PlayBattleAnim: + ld c, 6 +.wait + call BattleAnimDelayFrame + dec c + jr nz, .wait + + call BattleAnimAssignPals + call BattleAnimRequestPals + call BattleAnimDelayFrame + + ld hl, hVBlank + ld a, [hl] + push af + + ld [hl], 1 + call BattleAnimRunScript + + pop af + ldh [hVBlank], a + + ld a, 1 + ldh [hBGMapMode], a + + call BattleAnimDelayFrame + call BattleAnimDelayFrame + call BattleAnimDelayFrame + call WaitSFX + ret + +BattleAnimRunScript: + ld a, [wFXAnimID + 1] + and a + jr nz, .hi_byte + + ld a, [wOptions] + bit 7, a + jr nz, .disabled + + call BattleAnimClearHud + call RunBattleAnimScript + + call BattleAnimAssignPals + call BattleAnimRequestPals + + xor a + ldh [hSCX], a + ldh [hSCY], a + call BattleAnimDelayFrame + call BattleAnimRestoreHuds + +.disabled + ld a, [wNumHits] + and a + jr z, .done + + ld l, a + ld h, 0 + ld de, ANIM_MISS + add hl, de + ld a, l + ld [wFXAnimID], a + ld a, h + ld [wFXAnimID + 1], a + +.hi_byte + call WaitSFX + call PlayHitSound + call RunBattleAnimScript + +.done + call BattleAnim_RevertPals + ret + +RunBattleAnimScript: + call ClearBattleAnims + +.playframe + call RunBattleAnimCommand + call _ExecuteBGEffects + call BattleAnim_UpdateOAM_All + call PushLYOverrides + call BattleAnimRequestPals + +; Speed up Rollout's animation. + ld a, [wFXAnimID + 1] + or a + jr nz, .not_rollout + + ld a, [wFXAnimID] + cp ROLLOUT + jr nz, .not_rollout + + ld a, ANIM_BG_2D + ld b, NUM_BG_EFFECTS + ld de, BG_EFFECT_STRUCT_LENGTH + ld hl, wBGEffect1Function +.find + cp [hl] + jr z, .done + add hl, de + dec b + jr nz, .find + +.not_rollout + call BattleAnimDelayFrame + +.done + ld a, [wBattleAnimFlags] + bit BATTLEANIM_STOP_F, a + jr z, .playframe + + call BattleAnim_ClearOAM + ret + +BattleAnimClearHud: + call BattleAnimDelayFrame + call WaitTop + call ClearActorHud + ld a, $1 + ldh [hBGMapMode], a + call BattleAnimDelayFrame + call BattleAnimDelayFrame + call BattleAnimDelayFrame + call WaitTop + ret + +BattleAnimRestoreHuds: + call BattleAnimDelayFrame + call WaitTop + +; this block should just be "call UpdateBattleHuds" + ld hl, UpdateBattleHuds + ld a, BANK(UpdatePlayerHUD) + rst FarCall + + ld a, $1 + ldh [hBGMapMode], a + call BattleAnimDelayFrame + call BattleAnimDelayFrame + call BattleAnimDelayFrame + call WaitTop + ret + +BattleAnimRequestPals: + ldh a, [hCGB] + and a + ret z + + ldh a, [rBGP] + ld b, a + ld a, [wBGP] + cp b + call nz, BattleAnim_SetBGPals + + ldh a, [rOBP0] + ld b, a + ld a, [wOBP0] + cp b + call nz, BattleAnim_SetOBPals + ret + +BattleAnimDelayFrame: +; Like DelayFrame but wastes battery life. + + ld a, 1 + ld [wVBlankOccurred], a +.wait + ld a, [wVBlankOccurred] + and a + jr nz, .wait + ret + +ClearActorHud: + ldh 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 + +Unreferenced_Functioncc1ff: + xor a + ldh [hBGMapMode], a + ld a, LOW(vBGMap0 tile $28) + ldh [hBGMapAddress], a + ld a, HIGH(vBGMap0 tile $28) + ldh [hBGMapAddress + 1], a + call WaitBGMap2 + ld a, $60 + ldh [hWY], a + xor a ; LOW(vBGMap0) + ldh [hBGMapAddress], a + ld a, HIGH(vBGMap0) + ldh [hBGMapAddress + 1], a + call BattleAnimDelayFrame + ret + +BattleAnim_ClearOAM: + ld a, [wBattleAnimFlags] + bit BATTLEANIM_KEEPSPRITES_F, a + jr z, .delete + + ; Instead of deleting the sprites, make them all use PAL_BATTLE_OB_ENEMY + ld hl, wVirtualOAMSprite00Attributes + ld c, NUM_SPRITE_OAM_STRUCTS +.loop + ld a, [hl] + and $ff ^ (PALETTE_MASK | VRAM_BANK_1) ; PAL_BATTLE_OB_ENEMY (0) + ld [hli], a +rept SPRITEOAMSTRUCT_LENGTH - 1 + inc hl +endr + dec c + jr nz, .loop + ret + +.delete + ld hl, wVirtualOAM + ld c, wVirtualOAMEnd - wVirtualOAM + xor a +.loop2 + ld [hli], a + dec c + jr nz, .loop2 + ret + +RunBattleAnimCommand: + call .CheckTimer + ret nc + call .RunScript + ret + +.CheckTimer: + ld a, [wBattleAnimDelay] + and a + jr z, .done + + dec a + ld [wBattleAnimDelay], a + and a + ret + +.done + scf + ret + +.RunScript: +.loop + call GetBattleAnimByte + + cp anim_ret_command + jr nz, .not_done_with_anim + +; Return from a subroutine. + ld hl, wBattleAnimFlags + bit BATTLEANIM_IN_SUBROUTINE_F, [hl] + jr nz, .do_anim + + set BATTLEANIM_STOP_F, [hl] + ret + +.not_done_with_anim + cp anim_obj_command + jr nc, .do_anim + + ld [wBattleAnimDelay], a + ret + +.do_anim + call .DoCommand + + jr .loop + +.DoCommand: +; Execute battle animation command in [wBattleAnimByte]. + ld a, [wBattleAnimByte] + sub anim_obj_command + + 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 + +BattleAnimCommands:: +; entries correspond to macros/scripts/battle_anims.asm enumeration + dw BattleAnimCmd_Obj + dw BattleAnimCmd_1GFX + dw BattleAnimCmd_2GFX + dw BattleAnimCmd_3GFX + dw BattleAnimCmd_4GFX + dw BattleAnimCmd_5GFX + dw BattleAnimCmd_IncObj + dw BattleAnimCmd_SetObj + dw BattleAnimCmd_IncBGEffect + dw BattleAnimCmd_BattlerGFX_1Row + dw BattleAnimCmd_BattlerGFX_2Row + dw BattleAnimCmd_CheckPokeball + dw BattleAnimCmd_Transform + dw BattleAnimCmd_RaiseSub + dw BattleAnimCmd_DropSub + dw BattleAnimCmd_ResetObp0 + dw BattleAnimCmd_Sound + dw BattleAnimCmd_Cry + dw BattleAnimCmd_MinimizeOpp + dw BattleAnimCmd_OAMOn + dw BattleAnimCmd_OAMOff + dw BattleAnimCmd_ClearObjs + dw BattleAnimCmd_BeatUp + dw BattleAnimCmd_E7 + dw BattleAnimCmd_E8 + dw BattleAnimCmd_E9 + dw BattleAnimCmd_EA ; dummy + dw BattleAnimCmd_EB ; dummy + dw BattleAnimCmd_EC ; dummy + dw BattleAnimCmd_ED ; dummy + dw BattleAnimCmd_IfParamAnd + dw BattleAnimCmd_JumpUntil + dw BattleAnimCmd_BGEffect + dw BattleAnimCmd_BGP + dw BattleAnimCmd_OBP0 + dw BattleAnimCmd_OBP1 + dw BattleAnimCmd_KeepSprites + dw BattleAnimCmd_F5 + dw BattleAnimCmd_F6 + dw BattleAnimCmd_F7 + dw BattleAnimCmd_IfParamEqual + dw BattleAnimCmd_SetVar + dw BattleAnimCmd_IncVar + dw BattleAnimCmd_IfVarEqual + dw BattleAnimCmd_Jump + dw BattleAnimCmd_Loop + dw BattleAnimCmd_Call + dw BattleAnimCmd_Ret + +BattleAnimCmd_E8: +BattleAnimCmd_E9: +BattleAnimCmd_EA: +BattleAnimCmd_EB: +BattleAnimCmd_EC: +BattleAnimCmd_ED: + ret + +BattleAnimCmd_Ret: + ld hl, wBattleAnimFlags + res BATTLEANIM_IN_SUBROUTINE_F, [hl] + ld hl, wBattleAnimParent + ld e, [hl] + inc hl + ld d, [hl] + ld hl, wBattleAnimAddress + ld [hl], e + inc hl + ld [hl], d + ret + +BattleAnimCmd_Call: + call GetBattleAnimByte + ld e, a + call GetBattleAnimByte + ld d, a + push de + ld hl, wBattleAnimAddress + ld e, [hl] + inc hl + ld d, [hl] + ld hl, wBattleAnimParent + ld [hl], e + inc hl + ld [hl], d + pop de + ld hl, wBattleAnimAddress + ld [hl], e + inc hl + ld [hl], d + ld hl, wBattleAnimFlags + set BATTLEANIM_IN_SUBROUTINE_F, [hl] + ret + +BattleAnimCmd_Jump: + call GetBattleAnimByte + ld e, a + call GetBattleAnimByte + ld d, a + ld hl, wBattleAnimAddress + ld [hl], e + inc hl + ld [hl], d + ret + +BattleAnimCmd_Loop: + call GetBattleAnimByte + ld hl, wBattleAnimFlags + bit BATTLEANIM_IN_LOOP_F, [hl] + jr nz, .continue_loop + and a + jr z, .perpetual + dec a + set BATTLEANIM_IN_LOOP_F, [hl] + ld [wBattleAnimLoops], a +.continue_loop + ld hl, wBattleAnimLoops + ld a, [hl] + and a + jr z, .return_from_loop + dec [hl] +.perpetual + call GetBattleAnimByte + ld e, a + call GetBattleAnimByte + ld d, a + ld hl, wBattleAnimAddress + ld [hl], e + inc hl + ld [hl], d + ret + +.return_from_loop + ld hl, wBattleAnimFlags + res BATTLEANIM_IN_LOOP_F, [hl] + ld hl, wBattleAnimAddress + ld e, [hl] + inc hl + ld d, [hl] + inc de + inc de + ld [hl], d + dec hl + ld [hl], e + ret + +BattleAnimCmd_JumpUntil: + ld hl, wBattleAnimParam + ld a, [hl] + and a + jr z, .dont_jump + + dec [hl] + call GetBattleAnimByte + ld e, a + call GetBattleAnimByte + ld d, a + ld hl, wBattleAnimAddress + ld [hl], e + inc hl + ld [hl], d + ret + +.dont_jump + ld hl, wBattleAnimAddress + ld e, [hl] + inc hl + ld d, [hl] + inc de + inc de + ld [hl], d + dec hl + ld [hl], e + ret + +BattleAnimCmd_SetVar: + call GetBattleAnimByte + ld [wBattleAnimVar], a + ret + +BattleAnimCmd_IncVar: + ld hl, wBattleAnimVar + inc [hl] + ret + +BattleAnimCmd_IfVarEqual: + call GetBattleAnimByte + ld hl, wBattleAnimVar + cp [hl] + jr z, .jump + + ld hl, wBattleAnimAddress + 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, wBattleAnimAddress + ld [hl], e + inc hl + ld [hl], d + ret + +BattleAnimCmd_IfParamEqual: + call GetBattleAnimByte + ld hl, wBattleAnimParam + cp [hl] + jr z, .jump + + ld hl, wBattleAnimAddress + 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, wBattleAnimAddress + ld [hl], e + inc hl + ld [hl], d + ret + +BattleAnimCmd_IfParamAnd: + call GetBattleAnimByte + ld e, a + ld a, [wBattleAnimParam] + and e + jr nz, .jump + + ld hl, wBattleAnimAddress + 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, wBattleAnimAddress + ld [hl], e + inc hl + ld [hl], d + ret + +BattleAnimCmd_Obj: +; index, x, y, param + call GetBattleAnimByte + ld [wBattleObjectTempID], a + call GetBattleAnimByte + ld [wBattleObjectTempXCoord], a + call GetBattleAnimByte + ld [wBattleObjectTempYCoord], a + call GetBattleAnimByte + ld [wBattleObjectTempParam], a + call QueueBattleAnimation + ret + +BattleAnimCmd_BGEffect: + call GetBattleAnimByte + ld [wBattleAnimTemp0], a + call GetBattleAnimByte + ld [wBattleAnimTemp1], a + call GetBattleAnimByte + ld [wBattleAnimTemp2], a + call GetBattleAnimByte + ld [wBattleAnimTemp3], a + call _QueueBGEffect + ret + +BattleAnimCmd_BGP: + call GetBattleAnimByte + ld [wBGP], a + ret + +BattleAnimCmd_OBP0: + call GetBattleAnimByte + ld [wOBP0], a + ret + +BattleAnimCmd_OBP1: + call GetBattleAnimByte + ld [wOBP1], a + ret + +BattleAnimCmd_ResetObp0: + ldh a, [hSGB] + and a + ld a, $e0 + jr z, .not_sgb + ld a, $f0 +.not_sgb + ld [wOBP0], a + ret + +BattleAnimCmd_ClearObjs: +; BUG: This function only clears the first 6⅔ objects + ld hl, wActiveAnimObjects + ld a, $a0 ; should be NUM_ANIM_OBJECTS * BATTLEANIMSTRUCT_LENGTH +.loop + ld [hl], 0 + inc hl + dec a + jr nz, .loop + ret + +BattleAnimCmd_1GFX: +BattleAnimCmd_2GFX: +BattleAnimCmd_3GFX: +BattleAnimCmd_4GFX: +BattleAnimCmd_5GFX: + ld a, [wBattleAnimByte] + and $f + ld c, a + ld hl, wBattleAnimTileDict + xor a + ld [wBattleAnimTemp0], a +.loop + ld a, [wBattleAnimTemp0] + cp (vTiles1 - vTiles0) / LEN_2BPP_TILE - BATTLEANIM_BASE_TILE + ret nc + call GetBattleAnimByte + ld [hli], a + ld a, [wBattleAnimTemp0] + ld [hli], a + push bc + push hl + ld l, a + ld h, $0 +rept 4 + add hl, hl +endr + ld de, vTiles0 tile BATTLEANIM_BASE_TILE + add hl, de + ld a, [wBattleAnimByte] + call LoadBattleAnimGFX + ld a, [wBattleAnimTemp0] + add c + ld [wBattleAnimTemp0], a + pop hl + pop bc + dec c + jr nz, .loop + ret + +BattleAnimCmd_IncObj: + call GetBattleAnimByte + ld e, NUM_ANIM_OBJECTS + ld bc, wActiveAnimObjects +.loop + ld hl, BATTLEANIMSTRUCT_INDEX + add hl, bc + ld d, [hl] + ld a, [wBattleAnimByte] + cp d + jr z, .found + ld hl, BATTLEANIMSTRUCT_LENGTH + add hl, bc + ld c, l + ld b, h + dec e + jr nz, .loop + ret + +.found + ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX + add hl, bc + inc [hl] + ret + +BattleAnimCmd_IncBGEffect: + call GetBattleAnimByte + ld e, NUM_BG_EFFECTS + ld bc, wBGEffect1Function +.loop + ld hl, $0 + add hl, bc + ld d, [hl] + ld a, [wBattleAnimByte] + cp d + jr z, .found + ld hl, 4 + add hl, bc + ld c, l + ld b, h + dec e + jr nz, .loop + ret + +.found + ld hl, BG_EFFECT_STRUCT_JT_INDEX + add hl, bc + inc [hl] + ret + +BattleAnimCmd_SetObj: + call GetBattleAnimByte + ld e, NUM_ANIM_OBJECTS + ld bc, wActiveAnimObjects +.loop + ld hl, BATTLEANIMSTRUCT_INDEX + add hl, bc + ld d, [hl] + ld a, [wBattleAnimByte] + cp d + jr z, .found + ld hl, BATTLEANIMSTRUCT_LENGTH + add hl, bc + ld c, l + ld b, h + dec e + jr nz, .loop + ret + +.found + call GetBattleAnimByte + ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX + add hl, bc + ld [hl], a + ret + +BattleAnimCmd_BattlerGFX_1Row: + ld hl, wBattleAnimTileDict +.loop + ld a, [hl] + and a + jr z, .okay + inc hl + inc hl + jr .loop + +.okay + ld a, ANIM_GFX_PLAYERHEAD + ld [hli], a + ld a, ($80 - 6 - 7) - BATTLEANIM_BASE_TILE + ld [hli], a + ld a, ANIM_GFX_ENEMYFEET + ld [hli], a + ld a, ($80 - 6) - BATTLEANIM_BASE_TILE + ld [hl], a + + ld hl, vTiles0 tile ($80 - 6 - 7) + ld de, vTiles2 tile $06 ; Enemy feet start tile + ld a, 7 tiles ; Enemy pic height + ld [wBattleAnimTemp0], a + ld a, 7 ; Copy 7x1 tiles + call .LoadFeet + ld de, vTiles2 tile $31 ; Player head start tile + ld a, 6 tiles ; Player pic height + ld [wBattleAnimTemp0], a + ld a, 6 ; Copy 6x1 tiles + call .LoadFeet + ret + +.LoadFeet: + push af + push hl + push de + lb bc, BANK(@), 1 + call Request2bpp + pop de + ld a, [wBattleAnimTemp0] + ld l, a + ld h, 0 + add hl, de + ld e, l + ld d, h + pop hl + ld bc, 1 tiles + add hl, bc + pop af + dec a + jr nz, .LoadFeet + ret + +BattleAnimCmd_BattlerGFX_2Row: + ld hl, wBattleAnimTileDict +.loop + ld a, [hl] + and a + jr z, .okay + inc hl + inc hl + jr .loop + +.okay + ld a, ANIM_GFX_PLAYERHEAD + ld [hli], a + ld a, ($80 - 6 * 2 - 7 * 2) - BATTLEANIM_BASE_TILE + ld [hli], a + ld a, ANIM_GFX_ENEMYFEET + ld [hli], a + ld a, ($80 - 6 * 2) - BATTLEANIM_BASE_TILE + ld [hl], a + + ld hl, vTiles0 tile ($80 - 6 * 2 - 7 * 2) + ld de, vTiles2 tile $05 ; Enemy feet start tile + ld a, 7 tiles ; Enemy pic height + ld [wBattleAnimTemp0], a + ld a, 7 ; Copy 7x2 tiles + call .LoadHead + ld de, vTiles2 tile $31 ; Player head start tile + ld a, 6 tiles ; Player pic height + ld [wBattleAnimTemp0], a + ld a, 6 ; Copy 6x2 tiles + call .LoadHead + ret + +.LoadHead: + push af + push hl + push de + lb bc, BANK(@), 2 + call Request2bpp + pop de + ld a, [wBattleAnimTemp0] + ld l, a + ld h, 0 + add hl, de + ld e, l + ld d, h + pop hl + ld bc, 2 tiles + add hl, bc + pop af + dec a + jr nz, .LoadHead + ret + +BattleAnimCmd_CheckPokeball: + callfar GetPokeBallWobble + ld a, c + ld [wBattleAnimVar], a + ret + +BattleAnimCmd_E7: + ret + +BattleAnimCmd_Transform: + ld a, [wCurPartySpecies] + push af + + ldh a, [hBattleTurn] + and a + jr z, .player + + ld a, [wTempBattleMonSpecies] ; TempBattleMonSpecies + ld [wCurPartySpecies], a ; CurPartySpecies + ld hl, wBattleMonDVs ; BattleMonDVs + predef GetUnownLetter + ld de, vTiles2 tile $00 + predef GetMonFrontpic + jr .done + +.player + ld a, [wTempEnemyMonSpecies] ; TempEnemyMonSpecies + ld [wCurPartySpecies], a ; CurPartySpecies + ld hl, wEnemyMonDVs ; EnemyMonDVs + predef GetUnownLetter + ld de, vTiles2 tile $31 + predef GetMonBackpic + +.done + pop af + ld [wCurPartySpecies], a + ret + +BattleAnimCmd_RaiseSub: + xor a ; sScratch + call OpenSRAM + +GetSubstitutePic: ; used only for BANK(GetSubstitutePic) + ld hl, sScratch + ld bc, (7 * 7) tiles +.loop + xor a + ld [hli], a + dec bc + ld a, c + or b + jr nz, .loop + + ldh a, [hBattleTurn] + and a + jr z, .player + + ld hl, MonsterSpriteGFX + 0 tiles + ld de, sScratch + (2 * 7 + 5) tiles + call .CopyTile + ld hl, MonsterSpriteGFX + 1 tiles + ld de, sScratch + (3 * 7 + 5) tiles + call .CopyTile + ld hl, MonsterSpriteGFX + 2 tiles + ld de, sScratch + (2 * 7 + 6) tiles + call .CopyTile + ld hl, MonsterSpriteGFX + 3 tiles + ld de, sScratch + (3 * 7 + 6) tiles + call .CopyTile + + ld hl, vTiles2 tile $00 + ld de, sScratch + lb bc, BANK(GetSubstitutePic), 7 * 7 + call Request2bpp + jr .done + +.player + ld hl, MonsterSpriteGFX + 4 tiles + ld de, sScratch + (2 * 6 + 4) tiles + call .CopyTile + ld hl, MonsterSpriteGFX + 5 tiles + ld de, sScratch + (3 * 6 + 4) tiles + call .CopyTile + ld hl, MonsterSpriteGFX + 6 tiles + ld de, sScratch + (2 * 6 + 5) tiles + call .CopyTile + ld hl, MonsterSpriteGFX + 7 tiles + ld de, sScratch + (3 * 6 + 5) tiles + call .CopyTile + + ld hl, vTiles2 tile $31 + ld de, sScratch + lb bc, BANK(GetSubstitutePic), 6 * 6 + call Request2bpp + +.done + call CloseSRAM + ret + +.CopyTile: + ld bc, 1 tiles + ld a, BANK(MonsterSpriteGFX) + call FarCopyBytes + ret + +BattleAnimCmd_MinimizeOpp: + xor a + call OpenSRAM + +GetMinimizePic: + ld hl, sScratch + ld bc, (7 * 7) tiles +.loop + xor a + ld [hli], a + dec bc + ld a, c + or b + jr nz, .loop + + ldh a, [hBattleTurn] + and a + jr z, .player + + ld de, sScratch + $1a tiles + call CopyMinimizePic + ld hl, vTiles2 tile $00 + ld de, sScratch + lb bc, BANK(GetMinimizePic), 7 * 7 + call Request2bpp + jr .done + +.player + ld de, sScratch + $160 + call CopyMinimizePic + ld hl, vTiles2 tile $31 + ld de, sScratch + lb bc, BANK(GetMinimizePic), 6 * 6 + call Request2bpp + +.done + call CloseSRAM + ret + +CopyMinimizePic: + ld hl, MinimizePic + ld bc, $10 + ld a, BANK(MinimizePic) + call FarCopyBytes + ret + +MinimizePic: +INCBIN "gfx/battle/minimize.2bpp" + +BattleAnimCmd_DropSub: + ld a, [wCurPartySpecies] + push af + ldh a, [hBattleTurn] + and a + jr z, .player + + callfar DropEnemySub + jr .done + +.player + callfar DropPlayerSub + +.done + pop af + ld [wCurPartySpecies], a + ret + +BattleAnimCmd_BeatUp: + ld a, [wCurPartySpecies] + push af + + ld a, [wBattleAnimParam] + ld [wCurPartySpecies], a + + ldh a, [hBattleTurn] + and a + jr z, .player + + ld hl, wBattleMonDVs + predef GetUnownLetter + ld de, vTiles2 tile $00 + predef GetMonFrontpic + jr .done + +.player + ld hl, wEnemyMonDVs + predef GetUnownLetter + ld de, vTiles2 tile $31 + predef GetMonBackpic + +.done + pop af + ld [wCurPartySpecies], a ; CurPartySpecies + ld b, SCGB_BATTLE_COLORS + call GetSGBLayout + ret + +BattleAnimCmd_OAMOn: + ret + +BattleAnimCmd_OAMOff: + ret + +BattleAnimCmd_KeepSprites: + ld hl, wBattleAnimFlags + set BATTLEANIM_KEEPSPRITES_F, [hl] + ret + +BattleAnimCmd_F5: + ret + +BattleAnimCmd_F6: + ret + +BattleAnimCmd_F7: + ret + +BattleAnimCmd_Sound: + call GetBattleAnimByte + ld e, a + srl a + srl a + ld [wSFXDuration], a + call .GetCryTrack + maskbits NUM_NOISE_CHANS + ld [wCryTracks], a + + ld e, a + ld d, 0 + ld hl, .GetPanning + add hl, de + ld a, [hl] + ld [wStereoPanningMask], a + + call GetBattleAnimByte + ld e, a + ld d, 0 + callfar PlayStereoSFX + + ret + +.GetPanning: + db $f0, $0f, $f0, $0f + +.GetCryTrack: + ldh a, [hBattleTurn] + and a + jr nz, .enemy + + ld a, e + ret + +.enemy + ld a, e + xor 1 + ret + +BattleAnimCmd_Cry: + call GetBattleAnimByte + maskbits NUM_NOISE_CHANS + ld e, a + ld d, 0 + ld hl, .CryData +rept 4 + add hl, de +endr + + ldh a, [hBattleTurn] + and a + jr nz, .enemy + + ld a, $f0 + ld [wCryTracks], a + ld a, [wBattleMonSpecies] + jr .done_cry_tracks + +.enemy + ld a, $0f + ld [wCryTracks], a + ld a, [wEnemyMonSpecies] + +.done_cry_tracks + push hl + call LoadCry + pop hl + jr c, .done + + ld a, [hli] + ld c, a + ld a, [hli] + ld b, a + + push hl + ld hl, wCryPitch + ld a, [hli] + ld h, [hl] + ld l, a + add hl, bc + ld a, l + ld [wCryPitch], a + ld a, h + ld [wCryPitch + 1], a + pop hl + + ld a, [hli] + ld c, a + ld b, [hl] + ld hl, wCryLength + ld a, [hli] + ld h, [hl] + ld l, a + add hl, bc + + ld a, l + ld [wCryLength], a + ld a, h + ld [wCryLength + 1], a + ld a, 1 + ld [wStereoPanningMask], a + + callfar _PlayCry + +.done + ret + +.CryData: +; +pitch, +length + dw $0000, $00c0 + dw $0000, $0040 + dw $0000, $0000 + dw $0000, $0000 + +PlayHitSound: + ld a, [wNumHits] + cp $1 + jr z, .okay + cp $4 + ret nz + +.okay + ld a, [wTypeModifier] + and $7f + ret z + + cp EFFECTIVE + 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 + +BattleAnimAssignPals: + ldh a, [hCGB] + and a + jr nz, .cgb + ldh a, [hSGB] + and a + ld a, %11100000 + jr z, .sgb + ld a, %11110000 + +.sgb + ld [wOBP0], a + ld a, %11100100 + ld [wBGP], a + ld [wOBP1], a + ret + +.cgb + ld a, %11100100 + ld [wBGP], a + ld [wOBP0], a + ld [wOBP1], a + call DmgToCgbBGPals + lb de, %11100100, %11100100 + call DmgToCgbObjPals + ret + +ClearBattleAnims:: +; Clear animation block + ld hl, wLYOverrides + ld bc, wBattleAnimEnd - wLYOverrides +.loop + ld [hl], 0 + inc hl + dec bc + ld a, c + or b + jr nz, .loop + + ld hl, wFXAnimID + ld e, [hl] + inc hl + ld d, [hl] + ld hl, BattleAnimations + add hl, de + add hl, de + call GetBattleAnimPointer + call BattleAnimAssignPals + call BattleAnimDelayFrame + ret + +BattleAnim_RevertPals: + call WaitTop + ld a, %11100100 + ld [wBGP], a + ld [wOBP0], a + ld [wOBP1], a + call DmgToCgbBGPals + lb de, %11100100, %11100100 + call DmgToCgbObjPals + xor a + ldh [hSCX], a + ldh [hSCY], a + call BattleAnimDelayFrame + ld a, $1 + ldh [hBGMapMode], a + ret + +BattleAnim_SetBGPals: + ldh [rBGP], a + ldh a, [hCGB] + and a + ret z + ld hl, wBGPals2 + ld de, wBGPals1 + ldh a, [rBGP] + ld b, a + ld c, 7 + call CopyPals + ld hl, wOBPals2 + ld de, wOBPals1 + ldh a, [rBGP] + ld b, a + ld c, 2 + call CopyPals + ld a, $1 + ldh [hCGBPalUpdate], a + ret + +BattleAnim_SetOBPals: + ldh [rOBP0], a + ldh a, [hCGB] + and a + ret z + ld hl, wOBPals2 palette PAL_BATTLE_OB_GRAY + ld de, wOBPals1 palette PAL_BATTLE_OB_GRAY + ldh a, [rOBP0] + ld b, a + ld c, 2 + call CopyPals + ld a, $1 + ldh [hCGBPalUpdate], a + ret + +BattleAnim_UpdateOAM_All: + ld a, 0 + ld [wBattleAnimOAMPointerLo], a + ld hl, wActiveAnimObjects + ld e, NUM_ANIM_OBJECTS +.loop + ld a, [hl] + and a + jr z, .next + ld c, l + ld b, h + push hl + push de + call DoBattleAnimFrame + call BattleAnimOAMUpdate + pop de + pop hl + jr c, .done + +.next + ld bc, BATTLEANIMSTRUCT_LENGTH + add hl, bc + dec e + jr nz, .loop + ld a, [wBattleAnimOAMPointerLo] + ld l, a + ld h, HIGH(wVirtualOAM) +.loop2 + ld a, l + cp LOW(wVirtualOAMEnd) + jr nc, .done + xor a + ld [hli], a + jr .loop2 + +.done + ret diff --git a/engine/battle_anims/core.asm b/engine/battle_anims/core.asm new file mode 100755 index 00000000..fcde1be6 --- /dev/null +++ b/engine/battle_anims/core.asm @@ -0,0 +1,317 @@ +QueueBattleAnimation: + ld hl, wActiveAnimObjects + ld e, NUM_ANIM_OBJECTS +.loop + ld a, [hl] + and a + jr z, .done + ld bc, BATTLEANIMSTRUCT_LENGTH + add hl, bc + dec e + jr nz, .loop + scf + ret + +.done + ld c, l + ld b, h + ld hl, wLastAnimObjectIndex + inc [hl] + call InitBattleAnimation + ret + +DeinitBattleAnimation: + ld hl, BATTLEANIMSTRUCT_INDEX + add hl, bc + ld [hl], $0 + ret + +InitBattleAnimation: + ld a, [wBattleObjectTempID] + ld e, a + ld d, 0 + ld hl, BattleAnimObjects +rept 6 + add hl, de +endr + ld e, l + ld d, h + ld hl, BATTLEANIMSTRUCT_INDEX + add hl, bc + ld a, [wLastAnimObjectIndex] + ld [hli], a ; Index + ld a, [de] + inc de + ld [hli], a ; 01 + ld a, [de] + inc de + ld [hli], a ; 02 + ld a, [de] + inc de + ld [hli], a ; Frameset ID + ld a, [de] + inc de + ld [hli], a ; Function + ld a, [de] + inc de + ld [hli], a ; 05 + ld a, [de] + call GetBattleAnimTileOffset + ld [hli], a ; Tile ID + ld a, [wBattleObjectTempXCoord] + ld [hli], a ; X Coord + ld a, [wBattleObjectTempYCoord] + ld [hli], a ; Y Coord + xor a + ld [hli], a ; X Offset + ld [hli], a ; Y Offset + ld a, [wBattleObjectTempParam] + ld [hli], a ; Param + xor a + ld [hli], a ; 0c + dec a + ld [hli], a ; 0d + xor a + ld [hli], a ; 0e + ld [hli], a ; 0f + ld [hl], a ; 10 + ret + +BattleAnimOAMUpdate: + call InitBattleAnimBuffer + call GetBattleAnimFrame + cp dowait_command + jp z, .done + cp delanim_command + jp z, .delete + + push af + ld hl, wBattleAnimTempOAMFlags + ld a, [wBattleAnimTempFrameOAMFlags] + xor [hl] + and PRIORITY | Y_FLIP | X_FLIP + ld [hl], a + pop af + + push bc + call GetBattleAnimOAMPointer + ld a, [wBattleAnimTempTileID] + add [hl] ; tile offset + ld [wBattleAnimTempTileID], a + inc hl + ld a, [hli] ; oam data length + ld c, a + ld a, [hli] ; oam data pointer + ld h, [hl] + ld l, a + ld a, [wBattleAnimOAMPointerLo] + ld e, a + ld d, HIGH(wVirtualOAM) + +.loop + ; Y Coord + ld a, [wBattleAnimTempYCoord] + ld b, a + ld a, [wBattleAnimTempYOffset] + add b + ld b, a + push hl + ld a, [hl] + ld hl, wBattleAnimTempOAMFlags + bit OAM_Y_FLIP, [hl] + jr z, .no_yflip + add $8 + xor $ff + inc a +.no_yflip + pop hl + add b + ld [de], a + + ; X Coord + inc hl + inc de + ld a, [wBattleAnimTempXCoord] + ld b, a + ld a, [wBattleAnimTempXOffset] + add b + ld b, a + push hl + ld a, [hl] + ld hl, wBattleAnimTempOAMFlags + bit OAM_X_FLIP, [hl] + jr z, .no_xflip + add $8 + xor $ff + inc a +.no_xflip + pop hl + add b + ld [de], a + + ; Tile ID + inc hl + inc de + ld a, [wBattleAnimTempTileID] + add BATTLEANIM_BASE_TILE + add [hl] + ld [de], a + + ; Attributes + inc hl + inc de + ld a, [wBattleAnimTempOAMFlags] + ld b, a + ld a, [hl] + xor b + and PRIORITY | Y_FLIP | X_FLIP + ld b, a + ld a, [hl] + and OBP_NUM + or b + ld b, a + ld a, [wBattleAnimTempPalette] + and PALETTE_MASK | VRAM_BANK_1 + or b + ld [de], a + + inc hl + inc de + ld a, e + ld [wBattleAnimOAMPointerLo], a + cp LOW(wVirtualOAMEnd) + jr nc, .exit_set_carry + dec c + jr nz, .loop + pop bc + jr .done + +.delete + call DeinitBattleAnimation + +.done + and a + ret + +.exit_set_carry + pop bc + scf + ret + +InitBattleAnimBuffer: + ld hl, BATTLEANIMSTRUCT_01 + add hl, bc + ld a, [hl] + + and PRIORITY + ld [wBattleAnimTempOAMFlags], a + xor a + ld [wBattleAnimTempFrameOAMFlags], a + ld hl, BATTLEANIMSTRUCT_PALETTE + add hl, bc + ld a, [hl] + ld [wBattleAnimTempPalette], a + ld hl, BATTLEANIMSTRUCT_02 + add hl, bc + ld a, [hl] + ld [wBattleAnimTempField02], a + ld hl, BATTLEANIMSTRUCT_TILEID + add hl, bc + ld a, [hli] + ld [wBattleAnimTempTileID], a + ld a, [hli] + ld [wBattleAnimTempXCoord], a + ld a, [hli] + ld [wBattleAnimTempYCoord], a + ld a, [hli] + ld [wBattleAnimTempXOffset], a + ld a, [hli] + ld [wBattleAnimTempYOffset], a + + ldh a, [hBattleTurn] + and a + ret z + + ld hl, BATTLEANIMSTRUCT_01 + add hl, bc + ld a, [hl] + ld [wBattleAnimTempOAMFlags], a + bit 0, [hl] + ret z + + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hli] + ld d, a + ld a, (-10 * 8) + 4 + sub d + ld [wBattleAnimTempXCoord], a + ld a, [hli] + ld d, a + ld a, [wBattleAnimTempField02] + cp $ff + jr nz, .check_kinesis_softboiled_milkdrink + ld a, 5 * 8 + add d + jr .done + +.check_kinesis_softboiled_milkdrink + sub d + push af + ld a, [wFXAnimID + 1] + or a + jr nz, .no_sub + ld a, [wFXAnimID] + cp KINESIS + jr z, .kinesis + cp SOFTBOILED + jr z, .softboiled + cp MILK_DRINK + jr nz, .no_sub +.kinesis +.softboiled +.milk_drink + pop af + sub 1 * 8 + jr .done + +.no_sub + pop af +.done + ld [wBattleAnimTempYCoord], a + ld a, [hli] + xor $ff + inc a + ld [wBattleAnimTempXOffset], a + ret + +GetBattleAnimTileOffset: + push hl + push bc + ld hl, wBattleAnimTileDict + ld b, a + ld c, 10 / 2 +.loop + ld a, [hli] + cp b + jr z, .load + inc hl + dec c + jr nz, .loop + xor a + jr .done + +.load + ld a, [hl] +.done + pop bc + pop hl + ret + +_ExecuteBGEffects: + callfar ExecuteBGEffects + ret + +_QueueBGEffect: + callfar QueueBGEffect + ret diff --git a/engine/battle_anims/functions.asm b/engine/battle_anims/functions.asm new file mode 100755 index 00000000..e7bd9beb --- /dev/null +++ b/engine/battle_anims/functions.asm @@ -0,0 +1,4154 @@ +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_PARAM + 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_PARAM + 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_PARAM + 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_PARAM + 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_PARAM + add hl, bc + ld a, [hl] + call Functionce64f + ret + +BattleAnimFunction_02: + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $84 + jr nc, .asm_cd158 + ld hl, BATTLEANIMSTRUCT_PARAM + add hl, bc + ld a, [hl] + call Functionce64f + 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, [wCurItem] + ld e, 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_PARAM + 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_PARAM + add hl, bc + ld a, [hl] + call Functionce64f + 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_PARAM + 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_PARAM + 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_PARAM + 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_PARAM + add hl, bc + ld a, [hl] + and $f + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + add [hl] + ld [hl], a + ld hl, BATTLEANIMSTRUCT_PARAM + 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_PARAM + 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_PARAM + 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_PARAM + 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_PARAM + add hl, bc + bit 6, [hl] + ret z + ld hl, BATTLEANIMSTRUCT_FRAME + add hl, bc + ld [hl], $5 + ret + +.sine_cosine + ld hl, BATTLEANIMSTRUCT_PARAM + 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 Functioncd49c + 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_PARAM + 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 Functionce64f + ret + +Functioncd49c: + ld hl, BATTLEANIMSTRUCT_PARAM + 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_PARAM + 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_PARAM + 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 Functioncd49c + 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_PARAM + add hl, bc + ld a, [hl] + call Functionce64f + 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_PARAM + 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, LOW(rSCY) + ldh [hLCDCPointer], a + ld a, $58 + ldh [hLYOverrideStart], a + ld a, $5e + ldh [hLYOverrideEnd], a + ret + +.one + ld hl, BATTLEANIMSTRUCT_PARAM + 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 + ldh [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 + ldh [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 + ldh [hLCDCPointer], a + ldh [hLYOverrideStart], a + ldh [hLYOverrideEnd], a +.four + call DeinitBattleAnimation + ret + +asm_cd6da: + inc a + inc a + ld [hl], a + sub $10 + ret c + ldh [hLYOverrideStart], a + ret + +BattleAnimFunction_0E: + call BattleAnim_AnonJumptable +.anon_dw + dw Functioncd62f + dw Functioncd63c + +Functioncd62f: + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_PARAM + add hl, bc + ld a, BATTLEANIMFRAMESET_24 + add [hl] ; BATTLEANIMFRAMESET_25 BATTLEANIMFRAMESET_26 + call ReinitBattleAnimFrameset + +Functioncd63c: + 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 Functionce64f + 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 Functioncd66a + dw Functioncd66d + dw Functioncd6a8 + dw Functioncd6bb + +Functioncd66a: + call BattleAnim_IncAnonJumptableIndex +Functioncd66d: + ld hl, BATTLEANIMSTRUCT_YCOORD + add hl, bc + ld a, [hl] + cp $30 + jr c, .asm_cd747 + ld a, $2 + call Functionce64f + 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 +Functioncd6a8: + 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 +Functioncd6bb: + 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 Functioncd6f0 + dw Functioncd717 + +Functioncd6f0: + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_PARAM + add hl, bc + ld a, [hl] + and $f0 + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_PARAM + 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_PARAM + add hl, bc + ld [hl], $1 +Functioncd717: + 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_PARAM + 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 Functioncd764 + dw Functioncd75c + dw Functioncd764 + dw Functioncd765 + +Functioncd75c: + call BattleAnim_IncAnonJumptableIndex + ld a, BATTLEANIMFRAMESET_35 + call ReinitBattleAnimFrameset +Functioncd764: + ret + +Functioncd765: + call DeinitBattleAnimation + ret + +BattleAnimFunction_16: + call BattleAnim_AnonJumptable +.anon_dw + dw Functioncd77a + dw Functioncd7a5 + dw Functioncd7d4 + dw Functioncd7d4 + dw Functioncd7d4 + dw Functioncd7d4 + dw Functioncd7d8 + +Functioncd77a: + 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_PARAM + 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_PARAM + add hl, bc + ld a, [hl] + and $7f + ld [hl], a +Functioncd7a5: + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_PARAM + 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 ; BATTLEANIMFRAMESET_3B + ; BATTLEANIMFRAMESET_A1 + jr .reinit + +.load_no_inc + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld a, [hl] ; BATTLEANIMFRAMESET_3A + ; BATTLEANIMFRAMESET_A0 +.reinit + call ReinitBattleAnimFrameset + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + inc [hl] + ld a, [hl] + and $1f + ret nz +Functioncd7d4: + call BattleAnim_IncAnonJumptableIndex + ret + +Functioncd7d8: + ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX + add hl, bc + ld [hl], $1 + ret + +BattleAnimFunction_17: + call BattleAnim_AnonJumptable +.anon_dw + dw Functioncd7f0 + dw Functioncd811 + dw Functioncd83a + dw Functioncd83a + dw Functioncd83a + dw Functioncd83a + dw Functioncd83e + +Functioncd7f0: + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_PARAM + 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_PARAM + add hl, bc + ld a, [hl] + and $7f + ld [hl], a + +Functioncd811: + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_PARAM + 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, BATTLEANIMFRAMESET_3D + jr .asm_cd8e8 + +.asm_cd8e6 + ld a, BATTLEANIMFRAMESET_3C +.asm_cd8e8 + call ReinitBattleAnimFrameset + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + inc [hl] + inc [hl] + ld a, [hl] + and $1f + ret nz + +Functioncd83a: + call BattleAnim_IncAnonJumptableIndex + ret + +Functioncd83e: + ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX + add hl, bc + ld [hl], $1 + ret + +BattleAnimFunction_18: + call BattleAnim_AnonJumptable +.anon_dw + dw Functioncd84c + dw Functioncd858 + +Functioncd84c: + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $28 + inc hl + ld [hl], $0 +Functioncd858: + ld hl, BATTLEANIMSTRUCT_PARAM + 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, -$80 + 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 Functioncd8a6 + dw Functioncd8af + dw Functioncd8b3 + dw Functioncd8af + dw Functioncd8c0 + +Functioncd8a6: + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_PARAM + add hl, bc + ld [hl], $0 +Functioncd8af: + call Functioncd8df + ret + +Functioncd8b3: + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $88 + jr c, asm_cd988 + call BattleAnim_IncAnonJumptableIndex + ret + +Functioncd8c0: + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $b8 + jr c, asm_cd988 + call DeinitBattleAnimation + ret + +asm_cd988: + call Functioncd8df + 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 + +Functioncd8df: + call Functioncd939 + 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_PARAM + 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_PARAM + 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_PARAM + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_XOFFSET + add hl, bc + ld [hli], a + ld [hl], a + ret + +Functioncd939: + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld e, [hl] + ld d, 0 + ld hl, Unknown_cd946 + add hl, de + ld d, [hl] + ret + +Unknown_cd946: + 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_PARAM + 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 Functioncd991 + dw Functioncd97f + dw Functioncd991 + +Functioncd97f: + ld hl, BATTLEANIMSTRUCT_FRAMESET_ID + add hl, bc + ld a, [hl] + inc a ; BATTLEANIMFRAMESET_53 + ; BATTLEANIMFRAMESET_55 + call ReinitBattleAnimFrameset + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $8 +Functioncd991: + 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 Functioncd9d2 + 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 + +Functioncd9d2: + 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_PARAM + 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 Functioncda24 + dw Functioncda2e + dw Functioncda3e + +Functioncda24: + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld [hl], $40 + ret + +Functioncda2e: + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld a, [hl] + cp $20 + jr c, .asm_cdaf6 + call Functioncd9d2 + ret + +.asm_cdaf6 + call BattleAnim_IncAnonJumptableIndex +Functioncda3e: + 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 Functioncda58 + dw Functioncda59 + dw Functioncda6d + dw Functioncda95 + dw Functioncdaaa + +Functioncda58: + ret + +Functioncda59: + 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 + +Functioncda6d: + 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 + +Functioncda95: + 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 +Functioncdaaa: + 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 Functioncdae4 + dw Functioncdaf8 + dw Functioncdb14 + dw Functioncdb30 + dw Functioncdbb9 + dw Functioncdb5f + dw Functioncdb06 + dw Functioncdb63 + dw Functioncdb6c + dw Functioncdb7e + dw Functioncdbb9 + dw Functioncdb8d + dw Functioncdb9c + dw Functioncdbb9 + +Functioncdae4: + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $28 + inc hl + ld [hl], $10 + ld hl, BATTLEANIMSTRUCT_PARAM + add hl, bc + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX + add hl, bc + ld [hl], a + ret + +Functioncdaf8: + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $40 + jr nc, .asm_cdbbd + inc [hl] +.asm_cdbbd + call Functioncdbba + ret + +Functioncdb06: + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $4b + jr nc, .asm_cdbcb + inc [hl] +.asm_cdbcb + call Functioncdbba + ret + +Functioncdb14: + 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 + +Functioncdb30: + 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, -$80 + 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 + +Functioncdb5f: + call DeinitBattleAnimation + ret + +Functioncdb63: + ld a, BATTLEANIMFRAMESET_4E + call ReinitBattleAnimFrameset + call BattleAnim_IncAnonJumptableIndex + ret + +Functioncdb6c: + 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 + +Functioncdb7e: + ld a, BATTLEANIMFRAMESET_50 + call ReinitBattleAnimFrameset + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], $4 + call BattleAnim_IncAnonJumptableIndex + ret + +Functioncdb8d: + ld a, BATTLEANIMFRAMESET_4F + call ReinitBattleAnimFrameset + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $40 + ret + +Functioncdb9c: + 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 +Functioncdbb9: + ret + +Functioncdbba: + 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_PARAM + 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 Functioncdc0f + dw Functioncdc32 + +Functioncdc0f: + ldh a, [hBattleTurn] + and a + jr z, .asm_cdcd9 + ld hl, BATTLEANIMSTRUCT_PARAM + 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_PARAM + add hl, bc + ld a, BATTLEANIMFRAMESET_59 + add [hl] ; BATTLEANIMFRAMESET_5A BATTLEANIMFRAMESET_5B + call ReinitBattleAnimFrameset + ret + +Functioncdc32: + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + and a + jr z, .asm_cdcfa + dec [hl] + call Functioncdc43 + ret + +.asm_cdcfa + call DeinitBattleAnimation + ret + +Functioncdc43: + 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_PARAM + 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 Functioncdc76 + dw Functioncdc94 + +Functioncdc76: + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_PARAM + add hl, bc + ld a, [hl] + and $3f + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_PARAM + add hl, bc + ld a, [hl] + and $80 + rlca + ld [hl], a + add BATTLEANIMFRAMESET_5D ; BATTLEANIMFRAMESET_5E + call ReinitBattleAnimFrameset + ret + +Functioncdc94: + ld hl, BATTLEANIMSTRUCT_PARAM + 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 Functioncdcdc + dw Functioncdd01 + +Functioncdcdc: + 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_PARAM + add hl, bc + ld a, [hl] + and $80 + rlca + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + add [hl] ; BATTLEANIMFRAMESET_61 BATTLEANIMFRAMESET_62 + ; BATTLEANIMFRAMESET_9C BATTLEANIMFRAMESET_9D + call ReinitBattleAnimFrameset + ld hl, BATTLEANIMSTRUCT_PARAM + add hl, bc + ld a, [hl] + and $7f + ld [hl], a +Functioncdd01: + ld hl, BATTLEANIMSTRUCT_PARAM + 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_PARAM + 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 ; BATTLEANIMFRAMESET_62 + ; BATTLEANIMFRAMESET_9D + jr .asm_cddf5 + +.asm_cddf0 + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] ; BATTLEANIMFRAMESET_61 + ; BATTLEANIMFRAMESET_9C +.asm_cddf5 + call ReinitBattleAnimFrameset + ret + +BattleAnimFunction_24: + call BattleAnim_AnonJumptable +.anon_dw + dw Functioncdd47 + dw Functioncdd65 + dw Functioncdd66 + +Functioncdd47: + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_PARAM + add hl, bc + ld a, [hl] + add BATTLEANIMFRAMESET_63 ; BATTLEANIMFRAMESET_64 BATTLEANIMFRAMESET_65 + call ReinitBattleAnimFrameset + ld hl, BATTLEANIMSTRUCT_PARAM + add hl, bc + ld e, [hl] + ld d, 0 + ld hl, Unknown_cdd6a + add hl, de + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], a +Functioncdd65: + ret + +Functioncdd66: + call DeinitBattleAnimation + ret + +Unknown_cdd6a: + 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] + lb hl, -1, $a0 + 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 Functioncddb7 + dw Functioncddcd + +Functioncddb7: + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_PARAM + 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 ; BATTLEANIMFRAMESET_6B BATTLEANIMFRAMESET_6C + call ReinitBattleAnimFrameset +Functioncddcd: + ret + +BattleAnimFunction_28: + call BattleAnim_AnonJumptable +.anon_dw + dw Functioncddd5 + dw Functioncde04 + +Functioncddd5: + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $0 + ld hl, BATTLEANIMSTRUCT_PARAM + 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 + +Functioncde04: + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + and a + jr z, .asm_cdec9 + dec [hl] + ret + +.asm_cdec9 + ld hl, BATTLEANIMSTRUCT_PARAM + 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 Functioncdea5 + dw BattleAnimFunction_SpiralDescent + +Functioncdea5: + 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_PARAM + 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_PARAM + 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_PARAM + 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_PARAM + 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 Functioncdf59 + dw Functioncdf68 + dw Functioncdfa4 + +Functioncdf59: + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $34 + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld [hl], $10 +Functioncdf68: + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $6c + jr c, .asm_ce02d + ret + +.asm_ce02d + ld a, $2 + call Functionce64f + 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 + +Functioncdfa4: + call DeinitBattleAnimation + ret + +BattleAnimFunction_Horn: + call BattleAnim_AnonJumptable +.anon_dw + dw .zero + dw .one + dw .two + dw Functioncdfe3 +.zero: + ld hl, BATTLEANIMSTRUCT_PARAM + 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 Functionce64f + ret + +.two: + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld a, [hl] + cp $20 + jr c, Functioncdfe3 + call DeinitBattleAnimation + ret + +Functioncdfe3: + 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 Functionce013 + dw Functionce03d + dw Functionce022 + +Functionce013: + ld hl, BATTLEANIMSTRUCT_PARAM + add hl, bc + ld a, [hl] + and $f0 + swap a + ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX + add hl, bc + ld [hl], a + ret + +Functionce022: + 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 +Functionce03d: + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $84 + jr c, .asm_ce105 + call DeinitBattleAnimation + ret + +.asm_ce105 + ld hl, BATTLEANIMSTRUCT_PARAM + add hl, bc + ld a, [hl] + call Functionce64f + ret + +BattleAnimFunction_2E: + call BattleAnim_AnonJumptable +.anon_dw + dw Functionce05a + dw Functionce06f + +Functionce05a: + 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 +Functionce06f: + 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_PARAM + 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_PARAM + 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_PARAM + 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_PARAM + 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_PARAM + 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 Functionce133 + dw Functionce140 + +Functionce133: + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_YCOORD + add hl, bc + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld [hl], a +Functionce140: + ld hl, BATTLEANIMSTRUCT_PARAM + 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_PARAM + 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_PARAM + add hl, bc + inc [hl] + ret + +BattleAnimFunction_31: + call BattleAnim_AnonJumptable +.anon_dw + dw Functionce172 + dw Functionce199 + +Functionce172: + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_PARAM + 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_PARAM + 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 +Functionce199: + ret + +BattleAnimFunction_32: + call BattleAnim_AnonJumptable +.anon_dw + dw Functionce1a5 + dw Functionce1b9 + dw Functionce1bd + dw Functionce1ce + +Functionce1a5: + call BattleAnim_IncAnonJumptableIndex + ldh 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 + +Functionce1b9: + call Functionce1e4 + ret + +Functionce1bd: + call Functionce1e4 + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $84 + ret nc + ld a, $4 + call Functionce64f + ret + +Functionce1ce: + call Functionce1e4 + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $d0 + jr nc, .asm_ce29b + ld a, $4 + call Functionce64f + ret + +.asm_ce29b + call DeinitBattleAnimation + ret + +Functionce1e4: + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld a, [hl] + and $7 + inc [hl] + srl a + ld e, a + ld d, $0 + ldh a, [hSGB] + and a + jr nz, .asm_ce2b6 + ld hl, Unknown_ce209 + jr .asm_ce2b9 + +.asm_ce2b6 + ld hl, Unknown_ce20d +.asm_ce2b9 + add hl, de + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + and [hl] + ld [wOBP0], a + ret + +Unknown_ce209: + db $ff, $aa, $55, $aa +Unknown_ce20d: + db $ff, $ff, $00, $00 + +BattleAnimFunction_33: + ld hl, BATTLEANIMSTRUCT_PARAM + 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_PARAM + 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 Functionce24b + dw Functionce275 + dw Functionce291 + +Functionce24b: + 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, -$80 + 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 + +Functionce275: + 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 + +Functionce291: + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hl] + cp $84 + jr nc, .asm_ce35b + ld a, $4 + call Functionce64f + ret + +.asm_ce35b + call DeinitBattleAnimation + ret + +BattleAnimFunction_37: + call BattleAnim_AnonJumptable +.anon_dw + dw Functionce2ab + dw Functionce2ba + +Functionce2ab: + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_PARAM + add hl, bc + ld a, [hl] + and $7f + add BATTLEANIMFRAMESET_81 ; BATTLEANIMFRAMESET_82 BATTLEANIMFRAMESET_83 + call ReinitBattleAnimFrameset +Functionce2ba: + ld hl, BATTLEANIMSTRUCT_PARAM + 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 Functionce2d7 + dw Functionce2e1 + dw Functionce2f3 + +Functionce2d7: + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $c + ret + +Functionce2e1: + 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 +Functionce2f3: + 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_PARAM + 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_PARAM + 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 Functionce34b + dw Functionce357 + +Functionce34b: + ld hl, BATTLEANIMSTRUCT_PARAM + add hl, bc + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + add [hl] + ld [hl], a + ret + +Functionce357: + call DeinitBattleAnimation + ret + +BattleAnimFunction_3D: + ld hl, BATTLEANIMSTRUCT_PARAM + 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_PARAM + add hl, bc + ld a, [hl] + inc [hl] + ret + +BattleAnimFunction_3E: + call BattleAnim_AnonJumptable +.anon_dw + dw Functionce388 + dw Functionce3aa + dw Functionce3d5 + +Functionce388: + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $28 + ld hl, BATTLEANIMSTRUCT_PARAM + add hl, bc + ld a, [hl] + and $f + ld hl, BATTLEANIMSTRUCT_FRAMESET_ID + add hl, bc + add [hl] ; BATTLEANIMFRAMESET_8F BATTLEANIMFRAMESET_90 BATTLEANIMFRAMESET_91 + ; BATTLEANIMFRAMESET_93 BATTLEANIMFRAMESET_94 BATTLEANIMFRAMESET_95 + call ReinitBattleAnimFrameset + ld hl, BATTLEANIMSTRUCT_PARAM + add hl, bc + ld a, [hl] + and $f0 + or $8 + ld [hl], a +Functionce3aa: + 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_PARAM + 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 +Functionce3d5: + 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 Functionce3e8 + dw Functionce3f5 + +Functionce3e8: + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_PARAM + add hl, bc + ld a, BATTLEANIMFRAMESET_24 + add [hl] ; BATTLEANIMFRAMESET_25 BATTLEANIMFRAMESET_26 + call ReinitBattleAnimFrameset +Functionce3f5: + 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_PARAM + 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_PARAM + 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_PARAM + 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_PARAM + 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 Functionce4a9 + dw Functionce4b3 + dw Functionce4bc + +Functionce4a9: + ld d, $18 + ld hl, BATTLEANIMSTRUCT_PARAM + add hl, bc + ld a, [hl] + inc [hl] + jr asm_ce4d4 + +Functionce4b3: + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld [hl], $18 +Functionce4bc: + 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_PARAM + add hl, bc + ld a, [hl] + jr asm_ce4d4 + +.asm_ce58b + call DeinitBattleAnimation + ret + +asm_ce4d4: + call Functionce636 + ret + +BattleAnimFunction_46: + call BattleAnim_AnonJumptable +.anon_dw + dw Functionce4f8 + dw Functionce4df + +Functionce4df: + 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 +Functionce4f8: + ret + +BattleAnimFunction_47: + ld d, $50 + ld hl, BATTLEANIMSTRUCT_PARAM + 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 Functionce53e + dw Functionce54f + dw Functionce567 + dw Functionce55d + +Functionce53e: + ld hl, BATTLEANIMSTRUCT_PARAM + add hl, bc + ld a, [hl] + and a + jr nz, asm_ce561 + call BattleAnim_IncAnonJumptableIndex + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld [hl], $ec +Functionce54f: + ld hl, BATTLEANIMSTRUCT_YOFFSET + add hl, bc + ld a, [hl] + cp $4 + jr z, Functionce55d + inc [hl] + inc [hl] + inc [hl] + inc [hl] + ret + +Functionce55d: + call DeinitBattleAnimation + ret + +asm_ce561: + call BattleAnim_IncAnonJumptableIndex + call BattleAnim_IncAnonJumptableIndex +Functionce567: + 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 Functionce57f + dw Functionce58d + dw Functionce5a1 + dw Functionce5b7 + +Functionce57f: + ld hl, BATTLEANIMSTRUCT_PARAM + add hl, bc + ld a, [hl] + ld hl, BATTLEANIMSTRUCT_ANON_JT_INDEX + add hl, bc + ld [hl], a + call BattleAnim_IncAnonJumptableIndex + ret + +Functionce58d: + 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 + +Functionce5a1: + 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 + +Functionce5b7: + 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_PARAM + 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_PARAM + add hl, bc + ld a, [hl] + inc [hl] + call Functionce636 + ret + +BattleAnimFunction_4F: + ld d, $18 + ld hl, BATTLEANIMSTRUCT_10 + add hl, bc + ld a, [hl] + inc [hl] + srl a + ld hl, BATTLEANIMSTRUCT_PARAM + add hl, bc + add [hl] + call Functionce636 + ret + +BattleAnimFunction_4D: + ld hl, BATTLEANIMSTRUCT_0F + add hl, bc + ld a, [hl] + cp $20 + jr nc, .asm_ce6ed + inc [hl] + ld hl, BATTLEANIMSTRUCT_PARAM + 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 + +Functionce636: + 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 + +Functionce64f: + 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 256 diff --git a/engine/battle_anims/helpers.asm b/engine/battle_anims/helpers.asm new file mode 100755 index 00000000..208ab614 --- /dev/null +++ b/engine/battle_anims/helpers.asm @@ -0,0 +1,123 @@ +ReinitBattleAnimFrameset: + ld hl, BATTLEANIMSTRUCT_FRAMESET_ID + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_DURATION + add hl, bc + ld [hl], 0 + ld hl, BATTLEANIMSTRUCT_FRAME + add hl, bc + ld [hl], -1 + ret + +GetBattleAnimFrame: +.loop + ld hl, BATTLEANIMSTRUCT_DURATION + add hl, bc + ld a, [hl] + and a + jr z, .next_frame + dec [hl] + call .GetPointer + ld a, [hli] + push af + jr .okay + +.next_frame + ld hl, BATTLEANIMSTRUCT_FRAME + add hl, bc + inc [hl] + call .GetPointer + ld a, [hli] + cp dorestart_command + jr z, .restart + cp endanim_command + jr z, .repeat_last + + push af + ld a, [hl] + push hl + and $ff ^ (Y_FLIP << 1 | X_FLIP << 1) + ld hl, BATTLEANIMSTRUCT_DURATION + add hl, bc + ld [hl], a + pop hl +.okay + ld a, [hl] + and Y_FLIP << 1 | X_FLIP << 1 ; The << 1 is compensated in the "frame" macro + srl a + ld [wBattleAnimTempFrameOAMFlags], a + pop af + ret + +.repeat_last + xor a + ld hl, BATTLEANIMSTRUCT_DURATION + add hl, bc + ld [hl], a + + ld hl, BATTLEANIMSTRUCT_FRAME + add hl, bc + dec [hl] + dec [hl] + jr .loop + +.restart + xor a + ld hl, BATTLEANIMSTRUCT_DURATION + add hl, bc + ld [hl], a + dec a + ld hl, BATTLEANIMSTRUCT_FRAME + add hl, bc + ld [hl], a + jr .loop + +.GetPointer: + ld hl, BATTLEANIMSTRUCT_FRAMESET_ID + add hl, bc + ld e, [hl] + ld d, 0 + ld hl, BattleAnimFrameData + add hl, de + add hl, de + ld e, [hl] + inc hl + ld d, [hl] + ld hl, BATTLEANIMSTRUCT_FRAME + add hl, bc + ld l, [hl] + ld h, $0 + add hl, hl + add hl, de + ret + +GetBattleAnimOAMPointer: + ld l, a + ld h, 0 + ld de, BattleAnimOAMData + add hl, hl + add hl, hl + add hl, de + ret + +LoadBattleAnimGFX: + push hl + ld l, a + ld h, 0 + add hl, hl + add hl, hl + ld de, AnimObjGFX + add hl, de + ld c, [hl] + inc hl + ld b, [hl] + inc hl + ld a, [hli] + ld h, [hl] + ld l, a + pop de + push bc + call DecompressRequest2bpp + pop bc + ret diff --git a/engine/events/bug_contest/display_stats.asm b/engine/events/bug_contest/display_stats.asm new file mode 100755 index 00000000..bfa6d90b --- /dev/null +++ b/engine/events/bug_contest/display_stats.asm @@ -0,0 +1,104 @@ +DisplayCaughtContestMonStats: + call ClearBGPalettes + call ClearTilemap + call ClearSprites + call LoadFontsBattleExtra + + ld hl, wOptions + ld a, [hl] + push af + set NO_TEXT_SCROLL, [hl] + + hlcoord 0, 0 + ld b, 4 + ld c, 13 + call Textbox + + hlcoord 0, 6 + ld b, 4 + ld c, 13 + call Textbox + + hlcoord 2, 0 + ld de, .Stock + call PlaceString + + hlcoord 2, 6 + ld de, .This + call PlaceString + + hlcoord 5, 4 + ld de, .Health + call PlaceString + + hlcoord 5, 10 + ld de, .Health + call PlaceString + + ld a, [wContestMon] + ld [wNamedObjectIndexBuffer], a + call GetPokemonName + ld de, wStringBuffer1 + hlcoord 1, 2 + call PlaceString + + ld h, b + ld l, c + ld a, [wContestMonLevel] + ld [wTempMonLevel], a + call PrintLevel + + ld de, wEnemyMonNick + hlcoord 1, 8 + call PlaceString + + ld h, b + ld l, c + ld a, [wEnemyMonLevel] + ld [wTempMonLevel], a + call PrintLevel + + hlcoord 11, 4 + ld de, wContestMonMaxHP + lb bc, 2, 3 + call PrintNum + + hlcoord 11, 10 + ld de, wEnemyMonMaxHP + call PrintNum + + ld hl, ContestAskSwitchText + call PrintText + + pop af + ld [wOptions], a + + call WaitBGMap + ld b, SCGB_DIPLOMA + call GetSGBLayout + call SetPalettes + ret + +.Health: + db "HEALTH@" +.Stock: + db " STOCK <PK><MN> @" +.This: + db " THIS <PK><MN> @" + +ContestAskSwitchText: + text_far _ContestAskSwitchText + text_end + +DisplayAlreadyCaughtText: + call GetPokemonName + ld hl, .ContestAlreadyCaughtText + jp PrintText + +.ContestAlreadyCaughtText: + text_far _ContestAlreadyCaughtText + text_end + +DummyPredef38: +DummyPredef39: + ret diff --git a/gfx/battle/minimize.2bpp b/gfx/battle/minimize.2bpp Binary files differnew file mode 100755 index 00000000..66b554de --- /dev/null +++ b/gfx/battle/minimize.2bpp diff --git a/gfx/battle/minimize.png b/gfx/battle/minimize.png Binary files differnew file mode 100755 index 00000000..95502f19 --- /dev/null +++ b/gfx/battle/minimize.png @@ -297,30 +297,15 @@ INCBIN "gfx/credits/theend.2bpp" SECTION "Move Animations", ROMX -DisplayCaughtContestMonStats:: - dr $cc000, $cc0c8 -DisplayAlreadyCaughtText:: - dr $cc0c8, $cc0d6 -DummyPredef38:: -DummyPredef39:: - ret -PlayBattleAnim:: - dr $cc0d7, $cc283 -BattleAnimCommands:: - dr $cc283, $cc5f7 -BattleAnimCmd_RaiseSub:: - dr $cc5f7, $cc67c -BattleAnimCmd_MinimizeOpp:: - dr $cc67c, $cc836 -ClearBattleAnims:: - dr $cc836, $cc8f0 -QueueBattleAnimation:: - dr $cc8f0, $ce6aa - -BattleAnim_Sine_e:: - dr $ce6aa, $ce6b0 -BattleAnim_Cosine_e:: - dr $ce6b0, $cfce3 +INCLUDE "engine/events/bug_contest/display_stats.asm" +INCLUDE "engine/battle_anims/anim_commands.asm" +INCLUDE "engine/battle_anims/core.asm" +INCLUDE "data/battle_anims/objects.asm" +INCLUDE "engine/battle_anims/functions.asm" +INCLUDE "engine/battle_anims/helpers.asm" +INCLUDE "data/battle_anims/framesets.asm" +INCLUDE "data/battle_anims/oam.asm" +INCLUDE "data/battle_anims/object_gfx.asm" SECTION "Font Inversed", ROMX |