summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/link_rfu.s173
-rw-r--r--src/link_rfu.c62
2 files changed, 62 insertions, 173 deletions
diff --git a/asm/link_rfu.s b/asm/link_rfu.s
index d7389616e..e1bf3bbc9 100644
--- a/asm/link_rfu.s
+++ b/asm/link_rfu.s
@@ -5,179 +5,6 @@
.text
- thumb_func_start sub_80110B8
-sub_80110B8: @ 80110B8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- mov r9, r0
- bl sub_800F7DC
- ldrb r1, [r0, 0xA]
- movs r0, 0x7F
- ands r0, r1
- cmp r0, 0x45
- bne _0801114C
- movs r5, 0
- movs r7, 0
- ldr r3, =gUnknown_03005000
- ldr r1, =0x00000ce2
- adds r0, r3, r1
- ldr r2, =0x00000ce3
- adds r1, r3, r2
- ldrb r2, [r0]
- ldrb r0, [r1]
- adds r1, r0, 0
- eors r1, r2
- mov r8, r1
- movs r4, 0
- movs r6, 0x1
- ldr r2, =gLinkPlayers
- mov r12, r2
- ldr r0, =0x00000cde
- adds r0, r3
- mov r10, r0
- mov r3, r12
- adds r3, 0x4
-_080110FC:
- mov r0, r8
- asrs r0, r4
- ands r0, r6
- cmp r0, 0
- beq _0801113C
- mov r1, r10
- adds r0, r4, r1
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- mov r2, r12
- adds r1, r0, r2
- ldrb r1, [r1, 0x13]
- adds r2, r6, 0
- ands r2, r1
- lsls r2, 3
- adds r0, r3
- ldr r1, [r0]
- movs r0, 0x7
- ands r1, r0
- movs r0, 0x80
- orrs r1, r0
- orrs r2, r1
- lsls r0, r5, 3
- lsls r2, r0
- orrs r7, r2
- adds r5, 0x1
- mov r0, r9
- subs r0, 0x1
- cmp r5, r0
- beq _08011142
-_0801113C:
- adds r4, 0x1
- cmp r4, 0x3
- ble _080110FC
-_08011142:
- movs r0, 0x45
- adds r1, r7, 0
- movs r2, 0
- bl sub_8011090
-_0801114C:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80110B8
-
- thumb_func_start sub_8011170
-sub_8011170: @ 8011170
- push {r4,lr}
- adds r4, r0, 0
- ldr r2, =gUnknown_03005000
- adds r3, r2, 0
- adds r3, 0xEE
- ldrb r0, [r3]
- cmp r0, 0
- bne _08011192
- ldr r1, =gUnknown_03004140
- ldrh r0, [r1, 0x14]
- strh r0, [r2, 0x10]
- ldrh r0, [r1, 0x16]
- strh r0, [r2, 0x12]
- strh r4, [r2, 0xA]
- ldrb r0, [r3]
- movs r0, 0x1
- strb r0, [r3]
-_08011192:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8011170
-
- thumb_func_start sub_80111A0
-sub_80111A0: @ 80111A0
- ldr r0, =gUnknown_03005000
- adds r0, 0xEE
- ldrb r1, [r0]
- movs r1, 0
- strb r1, [r0]
- bx lr
- .pool
- thumb_func_end sub_80111A0
-
- thumb_func_start sub_80111B0
-sub_80111B0: @ 80111B0
- push {lr}
- adds r2, r0, 0
- cmp r2, 0
- bne _080111C8
- ldr r0, =gUnknown_03005000
- adds r0, 0xEE
- ldrb r1, [r0]
- strb r2, [r0]
- b _080111D2
- .pool
-_080111C8:
- ldr r0, =gUnknown_03005000
- adds r0, 0xEE
- ldrb r1, [r0]
- movs r1, 0x4
- strb r1, [r0]
-_080111D2:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80111B0
-
- thumb_func_start sub_80111DC
-sub_80111DC: @ 80111DC
- push {lr}
- ldr r0, =gUnknown_03004140
- ldrb r0, [r0]
- movs r1, 0x1
- bl sub_8011E94
- ldr r1, =gUnknown_03005000
- movs r0, 0
- str r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80111DC
-
- thumb_func_start sub_80111FC
-sub_80111FC: @ 80111FC
- ldr r1, =gUnknown_03005000
- ldr r0, =sub_80111DC
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_80111FC
-
thumb_func_start sub_801120C
sub_801120C: @ 801120C
push {r4-r7,lr}
diff --git a/src/link_rfu.c b/src/link_rfu.c
index 6e8d99c0d..ed7062d98 100644
--- a/src/link_rfu.c
+++ b/src/link_rfu.c
@@ -74,6 +74,7 @@ void sub_8010AAC(u8 taskId);
void sub_8010D0C(u8 taskId);
u8 sub_8011CE4(const u8 *a0, u16 a1);
void sub_8011D6C(u8 a0);
+void sub_8011E94(u8 a0, u8 a1);
u8 sub_8012224(void);
void sub_801227C(void);
@@ -4548,3 +4549,64 @@ void sub_8011090(u8 a0, u32 a1, u32 a2)
sub_8010F84(a0, a1, a2);
rfu_REQ_configGameData(0, 2, &gUnknown_02022B14, gUnknown_02022B22);
}
+
+void sub_80110B8(u32 a0)
+{
+ int i;
+ u32 r5;
+ u32 r7;
+ int r8;
+
+ if (sub_800F7DC()->unk_0a_0 == 0x45)
+ {
+ r5 = 0;
+ r7 = 0;
+ r8 = gUnknown_03005000.unk_ce2 ^ gUnknown_03005000.unk_ce3;
+ for (i = 0; i < 4; i++)
+ {
+ if ((r8 >> i) & 1)
+ {
+ r7 |= ((0x80 | ((gLinkPlayers[gUnknown_03005000.unk_cde[i]].gender & 1) << 3) | (gLinkPlayers[gUnknown_03005000.unk_cde[i]].trainerId & 7)) << (r5 << 3));
+ r5++;
+ if (r5 == a0 - 1)
+ break;
+ }
+ }
+ sub_8011090(0x45, r7, 0);
+ }
+}
+
+void sub_8011170(u32 a0)
+{
+ if (gUnknown_03005000.unk_ee == 0)
+ {
+ gUnknown_03005000.unk_10 = gUnknown_03004140.unk_14;
+ gUnknown_03005000.unk_12 = gUnknown_03004140.unk_16;
+ gUnknown_03005000.unk_0a = a0;
+ gUnknown_03005000.unk_ee = 1;
+ }
+}
+
+void sub_80111A0(void)
+{
+ gUnknown_03005000.unk_ee = 0;
+}
+
+void sub_80111B0(bool32 a0)
+{
+ if (!a0)
+ gUnknown_03005000.unk_ee = 0;
+ else
+ gUnknown_03005000.unk_ee = 4;
+}
+
+void sub_80111DC(void)
+{
+ sub_8011E94(gUnknown_03004140.unk_00, 1);
+ gUnknown_03005000.unk_00 = NULL;
+}
+
+void sub_80111FC(void)
+{
+ gUnknown_03005000.unk_00 = sub_80111DC;
+}