mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-26 03:34:15 +01:00
Document link_rfu_3.c
This commit is contained in:
parent
e6f5c4f264
commit
c98342c973
@ -24,12 +24,11 @@ struct GFtgtGnameSub
|
||||
u16 language:4;
|
||||
u16 hasNews:1;
|
||||
u16 hasCard:1;
|
||||
u16 unk_00_6:1;
|
||||
u16 unknown:1; // Never read
|
||||
u16 isChampion:1;
|
||||
u16 hasNationalDex:1;
|
||||
u16 gameClear:1;
|
||||
u16 version:4;
|
||||
u16 unk_01_6:2;
|
||||
u8 playerTrainerId[2];
|
||||
};
|
||||
|
||||
@ -92,39 +91,30 @@ struct RfuBlockSend
|
||||
|
||||
struct RfuRecvQueue
|
||||
{
|
||||
/* 0x000 */ u8 unk_00[32][70];
|
||||
/* 0x8c0 */ vu8 unk_8c0;
|
||||
/* 0x8c1 */ vu8 unk_8c1;
|
||||
/* 0x000 */ u8 slots[32][70];
|
||||
/* 0x8c0 */ vu8 recvSlot;
|
||||
/* 0x8c1 */ vu8 sendSlot;
|
||||
/* 0x8c2 */ vu8 count;
|
||||
/* 0x8c3 */ vu8 full;
|
||||
};
|
||||
|
||||
struct RfuSendQueue
|
||||
{
|
||||
/* 0x000 */ u8 unk_00[40][14];
|
||||
/* 0x230 */ vu8 unk_230;
|
||||
/* 0x231 */ vu8 unk_231;
|
||||
/* 0x000 */ u8 slots[40][14];
|
||||
/* 0x230 */ vu8 recvSlot;
|
||||
/* 0x231 */ vu8 sendSlot;
|
||||
/* 0x232 */ vu8 count;
|
||||
/* 0x233 */ vu8 full;
|
||||
};
|
||||
|
||||
struct UnkRfuStruct_2_Sub_c1c
|
||||
struct RfuBackupQueue
|
||||
{
|
||||
/* 0x00 */ u8 unk_00[2][14];
|
||||
/* 0x1c */ vu8 unk_1c;
|
||||
/* 0x1d */ vu8 unk_1d;
|
||||
/* 0x00 */ u8 slots[2][14];
|
||||
/* 0x1c */ vu8 recvSlot;
|
||||
/* 0x1d */ vu8 sendSlot;
|
||||
/* 0x1e */ vu8 count;
|
||||
};
|
||||
|
||||
struct UnkRfuStruct_Sub_Unused
|
||||
{
|
||||
/* 0x000 */ u8 unk_00[2][256];
|
||||
/* 0x200 */ vu8 unk_200;
|
||||
/* 0x201 */ vu8 unk_201;
|
||||
/* 0x202 */ vu8 unk_202;
|
||||
/* 0x203 */ vu8 unk_203;
|
||||
};
|
||||
|
||||
struct GFRfuManager
|
||||
{
|
||||
/* 0x000 */ void (*callback)(void);
|
||||
@ -141,8 +131,8 @@ struct GFRfuManager
|
||||
/* 0x04c */ u8 unk_4c[14];
|
||||
/* 0x05a */ u8 unk_5a;
|
||||
/* 0x05b */ u8 unk_5b;
|
||||
/* 0x05c */ bool8 unk_5c[MAX_RFU_PLAYERS];
|
||||
/* 0x061 */ bool8 unk_61[MAX_RFU_PLAYERS];
|
||||
/* 0x05c */ bool8 blockReceived[MAX_RFU_PLAYERS];
|
||||
/* 0x061 */ bool8 numBlocksReceived[MAX_RFU_PLAYERS];
|
||||
/* 0x066 */ u8 idleTaskId;
|
||||
/* 0x067 */ u8 searchTaskId;
|
||||
/* 0x068 */ u8 filler_68[4];
|
||||
@ -164,8 +154,8 @@ struct GFRfuManager
|
||||
u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
/* 0x124 */ struct RfuRecvQueue recvQueue;
|
||||
/* 0x9e8 */ struct RfuSendQueue sendQueue;
|
||||
/* 0xc1c */ struct UnkRfuStruct_2_Sub_c1c unk_c1c;
|
||||
/* 0xc3c */ vu8 unk_c3c;
|
||||
/* 0xc1c */ struct RfuBackupQueue backupQueue;
|
||||
/* 0xc3c */ vu8 linkRecovered;
|
||||
/* 0xc3d */ u8 unk_c3d;
|
||||
/* 0xc3e */ vu8 childSlot;
|
||||
/* 0xc3f */ u8 unk_c3f[70];
|
||||
@ -223,7 +213,7 @@ bool8 Rfu_IsMaster(void);
|
||||
void task_add_05_task_del_08FA224_when_no_RfuFunc(void);
|
||||
void sub_8010434(void);
|
||||
void ResetLinkRfuGFLayer(void);
|
||||
void sub_800E174(void);
|
||||
void UpdateWirelessStatusIndicatorSprite(void);
|
||||
void InitRFU(void);
|
||||
bool32 sub_8010EC0(void);
|
||||
bool32 sub_8010F1C(void);
|
||||
@ -250,7 +240,6 @@ u32 WaitSendByteToPartnerByIdAndName(u16 a0, const u8 *a1);
|
||||
void RequestDisconnectSlotByTrainerNameAndId(const u8 *a0, u16 a1);
|
||||
bool8 LmanAcceptSlotFlagIsNotZero(void);
|
||||
bool32 WaitRfuState(bool32 a0);
|
||||
void DestroyWirelessStatusIndicatorSprite(void);
|
||||
void sub_801103C(void);
|
||||
void InitializeRfuLinkManager_JoinGroup(void);
|
||||
void LinkRfuNIsend8(void);
|
||||
@ -282,36 +271,24 @@ bool32 sub_8011A9C(void);
|
||||
void sub_80104B0(void);
|
||||
void sub_8011A50(void);
|
||||
void sub_80110B8(u32 a0);
|
||||
bool8 sub_800DAC8(struct UnkRfuStruct_2_Sub_c1c *q1, u8 *q2);
|
||||
void sub_800ED34(u16 unused);
|
||||
bool32 RfuSerialNumberIsValid(u32 serialNo);
|
||||
bool8 sub_8012224(void);
|
||||
bool32 IsRfuSerialNumberValid(u32 serialNo);
|
||||
bool8 IsRfuRecoveringFromLinkLoss(void);
|
||||
void sub_8011BA4(void);
|
||||
void sub_800D6C8(struct RfuRecvQueue *ptr);
|
||||
void sub_800D724(struct RfuSendQueue *ptr);
|
||||
void sub_800D780(struct UnkRfuStruct_Sub_Unused *ptr);
|
||||
void sub_800D7D8(struct RfuRecvQueue *q1, u8 *q2);
|
||||
void sub_800D888(struct RfuSendQueue *q1, u8 *q2);
|
||||
bool8 sub_800D934(struct RfuRecvQueue *q1, u8 *q2);
|
||||
bool8 sub_800D9DC(struct RfuSendQueue *q1, u8 *q2);
|
||||
void sub_800DA68(struct UnkRfuStruct_2_Sub_c1c *q1, const u8 *q2);
|
||||
bool8 sub_800DAC8(struct UnkRfuStruct_2_Sub_c1c *q1, u8 *q2);
|
||||
void sub_800DB18(struct UnkRfuStruct_Sub_Unused *q1, u8 *q2);
|
||||
bool8 sub_800DB84(struct UnkRfuStruct_Sub_Unused *q1, u8 *q2);
|
||||
void RfuRecvQueue_Reset(struct RfuRecvQueue *queue);
|
||||
void RfuSendQueue_Reset(struct RfuSendQueue *queue);
|
||||
void RfuRecvQueue_Enqueue(struct RfuRecvQueue *queue, u8 *data);
|
||||
void RfuSendQueue_Enqueue(struct RfuSendQueue *queue, u8 *data);
|
||||
bool8 RfuRecvQueue_Dequeue(struct RfuRecvQueue *queue, u8 *dest);
|
||||
bool8 RfuSendQueue_Dequeue(struct RfuSendQueue *queue, u8 *dest);
|
||||
void RfuBackupQueue_Enqueue(struct RfuBackupQueue *queue, const u8 *q2);
|
||||
bool8 RfuBackupQueue_Dequeue(struct RfuBackupQueue *queue, u8 *q2);
|
||||
void sub_800DBF8(u8 *q1, u8 mode);
|
||||
void PkmnStrToASCII(u8 *q1, const u8 *q2);
|
||||
void ASCIIToPkmnStr(u8 *q1, const u8 *q2);
|
||||
u8 sub_800DD1C(u8 maxFlags);
|
||||
void sub_800DD94(struct GFtgtGname *data, u8 r9, bool32 r2, s32 r3);
|
||||
void InitHostRFUtgtGname(struct GFtgtGname *data, u8 r9, bool32 r2, s32 r3);
|
||||
void CreateWirelessStatusIndicatorSprite(u8 x, u8 y);
|
||||
void DestroyWirelessStatusIndicatorSprite(void);
|
||||
void LoadWirelessStatusIndicatorSpriteGfx(void);
|
||||
u8 sub_800E124(void);
|
||||
void sub_800E15C(struct Sprite *sprite, s32 signalStrengthAnimNum);
|
||||
void sub_800E174(void);
|
||||
void CopyTrainerRecord(struct TrainerNameRecord *dest, u32 trainerId, const u8 *name);
|
||||
bool32 NameIsNotEmpty(const u8 *name);
|
||||
void RecordMixTrainerNames(void);
|
||||
void WipeTrainerNameRecords(void);
|
||||
|
||||
#endif //GUARD_LINK_RFU_H
|
||||
|
105
src/link_rfu_2.c
105
src/link_rfu_2.c
@ -43,8 +43,9 @@ EWRAM_DATA struct UnkLinkRfuStruct_02022B44 gUnknown_02022B44 = {};
|
||||
static void ResetSendDataManager(struct RfuBlockSend *);
|
||||
static void sub_800EAB4(void);
|
||||
static void sub_800EAFC(void);
|
||||
static void sub_800ED34(u16);
|
||||
static void sub_800EDBC(u16);
|
||||
static void sub_800F048(void);
|
||||
static void UpdateBackupQueue(void);
|
||||
static void Task_ExchangeLinkPlayers(u8);
|
||||
static void RfuHandleReceiveCommand(u8);
|
||||
static void CallRfuFunc(void);
|
||||
@ -56,7 +57,7 @@ static u8 GetPartnerIndexByNameAndTrainerID(const u8 *, u16);
|
||||
static void sub_8010750(void);
|
||||
static s32 sub_80107A0(void);
|
||||
static void sub_801084C(u8);
|
||||
static void sub_80109E8(u16);
|
||||
static void ClearSelectedLinkPlayerIds(u16);
|
||||
static void ValidateAndReceivePokemonSioInfo(void *);
|
||||
static void sub_8010D0C(u8);
|
||||
static void sub_80115EC(s32);
|
||||
@ -229,8 +230,8 @@ void ResetLinkRfuGFLayer(void)
|
||||
ResetSendDataManager(Rfu.unk_80 + i);
|
||||
}
|
||||
ResetSendDataManager(&Rfu.unk_6c);
|
||||
sub_800D6C8(&Rfu.recvQueue);
|
||||
sub_800D724(&Rfu.sendQueue);
|
||||
RfuRecvQueue_Reset(&Rfu.recvQueue);
|
||||
RfuSendQueue_Reset(&Rfu.sendQueue);
|
||||
CpuFill16(0, gSendCmd, sizeof gSendCmd);
|
||||
CpuFill16(0, gRecvCmds, sizeof gRecvCmds);
|
||||
CpuFill16(0, gLinkPlayers, sizeof gLinkPlayers);
|
||||
@ -498,7 +499,7 @@ void LinkRfu_StopManagerBeforeEnteringChat(void)
|
||||
rfu_LMAN_stopManager(FALSE);
|
||||
}
|
||||
|
||||
void sub_800ED34(u16 unused)
|
||||
static void sub_800ED34(u16 unused)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
@ -511,9 +512,9 @@ void sub_800ED34(u16 unused)
|
||||
if (gRfuSlotStatusUNI[Rfu.childSlot]->recv.newDataFlag)
|
||||
{
|
||||
Rfu.unk_cd0++;
|
||||
sub_800D7D8(&Rfu.recvQueue, Rfu.unk_c3f);
|
||||
RfuRecvQueue_Enqueue(&Rfu.recvQueue, Rfu.unk_c3f);
|
||||
gUnknown_02022B44.unk_06++;
|
||||
sub_800F048();
|
||||
UpdateBackupQueue();
|
||||
rfu_UNI_readySendData(Rfu.childSlot);
|
||||
rfu_UNI_clearRecvNewDataFlag(Rfu.childSlot);
|
||||
}
|
||||
@ -666,24 +667,22 @@ static void sub_800F014(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_800F048(void)
|
||||
static void UpdateBackupQueue(void)
|
||||
{
|
||||
if (Rfu.unk_c3c)
|
||||
if (Rfu.linkRecovered)
|
||||
{
|
||||
u8 r2 = sub_800DAC8(&Rfu.unk_c1c, Rfu.unk_4c);
|
||||
if (Rfu.unk_c1c.count == 0)
|
||||
{
|
||||
Rfu.unk_c3c = 0;
|
||||
}
|
||||
if (r2)
|
||||
{
|
||||
bool8 backupEmpty = RfuBackupQueue_Dequeue(&Rfu.backupQueue, Rfu.unk_4c);
|
||||
|
||||
if (Rfu.backupQueue.count == 0)
|
||||
Rfu.linkRecovered = FALSE;
|
||||
|
||||
if (backupEmpty)
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (Rfu.unk_c3c == 0)
|
||||
if (!Rfu.linkRecovered)
|
||||
{
|
||||
sub_800D9DC(&Rfu.sendQueue, Rfu.unk_4c);
|
||||
sub_800DA68(&Rfu.unk_c1c, Rfu.unk_4c);
|
||||
RfuSendQueue_Dequeue(&Rfu.sendQueue, Rfu.unk_4c);
|
||||
RfuBackupQueue_Enqueue(&Rfu.backupQueue, Rfu.unk_4c);
|
||||
}
|
||||
}
|
||||
|
||||
@ -872,7 +871,7 @@ static bool32 RfuProcessEnqueuedRecvBlock(void)
|
||||
u8 sp48[2 * (CMD_LENGTH - 1)];
|
||||
u8 switchval;
|
||||
|
||||
sub_800D934(&Rfu.recvQueue, sp00);
|
||||
RfuRecvQueue_Dequeue(&Rfu.recvQueue, sp00);
|
||||
for (i = 0; i < MAX_RFU_PLAYERS; i++)
|
||||
{
|
||||
for (j = 0; j < CMD_LENGTH - 1; j++)
|
||||
@ -904,7 +903,7 @@ static bool32 RfuProcessEnqueuedRecvBlock(void)
|
||||
Rfu.unk_cd0--;
|
||||
CallRfuFunc();
|
||||
sub_800F498(gSendCmd, sp48);
|
||||
sub_800D888(&Rfu.sendQueue, sp48);
|
||||
RfuSendQueue_Enqueue(&Rfu.sendQueue, sp48);
|
||||
for (i = 0; i < CMD_LENGTH - 1; i++)
|
||||
gSendCmd[i] = 0;
|
||||
}
|
||||
@ -932,7 +931,7 @@ static void HandleSendFailure(u8 unused, u32 flags)
|
||||
|
||||
j++;j--; // Needed to match;
|
||||
}
|
||||
sub_800D888(&Rfu.sendQueue, sResendBlock8);
|
||||
RfuSendQueue_Enqueue(&Rfu.sendQueue, sResendBlock8);
|
||||
Rfu.unk_6c.failedFlags |= (1 << i);
|
||||
}
|
||||
flags >>= 1;
|
||||
@ -942,14 +941,14 @@ static void HandleSendFailure(u8 unused, u32 flags)
|
||||
void Rfu_SetBlockReceivedFlag(u8 linkPlayerId)
|
||||
{
|
||||
if (Rfu.parentChild == MODE_PARENT && linkPlayerId)
|
||||
Rfu.unk_61[linkPlayerId] = TRUE;
|
||||
Rfu.numBlocksReceived[linkPlayerId] = 1;
|
||||
else
|
||||
Rfu.unk_5c[linkPlayerId] = TRUE;
|
||||
Rfu.blockReceived[linkPlayerId] = TRUE;
|
||||
}
|
||||
|
||||
void Rfu_ResetBlockReceivedFlag(u8 linkPlayerId)
|
||||
{
|
||||
Rfu.unk_5c[linkPlayerId] = FALSE;
|
||||
Rfu.blockReceived[linkPlayerId] = FALSE;
|
||||
Rfu.unk_80[linkPlayerId].receiving = 0;
|
||||
}
|
||||
|
||||
@ -1040,7 +1039,7 @@ static void RfuHandleReceiveCommand(u8 unused)
|
||||
Rfu.unk_80[i].owner = gRecvCmds[i][2];
|
||||
Rfu.unk_80[i].receivedFlags = 0;
|
||||
Rfu.unk_80[i].receiving = 1;
|
||||
Rfu.unk_5c[i] = 0;
|
||||
Rfu.blockReceived[i] = FALSE;
|
||||
}
|
||||
break;
|
||||
case RFU_COMMAND_0x8900:
|
||||
@ -1081,7 +1080,7 @@ static void RfuHandleReceiveCommand(u8 unused)
|
||||
Rfu.unk_ce4 = gRecvCmds[i][2];
|
||||
}
|
||||
Rfu.playerCount = gRecvCmds[i][3];
|
||||
sub_80109E8(gRecvCmds[i][1]);
|
||||
ClearSelectedLinkPlayerIds(gRecvCmds[i][1]);
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -1097,7 +1096,7 @@ static void RfuHandleReceiveCommand(u8 unused)
|
||||
{
|
||||
Rfu.unk_ce3 |= gRecvCmds[i][1];
|
||||
Rfu.unk_ce4 = gRecvCmds[i][2];
|
||||
sub_80109E8(gRecvCmds[i][1]);
|
||||
ClearSelectedLinkPlayerIds(gRecvCmds[i][1]);
|
||||
}
|
||||
break;
|
||||
case RFU_COMMAND_0x4400:
|
||||
@ -1105,20 +1104,20 @@ static void RfuHandleReceiveCommand(u8 unused)
|
||||
gLinkPartnersHeldKeys[i] = gRecvCmds[i][1];
|
||||
break;
|
||||
}
|
||||
if (Rfu.parentChild == MODE_PARENT && Rfu.unk_61[i])
|
||||
if (Rfu.parentChild == MODE_PARENT && Rfu.numBlocksReceived[i])
|
||||
{
|
||||
if (Rfu.unk_61[i] == 4)
|
||||
if (Rfu.numBlocksReceived[i] == 4)
|
||||
{
|
||||
Rfu.unk_5c[i] = 1;
|
||||
Rfu.unk_61[i] = 0;
|
||||
Rfu.blockReceived[i] = TRUE;
|
||||
Rfu.numBlocksReceived[i] = 0;
|
||||
}
|
||||
else
|
||||
Rfu.unk_61[i]++;
|
||||
Rfu.numBlocksReceived[i]++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static bool8 sub_800FC60(void)
|
||||
static bool8 AreNoPlayersReceiving(void)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
@ -1136,7 +1135,7 @@ static bool8 sub_800FC88(void)
|
||||
|
||||
for (i = 0; i < Rfu.playerCount; i++)
|
||||
{
|
||||
if (Rfu.unk_80[i].receiving != 2 || Rfu.unk_5c[i] != 1)
|
||||
if (Rfu.unk_80[i].receiving != 2 || Rfu.blockReceived[i] != TRUE)
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
@ -1160,7 +1159,7 @@ u8 Rfu_GetBlockReceivedStatus(void)
|
||||
|
||||
for (i = 0; i < MAX_RFU_PLAYERS; i++)
|
||||
{
|
||||
if (Rfu.unk_80[i].receiving == 2 && Rfu.unk_5c[i] == 1)
|
||||
if (Rfu.unk_80[i].receiving == 2 && Rfu.blockReceived[i] == TRUE)
|
||||
{
|
||||
flags |= (1 << i);
|
||||
}
|
||||
@ -1182,7 +1181,7 @@ static void RfuPrepareSendBuffer(u16 command)
|
||||
gSendCmd[2] = Rfu.unk_6c.owner + 0x80;
|
||||
break;
|
||||
case RFU_COMMAND_0xA100:
|
||||
if (sub_800FC60())
|
||||
if (AreNoPlayersReceiving())
|
||||
gSendCmd[1] = Rfu.unk_5a;
|
||||
break;
|
||||
case RFU_COMMAND_0x7700:
|
||||
@ -1483,7 +1482,7 @@ void sub_8010434(void)
|
||||
}
|
||||
}
|
||||
|
||||
bool32 RfuSerialNumberIsValid(u32 serialNo)
|
||||
bool32 IsRfuSerialNumberValid(u32 serialNo)
|
||||
{
|
||||
s32 i;
|
||||
for (i = 0; sAcceptedSerialNos[i] != serialNo; i++)
|
||||
@ -1554,7 +1553,7 @@ static bool8 sub_8010540(void)
|
||||
}
|
||||
|
||||
}
|
||||
else if (gRfuSlotStatusNI[Rfu.childSlot]->recv.state == 0x47)
|
||||
else if (gRfuSlotStatusNI[Rfu.childSlot]->recv.state == SLOT_STATE_RECV_FAILED)
|
||||
rfu_clearSlot(TYPE_NI_RECV, i);
|
||||
{
|
||||
|
||||
@ -1657,7 +1656,7 @@ static s32 sub_80107A0(void)
|
||||
RfuSetErrorStatus(Rfu.unk_c86, 0);
|
||||
retval = Rfu.unk_c86;
|
||||
}
|
||||
else if (gRfuSlotStatusNI[Rfu.childSlot]->recv.state == 0x47)
|
||||
else if (gRfuSlotStatusNI[Rfu.childSlot]->recv.state == SLOT_STATE_RECV_FAILED)
|
||||
{
|
||||
rfu_clearSlot(TYPE_NI_RECV, Rfu.childSlot);
|
||||
retval = 6;
|
||||
@ -1677,7 +1676,7 @@ static void sub_801084C(u8 taskId)
|
||||
switch (gTasks[taskId].data[0])
|
||||
{
|
||||
case 0:
|
||||
if (sub_800FC60())
|
||||
if (AreNoPlayersReceiving())
|
||||
{
|
||||
ResetBlockReceivedFlags();
|
||||
sub_800B348();
|
||||
@ -1707,7 +1706,7 @@ static void sub_801084C(u8 taskId)
|
||||
case 3:
|
||||
if (Rfu.parentChild == MODE_PARENT)
|
||||
{
|
||||
if (sub_800FC60())
|
||||
if (AreNoPlayersReceiving())
|
||||
{
|
||||
Rfu.unk_5a = 0;
|
||||
RfuPrepareSendBuffer(RFU_COMMAND_0xA100);
|
||||
@ -1749,13 +1748,13 @@ static void sub_801084C(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80109E8(u16 a0)
|
||||
static void ClearSelectedLinkPlayerIds(u16 selected)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < RFU_CHILD_MAX; i++)
|
||||
{
|
||||
if ((a0 >> i) & 1)
|
||||
if ((selected >> i) & 1)
|
||||
Rfu.linkPlayerIdx[i] = 0;
|
||||
}
|
||||
}
|
||||
@ -1965,12 +1964,12 @@ static void CopyPlayerNameToUnameBuffer(void)
|
||||
void ClearAndInitHostRFUtgtGname(void)
|
||||
{
|
||||
memset(&gHostRFUtgtGnameBuffer, 0, RFU_GAME_NAME_LENGTH);
|
||||
sub_800DD94(&gHostRFUtgtGnameBuffer, 0, FALSE, 0);
|
||||
InitHostRFUtgtGname(&gHostRFUtgtGnameBuffer, 0, FALSE, 0);
|
||||
}
|
||||
|
||||
void SetHostRFUtgtGname(u8 activity, u32 child_sprite_genders, u32 started)
|
||||
{
|
||||
sub_800DD94(&gHostRFUtgtGnameBuffer, activity, started, child_sprite_genders);
|
||||
InitHostRFUtgtGname(&gHostRFUtgtGnameBuffer, activity, started, child_sprite_genders);
|
||||
}
|
||||
|
||||
void SetGnameBufferWonderFlags(bool32 hasNews, bool32 hasCard)
|
||||
@ -2123,7 +2122,7 @@ static void sub_801120C(u8 msg, u8 paramCount)
|
||||
rfu_REQ_disconnect(Rfu.acceptSlot_flag ^ lman.acceptSlot_flag);
|
||||
rfu_waitREQComplete();
|
||||
}
|
||||
Rfu.state = 0x11;
|
||||
Rfu.state = 17;
|
||||
break;
|
||||
case LMAN_MSG_LINK_LOSS_DETECTED_AND_START_RECOVERY:
|
||||
Rfu.linkLossRecoveryState = 1;
|
||||
@ -2213,7 +2212,7 @@ void sub_8011404(u8 msg, u8 unused1)
|
||||
break;
|
||||
case LMAN_MSG_LINK_RECOVERY_SUCCESSED:
|
||||
Rfu.linkLossRecoveryState = 3;
|
||||
Rfu.unk_c3c = 1;
|
||||
Rfu.linkRecovered = TRUE;
|
||||
break;
|
||||
case 0x34:
|
||||
break;
|
||||
@ -2256,7 +2255,7 @@ static u8 GetNewChildrenInUnionRoomChat(s32 a0)
|
||||
u8 ret = 0;
|
||||
u8 i;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < RFU_CHILD_MAX; i++)
|
||||
{
|
||||
if ((a0 >> i) & 1)
|
||||
{
|
||||
@ -2362,7 +2361,7 @@ static void sub_8011674(u8 msg, u8 paramCount)
|
||||
case LMAN_MSG_LINK_RECOVERY_SUCCESSED:
|
||||
Rfu.linkLossRecoveryState = 3;
|
||||
if (gRfuLinkStatus->parentChild == MODE_CHILD)
|
||||
Rfu.unk_c3c = 1;
|
||||
Rfu.linkRecovered = TRUE;
|
||||
break;
|
||||
case LMAN_MSG_LINK_LOSS_DETECTED_AND_DISCONNECTED:
|
||||
Rfu.linkLossRecoveryState = 2;
|
||||
@ -2562,7 +2561,7 @@ static u8 GetPartnerIndexByNameAndTrainerID(const u8 *name, u16 id)
|
||||
for (i = 0; i < RFU_CHILD_MAX; i++)
|
||||
{
|
||||
u16 trainerId = ReadU16(gRfuLinkStatus->partner[i].gname + 2);
|
||||
if (RfuSerialNumberIsValid(gRfuLinkStatus->partner[i].serialNo)
|
||||
if (IsRfuSerialNumberValid(gRfuLinkStatus->partner[i].serialNo)
|
||||
&& !StringCompare(name, gRfuLinkStatus->partner[i].uname)
|
||||
&& id == trainerId)
|
||||
{
|
||||
@ -2784,7 +2783,7 @@ void sub_8012188(const u8 *name, struct GFtgtGname *structPtr, u8 activity)
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_8012224(void)
|
||||
bool8 IsRfuRecoveringFromLinkLoss(void)
|
||||
{
|
||||
if (Rfu.linkLossRecoveryState == 1)
|
||||
return TRUE;
|
||||
|
553
src/link_rfu_3.c
553
src/link_rfu_3.c
File diff suppressed because it is too large
Load Diff
@ -367,7 +367,7 @@ static void VBlankIntr(void)
|
||||
if (!gMain.inBattle || !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_FRONTIER | BATTLE_TYPE_RECORDED)))
|
||||
Random();
|
||||
|
||||
sub_800E174();
|
||||
UpdateWirelessStatusIndicatorSprite();
|
||||
|
||||
INTR_CHECK |= INTR_FLAG_VBLANK;
|
||||
gMain.intrCheck |= INTR_FLAG_VBLANK;
|
||||
|
Loading…
Reference in New Issue
Block a user