diff options
author | Marcus Huderle <huderlem@gmail.com> | 2018-04-30 10:46:34 -0700 |
---|---|---|
committer | Marcus Huderle <huderlem@gmail.com> | 2018-04-30 10:46:57 -0700 |
commit | d68e8b09eecd136fc0dcc32c1e08b946b8981adc (patch) | |
tree | 3ef1fb195ef1f90eb2b2a7b3c541f4ce0a823c94 /src | |
parent | c88cf196af0f099f4daa7cbc06b9b0df9a31c60c (diff) |
Finish moving battle anim .rodata into .c files
Diffstat (limited to 'src')
-rw-r--r-- | src/battle/anim/beta_beat_up.c | 25 | ||||
-rw-r--r-- | src/battle/anim/bug.c | 186 | ||||
-rwxr-xr-x | src/battle/anim/current.c | 335 | ||||
-rw-r--r-- | src/battle/anim/dark.c | 164 | ||||
-rw-r--r-- | src/battle/anim/dragon.c | 196 | ||||
-rw-r--r-- | src/battle/anim/energy_wave.c | 144 | ||||
-rw-r--r-- | src/battle/anim/fight.c | 394 | ||||
-rw-r--r-- | src/battle/anim/fire.c | 172 | ||||
-rw-r--r-- | src/battle/anim/fire_2.c | 302 | ||||
-rwxr-xr-x | src/battle/anim/flying.c | 346 | ||||
-rwxr-xr-x | src/battle/anim/ghost.c | 191 | ||||
-rwxr-xr-x | src/battle/anim/ground.c | 125 | ||||
-rw-r--r-- | src/battle/anim/heated_rock.c | 129 | ||||
-rwxr-xr-x | src/battle/anim/ice.c | 495 | ||||
-rwxr-xr-x | src/battle/anim/normal.c | 240 | ||||
-rw-r--r-- | src/battle/anim/poison.c | 192 | ||||
-rw-r--r-- | src/battle/anim/psychic.c | 408 | ||||
-rw-r--r-- | src/battle/anim/rock.c | 295 | ||||
-rw-r--r-- | src/battle/anim/shock.c | 51 | ||||
-rw-r--r-- | src/battle/anim/sunlight.c | 25 | ||||
-rw-r--r-- | src/battle/anim/thunder.c | 27 | ||||
-rw-r--r-- | src/battle/anim/water.c | 182 | ||||
-rw-r--r-- | src/battle/anim/wisp_fire.c | 43 | ||||
-rw-r--r-- | src/battle/anim/wisp_orb.c | 47 |
24 files changed, 4521 insertions, 193 deletions
diff --git a/src/battle/anim/beta_beat_up.c b/src/battle/anim/beta_beat_up.c index ee889492c..166782362 100644 --- a/src/battle/anim/beta_beat_up.c +++ b/src/battle/anim/beta_beat_up.c @@ -7,10 +7,35 @@ extern s16 gBattleAnimArgs[8]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; +void sub_80D6234(struct Sprite *sprite); static void sub_80D6278(struct Sprite *); // beta_beat_up +const union AffineAnimCmd gSpriteAffineAnim_83D97E8[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 20), + AFFINEANIMCMD_FRAME(0x0, 0x0, -16, 60), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9808[] = +{ + gSpriteAffineAnim_83D97E8, +}; + +const struct SpriteTemplate gSpriteTemplate_83D980C = +{ + .tileTag = 10143, + .paletteTag = 10143, + .oam = &gOamData_837DF94, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83D9808, + .callback = sub_80D6234, +}; + void sub_80D6234(struct Sprite *sprite) { if (GetBattlerSide(gAnimBankAttacker) != 0) diff --git a/src/battle/anim/bug.c b/src/battle/anim/bug.c index 245e45774..c4c7fe937 100644 --- a/src/battle/anim/bug.c +++ b/src/battle/anim/bug.c @@ -3,18 +3,202 @@ #include "contest.h" #include "rom_8077ABC.h" #include "trig.h" -// #include "util.h" extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; +void sub_80DC824(struct Sprite *sprite); +void sub_80DC8F4(struct Sprite *sprite); +void sub_80DC9A0(struct Sprite *sprite); +void sub_80DCA70(struct Sprite *sprite); +void sub_80DCB38(struct Sprite *sprite); +void AnimTranslateStinger(struct Sprite *sprite); +void AnimMissileArc(struct Sprite *sprite); +void sub_80DCE40(struct Sprite *sprite); static void sub_80DCA38(struct Sprite *sprite); static void sub_80DCAEC(struct Sprite *sprite); static void sub_80DCB5C(struct Sprite *sprite); static void sub_80DCBB4(struct Sprite *sprite); static void AnimMissileArcStep(struct Sprite *sprite); +const union AffineAnimCmd gSpriteAffineAnim_83DAA80[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, 30, 0), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DAA90[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, -99, 0), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DAAA0[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, 94, 0), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DAAB0[] = +{ + gSpriteAffineAnim_83DAA80, + gSpriteAffineAnim_83DAA90, + gSpriteAffineAnim_83DAAA0, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAABC = +{ + .tileTag = 10153, + .paletteTag = 10153, + .oam = &gOamData_837E014, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DAAB0, + .callback = sub_80DC824, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DAAD4[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, -33, 1), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DAAE4[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 96, 1), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DAAF4[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, -96, 1), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DAB04[] = +{ + gSpriteAffineAnim_83DAAD4, + gSpriteAffineAnim_83DAAE4, + gSpriteAffineAnim_83DAAF4, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAB10 = +{ + .tileTag = 10161, + .paletteTag = 10161, + .oam = &gOamData_837DF8C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DAB04, + .callback = sub_80DC8F4, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAB28 = +{ + .tileTag = 10180, + .paletteTag = 10180, + .oam = &gOamData_837DF24, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DC9A0, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAB40 = +{ + .tileTag = 10179, + .paletteTag = 10179, + .oam = &gOamData_837DF5C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DCA70, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DAB58[] = +{ + AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0), + AFFINEANIMCMD_FRAME(0x6, 0x6, 0, 1), + AFFINEANIMCMD_JUMP(1), +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DAB70[] = +{ + gSpriteAffineAnim_83DAB58, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAB74 = +{ + .tileTag = 10181, + .paletteTag = 10181, + .oam = &gOamData_837E11C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DAB70, + .callback = sub_80DCB38, +}; + +const struct SpriteTemplate gLinearStingerSpriteTemplate = +{ + .tileTag = 10161, + .paletteTag = 10161, + .oam = &gOamData_837DF8C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimTranslateStinger, +}; + +const struct SpriteTemplate gPinMissileSpriteTemplate = +{ + .tileTag = 10161, + .paletteTag = 10161, + .oam = &gOamData_837DF8C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimMissileArc, +}; + +const struct SpriteTemplate gIcicleSpearSpriteTemplate = +{ + .tileTag = 10262, + .paletteTag = 10262, + .oam = &gOamData_837DF94, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimMissileArc, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DABD4[] = +{ + AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0), + AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 18), + AFFINEANIMCMD_LOOP(0), + AFFINEANIMCMD_FRAME(0xFFFB, 0xFFFB, 0, 8), + AFFINEANIMCMD_FRAME(0x5, 0x5, 0, 8), + AFFINEANIMCMD_LOOP(5), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DAC0C[] = +{ + gSpriteAffineAnim_83DABD4, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAC10 = +{ + .tileTag = 10212, + .paletteTag = 10212, + .oam = &gOamData_837E0BC, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DAC0C, + .callback = sub_80DCE40, +}; + // used in Move_MEGAHORN void sub_80DC824(struct Sprite *sprite) { diff --git a/src/battle/anim/current.c b/src/battle/anim/current.c index af9003e87..af72edef0 100755 --- a/src/battle/anim/current.c +++ b/src/battle/anim/current.c @@ -12,14 +12,20 @@ extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; extern u8 gAnimVisualTaskCount; -extern const struct SpriteTemplate gSpriteTemplate_83D9938; -extern const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9950; -extern const struct SpriteTemplate gSpriteTemplate_83D99B8; -extern const struct SpriteTemplate gSpriteTemplate_83D9B10; -extern const struct SpriteTemplate gSpriteTemplate_83D9B40; extern const struct SpriteTemplate gBattleAnimSpriteTemplate_83D97D0; -extern s8 gUnknown_083D9968[][2]; +void sub_80D648C(struct Sprite *sprite); +void sub_80D65DC(struct Sprite *sprite); +void sub_80D6658(struct Sprite *sprite); +void sub_80D679C(struct Sprite *sprite); +void sub_80D6A1C(struct Sprite *sprite); +void sub_80D6A6C(struct Sprite *sprite); +void sub_80D6D18(struct Sprite *sprite); +void sub_80D6D70(struct Sprite *sprite); +void sub_80D6DD8(struct Sprite *sprite); +void sub_80D7230(struct Sprite *sprite); +void sub_80D727C(struct Sprite *sprite); +void sub_80D755C(struct Sprite *sprite); static void sub_80D6514(struct Sprite *sprite); static void sub_80D672C(struct Sprite *sprite); static void sub_80D6874(u8 taskId); @@ -32,6 +38,323 @@ static bool8 sub_80D7470(struct Task *task, u8 taskId); static bool8 sub_80D7654(struct Task *task, u8 taskId); static void sub_80D76C4(struct Sprite *sprite); +const union AffineAnimCmd gSpriteAffineAnim_83D988C[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 20, 1), + AFFINEANIMCMD_JUMP(0), +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83D989C[] = +{ + gSpriteAffineAnim_83D988C, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D98A0 = +{ + .tileTag = 10011, + .paletteTag = 10011, + .oam = &gOamData_837DF8C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83D989C, + .callback = sub_80D648C, +}; + +const union AnimCmd gSpriteAnim_83D98B8[] = +{ + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(16, 6), + ANIMCMD_FRAME(32, 6), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd *const gSpriteAnimTable_83D98C8[] = +{ + gSpriteAnim_83D98B8, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83D98CC[] = +{ + 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 gSpriteAffineAnimTable_83D98EC[] = +{ + gSpriteAffineAnim_83D98CC, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D98F0 = +{ + .tileTag = 10282, + .paletteTag = 10282, + .oam = &gOamData_837DF94, + .anims = gSpriteAnimTable_83D98C8, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83D98EC, + .callback = sub_80D65DC, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9908 = +{ + .tileTag = 10011, + .paletteTag = 10011, + .oam = &gOamData_837DF8C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83D989C, + .callback = sub_80D6658, +}; + +const struct SpriteTemplate gElectricitySpriteTemplate = +{ + .tileTag = 10011, + .paletteTag = 10011, + .oam = &gOamData_837DF2C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D679C, +}; + +const struct SpriteTemplate gSpriteTemplate_83D9938 = +{ + .tileTag = 10001, + .paletteTag = 10001, + .oam = &gOamData_837DF24, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D6A1C, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9950 = +{ + .tileTag = 10173, + .paletteTag = 10173, + .oam = &gOamData_837DF54, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D6A6C, +}; + +const s8 gUnknown_083D9968[][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 gSpriteAnim_83D9988[] = +{ + ANIMCMD_FRAME(3, 1), + ANIMCMD_FRAME(2, 1), + ANIMCMD_FRAME(1, 1), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83D999C[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(1, 5), + ANIMCMD_FRAME(2, 5), + ANIMCMD_FRAME(3, 5), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_83D99B0[] = +{ + gSpriteAnim_83D9988, + gSpriteAnim_83D999C, +}; + +const struct SpriteTemplate gSpriteTemplate_83D99B8 = +{ + .tileTag = 10211, + .paletteTag = 10211, + .oam = &gOamData_837DF24, + .anims = gSpriteAnimTable_83D99B0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83D99D0[] = +{ + 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 gSpriteAffineAnim_83D9A10[] = +{ + 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 gSpriteAffineAnim_83D9A40[] = +{ + AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0), + AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 30), + AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 30), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9A60[] = +{ + gSpriteAffineAnim_83D99D0, + gSpriteAffineAnim_83D9A10, + gSpriteAffineAnim_83D9A40, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9A6C = +{ + .tileTag = 10212, + .paletteTag = 10212, + .oam = &gOamData_837E0BC, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83D9A60, + .callback = sub_80D6D18, +}; + +const union AnimCmd gSpriteAnim_83D9A84[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(16, 3), + ANIMCMD_FRAME(32, 3), + ANIMCMD_FRAME(48, 3), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_83D9A98[] = +{ + gSpriteAnim_83D9A84, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9A9C = +{ + .tileTag = 10213, + .paletteTag = 10213, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83D9A98, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D6D70, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9AB4 = +{ + .tileTag = 10212, + .paletteTag = 10212, + .oam = &gOamData_837E0BC, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83D9A60, + .callback = sub_80D6DD8, +}; + +const union AnimCmd gSpriteAnim_83D9ACC[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83D9AD4[] = +{ + ANIMCMD_FRAME(2, 3), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83D9ADC[] = +{ + ANIMCMD_FRAME(4, 3), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83D9AE4[] = +{ + ANIMCMD_FRAME(6, 3), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_83D9AEC[] = +{ + gSpriteAnim_83D9ACC, + gSpriteAnim_83D9AD4, + gSpriteAnim_83D9ADC, + gSpriteAnim_83D9AE4, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83D9AFC[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9B0C[] = +{ + gSpriteAffineAnim_83D9AFC, +}; + +const struct SpriteTemplate gSpriteTemplate_83D9B10 = +{ + .tileTag = 10001, + .paletteTag = 10001, + .oam = &gOamData_837E024, + .anims = gSpriteAnimTable_83D9AEC, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83D9B0C, + .callback = sub_80D7230, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9B28 = +{ + .tileTag = 10212, + .paletteTag = 10212, + .oam = &gOamData_837E0BC, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83D9A60, + .callback = sub_80D727C, +}; + +const struct SpriteTemplate gSpriteTemplate_83D9B40 = +{ + .tileTag = 10001, + .paletteTag = 10001, + .oam = &gOamData_837DF24, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D755C, +}; void sub_80D648C(struct Sprite *sprite) { diff --git a/src/battle/anim/dark.c b/src/battle/anim/dark.c index 55d500950..a7026edff 100644 --- a/src/battle/anim/dark.c +++ b/src/battle/anim/dark.c @@ -28,6 +28,10 @@ extern const u8 gUnknown_08D1D574[]; extern const u8 gUnknown_08D1D410[]; extern const u16 gUnknown_08D1D54C[]; +void sub_80DFE14(struct Sprite *sprite); +void sub_80DFF1C(struct Sprite *sprite); +void sub_80DFFD0(struct Sprite *sprite); +void sub_80E0A10(struct Sprite *sprite); static void sub_80DFE90(struct Sprite *sprite); static void sub_80DFC9C(u8 taskId); static void sub_80DFD58(u8 taskId); @@ -40,6 +44,166 @@ static void sub_80E08CC(u8 priority); static void sub_80E079C(struct Task *task); static void sub_80E0CD0(u8 taskId); +const struct SpriteTemplate gSpriteTemplate_83DB118 = +{ + .tileTag = 10015, + .paletteTag = 10015, + .oam = &gOamData_837DF2C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DFE14, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DB130[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DB140[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 32, 1), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DB150[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 64, 1), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DB160[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 96, 1), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DB170[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, -128, 1), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DB180[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, -96, 1), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DB190[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, -64, 1), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DB1A0[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, -32, 1), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DB1B0[] = +{ + gSpriteAffineAnim_83DB130, + gSpriteAffineAnim_83DB140, + gSpriteAffineAnim_83DB150, + gSpriteAffineAnim_83DB160, + gSpriteAffineAnim_83DB170, + gSpriteAffineAnim_83DB180, + gSpriteAffineAnim_83DB190, + gSpriteAffineAnim_83DB1A0, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB1D0 = +{ + .tileTag = 10139, + .paletteTag = 10139, + .oam = &gOamData_837E0BC, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DB1B0, + .callback = sub_80DFF1C, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB1E8 = +{ + .tileTag = 10145, + .paletteTag = 10145, + .oam = &gOamData_837E0BC, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DB1B0, + .callback = sub_80DFF1C, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DB200[] = +{ + AFFINEANIMCMD_FRAME(0xC0, 0xC0, 80, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, -2, 8), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DB218[] = +{ + AFFINEANIMCMD_FRAME(0xC0, 0xC0, -80, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, 2, 8), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DB230[] = +{ + gSpriteAffineAnim_83DB200, + gSpriteAffineAnim_83DB218, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB238 = +{ + .tileTag = 10155, + .paletteTag = 10155, + .oam = &gOamData_837DF8C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DB230, + .callback = sub_80DFFD0, +}; + +const union AnimCmd gSpriteAnim_83DB250[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(16, 4), + ANIMCMD_FRAME(32, 4), + ANIMCMD_FRAME(48, 4), + ANIMCMD_FRAME(64, 4), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83DB268[] = +{ + ANIMCMD_FRAME(0, 4, .hFlip = TRUE), + ANIMCMD_FRAME(16, 4, .hFlip = TRUE), + ANIMCMD_FRAME(32, 4, .hFlip = TRUE), + ANIMCMD_FRAME(48, 4, .hFlip = TRUE), + ANIMCMD_FRAME(64, 4, .hFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_83DB280[] = +{ + gSpriteAnim_83DB250, + gSpriteAnim_83DB268, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB288 = +{ + .tileTag = 10039, + .paletteTag = 10039, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83DB280, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80E0A10, +}; // used in Smoke Ball escape, Sky Attack, Feint Attack and Camouflage void sub_80DFC24(u8 taskId) diff --git a/src/battle/anim/dragon.c b/src/battle/anim/dragon.c index 4c8448636..163529ecb 100644 --- a/src/battle/anim/dragon.c +++ b/src/battle/anim/dragon.c @@ -5,13 +5,6 @@ #include "sound.h" #include "scanline_effect.h" -void sub_80DF81C(struct Sprite *sprite); -void sub_80DFBD8(struct Sprite *sprite); - -void sub_80DF9F4(u8 taskId); - -void sub_80DFAB0(struct Task *task); - extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; @@ -21,6 +14,187 @@ extern u16 gBattle_BG2_X; extern u16 gUnknown_03000730[]; extern u8 gBankSpriteIds[]; +void sub_80DF5A0(struct Sprite *sprite); +void sub_80DF760(struct Sprite *sprite); +void sub_80DF6F0(struct Sprite *sprite); +void sub_80DF760(struct Sprite *sprite); +void sub_80DF78C(struct Sprite *sprite); +void sub_80DFB28(struct Sprite *sprite); +static void sub_80DF81C(struct Sprite *sprite); +static void sub_80DFBD8(struct Sprite *sprite); +static void sub_80DF9F4(u8 taskId); +static void sub_80DFAB0(struct Task *task); + +const union AnimCmd gSpriteAnim_83DAFB0[] = +{ + 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 gSpriteAnimTable_83DAFC8[] = +{ + gSpriteAnim_83DAFB0, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAFCC = +{ + .tileTag = 10029, + .paletteTag = 10029, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83DAFC8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DF5A0, +}; + +const union AnimCmd gSpriteAnim_83DAFE4[] = +{ + ANIMCMD_FRAME(16, 3), + ANIMCMD_FRAME(32, 3), + ANIMCMD_FRAME(48, 3), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gSpriteAnim_83DAFF4[] = +{ + ANIMCMD_FRAME(16, 3, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(32, 3, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(48, 3, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd *const gSpriteAnimTable_83DB004[] = +{ + gSpriteAnim_83DAFE4, + gSpriteAnim_83DAFF4, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DB00C[] = +{ + AFFINEANIMCMD_FRAME(0x50, 0x50, 127, 0), + AFFINEANIMCMD_FRAME(0xD, 0xD, 0, 100), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DB024[] = +{ + AFFINEANIMCMD_FRAME(0x50, 0x50, 0, 0), + AFFINEANIMCMD_FRAME(0xD, 0xD, 0, 100), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DB03C[] = +{ + gSpriteAffineAnim_83DB00C, + gSpriteAffineAnim_83DB024, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB044 = +{ + .tileTag = 10029, + .paletteTag = 10029, + .oam = &gOamData_837DFF4, + .anims = gSpriteAnimTable_83DB004, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DB03C, + .callback = sub_80DF760, +}; + +const union AnimCmd gSpriteAnim_83DB05C[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(16, 5), + ANIMCMD_FRAME(32, 5), + ANIMCMD_FRAME(48, 5), + ANIMCMD_FRAME(64, 5), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_83DB074[] = +{ + gSpriteAnim_83DB05C, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB078 = +{ + .tileTag = 10035, + .paletteTag = 10035, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83DB074, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DF6F0, +}; + +const union AnimCmd gSpriteAnim_83DB090[] = +{ + ANIMCMD_FRAME(16, 3), + ANIMCMD_FRAME(32, 3), + ANIMCMD_FRAME(48, 3), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd *const gSpriteAnimTable_83DB0A0[] = +{ + gSpriteAnim_83DB090, + gSpriteAnim_83DB090, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DB0A8[] = +{ + AFFINEANIMCMD_FRAME(0x64, 0x64, 127, 1), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DB0B8[] = +{ + AFFINEANIMCMD_FRAME(0x64, 0x64, 0, 1), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DB0C8[] = +{ + gSpriteAffineAnim_83DB0A8, + gSpriteAffineAnim_83DB0B8, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB0D0 = +{ + .tileTag = 10029, + .paletteTag = 10029, + .oam = &gOamData_837DFF4, + .anims = gSpriteAnimTable_83DB0A0, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DB0C8, + .callback = sub_80DF760, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB0E8 = +{ + .tileTag = 10249, + .paletteTag = 10249, + .oam = &gOamData_837DF2C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DF78C, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB100 = +{ + .tileTag = 10029, + .paletteTag = 10029, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83DAFC8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DFB28, +}; + // Outrage void sub_80DF5A0(struct Sprite *sprite) @@ -123,7 +297,7 @@ void sub_80DF78C(struct Sprite *sprite) sprite->callback = sub_80DF81C; } -void sub_80DF81C(struct Sprite *sprite) +static void sub_80DF81C(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -196,7 +370,7 @@ void sub_80DF924(u8 taskId) task->func = sub_80DF9F4; } -void sub_80DF9F4(u8 taskId) +static void sub_80DF9F4(u8 taskId) { struct Task *task = &gTasks[taskId]; switch (task->data[0]) @@ -234,7 +408,7 @@ void sub_80DF9F4(u8 taskId) } } -void sub_80DFAB0(struct Task *task) +static void sub_80DFAB0(struct Task *task) { u16 r3 = task->data[5]; u16 i; @@ -264,7 +438,7 @@ void sub_80DFB28(struct Sprite *sprite) gUnknown_03000730[i] = sprite->data[i]; } -void sub_80DFBD8(struct Sprite *sprite) +static void sub_80DFBD8(struct Sprite *sprite) { sprite->data[4] += sprite->data[1]; sprite->data[5] += sprite->data[2]; diff --git a/src/battle/anim/energy_wave.c b/src/battle/anim/energy_wave.c index 7980c7b34..9ac362b57 100644 --- a/src/battle/anim/energy_wave.c +++ b/src/battle/anim/energy_wave.c @@ -8,8 +8,11 @@ extern s16 gBattleAnimArgs[8]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; -extern const struct SpriteTemplate gSpriteTemplate_83D9130[]; +extern const union AffineAnimCmd *const gSpriteAffineAnimTable_83D752C[]; +void sub_80D3554(struct Sprite *sprite); +void sub_80D3698(struct Sprite *sprite); +void sub_80D3728(struct Sprite *sprite); static void sub_80D35DC(struct Sprite *); static void sub_80D365C(u8); static void sub_80D370C(struct Sprite *); @@ -18,6 +21,145 @@ static void sub_80D370C(struct Sprite *); // Used in Hydro Pump, Mud Shot, Signal Beam, Flamethrower, Psywave, and // Hydro Cannon. +const union AnimCmd gSpriteAnim_83D91DC[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(4, 1), + ANIMCMD_FRAME(8, 1), + ANIMCMD_FRAME(12, 1), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd *const gSpriteAnimTable_83D91F0[] = +{ + gSpriteAnim_83D91DC, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D91F4 = +{ + .tileTag = 10149, + .paletteTag = 10149, + .oam = &gOamData_837E04C, + .anims = gSpriteAnimTable_83D91F0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D3554, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D920C = +{ + .tileTag = 10259, + .paletteTag = 10259, + .oam = &gOamData_837E04C, + .anims = gSpriteAnimTable_83D91F0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D3554, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9224 = +{ + .tileTag = 10264, + .paletteTag = 10264, + .oam = &gOamData_837DF24, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D3554, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D923C = +{ + .tileTag = 10265, + .paletteTag = 10265, + .oam = &gOamData_837DF24, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D3554, +}; + +const union AnimCmd gSpriteAnim_83D9254[] = +{ + ANIMCMD_FRAME(16, 2), + ANIMCMD_FRAME(32, 2), + ANIMCMD_FRAME(48, 2), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd *const gSpriteAnimTable_83D9264[] = +{ + gSpriteAnim_83D9254, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9268 = +{ + .tileTag = 10029, + .paletteTag = 10029, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83D9264, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D3554, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9280 = +{ + .tileTag = 10165, + .paletteTag = 10165, + .oam = &gOamData_837E034, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83D752C, + .callback = sub_80D3554, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83D9298[] = +{ + AFFINEANIMCMD_FRAME(0x3, 0x3, 10, 50), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 10), + AFFINEANIMCMD_FRAME(0xFFEC, 0xFFEC, -10, 20), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83D92B8[] = +{ + AFFINEANIMCMD_FRAME(0x150, 0x150, 0, 0), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83D92C8[] = +{ + gSpriteAffineAnim_83D9298, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83D92CC[] = +{ + gSpriteAffineAnim_83D92B8, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D92D0 = +{ + .tileTag = 10149, + .paletteTag = 10149, + .oam = &gOamData_837E10C, + .anims = gSpriteAnimTable_83D91F0, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83D92C8, + .callback = sub_80D3698, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D92E8 = +{ + .tileTag = 10149, + .paletteTag = 10149, + .oam = &gOamData_837E10C, + .anims = gSpriteAnimTable_83D91F0, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83D92CC, + .callback = sub_80D3728, +}; + void sub_80D3554(struct Sprite *sprite) { InitAnimSpritePos(sprite, 1); diff --git a/src/battle/anim/fight.c b/src/battle/anim/fight.c index 5e25d664a..af2af1981 100644 --- a/src/battle/anim/fight.c +++ b/src/battle/anim/fight.c @@ -26,6 +26,25 @@ extern u8 gAnimMoveTurn; extern struct SpriteTemplate gBasicHitSplatSpriteTemplate; +void sub_080B08A0(struct Sprite *sprite); +void sub_80D902C(struct Sprite *sprite); +void sub_80D9078(struct Sprite *sprite); +void AnimBasicFistOrFoot(struct Sprite *sprite); +void sub_80D90F4(struct Sprite *sprite); +void sub_80D92D0(struct Sprite *sprite); +void sub_80D9378(struct Sprite *sprite); +void AnimSpinningKickOrPunch(struct Sprite *sprite); +void AnimSpinningKickOrPunch(struct Sprite *sprite); +void AnimStompFoot(struct Sprite *sprite); +void sub_80D9540(struct Sprite *sprite); +void sub_80D95D0(struct Sprite *sprite); +void sub_80D96B8(struct Sprite *sprite); +void sub_80D97CC(struct Sprite *sprite); +void sub_80D98D8(struct Sprite *sprite); +void sub_80D9A38(struct Sprite *sprite); +void sub_80D9B48(struct Sprite *sprite); +void sub_80D9BD4(struct Sprite *sprite); +void sub_80D9C40(struct Sprite *sprite); static void sub_80D927C(struct Sprite *sprite); static void sub_80D9328(struct Sprite *sprite); static void sub_80D9404(struct Sprite *sprite); @@ -38,6 +57,381 @@ static void sub_80D986C(struct Sprite *sprite); static void sub_80D9934(struct Sprite *sprite); static void sub_80D99F4(struct Sprite *sprite); +const struct SpriteTemplate gSpriteTemplate_83D9F24 = +{ + .tileTag = 10050, + .paletteTag = 10050, + .oam = &gOamData_837DF34, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_080B08A0, +}; + +const union AnimCmd gSpriteAnim_83D9F3C[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83D9F44[] = +{ + ANIMCMD_FRAME(16, 1), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83D9F4C[] = +{ + ANIMCMD_FRAME(32, 1), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83D9F54[] = +{ + ANIMCMD_FRAME(48, 1), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83D9F5C[] = +{ + ANIMCMD_FRAME(48, 1, .hFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_83D9F64[] = +{ + gSpriteAnim_83D9F3C, +}; + +const union AnimCmd *const gSpriteAnimTable_83D9F68[] = +{ + gSpriteAnim_83D9F44, + gSpriteAnim_83D9F4C, +}; + +const union AnimCmd *const gSpriteAnimTable_83D9F70[] = +{ + gSpriteAnim_83D9F54, + gSpriteAnim_83D9F5C, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9F78 = +{ + .tileTag = 10143, + .paletteTag = 10143, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83D9F64, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D902C, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9F90 = +{ + .tileTag = 10143, + .paletteTag = 10143, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83D9F64, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D9078, +}; + +const struct SpriteTemplate gFistFootSpriteTemplate = +{ + .tileTag = 10143, + .paletteTag = 10143, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83D9F64, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimBasicFistOrFoot, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9FC0 = +{ + .tileTag = 10143, + .paletteTag = 10143, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83D9F64, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D90F4, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9FD8 = +{ + .tileTag = 10143, + .paletteTag = 10143, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83D9F70, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D92D0, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9FF0 = +{ + .tileTag = 10143, + .paletteTag = 10143, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83D9F68, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D9378, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DA008[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 20, 1), + AFFINEANIMCMD_JUMP(1), +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA020[] = +{ + gSpriteAffineAnim_83DA008, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA024 = +{ + .tileTag = 10143, + .paletteTag = 10143, + .oam = &gOamData_837DFF4, + .anims = gSpriteAnimTable_83D9F64, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DA020, + .callback = AnimSpinningKickOrPunch, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DA03C[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0xFFFC, 0xFFFC, 20, 1), + AFFINEANIMCMD_JUMP(1), +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA054[] = +{ + gSpriteAffineAnim_83DA03C, +}; + +const struct SpriteTemplate gMegaPunchKickSpriteTemplate = +{ + .tileTag = 10143, + .paletteTag = 10143, + .oam = &gOamData_837DFF4, + .anims = gSpriteAnimTable_83D9F64, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DA054, + .callback = AnimSpinningKickOrPunch, +}; + +const struct SpriteTemplate gStompFootSpriteTemplate = +{ + .tileTag = 10143, + .paletteTag = 10143, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83D9F68, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimStompFoot, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA088 = +{ + .tileTag = 10073, + .paletteTag = 10073, + .oam = &gOamData_837DF2C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D9540, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA0A0 = +{ + .tileTag = 10167, + .paletteTag = 10167, + .oam = &gOamData_837E05C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D95D0, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA0B8 = +{ + .tileTag = 10208, + .paletteTag = 10208, + .oam = &gOamData_837DF34, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D96B8, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DA0D0[] = +{ + AFFINEANIMCMD_FRAME(0x20, 0x20, 0, 0), + AFFINEANIMCMD_FRAME(0x4, 0x4, 0, 64), + AFFINEANIMCMD_FRAME(0xFFFA, 0xFFFA, 0, 8), + AFFINEANIMCMD_FRAME(0x6, 0x6, 0, 8), + AFFINEANIMCMD_JUMP(2), +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA0F8[] = +{ + gSpriteAffineAnim_83DA0D0, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA0FC = +{ + .tileTag = 10212, + .paletteTag = 10212, + .oam = &gOamData_837E11C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DA0F8, + .callback = sub_80D97CC, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA114 = +{ + .tileTag = 10257, + .paletteTag = 10257, + .oam = &gOamData_837DF2C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D98D8, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA12C = +{ + .tileTag = 10256, + .paletteTag = 10256, + .oam = &gOamData_837DF3C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D9A38, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA144 = +{ + .tileTag = 10143, + .paletteTag = 10143, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83D9F64, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D9B48, +}; + +const union AnimCmd gSpriteAnim_83DA15C[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(16, 4), + ANIMCMD_FRAME(32, 4), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83DA16C[] = +{ + ANIMCMD_FRAME(0, 4, .vFlip = TRUE), + ANIMCMD_FRAME(16, 4, .vFlip = TRUE), + ANIMCMD_FRAME(32, 4, .vFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83DA17C[] = +{ + ANIMCMD_FRAME(0, 4, .hFlip = TRUE), + ANIMCMD_FRAME(16, 4, .hFlip = TRUE), + ANIMCMD_FRAME(32, 4, .hFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_83DA18C[] = +{ + gSpriteAnim_83DA15C, + gSpriteAnim_83DA16C, + gSpriteAnim_83DA17C, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA198 = +{ + .tileTag = 10245, + .paletteTag = 10245, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83DA18C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D9BD4, +}; + +const union AnimCmd gSpriteAnim_83DA1B0[] = +{ + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(64, 6), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83DA1BC[] = +{ + ANIMCMD_FRAME(0, 6, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(64, 6, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83DA1C8[] = +{ + ANIMCMD_FRAME(0, 6, .hFlip = TRUE), + ANIMCMD_FRAME(64, 6, .hFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_83DA1D4[] = +{ + gSpriteAnim_83DA1B0, + gSpriteAnim_83DA1BC, + gSpriteAnim_83DA1C8, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA1E0 = +{ + .tileTag = 10246, + .paletteTag = 10246, + .oam = &gOamData_837DF3C, + .anims = gSpriteAnimTable_83DA1D4, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D9BD4, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DA1F8[] = +{ + AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0), + AFFINEANIMCMD_FRAME(0xFFE0, 0xFFE0, 0, 8), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA210[] = +{ + gSpriteAffineAnim_83DA1F8, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA214 = +{ + .tileTag = 10143, + .paletteTag = 10143, + .oam = &gOamData_837DFF4, + .anims = gSpriteAnimTable_83D9F64, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DA210, + .callback = sub_80D9C40, +}; void sub_080B08A0(struct Sprite *sprite) { diff --git a/src/battle/anim/fire.c b/src/battle/anim/fire.c index 0939c938c..929828ed4 100644 --- a/src/battle/anim/fire.c +++ b/src/battle/anim/fire.c @@ -6,8 +6,170 @@ extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; -void sub_80D5038(struct Sprite *); -void sub_80D50E8(struct Sprite *); +void sub_80D4ED8(struct Sprite *sprite); +void sub_80D4F18(struct Sprite *sprite); +void sub_80D4FCC(struct Sprite *sprite); +void sub_80D4F5C(struct Sprite *sprite); +void sub_80D5074(struct Sprite *sprite); +static void sub_80D5038(struct Sprite *); +static void sub_80D50E8(struct Sprite *); + +const union AnimCmd gSpriteAnim_83D9450[] = +{ + ANIMCMD_FRAME(16, 4), + ANIMCMD_FRAME(32, 4), + ANIMCMD_FRAME(48, 4), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gSpriteAnim_83D9460[] = +{ + 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 gSpriteAnimTable_83D9470[] = +{ + gSpriteAnim_83D9450, + gSpriteAnim_83D9460, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9478 = +{ + .tileTag = 10029, + .paletteTag = 10029, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83D9470, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D4ED8, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9490 = +{ + .tileTag = 10029, + .paletteTag = 10029, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83D9470, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D4F18, +}; + +const union AnimCmd gSpriteAnim_83D94A8[] = +{ + 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 gSpriteAnimTable_83D94CC[] = +{ + gSpriteAnim_83D94A8, +}; + +const union AnimCmd gSpriteAnim_83D94D0[] = +{ + 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 gSpriteAnimTable_83D94E8[] = +{ + gSpriteAnim_83D94D0, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83D94EC[] = +{ + AFFINEANIMCMD_FRAME(0x32, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x20, 0x0, 0, 7), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9504[] = +{ + gSpriteAffineAnim_83D94EC, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9508 = +{ + .tileTag = 10033, + .paletteTag = 10033, + .oam = &gOamData_837DF94, + .anims = gSpriteAnimTable_83D94CC, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83D9504, + .callback = sub_80D4FCC, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9520 = +{ + .tileTag = 10033, + .paletteTag = 10033, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83D94CC, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D4FCC, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9538 = +{ + .tileTag = 10035, + .paletteTag = 10035, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83D94E8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D4F5C, +}; + +const struct SpriteTemplate gSpriteTemplate_83D9550 = +{ + .tileTag = 10029, + .paletteTag = 10029, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83D94E8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D4F5C, +}; + +const union AnimCmd gSpriteAnim_83D9568[] = +{ + ANIMCMD_FRAME(16, 6), + ANIMCMD_FRAME(32, 6), + ANIMCMD_FRAME(48, 6), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd *const gSpriteAnimTable_83D9578[] = +{ + gSpriteAnim_83D9568, +}; + +const struct SpriteTemplate gSpriteTemplate_83D957C = +{ + .tileTag = 10029, + .paletteTag = 10029, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83D9578, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D5074, +}; void sub_80D4ED8(struct Sprite *sprite) { @@ -20,7 +182,7 @@ void sub_80D4ED8(struct Sprite *sprite) StoreSpriteCallbackInData(sprite, DestroyAnimSprite); sprite->callback = sub_8078174; - sub_8078174(sprite); + sprite->callback(sprite); } void sub_80D4F18(struct Sprite *sprite) @@ -82,7 +244,7 @@ void sub_80D4FCC(struct Sprite *sprite) sprite->callback = sub_80D5038; } -void sub_80D5038(struct Sprite *sprite) +static void sub_80D5038(struct Sprite *sprite) { if (++sprite->data[0] < sprite->data[4]) { @@ -119,7 +281,7 @@ void sub_80D5074(struct Sprite *sprite) sprite->callback = sub_80D50E8; } -void sub_80D50E8(struct Sprite *sprite) +static void sub_80D50E8(struct Sprite *sprite) { if (sprite->data[3]) { diff --git a/src/battle/anim/fire_2.c b/src/battle/anim/fire_2.c index 97ac2e933..b055d7c80 100644 --- a/src/battle/anim/fire_2.c +++ b/src/battle/anim/fire_2.c @@ -9,18 +9,180 @@ extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; -extern struct SpriteTemplate gSpriteTemplate_83D96C4; -extern s16 gHeatedRockCoords[7][2]; +void AnimEmberFlare(struct Sprite *sprite); +void sub_80D5210(struct Sprite *sprite); +void AnimFireRing(struct Sprite *sprite); +void AnimFireCross(struct Sprite *sprite); +void sub_80D53B4(struct Sprite *sprite); +void sub_80D58FC(struct Sprite *sprite); +void sub_80D5A20(struct Sprite *sprite); static void AnimFireRingStep1(struct Sprite *); static void UpdateFireRingCircleOffset(struct Sprite *); static void AnimFireRingStep2(struct Sprite *); static void AnimFireRingStep3(struct Sprite *); -void sub_80D53F4(struct Sprite *); -void sub_80D541C(struct Sprite *); -void sub_80D54E0(u8 taskId); -void sub_80D57C4(u8 spriteId, u8 taskId, u8 a3); +static void sub_80D53F4(struct Sprite *); +static void sub_80D541C(struct Sprite *); +static void sub_80D54E0(u8 taskId); +static void sub_80D57C4(u8 spriteId, u8 taskId, u8 a3); +static void sub_80D59B0(struct Sprite *); +static void sub_80D5A74(struct Sprite *); + +const union AnimCmd gSpriteAnim_83D95C8[] = +{ + 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 gSpriteAnimTable_83D95E0[] = +{ + gSpriteAnim_83D95C8, +}; + +const struct SpriteTemplate gEmberSpriteTemplate = +{ + .tileTag = 10029, + .paletteTag = 10029, + .oam = &gOamData_837DF34, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = TranslateAnimSpriteToTargetMonLocation, +}; + +const struct SpriteTemplate gEmberFlareSpriteTemplate = +{ + .tileTag = 10029, + .paletteTag = 10029, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83D95E0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimEmberFlare, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9614 = +{ + .tileTag = 10029, + .paletteTag = 10029, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83D95E0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D5210, +}; + +const struct SpriteTemplate gFireRingSpriteTemplate = +{ + .tileTag = 10029, + .paletteTag = 10029, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83D95E0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimFireRing, +}; + +const union AnimCmd gSpriteAnim_83D9644[] = +{ + ANIMCMD_FRAME(32, 6), + ANIMCMD_FRAME(48, 6), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd *const gSpriteAnimTable_83D9650[] = +{ + gSpriteAnim_83D9644, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83D9654[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83D9664[] = +{ + AFFINEANIMCMD_FRAME(0xA0, 0xA0, 0, 0), + AFFINEANIMCMD_END, +}; +const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9674[] = +{ + gSpriteAffineAnim_83D9654, + gSpriteAffineAnim_83D9664, +}; + +const struct SpriteTemplate gFireCrossSpriteTemplate = +{ + .tileTag = 10029, + .paletteTag = 10029, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83D9650, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = AnimFireCross, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9694 = +{ + .tileTag = 10029, + .paletteTag = 10029, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83D95E0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D53B4, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D96AC = +{ + .tileTag = 10029, + .paletteTag = 10029, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83D95E0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_807A9BC, +}; + + +const struct SpriteTemplate gSpriteTemplate_83D96C4 = +{ + .tileTag = 10201, + .paletteTag = 10201, + .oam = &gOamData_837DF2C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D58FC, +}; + +const s16 gHeatedRockCoords[][2] = +{ + {-2, -5}, + {-1, -1}, + { 3, -6}, + { 4, -2}, + { 2, -8}, + {-5, -5}, + { 4, -7}, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D96F8 = +{ + .tileTag = 10201, + .paletteTag = 10201, + .oam = &gOamData_837DF34, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D5A20, +}; // Animates the secondary effect of MOVE_EMBER, where the flames grow and slide // horizontally a bit. @@ -42,13 +204,12 @@ void AnimEmberFlare(struct Sprite *sprite) sprite->callback(sprite); } -struct Sprite *sub_80D5210(struct Sprite *sprite) +void sub_80D5210(struct Sprite *sprite) { gBattleAnimArgs[0] = -gBattleAnimArgs[0]; gBattleAnimArgs[2] = -gBattleAnimArgs[2]; sprite->callback = sub_8079534; - return sprite; } // Animates the a fire sprite in the first-half of the MOVE_FIRE_BLAST @@ -157,7 +318,7 @@ void sub_80D53B4(struct Sprite *sprite) StoreSpriteCallbackInData(sprite, sub_80D53F4); } -void sub_80D53F4(struct Sprite *sprite) +static void sub_80D53F4(struct Sprite *sprite) { sprite->invisible = FALSE; @@ -168,7 +329,7 @@ void sub_80D53F4(struct Sprite *sprite) sub_80D541C(sprite); } -void sub_80D541C(struct Sprite *sprite) +static void sub_80D541C(struct Sprite *sprite) { sprite->pos2.x = Sin(sprite->data[1], sprite->data[2] >> 8); sprite->pos2.y = Cos(sprite->data[1], sprite->data[2] >> 8); @@ -199,7 +360,7 @@ void sub_80D5470(u8 taskId) // initialize animation task for Move_ERUPTION? task->func = sub_80D54E0; } -void sub_80D54E0(u8 taskId) // animate Move_ERUPTION? +static void sub_80D54E0(u8 taskId) // animate Move_ERUPTION? { struct Task *task = &gTasks[taskId]; @@ -309,7 +470,7 @@ void sub_80D54E0(u8 taskId) // animate Move_ERUPTION? } } -void sub_80D57C4(u8 spriteId, u8 taskId, u8 a3) +static void sub_80D57C4(u8 spriteId, u8 taskId, u8 a3) { u16 i, j; s8 sign; @@ -346,4 +507,119 @@ void sub_80D57C4(u8 spriteId, u8 taskId, u8 a3) gTasks[taskId].data[a3]++; } } -}
\ No newline at end of file +} + +void sub_80D58FC(struct Sprite *sprite) +{ + sub_80D59B0(sprite); + + if (sprite->invisible) + { + gTasks[sprite->data[6]].data[sprite->data[7]]--; + DestroySprite(sprite); + } +} + +u16 sub_80D5940(u8 spriteId) +{ + u16 var1 = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y + gSprites[spriteId].centerToCornerVecY; + + if (GetBattlerSide(gAnimBankAttacker) == 0) + { + var1 = ((var1 << 16) + 0x4A0000) >> 16; + } + else + { + var1 = ((var1 << 16) + 0x2C0000) >> 16; + } + + return var1; +} + +void sub_80D5994(struct Sprite *sprite, s16 x, s16 y) +{ + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->data[2] = (u16)sprite->pos1.x * 8; + sprite->data[3] = (u16)sprite->pos1.y * 8; + sprite->data[4] = x * 8; + sprite->data[5] = y * 8; +} + +static void sub_80D59B0(struct Sprite *sprite) +{ + int var1; + if (++sprite->data[0] > 2) + { + sprite->data[0] = 0; + ++sprite->data[1]; + var1 = (u16)sprite->data[1] * (u16)sprite->data[1]; + sprite->data[3] += var1; + } + + sprite->data[2] += sprite->data[4]; + sprite->pos1.x = sprite->data[2] >> 3; + sprite->data[3] += sprite->data[5]; + sprite->pos1.y = sprite->data[3] >> 3; + + if (sprite->pos1.x < -8 || sprite->pos1.x > 0xf8 || sprite->pos1.y < -8 || sprite->pos1.y > 120) + sprite->invisible = TRUE; +} + +void sub_80D5A20(struct Sprite *sprite) +{ + sprite->pos1.x = gBattleAnimArgs[0]; + sprite->pos1.y = gBattleAnimArgs[1]; + + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->data[2] = 0; + sprite->data[6] = gBattleAnimArgs[2]; + sprite->data[7] = gBattleAnimArgs[3]; + + sprite->oam.tileNum += gBattleAnimArgs[4] * 16; + sprite->callback = sub_80D5A74; +} + +static void sub_80D5A74(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + if (sprite->data[6] != 0) + { + sprite->data[6]--; + return; + } + + sprite->data[0]++; + // fall through + case 1: + sprite->pos1.y += 8; + if (sprite->pos1.y >= sprite->data[7]) + { + sprite->pos1.y = sprite->data[7]; + sprite->data[0]++; + } + break; + case 2: + if (++sprite->data[1] > 1) + { + sprite->data[1] = 0; + if ((++sprite->data[2] & 1) != 0) + { + sprite->pos2.y = -3; + } + else + { + sprite->pos2.y = 3; + } + } + + if (++sprite->data[3] > 16) + { + DestroyAnimSprite(sprite); + } + break; + } +} diff --git a/src/battle/anim/flying.c b/src/battle/anim/flying.c new file mode 100755 index 000000000..ec40e26c4 --- /dev/null +++ b/src/battle/anim/flying.c @@ -0,0 +1,346 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "battle_anim.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gAnimBankAttacker; +extern u8 gAnimBankTarget; + +void sub_80DA034(struct Sprite *sprite); +void sub_80DA16C(struct Sprite *sprite); +void sub_80DA208(struct Sprite *sprite); +void sub_80DA300(struct Sprite *sprite); +void sub_80DA38C(struct Sprite *sprite); +void sub_80DA4D8(struct Sprite *sprite); +void sub_80DAD30(struct Sprite *sprite); +void sub_80DAD84(struct Sprite *sprite); +void sub_80DB000(struct Sprite *sprite); +void sub_80DB194(struct Sprite *sprite); +void sub_80DB1F4(struct Sprite *sprite); +void sub_80DB288(struct Sprite *sprite); +void sub_80DB374(struct Sprite *sprite); +void sub_80DB458(struct Sprite *sprite); +void sub_80DB564(struct Sprite *sprite); +void sub_80DB5E4(struct Sprite *sprite); + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA380 = +{ + .tileTag = 10009, + .paletteTag = 10009, + .oam = &gOamData_837DF7C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DA034, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DA398[] = +{ + AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0xA, 0x0, 0, 24), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA3B0[] = +{ + gSpriteAffineAnim_83DA398, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA3B4 = +{ + .tileTag = 10009, + .paletteTag = 10009, + .oam = &gOamData_837DFDC, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DA3B0, + .callback = sub_80DA16C, +}; + +const union AnimCmd gSpriteAnim_83DA3CC[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(0, 3, .hFlip = TRUE), + ANIMCMD_FRAME(0, 3, .vFlip = TRUE), + ANIMCMD_FRAME(0, 3, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd *const gSpriteAnimTable_83DA3E0[] = +{ + gSpriteAnim_83DA3CC, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA3E4 = +{ + .tileTag = 10154, + .paletteTag = 10154, + .oam = &gOamData_837DF54, + .anims = gSpriteAnimTable_83DA3E0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DA208, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DA3FC[] = +{ + AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x28, 0x0, 0, 6), + AFFINEANIMCMD_FRAME(0x0, 0xFFE0, 0, 5), + AFFINEANIMCMD_FRAME(0xFFF0, 0x20, 0, 10), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA424[] = +{ + gSpriteAffineAnim_83DA3FC, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DA428[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 50, 1), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DA438[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, -40, 1), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA448[] = +{ + gSpriteAffineAnim_83DA428, + gSpriteAffineAnim_83DA438, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA450 = +{ + .tileTag = 10156, + .paletteTag = 10156, + .oam = &gOamData_837DFFC, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DA424, + .callback = sub_80DA300, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA468 = +{ + .tileTag = 10156, + .paletteTag = 10156, + .oam = &gOamData_837DF9C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DA448, + .callback = sub_80DA38C, +}; + +const union AnimCmd gSpriteAnim_83DA480[] = +{ + ANIMCMD_FRAME(0, 0), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83DA488[] = +{ + ANIMCMD_FRAME(16, 0, .hFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_83DA490[] = +{ + gSpriteAnim_83DA480, + gSpriteAnim_83DA488, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA498 = +{ + .tileTag = 10270, + .paletteTag = 10270, + .oam = &gOamData_837DF94, + .anims = gSpriteAnimTable_83DA490, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DA4D8, +}; + +const u16 gUnknownPalette_83DA4B0[] = INCBIN_U16("graphics/unknown/unknown_3DA4B0.gbapal"); + +const struct SpriteTemplate gSpriteTemplate_83DA4D0 = +{ + .tileTag = 10155, + .paletteTag = 10155, + .oam = &gOamData_837DF2C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DAD30, +}; + +const struct SpriteTemplate gSpriteTemplate_83DA4E8 = +{ + .tileTag = 10270, + .paletteTag = 10270, + .oam = &gOamData_837DF94, + .anims = gSpriteAnimTable_83DA490, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DAD84, +}; + +const union AnimCmd gSpriteAnim_83DA500[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_FRAME(8, 1), + ANIMCMD_FRAME(16, 1), + ANIMCMD_FRAME(8, 1, .hFlip = TRUE), + ANIMCMD_FRAME(0, 1, .hFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_83DA518[] = +{ + gSpriteAnim_83DA500, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA51C = +{ + .tileTag = 10162, + .paletteTag = 10162, + .oam = &gOamData_837DF54, + .anims = gSpriteAnimTable_83DA518, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DB000, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DA534[] = +{ + AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x28, 0x0, 0, 6), + AFFINEANIMCMD_FRAME(0x0, 0xFFE0, 0, 5), + AFFINEANIMCMD_FRAME(0xFFEC, 0x0, 0, 7), + AFFINEANIMCMD_FRAME(0xFFEC, 0xFFEC, 0, 5), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA564[] = +{ + gSpriteAffineAnim_83DA534, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA568 = +{ + .tileTag = 10156, + .paletteTag = 10156, + .oam = &gOamData_837DFFC, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DA564, + .callback = sub_80DB194, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DA580[] = +{ + AFFINEANIMCMD_FRAME(0xA0, 0x100, 0, 0), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA590[] = +{ + gSpriteAffineAnim_83DA580, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA594 = +{ + .tileTag = 10156, + .paletteTag = 10156, + .oam = &gOamData_837DFFC, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DA590, + .callback = sub_80DB1F4, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DA5AC[] = +{ + AFFINEANIMCMD_FRAME(0x10, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x28, 0x0, 0, 6), + AFFINEANIMCMD_FRAME(0x0, 0xFFE0, 0, 5), + AFFINEANIMCMD_FRAME(0xFFF0, 0x20, 0, 10), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA5D4[] = +{ + gSpriteAffineAnim_83DA5AC, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA5D8 = +{ + .tileTag = 10156, + .paletteTag = 10156, + .oam = &gOamData_837DFFC, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DA5D4, + .callback = sub_80DB288, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DA5F0[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x0, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x20, 0, 12), + AFFINEANIMCMD_FRAME(0x0, 0xFFE0, 0, 11), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA610[] = +{ + gSpriteAffineAnim_83DA5F0, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA614 = +{ + .tileTag = 10272, + .paletteTag = 10272, + .oam = &gOamData_837DFFC, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DB374, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA62C = +{ + .tileTag = 10273, + .paletteTag = 10273, + .oam = &gOamData_837DF24, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DB458, +}; + +const struct SpriteTemplate gSpriteTemplate_83DA644 = +{ + .tileTag = 10212, + .paletteTag = 10212, + .oam = &gOamData_837E05C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DB564, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA65C = +{ + .tileTag = 10284, + .paletteTag = 10284, + .oam = &gOamData_837DFFC, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DB5E4, +}; diff --git a/src/battle/anim/ghost.c b/src/battle/anim/ghost.c new file mode 100755 index 000000000..fd33d4782 --- /dev/null +++ b/src/battle/anim/ghost.c @@ -0,0 +1,191 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "battle_anim.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gAnimBankAttacker; +extern u8 gAnimBankTarget; + +void sub_80DDB6C(struct Sprite *sprite); +void sub_80DDD58(struct Sprite *sprite); +void sub_80DDF40(struct Sprite *sprite); +void sub_80DE0FC(struct Sprite *sprite); +void sub_80DE7B8(struct Sprite *sprite); +void sub_80DEF3C(struct Sprite *sprite); +void sub_80DF0B8(struct Sprite *sprite); +void sub_80DF0B8(struct Sprite *sprite); +void sub_80DF3D8(struct Sprite *sprite); +void sub_80DF49C(struct Sprite *sprite); + +const union AffineAnimCmd gSpriteAffineAnim_83DAE48[] = +{ + AFFINEANIMCMD_FRAME(0x1E, 0x1E, 10, 5), + AFFINEANIMCMD_FRAME(0xFFE2, 0xFFE2, 10, 5), + AFFINEANIMCMD_JUMP(0), +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DAE60[] = +{ + gSpriteAffineAnim_83DAE48, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAE64 = +{ + .tileTag = 10013, + .paletteTag = 10013, + .oam = &gOamData_837DFEC, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DAE60, + .callback = sub_80DDB6C, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAE7C = +{ + .tileTag = 10013, + .paletteTag = 10013, + .oam = &gOamData_837E04C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DDD58, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DAE94[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 10, 1), + AFFINEANIMCMD_JUMP(0), +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DAEA4[] = +{ + gSpriteAffineAnim_83DAE94, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAEA8 = +{ + .tileTag = 10176, + .paletteTag = 10176, + .oam = &gOamData_837DF94, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DAEA4, + .callback = sub_80DDF40, +}; + +const union AnimCmd gSpriteAnim_83DAEC0[] = +{ + ANIMCMD_FRAME(0, 2), + ANIMCMD_FRAME(8, 2), + ANIMCMD_FRAME(16, 2), + ANIMCMD_FRAME(24, 2), + ANIMCMD_FRAME(32, 2), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_83DAED8[] = +{ + gSpriteAnim_83DAEC0, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAEDC = +{ + .tileTag = 10177, + .paletteTag = 10177, + .oam = &gOamData_837DF74, + .anims = gSpriteAnimTable_83DAED8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DE0FC, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DAEF4[] = +{ + AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DAF04[] = +{ + gSpriteAffineAnim_83DAEF4, +}; + +const struct SpriteTemplate gSpriteTemplate_83DAF08 = +{ + .tileTag = 10188, + .paletteTag = 10188, + .oam = &gOamData_837E07C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DE7B8, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAF20 = +{ + .tileTag = 10199, + .paletteTag = 10199, + .oam = &gOamData_837E074, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DEF3C, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAF38 = +{ + .tileTag = 10200, + .paletteTag = 10200, + .oam = &gOamData_837E054, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DF0B8, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAF50 = +{ + .tileTag = 10221, + .paletteTag = 10221, + .oam = &gOamData_837E054, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DF0B8, +}; + +const union AnimCmd gSpriteAnim_83DAF68[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(8, 4), + ANIMCMD_FRAME(16, 4), + ANIMCMD_FRAME(24, 4), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd *const gSpriteAnimTable_83DAF7C[] = +{ + gSpriteAnim_83DAF68, +}; + +const struct SpriteTemplate gSpriteTemplate_83DAF80 = +{ + .tileTag = 10253, + .paletteTag = 10253, + .oam = &gOamData_837E094, + .anims = gSpriteAnimTable_83DAF7C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DF3D8, +}; + +const struct SpriteTemplate gSpriteTemplate_83DAF98 = +{ + .tileTag = 0, + .paletteTag = 0, + .oam = &gDummyOamData, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DF49C, +}; diff --git a/src/battle/anim/ground.c b/src/battle/anim/ground.c new file mode 100755 index 000000000..a523df20e --- /dev/null +++ b/src/battle/anim/ground.c @@ -0,0 +1,125 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "battle_anim.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gAnimBankAttacker; +extern u8 gAnimBankTarget; + +void sub_80E0F1C(struct Sprite *sprite); +void sub_80E1004(struct Sprite *sprite); +void sub_80E1078(struct Sprite *sprite); +void sub_80E1078(struct Sprite *sprite); +void sub_80E1108(struct Sprite *sprite); +void sub_80E1728(struct Sprite *sprite); +void sub_80E17CC(struct Sprite *sprite); + +const union AffineAnimCmd gSpriteAffineAnim_83DB2A0[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 15, 1), + AFFINEANIMCMD_JUMP(0), +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DB2B0[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 20, 1), + AFFINEANIMCMD_JUMP(0), +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DB2C0[] = +{ + gSpriteAffineAnim_83DB2A0, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DB2C4[] = +{ + gSpriteAffineAnim_83DB2B0, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB2C8 = +{ + .tileTag = 10000, + .paletteTag = 10000, + .oam = &gOamData_837DF94, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DB2C0, + .callback = sub_80E0F1C, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB2E0 = +{ + .tileTag = 10000, + .paletteTag = 10000, + .oam = &gOamData_837DF94, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DB2C4, + .callback = sub_80E1004, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB2F8 = +{ + .tileTag = 10074, + .paletteTag = 10074, + .oam = &gOamData_837DF24, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80E1078, +}; + +const union AnimCmd gSpriteAnim_83DB310[] = +{ + ANIMCMD_FRAME(1, 1), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_83DB318[] = +{ + gSpriteAnim_83DB310, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB31C = +{ + .tileTag = 10074, + .paletteTag = 10074, + .oam = &gOamData_837DF2C, + .anims = gSpriteAnimTable_83DB318, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80E1078, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB334 = +{ + .tileTag = 10074, + .paletteTag = 10074, + .oam = &gOamData_837DF2C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80E1108, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB34C = +{ + .tileTag = 10074, + .paletteTag = 10074, + .oam = &gOamData_837DF24, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80E1728, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB364 = +{ + .tileTag = 10281, + .paletteTag = 10281, + .oam = &gOamData_837DF54, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80E17CC, +}; diff --git a/src/battle/anim/heated_rock.c b/src/battle/anim/heated_rock.c deleted file mode 100644 index 6f1a1344a..000000000 --- a/src/battle/anim/heated_rock.c +++ /dev/null @@ -1,129 +0,0 @@ -#include "global.h" -#include "battle_anim.h" -#include "rom_8077ABC.h" - -extern s16 gBattleAnimArgs[8]; -extern u8 gAnimBankAttacker; -extern u8 gAnimBankTarget; -extern u16 gBattleTypeFlags; - -void sub_80D59B0(struct Sprite *); -static void sub_80D5A74(struct Sprite *); - -// heated_rock (moves heated rock sprites) -// Used in Eruption. - -void sub_80D58FC(struct Sprite *sprite) -{ - sub_80D59B0(sprite); - - if (sprite->invisible) - { - gTasks[sprite->data[6]].data[sprite->data[7]]--; - DestroySprite(sprite); - } -} - -u16 sub_80D5940(u8 spriteId) -{ - u16 var1 = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y + gSprites[spriteId].centerToCornerVecY; - - if (GetBattlerSide(gAnimBankAttacker) == 0) - { - var1 = ((var1 << 16) + 0x4A0000) >> 16; - } - else - { - var1 = ((var1 << 16) + 0x2C0000) >> 16; - } - - return var1; -} - -void sub_80D5994(struct Sprite *sprite, s16 x, s16 y) -{ - sprite->data[0] = 0; - sprite->data[1] = 0; - sprite->data[2] = (u16)sprite->pos1.x * 8; - sprite->data[3] = (u16)sprite->pos1.y * 8; - sprite->data[4] = x * 8; - sprite->data[5] = y * 8; -} - -void sub_80D59B0(struct Sprite *sprite) -{ - int var1; - if (++sprite->data[0] > 2) - { - sprite->data[0] = 0; - ++sprite->data[1]; - var1 = (u16)sprite->data[1] * (u16)sprite->data[1]; - sprite->data[3] += var1; - } - - sprite->data[2] += sprite->data[4]; - sprite->pos1.x = sprite->data[2] >> 3; - sprite->data[3] += sprite->data[5]; - sprite->pos1.y = sprite->data[3] >> 3; - - if (sprite->pos1.x < -8 || sprite->pos1.x > 0xf8 || sprite->pos1.y < -8 || sprite->pos1.y > 120) - sprite->invisible = TRUE; -} - -void sub_80D5A20(struct Sprite *sprite) -{ - sprite->pos1.x = gBattleAnimArgs[0]; - sprite->pos1.y = gBattleAnimArgs[1]; - - sprite->data[0] = 0; - sprite->data[1] = 0; - sprite->data[2] = 0; - sprite->data[6] = gBattleAnimArgs[2]; - sprite->data[7] = gBattleAnimArgs[3]; - - sprite->oam.tileNum += gBattleAnimArgs[4] * 16; - sprite->callback = sub_80D5A74; -} - -static void sub_80D5A74(struct Sprite *sprite) -{ - switch (sprite->data[0]) - { - case 0: - if (sprite->data[6] != 0) - { - sprite->data[6]--; - return; - } - - sprite->data[0]++; - // fall through - case 1: - sprite->pos1.y += 8; - if (sprite->pos1.y >= sprite->data[7]) - { - sprite->pos1.y = sprite->data[7]; - sprite->data[0]++; - } - break; - case 2: - if (++sprite->data[1] > 1) - { - sprite->data[1] = 0; - if ((++sprite->data[2] & 1) != 0) - { - sprite->pos2.y = -3; - } - else - { - sprite->pos2.y = 3; - } - } - - if (++sprite->data[3] > 16) - { - DestroyAnimSprite(sprite); - } - break; - } -} diff --git a/src/battle/anim/ice.c b/src/battle/anim/ice.c new file mode 100755 index 000000000..50c8b9030 --- /dev/null +++ b/src/battle/anim/ice.c @@ -0,0 +1,495 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "battle_anim.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gAnimBankAttacker; +extern u8 gAnimBankTarget; + +void sub_80D7704(struct Sprite *sprite); +void sub_80D78EC(struct Sprite *sprite); +void sub_80D792C(struct Sprite *sprite); +void sub_80D79B4(struct Sprite *sprite); +void sub_80D7A64(struct Sprite *sprite); +void sub_80D7CD4(struct Sprite *sprite); +void sub_80D7E88(struct Sprite *sprite); +void sub_80D7F10(struct Sprite *sprite); +void sub_80D83E0(struct Sprite *sprite); +void sub_80D8700(struct Sprite *sprite); +void sub_80D8D1C(struct Sprite *sprite); +void sub_807A9BC(struct Sprite *sprite); +void unc_080B06FC(struct Sprite *sprite); +void sub_80D8F10(struct Sprite *sprite); + +const union AnimCmd gSpriteAnim_83D9B58[] = +{ + ANIMCMD_FRAME(0, 5, .hFlip = TRUE), + ANIMCMD_FRAME(1, 5, .hFlip = TRUE), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd *const gSpriteAnimTable_83D9B64[] = +{ + gSpriteAnim_83D9B58, +}; + +const struct SpriteTemplate gSpriteTemplate_83D9B68 = +{ + .tileTag = 10141, + .paletteTag = 10141, + .oam = &gOamData_837DF24, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D7704, +}; + +const union AnimCmd gSpriteAnim_83D9B80[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83D9B88[] = +{ + ANIMCMD_FRAME(4, 1), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83D9B90[] = +{ + ANIMCMD_FRAME(6, 1), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83D9B98[] = +{ + ANIMCMD_FRAME(7, 1), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83D9BA0[] = +{ + ANIMCMD_FRAME(8, 1), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83D9BA8[] = +{ + ANIMCMD_FRAME(12, 6), + ANIMCMD_FRAME(13, 6), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd *const gSpriteAnimTable_83D9BB4[] = +{ + gSpriteAnim_83D9B80, +}; + +const union AnimCmd *const gSpriteAnimTable_83D9BB8[] = +{ + gSpriteAnim_83D9B88, +}; + +const union AnimCmd *const gSpriteAnimTable_83D9BBC[] = +{ + gSpriteAnim_83D9B90, +}; + +const union AnimCmd *const gSpriteAnimTable_83D9BC0[] = +{ + gSpriteAnim_83D9B98, +}; + +const union AnimCmd *const gSpriteAnimTable_83D9BC4[] = +{ + gSpriteAnim_83D9BA0, +}; + +const union AnimCmd *const gSpriteAnimTable_83D9BC8[] = +{ + gSpriteAnim_83D9BA8, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83D9BCC[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 40, 1), + AFFINEANIMCMD_JUMP(0), +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9BDC[] = +{ + gSpriteAffineAnim_83D9BCC, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9BE0 = +{ + .tileTag = 10141, + .paletteTag = 10141, + .oam = &gOamData_837E144, + .anims = gSpriteAnimTable_83D9BB8, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83D9BDC, + .callback = sub_80D78EC, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9BF8 = +{ + .tileTag = 10141, + .paletteTag = 10141, + .oam = &gOamData_837E044, + .anims = gSpriteAnimTable_83D9BBC, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D78EC, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83D9C10[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 10, 1), + AFFINEANIMCMD_JUMP(0), +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9C20[] = +{ + gSpriteAffineAnim_83D9C10, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9C24 = +{ + .tileTag = 10141, + .paletteTag = 10141, + .oam = &gOamData_837E0E4, + .anims = gSpriteAnimTable_83D9BB8, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83D9C20, + .callback = sub_80D792C, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9C3C = +{ + .tileTag = 10141, + .paletteTag = 10141, + .oam = &gOamData_837E044, + .anims = gSpriteAnimTable_83D9BBC, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D792C, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83D9C54[] = +{ + AFFINEANIMCMD_FRAME(0xCE, 0xCE, 0, 0), + AFFINEANIMCMD_FRAME(0x5, 0x5, 0, 10), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 6), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9C74[] = +{ + gSpriteAffineAnim_83D9C54, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9C78 = +{ + .tileTag = 10141, + .paletteTag = 10141, + .oam = &gOamData_837E0E4, + .anims = gSpriteAnimTable_83D9BB8, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83D9C74, + .callback = sub_80D79B4, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9C90 = +{ + .tileTag = 10141, + .paletteTag = 10141, + .oam = &gOamData_837E0A4, + .anims = gSpriteAnimTable_83D9BBC, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83D9C74, + .callback = sub_80D79B4, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9CA8 = +{ + .tileTag = 10141, + .paletteTag = 10141, + .oam = &gOamData_837DF24, + .anims = gSpriteAnimTable_83D9BC0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D7A64, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9CC0 = +{ + .tileTag = 10141, + .paletteTag = 10141, + .oam = &gOamData_837DF2C, + .anims = gSpriteAnimTable_83D9BC4, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D7CD4, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9CD8 = +{ + .tileTag = 10141, + .paletteTag = 10141, + .oam = &gOamData_837DF24, + .anims = gSpriteAnimTable_83D9BC0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D7CD4, +}; + +const union AnimCmd gSpriteAnim_83D9CF0[] = +{ + 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 gSpriteAnimTable_83D9D10[] = +{ + gSpriteAnim_83D9CF0, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9D14 = +{ + .tileTag = 10142, + .paletteTag = 10142, + .oam = &gOamData_837E084, + .anims = gSpriteAnimTable_83D9D10, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D7E88, +}; + +const union AnimCmd gSpriteAnim_83D9D2C[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(8, 8), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd *const gSpriteAnimTable_83D9D38[] = +{ + gSpriteAnim_83D9D2C, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9D3C = +{ + .tileTag = 10144, + .paletteTag = 10144, + .oam = &gOamData_837E074, + .anims = gSpriteAnimTable_83D9D38, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D7F10, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9D54 = +{ + .tileTag = 10172, + .paletteTag = 10172, + .oam = &gOamData_837E074, + .anims = gSpriteAnimTable_83D9D38, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D7F10, +}; + +const u8 gUnknown_083D9D6C[] = +{ + 0, 1, 2, 2, 2, 2, 3, 4, 4, 4, 5, 6, 6, 6, 6, 7, 8, 8, 8, 9, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9D80 = +{ + .tileTag = 10155, + .paletteTag = 10155, + .oam = &gOamData_837DF2C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D83E0, +}; + +const u8 gUnknown_083D9D98[] = +{ + 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9DAC = +{ + .tileTag = 10172, + .paletteTag = 10172, + .oam = &gOamData_837E074, + .anims = gSpriteAnimTable_83D9D38, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D8700, +}; + +// bitfield array +const u32 gUnknown_083D9DC4[] = +{ + 0x2001E064, + 0x0001E055, + 0x1011E0F2, + 0x1021E042, + 0x0031E0B6, + 0x2001E03C, + 0x0011E0D6, + 0x1001E071, + 0x1031E0D2, + 0x0021E026, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83D9DEC[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83D9DFC[] = +{ + AFFINEANIMCMD_FRAME(0xF0, 0xF0, 0, 0), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83D9E0C[] = +{ + AFFINEANIMCMD_FRAME(0xE0, 0xE0, 0, 0), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83D9E1C[] = +{ + AFFINEANIMCMD_FRAME(0x150, 0x150, 0, 0), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9E2C[] = +{ + gSpriteAffineAnim_83D9DEC, + gSpriteAffineAnim_83D9DFC, + gSpriteAffineAnim_83D9E0C, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9E38[] = +{ + gSpriteAffineAnim_83D9E1C, +}; + +const struct SpriteTemplate gSpriteTemplate_83D9E3C = +{ + .tileTag = 10263, + .paletteTag = 10263, + .oam = &gOamData_837DF8C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83D9E2C, + .callback = sub_80D8D1C, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9E54 = +{ + .tileTag = 10263, + .paletteTag = 10263, + .oam = &gOamData_837DF8C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83D9E38, + .callback = sub_807A9BC, +}; + +const union AnimCmd gSpriteAnim_83D9E6C[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83D9E74[] = +{ + ANIMCMD_FRAME(16, 4), + ANIMCMD_FRAME(32, 4), + ANIMCMD_FRAME(48, 4), + ANIMCMD_FRAME(64, 4), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_83D9E88[] = +{ + gSpriteAnim_83D9E6C, + gSpriteAnim_83D9E74, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83D9E90[] = +{ + AFFINEANIMCMD_FRAME(0xE0, 0xE0, 0, 0), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83D9EA0[] = +{ + AFFINEANIMCMD_FRAME(0x118, 0x118, 0, 0), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83D9EB0[] = +{ + AFFINEANIMCMD_FRAME(0x150, 0x150, 0, 0), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83D9EC0[] = +{ + AFFINEANIMCMD_FRAME(0x180, 0x180, 0, 0), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83D9ED0[] = +{ + AFFINEANIMCMD_FRAME(0x1C0, 0x1C0, 0, 0), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9EE0[] = +{ + gSpriteAffineAnim_83D9E90, + gSpriteAffineAnim_83D9EA0, + gSpriteAffineAnim_83D9EB0, + gSpriteAffineAnim_83D9EC0, + gSpriteAffineAnim_83D9ED0, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9EF4 = +{ + .tileTag = 10043, + .paletteTag = 10043, + .oam = &gOamData_837DFF4, + .anims = gSpriteAnimTable_83D9E88, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83D9EE0, + .callback = unc_080B06FC, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9F0C = +{ + .tileTag = 10141, + .paletteTag = 10141, + .oam = &gOamData_837DF24, + .anims = gSpriteAnimTable_83D9BBC, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D8F10, +}; diff --git a/src/battle/anim/normal.c b/src/battle/anim/normal.c new file mode 100755 index 000000000..8303e7c68 --- /dev/null +++ b/src/battle/anim/normal.c @@ -0,0 +1,240 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "battle_anim.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gAnimBankAttacker; +extern u8 gAnimBankTarget; + +void sub_80E1CB4(struct Sprite *sprite); +void sub_80E1D84(struct Sprite *sprite); +void sub_80E1E2C(struct Sprite *sprite); +void sub_80E1F3C(struct Sprite *sprite); +void sub_80E24B8(struct Sprite *sprite); +void sub_80E27A0(struct Sprite *sprite); +void sub_80E2838(struct Sprite *sprite); +void sub_80E27A0(struct Sprite *sprite); +void sub_80E2870(struct Sprite *sprite); +void sub_80E2908(struct Sprite *sprite); +void sub_80E2978(struct Sprite *sprite); +void sub_80E29C0(struct Sprite *sprite); +void sub_80E27E8(struct Sprite *sprite); + +const union AnimCmd gSpriteAnim_83DB37C[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(4, 8), + ANIMCMD_FRAME(0, 8, .hFlip = TRUE), + ANIMCMD_FRAME(8, 8), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gSpriteAnim_83DB390[] = +{ + ANIMCMD_FRAME(0, 8, .hFlip = TRUE), + ANIMCMD_FRAME(4, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(8, 8), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd *const gSpriteAnimTable_83DB3A4[] = +{ + gSpriteAnim_83DB37C, + gSpriteAnim_83DB390, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB3AC = +{ + .tileTag = 10073, + .paletteTag = 10073, + .oam = &gOamData_837DF2C, + .anims = gSpriteAnimTable_83DB3A4, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80E1CB4, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB3C4 = +{ + .tileTag = 0, + .paletteTag = 0, + .oam = &gDummyOamData, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80E1D84, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB3DC = +{ + .tileTag = 0, + .paletteTag = 0, + .oam = &gDummyOamData, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80E1E2C, +}; + +const union AnimCmd gSpriteAnim_83DB3F4[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(16, 3), + ANIMCMD_FRAME(32, 3), + ANIMCMD_FRAME(48, 3), + ANIMCMD_FRAME(64, 3), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd *const gSpriteAnimTable_83DB40C[] = +{ + gSpriteAnim_83DB3F4, +}; + +const struct SpriteTemplate gSpriteTemplate_83DB410 = +{ + .tileTag = 10071, + .paletteTag = 10071, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83DB40C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80E1F3C, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB428 = +{ + .tileTag = 0, + .paletteTag = 0, + .oam = &gDummyOamData, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80E24B8, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DB440[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DB450[] = +{ + AFFINEANIMCMD_FRAME(0xD8, 0xD8, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DB468[] = +{ + AFFINEANIMCMD_FRAME(0xB0, 0xB0, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DB480[] = +{ + AFFINEANIMCMD_FRAME(0x80, 0x80, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DB498[] = +{ + gSpriteAffineAnim_83DB440, + gSpriteAffineAnim_83DB450, + gSpriteAffineAnim_83DB468, + gSpriteAffineAnim_83DB480, +}; + +const struct SpriteTemplate gBasicHitSplatSpriteTemplate = +{ + .tileTag = 10135, + .paletteTag = 10135, + .oam = &gOamData_837E0B4, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DB498, + .callback = sub_80E27A0, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB4C0 = +{ + .tileTag = 10135, + .paletteTag = 10135, + .oam = &gOamData_837E0B4, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DB498, + .callback = sub_80E2838, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB4D8 = +{ + .tileTag = 10148, + .paletteTag = 10148, + .oam = &gOamData_837E0B4, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DB498, + .callback = sub_80E27A0, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB4F0 = +{ + .tileTag = 10135, + .paletteTag = 10135, + .oam = &gOamData_837E0B4, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DB498, + .callback = sub_80E2870, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB508 = +{ + .tileTag = 10135, + .paletteTag = 10135, + .oam = &gOamData_837E0B4, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DB498, + .callback = sub_80E2908, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB520 = +{ + .tileTag = 10285, + .paletteTag = 10285, + .oam = &gOamData_837E054, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80E2978, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB538 = +{ + .tileTag = 10135, + .paletteTag = 10135, + .oam = &gOamData_837DF94, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DB498, + .callback = sub_80E29C0, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB550 = +{ + .tileTag = 10135, + .paletteTag = 10135, + .oam = &gOamData_837E0B4, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DB498, + .callback = sub_80E27E8, +}; + +const u16 gUnknown_083DB568 = RGB(31, 31, 31); diff --git a/src/battle/anim/poison.c b/src/battle/anim/poison.c index 2cc104c07..4d6673adf 100644 --- a/src/battle/anim/poison.c +++ b/src/battle/anim/poison.c @@ -7,11 +7,191 @@ extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; -void sub_80D9DD4(struct Sprite *sprite); -void sub_80D9E78(struct Sprite *sprite); -void sub_80D9EE8(struct Sprite *sprite); +extern const union AnimCmd *const gSpriteAnimTable_83D9310[]; + +void sub_80793C4(struct Sprite *sprite); +void sub_80D9D70(struct Sprite *sprite); +void sub_80D9DF0(struct Sprite *sprite); +void sub_80D9E94(struct Sprite *sprite); +void sub_80D9F14(struct Sprite *sprite); +void AnimBubbleEffect(struct Sprite *sprite); +static void sub_80D9DD4(struct Sprite *sprite); +static void sub_80D9E78(struct Sprite *sprite); +static void sub_80D9EE8(struct Sprite *sprite); static void AnimBubbleEffectStep(struct Sprite *sprite); +const union AnimCmd gSpriteAnim_83DA22C[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(8, 5), + ANIMCMD_FRAME(16, 5), + ANIMCMD_FRAME(24, 5), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_83DA240[] = +{ + gSpriteAnim_83DA22C, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA244 = +{ + .tileTag = 10151, + .paletteTag = 10151, + .oam = &gOamData_837DF74, + .anims = gSpriteAnimTable_83DA240, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80793C4, +}; + +const union AnimCmd gSpriteAnim_83DA25C[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83DA264[] = +{ + ANIMCMD_FRAME(4, 1), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83DA26C[] = +{ + ANIMCMD_FRAME(8, 1), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_83DA274[] = +{ + gSpriteAnim_83DA25C, +}; + +const union AnimCmd *const gSpriteAnimTable_83DA278[] = +{ + gSpriteAnim_83DA264, +}; + +const union AnimCmd *const gSpriteAnimTable_83DA27C[] = +{ + gSpriteAnim_83DA26C, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DA280[] = +{ + AFFINEANIMCMD_FRAME(0x160, 0x160, 0, 0), + AFFINEANIMCMD_FRAME(0xFFF6, 0xFFF6, 0, 10), + AFFINEANIMCMD_FRAME(0xA, 0xA, 0, 10), + AFFINEANIMCMD_JUMP(0), +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DA2A0[] = +{ + AFFINEANIMCMD_FRAME(0xEC, 0xEC, 0, 0), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA2B0[] = +{ + gSpriteAffineAnim_83DA280, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA2B4[] = +{ + gSpriteAffineAnim_83DA2A0, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA2B8 = +{ + .tileTag = 10150, + .paletteTag = 10150, + .oam = &gOamData_837DFEC, + .anims = gSpriteAnimTable_83DA274, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DA2B0, + .callback = sub_80D9D70, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA2D0 = +{ + .tileTag = 10150, + .paletteTag = 10150, + .oam = &gOamData_837DFEC, + .anims = gSpriteAnimTable_83DA274, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DA2B0, + .callback = sub_80D9DF0, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA2E8 = +{ + .tileTag = 10150, + .paletteTag = 10150, + .oam = &gOamData_837DF8C, + .anims = gSpriteAnimTable_83DA27C, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DA2B4, + .callback = sub_80D9E94, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DA300[] = +{ + AFFINEANIMCMD_FRAME(0xFFF0, 0x10, 0, 6), + AFFINEANIMCMD_FRAME(0x10, 0xFFF0, 0, 6), + AFFINEANIMCMD_JUMP(0), +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA318[] = +{ + gSpriteAffineAnim_83DA300, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA31C = +{ + .tileTag = 10150, + .paletteTag = 10150, + .oam = &gOamData_837DFEC, + .anims = gSpriteAnimTable_83DA278, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DA318, + .callback = sub_80D9F14, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DA334[] = +{ + AFFINEANIMCMD_FRAME(0x9C, 0x9C, 0, 0), + AFFINEANIMCMD_FRAME(0x5, 0x5, 0, 20), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA34C[] = +{ + gSpriteAffineAnim_83DA334, +}; + +const struct SpriteTemplate gPoisonBubbleSpriteTemplate = +{ + .tileTag = 10150, + .paletteTag = 10150, + .oam = &gOamData_837DF8C, + .anims = gSpriteAnimTable_83DA274, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DA34C, + .callback = AnimBubbleEffect, +}; + +const struct SpriteTemplate gWaterBubbleSpriteTemplate = +{ + .tileTag = 10155, + .paletteTag = 10155, + .oam = &gOamData_837E0AC, + .anims = gSpriteAnimTable_83D9310, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DA34C, + .callback = AnimBubbleEffect, +}; + void sub_80D9D70(struct Sprite *sprite) { if (!gBattleAnimArgs[3]) @@ -29,7 +209,7 @@ void sub_80D9D70(struct Sprite *sprite) sprite->callback = sub_80D9DD4; } -void sub_80D9DD4(struct Sprite *sprite) // same as sub_80D9E78 +static void sub_80D9DD4(struct Sprite *sprite) // same as sub_80D9E78 { if (TranslateAnimSpriteLinearAndSine(sprite)) DestroyAnimSprite(sprite); @@ -57,7 +237,7 @@ void sub_80D9DF0(struct Sprite *sprite) sprite->callback = sub_80D9E78; } -void sub_80D9E78(struct Sprite *sprite) // same as sub_80D9DD4 +static void sub_80D9E78(struct Sprite *sprite) // same as sub_80D9DD4 { if (TranslateAnimSpriteLinearAndSine(sprite)) DestroyAnimSprite(sprite); @@ -79,7 +259,7 @@ void sub_80D9E94(struct Sprite *sprite) sprite->callback = sub_80D9EE8; } -void sub_80D9EE8(struct Sprite *sprite) +static void sub_80D9EE8(struct Sprite *sprite) { sub_8078394(sprite); diff --git a/src/battle/anim/psychic.c b/src/battle/anim/psychic.c index 7babb3a19..a63652646 100644 --- a/src/battle/anim/psychic.c +++ b/src/battle/anim/psychic.c @@ -16,12 +16,13 @@ extern u16 gBattle_BG1_X; extern u16 gBattle_BG2_X; extern u8 gBankSpriteIds[]; -extern const union AffineAnimCmd *const gUnknown_083DA888[]; -extern struct AffineAnimFrameCmd gUnknown_083DA8A4; -extern struct AffineAnimFrameCmd gUnknown_083DA8C4; -extern const struct SpriteTemplate gSpriteTemplate_83DA8DC; -extern const struct SpriteTemplate gSpriteTemplate_83DA9AC; - +void sub_80DB74C(struct Sprite *sprite); +void sub_80DBA4C(struct Sprite *sprite); +void sub_80DBAF4(struct Sprite *sprite); +void sub_80DBB70(struct Sprite *sprite); +void sub_80DC068(struct Sprite *sprite); +void sub_80DC2B0(struct Sprite *sprite); +void sub_80DC700(struct Sprite *sprite); static void sub_80DB88C(struct Sprite *sprite); static void sub_80DB8C0(struct Sprite *sprite); static void sub_80DB92C(struct Sprite *sprite); @@ -35,6 +36,395 @@ static void sub_80DC1FC(u8 taskId); static void sub_80DC3F4(u8 taskId); void sub_80DC5F4(u8 taskId); +const union AffineAnimCmd gSpriteAffineAnim_83DA674[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0xFFFE, 0xFFFE, -10, 120), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA68C[] = +{ + gSpriteAffineAnim_83DA674, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA690 = +{ + .tileTag = 10196, + .paletteTag = 10196, + .oam = &gOamData_837E0BC, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DA68C, + .callback = sub_80793C4, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA6A8 = +{ + .tileTag = 10166, + .paletteTag = 10166, + .oam = &gOamData_837E05C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DB74C, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA6C0 = +{ + .tileTag = 10167, + .paletteTag = 10167, + .oam = &gOamData_837E05C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DB74C, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA6D8 = +{ + .tileTag = 10168, + .paletteTag = 10168, + .oam = &gOamData_837E05C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DB74C, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA6F0 = +{ + .tileTag = 10169, + .paletteTag = 10169, + .oam = &gOamData_837E05C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DB74C, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA708 = +{ + .tileTag = 10170, + .paletteTag = 10170, + .oam = &gOamData_837E05C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DB74C, +}; + +const union AnimCmd gSpriteAnim_83DA720[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_FRAME(16, 3), + ANIMCMD_FRAME(32, 3), + ANIMCMD_FRAME(48, 3), + ANIMCMD_FRAME(64, 3), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_83DA738[] = +{ + gSpriteAnim_83DA720, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA73C = +{ + .tileTag = 10071, + .paletteTag = 10071, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83DA738, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DBA4C, +}; + +const union AnimCmd gSpriteAnim_83DA754[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(4, 5), + ANIMCMD_FRAME(8, 5), + ANIMCMD_FRAME(12, 5), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_83DA768[] = +{ + gSpriteAnim_83DA754, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA76C = +{ + .tileTag = 10070, + .paletteTag = 10070, + .oam = &gOamData_837DF2C, + .anims = gSpriteAnimTable_83DA768, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DBA4C, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA784 = +{ + .tileTag = 10163, + .paletteTag = 10163, + .oam = &gOamData_837DF74, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = TranslateAnimSpriteToTargetMonLocation, +}; + +const union AnimCmd gSpriteAnim_83DA79C[] = +{ + ANIMCMD_FRAME(8, 60, .hFlip = TRUE), + ANIMCMD_FRAME(16, 5, .hFlip = TRUE), + ANIMCMD_FRAME(8, 5, .hFlip = TRUE), + ANIMCMD_FRAME(0, 5, .hFlip = TRUE), + ANIMCMD_FRAME(8, 22, .hFlip = TRUE), + ANIMCMD_LOOP(0), + ANIMCMD_FRAME(16, 5, .hFlip = TRUE), + ANIMCMD_FRAME(8, 5, .hFlip = TRUE), + ANIMCMD_FRAME(0, 5, .hFlip = TRUE), + ANIMCMD_FRAME(8, 5, .hFlip = TRUE), + ANIMCMD_LOOP(1), + ANIMCMD_FRAME(8, 22, .hFlip = TRUE), + ANIMCMD_FRAME(24, 3, .hFlip = TRUE), + ANIMCMD_FRAME(32, 3, .hFlip = TRUE), + ANIMCMD_FRAME(40, 22, .hFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83DA7DC[] = +{ + ANIMCMD_FRAME(8, 60), + ANIMCMD_FRAME(16, 5), + ANIMCMD_FRAME(8, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(8, 22), + ANIMCMD_LOOP(0), + ANIMCMD_FRAME(16, 5), + ANIMCMD_FRAME(8, 5), + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(8, 5), + ANIMCMD_LOOP(1), + ANIMCMD_FRAME(8, 22), + ANIMCMD_FRAME(24, 3), + ANIMCMD_FRAME(32, 3), + ANIMCMD_FRAME(40, 22), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_83DA81C[] = +{ + gSpriteAnim_83DA79C, + gSpriteAnim_83DA7DC, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA824 = +{ + .tileTag = 10097, + .paletteTag = 10097, + .oam = &gOamData_837DF74, + .anims = gSpriteAnimTable_83DA81C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DBAF4, +}; + +const union AnimCmd gSpriteAnim_83DA83C[] = +{ + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(16, 6), + ANIMCMD_FRAME(32, 6), + ANIMCMD_FRAME(48, 6), + ANIMCMD_FRAME(64, 6), + ANIMCMD_FRAME(80, 6), + ANIMCMD_FRAME(96, 18), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_83DA85C[] = +{ + gSpriteAnim_83DA83C, +}; + +const union AffineAnimCmd gSpriteAffineAnim_3DA860[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 4, 4), + AFFINEANIMCMD_FRAME(0, 0, -4, 8), + AFFINEANIMCMD_FRAME(0, 0, 4, 4), + AFFINEANIMCMD_LOOP(2), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_083DA888[] = +{ + gSpriteAffineAnim_3DA860, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA88C = +{ + .tileTag = 10093, + .paletteTag = 10093, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83DA85C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DBB70, +}; + +const union AffineAnimCmd gSpriteAffineAnim_083DA8A4[] = +{ + AFFINEANIMCMD_FRAME(-8, 10, 0, 16), + AFFINEANIMCMD_FRAME(18, -18, 0, 16), + AFFINEANIMCMD_FRAME(-20, 16, 0, 8), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_083DA8C4[] = +{ + AFFINEANIMCMD_FRAME(64, -4, 0, 20), + AFFINEANIMCMD_FRAME(0, 0, 0, -56), + AFFINEANIMCMD_END, +}; + +const struct SpriteTemplate gSpriteTemplate_83DA8DC = +{ + .tileTag = 10249, + .paletteTag = 10249, + .oam = &gOamData_837E04C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA8F4 = +{ + .tileTag = 10250, + .paletteTag = 10250, + .oam = &gOamData_837DF3C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DC068, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DA90C[] = +{ + AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 8), + AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 8), + AFFINEANIMCMD_JUMP(0), +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DA924[] = +{ + AFFINEANIMCMD_FRAME(0xF0, 0xF0, 0, 0), + AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 6), + AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 8), + AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 2), + AFFINEANIMCMD_JUMP(1), +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DA94C[] = +{ + AFFINEANIMCMD_FRAME(0xD0, 0xD0, 0, 0), + AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 4), + AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 8), + AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 4), + AFFINEANIMCMD_JUMP(1), +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DA974[] = +{ + AFFINEANIMCMD_FRAME(0xB0, 0xB0, 0, 0), + AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 2), + AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 8), + AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 6), + AFFINEANIMCMD_JUMP(1), +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA99C[] = +{ + gSpriteAffineAnim_83DA90C, + gSpriteAffineAnim_83DA924, + gSpriteAffineAnim_83DA94C, + gSpriteAffineAnim_83DA974, +}; + +const struct SpriteTemplate gSpriteTemplate_83DA9AC = +{ + .tileTag = 10251, + .paletteTag = 10251, + .oam = &gOamData_837DF8C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DA99C, + .callback = sub_80DC2B0, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DA9C4[] = +{ + AFFINEANIMCMD_FRAME(0x20, 0x20, 0, 0), + AFFINEANIMCMD_FRAME(0x4, 0x4, 0, 120), + AFFINEANIMCMD_END_ALT(1), +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA9DC[] = +{ + gSpriteAffineAnim_83DA9C4, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA9E0 = +{ + .tileTag = 10267, + .paletteTag = 10267, + .oam = &gOamData_837E11C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DA9DC, + .callback = sub_80793C4, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DA9F8[] = +{ + AFFINEANIMCMD_FRAME(0x20, 0x20, 0, 0), + AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 17), + AFFINEANIMCMD_LOOP(0), + AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 10), + AFFINEANIMCMD_FRAME(0x8, 0x8, 0, 10), + AFFINEANIMCMD_LOOP(4), + AFFINEANIMCMD_LOOP(0), + AFFINEANIMCMD_FRAME(0xFFF0, 0xFFF0, 0, 5), + AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 5), + AFFINEANIMCMD_LOOP(7), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DAA50[] = +{ + AFFINEANIMCMD_FRAME(0xFFEC, 0x18, 0, 15), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DAA60[] = +{ + gSpriteAffineAnim_83DA9F8, + gSpriteAffineAnim_83DAA50, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAA68 = +{ + .tileTag = 10212, + .paletteTag = 10212, + .oam = &gOamData_837E11C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DAA60, + .callback = sub_80DC700, +}; void sub_80DB74C(struct Sprite *sprite) { @@ -254,7 +644,7 @@ void sub_80DBB70(struct Sprite *sprite) static void sub_80DBC00(struct Sprite *sprite) { sprite->oam.affineMode = 1; - sprite->affineAnims = gUnknown_083DA888; + sprite->affineAnims = gSpriteAffineAnimTable_083DA888; sprite->data[0] = 0; InitSpriteAffineAnim(sprite); sprite->callback = sub_80DBC34; @@ -287,7 +677,7 @@ void sub_80DBC94(u8 taskId) struct Task *task = &gTasks[taskId]; u8 spriteId = GetAnimBattlerSpriteId(0); task->data[0] = spriteId; - sub_80798F4(task, spriteId, &gUnknown_083DA8A4); + sub_80798F4(task, spriteId, &gSpriteAffineAnim_083DA8A4); task->func = sub_80DBCD0; } @@ -308,7 +698,7 @@ void sub_80DBCFC(u8 taskId) task->data[2] = 0; task->data[3] = GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER ? 4 : 8; - sub_80798F4(task, task->data[0], &gUnknown_083DA8C4); + sub_80798F4(task, task->data[0], &gSpriteAffineAnim_083DA8C4); task->func = sub_80DBD58; } diff --git a/src/battle/anim/rock.c b/src/battle/anim/rock.c index 73be7c42b..595df3168 100644 --- a/src/battle/anim/rock.c +++ b/src/battle/anim/rock.c @@ -20,11 +20,20 @@ extern u16 gBattle_BG3_Y; extern const u8 gBattleAnimBackgroundTilemap_SandstormBrew[]; extern const u8 gBattleAnimBackgroundImage_SandstormBrew[]; extern const u16 gBattleAnimSpritePalette_261[]; -extern const struct SpriteTemplate gSpriteTemplate_83DAD78; -extern const struct SpriteTemplate gSpriteTemplate_83DAD90; - -extern const struct SubspriteTable gUnknown_083DAD10; - +extern const union AnimCmd *const gSpriteAnimTable_83D91F0[]; +extern const union AnimCmd *const gSpriteAnimTable_83D95E0[]; + +extern void AnimMoveTwisterParticle(struct Sprite *sprite); + +void sub_80DCE9C(struct Sprite *sprite); +void sub_80DCF60(struct Sprite *sprite); +void sub_80DCFE4(struct Sprite *sprite); +void sub_80DD3AC(struct Sprite *sprite); +void sub_80DD490(struct Sprite *sprite); +void sub_80DD87C(struct Sprite *sprite); +void sub_80DD8E8(struct Sprite *sprite); +void sub_80DD978(struct Sprite *sprite); +void sub_80DD9A4(struct Sprite *sprite); static void sub_80DCF1C(struct Sprite *sprite); static void sub_80DD02C(struct Sprite *sprite); static void sub_80DD190(u8 taskId); @@ -34,6 +43,280 @@ static u8 sub_80DD8BC(void); static void sub_80DD928(struct Sprite *sprite); static void sub_80DD9FC(struct Sprite *sprite); +const union AnimCmd gSpriteAnim_83DAC28[] = +{ + ANIMCMD_FRAME(32, 1), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83DAC30[] = +{ + ANIMCMD_FRAME(48, 1), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83DAC38[] = +{ + ANIMCMD_FRAME(64, 1), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_83DAC40[] = +{ + gSpriteAnim_83DAC28, + gSpriteAnim_83DAC30, + gSpriteAnim_83DAC38, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAC4C = +{ + .tileTag = 10058, + .paletteTag = 10058, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83DAC40, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DCE9C, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAC64 = +{ + .tileTag = 10058, + .paletteTag = 10058, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83DAC40, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DCF60, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAC7C = +{ + .tileTag = 10074, + .paletteTag = 10074, + .oam = &gOamData_837DF24, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DCFE4, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DAC94[] = +{ + AFFINEANIMCMD_FRAME(0xC0, 0xC0, 0, 0), + AFFINEANIMCMD_FRAME(0x2, 0xFFFD, 0, 5), + AFFINEANIMCMD_FRAME(0xFFFE, 0x3, 0, 5), + AFFINEANIMCMD_JUMP(1), +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DACB4[] = +{ + gSpriteAffineAnim_83DAC94, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DACB8 = +{ + .tileTag = 10149, + .paletteTag = 10149, + .oam = &gOamData_837E0AC, + .anims = gSpriteAnimTable_83D91F0, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DACB4, + .callback = sub_80DCFE4, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DACD0 = +{ + .tileTag = 10029, + .paletteTag = 10029, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83D95E0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DCFE4, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DACE8 = +{ + .tileTag = 10261, + .paletteTag = 10261, + .oam = &gOamData_837DF54, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DD3AC, +}; + +const struct Subsprite gSubspriteTable_83DAD00[] = +{ + {.x = -16, .y = 0, .shape = ST_OAM_H_RECTANGLE, .size = 2, .tileOffset = 0, .priority = 1}, + {.x = 16, .y = 0, .shape = ST_OAM_H_RECTANGLE, .size = 2, .tileOffset = 8, .priority = 1}, +}; + +const struct SubspriteTable gSubspriteTables_83DAD10[] = +{ + {ARRAY_COUNT(gSubspriteTable_83DAD00), gSubspriteTable_83DAD00}, +}; + +const union AnimCmd gSpriteAnim_83DAD18[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83DAD20[] = +{ + ANIMCMD_FRAME(16, 1), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83DAD28[] = +{ + ANIMCMD_FRAME(32, 1), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83DAD30[] = +{ + ANIMCMD_FRAME(48, 1), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83DAD38[] = +{ + ANIMCMD_FRAME(64, 1), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83DAD40[] = +{ + ANIMCMD_FRAME(80, 1), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_83DAD48[] = +{ + gSpriteAnim_83DAD18, + gSpriteAnim_83DAD20, +}; + +const union AnimCmd *const gSpriteAnimTable_83DAD50[] = +{ + gSpriteAnim_83DAD28, + gSpriteAnim_83DAD30, +}; + +const union AnimCmd *const gSpriteAnimTable_83DAD58[] = +{ + gSpriteAnim_83DAD38, + gSpriteAnim_83DAD40, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAD60 = +{ + .tileTag = 10058, + .paletteTag = 10058, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83DAD48, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DD490, +}; + +const struct SpriteTemplate gSpriteTemplate_83DAD78 = +{ + .tileTag = 10074, + .paletteTag = 10074, + .oam = &gOamData_837DF24, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DD87C, +}; + +const struct SpriteTemplate gSpriteTemplate_83DAD90 = +{ + .tileTag = 10058, + .paletteTag = 10058, + .oam = &gOamData_837DF34, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DD87C, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DADA8 = +{ + .tileTag = 10058, + .paletteTag = 10058, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83DAD48, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80DD8E8, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DADC0[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, -5, 5), + AFFINEANIMCMD_JUMP(0), +}; + +const union AffineAnimCmd gSpriteAffineAnim_83DADD0[] = +{ + AFFINEANIMCMD_FRAME(0x0, 0x0, 5, 5), + AFFINEANIMCMD_JUMP(0), +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83DADE0[] = +{ + gSpriteAffineAnim_83DADC0, + gSpriteAffineAnim_83DADD0, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DADE8 = +{ + .tileTag = 10058, + .paletteTag = 10058, + .oam = &gOamData_837DF94, + .anims = gSpriteAnimTable_83DAD48, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DADE0, + .callback = sub_80DD978, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAE00 = +{ + .tileTag = 10058, + .paletteTag = 10058, + .oam = &gOamData_837DF94, + .anims = gSpriteAnimTable_83DAD48, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DADE0, + .callback = sub_80DD9A4, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAE18 = +{ + .tileTag = 10058, + .paletteTag = 10058, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83DAD58, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DADE0, + .callback = AnimMoveTwisterParticle, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAE30 = +{ + .tileTag = 10058, + .paletteTag = 10058, + .oam = &gOamData_837DF94, + .anims = gSpriteAnimTable_83DAD50, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DADE0, + .callback = sub_807A9BC, +}; void sub_80DCE9C(struct Sprite *sprite) { @@ -244,7 +527,7 @@ void sub_80DD3AC(struct Sprite *sprite) } sprite->pos1.y = gBattleAnimArgs[0]; - SetSubspriteTables(sprite, &gUnknown_083DAD10); + SetSubspriteTables(sprite, gSubspriteTables_83DAD10); sprite->data[1] = gBattleAnimArgs[1]; sprite->data[2] = gBattleAnimArgs[2]; sprite->data[0]++; diff --git a/src/battle/anim/shock.c b/src/battle/anim/shock.c index 19e4d0fb2..5b82d9319 100644 --- a/src/battle/anim/shock.c +++ b/src/battle/anim/shock.c @@ -8,11 +8,62 @@ extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; extern struct OamMatrix gOamMatrices[]; +void sub_80D6294(struct Sprite *sprite); +void sub_80D6328(struct Sprite *sprite); extern void sub_80DA48C(struct Sprite *); // shock (moves the little electricity lines) // Used in Shock. +const union AnimCmd gSpriteAnim_83D9824[] = +{ + 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 gSpriteAnimTable_83D9840[] = +{ + gSpriteAnim_83D9824, +}; + +const struct SpriteTemplate gSpriteTemplate_83D9844 = +{ + .tileTag = 10079, + .paletteTag = 10079, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83D9840, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D6294, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D985C = +{ + .tileTag = 10011, + .paletteTag = 10011, + .oam = &gOamData_837DF8C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D6328, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9874 = +{ + .tileTag = 10171, + .paletteTag = 10171, + .oam = &gOamData_837DF2C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = TranslateAnimSpriteToTargetMonLocation, +}; + void sub_80D6294(struct Sprite *sprite) { sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 2); diff --git a/src/battle/anim/sunlight.c b/src/battle/anim/sunlight.c index 88112c74a..7efc85b37 100644 --- a/src/battle/anim/sunlight.c +++ b/src/battle/anim/sunlight.c @@ -2,9 +2,34 @@ #include "battle_anim.h" #include "rom_8077ABC.h" +void sub_80D517C(struct Sprite *sprite); + // sunlight (creates sunlight orbs) // Used in Sunny Day +const union AffineAnimCmd gSpriteAffineAnim_83D9594[] = +{ + AFFINEANIMCMD_FRAME(0x50, 0x50, 0, 0), + AFFINEANIMCMD_FRAME(0x2, 0x2, 10, 1), + AFFINEANIMCMD_JUMP(1), +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83D95AC[] = +{ + gSpriteAffineAnim_83D9594, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D95B0 = +{ + .tileTag = 10157, + .paletteTag = 10157, + .oam = &gOamData_837E0B4, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83D95AC, + .callback = sub_80D517C, +}; + void sub_80D517C(struct Sprite *sprite) { sprite->pos1.x = 0; diff --git a/src/battle/anim/thunder.c b/src/battle/anim/thunder.c index 70d4dc232..9cd04e61f 100644 --- a/src/battle/anim/thunder.c +++ b/src/battle/anim/thunder.c @@ -7,11 +7,38 @@ extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; extern u16 gBattleTypeFlags; +void sub_80D61C8(struct Sprite *sprite); static void sub_80D6218(struct Sprite *); // thunder (positions the lightning bolts) // Used in Thunder, Thunder Punch, and Tri Attack. +const union AnimCmd gSpriteAnim_83D97B4[] = +{ + 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 gSpriteAnimTable_83D97CC[] = +{ + gSpriteAnim_83D97B4, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D97D0 = +{ + .tileTag = 10037, + .paletteTag = 10037, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83D97CC, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D61C8, +}; + void sub_80D61C8(struct Sprite *sprite) { if (GetBattlerSide(gAnimBankAttacker) != 0) diff --git a/src/battle/anim/water.c b/src/battle/anim/water.c index a7e1883f3..0afe133f0 100644 --- a/src/battle/anim/water.c +++ b/src/battle/anim/water.c @@ -8,7 +8,187 @@ extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; -static void sub_80D3874(struct Sprite *); +extern const union AffineAnimCmd *const gSpriteAffineAnimTable_83DA318[]; +extern const union AnimCmd *const gSpriteAnimTable_83D9BC8[]; + +void sub_80D37FC(struct Sprite *sprite); +void sub_80D3838(struct Sprite *sprite); +void sub_80D4044(struct Sprite *sprite); +void sub_80D452C(struct Sprite *sprite); +void sub_80D4BF0(struct Sprite *sprite); +void sub_80D4C64(struct Sprite *sprite); +static void sub_80D3874(struct Sprite *sprite); + +const union AnimCmd gSpriteAnim_83D9300[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83D9308[] = +{ + ANIMCMD_FRAME(4, 1), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_83D9310[] = +{ + gSpriteAnim_83D9300, +}; + +const union AnimCmd *const gSpriteAnimTable_83D9314[] = +{ + gSpriteAnim_83D9308, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9318 = +{ + .tileTag = 10155, + .paletteTag = 10155, + .oam = &gOamData_837E04C, + .anims = gSpriteAnimTable_83D9310, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80794A8, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9330 = +{ + .tileTag = 10155, + .paletteTag = 10155, + .oam = &gOamData_837E10C, + .anims = gSpriteAnimTable_83D9314, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83DA318, + .callback = sub_80D37FC, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9348 = +{ + .tileTag = 10141, + .paletteTag = 10141, + .oam = &gOamData_837DF24, + .anims = gSpriteAnimTable_83D9BC8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D3838, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9360 = +{ + .tileTag = 10155, + .paletteTag = 10155, + .oam = &gOamData_837DF24, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D4044, +}; + +const struct SpriteTemplate gSpriteTemplate_83D9378 = +{ + .tileTag = 10268, + .paletteTag = 10268, + .oam = &gOamData_837DF24, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D452C, +}; + +const union AnimCmd gSpriteAnim_83D9390[] = +{ + ANIMCMD_FRAME(8, 1), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83D9398[] = +{ + ANIMCMD_FRAME(9, 1), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83D93A0[] = +{ + ANIMCMD_FRAME(4, 1), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_83D93A8[] = +{ + gSpriteAnim_83D9390, + gSpriteAnim_83D9398, +}; + +const union AnimCmd *const gSpriteAnimTable_83D93B0[] = +{ + gSpriteAnim_83D93A0, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83D93B4[] = +{ + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0xFFF6, 0xFFF6, 0, 15), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83D93CC[] = +{ + AFFINEANIMCMD_FRAME(0xE0, 0xE0, 0, 0), + AFFINEANIMCMD_FRAME(0xFFF8, 0xFFF8, 0, 15), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd gSpriteAffineAnim_83D93E4[] = +{ + AFFINEANIMCMD_FRAME(0x150, 0x150, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 15), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83D93FC[] = +{ + gSpriteAffineAnim_83D93B4, + gSpriteAffineAnim_83D93CC, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83D9404[] = +{ + gSpriteAffineAnim_83D93E4, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9408 = +{ + .tileTag = 10155, + .paletteTag = 10155, + .oam = &gOamData_837DF24, + .anims = gSpriteAnimTable_83D93A8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D4BF0, +}; + +const struct SpriteTemplate gSpriteTemplate_83D9420 = +{ + .tileTag = 10155, + .paletteTag = 10155, + .oam = &gOamData_837DF84, + .anims = gSpriteAnimTable_83D93A8, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83D93FC, + .callback = sub_80D4C64, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9438 = +{ + .tileTag = 10155, + .paletteTag = 10155, + .oam = &gOamData_837DF8C, + .anims = gSpriteAnimTable_83D93B0, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83D9404, + .callback = sub_807A9BC, +}; void sub_80D37FC(struct Sprite *sprite) { diff --git a/src/battle/anim/wisp_fire.c b/src/battle/anim/wisp_fire.c index 5a51986c7..c96a3a86f 100644 --- a/src/battle/anim/wisp_fire.c +++ b/src/battle/anim/wisp_fire.c @@ -9,12 +9,45 @@ extern s16 gBattleAnimArgs[]; extern u8 gAnimBankTarget; extern u8 gAnimBankAttacker; - extern u8 gBankSpriteIds[]; -extern s8 gUnknown_083D9794[16]; -extern s8 gUnknown_083D97A4[16]; -void sub_80D5E4C(u8 taskId); +void sub_80D5CC0(struct Sprite *sprite); +static void sub_80D5E4C(u8 taskId); + +const union AnimCmd gSpriteAnim_83D9764[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(16, 5), + ANIMCMD_FRAME(32, 5), + ANIMCMD_FRAME(48, 5), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd *const gSpriteAnimTable_83D9778[] = +{ + gSpriteAnim_83D9764, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D977C = +{ + .tileTag = 10232, + .paletteTag = 10232, + .oam = &gOamData_837DF34, + .anims = gSpriteAnimTable_83D9778, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D5CC0, +}; + +const s8 gUnknown_083D9794[16] = +{ + -1, -1, 0, 1, 1, 0, 0, -1, -1, 1, 1, 0, 0, -1, 0, 1, +}; + +const s8 gUnknown_083D97A4[16] = +{ + -1, 0, 1, 0, -1, 1, 0, -1, 0, 1, 0, -1, 0, 1, 0, 1, +}; void sub_80D5CC0(struct Sprite *sprite) { @@ -66,7 +99,7 @@ void sub_80D5DDC(u8 taskId) task->func = sub_80D5E4C; } -void sub_80D5E4C(u8 taskId) +static void sub_80D5E4C(u8 taskId) { struct Task *task = &gTasks[taskId]; diff --git a/src/battle/anim/wisp_orb.c b/src/battle/anim/wisp_orb.c index 90b90acb7..32373ca2a 100644 --- a/src/battle/anim/wisp_orb.c +++ b/src/battle/anim/wisp_orb.c @@ -11,11 +11,58 @@ extern u8 gAnimBankTarget; extern u16 gBattleTypeFlags; extern u8 gUnknown_0202F7D2; +void sub_80D5B0C(struct Sprite *sprite); static void sub_80D5C5C(struct Sprite *); // wisp_orb (animates the wisp orbs) // Used in Will-O-Wisp +const union AnimCmd gSpriteAnim_83D9710[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_FRAME(4, 5), + ANIMCMD_FRAME(8, 5), + ANIMCMD_FRAME(12, 5), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gSpriteAnim_83D9724[] = +{ + ANIMCMD_FRAME(16, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83D972C[] = +{ + ANIMCMD_FRAME(20, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83D9734[] = +{ + ANIMCMD_FRAME(20, 5), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_83D973C[] = +{ + gSpriteAnim_83D9710, + gSpriteAnim_83D9724, + gSpriteAnim_83D972C, + gSpriteAnim_83D9734, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83D974C = +{ + .tileTag = 10231, + .paletteTag = 10231, + .oam = &gOamData_837DF2C, + .anims = gSpriteAnimTable_83D973C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80D5B0C, +}; + void sub_80D5B0C(struct Sprite *sprite) { switch (sprite->data[0]) |