start decompiling battle_anim.c

This commit is contained in:
camthesaxman
2017-01-11 00:49:29 -06:00
parent f88eeb6074
commit d312ee301b
3 changed files with 218 additions and 495 deletions
-495
View File
@@ -6,501 +6,6 @@
.text
thumb_func_start sub_8075624
sub_8075624: @ 8075624
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
ldr r0, _080756B8 @ =gUnknown_0202F7B0
movs r1, 0
strb r1, [r0]
ldr r0, _080756BC @ =gUnknown_0202F7B1
strb r1, [r0]
ldr r0, _080756C0 @ =gUnknown_0202F7B2
strb r1, [r0]
ldr r0, _080756C4 @ =gUnknown_0202F7B3
strb r1, [r0]
ldr r0, _080756C8 @ =gUnknown_0202F7B4
movs r1, 0
str r1, [r0]
ldr r0, _080756CC @ =gUnknown_0202F7B8
str r1, [r0]
ldr r0, _080756D0 @ =gUnknown_0202F7BC
movs r2, 0
strh r1, [r0]
ldr r0, _080756D4 @ =gUnknown_0202F7BE
strb r2, [r0]
ldr r4, _080756D8 @ =gUnknown_0202F7C2
ldr r5, _080756DC @ =gUnknown_0202F7C4
ldr r6, _080756E0 @ =gUnknown_0202F7C5
ldr r7, _080756E4 @ =gUnknown_0202F7C6
ldr r0, _080756E8 @ =gUnknown_0202F7C8
mov r12, r0
ldr r1, _080756EC @ =gUnknown_0202F7C9
mov r8, r1
ldr r0, _080756F0 @ =gUnknown_0202F7D2
mov r9, r0
ldr r1, _080756F4 @ =0x0000ffff
adds r3, r1, 0
ldr r1, _080756F8 @ =gUnknown_03004B10
movs r2, 0x7
_0807566E:
ldrh r0, [r1]
orrs r0, r3
strh r0, [r1]
adds r1, 0x2
subs r2, 0x1
cmp r2, 0
bge _0807566E
ldr r1, _080756FC @ =gBattleAnimArgs
movs r2, 0
adds r0, r1, 0
adds r0, 0xE
_08075684:
strh r2, [r0]
subs r0, 0x2
cmp r0, r1
bge _08075684
movs r1, 0
movs r0, 0xFF
strb r0, [r4]
movs r0, 0x1
negs r0, r0
strb r0, [r4, 0x1]
strb r1, [r5]
strb r1, [r6]
movs r0, 0
strh r1, [r7]
mov r1, r12
strb r0, [r1]
mov r1, r8
strb r0, [r1]
mov r1, r9
strb r0, [r1]
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080756B8: .4byte gUnknown_0202F7B0
_080756BC: .4byte gUnknown_0202F7B1
_080756C0: .4byte gUnknown_0202F7B2
_080756C4: .4byte gUnknown_0202F7B3
_080756C8: .4byte gUnknown_0202F7B4
_080756CC: .4byte gUnknown_0202F7B8
_080756D0: .4byte gUnknown_0202F7BC
_080756D4: .4byte gUnknown_0202F7BE
_080756D8: .4byte gUnknown_0202F7C2
_080756DC: .4byte gUnknown_0202F7C4
_080756E0: .4byte gUnknown_0202F7C5
_080756E4: .4byte gUnknown_0202F7C6
_080756E8: .4byte gUnknown_0202F7C8
_080756EC: .4byte gUnknown_0202F7C9
_080756F0: .4byte gUnknown_0202F7D2
_080756F4: .4byte 0x0000ffff
_080756F8: .4byte gUnknown_03004B10
_080756FC: .4byte gBattleAnimArgs
thumb_func_end sub_8075624
thumb_func_start move_anim_start_t1
move_anim_start_t1: @ 8075700
push {lr}
adds r1, r0, 0
lsls r1, 16
lsrs r1, 16
ldr r2, _08075724 @ =gUnknown_0202F7C8
ldr r0, _08075728 @ =gUnknown_02024C07
ldrb r0, [r0]
strb r0, [r2]
ldr r2, _0807572C @ =gUnknown_0202F7C9
ldr r0, _08075730 @ =gUnknown_02024C08
ldrb r0, [r0]
strb r0, [r2]
ldr r0, _08075734 @ =gBattleAnims_Moves
movs r2, 0x1
bl move_something
pop {r0}
bx r0
.align 2, 0
_08075724: .4byte gUnknown_0202F7C8
_08075728: .4byte gUnknown_02024C07
_0807572C: .4byte gUnknown_0202F7C9
_08075730: .4byte gUnknown_02024C08
_08075734: .4byte gBattleAnims_Moves
thumb_func_end move_anim_start_t1
thumb_func_start move_something
move_something: @ 8075738
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
str r0, [sp]
lsls r1, 16
lsrs r1, 16
mov r8, r1
lsls r2, 24
lsrs r2, 24
mov r9, r2
bl sub_8076BE0
lsls r0, 24
cmp r0, 0
bne _080757D8
bl sub_8079E24
movs r0, 0
bl sub_8043EB4
movs r4, 0
mov r0, r8
lsls r0, 2
mov r10, r0
ldr r6, _0807578C @ =gUnknown_02024A6A
movs r7, 0x64
ldr r5, _08075790 @ =gUnknown_0202F7CA
_08075774:
lsls r0, r4, 24
lsrs r0, 24
bl battle_side_get_owner
lsls r0, 24
cmp r0, 0
beq _08075798
ldrh r0, [r6]
muls r0, r7
ldr r1, _08075794 @ =gEnemyParty
b _0807579E
.align 2, 0
_0807578C: .4byte gUnknown_02024A6A
_08075790: .4byte gUnknown_0202F7CA
_08075794: .4byte gEnemyParty
_08075798:
ldrh r0, [r6]
muls r0, r7
ldr r1, _080757C0 @ =gPlayerParty
_0807579E:
adds r0, r1
movs r1, 0xB
bl GetMonData
strh r0, [r5]
adds r6, 0x2
adds r5, 0x2
adds r4, 0x1
cmp r4, 0x3
ble _08075774
ldr r3, _080757C4 @ =gUnknown_0202F7C6
ldr r5, _080757C8 @ =gUnknown_0202F7C2
ldr r1, _080757CC @ =gUnknown_0202F7B1
mov r12, r1
ldr r7, _080757D0 @ =gUnknown_0202F7AC
ldr r6, _080757D4 @ =sub_80759D0
b _080757FC
.align 2, 0
_080757C0: .4byte gPlayerParty
_080757C4: .4byte gUnknown_0202F7C6
_080757C8: .4byte gUnknown_0202F7C2
_080757CC: .4byte gUnknown_0202F7B1
_080757D0: .4byte gUnknown_0202F7AC
_080757D4: .4byte sub_80759D0
_080757D8:
ldr r3, _08075808 @ =gUnknown_0202F7C6
ldr r5, _0807580C @ =gUnknown_0202F7C2
mov r0, r8
lsls r0, 2
mov r10, r0
ldr r1, _08075810 @ =gUnknown_0202F7B1
mov r12, r1
ldr r7, _08075814 @ =gUnknown_0202F7AC
ldr r6, _08075818 @ =sub_80759D0
ldr r2, _0807581C @ =0x02019348
ldr r1, _08075820 @ =gUnknown_0202F7CA
movs r4, 0x3
_080757F0:
ldrh r0, [r2]
strh r0, [r1]
adds r1, 0x2
subs r4, 0x1
cmp r4, 0
bge _080757F0
_080757FC:
mov r0, r9
cmp r0, 0
bne _08075824
strh r0, [r3]
b _08075828
.align 2, 0
_08075808: .4byte gUnknown_0202F7C6
_0807580C: .4byte gUnknown_0202F7C2
_08075810: .4byte gUnknown_0202F7B1
_08075814: .4byte gUnknown_0202F7AC
_08075818: .4byte sub_80759D0
_0807581C: .4byte 0x02019348
_08075820: .4byte gUnknown_0202F7CA
_08075824:
mov r1, r8
strh r1, [r3]
_08075828:
ldr r1, _0807587C @ =gBattleAnimArgs
movs r2, 0
adds r0, r1, 0
adds r0, 0xE
_08075830:
strh r2, [r0]
subs r0, 0x2
cmp r0, r1
bge _08075830
movs r0, 0xFF
strb r0, [r5]
movs r0, 0x1
negs r0, r0
strb r0, [r5, 0x1]
ldr r0, [sp]
add r0, r10
ldr r0, [r0]
ldr r1, _08075880 @ =gUnknown_0202F7A4
str r0, [r1]
movs r0, 0x1
mov r1, r12
strb r0, [r1]
movs r0, 0
ldr r1, _08075884 @ =gUnknown_0202F7B0
strb r0, [r1]
str r6, [r7]
ldr r0, _08075888 @ =0x0000ffff
adds r2, r0, 0
ldr r1, _0807588C @ =gUnknown_03004B10
movs r4, 0x7
_08075862:
ldrh r0, [r1]
orrs r0, r2
strh r0, [r1]
adds r1, 0x2
subs r4, 0x1
cmp r4, 0
bge _08075862
mov r1, r9
cmp r1, 0
beq _080758AE
movs r4, 0
ldr r2, _08075890 @ =gUnknown_081C7160
b _08075896
.align 2, 0
_0807587C: .4byte gBattleAnimArgs
_08075880: .4byte gUnknown_0202F7A4
_08075884: .4byte gUnknown_0202F7B0
_08075888: .4byte 0x0000ffff
_0807588C: .4byte gUnknown_03004B10
_08075890: .4byte gUnknown_081C7160
_08075894:
adds r4, 0x1
_08075896:
lsls r0, r4, 1
adds r0, r2
ldrh r0, [r0]
ldr r1, _080758D0 @ =0x0000ffff
cmp r0, r1
beq _080758AE
cmp r8, r0
bne _08075894
ldr r0, _080758D4 @ =gMPlay_BGM
movs r2, 0x80
bl m4aMPlayVolumeControl
_080758AE:
ldr r0, _080758D8 @ =gUnknown_030042C4
movs r1, 0
strh r1, [r0]
ldr r0, _080758DC @ =gUnknown_03004240
strh r1, [r0]
ldr r0, _080758E0 @ =gUnknown_03004200
strh r1, [r0]
ldr r0, _080758E4 @ =gUnknown_03004244
strh r1, [r0]
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080758D0: .4byte 0x0000ffff
_080758D4: .4byte gMPlay_BGM
_080758D8: .4byte gUnknown_030042C4
_080758DC: .4byte gUnknown_03004240
_080758E0: .4byte gUnknown_03004200
_080758E4: .4byte gUnknown_03004244
thumb_func_end move_something
thumb_func_start move_anim_8072740
move_anim_8072740: @ 80758E8
push {r4,lr}
adds r4, r0, 0
bl FreeSpriteOamMatrix
adds r0, r4, 0
bl DestroySprite
ldr r1, _08075904 @ =gUnknown_0202F7B2
ldrb r0, [r1]
subs r0, 0x1
strb r0, [r1]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08075904: .4byte gUnknown_0202F7B2
thumb_func_end move_anim_8072740
thumb_func_start move_anim_task_del
move_anim_task_del: @ 8075908
push {lr}
lsls r0, 24
lsrs r0, 24
bl DestroyTask
ldr r1, _08075920 @ =gUnknown_0202F7B2
ldrb r0, [r1]
subs r0, 0x1
strb r0, [r1]
pop {r0}
bx r0
.align 2, 0
_08075920: .4byte gUnknown_0202F7B2
thumb_func_end move_anim_task_del
thumb_func_start move_anim_related_task_del
move_anim_related_task_del: @ 8075924
push {lr}
lsls r0, 24
lsrs r0, 24
bl DestroyTask
ldr r1, _0807593C @ =gUnknown_0202F7B3
ldrb r0, [r1]
subs r0, 0x1
strb r0, [r1]
pop {r0}
bx r0
.align 2, 0
_0807593C: .4byte gUnknown_0202F7B3
thumb_func_end move_anim_related_task_del
thumb_func_start sub_8075940
sub_8075940: @ 8075940
push {r4,lr}
lsls r0, 16
lsrs r3, r0, 16
movs r2, 0
ldr r4, _08075958 @ =0x0000ffff
ldr r1, _0807595C @ =gUnknown_03004B10
_0807594C:
ldrh r0, [r1]
cmp r0, r4
bne _08075960
strh r3, [r1]
b _08075968
.align 2, 0
_08075958: .4byte 0x0000ffff
_0807595C: .4byte gUnknown_03004B10
_08075960:
adds r1, 0x2
adds r2, 0x1
cmp r2, 0x7
ble _0807594C
_08075968:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8075940
thumb_func_start sub_8075970
sub_8075970: @ 8075970
push {r4,lr}
lsls r0, 16
lsrs r3, r0, 16
movs r2, 0
ldr r0, _0807598C @ =0x0000ffff
adds r4, r0, 0
ldr r1, _08075990 @ =gUnknown_03004B10
_0807597E:
ldrh r0, [r1]
cmp r0, r3
bne _08075994
orrs r0, r4
strh r0, [r1]
b _0807599C
.align 2, 0
_0807598C: .4byte 0x0000ffff
_08075990: .4byte gUnknown_03004B10
_08075994:
adds r1, 0x2
adds r2, 0x1
cmp r2, 0x7
ble _0807597E
_0807599C:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8075970
thumb_func_start move_anim_waiter
move_anim_waiter: @ 80759A4
push {lr}
ldr r2, _080759BC @ =gUnknown_0202F7B0
ldrb r1, [r2]
movs r0, 0
ldrsb r0, [r2, r0]
cmp r0, 0
bgt _080759C8
ldr r0, _080759C0 @ =gUnknown_0202F7AC
ldr r1, _080759C4 @ =sub_80759D0
str r1, [r0]
movs r0, 0
b _080759CA
.align 2, 0
_080759BC: .4byte gUnknown_0202F7B0
_080759C0: .4byte gUnknown_0202F7AC
_080759C4: .4byte sub_80759D0
_080759C8:
subs r0, r1, 0x1
_080759CA:
strb r0, [r2]
pop {r0}
bx r0
thumb_func_end move_anim_waiter
thumb_func_start sub_80759D0
sub_80759D0: @ 80759D0
push {r4,lr}
ldr r4, _08075A00 @ =gUnknown_0837F4B8
_080759D4:
ldr r0, _08075A04 @ =gUnknown_0202F7A4
ldr r0, [r0]
ldrb r0, [r0]
lsls r0, 2
adds r0, r4
ldr r0, [r0]
bl _call_via_r0
ldr r0, _08075A08 @ =gUnknown_0202F7B0
ldrb r0, [r0]
lsls r0, 24
asrs r0, 24
cmp r0, 0
bne _080759F8
ldr r0, _08075A0C @ =gUnknown_0202F7B1
ldrb r0, [r0]
cmp r0, 0
bne _080759D4
_080759F8:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08075A00: .4byte gUnknown_0837F4B8
_08075A04: .4byte gUnknown_0202F7A4
_08075A08: .4byte gUnknown_0202F7B0
_08075A0C: .4byte gUnknown_0202F7B1
thumb_func_end sub_80759D0
thumb_func_start ma00_load_graphics
ma00_load_graphics: @ 8075A10
push {r4-r6,lr}
+1
View File
@@ -105,6 +105,7 @@ SECTIONS {
src/tileset_anim.o(.text);
src/palette.o(.text);
src/sound.o(.text);
src/battle_anim.o(.text);
asm/battle_anim.o(.text);
asm/rom_8077ABC.o(.text);
src/task.o(.text);
+217
View File
@@ -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()
}
*/