summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/battle_anim_80FE840.s683
-rw-r--r--include/battle_anim.h6
-rw-r--r--ld_script.txt3
-rw-r--r--src/electric.c438
-rw-r--r--src/fire.c438
-rw-r--r--src/ice.c491
6 files changed, 1376 insertions, 683 deletions
diff --git a/data/battle_anim_80FE840.s b/data/battle_anim_80FE840.s
index ecb851e53..4fb56621d 100644
--- a/data/battle_anim_80FE840.s
+++ b/data/battle_anim_80FE840.s
@@ -7,689 +7,6 @@
-
-
-
-
-
-
-
- .align 2
-gUnknown_08595340:: @ 8595340
- .2byte 0x0010, 0x0004, 0x0020, 0x0004, 0x0030, 0x0004, 0xfffe, 0x0000
-
- .align 2
-gUnknown_08595350:: @ 8595350
- .2byte 0x0010, 0x00c4, 0x0020, 0x00c4, 0x0030, 0x00c4, 0xfffe, 0x0000
-
- .align 2
-gUnknown_08595360:: @ 8595360
- .4byte gUnknown_08595340
- .4byte gUnknown_08595350
-
- .align 2
-gUnknown_08595368:: @ 8595368
- spr_template ANIM_TAG_SMALL_EMBER, ANIM_TAG_SMALL_EMBER, gUnknown_08524914, gUnknown_08595360, NULL, gDummySpriteAffineAnimTable, sub_8108EC8
-
- .align 2
-gUnknown_08595380:: @ 8595380
- spr_template ANIM_TAG_SMALL_EMBER, ANIM_TAG_SMALL_EMBER, gUnknown_08524914, gUnknown_08595360, NULL, gDummySpriteAffineAnimTable, sub_8108F08
-
- .align 2
-gUnknown_08595398:: @ 8595398
- .2byte 0x0000, 0x0003, 0x0010, 0x0003, 0x0020, 0x0003, 0x0030, 0x0003
- .2byte 0x0040, 0x0003, 0x0050, 0x0003, 0x0060, 0x0003, 0x0070, 0x0003
- .2byte 0xfffe, 0x0000
-
- .align 2
-gUnknown_085953BC:: @ 85953BC
- .4byte gUnknown_08595398
-
- .align 2
-gUnknown_085953C0:: @ 85953C0
- .2byte 0x0000, 0x0005, 0x0010, 0x0005, 0x0020, 0x0005, 0x0030, 0x0005
- .2byte 0x0040, 0x0005, 0xfffe, 0x0000
-
- .align 2
-gUnknown_085953D8:: @ 85953D8
- .4byte gUnknown_085953C0
-
- .align 2
-gUnknown_085953DC:: @ 85953DC
- .2byte 0x0032, 0x0100, 0x0000, 0x0000, 0x0020, 0x0000, 0x0700, 0x0000
- .2byte 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_085953F4:: @ 85953F4
- .4byte gUnknown_085953DC
-
- .align 2
-gUnknown_085953F8:: @ 85953F8
- spr_template ANIM_TAG_FIRE, ANIM_TAG_FIRE, gUnknown_08524974, gUnknown_085953BC, NULL, gUnknown_085953F4, sub_8108FBC
-
- .align 2
-gUnknown_08595410:: @ 8595410
- spr_template ANIM_TAG_FIRE, ANIM_TAG_FIRE, gUnknown_08524914, gUnknown_085953BC, NULL, gDummySpriteAffineAnimTable, sub_8108FBC
-
- .align 2
-gUnknown_08595428:: @ 8595428
- spr_template ANIM_TAG_FIRE_PLUME, ANIM_TAG_FIRE_PLUME, gUnknown_08524914, gUnknown_085953D8, NULL, gDummySpriteAffineAnimTable, sub_8108F4C
-
- .align 2
-gUnknown_08595440:: @ 8595440
- spr_template ANIM_TAG_SMALL_EMBER, ANIM_TAG_SMALL_EMBER, gUnknown_08524914, gUnknown_085953D8, NULL, gDummySpriteAffineAnimTable, sub_8108F4C
-
- .align 2
-gUnknown_08595458:: @ 8595458
- .2byte 0x0010, 0x0006, 0x0020, 0x0006, 0x0030, 0x0006, 0xfffe, 0x0000
-
- .align 2
-gUnknown_08595468:: @ 8595468
- .4byte gUnknown_08595458
-
- .align 2
-gUnknown_0859546C:: @ 859546C
- spr_template ANIM_TAG_SMALL_EMBER, ANIM_TAG_SMALL_EMBER, gUnknown_08524914, gUnknown_08595468, NULL, gDummySpriteAffineAnimTable, sub_8109064
-
- .align 2
-gUnknown_08595484:: @ 8595484
- .2byte 0x0050, 0x0050, 0x0000, 0x0000, 0x0002, 0x0002, 0x010a, 0x0000
- .2byte 0x7ffe, 0x0001, 0x0000, 0x0000
-
- .align 2
-gUnknown_0859549C:: @ 859549C
- .4byte gUnknown_08595484
-
- .align 2
-gUnknown_085954A0:: @ 85954A0
- spr_template ANIM_TAG_SUNLIGHT, ANIM_TAG_SUNLIGHT, gUnknown_08524A94, gDummySpriteAnimTable, NULL, gUnknown_0859549C, sub_810916C
-
- .align 2
-gUnknown_085954B8:: @ 85954B8
- .2byte 0x0000, 0x0004, 0x0010, 0x0004, 0x0020, 0x0004, 0x0030, 0x0004
- .2byte 0x0040, 0x0004, 0xfffe, 0x0000
-
- .align 2
-gUnknown_085954D0:: @ 85954D0
- .4byte gUnknown_085954B8
-
- .align 2
-gEmberSpriteTemplate:: @ 85954D4
- spr_template ANIM_TAG_SMALL_EMBER, ANIM_TAG_SMALL_EMBER, gUnknown_08524914, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, TranslateAnimSpriteToTargetMonLocation
-
- .align 2
-gEmberFlareSpriteTemplate:: @ 85954EC
- spr_template ANIM_TAG_SMALL_EMBER, ANIM_TAG_SMALL_EMBER, gUnknown_08524914, gUnknown_085954D0, NULL, gDummySpriteAffineAnimTable, sub_8109198
-
- .align 2
-gUnknown_08595504:: @ 8595504
- spr_template ANIM_TAG_SMALL_EMBER, ANIM_TAG_SMALL_EMBER, gUnknown_08524914, gUnknown_085954D0, NULL, gDummySpriteAffineAnimTable, sub_8109200
-
- .align 2
-gUnknown_0859551C:: @ 859551C
- spr_template ANIM_TAG_SMALL_EMBER, ANIM_TAG_SMALL_EMBER, gUnknown_08524914, gUnknown_085954D0, NULL, gDummySpriteAffineAnimTable, sub_810921C
-
- .align 2
-gUnknown_08595534:: @ 8595534
- .2byte 0x0020, 0x0006, 0x0030, 0x0006, 0xfffe, 0x0000
-
- .align 2
-gUnknown_08595540:: @ 8595540
- .4byte gUnknown_08595534
-
- .align 2
-gUnknown_08595544:: @ 8595544
- .2byte 0x0000, 0x0000, 0x0100, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_08595554:: @ 8595554
- .2byte 0x00a0, 0x00a0, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_08595564:: @ 8595564
- .4byte gUnknown_08595544
- .4byte gUnknown_08595554
-
- .align 2
-gUnknown_0859556C:: @ 859556C
- spr_template ANIM_TAG_SMALL_EMBER, ANIM_TAG_SMALL_EMBER, gUnknown_08524914, gUnknown_08595540, NULL, gDummySpriteAffineAnimTable, sub_8109364
-
- .align 2
-gBattleAnimSpriteTemplate_8595584:: @ 8595584
- spr_template ANIM_TAG_SMALL_EMBER, ANIM_TAG_SMALL_EMBER, gUnknown_08524914, gUnknown_085954D0, NULL, gDummySpriteAffineAnimTable, sub_81093A4
-
- .align 2
-gUnknown_0859559C:: @ 859559C
- spr_template ANIM_TAG_SMALL_EMBER, ANIM_TAG_SMALL_EMBER, gUnknown_08524914, gUnknown_085954D0, NULL, gDummySpriteAffineAnimTable, sub_80A8EE4
-
- .align 2
-gUnknown_085955B4:: @ 85955B4
- spr_template ANIM_TAG_WARM_ROCK, ANIM_TAG_WARM_ROCK, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81098EC
-
- .align 2
-gUnknown_085955CC:: @ 85955CC
- .2byte 0xfffe, 0xfffb, 0xffff, 0xffff, 0x0003, 0xfffa, 0x0004, 0xfffe
- .2byte 0x0002, 0xfff8, 0xfffb, 0xfffb, 0x0004, 0xfff9
-
- .align 2
-gUnknown_085955E8:: @ 85955E8
- spr_template ANIM_TAG_WARM_ROCK, ANIM_TAG_WARM_ROCK, gUnknown_08524914, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8109A10
-
- .align 2
-gUnknown_08595600:: @ 8595600
- .2byte 0x0000, 0x0005, 0x0004, 0x0005, 0x0008, 0x0005, 0x000c, 0x0005, 0xfffe, 0x0000
-
- .align 2
-gUnknown_08595614:: @ 8595614
- .2byte 0x0010, 0x0005, 0xffff, 0x0000
-
- .align 2
-gUnknown_0859561C:: @ 859561C
- .2byte 0x0014, 0x0005, 0xffff, 0x0000
-
- .align 2
-gUnknown_08595624:: @ 8595624
- .2byte 0x0014, 0x0005, 0xffff, 0x0000
-
- .align 2
-gUnknown_0859562C:: @ 859562C
- .4byte gUnknown_08595600
- .4byte gUnknown_08595614
- .4byte gUnknown_0859561C
- .4byte gUnknown_08595624
-
- .align 2
-gUnknown_0859563C:: @ 859563C
- spr_template ANIM_TAG_WISP_ORB, ANIM_TAG_WISP_ORB, gUnknown_0852490C, gUnknown_0859562C, NULL, gDummySpriteAffineAnimTable, sub_8109AFC
-
- .align 2
-gUnknown_08595654:: @ 8595654
- .2byte 0x0000, 0x0005, 0x0010, 0x0005, 0x0020, 0x0005, 0x0030, 0x0005, 0xfffe, 0x0000
-
- .align 2
-gUnknown_08595668:: @ 8595668
- .4byte gUnknown_08595654
-
- .align 2
-gUnknown_0859566C:: @ 859566C
- spr_template ANIM_TAG_WISP_FIRE, ANIM_TAG_WISP_FIRE, gUnknown_08524914, gUnknown_08595668, NULL, gDummySpriteAffineAnimTable, sub_8109CB0
-
- .align 2
-gUnknown_08595684:: @ 8595684
- .2byte 0xffff, 0x0100, 0x0001, 0xff00, 0x01ff, 0x0001, 0xff00, 0x0100
-
- .align 2
-gUnknown_08595694:: @ 8595694
- .2byte 0x00ff, 0x0001, 0x01ff, 0xff00, 0x0100, 0xff00, 0x0100, 0x0100
-
- .align 2
-gUnknown_085956A4:: @ 85956A4
- .2byte 0x0000, 0x0005, 0x0010, 0x0005, 0x0020, 0x0008, 0x0030, 0x0005
- .2byte 0x0040, 0x0005, 0xffff, 0x0000
-
- .align 2
-gUnknown_085956BC:: @ 85956BC
- .4byte gUnknown_085956A4
-
- .align 2
-gUnknown_085956C0:: @ 85956C0
- spr_template ANIM_TAG_LIGHTNING, ANIM_TAG_LIGHTNING, gUnknown_08524914, gUnknown_085956BC, NULL, gDummySpriteAffineAnimTable, sub_810A1A8
-
- .align 2
-gUnknown_085956D8:: @ 85956D8
- .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x1400, 0x0000
- .2byte 0x0000, 0x0000, 0x3cf0, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_085956F8:: @ 85956F8
- .4byte gUnknown_085956D8
-
- .align 2
-gUnknown_085956FC:: @ 85956FC
- spr_template ANIM_TAG_HANDS_AND_FEET, ANIM_TAG_HANDS_AND_FEET, gUnknown_08524974, gDummySpriteAnimTable, NULL, gUnknown_085956F8, sub_810A214
-
- .align 2
-gUnknown_08595714:: @ 8595714
- .2byte 0x0000, 0x0005, 0x0010, 0x0005, 0x0020, 0x0005, 0x0030, 0x0005
- .2byte 0x0040, 0x0005, 0x0050, 0x0005, 0xfffe, 0x0000
-
- .align 2
-gUnknown_08595730:: @ 8595730
- .4byte gUnknown_08595714
-
- .align 2
-gUnknown_08595734:: @ 8595734
- spr_template 0x275f, 0x275f, gUnknown_08524914, gUnknown_08595730, NULL, gDummySpriteAffineAnimTable, sub_810A274
-
- .align 2
-gBattleAnimSpriteTemplate_859574C:: @ 859574C
- spr_template ANIM_TAG_SPARK_2, ANIM_TAG_SPARK_2, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810A308
-
- .align 2
-gUnknown_08595764:: @ 8595764
- spr_template ANIM_TAG_BLACK_BALL_2, ANIM_TAG_BLACK_BALL_2, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, TranslateAnimSpriteToTargetMonLocation
-
- .align 2
-gUnknown_0859577C:: @ 859577C
- .2byte 0x0000, 0x0000, 0x0114, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_0859578C:: @ 859578C
- .4byte gUnknown_0859577C
-
- .align 2
-gUnknown_08595790:: @ 8595790
- spr_template ANIM_TAG_SPARK_2, ANIM_TAG_SPARK_2, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gUnknown_0859578C, sub_810A46C
-
- .align 2
-gUnknown_085957A8:: @ 85957A8
- .2byte 0x0000, 0x0006, 0x0010, 0x0006, 0x0020, 0x0006, 0xfffe, 0x0000
-
- .align 2
-gUnknown_085957B8:: @ 85957B8
- .4byte gUnknown_085957A8
-
- .align 2
-gUnknown_085957BC:: @ 85957BC
- .2byte 0x00e8, 0x00e8, 0x0000, 0x0000, 0xfff8, 0xfff8, 0x0a00, 0x0000
- .2byte 0x0008, 0x0008, 0x0a00, 0x0000, 0x7ffe, 0x0001, 0x0000, 0x0000
-
- .align 2
-gUnknown_085957DC:: @ 85957DC
- .4byte gUnknown_085957BC
-
- .align 2
-gBattleAnimSpriteTemplate_85957E0:: @ 85957E0
- spr_template ANIM_TAG_SHOCK_3, ANIM_TAG_SHOCK_3, gUnknown_08524974, gUnknown_085957B8, NULL, gUnknown_085957DC, sub_810A5BC
-
- .align 2
-gBattleAnimSpriteTemplate_85957F8:: @ 85957F8
- spr_template ANIM_TAG_SPARK_2, ANIM_TAG_SPARK_2, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gUnknown_0859578C, sub_810A628
-
- .align 2
-gElectricitySpriteTemplate:: @ 8595810
- spr_template ANIM_TAG_SPARK_2, ANIM_TAG_SPARK_2, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810A75C
-
- .align 2
-gUnknown_08595828:: @ 8595828
- spr_template ANIM_TAG_SPARK, ANIM_TAG_SPARK, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810A9DC
-
- .align 2
-gUnknown_08595840:: @ 8595840
- spr_template 0x27bd, 0x27bd, gUnknown_08524934, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810AA2C
-
- .align 2
-gUnknown_08595858:: @ 8595858
- .byte 0x3a, 0xc4, 0xc8, 0xdc, 0x08, 0xc8, 0xf0, 0x38
- .byte 0x3a, 0xf6, 0xc6, 0x0a, 0x30, 0xee, 0xf8, 0x38
- .byte 0x10, 0xc8, 0xc6, 0xd6, 0x3a, 0x1e, 0xd0, 0x28
- .byte 0x0c, 0xd0, 0x30, 0xf4, 0xc8, 0x12, 0x30, 0x30
-
- .align 2
-gUnknown_08595878:: @ 8595878
- .2byte 0x0003, 0x0001, 0x0002, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0xffff, 0x0000
-
- .align 2
-gUnknown_0859588C:: @ 859588C
- .2byte 0x0000, 0x0005, 0x0001, 0x0005, 0x0002, 0x0005, 0x0003, 0x0005, 0xffff, 0x0000
-
- .align 2
-gUnknown_085958A0:: @ 85958A0
- .4byte gUnknown_08595878
- .4byte gUnknown_0859588C
-
- .align 2
-gUnknown_085958A8:: @ 85958A8
- spr_template ANIM_TAG_ELECTRIC_ORBS, ANIM_TAG_ELECTRIC_ORBS, gUnknown_08524904, gUnknown_085958A0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gUnknown_085958C0:: @ 85958C0
- .2byte 0x0010, 0x0010, 0x0000, 0x0000, 0x0004, 0x0004, 0x3c00, 0x0000
- .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x7ffd, 0x0000, 0x0000, 0x0000
- .2byte 0xfffc, 0xfffc, 0x0500, 0x0000, 0x0004, 0x0004, 0x0500, 0x0000
- .2byte 0x7ffd, 0x000a, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_08595900:: @ 8595900
- .2byte 0x0010, 0x0010, 0x0000, 0x0000, 0x0008, 0x0008, 0x1e00, 0x0000
- .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0xfffc, 0xfffc, 0x0500, 0x0000
- .2byte 0x0004, 0x0004, 0x0500, 0x0000, 0x7ffe, 0x0003, 0x0000, 0x0000
-
- .align 2
-gUnknown_08595930:: @ 8595930
- .2byte 0x0010, 0x0010, 0x0000, 0x0000, 0x0008, 0x0008, 0x1e00, 0x0000
- .2byte 0xfff8, 0xfff8, 0x1e00, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_08595950:: @ 8595950
- .4byte gUnknown_085958C0
- .4byte gUnknown_08595900
- .4byte gUnknown_08595930
-
- .align 2
-gUnknown_0859595C:: @ 859595C
- spr_template ANIM_TAG_CIRCLE_OF_LIGHT, ANIM_TAG_CIRCLE_OF_LIGHT, gUnknown_08524A9C, gDummySpriteAnimTable, NULL, gUnknown_08595950, sub_810ACD8
-
- .align 2
-gUnknown_08595974:: @ 8595974
- .2byte 0x0000, 0x0003, 0x0010, 0x0003, 0x0020, 0x0003, 0x0030, 0x0003, 0xffff, 0x0000
-
- .align 2
-gUnknown_08595988:: @ 8595988
- .4byte gUnknown_08595974
-
- .align 2
-gUnknown_0859598C:: @ 859598C
- spr_template ANIM_TAG_ELECTRICITY, ANIM_TAG_ELECTRICITY, gUnknown_08524914, gUnknown_08595988, NULL, gDummySpriteAffineAnimTable, sub_810AD30
-
- .align 2
-gUnknown_085959A4:: @ 85959A4
- spr_template ANIM_TAG_CIRCLE_OF_LIGHT, ANIM_TAG_CIRCLE_OF_LIGHT, gUnknown_08524A9C, gDummySpriteAnimTable, NULL, gUnknown_08595950, sub_810AD98
-
- .align 2
-gUnknown_085959BC:: @ 85959BC
- .2byte 0x0000, 0x0003, 0xffff, 0x0000
-
- .align 2
-gUnknown_085959C4:: @ 85959C4
- .2byte 0x0002, 0x0003, 0xffff, 0x0000
-
- .align 2
-gUnknown_085959CC:: @ 85959CC
- .2byte 0x0004, 0x0003, 0xffff, 0x0000
-
- .align 2
-gUnknown_085959D4:: @ 85959D4
- .2byte 0x0006, 0x0003, 0xffff, 0x0000
-
- .align 2
-gUnknown_085959DC:: @ 85959DC
- .4byte gUnknown_085959BC
- .4byte gUnknown_085959C4
- .4byte gUnknown_085959CC
- .4byte gUnknown_085959D4
-
- .align 2
-gUnknown_085959EC:: @ 85959EC
- .2byte 0x0100, 0x0100, 0x0040, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_085959FC:: @ 85959FC
- .4byte gUnknown_085959EC
-
- .align 2
-gUnknown_08595A00:: @ 8595A00
- spr_template ANIM_TAG_SPARK, ANIM_TAG_SPARK, gUnknown_08524A04, gUnknown_085959DC, NULL, gUnknown_085959FC, sub_810B1F0
-
- .align 2
-gUnknown_08595A18:: @ 8595A18
- spr_template ANIM_TAG_CIRCLE_OF_LIGHT, ANIM_TAG_CIRCLE_OF_LIGHT, gUnknown_08524A9C, gDummySpriteAnimTable, NULL, gUnknown_08595950, sub_810B23C
-
- .align 2
-gUnknown_08595A30:: @ 8595A30
- spr_template ANIM_TAG_SPARK, ANIM_TAG_SPARK, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810B51C
-
- .align 2
-gUnknown_08595A48:: @ 8595A48
- .2byte 0x0000, 0x0045, 0x0001, 0x0045, 0xfffe, 0x0000
-
- .align 2
-gUnknown_08595A54:: @ 8595A54
- .4byte gUnknown_08595A48
-
- .align 2
-gUnknown_08595A58:: @ 8595A58
- spr_template ANIM_TAG_ICE_CRYSTALS, ANIM_TAG_ICE_CRYSTALS, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810B6C4
-
- .align 2
-gUnknown_08595A70:: @ 8595A70
- .2byte 0x0000, 0x0001, 0xffff, 0x0000
-
- .align 2
-gUnknown_08595A78:: @ 8595A78
- .2byte 0x0004, 0x0001, 0xffff, 0x0000
-
- .align 2
-gUnknown_08595A80:: @ 8595A80
- .2byte 0x0006, 0x0001, 0xffff, 0x0000
-
- .align 2
-gUnknown_08595A88:: @ 8595A88
- .2byte 0x0007, 0x0001, 0xffff, 0x0000
-
- .align 2
-gUnknown_08595A90:: @ 8595A90
- .2byte 0x0008, 0x0001, 0xffff, 0x0000
-
- .align 2
-gUnknown_08595A98:: @ 8595A98
- .2byte 0x000c, 0x0006, 0x000d, 0x0006, 0xfffe, 0x0000
-
- .align 2
-gUnknown_08595AA4:: @ 8595AA4
- .4byte gUnknown_08595A70
-
- .align 2
-gUnknown_08595AA8:: @ 8595AA8
- .4byte gUnknown_08595A78
-
- .align 2
-gUnknown_08595AAC:: @ 8595AAC
- .4byte gUnknown_08595A80
-
- .align 2
-gUnknown_08595AB0:: @ 8595AB0
- .4byte gUnknown_08595A88
-
- .align 2
-gUnknown_08595AB4:: @ 8595AB4
- .4byte gUnknown_08595A90
-
- .align 2
-gUnknown_08595AB8:: @ 8595AB8
- .4byte gUnknown_08595A98
-
- .align 2
-gUnknown_08595ABC:: @ 8595ABC
- .2byte 0x0000, 0x0000, 0x0128, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_08595ACC:: @ 8595ACC
- .4byte gUnknown_08595ABC
-
- .align 2
-gUnknown_08595AD0:: @ 8595AD0
- spr_template ANIM_TAG_ICE_CRYSTALS, ANIM_TAG_ICE_CRYSTALS, gUnknown_08524B24, gUnknown_08595AA8, NULL, gUnknown_08595ACC, sub_810B8AC
-
- .align 2
-gUnknown_08595AE8:: @ 8595AE8
- spr_template ANIM_TAG_ICE_CRYSTALS, ANIM_TAG_ICE_CRYSTALS, gUnknown_08524A24, gUnknown_08595AAC, NULL, gDummySpriteAffineAnimTable, sub_810B8AC
-
- .align 2
-gUnknown_08595B00:: @ 8595B00
- .2byte 0x0000, 0x0000, 0x010a, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_08595B10:: @ 8595B10
- .4byte gUnknown_08595B00
-
- .align 2
-gUnknown_08595B14:: @ 8595B14
- spr_template ANIM_TAG_ICE_CRYSTALS, ANIM_TAG_ICE_CRYSTALS, gUnknown_08524AC4, gUnknown_08595AA8, NULL, gUnknown_08595B10, sub_810B8EC
-
- .align 2
-gUnknown_08595B2C:: @ 8595B2C
- spr_template ANIM_TAG_ICE_CRYSTALS, ANIM_TAG_ICE_CRYSTALS, gUnknown_08524A24, gUnknown_08595AAC, NULL, gDummySpriteAffineAnimTable, sub_810B8EC
-
- .align 2
-gUnknown_08595B44:: @ 8595B44
- .2byte 0x00ce, 0x00ce, 0x0000, 0x0000, 0x0005, 0x0005, 0x0a00, 0x0000
- .2byte 0x0000, 0x0000, 0x0600, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_08595B64:: @ 8595B64
- .4byte gUnknown_08595B44
-
- .align 2
-gUnknown_08595B68:: @ 8595B68
- spr_template ANIM_TAG_ICE_CRYSTALS, ANIM_TAG_ICE_CRYSTALS, gUnknown_08524AC4, gUnknown_08595AA8, NULL, gUnknown_08595B64, sub_810B974
-
- .align 2
-gUnknown_08595B80:: @ 8595B80
- spr_template ANIM_TAG_ICE_CRYSTALS, ANIM_TAG_ICE_CRYSTALS, gUnknown_08524A84, gUnknown_08595AAC, NULL, gUnknown_08595B64, sub_810B974
-
- .align 2
-gUnknown_08595B98:: @ 8595B98
- spr_template ANIM_TAG_ICE_CRYSTALS, ANIM_TAG_ICE_CRYSTALS, gUnknown_08524904, gUnknown_08595AB0, NULL, gDummySpriteAffineAnimTable, sub_810BA24
-
- .align 2
-gUnknown_08595BB0:: @ 8595BB0
- spr_template ANIM_TAG_ICE_CRYSTALS, ANIM_TAG_ICE_CRYSTALS, gUnknown_0852490C, gUnknown_08595AB4, NULL, gDummySpriteAffineAnimTable, sub_810BC94
-
- .align 2
-gUnknown_08595BC8:: @ 8595BC8
- spr_template ANIM_TAG_ICE_CRYSTALS, ANIM_TAG_ICE_CRYSTALS, gUnknown_08524904, gUnknown_08595AB0, NULL, gDummySpriteAffineAnimTable, sub_810BC94
-
- .align 2
-gUnknown_08595BE0:: @ 8595BE0
- .2byte 0x0000, 0x0005, 0x0002, 0x0005, 0x0004, 0x0005, 0x0006, 0x0005
- .2byte 0x0004, 0x0005, 0x0002, 0x0005, 0x0000, 0x0005, 0xffff, 0x0000
-
- .align 2
-gUnknown_08595C00:: @ 8595C00
- .4byte gUnknown_08595BE0
-
- .align 2
-gUnknown_08595C04:: @ 8595C04
- spr_template ANIM_TAG_ICE_SPIKES, ANIM_TAG_ICE_SPIKES, gUnknown_08524A64, gUnknown_08595C00, NULL, gDummySpriteAffineAnimTable, sub_810BE48
-
- .align 2
-gUnknown_08595C1C:: @ 8595C1C
- .2byte 0x0000, 0x0008, 0x0008, 0x0008, 0xfffe, 0x0000
-
- .align 2
-gUnknown_08595C28:: @ 8595C28
- .4byte gUnknown_08595C1C
-
- .align 2
-gUnknown_08595C2C:: @ 8595C2C
- spr_template ANIM_TAG_MIST_CLOUD, ANIM_TAG_MIST_CLOUD, gUnknown_08524A54, gUnknown_08595C28, NULL, gDummySpriteAffineAnimTable, sub_810BED0
-
- .align 2
-gUnknown_08595C44:: @ 8595C44
- spr_template ANIM_TAG_PURPLE_GAS_CLOUD, ANIM_TAG_PURPLE_GAS_CLOUD, gUnknown_08524A54, gUnknown_08595C28, NULL, gDummySpriteAffineAnimTable, sub_810BED0
-
- .align 2
-gUnknown_08595C5C:: @ 8595C5C
- .byte 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, 0x03, 0x04
- .byte 0x04, 0x04, 0x05, 0x06, 0x06, 0x06, 0x06, 0x07
- .byte 0x08, 0x08, 0x08, 0x09
-
- .align 2
-gUnknown_08595C70:: @ 8595C70
- spr_template ANIM_TAG_SMALL_BUBBLES, ANIM_TAG_SMALL_BUBBLES, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810C2F0
-
- .align 2
-gUnknown_08595C88:: @ 8595C88
- .byte 0x00, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02
- .byte 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04
- .byte 0x04, 0x04, 0x04, 0x05
-
- .align 2
-gUnknown_08595C9C:: @ 8595C9C
- spr_template ANIM_TAG_PURPLE_GAS_CLOUD, ANIM_TAG_PURPLE_GAS_CLOUD, gUnknown_08524A54, gUnknown_08595C28, NULL, gDummySpriteAffineAnimTable, sub_810C560
-
- .align 2
-gUnknown_08595CB4:: @ 8595CB4
- .byte 0x64, 0xe0, 0x01, 0x20, 0x55, 0xe0, 0x01, 0x00
- .byte 0xf2, 0xe0, 0x11, 0x10, 0x42, 0xe0, 0x21, 0x10
- .byte 0xb6, 0xe0, 0x31, 0x00, 0x3c, 0xe0, 0x01, 0x20
- .byte 0xd6, 0xe0, 0x11, 0x00, 0x71, 0xe0, 0x01, 0x10
- .byte 0xd2, 0xe0, 0x31, 0x10, 0x26, 0xe0, 0x21, 0x00
-
- .align 2
-gUnknown_08595CDC:: @ 8595CDC
- .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_08595CEC:: @ 8595CEC
- .2byte 0x00f0, 0x00f0, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_08595CFC:: @ 8595CFC
- .2byte 0x00e0, 0x00e0, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_08595D0C:: @ 8595D0C
- .2byte 0x0150, 0x0150, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_08595D1C:: @ 8595D1C
- .4byte gUnknown_08595CDC
- .4byte gUnknown_08595CEC
- .4byte gUnknown_08595CFC
-
- .align 2
-gUnknown_08595D28:: @ 8595D28
- .4byte gUnknown_08595D0C
-
- .align 2
-gUnknown_08595D2C:: @ 8595D2C
- spr_template ANIM_TAG_HAIL, ANIM_TAG_HAIL, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gUnknown_08595D1C, sub_810CB58
-
- .align 2
-gUnknown_08595D44:: @ 8595D44
- spr_template ANIM_TAG_HAIL, ANIM_TAG_HAIL, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gUnknown_08595D28, sub_80A8EE4
-
- .align 2
-gUnknown_08595D5C:: @ 8595D5C
- .2byte 0x0000, 0x0001, 0xffff, 0x0000
-
- .align 2
-gUnknown_08595D64:: @ 8595D64
- .2byte 0x0010, 0x0004, 0x0020, 0x0004, 0x0030, 0x0004, 0x0040, 0x0004, 0xffff, 0x0000
-
- .align 2
-gUnknown_08595D78:: @ 8595D78
- .4byte gUnknown_08595D5C
- .4byte gUnknown_08595D64
-
- .align 2
-gUnknown_08595D80:: @ 8595D80
- .2byte 0x00e0, 0x00e0, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_08595D90:: @ 8595D90
- .2byte 0x0118, 0x0118, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_08595DA0:: @ 8595DA0
- .2byte 0x0150, 0x0150, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_08595DB0:: @ 8595DB0
- .2byte 0x0180, 0x0180, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_08595DC0:: @ 8595DC0
- .2byte 0x01c0, 0x01c0, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_08595DD0:: @ 8595DD0
- .4byte gUnknown_08595D80
- .4byte gUnknown_08595D90
- .4byte gUnknown_08595DA0
- .4byte gUnknown_08595DB0
- .4byte gUnknown_08595DC0
-
- .align 2
-gUnknown_08595DE4:: @ 8595DE4
- spr_template ANIM_TAG_ICE_CHUNK, ANIM_TAG_ICE_CHUNK, gUnknown_085249D4, gUnknown_08595D78, NULL, gUnknown_08595DD0, unc_080B06FC
-
- .align 2
-gUnknown_08595DFC:: @ 8595DFC
- spr_template ANIM_TAG_ICE_CRYSTALS, ANIM_TAG_ICE_CRYSTALS, gUnknown_08524904, gUnknown_08595AAC, NULL, gDummySpriteAffineAnimTable, sub_810CD4C
-
.align 2
gUnknown_08595E14:: @ 8595E14
spr_template ANIM_TAG_HUMANOID_FOOT, ANIM_TAG_HUMANOID_FOOT, gUnknown_08524914, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, unc_080B08A0
diff --git a/include/battle_anim.h b/include/battle_anim.h
index 61659c350..8d6785a44 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -161,5 +161,11 @@ extern const struct OamData gUnknown_08524A04;
extern const struct OamData gUnknown_08524A2C;
extern const struct OamData gUnknown_08524AEC;
extern const struct OamData gUnknown_08524964;
+extern const struct OamData gUnknown_08524B24;
+extern const struct OamData gUnknown_08524A24;
+extern const struct OamData gUnknown_08524AC4;
+extern const struct OamData gUnknown_08524A84;
+extern const struct OamData gUnknown_08524A64;
+extern const struct OamData gUnknown_0852496C;
#endif // GUARD_BATTLE_ANIM_H
diff --git a/ld_script.txt b/ld_script.txt
index 06a0f901a..42bc3b37a 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -480,6 +480,9 @@ SECTIONS {
src/effects_1.o(.rodata);
src/effects_2.o(.rodata);
src/water.o(.rodata);
+ src/fire.o(.rodata);
+ src/electric.o(.rodata);
+ src/ice.o(.rodata);
data/battle_anim_80FE840.o(.rodata);
src/bike.o(.rodata);
data/easy_chat.o(.rodata);
diff --git a/src/electric.c b/src/electric.c
new file mode 100644
index 000000000..5d65915b2
--- /dev/null
+++ b/src/electric.c
@@ -0,0 +1,438 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "constants/rgb.h"
+
+extern void sub_810A1A8(struct Sprite *);
+extern void sub_810A214(struct Sprite *);
+extern void sub_810A274(struct Sprite *);
+extern void sub_810A308(struct Sprite *);
+extern void TranslateAnimSpriteToTargetMonLocation(struct Sprite *);
+extern void sub_810A46C(struct Sprite *);
+extern void sub_810A5BC(struct Sprite *);
+extern void sub_810A628(struct Sprite *);
+extern void sub_810A75C(struct Sprite *);
+extern void sub_810A9DC(struct Sprite *);
+extern void sub_810AA2C(struct Sprite *);
+extern void sub_810ACD8(struct Sprite *);
+extern void sub_810AD30(struct Sprite *);
+extern void sub_810AD98(struct Sprite *);
+extern void sub_810B1F0(struct Sprite *);
+extern void sub_810B23C(struct Sprite *);
+extern void sub_810B51C(struct Sprite *);
+
+const union AnimCmd gUnknown_085956A4[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(32, 8),
+ ANIMCMD_FRAME(48, 5),
+ ANIMCMD_FRAME(64, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085956BC[] =
+{
+ gUnknown_085956A4,
+};
+
+const struct SpriteTemplate gUnknown_085956C0 =
+{
+ .tileTag = ANIM_TAG_LIGHTNING,
+ .paletteTag = ANIM_TAG_LIGHTNING,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_085956BC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810A1A8,
+};
+
+const union AffineAnimCmd gUnknown_085956D8[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 20),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -16, 60),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_085956F8[] =
+{
+ gUnknown_085956D8,
+};
+
+const struct SpriteTemplate gUnknown_085956FC =
+{
+ .tileTag = ANIM_TAG_HANDS_AND_FEET,
+ .paletteTag = ANIM_TAG_HANDS_AND_FEET,
+ .oam = &gUnknown_08524974,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_085956F8,
+ .callback = sub_810A214,
+};
+
+const union AnimCmd gUnknown_08595714[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(32, 5),
+ ANIMCMD_FRAME(48, 5),
+ ANIMCMD_FRAME(64, 5),
+ ANIMCMD_FRAME(80, 5),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_08595730[] =
+{
+ gUnknown_08595714,
+};
+
+const struct SpriteTemplate gUnknown_08595734 =
+{
+ .tileTag = ANIM_TAG_SHOCK,
+ .paletteTag = ANIM_TAG_SHOCK,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08595730,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810A274,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_859574C =
+{
+ .tileTag = ANIM_TAG_SPARK_2,
+ .paletteTag = ANIM_TAG_SPARK_2,
+ .oam = &gUnknown_0852496C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810A308,
+};
+
+const struct SpriteTemplate gUnknown_08595764 =
+{
+ .tileTag = ANIM_TAG_BLACK_BALL_2,
+ .paletteTag = ANIM_TAG_BLACK_BALL_2,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = TranslateAnimSpriteToTargetMonLocation,
+};
+
+const union AffineAnimCmd gUnknown_0859577C[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 20, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gUnknown_0859578C[] =
+{
+ gUnknown_0859577C,
+};
+
+const struct SpriteTemplate gUnknown_08595790 =
+{
+ .tileTag = ANIM_TAG_SPARK_2,
+ .paletteTag = ANIM_TAG_SPARK_2,
+ .oam = &gUnknown_0852496C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_0859578C,
+ .callback = sub_810A46C,
+};
+
+const union AnimCmd gUnknown_085957A8[] =
+{
+ ANIMCMD_FRAME(0, 6),
+ ANIMCMD_FRAME(16, 6),
+ ANIMCMD_FRAME(32, 6),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_085957B8[] =
+{
+ gUnknown_085957A8,
+};
+
+const union AffineAnimCmd gUnknown_085957BC[] =
+{
+ AFFINEANIMCMD_FRAME(0xE8, 0xE8, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 10),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 10),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gUnknown_085957DC[] =
+{
+ gUnknown_085957BC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_85957E0 =
+{
+ .tileTag = ANIM_TAG_SHOCK_3,
+ .paletteTag = ANIM_TAG_SHOCK_3,
+ .oam = &gUnknown_08524974,
+ .anims = gUnknown_085957B8,
+ .images = NULL,
+ .affineAnims = gUnknown_085957DC,
+ .callback = sub_810A5BC,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_85957F8 =
+{
+ .tileTag = ANIM_TAG_SPARK_2,
+ .paletteTag = ANIM_TAG_SPARK_2,
+ .oam = &gUnknown_0852496C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_0859578C,
+ .callback = sub_810A628,
+};
+
+const struct SpriteTemplate gElectricitySpriteTemplate =
+{
+ .tileTag = ANIM_TAG_SPARK_2,
+ .paletteTag = ANIM_TAG_SPARK_2,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810A75C,
+};
+
+const struct SpriteTemplate gUnknown_08595828 =
+{
+ .tileTag = ANIM_TAG_SPARK,
+ .paletteTag = ANIM_TAG_SPARK,
+ .oam = &gUnknown_08524904,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810A9DC,
+};
+
+const struct SpriteTemplate gUnknown_08595840 =
+{
+ .tileTag = ANIM_TAG_SPARK_H,
+ .paletteTag = ANIM_TAG_SPARK_H,
+ .oam = &gUnknown_08524934,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810AA2C,
+};
+
+const s8 gUnknown_08595858[][2] =
+{
+ { 58, -60},
+ {-56, -36},
+ { 8, -56},
+ {-16, 56},
+ { 58, -10},
+ {-58, 10},
+ { 48, -18},
+ {-8, 56},
+ { 16, -56},
+ {-58, -42},
+ { 58, 30},
+ {-48, 40},
+ { 12, -48},
+ { 48, -12},
+ {-56, 18},
+ { 48, 48},
+};
+
+const union AnimCmd gUnknown_08595878[] =
+{
+ ANIMCMD_FRAME(3, 1),
+ ANIMCMD_FRAME(2, 1),
+ ANIMCMD_FRAME(1, 1),
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_0859588C[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(1, 5),
+ ANIMCMD_FRAME(2, 5),
+ ANIMCMD_FRAME(3, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085958A0[] =
+{
+ gUnknown_08595878,
+ gUnknown_0859588C,
+};
+
+const struct SpriteTemplate gUnknown_085958A8 =
+{
+ .tileTag = ANIM_TAG_ELECTRIC_ORBS,
+ .paletteTag = ANIM_TAG_ELECTRIC_ORBS,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_085958A0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+const union AffineAnimCmd gUnknown_085958C0[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
+ AFFINEANIMCMD_FRAME(0x4, 0x4, 0, 60),
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_LOOP(0),
+ AFFINEANIMCMD_FRAME(0xFFFC, 0xFFFC, 0, 5),
+ AFFINEANIMCMD_FRAME(0x4, 0x4, 0, 5),
+ AFFINEANIMCMD_LOOP(10),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08595900[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 30),
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0xFFFC, 0xFFFC, 0, 5),
+ AFFINEANIMCMD_FRAME(0x4, 0x4, 0, 5),
+ AFFINEANIMCMD_JUMP(3),
+};
+
+const union AffineAnimCmd gUnknown_08595930[] =
+{
+ AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0),
+ AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 30),
+ AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 30),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_08595950[] =
+{
+ gUnknown_085958C0,
+ gUnknown_08595900,
+ gUnknown_08595930,
+};
+
+const struct SpriteTemplate gUnknown_0859595C =
+{
+ .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT,
+ .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT,
+ .oam = &gUnknown_08524A9C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08595950,
+ .callback = sub_810ACD8,
+};
+
+const union AnimCmd gUnknown_08595974[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(48, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08595988[] =
+{
+ gUnknown_08595974,
+};
+
+const struct SpriteTemplate gUnknown_0859598C =
+{
+ .tileTag = ANIM_TAG_ELECTRICITY,
+ .paletteTag = ANIM_TAG_ELECTRICITY,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08595988,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810AD30,
+};
+
+const struct SpriteTemplate gUnknown_085959A4 =
+{
+ .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT,
+ .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT,
+ .oam = &gUnknown_08524A9C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08595950,
+ .callback = sub_810AD98,
+};
+
+const union AnimCmd gUnknown_085959BC[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085959C4[] =
+{
+ ANIMCMD_FRAME(2, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085959CC[] =
+{
+ ANIMCMD_FRAME(4, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_085959D4[] =
+{
+ ANIMCMD_FRAME(6, 3),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_085959DC[] =
+{
+ gUnknown_085959BC,
+ gUnknown_085959C4,
+ gUnknown_085959CC,
+ gUnknown_085959D4,
+};
+
+const union AffineAnimCmd gUnknown_085959EC[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_085959FC[] =
+{
+ gUnknown_085959EC,
+};
+
+const struct SpriteTemplate gUnknown_08595A00 =
+{
+ .tileTag = ANIM_TAG_SPARK,
+ .paletteTag = ANIM_TAG_SPARK,
+ .oam = &gUnknown_08524A04,
+ .anims = gUnknown_085959DC,
+ .images = NULL,
+ .affineAnims = gUnknown_085959FC,
+ .callback = sub_810B1F0,
+};
+
+const struct SpriteTemplate gUnknown_08595A18 =
+{
+ .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT,
+ .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT,
+ .oam = &gUnknown_08524A9C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08595950,
+ .callback = sub_810B23C,
+};
+
+const struct SpriteTemplate gUnknown_08595A30 =
+{
+ .tileTag = ANIM_TAG_SPARK,
+ .paletteTag = ANIM_TAG_SPARK,
+ .oam = &gUnknown_08524904,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810B51C,
+};
diff --git a/src/fire.c b/src/fire.c
new file mode 100644
index 000000000..02c0db81c
--- /dev/null
+++ b/src/fire.c
@@ -0,0 +1,438 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "constants/rgb.h"
+
+extern void sub_8108EC8(struct Sprite *);
+extern void sub_8108F08(struct Sprite *);
+extern void sub_8108FBC(struct Sprite *);
+extern void sub_8108F4C(struct Sprite *);
+extern void sub_8109064(struct Sprite *);
+extern void sub_810916C(struct Sprite *);
+extern void TranslateAnimSpriteToTargetMonLocation(struct Sprite *);
+extern void sub_8109198(struct Sprite *);
+extern void sub_8109200(struct Sprite *);
+extern void sub_810921C(struct Sprite *);
+extern void sub_8109364(struct Sprite *);
+extern void sub_81093A4(struct Sprite *);
+extern void sub_80A8EE4(struct Sprite *);
+extern void sub_81098EC(struct Sprite *);
+extern void sub_8109A10(struct Sprite *);
+extern void sub_8109AFC(struct Sprite *);
+extern void sub_8109CB0(struct Sprite *);
+
+const union AnimCmd gUnknown_08595340[] =
+{
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(48, 4),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gUnknown_08595350[] =
+{
+ ANIMCMD_FRAME(16, 4, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 4, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_FRAME(48, 4, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_08595360[] =
+{
+ gUnknown_08595340,
+ gUnknown_08595350,
+};
+
+const struct SpriteTemplate gUnknown_08595368 =
+{
+ .tileTag = ANIM_TAG_SMALL_EMBER,
+ .paletteTag = ANIM_TAG_SMALL_EMBER,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08595360,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8108EC8,
+};
+
+const struct SpriteTemplate gUnknown_08595380 =
+{
+ .tileTag = ANIM_TAG_SMALL_EMBER,
+ .paletteTag = ANIM_TAG_SMALL_EMBER,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08595360,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8108F08,
+};
+
+const union AnimCmd gUnknown_08595398[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(48, 3),
+ ANIMCMD_FRAME(64, 3),
+ ANIMCMD_FRAME(80, 3),
+ ANIMCMD_FRAME(96, 3),
+ ANIMCMD_FRAME(112, 3),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_085953BC[] =
+{
+ gUnknown_08595398,
+};
+
+const union AnimCmd gUnknown_085953C0[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(32, 5),
+ ANIMCMD_FRAME(48, 5),
+ ANIMCMD_FRAME(64, 5),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_085953D8[] =
+{
+ gUnknown_085953C0,
+};
+
+const union AffineAnimCmd gUnknown_085953DC[] =
+{
+ AFFINEANIMCMD_FRAME(0x32, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x20, 0x0, 0, 7),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_085953F4[] =
+{
+ gUnknown_085953DC,
+};
+
+const struct SpriteTemplate gUnknown_085953F8 =
+{
+ .tileTag = ANIM_TAG_FIRE,
+ .paletteTag = ANIM_TAG_FIRE,
+ .oam = &gUnknown_08524974,
+ .anims = gUnknown_085953BC,
+ .images = NULL,
+ .affineAnims = gUnknown_085953F4,
+ .callback = sub_8108FBC,
+};
+
+const struct SpriteTemplate gUnknown_08595410 =
+{
+ .tileTag = ANIM_TAG_FIRE,
+ .paletteTag = ANIM_TAG_FIRE,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_085953BC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8108FBC,
+};
+
+const struct SpriteTemplate gUnknown_08595428 =
+{
+ .tileTag = ANIM_TAG_FIRE_PLUME,
+ .paletteTag = ANIM_TAG_FIRE_PLUME,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_085953D8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8108F4C,
+};
+
+const struct SpriteTemplate gUnknown_08595440 =
+{
+ .tileTag = ANIM_TAG_SMALL_EMBER,
+ .paletteTag = ANIM_TAG_SMALL_EMBER,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_085953D8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8108F4C,
+};
+
+const union AnimCmd gUnknown_08595458[] =
+{
+ ANIMCMD_FRAME(16, 6),
+ ANIMCMD_FRAME(32, 6),
+ ANIMCMD_FRAME(48, 6),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_08595468[] =
+{
+ gUnknown_08595458,
+};
+
+const struct SpriteTemplate gUnknown_0859546C =
+{
+ .tileTag = ANIM_TAG_SMALL_EMBER,
+ .paletteTag = ANIM_TAG_SMALL_EMBER,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08595468,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8109064,
+};
+
+const union AffineAnimCmd gUnknown_08595484[] =
+{
+ AFFINEANIMCMD_FRAME(0x50, 0x50, 0, 0),
+ AFFINEANIMCMD_FRAME(0x2, 0x2, 10, 1),
+ AFFINEANIMCMD_JUMP(1),
+};
+
+const union AffineAnimCmd *const gUnknown_0859549C[] =
+{
+ gUnknown_08595484,
+};
+
+const struct SpriteTemplate gUnknown_085954A0 =
+{
+ .tileTag = ANIM_TAG_SUNLIGHT,
+ .paletteTag = ANIM_TAG_SUNLIGHT,
+ .oam = &gUnknown_08524A94,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_0859549C,
+ .callback = sub_810916C,
+};
+
+const union AnimCmd gUnknown_085954B8[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(48, 4),
+ ANIMCMD_FRAME(64, 4),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_085954D0[] =
+{
+ gUnknown_085954B8,
+};
+
+const struct SpriteTemplate gEmberSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_SMALL_EMBER,
+ .paletteTag = ANIM_TAG_SMALL_EMBER,
+ .oam = &gUnknown_08524914,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = TranslateAnimSpriteToTargetMonLocation,
+};
+
+const struct SpriteTemplate gEmberFlareSpriteTemplate =
+{
+ .tileTag = ANIM_TAG_SMALL_EMBER,
+ .paletteTag = ANIM_TAG_SMALL_EMBER,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_085954D0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8109198,
+};
+
+const struct SpriteTemplate gUnknown_08595504 =
+{
+ .tileTag = ANIM_TAG_SMALL_EMBER,
+ .paletteTag = ANIM_TAG_SMALL_EMBER,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_085954D0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8109200,
+};
+
+const struct SpriteTemplate gUnknown_0859551C =
+{
+ .tileTag = ANIM_TAG_SMALL_EMBER,
+ .paletteTag = ANIM_TAG_SMALL_EMBER,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_085954D0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810921C,
+};
+
+const union AnimCmd gUnknown_08595534[] =
+{
+ ANIMCMD_FRAME(32, 6),
+ ANIMCMD_FRAME(48, 6),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_08595540[] =
+{
+ gUnknown_08595534,
+};
+
+const union AffineAnimCmd gUnknown_08595544[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08595554[] =
+{
+ AFFINEANIMCMD_FRAME(0xA0, 0xA0, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_08595564[] =
+{
+ gUnknown_08595544,
+ gUnknown_08595554,
+};
+
+const struct SpriteTemplate gUnknown_0859556C =
+{
+ .tileTag = ANIM_TAG_SMALL_EMBER,
+ .paletteTag = ANIM_TAG_SMALL_EMBER,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08595540,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8109364,
+};
+
+const struct SpriteTemplate gBattleAnimSpriteTemplate_8595584 =
+{
+ .tileTag = ANIM_TAG_SMALL_EMBER,
+ .paletteTag = ANIM_TAG_SMALL_EMBER,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_085954D0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81093A4,
+};
+
+const struct SpriteTemplate gUnknown_0859559C =
+{
+ .tileTag = ANIM_TAG_SMALL_EMBER,
+ .paletteTag = ANIM_TAG_SMALL_EMBER,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_085954D0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80A8EE4,
+};
+
+const struct SpriteTemplate gUnknown_085955B4 =
+{
+ .tileTag = ANIM_TAG_WARM_ROCK,
+ .paletteTag = ANIM_TAG_WARM_ROCK,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81098EC,
+};
+
+// gHeatedRockCoords
+const s16 gUnknown_085955CC[][2] =
+{
+ {-2, -5},
+ {-1, -1},
+ { 3, -6},
+ { 4, -2},
+ { 2, -8},
+ {-5, -5},
+ { 4, -7},
+};
+
+const struct SpriteTemplate gUnknown_085955E8 =
+{
+ .tileTag = ANIM_TAG_WARM_ROCK,
+ .paletteTag = ANIM_TAG_WARM_ROCK,
+ .oam = &gUnknown_08524914,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8109A10,
+};
+
+const union AnimCmd gUnknown_08595600[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_FRAME(12, 5),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gUnknown_08595614[] =
+{
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_0859561C[] =
+{
+ ANIMCMD_FRAME(20, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08595624[] =
+{
+ ANIMCMD_FRAME(20, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_0859562C[] =
+{
+ gUnknown_08595600,
+ gUnknown_08595614,
+ gUnknown_0859561C,
+ gUnknown_08595624,
+};
+
+const struct SpriteTemplate gUnknown_0859563C =
+{
+ .tileTag = ANIM_TAG_WISP_ORB,
+ .paletteTag = ANIM_TAG_WISP_ORB,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_0859562C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8109AFC,
+};
+
+const union AnimCmd gUnknown_08595654[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_FRAME(32, 5),
+ ANIMCMD_FRAME(48, 5),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_08595668[] =
+{
+ gUnknown_08595654,
+};
+
+const struct SpriteTemplate gUnknown_0859566C =
+{
+ .tileTag = ANIM_TAG_WISP_FIRE,
+ .paletteTag = ANIM_TAG_WISP_FIRE,
+ .oam = &gUnknown_08524914,
+ .anims = gUnknown_08595668,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8109CB0,
+};
+
+const s8 gUnknown_08595684[16] =
+{
+ -1, -1, 0, 1, 1, 0, 0, -1, -1, 1, 1, 0, 0, -1, 0, 1,
+};
+
+const s8 gUnknown_08595694[16] =
+{
+ -1, 0, 1, 0, -1, 1, 0, -1, 0, 1, 0, -1, 0, 1, 0, 1,
+};
diff --git a/src/ice.c b/src/ice.c
new file mode 100644
index 000000000..ebd0d3cf6
--- /dev/null
+++ b/src/ice.c
@@ -0,0 +1,491 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "constants/rgb.h"
+
+extern void sub_810B6C4(struct Sprite *);
+extern void sub_810B8AC(struct Sprite *);
+extern void sub_810B8EC(struct Sprite *);
+extern void sub_810B974(struct Sprite *);
+extern void sub_810BA24(struct Sprite *);
+extern void sub_810BC94(struct Sprite *);
+extern void sub_810BE48(struct Sprite *);
+extern void sub_810BED0(struct Sprite *);
+extern void sub_810C2F0(struct Sprite *);
+extern void sub_810C560(struct Sprite *);
+extern void sub_810CB58(struct Sprite *);
+extern void sub_80A8EE4(struct Sprite *);
+extern void unc_080B06FC(struct Sprite *);
+extern void sub_810CD4C(struct Sprite *);
+
+const union AnimCmd gUnknown_08595A48[] =
+{
+ ANIMCMD_FRAME(0, 5, .hFlip = TRUE),
+ ANIMCMD_FRAME(1, 5, .hFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_08595A54[] =
+{
+ gUnknown_08595A48,
+};
+
+// unknown sprite template
+const struct SpriteTemplate gUnknown_08595A58 =
+{
+ .tileTag = ANIM_TAG_ICE_CRYSTALS,
+ .paletteTag = ANIM_TAG_ICE_CRYSTALS,
+ .oam = &gUnknown_08524904,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810B6C4,
+};
+
+const union AnimCmd gUnknown_08595A70[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08595A78[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08595A80[] =
+{
+ ANIMCMD_FRAME(6, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08595A88[] =
+{
+ ANIMCMD_FRAME(7, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08595A90[] =
+{
+ ANIMCMD_FRAME(8, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08595A98[] =
+{
+ ANIMCMD_FRAME(12, 6),
+ ANIMCMD_FRAME(13, 6),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_08595AA4[] =
+{
+ gUnknown_08595A70,
+};
+
+const union AnimCmd *const gUnknown_08595AA8[] =
+{
+ gUnknown_08595A78,
+};
+
+const union AnimCmd *const gUnknown_08595AAC[] =
+{
+ gUnknown_08595A80,
+};
+
+const union AnimCmd *const gUnknown_08595AB0[] =
+{
+ gUnknown_08595A88,
+};
+
+const union AnimCmd *const gUnknown_08595AB4[] =
+{
+ gUnknown_08595A90,
+};
+
+const union AnimCmd *const gUnknown_08595AB8[] =
+{
+ gUnknown_08595A98,
+};
+
+const union AffineAnimCmd gUnknown_08595ABC[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 40, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gUnknown_08595ACC[] =
+{
+ gUnknown_08595ABC,
+};
+
+const struct SpriteTemplate gUnknown_08595AD0 =
+{
+ .tileTag = ANIM_TAG_ICE_CRYSTALS,
+ .paletteTag = ANIM_TAG_ICE_CRYSTALS,
+ .oam = &gUnknown_08524B24,
+ .anims = gUnknown_08595AA8,
+ .images = NULL,
+ .affineAnims = gUnknown_08595ACC,
+ .callback = sub_810B8AC,
+};
+
+const struct SpriteTemplate gUnknown_08595AE8 =
+{
+ .tileTag = ANIM_TAG_ICE_CRYSTALS,
+ .paletteTag = ANIM_TAG_ICE_CRYSTALS,
+ .oam = &gUnknown_08524A24,
+ .anims = gUnknown_08595AAC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810B8AC,
+};
+
+const union AffineAnimCmd gUnknown_08595B00[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 10, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+const union AffineAnimCmd *const gUnknown_08595B10[] =
+{
+ gUnknown_08595B00,
+};
+
+const struct SpriteTemplate gUnknown_08595B14 =
+{
+ .tileTag = ANIM_TAG_ICE_CRYSTALS,
+ .paletteTag = ANIM_TAG_ICE_CRYSTALS,
+ .oam = &gUnknown_08524AC4,
+ .anims = gUnknown_08595AA8,
+ .images = NULL,
+ .affineAnims = gUnknown_08595B10,
+ .callback = sub_810B8EC,
+};
+
+const struct SpriteTemplate gUnknown_08595B2C =
+{
+ .tileTag = ANIM_TAG_ICE_CRYSTALS,
+ .paletteTag = ANIM_TAG_ICE_CRYSTALS,
+ .oam = &gUnknown_08524A24,
+ .anims = gUnknown_08595AAC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810B8EC,
+};
+
+const union AffineAnimCmd gUnknown_08595B44[] =
+{
+ AFFINEANIMCMD_FRAME(0xCE, 0xCE, 0, 0),
+ AFFINEANIMCMD_FRAME(0x5, 0x5, 0, 10),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 6),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_08595B64[] =
+{
+ gUnknown_08595B44,
+};
+
+const struct SpriteTemplate gUnknown_08595B68 =
+{
+ .tileTag = ANIM_TAG_ICE_CRYSTALS,
+ .paletteTag = ANIM_TAG_ICE_CRYSTALS,
+ .oam = &gUnknown_08524AC4,
+ .anims = gUnknown_08595AA8,
+ .images = NULL,
+ .affineAnims = gUnknown_08595B64,
+ .callback = sub_810B974,
+};
+
+const struct SpriteTemplate gUnknown_08595B80 =
+{
+ .tileTag = ANIM_TAG_ICE_CRYSTALS,
+ .paletteTag = ANIM_TAG_ICE_CRYSTALS,
+ .oam = &gUnknown_08524A84,
+ .anims = gUnknown_08595AAC,
+ .images = NULL,
+ .affineAnims = gUnknown_08595B64,
+ .callback = sub_810B974,
+};
+
+const struct SpriteTemplate gUnknown_08595B98 =
+{
+ .tileTag = ANIM_TAG_ICE_CRYSTALS,
+ .paletteTag = ANIM_TAG_ICE_CRYSTALS,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_08595AB0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810BA24,
+};
+
+const struct SpriteTemplate gUnknown_08595BB0 =
+{
+ .tileTag = ANIM_TAG_ICE_CRYSTALS,
+ .paletteTag = ANIM_TAG_ICE_CRYSTALS,
+ .oam = &gUnknown_0852490C,
+ .anims = gUnknown_08595AB4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810BC94,
+};
+
+const struct SpriteTemplate gUnknown_08595BC8 =
+{
+ .tileTag = ANIM_TAG_ICE_CRYSTALS,
+ .paletteTag = ANIM_TAG_ICE_CRYSTALS,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_08595AB0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810BC94,
+};
+
+const union AnimCmd gUnknown_08595BE0[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_FRAME(2, 5),
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_FRAME(6, 5),
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_FRAME(2, 5),
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08595C00[] =
+{
+ gUnknown_08595BE0,
+};
+
+const struct SpriteTemplate gUnknown_08595C04 =
+{
+ .tileTag = ANIM_TAG_ICE_SPIKES,
+ .paletteTag = ANIM_TAG_ICE_SPIKES,
+ .oam = &gUnknown_08524A64,
+ .anims = gUnknown_08595C00,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810BE48,
+};
+
+const union AnimCmd gUnknown_08595C1C[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(8, 8),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gUnknown_08595C28[] =
+{
+ gUnknown_08595C1C,
+};
+
+const struct SpriteTemplate gUnknown_08595C2C =
+{
+ .tileTag = ANIM_TAG_MIST_CLOUD,
+ .paletteTag = ANIM_TAG_MIST_CLOUD,
+ .oam = &gUnknown_08524A54,
+ .anims = gUnknown_08595C28,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810BED0,
+};
+
+const struct SpriteTemplate gUnknown_08595C44 =
+{
+ .tileTag = ANIM_TAG_PURPLE_GAS_CLOUD,
+ .paletteTag = ANIM_TAG_PURPLE_GAS_CLOUD,
+ .oam = &gUnknown_08524A54,
+ .anims = gUnknown_08595C28,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810BED0,
+};
+
+const u8 gUnknown_08595C5C[] =
+{
+ 0, 1, 2, 2, 2, 2, 3, 4, 4, 4, 5, 6, 6, 6, 6, 7, 8, 8, 8, 9,
+};
+
+const struct SpriteTemplate gUnknown_08595C70 =
+{
+ .tileTag = ANIM_TAG_SMALL_BUBBLES,
+ .paletteTag = ANIM_TAG_SMALL_BUBBLES,
+ .oam = &gUnknown_0852490C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810C2F0,
+};
+
+const u8 gUnknown_08595C88[] =
+{
+ 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5,
+};
+
+const struct SpriteTemplate gUnknown_08595C9C =
+{
+ .tileTag = ANIM_TAG_PURPLE_GAS_CLOUD,
+ .paletteTag = ANIM_TAG_PURPLE_GAS_CLOUD,
+ .oam = &gUnknown_08524A54,
+ .anims = gUnknown_08595C28,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810C560,
+};
+
+const u8 gUnknown_08595CB4[][4] =
+{
+ {0x64, 0xE0, 0x01, 0x20},
+ {0x55, 0xE0, 0x01, 0x00},
+ {0xF2, 0xE0, 0x11, 0x10},
+ {0x42, 0xE0, 0x21, 0x10},
+ {0xB6, 0xE0, 0x31, 0x00},
+ {0x3C, 0xE0, 0x01, 0x20},
+ {0xD6, 0xE0, 0x11, 0x00},
+ {0x71, 0xE0, 0x01, 0x10},
+ {0xD2, 0xE0, 0x31, 0x10},
+ {0x26, 0xE0, 0x21, 0x00},
+};
+
+const union AffineAnimCmd gUnknown_08595CDC[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08595CEC[] =
+{
+ AFFINEANIMCMD_FRAME(0xF0, 0xF0, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08595CFC[] =
+{
+ AFFINEANIMCMD_FRAME(0xE0, 0xE0, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08595D0C[] =
+{
+ AFFINEANIMCMD_FRAME(0x150, 0x150, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_08595D1C[] =
+{
+ gUnknown_08595CDC,
+ gUnknown_08595CEC,
+ gUnknown_08595CFC,
+};
+
+const union AffineAnimCmd *const gUnknown_08595D28[] =
+{
+ gUnknown_08595D0C,
+};
+
+const struct SpriteTemplate gUnknown_08595D2C =
+{
+ .tileTag = ANIM_TAG_HAIL,
+ .paletteTag = ANIM_TAG_HAIL,
+ .oam = &gUnknown_0852496C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08595D1C,
+ .callback = sub_810CB58,
+};
+
+const struct SpriteTemplate gUnknown_08595D44 =
+{
+ .tileTag = ANIM_TAG_HAIL,
+ .paletteTag = ANIM_TAG_HAIL,
+ .oam = &gUnknown_0852496C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gUnknown_08595D28,
+ .callback = sub_80A8EE4,
+};
+
+const union AnimCmd gUnknown_08595D5C[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gUnknown_08595D64[] =
+{
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(48, 4),
+ ANIMCMD_FRAME(64, 4),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gUnknown_08595D78[] =
+{
+ gUnknown_08595D5C,
+ gUnknown_08595D64,
+};
+
+const union AffineAnimCmd gUnknown_08595D80[] =
+{
+ AFFINEANIMCMD_FRAME(0xE0, 0xE0, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08595D90[] =
+{
+ AFFINEANIMCMD_FRAME(0x118, 0x118, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08595DA0[] =
+{
+ AFFINEANIMCMD_FRAME(0x150, 0x150, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08595DB0[] =
+{
+ AFFINEANIMCMD_FRAME(0x180, 0x180, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd gUnknown_08595DC0[] =
+{
+ AFFINEANIMCMD_FRAME(0x1C0, 0x1C0, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+const union AffineAnimCmd *const gUnknown_08595DD0[] =
+{
+ gUnknown_08595D80,
+ gUnknown_08595D90,
+ gUnknown_08595DA0,
+ gUnknown_08595DB0,
+ gUnknown_08595DC0,
+};
+
+const struct SpriteTemplate gUnknown_08595DE4 =
+{
+ .tileTag = ANIM_TAG_ICE_CHUNK,
+ .paletteTag = ANIM_TAG_ICE_CHUNK,
+ .oam = &gUnknown_085249D4,
+ .anims = gUnknown_08595D78,
+ .images = NULL,
+ .affineAnims = gUnknown_08595DD0,
+ .callback = unc_080B06FC,
+};
+
+const struct SpriteTemplate gUnknown_08595DFC =
+{
+ .tileTag = ANIM_TAG_ICE_CRYSTALS,
+ .paletteTag = ANIM_TAG_ICE_CRYSTALS,
+ .oam = &gUnknown_08524904,
+ .anims = gUnknown_08595AAC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810CD4C,
+};