summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjiangzhengwenjz <jiangzhengwenjzw@qq.com>2020-01-16 05:38:24 +0800
committerhuderlem <huderlem@gmail.com>2020-01-16 08:14:27 -0600
commitc2be2e8c69eda4ecf0a1daa499dde10174b0891b (patch)
treef38f54af51bb386834adaafdfd1461a123406053 /src
parent8a5f292618e7464340a28bb584295510e4b50b3d (diff)
sync documentation from firered
Diffstat (limited to 'src')
-rw-r--r--src/librfu.c4
-rw-r--r--src/librfu_stwi.c446
-rw-r--r--src/link_rfu.c228
-rw-r--r--src/trade.c2
-rw-r--r--src/union_room.c2
5 files changed, 320 insertions, 362 deletions
diff --git a/src/librfu.c b/src/librfu.c
index b84ba7ae5..1a295fd48 100644
--- a/src/librfu.c
+++ b/src/librfu.c
@@ -4,6 +4,6 @@
struct RfuSlotStatusUNI* gRfuSlotStatusUNI[4];
struct RfuSlotStatusNI* gRfuSlotStatusNI[4];
struct RfuLinkStatus *gRfuLinkStatus;
-u32 *gRfuStatic;
+struct RfuStatic *gRfuStatic;
struct RfuFixed* gRfuFixed;
-u8 gRfuSIO32Id[12];
+struct RfuSIO32Id gRfuSIO32Id;
diff --git a/src/librfu_stwi.c b/src/librfu_stwi.c
index 45abaa70b..b88f21737 100644
--- a/src/librfu_stwi.c
+++ b/src/librfu_stwi.c
@@ -1,23 +1,14 @@
-#include "global.h"
#include "librfu.h"
-struct STWIStatus *gSTWIStatus;
-
-extern IntrFunc IntrSIO32(void);
-
-extern void STWI_stop_timer(void);
+static void STWI_intr_timer(void);
+static u16 STWI_init(u8 request);
+static s32 STWI_start_Command(void);
+static void STWI_set_timer(u8 unk);
+static void STWI_stop_timer(void);
+static s32 STWI_restart_Command(void);
+static s32 STWI_reset_ClockCounter(void);
-void STWI_init_Callback_M(void);
-void STWI_init_Callback_S(void);
-void STWI_set_Callback_M(void * callback);
-void STWI_set_Callback_S(void * callback);
-u16 STWI_init(u8 request);
-int STWI_start_Command(void);
-void STWI_intr_timer(void);
-void STWI_set_timer(u8 unk);
-
-int STWI_restart_Command(void);
-int STWI_reset_ClockCounter(void);
+struct STWIStatus *gSTWIStatus;
void STWI_init_all(struct RfuIntrStruct *interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam)
{
@@ -27,43 +18,39 @@ void STWI_init_all(struct RfuIntrStruct *interruptStruct, IntrFunc *interrupt, b
if (copyInterruptToRam == TRUE)
{
*interrupt = (IntrFunc)interruptStruct->block1;
- DmaCopy16(3, &IntrSIO32, interruptStruct->block1, 0x960);
- gSTWIStatus = (struct STWIStatus*)interruptStruct->block2;
+ DmaCopy16(3, &IntrSIO32, interruptStruct->block1, sizeof(interruptStruct->block1));
+ gSTWIStatus = &interruptStruct->block2;
}
else
{
- *interrupt = (IntrFunc)IntrSIO32;
- gSTWIStatus = (struct STWIStatus*)interruptStruct->block1;
+ *interrupt = IntrSIO32;
+ gSTWIStatus = (struct STWIStatus *)interruptStruct->block1;
}
-
- gSTWIStatus->rxPacket = (union RfuPacket*)interruptStruct->rxPacketAlloc;
- gSTWIStatus->txPacket = (union RfuPacket*)interruptStruct->txPacketAlloc;
+ gSTWIStatus->rxPacket = &interruptStruct->rxPacketAlloc;
+ gSTWIStatus->txPacket = &interruptStruct->txPacketAlloc;
gSTWIStatus->msMode = 1;
- gSTWIStatus->unk_0 = 0;
- gSTWIStatus->txParams = 0;
- gSTWIStatus->unk_5 = 0;
- gSTWIStatus->unk_7 = 0;
- gSTWIStatus->unk_8 = 0;
- gSTWIStatus->unk_9 = 0;
+ gSTWIStatus->state = 0;
+ gSTWIStatus->reqLength = 0;
+ gSTWIStatus->reqNext = 0;
+ gSTWIStatus->ackLength = 0;
+ gSTWIStatus->ackNext = 0;
+ gSTWIStatus->ackActiveCommand = 0;
gSTWIStatus->timerState = 0;
gSTWIStatus->timerActive = 0;
- gSTWIStatus->unk_12 = 0;
- gSTWIStatus->unk_15 = 0;
+ gSTWIStatus->error = 0;
+ gSTWIStatus->recoveryCount = 0;
gSTWIStatus->unk_2c = 0;
-
- REG_RCNT = 0x100; //TODO: mystery bit?
+ REG_RCNT = 0x100; // TODO: mystery bit?
REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS;
STWI_init_Callback_M();
STWI_init_Callback_S();
-
IntrEnable(INTR_FLAG_SERIAL);
}
-void STWI_init_timer(IntrFunc *interrupt, int timerSelect)
+void STWI_init_timer(IntrFunc *interrupt, s32 timerSelect)
{
*interrupt = STWI_intr_timer;
gSTWIStatus->timerSelect = timerSelect;
-
IntrEnable(INTR_FLAG_TIMER0 << gSTWIStatus->timerSelect);
}
@@ -78,25 +65,24 @@ void AgbRFU_SoftReset(void)
timerH = &REG_TMCNT_H(gSTWIStatus->timerSelect);
*timerH = 0;
*timerL = 0;
- *timerH = 0x83;
+ *timerH = TIMER_ENABLE | TIMER_1024CLK;
while (*timerL <= 0x11)
REG_RCNT = 0x80A2;
*timerH = 3;
REG_RCNT = 0x80A0;
REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS;
-
- gSTWIStatus->unk_0 = 0;
- gSTWIStatus->txParams = 0;
- gSTWIStatus->unk_5 = 0;
- gSTWIStatus->activeCommand = 0;
- gSTWIStatus->unk_7 = 0;
- gSTWIStatus->unk_8 = 0;
- gSTWIStatus->unk_9 = 0;
+ gSTWIStatus->state = 0;
+ gSTWIStatus->reqLength = 0;
+ gSTWIStatus->reqNext = 0;
+ gSTWIStatus->reqActiveCommand = 0;
+ gSTWIStatus->ackLength = 0;
+ gSTWIStatus->ackNext = 0;
+ gSTWIStatus->ackActiveCommand = 0;
gSTWIStatus->timerState = 0;
gSTWIStatus->timerActive = 0;
- gSTWIStatus->unk_12 = 0;
+ gSTWIStatus->error = 0;
gSTWIStatus->msMode = 1;
- gSTWIStatus->unk_15 = 0;
+ gSTWIStatus->recoveryCount = 0;
gSTWIStatus->unk_2c = 0;
}
@@ -110,13 +96,13 @@ u16 STWI_read_status(u8 index)
switch (index)
{
case 0:
- return gSTWIStatus->unk_12;
+ return gSTWIStatus->error;
case 1:
return gSTWIStatus->msMode;
case 2:
- return gSTWIStatus->unk_0;
+ return gSTWIStatus->state;
case 3:
- return gSTWIStatus->activeCommand;
+ return gSTWIStatus->reqActiveCommand;
default:
return 0xFFFF;
}
@@ -124,136 +110,130 @@ u16 STWI_read_status(u8 index)
void STWI_init_Callback_M(void)
{
- STWI_set_Callback_M(0);
+ STWI_set_Callback_M(NULL);
}
void STWI_init_Callback_S(void)
{
- STWI_set_Callback_S(0);
+ STWI_set_Callback_S(NULL);
}
-void STWI_set_Callback_M(void *callback)
+// The callback can take 2 or 3 arguments.
+void STWI_set_Callback_M(void *callbackM)
{
- gSTWIStatus->callbackM = callback;
+ gSTWIStatus->callbackM = callbackM;
}
-void STWI_set_Callback_S(void *callback)
+void STWI_set_Callback_S(void (*callbackS)(u16))
{
- gSTWIStatus->callbackS = callback;
+ gSTWIStatus->callbackS = callbackS;
}
-void STWI_set_Callback_ID(u32 id)
+void STWI_set_Callback_ID(void (*func)(void)) // name in SDK, but is actually setting a function pointer
{
- gSTWIStatus->callbackID = id;
+ gSTWIStatus->unk_20 = func;
}
u16 STWI_poll_CommandEnd(void)
{
while (gSTWIStatus->unk_2c == TRUE)
;
- return gSTWIStatus->unk_12;
+ return gSTWIStatus->error;
}
void STWI_send_ResetREQ(void)
{
- if (!STWI_init(RFU_RESET))
+ if (!STWI_init(ID_RESET_REQ))
{
- gSTWIStatus->txParams = 0;
+ gSTWIStatus->reqLength = 0;
STWI_start_Command();
}
}
void STWI_send_LinkStatusREQ(void)
{
- if (!STWI_init(RFU_LINK_STATUS))
+ if (!STWI_init(ID_LINK_STATUS_REQ))
{
- gSTWIStatus->txParams = 0;
+ gSTWIStatus->reqLength = 0;
STWI_start_Command();
}
}
void STWI_send_VersionStatusREQ(void)
{
- if (!STWI_init(RFU_VERSION_STATUS))
+ if (!STWI_init(ID_VERSION_STATUS_REQ))
{
- gSTWIStatus->txParams = 0;
+ gSTWIStatus->reqLength = 0;
STWI_start_Command();
}
}
void STWI_send_SystemStatusREQ(void)
{
- if (!STWI_init(RFU_SYSTEM_STATUS))
+ if (!STWI_init(ID_SYSTEM_STATUS_REQ))
{
- gSTWIStatus->txParams = 0;
+ gSTWIStatus->reqLength = 0;
STWI_start_Command();
}
}
void STWI_send_SlotStatusREQ(void)
{
- if (!STWI_init(RFU_SLOT_STATUS))
+ if (!STWI_init(ID_SLOT_STATUS_REQ))
{
- gSTWIStatus->txParams = 0;
+ gSTWIStatus->reqLength = 0;
STWI_start_Command();
}
}
void STWI_send_ConfigStatusREQ(void)
{
- if (!STWI_init(RFU_CONFIG_STATUS))
+ if (!STWI_init(ID_CONFIG_STATUS_REQ))
{
- gSTWIStatus->txParams = 0;
+ gSTWIStatus->reqLength = 0;
STWI_start_Command();
}
}
-void STWI_send_GameConfigREQ(u8 * unk1, u8 *data)
+void STWI_send_GameConfigREQ(const u8 *unk1, const u8 *data)
{
u8 *packetBytes;
- int i;
+ s32 i;
- if (!STWI_init(RFU_GAME_CONFIG))
+ if (!STWI_init(ID_GAME_CONFIG_REQ))
{
- gSTWIStatus->txParams = 6;
-
- //TODO: what is unk1
+ gSTWIStatus->reqLength = 6;
+ // TODO: what is unk1
packetBytes = gSTWIStatus->txPacket->rfuPacket8.data;
packetBytes += sizeof(u32);
- *(u16*)packetBytes = *(u16*)unk1;
-
+ *(u16 *)packetBytes = *(u16 *)unk1;
packetBytes += sizeof(u16);
unk1 += sizeof(u16);
-
- for (i = 0; i < 14; i++)
+ for (i = 0; i < 14; ++i)
{
*packetBytes = *unk1;
- packetBytes++;
- unk1++;
+ ++packetBytes;
+ ++unk1;
}
-
- for (i = 0; i < 8; i++)
+ for (i = 0; i < 8; ++i)
{
*packetBytes = *data;
- packetBytes++;
- data++;
+ ++packetBytes;
+ ++data;
}
-
STWI_start_Command();
}
}
void STWI_send_SystemConfigREQ(u16 unk1, u8 unk2, u8 unk3)
{
- if (!STWI_init(RFU_SYSTEM_CONFIG))
+ if (!STWI_init(ID_SYSTEM_CONFIG_REQ))
{
u8 *packetBytes;
- gSTWIStatus->txParams = 1;
-
+ gSTWIStatus->reqLength = 1;
packetBytes = gSTWIStatus->txPacket->rfuPacket8.data;
packetBytes += sizeof(u32);
-
*packetBytes++ = unk3;
*packetBytes++ = unk2;
*(u16*)packetBytes = unk1;
@@ -263,63 +243,63 @@ void STWI_send_SystemConfigREQ(u16 unk1, u8 unk2, u8 unk3)
void STWI_send_SC_StartREQ(void)
{
- if (!STWI_init(RFU_SC_START))
+ if (!STWI_init(ID_SC_START_REQ))
{
- gSTWIStatus->txParams = 0;
+ gSTWIStatus->reqLength = 0;
STWI_start_Command();
}
}
void STWI_send_SC_PollingREQ(void)
{
- if (!STWI_init(RFU_SC_POLLING))
+ if (!STWI_init(ID_SC_POLL_REQ))
{
- gSTWIStatus->txParams = 0;
+ gSTWIStatus->reqLength = 0;
STWI_start_Command();
}
}
void STWI_send_SC_EndREQ(void)
{
- if (!STWI_init(RFU_SC_END))
+ if (!STWI_init(ID_SC_END_REQ))
{
- gSTWIStatus->txParams = 0;
+ gSTWIStatus->reqLength = 0;
STWI_start_Command();
}
}
void STWI_send_SP_StartREQ(void)
{
- if (!STWI_init(RFU_SP_START))
+ if (!STWI_init(ID_SP_START_REQ))
{
- gSTWIStatus->txParams = 0;
+ gSTWIStatus->reqLength = 0;
STWI_start_Command();
}
}
void STWI_send_SP_PollingREQ(void)
{
- if (!STWI_init(RFU_SP_POLLING))
+ if (!STWI_init(ID_SP_POLL_REQ))
{
- gSTWIStatus->txParams = 0;
+ gSTWIStatus->reqLength = 0;
STWI_start_Command();
}
}
void STWI_send_SP_EndREQ(void)
{
- if (!STWI_init(RFU_SP_END))
+ if (!STWI_init(ID_SP_END_REQ))
{
- gSTWIStatus->txParams = 0;
+ gSTWIStatus->reqLength = 0;
STWI_start_Command();
}
}
void STWI_send_CP_StartREQ(u16 unk1)
{
- if (!STWI_init(RFU_CP_START))
+ if (!STWI_init(ID_CP_START_REQ))
{
- gSTWIStatus->txParams = 1;
+ gSTWIStatus->reqLength = 1;
gSTWIStatus->txPacket->rfuPacket32.data[0] = unk1;
STWI_start_Command();
}
@@ -327,142 +307,132 @@ void STWI_send_CP_StartREQ(u16 unk1)
void STWI_send_CP_PollingREQ(void)
{
- if (!STWI_init(RFU_CP_POLLING))
+ if (!STWI_init(ID_CP_POLL_REQ))
{
- gSTWIStatus->txParams = 0;
+ gSTWIStatus->reqLength = 0;
STWI_start_Command();
}
}
void STWI_send_CP_EndREQ(void)
{
- if (!STWI_init(RFU_CP_END))
+ if (!STWI_init(ID_CP_END_REQ))
{
- gSTWIStatus->txParams = 0;
+ gSTWIStatus->reqLength = 0;
STWI_start_Command();
}
}
-void STWI_send_DataTxREQ(void *in, u8 size)
+void STWI_send_DataTxREQ(const void *in, u8 size)
{
- if (!STWI_init(RFU_DATA_TX))
+ if (!STWI_init(ID_DATA_TX_REQ))
{
- u8 txParams = (size / sizeof(u32));
+ u8 reqLength = (size / sizeof(u32));
if (size & (sizeof(u32) - 1))
- txParams += 1;
-
- gSTWIStatus->txParams = txParams;
- CpuCopy32(in, gSTWIStatus->txPacket->rfuPacket32.data, gSTWIStatus->txParams * sizeof(u32));
+ reqLength += 1;
+ gSTWIStatus->reqLength = reqLength;
+ CpuCopy32(in, gSTWIStatus->txPacket->rfuPacket32.data, gSTWIStatus->reqLength * sizeof(u32));
STWI_start_Command();
}
}
-void STWI_send_DataTxAndChangeREQ(void *in, u8 size)
+void STWI_send_DataTxAndChangeREQ(const void *in, u8 size)
{
- if (!STWI_init(RFU_DATA_TX_AND_CHANGE))
+ if (!STWI_init(ID_DATA_TX_AND_CHANGE_REQ))
{
- u8 txParams = (size / sizeof(u32));
+ u8 reqLength = (size / sizeof(u32));
if (size & (sizeof(u32) - 1))
- txParams += 1;
-
- gSTWIStatus->txParams = txParams;
- CpuCopy32(in, gSTWIStatus->txPacket->rfuPacket32.data, gSTWIStatus->txParams * sizeof(u32));
+ reqLength += 1;
+ gSTWIStatus->reqLength = reqLength;
+ CpuCopy32(in, gSTWIStatus->txPacket->rfuPacket32.data, gSTWIStatus->reqLength * sizeof(u32));
STWI_start_Command();
}
}
void STWI_send_DataRxREQ(void)
{
- if (!STWI_init(RFU_DATA_RX))
+ if (!STWI_init(ID_DATA_RX_REQ))
{
- gSTWIStatus->txParams = 0;
+ gSTWIStatus->reqLength = 0;
STWI_start_Command();
}
}
void STWI_send_MS_ChangeREQ(void)
{
- if (!STWI_init(RFU_MS_CHANGE))
+ if (!STWI_init(ID_MS_CHANGE_REQ))
{
- gSTWIStatus->txParams = 0;
+ gSTWIStatus->reqLength = 0;
STWI_start_Command();
}
}
void STWI_send_DataReadyAndChangeREQ(u8 unk)
{
- if (!STWI_init(RFU_DATA_READY_AND_CHANGE))
+ if (!STWI_init(ID_DATA_READY_AND_CHANGE_REQ))
{
if (!unk)
{
- gSTWIStatus->txParams = 0;
+ gSTWIStatus->reqLength = 0;
}
else
{
u8 *packetBytes;
- gSTWIStatus->txParams = 1;
-
+ gSTWIStatus->reqLength = 1;
packetBytes = gSTWIStatus->txPacket->rfuPacket8.data;
packetBytes += sizeof(u32);
-
*packetBytes++ = unk;
*packetBytes++ = 0;
*packetBytes++ = 0;
*packetBytes = 0;
}
-
STWI_start_Command();
}
}
void STWI_send_DisconnectedAndChangeREQ(u8 unk0, u8 unk1)
{
- if (!STWI_init(RFU_DISCONNECTED_AND_CHANGE))
+ if (!STWI_init(ID_DISCONNECTED_AND_CHANGE_REQ))
{
u8 *packetBytes;
- gSTWIStatus->txParams = 1;
-
+ gSTWIStatus->reqLength = 1;
packetBytes = gSTWIStatus->txPacket->rfuPacket8.data;
packetBytes += sizeof(u32);
-
*packetBytes++ = unk0;
*packetBytes++ = unk1;
*packetBytes++ = 0;
*packetBytes = 0;
-
STWI_start_Command();
}
}
void STWI_send_ResumeRetransmitAndChangeREQ(void)
{
- if (!STWI_init(RFU_RESUME_RETRANSMIT_AND_CHANGE))
+ if (!STWI_init(ID_RESUME_RETRANSMIT_AND_CHANGE_REQ))
{
- gSTWIStatus->txParams = 0;
+ gSTWIStatus->reqLength = 0;
STWI_start_Command();
}
}
void STWI_send_DisconnectREQ(u8 unk)
{
- if (!STWI_init(RFU_DISCONNECT))
+ if (!STWI_init(ID_DISCONNECT_REQ))
{
- gSTWIStatus->txParams = 1;
+ gSTWIStatus->reqLength = 1;
gSTWIStatus->txPacket->rfuPacket32.data[0] = unk;
-
STWI_start_Command();
}
}
void STWI_send_TestModeREQ(u8 unk0, u8 unk1)
{
- if (!STWI_init(RFU_TEST_MODE))
+ if (!STWI_init(ID_TEST_MODE_REQ))
{
- gSTWIStatus->txParams = 1;
+ gSTWIStatus->reqLength = 1;
gSTWIStatus->txPacket->rfuPacket32.data[0] = unk0 | (unk1 << 8);
-
STWI_start_Command();
}
}
@@ -472,71 +442,69 @@ void STWI_send_CPR_StartREQ(u16 unk0, u16 unk1, u8 unk2)
u32 *packetData;
u32 arg1;
- if (!STWI_init(RFU_CPR_START))
+ if (!STWI_init(ID_CPR_START_REQ))
{
- gSTWIStatus->txParams = 2;
-
+ gSTWIStatus->reqLength = 2;
arg1 = unk1 | (unk0 << 16);
packetData = gSTWIStatus->txPacket->rfuPacket32.data;
packetData[0] = arg1;
packetData[1] = unk2;
-
STWI_start_Command();
}
}
void STWI_send_CPR_PollingREQ(void)
{
- if (!STWI_init(RFU_CPR_POLLING))
+ if (!STWI_init(ID_CPR_POLL_REQ))
{
- gSTWIStatus->txParams = 0;
+ gSTWIStatus->reqLength = 0;
STWI_start_Command();
}
}
void STWI_send_CPR_EndREQ(void)
{
- if (!STWI_init(RFU_CPR_END))
+ if (!STWI_init(ID_CPR_END_REQ))
{
- gSTWIStatus->txParams = 0;
+ gSTWIStatus->reqLength = 0;
STWI_start_Command();
}
}
void STWI_send_StopModeREQ(void)
{
- if (!STWI_init(RFU_STOP_MODE))
+ if (!STWI_init(ID_STOP_MODE_REQ))
{
- gSTWIStatus->txParams = 0;
+ gSTWIStatus->reqLength = 0;
STWI_start_Command();
}
}
-void STWI_intr_timer(void)
+static void STWI_intr_timer(void)
{
switch (gSTWIStatus->timerState)
{
- //TODO: Make an enum for these
- case 2:
- gSTWIStatus->timerActive = 1;
- STWI_set_timer(50);
- break;
- case 1:
- case 4:
- STWI_stop_timer();
- STWI_restart_Command();
- break;
- case 3:
- gSTWIStatus->timerActive = 1;
- STWI_stop_timer();
- STWI_reset_ClockCounter();
- if (gSTWIStatus->callbackM)
- gSTWIStatus->callbackM(255, 0);
- break;
+ // TODO: Make an enum for these
+ case 2:
+ gSTWIStatus->timerActive = 1;
+ STWI_set_timer(50);
+ break;
+ case 1:
+ case 4:
+ STWI_stop_timer();
+ STWI_restart_Command();
+ break;
+ case 3:
+ gSTWIStatus->timerActive = 1;
+ STWI_stop_timer();
+ STWI_reset_ClockCounter();
+ if (gSTWIStatus->callbackM != NULL)
+ gSTWIStatus->callbackM(255, 0);
+ break;
}
}
-void STWI_set_timer(u8 unk)
+static void STWI_set_timer(u8 unk)
{
vu16 *timerL;
vu16 *timerH;
@@ -546,144 +514,134 @@ void STWI_set_timer(u8 unk)
REG_IME = 0;
switch (unk)
{
- case 50:
- *timerL = 0xFCCB;
- gSTWIStatus->timerState = 1;
- break;
- case 80:
- *timerL = 0xFAE0;
- gSTWIStatus->timerState = 2;
- break;
- case 100:
- *timerL = 0xF996;
- gSTWIStatus->timerState = 3;
- break;
- case 130:
- *timerL = 0xF7AD;
- gSTWIStatus->timerState = 4;
- break;
+ case 50:
+ *timerL = 0xFCCB;
+ gSTWIStatus->timerState = 1;
+ break;
+ case 80:
+ *timerL = 0xFAE0;
+ gSTWIStatus->timerState = 2;
+ break;
+ case 100:
+ *timerL = 0xF996;
+ gSTWIStatus->timerState = 3;
+ break;
+ case 130:
+ *timerL = 0xF7AD;
+ gSTWIStatus->timerState = 4;
+ break;
}
*timerH = TIMER_ENABLE | TIMER_INTR_ENABLE | TIMER_1024CLK;
REG_IF = INTR_FLAG_TIMER0 << gSTWIStatus->timerSelect;
REG_IME = 1;
}
-void STWI_stop_timer(void)
+static void STWI_stop_timer(void)
{
gSTWIStatus->timerState = 0;
-
REG_TMCNT_L(gSTWIStatus->timerSelect) = 0;
REG_TMCNT_H(gSTWIStatus->timerSelect) = 0;
}
-u16 STWI_init(u8 request)
+static u16 STWI_init(u8 request)
{
if (!REG_IME)
{
- gSTWIStatus->unk_12 = 6;
- if (gSTWIStatus->callbackM)
- gSTWIStatus->callbackM(request, gSTWIStatus->unk_12);
+ gSTWIStatus->error = ERR_REQ_CMD_IME_DISABLE;
+ if (gSTWIStatus->callbackM != NULL)
+ gSTWIStatus->callbackM(request, gSTWIStatus->error);
return TRUE;
}
else if (gSTWIStatus->unk_2c == TRUE)
{
- gSTWIStatus->unk_12 = 2;
+ gSTWIStatus->error = ERR_REQ_CMD_SENDING;
gSTWIStatus->unk_2c = FALSE;
- if (gSTWIStatus->callbackM)
- gSTWIStatus->callbackM(request, gSTWIStatus->unk_12);
+ if (gSTWIStatus->callbackM != NULL)
+ gSTWIStatus->callbackM(request, gSTWIStatus->error);
return TRUE;
}
else if(!gSTWIStatus->msMode)
{
- gSTWIStatus->unk_12 = 4;
- if (gSTWIStatus->callbackM)
- gSTWIStatus->callbackM(request, gSTWIStatus->unk_12, gSTWIStatus);
+ gSTWIStatus->error = ERR_REQ_CMD_CLOCK_SLAVE;
+ if (gSTWIStatus->callbackM != NULL)
+ gSTWIStatus->callbackM(request, gSTWIStatus->error, gSTWIStatus);
return TRUE;
}
else
{
gSTWIStatus->unk_2c = TRUE;
- gSTWIStatus->activeCommand = request;
- gSTWIStatus->unk_0 = 0;
- gSTWIStatus->txParams = 0;
- gSTWIStatus->unk_5 = 0;
- gSTWIStatus->unk_7 = 0;
- gSTWIStatus->unk_8 = 0;
- gSTWIStatus->unk_9 = 0;
+ gSTWIStatus->reqActiveCommand = request;
+ gSTWIStatus->state = 0;
+ gSTWIStatus->reqLength = 0;
+ gSTWIStatus->reqNext = 0;
+ gSTWIStatus->ackLength = 0;
+ gSTWIStatus->ackNext = 0;
+ gSTWIStatus->ackActiveCommand = 0;
gSTWIStatus->timerState = 0;
gSTWIStatus->timerActive = 0;
- gSTWIStatus->unk_12 = 0;
- gSTWIStatus->unk_15 = 0;
-
+ gSTWIStatus->error = 0;
+ gSTWIStatus->recoveryCount = 0;
REG_RCNT = 0x100;
REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS;
return FALSE;
}
}
-int STWI_start_Command()
+static s32 STWI_start_Command(void)
{
u16 imeTemp;
- // Yes, it matters that it's casted to a u32...
- *(u32*)gSTWIStatus->txPacket->rfuPacket8.data = 0x99660000 | (gSTWIStatus->txParams << 8) | gSTWIStatus->activeCommand;
+ // equivalent to gSTWIStatus->txPacket->rfuPacket32.command,
+ // but the cast here is required to avoid register issue
+ *(u32 *)gSTWIStatus->txPacket->rfuPacket8.data = 0x99660000 | (gSTWIStatus->reqLength << 8) | gSTWIStatus->reqActiveCommand;
REG_SIODATA32 = gSTWIStatus->txPacket->rfuPacket32.command;
-
- gSTWIStatus->unk_0 = 0;
- gSTWIStatus->unk_5 = 1;
-
+ gSTWIStatus->state = 0;
+ gSTWIStatus->reqNext = 1;
imeTemp = REG_IME;
REG_IME = 0;
REG_IE |= (INTR_FLAG_TIMER0 << gSTWIStatus->timerSelect);
REG_IE |= INTR_FLAG_SERIAL;
REG_IME = imeTemp;
-
REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_MULTI_BUSY | SIO_115200_BPS;
-
return 0;
}
-int STWI_restart_Command(void)
+static s32 STWI_restart_Command(void)
{
- if (gSTWIStatus->unk_15 <= 1)
+ if (gSTWIStatus->recoveryCount <= 1)
{
- gSTWIStatus->unk_15++;
+ ++gSTWIStatus->recoveryCount;
STWI_start_Command();
}
else
{
- if (gSTWIStatus->activeCommand == RFU_MS_CHANGE || gSTWIStatus->activeCommand == RFU_DATA_TX_AND_CHANGE || gSTWIStatus->activeCommand == RFU_UNK35 || gSTWIStatus->activeCommand == RFU_RESUME_RETRANSMIT_AND_CHANGE)
+ if (gSTWIStatus->reqActiveCommand == ID_MS_CHANGE_REQ || gSTWIStatus->reqActiveCommand == ID_DATA_TX_AND_CHANGE_REQ || gSTWIStatus->reqActiveCommand == ID_UNK35_REQ || gSTWIStatus->reqActiveCommand == ID_RESUME_RETRANSMIT_AND_CHANGE_REQ)
{
- gSTWIStatus->unk_12 = 1;
+ gSTWIStatus->error = ERR_REQ_CMD_CLOCK_DRIFT;
gSTWIStatus->unk_2c = 0;
-
- if (gSTWIStatus->callbackM)
- gSTWIStatus->callbackM(gSTWIStatus->activeCommand, gSTWIStatus->unk_12);
+ if (gSTWIStatus->callbackM != NULL)
+ gSTWIStatus->callbackM(gSTWIStatus->reqActiveCommand, gSTWIStatus->error);
}
else
{
- gSTWIStatus->unk_12 = 1;
+ gSTWIStatus->error = ERR_REQ_CMD_CLOCK_DRIFT;
gSTWIStatus->unk_2c = 0;
-
- if (gSTWIStatus->callbackM)
- gSTWIStatus->callbackM(gSTWIStatus->activeCommand, gSTWIStatus->unk_12);
-
- gSTWIStatus->unk_0 = 4; //TODO: what's 4
+ if (gSTWIStatus->callbackM != NULL)
+ gSTWIStatus->callbackM(gSTWIStatus->reqActiveCommand, gSTWIStatus->error);
+ gSTWIStatus->state = 4; // TODO: what's 4
}
}
-
return 0;
}
-int STWI_reset_ClockCounter(void)
+static s32 STWI_reset_ClockCounter(void)
{
- gSTWIStatus->unk_0 = 5; //TODO: what is 5
- gSTWIStatus->txParams = 0;
- gSTWIStatus->unk_5 = 0;
+ gSTWIStatus->state = 5; // TODO: what is 5
+ gSTWIStatus->reqLength = 0;
+ gSTWIStatus->reqNext = 0;
REG_SIODATA32 = (1 << 31);
REG_SIOCNT = 0;
REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS;
REG_SIOCNT = (SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS) + 0x7F;
-
return 0;
}
diff --git a/src/link_rfu.c b/src/link_rfu.c
index 6f45b528e..9291f574e 100644
--- a/src/link_rfu.c
+++ b/src/link_rfu.c
@@ -364,7 +364,7 @@ u32 sub_800BEC0(void)
void rfu_REQ_sendData_wrapper(u8 r2)
{
u8 val;
- if (!gRfuLinkStatus->unk_00)
+ if (!gRfuLinkStatus->parentChild)
{
val = gUnknown_03004140.unk_02;
r2 = 0;
@@ -515,14 +515,14 @@ u8 sub_800C12C(u16 r6, u16 r8)
sub_800D30C(0xF3, 0x01);
return 2;
}
- for (i = 0; i < gRfuLinkStatus->unk_08; i++)
+ for (i = 0; i < gRfuLinkStatus->findParentCount; i++)
{
- if (gRfuLinkStatus->unk_14[i].unk_00 == r6)
+ if (gRfuLinkStatus->partner[i].id == r6)
{
break;
}
}
- if (gRfuLinkStatus->unk_08 == 0 || i == gRfuLinkStatus->unk_08)
+ if (gRfuLinkStatus->findParentCount == 0 || i == gRfuLinkStatus->findParentCount)
{
gUnknown_03004140.unk_14 = 3;
sub_800D30C(0xF3, 0x01);
@@ -561,7 +561,7 @@ void sub_800C210(u8 a0)
gUnknown_03004140.unk_34[i] = 0;
}
}
- i = gRfuLinkStatus->unk_03 & a0;
+ i = gRfuLinkStatus->linkLossSlotFlag & a0;
if (i)
{
sub_800D334(i);
@@ -630,8 +630,8 @@ void sub_800C27C(bool8 a0)
case 16:
gUnknown_03004140.unk_04 = gUnknown_03004140.unk_11;
gUnknown_03004140.unk_05 = gUnknown_03004140.unk_12;
- sub_800D334(gRfuLinkStatus->unk_03);
- gUnknown_03004140.unk_14 = gRfuLinkStatus->unk_03;
+ sub_800D334(gRfuLinkStatus->linkLossSlotFlag);
+ gUnknown_03004140.unk_14 = gRfuLinkStatus->linkLossSlotFlag;
sub_800D30C(0x33, 0x01);
return;
case 17:
@@ -703,7 +703,7 @@ bool8 sub_800C36C(u16 a0)
}
sub_800D610();
}
- if (gRfuLinkStatus->unk_00 == 1)
+ if (gRfuLinkStatus->parentChild == 1)
{
if (sp2)
{
@@ -834,7 +834,7 @@ void sub_800C54C(u32 a0)
case 15:
break;
case 16:
- rfu_REQ_CHILD_startConnectRecovery(gRfuLinkStatus->unk_03);
+ rfu_REQ_CHILD_startConnectRecovery(gRfuLinkStatus->linkLossSlotFlag);
break;
case 17:
rfu_REQ_CHILD_pollConnectRecovery();
@@ -857,7 +857,7 @@ void sub_800C54C(u32 a0)
gUnknown_03004140.unk_0e = 0;
}
} while (gUnknown_03004140.unk_04 == 18 || gUnknown_03004140.unk_04 == 19);
- if (gRfuLinkStatus->unk_00 != 1 || !sub_800C36C(0))
+ if (gRfuLinkStatus->parentChild != 1 || !sub_800C36C(0))
{
sub_800CF34();
sub_800D158();
@@ -910,7 +910,7 @@ static void sub_800C744(u32 a0)
static void sub_800C7B4(u16 r8, u16 r6)
{
u8 sp0;
- register u8 *stwiRecvBuffer asm("r0");
+ register struct RfuIntrStruct *stwiRecvBuffer asm("r0");
u8 *tmp;
u8 i;
@@ -983,7 +983,7 @@ static void sub_800C7B4(u16 r8, u16 r6)
{
sub_800D30C(0x20, 0x01);
}
- if (gUnknown_03004140.unk_0b && gUnknown_03004140.unk_1a != 1 && gRfuLinkStatus->unk_08 == 4)
+ if (gUnknown_03004140.unk_0b && gUnknown_03004140.unk_1a != 1 && gRfuLinkStatus->findParentCount == 4)
{
rfu_REQ_endSearchParent();
rfu_waitREQComplete();
@@ -1059,11 +1059,11 @@ static void sub_800C7B4(u16 r8, u16 r6)
case 50:
if (r6 == 0)
{
- gUnknown_03004140.unk_14 = gRfuLinkStatus->unk_03;
+ gUnknown_03004140.unk_14 = gRfuLinkStatus->linkLossSlotFlag;
gUnknown_03004140.unk_04 = gUnknown_03004140.unk_05 = 17;
for (gUnknown_03004140.unk_10 = 0; gUnknown_03004140.unk_10 < 4; gUnknown_03004140.unk_10 ++)
{
- if ((gRfuLinkStatus->unk_03 >> gUnknown_03004140.unk_10) & 1)
+ if ((gRfuLinkStatus->linkLossSlotFlag >> gUnknown_03004140.unk_10) & 1)
{
break;
}
@@ -1092,7 +1092,7 @@ static void sub_800C7B4(u16 r8, u16 r6)
else
{
gUnknown_03004140.unk_04 = gUnknown_03004140.unk_05 = 0;
- sub_800D334(gRfuLinkStatus->unk_03);
+ sub_800D334(gRfuLinkStatus->linkLossSlotFlag);
gUnknown_03004140.unk_1e = 0x33;
}
gUnknown_03004140.unk_34[gUnknown_03004140.unk_10] = 0;
@@ -1126,7 +1126,7 @@ static void sub_800C7B4(u16 r8, u16 r6)
{
gUnknown_03004140.unk_04 = gUnknown_03004140.unk_05 = 0;
sub_800D610();
- sub_800D334(gRfuLinkStatus->unk_02 | gRfuLinkStatus->unk_03);
+ sub_800D334(gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag);
gUnknown_03004140.unk_14 = sp0;
sub_800D30C(0x25, 0x01);
}
@@ -1148,11 +1148,11 @@ static void sub_800C7B4(u16 r8, u16 r6)
rfu_REQ_RFUStatus();
rfu_waitREQComplete();
rfu_getRFUStatus(&sp0);
- if (sp0 == 0 && gRfuLinkStatus->unk_00 == 0)
+ if (sp0 == 0 && gRfuLinkStatus->parentChild == 0)
{
stwiRecvBuffer = rfu_getSTWIRecvBuffer();
- stwiRecvBuffer[4] = gRfuLinkStatus->unk_02;
- stwiRecvBuffer[5] = 1;
+ stwiRecvBuffer->rxPacketAlloc.rfuPacket8.data[4] = gRfuLinkStatus->connSlotFlag;
+ stwiRecvBuffer->rxPacketAlloc.rfuPacket8.data[5] = 1;
sub_800C36C(0x29);
r6 = 0;
}
@@ -1163,7 +1163,7 @@ static void sub_800C7B4(u16 r8, u16 r6)
if (r6 == 0)
{
stwiRecvBuffer = rfu_getSTWIRecvBuffer();
- gUnknown_03004140.unk_14 = stwiRecvBuffer[8];
+ gUnknown_03004140.unk_14 = stwiRecvBuffer->rxPacketAlloc.rfuPacket8.data[8];
sub_800D358(gUnknown_03004140.unk_14);
if (gUnknown_03004140.unk_30)
{
@@ -1191,7 +1191,7 @@ static void sub_800C7B4(u16 r8, u16 r6)
gUnknown_03004140.unk_00 &= ~gUnknown_03004140.unk_14;
if (gUnknown_03004140.unk_07)
{
- if (gRfuLinkStatus->unk_00 == 0xFF)
+ if (gRfuLinkStatus->parentChild == 0xFF)
{
if (gUnknown_03004140.unk_07 == 8)
{
@@ -1206,7 +1206,7 @@ static void sub_800C7B4(u16 r8, u16 r6)
}
}
}
- if (gRfuLinkStatus->unk_00 == 0xFF)
+ if (gRfuLinkStatus->parentChild == 0xFF)
{
if (gUnknown_03004140.unk_04 == 0)
{
@@ -1221,7 +1221,7 @@ static void sub_800C7B4(u16 r8, u16 r6)
break;
case 38:
sub_800D20C();
- if (gRfuLinkStatus->unk_00 != 0xFF)
+ if (gRfuLinkStatus->parentChild != 0xFF)
{
sub_800D30C(0x50, 0x00);
}
@@ -1246,8 +1246,8 @@ static void sub_800C7B4(u16 r8, u16 r6)
{
if (r8 == 28 && r6 != 0 && gUnknown_03004140.unk_07 == 4)
{
- gRfuLinkStatus->unk_00 = 1;
- gRfuLinkStatus->unk_02 = 15;
+ gRfuLinkStatus->parentChild = 1;
+ gRfuLinkStatus->connSlotFlag = 15;
sub_800D334(15);
rfu_waitREQComplete();
return;
@@ -1279,7 +1279,7 @@ static void sub_800CEB0(u16 r6)
r7 = gUnknown_03004140.unk_0e;
gUnknown_03004140.unk_0e = 0;
gUnknown_03004140.unk_0f = 1;
- if (gRfuLinkStatus->unk_00 == 0)
+ if (gRfuLinkStatus->parentChild == 0)
{
sub_800C36C(r6);
if (gUnknown_03004140.unk_02 != 1)
@@ -1321,8 +1321,8 @@ static void sub_800CF34(void)
if (gUnknown_03004140.unk_04 == 5 || gUnknown_03004140.unk_04 == 6 || gUnknown_03004140.unk_04 == 7 || gUnknown_03004140.unk_04 == 8)
{
- flags = ((gRfuLinkStatus->unk_02 ^ gUnknown_03004140.unk_0c) & gRfuLinkStatus->unk_02) & ~gRfuLinkStatus->unk_07;
- gUnknown_03004140.unk_0c = gRfuLinkStatus->unk_02;
+ flags = ((gRfuLinkStatus->connSlotFlag ^ gUnknown_03004140.unk_0c) & gRfuLinkStatus->connSlotFlag) & ~gRfuLinkStatus->getNameFlag;
+ gUnknown_03004140.unk_0c = gRfuLinkStatus->connSlotFlag;
if (flags)
{
gUnknown_03004140.unk_14 = flags;
@@ -1340,14 +1340,14 @@ static void sub_800CF34(void)
}
else if (gUnknown_03004140.unk_24 & r4)
{
- if (gRfuSlotStatusNI[i]->unk_34 == 0x46)
+ if (gRfuSlotStatusNI[i]->recv.state == 0x46)
{
- if (gRfuSlotStatusNI[i]->unk_61 == 1)
+ if (gRfuSlotStatusNI[i]->recv.dataType == 1)
{
r5 = 0x02;
for (ptr = gUnknown_03004140.unk_20; *ptr != 0xFFFF; ptr++)
{
- if (gRfuLinkStatus->unk_14[i].unk_04 == *ptr)
+ if (gRfuLinkStatus->partner[i].serialNo == *ptr)
{
gUnknown_03004140.unk_00 |= r4;
gUnknown_03004140.unk_01++;
@@ -1386,7 +1386,7 @@ static void sub_800CF34(void)
if (gUnknown_03004140.unk_0d)
{
r5 = 0x01;
- if (gRfuLinkStatus->unk_06 && ((gUnknown_03004140.unk_03 & gUnknown_03004140.unk_00) != gUnknown_03004140.unk_00))
+ if (gRfuLinkStatus->sendSlotUNIFlag && ((gUnknown_03004140.unk_03 & gUnknown_03004140.unk_00) != gUnknown_03004140.unk_00))
{
r5 = 0x00;
}
@@ -1434,7 +1434,7 @@ static void sub_800D158(void)
REG_IME = 0;
if (gUnknown_03004140.unk_04 == 15)
{
- if (--gUnknown_03004140.unk_28[gUnknown_03004140.unk_10] == 0 || gRfuSlotStatusNI[gUnknown_03004140.unk_10]->unk_0 == 0x27)
+ if (--gUnknown_03004140.unk_28[gUnknown_03004140.unk_10] == 0 || gRfuSlotStatusNI[gUnknown_03004140.unk_10]->send.state == 0x27)
{
sub_800D630();
gUnknown_03004140.unk_04 = 24;
@@ -1453,7 +1453,7 @@ static void sub_800D158(void)
if (gUnknown_03004140.unk_02 == 0)
{
gUnknown_03004140.unk_04 = gUnknown_03004140.unk_05 = 0;
- sub_800D334(gRfuLinkStatus->unk_02 | gRfuLinkStatus->unk_03);
+ sub_800D334(gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag);
gUnknown_03004140.unk_14 = 0;
sub_800D30C(0x25, 0x01);
}
@@ -1462,7 +1462,7 @@ static void sub_800D158(void)
static void sub_800D20C(void)
{
- if (gUnknown_03004140.unk_04 == 15 && gRfuSlotStatusNI[gUnknown_03004140.unk_10]->unk_0 == 0x26)
+ if (gUnknown_03004140.unk_04 == 15 && gRfuSlotStatusNI[gUnknown_03004140.unk_10]->send.state == 0x26)
{
gUnknown_03004140.unk_04 = gUnknown_03004140.unk_05 = 0;
rfu_clearSlot(4, gUnknown_03004140.unk_10);
@@ -1490,11 +1490,11 @@ static u8 sub_800D294(void)
const u16 *ptr;
u8 flags = 0x00;
- for (i = 0; i < gRfuLinkStatus->unk_08; i++)
+ for (i = 0; i < gRfuLinkStatus->findParentCount; i++)
{
for (ptr = gUnknown_03004140.unk_20; *ptr != 0xFFFF; ptr++)
{
- if (gRfuLinkStatus->unk_14[i].unk_04 == *ptr)
+ if (gRfuLinkStatus->partner[i].serialNo == *ptr)
{
flags |= (1 << i);
}
@@ -1525,34 +1525,34 @@ static void sub_800D358(u8 a0)
{
u8 i;
- if (gRfuLinkStatus->unk_04)
+ if (gRfuLinkStatus->sendSlotNIFlag)
{
for (i = 0; i < 4; i++)
{
- if (gRfuSlotStatusNI[i]->unk_0 & 0x8000 && gRfuSlotStatusNI[i]->unk_1a & a0)
+ if (gRfuSlotStatusNI[i]->send.state & 0x8000 && gRfuSlotStatusNI[i]->send.bmSlot & a0)
{
- rfu_changeSendTarget(0x20, i, gRfuSlotStatusNI[i]->unk_1a & ~a0);
+ rfu_changeSendTarget(0x20, i, gRfuSlotStatusNI[i]->send.bmSlot & ~a0);
}
}
}
- if (gRfuLinkStatus->unk_05)
+ if (gRfuLinkStatus->recvSlotNIFlag)
{
for (i = 0; i < 4; i++)
{
- if (gRfuSlotStatusNI[i]->unk_34 & 0x8000 && gRfuSlotStatusNI[i]->unk_4e & a0)
+ if (gRfuSlotStatusNI[i]->recv.state & 0x8000 && gRfuSlotStatusNI[i]->recv.bmSlot & a0)
{
rfu_NI_stopReceivingData(i);
}
}
}
- if (gRfuLinkStatus->unk_06)
+ if (gRfuLinkStatus->sendSlotUNIFlag)
{
- gRfuLinkStatus->unk_06 &= ~a0;
+ gRfuLinkStatus->sendSlotUNIFlag &= ~a0;
for (i = 0; i < 4; i++)
{
- if (gRfuSlotStatusUNI[i]->unk_0 == 0x8024 && a0 & gRfuSlotStatusUNI[i]->unk_3)
+ if (gRfuSlotStatusUNI[i]->send.state == 0x8024 && a0 & gRfuSlotStatusUNI[i]->send.bmSlot)
{
- gRfuSlotStatusUNI[i]->unk_3 &= ~a0;
+ gRfuSlotStatusUNI[i]->send.bmSlot &= ~a0;
}
}
}
@@ -1566,32 +1566,32 @@ static void sub_800D434(void)
if (gUnknown_03004140.unk_18)
{
- if (gRfuLinkStatus->unk_04)
+ if (gRfuLinkStatus->sendSlotNIFlag)
{
for (i = 0; i < 4; i ++)
{
- if (gRfuSlotStatusNI[i]->unk_0 & 0x8000)
+ if (gRfuSlotStatusNI[i]->send.state & 0x8000)
{
flags = 0;
for (j = 0; j < 4; j++)
{
- if ((gRfuSlotStatusNI[i]->unk_1a >> j) & 1 && gRfuSlotStatusNI[j]->unk_2 > gUnknown_03004140.unk_18)
+ if ((gRfuSlotStatusNI[i]->send.bmSlot >> j) & 1 && gRfuSlotStatusNI[j]->send.failCounter > gUnknown_03004140.unk_18)
{
flags |= (1 << j);
}
if (flags)
{
- rfu_changeSendTarget(0x20, i, flags ^ gRfuSlotStatusNI[i]->unk_1a);
+ rfu_changeSendTarget(0x20, i, flags ^ gRfuSlotStatusNI[i]->send.bmSlot);
}
}
}
}
}
- if (gRfuLinkStatus->unk_05)
+ if (gRfuLinkStatus->recvSlotNIFlag)
{
for (i = 0; i < 4; i++)
{
- if (gRfuSlotStatusNI[i]->unk_34 & 0x8000 && gRfuSlotStatusNI[i]->unk_36 > gUnknown_03004140.unk_18)
+ if (gRfuSlotStatusNI[i]->recv.state & 0x8000 && gRfuSlotStatusNI[i]->recv.failCounter > gUnknown_03004140.unk_18)
{
rfu_NI_stopReceivingData(i);
}
@@ -1628,7 +1628,7 @@ u8 sub_800D550(u8 a0, u16 a1)
u8 sub_800D594(u16 a0)
{
- if (gRfuLinkStatus->unk_04 | gRfuLinkStatus->unk_05)
+ if (gRfuLinkStatus->sendSlotNIFlag | gRfuLinkStatus->recvSlotNIFlag)
{
gUnknown_03004140.unk_14 = 6;
sub_800D30C(0xf3, 0x01);
@@ -2049,17 +2049,17 @@ void ASCIIToPkmnStr(u8 *q1, const u8 *q2)
u8 sub_800DD1C(u8 maxFlags)
{
u8 flagCount = 0;
- u32 flags = gRfuLinkStatus->unk_02;
+ u32 flags = gRfuLinkStatus->connSlotFlag;
u8 i;
- if (gRfuLinkStatus->unk_00 == 1)
+ if (gRfuLinkStatus->parentChild == 1)
{
for (i = 0; i < 4; flags >>= 1, i++)
{
if (flags & 1)
{
if (maxFlags == flagCount + 1)
- return gRfuLinkStatus->unk_0a[i];
+ return gRfuLinkStatus->strength[i];
flagCount++;
}
}
@@ -2069,7 +2069,7 @@ u8 sub_800DD1C(u8 maxFlags)
for (i = 0; i < 4; flags >>= 1, i++)
{
if (flags & 1)
- return gRfuLinkStatus->unk_0a[i];
+ return gRfuLinkStatus->strength[i];
}
}
return 0;
@@ -2177,10 +2177,10 @@ bool8 sub_800DE7C(struct UnkLinkRfuStruct_02022B14 *buff1, u8 *buff2, u8 idx)
if (gUnknown_03004140.unk_06 == 1)
{
retVal = TRUE;
- if (sub_8010454(gRfuLinkStatus->unk_14[idx].unk_04) && ((gRfuLinkStatus->unk_07 >> idx) & 1))
+ if (sub_8010454(gRfuLinkStatus->partner[idx].serialNo) && ((gRfuLinkStatus->getNameFlag >> idx) & 1))
{
- memcpy(buff1, gRfuLinkStatus->unk_14[idx].gname, 0xD);
- memcpy(buff2, gRfuLinkStatus->unk_14[idx].uname, PLAYER_NAME_LENGTH + 1);
+ memcpy(buff1, gRfuLinkStatus->partner[idx].gname, 0xD);
+ memcpy(buff2, gRfuLinkStatus->partner[idx].uname, PLAYER_NAME_LENGTH + 1);
}
else
{
@@ -2191,10 +2191,10 @@ bool8 sub_800DE7C(struct UnkLinkRfuStruct_02022B14 *buff1, u8 *buff2, u8 idx)
else
{
retVal = FALSE;
- if (sub_8010454(gRfuLinkStatus->unk_14[idx].unk_04))
+ if (sub_8010454(gRfuLinkStatus->partner[idx].serialNo))
{
- memcpy(buff1, gRfuLinkStatus->unk_14[idx].gname, 0xD);
- memcpy(buff2, gRfuLinkStatus->unk_14[idx].uname, PLAYER_NAME_LENGTH + 1);
+ memcpy(buff1, gRfuLinkStatus->partner[idx].gname, 0xD);
+ memcpy(buff2, gRfuLinkStatus->partner[idx].uname, PLAYER_NAME_LENGTH + 1);
}
else
{
@@ -2208,10 +2208,10 @@ bool8 sub_800DE7C(struct UnkLinkRfuStruct_02022B14 *buff1, u8 *buff2, u8 idx)
bool8 sub_800DF34(struct UnkLinkRfuStruct_02022B14 *buff1, u8 *buff2, u8 idx)
{
bool8 retVal = FALSE;
- if (gRfuLinkStatus->unk_14[idx].unk_04 == 0x7F7D)
+ if (gRfuLinkStatus->partner[idx].serialNo == 0x7F7D)
{
- memcpy(buff1, gRfuLinkStatus->unk_14[idx].gname, 0xD);
- memcpy(buff2, gRfuLinkStatus->unk_14[idx].uname, 8);
+ memcpy(buff1, gRfuLinkStatus->partner[idx].gname, 0xD);
+ memcpy(buff2, gRfuLinkStatus->partner[idx].uname, 8);
retVal = TRUE;
}
else
@@ -2237,7 +2237,7 @@ void CreateWirelessStatusIndicatorSprite(u8 x, u8 y)
x = 0xE7;
y = 0x08;
}
- if (gRfuLinkStatus->unk_00 == 1)
+ if (gRfuLinkStatus->parentChild == 1)
{
sprId = CreateSprite(&sWirelessStatusIndicatorSpriteTemplate, x, y, 0);
gSprites[sprId].data[7] = 0x1234;
@@ -2278,12 +2278,12 @@ void LoadWirelessStatusIndicatorSpriteGfx(void)
u8 sub_800E124(void)
{
u8 i;
- u8 flags = gRfuLinkStatus->unk_02;
+ u8 flags = gRfuLinkStatus->connSlotFlag;
for (i = 0; i < 4; i++)
{
if (flags & 1)
{
- return gRfuLinkStatus->unk_0a[i];
+ return gRfuLinkStatus->strength[i];
}
flags >>= 1;
}
@@ -2307,7 +2307,7 @@ void sub_800E174(void)
struct Sprite *sprite = &gSprites[gWirelessStatusIndicatorSpriteId];
u8 signalStrength = 255;
u8 i = 0;
- if (gRfuLinkStatus->unk_00 == 1)
+ if (gRfuLinkStatus->parentChild == 1)
{
for (i = 0; i < GetLinkPlayerCount() - 1; i++)
{
@@ -2530,7 +2530,7 @@ void sub_800E6D0(void)
void sub_800E700(void)
{
- if (!rfu_initializeAPI(gUnknown_03004140.unk_50, sizeof gUnknown_03004140.unk_50, gIntrTable + 1, TRUE))
+ if (!rfu_initializeAPI((void *)gUnknown_03004140.unk_50, sizeof gUnknown_03004140.unk_50, gIntrTable + 1, TRUE))
{
gLinkType = 0;
sub_800AAF4();
@@ -2787,7 +2787,7 @@ void sub_800ED34(u16 unused)
}
rfu_REQ_recvData();
rfu_waitREQComplete();
- if (gRfuSlotStatusUNI[gUnknown_03005000.unk_c3e]->unk_12)
+ if (gRfuSlotStatusUNI[gUnknown_03005000.unk_c3e]->recv.newDataFlag)
{
gUnknown_03005000.unk_cd0++;
sub_800D7D8(&gUnknown_03005000.unk_124, gUnknown_03005000.unk_c3f);
@@ -2858,7 +2858,7 @@ bool8 sub_800EE94(void)
bool32 sub_800EEBC(void)
{
- if (gUnknown_03005000.unk_04 == 7 && !sub_800C12C(gRfuLinkStatus->unk_14[gUnknown_03005000.unk_c3d].unk_00, 240))
+ if (gUnknown_03005000.unk_04 == 7 && !sub_800C12C(gRfuLinkStatus->partner[gUnknown_03005000.unk_c3d].id, 240))
{
gUnknown_03005000.unk_04 = 9;
return TRUE;
@@ -2971,7 +2971,7 @@ bool32 IsRfuRecvQueueEmpty(void)
s32 i;
s32 j;
- if (gRfuLinkStatus->unk_06 == 0)
+ if (gRfuLinkStatus->sendSlotUNIFlag == 0)
{
return FALSE;
}
@@ -2999,7 +2999,7 @@ bool32 sub_800F0F8(void)
else
{
gUnknown_03005000.unk_cdb = 0;
- if ((gUnknown_03005000.unk_ce2 & gRfuLinkStatus->unk_02) == gUnknown_03005000.unk_ce2 && (gUnknown_03005000.unk_ce2 & gRfuLinkStatus->unk_02))
+ if ((gUnknown_03005000.unk_ce2 & gRfuLinkStatus->connSlotFlag) == gUnknown_03005000.unk_ce2 && (gUnknown_03005000.unk_ce2 & gRfuLinkStatus->connSlotFlag))
{
if (!gUnknown_03005000.unk_cdc)
{
@@ -3119,7 +3119,7 @@ bool32 sub_800F1E0(void)
gUnknown_03005000.unk_0e = 0;
}
retval = gUnknown_03005000.unk_cdc;
- return gRfuLinkStatus->unk_06 ? retval & 1 : FALSE;
+ return gRfuLinkStatus->sendSlotUNIFlag ? retval & 1 : FALSE;
}
void sub_800F498(u16 *a0, u8 *a1)
@@ -3162,7 +3162,7 @@ bool32 sub_800F4F0(void)
sub_800F86C(0);
if (gUnknown_03004140.unk_02 == 0 && gUnknown_03005000.unk_ce4)
{
- rfu_REQ_disconnect(gRfuLinkStatus->unk_02 | gRfuLinkStatus->unk_03);
+ rfu_REQ_disconnect(gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag);
rfu_waitREQComplete();
switchval = sub_8011A74();
if (switchval != 1 && switchval != 6 && switchval != 9)
@@ -3305,7 +3305,7 @@ static void sub_800F86C(u8 unused)
return;
// fallthrough
case 0x7700:
- if (gRfuLinkStatus->unk_00 == 0)
+ if (gRfuLinkStatus->parentChild == 0)
{
gUnknown_03005000.playerCount = gRecvCmds[i][1];
gUnknown_03005000.unk_cce = sub_800F74C((u8 *)(gRecvCmds[i] + 2));
@@ -3353,7 +3353,7 @@ static void sub_800F86C(u8 unused)
{
if (gReceivedRemoteLinkPlayers != 0)
{
- if (gRecvCmds[i][1] & gRfuLinkStatus->unk_02)
+ if (gRecvCmds[i][1] & gRfuLinkStatus->connSlotFlag)
{
gReceivedRemoteLinkPlayers = 0;
sub_800D630();
@@ -3611,7 +3611,7 @@ void sub_801011C(void)
void sub_8010148(void)
{
- rfu_REQ_disconnect(gRfuLinkStatus->unk_02 | gRfuLinkStatus->unk_03);
+ rfu_REQ_disconnect(gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag);
rfu_waitREQComplete();
sub_801011C();
}
@@ -3631,7 +3631,7 @@ void LinkRfu_FatalError(void)
{
sub_800D630();
gUnknown_03005000.unk_ce4 = 1;
- gUnknown_03005000.unk_ce3 = gRfuLinkStatus->unk_02 | gRfuLinkStatus->unk_03;
+ gUnknown_03005000.unk_ce3 = gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag;
}
void sub_80101CC(void)
@@ -3821,7 +3821,7 @@ bool8 sub_8010540(void)
{
if (gUnknown_03005000.unk_cd1[i] < 5 || gUnknown_03005000.unk_cd1[i] > 6)
{
- if (gRfuSlotStatusNI[i]->unk_34 == 0x46 || gRfuSlotStatusNI[i]->unk_34 == 0x48)
+ if (gRfuSlotStatusNI[i]->recv.state == 0x46 || gRfuSlotStatusNI[i]->recv.state == 0x48)
{
if (gUnknown_03005000.unk_cd5[i] == 8)
{
@@ -3833,7 +3833,7 @@ bool8 sub_8010540(void)
}
}
- else if (gRfuSlotStatusNI[gUnknown_03005000.unk_c3e]->unk_34 == 0x47)
+ else if (gRfuSlotStatusNI[gUnknown_03005000.unk_c3e]->recv.state == 0x47)
rfu_clearSlot(8, i);
{
@@ -3898,7 +3898,7 @@ u32 sub_8010714(u16 a0, const u8 *a1)
u8 r0 = sub_8011CE4(a1, a0);
if (r0 == 0xFF)
return 2;
- if (gRfuSlotStatusNI[r0]->unk_0 == 0)
+ if (gRfuSlotStatusNI[r0]->send.state == 0)
return 1;
return 0;
}
@@ -3910,7 +3910,7 @@ void sub_8010750(void)
sub_8010540();
for (i = 0; i < 4; i++)
{
- if (gRfuSlotStatusNI[i]->unk_0 == 0x26 || gRfuSlotStatusNI[i]->unk_0 == 0x27)
+ if (gRfuSlotStatusNI[i]->send.state == 0x26 || gRfuSlotStatusNI[i]->send.state == 0x27)
{
if (gUnknown_03005000.unk_cd5[i] == 10)
gUnknown_03005000.unk_cd5[i] = 11;
@@ -3924,16 +3924,16 @@ s32 sub_80107A0(void)
s32 retval = 0;
if (gUnknown_03005000.unk_c85 == 8)
{
- if (gRfuSlotStatusNI[gUnknown_03005000.unk_c3e]->unk_0 == 0x26 || gRfuSlotStatusNI[gUnknown_03005000.unk_c3e]->unk_0 == 0x27)
+ if (gRfuSlotStatusNI[gUnknown_03005000.unk_c3e]->send.state == 0x26 || gRfuSlotStatusNI[gUnknown_03005000.unk_c3e]->send.state == 0x27)
rfu_clearSlot(4, gUnknown_03005000.unk_c3e);
}
- if (gRfuSlotStatusNI[gUnknown_03005000.unk_c3e]->unk_34 == 0x46 || gRfuSlotStatusNI[gUnknown_03005000.unk_c3e]->unk_34 == 0x48)
+ if (gRfuSlotStatusNI[gUnknown_03005000.unk_c3e]->recv.state == 0x46 || gRfuSlotStatusNI[gUnknown_03005000.unk_c3e]->recv.state == 0x48)
{
rfu_clearSlot(8, gUnknown_03005000.unk_c3e);
sub_8011A64(gUnknown_03005000.unk_c86, 0);
retval = gUnknown_03005000.unk_c86;
}
- else if (gRfuSlotStatusNI[gUnknown_03005000.unk_c3e]->unk_34 == 0x47)
+ else if (gRfuSlotStatusNI[gUnknown_03005000.unk_c3e]->recv.state == 0x47)
{
rfu_clearSlot(8, gUnknown_03005000.unk_c3e);
retval = 6;
@@ -4370,7 +4370,7 @@ void sub_801120C(u8 a0, u8 unused1)
{
if ((gUnknown_03004140.unk_14 >> i) & 1)
{
- struct UnkLinkRfuStruct_02022B14 *structPtr = (void *)gRfuLinkStatus->unk_14[i].gname;
+ struct UnkLinkRfuStruct_02022B14 *structPtr = (void *)gRfuLinkStatus->partner[i].gname;
if (structPtr->unk_0a_0 == sub_800F7DC()->unk_0a_0)
{
gUnknown_03005000.unk_cd1[i] = 0;
@@ -4528,7 +4528,7 @@ u8 sub_8011628(s32 a0)
{
if ((a0 >> i) & 1)
{
- struct UnkLinkRfuStruct_02022B14 *structPtr = (void *)gRfuLinkStatus->unk_14[i].gname;
+ struct UnkLinkRfuStruct_02022B14 *structPtr = (void *)gRfuLinkStatus->partner[i].gname;
if (structPtr->unk_0a_0 == 0x45)
ret |= (1 << i);
}
@@ -4629,7 +4629,7 @@ void sub_8011674(u8 a0, u8 unused1)
break;
case 0x32:
gUnknown_03005000.unk_f0 = 3;
- if (gRfuLinkStatus->unk_00 == 0)
+ if (gRfuLinkStatus->parentChild == 0)
gUnknown_03005000.unk_c3c = 1;
break;
case 0x30:
@@ -4654,7 +4654,7 @@ void sub_8011674(u8 a0, u8 unused1)
sub_800C27C(0);
}
- if (gRfuLinkStatus->unk_00 == 0xFF && gUnknown_03004140.unk_07 == 0 && FuncIsActiveTask(sub_800EB44) == TRUE)
+ if (gRfuLinkStatus->parentChild == 0xFF && gUnknown_03004140.unk_07 == 0 && FuncIsActiveTask(sub_800EB44) == TRUE)
gUnknown_03005000.unk_04 = 0x11;
sub_8011A64(2, a0);
@@ -4825,13 +4825,13 @@ u8 sub_8011CE4(const u8 *a0, u16 a1)
for (i = 0; i < 4; i++)
{
- u16 trainerId = ReadU16(gRfuLinkStatus->unk_14[i].gname + 2);
- if (sub_8010454(gRfuLinkStatus->unk_14[i].unk_04)
- && !StringCompare(a0, gRfuLinkStatus->unk_14[i].uname)
+ u16 trainerId = ReadU16(gRfuLinkStatus->partner[i].gname + 2);
+ if (sub_8010454(gRfuLinkStatus->partner[i].serialNo)
+ && !StringCompare(a0, gRfuLinkStatus->partner[i].uname)
&& a1 == trainerId)
{
ret = i;
- if (gRfuLinkStatus->unk_14[i].unk_02 != 0xFF)
+ if (gRfuLinkStatus->partner[i].slot != 0xFF)
break;
}
}
@@ -4911,7 +4911,7 @@ void sub_8011EF4(u8 taskId)
u8 id = sub_8011CE4((u8*)data, ReadU16(&data[8]));
if (id != 0xFF)
{
- if (gRfuLinkStatus->unk_14[id].unk_02 != 0xFF)
+ if (gRfuLinkStatus->partner[id].slot != 0xFF)
{
gUnknown_03005000.unk_c3d = id;
if (sub_800EEBC())
@@ -5006,9 +5006,9 @@ void sub_801209C(u8 taskId)
u8 id = sub_8011CE4(gUnknown_03005000.playerName, trainerId);
if (id != 0xFF)
{
- if (!sub_801200C(gTasks[taskId].data[1], (void *)gRfuLinkStatus->unk_14[id].gname))
+ if (!sub_801200C(gTasks[taskId].data[1], (void *)gRfuLinkStatus->partner[id].gname))
{
- if (gRfuLinkStatus->unk_14[id].unk_02 != 0xFF && !sub_800C12C(gRfuLinkStatus->unk_14[id].unk_00, 0x5A))
+ if (gRfuLinkStatus->partner[id].slot != 0xFF && !sub_800C12C(gRfuLinkStatus->partner[id].id, 0x5A))
{
gUnknown_03005000.unk_04 = 0xA;
DestroyTask(taskId);
@@ -5081,17 +5081,17 @@ void sub_801229C(void)
s32 i, j;
nullsub_13(GetBlockReceivedStatus(), 0x1C, 0x13, 2);
- nullsub_13(gRfuLinkStatus->unk_02, 0x14, 1, 1);
- nullsub_13(gRfuLinkStatus->unk_03, 0x17, 1, 1);
+ nullsub_13(gRfuLinkStatus->connSlotFlag, 0x14, 1, 1);
+ nullsub_13(gRfuLinkStatus->linkLossSlotFlag, 0x17, 1, 1);
if (gUnknown_03005000.unk_0c == 1)
{
for (i = 0; i < 4; i++)
{
- if ((gRfuLinkStatus->unk_07 >> i) & 1)
+ if ((gRfuLinkStatus->getNameFlag >> i) & 1)
{
- nullsub_13(gRfuLinkStatus->unk_14[i].unk_04, 1, i + 3, 4);
- nullsub_5((void*)gRfuLinkStatus->unk_14[i].gname, 6, i + 3);
- nullsub_5(gRfuLinkStatus->unk_14[i].uname, 0x16, i + 3);
+ nullsub_13(gRfuLinkStatus->partner[i].serialNo, 1, i + 3, 4);
+ nullsub_5((void*)gRfuLinkStatus->partner[i].gname, 6, i + 3);
+ nullsub_5(gRfuLinkStatus->partner[i].uname, 0x16, i + 3);
}
}
for (i = 0; i < 4; i++)
@@ -5103,7 +5103,7 @@ void sub_801229C(void)
}
nullsub_5(gUnknown_082ED868, 1, 0xF);
}
- else if (gRfuLinkStatus->unk_02 != 0 && gRfuLinkStatus->unk_07 != 0)
+ else if (gRfuLinkStatus->connSlotFlag != 0 && gRfuLinkStatus->getNameFlag != 0)
{
for (i = 0; i < 4; i++)
{
@@ -5111,19 +5111,19 @@ void sub_801229C(void)
nullsub_5(gUnknown_082ED84B, 6, i + 3);
nullsub_5(gUnknown_082ED85B, 0x16, i + 3);
}
- nullsub_13(gRfuLinkStatus->unk_14[gUnknown_03005000.unk_c3e].unk_04, 1, 3, 4);
- nullsub_5((void*)gRfuLinkStatus->unk_14[gUnknown_03005000.unk_c3e].gname, 6, 3);
- nullsub_5(gRfuLinkStatus->unk_14[gUnknown_03005000.unk_c3e].uname, 0x16, 3);
+ nullsub_13(gRfuLinkStatus->partner[gUnknown_03005000.unk_c3e].serialNo, 1, 3, 4);
+ nullsub_5((void*)gRfuLinkStatus->partner[gUnknown_03005000.unk_c3e].gname, 6, 3);
+ nullsub_5(gRfuLinkStatus->partner[gUnknown_03005000.unk_c3e].uname, 0x16, 3);
}
else
{
- for (i = 0; i < gRfuLinkStatus->unk_08; i++)
+ for (i = 0; i < gRfuLinkStatus->findParentCount; i++)
{
- if (gRfuLinkStatus->unk_14[i].unk_02 != 0xFF)
+ if (gRfuLinkStatus->partner[i].slot != 0xFF)
{
- nullsub_13(gRfuLinkStatus->unk_14[i].unk_04, 1, i + 3, 4);
- nullsub_13(gRfuLinkStatus->unk_14[i].unk_00, 6, i + 3, 4);
- nullsub_5(gRfuLinkStatus->unk_14[i].uname, 0x16, i + 3);
+ nullsub_13(gRfuLinkStatus->partner[i].serialNo, 1, i + 3, 4);
+ nullsub_13(gRfuLinkStatus->partner[i].id, 6, i + 3, 4);
+ nullsub_5(gRfuLinkStatus->partner[i].uname, 0x16, i + 3);
}
}
for (; i < 4; i++)
diff --git a/src/trade.c b/src/trade.c
index 9abc61428..bd97471e3 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -254,7 +254,7 @@ static bool32 sub_80771BC(void)
{
if (gUnknown_02022C2C == 29)
{
- if (gRfuSlotStatusNI[sub_800E87C(gUnknown_03004140.unk_00)]->unk_0 == 0)
+ if (gRfuSlotStatusNI[sub_800E87C(gUnknown_03004140.unk_00)]->send.state == 0)
return TRUE;
else
return FALSE;
diff --git a/src/union_room.c b/src/union_room.c
index 9cb3bec79..6098ce349 100644
--- a/src/union_room.c
+++ b/src/union_room.c
@@ -4077,7 +4077,7 @@ s32 sub_8017EA0(u8 *dst, u32 gender, u16 *arg2, struct UnkStruct_URoom *arg3)
StringCopy(arg3->field_58 + 0x10, gSpeciesNames[sUnionRoomTrade.playerSpecies]);
for (i = 0; i < 4; i++)
{
- if (gRfuLinkStatus->unk_14[i].unk_04 == 2)
+ if (gRfuLinkStatus->partner[i].serialNo == 2)
{
ConvertIntToDecimalStringN(arg3->field_58 + 0x20, arg2[2], STR_CONV_MODE_LEFT_ALIGN, 3);
StringCopy(arg3->field_58 + 0x30, gSpeciesNames[arg2[1]]);