diff options
author | camthesaxman <cameronghall@cox.net> | 2017-12-11 22:53:08 -0600 |
---|---|---|
committer | camthesaxman <cameronghall@cox.net> | 2017-12-11 22:53:08 -0600 |
commit | c5be44afe7173c2a2b7be9b370ca404c8df18b2e (patch) | |
tree | c7ebaf2f18db50749640a86f7356df0b3f408bef | |
parent | 7c939bcdb9b9eeac3e544250185e44904d70bbb8 (diff) |
decompile struggle, swipe, and uproar
-rwxr-xr-x | asm/struggle.s | 111 | ||||
-rwxr-xr-x | asm/swipe.s | 50 | ||||
-rwxr-xr-x | asm/uproar.s | 64 | ||||
-rw-r--r-- | include/rom_8077ABC.h | 4 | ||||
-rw-r--r-- | ld_script.txt | 6 | ||||
-rw-r--r-- | src/battle/anim/struggle.c | 52 | ||||
-rw-r--r-- | src/battle/anim/swipe.c | 20 | ||||
-rw-r--r-- | src/battle/anim/uproar.c | 25 | ||||
-rw-r--r-- | src/rom_8077ABC.c | 4 |
9 files changed, 104 insertions, 232 deletions
diff --git a/asm/struggle.s b/asm/struggle.s deleted file mode 100755 index 2d618ed8f..000000000 --- a/asm/struggle.s +++ /dev/null @@ -1,111 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_80D2C38 -sub_80D2C38: @ 80D2C38 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r1, _080D2C50 @ =gBattleAnimArgs - movs r2, 0x4 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080D2C54 - adds r0, r5, 0 - bl move_anim_8072740 - b _080D2CB8 - .align 2, 0 -_080D2C50: .4byte gBattleAnimArgs -_080D2C54: - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080D2C64 - ldr r4, _080D2C60 @ =gBattleAnimBankAttacker - b _080D2C66 - .align 2, 0 -_080D2C60: .4byte gBattleAnimBankAttacker -_080D2C64: - ldr r4, _080D2C94 @ =gBattleAnimBankTarget -_080D2C66: - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r0, _080D2C98 @ =gBattleAnimArgs - movs r2, 0x2 - ldrsh r1, [r0, r2] - adds r2, r0, 0 - cmp r1, 0 - bne _080D2C9C - ldrh r0, [r5, 0x20] - adds r0, 0x20 - b _080D2CA0 - .align 2, 0 -_080D2C94: .4byte gBattleAnimBankTarget -_080D2C98: .4byte gBattleAnimArgs -_080D2C9C: - ldrh r0, [r5, 0x20] - subs r0, 0x20 -_080D2CA0: - strh r0, [r5, 0x20] - ldrh r0, [r2, 0x4] - strh r0, [r5, 0x2E] - ldrh r1, [r2, 0x2] - strh r1, [r5, 0x30] - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl StartSpriteAnim - ldr r0, _080D2CC0 @ =sub_80D2CC4 - str r0, [r5, 0x1C] -_080D2CB8: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D2CC0: .4byte sub_80D2CC4 - thumb_func_end sub_80D2C38 - - thumb_func_start sub_80D2CC4 -sub_80D2CC4: @ 80D2CC4 - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080D2CF4 - ldrh r0, [r2, 0x2E] - subs r0, 0x1 - strh r0, [r2, 0x2E] - lsls r0, 16 - cmp r0, 0 - beq _080D2CEE - ldrh r1, [r2, 0x30] - lsls r1, 24 - lsrs r1, 24 - adds r0, r2, 0 - bl StartSpriteAnim - b _080D2CF4 -_080D2CEE: - adds r0, r2, 0 - bl move_anim_8072740 -_080D2CF4: - pop {r0} - bx r0 - thumb_func_end sub_80D2CC4 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/swipe.s b/asm/swipe.s deleted file mode 100755 index 7f5284d7c..000000000 --- a/asm/swipe.s +++ /dev/null @@ -1,50 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_80D2BE8 -sub_80D2BE8: @ 80D2BE8 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D2C1C - ldr r1, _080D2C18 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - ldrh r0, [r1, 0x2] - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - ldrb r1, [r1, 0x4] - adds r0, r4, 0 - bl StartSpriteAnim - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080D2C30 - .align 2, 0 -_080D2C18: .4byte gBattleAnimArgs -_080D2C1C: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080D2C30 - adds r0, r4, 0 - bl move_anim_8072740 -_080D2C30: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D2BE8 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/uproar.s b/asm/uproar.s deleted file mode 100755 index 04f428d4e..000000000 --- a/asm/uproar.s +++ /dev/null @@ -1,64 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_80D2CF8 -sub_80D2CF8: @ 80D2CF8 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _080D2D2C @ =gBattleAnimArgs - ldrb r0, [r0] - bl GetAnimBankSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - ldr r0, _080D2D30 @ =gTasks - adds r4, r0 - ldr r2, _080D2D34 @ =gUnknown_083D7CA8 - adds r0, r4, 0 - bl sub_80798F4 - ldr r0, _080D2D38 @ =sub_80D2D3C - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D2D2C: .4byte gBattleAnimArgs -_080D2D30: .4byte gTasks -_080D2D34: .4byte gUnknown_083D7CA8 -_080D2D38: .4byte sub_80D2D3C - thumb_func_end sub_80D2CF8 - - thumb_func_start sub_80D2D3C -sub_80D2D3C: @ 80D2D3C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080D2D64 @ =gTasks - adds r0, r1 - bl sub_807992C - lsls r0, 24 - cmp r0, 0 - bne _080D2D5C - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080D2D5C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D2D64: .4byte gTasks - thumb_func_end sub_80D2D3C - - .align 2, 0 @ Don't pad with nop. diff --git a/include/rom_8077ABC.h b/include/rom_8077ABC.h index cd89c92a2..2a2947968 100644 --- a/include/rom_8077ABC.h +++ b/include/rom_8077ABC.h @@ -54,7 +54,7 @@ void sub_80797EC(struct Task *task); void sub_8079814(u8 taskId); void sub_8079A64(u8 sprite); u16 sub_8079B10(u8 sprite); -void sub_8079BF4(s16 *bottom, s16 *top, void *ptr); +void sub_8079BF4(s16 *bottom, s16 *top, const void *ptr); void *sub_8079BFC(s16 bottom, s16 top); void sub_8079E24(); u8 sub_8079E90(u8 slot); @@ -93,7 +93,7 @@ u32 sub_80792C0(u8 a1, u8 a2, u8 a3, u8 a4); s16 duplicate_obj_of_side_rel2move_in_transparent_mode(u8 a1); void obj_delete_but_dont_free_vram(struct Sprite *sprite); void sub_8079108(u16 a1, bool8 a2); -void sub_80798F4(struct Task *task, u8 a2, void *a3); +void sub_80798F4(struct Task *task, u8 a2, const void *a3); bool8 sub_807992C(struct Task *task); u8 sub_8077FC0(u8 slot); void move_anim_8074EE0(struct Sprite *sprite); diff --git a/ld_script.txt b/ld_script.txt index c6cc87245..6353fceec 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -265,9 +265,9 @@ SECTIONS { src/battle/anim/angel.o(.text); src/battle/anim/angel_kiss.o(.text); src/battle/anim/devil.o(.text); - asm/swipe.o(.text); - asm/struggle.o(.text); - asm/uproar.o(.text); + src/battle/anim/swipe.o(.text); + src/battle/anim/struggle.o(.text); + src/battle/anim/uproar.o(.text); asm/noise.o(.text); asm/note_spin.o(.text); asm/guard.o(.text); diff --git a/src/battle/anim/struggle.c b/src/battle/anim/struggle.c new file mode 100644 index 000000000..63a01a79e --- /dev/null +++ b/src/battle/anim/struggle.c @@ -0,0 +1,52 @@ +#include "global.h" +#include "battle_anim.h" +#include "rom_8077ABC.h" +#include "sprite.h" + +extern s16 gBattleAnimArgs[8]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80D2CC4(struct Sprite *); + +void sub_80D2C38(struct Sprite *sprite) +{ + if (gBattleAnimArgs[2] == 0) + { + move_anim_8072740(sprite); + } + else + { + if (gBattleAnimArgs[0] == 0) + { + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3); + } + else + { + sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 3); + } + + if (gBattleAnimArgs[1] == 0) + sprite->pos1.x += 32; + else + sprite->pos1.x -= 32; + + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = gBattleAnimArgs[1]; + StartSpriteAnim(sprite, sprite->data[1]); + sprite->callback = sub_80D2CC4; + } +} + +static void sub_80D2CC4(struct Sprite *sprite) +{ + if (sprite->animEnded) + { + if (--sprite->data[0] != 0) + StartSpriteAnim(sprite, sprite->data[1]); + else + move_anim_8072740(sprite); + } +} diff --git a/src/battle/anim/swipe.c b/src/battle/anim/swipe.c new file mode 100644 index 000000000..15bee06ee --- /dev/null +++ b/src/battle/anim/swipe.c @@ -0,0 +1,20 @@ +#include "global.h" +#include "battle_anim.h" +#include "sprite.h" + +extern s16 gBattleAnimArgs[8]; + +void sub_80D2BE8(struct Sprite *sprite) +{ + if (sprite->data[0] == 0) + { + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + StartSpriteAnim(sprite, gBattleAnimArgs[2]); + sprite->data[0]++; + } + else if (sprite->animEnded) + { + move_anim_8072740(sprite); + } +} diff --git a/src/battle/anim/uproar.c b/src/battle/anim/uproar.c new file mode 100644 index 000000000..03cc65bc0 --- /dev/null +++ b/src/battle/anim/uproar.c @@ -0,0 +1,25 @@ +#include "global.h" +#include "battle_anim.h" +#include "rom_8077ABC.h" +#include "sprite.h" +#include "task.h" + +extern s16 gBattleAnimArgs[8]; + +extern const union AffineAnimCmd gUnknown_083D7CA8[]; + +void sub_80D2D3C(u8); + +void sub_80D2CF8(u8 taskId) +{ + u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]); + + sub_80798F4(&gTasks[taskId], spriteId, gUnknown_083D7CA8); + gTasks[taskId].func = sub_80D2D3C; +} + +void sub_80D2D3C(u8 taskId) +{ + if (!sub_807992C(&gTasks[taskId])) + DestroyAnimVisualTask(taskId); +} diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c index 42f360b69..8fea7f710 100644 --- a/src/rom_8077ABC.c +++ b/src/rom_8077ABC.c @@ -1435,7 +1435,7 @@ void sub_80798AC(u8 task) { sub_80797EC(&gTasks[task]); } -void sub_80798F4(struct Task *task, u8 a2, void *a3) { +void sub_80798F4(struct Task *task, u8 a2, const void *a3) { task->data[7] = 0; task->data[8] = 0; task->data[9] = 0; @@ -1564,7 +1564,7 @@ u16 sub_8079B10(u8 sprite) { return 0x40; } -void sub_8079BF4(s16 *bottom, s16 *top, void *ptr) { +void sub_8079BF4(s16 *bottom, s16 *top, const void *ptr) { *bottom = ((intptr_t) ptr) & 0xffff; *top = (((intptr_t) ptr) >> 16) & 0xffff; } |