diff options
| -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;  } | 
