summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-11-30 08:35:33 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2017-11-30 08:35:33 -0500
commitf3ad97ad13a8d7e46609306d6c44805350280a5c (patch)
tree5e7920896a73d4223fafecea9084e37bb3f3d1af
parent6f84853b0842387197848af7de08ef6c980271f3 (diff)
through sub_800D550
-rw-r--r--asm/link_rfu.s57
-rw-r--r--src/link_rfu.c30
2 files changed, 28 insertions, 59 deletions
diff --git a/asm/link_rfu.s b/asm/link_rfu.s
index 47e3526e7..cce8bee0f 100644
--- a/asm/link_rfu.s
+++ b/asm/link_rfu.s
@@ -5,63 +5,6 @@
.text
- thumb_func_start sub_800D52C
-sub_800D52C: @ 800D52C
- push {lr}
- ldr r1, =gUnknown_03004140
- str r0, [r1, 0x44]
- ldr r0, =sub_800CEB0
- bl rfu_setMSCCallback
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_800D52C
-
- thumb_func_start sub_800D544
-sub_800D544: @ 800D544
- ldr r1, =gUnknown_03004140
- str r0, [r1, 0x40]
- bx lr
- .pool
- thumb_func_end sub_800D544
-
- thumb_func_start sub_800D550
-sub_800D550: @ 800D550
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 16
- lsrs r5, r1, 16
- ldr r0, =gUnknown_03004140
- ldrb r1, [r0, 0x9]
- adds r3, r0, 0
- cmp r1, 0
- beq _0800D578
- cmp r4, 0
- bne _0800D578
- adds r0, 0x30
- ldrb r0, [r0]
- cmp r0, 0
- beq _0800D578
- movs r0, 0x5
- b _0800D588
- .pool
-_0800D578:
- ldr r2, =0x04000208
- ldrh r1, [r2]
- movs r0, 0
- strh r0, [r2]
- strb r4, [r3, 0x9]
- strh r5, [r3, 0x32]
- strh r1, [r2]
- movs r0, 0
-_0800D588:
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_800D550
-
thumb_func_start sub_800D594
sub_800D594: @ 800D594
push {lr}
diff --git a/src/link_rfu.c b/src/link_rfu.c
index e47a42bb4..e3630347a 100644
--- a/src/link_rfu.c
+++ b/src/link_rfu.c
@@ -26,7 +26,7 @@ EWRAM_DATA struct UnkLinkRfuStruct_02022B2C gUnknown_02022B2C = {};
static void sub_800C000(void);
static void sub_800C7B4(u16 r8, u16 r6);
static void sub_800C744(u32 a0);
-void sub_800CEB0(u16 r6);
+static void sub_800CEB0(u16 r6);
static void sub_800CF34(void);
static void sub_800D158(void);
static void sub_800D20C(void);
@@ -977,7 +977,7 @@ static void sub_800C7B4(u16 r8, u16 r6)
}
}
-void sub_800CEB0(u16 r6)
+static void sub_800CEB0(u16 r6)
{
u8 r7;
u8 sp0;
@@ -1305,3 +1305,29 @@ static void sub_800D434(void)
}
}
}
+
+void sub_800D52C(void (*func)(u16))
+{
+ gUnknown_03004140.unk_44 = func;
+ rfu_setMSCCallback(sub_800CEB0);
+}
+
+void sub_800D544(void (*func)(u8, u8))
+{
+ gUnknown_03004140.unk_40 = func;
+}
+
+u8 sub_800D550(u8 a0, u16 a1)
+{
+ u16 imeBak;
+ if (gUnknown_03004140.unk_09 && a0 == 0 && gUnknown_03004140.unk_30)
+ {
+ return 5;
+ }
+ imeBak = REG_IME;
+ REG_IME = 0;
+ gUnknown_03004140.unk_09 = a0;
+ gUnknown_03004140.unk_32 = a1;
+ REG_IME = imeBak;
+ return 0;
+}