summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-11-18 23:30:23 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2017-11-18 23:30:23 -0500
commitbf06edfcd36666a38aae6eda515a5cfe24e2a851 (patch)
treeee77e6d5270f85d7a1f61624c795427a0edcb77b
parent155bb03f469d6183fc8bac015da35d563b3bea45 (diff)
sub_800C27C
-rw-r--r--asm/link_rfu.s115
-rw-r--r--include/link_rfu.h4
-rw-r--r--src/link_rfu.c82
3 files changed, 85 insertions, 116 deletions
diff --git a/asm/link_rfu.s b/asm/link_rfu.s
index 5354304ee..00eaf23de 100644
--- a/asm/link_rfu.s
+++ b/asm/link_rfu.s
@@ -5,121 +5,6 @@
.text
- thumb_func_start sub_800C27C
-sub_800C27C: @ 800C27C
- push {r4,r5,lr}
- lsls r0, 24
- movs r2, 0
- ldr r1, =gUnknown_03004140
- strb r2, [r1, 0x7]
- adds r5, r1, 0
- cmp r0, 0
- beq _0800C29C
- bl sub_800C000
- movs r0, 0x17
- strb r0, [r5, 0x4]
- b _0800C366
- .pool
-_0800C29C:
- ldrb r0, [r5, 0x4]
- subs r0, 0x5
- cmp r0, 0xD
- bhi _0800C352
- lsls r0, 2
- ldr r1, =_0800C2B4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0800C2B4:
- .4byte _0800C2EC
- .4byte _0800C2F8
- .4byte _0800C2F8
- .4byte _0800C358
- .4byte _0800C302
- .4byte _0800C30C
- .4byte _0800C30C
- .4byte _0800C316
- .4byte _0800C320
- .4byte _0800C320
- .4byte _0800C358
- .4byte _0800C326
- .4byte _0800C34C
- .4byte _0800C34C
-_0800C2EC:
- movs r1, 0
- movs r0, 0x8
- strb r0, [r5, 0x4]
- strb r1, [r5, 0x5]
- movs r2, 0x13
- b _0800C358
-_0800C2F8:
- movs r0, 0x7
- strb r0, [r5, 0x4]
- movs r0, 0x8
- strb r0, [r5, 0x5]
- b _0800C358
-_0800C302:
- movs r0, 0
- strb r0, [r5, 0x5]
- strb r0, [r5, 0x4]
- movs r2, 0x21
- b _0800C358
-_0800C30C:
- movs r1, 0
- movs r0, 0xB
- strb r0, [r5, 0x4]
- strb r1, [r5, 0x5]
- b _0800C358
-_0800C316:
- movs r0, 0
- strb r0, [r5, 0x5]
- strb r0, [r5, 0x4]
- movs r2, 0x23
- b _0800C358
-_0800C320:
- movs r0, 0xE
- strb r0, [r5, 0x4]
- b _0800C358
-_0800C326:
- ldrb r0, [r5, 0x11]
- strb r0, [r5, 0x4]
- ldrb r0, [r5, 0x12]
- strb r0, [r5, 0x5]
- ldr r4, =gUnknown_03007890
- ldr r0, [r4]
- ldrb r0, [r0, 0x3]
- bl sub_800D334
- ldr r0, [r4]
- ldrb r0, [r0, 0x3]
- strh r0, [r5, 0x14]
- movs r0, 0x33
- movs r1, 0x1
- bl sub_800D30C
- b _0800C366
- .pool
-_0800C34C:
- movs r0, 0x12
- strb r0, [r5, 0x4]
- b _0800C358
-_0800C352:
- strb r2, [r5, 0x5]
- strb r2, [r5, 0x4]
- movs r2, 0x43
-_0800C358:
- ldrb r0, [r5, 0x4]
- cmp r0, 0
- bne _0800C366
- adds r0, r2, 0
- movs r1, 0
- bl sub_800D30C
-_0800C366:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_800C27C
-
thumb_func_start sub_800C36C
sub_800C36C: @ 800C36C
push {r4-r7,lr}
diff --git a/include/link_rfu.h b/include/link_rfu.h
index 64510c1c6..ce9953450 100644
--- a/include/link_rfu.h
+++ b/include/link_rfu.h
@@ -48,7 +48,9 @@ struct UnkRfuStruct_1 {
u8 unk_0d;
u8 filler_0e[2];
u8 unk_10;
- u8 filler_11[3];
+ u8 unk_11;
+ u8 unk_12;
+ // aligned
u16 unk_14;
u8 filler_16[2];
u16 unk_18;
diff --git a/src/link_rfu.c b/src/link_rfu.c
index 32365debb..4f98d945f 100644
--- a/src/link_rfu.c
+++ b/src/link_rfu.c
@@ -266,3 +266,85 @@ void sub_800C210(u8 a0)
sub_800D30C(0x33, i);
}
}
+
+void sub_800C27C(bool8 a0)
+{
+ u8 r2;
+
+ r2 = 0;
+ gUnknown_03004140.unk_07 = 0;
+ if (a0)
+ {
+ sub_800C000();
+ gUnknown_03004140.unk_04 = 23;
+ }
+ else
+ {
+ switch (gUnknown_03004140.unk_04)
+ {
+ case 5:
+ gUnknown_03004140.unk_04 = 8;
+ gUnknown_03004140.unk_05 = 0;
+ r2 = 0x13;
+ break;
+ case 6:
+ gUnknown_03004140.unk_04 = 7;
+ gUnknown_03004140.unk_05 = 8;
+ break;
+ case 7:
+ gUnknown_03004140.unk_04 = 7;
+ gUnknown_03004140.unk_05 = 8;
+ break;
+ case 8:
+ break;
+ case 9:
+ gUnknown_03004140.unk_05 = 0;
+ gUnknown_03004140.unk_04 = 0;
+ r2 = 0x21;
+ break;
+ case 10:
+ gUnknown_03004140.unk_04 = 11;
+ gUnknown_03004140.unk_05 = 0;
+ break;
+ case 11:
+ gUnknown_03004140.unk_04 = 11;
+ gUnknown_03004140.unk_05 = 0;
+ break;
+ case 12:
+ gUnknown_03004140.unk_05 = 0;
+ gUnknown_03004140.unk_04 = 0;
+ r2 = 0x23;
+ break;
+ case 13:
+ gUnknown_03004140.unk_04 = 14;
+ break;
+ case 14:
+ gUnknown_03004140.unk_04 = 14;
+ break;
+ case 15:
+ break;
+ case 16:
+ gUnknown_03004140.unk_04 = gUnknown_03004140.unk_11;
+ gUnknown_03004140.unk_05 = gUnknown_03004140.unk_12;
+ sub_800D334(gUnknown_03007890->unk_03);
+ gUnknown_03004140.unk_14 = gUnknown_03007890->unk_03;
+ sub_800D30C(0x33, 0x01);
+ return;
+ case 17:
+ gUnknown_03004140.unk_04 = 18;
+ break;
+ case 18:
+ gUnknown_03004140.unk_04 = 18;
+ break;
+ default:
+ gUnknown_03004140.unk_05 = 0;
+ gUnknown_03004140.unk_04 = 0;
+ r2 = 0x43;
+ break;
+ }
+ if (gUnknown_03004140.unk_04 == 0)
+ {
+ sub_800D30C(r2, 0);
+ }
+ }
+}