More function documentation in union_room, link, link_rfu_2
This commit is contained in:
@@ -152,7 +152,7 @@ u8 rfu_LMAN_establishConnection(u8 parent_child, u16 connect_period, u16 name_ac
|
||||
rfu_LMAN_occureCallback(LMAN_MSG_LMAN_API_ERROR_RETURN, 1);
|
||||
return LMAN_ERROR_ILLEGAL_PARAMETER;
|
||||
}
|
||||
if (parent_child > 1)
|
||||
if (parent_child > MODE_PARENT)
|
||||
{
|
||||
lman.pcswitch_flag = PCSWITCH_1ST_SC_START;
|
||||
parent_child = MODE_PARENT;
|
||||
|
||||
@@ -833,7 +833,7 @@ void sub_802F6A8(void)
|
||||
if (gWirelessCommType == 0)
|
||||
Link_TryStartSend5FFF();
|
||||
else
|
||||
sub_800AB9C();
|
||||
PrepareSendLinkCmd2FFE_or_RfuCmd6600();
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_802F610;
|
||||
}
|
||||
else
|
||||
|
||||
@@ -35,7 +35,7 @@ void HandleLinkBattleSetup(void)
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
|
||||
{
|
||||
if (gWirelessCommType)
|
||||
sub_800B1F4();
|
||||
SetWirelessCommType1();
|
||||
if (!gReceivedRemoteLinkPlayers)
|
||||
OpenLink();
|
||||
CreateTask(sub_8081A90, 0);
|
||||
@@ -491,7 +491,7 @@ void sub_800DD28(void)
|
||||
|
||||
if (gReceivedRemoteLinkPlayers && (gBattleTypeFlags & BATTLE_TYPE_20) && (gLinkPlayers[0].linkType == 0x2211))
|
||||
{
|
||||
sub_80FBB4C();
|
||||
LinkRfu_DestroyIdleTask();
|
||||
for (i = 0; i < GetLinkPlayerCount(); ++i)
|
||||
{
|
||||
if (GetBlockReceivedStatus() & gBitTable[i])
|
||||
|
||||
+1
-1
@@ -1152,7 +1152,7 @@ static void CB2_PreInitMultiBattle(void)
|
||||
{
|
||||
++gBattleCommunication[MULTIUSE_STATE];
|
||||
if (gWirelessCommType)
|
||||
sub_800AB9C();
|
||||
PrepareSendLinkCmd2FFE_or_RfuCmd6600();
|
||||
else
|
||||
Link_TryStartSend5FFF();
|
||||
}
|
||||
|
||||
@@ -206,7 +206,7 @@ static void sub_807DDF0(u8 taskId)
|
||||
switch (task->data[0])
|
||||
{
|
||||
case 0:
|
||||
sub_800AB9C();
|
||||
PrepareSendLinkCmd2FFE_or_RfuCmd6600();
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
@@ -227,7 +227,7 @@ static void sub_807DDF0(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_807DE58(void)
|
||||
void FieldCB_ReturnToFieldWirelessLink(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
@@ -632,7 +632,7 @@ static void sub_807E5EC(u8 taskId)
|
||||
break;
|
||||
case 2:
|
||||
WarpIntoMap();
|
||||
SetMainCallback2(sub_8056788);
|
||||
SetMainCallback2(CB2_ReturnToFieldCableClub);
|
||||
DestroyTask(taskId);
|
||||
break;
|
||||
}
|
||||
|
||||
+20
-20
@@ -144,11 +144,11 @@ static void LinkCB_RequestPlayerDataExchange(void);
|
||||
static void Task_PrintTestData(u8 taskId);
|
||||
static void LinkCB_BuildCommand5FFF(void);
|
||||
static void LinkCB_WaitAckCommand5FFF(void);
|
||||
static void sub_800ABD4(void);
|
||||
static void sub_800AC00(void);
|
||||
static void LinkFunc_Send2FFE_1(void);
|
||||
static void LinkFunc_Send2FFE_2(void);
|
||||
static void CheckErrorStatus(void);
|
||||
static void CB2_PrintErrorMessage(void);
|
||||
static void sub_800B210(void);
|
||||
static void SetWirelessCommType0(void);
|
||||
static void DisableSerial(void);
|
||||
static void EnableSerial(void);
|
||||
static bool8 IsSioMultiMaster(void);
|
||||
@@ -232,7 +232,7 @@ bool8 IsWirelessAdapterConnected(void)
|
||||
if (gQuestLogState == 2 || gQuestLogState == 3)
|
||||
return FALSE;
|
||||
|
||||
sub_800B1F4();
|
||||
SetWirelessCommType1();
|
||||
sub_80F86F4();
|
||||
sub_80FB128(TRUE);
|
||||
if (rfu_LMAN_REQBN_softReset_and_checkID() == RFU_ID)
|
||||
@@ -241,7 +241,7 @@ bool8 IsWirelessAdapterConnected(void)
|
||||
rfu_waitREQComplete();
|
||||
return TRUE;
|
||||
}
|
||||
sub_800B210();
|
||||
SetWirelessCommType0();
|
||||
CloseLink();
|
||||
RestoreSerialTimer3IntrHandlers();
|
||||
return FALSE;
|
||||
@@ -613,7 +613,7 @@ void ProcessRecvCmds(u8 unused)
|
||||
linkPlayer->name[9] = 0;
|
||||
linkPlayer->name[8] = 0;
|
||||
}
|
||||
sub_800B284(linkPlayer);
|
||||
IntlConvertLinkPlayerName(linkPlayer);
|
||||
if (strcmp(block->magic1, sASCIIGameFreakInc) != 0
|
||||
|| strcmp(block->magic2, sASCIIGameFreakInc) != 0)
|
||||
{
|
||||
@@ -1384,32 +1384,32 @@ static void LinkCB_WaitAckCommand5FFF(void)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_800AB9C(void)
|
||||
void PrepareSendLinkCmd2FFE_or_RfuCmd6600(void)
|
||||
{
|
||||
if (gWirelessCommType == 1)
|
||||
{
|
||||
sub_80FA42C();
|
||||
LinkRfu_SetRfuFuncToSend6600();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gLinkCallback == NULL)
|
||||
{
|
||||
gLinkCallback = sub_800ABD4;
|
||||
gLinkCallback = LinkFunc_Send2FFE_1;
|
||||
}
|
||||
gLinkAllAcked5FFF = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_800ABD4(void)
|
||||
static void LinkFunc_Send2FFE_1(void)
|
||||
{
|
||||
if (gLastRecvQueueCount == 0)
|
||||
{
|
||||
BuildSendCmd(LINKCMD_0x2FFE);
|
||||
gLinkCallback = sub_800AC00;
|
||||
gLinkCallback = LinkFunc_Send2FFE_2;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_800AC00(void)
|
||||
static void LinkFunc_Send2FFE_2(void)
|
||||
{
|
||||
u8 i;
|
||||
u8 linkPlayerCount;
|
||||
@@ -1477,7 +1477,7 @@ void CB2_LinkError(void)
|
||||
{
|
||||
gWirelessCommType = 3;
|
||||
}
|
||||
sub_80F85F8();
|
||||
ResetLinkRfuGFLayer();
|
||||
}
|
||||
SetVBlankCallback(sub_800978C);
|
||||
ResetBgsAndClearDma3BusyFlags(0);
|
||||
@@ -1626,7 +1626,7 @@ bool8 HasLinkErrorOccurred(void)
|
||||
return gLinkErrorOccurred;
|
||||
}
|
||||
|
||||
void sub_800B0B4(void)
|
||||
void PrepareLocalLinkPlayerBlock(void)
|
||||
{
|
||||
struct LinkPlayerBlock * block;
|
||||
|
||||
@@ -1638,7 +1638,7 @@ void sub_800B0B4(void)
|
||||
memcpy(gBlockSendBuffer, block, sizeof(*block));
|
||||
}
|
||||
|
||||
void sub_800B110(u32 who)
|
||||
void LinkPlayerFromBlock(u32 who)
|
||||
{
|
||||
u8 who_ = who;
|
||||
struct LinkPlayerBlock * block;
|
||||
@@ -1647,7 +1647,7 @@ void sub_800B110(u32 who)
|
||||
block = (struct LinkPlayerBlock *)gBlockRecvBuffer[who_];
|
||||
player = &gLinkPlayers[who_];
|
||||
*player = block->linkPlayer;
|
||||
sub_800B284(player);
|
||||
IntlConvertLinkPlayerName(player);
|
||||
if (strcmp(block->magic1, sASCIIGameFreakInc) != 0 || strcmp(block->magic2, sASCIIGameFreakInc) != 0)
|
||||
{
|
||||
SetMainCallback2(CB2_LinkError);
|
||||
@@ -1683,7 +1683,7 @@ bool8 HandleLinkConnection(void)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_800B1F4(void)
|
||||
void SetWirelessCommType1(void)
|
||||
{
|
||||
if (gReceivedRemoteLinkPlayers == 0)
|
||||
{
|
||||
@@ -1691,7 +1691,7 @@ void sub_800B1F4(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_800B210(void)
|
||||
static void SetWirelessCommType0(void)
|
||||
{
|
||||
if (gReceivedRemoteLinkPlayers == 0)
|
||||
{
|
||||
@@ -1699,7 +1699,7 @@ static void sub_800B210(void)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_800B22C(void)
|
||||
void SetWirelessCommType0_UnusedCopy(void)
|
||||
{
|
||||
if (gReceivedRemoteLinkPlayers == 0)
|
||||
{
|
||||
@@ -1725,7 +1725,7 @@ bool32 sub_800B270(void)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_800B284(struct LinkPlayer * player)
|
||||
void IntlConvertLinkPlayerName(struct LinkPlayer * player)
|
||||
{
|
||||
player->name[10] = player->name[8];
|
||||
ConvertInternationalString(player->name, player->language);
|
||||
|
||||
+150
-148
@@ -14,11 +14,12 @@
|
||||
#include "constants/species.h"
|
||||
#include "constants/union_room.h"
|
||||
|
||||
struct UnkRfuStruct_8010A14{
|
||||
char unk_00[15]; // PokemonSioInfo
|
||||
u8 unk_0f;
|
||||
u8 unk_10[4];
|
||||
struct LinkPlayer unk_14[5];
|
||||
struct SioInfo
|
||||
{
|
||||
char magic[15]; // PokemonSioInfo
|
||||
u8 playerCount;
|
||||
u8 linkPlayerIdx[RFU_CHILD_MAX];
|
||||
struct LinkPlayer linkPlayers[MAX_RFU_PLAYERS];
|
||||
u8 fill_a0[0x5c];
|
||||
};
|
||||
|
||||
@@ -36,7 +37,7 @@ u8 gHostRFUtgtUnameBuffer[PLAYER_NAME_LENGTH + 1];
|
||||
static void sub_80F8AA4(void);
|
||||
static void sub_80F8AEC(void);
|
||||
static void MscCallback_Child(u16 a0);
|
||||
static void sub_80F8DA8(u16 a0);
|
||||
static void MSCCallback_SetUnkCDB(u16 a0);
|
||||
static void sub_80F906C(void);
|
||||
static void RfuHandleReceiveCommand(u8 unused);
|
||||
static void ResetSendDataManager(struct RfuBlockSend *data);
|
||||
@@ -49,8 +50,8 @@ static void sub_80FA738(void);
|
||||
static int sub_80FA788(void);
|
||||
static void sub_80FA834(u8 taskId);
|
||||
static void sub_80FA9D0(u16 a0);
|
||||
static void sub_80FAA58(void * a0);
|
||||
static void sub_80FAA94(u8 taskId);
|
||||
static void ValidateAndReceivePokemonSioInfo(void * a0);
|
||||
static void Task_ExchangeLinkPlayers(u8 taskId);
|
||||
static void sub_80FACF0(u8 taskId);
|
||||
static void GetLinkmanErrorParams(u32 msg);
|
||||
static void sub_80FB564(s32 bmConnectedFlag);
|
||||
@@ -59,8 +60,8 @@ static u8 GetPartnerIndexByNameAndTrainerID(const u8 *trainerName, u16 trainerId
|
||||
static void RfuReqDisconnectSlot(u32 bmDisconnectSlot);
|
||||
static void sub_80FBE20(u32 a0, u32 a1);
|
||||
static void sub_80FC028(u8 taskId);
|
||||
static void sub_80FC208(void);
|
||||
static void nullsub_89(u8 taskId);
|
||||
static void rfu_dbg_clear(void);
|
||||
static void Task_idle(u8 taskId);
|
||||
|
||||
static const struct InitializeParametersTag sRfuReqConfigTemplate = {
|
||||
.maxMFrame = 4,
|
||||
@@ -169,21 +170,21 @@ static const char sUnref_843ED37[][16] = {
|
||||
|
||||
static const TaskFunc gUnknown_843ED88[] = {
|
||||
sub_80FA834,
|
||||
sub_80FAA94,
|
||||
Task_ExchangeLinkPlayers,
|
||||
sub_80FACF0
|
||||
};
|
||||
|
||||
static void nullsub_87(const void *unused_0, u8 unused_1, u8 unused_2)
|
||||
static void rfu_dbg_print_str(const void *string, u8 x, u8 y)
|
||||
{
|
||||
// debug?
|
||||
}
|
||||
|
||||
static void nullsub_88(u16 unused_0, u8 unused_1, u8 unused_2, u8 unused_3)
|
||||
static void rfu_dbg_print_num(u16 num, u8 x, u8 y, u8 ndigits)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void sub_80F85F8(void)
|
||||
void ResetLinkRfuGFLayer(void)
|
||||
{
|
||||
s32 i;
|
||||
u8 errorState_bak = Rfu.errorState;
|
||||
@@ -225,7 +226,7 @@ void sub_80F86F4(void)
|
||||
{
|
||||
gLinkType = 0;
|
||||
sub_80FB128(FALSE);
|
||||
sub_80F85F8();
|
||||
ResetLinkRfuGFLayer();
|
||||
rfu_setTimerInterrupt(3, gIntrTable + 2);
|
||||
}
|
||||
}
|
||||
@@ -257,7 +258,7 @@ static void Task_LinkLeaderSearchForChildren(u8 taskId)
|
||||
break;
|
||||
case 18:
|
||||
Rfu.unk_cdb = 0;
|
||||
rfu_LMAN_setMSCCallback(sub_80F8DA8);
|
||||
rfu_LMAN_setMSCCallback(MSCCallback_SetUnkCDB);
|
||||
sub_80F8AA4();
|
||||
sub_80F8AEC();
|
||||
Rfu.state = 20;
|
||||
@@ -285,7 +286,7 @@ static void sub_80F887C(s32 r2, s32 r5)
|
||||
{
|
||||
if (r2 & 1)
|
||||
{
|
||||
Rfu.unk_cde[i] = r4;
|
||||
Rfu.linkPlayerIdx[i] = r4;
|
||||
r4++;
|
||||
}
|
||||
}
|
||||
@@ -296,12 +297,12 @@ static void sub_80F887C(s32 r2, s32 r5)
|
||||
{
|
||||
if (!(r1 & 1))
|
||||
{
|
||||
Rfu.unk_cde[i] = 0;
|
||||
Rfu.linkPlayerIdx[i] = 0;
|
||||
}
|
||||
}
|
||||
for (r4 = 4; r4 != 0; r4--)
|
||||
{
|
||||
for (i = 0; i < RFU_CHILD_MAX && Rfu.unk_cde[i] != r4; i++);
|
||||
for (i = 0; i < RFU_CHILD_MAX && Rfu.linkPlayerIdx[i] != r4; i++);
|
||||
if (i == 4)
|
||||
{
|
||||
r6 = r4;
|
||||
@@ -311,7 +312,7 @@ static void sub_80F887C(s32 r2, s32 r5)
|
||||
{
|
||||
if (r5 & 1)
|
||||
{
|
||||
Rfu.unk_cde[i] = r6++;
|
||||
Rfu.linkPlayerIdx[i] = r6++;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -362,7 +363,7 @@ static void Task_JoinGroupSearchForParent(u8 taskId)
|
||||
DestroyTask(taskId);
|
||||
if (gUnknown_203AC08.unk_0f == 0)
|
||||
{
|
||||
sub_80FC208();
|
||||
rfu_dbg_clear();
|
||||
gUnknown_203AC08.unk_0f++;
|
||||
}
|
||||
CreateTask(sub_80FA834, 5);
|
||||
@@ -396,7 +397,7 @@ static void sub_80F8AEC(void)
|
||||
Rfu.parent_child = MODE_PARENT;
|
||||
}
|
||||
|
||||
static void sub_80F8B34(u8 taskId)
|
||||
static void Task_LinkRfu_UnionRoomListen(u8 taskId)
|
||||
{
|
||||
if (GetHostRFUtgtGname()->activity == (ACTIVITY_PLYRTALK | IN_UNION_ROOM) && RfuGetErrorStatus() == 4)
|
||||
{
|
||||
@@ -443,7 +444,7 @@ static void sub_80F8B34(u8 taskId)
|
||||
break;
|
||||
case 16:
|
||||
Rfu.unk_cdb = 0;
|
||||
rfu_LMAN_setMSCCallback(sub_80F8DA8);
|
||||
rfu_LMAN_setMSCCallback(MSCCallback_SetUnkCDB);
|
||||
UpdateGameData_GroupLockedIn(1);
|
||||
sub_80F8AA4();
|
||||
sub_80F8AEC();
|
||||
@@ -489,7 +490,7 @@ static void MscCallback_Child(u16 unused)
|
||||
rfu_LMAN_REQ_sendData(TRUE);
|
||||
}
|
||||
|
||||
static void sub_80F8DA8(u16 unused)
|
||||
static void MSCCallback_SetUnkCDB(u16 unused)
|
||||
{
|
||||
Rfu.unk_cdb = 1;
|
||||
}
|
||||
@@ -507,7 +508,7 @@ void LinkRfu_Shutdown(void)
|
||||
if (FuncIsActiveTask(Task_LinkLeaderSearchForChildren) == TRUE)
|
||||
{
|
||||
DestroyTask(Rfu.unk_67);
|
||||
sub_80F85F8();
|
||||
ResetLinkRfuGFLayer();
|
||||
}
|
||||
}
|
||||
else if (Rfu.parent_child == MODE_CHILD)
|
||||
@@ -515,15 +516,15 @@ void LinkRfu_Shutdown(void)
|
||||
if (FuncIsActiveTask(Task_JoinGroupSearchForParent) == TRUE)
|
||||
{
|
||||
DestroyTask(Rfu.unk_67);
|
||||
sub_80F85F8();
|
||||
ResetLinkRfuGFLayer();
|
||||
}
|
||||
}
|
||||
else if (Rfu.parent_child == 2)
|
||||
{
|
||||
if (FuncIsActiveTask(sub_80F8B34) == TRUE)
|
||||
if (FuncIsActiveTask(Task_LinkRfu_UnionRoomListen) == TRUE)
|
||||
{
|
||||
DestroyTask(Rfu.unk_67);
|
||||
sub_80F85F8();
|
||||
ResetLinkRfuGFLayer();
|
||||
}
|
||||
}
|
||||
for (i = 0; i < NELEMS(gUnknown_843ED88); i++)
|
||||
@@ -553,7 +554,7 @@ static bool8 RfuStateIs7AndPlayerIsChild(void)
|
||||
|
||||
static bool32 IsParentSuccessfullyReconnected(void)
|
||||
{
|
||||
if (Rfu.state == 7 && !rfu_LMAN_CHILD_connectParent(gRfuLinkStatus->partner[Rfu.unk_c3d].id, 240))
|
||||
if (Rfu.state == 7 && !rfu_LMAN_CHILD_connectParent(gRfuLinkStatus->partner[Rfu.reconnectedParentIdx].id, 240))
|
||||
{
|
||||
Rfu.state = 9;
|
||||
return TRUE;
|
||||
@@ -577,7 +578,7 @@ bool8 LmanAcceptSlotFlagIsNotZero(void)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_80F8F5C(void)
|
||||
void LinkRfu_StopManagerAndFinalizeSlots(void)
|
||||
{
|
||||
Rfu.state = 4;
|
||||
Rfu.acceptSlot_flag = lman.acceptSlot_flag;
|
||||
@@ -772,7 +773,7 @@ static bool32 sub_80F9204(void)
|
||||
Rfu.unk_cee[i] = Rfu.unk_14[i][0] / 32;
|
||||
Rfu.unk_cea[i] = 0;
|
||||
Rfu.unk_14[i][0] &= 0x1f;
|
||||
r0 = Rfu.unk_cde[i];
|
||||
r0 = Rfu.linkPlayerIdx[i];
|
||||
for (j = 0; j < 7; j++)
|
||||
{
|
||||
gRecvCmds[r0][j] = (Rfu.unk_14[i][(j << 1) + 1] << 8) | Rfu.unk_14[i][(j << 1) + 0];
|
||||
@@ -805,7 +806,7 @@ static bool32 sub_80F9204(void)
|
||||
Rfu.unk_ce5 = 0;
|
||||
rfu_UNI_setSendData(Rfu.bm_PartnerFlags, Rfu.recvCmds, sizeof(Rfu.recvCmds));
|
||||
Rfu.unk_cda = sub_80F886C(Rfu.bm_PartnerFlags);
|
||||
CreateTask(sub_80FAA94, 0);
|
||||
CreateTask(Task_ExchangeLinkPlayers, 0);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -937,7 +938,7 @@ static u8 sub_80F9770(const u8 *a0)
|
||||
return FALSE;
|
||||
for (i = 0; i < RFU_CHILD_MAX; i++)
|
||||
{
|
||||
Rfu.unk_cde[i] = a0[i];
|
||||
Rfu.linkPlayerIdx[i] = a0[i];
|
||||
}
|
||||
return a0[Rfu.child_slot];
|
||||
}
|
||||
@@ -1019,7 +1020,7 @@ static void RfuHandleReceiveCommand(u8 unused)
|
||||
Rfu.cmd_8800_recvbuf[i].receiving = 2;
|
||||
Rfu_SetBlockReceivedFlag(i);
|
||||
if (GetHostRFUtgtGname()->activity == (ACTIVITY_CHAT | IN_UNION_ROOM) && gReceivedRemoteLinkPlayers != 0 && Rfu.parent_child == MODE_CHILD)
|
||||
sub_80FAA58(gBlockRecvBuffer);
|
||||
ValidateAndReceivePokemonSioInfo(gBlockRecvBuffer);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -1030,8 +1031,8 @@ static void RfuHandleReceiveCommand(u8 unused)
|
||||
Rfu.cmd5f00Ack[i] = 1;
|
||||
break;
|
||||
case RFU_COMMAND_0x6600:
|
||||
if (Rfu.unk_100 == gRecvCmds[i][1])
|
||||
Rfu.unk_e9[i] = 1;
|
||||
if (Rfu.cmd_6600_count == gRecvCmds[i][1])
|
||||
Rfu.cmd_6600_recvd[i] = 1;
|
||||
break;
|
||||
case RFU_COMMAND_0xed00:
|
||||
if (Rfu.parent_child == MODE_CHILD)
|
||||
@@ -1081,7 +1082,7 @@ static void RfuHandleReceiveCommand(u8 unused)
|
||||
}
|
||||
}
|
||||
|
||||
static bool8 sub_80F9C50(void)
|
||||
static bool8 Cmd8000recvIsFinished(void)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
@@ -1145,7 +1146,7 @@ static void RfuPrepareSendBuffer(u16 command)
|
||||
gSendCmd[2] = Rfu.cmd_8800_sendbuf.owner + 0x80;
|
||||
break;
|
||||
case RFU_COMMAND_0xa100:
|
||||
if (sub_80F9C50())
|
||||
if (Cmd8000recvIsFinished())
|
||||
gSendCmd[1] = Rfu.unk_5a;
|
||||
break;
|
||||
case RFU_COMMAND_0x7700:
|
||||
@@ -1155,11 +1156,11 @@ static void RfuPrepareSendBuffer(u16 command)
|
||||
gSendCmd[1] = Rfu.playerCount;
|
||||
buff = (u8 *)(gSendCmd + 2);
|
||||
for (i = 0; i < RFU_CHILD_MAX; i++)
|
||||
buff[i] = Rfu.unk_cde[i];
|
||||
buff[i] = Rfu.linkPlayerIdx[i];
|
||||
break;
|
||||
case RFU_COMMAND_0x6600:
|
||||
case RFU_COMMAND_0x5f00:
|
||||
gSendCmd[1] = Rfu.unk_100;
|
||||
gSendCmd[1] = Rfu.cmd_6600_count;
|
||||
break;
|
||||
case RFU_COMMAND_0x2f00:
|
||||
for (i = 0; i < 6; i++)
|
||||
@@ -1363,45 +1364,45 @@ void Rfu_BeginBuildAndSendCommand5F(void)
|
||||
CreateTask(Task_WaitRfuFuncAndSetBuildCmd5F00, 5);
|
||||
}
|
||||
|
||||
static void sub_80FA2B0(void)
|
||||
static void RfuFunc_Send6600_3(void)
|
||||
{
|
||||
u8 playerCount;
|
||||
u8 i;
|
||||
|
||||
if (GetMultiplayerId() != 0) // child
|
||||
{
|
||||
if (Rfu.unk_124.count == 0 && Rfu.unk_fe > 60)
|
||||
if (Rfu.unk_124.count == 0 && Rfu.cmd_6600_timer > 60)
|
||||
{
|
||||
RfuPrepareSendBuffer(RFU_COMMAND_0x6600);
|
||||
Rfu.unk_fe = 0;
|
||||
Rfu.cmd_6600_timer = 0;
|
||||
}
|
||||
}
|
||||
playerCount = GetLinkPlayerCount();
|
||||
for (i = 0; i < playerCount; i++)
|
||||
{
|
||||
if (Rfu.unk_e9[i] == 0)
|
||||
if (Rfu.cmd_6600_recvd[i] == 0)
|
||||
break;
|
||||
}
|
||||
if (i == playerCount)
|
||||
{
|
||||
for (i = 0; i < MAX_RFU_PLAYERS; i++)
|
||||
Rfu.unk_e9[i] = 0;
|
||||
Rfu.unk_100++;
|
||||
Rfu.cmd_6600_recvd[i] = 0;
|
||||
Rfu.cmd_6600_count++;
|
||||
Rfu.RfuFunc = NULL;
|
||||
}
|
||||
Rfu.unk_fe++;
|
||||
Rfu.cmd_6600_timer++;
|
||||
}
|
||||
|
||||
static void sub_80FA350(void)
|
||||
static void RfuFunc_Send6600_2(void)
|
||||
{
|
||||
if (Rfu.unk_124.count == 0 && gSendCmd[0] == 0)
|
||||
{
|
||||
RfuPrepareSendBuffer(RFU_COMMAND_0x6600);
|
||||
Rfu.RfuFunc = sub_80FA2B0;
|
||||
Rfu.RfuFunc = RfuFunc_Send6600_3;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80FA388(void)
|
||||
static void RfuFunc_Send6600_1(void)
|
||||
{
|
||||
u8 i;
|
||||
u8 playerCount;
|
||||
@@ -1411,7 +1412,7 @@ static void sub_80FA388(void)
|
||||
if (Rfu.unk_124.count == 0 && gSendCmd[0] == 0)
|
||||
{
|
||||
RfuPrepareSendBuffer(RFU_COMMAND_0x6600);
|
||||
Rfu.RfuFunc = sub_80FA2B0;
|
||||
Rfu.RfuFunc = RfuFunc_Send6600_3;
|
||||
}
|
||||
}
|
||||
else // parent
|
||||
@@ -1419,7 +1420,7 @@ static void sub_80FA388(void)
|
||||
playerCount = GetLinkPlayerCount();
|
||||
for (i = 1; i < playerCount; i++)
|
||||
{
|
||||
if (Rfu.unk_e9[i] == 0)
|
||||
if (Rfu.cmd_6600_recvd[i] == 0)
|
||||
break;
|
||||
}
|
||||
if (i == playerCount)
|
||||
@@ -1427,18 +1428,18 @@ static void sub_80FA388(void)
|
||||
if (Rfu.unk_124.count == 0 && gSendCmd[0] == 0)
|
||||
{
|
||||
RfuPrepareSendBuffer(RFU_COMMAND_0x6600);
|
||||
Rfu.RfuFunc = sub_80FA350;
|
||||
Rfu.RfuFunc = RfuFunc_Send6600_2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80FA42C(void)
|
||||
void LinkRfu_SetRfuFuncToSend6600(void)
|
||||
{
|
||||
if (Rfu.RfuFunc == NULL)
|
||||
{
|
||||
Rfu.RfuFunc = sub_80FA388;
|
||||
Rfu.unk_fe = 0;
|
||||
Rfu.RfuFunc = RfuFunc_Send6600_1;
|
||||
Rfu.cmd_6600_timer = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1629,10 +1630,10 @@ static void sub_80FA834(u8 taskId)
|
||||
switch (gTasks[taskId].data[0])
|
||||
{
|
||||
case 0:
|
||||
if (sub_80F9C50())
|
||||
if (Cmd8000recvIsFinished())
|
||||
{
|
||||
ResetBlockReceivedFlags();
|
||||
sub_800B0B4();
|
||||
PrepareLocalLinkPlayerBlock();
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
@@ -1659,7 +1660,7 @@ static void sub_80FA834(u8 taskId)
|
||||
case 3:
|
||||
if (Rfu.parent_child == MODE_PARENT)
|
||||
{
|
||||
if (sub_80F9C50())
|
||||
if (Cmd8000recvIsFinished())
|
||||
{
|
||||
Rfu.unk_5a = 0;
|
||||
RfuPrepareSendBuffer(RFU_COMMAND_0xa100);
|
||||
@@ -1676,7 +1677,7 @@ static void sub_80FA834(u8 taskId)
|
||||
case 5:
|
||||
for (i = 0; i < Rfu.playerCount; i++)
|
||||
{
|
||||
sub_800B110(i);
|
||||
LinkPlayerFromBlock(i);
|
||||
Rfu_ResetBlockReceivedFlag(i);
|
||||
}
|
||||
gTasks[taskId].data[0]++;
|
||||
@@ -1686,14 +1687,14 @@ static void sub_80FA834(u8 taskId)
|
||||
gReceivedRemoteLinkPlayers = 1;
|
||||
Rfu.unk_ce8 = FALSE;
|
||||
rfu_LMAN_setLinkRecovery(1, 600);
|
||||
if (Rfu.unk_ce6)
|
||||
if (Rfu.unionRoomChatters)
|
||||
{
|
||||
for (i = 0; i < RFU_CHILD_MAX; i++)
|
||||
{
|
||||
if ((Rfu.unk_ce6 >> i) & 1)
|
||||
if ((Rfu.unionRoomChatters >> i) & 1)
|
||||
{
|
||||
Rfu.unk_ce5 = 1 << i;
|
||||
Rfu.unk_ce6 ^= (1 << i);
|
||||
Rfu.unionRoomChatters ^= (1 << i);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1708,39 +1709,39 @@ static void sub_80FA9D0(u16 a0)
|
||||
for (i = 0; i < RFU_CHILD_MAX; i++)
|
||||
{
|
||||
if ((a0 >> i) & 1)
|
||||
Rfu.unk_cde[i] = 0;
|
||||
Rfu.linkPlayerIdx[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80FA9FC(const struct UnkRfuStruct_8010A14 *a0)
|
||||
static void ReceiveRfuLinkPlayers(const struct SioInfo *chunk)
|
||||
{
|
||||
s32 i;
|
||||
Rfu.playerCount = a0->unk_0f;
|
||||
Rfu.playerCount = chunk->playerCount;
|
||||
for (i = 0; i < RFU_CHILD_MAX; i++)
|
||||
Rfu.unk_cde[i] = a0->unk_10[i];
|
||||
Rfu.linkPlayerIdx[i] = chunk->linkPlayerIdx[i];
|
||||
for (i = 0; i < MAX_RFU_PLAYERS; i++)
|
||||
{
|
||||
gLinkPlayers[i] = a0->unk_14[i];
|
||||
sub_800B284(gLinkPlayers + i);
|
||||
gLinkPlayers[i] = chunk->linkPlayers[i];
|
||||
IntlConvertLinkPlayerName(gLinkPlayers + i);
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80FAA58(void *a0)
|
||||
static void ValidateAndReceivePokemonSioInfo(void *recvBuffer)
|
||||
{
|
||||
if (strcmp("PokemonSioInfo", ((struct UnkRfuStruct_8010A14 *)a0)->unk_00) == 0)
|
||||
if (strcmp("PokemonSioInfo", recvBuffer) == 0)
|
||||
{
|
||||
sub_80FA9FC(a0);
|
||||
CpuFill16(0, a0, sizeof(struct UnkRfuStruct_8010A14));
|
||||
ReceiveRfuLinkPlayers(recvBuffer);
|
||||
CpuFill16(0, recvBuffer, sizeof(struct SioInfo));
|
||||
ResetBlockReceivedFlag(0);
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80FAA94(u8 taskId)
|
||||
static void Task_ExchangeLinkPlayers(u8 taskId)
|
||||
{
|
||||
s32 i;
|
||||
struct LinkPlayerBlock *r2;
|
||||
struct UnkRfuStruct_8010A14 *r5;
|
||||
u8 r4 = Rfu.unk_cde[gUnknown_843EC38[Rfu.unk_ce9]];
|
||||
struct SioInfo *r5;
|
||||
u8 r4 = Rfu.linkPlayerIdx[gUnknown_843EC38[Rfu.unk_ce9]];
|
||||
if (Rfu.unk_f1 == 1 || Rfu.unk_f1 == 2)
|
||||
{
|
||||
Rfu.unk_ce8 = FALSE;
|
||||
@@ -1766,42 +1767,43 @@ static void sub_80FAA94(u8 taskId)
|
||||
ResetBlockReceivedFlag(r4);
|
||||
r2 = (struct LinkPlayerBlock *)gBlockRecvBuffer[r4];
|
||||
gLinkPlayers[r4] = r2->linkPlayer;
|
||||
sub_800B284(gLinkPlayers + r4);
|
||||
IntlConvertLinkPlayerName(gLinkPlayers + r4);
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
r5 = (struct UnkRfuStruct_8010A14 *)gBlockSendBuffer;
|
||||
memcpy(r5->unk_00, "PokemonSioInfo", sizeof("PokemonSioInfo"));
|
||||
r5->unk_0f = Rfu.playerCount;
|
||||
// Prepare send block
|
||||
r5 = (struct SioInfo *)gBlockSendBuffer;
|
||||
memcpy(r5->magic, "PokemonSioInfo", sizeof("PokemonSioInfo"));
|
||||
r5->playerCount = Rfu.playerCount;
|
||||
for (i = 0; i < RFU_CHILD_MAX; i++)
|
||||
r5->unk_10[i] = Rfu.unk_cde[i];
|
||||
memcpy(r5->unk_14, gLinkPlayers, sizeof gLinkPlayers);
|
||||
r5->linkPlayerIdx[i] = Rfu.linkPlayerIdx[i];
|
||||
memcpy(r5->linkPlayers, gLinkPlayers, sizeof gLinkPlayers);
|
||||
gTasks[taskId].data[0]++;
|
||||
// fallthrough
|
||||
case 4:
|
||||
r5 = (struct UnkRfuStruct_8010A14 *)gBlockSendBuffer;
|
||||
r5->unk_0f = Rfu.playerCount;
|
||||
r5 = (struct SioInfo *)gBlockSendBuffer;
|
||||
r5->playerCount = Rfu.playerCount;
|
||||
for (i = 0; i < RFU_CHILD_MAX; i++)
|
||||
r5->unk_10[i] = Rfu.unk_cde[i];
|
||||
memcpy(r5->unk_14, gLinkPlayers, sizeof gLinkPlayers);
|
||||
r5->linkPlayerIdx[i] = Rfu.linkPlayerIdx[i];
|
||||
memcpy(r5->linkPlayers, gLinkPlayers, sizeof gLinkPlayers);
|
||||
if (SendBlock(0, gBlockSendBuffer, 0xa0))
|
||||
gTasks[taskId].data[0]++;
|
||||
break;
|
||||
case 5:
|
||||
if (IsLinkTaskFinished() && GetBlockReceivedStatus() & 1)
|
||||
{
|
||||
CpuFill16(0, gBlockRecvBuffer, sizeof(struct UnkRfuStruct_8010A14));
|
||||
CpuFill16(0, gBlockRecvBuffer, sizeof(struct SioInfo));
|
||||
ResetBlockReceivedFlag(0);
|
||||
Rfu.unk_ce8 = FALSE;
|
||||
if (Rfu.unk_ce6)
|
||||
if (Rfu.unionRoomChatters)
|
||||
{
|
||||
for (i = 0; i < RFU_CHILD_MAX; i++)
|
||||
{
|
||||
if ((Rfu.unk_ce6 >> i) & 1)
|
||||
if ((Rfu.unionRoomChatters >> i) & 1)
|
||||
{
|
||||
Rfu.unk_ce5 = 1 << i;
|
||||
Rfu.unk_ce6 ^= (1 << i);
|
||||
Rfu.unionRoomChatters ^= (1 << i);
|
||||
Rfu.unk_ce8 = TRUE;
|
||||
break;
|
||||
}
|
||||
@@ -1822,7 +1824,7 @@ static void sub_80FACF0(u8 taskId)
|
||||
case 0:
|
||||
if (Rfu.playerCount)
|
||||
{
|
||||
sub_800B0B4();
|
||||
PrepareLocalLinkPlayerBlock();
|
||||
SendBlock(0, gBlockSendBuffer, sizeof(struct LinkPlayerBlock));
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
@@ -1834,7 +1836,7 @@ static void sub_80FACF0(u8 taskId)
|
||||
case 2:
|
||||
if (GetBlockReceivedStatus() & 1)
|
||||
{
|
||||
sub_80FA9FC((const struct UnkRfuStruct_8010A14 *)gBlockRecvBuffer);
|
||||
ReceiveRfuLinkPlayers((const struct SioInfo *)gBlockRecvBuffer);
|
||||
ResetBlockReceivedFlag(0);
|
||||
gReceivedRemoteLinkPlayers = 1;
|
||||
DestroyTask(taskId);
|
||||
@@ -1969,7 +1971,7 @@ void sub_80FB030(u32 linkPlayerCount)
|
||||
{
|
||||
// The 0x80 prevents this element from being incorrectly read as a 0.
|
||||
child_sprite_genders |= ((
|
||||
0x80 | ((gLinkPlayers[Rfu.unk_cde[i]].gender & 1) << 3) | (gLinkPlayers[Rfu.unk_cde[i]].trainerId & 7)
|
||||
0x80 | ((gLinkPlayers[Rfu.linkPlayerIdx[i]].gender & 1) << 3) | (gLinkPlayers[Rfu.linkPlayerIdx[i]].trainerId & 7)
|
||||
) << (numConnectedChildren << 3));
|
||||
numConnectedChildren++;
|
||||
if (numConnectedChildren == linkPlayerCount - 1)
|
||||
@@ -2143,13 +2145,13 @@ static void LmanCallback_Child(u8 msg, u8 param_count)
|
||||
Rfu.linkLossRecoveryState = 4;
|
||||
if (Rfu.unk_c86 != 9)
|
||||
RfuSetErrorStatus(2, msg);
|
||||
nullsub_87("LINK LOSS DISCONNECT!", 5, 5);
|
||||
rfu_dbg_print_str("LINK LOSS DISCONNECT!", 5, 5);
|
||||
if (gReceivedRemoteLinkPlayers == 1)
|
||||
GetLinkmanErrorParams(msg);
|
||||
break;
|
||||
case LMAN_MSG_LINK_LOSS_DETECTED_AND_START_RECOVERY:
|
||||
Rfu.linkLossRecoveryState = 1;
|
||||
nullsub_87("LINK LOSS RECOVERY NOW", 5, 5);
|
||||
rfu_dbg_print_str("LINK LOSS RECOVERY NOW", 5, 5);
|
||||
break;
|
||||
case LMAN_MSG_LINK_RECOVERY_SUCCESSED:
|
||||
Rfu.linkLossRecoveryState = 3;
|
||||
@@ -2191,14 +2193,14 @@ static void sub_80FB564(s32 bmConnectedFlag)
|
||||
}
|
||||
}
|
||||
|
||||
static u8 sub_80FB5A0(s32 a0)
|
||||
static u8 GetNewChildrenInUnionRoomChat(s32 bmNewChildSlot)
|
||||
{
|
||||
u8 ret = 0;
|
||||
u8 i;
|
||||
|
||||
for (i = 0; i < RFU_CHILD_MAX; i++)
|
||||
{
|
||||
if ((a0 >> i) & 1)
|
||||
if ((bmNewChildSlot >> i) & 1)
|
||||
{
|
||||
struct GFtgtGname *structPtr = (void *)&gRfuLinkStatus->partner[i].gname;
|
||||
if (structPtr->activity == (ACTIVITY_CHAT | IN_UNION_ROOM))
|
||||
@@ -2224,24 +2226,24 @@ static void LmanCallback_Parent(u8 msg, u8 param_count)
|
||||
case LMAN_MSG_NEW_CHILD_CONNECT_ACCEPTED:
|
||||
if (GetHostRFUtgtGname()->activity == (ACTIVITY_CHAT | IN_UNION_ROOM) && Rfu.unk_cd9 == 0)
|
||||
{
|
||||
u8 idx = sub_80FB5A0(lman.param[0]);
|
||||
if (idx != 0)
|
||||
u8 bmAcceptSlot = GetNewChildrenInUnionRoomChat(lman.param[0]);
|
||||
if (bmAcceptSlot != 0)
|
||||
{
|
||||
r1 = 1 << sub_80F886C(idx);
|
||||
if (Rfu.unk_ce6 == 0 && !Rfu.unk_ce8)
|
||||
r1 = 1 << sub_80F886C(bmAcceptSlot);
|
||||
if (Rfu.unionRoomChatters == 0 && !Rfu.unk_ce8)
|
||||
{
|
||||
Rfu.unk_ce5 = r1;
|
||||
Rfu.unk_ce6 |= (r1 ^ idx);
|
||||
Rfu.unionRoomChatters |= (r1 ^ bmAcceptSlot);
|
||||
Rfu.unk_ce8 = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
Rfu.unk_ce6 |= idx;
|
||||
Rfu.unionRoomChatters |= bmAcceptSlot;
|
||||
}
|
||||
}
|
||||
if (idx != lman.param[0])
|
||||
if (bmAcceptSlot != lman.param[0])
|
||||
{
|
||||
Rfu.bm_DisconnectSlot |= (idx ^ lman.param[0]);
|
||||
Rfu.bm_DisconnectSlot |= (bmAcceptSlot ^ lman.param[0]);
|
||||
Rfu.unk_ce4 = 2;
|
||||
}
|
||||
}
|
||||
@@ -2326,7 +2328,7 @@ static void LmanCallback_Parent(u8 msg, u8 param_count)
|
||||
rfu_LMAN_stopManager(0);
|
||||
}
|
||||
|
||||
if (gRfuLinkStatus->parentChild == MODE_NEUTRAL && lman.pcswitch_flag == 0 && FuncIsActiveTask(sub_80F8B34) == TRUE)
|
||||
if (gRfuLinkStatus->parentChild == MODE_NEUTRAL && lman.pcswitch_flag == 0 && FuncIsActiveTask(Task_LinkRfu_UnionRoomListen) == TRUE)
|
||||
Rfu.state = 17;
|
||||
|
||||
RfuSetErrorStatus(2, msg);
|
||||
@@ -2418,7 +2420,7 @@ static void sub_80FBA78(void)
|
||||
if (IsWirelessAdapterConnected())
|
||||
{
|
||||
gLinkType = LINKTYPE_0x1111;
|
||||
sub_800B1F4();
|
||||
SetWirelessCommType1();
|
||||
OpenLink();
|
||||
SeedRng(gMain.vblankCounter2);
|
||||
for (i = 0; i < RFU_CHILD_MAX; i++)
|
||||
@@ -2429,25 +2431,25 @@ static void sub_80FBA78(void)
|
||||
AnimateSprites();
|
||||
BuildOamBuffer();
|
||||
UpdatePaletteFade();
|
||||
sub_80FBB20();
|
||||
LinkRfu_CreateIdleTask();
|
||||
SetMainCallback2(sub_80FBB74);
|
||||
}
|
||||
}
|
||||
|
||||
bool32 sub_80FBB0C(void)
|
||||
bool32 IsUnionRoomListenTaskActive(void)
|
||||
{
|
||||
return FuncIsActiveTask(sub_80F8B34);
|
||||
return FuncIsActiveTask(Task_LinkRfu_UnionRoomListen);
|
||||
}
|
||||
|
||||
void sub_80FBB20(void)
|
||||
void LinkRfu_CreateIdleTask(void)
|
||||
{
|
||||
if (!FuncIsActiveTask(nullsub_89))
|
||||
Rfu.unk_66 = CreateTask(nullsub_89, 0);
|
||||
if (!FuncIsActiveTask(Task_idle))
|
||||
Rfu.unk_66 = CreateTask(Task_idle, 0);
|
||||
}
|
||||
|
||||
void sub_80FBB4C(void)
|
||||
void LinkRfu_DestroyIdleTask(void)
|
||||
{
|
||||
if (FuncIsActiveTask(nullsub_89) == TRUE)
|
||||
if (FuncIsActiveTask(Task_idle) == TRUE)
|
||||
DestroyTask(Rfu.unk_66);
|
||||
}
|
||||
|
||||
@@ -2477,7 +2479,7 @@ void InitializeRfuLinkManager_JoinGroup(void)
|
||||
CreateTask_JoinGroupSearchForParent();
|
||||
}
|
||||
|
||||
void sub_80FBC00(void)
|
||||
void InitializeRfuLinkManager_EnterUnionRoom(void)
|
||||
{
|
||||
if (gQuestLogState == 2 || gQuestLogState == 3)
|
||||
return;
|
||||
@@ -2487,7 +2489,7 @@ void sub_80FBC00(void)
|
||||
sRfuReqConfig = sRfuReqConfigTemplate;
|
||||
sRfuReqConfig.linkRecovery_enable = 0;
|
||||
sRfuReqConfig.linkRecovery_period = 600;
|
||||
Rfu.unk_67 = CreateTask(sub_80F8B34, 1);
|
||||
Rfu.unk_67 = CreateTask(Task_LinkRfu_UnionRoomListen, 1);
|
||||
}
|
||||
|
||||
static u16 ReadU16(const void *ptr)
|
||||
@@ -2550,7 +2552,7 @@ void sub_80FBD6C(u32 a0)
|
||||
|
||||
for (i = 0; i < RFU_CHILD_MAX; i++)
|
||||
{
|
||||
if (Rfu.unk_cde[i] == a0 && (Rfu.bm_PartnerFlags >> i) & 1)
|
||||
if (Rfu.linkPlayerIdx[i] == a0 && (Rfu.bm_PartnerFlags >> i) & 1)
|
||||
var |= 1 << i;
|
||||
}
|
||||
if (var)
|
||||
@@ -2587,7 +2589,7 @@ static void sub_80FBE20(u32 a0, u32 a1)
|
||||
gTasks[taskId].data[1] = a1;
|
||||
}
|
||||
|
||||
static void sub_80FBE80(u8 taskId)
|
||||
static void Task_RfuReconnectWithParent(u8 taskId)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
|
||||
@@ -2598,7 +2600,7 @@ static void sub_80FBE80(u8 taskId)
|
||||
{
|
||||
if (gRfuLinkStatus->partner[id].slot != 0xFF)
|
||||
{
|
||||
Rfu.unk_c3d = id;
|
||||
Rfu.reconnectedParentIdx = id;
|
||||
if (IsParentSuccessfullyReconnected())
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
@@ -2615,7 +2617,7 @@ static void sub_80FBE80(u8 taskId)
|
||||
else
|
||||
{
|
||||
data[15]++;
|
||||
Rfu.unk_c3d = id;
|
||||
Rfu.reconnectedParentIdx = id;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -2630,13 +2632,13 @@ static void sub_80FBE80(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
void CreateTask_sub_80FBE80(const u8 *trainerName, u16 trainerId)
|
||||
void CreateTask_RfuReconnectWithParent(const u8 *trainerName, u16 trainerId)
|
||||
{
|
||||
u8 taskId;
|
||||
s16 *data;
|
||||
|
||||
Rfu.unk_f1 = 0;
|
||||
taskId = CreateTask(sub_80FBE80, 3);
|
||||
taskId = CreateTask(Task_RfuReconnectWithParent, 3);
|
||||
data = gTasks[taskId].data;
|
||||
StringCopy((u8*)(data), trainerName);
|
||||
data[8] = trainerId;
|
||||
@@ -2719,7 +2721,7 @@ void sub_80FC114(const u8 *name, struct GFtgtGname *structPtr, u8 activity)
|
||||
rfu_LMAN_forceChangeSP();
|
||||
taskId = CreateTask(sub_80FC028, 2);
|
||||
gTasks[taskId].data[1] = activity;
|
||||
taskId2 = FindTaskIdByFunc(sub_80F8B34);
|
||||
taskId2 = FindTaskIdByFunc(Task_LinkRfu_UnionRoomListen);
|
||||
if (activity == (ACTIVITY_CHAT | IN_UNION_ROOM))
|
||||
{
|
||||
if (taskId2 != 0xFF)
|
||||
@@ -2753,12 +2755,12 @@ bool32 sub_80FC1CC(void)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void sub_80FC208(void)
|
||||
static void rfu_dbg_clear(void)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 20; i++)
|
||||
nullsub_87(" ", 0, i);
|
||||
rfu_dbg_print_str(" ", 0, i);
|
||||
}
|
||||
|
||||
static const char gUnknown_843EE47[16] = {
|
||||
@@ -2774,44 +2776,44 @@ static const char gUnknown_843EE57[9] = {
|
||||
static const char gUnknown_843EE60[] = {' ', '\0'};
|
||||
static const char gUnknown_843EE62[] = {'*', '\0'};
|
||||
|
||||
static void sub_80FC228(void)
|
||||
static void rfu_dbg_print_status(void)
|
||||
{
|
||||
s32 i, j;
|
||||
|
||||
nullsub_88(GetBlockReceivedStatus(), 0x1C, 0x13, 2);
|
||||
nullsub_88(gRfuLinkStatus->connSlotFlag, 0x14, 1, 1);
|
||||
nullsub_88(gRfuLinkStatus->linkLossSlotFlag, 0x17, 1, 1);
|
||||
rfu_dbg_print_num(GetBlockReceivedStatus(), 0x1C, 0x13, 2);
|
||||
rfu_dbg_print_num(gRfuLinkStatus->connSlotFlag, 0x14, 1, 1);
|
||||
rfu_dbg_print_num(gRfuLinkStatus->linkLossSlotFlag, 0x17, 1, 1);
|
||||
if (Rfu.parent_child == MODE_PARENT)
|
||||
{
|
||||
for (i = 0; i < RFU_CHILD_MAX; i++)
|
||||
{
|
||||
if ((gRfuLinkStatus->getNameFlag >> i) & 1)
|
||||
{
|
||||
nullsub_88(gRfuLinkStatus->partner[i].serialNo, 1, i + 3, 4);
|
||||
nullsub_87((void*) &gRfuLinkStatus->partner[i].gname, 6, i + 3);
|
||||
nullsub_87(gRfuLinkStatus->partner[i].uname, 0x16, i + 3);
|
||||
rfu_dbg_print_num(gRfuLinkStatus->partner[i].serialNo, 1, i + 3, 4);
|
||||
rfu_dbg_print_str((void*) &gRfuLinkStatus->partner[i].gname, 6, i + 3);
|
||||
rfu_dbg_print_str(gRfuLinkStatus->partner[i].uname, 0x16, i + 3);
|
||||
}
|
||||
}
|
||||
for (i = 0; i < RFU_CHILD_MAX; i++)
|
||||
{
|
||||
for (j = 0; j < 14; j++)
|
||||
{
|
||||
nullsub_88(Rfu.unk_14[i][j], j * 2, i + 11, 2);
|
||||
rfu_dbg_print_num(Rfu.unk_14[i][j], j * 2, i + 11, 2);
|
||||
}
|
||||
}
|
||||
nullsub_87("NOWSLOT", 1, 0xF);
|
||||
rfu_dbg_print_str("NOWSLOT", 1, 0xF);
|
||||
}
|
||||
else if (gRfuLinkStatus->connSlotFlag != 0 && gRfuLinkStatus->getNameFlag != 0)
|
||||
{
|
||||
for (i = 0; i < RFU_CHILD_MAX; i++)
|
||||
{
|
||||
nullsub_88(0, 1, i + 3, 4);
|
||||
nullsub_87(gUnknown_843EE47, 6, i + 3);
|
||||
nullsub_87(gUnknown_843EE57, 0x16, i + 3);
|
||||
rfu_dbg_print_num(0, 1, i + 3, 4);
|
||||
rfu_dbg_print_str(gUnknown_843EE47, 6, i + 3);
|
||||
rfu_dbg_print_str(gUnknown_843EE57, 0x16, i + 3);
|
||||
}
|
||||
nullsub_88(gRfuLinkStatus->partner[Rfu.child_slot].serialNo, 1, 3, 4);
|
||||
nullsub_87(gRfuLinkStatus->partner[Rfu.child_slot].gname, 6, 3);
|
||||
nullsub_87(gRfuLinkStatus->partner[Rfu.child_slot].uname, 0x16, 3);
|
||||
rfu_dbg_print_num(gRfuLinkStatus->partner[Rfu.child_slot].serialNo, 1, 3, 4);
|
||||
rfu_dbg_print_str(gRfuLinkStatus->partner[Rfu.child_slot].gname, 6, 3);
|
||||
rfu_dbg_print_str(gRfuLinkStatus->partner[Rfu.child_slot].uname, 0x16, 3);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2819,16 +2821,16 @@ static void sub_80FC228(void)
|
||||
{
|
||||
if (gRfuLinkStatus->partner[i].slot != 0xFF)
|
||||
{
|
||||
nullsub_88(gRfuLinkStatus->partner[i].serialNo, 1, i + 3, 4);
|
||||
nullsub_88(gRfuLinkStatus->partner[i].id, 6, i + 3, 4);
|
||||
nullsub_87(gRfuLinkStatus->partner[i].uname, 0x16, i + 3);
|
||||
rfu_dbg_print_num(gRfuLinkStatus->partner[i].serialNo, 1, i + 3, 4);
|
||||
rfu_dbg_print_num(gRfuLinkStatus->partner[i].id, 6, i + 3, 4);
|
||||
rfu_dbg_print_str(gRfuLinkStatus->partner[i].uname, 0x16, i + 3);
|
||||
}
|
||||
}
|
||||
for (; i < RFU_CHILD_MAX; i++)
|
||||
{
|
||||
nullsub_88(0, 1, i + 3, 4);
|
||||
nullsub_87(gUnknown_843EE47, 6, i + 3);
|
||||
nullsub_87(gUnknown_843EE57, 0x16, i + 3);
|
||||
rfu_dbg_print_num(0, 1, i + 3, 4);
|
||||
rfu_dbg_print_str(gUnknown_843EE47, 6, i + 3);
|
||||
rfu_dbg_print_str(gUnknown_843EE57, 0x16, i + 3);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2857,7 +2859,7 @@ u32 GetRfuRecvQueueLength(void)
|
||||
return Rfu.unk_124.count;
|
||||
}
|
||||
|
||||
static void nullsub_89(u8 taskId)
|
||||
static void Task_idle(u8 taskId)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
+3
-3
@@ -856,7 +856,7 @@ void sub_80DA634(u8 taskId)
|
||||
gTasks[taskId].data[0] = 1;
|
||||
break;
|
||||
case 1:
|
||||
sub_800AB9C();
|
||||
PrepareSendLinkCmd2FFE_or_RfuCmd6600();
|
||||
gTasks[taskId].data[0] = 2;
|
||||
break;
|
||||
case 2:
|
||||
@@ -890,7 +890,7 @@ void sub_80DA634(u8 taskId)
|
||||
break;
|
||||
case 7:
|
||||
ClearContinueGameWarpStatus2();
|
||||
sub_800AB9C();
|
||||
PrepareSendLinkCmd2FFE_or_RfuCmd6600();
|
||||
gTasks[taskId].data[0] = 8;
|
||||
break;
|
||||
case 8:
|
||||
@@ -901,7 +901,7 @@ void sub_80DA634(u8 taskId)
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
sub_800AB9C();
|
||||
PrepareSendLinkCmd2FFE_or_RfuCmd6600();
|
||||
gTasks[taskId].data[0] = 10;
|
||||
break;
|
||||
case 10:
|
||||
|
||||
+6
-6
@@ -765,9 +765,9 @@ static void sub_804C728(void)
|
||||
|
||||
if (gWirelessCommType)
|
||||
{
|
||||
sub_800B1F4();
|
||||
SetWirelessCommType1();
|
||||
OpenLink();
|
||||
sub_80FBB20();
|
||||
LinkRfu_CreateIdleTask();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -810,14 +810,14 @@ static void sub_804C728(void)
|
||||
case 4:
|
||||
if (gReceivedRemoteLinkPlayers == TRUE && IsLinkPlayerDataExchangeComplete() == TRUE)
|
||||
{
|
||||
sub_80FBB4C();
|
||||
LinkRfu_DestroyIdleTask();
|
||||
CalculatePlayerPartyCount();
|
||||
gMain.state++;
|
||||
sTradeMenuResourcesPtr->unk_A8 = 0;
|
||||
if (gWirelessCommType)
|
||||
{
|
||||
sub_80FA484(TRUE);
|
||||
sub_800AB9C();
|
||||
PrepareSendLinkCmd2FFE_or_RfuCmd6600();
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -2004,7 +2004,7 @@ static void sub_804E908(void)
|
||||
{
|
||||
if (gWirelessCommType)
|
||||
{
|
||||
sub_800AB9C();
|
||||
PrepareSendLinkCmd2FFE_or_RfuCmd6600();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2044,7 +2044,7 @@ static void sub_804E9C0(void)
|
||||
{
|
||||
if (!sub_80FA484(FALSE))
|
||||
{
|
||||
sub_800AB9C();
|
||||
PrepareSendLinkCmd2FFE_or_RfuCmd6600();
|
||||
sTradeMenuResourcesPtr->unk_6F = 13;
|
||||
}
|
||||
}
|
||||
|
||||
+4
-4
@@ -2556,7 +2556,7 @@ static void sub_8053E8C(void)
|
||||
DrawTextOnTradeWindow(0, gStringVar4, 0);
|
||||
break;
|
||||
case 1:
|
||||
sub_800AB9C();
|
||||
PrepareSendLinkCmd2FFE_or_RfuCmd6600();
|
||||
gMain.state = 100;
|
||||
sTradeData->timer = 0;
|
||||
break;
|
||||
@@ -2641,7 +2641,7 @@ static void sub_8053E8C(void)
|
||||
case 41:
|
||||
if (sTradeData->timer == 0)
|
||||
{
|
||||
sub_800AB9C();
|
||||
PrepareSendLinkCmd2FFE_or_RfuCmd6600();
|
||||
gMain.state = 42;
|
||||
}
|
||||
else
|
||||
@@ -2660,7 +2660,7 @@ static void sub_8053E8C(void)
|
||||
if (++sTradeData->timer > 60)
|
||||
{
|
||||
gMain.state++;
|
||||
sub_800AB9C();
|
||||
PrepareSendLinkCmd2FFE_or_RfuCmd6600();
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
@@ -2682,7 +2682,7 @@ static void sub_8053E8C(void)
|
||||
{
|
||||
if (gWirelessCommType && gMain.savedCallback == CB2_ReturnFromLinkTrade)
|
||||
{
|
||||
sub_800AB9C();
|
||||
PrepareSendLinkCmd2FFE_or_RfuCmd6600();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
+160
-160
@@ -66,8 +66,8 @@ static void Task_TryBecomeLinkLeader(u8 taskId);
|
||||
static void Leader_DestroyResources(struct UnkStruct_Leader * leader);
|
||||
static bool8 Leader_SetStateIfMemberListChanged(struct UnkStruct_Leader * leader, u32 state1, u32 state2);
|
||||
static void ItemPrintFunc_PossibleGroupMembers(u8 windowId, s32 itemId, u8 y);
|
||||
static u8 LeaderUpdateGroupMembership(struct UnkStruct_Main0 * a0);
|
||||
static u8 UnionRoomLeaderField0CompactionAndCount(struct UnkStruct_Main0 * a0);
|
||||
static u8 LeaderUpdateGroupMembership(struct UnkStruct_Main0 * main0);
|
||||
static u8 UnionRoomLeaderField0CompactionAndCount(struct UnkStruct_Main0 * main0);
|
||||
static void Task_TryJoinLinkGroup(u8 taskId);
|
||||
static u32 IsTryingToTradeWithHoennTooSoon(struct UnkStruct_Group * group, s32 id);
|
||||
static void AskToJoinRfuGroup(struct UnkStruct_Group * group, s32 id);
|
||||
@@ -79,16 +79,16 @@ static void CreateTask_StartActivity(void);
|
||||
static void Task_MEvent_Leader(u8 taskId);
|
||||
static void Task_CardOrNewsWithFriend(u8 taskId);
|
||||
static void Task_CardOrNewsOverWireless(u8 taskId);
|
||||
static void Task_ResumeUnionRoom(u8 taskId);
|
||||
static void Task_RunUnionRoom(u8 taskId);
|
||||
static u16 ReadAsU16(const u8 *data);
|
||||
static void ReceiveUnionRoomActivityPacket(struct UnkStruct_URoom * uRoom);
|
||||
static bool32 UnionRoom_HandleContactFromOtherPlayer(struct UnkStruct_URoom * uRoom);
|
||||
static void Task_InitUnionRoom(u8 taskId);
|
||||
static u8 HandlePlayerListUpdate(void);
|
||||
static u8 CreateTask_SearchForChildOrParent(struct UnkStruct_Main4 * arg0, struct UnkStruct_Main4 * arg1, u32 arg2);
|
||||
static bool32 GetGnameWonderFlagByLinkGroup(struct GFtgtGname * gname, s16 arg1);
|
||||
static u8 CreateTask_ListenForPartnersWithCompatibleSerialNos(struct UnkStruct_Main4 * arg0, u32 linkGroup);
|
||||
static u8 CreateTask_ListenForPartnersWithSerial7F7D(struct UnkStruct_Main4 * arg0, u32 linkGroup);
|
||||
static u8 CreateTask_SearchForChildOrParent(struct UnkStruct_Main4 * main4, struct UnkStruct_Main4 * arg1, u32 arg2);
|
||||
static bool32 GetGnameWonderFlagByLinkGroup(struct GFtgtGname * gname, s16 linkGroup);
|
||||
static u8 CreateTask_ListenForPartnersWithCompatibleSerialNos(struct UnkStruct_Main4 * main4, u32 linkGroup);
|
||||
static u8 CreateTask_ListenForPartnersWithSerial7F7D(struct UnkStruct_Main4 * main4, u32 linkGroup);
|
||||
static bool32 UR_PrintFieldMessage(const u8 * str);
|
||||
static bool32 UR_RunTextPrinters_CheckPrinter0Active(void);
|
||||
static bool8 PrintOnTextbox(u8 *textState, const u8 *str);
|
||||
@@ -98,27 +98,27 @@ static s32 TradeBoardMenuHandler(u8 *state_p, u8 *win_id_p, u8 *list_menu_id_p,
|
||||
static void UR_BlankBg0(void);
|
||||
static void JoinGroup_BlankBg0AndEnableScriptContexts(void);
|
||||
static void UR_AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 colorIdx);
|
||||
static void BlankUnkStruct_x20Array(struct UnkStruct_x20 * arg0, u8 count);
|
||||
static void BlankUnkStruct_x1CArray(struct UnkStruct_x1C * arg0, u8 count);
|
||||
static void BlankUnkStruct_x20Array(struct UnkStruct_x20 * x20, u8 count);
|
||||
static void BlankUnkStruct_x1CArray(struct UnkStruct_x1C * x1C, u8 count);
|
||||
static bool8 AreGnameUnameDifferent(struct UnionGnameUnamePair * arg0, const struct UnionGnameUnamePair * arg1);
|
||||
static bool32 AreUnionRoomPlayerGnamesDifferent(struct UnionGnameUnamePair * arg0, struct UnionGnameUnamePair * arg1);
|
||||
static u32 Findx20Inx1CArray(struct UnkStruct_x20 * arg0, struct UnkStruct_x1C * arg1);
|
||||
static u32 Findx20Inx1CArray(struct UnkStruct_x20 * x20, struct UnkStruct_x1C * x1Carr);
|
||||
static u8 Appendx1Ctox20(struct UnkStruct_x20 * x20arr, struct UnkStruct_x1C * x1C, u8 count);
|
||||
static void PrintUnionRoomGroupOnWindow(u8 windowId, u8 x, u8 y, struct UnkStruct_x20 * group, u8 colorIdx, u8 id);
|
||||
static void PrintGroupMemberCandidateOnWindowWithColor(u8 windowId, u8 x, u8 y, struct UnkStruct_x20 * group, u8 colorIdx, u8 id);
|
||||
static bool32 PlayerIsTalkingToUnionRoomAide(void);
|
||||
static u32 GetResponseIdx_InviteToURoomActivity(s32 activity);
|
||||
static u32 ConvPartnerUnameAndGetWhetherMetAlready(struct UnkStruct_x20 * unkX20);
|
||||
static s32 UnionRoomGetPlayerInteractionResponse(struct UnkStruct_Main0 * arg0, u8 arg1, u8 arg2, u32 playerGender);
|
||||
static s32 UnionRoomGetPlayerInteractionResponse(struct UnkStruct_Main0 * main0, u8 overrideGender, u8 playerIdx, u32 playerGender);
|
||||
static void nullsub_92(u8 windowId, s32 itemId, u8 y);
|
||||
static void TradeBoardListMenuItemPrintFunc(u8 windowId, s32 itemId, u8 y);
|
||||
static s32 GetIndexOfNthTradeBoardOffer(struct UnkStruct_x20 * arg, s32 arg1);
|
||||
static s32 GetUnionRoomPlayerGender(s32 a0, struct UnkStruct_Main0 * a1);
|
||||
static s32 GetIndexOfNthTradeBoardOffer(struct UnkStruct_x20 * x20, s32 n);
|
||||
static s32 GetUnionRoomPlayerGender(s32 playerIdx, struct UnkStruct_Main0 * main0);
|
||||
static s32 IsRequestedTypeAndSpeciesInPlayerParty(u32 type, u32 species);
|
||||
static void GetURoomActivityRejectMsg(u8 *dst, s32 arg1, u32 playerGender);
|
||||
static void GetURoomActivityStartMsg(u8 *dst, u8 arg1);
|
||||
static s32 GetChatLeaderActionRequestMessage(u8 *dst, u32 gender, u16 *arg2, struct UnkStruct_URoom * arg3);
|
||||
static bool32 PollPartnerYesNoResponse(struct UnkStruct_URoom * arg0);
|
||||
static void GetURoomActivityRejectMsg(u8 *dst, s32 activity, u32 playerGender);
|
||||
static void GetURoomActivityStartMsg(u8 *dst, u8 activity);
|
||||
static s32 GetChatLeaderActionRequestMessage(u8 *dst, u32 gender, u16 *activity_p, struct UnkStruct_URoom * uroom);
|
||||
static bool32 PollPartnerYesNoResponse(struct UnkStruct_URoom * uroom);
|
||||
static bool32 HasAtLeastTwoMonsOfLevel30OrLower(void);
|
||||
static void ResetUnionRoomTrade(struct UnionRoomTrade * trade);
|
||||
static bool32 RegisterTradeMonAndGetIsEgg(u32 monId, struct UnionRoomTrade * trade);
|
||||
@@ -127,8 +127,8 @@ static u32 GetPartyPositionOfRegisteredMon(struct UnionRoomTrade * trade, u8 mpI
|
||||
static void HandleCancelTrade(bool32 unlockObjs);
|
||||
static void UR_EnableScriptContext2AndFreezeObjectEvents(void);
|
||||
static u8 GetSinglePartnerSpriteGenderParam(s32 linkPlayer);
|
||||
static u8 GetActivePartnerSpriteGenderParam(struct UnkStruct_URoom * arg0);
|
||||
static void ViewURoomPartnerTrainerCard(u8 *dest, struct UnkStruct_URoom * uRoom, bool8 gender);
|
||||
static u8 GetActivePartnerSpriteGenderParam(struct UnkStruct_URoom * uroom);
|
||||
static void ViewURoomPartnerTrainerCard(u8 *dest, struct UnkStruct_URoom * uRoom, bool8 parent_child);
|
||||
|
||||
#define _8456CD8(a, b) ((a) | ((b) << 8))
|
||||
|
||||
@@ -664,7 +664,7 @@ static const u8 sUnref_84570D1[] = _("{DYNAMIC 00}·{DYNAMIC 01}");
|
||||
_maxWidth - strWidth; \
|
||||
})
|
||||
|
||||
// arg1 is a 2-nybble code
|
||||
// capacityCode is a 2-nybble code
|
||||
// Bits 0-3: Capacity
|
||||
// Bits 4-7: Min required (if 0, must have exactly Capacity players
|
||||
static void PrintNumPlayersWaitingForMsg(u8 windowId, u8 capacityCode, u8 count)
|
||||
@@ -745,7 +745,7 @@ static void Task_TryBecomeLinkLeader(u8 taskId)
|
||||
sPlayerCurrActivity = sLinkGroupToActivityAndCapacity[gSpecialVar_0x8004];
|
||||
sPlayerActivityGroupSize = sLinkGroupToActivityAndCapacity[gSpecialVar_0x8004] >> 8;
|
||||
SetHostRFUtgtGname(sPlayerCurrActivity, 0, 0);
|
||||
sub_800B1F4();
|
||||
SetWirelessCommType1();
|
||||
OpenLink();
|
||||
InitializeRfuLinkManager_LinkLeader(sPlayerActivityGroupSize & 0xF);
|
||||
data->state = 3;
|
||||
@@ -823,7 +823,7 @@ static void Task_TryBecomeLinkLeader(u8 taskId)
|
||||
&& JOY_NEW(START_BUTTON))
|
||||
{
|
||||
data->state = 15;
|
||||
sub_80F8F5C();
|
||||
LinkRfu_StopManagerAndFinalizeSlots();
|
||||
}
|
||||
if (data->state == 6 && sub_80FA5D4())
|
||||
{
|
||||
@@ -905,7 +905,7 @@ static void Task_TryBecomeLinkLeader(u8 taskId)
|
||||
data->state = 13;
|
||||
}
|
||||
|
||||
sub_80F8F5C();
|
||||
LinkRfu_StopManagerAndFinalizeSlots();
|
||||
PrintNumPlayersWaitingForMsg(data->nPlayerModeWindowId, sPlayerActivityGroupSize, data->playerCount);
|
||||
}
|
||||
else
|
||||
@@ -1289,7 +1289,7 @@ static void Task_TryJoinLinkGroup(u8 taskId)
|
||||
case 0:
|
||||
SetHostRFUtgtGname(sLinkGroupToURoomActivity[gSpecialVar_0x8004], 0, 0);
|
||||
sPlayerCurrActivity = sLinkGroupToURoomActivity[gSpecialVar_0x8004];
|
||||
sub_800B1F4();
|
||||
SetWirelessCommType1();
|
||||
OpenLink();
|
||||
InitializeRfuLinkManager_JoinGroup();
|
||||
data->field_4 = AllocZeroed(4 * sizeof(struct UnkStruct_x1C));
|
||||
@@ -1559,7 +1559,7 @@ static void AskToJoinRfuGroup(struct UnkStruct_Group * data, s32 id)
|
||||
RedrawListMenu(data->listTaskId);
|
||||
IntlConvPartnerUname7(gStringVar1, data->field_0->arr[data->leaderId]);
|
||||
UpdateGameDataWithActivitySpriteGendersFlag(sLinkGroupToURoomActivity[gSpecialVar_0x8004], 0, TRUE);
|
||||
CreateTask_sub_80FBE80(data->field_0->arr[data->leaderId].gname_uname.uname, ReadAsU16(data->field_0->arr[data->leaderId].gname_uname.gname.unk_00.playerTrainerId));
|
||||
CreateTask_RfuReconnectWithParent(data->field_0->arr[data->leaderId].gname_uname.uname, ReadAsU16(data->field_0->arr[data->leaderId].gname_uname.gname.unk_00.playerTrainerId));
|
||||
}
|
||||
|
||||
u8 CreateTask_ListenToWireless(void)
|
||||
@@ -1586,7 +1586,7 @@ static void Task_ListenToWireless(u8 taskId)
|
||||
{
|
||||
case 0:
|
||||
SetHostRFUtgtGname(0, 0, 0);
|
||||
sub_800B1F4();
|
||||
SetWirelessCommType1();
|
||||
OpenLink();
|
||||
InitializeRfuLinkManager_JoinGroup();
|
||||
sub_80FB128(TRUE);
|
||||
@@ -1882,7 +1882,7 @@ static void CB2_TransitionToCableClub(void)
|
||||
break;
|
||||
case 1:
|
||||
if (!FuncIsActiveTask(Task_ExchangeCards))
|
||||
SetMainCallback2(sub_8056788);
|
||||
SetMainCallback2(CB2_ReturnToFieldCableClub);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -2022,7 +2022,7 @@ static void Task_RunScriptAndFadeToActivity(u8 taskId)
|
||||
case 2:
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
sub_800AB9C();
|
||||
PrepareSendLinkCmd2FFE_or_RfuCmd6600();
|
||||
data[0]++;
|
||||
}
|
||||
break;
|
||||
@@ -2074,7 +2074,7 @@ static void Task_MEvent_Leader(u8 taskId)
|
||||
sPlayerActivityGroupSize = 2;
|
||||
SetHostRFUtgtGname(data->activity, 0, 0);
|
||||
SetGnameBufferWonderFlags(FALSE, FALSE);
|
||||
sub_800B1F4();
|
||||
SetWirelessCommType1();
|
||||
OpenLink();
|
||||
InitializeRfuLinkManager_LinkLeader(2);
|
||||
data->state = 1;
|
||||
@@ -2165,7 +2165,7 @@ static void Task_MEvent_Leader(u8 taskId)
|
||||
IntlConvPartnerUname7(gStringVar1, data->field_0->arr[data->playerCount - 1]);
|
||||
StringExpandPlaceholders(gStringVar4, gUnknown_8457554);
|
||||
data->state = 9;
|
||||
sub_80F8F5C();
|
||||
LinkRfu_StopManagerAndFinalizeSlots();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2246,7 +2246,7 @@ static void Task_MEvent_Leader(u8 taskId)
|
||||
Free(data->field_8);
|
||||
Free(data->field_0);
|
||||
Free(data->field_4);
|
||||
sub_800AB9C();
|
||||
PrepareSendLinkCmd2FFE_or_RfuCmd6600();
|
||||
data->state++;
|
||||
break;
|
||||
case 17:
|
||||
@@ -2281,7 +2281,7 @@ static void Task_CardOrNewsWithFriend(u8 taskId)
|
||||
{
|
||||
case 0:
|
||||
SetHostRFUtgtGname(data->cardOrNews + ACTIVITY_WCARD2, 0, 0);
|
||||
sub_800B1F4();
|
||||
SetWirelessCommType1();
|
||||
OpenLink();
|
||||
InitializeRfuLinkManager_JoinGroup();
|
||||
data->field_4 = AllocZeroed(4 * sizeof(struct UnkStruct_x1C));
|
||||
@@ -2342,7 +2342,7 @@ static void Task_CardOrNewsWithFriend(u8 taskId)
|
||||
CreateWirelessStatusIndicatorSprite(0, 0);
|
||||
RedrawListMenu(data->listTaskId);
|
||||
IntlConvPartnerUname(gStringVar1, data->field_0->arr[data->leaderId]);
|
||||
CreateTask_sub_80FBE80(data->field_0->arr[data->leaderId].gname_uname.uname, ReadAsU16(data->field_0->arr[data->leaderId].gname_uname.gname.unk_00.playerTrainerId));
|
||||
CreateTask_RfuReconnectWithParent(data->field_0->arr[data->leaderId].gname_uname.uname, ReadAsU16(data->field_0->arr[data->leaderId].gname_uname.gname.unk_00.playerTrainerId));
|
||||
PlaySE(SE_PN_ON);
|
||||
data->state = 4;
|
||||
}
|
||||
@@ -2413,7 +2413,7 @@ static void Task_CardOrNewsWithFriend(u8 taskId)
|
||||
break;
|
||||
case 11:
|
||||
data->state++;
|
||||
sub_800AB9C();
|
||||
PrepareSendLinkCmd2FFE_or_RfuCmd6600();
|
||||
break;
|
||||
case 12:
|
||||
if (IsLinkTaskFinished())
|
||||
@@ -2447,7 +2447,7 @@ static void Task_CardOrNewsOverWireless(u8 taskId)
|
||||
{
|
||||
case 0:
|
||||
SetHostRFUtgtGname(0, 0, 0);
|
||||
sub_800B1F4();
|
||||
SetWirelessCommType1();
|
||||
OpenLink();
|
||||
InitializeRfuLinkManager_JoinGroup();
|
||||
data->field_4 = AllocZeroed(4 * sizeof(struct UnkStruct_x1C));
|
||||
@@ -2503,7 +2503,7 @@ static void Task_CardOrNewsOverWireless(u8 taskId)
|
||||
data->refreshTimer = 0;
|
||||
LoadWirelessStatusIndicatorSpriteGfx();
|
||||
CreateWirelessStatusIndicatorSprite(0, 0);
|
||||
CreateTask_sub_80FBE80(data->field_0->arr[0].gname_uname.uname, ReadAsU16(data->field_0->arr[0].gname_uname.gname.unk_00.playerTrainerId));
|
||||
CreateTask_RfuReconnectWithParent(data->field_0->arr[0].gname_uname.uname, ReadAsU16(data->field_0->arr[0].gname_uname.gname.unk_00.playerTrainerId));
|
||||
PlaySE(SE_PN_ON);
|
||||
data->state = 4;
|
||||
}
|
||||
@@ -2592,7 +2592,7 @@ static void Task_CardOrNewsOverWireless(u8 taskId)
|
||||
break;
|
||||
case 13:
|
||||
data->state++;
|
||||
sub_800AB9C();
|
||||
PrepareSendLinkCmd2FFE_or_RfuCmd6600();
|
||||
break;
|
||||
case 14:
|
||||
if (IsLinkTaskFinished())
|
||||
@@ -2606,7 +2606,7 @@ void UnionRoomSpecial(void)
|
||||
struct UnkStruct_URoom * dataPtr;
|
||||
|
||||
ClearAndInitHostRFUtgtGname();
|
||||
CreateTask(Task_ResumeUnionRoom, 10);
|
||||
CreateTask(Task_RunUnionRoom, 10);
|
||||
|
||||
// dumb line needed to match
|
||||
sUnionRoomMain.uRoom = sUnionRoomMain.uRoom;
|
||||
@@ -2658,7 +2658,7 @@ static void RestoreURoomField0FromDecompressionBuffer(struct UnkStruct_URoom * d
|
||||
memcpy(data->field_0, &gDecompressionBuffer[0x3F00], 8 * sizeof(struct UnkStruct_x20));
|
||||
}
|
||||
|
||||
static void Task_ResumeUnionRoom(u8 taskId)
|
||||
static void Task_RunUnionRoom(u8 taskId)
|
||||
{
|
||||
u32 id = 0;
|
||||
s32 var5 = 0;
|
||||
@@ -2675,7 +2675,7 @@ static void Task_ResumeUnionRoom(u8 taskId)
|
||||
data->field_8 = AllocZeroed(sizeof(struct UnkStruct_x20));
|
||||
BlankUnkStruct_x20Array(data->field_0->arr, 8);
|
||||
sPlayerCurrActivity = IN_UNION_ROOM;
|
||||
data->field_20 = CreateTask_SearchForChildOrParent(data->field_C, data->field_4, 9);
|
||||
data->field_20 = CreateTask_SearchForChildOrParent(data->field_C, data->field_4, LINK_GROUP_UNION_ROOM_RESUME);
|
||||
ZeroUnionObjWork(data->unionObjs);
|
||||
MakeGroupAssemblyAreasPassable();
|
||||
data->state = 1;
|
||||
@@ -2688,9 +2688,9 @@ static void Task_ResumeUnionRoom(u8 taskId)
|
||||
case 2:
|
||||
SetHostRFUtgtGname(IN_UNION_ROOM, 0, 0);
|
||||
RfuUpdatePlayerGnameStateAndSend(sUnionRoomTrade.type, sUnionRoomTrade.playerSpecies, sUnionRoomTrade.playerLevel);
|
||||
sub_800B1F4();
|
||||
SetWirelessCommType1();
|
||||
OpenLink();
|
||||
sub_80FBC00();
|
||||
InitializeRfuLinkManager_EnterUnionRoom();
|
||||
BlankUnkStruct_x20Array(&data->field_8->arr[0], 1);
|
||||
BlankUnkStruct_x1CArray(data->field_4->arr, 4);
|
||||
BlankUnkStruct_x1CArray(data->field_C->arr, 4);
|
||||
@@ -2845,7 +2845,7 @@ static void Task_ResumeUnionRoom(u8 taskId)
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
if (sub_80FBB0C() == TRUE)
|
||||
if (IsUnionRoomListenTaskActive() == TRUE)
|
||||
UnionRoom_ScheduleFieldMessageAndExit(gUnknown_8457F90);
|
||||
else
|
||||
UnionRoom_ScheduleFieldMessageWithFollowupState(30, gUnknown_8457F90);
|
||||
@@ -2958,7 +2958,7 @@ static void Task_ResumeUnionRoom(u8 taskId)
|
||||
{
|
||||
if (sPlayerCurrActivity == ACTIVITY_CARD)
|
||||
{
|
||||
ViewURoomPartnerTrainerCard(gStringVar4, data, FALSE);
|
||||
ViewURoomPartnerTrainerCard(gStringVar4, data, MODE_CHILD);
|
||||
data->state = 40;
|
||||
}
|
||||
else
|
||||
@@ -2984,7 +2984,7 @@ static void Task_ResumeUnionRoom(u8 taskId)
|
||||
if (PrintOnTextbox(&data->textState, gStringVar4))
|
||||
{
|
||||
data->state = 41;
|
||||
sub_800AB9C();
|
||||
PrepareSendLinkCmd2FFE_or_RfuCmd6600();
|
||||
data->partnerYesNoResponse = 0;
|
||||
data->recvActivityRequest[0] = 0;
|
||||
}
|
||||
@@ -3042,7 +3042,7 @@ static void Task_ResumeUnionRoom(u8 taskId)
|
||||
case 2:
|
||||
playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0);
|
||||
UpdateGameDataWithActivitySpriteGendersFlag(ACTIVITY_PLYRTALK | IN_UNION_ROOM, 0, TRUE);
|
||||
if (sub_80FBB0C() == TRUE)
|
||||
if (IsUnionRoomListenTaskActive() == TRUE)
|
||||
UnionRoom_ScheduleFieldMessageAndExit(gUnknown_84585E8[playerGender]);
|
||||
else
|
||||
UnionRoom_ScheduleFieldMessageWithFollowupState(30, gUnknown_84585E8[playerGender]);
|
||||
@@ -3058,7 +3058,7 @@ static void Task_ResumeUnionRoom(u8 taskId)
|
||||
{
|
||||
playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0);
|
||||
UpdateGameDataWithActivitySpriteGendersFlag(ACTIVITY_PLYRTALK | IN_UNION_ROOM, 0, TRUE);
|
||||
if (sub_80FBB0C() == TRUE)
|
||||
if (IsUnionRoomListenTaskActive() == TRUE)
|
||||
UnionRoom_ScheduleFieldMessageAndExit(gUnknown_84585E8[playerGender]);
|
||||
else
|
||||
UnionRoom_ScheduleFieldMessageWithFollowupState(30, gUnknown_84585E8[playerGender]);
|
||||
@@ -3143,7 +3143,7 @@ static void Task_ResumeUnionRoom(u8 taskId)
|
||||
else if (sPlayerCurrActivity == (ACTIVITY_CARD | IN_UNION_ROOM))
|
||||
{
|
||||
RfuPrepareSend0x2f00(data->playerSendBuffer);
|
||||
ViewURoomPartnerTrainerCard(gStringVar4, data, 1);
|
||||
ViewURoomPartnerTrainerCard(gStringVar4, data, MODE_PARENT);
|
||||
data->state = 40;
|
||||
}
|
||||
else
|
||||
@@ -3185,7 +3185,7 @@ static void Task_ResumeUnionRoom(u8 taskId)
|
||||
UnionRoom_ScheduleFieldMessageWithFollowupState(14, gStringVar4);
|
||||
break;
|
||||
case 14:
|
||||
sub_800AB9C();
|
||||
PrepareSendLinkCmd2FFE_or_RfuCmd6600();
|
||||
data->state = 15;
|
||||
break;
|
||||
case 15:
|
||||
@@ -3416,37 +3416,37 @@ void var_800D_set_xB(void)
|
||||
gSpecialVar_Result = 11;
|
||||
}
|
||||
|
||||
static void ReceiveUnionRoomActivityPacket(struct UnkStruct_URoom * arg0)
|
||||
static void ReceiveUnionRoomActivityPacket(struct UnkStruct_URoom * uroom)
|
||||
{
|
||||
if (gRecvCmds[1][1] != 0 && (gRecvCmds[1][0] & 0xFF00) == RFU_COMMAND_0x2f00)
|
||||
{
|
||||
arg0->recvActivityRequest[0] = gRecvCmds[1][1];
|
||||
uroom->recvActivityRequest[0] = gRecvCmds[1][1];
|
||||
if (gRecvCmds[1][1] == (ACTIVITY_TRADE | IN_UNION_ROOM))
|
||||
{
|
||||
arg0->recvActivityRequest[1] = gRecvCmds[1][2];
|
||||
arg0->recvActivityRequest[2] = gRecvCmds[1][3];
|
||||
uroom->recvActivityRequest[1] = gRecvCmds[1][2];
|
||||
uroom->recvActivityRequest[2] = gRecvCmds[1][3];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static bool32 UnionRoom_HandleContactFromOtherPlayer(struct UnkStruct_URoom * arg0)
|
||||
static bool32 UnionRoom_HandleContactFromOtherPlayer(struct UnkStruct_URoom * uroom)
|
||||
{
|
||||
if (arg0->recvActivityRequest[0] != 0)
|
||||
if (uroom->recvActivityRequest[0] != 0)
|
||||
{
|
||||
s32 var = GetChatLeaderActionRequestMessage(gStringVar4, gLinkPlayers[1].gender, &arg0->recvActivityRequest[0], arg0);
|
||||
s32 var = GetChatLeaderActionRequestMessage(gStringVar4, gLinkPlayers[1].gender, &uroom->recvActivityRequest[0], uroom);
|
||||
if (var == 0)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
else if (var == 1)
|
||||
{
|
||||
arg0->state = 35;
|
||||
sPlayerCurrActivity = arg0->recvActivityRequest[0];
|
||||
uroom->state = 35;
|
||||
sPlayerCurrActivity = uroom->recvActivityRequest[0];
|
||||
return FALSE;
|
||||
}
|
||||
else if (var == 2)
|
||||
{
|
||||
arg0->state = 36;
|
||||
uroom->state = 36;
|
||||
Link_TryStartSend5FFF();
|
||||
return FALSE;
|
||||
}
|
||||
@@ -3486,9 +3486,9 @@ static void Task_InitUnionRoom(u8 taskId)
|
||||
break;
|
||||
case 1:
|
||||
SetHostRFUtgtGname(ACTIVITY_SEARCH, 0, 0);
|
||||
sub_800B1F4();
|
||||
SetWirelessCommType1();
|
||||
OpenLink();
|
||||
sub_80FBC00();
|
||||
InitializeRfuLinkManager_EnterUnionRoom();
|
||||
sub_80FB128(TRUE);
|
||||
structPtr->state = 2;
|
||||
break;
|
||||
@@ -3501,7 +3501,7 @@ static void Task_InitUnionRoom(u8 taskId)
|
||||
BlankUnkStruct_x20Array(structPtr->field_0->arr, 8);
|
||||
structPtr->field_8 = AllocZeroed(sizeof(struct UnkStruct_x20));
|
||||
BlankUnkStruct_x20Array(&structPtr->field_8->arr[0], 1);
|
||||
structPtr->field_20 = CreateTask_SearchForChildOrParent(structPtr->field_C, structPtr->field_4, 10);
|
||||
structPtr->field_20 = CreateTask_SearchForChildOrParent(structPtr->field_C, structPtr->field_4, LINK_GROUP_UNION_ROOM_INIT);
|
||||
structPtr->state = 3;
|
||||
break;
|
||||
case 3:
|
||||
@@ -3645,48 +3645,48 @@ static u8 HandlePlayerListUpdate(void)
|
||||
static void Task_SearchForChildOrParent(u8 taskId)
|
||||
{
|
||||
s32 i, j;
|
||||
struct UnionGnameUnamePair sp0;
|
||||
struct UnionGnameUnamePair gname_uname;
|
||||
struct UnkStruct_Main4 ** ptr = (void*) gTasks[taskId].data;
|
||||
bool8 parent_child;
|
||||
|
||||
for (i = 0; i < RFU_CHILD_MAX; i++)
|
||||
{
|
||||
parent_child = LinkRfu_GetNameIfCompatible(&sp0.gname, sp0.uname, i);
|
||||
if (!IsPartnerActivityAcceptable(sp0.gname.activity, gTasks[taskId].data[4]))
|
||||
parent_child = LinkRfu_GetNameIfCompatible(&gname_uname.gname, gname_uname.uname, i);
|
||||
if (!IsPartnerActivityAcceptable(gname_uname.gname.activity, gTasks[taskId].data[4]))
|
||||
{
|
||||
sp0 = sUnionGnameUnamePair_Dummy;
|
||||
gname_uname = sUnionGnameUnamePair_Dummy;
|
||||
}
|
||||
if (sp0.gname.unk_00.language == LANGUAGE_JAPANESE)
|
||||
if (gname_uname.gname.unk_00.language == LANGUAGE_JAPANESE)
|
||||
{
|
||||
sp0 = sUnionGnameUnamePair_Dummy;
|
||||
gname_uname = sUnionGnameUnamePair_Dummy;
|
||||
}
|
||||
if (!parent_child)
|
||||
if (parent_child == MODE_CHILD)
|
||||
{
|
||||
for (j = 0; j < i; j++)
|
||||
{
|
||||
if (!AreGnameUnameDifferent(&ptr[1]->arr[j].gname_uname, &sp0))
|
||||
if (!AreGnameUnameDifferent(&ptr[1]->arr[j].gname_uname, &gname_uname))
|
||||
{
|
||||
sp0 = sUnionGnameUnamePair_Dummy;
|
||||
gname_uname = sUnionGnameUnamePair_Dummy;
|
||||
}
|
||||
}
|
||||
ptr[1]->arr[i].gname_uname = sp0;
|
||||
ptr[1]->arr[i].gname_uname = gname_uname;
|
||||
ptr[1]->arr[i].active = AreGnameUnameDifferent(&ptr[1]->arr[i].gname_uname, &sUnionGnameUnamePair_Dummy);
|
||||
}
|
||||
else
|
||||
{
|
||||
ptr[0]->arr[i].gname_uname = sp0;
|
||||
ptr[0]->arr[i].gname_uname = gname_uname;
|
||||
ptr[0]->arr[i].active = AreGnameUnameDifferent(&ptr[0]->arr[i].gname_uname, &sUnionGnameUnamePair_Dummy);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static u8 CreateTask_SearchForChildOrParent(struct UnkStruct_Main4 * a0, struct UnkStruct_Main4 * a1, u32 a2)
|
||||
static u8 CreateTask_SearchForChildOrParent(struct UnkStruct_Main4 * main4_parent, struct UnkStruct_Main4 * main4_child, u32 linkGroup)
|
||||
{
|
||||
u8 taskId = CreateTask(Task_SearchForChildOrParent, 0);
|
||||
struct UnkStruct_Main4 ** data = (void *)gTasks[taskId].data;
|
||||
data[0] = a0;
|
||||
data[1] = a1;
|
||||
gTasks[taskId].data[4] = a2;
|
||||
data[0] = main4_parent;
|
||||
data[1] = main4_child;
|
||||
gTasks[taskId].data[4] = linkGroup;
|
||||
return taskId;
|
||||
}
|
||||
|
||||
@@ -4044,38 +4044,38 @@ static void UR_AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str
|
||||
AddTextPrinter(&printerTemplate, 0xFF, NULL);
|
||||
}
|
||||
|
||||
static void BlankUnkStruct_x20Array(struct UnkStruct_x20 * arg0, u8 count)
|
||||
static void BlankUnkStruct_x20Array(struct UnkStruct_x20 * x20arr, u8 count)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
arg0[i].gname_uname = sUnionGnameUnamePair_Dummy;
|
||||
arg0[i].field_18 = 0xFF;
|
||||
arg0[i].groupScheduledAnim = UNION_ROOM_SPAWN_NONE;
|
||||
arg0[i].field_1A_1 = FALSE;
|
||||
arg0[i].field_1B = 0;
|
||||
x20arr[i].gname_uname = sUnionGnameUnamePair_Dummy;
|
||||
x20arr[i].field_18 = 0xFF;
|
||||
x20arr[i].groupScheduledAnim = UNION_ROOM_SPAWN_NONE;
|
||||
x20arr[i].field_1A_1 = FALSE;
|
||||
x20arr[i].field_1B = 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void BlankUnkStruct_x1CArray(struct UnkStruct_x1C * arg0, u8 count)
|
||||
static void BlankUnkStruct_x1CArray(struct UnkStruct_x1C * x1Carr, u8 count)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < RFU_CHILD_MAX; i++)
|
||||
{
|
||||
arg0[i].gname_uname = sUnionGnameUnamePair_Dummy;
|
||||
arg0[i].active = FALSE;
|
||||
x1Carr[i].gname_uname = sUnionGnameUnamePair_Dummy;
|
||||
x1Carr[i].active = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
static bool8 AreGnameUnameDifferent(struct UnionGnameUnamePair * arg0, const struct UnionGnameUnamePair * arg1)
|
||||
static bool8 AreGnameUnameDifferent(struct UnionGnameUnamePair * left, const struct UnionGnameUnamePair * right)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
if (arg0->gname.unk_00.playerTrainerId[i] != arg1->gname.unk_00.playerTrainerId[i])
|
||||
if (left->gname.unk_00.playerTrainerId[i] != right->gname.unk_00.playerTrainerId[i])
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
@@ -4083,7 +4083,7 @@ static bool8 AreGnameUnameDifferent(struct UnionGnameUnamePair * arg0, const str
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
if (arg0->uname[i] != arg1->uname[i])
|
||||
if (left->uname[i] != right->uname[i])
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
@@ -4092,34 +4092,34 @@ static bool8 AreGnameUnameDifferent(struct UnionGnameUnamePair * arg0, const str
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool32 AreUnionRoomPlayerGnamesDifferent(struct UnionGnameUnamePair * arg0, struct UnionGnameUnamePair * arg1)
|
||||
static bool32 AreUnionRoomPlayerGnamesDifferent(struct UnionGnameUnamePair * left, struct UnionGnameUnamePair * right)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
if (arg0->gname.activity != arg1->gname.activity)
|
||||
if (left->gname.activity != right->gname.activity)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (arg0->gname.started != arg1->gname.started)
|
||||
if (left->gname.started != right->gname.started)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
for (i = 0; i < RFU_CHILD_MAX; i++)
|
||||
{
|
||||
if (arg0->gname.child_sprite_gender[i] != arg1->gname.child_sprite_gender[i])
|
||||
if (left->gname.child_sprite_gender[i] != right->gname.child_sprite_gender[i])
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if (arg0->gname.species != arg1->gname.species)
|
||||
if (left->gname.species != right->gname.species)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (arg0->gname.type != arg1->gname.type)
|
||||
if (left->gname.type != right->gname.type)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
@@ -4127,17 +4127,17 @@ static bool32 AreUnionRoomPlayerGnamesDifferent(struct UnionGnameUnamePair * arg
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static u32 Findx20Inx1CArray(struct UnkStruct_x20 * arg0, struct UnkStruct_x1C * arg1)
|
||||
static u32 Findx20Inx1CArray(struct UnkStruct_x20 * x20, struct UnkStruct_x1C * x1Carr)
|
||||
{
|
||||
u8 result = 0xFF;
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < RFU_CHILD_MAX; i++)
|
||||
{
|
||||
if (arg1[i].active && !AreGnameUnameDifferent(&arg0->gname_uname, &arg1[i].gname_uname))
|
||||
if (x1Carr[i].active && !AreGnameUnameDifferent(&x20->gname_uname, &x1Carr[i].gname_uname))
|
||||
{
|
||||
result = i;
|
||||
arg1[i].active = FALSE;
|
||||
x1Carr[i].active = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4243,40 +4243,40 @@ static u32 GetResponseIdx_InviteToURoomActivity(s32 activity)
|
||||
}
|
||||
}
|
||||
|
||||
static u32 ConvPartnerUnameAndGetWhetherMetAlready(struct UnkStruct_x20 * arg0)
|
||||
static u32 ConvPartnerUnameAndGetWhetherMetAlready(struct UnkStruct_x20 * x20)
|
||||
{
|
||||
u8 sp0[30];
|
||||
IntlConvPartnerUname(sp0, *arg0);
|
||||
return PlayerHasMetTrainerBefore(ReadAsU16(arg0->gname_uname.gname.unk_00.playerTrainerId), sp0);
|
||||
IntlConvPartnerUname(sp0, *x20);
|
||||
return PlayerHasMetTrainerBefore(ReadAsU16(x20->gname_uname.gname.unk_00.playerTrainerId), sp0);
|
||||
}
|
||||
|
||||
static s32 UnionRoomGetPlayerInteractionResponse(struct UnkStruct_Main0 * arg0, u8 arg1, u8 arg2, u32 playerGender)
|
||||
static s32 UnionRoomGetPlayerInteractionResponse(struct UnkStruct_Main0 * main0, u8 overrideGender, u8 playerIdx, u32 playerGender)
|
||||
{
|
||||
bool32 r2;
|
||||
bool32 metBefore;
|
||||
|
||||
struct UnkStruct_x20 * x20 = &arg0->arr[arg2];
|
||||
struct UnkStruct_x20 * x20 = &main0->arr[playerIdx];
|
||||
|
||||
if (!x20->gname_uname.gname.started && arg1 == 0)
|
||||
if (!x20->gname_uname.gname.started && overrideGender == 0)
|
||||
{
|
||||
IntlConvPartnerUname(gStringVar1, *x20);
|
||||
r2 = PlayerHasMetTrainerBefore(ReadAsU16(x20->gname_uname.gname.unk_00.playerTrainerId), gStringVar1);
|
||||
metBefore = PlayerHasMetTrainerBefore(ReadAsU16(x20->gname_uname.gname.unk_00.playerTrainerId), gStringVar1);
|
||||
if (x20->gname_uname.gname.activity == (ACTIVITY_CHAT | IN_UNION_ROOM))
|
||||
{
|
||||
StringExpandPlaceholders(gStringVar4, gUnknown_8457F80[r2][playerGender]);
|
||||
StringExpandPlaceholders(gStringVar4, gUnknown_8457F80[metBefore][playerGender]);
|
||||
return 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
UR_PrintFieldMessage(gURText_PleaseWaitMsgs[r2]);
|
||||
UR_PrintFieldMessage(gURText_PleaseWaitMsgs[metBefore]);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
IntlConvPartnerUname(gStringVar1, *x20);
|
||||
if (arg1 != 0)
|
||||
if (overrideGender != 0)
|
||||
{
|
||||
playerGender = (x20->gname_uname.gname.unk_00.playerTrainerId[arg1 + 1] >> 3) & 1;
|
||||
playerGender = (x20->gname_uname.gname.unk_00.playerTrainerId[overrideGender + 1] >> 3) & 1;
|
||||
}
|
||||
switch (x20->gname_uname.gname.activity & 0x3F)
|
||||
{
|
||||
@@ -4365,18 +4365,18 @@ static void TradeBoardListMenuItemPrintFunc(u8 windowId, s32 itemId, u8 y)
|
||||
}
|
||||
}
|
||||
|
||||
static s32 GetIndexOfNthTradeBoardOffer(struct UnkStruct_x20 * arg, s32 arg1)
|
||||
static s32 GetIndexOfNthTradeBoardOffer(struct UnkStruct_x20 * x20, s32 n)
|
||||
{
|
||||
s32 i;
|
||||
s32 j = 0;
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
if (arg[i].groupScheduledAnim == UNION_ROOM_SPAWN_IN && arg[i].gname_uname.gname.species != SPECIES_NONE)
|
||||
if (x20[i].groupScheduledAnim == UNION_ROOM_SPAWN_IN && x20[i].gname_uname.gname.species != SPECIES_NONE)
|
||||
{
|
||||
j++;
|
||||
}
|
||||
if (j == arg1 + 1)
|
||||
if (j == n + 1)
|
||||
{
|
||||
return i;
|
||||
}
|
||||
@@ -4385,9 +4385,9 @@ static s32 GetIndexOfNthTradeBoardOffer(struct UnkStruct_x20 * arg, s32 arg1)
|
||||
return -1;
|
||||
}
|
||||
|
||||
static s32 GetUnionRoomPlayerGender(s32 arg1, struct UnkStruct_Main0 * arg0)
|
||||
static s32 GetUnionRoomPlayerGender(s32 playerIdx, struct UnkStruct_Main0 * main0)
|
||||
{
|
||||
return arg0->arr[arg1].gname_uname.gname.playerGender;
|
||||
return main0->arr[playerIdx].gname_uname.gname.playerGender;
|
||||
}
|
||||
|
||||
static s32 IsRequestedTypeAndSpeciesInPlayerParty(u32 type, u32 species)
|
||||
@@ -4515,18 +4515,18 @@ static s32 GetChatLeaderActionRequestMessage(u8 *dst, u32 gender, u16 *activity_
|
||||
return result;
|
||||
}
|
||||
|
||||
static bool32 PollPartnerYesNoResponse(struct UnkStruct_URoom * arg0)
|
||||
static bool32 PollPartnerYesNoResponse(struct UnkStruct_URoom * uroom)
|
||||
{
|
||||
if (gRecvCmds[0][1] != 0)
|
||||
{
|
||||
if (gRecvCmds[0][1] == (ACTIVITY_ACCEPT | IN_UNION_ROOM))
|
||||
{
|
||||
arg0->partnerYesNoResponse = ACTIVITY_ACCEPT | IN_UNION_ROOM;
|
||||
uroom->partnerYesNoResponse = ACTIVITY_ACCEPT | IN_UNION_ROOM;
|
||||
return TRUE;
|
||||
}
|
||||
else if (gRecvCmds[0][1] == (ACTIVITY_DECLINE | IN_UNION_ROOM))
|
||||
{
|
||||
arg0->partnerYesNoResponse = ACTIVITY_DECLINE | IN_UNION_ROOM;
|
||||
uroom->partnerYesNoResponse = ACTIVITY_DECLINE | IN_UNION_ROOM;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
@@ -4560,16 +4560,16 @@ static bool32 HasAtLeastTwoMonsOfLevel30OrLower(void)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void ResetUnionRoomTrade(struct UnionRoomTrade * arg0)
|
||||
static void ResetUnionRoomTrade(struct UnionRoomTrade * uroomTrade)
|
||||
{
|
||||
arg0->field_0 = 0;
|
||||
arg0->type = 0;
|
||||
arg0->playerPersonality = 0;
|
||||
arg0->playerSpecies = 0;
|
||||
arg0->playerLevel = 0;
|
||||
arg0->species = 0;
|
||||
arg0->level = 0;
|
||||
arg0->personality = 0;
|
||||
uroomTrade->field_0 = 0;
|
||||
uroomTrade->type = 0;
|
||||
uroomTrade->playerPersonality = 0;
|
||||
uroomTrade->playerSpecies = 0;
|
||||
uroomTrade->playerLevel = 0;
|
||||
uroomTrade->species = 0;
|
||||
uroomTrade->level = 0;
|
||||
uroomTrade->personality = 0;
|
||||
}
|
||||
|
||||
void Script_ResetUnionRoomTrade(void)
|
||||
@@ -4663,17 +4663,17 @@ static u8 GetSinglePartnerSpriteGenderParam(s32 linkPlayer)
|
||||
return retval;
|
||||
}
|
||||
|
||||
static u8 GetActivePartnerSpriteGenderParam(struct UnkStruct_URoom * arg0)
|
||||
static u8 GetActivePartnerSpriteGenderParam(struct UnkStruct_URoom * uroom)
|
||||
{
|
||||
u8 retVal = 0x80;
|
||||
u8 i;
|
||||
|
||||
for (i = 0; i < RFU_CHILD_MAX; i++)
|
||||
{
|
||||
if (arg0->field_C->arr[i].active)
|
||||
if (uroom->field_C->arr[i].active)
|
||||
{
|
||||
retVal |= arg0->field_C->arr[i].gname_uname.gname.playerGender << 3;
|
||||
retVal |= arg0->field_C->arr[i].gname_uname.gname.unk_00.playerTrainerId[0] & 7;
|
||||
retVal |= uroom->field_C->arr[i].gname_uname.gname.playerGender << 3;
|
||||
retVal |= uroom->field_C->arr[i].gname_uname.gname.unk_00.playerTrainerId[0] & 7;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -4681,7 +4681,7 @@ static u8 GetActivePartnerSpriteGenderParam(struct UnkStruct_URoom * arg0)
|
||||
return retVal;
|
||||
}
|
||||
|
||||
static void ViewURoomPartnerTrainerCard(u8 *unused, struct UnkStruct_URoom * arg1, bool8 arg2)
|
||||
static void ViewURoomPartnerTrainerCard(u8 *unused, struct UnkStruct_URoom * uroom, bool8 parent_child)
|
||||
{
|
||||
struct TrainerCard * trainerCard = &gTrainerCards[GetMultiplayerId() ^ 1];
|
||||
s32 i;
|
||||
@@ -4689,61 +4689,61 @@ static void ViewURoomPartnerTrainerCard(u8 *unused, struct UnkStruct_URoom * arg
|
||||
|
||||
DynamicPlaceholderTextUtil_Reset();
|
||||
|
||||
StringCopy(arg1->trainerCardStrbufs[0], gTrainerClassNames[sub_80447F0()]);
|
||||
DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, arg1->trainerCardStrbufs[0]);
|
||||
StringCopy(uroom->trainerCardStrbufs[0], gTrainerClassNames[sub_80447F0()]);
|
||||
DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, uroom->trainerCardStrbufs[0]);
|
||||
|
||||
DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, trainerCard->playerName);
|
||||
|
||||
StringCopy(arg1->field_174, gUnknown_84594B0[trainerCard->stars]);
|
||||
DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, arg1->field_174);
|
||||
StringCopy(uroom->field_174, gUnknown_84594B0[trainerCard->stars]);
|
||||
DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, uroom->field_174);
|
||||
|
||||
ConvertIntToDecimalStringN(arg1->trainerCardStrbufs[2], trainerCard->caughtMonsCount, STR_CONV_MODE_LEFT_ALIGN, 3);
|
||||
DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, arg1->trainerCardStrbufs[2]);
|
||||
ConvertIntToDecimalStringN(uroom->trainerCardStrbufs[2], trainerCard->caughtMonsCount, STR_CONV_MODE_LEFT_ALIGN, 3);
|
||||
DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, uroom->trainerCardStrbufs[2]);
|
||||
|
||||
ConvertIntToDecimalStringN(arg1->trainerCardStrbufs[3], trainerCard->playTimeHours, STR_CONV_MODE_LEFT_ALIGN, 3);
|
||||
ConvertIntToDecimalStringN(arg1->trainerCardStrbufs[4], trainerCard->playTimeMinutes, STR_CONV_MODE_LEADING_ZEROS, 2);
|
||||
DynamicPlaceholderTextUtil_SetPlaceholderPtr(4, arg1->trainerCardStrbufs[3]);
|
||||
DynamicPlaceholderTextUtil_SetPlaceholderPtr(5, arg1->trainerCardStrbufs[4]);
|
||||
ConvertIntToDecimalStringN(uroom->trainerCardStrbufs[3], trainerCard->playTimeHours, STR_CONV_MODE_LEFT_ALIGN, 3);
|
||||
ConvertIntToDecimalStringN(uroom->trainerCardStrbufs[4], trainerCard->playTimeMinutes, STR_CONV_MODE_LEADING_ZEROS, 2);
|
||||
DynamicPlaceholderTextUtil_SetPlaceholderPtr(4, uroom->trainerCardStrbufs[3]);
|
||||
DynamicPlaceholderTextUtil_SetPlaceholderPtr(5, uroom->trainerCardStrbufs[4]);
|
||||
|
||||
DynamicPlaceholderTextUtil_ExpandPlaceholders(arg1->field_1A4, gUnknown_84594C4);
|
||||
StringCopy(gStringVar4, arg1->field_1A4);
|
||||
DynamicPlaceholderTextUtil_ExpandPlaceholders(uroom->field_1A4, gUnknown_84594C4);
|
||||
StringCopy(gStringVar4, uroom->field_1A4);
|
||||
|
||||
n = trainerCard->linkBattleWins;
|
||||
if (n > 9999)
|
||||
{
|
||||
n = 9999;
|
||||
}
|
||||
ConvertIntToDecimalStringN(arg1->trainerCardStrbufs[0], n, STR_CONV_MODE_LEFT_ALIGN, 4);
|
||||
DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, arg1->trainerCardStrbufs[0]);
|
||||
ConvertIntToDecimalStringN(uroom->trainerCardStrbufs[0], n, STR_CONV_MODE_LEFT_ALIGN, 4);
|
||||
DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, uroom->trainerCardStrbufs[0]);
|
||||
|
||||
n = trainerCard->linkBattleLosses;
|
||||
if (n > 9999)
|
||||
{
|
||||
n = 9999;
|
||||
}
|
||||
ConvertIntToDecimalStringN(arg1->trainerCardStrbufs[1], n, STR_CONV_MODE_LEFT_ALIGN, 4);
|
||||
DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, arg1->trainerCardStrbufs[1]);
|
||||
ConvertIntToDecimalStringN(uroom->trainerCardStrbufs[1], n, STR_CONV_MODE_LEFT_ALIGN, 4);
|
||||
DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, uroom->trainerCardStrbufs[1]);
|
||||
|
||||
ConvertIntToDecimalStringN(arg1->trainerCardStrbufs[2], trainerCard->pokemonTrades, STR_CONV_MODE_LEFT_ALIGN, 5);
|
||||
DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, arg1->trainerCardStrbufs[2]);
|
||||
ConvertIntToDecimalStringN(uroom->trainerCardStrbufs[2], trainerCard->pokemonTrades, STR_CONV_MODE_LEFT_ALIGN, 5);
|
||||
DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, uroom->trainerCardStrbufs[2]);
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
CopyEasyChatWord(arg1->trainerCardStrbufs[i + 3], trainerCard->var_28[i]);
|
||||
DynamicPlaceholderTextUtil_SetPlaceholderPtr(i + 4, arg1->trainerCardStrbufs[i + 3]);
|
||||
CopyEasyChatWord(uroom->trainerCardStrbufs[i + 3], trainerCard->var_28[i]);
|
||||
DynamicPlaceholderTextUtil_SetPlaceholderPtr(i + 4, uroom->trainerCardStrbufs[i + 3]);
|
||||
}
|
||||
|
||||
DynamicPlaceholderTextUtil_ExpandPlaceholders(arg1->field_1A4, gUnknown_8459504);
|
||||
StringAppend(gStringVar4, arg1->field_1A4);
|
||||
DynamicPlaceholderTextUtil_ExpandPlaceholders(uroom->field_1A4, gUnknown_8459504);
|
||||
StringAppend(gStringVar4, uroom->field_1A4);
|
||||
|
||||
if (arg2 == TRUE)
|
||||
if (parent_child == MODE_PARENT)
|
||||
{
|
||||
DynamicPlaceholderTextUtil_ExpandPlaceholders(arg1->field_1A4, gUnknown_8459588);
|
||||
StringAppend(gStringVar4, arg1->field_1A4);
|
||||
DynamicPlaceholderTextUtil_ExpandPlaceholders(uroom->field_1A4, gUnknown_8459588);
|
||||
StringAppend(gStringVar4, uroom->field_1A4);
|
||||
}
|
||||
else if (arg2 == FALSE)
|
||||
else if (parent_child == MODE_CHILD)
|
||||
{
|
||||
DynamicPlaceholderTextUtil_ExpandPlaceholders(arg1->field_1A4, gUnknown_8459580[trainerCard->gender]);
|
||||
StringAppend(gStringVar4, arg1->field_1A4);
|
||||
DynamicPlaceholderTextUtil_ExpandPlaceholders(uroom->field_1A4, gUnknown_8459580[trainerCard->gender]);
|
||||
StringAppend(gStringVar4, uroom->field_1A4);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -183,7 +183,7 @@ void CB2_UnionRoomBattle(void)
|
||||
case 50:
|
||||
if (!UpdatePaletteFade())
|
||||
{
|
||||
sub_800AB9C();
|
||||
PrepareSendLinkCmd2FFE_or_RfuCmd6600();
|
||||
gMain.state++;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -525,6 +525,7 @@ const u8 *const gUnknown_84594B0[] = {
|
||||
|
||||
ALIGNED(4) const u8 gUnknown_84594C4[] = _("This is {SPECIAL_F7 0x00} {SPECIAL_F7 0x01}'s\nTRAINER CARD…\l{SPECIAL_F7 0x02}\pPOKéDEX: {SPECIAL_F7 0x03}\nTIME: {SPECIAL_F7 0x04}:{SPECIAL_F7 0x05}\p");
|
||||
ALIGNED(4) const u8 gUnknown_8459504[] = _("BATTLES: {SPECIAL_F7 0x00} WINS {SPECIAL_F7 0x02} LOSSES\nTRADES: {SPECIAL_F7 0x03} TIMES\p“{SPECIAL_F7 0x04} {SPECIAL_F7 0x05}\n{SPECIAL_F7 0x06} {SPECIAL_F7 0x07}”\p");
|
||||
|
||||
ALIGNED(4) const u8 gUnknown_8459544[] = _("{SPECIAL_F7 0x01}: Glad to have met you!{PAUSE 60}");
|
||||
ALIGNED(4) const u8 gUnknown_8459564[] = _("{SPECIAL_F7 0x01}: Glad to meet you!{PAUSE 60}");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user