diff options
author | camthesaxman <cameronghall@cox.net> | 2017-01-11 00:49:29 -0600 |
---|---|---|
committer | camthesaxman <cameronghall@cox.net> | 2017-01-11 00:49:29 -0600 |
commit | d312ee301b03580bbe47add77441b671af70f8ac (patch) | |
tree | d7057a86cd6eda841ce2d151b806f849d6cadac9 /src | |
parent | f88eeb607409528dadbf841f2cb8e805d6e86deb (diff) |
start decompiling battle_anim.c
Diffstat (limited to 'src')
-rw-r--r-- | src/battle_anim.c | 217 |
1 files changed, 217 insertions, 0 deletions
diff --git a/src/battle_anim.c b/src/battle_anim.c new file mode 100644 index 000000000..1313b69ca --- /dev/null +++ b/src/battle_anim.c @@ -0,0 +1,217 @@ +#include "global.h" +#include "asm.h" +#include "gba/m4a_internal.h" +#include "sprite.h" +#include "task.h" + +extern u16 gUnknown_02024A6A[4]; +extern u8 gUnknown_02024C07; +extern u8 gUnknown_02024C08; +extern const u8 *gUnknown_0202F7A4; +extern void (*gUnknown_0202F7AC)(void); +extern s8 gUnknown_0202F7B0; +extern u8 gUnknown_0202F7B1; +extern u8 gUnknown_0202F7B2; +extern u8 gUnknown_0202F7B3; +extern u32 gUnknown_0202F7B4; +extern u32 gUnknown_0202F7B8; +extern u16 gUnknown_0202F7BC; +extern u8 gUnknown_0202F7BE; +extern u8 gUnknown_0202F7C2[]; +extern u8 gUnknown_0202F7C4; +extern u8 gUnknown_0202F7C5; +extern u16 gUnknown_0202F7C6; +extern u8 gUnknown_0202F7C8; +extern u8 gUnknown_0202F7C9; +extern u16 gUnknown_0202F7CA[4]; +extern u8 gUnknown_0202F7D2; +extern u16 gUnknown_03004200; +extern u16 gUnknown_03004240; +extern u16 gUnknown_03004244; +extern u16 gUnknown_030042C4; +extern u16 gUnknown_03004B10[8]; +extern u16 gBattleAnimArgs[8]; +extern struct MusicPlayerInfo gMPlay_BGM; + +extern const u16 gUnknown_081C7160[]; +extern void (*gUnknown_0837F4B8[])(void); +extern const u8 *const gBattleAnims_Moves[]; + +extern u8 unk_2000000[]; + +#define EWRAM_19348 (*(u16 *)(unk_2000000 + 0x19348)) + +void sub_8075624(void) +{ + s32 i; + + gUnknown_0202F7B0 = 0; + gUnknown_0202F7B1 = 0; + gUnknown_0202F7B2 = 0; + gUnknown_0202F7B3 = 0; + gUnknown_0202F7B4 = 0; + gUnknown_0202F7B8 = 0; + gUnknown_0202F7BC = 0; + gUnknown_0202F7BE = 0; + for (i = 0; i < 8; i++) + gUnknown_03004B10[i] |= 0xFFFF; + for (i = 0; i < 8; i++) + gBattleAnimArgs[i] = 0; + gUnknown_0202F7C2[0] = 0xFF; + gUnknown_0202F7C2[1] = -1; + gUnknown_0202F7C4 = 0; + gUnknown_0202F7C5 = 0; + gUnknown_0202F7C6 = 0; + gUnknown_0202F7C8 = 0; + gUnknown_0202F7C9 = 0; + gUnknown_0202F7D2 = 0; +} + +extern void move_something(const u8 *const moveAnims[], u16 b, u8 c); + +void move_anim_start_t1(u16 a) +{ + gUnknown_0202F7C8 = gUnknown_02024C07; + gUnknown_0202F7C9 = gUnknown_02024C08; + move_something(gBattleAnims_Moves, a, 1); +} + +extern u8 sub_8076BE0(); +extern void sub_8079E24(); +extern void sub_8043EB4(); +extern void sub_80759D0(void); + +void move_something(const u8 *const moveAnims[], u16 b, u8 c) +{ + s32 i; + + if (sub_8076BE0() == 0) + { + sub_8079E24(); + sub_8043EB4(0); + for (i = 0; i < 4; i++) + { + if (battle_side_get_owner(i) != 0) + gUnknown_0202F7CA[i] = GetMonData(&gEnemyParty[gUnknown_02024A6A[i]], 11); + else + gUnknown_0202F7CA[i] = GetMonData(&gPlayerParty[gUnknown_02024A6A[i]], 11); + } + } + else + { + for (i = 0; i < 4; i++) + gUnknown_0202F7CA[i] = EWRAM_19348; + } + if (c == 0) + gUnknown_0202F7C6 = 0; + else + gUnknown_0202F7C6 = b; + for (i = 0; i < 8; i++) + gBattleAnimArgs[i] = 0; + gUnknown_0202F7C2[0] = 0xFF; + gUnknown_0202F7C2[1] = -1; + gUnknown_0202F7A4 = moveAnims[b]; + gUnknown_0202F7B1 = 1; + gUnknown_0202F7B0 = 0; + gUnknown_0202F7AC = sub_80759D0; + for (i = 0; i < 8; i++) + gUnknown_03004B10[i] |= 0xFFFF; + if (c != 0) + { + i = 0; + while (1) + { + if (gUnknown_081C7160[i] == 0xFFFF) + break; + if (b == gUnknown_081C7160[i]) + { + m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 128); + break; + } + i++; + } + } + gUnknown_030042C4 = 0; + gUnknown_03004240 = 0; + gUnknown_03004200 = 0; + gUnknown_03004244 = 0; +} + +void move_anim_8072740(struct Sprite *sprite) +{ + FreeSpriteOamMatrix(sprite); + DestroySprite(sprite); + gUnknown_0202F7B2--; +} + +void move_anim_task_del(u8 taskId) +{ + DestroyTask(taskId); + gUnknown_0202F7B2--; +} + +void move_anim_related_task_del(u8 taskId) +{ + DestroyTask(taskId); + gUnknown_0202F7B3--; +} + +void sub_8075940(u16 a) +{ + s32 i; + + for (i = 0; i < 8; i++) + { + if (gUnknown_03004B10[i] == 0xFFFF) + { + gUnknown_03004B10[i] = a; + return; + } + } +} + +void sub_8075970(u16 a) +{ + s32 i; + + for (i = 0; i < 8; i++) + { + if (gUnknown_03004B10[i] == a) + { + gUnknown_03004B10[i] |= 0xFFFF; + return; + } + } +} + +void move_anim_waiter(void) +{ + if (gUnknown_0202F7B0 <= 0) + { + gUnknown_0202F7AC = sub_80759D0; + gUnknown_0202F7B0 = 0; + } + else + { + gUnknown_0202F7B0--; + } +} + +void sub_80759D0(void) +{ + do + { + gUnknown_0837F4B8[*gUnknown_0202F7A4](); + } while (gUnknown_0202F7B0 == 0 && gUnknown_0202F7B1 != 0); +} + +/* +void ma00_load_graphics(void) +{ + u8 r4 = *(gUnknown_0202F7A4++); + u8 temp = *gUnknown_0202F7A4; + + r4 |= temp << 8; + LoadCompressedObjectPic() +} +*/ |