summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/link_rfu.s67
-rw-r--r--include/link_rfu.h15
-rw-r--r--src/link_rfu.c25
3 files changed, 35 insertions, 72 deletions
diff --git a/asm/link_rfu.s b/asm/link_rfu.s
index 901fbb060..5a611409b 100644
--- a/asm/link_rfu.s
+++ b/asm/link_rfu.s
@@ -5,73 +5,6 @@
.text
- thumb_func_start sub_800EAB4
-sub_800EAB4: @ 800EAB4
- push {r4,r5,lr}
- ldr r0, =gUnknown_03004140
- ldrb r5, [r0]
- movs r4, 0
-_0800EABC:
- movs r0, 0x1
- ands r0, r5
- cmp r0, 0
- beq _0800EAE0
- lsls r2, r4, 3
- subs r2, r4
- lsls r2, 1
- ldr r0, =gUnknown_03005000+0x14
- adds r2, r0
- movs r0, 0x10
- adds r1, r4, 0
- movs r3, 0xE
- bl rfu_setRecvBuffer
- movs r0, 0x3
- adds r1, r4, 0
- bl rfu_clearSlot
-_0800EAE0:
- lsrs r5, 1
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _0800EABC
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_800EAB4
-
- thumb_func_start sub_800EAFC
-sub_800EAFC: @ 800EAFC
- push {r4-r6,lr}
- ldr r0, =gUnknown_03004140
- ldrb r5, [r0]
- ldr r4, =gUnknown_03005000+0xC87
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x46
- bl rfu_UNI_setSendData
- adds r0, r5, 0
- bl sub_800E87C
- ldr r1, =0xfffff379
- adds r6, r4, r1
- adds r1, r4, 0
- adds r1, 0x53
- strb r0, [r1]
- adds r4, 0x5B
- strb r5, [r4]
- movs r1, 0x1
- negs r1, r1
- adds r0, r5, 0
- bl sub_800E88C
- movs r0, 0x1
- strb r0, [r6, 0xC]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_800EAFC
-
thumb_func_start sub_800EB44
sub_800EB44: @ 800EB44
push {r4-r6,lr}
diff --git a/include/link_rfu.h b/include/link_rfu.h
index 4a8571ce7..3af74b51e 100644
--- a/include/link_rfu.h
+++ b/include/link_rfu.h
@@ -138,8 +138,9 @@ struct UnkRfuStruct_2 {
/* 0x006 */ u8 filler_06[6];
/* 0x00c */ u8 unk_0c;
/* 0x00d */ u8 playerCount;
- /* 0x00e */ u8 filler_0e[0x3e];
- /* 0x04c */ u8 unk_4c[14 * 2];
+ /* 0x00e */ u8 filler_0e[6];
+ /* 0x014 */ u8 unk_14[4][14];
+ /* 0x04c */ u8 unk_4c[2][14];
/* 0x068 */ u8 filler_68[4];
/* 0x06c */ struct UnkRfuStruct_2_Sub_6c unk_6c;
/* 0x080 */ struct UnkRfuStruct_2_Sub_6c unk_80[5];
@@ -151,12 +152,16 @@ struct UnkRfuStruct_2 {
/* 0xc1c */ struct UnkRfuStruct_2_Sub_c1c unk_c1c;
/* 0xc3c */ u8 filler_c3c[2];
/* 0xc3e */ vu8 unk_c3e;
- /* 0xc3f */ u8 unk_c3f[70 * 2];
- /* 0xccb */ u8 filler_ccb[16];
+ /* 0xc3f */ u8 unk_c3f[70];
+ /* 0xc85 */ u8 filler_c85[2];
+ /* 0xc87 */ u8 unk_c87[70];
+ /* 0xccb */ u8 filler_ccb[13];
+ /* 0xccb */ u8 unk_cda;
/* 0xcdb */ vu8 unk_cdb;
/* 0xcdc */ u8 filler_cdc[2];
/* 0xcde */ u8 unk_cde[4];
- /* 0xce2 */ u8 filler_ce2[2];
+ /* 0xce2 */ u8 unk_ce2;
+ /* 0xce2 */ u8 unk_ce3;
/* 0xce4 */ u8 unk_ce4;
/* 0xce5 */ u8 filler_ce5[15];
}; // size = 0xcf4
diff --git a/src/link_rfu.c b/src/link_rfu.c
index 622dafe37..7ded13865 100644
--- a/src/link_rfu.c
+++ b/src/link_rfu.c
@@ -2624,3 +2624,28 @@ void sub_800E94C(u8 taskId)
}
}
}
+
+void sub_800EAB4(void)
+{
+ u8 i;
+ u8 r5 = gUnknown_03004140.unk_00;
+ for (i = 0; i < 4; i++)
+ {
+ if (r5 & 1)
+ {
+ rfu_setRecvBuffer(16, i, gUnknown_03005000.unk_14[i], 14);
+ rfu_clearSlot(3, i);
+ }
+ r5 >>= 1;
+ }
+}
+
+void sub_800EAFC(void)
+{
+ u8 r5 = gUnknown_03004140.unk_00;
+ rfu_UNI_setSendData(r5, gUnknown_03005000.unk_c87, 70);
+ gUnknown_03005000.unk_cda = sub_800E87C(r5);
+ gUnknown_03005000.unk_ce2 = r5;
+ sub_800E88C(r5, -1);
+ gUnknown_03005000.unk_0c = 1;
+}