summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcamthesaxman <cameronghall@cox.net>2017-05-10 22:12:56 -0500
committercamthesaxman <cameronghall@cox.net>2017-05-10 22:12:56 -0500
commit00716b43945e530c5b58322c778c2c25d238e950 (patch)
tree2f0fdd3aa66694a8e9fe5bc5a29c2979b7eff93a
parent6f823c45c68df74b303a0533933db081746c4bee (diff)
decompile more
-rw-r--r--asm/battle_2.s121
-rw-r--r--src/battle_2.c61
2 files changed, 61 insertions, 121 deletions
diff --git a/asm/battle_2.s b/asm/battle_2.s
index 22ede0c37..f21399d8c 100644
--- a/asm/battle_2.s
+++ b/asm/battle_2.s
@@ -6,127 +6,6 @@
.text
- thumb_func_start sub_800F808
-sub_800F808: @ 800F808
- push {lr}
- bl AnimateSprites
- bl BuildOamBuffer
- ldr r0, _0800F824 @ =gUnknown_03004210
- bl sub_800374C
- bl UpdatePaletteFade
- bl RunTasks
- pop {r0}
- bx r0
- .align 2, 0
-_0800F824: .4byte gUnknown_03004210
- thumb_func_end sub_800F808
-
- thumb_func_start sub_800F828
-sub_800F828: @ 800F828
- movs r1, 0
- strh r1, [r0, 0x2E]
- ldr r1, _0800F834 @ =sub_800F838
- str r1, [r0, 0x1C]
- bx lr
- .align 2, 0
-_0800F834: .4byte sub_800F838
- thumb_func_end sub_800F828
-
- thumb_func_start sub_800F838
-sub_800F838: @ 800F838
- push {r4,r5,lr}
- adds r3, r0, 0
- ldr r5, _0800F850 @ =0x02000000
- movs r0, 0x2E
- ldrsh r1, [r3, r0]
- cmp r1, 0x1
- beq _0800F86C
- cmp r1, 0x1
- bgt _0800F854
- cmp r1, 0
- beq _0800F85A
- b _0800F8DC
- .align 2, 0
-_0800F850: .4byte 0x02000000
-_0800F854:
- cmp r1, 0x2
- beq _0800F8C8
- b _0800F8DC
-_0800F85A:
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- strh r1, [r3, 0x30]
- ldr r0, _0800F8C4 @ =0x00000281
- strh r0, [r3, 0x32]
- strh r1, [r3, 0x34]
- movs r0, 0x1
- strh r0, [r3, 0x36]
-_0800F86C:
- ldrh r0, [r3, 0x36]
- subs r0, 0x1
- strh r0, [r3, 0x36]
- lsls r0, 16
- cmp r0, 0
- bne _0800F8DC
- movs r0, 0x2
- strh r0, [r3, 0x36]
- movs r4, 0x30
- ldrsh r2, [r3, r4]
- movs r0, 0x34
- ldrsh r1, [r3, r0]
- lsls r1, 5
- adds r2, r1
- movs r4, 0x32
- ldrsh r0, [r3, r4]
- subs r0, r1
- movs r4, 0x3D
- lsls r0, 1
- adds r0, r5
- lsls r2, 1
- adds r2, r5
- movs r1, 0x1C
-_0800F89A:
- strh r4, [r2]
- strh r4, [r0]
- adds r0, 0x4
- adds r2, 0x4
- subs r1, 0x2
- cmp r1, 0
- bge _0800F89A
- ldrh r0, [r3, 0x34]
- adds r0, 0x1
- strh r0, [r3, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x15
- bne _0800F8DC
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- movs r0, 0x20
- strh r0, [r3, 0x30]
- b _0800F8DC
- .align 2, 0
-_0800F8C4: .4byte 0x00000281
-_0800F8C8:
- ldrh r0, [r3, 0x30]
- subs r0, 0x1
- strh r0, [r3, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- bne _0800F8DC
- ldr r0, _0800F8E4 @ =sub_800E7C4
- bl SetMainCallback2
-_0800F8DC:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800F8E4: .4byte sub_800E7C4
- thumb_func_end sub_800F838
-
thumb_func_start sub_800F8E8
sub_800F8E8: @ 800F8E8
push {r4-r7,lr}
diff --git a/src/battle_2.c b/src/battle_2.c
index 019d463fd..9a7011e35 100644
--- a/src/battle_2.c
+++ b/src/battle_2.c
@@ -109,6 +109,7 @@ void sub_800EC9C(void);
void sub_800F104(void);
void sub_800F298(void);
void sub_800F808(void);
+void sub_800F838(struct Sprite *);
void sub_800F8E8();
void sub_800FCFC(void);
void sub_8010824(void);
@@ -816,3 +817,63 @@ void sub_800F298(void)
break;
}
}
+
+void sub_800F808(void)
+{
+ AnimateSprites();
+ BuildOamBuffer();
+ sub_800374C(&gUnknown_03004210);
+ UpdatePaletteFade();
+ RunTasks();
+}
+
+void sub_800F828(struct Sprite *sprite)
+{
+ sprite->data0 = 0;
+ sprite->callback = sub_800F838;
+}
+
+void sub_800F838(struct Sprite *sprite)
+{
+ u16 *arr = (u16 *)ewram;
+
+ switch (sprite->data0)
+ {
+ case 0:
+ sprite->data0++;
+ sprite->data1 = 0;
+ sprite->data2 = 0x281;
+ sprite->data3 = 0;
+ sprite->data4 = 1;
+ // fall through
+ case 1:
+ sprite->data4--;
+ if (sprite->data4 == 0)
+ {
+ s32 i;
+ s32 r2;
+ s32 r0;
+
+ sprite->data4 = 2;
+ r2 = sprite->data1 + sprite->data3 * 32;
+ r0 = sprite->data2 - sprite->data3 * 32;
+ for (i = 0; i < 29; i += 2)
+ {
+ arr[r2 + i] = 0x3D;
+ arr[r0 + i] = 0x3D;
+ }
+ sprite->data3++;
+ if (sprite->data3 == 21)
+ {
+ sprite->data0++;
+ sprite->data1 = 32;
+ }
+ }
+ break;
+ case 2:
+ sprite->data1--;
+ if (sprite->data1 == 20)
+ SetMainCallback2(sub_800E7C4);
+ break;
+ }
+} \ No newline at end of file