summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGriffinR <griffin.g.richards@gmail.com>2020-06-03 18:00:53 -0400
committerGriffinR <griffin.g.richards@gmail.com>2020-06-06 16:10:03 -0400
commit3f97763181c486cf537ac187036b086e1f222cfc (patch)
tree07ea98a326f5bbd570f7babc94f2662c4833f43d /src
parent9190af73b7ebe690be7204c023d4c14d0241af29 (diff)
Document cable_club.c
Diffstat (limited to 'src')
-rw-r--r--src/battle_controllers.c2
-rwxr-xr-xsrc/berry_crush.c4
-rw-r--r--src/cable_club.c752
-rw-r--r--src/dodrio_berry_picking.c4
-rwxr-xr-xsrc/ereader_screen.c12
-rwxr-xr-xsrc/field_message_box.c2
-rw-r--r--src/field_screen_effect.c2
-rw-r--r--src/link.c43
-rw-r--r--src/link_rfu_2.c2
-rwxr-xr-xsrc/mevent2.c2
-rw-r--r--src/mystery_event_menu.c4
-rwxr-xr-xsrc/pokemon_jump.c4
-rw-r--r--src/record_mixing.c11
-rw-r--r--src/save.c50
-rw-r--r--src/start_menu.c74
-rw-r--r--src/strings.c2
-rw-r--r--src/trade.c8
-rw-r--r--src/union_room.c12
18 files changed, 514 insertions, 476 deletions
diff --git a/src/battle_controllers.c b/src/battle_controllers.c
index 43bd9fce6..a0e9e4416 100644
--- a/src/battle_controllers.c
+++ b/src/battle_controllers.c
@@ -36,7 +36,7 @@ void HandleLinkBattleSetup(void)
SetWirelessCommType1();
if (!gReceivedRemoteLinkPlayers)
OpenLink();
- CreateTask(task00_08081A90, 0);
+ CreateTask(Task_WaitForLinkPlayerConnection, 0);
CreateTasksForSendRecvLinkBuffers();
}
}
diff --git a/src/berry_crush.c b/src/berry_crush.c
index 3ff3156e6..6bc97fad0 100755
--- a/src/berry_crush.c
+++ b/src/berry_crush.c
@@ -3013,10 +3013,10 @@ static u32 sub_8024134(struct BerryCrushGame *r5, u8 *r4)
DrawDialogueFrame(0, 0);
AddTextPrinterParameterized2(0, 1, gText_SavingDontTurnOffPower, 0, 0, 2, 1, 3);
CopyWindowToVram(0, 3);
- CreateTask(sub_8153688, 0);
+ CreateTask(Task_LinkSave, 0);
break;
case 3:
- if (FuncIsActiveTask(sub_8153688))
+ if (FuncIsActiveTask(Task_LinkSave))
return 0;
break;
case 4:
diff --git a/src/cable_club.c b/src/cable_club.c
index 2a53c64b2..ffd7bcd8f 100644
--- a/src/cable_club.c
+++ b/src/cable_club.c
@@ -33,8 +33,9 @@
#include "constants/battle_frontier.h"
#include "constants/cable_club.h"
#include "constants/songs.h"
+#include "constants/trainers.h"
-static const struct WindowTemplate gUnknown_08550594 = {
+static const struct WindowTemplate sWindowTemplate_LinkPlayerCount = {
.bg = 0,
.tilemapLeft = 16,
.tilemapTop = 11,
@@ -43,57 +44,67 @@ static const struct WindowTemplate gUnknown_08550594 = {
.paletteNum = 15,
.baseBlock = 0x0125,
};
-static const u8 *const gTrainerCardColorNames[] = {
+
+static const u8 *const sTrainerCardColorNames[] = {
gText_BronzeCard,
gText_CopperCard,
gText_SilverCard,
gText_GoldCard
};
-static void sub_80B2634(u8 taskId);
-static void sub_80B2688(u8 taskId);
-static void sub_80B270C(u8 taskId);
-static void sub_80B275C(u8 taskId);
-static void sub_80B2804(u8 taskId);
-static void sub_80B28A8(u8 taskId);
-static void sub_80B2918(u8 taskId);
-static void sub_80B2A08(u8 taskId);
-static void sub_80B2C30(u8 taskId);
-static void sub_80B2CB0(u8 taskId);
-static void sub_80B2CEC(u8 taskId);
-static void sub_80B2D2C(u8 taskId);
-static bool8 sub_80B2D6C(u8 taskId);
-static void sub_80B2EE4(u8 taskId);
-static void sub_80B3144(u8 taskId);
-static void sub_80B3194(u8 taskId);
-static void sub_80B31E8(u8 taskId);
-static void sub_80B3220(u8 taskId);
-
-static void sub_80B236C(u8 arg0, u8 arg1)
+static void Task_LinkupStart(u8 taskId);
+static void Task_LinkupAwaitConnection(u8 taskId);
+static void Task_LinkupConfirmWhenReady(u8 taskId);
+static void Task_LinkupAwaitConfirmation(u8 taskId);
+static void Task_LinkupTryConfirmation(u8 taskId);
+static void Task_LinkupConfirm(u8 taskId);
+static void Task_LinkupExchangeDataWithLeader(u8 taskId);
+static void Task_LinkupCheckStatusAfterConfirm(u8 taskId);
+static void Task_LinkupAwaitTrainerCardData(u8 taskId);
+static void Task_StopLinkup(u8 taskId);
+static void Task_LinkupFailed(u8 taskId);
+static void Task_LinkupConnectionError(u8 taskId);
+static bool8 TryLinkTimeout(u8 taskId);
+static void Task_ValidateMixingGameLanguage(u8 taskId);
+static void Task_ReestablishLink(u8 taskId);
+static void Task_ReestablishLinkAwaitConnection(u8 taskId);
+static void Task_ReestablishLinkLeader(u8 taskId);
+static void Task_ReestablishLinkAwaitConfirmation(u8 taskId);
+
+#define tState data[0]
+
+
+#define tMinPlayers data[1]
+#define tMaxPlayers data[2]
+#define tNumPlayers data[3]
+#define tTimer data[4]
+#define tWindowId data[5]
+
+static void CreateLinkupTask(u8 minPlayers, u8 maxPlayers)
{
- if (FindTaskIdByFunc(sub_80B2634) == 0xFF)
+ if (FindTaskIdByFunc(Task_LinkupStart) == 0xFF)
{
u8 taskId1;
- taskId1 = CreateTask(sub_80B2634, 80);
- gTasks[taskId1].data[1] = arg0;
- gTasks[taskId1].data[2] = arg1;
+ taskId1 = CreateTask(Task_LinkupStart, 80);
+ gTasks[taskId1].tMinPlayers = minPlayers;
+ gTasks[taskId1].tMaxPlayers = maxPlayers;
}
}
-static void sub_80B23B0(u16 windowId, u32 value)
+static void PrintNumPlayersInLink(u16 windowId, u32 numPlayers)
{
u8 xPos;
- ConvertIntToDecimalStringN(gStringVar1, value, STR_CONV_MODE_LEFT_ALIGN, 1);
+ ConvertIntToDecimalStringN(gStringVar1, numPlayers, STR_CONV_MODE_LEFT_ALIGN, 1);
SetStandardWindowBorderStyle(windowId, 0);
- StringExpandPlaceholders(gStringVar4, gText_XPLink);
+ StringExpandPlaceholders(gStringVar4, gText_NumPlayerLink);
xPos = GetStringCenterAlignXOffset(1, gStringVar4, 88);
AddTextPrinterParameterized(windowId, 1, gStringVar4, xPos, 1, 0xFF, NULL);
CopyWindowToVram(windowId, 3);
}
-static void sub_80B241C(u16 windowId)
+static void ClearLinkPlayerCountWindow(u16 windowId)
{
// Following this call with a copy-to-vram with mode 3 is identical to
// calling ClearStdWindowAndFrame(windowId, TRUE).
@@ -101,68 +112,68 @@ static void sub_80B241C(u16 windowId)
CopyWindowToVram(windowId, 3);
}
-static void sub_80B243C(u8 taskId, u8 arg1)
+static void UpdateLinkPlayerCountDisplay(u8 taskId, u8 numPlayers)
{
s16 *data = gTasks[taskId].data;
- if (arg1 != data[3])
+ if (numPlayers != tNumPlayers)
{
- if (arg1 <= 1)
- sub_80B241C(data[5]);
+ if (numPlayers <= 1)
+ ClearLinkPlayerCountWindow(tWindowId);
else
- sub_80B23B0(data[5], arg1);
- data[3] = arg1;
+ PrintNumPlayersInLink(tWindowId, numPlayers);
+ tNumPlayers = numPlayers;
}
}
-static u32 sub_80B2478(u8 lower, u8 upper)
+static u32 ExchangeDataAndGetLinkupStatus(u8 minPlayers, u8 maxPlayers)
{
int playerCount;
- switch (GetLinkPlayerDataExchangeStatusTimed(lower, upper))
+ switch (GetLinkPlayerDataExchangeStatusTimed(minPlayers, maxPlayers))
{
case EXCHANGE_COMPLETE:
- return 1;
- case EXCHANGE_IN_PROGRESS:
- return 3;
+ return LINKUP_SUCCESS;
+ case EXCHANGE_DIFF_SELECTIONS:
+ return LINKUP_DIFF_SELECTIONS;
case EXCHANGE_PLAYER_NOT_READY:
- return 7;
+ return LINKUP_PLAYER_NOT_READY;
case EXCHANGE_PARTNER_NOT_READY:
- return 9;
- case EXCHANGE_STAT_6:
+ return LINKUP_PARTNER_NOT_READY;
+ case EXCHANGE_WRONG_NUM_PLAYERS:
ConvertIntToDecimalStringN(gStringVar1, GetLinkPlayerCount_2(), STR_CONV_MODE_LEFT_ALIGN, 1);
- return 4;
+ return LINKUP_WRONG_NUM_PLAYERS;
case EXCHANGE_STAT_7:
- return 10;
+ return LINKUP_FAILED_CONTEST_GMODE;
case EXCHANGE_TIMED_OUT:
default:
- return 0;
+ return LINKUP_ONGOING;
}
}
-static bool32 sub_80B24F8(u8 taskId)
+static bool32 CheckLinkErrored(u8 taskId)
{
if (HasLinkErrorOccurred() == TRUE)
{
- gTasks[taskId].func = sub_80B2D2C;
+ gTasks[taskId].func = Task_LinkupConnectionError;
return TRUE;
}
return FALSE;
}
-static bool32 sub_80B252C(u8 taskId)
+static bool32 CheckLinkCanceledBeforeConnection(u8 taskId)
{
if ((gMain.newKeys & B_BUTTON)
&& IsLinkConnectionEstablished() == FALSE)
{
gLinkType = 0;
- gTasks[taskId].func = sub_80B2CEC;
+ gTasks[taskId].func = Task_LinkupFailed;
return TRUE;
}
return FALSE;
}
-static bool32 sub_80B2578(u8 taskId)
+static bool32 CheckLinkCanceled(u8 taskId)
{
if (IsLinkConnectionEstablished())
SetSuppressLinkErrorMessage(TRUE);
@@ -170,7 +181,7 @@ static bool32 sub_80B2578(u8 taskId)
if (gMain.newKeys & B_BUTTON)
{
gLinkType = 0;
- gTasks[taskId].func = sub_80B2CEC;
+ gTasks[taskId].func = Task_LinkupFailed;
return TRUE;
}
return FALSE;
@@ -180,12 +191,13 @@ static bool32 sub_80B25CC(u8 taskId)
{
if (GetSioMultiSI() == 1)
{
- gTasks[taskId].func = sub_80B2D2C;
+ gTasks[taskId].func = Task_LinkupConnectionError;
return TRUE;
}
return FALSE;
}
+// Unused
static void sub_80B2600(u8 taskId)
{
gTasks[taskId].data[0]++;
@@ -196,7 +208,7 @@ static void sub_80B2600(u8 taskId)
}
}
-static void sub_80B2634(u8 taskId)
+static void Task_LinkupStart(u8 taskId)
{
s16 *data = gTasks[taskId].data;
@@ -205,21 +217,21 @@ static void sub_80B2634(u8 taskId)
OpenLinkTimed();
ResetLinkPlayerCount();
ResetLinkPlayers();
- data[5] = AddWindow(&gUnknown_08550594);
+ tWindowId = AddWindow(&sWindowTemplate_LinkPlayerCount);
}
else if (data[0] > 9)
{
- gTasks[taskId].func = sub_80B2688;
+ gTasks[taskId].func = Task_LinkupAwaitConnection;
}
data[0]++;
}
-static void sub_80B2688(u8 taskId)
+static void Task_LinkupAwaitConnection(u8 taskId)
{
u32 playerCount = GetLinkPlayerCount_2();
- if (sub_80B252C(taskId) == TRUE
- || sub_80B2578(taskId) == TRUE
+ if (CheckLinkCanceledBeforeConnection(taskId) == TRUE
+ || CheckLinkCanceled(taskId) == TRUE
|| playerCount < 2)
return;
@@ -229,60 +241,60 @@ static void sub_80B2688(u8 taskId)
{
PlaySE(SE_PIN);
ShowFieldAutoScrollMessage(gText_ConfirmLinkWhenPlayersReady);
- gTasks[taskId].func = sub_80B270C;
+ gTasks[taskId].func = Task_LinkupConfirmWhenReady;
}
else
{
PlaySE(SE_BOO);
ShowFieldAutoScrollMessage(gText_AwaitingLinkup);
- gTasks[taskId].func = sub_80B2918;
+ gTasks[taskId].func = Task_LinkupExchangeDataWithLeader;
}
}
-static void sub_80B270C(u8 taskId)
+static void Task_LinkupConfirmWhenReady(u8 taskId)
{
- if (sub_80B252C(taskId) == TRUE
+ if (CheckLinkCanceledBeforeConnection(taskId) == TRUE
|| sub_80B25CC(taskId) == TRUE
- || sub_80B24F8(taskId) == TRUE)
+ || CheckLinkErrored(taskId) == TRUE)
return;
if (GetFieldMessageBoxMode() == FIELD_MESSAGE_BOX_HIDDEN)
{
- gTasks[taskId].data[3] = 0;
- gTasks[taskId].func = sub_80B275C;
+ gTasks[taskId].tNumPlayers = 0;
+ gTasks[taskId].func = Task_LinkupAwaitConfirmation;
}
}
-static void sub_80B275C(u8 taskId)
+static void Task_LinkupAwaitConfirmation(u8 taskId)
{
s16 *data = gTasks[taskId].data;
s32 linkPlayerCount = GetLinkPlayerCount_2();
- if (sub_80B252C(taskId) == TRUE
+ if (CheckLinkCanceledBeforeConnection(taskId) == TRUE
|| sub_80B25CC(taskId) == TRUE
- || sub_80B24F8(taskId) == TRUE)
+ || CheckLinkErrored(taskId) == TRUE)
return;
- sub_80B243C(taskId, linkPlayerCount);
+ UpdateLinkPlayerCountDisplay(taskId, linkPlayerCount);
if (!(gMain.newKeys & A_BUTTON))
return;
- if (linkPlayerCount < data[1])
+ if (linkPlayerCount < tMinPlayers)
return;
sub_800AA04(linkPlayerCount);
- sub_80B241C(data[5]);
+ ClearLinkPlayerCountWindow(tWindowId);
ConvertIntToDecimalStringN(gStringVar1, linkPlayerCount, STR_CONV_MODE_LEFT_ALIGN, 1);
ShowFieldAutoScrollMessage(gText_ConfirmStartLinkWithXPlayers);
- gTasks[taskId].func = sub_80B2804;
+ gTasks[taskId].func = Task_LinkupTryConfirmation;
}
-static void sub_80B2804(u8 taskId)
+static void Task_LinkupTryConfirmation(u8 taskId)
{
- if (sub_80B252C(taskId) == TRUE
+ if (CheckLinkCanceledBeforeConnection(taskId) == TRUE
|| sub_80B25CC(taskId) == TRUE
- || sub_80B24F8(taskId) == TRUE)
+ || CheckLinkErrored(taskId) == TRUE)
return;
if (GetFieldMessageBoxMode() == FIELD_MESSAGE_BOX_HIDDEN)
@@ -290,69 +302,71 @@ static void sub_80B2804(u8 taskId)
if (GetSavedPlayerCount() != GetLinkPlayerCount_2())
{
ShowFieldAutoScrollMessage(gText_ConfirmLinkWhenPlayersReady);
- gTasks[taskId].func = sub_80B270C;
+ gTasks[taskId].func = Task_LinkupConfirmWhenReady;
}
else if (gMain.heldKeys & B_BUTTON)
{
ShowFieldAutoScrollMessage(gText_ConfirmLinkWhenPlayersReady);
- gTasks[taskId].func = sub_80B270C;
+ gTasks[taskId].func = Task_LinkupConfirmWhenReady;
}
else if (gMain.heldKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
CheckShouldAdvanceLinkState();
- gTasks[taskId].func = sub_80B28A8;
+ gTasks[taskId].func = Task_LinkupConfirm;
}
}
}
-static void sub_80B28A8(u8 taskId)
+static void Task_LinkupConfirm(u8 taskId)
{
- u8 local1 = gTasks[taskId].data[1];
- u8 local2 = gTasks[taskId].data[2];
+ u8 minPlayers = gTasks[taskId].tMinPlayers;
+ u8 maxPlayers = gTasks[taskId].tMaxPlayers;
- if (sub_80B24F8(taskId) == TRUE
- || sub_80B2D6C(taskId) == TRUE)
+ if (CheckLinkErrored(taskId) == TRUE
+ || TryLinkTimeout(taskId) == TRUE)
return;
if (GetLinkPlayerCount_2() != GetSavedPlayerCount())
{
- gTasks[taskId].func = sub_80B2D2C;
+ gTasks[taskId].func = Task_LinkupConnectionError;
}
else
{
- gSpecialVar_Result = sub_80B2478(local1, local2);
- if (gSpecialVar_Result != 0)
- gTasks[taskId].func = sub_80B2A08;
+ gSpecialVar_Result = ExchangeDataAndGetLinkupStatus(minPlayers, maxPlayers);
+ if (gSpecialVar_Result != LINKUP_ONGOING)
+ gTasks[taskId].func = Task_LinkupCheckStatusAfterConfirm;
}
}
-static void sub_80B2918(u8 taskId)
+static void Task_LinkupExchangeDataWithLeader(u8 taskId)
{
- u8 local1, local2;
+ u8 minPlayers, maxPlayers;
struct TrainerCard *card;
- local1 = gTasks[taskId].data[1];
- local2 = gTasks[taskId].data[2];
+ minPlayers = gTasks[taskId].tMinPlayers;
+ maxPlayers = gTasks[taskId].tMaxPlayers;
- if (sub_80B252C(taskId) == TRUE
- || sub_80B24F8(taskId) == TRUE)
+ if (CheckLinkCanceledBeforeConnection(taskId) == TRUE
+ || CheckLinkErrored(taskId) == TRUE)
return;
- gSpecialVar_Result = sub_80B2478(local1, local2);
- if (gSpecialVar_Result == 0)
+ gSpecialVar_Result = ExchangeDataAndGetLinkupStatus(minPlayers, maxPlayers);
+ if (gSpecialVar_Result == LINKUP_ONGOING)
return;
- if (gSpecialVar_Result == 3 || gSpecialVar_Result == 4)
+ if (gSpecialVar_Result == LINKUP_DIFF_SELECTIONS
+ || gSpecialVar_Result == LINKUP_WRONG_NUM_PLAYERS)
{
sub_800AC34();
HideFieldMessageBox();
- gTasks[taskId].func = sub_80B2CB0;
+ gTasks[taskId].func = Task_StopLinkup;
}
- else if (gSpecialVar_Result == 7 || gSpecialVar_Result == 9)
+ else if (gSpecialVar_Result == LINKUP_PLAYER_NOT_READY
+ || gSpecialVar_Result == LINKUP_PARTNER_NOT_READY)
{
CloseLink();
HideFieldMessageBox();
- gTasks[taskId].func = sub_80B2CB0;
+ gTasks[taskId].func = Task_StopLinkup;
}
else
{
@@ -363,43 +377,44 @@ static void sub_80B2918(u8 taskId)
TrainerCard_GenerateCardForPlayer(card);
card->monSpecies[0] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[0] - 1], MON_DATA_SPECIES, NULL);
card->monSpecies[1] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[1] - 1], MON_DATA_SPECIES, NULL);
- gTasks[taskId].func = sub_80B2C30;
+ gTasks[taskId].func = Task_LinkupAwaitTrainerCardData;
}
}
-static void sub_80B2A08(u8 taskId)
+static void Task_LinkupCheckStatusAfterConfirm(u8 taskId)
{
struct TrainerCard *card;
- if (sub_80B24F8(taskId) == TRUE)
+ if (CheckLinkErrored(taskId) == TRUE)
return;
- if (gSpecialVar_Result == 4)
+ if (gSpecialVar_Result == LINKUP_WRONG_NUM_PLAYERS)
{
if (!Link_AnyPartnersPlayingRubyOrSapphire())
{
sub_800AC34();
HideFieldMessageBox();
- gTasks[taskId].func = sub_80B2CB0;
+ gTasks[taskId].func = Task_StopLinkup;
}
else
{
CloseLink();
HideFieldMessageBox();
- gTasks[taskId].func = sub_80B2CB0;
+ gTasks[taskId].func = Task_StopLinkup;
}
}
- else if (gSpecialVar_Result == 3)
+ else if (gSpecialVar_Result == LINKUP_DIFF_SELECTIONS)
{
sub_800AC34();
HideFieldMessageBox();
- gTasks[taskId].func = sub_80B2CB0;
+ gTasks[taskId].func = Task_StopLinkup;
}
- else if (gSpecialVar_Result == 7 || gSpecialVar_Result == 9)
+ else if (gSpecialVar_Result == LINKUP_PLAYER_NOT_READY
+ || gSpecialVar_Result == LINKUP_PARTNER_NOT_READY)
{
CloseLink();
HideFieldMessageBox();
- gTasks[taskId].func = sub_80B2CB0;
+ gTasks[taskId].func = Task_StopLinkup;
}
else
{
@@ -410,90 +425,95 @@ static void sub_80B2A08(u8 taskId)
TrainerCard_GenerateCardForPlayer(card);
card->monSpecies[0] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[0] - 1], MON_DATA_SPECIES, NULL);
card->monSpecies[1] = GetMonData(&gPlayerParty[gSelectedOrderFromParty[1] - 1], MON_DATA_SPECIES, NULL);
- gTasks[taskId].func = sub_80B2C30;
+ gTasks[taskId].func = Task_LinkupAwaitTrainerCardData;
sub_800A4D8(2);
}
}
-bool32 sub_80B2AF4(u16 *arg0, u16 *arg1)
+bool32 AreBattleTowerLinkSpeciesSame(u16 *speciesList1, u16 *speciesList2)
{
int i;
int j;
- bool32 result = FALSE;
- int k = 0;
+ bool32 haveSameSpecies = FALSE;
+ int numSameSpecies = 0;
gStringVar1[0] = EOS;
gStringVar2[0] = EOS;
- for (i = 0; i < 2; i++)
+ for (i = 0; i < FRONTIER_MULTI_PARTY_SIZE; i++)
{
- for (j = 0; j < 2; j++)
+ for (j = 0; j < FRONTIER_MULTI_PARTY_SIZE; j++)
{
- if (arg0[i] == arg1[j])
+ if (speciesList1[i] == speciesList2[j])
{
- if (k == 0)
+ if (numSameSpecies == 0)
{
- StringCopy(gStringVar1, gSpeciesNames[arg0[i]]);
- result = TRUE;
+ StringCopy(gStringVar1, gSpeciesNames[speciesList1[i]]);
+ haveSameSpecies = TRUE;
}
- if (k == 1)
+ if (numSameSpecies == 1)
{
- StringCopy(gStringVar2, gSpeciesNames[arg0[i]]);
- result = TRUE;
+ StringCopy(gStringVar2, gSpeciesNames[speciesList1[i]]);
+ haveSameSpecies = TRUE;
}
- k++;
+ numSameSpecies++;
}
}
}
- gSpecialVar_0x8005 = k;
+ // var below is read by BattleFrontier_BattleTowerLobby_EventScript_AbortLink
+ gSpecialVar_0x8005 = numSameSpecies;
- return result;
+ return haveSameSpecies;
}
-static void task_map_chg_seq_0807EC34(u16 *a0, u32 taskId)
+static void FinishLinkup(u16 *linkupStatus, u32 taskId)
{
struct TrainerCard *trainerCards = gTrainerCards;
- if (*a0 == 1)
+ if (*linkupStatus == LINKUP_SUCCESS)
{
if (gLinkType == LINKTYPE_BATTLE_TOWER_50 || gLinkType == LINKTYPE_BATTLE_TOWER_OPEN)
{
- if (sub_80B2AF4(trainerCards[0].monSpecies, trainerCards[1].monSpecies))
+ if (AreBattleTowerLinkSpeciesSame(trainerCards[0].monSpecies, trainerCards[1].monSpecies))
{
- *a0 = 11;
+ // Unsuccessful battle tower linkup
+ *linkupStatus = LINKUP_FAILED_BATTLE_TOWER;
sub_800AC34();
- gTasks[taskId].func = sub_80B2CB0;
+ gTasks[taskId].func = Task_StopLinkup;
}
else
{
- sub_80B241C(gTasks[taskId].data[5]);
+ // Successful battle tower linkup
+ ClearLinkPlayerCountWindow(gTasks[taskId].tWindowId);
EnableBothScriptContexts();
DestroyTask(taskId);
}
}
else
{
- sub_80B241C(gTasks[taskId].data[5]);
+ // Successful linkup
+ ClearLinkPlayerCountWindow(gTasks[taskId].tWindowId);
EnableBothScriptContexts();
DestroyTask(taskId);
}
}
else
{
+ // Unsuccessful linkup
sub_800AC34();
- gTasks[taskId].func = sub_80B2CB0;
+ gTasks[taskId].func = Task_StopLinkup;
}
}
-static void sub_80B2C30(u8 taskId)
+static void Task_LinkupAwaitTrainerCardData(u8 taskId)
{
u8 index;
struct TrainerCard *trainerCards;
- if (sub_80B24F8(taskId) == TRUE)
+ if (CheckLinkErrored(taskId) == TRUE)
return;
if (GetBlockReceivedStatus() != sub_800A9A8())
@@ -506,74 +526,74 @@ static void sub_80B2C30(u8 taskId)
SetSuppressLinkErrorMessage(FALSE);
ResetBlockReceivedFlags();
- task_map_chg_seq_0807EC34(&gSpecialVar_Result, taskId);
+ FinishLinkup(&gSpecialVar_Result, taskId);
}
-static void sub_80B2CB0(u8 taskId)
+static void Task_StopLinkup(u8 taskId)
{
- if (gReceivedRemoteLinkPlayers == FALSE)
+ if (!gReceivedRemoteLinkPlayers)
{
- sub_80B241C(gTasks[taskId].data[5]);
+ ClearLinkPlayerCountWindow(gTasks[taskId].tWindowId);
EnableBothScriptContexts();
- RemoveWindow(gTasks[taskId].data[5]);
+ RemoveWindow(gTasks[taskId].tWindowId);
DestroyTask(taskId);
}
}
-static void sub_80B2CEC(u8 taskId)
+static void Task_LinkupFailed(u8 taskId)
{
- gSpecialVar_Result = 5;
- sub_80B241C(gTasks[taskId].data[5]);
- sub_8098374();
- RemoveWindow(gTasks[taskId].data[5]);
+ gSpecialVar_Result = LINKUP_FAILED;
+ ClearLinkPlayerCountWindow(gTasks[taskId].tWindowId);
+ StopFieldMessage();
+ RemoveWindow(gTasks[taskId].tWindowId);
EnableBothScriptContexts();
DestroyTask(taskId);
}
-static void sub_80B2D2C(u8 taskId)
+static void Task_LinkupConnectionError(u8 taskId)
{
- gSpecialVar_Result = 6;
- sub_80B241C(gTasks[taskId].data[5]);
- RemoveWindow(gTasks[taskId].data[5]);
+ gSpecialVar_Result = LINKUP_CONNECTION_ERROR;
+ ClearLinkPlayerCountWindow(gTasks[taskId].tWindowId);
+ RemoveWindow(gTasks[taskId].tWindowId);
HideFieldMessageBox();
EnableBothScriptContexts();
DestroyTask(taskId);
}
-static bool8 sub_80B2D6C(u8 taskId)
+static bool8 TryLinkTimeout(u8 taskId)
{
- gTasks[taskId].data[4]++;
- if (gTasks[taskId].data[4] > 600)
+ gTasks[taskId].tTimer++;
+ if (gTasks[taskId].tTimer > 600)
{
- gTasks[taskId].func = sub_80B2D2C;
+ gTasks[taskId].func = Task_LinkupConnectionError;
return TRUE;
}
return FALSE;
}
-void TryBattleLinkup(u8 arg0)
+void TryBattleLinkup(void)
{
- u8 r3 = 2;
- u8 r2 = 2;
+ u8 minPlayers = 2;
+ u8 maxPlayers = 2;
switch (gSpecialVar_0x8004)
{
case USING_SINGLE_BATTLE:
- r3 = 2;
+ minPlayers = 2;
gLinkType = LINKTYPE_SINGLE_BATTLE;
break;
case USING_DOUBLE_BATTLE:
- r3 = 2;
+ minPlayers = 2;
gLinkType = LINKTYPE_DOUBLE_BATTLE;
break;
case USING_MULTI_BATTLE:
- r3 = 4;
- r2 = 4;
+ minPlayers = 4;
+ maxPlayers = 4;
gLinkType = LINKTYPE_MULTI_BATTLE;
break;
case USING_BATTLE_TOWER:
- r3 = 2;
+ minPlayers = 2;
if (gSaveBlock2Ptr->frontier.lvlMode == FRONTIER_LVL_50)
gLinkType = LINKTYPE_BATTLE_TOWER_50;
else
@@ -582,46 +602,52 @@ void TryBattleLinkup(u8 arg0)
break;
}
- sub_80B236C(r3, r2);
+ CreateLinkupTask(minPlayers, maxPlayers);
}
+#undef tMinPlayers
+#undef tMaxPlayers
+#undef tNumPlayers
+#undef tTimer
+#undef tWindowId
+
void TryTradeLinkup(void)
{
- gLinkType = LINKTYPE_0x1133;
+ gLinkType = LINKTYPE_TRADE_SETUP;
gBattleTypeFlags = 0;
- sub_80B236C(2, 2);
+ CreateLinkupTask(2, 2);
}
void TryRecordMixLinkup(void)
{
- gSpecialVar_Result = 0;
- gLinkType = LINKTYPE_0x3311;
+ gSpecialVar_Result = LINKUP_ONGOING;
+ gLinkType = LINKTYPE_RECORD_MIX_BEFORE;
gBattleTypeFlags = 0;
- sub_80B236C(2, 4);
+ CreateLinkupTask(2, 4);
}
-void sub_80B2EA8(void)
+void ValidateMixingGameLanguage(void)
{
- u32 taskId = FindTaskIdByFunc(sub_80B2EE4);
+ u32 taskId = FindTaskIdByFunc(Task_ValidateMixingGameLanguage);
if (taskId == 0xFF)
{
- taskId = CreateTask(sub_80B2EE4, 80);
- gTasks[taskId].data[0] = 0;
+ taskId = CreateTask(Task_ValidateMixingGameLanguage, 80);
+ gTasks[taskId].tState = 0;
}
}
-static void sub_80B2EE4(u8 taskId)
+static void Task_ValidateMixingGameLanguage(u8 taskId)
{
int playerCount;
int i;
- switch (gTasks[taskId].data[0])
+ switch (gTasks[taskId].tState)
{
case 0:
- if (gSpecialVar_Result == 1)
+ if (gSpecialVar_Result == LINKUP_SUCCESS)
{
- bool32 unk = FALSE;
+ bool32 mixingForeignGames = FALSE;
bool32 isEnglishRSLinked = FALSE;
bool32 isJapaneseEmeraldLinked = FALSE;
@@ -635,7 +661,7 @@ static void sub_80B2EE4(u8 taskId)
{
if (language == LANGUAGE_JAPANESE)
{
- unk = TRUE;
+ mixingForeignGames = TRUE;
break;
}
else
@@ -654,14 +680,14 @@ static void sub_80B2EE4(u8 taskId)
if (isEnglishRSLinked && isJapaneseEmeraldLinked)
{
- unk = TRUE;
+ mixingForeignGames = TRUE;
}
- if (unk)
+ if (mixingForeignGames)
{
- gSpecialVar_Result = 12;
+ gSpecialVar_Result = LINKUP_FOREIGN_GAME;
sub_800AD10();
- gTasks[taskId].data[0] = 1;
+ gTasks[taskId].tState = 1;
return;
}
}
@@ -669,7 +695,7 @@ static void sub_80B2EE4(u8 taskId)
DestroyTask(taskId);
break;
case 1:
- if (gReceivedRemoteLinkPlayers == FALSE)
+ if (!gReceivedRemoteLinkPlayers)
{
EnableBothScriptContexts();
DestroyTask(taskId);
@@ -682,26 +708,26 @@ void TryBerryBlenderLinkup(void)
{
gLinkType = LINKTYPE_BERRY_BLENDER_SETUP;
gBattleTypeFlags = 0;
- sub_80B236C(2, 4);
+ CreateLinkupTask(2, 4);
}
void TryContestGModeLinkup(void)
{
gLinkType = LINKTYPE_CONTEST_GMODE;
gBattleTypeFlags = 0;
- sub_80B236C(4, 4);
+ CreateLinkupTask(4, 4);
}
void TryContestEModeLinkup(void)
{
gLinkType = LINKTYPE_CONTEST_EMODE;
gBattleTypeFlags = 0;
- sub_80B236C(2, 4);
+ CreateLinkupTask(2, 4);
}
-u8 sub_80B3050(void)
+u8 CreateTask_ReestablishCableClubLink(void)
{
- if (FuncIsActiveTask(sub_80B3144) != FALSE)
+ if (FuncIsActiveTask(Task_ReestablishLink) != FALSE)
return 0xFF;
switch (gSpecialVar_0x8004)
@@ -717,26 +743,22 @@ u8 sub_80B3050(void)
break;
case USING_BATTLE_TOWER:
if (gSaveBlock2Ptr->frontier.lvlMode == FRONTIER_LVL_50)
- {
gLinkType = LINKTYPE_BATTLE_TOWER_50;
- }
else
- {
gLinkType = LINKTYPE_BATTLE_TOWER_OPEN;
- }
break;
case USING_TRADE_CENTER:
- gLinkType = LINKTYPE_0x1111;
+ gLinkType = LINKTYPE_TRADE;
break;
case USING_RECORD_CORNER:
- gLinkType = LINKTYPE_0x3322;
+ gLinkType = LINKTYPE_RECORD_MIX_AFTER;
break;
}
- return CreateTask(sub_80B3144, 80);
+ return CreateTask(Task_ReestablishLink, 80);
}
-static void sub_80B3144(u8 taskId)
+static void Task_ReestablishLink(u8 taskId)
{
s16 *data = gTasks[taskId].data;
@@ -744,36 +766,36 @@ static void sub_80B3144(u8 taskId)
{
OpenLink();
ResetLinkPlayers();
- CreateTask(task00_08081A90, 80);
+ CreateTask(Task_WaitForLinkPlayerConnection, 80);
}
else if (data[0] >= 10)
{
- gTasks[taskId].func = sub_80B3194;
+ gTasks[taskId].func = Task_ReestablishLinkAwaitConnection;
}
data[0]++;
}
-static void sub_80B3194(u8 taskId)
+static void Task_ReestablishLinkAwaitConnection(u8 taskId)
{
if (GetLinkPlayerCount_2() >= 2)
{
if (IsLinkMaster() == TRUE)
- gTasks[taskId].func = sub_80B31E8;
+ gTasks[taskId].func = Task_ReestablishLinkLeader;
else
- gTasks[taskId].func = sub_80B3220;
+ gTasks[taskId].func = Task_ReestablishLinkAwaitConfirmation;
}
}
-static void sub_80B31E8(u8 taskId)
+static void Task_ReestablishLinkLeader(u8 taskId)
{
if (GetSavedPlayerCount() == GetLinkPlayerCount_2())
{
CheckShouldAdvanceLinkState();
- gTasks[taskId].func = sub_80B3220;
+ gTasks[taskId].func = Task_ReestablishLinkAwaitConfirmation;
}
}
-static void sub_80B3220(u8 taskId)
+static void Task_ReestablishLinkAwaitConfirmation(u8 taskId)
{
if (gReceivedRemoteLinkPlayers == TRUE
&& IsLinkPlayerDataExchangeComplete() == TRUE)
@@ -794,50 +816,52 @@ static void SetLinkBattleTypeFlags(int linkService)
{
switch (linkService)
{
- case USING_SINGLE_BATTLE:
- gBattleTypeFlags = BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER;
- break;
- case USING_DOUBLE_BATTLE:
- gBattleTypeFlags = BATTLE_TYPE_DOUBLE | BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER;
- break;
- case USING_MULTI_BATTLE:
- ReducePlayerPartyToSelectedMons();
- gBattleTypeFlags = BATTLE_TYPE_DOUBLE | BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER | BATTLE_TYPE_MULTI;
- break;
- case USING_BATTLE_TOWER:
- gBattleTypeFlags = BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOUBLE | BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER | BATTLE_TYPE_MULTI;
- break;
+ case USING_SINGLE_BATTLE:
+ gBattleTypeFlags = BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER;
+ break;
+ case USING_DOUBLE_BATTLE:
+ gBattleTypeFlags = BATTLE_TYPE_DOUBLE | BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER;
+ break;
+ case USING_MULTI_BATTLE:
+ ReducePlayerPartyToSelectedMons();
+ gBattleTypeFlags = BATTLE_TYPE_DOUBLE | BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER | BATTLE_TYPE_MULTI;
+ break;
+ case USING_BATTLE_TOWER:
+ gBattleTypeFlags = BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOUBLE | BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER | BATTLE_TYPE_MULTI;
+ break;
}
}
-static void sub_80B32B4(u8 taskId)
+#define tTimer data[1]
+
+static void Task_StartWiredCableClubBattle(u8 taskId)
{
struct Task* task = &gTasks[taskId];
- switch (task->data[0])
+ switch (task->tState)
{
case 0:
FadeScreen(FADE_TO_BLACK, 0);
gLinkType = LINKTYPE_BATTLE;
ClearLinkCallback_2();
- task->data[0]++;
+ task->tState++;
break;
case 1:
if (!gPaletteFade.active)
- task->data[0]++;
+ task->tState++;
break;
case 2:
- task->data[1]++;
- if (task->data[1] > 20)
- task->data[0]++;
+ task->tTimer++;
+ if (task->tTimer > 20)
+ task->tState++;
break;
case 3:
sub_800AC34();
- task->data[0]++;
+ task->tState++;
break;
case 4:
if (!gReceivedRemoteLinkPlayers)
- task->data[0]++;
+ task->tState++;
break;
case 5:
if (gLinkPlayers[0].trainerId & 1)
@@ -847,7 +871,7 @@ static void sub_80B32B4(u8 taskId)
SetLinkBattleTypeFlags(gSpecialVar_0x8004);
CleanupOverworldWindowsAndTilemaps();
- gTrainerBattleOpponent_A = 0x800;
+ gTrainerBattleOpponent_A = TRAINER_LINK_OPPONENT;
SetMainCallback2(CB2_InitBattle);
gMain.savedCallback = CB2_ReturnFromCableClubBattle;
DestroyTask(taskId);
@@ -855,26 +879,26 @@ static void sub_80B32B4(u8 taskId)
}
}
-static void sub_80B33BC(u8 taskId)
+static void Task_StartWirelessCableClubBattle(u8 taskId)
{
int i;
s16* data = gTasks[taskId].data;
- switch (data[0])
+ switch (tState)
{
case 0:
FadeScreen(FADE_TO_BLACK, 0);
gLinkType = LINKTYPE_BATTLE;
ClearLinkCallback_2();
- data[0] = 1;
+ tState = 1;
break;
case 1:
if (!gPaletteFade.active)
- data[0] = 2;
+ tState = 2;
break;
case 2:
SendBlock(0, &gLocalLinkPlayer, sizeof(gLocalLinkPlayer));
- data[0] = 3;
+ tState = 3;
break;
case 3:
if (GetBlockReceivedStatus() == sub_800A9D8())
@@ -886,22 +910,22 @@ static void sub_80B33BC(u8 taskId)
sub_800B524(&gLinkPlayers[i]);
ResetBlockReceivedFlag(i);
}
- data[0] = 4;
+ tState = 4;
}
break;
case 4:
- data[1]++;
- if (data[1] > 20)
- data[0] = 5;
+ tTimer++;
+ if (tTimer > 20)
+ tState = 5;
break;
case 5:
sub_800ADF8();
- data[0] = 6;
+ tState = 6;
break;
case 6:
if (IsLinkTaskFinished())
{
- data[0] = 7;
+ tState = 7;
}
break;
case 7:
@@ -913,7 +937,7 @@ static void sub_80B33BC(u8 taskId)
gLinkPlayers[0].linkType = LINKTYPE_BATTLE;
SetLinkBattleTypeFlags(gSpecialVar_0x8004);
CleanupOverworldWindowsAndTilemaps();
- gTrainerBattleOpponent_A = 0x800;
+ gTrainerBattleOpponent_A = TRAINER_LINK_OPPONENT;
SetMainCallback2(CB2_InitBattle);
gMain.savedCallback = CB2_ReturnFromCableClubBattle;
DestroyTask(taskId);
@@ -921,46 +945,48 @@ static void sub_80B33BC(u8 taskId)
}
}
-static void sub_80B3554(void)
+#undef tTimer
+
+static void CB2_ReturnFromUnionRoomBattle(void)
{
u8 playerCount;
int i;
- bool32 r4;
+ bool32 linkedWithFRLG;
switch (gMain.state)
{
- case 0:
- playerCount = GetLinkPlayerCount();
- r4 = FALSE;
- for (i = 0; i < playerCount; i++)
+ case 0:
+ playerCount = GetLinkPlayerCount();
+ linkedWithFRLG = FALSE;
+ for (i = 0; i < playerCount; i++)
+ {
+ u32 version = (u8)gLinkPlayers[i].version;
+ if (version == VERSION_FIRE_RED || version == VERSION_LEAF_GREEN)
{
- u32 version = (u8)gLinkPlayers[i].version;
- if (version == VERSION_FIRE_RED || version == VERSION_LEAF_GREEN)
- {
- r4 = TRUE;
- break;
- }
+ linkedWithFRLG = TRUE;
+ break;
}
+ }
- if (r4)
- {
- gMain.state = 2;
- }
- else
- {
- sub_800AC34();
- gMain.state = 1;
- }
- break;
- case 1:
- if (gReceivedRemoteLinkPlayers == FALSE)
- {
- SetMainCallback2(CB2_ReturnToField);
- }
- break;
- case 2:
+ if (linkedWithFRLG)
+ {
+ gMain.state = 2;
+ }
+ else
+ {
+ sub_800AC34();
+ gMain.state = 1;
+ }
+ break;
+ case 1:
+ if (!gReceivedRemoteLinkPlayers)
+ {
SetMainCallback2(CB2_ReturnToField);
- break;
+ }
+ break;
+ case 2:
+ SetMainCallback2(CB2_ReturnToField);
+ break;
}
RunTasks();
}
@@ -980,26 +1006,22 @@ void CB2_ReturnFromCableClubBattle(void)
{
switch (gBattleOutcome)
{
- case B_OUTCOME_WON:
- sub_801B990(0, gLinkPlayers[GetMultiplayerId() ^ 1].trainerId);
- break;
- case B_OUTCOME_LOST:
- sub_801B990(1, gLinkPlayers[GetMultiplayerId() ^ 1].trainerId);
- break;
+ case B_OUTCOME_WON:
+ RecordIdOfWonderCardSenderByEventType(0, gLinkPlayers[GetMultiplayerId() ^ 1].trainerId);
+ break;
+ case B_OUTCOME_LOST:
+ RecordIdOfWonderCardSenderByEventType(1, gLinkPlayers[GetMultiplayerId() ^ 1].trainerId);
+ break;
}
}
}
if (InUnionRoom() == TRUE)
- {
- gMain.savedCallback = sub_80B3554;
- }
+ gMain.savedCallback = CB2_ReturnFromUnionRoomBattle;
else
- {
gMain.savedCallback = CB2_ReturnToFieldFromMultiplayer;
- }
- SetMainCallback2(sub_80A0514);
+ SetMainCallback2(CB2_SetUpSaveAfterLinkBattle);
}
void CleanupLinkRoomState(void)
@@ -1020,22 +1042,23 @@ void ExitLinkRoom(void)
QueueExitLinkRoomKey();
}
-static void sub_80B3728(u8 taskId)
+// Note: gSpecialVar_0x8005 contains the id of the seat the player entered
+static void Task_EnterCableClubSeat(u8 taskId)
{
struct Task* task = &gTasks[taskId];
- switch (task->data[0])
+ switch (task->tState)
{
case 0:
ShowFieldMessage(gText_PleaseWaitForLink);
- task->data[0] = 1;
+ task->tState = 1;
break;
case 1:
if (IsFieldMessageBoxHidden())
{
sub_8087288();
SetLocalLinkPlayerId(gSpecialVar_0x8005);
- task->data[0] = 2;
+ task->tState = 2;
}
break;
case 2:
@@ -1045,12 +1068,12 @@ static void sub_80B3728(u8 taskId)
break;
case 1:
HideFieldMessageBox();
- task->data[0] = 0;
+ task->tState = 0;
sub_80872C4();
SwitchTaskToFollowupFunc(taskId);
break;
case 2:
- task->data[0] = 3;
+ task->tState = 3;
break;
}
break;
@@ -1063,35 +1086,35 @@ static void sub_80B3728(u8 taskId)
}
}
-void sub_80B37D4(TaskFunc followupFunc)
+void CreateTask_EnterCableClubSeat(TaskFunc followupFunc)
{
- u8 taskId = CreateTask(sub_80B3728, 80);
- SetTaskFuncWithFollowupFunc(taskId, sub_80B3728, followupFunc);
+ u8 taskId = CreateTask(Task_EnterCableClubSeat, 80);
+ SetTaskFuncWithFollowupFunc(taskId, Task_EnterCableClubSeat, followupFunc);
ScriptContext1_Stop();
}
-static void sub_80B37FC(u8 taskId)
+static void Task_StartWiredTrade(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- switch (task->data[0])
+ switch (task->tState)
{
case 0:
ScriptContext2_Enable();
FadeScreen(FADE_TO_BLACK, 0);
ClearLinkCallback_2();
- task->data[0]++;
+ task->tState++;
break;
case 1:
if (!gPaletteFade.active)
- task->data[0]++;
+ task->tState++;
break;
case 2:
gSelectedTradeMonPositions[TRADE_PLAYER] = 0;
gSelectedTradeMonPositions[TRADE_PARTNER] = 0;
m4aMPlayAllStop();
sub_800AC34();
- task->data[0]++;
+ task->tState++;
break;
case 3:
if (!gReceivedRemoteLinkPlayers)
@@ -1103,55 +1126,51 @@ static void sub_80B37FC(u8 taskId)
}
}
-static void sub_80B3894(u8 taskId)
+static void Task_StartWirelessTrade(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- switch (data[0])
+ switch (tState)
{
case 0:
ScriptContext2_Enable();
FadeScreen(FADE_TO_BLACK, 0);
ClearLinkRfuCallback();
- data[0]++;
+ tState++;
break;
case 1:
if (!gPaletteFade.active)
- data[0]++;
+ tState++;
break;
case 2:
gSelectedTradeMonPositions[TRADE_PLAYER] = 0;
gSelectedTradeMonPositions[TRADE_PARTNER] = 0;
m4aMPlayAllStop();
sub_800ADF8();
- data[0]++;
+ tState++;
break;
case 3:
if (IsLinkTaskFinished())
{
- CreateTask_ReturnFromLinkTrade();
+ CreateTask_CreateTradeMenu();
DestroyTask(taskId);
}
break;
}
}
-// Note: VAR_0x8005 is set to the ID of the trade seat.
void PlayerEnteredTradeSeat(void)
{
if (gWirelessCommType != 0)
- {
- sub_80B37D4(sub_80B3894);
- }
+ CreateTask_EnterCableClubSeat(Task_StartWirelessTrade);
else
- {
- sub_80B37D4(sub_80B37FC);
- }
+ CreateTask_EnterCableClubSeat(Task_StartWiredTrade);
}
-static void sub_80B3950(void)
+// Unused
+static void CreateTask_StartWiredTrade(void)
{
- CreateTask(sub_80B37FC, 80);
+ CreateTask(Task_StartWiredTrade, 80);
}
void nullsub_37(void)
@@ -1159,25 +1178,20 @@ void nullsub_37(void)
}
-// Note: VAR_0x8005 is set to the ID of the player spot.
void ColosseumPlayerSpotTriggered(void)
{
gLinkType = LINKTYPE_BATTLE;
- if (gWirelessCommType != 0)
- {
- sub_80B37D4(sub_80B33BC);
- }
+ if (gWirelessCommType)
+ CreateTask_EnterCableClubSeat(Task_StartWirelessCableClubBattle);
else
- {
- sub_80B37D4(sub_80B32B4);
- }
+ CreateTask_EnterCableClubSeat(Task_StartWiredCableClubBattle);
}
-// This function is never called.
-static void sub_80B39A4(void)
+// Unused
+static void CreateTask_EnterCableClubSeatNoFollowup(void)
{
- u8 taskId = CreateTask(sub_80B3728, 80);
+ u8 taskId = CreateTask(Task_EnterCableClubSeat, 80);
ScriptContext1_Stop();
}
@@ -1199,16 +1213,18 @@ bool32 GetLinkTrainerCardColor(u8 linkPlayerIndex)
if (numStars == 0)
return FALSE;
- StringCopy(gStringVar2, gTrainerCardColorNames[numStars - 1]);
+ StringCopy(gStringVar2, sTrainerCardColorNames[numStars - 1]);
return TRUE;
}
-void task00_08081A90(u8 taskId)
+#define tTimer data[0]
+
+void Task_WaitForLinkPlayerConnection(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- task->data[0]++;
- if (task->data[0] > 300)
+ task->tTimer++;
+ if (task->tTimer > 300)
{
CloseLink();
SetMainCallback2(CB2_LinkError);
@@ -1217,6 +1233,7 @@ void task00_08081A90(u8 taskId)
if (gReceivedRemoteLinkPlayers)
{
+ // Players connected, destroy task
if (gWirelessCommType == 0)
{
if (!sub_800AA60())
@@ -1233,6 +1250,8 @@ void task00_08081A90(u8 taskId)
}
}
+#undef tTimer
+
static void sub_80B3AAC(u8 taskId)
{
if (!gReceivedRemoteLinkPlayers)
@@ -1242,67 +1261,72 @@ static void sub_80B3AAC(u8 taskId)
}
}
+// Unused
static void sub_80B3AD0(u8 taskId)
{
sub_800AC34();
gTasks[taskId].func = sub_80B3AAC;
}
+#define tTimer data[1]
+
void sub_80B3AF8(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- switch (data[0])
+ switch (tState)
{
- case 0:
- if (gWirelessCommType != 0)
- {
- DestroyTask(taskId);
- }
- else
- {
- OpenLink();
- CreateTask(task00_08081A90, 1);
- data[0]++;
- }
- break;
- case 1:
- if (++data[1] > 11)
- {
- data[1] = 0;
- data[0]++;
- }
- break;
- case 2:
- if (GetLinkPlayerCount_2() >= GetSavedPlayerCount())
+ case 0:
+ if (gWirelessCommType != 0)
+ {
+ DestroyTask(taskId);
+ }
+ else
+ {
+ OpenLink();
+ CreateTask(Task_WaitForLinkPlayerConnection, 1);
+ tState++;
+ }
+ break;
+ case 1:
+ if (++tTimer > 11)
+ {
+ tTimer = 0;
+ tState++;
+ }
+ break;
+ case 2:
+ if (GetLinkPlayerCount_2() >= GetSavedPlayerCount())
+ {
+ if (IsLinkMaster())
{
- if (IsLinkMaster())
- {
- if (++data[1] > 30)
- {
- CheckShouldAdvanceLinkState();
- data[0]++;
- }
- }
- else
+ if (++tTimer > 30)
{
- data[0]++;
+ CheckShouldAdvanceLinkState();
+ tState++;
}
}
- break;
- case 3:
- if (gReceivedRemoteLinkPlayers == TRUE && IsLinkPlayerDataExchangeComplete() == TRUE)
+ else
{
- DestroyTask(taskId);
+ tState++;
}
- break;
+ }
+ break;
+ case 3:
+ if (gReceivedRemoteLinkPlayers == TRUE && IsLinkPlayerDataExchangeComplete() == TRUE)
+ {
+ DestroyTask(taskId);
+ }
+ break;
}
}
+#undef tTimer
+
void TrySetBattleTowerLinkType(void)
{
if (gWirelessCommType == 0)
- {
gLinkType = LINKTYPE_BATTLE_TOWER;
- }
}
+
+#undef tState
diff --git a/src/dodrio_berry_picking.c b/src/dodrio_berry_picking.c
index 1eaedfd64..ccb1e28eb 100644
--- a/src/dodrio_berry_picking.c
+++ b/src/dodrio_berry_picking.c
@@ -4483,12 +4483,12 @@ static void sub_802A380(void)
case 2:
if (!IsDma3ManagerBusyWithBgCopy())
{
- CreateTask(sub_8153688, 0);
+ CreateTask(Task_LinkSave, 0);
gUnknown_02022CF8->state++;
}
break;
case 3:
- if (!FuncIsActiveTask(sub_8153688))
+ if (!FuncIsActiveTask(Task_LinkSave))
gUnknown_02022CF8->state++;
break;
default:
diff --git a/src/ereader_screen.c b/src/ereader_screen.c
index 754bbe445..26f7eb679 100755
--- a/src/ereader_screen.c
+++ b/src/ereader_screen.c
@@ -85,10 +85,10 @@ static u8 sub_81D4DE8(struct Unk03006370 *arg0)
return var0;
}
-static void sub_81D4E30(void)
+static void OpenEReaderLink(void)
{
memset(gDecompressionBuffer, 0, 0x2000);
- gLinkType = LINKTYPE_0x5503;
+ gLinkType = LINKTYPE_EREADER;
OpenLink();
SetSuppressLinkErrorMessage(TRUE);
}
@@ -255,7 +255,7 @@ static void sub_81D5084(u8 taskId)
data->unk8 = 1;
break;
case 1:
- sub_81D4E30();
+ OpenEReaderLink();
sub_81D505C(&data->unk0);
data->unk8 = 2;
break;
@@ -285,7 +285,7 @@ static void sub_81D5084(u8 taskId)
case 5:
if (sub_81D5064(&data->unk0, 90))
{
- sub_81D4E30();
+ OpenEReaderLink();
data->unk8 = 6;
}
else if (gMain.newKeys & B_BUTTON)
@@ -319,7 +319,7 @@ static void sub_81D5084(u8 taskId)
else if (sub_81D5064(&data->unk0, 10))
{
CloseLink();
- sub_81D4E30();
+ OpenEReaderLink();
sub_81D505C(&data->unk0);
}
break;
@@ -360,7 +360,7 @@ static void sub_81D5084(u8 taskId)
data->unk8 = 12;
break;
case 12:
- sub_81D4E30();
+ OpenEReaderLink();
AddTextPrinterToWindow1(gJPText_AllowEReaderToLoadCard);
data->unk8 = 13;
break;
diff --git a/src/field_message_box.c b/src/field_message_box.c
index be76b0c19..da5042221 100755
--- a/src/field_message_box.c
+++ b/src/field_message_box.c
@@ -148,7 +148,7 @@ void sub_8098358(void)
sFieldMessageBoxMode = 0;
}
-void sub_8098374(void)
+void StopFieldMessage(void)
{
task_del_textbox();
sFieldMessageBoxMode = 0;
diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c
index ea9429ce8..a4d6dd6c9 100644
--- a/src/field_screen_effect.c
+++ b/src/field_screen_effect.c
@@ -162,7 +162,7 @@ static void Task_ReturnToFieldCableLink(u8 taskId)
switch (task->data[0])
{
case 0:
- task->data[1] = sub_80B3050();
+ task->data[1] = CreateTask_ReestablishCableClubLink();
task->data[0]++;
break;
case 1:
diff --git a/src/link.c b/src/link.c
index abd9715dd..6647cda8c 100644
--- a/src/link.c
+++ b/src/link.c
@@ -282,7 +282,7 @@ void LinkTestScreen(void)
ResetTasks();
SetVBlankCallback(sub_80096BC);
ResetBlockSend();
- gLinkType = LINKTYPE_0x1111;
+ gLinkType = LINKTYPE_TRADE;
OpenLink();
SeedRng(gMain.vblankCounter2);
for (i = 0; i < MAX_LINK_PLAYERS; i++)
@@ -826,23 +826,23 @@ void OpenLinkTimed(void)
OpenLink();
}
-u8 GetLinkPlayerDataExchangeStatusTimed(int lower, int upper)
+u8 GetLinkPlayerDataExchangeStatusTimed(int minPlayers, int maxPlayers)
{
int i;
int count;
u32 index;
- u8 cmpVal;
+ u8 numPlayers;
u32 linkType1;
u32 linkType2;
count = 0;
if (gReceivedRemoteLinkPlayers == TRUE)
{
- cmpVal = GetLinkPlayerCount_2();
- if (lower > cmpVal || cmpVal > upper)
+ numPlayers = GetLinkPlayerCount_2();
+ if (minPlayers > numPlayers || numPlayers > maxPlayers)
{
- sPlayerDataExchangeStatus = EXCHANGE_STAT_6;
- return 6;
+ sPlayerDataExchangeStatus = EXCHANGE_WRONG_NUM_PLAYERS;
+ return sPlayerDataExchangeStatus;
}
else
{
@@ -860,19 +860,19 @@ u8 GetLinkPlayerDataExchangeStatusTimed(int lower, int upper)
}
if (count == GetLinkPlayerCount())
{
- if (gLinkPlayers[0].linkType == 0x1133)
+ if (gLinkPlayers[0].linkType == LINKTYPE_TRADE_SETUP)
{
switch (GetGameProgressForLinkTrade())
{
- case TRADE_PLAYER_NOT_READY:
- sPlayerDataExchangeStatus = EXCHANGE_PLAYER_NOT_READY;
- break;
- case TRADE_PARTNER_NOT_READY:
- sPlayerDataExchangeStatus = EXCHANGE_PARTNER_NOT_READY;
- break;
- case TRADE_BOTH_PLAYERS_READY:
- sPlayerDataExchangeStatus = EXCHANGE_COMPLETE;
- break;
+ case TRADE_PLAYER_NOT_READY:
+ sPlayerDataExchangeStatus = EXCHANGE_PLAYER_NOT_READY;
+ break;
+ case TRADE_PARTNER_NOT_READY:
+ sPlayerDataExchangeStatus = EXCHANGE_PARTNER_NOT_READY;
+ break;
+ case TRADE_BOTH_PLAYERS_READY:
+ sPlayerDataExchangeStatus = EXCHANGE_COMPLETE;
+ break;
}
}
else
@@ -882,11 +882,14 @@ u8 GetLinkPlayerDataExchangeStatusTimed(int lower, int upper)
}
else
{
- sPlayerDataExchangeStatus = EXCHANGE_IN_PROGRESS;
+ sPlayerDataExchangeStatus = EXCHANGE_DIFF_SELECTIONS;
linkType1 = gLinkPlayers[GetMultiplayerId()].linkType;
linkType2 = gLinkPlayers[GetMultiplayerId() ^ 1].linkType;
- if ((linkType1 == 0x2266 && linkType2 == 0x2277) || (linkType1 == 0x2277 && linkType2 == 0x2266))
+ if ((linkType1 == LINKTYPE_BATTLE_TOWER_50 && linkType2 == LINKTYPE_BATTLE_TOWER_OPEN)
+ || (linkType1 == LINKTYPE_BATTLE_TOWER_OPEN && linkType2 == LINKTYPE_BATTLE_TOWER_50))
{
+ // 3 below indicates partner made different level mode selection
+ // See BattleFrontier_BattleTowerLobby_EventScript_AbortLinkDifferentSelections
gSpecialVar_0x8005 = 3;
}
}
@@ -921,7 +924,7 @@ bool8 IsLinkPlayerDataExchangeComplete(void)
else
{
retval = FALSE;
- sPlayerDataExchangeStatus = EXCHANGE_IN_PROGRESS;
+ sPlayerDataExchangeStatus = EXCHANGE_DIFF_SELECTIONS;
}
return retval;
}
diff --git a/src/link_rfu_2.c b/src/link_rfu_2.c
index e13e0d4e1..0d69f9281 100644
--- a/src/link_rfu_2.c
+++ b/src/link_rfu_2.c
@@ -2408,7 +2408,7 @@ void sub_8011AFC(void)
SetVBlankCallback(sub_8011AE8);
if (IsWirelessAdapterConnected())
{
- gLinkType = LINKTYPE_0x1111;
+ gLinkType = LINKTYPE_TRADE;
SetWirelessCommType1();
OpenLink();
SeedRng(gMain.vblankCounter2);
diff --git a/src/mevent2.c b/src/mevent2.c
index 3e524ce35..7a2edc7f5 100755
--- a/src/mevent2.c
+++ b/src/mevent2.c
@@ -569,7 +569,7 @@ bool32 MEventHandleReceivedWonderCard(u16 a0)
return TRUE;
}
-void sub_801B990(u32 a0, u32 a1)
+void RecordIdOfWonderCardSenderByEventType(u32 a0, u32 a1)
{
if (gUnknown_02022C70)
{
diff --git a/src/mystery_event_menu.c b/src/mystery_event_menu.c
index 14c00fd96..04902dee8 100644
--- a/src/mystery_event_menu.c
+++ b/src/mystery_event_menu.c
@@ -152,7 +152,7 @@ static void CB2_MysteryEventMenu(void)
if (!IsTextPrinterActive(0))
{
gMain.state++;
- gLinkType = LINKTYPE_0x5501;
+ gLinkType = LINKTYPE_MYSTERY_EVENT;
OpenLink();
}
break;
@@ -206,7 +206,7 @@ static void CB2_MysteryEventMenu(void)
{
if (gReceivedRemoteLinkPlayers != 0)
{
- if (GetLinkPlayerDataExchangeStatusTimed(2, 2) == 3)
+ if (GetLinkPlayerDataExchangeStatusTimed(2, 2) == EXCHANGE_DIFF_SELECTIONS)
{
sub_800AC34();
GetEventLoadMessage(gStringVar4, 1);
diff --git a/src/pokemon_jump.c b/src/pokemon_jump.c
index da8695247..acfd4d545 100755
--- a/src/pokemon_jump.c
+++ b/src/pokemon_jump.c
@@ -1148,12 +1148,12 @@ static bool32 sub_802B720(void)
case 2:
if (sub_802C70C())
{
- CreateTask(sub_8153688, 6);
+ CreateTask(Task_LinkSave, 6);
gUnknown_02022CFC->unk8++;
}
break;
case 3:
- if (!FuncIsActiveTask(sub_8153688))
+ if (!FuncIsActiveTask(Task_LinkSave))
{
sub_802DA14();
gUnknown_02022CFC->unk8++;
diff --git a/src/record_mixing.c b/src/record_mixing.c
index 3a93d72f8..274a82e10 100644
--- a/src/record_mixing.c
+++ b/src/record_mixing.c
@@ -169,10 +169,9 @@ static const u8 gUnknown_0858CFBE[3][4] =
#define BUFFER_CHUNK_SIZE 200
-// Note: VAR_0x8005 contains the spotId.
void RecordMixingPlayerSpotTriggered(void)
{
- sub_80B37D4(Task_RecordMixing_Main);
+ CreateTask_EnterCableClubSeat(Task_RecordMixing_Main);
}
// these variables were const in R/S, but had to become changeable because of saveblocks changing RAM position
@@ -351,7 +350,7 @@ static void Task_RecordMixing_Main(u8 taskId)
{
tState = 4;
if (gWirelessCommType == 0)
- data[10] = sub_80B3050();
+ data[10] = CreateTask_ReestablishCableClubLink();
PrintTextOnRecordMixing(gText_RecordMixingComplete);
data[8] = 0;
@@ -987,12 +986,12 @@ static void Task_DoRecordMixing(u8 taskId)
case 6:
if (!sub_801048C(FALSE))
{
- CreateTask(sub_8153688, 5);
+ CreateTask(Task_LinkSave, 5);
task->data[0] ++;
}
break;
- case 7: // wait for sub_8153688 to finish.
- if (!FuncIsActiveTask(sub_8153688))
+ case 7: // wait for Task_LinkSave to finish.
+ if (!FuncIsActiveTask(Task_LinkSave))
{
if (gWirelessCommType)
{
diff --git a/src/save.c b/src/save.c
index c19aff4d8..09e1b7aae 100644
--- a/src/save.c
+++ b/src/save.c
@@ -897,74 +897,78 @@ u32 TryWriteSpecialSaveSection(u8 sector, u8* src)
return SAVE_STATUS_OK;
}
-void sub_8153688(u8 taskId)
+#define tState data[0]
+#define tTimer data[1]
+#define tPartialSave data[2]
+
+void Task_LinkSave(u8 taskId)
{
- s16* taskData = gTasks[taskId].data;
+ s16* data = gTasks[taskId].data;
- switch (taskData[0])
+ switch (tState)
{
case 0:
gSoftResetDisabled = TRUE;
- taskData[0] = 1;
+ tState = 1;
break;
case 1:
sub_800ADF8();
- taskData[0] = 2;
+ tState = 2;
break;
case 2:
if (IsLinkTaskFinished())
{
- if (taskData[2] == 0)
+ if (!tPartialSave)
save_serialize_map();
- taskData[0] = 3;
+ tState = 3;
}
break;
case 3:
- if (taskData[2] == 0)
+ if (!tPartialSave)
SetContinueGameWarpStatusToDynamicWarp();
sub_8153380();
- taskData[0] = 4;
+ tState = 4;
break;
case 4:
- if (++taskData[1] == 5)
+ if (++tTimer == 5)
{
- taskData[1] = 0;
- taskData[0] = 5;
+ tTimer = 0;
+ tState = 5;
}
break;
case 5:
if (sub_81533AC())
- taskData[0] = 6;
+ tState = 6;
else
- taskData[0] = 4;
+ tState = 4;
break;
case 6:
sub_81533E0();
- taskData[0] = 7;
+ tState = 7;
break;
case 7:
- if (taskData[2] == 0)
+ if (!tPartialSave)
ClearContinueGameWarpStatus2();
sub_800ADF8();
- taskData[0] = 8;
+ tState = 8;
break;
case 8:
if (IsLinkTaskFinished())
{
sub_8153408();
- taskData[0] = 9;
+ tState = 9;
}
break;
case 9:
sub_800ADF8();
- taskData[0] = 10;
+ tState = 10;
break;
case 10:
if (IsLinkTaskFinished())
- taskData[0]++;
+ tState++;
break;
case 11:
- if (++taskData[1] > 5)
+ if (++tTimer > 5)
{
gSoftResetDisabled = FALSE;
DestroyTask(taskId);
@@ -972,3 +976,7 @@ void sub_8153688(u8 taskId)
break;
}
}
+
+#undef tState
+#undef tTimer
+#undef tPartialSave
diff --git a/src/start_menu.c b/src/start_menu.c
index 4b6fce57b..781774f62 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -133,8 +133,8 @@ static u8 BattlePyramidRetireInputCallback(void);
// Task callbacks
static void StartMenuTask(u8 taskId);
static void SaveGameTask(u8 taskId);
-static void sub_80A0550(u8 taskId);
-static void sub_80A08A4(u8 taskId);
+static void Task_SaveAfterLinkBattle(u8 taskId);
+static void Task_WaitForBattleTowerLinkSave(u8 taskId);
static bool8 FieldCB_ReturnToFieldStartMenu(void);
static const struct WindowTemplate sSafariBallsWindowTemplate = {0, 1, 1, 9, 4, 0xF, 8};
@@ -219,8 +219,8 @@ static bool8 SaveSuccesTimer(void);
static bool8 SaveErrorTimer(void);
static void InitBattlePyramidRetire(void);
static void sub_80A03D8(void);
-static bool32 sub_80A03E4(u8 *par1);
-static void sub_80A0540(void);
+static bool32 InitSaveWindowAfterLinkBattle(u8 *par1);
+static void CB2_SaveAfterLinkBattle(void);
static void ShowSaveInfoWindow(void);
static void RemoveSaveInfoWindow(void);
static void HideStartMenuWindow(void);
@@ -1159,9 +1159,9 @@ static void sub_80A03D8(void)
TransferPlttBuffer();
}
-static bool32 sub_80A03E4(u8 *par1)
+static bool32 InitSaveWindowAfterLinkBattle(u8 *state)
{
- switch (*par1)
+ switch (*state)
{
case 0:
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0);
@@ -1193,43 +1193,43 @@ static bool32 sub_80A03E4(u8 *par1)
return TRUE;
}
- (*par1)++;
+ (*state)++;
return FALSE;
}
-void sub_80A0514(void)
+void CB2_SetUpSaveAfterLinkBattle(void)
{
- if (sub_80A03E4(&gMain.state))
+ if (InitSaveWindowAfterLinkBattle(&gMain.state))
{
- CreateTask(sub_80A0550, 0x50);
- SetMainCallback2(sub_80A0540);
+ CreateTask(Task_SaveAfterLinkBattle, 0x50);
+ SetMainCallback2(CB2_SaveAfterLinkBattle);
}
}
-static void sub_80A0540(void)
+static void CB2_SaveAfterLinkBattle(void)
{
RunTasks();
UpdatePaletteFade();
}
-static void sub_80A0550(u8 taskId)
+static void Task_SaveAfterLinkBattle(u8 taskId)
{
- s16 *step = gTasks[taskId].data;
+ s16 *state = gTasks[taskId].data;
if (!gPaletteFade.active)
{
- switch (*step)
+ switch (*state)
{
case 0:
FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0,
1,
gText_SavingDontTurnOffPower,
- 255,
+ TEXT_SPEED_FF,
NULL,
- 2,
- 1,
- 3);
+ TEXT_COLOR_DARK_GREY,
+ TEXT_COLOR_WHITE,
+ TEXT_COLOR_LIGHT_GREY);
DrawTextBorderOuter(0, 8, 14);
PutWindowTilemap(0);
CopyWindowToVram(0, 3);
@@ -1239,35 +1239,35 @@ static void sub_80A0550(u8 taskId)
{
if (sub_800A07C())
{
- *step = 1;
+ *state = 1;
}
else
{
- *step = 5;
+ *state = 5;
}
}
else
{
gSoftResetDisabled = 1;
- *step = 1;
+ *state = 1;
}
break;
case 1:
SetContinueGameWarpStatusToDynamicWarp();
FullSaveGame();
- *step = 2;
+ *state = 2;
break;
case 2:
if (CheckSaveFile())
{
ClearContinueGameWarpStatus2();
- *step = 3;
+ *state = 3;
gSoftResetDisabled = 0;
}
break;
case 3:
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
- *step = 4;
+ *state = 4;
break;
case 4:
FreeAllWindowBuffers();
@@ -1275,13 +1275,13 @@ static void sub_80A0550(u8 taskId)
DestroyTask(taskId);
break;
case 5:
- CreateTask(sub_8153688, 0x5);
- *step = 6;
+ CreateTask(Task_LinkSave, 5);
+ *state = 6;
break;
case 6:
- if (!FuncIsActiveTask(sub_8153688))
+ if (!FuncIsActiveTask(Task_LinkSave))
{
- *step = 3;
+ *state = 3;
}
break;
}
@@ -1357,22 +1357,26 @@ static void RemoveSaveInfoWindow(void)
RemoveWindow(sSaveInfoWindowId);
}
-static void sub_80A08A4(u8 taskId)
+static void Task_WaitForBattleTowerLinkSave(u8 taskId)
{
- if (!FuncIsActiveTask(sub_8153688))
+ if (!FuncIsActiveTask(Task_LinkSave))
{
DestroyTask(taskId);
EnableBothScriptContexts();
}
}
-void sub_80A08CC(void)
+#define tPartialSave data[2]
+
+void SaveForBattleTowerLink(void)
{
- u8 taskId = CreateTask(sub_8153688, 0x5);
- gTasks[taskId].data[2] = 1;
- gTasks[CreateTask(sub_80A08A4, 0x6)].data[1] = taskId;
+ u8 taskId = CreateTask(Task_LinkSave, 5);
+ gTasks[taskId].tPartialSave = TRUE;
+ gTasks[CreateTask(Task_WaitForBattleTowerLinkSave, 6)].data[1] = taskId;
}
+#undef tPartialSave
+
static void HideStartMenuWindow(void)
{
ClearStdWindowAndFrame(GetStartMenuWindowId(), TRUE);
diff --git a/src/strings.c b/src/strings.c
index 3ba01b0f0..f01ab8ec6 100644
--- a/src/strings.c
+++ b/src/strings.c
@@ -1492,7 +1492,7 @@ const u8 gText_FrameTypeNumber[] = _("{COLOR GREEN}{SHADOW LIGHT_GREEN}");
const u8 gText_ButtonTypeNormal[] = _("{COLOR GREEN}{SHADOW LIGHT_GREEN}NORMAL");
const u8 gText_ButtonTypeLR[] = _("{COLOR GREEN}{SHADOW LIGHT_GREEN}LR");
const u8 gText_ButtonTypeLEqualsA[] = _("{COLOR GREEN}{SHADOW LIGHT_GREEN}L=A");
-const u8 gText_XPLink[] = _("{STR_VAR_1}P LINK");
+const u8 gText_NumPlayerLink[] = _("{STR_VAR_1}P LINK");
const u8 gText_BronzeCard[] = _("BRONZE");
const u8 gText_CopperCard[] = _("COPPER");
const u8 gText_SilverCard[] = _("SILVER");
diff --git a/src/trade.c b/src/trade.c
index c9fd7b1ed..624f6eae9 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -389,7 +389,7 @@ static void CB2_CreateTradeMenu(void)
if (!gReceivedRemoteLinkPlayers)
{
- gLinkType = LINKTYPE_0x1122;
+ gLinkType = LINKTYPE_TRADE_CONNECTING;
sTradeMenuData->timer = 0;
if (gWirelessCommType)
@@ -402,7 +402,7 @@ static void CB2_CreateTradeMenu(void)
{
OpenLink();
gMain.state++;
- CreateTask(task00_08081A90, 1);
+ CreateTask(Task_WaitForLinkPlayerConnection, 1);
}
}
else
@@ -2750,7 +2750,7 @@ void CB2_LinkTrade(void)
case 0:
if (!gReceivedRemoteLinkPlayers)
{
- gLinkType = LINKTYPE_0x1144;
+ gLinkType = LINKTYPE_TRADE_DISCONNECTED;
CloseLink();
}
sTradeData = AllocZeroed(sizeof(*sTradeData));
@@ -4597,7 +4597,7 @@ static void CB2_SaveAndEndTrade(void)
IncrementGameStat(GAME_STAT_POKEMON_TRADES);
if (gWirelessCommType)
{
- sub_801B990(2, gLinkPlayers[GetMultiplayerId() ^ 1].trainerId);
+ RecordIdOfWonderCardSenderByEventType(2, gLinkPlayers[GetMultiplayerId() ^ 1].trainerId);
}
SetContinueGameWarpStatusToDynamicWarp();
sub_8153380();
diff --git a/src/union_room.c b/src/union_room.c
index a13f57c79..8f49add80 100644
--- a/src/union_room.c
+++ b/src/union_room.c
@@ -1298,15 +1298,15 @@ static u8 GetNewLeaderCandidate(void)
return ret;
}
-static void Task_ReturnFromLinkTrade(u8 taskId)
+static void Task_CreateTradeMenu(u8 taskId)
{
CB2_StartCreateTradeMenu();
DestroyTask(taskId);
}
-u8 CreateTask_ReturnFromLinkTrade(void)
+u8 CreateTask_CreateTradeMenu(void)
{
- u8 taskId = CreateTask(Task_ReturnFromLinkTrade, 0);
+ u8 taskId = CreateTask(Task_CreateTradeMenu, 0);
return taskId;
}
@@ -1589,7 +1589,7 @@ static void Task_RunScriptAndFadeToActivity(u8 taskId)
switch (data[0])
{
case 0:
- gSpecialVar_Result = 1;
+ gSpecialVar_Result = LINKUP_SUCCESS;
switch (gPlayerCurrActivity)
{
case ACTIVITY_BATTLE_TOWER:
@@ -1655,9 +1655,9 @@ static void Task_RunScriptAndFadeToActivity(u8 taskId)
if (GetBlockReceivedStatus() == 3)
{
ResetBlockReceivedFlags();
- if (sub_80B2AF4(gBlockRecvBuffer[0], gBlockRecvBuffer[1]))
+ if (AreBattleTowerLinkSpeciesSame(gBlockRecvBuffer[0], gBlockRecvBuffer[1]))
{
- gSpecialVar_Result = 11;
+ gSpecialVar_Result = LINKUP_FAILED_BATTLE_TOWER;
data[0] = 7;
}
else