diff options
-rwxr-xr-x | asm/aurora.s | 218 | ||||
-rw-r--r-- | ld_script.txt | 2 | ||||
-rw-r--r-- | src/battle/anim/aurora.c | 72 |
3 files changed, 73 insertions, 219 deletions
diff --git a/asm/aurora.s b/asm/aurora.s deleted file mode 100755 index e5de7c419..000000000 --- a/asm/aurora.s +++ /dev/null @@ -1,218 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - @ aurora - - thumb_func_start sub_80D33B4 -sub_80D33B4: @ 80D33B4 - push {r4-r7,lr} - adds r5, r0, 0 - movs r1, 0x1 - bl sub_80787B0 - ldr r0, _080D33DC @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D33E4 - ldr r1, _080D33E0 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - lsls r0, 16 - lsrs r6, r0, 16 - adds r7, r1, 0 - b _080D33EA - .align 2, 0 -_080D33DC: .4byte gBattleAnimBankAttacker -_080D33E0: .4byte gBattleAnimArgs -_080D33E4: - ldr r0, _080D3440 @ =gBattleAnimArgs - ldrh r6, [r0, 0x4] - adds r7, r0, 0 -_080D33EA: - ldrh r0, [r7, 0x8] - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x30] - ldr r4, _080D3444 @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - adds r0, r6 - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x22] - strh r0, [r5, 0x34] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r7, [r7, 0x6] - adds r0, r7 - strh r0, [r5, 0x36] - adds r0, r5, 0 - bl obj_translate_based_on_private_1_2_3_4 - ldr r0, _080D3448 @ =sub_80D344C - str r0, [r5, 0x1C] - adds r2, r5, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r1, [r5, 0x1C] - adds r0, r5, 0 - bl _call_via_r1 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D3440: .4byte gBattleAnimArgs -_080D3444: .4byte gBattleAnimBankTarget -_080D3448: .4byte sub_80D344C - thumb_func_end sub_80D33B4 - - thumb_func_start sub_80D344C -sub_80D344C: @ 80D344C - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080D3488 @ =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, _080D348C @ =0x0000ffff - cmp r1, r0 - bne _080D346E - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] -_080D346E: - adds r0, r4, 0 - bl sub_8078B5C - lsls r0, 24 - cmp r0, 0 - beq _080D3480 - adds r0, r4, 0 - bl move_anim_8072740 -_080D3480: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D3488: .4byte gBattleAnimArgs -_080D348C: .4byte 0x0000ffff - thumb_func_end sub_80D344C - - thumb_func_start sub_80D3490 -sub_80D3490: @ 80D3490 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080D34C4 @ =gTasks - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - adds r4, r1 - ldr r0, _080D34C8 @ =gBattleAnimArgs - ldrh r0, [r0] - strh r0, [r4, 0x8] - ldr r0, _080D34CC @ =0x0000279c - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 20 - movs r1, 0x80 - lsls r1, 1 - adds r0, r1 - strh r0, [r4, 0xC] - ldr r0, _080D34D0 @ =sub_80D34D4 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D34C4: .4byte gTasks -_080D34C8: .4byte gBattleAnimArgs -_080D34CC: .4byte 0x0000279c -_080D34D0: .4byte sub_80D34D4 - thumb_func_end sub_80D3490 - - thumb_func_start sub_80D34D4 -sub_80D34D4: @ 80D34D4 - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080D354C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r2, r0, r1 - ldrh r0, [r2, 0x1C] - adds r0, 0x1 - strh r0, [r2, 0x1C] - lsls r0, 16 - asrs r0, 16 - mov r12, r1 - cmp r0, 0x3 - bne _080D3526 - movs r0, 0 - strh r0, [r2, 0x1C] - ldrh r0, [r2, 0xC] - adds r0, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - ldr r1, _080D3550 @ =gPlttBufferFaded - lsls r0, r5, 1 - adds r0, r1 - ldrh r6, [r0] - adds r7, r1, 0 - adds r3, r0, 0x2 - movs r1, 0x6 - adds r2, r0, 0 -_080D3510: - ldrh r0, [r3] - strh r0, [r2] - adds r3, 0x2 - adds r2, 0x2 - subs r1, 0x1 - cmp r1, 0 - bge _080D3510 - adds r0, r5, 0x7 - lsls r0, 1 - adds r0, r7 - strh r6, [r0] -_080D3526: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - add r0, r12 - ldrh r1, [r0, 0x1E] - adds r1, 0x1 - strh r1, [r0, 0x1E] - lsls r1, 16 - asrs r1, 16 - movs r2, 0x8 - ldrsh r0, [r0, r2] - cmp r1, r0 - bne _080D3546 - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080D3546: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D354C: .4byte gTasks -_080D3550: .4byte gPlttBufferFaded - thumb_func_end sub_80D34D4 - - .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index 6664a6f8d..be11e6411 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -274,7 +274,7 @@ SECTIONS { asm/fury_cutter_count.o(.text); asm/rain.o(.text); asm/bubble.o(.text); - asm/aurora.o(.text); + src/battle/anim/aurora.o(.text); asm/liquid_ball.o(.text); asm/water.o(.text); asm/fire.o(.text); diff --git a/src/battle/anim/aurora.c b/src/battle/anim/aurora.c new file mode 100644 index 000000000..1ca5e649f --- /dev/null +++ b/src/battle/anim/aurora.c @@ -0,0 +1,72 @@ +#include "global.h" +#include "battle_anim.h" +#include "palette.h" +#include "rom_8077ABC.h" +#include "sprite.h" +#include "task.h" + +extern s16 gBattleAnimArgs[8]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80D344C(struct Sprite *); +static void sub_80D34D4(u8); + +void sub_80D33B4(struct Sprite *sprite) +{ + s16 r6; + + sub_80787B0(sprite, 1); + if (GetBankSide(gBattleAnimBankAttacker) != 0) + r6 = -gBattleAnimArgs[2]; + else + r6 = gBattleAnimArgs[2]; + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = sub_8077ABC(gBattleAnimBankTarget, 2) + r6; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = sub_8077ABC(gBattleAnimBankTarget, 3) + gBattleAnimArgs[3]; + obj_translate_based_on_private_1_2_3_4(sprite); + sprite->callback = sub_80D344C; + sprite->affineAnimPaused = TRUE; + sprite->callback(sprite); +} + +static void sub_80D344C(struct Sprite *sprite) +{ + if ((u16)gBattleAnimArgs[7] == 0xFFFF) + { + StartSpriteAnim(sprite, 1); + sprite->affineAnimPaused = FALSE; + } + if (sub_8078B5C(sprite) != 0) + move_anim_8072740(sprite); +} + +void sub_80D3490(u8 taskId) +{ + gTasks[taskId].data[0] = gBattleAnimArgs[0]; + gTasks[taskId].data[2] = 0x100 + IndexOfSpritePaletteTag(0x279C) * 16; + gTasks[taskId].func = sub_80D34D4; +} + +static void sub_80D34D4(u8 taskId) +{ + gTasks[taskId].data[10]++; + if (gTasks[taskId].data[10] == 3) + { + u16 r5; + u16 r6; + s32 i; + + gTasks[taskId].data[10] = 0; + r5 = gTasks[taskId].data[2] + 1; + r6 = gPlttBufferFaded[r5]; + for (i = 1; i < 8; i++) + gPlttBufferFaded[r5 + i - 1] = gPlttBufferFaded[r5 + i]; + gPlttBufferFaded[r5 + 7] = r6; + } + gTasks[taskId].data[11]++; + if (gTasks[taskId].data[11] == gTasks[taskId].data[0]) + DestroyAnimVisualTask(taskId); +} |