diff --git a/asm/link_rfu.s b/asm/link_rfu.s index 901fbb060e..5a611409b2 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 4a8571ce78..3af74b51eb 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 622dafe376..7ded138657 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; +}