summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGriffinR <griffin.g.richards@gmail.com>2020-06-08 00:45:06 -0400
committerGriffinR <griffin.g.richards@gmail.com>2020-06-08 15:24:25 -0400
commit35867f531bbcfaf360045160734a1ff09ce0f6d8 (patch)
tree91ab76846dd79dd2df56e49f309dcb56142ea767 /src
parentc98342c9730175e57c0cf242292d5ccad61b471d (diff)
Some link rfu cleanup / link.c documentation
Diffstat (limited to 'src')
-rw-r--r--src/berry_blender.c4
-rw-r--r--src/cable_club.c16
-rw-r--r--src/contest_link_80FC4F4.c2
-rw-r--r--src/dodrio_berry_picking.c6
-rw-r--r--src/field_screen_effect.c4
-rw-r--r--src/link.c162
-rw-r--r--src/link_rfu_2.c190
-rw-r--r--src/link_rfu_3.c231
-rw-r--r--src/record_mixing.c4
-rw-r--r--src/start_menu.c2
-rw-r--r--src/union_room.c2
11 files changed, 311 insertions, 312 deletions
diff --git a/src/berry_blender.c b/src/berry_blender.c
index dfa378552..f999b750b 100644
--- a/src/berry_blender.c
+++ b/src/berry_blender.c
@@ -1246,7 +1246,7 @@ static void sub_8080018(void)
if (++sBerryBlenderData->framesToWait > 20)
{
ClearDialogWindowAndFrameToTransparent(4, TRUE);
- if (GetBlockReceivedStatus() == sub_800A9D8())
+ if (GetBlockReceivedStatus() == GetLinkPlayerCountAsBitFlags())
{
for (i = 0; i < GetLinkPlayerCount(); i++)
{
@@ -1664,7 +1664,7 @@ static void sub_80808D4(void)
static void sub_8080DF8(void)
{
s32 i;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < CMD_LENGTH / 2; i++)
{
gSendCmd[0] = 0;
gSendCmd[2] = 0;
diff --git a/src/cable_club.c b/src/cable_club.c
index ffd7bcd8f..15e468390 100644
--- a/src/cable_club.c
+++ b/src/cable_club.c
@@ -283,7 +283,7 @@ static void Task_LinkupAwaitConfirmation(u8 taskId)
if (linkPlayerCount < tMinPlayers)
return;
- sub_800AA04(linkPlayerCount);
+ SaveLinkPlayers(linkPlayerCount);
ClearLinkPlayerCountWindow(tWindowId);
ConvertIntToDecimalStringN(gStringVar1, linkPlayerCount, STR_CONV_MODE_LEFT_ALIGN, 1);
ShowFieldAutoScrollMessage(gText_ConfirmStartLinkWithXPlayers);
@@ -372,7 +372,7 @@ static void Task_LinkupExchangeDataWithLeader(u8 taskId)
{
gFieldLinkPlayerCount = GetLinkPlayerCount_2();
gLocalLinkPlayerId = GetMultiplayerId();
- sub_800AA04(gFieldLinkPlayerCount);
+ SaveLinkPlayers(gFieldLinkPlayerCount);
card = (struct TrainerCard *)gBlockSendBuffer;
TrainerCard_GenerateCardForPlayer(card);
card->monSpecies[0] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[0] - 1], MON_DATA_SPECIES, NULL);
@@ -420,7 +420,7 @@ static void Task_LinkupCheckStatusAfterConfirm(u8 taskId)
{
gFieldLinkPlayerCount = GetLinkPlayerCount_2();
gLocalLinkPlayerId = GetMultiplayerId();
- sub_800AA04(gFieldLinkPlayerCount);
+ SaveLinkPlayers(gFieldLinkPlayerCount);
card = (struct TrainerCard *)gBlockSendBuffer;
TrainerCard_GenerateCardForPlayer(card);
card->monSpecies[0] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[0] - 1], MON_DATA_SPECIES, NULL);
@@ -516,7 +516,7 @@ static void Task_LinkupAwaitTrainerCardData(u8 taskId)
if (CheckLinkErrored(taskId) == TRUE)
return;
- if (GetBlockReceivedStatus() != sub_800A9A8())
+ if (GetBlockReceivedStatus() != GetSavedLinkPlayerCountAsBitFlags())
return;
for (index = 0; index < GetLinkPlayerCount(); index++)
@@ -800,8 +800,8 @@ static void Task_ReestablishLinkAwaitConfirmation(u8 taskId)
if (gReceivedRemoteLinkPlayers == TRUE
&& IsLinkPlayerDataExchangeComplete() == TRUE)
{
- sub_800AB18();
- sub_8009F18();
+ CheckLinkPlayersMatchSaved();
+ StartSendingKeysToLink();
DestroyTask(taskId);
}
}
@@ -901,7 +901,7 @@ static void Task_StartWirelessCableClubBattle(u8 taskId)
tState = 3;
break;
case 3:
- if (GetBlockReceivedStatus() == sub_800A9D8())
+ if (GetBlockReceivedStatus() == GetLinkPlayerCountAsBitFlags())
{
for (i = 0; i < GetLinkPlayerCount(); i++)
{
@@ -1236,7 +1236,7 @@ void Task_WaitForLinkPlayerConnection(u8 taskId)
// Players connected, destroy task
if (gWirelessCommType == 0)
{
- if (!sub_800AA60())
+ if (!DoesLinkPlayerCountMatchSaved())
{
CloseLink();
SetMainCallback2(CB2_LinkError);
diff --git a/src/contest_link_80FC4F4.c b/src/contest_link_80FC4F4.c
index d6cfea638..64591e00b 100644
--- a/src/contest_link_80FC4F4.c
+++ b/src/contest_link_80FC4F4.c
@@ -36,7 +36,7 @@ bool8 sub_80FC530(u8 arg0)
bool8 sub_80FC55C(void)
{
- if (GetBlockReceivedStatus() == sub_800A9D8())
+ if (GetBlockReceivedStatus() == GetLinkPlayerCountAsBitFlags())
{
ResetBlockReceivedFlags();
return TRUE;
diff --git a/src/dodrio_berry_picking.c b/src/dodrio_berry_picking.c
index ccb1e28eb..cfc5643b4 100644
--- a/src/dodrio_berry_picking.c
+++ b/src/dodrio_berry_picking.c
@@ -832,9 +832,9 @@ static void sub_8025158(void)
static bool32 sub_8025170(void)
{
- u8 r4 = GetBlockReceivedStatus();
- u8 r0 = sub_800A9D8();
- if (r4 == r0)
+ u8 recvStatus = GetBlockReceivedStatus();
+ u8 playerFlags = GetLinkPlayerCountAsBitFlags();
+ if (recvStatus == playerFlags)
{
ResetBlockReceivedFlags();
return TRUE;
diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c
index e5815e6ae..b1ca8b831 100644
--- a/src/field_screen_effect.c
+++ b/src/field_screen_effect.c
@@ -215,7 +215,7 @@ static void Task_ReturnToFieldWirelessLink(u8 taskId)
case 2:
if (WaitForWeatherFadeIn() == TRUE)
{
- sub_8009F18();
+ StartSendingKeysToLink();
ScriptContext2_Disable();
DestroyTask(taskId);
}
@@ -240,7 +240,7 @@ void Task_ReturnToFieldRecordMixing(u8 taskId)
}
break;
case 2:
- sub_8009F18();
+ StartSendingKeysToLink();
ResetAllMultiplayerState();
ScriptContext2_Disable();
DestroyTask(taskId);
diff --git a/src/link.c b/src/link.c
index 3e4cc0c05..2f19d7aea 100644
--- a/src/link.c
+++ b/src/link.c
@@ -1,5 +1,3 @@
-
-// Includes
#include "global.h"
#include "m4a.h"
#include "malloc.h"
@@ -30,10 +28,6 @@
#include "constants/rgb.h"
#include "constants/trade.h"
-extern u16 gHeldKeyCodeToSend;
-
-// Static type declarations
-
struct BlockTransfer
{
u16 pos;
@@ -51,15 +45,13 @@ struct LinkTestBGInfo
u32 dummy_C;
};
-// Static RAM declarations
-
static struct BlockTransfer sBlockSend;
static struct BlockTransfer sBlockRecv[MAX_LINK_PLAYERS];
static u32 sBlockSendDelayCounter;
-static u32 gUnknown_03000D54;
-static u8 gUnknown_03000D58;
+static bool32 sDummy1; // Never read
+static bool8 sDummy2; // Never assigned, read in unused function
static u32 sPlayerDataExchangeStatus;
-static u32 gUnknown_03000D60;
+static bool32 sDummy3; // Never read
static u8 sLinkTestLastBlockSendPos;
static u8 sLinkTestLastBlockRecvPos[MAX_LINK_PLAYERS];
static u8 sNumVBlanksWithoutSerialIntr;
@@ -74,15 +66,15 @@ u32 gLinkDebugSeed;
struct LinkPlayerBlock gLocalLinkPlayerBlock;
bool8 gLinkErrorOccurred;
u32 gLinkDebugFlags;
-u32 gFiller_03003074;
+u32 gLinkFiller1;
bool8 gRemoteLinkPlayersNotReceived[MAX_LINK_PLAYERS];
u8 gBlockReceivedStatus[MAX_LINK_PLAYERS];
-u32 gFiller_03003080;
+u32 gLinkFiller2;
u16 gLinkHeldKeys;
u16 gRecvCmds[MAX_RFU_PLAYERS][CMD_LENGTH];
u32 gLinkStatus;
-bool8 gUnknown_030030E4;
-bool8 gUnknown_030030E8;
+bool8 gLinkDummy1; // Never read
+bool8 gLinkDummy2; // Never read
bool8 gUnknown_030030EC[MAX_LINK_PLAYERS];
bool8 gUnknown_030030F0[MAX_LINK_PLAYERS];
u16 gUnknown_030030F4;
@@ -97,15 +89,15 @@ void (*gLinkCallback)(void);
u8 gShouldAdvanceLinkState;
u16 gLinkTestBlockChecksums[MAX_LINK_PLAYERS];
u8 gBlockRequestType;
-u32 gFiller_03003154;
-u32 gFiller_03003158;
-u32 gFiller_0300315c;
+u32 gLinkFiller3;
+u32 gLinkFiller4;
+u32 gLinkFiller5;
u8 gLastSendQueueCount;
struct Link gLink;
u8 gLastRecvQueueCount;
u16 gLinkSavedIme;
-u32 gFiller_03004138;
-u32 gFiller_0300413C;
+u32 gLinkFiller6;
+u32 gLinkFiller7;
EWRAM_DATA u8 gLinkTestDebugValuesEnabled = 0;
EWRAM_DATA u8 gUnknown_020223BD = 0;
@@ -130,10 +122,10 @@ static EWRAM_DATA void *sLinkErrorBgTilemapBuffer = NULL;
// Static ROM declarations
static void InitLocalLinkPlayer(void);
-static void sub_80096BC(void);
+static void VBlankCB_LinkError(void);
static void CB2_LinkTest(void);
static void ProcessRecvCmds(u8 unused);
-static void sub_8009F70(void);
+static void LinkCB_SendHeldKeys(void);
static void ResetBlockSend(void);
static bool32 InitBlockSend(const void *src, size_t size);
static void LinkCB_BlockSendBegin(void);
@@ -243,7 +235,7 @@ static const u8 sUnused_082ED224[] = {0x00, 0xFF, 0xFE, 0xFF, 0x00};
bool8 IsWirelessAdapterConnected(void)
{
SetWirelessCommType1();
- sub_800E700();
+ InitRFUAPI();
if (rfu_LMAN_REQBN_softReset_and_checkID() == 0x8001)
{
rfu_REQ_stopMode();
@@ -301,7 +293,7 @@ void LinkTestScreen(void)
ResetSpriteData();
FreeAllSpritePalettes();
ResetTasks();
- SetVBlankCallback(sub_80096BC);
+ SetVBlankCallback(VBlankCB_LinkError);
ResetBlockSend();
gLinkType = LINKTYPE_TRADE;
OpenLink();
@@ -317,7 +309,7 @@ void LinkTestScreen(void)
AnimateSprites();
BuildOamBuffer();
UpdatePaletteFade();
- gUnknown_03000D60 = 0;
+ sDummy3 = FALSE;
InitLocalLinkPlayer();
CreateTask(Task_PrintTestData, 0);
SetMainCallback2(CB2_LinkTest);
@@ -344,7 +336,7 @@ static void InitLocalLinkPlayer(void)
}
}
-static void sub_80096BC(void)
+static void VBlankCB_LinkError(void)
{
LoadOam();
ProcessSpriteCopyRequests();
@@ -355,9 +347,9 @@ static void InitLink(void)
{
int i;
- for (i = 0; i < 8; i++)
+ for (i = 0; i < CMD_LENGTH; i++)
{
- gSendCmd[i] = 0xefff;
+ gSendCmd[i] = 0xEfff;
}
gLinkOpen = TRUE;
EnableSerial();
@@ -386,15 +378,15 @@ void OpenLink(void)
gSuppressLinkErrorMessage = FALSE;
ResetBlockReceivedFlags();
ResetBlockSend();
- gUnknown_03000D54 = 0;
- gUnknown_030030E8 = FALSE;
- gUnknown_030030E4 = FALSE;
+ sDummy1 = FALSE;
+ gLinkDummy2 = FALSE;
+ gLinkDummy1 = FALSE;
gUnknown_030030F4 = 0;
CreateTask(Task_TriggerHandshake, 2);
}
else
{
- sub_800E700();
+ InitRFUAPI();
}
gReceivedRemoteLinkPlayers = 0;
for (i = 0; i < MAX_LINK_PLAYERS; i++)
@@ -503,7 +495,7 @@ u16 LinkMain2(const u16 *heldKeys)
{
return 0;
}
- for (i = 0; i < 8; i++)
+ for (i = 0; i < CMD_LENGTH; i++)
{
gSendCmd[i] = 0;
}
@@ -566,10 +558,10 @@ static void ProcessRecvCmds(u8 unused)
gLinkPartnersHeldKeys[i] = gRecvCmds[i][1];
break;
case LINKCMD_0x5555:
- gUnknown_030030E8 = TRUE;
+ gLinkDummy2 = TRUE;
break;
case LINKCMD_0x5566:
- gUnknown_030030E8 = TRUE;
+ gLinkDummy2 = TRUE;
break;
case LINKCMD_INIT_BLOCK:
{
@@ -726,70 +718,56 @@ static void BuildSendCmd(u16 command)
}
}
-void sub_8009F18(void)
+void StartSendingKeysToLink(void)
{
if (gWirelessCommType)
- {
StartSendingKeysToRfu();
- }
- gLinkCallback = sub_8009F70;
+
+ gLinkCallback = LinkCB_SendHeldKeys;
}
bool32 IsSendingKeysToLink(void)
{
if (gWirelessCommType)
- {
return IsSendingKeysToRfu();
- }
- if (gLinkCallback == sub_8009F70)
- {
+
+ if (gLinkCallback == LinkCB_SendHeldKeys)
return TRUE;
- }
+
return FALSE;
}
-static void sub_8009F70(void)
+static void LinkCB_SendHeldKeys(void)
{
if (gReceivedRemoteLinkPlayers == TRUE)
- {
BuildSendCmd(LINKCMD_SEND_HELD_KEYS_2);
- }
}
void ClearLinkCallback(void)
{
if (gWirelessCommType)
- {
ClearLinkRfuCallback();
- }
else
- {
gLinkCallback = NULL;
- }
}
void ClearLinkCallback_2(void)
{
if (gWirelessCommType)
- {
ClearLinkRfuCallback();
- }
else
- {
gLinkCallback = NULL;
- }
}
u8 GetLinkPlayerCount(void)
{
if (gWirelessCommType)
- {
return Rfu_GetLinkPlayerCount();
- }
+
return EXTRACT_PLAYER_COUNT(gLinkStatus);
}
-static int sub_8009FF8(u32 version1, u32 version2)
+static int AreAnyLinkPlayersUsingVersions(u32 version1, u32 version2)
{
int i;
u8 nPlayers;
@@ -797,22 +775,22 @@ static int sub_8009FF8(u32 version1, u32 version2)
nPlayers = GetLinkPlayerCount();
for (i = 0; i < nPlayers; i++)
{
- if ((gLinkPlayers[i].version & 0xFF) == version1 || (gLinkPlayers[i].version & 0xFF) == version2)
- {
+ if ((gLinkPlayers[i].version & 0xFF) == version1
+ || (gLinkPlayers[i].version & 0xFF) == version2)
return 1;
- }
}
return -1;
}
-u32 sub_800A03C(void)
+u32 LinkDummy_Return2(void)
{
return 2;
}
-bool32 sub_800A040(void)
+// Unused
+static bool32 IsFullLinkGroupWithNoRS(void)
{
- if (GetLinkPlayerCount() != 4 || sub_8009FF8(VERSION_RUBY, VERSION_SAPPHIRE) < 0)
+ if (GetLinkPlayerCount() != MAX_LINK_PLAYERS || AreAnyLinkPlayersUsingVersions(VERSION_RUBY, VERSION_SAPPHIRE) < 0)
{
return FALSE;
}
@@ -821,18 +799,18 @@ bool32 sub_800A040(void)
bool32 Link_AnyPartnersPlayingRubyOrSapphire(void)
{
- if (sub_8009FF8(VERSION_RUBY, VERSION_SAPPHIRE) >= 0)
+ if (AreAnyLinkPlayersUsingVersions(VERSION_RUBY, VERSION_SAPPHIRE) >= 0)
{
return TRUE;
}
return FALSE;
}
-bool32 sub_800A07C(void)
+bool32 Link_AnyPartnersPlayingFRLG_JP(void)
{
int i;
- i = sub_8009FF8(VERSION_FIRE_RED, VERSION_LEAF_GREEN);
+ i = AreAnyLinkPlayersUsingVersions(VERSION_FIRE_RED, VERSION_LEAF_GREEN);
if (i >= 0 && gLinkPlayers[i].language == LANGUAGE_JAPANESE)
{
return TRUE;
@@ -983,7 +961,7 @@ static bool32 InitBlockSend(const void *src, size_t size)
sBlockSend.active = TRUE;
sBlockSend.size = size;
sBlockSend.pos = 0;
- if (size > 0x100)
+ if (size > BLOCK_BUFFER_SIZE)
{
sBlockSend.src = src;
}
@@ -1016,7 +994,7 @@ static void LinkCB_BlockSend(void)
src = sBlockSend.src;
gSendCmd[0] = LINKCMD_CONT_BLOCK;
- for (i = 0; i < 7; i++)
+ for (i = 0; i < CMD_LENGTH - 1; i++)
{
gSendCmd[i + 1] = (src[sBlockSend.pos + i * 2 + 1] << 8) | src[sBlockSend.pos + i * 2];
}
@@ -1313,7 +1291,7 @@ void SetLinkDebugValues(u32 seed, u32 flags)
gLinkDebugFlags = flags;
}
-u8 sub_800A9A8(void)
+u8 GetSavedLinkPlayerCountAsBitFlags(void)
{
int i;
u8 flags;
@@ -1326,7 +1304,7 @@ u8 sub_800A9A8(void)
return flags;
}
-u8 sub_800A9D8(void)
+u8 GetLinkPlayerCountAsBitFlags(void)
{
int i;
u8 flags;
@@ -1339,11 +1317,11 @@ u8 sub_800A9D8(void)
return flags;
}
-void sub_800AA04(u8 a0)
+void SaveLinkPlayers(u8 playerCount)
{
int i;
- gSavedLinkPlayerCount = a0;
+ gSavedLinkPlayerCount = playerCount;
gSavedMultiplayerId = GetMultiplayerId();
for (i = 0; i < MAX_RFU_PLAYERS; i++)
{
@@ -1358,17 +1336,17 @@ u8 GetSavedPlayerCount(void)
return gSavedLinkPlayerCount;
}
-u8 sub_800AA54(void)
+// Unused
+static u8 GetSavedMultiplayerId(void)
{
return gSavedMultiplayerId;
}
-bool8 sub_800AA60(void)
+bool8 DoesLinkPlayerCountMatchSaved(void)
{
int i;
- unsigned count;
+ u32 count = 0;
- count = 0;
for (i = 0; i < gSavedLinkPlayerCount; i++)
{
if (gLinkPlayers[i].trainerId == gSavedLinkPlayers[i].trainerId)
@@ -1376,9 +1354,7 @@ bool8 sub_800AA60(void)
if (gLinkType == LINKTYPE_BATTLE_TOWER)
{
if (gLinkType == gLinkPlayers[i].linkType)
- {
count++;
- }
}
else
{
@@ -1396,7 +1372,7 @@ bool8 sub_800AA60(void)
return FALSE;
}
-void sub_800AAF4(void)
+void ClearSavedLinkPlayers(void)
{
int i;
@@ -1407,13 +1383,14 @@ void sub_800AAF4(void)
}
}
-void sub_800AB18(void)
+void CheckLinkPlayersMatchSaved(void)
{
u8 i;
for (i = 0; i < gSavedLinkPlayerCount; i++)
{
- if (gSavedLinkPlayers[i].trainerId != gLinkPlayers[i].trainerId || StringCompare(gSavedLinkPlayers[i].name, gLinkPlayers[i].name) != 0)
+ if (gSavedLinkPlayers[i].trainerId != gLinkPlayers[i].trainerId
+ || StringCompare(gSavedLinkPlayers[i].name, gLinkPlayers[i].name) != 0)
{
gLinkErrorOccurred = TRUE;
CloseLink();
@@ -1442,9 +1419,10 @@ bool8 IsLinkMaster(void)
return EXTRACT_MASTER(gLinkStatus);
}
-u8 sub_800ABE8(void)
+// Unused
+static u8 GetDummy2(void)
{
- return gUnknown_03000D58;
+ return sDummy2;
}
void sub_800ABF4(u16 a0)
@@ -1458,7 +1436,7 @@ void sub_800ABF4(u16 a0)
if (gLinkCallback == NULL)
{
gLinkCallback = sub_800AC80;
- gUnknown_030030E4 = FALSE;
+ gLinkDummy1 = FALSE;
gUnknown_030030F4 = a0;
}
}
@@ -1479,7 +1457,7 @@ void sub_800AC34(void)
else
{
gLinkCallback = sub_800AC80;
- gUnknown_030030E4 = FALSE;
+ gLinkDummy1 = FALSE;
gUnknown_030030F4 = 0;
}
}
@@ -1515,7 +1493,7 @@ static void sub_800ACAC(void)
gLinkVSyncDisabled = TRUE;
CloseLink();
gLinkCallback = NULL;
- gUnknown_030030E4 = TRUE;
+ gLinkDummy1 = TRUE;
}
}
@@ -1534,7 +1512,7 @@ void sub_800AD10(void)
else
{
gLinkCallback = sub_800AD5C;
- gUnknown_030030E4 = FALSE;
+ gLinkDummy1 = FALSE;
gUnknown_030030F4 = 0;
}
}
@@ -1574,7 +1552,7 @@ static void sub_800AD88(void)
gLinkVSyncDisabled = TRUE;
CloseLink();
gLinkCallback = NULL;
- gUnknown_030030E4 = TRUE;
+ gLinkDummy1 = TRUE;
}
}
@@ -1590,7 +1568,7 @@ void sub_800ADF8(void)
{
gLinkCallback = sub_800AE30;
}
- gUnknown_030030E4 = FALSE;
+ gLinkDummy1 = FALSE;
}
}
@@ -1642,7 +1620,7 @@ static void CheckErrorStatus(void)
}
}
-void sub_800AF18(u32 status, u8 lastSendQueueCount, u8 lastRecvQueueCount, u8 unk_06)
+void BufferLinkErrorInfo(u32 status, u8 lastSendQueueCount, u8 lastRecvQueueCount, bool8 unk_06)
{
sLinkErrorBuffer.status = status;
sLinkErrorBuffer.lastSendQueueCount = lastSendQueueCount;
@@ -1673,7 +1651,7 @@ void CB2_LinkError(void)
}
ResetLinkRfuGFLayer();
}
- SetVBlankCallback(sub_80096BC);
+ SetVBlankCallback(VBlankCB_LinkError);
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, sLinkErrorBgTemplates, ARRAY_COUNT(sLinkErrorBgTemplates));
sLinkErrorBgTilemapBuffer = tilemapBuffer = malloc(0x800);
diff --git a/src/link_rfu_2.c b/src/link_rfu_2.c
index 6c6f12077..ac1488167 100644
--- a/src/link_rfu_2.c
+++ b/src/link_rfu_2.c
@@ -28,17 +28,31 @@ struct SioInfo
u8 filler[92];
};
+struct RfuDebug
+{
+ u8 filler0[6];
+ u16 unk_06;
+ u8 filler1[6];
+ vu8 unk_0e;
+ u8 unk_0f;
+ u8 filler2[84];
+ u16 unk_64;
+ u8 filler3[29];
+ u8 unk_83;
+ u8 filler4[88];
+};
+
u32 gf_rfu_REQ_api[RFU_API_BUFF_SIZE_RAM / 4];
struct GFRfuManager Rfu;
-BSS_DATA u8 gUnknown_03000D78[8];
-BSS_DATA u8 sResendBlock8[16];
-BSS_DATA u16 sResendBlock16[8];
+static u8 sHeldKeyCount;
+static u8 sResendBlock8[16];
+static u16 sResendBlock16[8];
EWRAM_DATA struct GFtgtGname gHostRFUtgtGnameBuffer = {};
-EWRAM_DATA ALIGNED(2) u8 gHostRFUtgtUnameBuffer[PLAYER_NAME_LENGTH + 1] = {};
-EWRAM_DATA INIT_PARAM sRfuReqConfig = {};
-EWRAM_DATA struct UnkLinkRfuStruct_02022B44 gUnknown_02022B44 = {};
+EWRAM_DATA u8 gHostRFUtgtUnameBuffer[PLAYER_NAME_LENGTH + 1] = {};
+static EWRAM_DATA INIT_PARAM sRfuReqConfig = {};
+static EWRAM_DATA struct RfuDebug sRfuDebug = {};
static void ResetSendDataManager(struct RfuBlockSend *);
static void sub_800EAB4(void);
@@ -146,8 +160,8 @@ static const struct {
};
static const u16 sAcceptedSerialNos[] = {
- 0x0002, // Pokemon FR/LG/EM
- 0x7f7d,
+ 0x0002,
+ RFU_SERIAL_7F7D,
0x0000,
0xFFFF
};
@@ -225,11 +239,11 @@ void ResetLinkRfuGFLayer(void)
{
Rfu.errorState = 0;
}
- for (i = 0; i < 5; i++)
+ for (i = 0; i < MAX_RFU_PLAYERS; i++)
{
- ResetSendDataManager(Rfu.unk_80 + i);
+ ResetSendDataManager(&Rfu.recvBlock[i]);
}
- ResetSendDataManager(&Rfu.unk_6c);
+ ResetSendDataManager(&Rfu.sendBlock);
RfuRecvQueue_Reset(&Rfu.recvQueue);
RfuSendQueue_Reset(&Rfu.sendQueue);
CpuFill16(0, gSendCmd, sizeof gSendCmd);
@@ -241,7 +255,7 @@ void InitRFU(void)
{
IntrFunc serialIntr = gIntrTable[1];
IntrFunc timerIntr = gIntrTable[2];
- sub_800E700();
+ InitRFUAPI();
rfu_REQ_stopMode();
rfu_waitREQComplete();
REG_IME = 0;
@@ -250,12 +264,12 @@ void InitRFU(void)
REG_IME = INTR_FLAG_VBLANK;
}
-void sub_800E700(void)
+void InitRFUAPI(void)
{
if (!rfu_initializeAPI((void *)gf_rfu_REQ_api, sizeof gf_rfu_REQ_api, gIntrTable + 1, TRUE))
{
gLinkType = 0;
- sub_800AAF4();
+ ClearSavedLinkPlayers();
sub_80111B0(FALSE);
ResetLinkRfuGFLayer();
rfu_setTimerInterrupt(3, gIntrTable + 2);
@@ -288,7 +302,7 @@ static void Task_LinkLeaderSearchForChildren(u8 taskId)
case 5:
break;
case 18:
- Rfu.unk_cdb = 0;
+ Rfu.unk_cdb = FALSE;
rfu_LMAN_setMSCCallback(sub_800EDBC);
sub_800EAB4();
sub_800EAFC();
@@ -392,10 +406,10 @@ static void Task_JoinGroupSearchForParent(u8 taskId)
rfu_UNI_setSendData(bmChildSlot, Rfu.unk_4c, sizeof(Rfu.unk_4c));
gTasks[taskId].data[1] = 8;
DestroyTask(taskId);
- if (gUnknown_02022B44.unk_0f == 0)
+ if (sRfuDebug.unk_0f == 0)
{
Debug_PrintEmpty();
- gUnknown_02022B44.unk_0f++;
+ sRfuDebug.unk_0f++;
}
CreateTask(sub_801084C, 5);
break;
@@ -474,7 +488,7 @@ static void Task_LinkRfu_UnionRoomListen(u8 taskId)
case 15:
break;
case 16:
- Rfu.unk_cdb = 0;
+ Rfu.unk_cdb = FALSE;
rfu_LMAN_setMSCCallback(sub_800EDBC);
UpdateGameData_GroupLockedIn(TRUE);
sub_800EAB4();
@@ -513,7 +527,7 @@ static void sub_800ED34(u16 unused)
{
Rfu.unk_cd0++;
RfuRecvQueue_Enqueue(&Rfu.recvQueue, Rfu.unk_c3f);
- gUnknown_02022B44.unk_06++;
+ sRfuDebug.unk_06++;
UpdateBackupQueue();
rfu_UNI_readySendData(Rfu.childSlot);
rfu_UNI_clearRecvNewDataFlag(Rfu.childSlot);
@@ -523,7 +537,7 @@ static void sub_800ED34(u16 unused)
static void sub_800EDBC(u16 unused)
{
- Rfu.unk_cdb = 1;
+ Rfu.unk_cdb = TRUE;
}
void LinkRfu_Shutdown(void)
@@ -657,11 +671,11 @@ static void sub_800EFB0(void)
static void sub_800F014(void)
{
s32 i;
- for (i = 0; i < 7; i++)
+ for (i = 0; i < CMD_LENGTH - 1; i++)
{
gRecvCmds[0][i] = gSendCmd[i];
}
- for (i = 0; i < 7; i++)
+ for (i = 0; i < CMD_LENGTH - 1; i++)
{
gSendCmd[i] = 0;
}
@@ -695,9 +709,9 @@ bool32 IsRfuRecvQueueEmpty(void)
{
return FALSE;
}
- for (i = 0; i < 5; i++)
+ for (i = 0; i < MAX_RFU_PLAYERS; i++)
{
- for (j = 0; j < 7; j++)
+ for (j = 0; j < CMD_LENGTH - 1; j++)
{
if (gRecvCmds[i][j] != 0)
{
@@ -718,7 +732,7 @@ static bool32 sub_800F0F8(void)
}
else
{
- Rfu.unk_cdb = 0;
+ Rfu.unk_cdb = FALSE;
if ((Rfu.unk_ce2 & gRfuLinkStatus->connSlotFlag) == Rfu.unk_ce2 && (Rfu.unk_ce2 & gRfuLinkStatus->connSlotFlag))
{
if (!Rfu.unk_cdc)
@@ -748,7 +762,7 @@ static bool32 sub_800F0F8(void)
{
rfu_REQ_PARENT_resumeRetransmitAndChange();
}
- Rfu.unk_0e = 1;
+ Rfu.unk_0e = TRUE;
}
}
return FALSE;
@@ -762,10 +776,10 @@ static bool32 sub_800F1E0(void)
u16 j;
u8 retval;
- if (Rfu.state >= 20 && Rfu.unk_0e == 1)
+ if (Rfu.state >= 20 && Rfu.unk_0e == TRUE)
{
rfu_waitREQComplete();
- while (Rfu.unk_cdb == 0)
+ while (Rfu.unk_cdb == FALSE)
{
if (Rfu.errorState != 0)
{
@@ -776,8 +790,8 @@ static bool32 sub_800F1E0(void)
rfu_waitREQComplete();
if ((lman.parentAck_flag & Rfu.unk_ce2) == Rfu.unk_ce2)
{
- Rfu.unk_cdc = 0;
- gUnknown_02022B44.unk_06++;
+ Rfu.unk_cdc = FALSE;
+ sRfuDebug.unk_06++;
flags = lman.acceptSlot_flag;
for (i = 0; i < RFU_CHILD_MAX; i++)
{
@@ -813,7 +827,7 @@ static bool32 sub_800F1E0(void)
CallRfuFunc();
if (Rfu.unk_ce5 && !Rfu.unk_cd9)
{
- gUnknown_02022B44.unk_0e = 0;
+ sRfuDebug.unk_0e = FALSE;
rfu_clearSlot(TYPE_UNI_SEND | TYPE_UNI_RECV, Rfu.unk_cda);
for (i = 0; i < RFU_CHILD_MAX; i++)
{
@@ -833,10 +847,10 @@ static bool32 sub_800F1E0(void)
}
else
{
- Rfu.unk_cdc = 1;
- Rfu.unk_0e = 0;
+ Rfu.unk_cdc = TRUE;
+ Rfu.unk_0e = FALSE;
}
- Rfu.unk_0e = 0;
+ Rfu.unk_0e = FALSE;
}
retval = Rfu.unk_cdc;
return gRfuLinkStatus->sendSlotUNIFlag ? retval & 1 : FALSE;
@@ -914,8 +928,8 @@ static void HandleSendFailure(u8 unused, u32 flags)
{
s32 i, j;
- const u8 *r10 = Rfu.unk_6c.payload;
- for (i = 0; i < Rfu.unk_6c.count; i++)
+ const u8 *r10 = Rfu.sendBlock.payload;
+ for (i = 0; i < Rfu.sendBlock.count; i++)
{
if (!(flags & 1))
{
@@ -932,7 +946,7 @@ static void HandleSendFailure(u8 unused, u32 flags)
j++;j--; // Needed to match;
}
RfuSendQueue_Enqueue(&Rfu.sendQueue, sResendBlock8);
- Rfu.unk_6c.failedFlags |= (1 << i);
+ Rfu.sendBlock.failedFlags |= (1 << i);
}
flags >>= 1;
}
@@ -949,7 +963,7 @@ void Rfu_SetBlockReceivedFlag(u8 linkPlayerId)
void Rfu_ResetBlockReceivedFlag(u8 linkPlayerId)
{
Rfu.blockReceived[linkPlayerId] = FALSE;
- Rfu.unk_80[linkPlayerId].receiving = 0;
+ Rfu.recvBlock[linkPlayerId].receiving = 0;
}
static u8 sub_800F74C(const u8 *a0)
@@ -971,8 +985,8 @@ static void RfuFunc_SendKeysToRfu(void)
&& gHeldKeyCodeToSend != LINK_KEY_CODE_NULL
&& gLinkTransferringData != TRUE)
{
- gUnknown_03000D78[0]++;
- gHeldKeyCodeToSend |= (gUnknown_03000D78[0] << 8);
+ sHeldKeyCount++;
+ gHeldKeyCodeToSend |= (sHeldKeyCount << 8);
RfuPrepareSendBuffer(RFU_COMMAND_0xBE00);
}
}
@@ -1032,28 +1046,28 @@ static void RfuHandleReceiveCommand(u8 unused)
}
break;
case RFU_COMMAND_0x8800:
- if (Rfu.unk_80[i].receiving == 0)
+ if (Rfu.recvBlock[i].receiving == 0)
{
- Rfu.unk_80[i].next = 0;
- Rfu.unk_80[i].count = gRecvCmds[i][1];
- Rfu.unk_80[i].owner = gRecvCmds[i][2];
- Rfu.unk_80[i].receivedFlags = 0;
- Rfu.unk_80[i].receiving = 1;
+ Rfu.recvBlock[i].next = 0;
+ Rfu.recvBlock[i].count = gRecvCmds[i][1];
+ Rfu.recvBlock[i].owner = gRecvCmds[i][2];
+ Rfu.recvBlock[i].receivedFlags = 0;
+ Rfu.recvBlock[i].receiving = 1;
Rfu.blockReceived[i] = FALSE;
}
break;
case RFU_COMMAND_0x8900:
- if (Rfu.unk_80[i].receiving == 1)
+ if (Rfu.recvBlock[i].receiving == 1)
{
- Rfu.unk_80[i].next = gRecvCmds[i][0] & 0xff;
- Rfu.unk_80[i].receivedFlags |= (1 << Rfu.unk_80[i].next);
+ Rfu.recvBlock[i].next = gRecvCmds[i][0] & 0xff;
+ Rfu.recvBlock[i].receivedFlags |= (1 << Rfu.recvBlock[i].next);
for (j = 0; j < 6; j++)
- gBlockRecvBuffer[i][Rfu.unk_80[i].next * 6 + j] = gRecvCmds[i][j + 1];
- if (Rfu.unk_80[i].receivedFlags == sAllBlocksReceived[Rfu.unk_80[i].count])
+ gBlockRecvBuffer[i][Rfu.recvBlock[i].next * 6 + j] = gRecvCmds[i][j + 1];
+ if (Rfu.recvBlock[i].receivedFlags == sAllBlocksReceived[Rfu.recvBlock[i].count])
{
- Rfu.unk_80[i].receiving = 2;
+ Rfu.recvBlock[i].receiving = 2;
Rfu_SetBlockReceivedFlag(i);
- if (GetHostRFUtgtGname()->activity == 0x45 && gReceivedRemoteLinkPlayers != 0 && Rfu.parentChild == MODE_CHILD)
+ if (GetHostRFUtgtGname()->activity == (ACTIVITY_CHAT | IN_UNION_ROOM) && gReceivedRemoteLinkPlayers != 0 && Rfu.parentChild == MODE_CHILD)
ValidateAndReceivePokemonSioInfo(gBlockRecvBuffer);
}
}
@@ -1123,7 +1137,7 @@ static bool8 AreNoPlayersReceiving(void)
for (i = 0; i < MAX_RFU_PLAYERS; i++)
{
- if (Rfu.unk_80[i].receiving)
+ if (Rfu.recvBlock[i].receiving)
return FALSE;
}
return TRUE;
@@ -1135,7 +1149,7 @@ static bool8 sub_800FC88(void)
for (i = 0; i < Rfu.playerCount; i++)
{
- if (Rfu.unk_80[i].receiving != 2 || Rfu.blockReceived[i] != TRUE)
+ if (Rfu.recvBlock[i].receiving != 2 || Rfu.blockReceived[i] != TRUE)
return FALSE;
}
return TRUE;
@@ -1159,7 +1173,7 @@ u8 Rfu_GetBlockReceivedStatus(void)
for (i = 0; i < MAX_RFU_PLAYERS; i++)
{
- if (Rfu.unk_80[i].receiving == 2 && Rfu.blockReceived[i] == TRUE)
+ if (Rfu.recvBlock[i].receiving == 2 && Rfu.blockReceived[i] == TRUE)
{
flags |= (1 << i);
}
@@ -1177,8 +1191,8 @@ static void RfuPrepareSendBuffer(u16 command)
switch (command)
{
case RFU_COMMAND_0x8800:
- gSendCmd[1] = Rfu.unk_6c.count;
- gSendCmd[2] = Rfu.unk_6c.owner + 0x80;
+ gSendCmd[1] = Rfu.sendBlock.count;
+ gSendCmd[2] = Rfu.sendBlock.owner + 0x80;
break;
case RFU_COMMAND_0xA100:
if (AreNoPlayersReceiving())
@@ -1231,23 +1245,23 @@ bool32 Rfu_InitBlockSend(const u8 *src, size_t size)
return FALSE;
if (gSendCmd[0] != 0)
return FALSE;
- if (Rfu.unk_6c.sending)
+ if (Rfu.sendBlock.sending)
{
- gUnknown_02022B44.unk_83++;
+ sRfuDebug.unk_83++;
return FALSE;
}
r4 = (size % 12) != 0;
- Rfu.unk_6c.owner = GetMultiplayerId();
- Rfu.unk_6c.sending = TRUE;
- Rfu.unk_6c.count = (size / 12) + r4;
- Rfu.unk_6c.next = 0;
+ Rfu.sendBlock.owner = GetMultiplayerId();
+ Rfu.sendBlock.sending = TRUE;
+ Rfu.sendBlock.count = (size / 12) + r4;
+ Rfu.sendBlock.next = 0;
if (size > 0x100)
- Rfu.unk_6c.payload = src;
+ Rfu.sendBlock.payload = src;
else
{
if (src != gBlockSendBuffer)
memcpy(gBlockSendBuffer, src, size);
- Rfu.unk_6c.payload = gBlockSendBuffer;
+ Rfu.sendBlock.payload = gBlockSendBuffer;
}
RfuPrepareSendBuffer(RFU_COMMAND_0x8800);
Rfu.callback = HandleBlockSend;
@@ -1276,34 +1290,34 @@ static void HandleBlockSend(void)
static void SendNextBlock(void)
{
s32 i;
- const u8 *src = Rfu.unk_6c.payload;
- gSendCmd[0] = RFU_COMMAND_0x8900 | Rfu.unk_6c.next;
- for (i = 0; i < 7; i++)
- gSendCmd[i + 1] = (src[(i << 1) + Rfu.unk_6c.next * 12 + 1] << 8) | src[(i << 1) + Rfu.unk_6c.next * 12 + 0];
- Rfu.unk_6c.next++;
- if (Rfu.unk_6c.count <= Rfu.unk_6c.next)
- {
- Rfu.unk_6c.sending = FALSE;
+ const u8 *src = Rfu.sendBlock.payload;
+ gSendCmd[0] = RFU_COMMAND_0x8900 | Rfu.sendBlock.next;
+ for (i = 0; i < CMD_LENGTH - 1; i++)
+ gSendCmd[i + 1] = (src[(i << 1) + Rfu.sendBlock.next * 12 + 1] << 8) | src[(i << 1) + Rfu.sendBlock.next * 12 + 0];
+ Rfu.sendBlock.next++;
+ if (Rfu.sendBlock.count <= Rfu.sendBlock.next)
+ {
+ Rfu.sendBlock.sending = FALSE;
Rfu.callback = SendLastBlock;
}
}
static void SendLastBlock(void)
{
- const u8 *src = Rfu.unk_6c.payload;
+ const u8 *src = Rfu.sendBlock.payload;
u8 mpId = GetMultiplayerId();
s32 i;
if (Rfu.parentChild == MODE_CHILD)
{
- gSendCmd[0] = RFU_COMMAND_0x8900 | (Rfu.unk_6c.count - 1);
- for (i = 0; i < 7; i++)
- gSendCmd[i + 1] = (src[(i << 1) + (Rfu.unk_6c.count - 1) * 12 + 1] << 8) | src[(i << 1) + (Rfu.unk_6c.count - 1) * 12 + 0];
- if ((u8)gRecvCmds[mpId][0] == Rfu.unk_6c.count - 1)
+ gSendCmd[0] = RFU_COMMAND_0x8900 | (Rfu.sendBlock.count - 1);
+ for (i = 0; i < CMD_LENGTH - 1; i++)
+ gSendCmd[i + 1] = (src[(i << 1) + (Rfu.sendBlock.count - 1) * 12 + 1] << 8) | src[(i << 1) + (Rfu.sendBlock.count - 1) * 12 + 0];
+ if ((u8)gRecvCmds[mpId][0] == Rfu.sendBlock.count - 1)
{
- if (Rfu.unk_80[mpId].receivedFlags != sAllBlocksReceived[Rfu.unk_80[mpId].count])
+ if (Rfu.recvBlock[mpId].receivedFlags != sAllBlocksReceived[Rfu.recvBlock[mpId].count])
{
- HandleSendFailure(mpId, Rfu.unk_80[mpId].receivedFlags);
- gUnknown_02022B44.unk_64++;
+ HandleSendFailure(mpId, Rfu.recvBlock[mpId].receivedFlags);
+ sRfuDebug.unk_64++;
}
else
Rfu.callback = NULL;
@@ -1898,7 +1912,7 @@ static void RfuCheckErrorStatus(void)
gWirelessCommType = 2;
SetMainCallback2(CB2_LinkError);
gMain.savedCallback = CB2_LinkError;
- sub_800AF18((Rfu.linkmanMsg << 16) | (Rfu.unk_10 << 8) | Rfu.unk_12, Rfu.recvQueue.count, Rfu.sendQueue.count, RfuGetErrorStatus() == 2);
+ BufferLinkErrorInfo((Rfu.linkmanMsg << 16) | (Rfu.unk_10 << 8) | Rfu.unk_12, Rfu.recvQueue.count, Rfu.sendQueue.count, RfuGetErrorStatus() == 2);
Rfu.errorState = 2;
CloseLink();
}
@@ -1964,7 +1978,7 @@ static void CopyPlayerNameToUnameBuffer(void)
void ClearAndInitHostRFUtgtGname(void)
{
memset(&gHostRFUtgtGnameBuffer, 0, RFU_GAME_NAME_LENGTH);
- InitHostRFUtgtGname(&gHostRFUtgtGnameBuffer, 0, FALSE, 0);
+ InitHostRFUtgtGname(&gHostRFUtgtGnameBuffer, ACTIVITY_NONE, FALSE, 0);
}
void SetHostRFUtgtGname(u8 activity, u32 child_sprite_genders, u32 started)
@@ -2160,7 +2174,7 @@ static void sub_801120C(u8 msg, u8 paramCount)
case LMAN_MSG_RFU_FATAL_ERROR:
GetLinkmanErrorParams(msg);
RfuSetErrorStatus(1, msg);
- Rfu.unk_cdb = 1;
+ Rfu.unk_cdb = TRUE;
break;
}
}
@@ -2231,7 +2245,7 @@ void sub_8011404(u8 msg, u8 unused1)
case LMAN_MSG_RFU_FATAL_ERROR:
RfuSetErrorStatus(1, msg);
GetLinkmanErrorParams(msg);
- Rfu.unk_cdb = 1;
+ Rfu.unk_cdb = TRUE;
break;
}
}
@@ -2304,7 +2318,7 @@ static void sub_8011674(u8 msg, u8 paramCount)
Rfu.unk_ce4 = 2;
}
}
- else if (GetHostRFUtgtGname()->activity == 0x54)
+ else if (GetHostRFUtgtGname()->activity == (ACTIVITY_PLYRTALK | IN_UNION_ROOM))
{
rfu_REQ_disconnect(lman.acceptSlot_flag);
rfu_waitREQComplete();
@@ -2408,7 +2422,7 @@ static void sub_8011674(u8 msg, u8 paramCount)
case LMAN_MSG_RFU_FATAL_ERROR:
GetLinkmanErrorParams(msg);
RfuSetErrorStatus(1, msg);
- Rfu.unk_cdb = 0;
+ Rfu.unk_cdb = FALSE;
break;
}
}
diff --git a/src/link_rfu_3.c b/src/link_rfu_3.c
index 4946cb9f2..4393d14ac 100644
--- a/src/link_rfu_3.c
+++ b/src/link_rfu_3.c
@@ -7,9 +7,20 @@
#include "text.h"
#include "event_data.h"
+enum {
+ WIRELESS_STATUS_ANIM_3_BARS,
+ WIRELESS_STATUS_ANIM_2_BARS,
+ WIRELESS_STATUS_ANIM_1_BAR,
+ WIRELESS_STATUS_ANIM_SEARCHING,
+ WIRELESS_STATUS_ANIM_ERROR,
+};
+
+#define UNUSED_QUEUE_NUM_SLOTS 2
+#define UNUSED_QUEUE_SLOT_LENGTH 256
+
struct RfuUnusedQueue
{
- u8 slots[2][256];
+ u8 slots[UNUSED_QUEUE_NUM_SLOTS][UNUSED_QUEUE_SLOT_LENGTH];
vu8 recvSlot;
vu8 sendSlot;
vu8 count;
@@ -234,8 +245,7 @@ static const struct OamData sWirelessStatusIndicatorOamData =
.paletteNum = 0,
};
-static const union AnimCmd sWirelessStatusIndicatorAnim0[] = {
- // 3 bars
+static const union AnimCmd sWirelessStatusIndicator_3Bars[] = {
ANIMCMD_FRAME( 4, 5),
ANIMCMD_FRAME( 8, 5),
ANIMCMD_FRAME(12, 5),
@@ -245,8 +255,7 @@ static const union AnimCmd sWirelessStatusIndicatorAnim0[] = {
ANIMCMD_JUMP(0)
};
-static const union AnimCmd sWirelessStatusIndicatorAnim1[] = {
- // 2 bars
+static const union AnimCmd sWirelessStatusIndicator_2Bars[] = {
ANIMCMD_FRAME( 4, 5),
ANIMCMD_FRAME( 8, 5),
ANIMCMD_FRAME(12, 10),
@@ -254,33 +263,30 @@ static const union AnimCmd sWirelessStatusIndicatorAnim1[] = {
ANIMCMD_JUMP(0)
};
-static const union AnimCmd sWirelessStatusIndicatorAnim2[] = {
- // 1 bar
+static const union AnimCmd sWirelessStatusIndicator_1Bar[] = {
ANIMCMD_FRAME(4, 5),
ANIMCMD_FRAME(8, 5),
ANIMCMD_JUMP(0)
};
-static const union AnimCmd sWirelessStatusIndicatorAnim3[] = {
- // searching
+static const union AnimCmd sWirelessStatusIndicator_Searching[] = {
ANIMCMD_FRAME( 4, 10),
ANIMCMD_FRAME(20, 10),
ANIMCMD_JUMP(0)
};
-static const union AnimCmd sWirelessStatusIndicatorAnim4[] = {
- // error
+static const union AnimCmd sWirelessStatusIndicator_Error[] = {
ANIMCMD_FRAME(24, 10),
ANIMCMD_FRAME( 4, 10),
ANIMCMD_JUMP(0)
};
static const union AnimCmd *const sWirelessStatusIndicatorAnims[] = {
- sWirelessStatusIndicatorAnim0,
- sWirelessStatusIndicatorAnim1,
- sWirelessStatusIndicatorAnim2,
- sWirelessStatusIndicatorAnim3,
- sWirelessStatusIndicatorAnim4
+ [WIRELESS_STATUS_ANIM_3_BARS] = sWirelessStatusIndicator_3Bars,
+ [WIRELESS_STATUS_ANIM_2_BARS] = sWirelessStatusIndicator_2Bars,
+ [WIRELESS_STATUS_ANIM_1_BAR] = sWirelessStatusIndicator_1Bar,
+ [WIRELESS_STATUS_ANIM_SEARCHING] = sWirelessStatusIndicator_Searching,
+ [WIRELESS_STATUS_ANIM_ERROR] = sWirelessStatusIndicator_Error
};
static const struct CompressedSpriteSheet sWirelessStatusIndicatorSpriteSheet = {
@@ -292,13 +298,13 @@ static const struct SpritePalette sWirelessStatusIndicatorSpritePalette = {
};
static const struct SpriteTemplate sWirelessStatusIndicatorSpriteTemplate = {
- 0xD431,
- 0xD432,
- &sWirelessStatusIndicatorOamData,
- sWirelessStatusIndicatorAnims,
- NULL,
- gDummySpriteAffineAnimTable,
- SpriteCallbackDummy
+ .tileTag = 0xD431,
+ .paletteTag = 0xD432,
+ .oam = &sWirelessStatusIndicatorOamData,
+ .anims = sWirelessStatusIndicatorAnims,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
};
void RfuRecvQueue_Reset(struct RfuRecvQueue *queue)
@@ -306,9 +312,9 @@ void RfuRecvQueue_Reset(struct RfuRecvQueue *queue)
s32 i;
s32 j;
- for (i = 0; i < 32; i++)
+ for (i = 0; i < RECV_QUEUE_NUM_SLOTS; i++)
{
- for (j = 0; j < 70; j++)
+ for (j = 0; j < RECV_QUEUE_SLOT_LENGTH; j++)
{
queue->slots[i][j] = 0;
}
@@ -324,9 +330,9 @@ void RfuSendQueue_Reset(struct RfuSendQueue *queue)
s32 i;
s32 j;
- for (i = 0; i < 40; i++)
+ for (i = 0; i < SEND_QUEUE_NUM_SLOTS; i++)
{
- for (j = 0; j < 14; j++)
+ for (j = 0; j < SEND_QUEUE_SLOT_LENGTH; j++)
{
queue->slots[i][j] = 0;
}
@@ -342,9 +348,9 @@ static void RfuUnusedQueue_Reset(struct RfuUnusedQueue *queue)
s32 i;
s32 j;
- for (i = 0; i < 2; i++)
+ for (i = 0; i < UNUSED_QUEUE_NUM_SLOTS; i++)
{
- for (j = 0; j < 256; j++)
+ for (j = 0; j < UNUSED_QUEUE_SLOT_LENGTH; j++)
{
queue->slots[i][j] = 0;
}
@@ -361,31 +367,27 @@ void RfuRecvQueue_Enqueue(struct RfuRecvQueue *queue, u8 *data)
u16 imeBak;
u8 count;
- if (queue->count < 32)
+ if (queue->count < RECV_QUEUE_NUM_SLOTS)
{
imeBak = REG_IME;
REG_IME = 0;
count = 0;
- for (i = 0; i < 70; i += 14)
+ for (i = 0; i < RECV_QUEUE_SLOT_LENGTH; i += RECV_QUEUE_SLOT_LENGTH / MAX_RFU_PLAYERS)
{
if (data[i] == 0 && data[i + 1] == 0)
- {
count++;
- }
}
- if (count != 5)
+ if (count != MAX_RFU_PLAYERS)
{
- for (i = 0; i < 70; i++)
- {
+ for (i = 0; i < RECV_QUEUE_SLOT_LENGTH; i++)
queue->slots[queue->recvSlot][i] = data[i];
- }
+
queue->recvSlot++;
- queue->recvSlot %= 32;
+ queue->recvSlot %= RECV_QUEUE_NUM_SLOTS;
queue->count++;
- for (i = 0; i < 70; i++)
- {
+
+ for (i = 0; i < RECV_QUEUE_SLOT_LENGTH; i++)
data[i] = 0;
- }
}
REG_IME = imeBak;
}
@@ -400,30 +402,27 @@ void RfuSendQueue_Enqueue(struct RfuSendQueue *queue, u8 *data)
s32 i;
u16 imeBak;
- if (queue->count < 40)
+ if (queue->count < SEND_QUEUE_NUM_SLOTS)
{
imeBak = REG_IME;
REG_IME = 0;
- for (i = 0; i < 14; i++)
+ for (i = 0; i < SEND_QUEUE_SLOT_LENGTH; i++)
{
if (data[i] != 0)
- {
break;
- }
}
- if (i != 14)
+ if (i != SEND_QUEUE_SLOT_LENGTH)
{
- for (i = 0; i < 14; i++)
+ for (i = 0; i < SEND_QUEUE_SLOT_LENGTH; i++)
{
queue->slots[queue->recvSlot][i] = data[i];
}
queue->recvSlot++;
- queue->recvSlot %= 40;
+ queue->recvSlot %= SEND_QUEUE_NUM_SLOTS;
queue->count++;
- for (i = 0; i < 14; i++)
- {
+
+ for (i = 0; i < SEND_QUEUE_SLOT_LENGTH; i++)
data[i] = 0;
- }
}
REG_IME = imeBak;
}
@@ -442,19 +441,18 @@ bool8 RfuRecvQueue_Dequeue(struct RfuRecvQueue *queue, u8 *src)
REG_IME = 0;
if (queue->recvSlot == queue->sendSlot || queue->full)
{
- for (i = 0; i < 70; i++)
- {
+ for (i = 0; i < RECV_QUEUE_SLOT_LENGTH; i++)
src[i] = 0;
- }
+
REG_IME = imeBak;
return FALSE;
}
- for (i = 0; i < 70; i++)
+ for (i = 0; i < RECV_QUEUE_SLOT_LENGTH; i++)
{
src[i] = queue->slots[queue->sendSlot][i];
}
queue->sendSlot++;
- queue->sendSlot %= 32;
+ queue->sendSlot %= RECV_QUEUE_NUM_SLOTS;
queue->count--;
REG_IME = imeBak;
return TRUE;
@@ -470,12 +468,11 @@ bool8 RfuSendQueue_Dequeue(struct RfuSendQueue *queue, u8 *src)
imeBak = REG_IME;
REG_IME = 0;
- for (i = 0; i < 14; i++)
- {
+ for (i = 0; i < SEND_QUEUE_SLOT_LENGTH; i++)
src[i] = queue->slots[queue->sendSlot][i];
- }
+
queue->sendSlot++;
- queue->sendSlot %= 40;
+ queue->sendSlot %= SEND_QUEUE_NUM_SLOTS;
queue->count--;
REG_IME = imeBak;
return TRUE;
@@ -491,20 +488,16 @@ void RfuBackupQueue_Enqueue(struct RfuBackupQueue *queue, const u8 *data)
}
else
{
- for (i = 0; i < 14; i++)
- {
+ for (i = 0; i < BACKUP_QUEUE_SLOT_LENGTH; i++)
queue->slots[queue->recvSlot][i] = data[i];
- }
+
queue->recvSlot++;
- queue->recvSlot %= 2;
- if (queue->count < 2)
- {
+ queue->recvSlot %= BACKUP_QUEUE_NUM_SLOTS;
+
+ if (queue->count < BACKUP_QUEUE_NUM_SLOTS)
queue->count++;
- }
else
- {
queue->sendSlot = queue->recvSlot;
- }
}
}
@@ -517,13 +510,11 @@ bool8 RfuBackupQueue_Dequeue(struct RfuBackupQueue *queue, u8 *src)
if (src != NULL)
{
- for (i = 0; i < 14; i++)
- {
+ for (i = 0; i < BACKUP_QUEUE_SLOT_LENGTH; i++)
src[i] = queue->slots[queue->sendSlot][i];
- }
}
queue->sendSlot++;
- queue->sendSlot %= 2;
+ queue->sendSlot %= BACKUP_QUEUE_NUM_SLOTS;
queue->count--;
return TRUE;
}
@@ -532,14 +523,13 @@ static void RfuUnusedQueue_Enqueue(struct RfuUnusedQueue *queue, u8 *data)
{
s32 i;
- if (queue->count < 2)
+ if (queue->count < UNUSED_QUEUE_NUM_SLOTS)
{
- for (i = 0; i < 256; i++)
- {
+ for (i = 0; i < UNUSED_QUEUE_SLOT_LENGTH; i++)
queue->slots[queue->recvSlot][i] = data[i];
- }
+
queue->recvSlot++;
- queue->recvSlot %= 2;
+ queue->recvSlot %= UNUSED_QUEUE_NUM_SLOTS;
queue->count++;
}
else
@@ -555,17 +545,17 @@ static bool8 RfuUnusedQueue_Dequeue(struct RfuUnusedQueue *queue, u8 *dest)
if (queue->recvSlot == queue->sendSlot || queue->full)
return FALSE;
- for (i = 0; i < 256; i++)
- {
+ for (i = 0; i < UNUSED_QUEUE_SLOT_LENGTH; i++)
dest[i] = queue->slots[queue->sendSlot][i];
- }
+
queue->sendSlot++;
- queue->sendSlot %= 2;
+ queue->sendSlot %= UNUSED_QUEUE_NUM_SLOTS;
queue->count--;
return TRUE;
}
-void sub_800DBF8(u8 *q1, u8 mode)
+// Unused
+static void sub_800DBF8(u8 *q1, u8 mode)
{
s32 i;
u8 rval;
@@ -797,7 +787,7 @@ bool8 LinkRfu_GetNameIfCompatible(struct GFtgtGname *buff1, u8 *buff2, u8 idx)
bool8 LinkRfu_GetNameIfSerial7F7D(struct GFtgtGname *buff1, u8 *buff2, u8 idx)
{
bool8 retVal = FALSE;
- if (gRfuLinkStatus->partner[idx].serialNo == 0x7F7D)
+ if (gRfuLinkStatus->partner[idx].serialNo == RFU_SERIAL_7F7D)
{
memcpy(buff1, gRfuLinkStatus->partner[idx].gname, RFU_GAME_NAME_LENGTH);
memcpy(buff2, gRfuLinkStatus->partner[idx].uname, PLAYER_NAME_LENGTH + 1);
@@ -817,6 +807,15 @@ void LinkRfu3_SetGnameUnameFromStaticBuffers(struct GFtgtGname *buff1, u8 *buff2
memcpy(buff2, gHostRFUtgtUnameBuffer, PLAYER_NAME_LENGTH + 1);
}
+#define sNextAnimNum data[0]
+#define sSavedAnimNum data[1]
+#define sCurrAnimNum data[2]
+#define sFrameDelay data[3]
+#define sFrameIdx data[4]
+#define sTileStart data[6]
+#define sValidator data[7]
+#define STATUS_INDICATOR_ACTIVE 0x1234 // Used to validate active indicator
+
void CreateWirelessStatusIndicatorSprite(u8 x, u8 y)
{
u8 sprId;
@@ -829,25 +828,25 @@ void CreateWirelessStatusIndicatorSprite(u8 x, u8 y)
if (gRfuLinkStatus->parentChild == MODE_PARENT)
{
sprId = CreateSprite(&sWirelessStatusIndicatorSpriteTemplate, x, y, 0);
- gSprites[sprId].data[7] = 0x1234;
- gSprites[sprId].data[6] = GetSpriteTileStartByTag(sWirelessStatusIndicatorSpriteSheet.tag);
+ gSprites[sprId].sValidator = STATUS_INDICATOR_ACTIVE;
+ gSprites[sprId].sTileStart = GetSpriteTileStartByTag(sWirelessStatusIndicatorSpriteSheet.tag);
gSprites[sprId].invisible = TRUE;
gWirelessStatusIndicatorSpriteId = sprId;
}
else
{
gWirelessStatusIndicatorSpriteId = CreateSprite(&sWirelessStatusIndicatorSpriteTemplate, x, y, 0);
- gSprites[gWirelessStatusIndicatorSpriteId].data[7] = 0x1234;
- gSprites[gWirelessStatusIndicatorSpriteId].data[6] = GetSpriteTileStartByTag(sWirelessStatusIndicatorSpriteSheet.tag);
+ gSprites[gWirelessStatusIndicatorSpriteId].sValidator = STATUS_INDICATOR_ACTIVE;
+ gSprites[gWirelessStatusIndicatorSpriteId].sTileStart = GetSpriteTileStartByTag(sWirelessStatusIndicatorSpriteSheet.tag);
gSprites[gWirelessStatusIndicatorSpriteId].invisible = TRUE;
}
}
void DestroyWirelessStatusIndicatorSprite(void)
{
- if (gSprites[gWirelessStatusIndicatorSpriteId].data[7] == 0x1234)
+ if (gSprites[gWirelessStatusIndicatorSpriteId].sValidator == STATUS_INDICATOR_ACTIVE)
{
- gSprites[gWirelessStatusIndicatorSpriteId].data[7] = 0;
+ gSprites[gWirelessStatusIndicatorSpriteId].sValidator = 0;
DestroySprite(&gSprites[gWirelessStatusIndicatorSpriteId]);
gMain.oamBuffer[125] = gDummyOamData;
CpuCopy16(&gDummyOamData, (struct OamData *)OAM + 125, sizeof(struct OamData));
@@ -879,19 +878,19 @@ static u8 GetParentSignalStrength(void)
return 0;
}
-static void SetWirelessStatusIndicatorAnim(struct Sprite *sprite, s32 signalStrengthAnimNum)
+static void SetWirelessStatusIndicatorAnim(struct Sprite *sprite, s32 animNum)
{
- if (sprite->data[2] != signalStrengthAnimNum)
+ if (sprite->sCurrAnimNum != animNum)
{
- sprite->data[2] = signalStrengthAnimNum;
- sprite->data[3] = 0;
- sprite->data[4] = 0;
+ sprite->sCurrAnimNum = animNum;
+ sprite->sFrameDelay = 0;
+ sprite->sFrameIdx = 0;
}
}
void UpdateWirelessStatusIndicatorSprite(void)
{
- if (gWirelessStatusIndicatorSpriteId != 0xFF && gSprites[gWirelessStatusIndicatorSpriteId].data[7] == 0x1234)
+ if (gWirelessStatusIndicatorSpriteId != 0xFF && gSprites[gWirelessStatusIndicatorSpriteId].sValidator == STATUS_INDICATOR_ACTIVE)
{
struct Sprite *sprite = &gSprites[gWirelessStatusIndicatorSpriteId];
u8 signalStrength = RFU_LINK_ICON_LEVEL4_MAX;
@@ -912,47 +911,47 @@ void UpdateWirelessStatusIndicatorSprite(void)
}
if (IsRfuRecoveringFromLinkLoss() == TRUE)
{
- sprite->data[0] = 4;
+ sprite->sNextAnimNum = WIRELESS_STATUS_ANIM_ERROR;
}
else if (signalStrength <= RFU_LINK_ICON_LEVEL1_MAX)
{
- sprite->data[0] = 3;
+ sprite->sNextAnimNum = WIRELESS_STATUS_ANIM_SEARCHING;
}
else if (signalStrength >= RFU_LINK_ICON_LEVEL2_MIN && signalStrength <= RFU_LINK_ICON_LEVEL2_MAX)
{
- sprite->data[0] = 2;
+ sprite->sNextAnimNum = WIRELESS_STATUS_ANIM_1_BAR;
}
else if (signalStrength >= RFU_LINK_ICON_LEVEL3_MIN && signalStrength <= RFU_LINK_ICON_LEVEL3_MAX)
{
- sprite->data[0] = 1;
+ sprite->sNextAnimNum = WIRELESS_STATUS_ANIM_2_BARS;
}
else if (signalStrength >= RFU_LINK_ICON_LEVEL4_MIN)
{
- sprite->data[0] = 0;
+ sprite->sNextAnimNum = WIRELESS_STATUS_ANIM_3_BARS;
}
- if (sprite->data[0] != sprite->data[1])
+ if (sprite->sNextAnimNum != sprite->sSavedAnimNum)
{
- SetWirelessStatusIndicatorAnim(sprite, sprite->data[0]);
- sprite->data[1] = sprite->data[0];
+ SetWirelessStatusIndicatorAnim(sprite, sprite->sNextAnimNum);
+ sprite->sSavedAnimNum = sprite->sNextAnimNum;
}
- if (sprite->anims[sprite->data[2]][sprite->data[4]].frame.duration < sprite->data[3])
+ if (sprite->anims[sprite->sCurrAnimNum][sprite->sFrameIdx].frame.duration < sprite->sFrameDelay)
{
- sprite->data[4]++;
- sprite->data[3] = 0;
- if (sprite->anims[sprite->data[2]][sprite->data[4]].type == -2)
+ sprite->sFrameIdx++;
+ sprite->sFrameDelay = 0;
+ if (sprite->anims[sprite->sCurrAnimNum][sprite->sFrameIdx].type == -2)
{
- sprite->data[4] = 0;
+ sprite->sFrameIdx = 0;
}
}
else
{
- sprite->data[3]++;
+ sprite->sFrameDelay++;
}
gMain.oamBuffer[125] = sWirelessStatusIndicatorOamData;
gMain.oamBuffer[125].x = sprite->pos1.x + sprite->centerToCornerVecX;
gMain.oamBuffer[125].y = sprite->pos1.y + sprite->centerToCornerVecY;
gMain.oamBuffer[125].paletteNum = sprite->oam.paletteNum;
- gMain.oamBuffer[125].tileNum = sprite->data[6] + sprite->anims[sprite->data[2]][sprite->data[4]].frame.imageValue;
+ gMain.oamBuffer[125].tileNum = sprite->sTileStart + sprite->anims[sprite->sCurrAnimNum][sprite->sFrameIdx].frame.imageValue;
CpuCopy16(gMain.oamBuffer + 125, (struct OamData *)OAM + 125, sizeof(struct OamData));
if (RfuGetErrorStatus() == 1)
{
@@ -961,6 +960,14 @@ void UpdateWirelessStatusIndicatorSprite(void)
}
}
+#undef sNextAnimNum
+#undef sSavedAnimNum
+#undef sCurrAnimNum
+#undef sFrameDelay
+#undef sFrameIdx
+#undef sTileStart
+#undef sValidator
+
static void CopyTrainerRecord(struct TrainerNameRecord *dest, u32 trainerId, const u8 *name)
{
dest->trainerId = trainerId;
@@ -988,7 +995,7 @@ void RecordMixTrainerNames(void)
s32 j;
s32 nextSpace;
s32 connectedTrainerRecordIndices[5];
- struct TrainerNameRecord *newRecords = calloc(20, sizeof(struct TrainerNameRecord));
+ struct TrainerNameRecord *newRecords = calloc(ARRAY_COUNT(gSaveBlock1Ptr->trainerNameRecords), sizeof(struct TrainerNameRecord));
// Check if we already have a record saved for connected trainers.
for (i = 0; i < GetLinkPlayerCount(); i++)
diff --git a/src/record_mixing.c b/src/record_mixing.c
index 274a82e10..075bc6aee 100644
--- a/src/record_mixing.c
+++ b/src/record_mixing.c
@@ -231,7 +231,7 @@ static void PrepareExchangePacket(void)
if (Link_AnyPartnersPlayingRubyOrSapphire())
{
- if (sub_800A03C() == 0)
+ if (LinkDummy_Return2() == 0)
PrepareUnknownExchangePacket(&sSentRecord->ruby);
else
PrepareExchangePacketForRubySapphire(&sSentRecord->ruby);
@@ -526,7 +526,7 @@ static void Task_CopyReceiveBuffer(u8 taskId)
u8 status = GetBlockReceivedStatus();
u8 handledPlayers = 0;
- if (status == sub_800A9D8())
+ if (status == GetLinkPlayerCountAsBitFlags())
{
u8 i;
diff --git a/src/start_menu.c b/src/start_menu.c
index 781774f62..df45a3f12 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -1237,7 +1237,7 @@ static void Task_SaveAfterLinkBattle(u8 taskId)
if (gWirelessCommType != 0 && InUnionRoom())
{
- if (sub_800A07C())
+ if (Link_AnyPartnersPlayingFRLG_JP())
{
*state = 1;
}
diff --git a/src/union_room.c b/src/union_room.c
index ac32e15f2..54d25046a 100644
--- a/src/union_room.c
+++ b/src/union_room.c
@@ -1361,7 +1361,7 @@ static void Task_ExchangeCards(u8 taskId)
gTasks[taskId].data[0]++;
break;
case 1:
- if (GetBlockReceivedStatus() == sub_800A9D8())
+ if (GetBlockReceivedStatus() == GetLinkPlayerCountAsBitFlags())
{
s32 i;
u16 *recvBuff;