summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-11-30 00:19:44 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2017-11-30 00:19:44 -0500
commita781a6d5fdbebe8174bbb70ca82efaf9145729aa (patch)
tree20a61818227799169ac2a1b72c43aa6dd4923ffd /src
parentc906978692e9663ecea16f2dcc01abcd9f2ef765 (diff)
through sub_800D358
Diffstat (limited to 'src')
-rw-r--r--src/link_rfu.c75
1 files changed, 65 insertions, 10 deletions
diff --git a/src/link_rfu.c b/src/link_rfu.c
index 82a68214f..ffe119a17 100644
--- a/src/link_rfu.c
+++ b/src/link_rfu.c
@@ -24,20 +24,20 @@ EWRAM_DATA struct UnkLinkRfuStruct_02022B2C gUnknown_02022B2C = {};
// Static ROM declarations
static void sub_800C000(void);
-void sub_800CEB0(u16 r6);
-void sub_800C7B4(u16 r8, u16 r6);
-void sub_800D30C(u8 a0, u8 a1);
-void sub_800D334(u8 a0);
-void sub_800D610(void);
-void sub_800D630(void);
+static void sub_800C7B4(u16 r8, u16 r6);
static void sub_800C744(u32 a0);
+void sub_800CEB0(u16 r6);
static void sub_800CF34(void);
static void sub_800D158(void);
static void sub_800D20C(void);
static void sub_800D268(void);
static u8 sub_800D294(void);
-void sub_800D358(void);
+void sub_800D30C(u8 a0, u8 a1);
+static void sub_800D334(u8 a0);
+static void sub_800D358(u8 a0);
void sub_800D434(void);
+void sub_800D610(void);
+void sub_800D630(void);
// .rodata
@@ -85,7 +85,7 @@ void rfu_REQ_sendData_wrapper(u8 r2)
rfu_REQ_sendData(r2);
}
-int sub_800BF4C(void (*func1)(u8), void (*func2)(u16))
+int sub_800BF4C(void (*func1)(u8, u8), void (*func2)(u16))
{
if (func1 == NULL)
{
@@ -613,7 +613,7 @@ static void sub_800C744(u32 a0)
}
}
-void sub_800C7B4(u16 r8, u16 r6)
+static void sub_800C7B4(u16 r8, u16 r6)
{
u8 sp0;
register u8 *stwiRecvBuffer asm("r0");
@@ -870,7 +870,7 @@ void sub_800C7B4(u16 r8, u16 r6)
{
stwiRecvBuffer = rfu_getSTWIRecvBuffer();
gUnknown_03004140.unk_14 = stwiRecvBuffer[8];
- sub_800D358();
+ sub_800D358(gUnknown_03004140.unk_14);
if (gUnknown_03004140.unk_30)
{
gUnknown_03004140.unk_30 &= ~gUnknown_03004140.unk_14;
@@ -1208,3 +1208,58 @@ static u8 sub_800D294(void)
}
return flags;
}
+
+void sub_800D30C(u8 a0, u8 a1)
+{
+ if (gUnknown_03004140.unk_40 != NULL)
+ {
+ gUnknown_03004140.unk_40(a0, a1);
+ }
+ gUnknown_03004140.unk_14 = gUnknown_03004140.unk_16 = 0;
+}
+
+static void sub_800D334(u8 a0)
+{
+ u8 unk_0e_bak = gUnknown_03004140.unk_0e;
+ gUnknown_03004140.unk_0e = 1;
+ rfu_REQ_disconnect(a0);
+ rfu_waitREQComplete();
+ gUnknown_03004140.unk_0e = unk_0e_bak;
+}
+
+static void sub_800D358(u8 a0)
+{
+ u8 i;
+
+ if (gUnknown_03007890->unk_04)
+ {
+ for (i = 0; i < 4; i++)
+ {
+ if (gUnknown_03007880[i]->unk_0 & 0x8000 && gUnknown_03007880[i]->unk_1a & a0)
+ {
+ rfu_changeSendTarget(0x20, i, gUnknown_03007880[i]->unk_1a & ~a0);
+ }
+ }
+ }
+ if (gUnknown_03007890->unk_05)
+ {
+ for (i = 0; i < 4; i++)
+ {
+ if (gUnknown_03007880[i]->unk_34 & 0x8000 && gUnknown_03007880[i]->unk_4e & a0)
+ {
+ rfu_NI_stopReceivingData(i);
+ }
+ }
+ }
+ if (gUnknown_03007890->unk_06)
+ {
+ gUnknown_03007890->unk_06 &= ~a0;
+ for (i = 0; i < 4; i++)
+ {
+ if (gUnknown_03007870[i]->unk_0 == 0x8024 && a0 & gUnknown_03007870[i]->unk_3)
+ {
+ gUnknown_03007870[i]->unk_3 &= ~a0;
+ }
+ }
+ }
+}