summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcamthesaxman <cameronghall@cox.net>2017-12-11 21:22:00 -0600
committercamthesaxman <cameronghall@cox.net>2017-12-11 21:22:00 -0600
commit7d353cd17aa70626a792fdd451046f9603ffabc3 (patch)
tree89e3ccf5e5341ca457a9165d1b693a5d4868354e
parentf2702d17e9a0414f1c3f2ba6cb90e73c69e56311 (diff)
decompile aurora
-rwxr-xr-xasm/aurora.s218
-rw-r--r--ld_script.txt2
-rw-r--r--src/battle/anim/aurora.c72
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);
+}