diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-02-06 10:44:22 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-02-06 10:44:22 -0500 |
commit | 78caeff45b98bf3cce180d37606d5a5239fbb030 (patch) | |
tree | dd2bda7991d1d50e83317c9a99633714c0c0106a /src | |
parent | 6af7391add68be30c6bd7d22803a3dd454e08a33 (diff) |
Name remaining funcs in union_room.c
Diffstat (limited to 'src')
-rw-r--r-- | src/dodrio_berry_picking_2.c | 2 | ||||
-rw-r--r-- | src/event_object_lock.c | 2 | ||||
-rw-r--r-- | src/learn_move.c | 2 | ||||
-rw-r--r-- | src/link_rfu_2.c | 78 | ||||
-rw-r--r-- | src/link_rfu_3.c | 4 | ||||
-rw-r--r-- | src/list_menu.c | 2 | ||||
-rw-r--r-- | src/mevent.c | 10 | ||||
-rw-r--r-- | src/pokedex_screen.c | 8 | ||||
-rw-r--r-- | src/tm_case.c | 2 | ||||
-rw-r--r-- | src/trade_scene.c | 2 | ||||
-rw-r--r-- | src/union_room.c | 618 | ||||
-rw-r--r-- | src/union_room_battle.c | 2 | ||||
-rw-r--r-- | src/union_room_message.c | 2 |
13 files changed, 380 insertions, 354 deletions
diff --git a/src/dodrio_berry_picking_2.c b/src/dodrio_berry_picking_2.c index fc6aa14c6..4260c6f2f 100644 --- a/src/dodrio_berry_picking_2.c +++ b/src/dodrio_berry_picking_2.c @@ -7,7 +7,7 @@ void sub_815A5BC(s32 a0) struct Padded_U8 data[2]; data[0].value = 1; data[1].value = a0; - sub_80F9E2C(data); + RfuPrepareSend0x2f00(data); } u8 sub_815A5E8(s32 a0) diff --git a/src/event_object_lock.c b/src/event_object_lock.c index cf500054f..304b71c28 100644 --- a/src/event_object_lock.c +++ b/src/event_object_lock.c @@ -93,7 +93,7 @@ void sub_80696C0(void) UnfreezeObjectEvents(); } -void sub_80696F0(void) +void UnionRoom_UnlockPlayerAndChatPartner(void) { u8 objectEventId; if (gObjectEvents[gSelectedObjectEvent].active) diff --git a/src/learn_move.c b/src/learn_move.c index e22922528..8a2f5781b 100644 --- a/src/learn_move.c +++ b/src/learn_move.c @@ -309,7 +309,7 @@ static void MoveRelearnerLoadBgGfx(void) FillBgTilemapBufferRect(0, 0x000, 0, 0, 30, 20, 0xF); SetBgTilemapBuffer(1, sMoveRelearner->bg1TilemapBuffer); TextWindow_SetUserSelectedFrame(0, 1, 0xE0); - sub_8107D38(0xD0, 1); + ListMenuLoadStdPalAt(0xD0, 1); LoadPalette(gUnknown_8E97DDC, 0x00, 0x20); DecompressAndLoadBgGfxUsingHeap(1, gUnknown_8E97DFC, 0, 0, 0); CopyToBgTilemapBuffer(1, gUnknown_8E97EC4, 0, 0); diff --git a/src/link_rfu_2.c b/src/link_rfu_2.c index 407c45aa3..847fdf4d6 100644 --- a/src/link_rfu_2.c +++ b/src/link_rfu_2.c @@ -398,7 +398,7 @@ static void sub_80F8AEC(void) static void sub_80F8B34(u8 taskId) { - if (GetHostRFUtgtGname()->activity == (0x14 | IN_UNION_ROOM) && RfuGetErrorStatus() == 4) + if (GetHostRFUtgtGname()->activity == (ACTIVITY_PLYRTALK | IN_UNION_ROOM) && RfuGetErrorStatus() == 4) { rfu_REQ_disconnect(lman.acceptSlot_flag); rfu_waitREQComplete(); @@ -444,7 +444,7 @@ static void sub_80F8B34(u8 taskId) case 16: Rfu.unk_cdb = 0; rfu_LMAN_setMSCCallback(sub_80F8DA8); - sub_80FAFE0(1); + UpdateGameData_GroupLockedIn(1); sub_80F8AA4(); sub_80F8AEC(); Rfu.state = 20; @@ -542,7 +542,7 @@ static void CreateTask_LinkLeaderSearchForChildren(void) Rfu.unk_67 = CreateTask(Task_LinkLeaderSearchForChildren, 1); } -static bool8 sub_80F8EA4(void) +static bool8 RfuStateIs7AndPlayerIsChild(void) { if (Rfu.state == 7 && Rfu.parentId) { @@ -551,7 +551,7 @@ static bool8 sub_80F8EA4(void) return FALSE; } -static bool32 sub_80F8ECC(void) +static bool32 IsParentSuccessfullyReconnected(void) { if (Rfu.state == 7 && !rfu_LMAN_CHILD_connectParent(gRfuLinkStatus->partner[Rfu.unk_c3d].id, 240)) { @@ -568,7 +568,7 @@ static void CreateTask_JoinGroupSearchForParent(void) Rfu.unk_67 = CreateTask(Task_JoinGroupSearchForParent, 1); } -bool8 sub_80F8F40(void) +bool8 LmanAcceptSlotFlagIsNotZero(void) { if (lman.acceptSlot_flag) { @@ -580,12 +580,12 @@ bool8 sub_80F8F40(void) void sub_80F8F5C(void) { Rfu.state = 4; - Rfu.unk_ce7 = lman.acceptSlot_flag; + Rfu.acceptSlot_flag = lman.acceptSlot_flag; } -bool32 sub_80F8F7C(bool32 a0) +bool32 WaitRfuState(bool32 force) { - if (Rfu.state == 17 || a0) + if (Rfu.state == 17 || force) { Rfu.state = 18; return TRUE; @@ -1175,7 +1175,7 @@ static void RfuPrepareSendBuffer(u16 command) } } -void sub_80F9E2C(void * data) +void RfuPrepareSend0x2f00(void * data) { if (gSendCmd[0] == 0 && !RfuIsErrorStatus1or2()) { @@ -1544,7 +1544,7 @@ bool32 sub_80FA5D4(void) return FALSE; } -bool32 sub_80FA634(u16 trainerId, const u8 *trainerName) +bool32 TrainerIdAndNameStillInPartnersList(u16 trainerId, const u8 *trainerName) { u8 r1 = GetPartnerIndexByNameAndTrainerID(trainerName, trainerId); if (r1 == 0xFF) @@ -1554,27 +1554,27 @@ bool32 sub_80FA634(u16 trainerId, const u8 *trainerName) return FALSE; } -void sub_80FA670(u8 a0, u16 a1, const u8 *a2) +void SendByteToPartnerByIdAndName(u8 value, u16 trainerId, const u8 *trainerName) { - u8 r4 = GetPartnerIndexByNameAndTrainerID(a2, a1); - Rfu.unk_cd1[r4] = a0; - rfu_clearSlot(TYPE_NI_SEND, r4); - rfu_NI_setSendData(1 << r4, 8, Rfu.unk_cd1 + r4, 1); + u8 slotNo = GetPartnerIndexByNameAndTrainerID(trainerName, trainerId); + Rfu.unk_cd1[slotNo] = value; + rfu_clearSlot(TYPE_NI_SEND, slotNo); + rfu_NI_setSendData(1 << slotNo, 8, Rfu.unk_cd1 + slotNo, 1); } -void sub_80FA6BC(void) +void LinkRfuNIsend8(void) { Rfu.unk_c85 = 8; rfu_clearSlot(TYPE_NI_SEND, Rfu.child_slot); rfu_NI_setSendData(1 << Rfu.child_slot, 8, &Rfu.unk_c85, 1); } -u32 sub_80FA6FC(u16 trainerId, const u8 *trainerName) +u32 WaitSendByteToPartnerByIdAndName(u16 trainerId, const u8 *trainerName) { u8 r0 = GetPartnerIndexByNameAndTrainerID(trainerName, trainerId); if (r0 == 0xFF) return 2; - if (gRfuSlotStatusNI[r0]->send.state == 0) + if (gRfuSlotStatusNI[r0]->send.state == SLOT_STATE_READY) return 1; return 0; } @@ -1917,12 +1917,12 @@ static void CopyPlayerNameToUnameBuffer(void) void ClearAndInitHostRFUtgtGname(void) { memset(&gHostRFUtgtGnameBuffer, 0, RFU_GAME_NAME_LENGTH); - InitHostRFUtgtGname(&gHostRFUtgtGnameBuffer, 0, 0, 0); + InitHostRFUtgtGname(&gHostRFUtgtGnameBuffer, 0, FALSE, 0); } -void SetHostRFUtgtGname(u8 activity, u32 child_sprite_genders, u32 a2) +void SetHostRFUtgtGname(u8 activity, u32 child_sprite_genders, u32 started) { - InitHostRFUtgtGname(&gHostRFUtgtGnameBuffer, activity, a2, child_sprite_genders); + InitHostRFUtgtGname(&gHostRFUtgtGnameBuffer, activity, started, child_sprite_genders); } void SetGnameBufferWonderFlags(bool32 hasNews, bool32 hasCard) @@ -1938,16 +1938,16 @@ void RfuUpdatePlayerGnameStateAndSend(u32 type, u32 species, u32 level) gHostRFUtgtGnameBuffer.level = level; } -void sub_80FAFE0(bool8 unk_0a_7) +void UpdateGameData_GroupLockedIn(bool8 started) { - gHostRFUtgtGnameBuffer.unk_0a_7 = unk_0a_7; + gHostRFUtgtGnameBuffer.started = started; rfu_REQ_configGameData(0, 0x0002, (void *)&gHostRFUtgtGnameBuffer, gHostRFUtgtUnameBuffer); } -void sub_80FB008(u8 activity, u32 child_sprite_genders, u32 a2) +void UpdateGameDataWithActivitySpriteGendersFlag(u8 activity, u32 child_sprite_genders, u32 started) { if (activity) - SetHostRFUtgtGname(activity, child_sprite_genders, a2); + SetHostRFUtgtGname(activity, child_sprite_genders, started); rfu_REQ_configGameData(0, 0x0002, (void *)&gHostRFUtgtGnameBuffer, gHostRFUtgtUnameBuffer); } @@ -1976,7 +1976,7 @@ void sub_80FB030(u32 linkPlayerCount) break; } } - sub_80FB008(ACTIVITY_CHAT | IN_UNION_ROOM, child_sprite_genders, 0); + UpdateGameDataWithActivitySpriteGendersFlag(ACTIVITY_CHAT | IN_UNION_ROOM, child_sprite_genders, 0); } } @@ -2056,12 +2056,12 @@ static void LmanCallback_Parent2(u8 msg, u8 param_count) case LMAN_MSG_SEARCH_CHILD_PERIOD_EXPIRED: break; case LMAN_MSG_END_WAIT_CHILD_NAME: - if (Rfu.unk_ce7 != lman.acceptSlot_flag) + if (Rfu.acceptSlot_flag != lman.acceptSlot_flag) { - rfu_REQ_disconnect(Rfu.unk_ce7 ^ lman.acceptSlot_flag); + 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; @@ -2216,7 +2216,7 @@ static void LmanCallback_Parent(u8 msg, u8 param_count) switch (msg) { case LMAN_MSG_INITIALIZE_COMPLETED: - Rfu.state = 0x11; + Rfu.state = 17; break; case LMAN_MSG_NEW_CHILD_CONNECT_DETECTED: RfuSetErrorStatus(4, 0); @@ -2245,7 +2245,7 @@ static void LmanCallback_Parent(u8 msg, u8 param_count) Rfu.unk_ce4 = 2; } } - else if (GetHostRFUtgtGname()->activity == (0x40 | 20)) + else if (GetHostRFUtgtGname()->activity == (ACTIVITY_PLYRTALK | IN_UNION_ROOM)) { rfu_REQ_disconnect(lman.acceptSlot_flag); rfu_waitREQComplete(); @@ -2264,7 +2264,7 @@ static void LmanCallback_Parent(u8 msg, u8 param_count) rfu_waitREQComplete(); } if (Rfu.state == 0xF) - Rfu.state = 0x10; + Rfu.state = 16; break; case LMAN_MSG_PARENT_FOUND: Rfu.parentId = lman.param[0]; @@ -2275,7 +2275,7 @@ static void LmanCallback_Parent(u8 msg, u8 param_count) Rfu.child_slot = lman.param[0]; break; case LMAN_MSG_CONNECT_PARENT_FAILED: - Rfu.state = 0x12; + Rfu.state = 18; if (Rfu.unk_ccf < 2) { Rfu.unk_ccf++; @@ -2287,7 +2287,7 @@ static void LmanCallback_Parent(u8 msg, u8 param_count) } break; case LMAN_MSG_CHILD_NAME_SEND_COMPLETED: - Rfu.state = 0xD; + Rfu.state = 13; RfuSetErrorStatus(3, 0); rfu_setRecvBuffer(TYPE_UNI, Rfu.child_slot, Rfu.unk_c3f, sizeof(Rfu.unk_c3f)); break; @@ -2534,7 +2534,7 @@ static void RfuReqDisconnectSlot(u32 bmDisconnectSlot) Rfu.unk_cda = sub_80F886C(Rfu.bm_PartnerFlags); } -void sub_80FBD4C(const u8 *trainerName, u16 trainerId) +void RequestDisconnectSlotByTrainerNameAndId(const u8 *trainerName, u16 trainerId) { u8 var = GetPartnerIndexByNameAndTrainerID(trainerName, trainerId); if (var != 0xFF) @@ -2591,7 +2591,7 @@ static void sub_80FBE80(u8 taskId) { s16 *data = gTasks[taskId].data; - if (sub_80F8EA4()) + if (RfuStateIs7AndPlayerIsChild()) { u8 id = GetPartnerIndexByNameAndTrainerID((u8*)data, ReadU16(&data[8])); if (id != 0xFF) @@ -2599,7 +2599,7 @@ static void sub_80FBE80(u8 taskId) if (gRfuLinkStatus->partner[id].slot != 0xFF) { Rfu.unk_c3d = id; - if (sub_80F8ECC()) + if (IsParentSuccessfullyReconnected()) DestroyTask(taskId); } else if (GetHostRFUtgtGname()->activity == ACTIVITY_WCARD2 || GetHostRFUtgtGname()->activity == ACTIVITY_WNEWS2) @@ -2630,7 +2630,7 @@ static void sub_80FBE80(u8 taskId) } } -void sub_80FBF54(const u8 *src, u16 trainerId) +void CreateTask_sub_80FBE80(const u8 *trainerName, u16 trainerId) { u8 taskId; s16 *data; @@ -2638,7 +2638,7 @@ void sub_80FBF54(const u8 *src, u16 trainerId) Rfu.unk_f1 = 0; taskId = CreateTask(sub_80FBE80, 3); data = gTasks[taskId].data; - StringCopy((u8*)(data), src); + StringCopy((u8*)(data), trainerName); data[8] = trainerId; } diff --git a/src/link_rfu_3.c b/src/link_rfu_3.c index 145acbf5c..1e5c2f89b 100644 --- a/src/link_rfu_3.c +++ b/src/link_rfu_3.c @@ -603,7 +603,7 @@ static u8 GetConnectedChildStrength(u8 maxFlags) } #endif -void InitHostRFUtgtGname(struct GFtgtGname *data, u8 activity, bool32 r2, s32 child_sprite_genders) +void InitHostRFUtgtGname(struct GFtgtGname *data, u8 activity, bool32 started, s32 child_sprite_genders) { s32 i; @@ -618,7 +618,7 @@ void InitHostRFUtgtGname(struct GFtgtGname *data, u8 activity, bool32 r2, s32 ch } data->playerGender = gSaveBlock2Ptr->playerGender; data->activity = activity; - data->unk_0a_7 = r2; + data->started = started; data->unk_00.language = GAME_LANGUAGE; data->unk_00.version = GAME_VERSION; data->unk_00.hasNews = FALSE; diff --git a/src/list_menu.c b/src/list_menu.c index 6c4d50961..706c1679b 100644 --- a/src/list_menu.c +++ b/src/list_menu.c @@ -763,7 +763,7 @@ void sub_8107CF8(u8 windowId, u16 speciesId, u32 personality, u16 x, u16 y) BlitBitmapToWindow(windowId, GetMonIconPtr(speciesId, personality, 1), x, y, 32, 32); } -void sub_8107D38(u8 palOffset, u8 palId) +void ListMenuLoadStdPalAt(u8 palOffset, u8 palId) { const u16 *palette; diff --git a/src/mevent.c b/src/mevent.c index d3fb8805f..2d280b83a 100644 --- a/src/mevent.c +++ b/src/mevent.c @@ -952,7 +952,7 @@ void ResetReceivedWonderCardFlag(void) sReceivedWonderCardIsValid = FALSE; } -bool32 sub_81446D0(u16 cardId) +bool32 MEventHandleReceivedWonderCard(u16 cardId) { sReceivedWonderCardIsValid = FALSE; if (cardId == 0) @@ -965,19 +965,19 @@ bool32 sub_81446D0(u16 cardId) return TRUE; } -void sub_8144714(u32 eventId, u32 trainerId) +void MEvent_RecordIdOfWonderCardSenderByEventType(u32 eventId, u32 trainerId) { if (sReceivedWonderCardIsValid) { switch (eventId) { - case 2: + case 2: // trade RecordIdOfWonderCardSender(2, trainerId, gSaveBlock1Ptr->mysteryEventBuffers.unk_344[1], 5); break; - case 0: + case 0: // link win RecordIdOfWonderCardSender(0, trainerId, gSaveBlock1Ptr->mysteryEventBuffers.unk_344[0], 5); break; - case 1: + case 1: // link loss RecordIdOfWonderCardSender(1, trainerId, gSaveBlock1Ptr->mysteryEventBuffers.unk_344[0], 5); break; default: diff --git a/src/pokedex_screen.c b/src/pokedex_screen.c index 2ccec7a3f..cd201a884 100644 --- a/src/pokedex_screen.c +++ b/src/pokedex_screen.c @@ -562,8 +562,8 @@ void sub_8102F80(u8 taskId) switch (gUnknown_203ACF0->field_01) { case 0: - sub_8107D38(0x10, 0); - sub_8107D38(0x20, 1); + ListMenuLoadStdPalAt(0x10, 0); + ListMenuLoadStdPalAt(0x20, 1); gUnknown_203ACF0->field_48 = sub_8103518(gUnknown_203ACF0->field_42); gUnknown_203ACF0->field_01 = 2; break; @@ -648,8 +648,8 @@ void sub_8103238(u8 taskId) switch (gUnknown_203ACF0->field_01) { case 0: - sub_8107D38(0x10, 0); - sub_8107D38(0x20, 1); + ListMenuLoadStdPalAt(0x10, 0); + ListMenuLoadStdPalAt(0x20, 1); gUnknown_203ACF0->field_48 = sub_8103518(gUnknown_203ACF0->field_42); gUnknown_203ACF0->field_01 = 2; break; diff --git a/src/tm_case.c b/src/tm_case.c index d45061bde..ac4134029 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -1304,7 +1304,7 @@ static void InitWindowTemplatesAndPals(void) LoadPalette(gTMCaseMainWindowPalette, 0xA0, 0x20); LoadPalette(sPal3Override, 0xF6, 0x04); LoadPalette(sPal3Override, 0xD6, 0x04); - sub_8107D38(0xc0, 0x01); + ListMenuLoadStdPalAt(0xc0, 0x01); for (i = 0; i < 9; i++) FillWindowPixelBuffer(i, 0x00); PutWindowTilemap(0); diff --git a/src/trade_scene.c b/src/trade_scene.c index cbae2f6a3..d6931f1f7 100644 --- a/src/trade_scene.c +++ b/src/trade_scene.c @@ -2594,7 +2594,7 @@ static void sub_8053E8C(void) } if (gWirelessCommType) { - sub_8144714(2, gLinkPlayers[GetMultiplayerId() ^ 1].trainerId); + MEvent_RecordIdOfWonderCardSenderByEventType(2, gLinkPlayers[GetMultiplayerId() ^ 1].trainerId); } SetContinueGameWarpStatusToDynamicWarp(); sub_80DA3AC(); diff --git a/src/union_room.c b/src/union_room.c index 19e8c7e66..b84145c6d 100644 --- a/src/union_room.c +++ b/src/union_room.c @@ -63,18 +63,18 @@ static struct UnkStruct_Group * sGroup; static struct UnkStruct_URoom * sURoom; static void Task_TryBecomeLinkLeader(u8 taskId); -static void sub_81161E4(struct UnkStruct_Leader * leader); -static bool8 sub_8116444(struct UnkStruct_Leader * leader, u32 state1, u32 state2); -static void sub_81164C8(u8 windowId, s32 itemId, u8 y); -static u8 sub_8116524(struct UnkStruct_Main0 * a0); +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 void Task_TryJoinLinkGroup(u8 taskId); -static u32 sub_8116D10(struct UnkStruct_Group * group, s32 id); -static void sub_8116D60(struct UnkStruct_Group * group, s32 id); +static u32 IsTryingToTradeWithHoennTooSoon(struct UnkStruct_Group * group, s32 id); +static void AskToJoinRfuGroup(struct UnkStruct_Group * group, s32 id); static void Task_ListenToWireless(u8 taskId); static void ListMenuItemPrintFunc_UnionRoomGroups(u8 windowId, s32 itemId, u8 y); static u8 GetNewLeaderCandidate(void); -static void CreateTask_sub_8117900(void); +static void CreateTask_RunScriptAndFadeToActivity(void); static void CreateTask_StartActivity(void); static void Task_MEvent_Leader(u8 taskId); static void Task_CardOrNewsWithFriend(u8 taskId); @@ -82,34 +82,34 @@ static void Task_CardOrNewsOverWireless(u8 taskId); static void Task_ResumeUnionRoom(u8 taskId); static u16 ReadAsU16(const u8 *data); static void ReceiveUnionRoomActivityPacket(struct UnkStruct_URoom * uRoom); -static bool32 sub_8119944(struct UnkStruct_URoom * uRoom); +static bool32 UnionRoom_HandleContactFromOtherPlayer(struct UnkStruct_URoom * uRoom); static void Task_InitUnionRoom(u8 taskId); -static u8 sub_8119B94(void); -static u8 sub_8119E84(struct UnkStruct_Main4 * arg0, struct UnkStruct_Main4 * arg1, u32 arg2); +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_Task_ListenForPartnersWithCompatibleSerialNos(struct UnkStruct_Main4 * arg0, u32 linkGroup); -static u8 CreateTask_Task_ListenForPartnersWithSerial7F7D(struct UnkStruct_Main4 * arg0, u32 linkGroup); +static u8 CreateTask_ListenForPartnersWithCompatibleSerialNos(struct UnkStruct_Main4 * arg0, u32 linkGroup); +static u8 CreateTask_ListenForPartnersWithSerial7F7D(struct UnkStruct_Main4 * arg0, u32 linkGroup); static bool32 UR_PrintFieldMessage(const u8 * str); static bool32 UR_RunTextPrinters_CheckPrinter0Active(void); static bool8 PrintOnTextbox(u8 *textState, const u8 *str); static s8 UnionRoomHandleYesNo(u8 *state_p, bool32 no_draw); static s32 ListMenuHandler_AllItemsAvailable(u8 *state_p, u8 *win_id_p, u8 *list_menu_id_p, const struct WindowTemplate * winTemplate, const struct ListMenuTemplate * menuTemplate); static s32 TradeBoardMenuHandler(u8 *state_p, u8 *win_id_p, u8 *list_menu_id_p, u8 *trade_board_win_id_p, const struct WindowTemplate * winTemplate, const struct ListMenuTemplate * menuTemplate, struct UnkStruct_Main0 * traders); -static void sub_811A3F8(void); -static void sub_811A41C(void); +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 bool8 AreGnameUnameDifferent(struct UnionGnameUnamePair * arg0, const struct UnionGnameUnamePair * arg1); static bool32 AreUnionRoomPlayerGnamesDifferent(struct UnionGnameUnamePair * arg0, struct UnionGnameUnamePair * arg1); -static u32 sub_811A748(struct UnkStruct_x20 * arg0, struct UnkStruct_x1C * arg1); +static u32 Findx20Inx1CArray(struct UnkStruct_x20 * arg0, struct UnkStruct_x1C * arg1); static u8 Appendx1Ctox20(struct UnkStruct_x20 * x20arr, struct UnkStruct_x1C * x1C, u8 count); -static void sub_811A81C(u8 windowId, u8 x, u8 y, struct UnkStruct_x20 * group, u8 colorIdx, u8 id); -static void sub_811A910(u8 windowId, u8 x, u8 y, struct UnkStruct_x20 * group, u8 colorIdx, u8 id); +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 sub_811AA24(struct UnkStruct_x20 * unkX20); -static s32 sub_811AA5C(struct UnkStruct_Main0 * arg0, u8 arg1, u8 arg2, u32 playerGender); +static u32 ConvPartnerUnameAndGetWhetherMetAlready(struct UnkStruct_x20 * unkX20); +static s32 UnionRoomGetPlayerInteractionResponse(struct UnkStruct_Main0 * arg0, u8 arg1, u8 arg2, 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); @@ -124,10 +124,10 @@ static void ResetUnionRoomTrade(struct UnionRoomTrade * trade); static bool32 RegisterTradeMonAndGetIsEgg(u32 monId, struct UnionRoomTrade * trade); static void RegisterTradeMon(u32 monId, struct UnionRoomTrade * trade); static u32 GetPartyPositionOfRegisteredMon(struct UnionRoomTrade * trade, u8 mpId); -static void sub_811B258(bool32 a0); -static void sub_811B298(void); -static u8 sub_811B2A8(s32 a0); -static u8 sub_811B2D8(struct UnkStruct_URoom * arg0); +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); #define _8456CD8(a, b) ((a) | ((b) << 8)) @@ -158,7 +158,7 @@ static const u8 *const sUnionRoomActivityStringPtrs[] = { gunionRoomActivity_WonderNews }; -static const struct WindowTemplate gUnknown_8456CD0 = { +static const struct WindowTemplate sWindowTemplate_BButtonCancel = { .bg = 0, .tilemapLeft = 0, .tilemapTop = 0, @@ -180,7 +180,7 @@ static const u32 sLinkGroupToActivityAndCapacity[] = { [LINK_GROUP_WONDER_NEWS] = _8456CD8(ACTIVITY_ITEMTRADE, 5 | 0x30) }; -static const struct WindowTemplate gUnknown_8456CFC = { +static const struct WindowTemplate sWindowTemplate_List_PossibleGroupMembers = { .bg = 0, .tilemapLeft = 1, .tilemapTop = 3, @@ -190,7 +190,7 @@ static const struct WindowTemplate gUnknown_8456CFC = { .baseBlock = 0x044 }; -static const struct WindowTemplate gUnknown_8456D04 = { +static const struct WindowTemplate sWindowTemplate_NumPlayerMode = { .bg = 0, .tilemapLeft = 16, .tilemapTop = 3, @@ -200,7 +200,7 @@ static const struct WindowTemplate gUnknown_8456D04 = { .baseBlock = 0x0C6 }; -const struct ListMenuItem gUnknown_8456D0C[] = { +const struct ListMenuItem sListMenuItems_PossibleGroupMembers[] = { {gUnionRoomActivity_Blank, 0}, {gUnionRoomActivity_Blank, 1}, {gUnionRoomActivity_Blank, 2}, @@ -208,10 +208,10 @@ const struct ListMenuItem gUnknown_8456D0C[] = { {gUnionRoomActivity_Blank, 4} }; -static const struct ListMenuTemplate gUnknown_8456D34 = { - .items = gUnknown_8456D0C, +static const struct ListMenuTemplate sListMenuTemplate_PossibleGroupMembers = { + .items = sListMenuItems_PossibleGroupMembers, .moveCursorFunc = NULL, - .itemPrintFunc = sub_81164C8, + .itemPrintFunc = ItemPrintFunc_PossibleGroupMembers, .totalItems = 5, .maxShowed = 5, .windowId = 0, @@ -229,7 +229,7 @@ static const struct ListMenuTemplate gUnknown_8456D34 = { .cursorKind = 1 }; -static const struct WindowTemplate gUnknown_8456D4C = { +static const struct WindowTemplate sWindowTemplate_MysteryGiftList = { .bg = 0, .tilemapLeft = 1, .tilemapTop = 3, @@ -239,7 +239,7 @@ static const struct WindowTemplate gUnknown_8456D4C = { .baseBlock = 0x044 }; -static const struct WindowTemplate gUnknown_8456D54 = { +static const struct WindowTemplate sWindowTemplate_MysteryGiftPlayerNameAndId = { .bg = 0, .tilemapLeft = 20, .tilemapTop = 3, @@ -577,8 +577,8 @@ ALIGNED(4) static const u8 gUnknown_8457070[] = { ACTIVITY_CARD | IN_UNION_ROOM, ACTIVITY_ACCEPT | IN_UNION_ROOM, ACTIVITY_DECLINE | IN_UNION_ROOM, - 0x13 | IN_UNION_ROOM, - 0x14 | IN_UNION_ROOM, + ACTIVITY_NPCTALK | IN_UNION_ROOM, + ACTIVITY_PLYRTALK | IN_UNION_ROOM, 0xFF }; @@ -689,7 +689,7 @@ static void PrintNumPlayersWaitingForMsg(u8 windowId, u8 capacityCode, u8 count) CopyWindowToVram(windowId, 2); } -static void sub_8115924(u8 windowId) +static void PrintPlayerNameAndIdOnWindow(u8 windowId) { u8 text[12]; u8 text2[12]; @@ -761,10 +761,10 @@ static void Task_TryBecomeLinkLeader(u8 taskId) data->field_0->arr[0].groupScheduledAnim = UNION_ROOM_SPAWN_IN; data->field_0->arr[0].field_1A_1 = 0; data->field_0->arr[0].field_1B = 0; - data->listenTaskId = CreateTask_Task_ListenForPartnersWithCompatibleSerialNos(data->field_4, 0xFF); - data->bButtonCancelWindowId = AddWindow(&gUnknown_8456CD0); - data->listWindowId = AddWindow(&gUnknown_8456CFC); - data->nPlayerModeWindowId = AddWindow(&gUnknown_8456D04); + data->listenTaskId = CreateTask_ListenForPartnersWithCompatibleSerialNos(data->field_4, 0xFF); + data->bButtonCancelWindowId = AddWindow(&sWindowTemplate_BButtonCancel); + data->listWindowId = AddWindow(&sWindowTemplate_List_PossibleGroupMembers); + data->nPlayerModeWindowId = AddWindow(&sWindowTemplate_NumPlayerMode); FillWindowPixelBuffer(data->bButtonCancelWindowId, PIXEL_FILL(2)); UR_AddTextPrinterParameterized(data->bButtonCancelWindowId, 0, gUnknown_845747C, 8, 2, UR_COLOR_WHT_DKE_LTE); @@ -772,7 +772,7 @@ static void Task_TryBecomeLinkLeader(u8 taskId) CopyWindowToVram(data->bButtonCancelWindowId, 2); DrawStdWindowFrame(data->listWindowId, FALSE); - gMultiuseListMenuTemplate = gUnknown_8456D34; + gMultiuseListMenuTemplate = sListMenuTemplate_PossibleGroupMembers; gMultiuseListMenuTemplate.windowId = data->listWindowId; data->listTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0); @@ -806,7 +806,7 @@ static void Task_TryBecomeLinkLeader(u8 taskId) data->state = 6; break; case 6: - sub_8116444(data, 7, 10); + Leader_SetStateIfMemberListChanged(data, 7, 10); if (JOY_NEW(B_BUTTON)) { if (data->playerCount == 1) @@ -847,6 +847,7 @@ static void Task_TryBecomeLinkLeader(u8 taskId) } break; case 29: + // Other player cancelled. id = ((sPlayerActivityGroupSize & 0xF) == 2) ? 0 : 1; if (PrintOnTextbox(&data->textState, gUnknown_845767C[id])) { @@ -860,19 +861,19 @@ static void Task_TryBecomeLinkLeader(u8 taskId) } break; case 11: - switch (UnionRoomHandleYesNo(&data->textState, sub_80FA634(ReadAsU16(data->field_0->arr[data->playerCount].gname_uname.gname.unk_00.playerTrainerId), data->field_0->arr[data->playerCount].gname_uname.uname))) + switch (UnionRoomHandleYesNo(&data->textState, TrainerIdAndNameStillInPartnersList(ReadAsU16(data->field_0->arr[data->playerCount].gname_uname.gname.unk_00.playerTrainerId), data->field_0->arr[data->playerCount].gname_uname.uname))) { case 0: LoadWirelessStatusIndicatorSpriteGfx(); CreateWirelessStatusIndicatorSprite(0, 0); data->field_19 = 5; - sub_80FA670(5, ReadAsU16(data->field_0->arr[data->playerCount].gname_uname.gname.unk_00.playerTrainerId), data->field_0->arr[data->playerCount].gname_uname.uname); + SendByteToPartnerByIdAndName(5, ReadAsU16(data->field_0->arr[data->playerCount].gname_uname.gname.unk_00.playerTrainerId), data->field_0->arr[data->playerCount].gname_uname.uname); data->state = 12; break; case 1: case -1: data->field_19 = 6; - sub_80FA670(6, ReadAsU16(data->field_0->arr[data->playerCount].gname_uname.gname.unk_00.playerTrainerId), data->field_0->arr[data->playerCount].gname_uname.uname); + SendByteToPartnerByIdAndName(6, ReadAsU16(data->field_0->arr[data->playerCount].gname_uname.gname.unk_00.playerTrainerId), data->field_0->arr[data->playerCount].gname_uname.uname); data->state = 12; break; case -3: @@ -881,11 +882,13 @@ static void Task_TryBecomeLinkLeader(u8 taskId) } break; case 12: - val = sub_80FA6FC(ReadAsU16(data->field_0->arr[data->playerCount].gname_uname.gname.unk_00.playerTrainerId), data->field_0->arr[data->playerCount].gname_uname.uname); + val = WaitSendByteToPartnerByIdAndName(ReadAsU16(data->field_0->arr[data->playerCount].gname_uname.gname.unk_00.playerTrainerId), data->field_0->arr[data->playerCount].gname_uname.uname); if (val == 1) { + // Xfer complete if (data->field_19 == 5) { + // Sent "OK" data->field_0->arr[data->playerCount].field_1B = 0; RedrawListMenu(data->listTaskId); data->playerCount++; @@ -912,7 +915,8 @@ static void Task_TryBecomeLinkLeader(u8 taskId) } else { - sub_80FBD4C(data->field_0->arr[data->playerCount].gname_uname.uname, ReadAsU16(data->field_0->arr[data->playerCount].gname_uname.gname.unk_00.playerTrainerId)); + // Sent "no" + RequestDisconnectSlotByTrainerNameAndId(data->field_0->arr[data->playerCount].gname_uname.uname, ReadAsU16(data->field_0->arr[data->playerCount].gname_uname.gname.unk_00.playerTrainerId)); data->field_0->arr[data->playerCount].groupScheduledAnim = UNION_ROOM_SPAWN_NONE; UnionRoomLeaderField0CompactionAndCount(data->field_0); RedrawListMenu(data->listTaskId); @@ -923,6 +927,7 @@ static void Task_TryBecomeLinkLeader(u8 taskId) } else if (val == 2) { + // Disconnect RfuSetErrorStatus(0, 0); data->state = 4; } @@ -936,6 +941,7 @@ static void Task_TryBecomeLinkLeader(u8 taskId) data->state = 17; break; case 15: + // Are these members OK? if (PrintOnTextbox(&data->textState, gUnknown_8457514)) data->state = 16; break; @@ -943,10 +949,12 @@ static void Task_TryBecomeLinkLeader(u8 taskId) switch (UnionRoomHandleYesNo(&data->textState, FALSE)) { case 0: + // Yes data->state = 17; break; case 1: case -1: + // No if ((sPlayerActivityGroupSize & 0xF0) != 0) data->state = 30; else @@ -976,13 +984,15 @@ static void Task_TryBecomeLinkLeader(u8 taskId) } break; case 17: - if (!sub_8116444(data, 7, 23)) + // Go to start + // Final membership check + if (!Leader_SetStateIfMemberListChanged(data, 7, 23)) data->state = 18; break; case 18: - if (sub_80F8F40()) + if (LmanAcceptSlotFlagIsNotZero()) { - if (sub_80F8F7C(FALSE)) + if (WaitRfuState(FALSE)) { data->state = 26; } @@ -994,14 +1004,16 @@ static void Task_TryBecomeLinkLeader(u8 taskId) } break; case 30: + // Mode with members will be canceled. if (PrintOnTextbox(&data->textState, gUnknown_8457610)) data->state = 23; break; case 21: case 23: + // An error occurred. Please start over from the beginning. DestroyWirelessStatusIndicatorSprite(); LinkRfu_Shutdown(); - sub_81161E4(data); + Leader_DestroyResources(data); data->state++; break; case 24: @@ -1023,9 +1035,9 @@ static void Task_TryBecomeLinkLeader(u8 taskId) { if (gReceivedRemoteLinkPlayers != 0) { - sub_80FAFE0(TRUE); - CreateTask_sub_8117900(); - sub_81161E4(data); + UpdateGameData_GroupLockedIn(TRUE); + CreateTask_RunScriptAndFadeToActivity(); + Leader_DestroyResources(data); DestroyTask(taskId); } } @@ -1033,7 +1045,7 @@ static void Task_TryBecomeLinkLeader(u8 taskId) } } -static void sub_81161E4(struct UnkStruct_Leader * data) +static void Leader_DestroyResources(struct UnkStruct_Leader * data) { ClearWindowTilemap(data->nPlayerModeWindowId); ClearStdWindowAndFrame(data->nPlayerModeWindowId, FALSE); @@ -1051,95 +1063,95 @@ static void sub_81161E4(struct UnkStruct_Leader * data) Free(data->field_4); } -static void sub_8116244(u8 *dst, u8 caseId) +static void Leader_GetAcceptNewMemberPrompt(u8 *dst, u8 activity) { - switch (caseId) + switch (activity) { - case 1: - case 2: - case 4: + case ACTIVITY_BATTLE: + case ACTIVITY_DBLBATTLE: + case ACTIVITY_TRADE: StringExpandPlaceholders(dst, gUnknown_84574A0); break; - case 21: - case 22: + case ACTIVITY_WCARD2: + case ACTIVITY_WNEWS2: StringExpandPlaceholders(dst, gUnknown_84574C4); break; - case 3: - case 9: - case 10: - case 11: + case ACTIVITY_MLTBATTLE: + case ACTIVITY_PJUMP: + case ACTIVITY_BCRUSH: + case ACTIVITY_BPICK: StringExpandPlaceholders(dst, gUnknown_84574EC); break; } } -static void sub_81162E0(u8 *dst, u8 caseId) +static void GetYouDeclinedTheOfferMessage(u8 *dst, u8 activity) { - switch (caseId) + switch (activity) { - case 65: - case 68: + case ACTIVITY_BATTLE | IN_UNION_ROOM: + case ACTIVITY_TRADE | IN_UNION_ROOM: StringExpandPlaceholders(dst, gUnknown_8457E28); break; - case 69: - case 72: + case ACTIVITY_CHAT | IN_UNION_ROOM: + case ACTIVITY_CARD | IN_UNION_ROOM: StringExpandPlaceholders(dst, gUnknown_8457E44); break; } } -static void sub_811631C(u8 *dst, u8 caseId) +static void GetYouAskedToJoinGroupPleaseWaitMessage(u8 *dst, u8 activity) { - switch (caseId) + switch (activity) { - case 1: - case 2: - case 4: - case 21: - case 22: + case ACTIVITY_BATTLE: + case ACTIVITY_DBLBATTLE: + case ACTIVITY_TRADE: + case ACTIVITY_WCARD2: + case ACTIVITY_WNEWS2: StringExpandPlaceholders(dst, gUnknown_8459238); break; - case 3: - case 9: - case 10: - case 11: + case ACTIVITY_MLTBATTLE: + case ACTIVITY_PJUMP: + case ACTIVITY_BCRUSH: + case ACTIVITY_BPICK: StringExpandPlaceholders(dst, gUnknown_8459250); break; } } -static void sub_81163B0(u8 *dst, u8 caseId) +static void GetGroupLeaderSentAnOKMessage(u8 *dst, u8 caseId) { switch (caseId) { - case 1: - case 2: - case 4: - case 21: - case 22: + case ACTIVITY_BATTLE: + case ACTIVITY_DBLBATTLE: + case ACTIVITY_TRADE: + case ACTIVITY_WCARD2: + case ACTIVITY_WNEWS2: StringExpandPlaceholders(dst, gUnknown_84576AC); break; - case 3: - case 9: - case 10: - case 11: + case ACTIVITY_MLTBATTLE: + case ACTIVITY_PJUMP: + case ACTIVITY_BCRUSH: + case ACTIVITY_BPICK: StringExpandPlaceholders(dst, gUnknown_84576C4); break; } } -static bool8 sub_8116444(struct UnkStruct_Leader * data, u32 state1, u32 state2) +static bool8 Leader_SetStateIfMemberListChanged(struct UnkStruct_Leader * data, u32 state1, u32 state2) { - switch (sub_8116524(data->field_0)) + switch (LeaderUpdateGroupMembership(data->field_0)) { - case 1: + case UNION_ROOM_SPAWN_IN: PlaySE(SE_PC_LOGIN); RedrawListMenu(data->listTaskId); IntlConvPartnerUname7(gStringVar2, data->field_0->arr[data->playerCount]); - sub_8116244(gStringVar4, sPlayerCurrActivity); + Leader_GetAcceptNewMemberPrompt(gStringVar4, sPlayerCurrActivity); data->state = state1; break; - case 2: + case UNION_ROOM_SPAWN_OUT: RfuSetErrorStatus(0, 0); RedrawListMenu(data->listTaskId); data->state = state2; @@ -1149,29 +1161,29 @@ static bool8 sub_8116444(struct UnkStruct_Leader * data, u32 state1, u32 state2) return FALSE; } -static void sub_81164C8(u8 windowId, s32 itemId, u8 y) +static void ItemPrintFunc_PossibleGroupMembers(u8 windowId, s32 itemId, u8 y) { struct UnkStruct_Leader * data = sUnionRoomMain.leader; u8 var = 0; switch (data->field_0->arr[itemId].groupScheduledAnim) { - case 1: + case UNION_ROOM_SPAWN_IN: if (data->field_0->arr[itemId].field_1B != 0) - var = 2; + var = UR_COLOR_GRN_WHT_LTG; break; - case 2: - var = 1; + case UNION_ROOM_SPAWN_OUT: + var = UR_COLOR_RED_WHT_LTR; break; } - sub_811A910(windowId, 0, y, &data->field_0->arr[itemId], var, itemId); + PrintGroupMemberCandidateOnWindowWithColor(windowId, 0, y, &data->field_0->arr[itemId], var, itemId); } -static u8 sub_8116524(struct UnkStruct_Main0 * arg0) +static u8 LeaderUpdateGroupMembership(struct UnkStruct_Main0 * arg0) { struct UnkStruct_Leader * data = sUnionRoomMain.leader; - u8 ret = 0; + u8 ret = UNION_ROOM_SPAWN_NONE; u8 i; s32 id; @@ -1180,7 +1192,7 @@ static u8 sub_8116524(struct UnkStruct_Main0 * arg0) u16 var = data->field_0->arr[i].groupScheduledAnim; if (var == UNION_ROOM_SPAWN_IN) { - id = sub_811A748(&data->field_0->arr[i], data->field_4->arr); + id = Findx20Inx1CArray(&data->field_0->arr[i], data->field_4->arr); if (id != 0xFF) { data->field_0->arr[i].gname_uname = data->field_4->arr[id].gname_uname; @@ -1189,7 +1201,7 @@ static u8 sub_8116524(struct UnkStruct_Main0 * arg0) else { data->field_0->arr[i].groupScheduledAnim = UNION_ROOM_SPAWN_OUT; - ret = 2; + ret = UNION_ROOM_SPAWN_OUT; } } } @@ -1197,12 +1209,12 @@ static u8 sub_8116524(struct UnkStruct_Main0 * arg0) for (id = 0; id < RFU_CHILD_MAX; id++) Appendx1Ctox20(data->field_0->arr, &data->field_4->arr[id], 5); - if (ret != 2) + if (ret != UNION_ROOM_SPAWN_OUT) { for (id = 0; id < 5; id++) { if (data->field_0->arr[id].field_1B != 0) - ret = 1; + ret = UNION_ROOM_SPAWN_IN; } } @@ -1235,7 +1247,7 @@ static u8 UnionRoomLeaderField0CompactionAndCount(struct UnkStruct_Main0 * arg0) data->field_0->arr[copiedCount].gname_uname = sUnionGnameUnamePair_Dummy; data->field_0->arr[copiedCount].field_18 = 0; data->field_0->arr[copiedCount].groupScheduledAnim = UNION_ROOM_SPAWN_NONE; - data->field_0->arr[copiedCount].field_1A_1 = 0; + data->field_0->arr[copiedCount].field_1A_1 = FALSE; data->field_0->arr[copiedCount].field_1B = 0; } @@ -1291,28 +1303,28 @@ static void Task_TryJoinLinkGroup(u8 taskId) case 2: BlankUnkStruct_x1CArray(data->field_4->arr, 4); BlankUnkStruct_x20Array(data->field_0->arr, 16); - data->listenTaskId = CreateTask_Task_ListenForPartnersWithCompatibleSerialNos(data->field_4, gSpecialVar_0x8004); - data->field_C = AddWindow(&gUnknown_8456CD0); - data->listWindowId = AddWindow(&gUnknown_8456D4C); - data->field_D = AddWindow(&gUnknown_8456D54); + data->listenTaskId = CreateTask_ListenForPartnersWithCompatibleSerialNos(data->field_4, gSpecialVar_0x8004); + data->bButtonCancelWindowId = AddWindow(&sWindowTemplate_BButtonCancel); + data->listWindowId = AddWindow(&sWindowTemplate_MysteryGiftList); + data->playerNameAndIdWindowId = AddWindow(&sWindowTemplate_MysteryGiftPlayerNameAndId); - FillWindowPixelBuffer(data->field_C, PIXEL_FILL(2)); - UR_AddTextPrinterParameterized(data->field_C, 0, gUnknown_8458FC8, 8, 2, UR_COLOR_WHT_DKE_LTE); - PutWindowTilemap(data->field_C); - CopyWindowToVram(data->field_C, 2); + FillWindowPixelBuffer(data->bButtonCancelWindowId, PIXEL_FILL(2)); + UR_AddTextPrinterParameterized(data->bButtonCancelWindowId, 0, gUnknown_8458FC8, 8, 2, UR_COLOR_WHT_DKE_LTE); + PutWindowTilemap(data->bButtonCancelWindowId); + CopyWindowToVram(data->bButtonCancelWindowId, 2); DrawStdWindowFrame(data->listWindowId, FALSE); gMultiuseListMenuTemplate = sListMenuTemplate_UnionRoomGroups; gMultiuseListMenuTemplate.windowId = data->listWindowId; data->listTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0); - DrawStdWindowFrame(data->field_D, FALSE); - PutWindowTilemap(data->field_D); - sub_8115924(data->field_D); - CopyWindowToVram(data->field_D, 2); + DrawStdWindowFrame(data->playerNameAndIdWindowId, FALSE); + PutWindowTilemap(data->playerNameAndIdWindowId); + PrintPlayerNameAndIdOnWindow(data->playerNameAndIdWindowId); + CopyWindowToVram(data->playerNameAndIdWindowId, 2); CopyBgTilemapBufferToVram(0); - data->field_F = 0; + data->leaderId = 0; data->state = 3; break; case 3: @@ -1331,17 +1343,18 @@ static void Task_TryJoinLinkGroup(u8 taskId) u32 unusedVar; unusedVar = data->field_0->arr[id].gname_uname.gname.activity; - if (data->field_0->arr[id].groupScheduledAnim == UNION_ROOM_SPAWN_IN && !data->field_0->arr[id].gname_uname.gname.unk_0a_7) + if (data->field_0->arr[id].groupScheduledAnim == UNION_ROOM_SPAWN_IN && !data->field_0->arr[id].gname_uname.gname.started) { - u32 var = sub_8116D10(data, id); + u32 var = IsTryingToTradeWithHoennTooSoon(data, id); if (var == 0) { - sub_8116D60(data, id); + AskToJoinRfuGroup(data, id); data->state = 5; PlaySE(SE_PN_ON); } else { + // Postgame flags not both set StringCopy(gStringVar4, gUnknown_8457608[var - 1]); data->state = 18; PlaySE(SE_PN_ON); @@ -1363,17 +1376,17 @@ static void Task_TryJoinLinkGroup(u8 taskId) } break; case 5: - sub_811631C(gStringVar4, sPlayerCurrActivity); + GetYouAskedToJoinGroupPleaseWaitMessage(gStringVar4, sPlayerCurrActivity); if (PrintOnTextbox(&data->textState, gStringVar4)) { - IntlConvPartnerUname7(gStringVar1, data->field_0->arr[data->field_F]); + IntlConvPartnerUname7(gStringVar1, data->field_0->arr[data->leaderId]); data->state = 6; } break; case 6: if (gReceivedRemoteLinkPlayers != 0) { - sPlayerCurrActivity = data->field_0->arr[data->field_F].gname_uname.gname.activity; + sPlayerCurrActivity = data->field_0->arr[data->leaderId].gname_uname.gname.activity; RfuSetErrorStatus(0, 0); switch (sPlayerCurrActivity) { @@ -1405,7 +1418,7 @@ static void Task_TryJoinLinkGroup(u8 taskId) data->state = 14; break; case 5: - sub_81163B0(gStringVar4, sPlayerCurrActivity); + GetGroupLeaderSentAnOKMessage(gStringVar4, sPlayerCurrActivity); if (PrintOnTextbox(&data->textState, gStringVar4)) { RfuSetErrorStatus(7, 0); @@ -1414,7 +1427,8 @@ static void Task_TryJoinLinkGroup(u8 taskId) } break; case 7: - if (data->delayBeforePrint > 0xF0) + // Wait 4 seconds + if (data->delayBeforePrint > 240) { if (PrintOnTextbox(&data->textState, gStringVar4)) { @@ -1440,7 +1454,7 @@ static void Task_TryJoinLinkGroup(u8 taskId) switch (UnionRoomHandleYesNo(&data->textState, RfuGetErrorStatus())) { case 0: - sub_80FA6BC(); + LinkRfuNIsend8(); data->state = 9; RedrawListMenu(data->listTaskId); break; @@ -1464,15 +1478,15 @@ static void Task_TryJoinLinkGroup(u8 taskId) case 14: case 18: case 20: - ClearWindowTilemap(data->field_D); - ClearStdWindowAndFrame(data->field_D, FALSE); + ClearWindowTilemap(data->playerNameAndIdWindowId); + ClearStdWindowAndFrame(data->playerNameAndIdWindowId, FALSE); DestroyListMenuTask(data->listTaskId, 0, 0); - ClearWindowTilemap(data->field_C); + ClearWindowTilemap(data->bButtonCancelWindowId); ClearStdWindowAndFrame(data->listWindowId, FALSE); CopyBgTilemapBufferToVram(0); - RemoveWindow(data->field_D); + RemoveWindow(data->playerNameAndIdWindowId); RemoveWindow(data->listWindowId); - RemoveWindow(data->field_C); + RemoveWindow(data->bButtonCancelWindowId); DestroyTask(data->listenTaskId); Free(data->field_0); Free(data->field_4); @@ -1508,17 +1522,17 @@ static void Task_TryJoinLinkGroup(u8 taskId) break; case 23: DestroyTask(taskId); - sub_811A41C(); + JoinGroup_BlankBg0AndEnableScriptContexts(); LinkRfu_Shutdown(); break; case 21: - CreateTask_sub_8117900(); + CreateTask_RunScriptAndFadeToActivity(); DestroyTask(taskId); break; } } -static u32 sub_8116D10(struct UnkStruct_Group * arg0, s32 id) +static u32 IsTryingToTradeWithHoennTooSoon(struct UnkStruct_Group * arg0, s32 id) { struct UnkStruct_x20 * structPtr = &arg0->field_0->arr[id]; @@ -1537,15 +1551,15 @@ static u32 sub_8116D10(struct UnkStruct_Group * arg0, s32 id) return 2; } -static void sub_8116D60(struct UnkStruct_Group * data, s32 id) +static void AskToJoinRfuGroup(struct UnkStruct_Group * data, s32 id) { - data->field_F = id; + data->leaderId = id; LoadWirelessStatusIndicatorSpriteGfx(); CreateWirelessStatusIndicatorSprite(0, 0); RedrawListMenu(data->listTaskId); - IntlConvPartnerUname7(gStringVar1, data->field_0->arr[data->field_F]); - sub_80FB008(sLinkGroupToURoomActivity[gSpecialVar_0x8004], 0, 1); - sub_80FBF54(data->field_0->arr[data->field_F].gname_uname.uname, ReadAsU16(data->field_0->arr[data->field_F].gname_uname.gname.unk_00.playerTrainerId)); + 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)); } u8 CreateTask_ListenToWireless(void) @@ -1583,8 +1597,8 @@ static void Task_ListenToWireless(u8 taskId) case 2: BlankUnkStruct_x1CArray(data->field_4->arr, 4); BlankUnkStruct_x20Array(data->field_0->arr, 16); - data->listenTaskId = CreateTask_Task_ListenForPartnersWithCompatibleSerialNos(data->field_4, 0xFF); - data->field_F = 0; + data->listenTaskId = CreateTask_ListenForPartnersWithCompatibleSerialNos(data->field_4, 0xFF); + data->leaderId = 0; data->state = 3; break; case 3: @@ -1627,13 +1641,13 @@ static bool32 IsPartnerActivityAcceptable(u32 activity, u32 group) return FALSE; } -static u8 sub_8116F5C(struct UnkStruct_Group * data, u32 id) +static u8 URoomGroupListGetTextColor(struct UnkStruct_Group * data, u32 id) { if (data->field_0->arr[id].groupScheduledAnim == UNION_ROOM_SPAWN_IN) { - if (data->field_0->arr[id].gname_uname.gname.unk_0a_7) + if (data->field_0->arr[id].gname_uname.gname.started) return UR_COLOR_WHT_WHT_LTE; - else if (data->field_0->arr[id].field_1A_1 != 0) + else if (data->field_0->arr[id].field_1A_1) return UR_COLOR_RED_WHT_LTR; else if (data->field_0->arr[id].field_1B != 0) return UR_COLOR_GRN_WHT_LTG; @@ -1645,9 +1659,9 @@ static u8 sub_8116F5C(struct UnkStruct_Group * data, u32 id) static void ListMenuItemPrintFunc_UnionRoomGroups(u8 windowId, s32 itemId, u8 y) { struct UnkStruct_Group * data = sUnionRoomMain.group; - u8 color_idx = sub_8116F5C(data, itemId); + u8 color_idx = URoomGroupListGetTextColor(data, itemId); - sub_811A81C(windowId, 8, y, &data->field_0->arr[itemId], color_idx, itemId); + PrintUnionRoomGroupOnWindow(windowId, 8, y, &data->field_0->arr[itemId], color_idx, itemId); } static u8 GetNewLeaderCandidate(void) @@ -1661,7 +1675,7 @@ static u8 GetNewLeaderCandidate(void) { if (data->field_0->arr[i].groupScheduledAnim != UNION_ROOM_SPAWN_NONE) { - id = sub_811A748(&data->field_0->arr[i], data->field_4->arr); + id = Findx20Inx1CArray(&data->field_0->arr[i], data->field_4->arr); if (id != 0xFF) { if (data->field_0->arr[i].groupScheduledAnim == UNION_ROOM_SPAWN_IN) @@ -1669,7 +1683,7 @@ static u8 GetNewLeaderCandidate(void) if (AreUnionRoomPlayerGnamesDifferent(&data->field_0->arr[i].gname_uname, &data->field_4->arr[id].gname_uname)) { data->field_0->arr[i].gname_uname = data->field_4->arr[id].gname_uname; - data->field_0->arr[i].field_1B = 0x40; + data->field_0->arr[i].field_1B = 64; ret = 1; } else @@ -1685,7 +1699,7 @@ static u8 GetNewLeaderCandidate(void) else { data->field_0->arr[i].groupScheduledAnim = UNION_ROOM_SPAWN_IN; - data->field_0->arr[i].field_1B = 0x40; + data->field_0->arr[i].field_1B = 64; ret = 1; } @@ -1715,15 +1729,15 @@ static u8 GetNewLeaderCandidate(void) return ret; } -static void sub_8117100(u8 taskId) +static void Task_CallCB2ReturnFromLinkTrade(u8 taskId) { CB2_ReturnFromLinkTrade(); DestroyTask(taskId); } -u8 sub_8117118(void) +u8 UnionRoom_CreateTask_CallBC2ReturnFromLinkTrade(void) { - u8 taskId = CreateTask(sub_8117100, 0); + u8 taskId = CreateTask(Task_CallCB2ReturnFromLinkTrade, 0); return taskId; } @@ -1792,7 +1806,7 @@ static void Task_ExchangeCards(u8 taskId) if (GetLinkPlayerCount() == 2) { recvBuff = gBlockRecvBuffer[GetMultiplayerId() ^ 1]; - sub_81446D0(recvBuff[sizeof(struct TrainerCard) / 2]); + MEventHandleReceivedWonderCard(recvBuff[sizeof(struct TrainerCard) / 2]); } else { @@ -1826,7 +1840,7 @@ static void CB2_ShowCard(void) BuildOamBuffer(); } -void sub_81173C0(u16 battleFlags) +void StartUnionRoomBattle(u16 battleFlags) { HealPlayerParty(); SavePlayerParty(); @@ -1986,7 +2000,7 @@ static void Task_StartActivity(u8 taskId) ScriptContext2_Disable(); } -static void Task_sub_8117900(u8 taskId) +static void Task_RunScriptAndFadeToActivity(u8 taskId) { s16 *data = gTasks[taskId].data; u16 *sendBuff = (u16*)(gBlockSendBuffer); @@ -2022,9 +2036,9 @@ static void Task_sub_8117900(u8 taskId) } } -static void CreateTask_sub_8117900(void) +static void CreateTask_RunScriptAndFadeToActivity(void) { - CreateTask(Task_sub_8117900, 0); + CreateTask(Task_RunScriptAndFadeToActivity, 0); } static void CreateTask_StartActivity(void) @@ -2074,15 +2088,15 @@ static void Task_MEvent_Leader(u8 taskId) LinkRfu3_SetGnameUnameFromStaticBuffers(&data->field_0->arr[0].gname_uname.gname, data->field_0->arr[0].gname_uname.uname); data->field_0->arr[0].field_18 = 0; data->field_0->arr[0].groupScheduledAnim = UNION_ROOM_SPAWN_IN; - data->field_0->arr[0].field_1A_1 = 0; + data->field_0->arr[0].field_1A_1 = FALSE; data->field_0->arr[0].field_1B = 0; - data->listenTaskId = CreateTask_Task_ListenForPartnersWithCompatibleSerialNos(data->field_4, 0xFF); + data->listenTaskId = CreateTask_ListenForPartnersWithCompatibleSerialNos(data->field_4, 0xFF); - winTemplate = gUnknown_8456CFC; + winTemplate = sWindowTemplate_List_PossibleGroupMembers; winTemplate.baseBlock = GetMysteryGiftBaseBlock(); data->listWindowId = AddWindow(&winTemplate); MG_DrawTextBorder(data->listWindowId); - gMultiuseListMenuTemplate = gUnknown_8456D34; + gMultiuseListMenuTemplate = sListMenuTemplate_PossibleGroupMembers; gMultiuseListMenuTemplate.windowId = data->listWindowId; data->listTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0); @@ -2100,7 +2114,7 @@ static void Task_MEvent_Leader(u8 taskId) data->state = 4; break; case 4: - sub_8116444(data, 5, 6); + Leader_SetStateIfMemberListChanged(data, 5, 6); if (JOY_NEW(B_BUTTON)) { data->state = 13; @@ -2128,19 +2142,19 @@ static void Task_MEvent_Leader(u8 taskId) data->field_0->arr[data->playerCount].field_1B = 0; RedrawListMenu(data->listTaskId); data->field_19 = 5; - sub_80FA670(5, ReadAsU16(data->field_0->arr[data->playerCount].gname_uname.gname.unk_00.playerTrainerId), data->field_0->arr[data->playerCount].gname_uname.uname); + SendByteToPartnerByIdAndName(5, ReadAsU16(data->field_0->arr[data->playerCount].gname_uname.gname.unk_00.playerTrainerId), data->field_0->arr[data->playerCount].gname_uname.uname); data->state = 8; break; case 1: case -1: data->field_19 = 6; - sub_80FA670(6, ReadAsU16(data->field_0->arr[data->playerCount].gname_uname.gname.unk_00.playerTrainerId), data->field_0->arr[data->playerCount].gname_uname.uname); + SendByteToPartnerByIdAndName(6, ReadAsU16(data->field_0->arr[data->playerCount].gname_uname.gname.unk_00.playerTrainerId), data->field_0->arr[data->playerCount].gname_uname.uname); data->state = 8; break; } break; case 8: - val = sub_80FA6FC(ReadAsU16(data->field_0->arr[data->playerCount].gname_uname.gname.unk_00.playerTrainerId), data->field_0->arr[data->playerCount].gname_uname.uname); + val = WaitSendByteToPartnerByIdAndName(ReadAsU16(data->field_0->arr[data->playerCount].gname_uname.gname.unk_00.playerTrainerId), data->field_0->arr[data->playerCount].gname_uname.uname); if (val == 1) { if (data->field_19 == 5) @@ -2155,7 +2169,7 @@ static void Task_MEvent_Leader(u8 taskId) } else { - sub_80FBD4C(data->field_0->arr[data->playerCount].gname_uname.uname, ReadAsU16(data->field_0->arr[data->playerCount].gname_uname.gname.unk_00.playerTrainerId)); + RequestDisconnectSlotByTrainerNameAndId(data->field_0->arr[data->playerCount].gname_uname.uname, ReadAsU16(data->field_0->arr[data->playerCount].gname_uname.gname.unk_00.playerTrainerId)); data->field_0->arr[data->playerCount].groupScheduledAnim = UNION_ROOM_SPAWN_NONE; UnionRoomLeaderField0CompactionAndCount(data->field_0); RedrawListMenu(data->listTaskId); @@ -2179,13 +2193,13 @@ static void Task_MEvent_Leader(u8 taskId) data->state = 11; break; case 11: - if (!sub_8116444(data, 5, 6)) + if (!Leader_SetStateIfMemberListChanged(data, 5, 6)) data->state = 12; break; case 12: - if (sub_80F8F40()) + if (LmanAcceptSlotFlagIsNotZero()) { - sub_80F8F7C(FALSE); + WaitRfuState(FALSE); data->state = 15; } else @@ -2220,7 +2234,7 @@ static void Task_MEvent_Leader(u8 taskId) } else if (gReceivedRemoteLinkPlayers != 0) { - sub_80FAFE0(TRUE); + UpdateGameData_GroupLockedIn(TRUE); data->state++; } break; @@ -2281,27 +2295,27 @@ static void Task_CardOrNewsWithFriend(u8 taskId) case 2: BlankUnkStruct_x1CArray(data->field_4->arr, 4); BlankUnkStruct_x20Array(data->field_0->arr, 16); - data->listenTaskId = CreateTask_Task_ListenForPartnersWithCompatibleSerialNos(data->field_4, data->cardOrNews + LINK_GROUP_WONDER_CARD); + data->listenTaskId = CreateTask_ListenForPartnersWithCompatibleSerialNos(data->field_4, data->cardOrNews + LINK_GROUP_WONDER_CARD); - winTemplate1 = gUnknown_8456D4C; + winTemplate1 = sWindowTemplate_MysteryGiftList; winTemplate1.baseBlock = GetMysteryGiftBaseBlock(); data->listWindowId = AddWindow(&winTemplate1); - data->field_D = AddWindow(&gUnknown_8456D54); + data->playerNameAndIdWindowId = AddWindow(&sWindowTemplate_MysteryGiftPlayerNameAndId); MG_DrawTextBorder(data->listWindowId); gMultiuseListMenuTemplate = sListMenuTemplate_UnionRoomGroups; gMultiuseListMenuTemplate.windowId = data->listWindowId; data->listTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0); - MG_DrawTextBorder(data->field_D); - FillWindowPixelBuffer(data->field_D, PIXEL_FILL(1)); - PutWindowTilemap(data->field_D); - sub_8115924(data->field_D); - CopyWindowToVram(data->field_D, 2); + MG_DrawTextBorder(data->playerNameAndIdWindowId); + FillWindowPixelBuffer(data->playerNameAndIdWindowId, PIXEL_FILL(1)); + PutWindowTilemap(data->playerNameAndIdWindowId); + PrintPlayerNameAndIdOnWindow(data->playerNameAndIdWindowId); + CopyWindowToVram(data->playerNameAndIdWindowId, 2); CopyBgTilemapBufferToVram(0); - data->field_F = 0; + data->leaderId = 0; data->state = 3; break; case 3: @@ -2321,14 +2335,14 @@ static void Task_CardOrNewsWithFriend(u8 taskId) u32 unusedVar; unusedVar = data->field_0->arr[id].gname_uname.gname.activity; - if (data->field_0->arr[id].groupScheduledAnim == UNION_ROOM_SPAWN_IN && !data->field_0->arr[id].gname_uname.gname.unk_0a_7) + if (data->field_0->arr[id].groupScheduledAnim == UNION_ROOM_SPAWN_IN && !data->field_0->arr[id].gname_uname.gname.started) { - data->field_F = id; + data->leaderId = id; LoadWirelessStatusIndicatorSpriteGfx(); CreateWirelessStatusIndicatorSprite(0, 0); RedrawListMenu(data->listTaskId); - IntlConvPartnerUname(gStringVar1, data->field_0->arr[data->field_F]); - sub_80FBF54(data->field_0->arr[data->field_F].gname_uname.uname, ReadAsU16(data->field_0->arr[data->field_F].gname_uname.gname.unk_00.playerTrainerId)); + 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)); PlaySE(SE_PN_ON); data->state = 4; } @@ -2346,13 +2360,13 @@ static void Task_CardOrNewsWithFriend(u8 taskId) break; case 4: AddTextPrinterToWindow1(gUnknown_8459238); - IntlConvPartnerUname(gStringVar1, data->field_0->arr[data->field_F]); + IntlConvPartnerUname(gStringVar1, data->field_0->arr[data->leaderId]); data->state = 5; break; case 5: if (gReceivedRemoteLinkPlayers != 0) { - sPlayerCurrActivity = data->field_0->arr[data->field_F].gname_uname.gname.activity; + sPlayerCurrActivity = data->field_0->arr[data->leaderId].gname_uname.gname.activity; data->state = 10; } @@ -2374,7 +2388,7 @@ static void Task_CardOrNewsWithFriend(u8 taskId) case 10: DestroyListMenuTask(data->listTaskId, 0, 0); CopyBgTilemapBufferToVram(0); - RemoveWindow(data->field_D); + RemoveWindow(data->playerNameAndIdWindowId); RemoveWindow(data->listWindowId); DestroyTask(data->listenTaskId); Free(data->field_0); @@ -2447,11 +2461,11 @@ static void Task_CardOrNewsOverWireless(u8 taskId) case 2: BlankUnkStruct_x1CArray(data->field_4->arr, 4); BlankUnkStruct_x20Array(data->field_0->arr, 16); - data->listenTaskId = CreateTask_Task_ListenForPartnersWithSerial7F7D(data->field_4, data->cardOrNews + LINK_GROUP_WONDER_CARD); + data->listenTaskId = CreateTask_ListenForPartnersWithSerial7F7D(data->field_4, data->cardOrNews + LINK_GROUP_WONDER_CARD); if (data->field_13 != 0) { - winTemplate = gUnknown_8456D4C; + winTemplate = sWindowTemplate_MysteryGiftList; winTemplate.baseBlock = GetMysteryGiftBaseBlock(); data->listWindowId = AddWindow(&winTemplate); @@ -2463,7 +2477,7 @@ static void Task_CardOrNewsOverWireless(u8 taskId) CopyBgTilemapBufferToVram(0); } - data->field_F = 0; + data->leaderId = 0; data->state = 3; break; case 3: @@ -2479,17 +2493,17 @@ static void Task_CardOrNewsOverWireless(u8 taskId) case 0: if (data->field_13 != 0) id = ListMenu_ProcessInput(data->listTaskId); - if (data->field_14 > 120) + if (data->refreshTimer > 120) { - if (data->field_0->arr[0].groupScheduledAnim == UNION_ROOM_SPAWN_IN && !data->field_0->arr[0].gname_uname.gname.unk_0a_7) + if (data->field_0->arr[0].groupScheduledAnim == UNION_ROOM_SPAWN_IN && !data->field_0->arr[0].gname_uname.gname.started) { if (GetGnameWonderFlagByLinkGroup(&data->field_0->arr[0].gname_uname.gname, data->cardOrNews + LINK_GROUP_WONDER_CARD)) { - data->field_F = 0; - data->field_14 = 0; + data->leaderId = 0; + data->refreshTimer = 0; LoadWirelessStatusIndicatorSpriteGfx(); CreateWirelessStatusIndicatorSprite(0, 0); - sub_80FBF54(data->field_0->arr[0].gname_uname.uname, ReadAsU16(data->field_0->arr[0].gname_uname.gname.unk_00.playerTrainerId)); + CreateTask_sub_80FBE80(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; } @@ -2503,21 +2517,21 @@ static void Task_CardOrNewsOverWireless(u8 taskId) else if (JOY_NEW(B_BUTTON)) { data->state = 6; - data->field_14 = 0; + data->refreshTimer = 0; } - data->field_14++; + data->refreshTimer++; break; } break; case 4: AddTextPrinterToWindow1(gUnknown_845928C); - IntlConvPartnerUname(gStringVar1, data->field_0->arr[data->field_F]); + IntlConvPartnerUname(gStringVar1, data->field_0->arr[data->leaderId]); data->state = 5; break; case 5: if (gReceivedRemoteLinkPlayers != 0) { - sPlayerCurrActivity = data->field_0->arr[data->field_F].gname_uname.gname.activity; + sPlayerCurrActivity = data->field_0->arr[data->leaderId].gname_uname.gname.activity; data->state = 12; } @@ -2607,7 +2621,7 @@ void UnionRoomSpecial(void) dataPtr->field_12 = 0; gSpecialVar_Result = 0; - sub_8107D38(0xD0, 1); + ListMenuLoadStdPalAt(0xD0, 1); } static u16 ReadAsU16(const u8 *ptr) @@ -2625,7 +2639,7 @@ static void UnionRoom_ScheduleFieldMessageWithFollowupState(u32 nextState, const StringExpandPlaceholders(gStringVar4, src); } -static void sub_811868C(const u8 *src) +static void UnionRoom_ScheduleFieldMessageAndExit(const u8 *src) { struct UnkStruct_URoom * data = sUnionRoomMain.uRoom; @@ -2634,12 +2648,12 @@ static void sub_811868C(const u8 *src) StringExpandPlaceholders(gStringVar4, src); } -static void sub_81186B0(struct UnkStruct_URoom * data) +static void BackUpURoomField0ToDecompressionBuffer(struct UnkStruct_URoom * data) { memcpy(&gDecompressionBuffer[0x3F00], data->field_0, 8 * sizeof(struct UnkStruct_x20)); } -static void sub_81186C8(struct UnkStruct_URoom * data) +static void RestoreURoomField0FromDecompressionBuffer(struct UnkStruct_URoom * data) { memcpy(data->field_0, &gDecompressionBuffer[0x3F00], 8 * sizeof(struct UnkStruct_x20)); } @@ -2661,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 = sub_8119E84(data->field_C, data->field_4, 9); + data->field_20 = CreateTask_SearchForChildOrParent(data->field_C, data->field_4, 9); ZeroUnionObjWork(data->unionObjs); MakeGroupAssemblyAreasPassable(); data->state = 1; @@ -2692,12 +2706,12 @@ static void Task_ResumeUnionRoom(u8 taskId) switch (sUnionRoomTrade.field_0) { case 1: - sub_80FB008(0x14 | IN_UNION_ROOM, 0, 1); + UpdateGameDataWithActivitySpriteGendersFlag(ACTIVITY_PLYRTALK | IN_UNION_ROOM, 0, TRUE); if (id >= PARTY_SIZE) { ResetUnionRoomTrade(&sUnionRoomTrade); RfuUpdatePlayerGnameStateAndSend(0, 0, 0); - sub_811868C(gUnknown_8458D54); + UnionRoom_ScheduleFieldMessageAndExit(gUnknown_8458D54); } else if (!RegisterTradeMonAndGetIsEgg(GetCursorSelectionMonId(), &sUnionRoomTrade)) { @@ -2709,15 +2723,15 @@ static void Task_ResumeUnionRoom(u8 taskId) } break; case 2: - sub_81186C8(data); + RestoreURoomField0FromDecompressionBuffer(data); taskData[1] = sUnionRoomTrade.field_8; if (id >= PARTY_SIZE) { - sub_811868C(gUnknown_8458D9C); + UnionRoom_ScheduleFieldMessageAndExit(gUnknown_8458D9C); } else { - sub_80FB008(0x14 | IN_UNION_ROOM, 0, 1); + UpdateGameDataWithActivitySpriteGendersFlag(ACTIVITY_PLYRTALK | IN_UNION_ROOM, 0, TRUE); sPlayerCurrActivity = ACTIVITY_TRADE | IN_UNION_ROOM; RegisterTradeMon(GetCursorSelectionMonId(), &sUnionRoomTrade); data->state = 51; @@ -2736,7 +2750,7 @@ static void Task_ResumeUnionRoom(u8 taskId) { if (gSpecialVar_Result == 9) { - sub_80FB008(0x14 | IN_UNION_ROOM, 0, 1); + UpdateGameDataWithActivitySpriteGendersFlag(ACTIVITY_PLYRTALK | IN_UNION_ROOM, 0, TRUE); PlaySE(SE_PC_LOGIN); StringCopy(gStringVar1, gSaveBlock2Ptr->playerName); data->state = 42; @@ -2744,7 +2758,7 @@ static void Task_ResumeUnionRoom(u8 taskId) } else if (gSpecialVar_Result == 11) { - sub_80FB008(0x14 | IN_UNION_ROOM, 0, 1); + UpdateGameDataWithActivitySpriteGendersFlag(ACTIVITY_PLYRTALK | IN_UNION_ROOM, 0, TRUE); data->state = 23; gSpecialVar_Result = 0; } @@ -2763,22 +2777,22 @@ static void Task_ResumeUnionRoom(u8 taskId) if (RfuUnionTool_GetGroupAndMemberInFrontOfPlayer(data->field_0, &taskData[0], &taskData[1], data->spriteIds)) { PlaySE(SE_SELECT); - sub_811B298(); + UR_EnableScriptContext2AndFreezeObjectEvents(); data->state = 24; break; } else if (PlayerIsTalkingToUnionRoomAide()) { - sub_80FB008(0x14 | IN_UNION_ROOM, 0, 1); + UpdateGameDataWithActivitySpriteGendersFlag(ACTIVITY_PLYRTALK | IN_UNION_ROOM, 0, TRUE); PlaySE(SE_PC_LOGIN); - sub_811B298(); + UR_EnableScriptContext2AndFreezeObjectEvents(); StringCopy(gStringVar1, gSaveBlock2Ptr->playerName); data->state = 45; break; } } - switch (sub_8119B94()) + switch (HandlePlayerListUpdate()) { case 1: PlaySE(SE_TOY_C); @@ -2787,9 +2801,9 @@ static void Task_ResumeUnionRoom(u8 taskId) break; case 4: data->state = 11; - sub_811B298(); + UR_EnableScriptContext2AndFreezeObjectEvents(); RfuUpdatePlayerGnameStateAndSend(0, 0, 0); - sub_80FB008(0x13 | IN_UNION_ROOM, sub_811B2D8(data), 0); + UpdateGameDataWithActivitySpriteGendersFlag(ACTIVITY_NPCTALK | IN_UNION_ROOM, GetActivePartnerSpriteGenderParam(data), FALSE); break; } HandleUnionRoomPlayerRefresh(data); @@ -2798,15 +2812,15 @@ static void Task_ResumeUnionRoom(u8 taskId) case 23: if (!FuncIsActiveTask(Task_StartMenuHandleInput)) { - sub_80FB008(IN_UNION_ROOM, 0, 0); + UpdateGameDataWithActivitySpriteGendersFlag(IN_UNION_ROOM, 0, FALSE); data->state = 4; } break; case 24: UR_RunTextPrinters_CheckPrinter0Active(); playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0); - sub_80FB008(0x14 | IN_UNION_ROOM, 0, 1); - switch (sub_811AA5C(data->field_0, taskData[0], taskData[1], playerGender)) + UpdateGameDataWithActivitySpriteGendersFlag(ACTIVITY_PLYRTALK | IN_UNION_ROOM, 0, TRUE); + switch (UnionRoomGetPlayerInteractionResponse(data->field_0, taskData[0], taskData[1], playerGender)) { case 0: data->state = 26; @@ -2826,13 +2840,13 @@ static void Task_ResumeUnionRoom(u8 taskId) switch (RfuGetErrorStatus()) { case 4: - sub_811B258(TRUE); + HandleCancelTrade(TRUE); data->state = 4; break; case 1: case 2: if (sub_80FBB0C() == TRUE) - sub_811868C(gUnknown_8457F90); + UnionRoom_ScheduleFieldMessageAndExit(gUnknown_8457F90); else UnionRoom_ScheduleFieldMessageWithFollowupState(30, gUnknown_8457F90); @@ -2859,13 +2873,13 @@ static void Task_ResumeUnionRoom(u8 taskId) case 30: if (gReceivedRemoteLinkPlayers == 0) { - sub_811B258(FALSE); + HandleCancelTrade(FALSE); UpdateUnionGroupMemberFacing(taskData[0], taskData[1], data->field_0); data->state = 2; } break; case 5: - id = sub_811AA24(&data->field_0->arr[taskData[1]]); + id = ConvPartnerUnameAndGetWhetherMetAlready(&data->field_0->arr[taskData[1]]); playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0); UnionRoom_ScheduleFieldMessageWithFollowupState(6, gURText_FriendPromptsForActivity[id][playerGender]); break; @@ -2884,7 +2898,7 @@ static void Task_ResumeUnionRoom(u8 taskId) if (var5 == -2 || var5 == IN_UNION_ROOM) { data->playerSendBuffer[0] = IN_UNION_ROOM; - sub_80F9E2C(data->playerSendBuffer); + RfuPrepareSend0x2f00(data->playerSendBuffer); StringCopy(gStringVar4, gUnknown_845842C[gLinkPlayers[0].gender]); data->state = 32; } @@ -2899,7 +2913,7 @@ static void Task_ResumeUnionRoom(u8 taskId) else { data->playerSendBuffer[0] = sPlayerCurrActivity | IN_UNION_ROOM; - sub_80F9E2C(data->playerSendBuffer); + RfuPrepareSend0x2f00(data->playerSendBuffer); data->state = 27; } } @@ -2928,7 +2942,7 @@ static void Task_ResumeUnionRoom(u8 taskId) data->playerSendBuffer[0] = ACTIVITY_TRADE | IN_UNION_ROOM; data->playerSendBuffer[1] = sUnionRoomTrade.species; data->playerSendBuffer[2] = sUnionRoomTrade.level; - sub_80F9E2C(data->playerSendBuffer); + RfuPrepareSend0x2f00(data->playerSendBuffer); data->state = 29; break; case 29: @@ -2962,7 +2976,7 @@ static void Task_ResumeUnionRoom(u8 taskId) break; case 7: - id = sub_811AA24(&data->field_0->arr[taskData[1]]); + id = ConvPartnerUnameAndGetWhetherMetAlready(&data->field_0->arr[taskData[1]]); playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0); UnionRoom_ScheduleFieldMessageWithFollowupState(6, gURText_FriendPromptsForActivity[id][playerGender]); break; @@ -2997,7 +3011,7 @@ static void Task_ResumeUnionRoom(u8 taskId) case 0: CopyBgTilemapBufferToVram(0); sPlayerCurrActivity = ACTIVITY_CHAT | IN_UNION_ROOM; - sub_80FB008(ACTIVITY_CHAT | IN_UNION_ROOM, 0, 1); + UpdateGameDataWithActivitySpriteGendersFlag(ACTIVITY_CHAT | IN_UNION_ROOM, 0, TRUE); sub_80FC114(data->field_0->arr[taskData[1]].gname_uname.uname, &data->field_0->arr[taskData[1]].gname_uname.gname, sPlayerCurrActivity); data->field_12 = taskData[1]; data->state = 20; @@ -3006,7 +3020,7 @@ static void Task_ResumeUnionRoom(u8 taskId) case 1: case -1: playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0); - sub_811868C(gUnknown_8458548[playerGender]); + UnionRoom_ScheduleFieldMessageAndExit(gUnknown_8458548[playerGender]); break; } break; @@ -3021,15 +3035,15 @@ static void Task_ResumeUnionRoom(u8 taskId) switch (RfuGetErrorStatus()) { case 4: - sub_811B258(TRUE); + HandleCancelTrade(TRUE); data->state = 4; break; case 1: case 2: playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0); - sub_80FB008(0x14 | IN_UNION_ROOM, 0, 1); + UpdateGameDataWithActivitySpriteGendersFlag(ACTIVITY_PLYRTALK | IN_UNION_ROOM, 0, TRUE); if (sub_80FBB0C() == TRUE) - sub_811868C(gUnknown_84585E8[playerGender]); + UnionRoom_ScheduleFieldMessageAndExit(gUnknown_84585E8[playerGender]); else UnionRoom_ScheduleFieldMessageWithFollowupState(30, gUnknown_84585E8[playerGender]); break; @@ -3043,9 +3057,9 @@ static void Task_ResumeUnionRoom(u8 taskId) if (RfuIsErrorStatus1or2()) { playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0); - sub_80FB008(0x14 | IN_UNION_ROOM, 0, 1); + UpdateGameDataWithActivitySpriteGendersFlag(ACTIVITY_PLYRTALK | IN_UNION_ROOM, 0, TRUE); if (sub_80FBB0C() == TRUE) - sub_811868C(gUnknown_84585E8[playerGender]); + UnionRoom_ScheduleFieldMessageAndExit(gUnknown_84585E8[playerGender]); else UnionRoom_ScheduleFieldMessageWithFollowupState(30, gUnknown_84585E8[playerGender]); } @@ -3061,7 +3075,7 @@ static void Task_ResumeUnionRoom(u8 taskId) case 12: if (RfuIsErrorStatus1or2()) { - sub_811B258(FALSE); + HandleCancelTrade(FALSE); data->state = 2; } else if (gReceivedRemoteLinkPlayers != 0) @@ -3088,7 +3102,7 @@ static void Task_ResumeUnionRoom(u8 taskId) break; case 34: ReceiveUnionRoomActivityPacket(data); - if (sub_8119944(data) && JOY_NEW(B_BUTTON)) + if (UnionRoom_HandleContactFromOtherPlayer(data) && JOY_NEW(B_BUTTON)) { sub_80FBD6C(1); StringCopy(gStringVar4, gUnknown_8457E60); @@ -3096,6 +3110,7 @@ static void Task_ResumeUnionRoom(u8 taskId) } break; case 35: + // You said yes UnionRoom_ScheduleFieldMessageWithFollowupState(9, gStringVar4); break; case 9: @@ -3104,9 +3119,9 @@ static void Task_ResumeUnionRoom(u8 taskId) case 0: data->playerSendBuffer[0] = ACTIVITY_ACCEPT | IN_UNION_ROOM; if (sPlayerCurrActivity == (ACTIVITY_CHAT | IN_UNION_ROOM)) - sub_80FB008(sPlayerCurrActivity | IN_UNION_ROOM, sub_811B2A8(1), 0); + UpdateGameDataWithActivitySpriteGendersFlag(sPlayerCurrActivity | IN_UNION_ROOM, GetSinglePartnerSpriteGenderParam(1), FALSE); else - sub_80FB008(sPlayerCurrActivity | IN_UNION_ROOM, sub_811B2A8(1), 1); + UpdateGameDataWithActivitySpriteGendersFlag(sPlayerCurrActivity | IN_UNION_ROOM, GetSinglePartnerSpriteGenderParam(1), TRUE); data->field_8->arr[0].field_1B = 0; taskData[3] = 0; @@ -3115,34 +3130,34 @@ static void Task_ResumeUnionRoom(u8 taskId) if (!HasAtLeastTwoMonsOfLevel30OrLower()) { data->playerSendBuffer[0] = ACTIVITY_DECLINE | IN_UNION_ROOM; - sub_80F9E2C(data->playerSendBuffer); + RfuPrepareSend0x2f00(data->playerSendBuffer); data->state = 10; StringCopy(gStringVar4, gUnknown_84584C0); } else { - sub_80F9E2C(data->playerSendBuffer); + RfuPrepareSend0x2f00(data->playerSendBuffer); data->state = 13; } } else if (sPlayerCurrActivity == (ACTIVITY_CARD | IN_UNION_ROOM)) { - sub_80F9E2C(data->playerSendBuffer); + RfuPrepareSend0x2f00(data->playerSendBuffer); ViewURoomPartnerTrainerCard(gStringVar4, data, 1); data->state = 40; } else { - sub_80F9E2C(data->playerSendBuffer); + RfuPrepareSend0x2f00(data->playerSendBuffer); data->state = 13; } break; case 1: case -1: data->playerSendBuffer[0] = ACTIVITY_DECLINE | IN_UNION_ROOM; - sub_80F9E2C(data->playerSendBuffer); + RfuPrepareSend0x2f00(data->playerSendBuffer); data->state = 10; - sub_81162E0(gStringVar4, sPlayerCurrActivity); + GetYouDeclinedTheOfferMessage(gStringVar4, sPlayerCurrActivity); break; } break; @@ -3151,6 +3166,7 @@ static void Task_ResumeUnionRoom(u8 taskId) data->state = 36; break; case 36: + // You said no if (gReceivedRemoteLinkPlayers == 0) { sPlayerCurrActivity = IN_UNION_ROOM; @@ -3162,7 +3178,7 @@ static void Task_ResumeUnionRoom(u8 taskId) break; case 37: data->state = 2; - sub_811B258(FALSE); + HandleCancelTrade(FALSE); break; case 13: GetURoomActivityStartMsg(gStringVar4, sPlayerCurrActivity | IN_UNION_ROOM); @@ -3229,7 +3245,7 @@ static void Task_ResumeUnionRoom(u8 taskId) if (var5 == -2 || var5 == 3) { data->state = 4; - sub_811B258(TRUE); + HandleCancelTrade(TRUE); } else { @@ -3268,7 +3284,7 @@ static void Task_ResumeUnionRoom(u8 taskId) case 18: ResetUnionRoomTrade(&sUnionRoomTrade); RfuUpdatePlayerGnameStateAndSend(0, 0, 0); - sub_811868C(gUnknown_8458D54); + UnionRoom_ScheduleFieldMessageAndExit(gUnknown_8458D54); break; default: sUnionRoomTrade.type = var5; @@ -3279,7 +3295,7 @@ static void Task_ResumeUnionRoom(u8 taskId) break; case 55: RfuUpdatePlayerGnameStateAndSend(sUnionRoomTrade.type, sUnionRoomTrade.playerSpecies, sUnionRoomTrade.playerLevel); - sub_811868C(gUnknown_8458D78); + UnionRoom_ScheduleFieldMessageAndExit(gUnknown_8458D78); break; case 44: switch (UnionRoomHandleYesNo(&data->textState, FALSE)) @@ -3289,7 +3305,7 @@ static void Task_ResumeUnionRoom(u8 taskId) break; case 1: case -1: - sub_811B258(TRUE); + HandleCancelTrade(TRUE); data->state = 4; break; } @@ -3299,7 +3315,7 @@ static void Task_ResumeUnionRoom(u8 taskId) { RfuUpdatePlayerGnameStateAndSend(0, 0, 0); ResetUnionRoomTrade(&sUnionRoomTrade); - sub_811B258(TRUE); + HandleCancelTrade(TRUE); data->state = 4; } break; @@ -3308,7 +3324,7 @@ static void Task_ResumeUnionRoom(u8 taskId) data->state = 46; break; case 46: - sub_811A3F8(); + UR_BlankBg0(); data->state = 48; break; case 48: @@ -3319,7 +3335,7 @@ static void Task_ResumeUnionRoom(u8 taskId) { case -2: case 8: - sub_811B258(TRUE); + HandleCancelTrade(TRUE); DestroyHelpMessageWindow_(); data->state = 4; break; @@ -3354,7 +3370,7 @@ static void Task_ResumeUnionRoom(u8 taskId) break; case -1: case 1: - sub_811B258(TRUE); + HandleCancelTrade(TRUE); data->state = 4; break; } @@ -3368,7 +3384,7 @@ static void Task_ResumeUnionRoom(u8 taskId) gUnionRoomOfferedSpecies = data->field_0->arr[taskData[1]].gname_uname.gname.species; gFieldCallback = sub_807DCE4; ChooseMonForTradingBoard(PARTY_MENU_TYPE_UNION_ROOM_TRADE, CB2_ReturnToField); - sub_81186B0(data); + BackUpURoomField0ToDecompressionBuffer(data); sUnionRoomTrade.field_8 = taskData[1]; } break; @@ -3382,7 +3398,7 @@ static void Task_ResumeUnionRoom(u8 taskId) case 26: if (PrintOnTextbox(&data->textState, gStringVar4)) { - sub_811B258(TRUE); + HandleCancelTrade(TRUE); UpdateUnionGroupMemberFacing(taskData[0], taskData[1], data->field_0); data->state = 4; } @@ -3402,7 +3418,7 @@ void var_800D_set_xB(void) static void ReceiveUnionRoomActivityPacket(struct UnkStruct_URoom * arg0) { - if (gRecvCmds[1][1] != 0 && (gRecvCmds[1][0] & 0xFF00) == 0x2F00) + if (gRecvCmds[1][1] != 0 && (gRecvCmds[1][0] & 0xFF00) == RFU_COMMAND_0x2f00) { arg0->recvActivityRequest[0] = gRecvCmds[1][1]; if (gRecvCmds[1][1] == (ACTIVITY_TRADE | IN_UNION_ROOM)) @@ -3413,7 +3429,7 @@ static void ReceiveUnionRoomActivityPacket(struct UnkStruct_URoom * arg0) } } -static bool32 sub_8119944(struct UnkStruct_URoom * arg0) +static bool32 UnionRoom_HandleContactFromOtherPlayer(struct UnkStruct_URoom * arg0) { if (arg0->recvActivityRequest[0] != 0) { @@ -3485,11 +3501,11 @@ 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 = sub_8119E84(structPtr->field_C, structPtr->field_4, 10); + structPtr->field_20 = CreateTask_SearchForChildOrParent(structPtr->field_C, structPtr->field_4, 10); structPtr->state = 3; break; case 3: - switch (sub_8119B94()) + switch (HandlePlayerListUpdate()) { case 1: case 2: @@ -3540,13 +3556,14 @@ bool16 BufferUnionRoomPlayerName(void) } } -static u8 sub_8119B94(void) +static u8 HandlePlayerListUpdate(void) { s32 i; u8 j; struct UnkStruct_URoom * structPtr = sUnionRoomMain.uRoom; s32 r7 = 0; + // If someone new joined, register them in field_8 for (i = 0; i < RFU_CHILD_MAX; i++) { if (AreGnameUnameDifferent(&structPtr->field_C->arr[i].gname_uname, &sUnionGnameUnamePair_Dummy) == TRUE) @@ -3558,17 +3575,21 @@ static u8 sub_8119B94(void) return 4; } } + + // Handle changes to existing player statuses for (j = 0; j < 8; j++) { if (structPtr->field_0->arr[j].groupScheduledAnim != UNION_ROOM_SPAWN_NONE) { - i = sub_811A748(&structPtr->field_0->arr[j], &structPtr->field_4->arr[0]); + i = Findx20Inx1CArray(&structPtr->field_0->arr[j], &structPtr->field_4->arr[0]); if (i != 0xFF) { if (structPtr->field_0->arr[j].groupScheduledAnim == UNION_ROOM_SPAWN_IN) { + // New join in queue if (AreUnionRoomPlayerGnamesDifferent(&structPtr->field_0->arr[j].gname_uname, &structPtr->field_4->arr[i].gname_uname)) { + // Just joined, copy their names structPtr->field_0->arr[j].gname_uname = structPtr->field_4->arr[i].gname_uname; structPtr->field_0->arr[j].field_1B = 0x40; r7 = 1; @@ -3582,6 +3603,7 @@ static u8 sub_8119B94(void) } else { + // New join, queue them structPtr->field_0->arr[j].groupScheduledAnim = UNION_ROOM_SPAWN_IN; structPtr->field_0->arr[j].field_1B = 0; r7 = 2; @@ -3590,6 +3612,7 @@ static u8 sub_8119B94(void) } else if (structPtr->field_0->arr[j].groupScheduledAnim != UNION_ROOM_SPAWN_OUT) { + // Person may have disconnected. Give them 10 seconds. structPtr->field_0->arr[j].field_18++; if (structPtr->field_0->arr[j].field_18 >= 600) { @@ -3599,6 +3622,7 @@ static u8 sub_8119B94(void) } else if (structPtr->field_0->arr[j].groupScheduledAnim == UNION_ROOM_SPAWN_OUT) { + // Person dropped. Wait 15 seconds, then remove them. structPtr->field_0->arr[j].field_18++; if (structPtr->field_0->arr[j].field_18 >= 900) { @@ -3607,6 +3631,8 @@ static u8 sub_8119B94(void) } } } + + // Update the players list for (i = 0; i < RFU_CHILD_MAX; i++) { if (Appendx1Ctox20(&structPtr->field_0->arr[0], &structPtr->field_4->arr[i], 8) != 0xFF) @@ -3654,7 +3680,7 @@ static void Task_SearchForChildOrParent(u8 taskId) } } -static u8 sub_8119E84(struct UnkStruct_Main4 * a0, struct UnkStruct_Main4 * a1, u32 a2) +static u8 CreateTask_SearchForChildOrParent(struct UnkStruct_Main4 * a0, struct UnkStruct_Main4 * a1, u32 a2) { u8 taskId = CreateTask(Task_SearchForChildOrParent, 0); struct UnkStruct_Main4 ** data = (void *)gTasks[taskId].data; @@ -3732,7 +3758,7 @@ static void Task_ListenForPartnersWithSerial7F7D(u8 taskId) } } -static u8 CreateTask_Task_ListenForPartnersWithCompatibleSerialNos(struct UnkStruct_Main4 * main4, u32 linkGroup) +static u8 CreateTask_ListenForPartnersWithCompatibleSerialNos(struct UnkStruct_Main4 * main4, u32 linkGroup) { u8 taskId = CreateTask(Task_ListenForPartnersWithCompatibleSerialNos, 0); struct UnkStruct_Main4 ** ptr = (void*) gTasks[taskId].data; @@ -3741,7 +3767,7 @@ static u8 CreateTask_Task_ListenForPartnersWithCompatibleSerialNos(struct UnkStr return taskId; } -static u8 CreateTask_Task_ListenForPartnersWithSerial7F7D(struct UnkStruct_Main4 * main4, u32 linkGroup) +static u8 CreateTask_ListenForPartnersWithSerial7F7D(struct UnkStruct_Main4 * main4, u32 linkGroup) { u8 taskId = CreateTask(Task_ListenForPartnersWithSerial7F7D, 0); struct UnkStruct_Main4 ** ptr = (void*) gTasks[taskId].data; @@ -3935,13 +3961,13 @@ static s32 TradeBoardMenuHandler(u8 *state_p, u8 *win_id_p, u8 *list_menu_id_p, return -1; } -static void sub_811A3F8(void) +static void UR_BlankBg0(void) { FillBgTilemapBufferRect(0, 0, 0, 0, 32, 32, 0); CopyBgTilemapBufferToVram(0); } -static void sub_811A41C(void) +static void JoinGroup_BlankBg0AndEnableScriptContexts(void) { FillBgTilemapBufferRect(0, 0, 0, 0, 32, 32, 0); CopyBgTilemapBufferToVram(0); @@ -4027,7 +4053,7 @@ static void BlankUnkStruct_x20Array(struct UnkStruct_x20 * arg0, u8 count) arg0[i].gname_uname = sUnionGnameUnamePair_Dummy; arg0[i].field_18 = 0xFF; arg0[i].groupScheduledAnim = UNION_ROOM_SPAWN_NONE; - arg0[i].field_1A_1 = 0; + arg0[i].field_1A_1 = FALSE; arg0[i].field_1B = 0; } } @@ -4075,7 +4101,7 @@ static bool32 AreUnionRoomPlayerGnamesDifferent(struct UnionGnameUnamePair * arg return TRUE; } - if (arg0->gname.unk_0a_7 != arg1->gname.unk_0a_7) + if (arg0->gname.started != arg1->gname.started) { return TRUE; } @@ -4101,7 +4127,7 @@ static bool32 AreUnionRoomPlayerGnamesDifferent(struct UnionGnameUnamePair * arg return FALSE; } -static u32 sub_811A748(struct UnkStruct_x20 * arg0, struct UnkStruct_x1C * arg1) +static u32 Findx20Inx1CArray(struct UnkStruct_x20 * arg0, struct UnkStruct_x1C * arg1) { u8 result = 0xFF; s32 i; @@ -4141,7 +4167,7 @@ static u8 Appendx1Ctox20(struct UnkStruct_x20 * x20arr, struct UnkStruct_x1C * x return 0xFF; } -static void sub_811A81C(u8 windowId, u8 x, u8 y, struct UnkStruct_x20 * group, u8 colorIdx, u8 id) +static void PrintUnionRoomGroupOnWindow(u8 windowId, u8 x, u8 y, struct UnkStruct_x20 * group, u8 colorIdx, u8 id) { u8 activity; u8 id_str[6]; @@ -4152,7 +4178,7 @@ static void sub_811A81C(u8 windowId, u8 x, u8 y, struct UnkStruct_x20 * group, u UR_AddTextPrinterParameterized(windowId, 0, gStringVar4, x, y, UR_COLOR_DKE_WHT_LTE); x += 18; activity = group->gname_uname.gname.activity; - if (group->groupScheduledAnim == UNION_ROOM_SPAWN_IN && !(activity & 0x40)) + if (group->groupScheduledAnim == UNION_ROOM_SPAWN_IN && !(activity & IN_UNION_ROOM)) { IntlConvPartnerUname(uname, *group); UR_AddTextPrinterParameterized(windowId, 2, uname, x, y, colorIdx); @@ -4164,7 +4190,7 @@ static void sub_811A81C(u8 windowId, u8 x, u8 y, struct UnkStruct_x20 * group, u } } -static void sub_811A910(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) { u8 id_str[6]; u8 uname[30]; @@ -4217,24 +4243,24 @@ static u32 GetResponseIdx_InviteToURoomActivity(s32 activity) } } -static u32 sub_811AA24(struct UnkStruct_x20 * arg0) +static u32 ConvPartnerUnameAndGetWhetherMetAlready(struct UnkStruct_x20 * arg0) { u8 sp0[30]; IntlConvPartnerUname(sp0, *arg0); return PlayerHasMetTrainerBefore(ReadAsU16(arg0->gname_uname.gname.unk_00.playerTrainerId), sp0); } -static s32 sub_811AA5C(struct UnkStruct_Main0 * arg0, u8 arg1, u8 arg2, u32 playerGender) +static s32 UnionRoomGetPlayerInteractionResponse(struct UnkStruct_Main0 * arg0, u8 arg1, u8 arg2, u32 playerGender) { bool32 r2; - struct UnkStruct_x20 * r5 = &arg0->arr[arg2]; + struct UnkStruct_x20 * x20 = &arg0->arr[arg2]; - if (!r5->gname_uname.gname.unk_0a_7 && arg1 == 0) + if (!x20->gname_uname.gname.started && arg1 == 0) { - IntlConvPartnerUname(gStringVar1, *r5); - r2 = PlayerHasMetTrainerBefore(ReadAsU16(r5->gname_uname.gname.unk_00.playerTrainerId), gStringVar1); - if (r5->gname_uname.gname.activity == (ACTIVITY_CHAT | IN_UNION_ROOM)) + IntlConvPartnerUname(gStringVar1, *x20); + r2 = 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]); return 2; @@ -4247,12 +4273,12 @@ static s32 sub_811AA5C(struct UnkStruct_Main0 * arg0, u8 arg1, u8 arg2, u32 play } else { - IntlConvPartnerUname(gStringVar1, *r5); + IntlConvPartnerUname(gStringVar1, *x20); if (arg1 != 0) { - playerGender = (r5->gname_uname.gname.unk_00.playerTrainerId[arg1 + 1] >> 3) & 1; + playerGender = (x20->gname_uname.gname.unk_00.playerTrainerId[arg1 + 1] >> 3) & 1; } - switch (r5->gname_uname.gname.activity & 0x3F) + switch (x20->gname_uname.gname.activity & 0x3F) { case ACTIVITY_BATTLE: // Battling @@ -4610,26 +4636,26 @@ static u32 GetPartyPositionOfRegisteredMon(struct UnionRoomTrade * trade, u8 mul return response; } -static void sub_811B258(bool32 arg0) +static void HandleCancelTrade(bool32 unlockObjs) { - sub_811A3F8(); + UR_BlankBg0(); ScriptContext2_Disable(); - sub_80696F0(); + UnionRoom_UnlockPlayerAndChatPartner(); sPlayerCurrActivity = 0; - if (arg0) + if (unlockObjs) { RfuUpdatePlayerGnameStateAndSend(sUnionRoomTrade.type, sUnionRoomTrade.playerSpecies, sUnionRoomTrade.playerLevel); - sub_80FB008(IN_UNION_ROOM, 0, 0); + UpdateGameDataWithActivitySpriteGendersFlag(IN_UNION_ROOM, 0, FALSE); } } -static void sub_811B298(void) +static void UR_EnableScriptContext2AndFreezeObjectEvents(void) { ScriptContext2_Enable(); ScriptFreezeObjectEvents(); } -static u8 sub_811B2A8(s32 linkPlayer) +static u8 GetSinglePartnerSpriteGenderParam(s32 linkPlayer) { u8 retval = 0x80; retval |= gLinkPlayers[linkPlayer].gender << 3; @@ -4637,7 +4663,7 @@ static u8 sub_811B2A8(s32 linkPlayer) return retval; } -static u8 sub_811B2D8(struct UnkStruct_URoom * arg0) +static u8 GetActivePartnerSpriteGenderParam(struct UnkStruct_URoom * arg0) { u8 retVal = 0x80; u8 i; diff --git a/src/union_room_battle.c b/src/union_room_battle.c index a2021e62e..96e37add8 100644 --- a/src/union_room_battle.c +++ b/src/union_room_battle.c @@ -47,7 +47,7 @@ static const u8 gUnknown_84571A8[] = {1, 2, 3}; static void SetUpPartiesAndStartBattle(void) { s32 i; - sub_81173C0(BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER); + StartUnionRoomBattle(BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER); for (i = 0; i < 2; i++) { gEnemyParty[i] = gPlayerParty[gSelectedOrderFromParty[i] - 1]; diff --git a/src/union_room_message.c b/src/union_room_message.c index 0edef7b04..6cfeb5552 100644 --- a/src/union_room_message.c +++ b/src/union_room_message.c @@ -5,7 +5,7 @@ ALIGNED(4) const u8 gUnionRoomActivity_Blank[] = _(""); ALIGNED(4) const u8 gUnknown_84571B0[] = _(":"); -ALIGNED(4) const u8 gUnknown_84571B4[] = _("{EXTRA 7}"); +ALIGNED(4) const u8 gUnknown_84571B4[] = _("{ID}"); ALIGNED(4) const u8 gUnknown_84571B8[] = _("Please start over from the beginning."); ALIGNED(4) const u8 gUnknown_84571E0[] = _("The WIRELESS COMMUNICATION\nSYSTEM search has been canceled."); ALIGNED(4) const u8 gUnref_845721C[] = _("ともだちからの れんらくを\nまっています"); |