summaryrefslogtreecommitdiff
path: root/src/link.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/link.c')
-rw-r--r--src/link.c137
1 files changed, 79 insertions, 58 deletions
diff --git a/src/link.c b/src/link.c
index 6647cda8c..3e4cc0c05 100644
--- a/src/link.c
+++ b/src/link.c
@@ -124,8 +124,8 @@ EWRAM_DATA struct {
u8 lastSendQueueCount;
u8 unk_06;
} sLinkErrorBuffer = {};
-EWRAM_DATA u16 gUnknown_02022B08 = 0;
-EWRAM_DATA void *gUnknown_02022B0C = NULL;
+static EWRAM_DATA u16 sUnknown_02022B08 = 0;
+static EWRAM_DATA void *sLinkErrorBgTilemapBuffer = NULL;
// Static ROM declarations
@@ -155,7 +155,7 @@ static void sub_800AE5C(void);
static void CheckErrorStatus(void);
static void CB2_PrintErrorMessage(void);
static bool8 IsSioMultiMaster(void);
-static void sub_800B4A4(void);
+static void SetWirelessCommType0_Internal(void);
static void DisableSerial(void);
static void EnableSerial(void);
static void CheckMasterOrSlave(void);
@@ -172,29 +172,29 @@ static void SendRecvDone(void);
// .rodata
-ALIGNED(4) const u16 gWirelessLinkDisplayPal[] = INCBIN_U16("graphics/interface/wireless_link_display.gbapal");
-const u32 gWirelessLinkDisplayGfx[] = INCBIN_U32("graphics/interface/wireless_link_display.4bpp.lz");
-const u32 gWirelessLinkDisplayTilemap[] = INCBIN_U32("graphics/interface/wireless_link_display.bin.lz");
-const u16 gLinkTestDigitsPal[] = INCBIN_U16("graphics/interface/link_test_digits.gbapal");
-const u16 gLinkTestDigitsGfx[] = INCBIN_U16("graphics/interface/link_test_digits.4bpp");
-const u8 unkstring_82ed160[] = _("{HIGHLIGHT TRANSPARENT}{COLOR WHITE}");
-const u16 g2BlankTilesGfx[] = INCBIN_U16("graphics/interface/blank_1x2.4bpp");
-const struct BlockRequest gUnknown_082ED1A8[] = {
+static const u16 sWirelessLinkDisplayPal[] = INCBIN_U16("graphics/interface/wireless_link_display.gbapal");
+static const u32 sWirelessLinkDisplayGfx[] = INCBIN_U32("graphics/interface/wireless_link_display.4bpp.lz");
+static const u32 sWirelessLinkDisplayTilemap[] = INCBIN_U32("graphics/interface/wireless_link_display.bin.lz");
+static const u16 sLinkTestDigitsPal[] = INCBIN_U16("graphics/interface/link_test_digits.gbapal");
+static const u16 sLinkTestDigitsGfx[] = INCBIN_U16("graphics/interface/link_test_digits.4bpp");
+static const u8 sUnusedTransparentWhite[] = _("{HIGHLIGHT TRANSPARENT}{COLOR WHITE}");
+static const u16 s2BlankTilesGfx[] = INCBIN_U16("graphics/interface/blank_1x2.4bpp");
+static const struct BlockRequest sBlockRequests[] = {
{gBlockSendBuffer, 200},
{gBlockSendBuffer, 200},
{gBlockSendBuffer, 100},
{gBlockSendBuffer, 220},
{gBlockSendBuffer, 40}
};
-const u8 gBGControlRegs[] = {
+static const u8 sBGControlRegs[] = {
REG_OFFSET_BG0CNT,
REG_OFFSET_BG1CNT,
REG_OFFSET_BG2CNT,
REG_OFFSET_BG3CNT
};
-const char gASCIIGameFreakInc[] = "GameFreak inc.";
-const char gASCIITestPrint[] = "TEST PRINT\nP0\nP1\nP2\nP3";
-const struct BgTemplate gUnknown_082ED1FC[] = {
+static const char sASCIIGameFreakInc[] = "GameFreak inc.";
+static const char sASCIITestPrint[] = "TEST PRINT\nP0\nP1\nP2\nP3";
+static const struct BgTemplate sLinkErrorBgTemplates[] = {
{
.bg = 0,
.charBaseIndex = 2,
@@ -207,15 +207,36 @@ const struct BgTemplate gUnknown_082ED1FC[] = {
.priority = 1
}
};
-const struct WindowTemplate gUnknown_082ED204[] = {
- {0x00, 0x00, 0x00, 0x1E, 0x05, 0x0F, 0x0002},
- {0x00, 0x00, 0x06, 0x1E, 0x07, 0x0F, 0x0098},
- {0x00, 0x00, 0x0D, 0x1E, 0x07, 0x0F, 0x016A},
- DUMMY_WIN_TEMPLATE
+static const struct WindowTemplate sLinkErrorWindowTemplates[] = {
+ {
+ .bg = 0,
+ .tilemapLeft = 0,
+ .tilemapTop = 0,
+ .width = 30,
+ .height = 5,
+ .paletteNum = 15,
+ .baseBlock = 0x002
+ }, {
+ .bg = 0,
+ .tilemapLeft = 0,
+ .tilemapTop = 6,
+ .width = 30,
+ .height = 7,
+ .paletteNum = 15,
+ .baseBlock = 0x098
+ }, {
+ .bg = 0,
+ .tilemapLeft = 0,
+ .tilemapTop = 13,
+ .width = 30,
+ .height = 7,
+ .paletteNum = 15,
+ .baseBlock = 0x16A
+ }, DUMMY_WIN_TEMPLATE
};
static const u8 sTextColors[] = { TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY };
-static const u8 sUnused_082ED224[] = {0x00, 0xff, 0xfe, 0xff, 0x00};
+static const u8 sUnused_082ED224[] = {0x00, 0xFF, 0xFE, 0xFF, 0x00};
// .text
@@ -229,7 +250,7 @@ bool8 IsWirelessAdapterConnected(void)
rfu_waitREQComplete();
return TRUE;
}
- sub_800B4A4();
+ SetWirelessCommType0_Internal();
CloseLink();
RestoreSerialTimer3IntrHandlers();
return FALSE;
@@ -242,8 +263,8 @@ void Task_DestroySelf(u8 taskId)
static void InitLinkTestBG(u8 paletteNum, u8 bgNum, u8 screenBaseBlock, u8 charBaseBlock, u16 a4)
{
- LoadPalette(gLinkTestDigitsPal, paletteNum * 16, 0x20);
- DmaCopy16(3, gLinkTestDigitsGfx, (u16 *)BG_CHAR_ADDR(charBaseBlock) + (16 * a4), sizeof gLinkTestDigitsGfx);
+ LoadPalette(sLinkTestDigitsPal, paletteNum * 16, 0x20);
+ DmaCopy16(3, sLinkTestDigitsGfx, (u16 *)BG_CHAR_ADDR(charBaseBlock) + (16 * a4), sizeof sLinkTestDigitsGfx);
gLinkTestBGInfo.screenBaseBlock = screenBaseBlock;
gLinkTestBGInfo.paletteNum = paletteNum;
gLinkTestBGInfo.dummy_8 = a4;
@@ -265,12 +286,12 @@ static void InitLinkTestBG(u8 paletteNum, u8 bgNum, u8 screenBaseBlock, u8 charB
void sub_80094EC(u8 paletteNum, u8 bgNum, u8 screenBaseBlock, u8 charBaseBlock)
{
- LoadPalette(gLinkTestDigitsPal, paletteNum * 16, 0x20);
- DmaCopy16(3, gLinkTestDigitsGfx, (u16 *)BG_CHAR_ADDR(charBaseBlock), sizeof gLinkTestDigitsGfx);
+ LoadPalette(sLinkTestDigitsPal, paletteNum * 16, 0x20);
+ DmaCopy16(3, sLinkTestDigitsGfx, (u16 *)BG_CHAR_ADDR(charBaseBlock), sizeof sLinkTestDigitsGfx);
gLinkTestBGInfo.screenBaseBlock = screenBaseBlock;
gLinkTestBGInfo.paletteNum = paletteNum;
gLinkTestBGInfo.dummy_8 = 0;
- SetGpuReg(gBGControlRegs[bgNum], BGCNT_SCREENBASE(screenBaseBlock) | BGCNT_CHARBASE(charBaseBlock));
+ SetGpuReg(sBGControlRegs[bgNum], BGCNT_SCREENBASE(screenBaseBlock) | BGCNT_CHARBASE(charBaseBlock));
}
void LinkTestScreen(void)
@@ -536,8 +557,8 @@ static void ProcessRecvCmds(u8 unused)
InitLocalLinkPlayer();
block = &gLocalLinkPlayerBlock;
block->linkPlayer = gLocalLinkPlayer;
- memcpy(block->magic1, gASCIIGameFreakInc, sizeof(block->magic1) - 1);
- memcpy(block->magic2, gASCIIGameFreakInc, sizeof(block->magic2) - 1);
+ memcpy(block->magic1, sASCIIGameFreakInc, sizeof(block->magic1) - 1);
+ memcpy(block->magic2, sASCIIGameFreakInc, sizeof(block->magic2) - 1);
InitBlockSend(block, sizeof(*block));
break;
}
@@ -602,8 +623,8 @@ static void ProcessRecvCmds(u8 unused)
linkPlayer->progressFlags = 0;
}
sub_800B524(linkPlayer);
- if (strcmp(block->magic1, gASCIIGameFreakInc) != 0
- || strcmp(block->magic2, gASCIIGameFreakInc) != 0)
+ if (strcmp(block->magic1, sASCIIGameFreakInc) != 0
+ || strcmp(block->magic2, sASCIIGameFreakInc) != 0)
{
SetMainCallback2(CB2_LinkError);
}
@@ -629,7 +650,7 @@ static void ProcessRecvCmds(u8 unused)
sub_800A418();
break;
case LINKCMD_0xCCCC:
- SendBlock(0, gUnknown_082ED1A8[gRecvCmds[i][1]].address, gUnknown_082ED1A8[gRecvCmds[i][1]].size);
+ SendBlock(0, sBlockRequests[gRecvCmds[i][1]].address, sBlockRequests[gRecvCmds[i][1]].size);
break;
case LINKCMD_SEND_HELD_KEYS_2:
gLinkPartnersHeldKeys[i] = gRecvCmds[i][1];
@@ -709,7 +730,7 @@ void sub_8009F18(void)
{
if (gWirelessCommType)
{
- sub_800F804();
+ StartSendingKeysToRfu();
}
gLinkCallback = sub_8009F70;
}
@@ -763,7 +784,7 @@ u8 GetLinkPlayerCount(void)
{
if (gWirelessCommType)
{
- return sub_80104F4();
+ return Rfu_GetLinkPlayerCount();
}
return EXTRACT_PLAYER_COUNT(gLinkStatus);
}
@@ -1046,7 +1067,7 @@ u8 GetMultiplayerId(void)
{
if (gWirelessCommType == TRUE)
{
- return rfu_get_multiplayer_id();
+ return Rfu_GetMultiplayerId();
}
return SIO_MULTI_CNT->id;
}
@@ -1063,7 +1084,7 @@ bool8 SendBlock(u8 unused, const void *src, u16 size)
{
if (gWirelessCommType == TRUE)
{
- return sub_800FE84(src, size);
+ return Rfu_InitBlockSend(src, size);
}
return InitBlockSend(src, size);
}
@@ -1096,7 +1117,7 @@ u8 GetBlockReceivedStatus(void)
{
if (gWirelessCommType == TRUE)
{
- return sub_800FCD8();
+ return Rfu_GetBlockReceivedStatus();
}
return (gBlockReceivedStatus[3] << 3) | (gBlockReceivedStatus[2] << 2) | (gBlockReceivedStatus[1] << 1) | (gBlockReceivedStatus[0] << 0);
}
@@ -1105,7 +1126,7 @@ static void SetBlockReceivedFlag(u8 who)
{
if (gWirelessCommType == TRUE)
{
- sub_800F6FC(who);
+ Rfu_SetBlockReceivedFlag(who);
}
else
{
@@ -1121,7 +1142,7 @@ void ResetBlockReceivedFlags(void)
{
for (i = 0; i < MAX_RFU_PLAYERS; i++)
{
- sub_800F728(i);
+ Rfu_ResetBlockReceivedFlag(i);
}
}
else
@@ -1137,7 +1158,7 @@ void ResetBlockReceivedFlag(u8 who)
{
if (gWirelessCommType == TRUE)
{
- sub_800F728(who);
+ Rfu_ResetBlockReceivedFlag(who);
}
else if (gBlockReceivedStatus[who])
{
@@ -1264,7 +1285,7 @@ static void Task_PrintTestData(u8 taskId)
char sp[32];
int i;
- strcpy(sp, gASCIITestPrint);
+ strcpy(sp, sASCIITestPrint);
LinkTest_prntstr(sp, 5, 2);
LinkTest_prnthex(gShouldAdvanceLinkState, 2, 1, 2);
LinkTest_prnthex(gLinkStatus, 15, 1, 8);
@@ -1453,7 +1474,7 @@ void sub_800AC34(void)
{
if (gLinkCallback != NULL)
{
- gUnknown_02022B08++;
+ sUnknown_02022B08++;
}
else
{
@@ -1508,7 +1529,7 @@ void sub_800AD10(void)
{
if (gLinkCallback != NULL)
{
- gUnknown_02022B08++;
+ sUnknown_02022B08++;
}
else
{
@@ -1650,14 +1671,14 @@ void CB2_LinkError(void)
{
gWirelessCommType = 3;
}
- sub_800E604();
+ ResetLinkRfuGFLayer();
}
SetVBlankCallback(sub_80096BC);
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, gUnknown_082ED1FC, 2);
- gUnknown_02022B0C = tilemapBuffer = malloc(0x800);
+ InitBgsFromTemplates(0, sLinkErrorBgTemplates, ARRAY_COUNT(sLinkErrorBgTemplates));
+ sLinkErrorBgTilemapBuffer = tilemapBuffer = malloc(0x800);
SetBgTilemapBuffer(1, tilemapBuffer);
- if (InitWindows(gUnknown_082ED204))
+ if (InitWindows(sLinkErrorWindowTemplates))
{
DeactivateAllTextPrinters();
reset_temp_tile_data_buffers();
@@ -1683,11 +1704,11 @@ void CB2_LinkError(void)
static void sub_800B080(void)
{
- LoadBgTiles(0, g2BlankTilesGfx, 0x20, 0);
- DecompressAndLoadBgGfxUsingHeap(1, gWirelessLinkDisplayGfx, FALSE, 0, 0);
- CopyToBgTilemapBuffer(1, gWirelessLinkDisplayTilemap, 0, 0);
+ LoadBgTiles(0, s2BlankTilesGfx, 0x20, 0);
+ DecompressAndLoadBgGfxUsingHeap(1, sWirelessLinkDisplayGfx, FALSE, 0, 0);
+ CopyToBgTilemapBuffer(1, sWirelessLinkDisplayTilemap, 0, 0);
CopyBgTilemapBufferToVram(1);
- LoadPalette(gWirelessLinkDisplayPal, 0, 0x20);
+ LoadPalette(sWirelessLinkDisplayPal, 0, 0x20);
FillWindowPixelBuffer(0, PIXEL_FILL(0));
FillWindowPixelBuffer(2, PIXEL_FILL(0));
AddTextPrinterParameterized3(0, 3, 2, 6, sTextColors, 0, gText_CommErrorEllipsis);
@@ -1700,7 +1721,7 @@ static void sub_800B080(void)
static void sub_800B138(void)
{
- LoadBgTiles(0, g2BlankTilesGfx, 0x20, 0);
+ LoadBgTiles(0, s2BlankTilesGfx, 0x20, 0);
FillWindowPixelBuffer(1, PIXEL_FILL(0));
FillWindowPixelBuffer(2, PIXEL_FILL(0));
AddTextPrinterParameterized3(1, 3, 2, 0, sTextColors, 0, gText_CommErrorCheckConnections);
@@ -1813,12 +1834,12 @@ void sub_800B348(void)
InitLocalLinkPlayer();
block = &gLocalLinkPlayerBlock;
block->linkPlayer = gLocalLinkPlayer;
- memcpy(block->magic1, gASCIIGameFreakInc, sizeof(block->magic1) - 1);
- memcpy(block->magic2, gASCIIGameFreakInc, sizeof(block->magic2) - 1);
+ memcpy(block->magic1, sASCIIGameFreakInc, sizeof(block->magic1) - 1);
+ memcpy(block->magic2, sASCIIGameFreakInc, sizeof(block->magic2) - 1);
memcpy(gBlockSendBuffer, block, sizeof(*block));
}
-void sub_800B3A4(u32 who)
+void LinkPlayerFromBlock(u32 who)
{
u8 who_ = who;
struct LinkPlayerBlock *block;
@@ -1828,7 +1849,7 @@ void sub_800B3A4(u32 who)
player = &gLinkPlayers[who_];
*player = block->linkPlayer;
sub_800B524(player);
- if (strcmp(block->magic1, gASCIIGameFreakInc) != 0 || strcmp(block->magic2, gASCIIGameFreakInc) != 0)
+ if (strcmp(block->magic1, sASCIIGameFreakInc) != 0 || strcmp(block->magic2, sASCIIGameFreakInc) != 0)
{
SetMainCallback2(CB2_LinkError);
}
@@ -1871,7 +1892,7 @@ void SetWirelessCommType1(void)
}
}
-static void sub_800B4A4(void)
+static void SetWirelessCommType0_Internal(void)
{
if (gReceivedRemoteLinkPlayers == 0)
{
@@ -1879,7 +1900,7 @@ static void sub_800B4A4(void)
}
}
-void sub_800B4C0(void)
+void SetWirelessCommType0(void)
{
if (gReceivedRemoteLinkPlayers == 0)
{