diff options
Diffstat (limited to 'src/link.c')
-rw-r--r-- | src/link.c | 137 |
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) { |