Sync wireless improvements

This commit is contained in:
GriffinR 2022-11-09 14:29:57 -05:00
parent 9e24fe6ec8
commit b3e75138da
24 changed files with 391 additions and 347 deletions

View File

@ -1,259 +0,0 @@
JASC-PAL
0100
256
0 0 0
90 90 90
90 90 90
90 90 90
90 90 90
90 90 90
90 90 90
90 90 90
57 57 57
172 123 0
90 90 90
57 57 57
164 164 164
255 180 0
106 106 106
74 74 74
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
90 90 90
90 90 90
90 90 90
90 90 90
90 90 90
90 90 90
74 246 255
57 57 57
172 123 0
90 90 90
57 57 57
164 164 164
255 180 0
106 106 106
74 74 74
0 0 0
90 90 90
90 90 90
90 90 90
90 90 90
90 90 90
74 246 255
57 213 230
57 57 57
172 123 0
90 90 90
57 57 57
164 164 164
255 180 0
106 106 106
74 74 74
0 0 0
90 90 90
90 90 90
90 90 90
90 90 90
74 246 255
57 213 230
49 180 205
0 32 98
172 123 0
90 90 90
57 57 57
164 164 164
255 180 0
106 106 106
74 74 74
0 0 0
90 90 90
90 90 90
90 90 90
74 246 255
57 213 230
49 180 205
41 148 180
0 32 98
172 123 0
90 90 90
57 57 57
164 164 164
255 180 0
106 106 106
74 74 74
0 0 0
90 90 90
90 90 90
74 246 255
57 213 230
49 180 205
41 148 180
24 123 164
0 32 98
172 123 0
90 90 90
57 57 57
164 164 164
255 180 0
106 106 106
74 74 74
0 0 0
90 90 90
74 246 255
57 213 230
49 180 205
41 148 180
24 123 164
16 90 139
0 32 98
172 123 0
90 90 90
57 57 57
164 164 164
255 180 0
106 106 106
74 74 74
0 0 0
74 246 255
57 213 230
49 180 205
41 148 180
24 123 164
16 90 139
8 57 115
0 32 98
172 123 0
90 90 90
57 57 57
164 164 164
255 180 0
106 106 106
74 74 74
0 0 0
57 213 230
49 180 205
41 148 180
24 123 164
16 90 139
8 57 115
8 57 115
57 57 57
172 123 0
90 90 90
57 57 57
164 164 164
255 180 0
106 106 106
74 74 74
0 0 0
49 180 205
41 148 180
24 123 164
16 90 139
8 57 115
8 57 115
90 90 90
57 57 57
172 123 0
90 90 90
57 57 57
164 164 164
255 180 0
106 106 106
74 74 74
0 0 0
41 148 180
24 123 164
16 90 139
8 57 115
8 57 115
90 90 90
90 90 90
57 57 57
172 123 0
90 90 90
57 57 57
164 164 164
255 180 0
106 106 106
74 74 74
0 0 0
24 123 164
16 90 139
8 57 115
8 57 115
90 90 90
90 90 90
90 90 90
57 57 57
172 123 0
90 90 90
57 57 57
164 164 164
255 180 0
106 106 106
74 74 74
0 0 0
16 90 139
8 57 115
8 57 115
90 90 90
90 90 90
90 90 90
90 90 90
57 57 57
172 123 0
90 90 90
57 57 57
164 164 164
255 180 0
106 106 106
74 74 74
0 0 0
8 57 115
8 57 115
90 90 90
90 90 90
90 90 90
90 90 90
90 90 90
57 57 57
172 123 0
90 90 90
57 57 57
164 164 164
255 180 0
106 106 106
74 74 74
0 0 0
90 90 90
90 90 90
90 90 90
90 90 90
90 90 90
90 90 90
90 90 90
57 57 57
172 123 0
90 90 90
57 57 57
164 164 164
255 180 0
106 106 106
74 74 74

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
0 0 0
90 90 90
90 90 90
90 90 90
90 90 90
90 90 90
90 90 90
74 246 255
57 57 57
172 123 0
90 90 90
57 57 57
164 164 164
255 180 0
106 106 106
74 74 74

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
0 0 0
90 90 90
90 90 90
90 90 90
90 90 90
90 90 90
74 246 255
57 213 230
57 57 57
172 123 0
90 90 90
57 57 57
164 164 164
255 180 0
106 106 106
74 74 74

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
0 0 0
90 90 90
90 90 90
90 90 90
90 90 90
74 246 255
57 213 230
49 180 205
0 32 98
172 123 0
90 90 90
57 57 57
164 164 164
255 180 0
106 106 106
74 74 74

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
0 0 0
90 90 90
90 90 90
90 90 90
74 246 255
57 213 230
49 180 205
41 148 180
0 32 98
172 123 0
90 90 90
57 57 57
164 164 164
255 180 0
106 106 106
74 74 74

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
0 0 0
90 90 90
90 90 90
74 246 255
57 213 230
49 180 205
41 148 180
24 123 164
0 32 98
172 123 0
90 90 90
57 57 57
164 164 164
255 180 0
106 106 106
74 74 74

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
0 0 0
90 90 90
74 246 255
57 213 230
49 180 205
41 148 180
24 123 164
16 90 139
0 32 98
172 123 0
90 90 90
57 57 57
164 164 164
255 180 0
106 106 106
74 74 74

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
0 0 0
74 246 255
57 213 230
49 180 205
41 148 180
24 123 164
16 90 139
8 57 115
0 32 98
172 123 0
90 90 90
57 57 57
164 164 164
255 180 0
106 106 106
74 74 74

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
0 0 0
57 213 230
49 180 205
41 148 180
24 123 164
16 90 139
8 57 115
8 57 115
57 57 57
172 123 0
90 90 90
57 57 57
164 164 164
255 180 0
106 106 106
74 74 74

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
0 0 0
49 180 205
41 148 180
24 123 164
16 90 139
8 57 115
8 57 115
90 90 90
57 57 57
172 123 0
90 90 90
57 57 57
164 164 164
255 180 0
106 106 106
74 74 74

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
0 0 0
41 148 180
24 123 164
16 90 139
8 57 115
8 57 115
90 90 90
90 90 90
57 57 57
172 123 0
90 90 90
57 57 57
164 164 164
255 180 0
106 106 106
74 74 74

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
0 0 0
24 123 164
16 90 139
8 57 115
8 57 115
90 90 90
90 90 90
90 90 90
57 57 57
172 123 0
90 90 90
57 57 57
164 164 164
255 180 0
106 106 106
74 74 74

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
0 0 0
16 90 139
8 57 115
8 57 115
90 90 90
90 90 90
90 90 90
90 90 90
57 57 57
172 123 0
90 90 90
57 57 57
164 164 164
255 180 0
106 106 106
74 74 74

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
0 0 0
8 57 115
8 57 115
90 90 90
90 90 90
90 90 90
90 90 90
90 90 90
57 57 57
172 123 0
90 90 90
57 57 57
164 164 164
255 180 0
106 106 106
74 74 74

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
0 0 0
90 90 90
90 90 90
90 90 90
90 90 90
90 90 90
90 90 90
90 90 90
57 57 57
172 123 0
90 90 90
57 57 57
164 164 164
255 180 0
106 106 106
74 74 74

View File

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 490 B

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
0 0 0
90 90 90
90 90 90
90 90 90
90 90 90
90 90 90
90 90 90
90 90 90
57 57 57
172 123 0
90 90 90
57 57 57
164 164 164
255 180 0
106 106 106
74 74 74

View File

@ -717,8 +717,8 @@ static const struct ListMenuTemplate sListMenuTemplate_PossibleGroupMembers = {
.cursorShadowPal = 3, .cursorShadowPal = 3,
.lettersSpacing = 0, .lettersSpacing = 0,
.itemVerticalPadding = 0, .itemVerticalPadding = 0,
.scrollMultiple = 0, .scrollMultiple = LIST_NO_MULTIPLE_SCROLL,
.fontId = 1, .fontId = FONT_NORMAL,
.cursorKind = 1 .cursorKind = 1
}; };
@ -777,8 +777,8 @@ static const struct ListMenuTemplate sListMenuTemplate_UnionRoomGroups = {
.cursorShadowPal = 3, .cursorShadowPal = 3,
.lettersSpacing = 0, .lettersSpacing = 0,
.itemVerticalPadding = 0, .itemVerticalPadding = 0,
.scrollMultiple = 1, .scrollMultiple = LIST_MULTIPLE_SCROLL_DPAD,
.fontId = 1, .fontId = FONT_NORMAL,
.cursorKind = 0 .cursorKind = 0
}; };
@ -815,8 +815,8 @@ static const struct ListMenuTemplate sListMenuTemplate_InviteToActivity = {
.cursorShadowPal = 3, .cursorShadowPal = 3,
.lettersSpacing = 0, .lettersSpacing = 0,
.itemVerticalPadding = 0, .itemVerticalPadding = 0,
.scrollMultiple = 0, .scrollMultiple = LIST_NO_MULTIPLE_SCROLL,
.fontId = 1, .fontId = FONT_NORMAL,
.cursorKind = 0 .cursorKind = 0
}; };
@ -852,8 +852,8 @@ static const struct ListMenuTemplate sListMenuTemplate_RegisterForTrade = {
.cursorShadowPal = 3, .cursorShadowPal = 3,
.lettersSpacing = 0, .lettersSpacing = 0,
.itemVerticalPadding = 0, .itemVerticalPadding = 0,
.scrollMultiple = 0, .scrollMultiple = LIST_NO_MULTIPLE_SCROLL,
.fontId = 1, .fontId = FONT_NORMAL,
.cursorKind = 0 .cursorKind = 0
}; };
@ -904,8 +904,8 @@ static const struct ListMenuTemplate sMenuTemplate_TradingBoardRequestType = {
.cursorShadowPal = 3, .cursorShadowPal = 3,
.lettersSpacing = 0, .lettersSpacing = 0,
.itemVerticalPadding = 0, .itemVerticalPadding = 0,
.scrollMultiple = 0, .scrollMultiple = LIST_NO_MULTIPLE_SCROLL,
.fontId = 1, .fontId = FONT_NORMAL,
.cursorKind = 0 .cursorKind = 0
}; };
@ -958,8 +958,8 @@ static const struct ListMenuTemplate sTradeBoardListMenuTemplate = {
.cursorShadowPal = 13, .cursorShadowPal = 13,
.lettersSpacing = 0, .lettersSpacing = 0,
.itemVerticalPadding = 0, .itemVerticalPadding = 0,
.scrollMultiple = 0, .scrollMultiple = LIST_NO_MULTIPLE_SCROLL,
.fontId = 1, .fontId = FONT_NORMAL,
.cursorKind = 0 .cursorKind = 0
}; };
@ -1010,8 +1010,8 @@ static const struct ListMenuTemplate sEmptyListMenuTemplate = {
.cursorShadowPal = 3, .cursorShadowPal = 3,
.lettersSpacing = 0, .lettersSpacing = 0,
.itemVerticalPadding = 0, .itemVerticalPadding = 0,
.scrollMultiple = 1, .scrollMultiple = LIST_MULTIPLE_SCROLL_DPAD,
.fontId = 1, .fontId = FONT_NORMAL,
.cursorKind = 0 .cursorKind = 0
}; };

View File

@ -2525,9 +2525,8 @@ u8 RfuGetStatus(void)
bool32 RfuHasErrored(void) bool32 RfuHasErrored(void)
{ {
// RFU_STATUS_OK will underflow here intentionally u32 status = RfuGetStatus();
u32 var = RfuGetStatus() - 1; if (status == RFU_STATUS_FATAL_ERROR || status == RFU_STATUS_CONNECTION_ERROR)
if (var < RFU_STATUS_CONNECTION_ERROR)
return TRUE; return TRUE;
else else
return FALSE; return FALSE;
@ -2656,7 +2655,7 @@ static u8 GetPartnerIndexByNameAndTrainerID(const u8 *name, u16 id)
for (i = 0; i < RFU_CHILD_MAX; i++) for (i = 0; i < RFU_CHILD_MAX; i++)
{ {
u16 trainerId = ReadU16(gRfuLinkStatus->partner[i].gname + 2); u16 trainerId = ReadU16(((struct RfuGameData *)gRfuLinkStatus->partner[i].gname)->compatibility.playerTrainerId);
if (IsRfuSerialNumberValid(gRfuLinkStatus->partner[i].serialNo) if (IsRfuSerialNumberValid(gRfuLinkStatus->partner[i].serialNo)
&& !StringCompare(name, gRfuLinkStatus->partner[i].uname) && !StringCompare(name, gRfuLinkStatus->partner[i].uname)
&& id == trainerId) && id == trainerId)
@ -2682,9 +2681,9 @@ static void RfuReqDisconnectSlot(u32 slot)
void RequestDisconnectSlotByTrainerNameAndId(const u8 *name, u16 id) void RequestDisconnectSlotByTrainerNameAndId(const u8 *name, u16 id)
{ {
u8 var = GetPartnerIndexByNameAndTrainerID(name, id); u8 index = GetPartnerIndexByNameAndTrainerID(name, id);
if (var != 0xFF) if (index != 0xFF)
RfuReqDisconnectSlot(1 << var); RfuReqDisconnectSlot(1 << index);
} }
void Rfu_DisconnectPlayerById(u32 playerIdx) void Rfu_DisconnectPlayerById(u32 playerIdx)

View File

@ -271,7 +271,7 @@ static void GetURoomActivityRejectMsg(u8 *, s32, u32);
static u32 ConvPartnerUnameAndGetWhetherMetAlready(struct RfuPlayer *); static u32 ConvPartnerUnameAndGetWhetherMetAlready(struct RfuPlayer *);
static void GetURoomActivityStartMsg(u8 *, u8); static void GetURoomActivityStartMsg(u8 *, u8);
static void UR_ClearBg0(void); static void UR_ClearBg0(void);
static s32 IsRequestedTypeOrEggInPlayerParty(u32, u32); static s32 IsRequestedTradeInPlayerParty(u32, u32);
static bool32 UR_PrintFieldMessage(const u8 *); static bool32 UR_PrintFieldMessage(const u8 *);
static s32 GetChatLeaderActionRequestMessage(u8 *, u32, u16 *, struct WirelessLink_URoom *); static s32 GetChatLeaderActionRequestMessage(u8 *, u32, u16 *, struct WirelessLink_URoom *);
static void Task_InitUnionRoom(u8 taskId); static void Task_InitUnionRoom(u8 taskId);
@ -319,9 +319,9 @@ static void PrintPlayerNameAndIdOnWindow(u8 windowId)
PrintUnionRoomText(windowId, FONT_NORMAL, text, 0, 17, UR_COLOR_DEFAULT); PrintUnionRoomText(windowId, FONT_NORMAL, text, 0, 17, UR_COLOR_DEFAULT);
} }
static void GetAwaitingCommunicationText(u8 *dst, u8 caseId) static void GetAwaitingCommunicationText(u8 *dst, u8 activity)
{ {
switch (caseId) switch (activity)
{ {
case ACTIVITY_BATTLE_SINGLE: case ACTIVITY_BATTLE_SINGLE:
case ACTIVITY_BATTLE_DOUBLE: case ACTIVITY_BATTLE_DOUBLE:
@ -343,18 +343,18 @@ static void GetAwaitingCommunicationText(u8 *dst, u8 caseId)
case ACTIVITY_CONTEST_TOUGH: case ACTIVITY_CONTEST_TOUGH:
// BUG: argument *dst isn't used, instead it always prints to gStringVar4 // BUG: argument *dst isn't used, instead it always prints to gStringVar4
// not an issue in practice since Gamefreak never used any other arguments here besides gStringVar4 // not an issue in practice since Gamefreak never used any other arguments here besides gStringVar4
#ifndef BUGFIX #ifndef BUGFIX
StringExpandPlaceholders(gStringVar4, sText_AwaitingCommunication); StringExpandPlaceholders(gStringVar4, sText_AwaitingCommunication);
#else #else
StringExpandPlaceholders(dst, sText_AwaitingCommunication); StringExpandPlaceholders(dst, sText_AwaitingCommunication);
#endif #endif
break; break;
} }
} }
static bool32 IsActivityWithVariableGroupSize(u32 caseId) static bool32 IsActivityWithVariableGroupSize(u32 activity)
{ {
switch (caseId) switch (activity)
{ {
case ACTIVITY_POKEMON_JUMP: case ACTIVITY_POKEMON_JUMP:
case ACTIVITY_BERRY_CRUSH: case ACTIVITY_BERRY_CRUSH:
@ -507,11 +507,11 @@ static void Task_TryBecomeLinkLeader(u8 taskId)
// BUG: sPlayerActivityGroupSize was meant below, not gPlayerCurrActivity // BUG: sPlayerActivityGroupSize was meant below, not gPlayerCurrActivity
// This will be false for all but ACTIVITY_BATTLE_DOUBLE and ACTIVITY_DECLINE // This will be false for all but ACTIVITY_BATTLE_DOUBLE and ACTIVITY_DECLINE
// All this changes is which of two texts gets printed // All this changes is which of two texts gets printed
#ifdef BUGFIX #ifdef BUGFIX
id = (GROUP_MAX(sPlayerActivityGroupSize) == 2) ? 0 : 1; id = (GROUP_MAX(sPlayerActivityGroupSize) == 2) ? 0 : 1;
#else #else
id = (GROUP_MAX(gPlayerCurrActivity) == 2) ? 1 : 0; id = (GROUP_MAX(gPlayerCurrActivity) == 2) ? 1 : 0;
#endif #endif
if (PrintOnTextbox(&data->textState, sPlayerUnavailableTexts[id])) if (PrintOnTextbox(&data->textState, sPlayerUnavailableTexts[id]))
{ {
data->playerCount = LeaderPrunePlayerList(data->playerList); data->playerCount = LeaderPrunePlayerList(data->playerList);
@ -559,6 +559,7 @@ static void Task_TryBecomeLinkLeader(u8 taskId)
{ {
if (data->joinRequestAnswer == RFU_STATUS_JOIN_GROUP_OK) if (data->joinRequestAnswer == RFU_STATUS_JOIN_GROUP_OK)
{ {
// Sent "OK"
data->playerList->players[data->playerCount].newPlayerCountdown = 0; data->playerList->players[data->playerCount].newPlayerCountdown = 0;
RedrawListMenu(data->listTaskId); RedrawListMenu(data->listTaskId);
data->playerCount++; data->playerCount++;
@ -596,6 +597,7 @@ static void Task_TryBecomeLinkLeader(u8 taskId)
} }
else if (val == 2) else if (val == 2)
{ {
// Disconnect
RfuSetStatus(RFU_STATUS_OK, 0); RfuSetStatus(RFU_STATUS_OK, 0);
data->state = LL_STATE_GET_AWAITING_PLAYERS_TEXT; data->state = LL_STATE_GET_AWAITING_PLAYERS_TEXT;
} }
@ -734,9 +736,9 @@ static void Leader_DestroyResources(struct WirelessLink_Leader *data)
Free(data->incomingPlayerList); Free(data->incomingPlayerList);
} }
static void Leader_GetAcceptNewMemberPrompt(u8 *dst, u8 caseId) static void Leader_GetAcceptNewMemberPrompt(u8 *dst, u8 activity)
{ {
switch (caseId) switch (activity)
{ {
case ACTIVITY_BATTLE_SINGLE: case ACTIVITY_BATTLE_SINGLE:
case ACTIVITY_BATTLE_DOUBLE: case ACTIVITY_BATTLE_DOUBLE:
@ -765,9 +767,9 @@ static void Leader_GetAcceptNewMemberPrompt(u8 *dst, u8 caseId)
} }
} }
static void GetYouDeclinedTheOfferMessage(u8 *dst, u8 caseId) static void GetYouDeclinedTheOfferMessage(u8 *dst, u8 activity)
{ {
switch (caseId) switch (activity)
{ {
case ACTIVITY_BATTLE_SINGLE | IN_UNION_ROOM: case ACTIVITY_BATTLE_SINGLE | IN_UNION_ROOM:
case ACTIVITY_TRADE | IN_UNION_ROOM: case ACTIVITY_TRADE | IN_UNION_ROOM:
@ -780,9 +782,9 @@ static void GetYouDeclinedTheOfferMessage(u8 *dst, u8 caseId)
} }
} }
static void GetYouAskedToJoinGroupPleaseWaitMessage(u8 *dst, u8 caseId) static void GetYouAskedToJoinGroupPleaseWaitMessage(u8 *dst, u8 activity)
{ {
switch (caseId) switch (activity)
{ {
case ACTIVITY_BATTLE_SINGLE: case ACTIVITY_BATTLE_SINGLE:
case ACTIVITY_BATTLE_DOUBLE: case ACTIVITY_BATTLE_DOUBLE:
@ -809,9 +811,9 @@ static void GetYouAskedToJoinGroupPleaseWaitMessage(u8 *dst, u8 caseId)
} }
} }
static void GetGroupLeaderSentAnOKMessage(u8 *dst, u8 caseId) static void GetGroupLeaderSentAnOKMessage(u8 *dst, u8 activity)
{ {
switch (caseId) switch (activity)
{ {
case ACTIVITY_BATTLE_SINGLE: case ACTIVITY_BATTLE_SINGLE:
case ACTIVITY_BATTLE_DOUBLE: case ACTIVITY_BATTLE_DOUBLE:
@ -1039,7 +1041,7 @@ static void Task_TryJoinLinkGroup(u8 taskId)
break; break;
case 0: case 0:
id = ListMenu_ProcessInput(data->listTaskId); id = ListMenu_ProcessInput(data->listTaskId);
if (JOY_NEW(A_BUTTON) && id != MENU_B_PRESSED) if (JOY_NEW(A_BUTTON) && id != LIST_NOTHING_CHOSEN)
{ {
// this unused variable along with the assignment is needed to match // this unused variable along with the assignment is needed to match
u32 activity = data->playerList->players[id].rfu.data.activity; u32 activity = data->playerList->players[id].rfu.data.activity;
@ -1469,9 +1471,7 @@ static void Task_CreateTradeMenu(u8 taskId)
u8 CreateTask_CreateTradeMenu(void) u8 CreateTask_CreateTradeMenu(void)
{ {
u8 taskId = CreateTask(Task_CreateTradeMenu, 0); return CreateTask(Task_CreateTradeMenu, 0);
return taskId;
} }
static void Task_StartUnionRoomTrade(u8 taskId) static void Task_StartUnionRoomTrade(u8 taskId)
@ -2147,11 +2147,10 @@ static void Task_CardOrNewsWithFriend(u8 taskId)
break; break;
case 0: case 0:
id = ListMenu_ProcessInput(data->listTaskId); id = ListMenu_ProcessInput(data->listTaskId);
if (JOY_NEW(A_BUTTON) && id != -1) if (JOY_NEW(A_BUTTON) && id != LIST_NOTHING_CHOSEN)
{ {
// this unused variable along with the assignment is needed to match // this unused variable along with the assignment is needed to match
u32 unusedVar; u32 activity = data->playerList->players[id].rfu.data.activity;
unusedVar = data->playerList->players[id].rfu.data.activity;
if (data->playerList->players[id].groupScheduledAnim == UNION_ROOM_SPAWN_IN && !data->playerList->players[id].rfu.data.startedActivity) if (data->playerList->players[id].groupScheduledAnim == UNION_ROOM_SPAWN_IN && !data->playerList->players[id].rfu.data.startedActivity)
{ {
@ -2504,7 +2503,7 @@ static void Task_RunUnionRoom(u8 taskId)
break; break;
case UR_STATE_INIT_OBJECTS: case UR_STATE_INIT_OBJECTS:
CreateUnionRoomPlayerSprites(uroom->spriteIds, taskData[0]); CreateUnionRoomPlayerSprites(uroom->spriteIds, taskData[0]);
if (++taskData[0] == 8) if (++taskData[0] == MAX_UNION_ROOM_LEADERS)
uroom->state = UR_STATE_INIT_LINK; uroom->state = UR_STATE_INIT_LINK;
break; break;
case UR_STATE_INIT_LINK: case UR_STATE_INIT_LINK:
@ -2711,7 +2710,7 @@ static void Task_RunUnionRoom(u8 taskId)
&uroom->topListMenuId, &uroom->topListMenuId,
&sWindowTemplate_InviteToActivity, &sWindowTemplate_InviteToActivity,
&sListMenuTemplate_InviteToActivity); &sListMenuTemplate_InviteToActivity);
if (input != -1) if (input != LIST_NOTHING_CHOSEN)
{ {
if (!gReceivedRemoteLinkPlayers) if (!gReceivedRemoteLinkPlayers)
{ {
@ -2721,7 +2720,7 @@ static void Task_RunUnionRoom(u8 taskId)
{ {
uroom->partnerYesNoResponse = 0; uroom->partnerYesNoResponse = 0;
playerGender = GetUnionRoomPlayerGender(taskData[1], uroom->playerList); playerGender = GetUnionRoomPlayerGender(taskData[1], uroom->playerList);
if (input == -2 || input == IN_UNION_ROOM) if (input == LIST_CANCEL || input == IN_UNION_ROOM)
{ {
uroom->playerSendBuffer[0] = IN_UNION_ROOM; uroom->playerSendBuffer[0] = IN_UNION_ROOM;
Rfu_SendPacket(uroom->playerSendBuffer); Rfu_SendPacket(uroom->playerSendBuffer);
@ -3068,9 +3067,9 @@ static void Task_RunUnionRoom(u8 taskId)
&uroom->tradeBoardHeaderWindowId, &uroom->tradeBoardHeaderWindowId,
&sWindowTemplate_RegisterForTrade, &sWindowTemplate_RegisterForTrade,
&sListMenuTemplate_RegisterForTrade); &sListMenuTemplate_RegisterForTrade);
if (input != -1) if (input != LIST_NOTHING_CHOSEN)
{ {
if (input == -2 || input == 3) if (input == LIST_CANCEL || input == 3) // Exit
{ {
uroom->state = UR_STATE_MAIN; uroom->state = UR_STATE_MAIN;
HandleCancelActivity(TRUE); HandleCancelActivity(TRUE);
@ -3090,7 +3089,7 @@ static void Task_RunUnionRoom(u8 taskId)
} }
break; break;
case UR_STATE_REGISTER_SELECT_MON_FADE: case UR_STATE_REGISTER_SELECT_MON_FADE:
BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK);
uroom->state = UR_STATE_REGISTER_SELECT_MON; uroom->state = UR_STATE_REGISTER_SELECT_MON;
break; break;
case UR_STATE_REGISTER_SELECT_MON: case UR_STATE_REGISTER_SELECT_MON:
@ -3107,11 +3106,11 @@ static void Task_RunUnionRoom(u8 taskId)
&uroom->tradeBoardHeaderWindowId, &uroom->tradeBoardHeaderWindowId,
&sWindowTemplate_TradingBoardRequestType, &sWindowTemplate_TradingBoardRequestType,
&sMenuTemplate_TradingBoardRequestType); &sMenuTemplate_TradingBoardRequestType);
if (input != -1) if (input != LIST_NOTHING_CHOSEN)
{ {
switch (input) switch (input)
{ {
case -2: case LIST_CANCEL:
case NUMBER_OF_MON_TYPES: // Exit case NUMBER_OF_MON_TYPES: // Exit
ResetUnionRoomTrade(&sUnionRoomTrade); ResetUnionRoomTrade(&sUnionRoomTrade);
SetTradeBoardRegisteredMonInfo(TYPE_NORMAL, SPECIES_NONE, 0); SetTradeBoardRegisteredMonInfo(TYPE_NORMAL, SPECIES_NONE, 0);
@ -3166,18 +3165,18 @@ static void Task_RunUnionRoom(u8 taskId)
&sWindowTemplate_TradingBoardMain, &sWindowTemplate_TradingBoardMain,
&sTradeBoardListMenuTemplate, &sTradeBoardListMenuTemplate,
uroom->playerList); uroom->playerList);
if (input != -1) if (input != LIST_NOTHING_CHOSEN)
{ {
switch (input) switch (input)
{ {
case -2: case LIST_CANCEL:
case 8: // EXIT case 8: // EXIT
HandleCancelActivity(TRUE); HandleCancelActivity(TRUE);
uroom->state = UR_STATE_MAIN; uroom->state = UR_STATE_MAIN;
break; break;
default: default:
UR_ClearBg0(); UR_ClearBg0();
switch (IsRequestedTypeOrEggInPlayerParty(uroom->playerList->players[input].rfu.data.tradeType, uroom->playerList->players[input].rfu.data.tradeSpecies)) switch (IsRequestedTradeInPlayerParty(uroom->playerList->players[input].rfu.data.tradeType, uroom->playerList->players[input].rfu.data.tradeSpecies))
{ {
case UR_TRADE_MATCH: case UR_TRADE_MATCH:
CopyAndTranslatePlayerName(gStringVar1, &uroom->playerList->players[input]); CopyAndTranslatePlayerName(gStringVar1, &uroom->playerList->players[input]);
@ -3707,12 +3706,12 @@ static s32 ListMenuHandler_AllItemsAvailable(u8 *state, u8 *windowId, u8 *listMe
ClearStdWindowAndFrame(*windowId, TRUE); ClearStdWindowAndFrame(*windowId, TRUE);
RemoveWindow(*windowId); RemoveWindow(*windowId);
*state = 0; *state = 0;
return -2; return LIST_CANCEL;
} }
break; break;
} }
return -1; return LIST_NOTHING_CHOSEN;
} }
static s32 TradeBoardMenuHandler(u8 *state, u8 *mainWindowId, u8 *listMenuId, u8 *headerWindowId, static s32 TradeBoardMenuHandler(u8 *state, u8 *mainWindowId, u8 *listMenuId, u8 *headerWindowId,
@ -3742,13 +3741,14 @@ static s32 TradeBoardMenuHandler(u8 *state, u8 *mainWindowId, u8 *listMenuId, u8
input = ListMenu_ProcessInput(*listMenuId); input = ListMenu_ProcessInput(*listMenuId);
if (JOY_NEW(A_BUTTON | B_BUTTON)) if (JOY_NEW(A_BUTTON | B_BUTTON))
{ {
// Exit or B button
if (input == 8 || JOY_NEW(B_BUTTON)) if (input == 8 || JOY_NEW(B_BUTTON))
{ {
DestroyListMenuTask(*listMenuId, NULL, NULL); DestroyListMenuTask(*listMenuId, NULL, NULL);
RemoveWindow(*mainWindowId); RemoveWindow(*mainWindowId);
DeleteTradeBoardWindow(*headerWindowId); DeleteTradeBoardWindow(*headerWindowId);
*state = 0; *state = 0;
return -2; return LIST_CANCEL;
} }
else else
{ {
@ -3770,7 +3770,7 @@ static s32 TradeBoardMenuHandler(u8 *state, u8 *mainWindowId, u8 *listMenuId, u8
break; break;
} }
return -1; return LIST_NOTHING_CHOSEN;
} }
static void UR_ClearBg0(void) static void UR_ClearBg0(void)
@ -4090,7 +4090,7 @@ static s32 UnionRoomGetPlayerInteractionResponse(struct RfuPlayerList *list, boo
} }
} }
void ItemPrintFunc_EmptyList(u8 windowId, u32 itemId, u8 y) static void ItemPrintFunc_EmptyList(u8 windowId, u32 itemId, u8 y)
{ {
} }
@ -4120,7 +4120,7 @@ static void TradeBoardListMenuItemPrintFunc(u8 windowId, u32 itemId, u8 y)
struct WirelessLink_Leader *leader = sWirelessLinkMain.leader; struct WirelessLink_Leader *leader = sWirelessLinkMain.leader;
struct RfuGameData *gameData; struct RfuGameData *gameData;
s32 i, j; s32 i, j;
u8 playerName[11]; u8 playerName[RFU_USER_NAME_LENGTH + 1];
if (itemId == LIST_HEADER && y == sTradeBoardListMenuTemplate.upText_Y) if (itemId == LIST_HEADER && y == sTradeBoardListMenuTemplate.upText_Y)
{ {
@ -4168,7 +4168,7 @@ static s32 GetUnionRoomPlayerGender(s32 playerIdx, struct RfuPlayerList *list)
return list->players[playerIdx].rfu.data.playerGender; return list->players[playerIdx].rfu.data.playerGender;
} }
static s32 IsRequestedTypeOrEggInPlayerParty(u32 type, u32 species) static s32 IsRequestedTradeInPlayerParty(u32 type, u32 species)
{ {
s32 i; s32 i;

View File

@ -340,15 +340,10 @@ static void AnimateUnionRoomPlayer(u32 leaderId, struct UnionRoomObject * object
} }
break; break;
case 1: case 1:
if (object->schedAnim == UNION_ROOM_SPAWN_OUT) if (object->schedAnim != UNION_ROOM_SPAWN_OUT)
{
object->state = 3;
object->animState = 0;
}
else
{
break; break;
} object->state = 3;
object->animState = 0;
// fallthrough // fallthrough
case 3: case 3:
if (AnimateUnionRoomPlayerDespawn(&object->animState, leaderId, object) == 1) if (AnimateUnionRoomPlayerDespawn(&object->animState, leaderId, object) == 1)

View File

@ -18,6 +18,7 @@
#include "union_room.h" #include "union_room.h"
#include "constants/songs.h" #include "constants/songs.h"
#include "constants/union_room.h" #include "constants/union_room.h"
#include "constants/rgb.h"
enum { enum {
COLORMODE_NORMAL, COLORMODE_NORMAL,
@ -51,9 +52,26 @@ static void Task_WirelessCommunicationScreen(u8);
static void WCSS_AddTextPrinterParameterized(u8, u8, const u8 *, u8, u8, u8); static void WCSS_AddTextPrinterParameterized(u8, u8, const u8 *, u8, u8, u8);
static bool32 UpdateCommunicationCounts(u32 *, u32 *, u32 *, u8); static bool32 UpdateCommunicationCounts(u32 *, u32 *, u32 *, u8);
static const u16 sBgTiles_Pal[] = INCBIN_U16("graphics/link/wireless_info_screen.gbapal"); static const u16 sPalettes[][16] = {
static const u32 sBgTiles_Gfx[] = INCBIN_U32("graphics/link/wireless_info_screen.4bpp.lz"); INCBIN_U16("graphics/wireless_status_screen/default.gbapal"),
static const u32 sBgTiles_Tilemap[] = INCBIN_U32("graphics/link/wireless_info_screen.bin.lz"); {}, // All black. Never read
INCBIN_U16("graphics/wireless_status_screen/anim_00.gbapal"),
INCBIN_U16("graphics/wireless_status_screen/anim_01.gbapal"),
INCBIN_U16("graphics/wireless_status_screen/anim_02.gbapal"),
INCBIN_U16("graphics/wireless_status_screen/anim_03.gbapal"),
INCBIN_U16("graphics/wireless_status_screen/anim_04.gbapal"),
INCBIN_U16("graphics/wireless_status_screen/anim_05.gbapal"),
INCBIN_U16("graphics/wireless_status_screen/anim_06.gbapal"),
INCBIN_U16("graphics/wireless_status_screen/anim_07.gbapal"),
INCBIN_U16("graphics/wireless_status_screen/anim_08.gbapal"),
INCBIN_U16("graphics/wireless_status_screen/anim_09.gbapal"),
INCBIN_U16("graphics/wireless_status_screen/anim_10.gbapal"),
INCBIN_U16("graphics/wireless_status_screen/anim_11.gbapal"),
INCBIN_U16("graphics/wireless_status_screen/anim_12.gbapal"),
INCBIN_U16("graphics/wireless_status_screen/anim_13.gbapal")
};
static const u32 sBgTiles_Gfx[] = INCBIN_U32("graphics/wireless_status_screen/bg.4bpp.lz");
static const u32 sBgTiles_Tilemap[] = INCBIN_U32("graphics/wireless_status_screen/bg.bin.lz");
static const struct BgTemplate sBgTemplates[] = { static const struct BgTemplate sBgTemplates[] = {
{ {
@ -193,7 +211,7 @@ static void CB2_InitWirelessCommunicationScreen(void)
ChangeBgY(0, 0, BG_COORD_SET); ChangeBgY(0, 0, BG_COORD_SET);
ChangeBgX(1, 0, BG_COORD_SET); ChangeBgX(1, 0, BG_COORD_SET);
ChangeBgY(1, 0, BG_COORD_SET); ChangeBgY(1, 0, BG_COORD_SET);
LoadPalette(sBgTiles_Pal, 0x00, 0x20); LoadPalette(sPalettes, 0x00, 0x20);
Menu_LoadStdPalAt(0xF0); Menu_LoadStdPalAt(0xF0);
DynamicPlaceholderTextUtil_Reset(); DynamicPlaceholderTextUtil_Reset();
FillBgTilemapBufferRect(0, 0, 0, 0, 32, 32, 0x0F); FillBgTilemapBufferRect(0, 0, 0, 0, 32, 32, 0x0F);
@ -218,16 +236,19 @@ static void CB2_ExitWirelessCommunicationStatusScreen(void)
SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
} }
static void WCSS_CyclePalette(s16 * counter, s16 * palIdx) // Cycle through palettes that relocate various shades of blue to create the wave effect at the bottom of the screen.
static void CyclePalette(s16 * counter, s16 * palIdx)
{ {
s32 idx;
if (++(*counter) > 5) if (++(*counter) > 5)
{ {
if (++(*palIdx) == 14) if (++(*palIdx) == (int)ARRAY_COUNT(sPalettes) - 2)
*palIdx = 0; *palIdx = 0;
*counter = 0; *counter = 0;
} }
LoadPalette(sBgTiles_Pal + 16 * (*palIdx + 2), 0, 0x10); idx = *palIdx + 2; // +2 skips over default.pal and the empty black palette after it
LoadPalette(sPalettes[idx], 0, 16);
} }
static void PrintHeaderTexts(void) static void PrintHeaderTexts(void)
@ -236,12 +257,17 @@ static void PrintHeaderTexts(void)
FillWindowPixelBuffer(0, PIXEL_FILL(0)); FillWindowPixelBuffer(0, PIXEL_FILL(0));
FillWindowPixelBuffer(1, PIXEL_FILL(0)); FillWindowPixelBuffer(1, PIXEL_FILL(0));
FillWindowPixelBuffer(2, PIXEL_FILL(0)); FillWindowPixelBuffer(2, PIXEL_FILL(0));
// Print title
WCSS_AddTextPrinterParameterized(0, FONT_NORMAL, sHeaderTexts[0], GetStringCenterAlignXOffset(FONT_NORMAL, sHeaderTexts[0], 0xC0), 6, COLORMODE_GREEN); WCSS_AddTextPrinterParameterized(0, FONT_NORMAL, sHeaderTexts[0], GetStringCenterAlignXOffset(FONT_NORMAL, sHeaderTexts[0], 0xC0), 6, COLORMODE_GREEN);
for (i = 0; i < (int)ARRAY_COUNT(*sHeaderTexts) - 1; i++)
{ // Print label for each group (excluding total)
for (i = 0; i < NUM_GROUPTYPES - 1; i++)
WCSS_AddTextPrinterParameterized(1, FONT_NORMAL, sHeaderTexts[i + 1], 0, 30 * i + 8, COLORMODE_WHITE_LGRAY); WCSS_AddTextPrinterParameterized(1, FONT_NORMAL, sHeaderTexts[i + 1], 0, 30 * i + 8, COLORMODE_WHITE_LGRAY);
}
// Print label for total
WCSS_AddTextPrinterParameterized(1, FONT_NORMAL, sHeaderTexts[i + 1], 0, 30 * i + 8, COLORMODE_RED); WCSS_AddTextPrinterParameterized(1, FONT_NORMAL, sHeaderTexts[i + 1], 0, 30 * i + 8, COLORMODE_RED);
PutWindowTilemap(0); PutWindowTilemap(0);
CopyWindowToVram(0, COPYWIN_GFX); CopyWindowToVram(0, COPYWIN_GFX);
PutWindowTilemap(1); PutWindowTilemap(1);
@ -260,7 +286,7 @@ static void Task_WirelessCommunicationScreen(u8 taskId)
gTasks[taskId].tState++; gTasks[taskId].tState++;
break; break;
case 1: case 1:
BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, 0); BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_BLACK);
ShowBg(1); ShowBg(1);
CopyBgTilemapBufferToVram(0); CopyBgTilemapBufferToVram(0);
ShowBg(0); ShowBg(0);
@ -268,9 +294,7 @@ static void Task_WirelessCommunicationScreen(u8 taskId)
break; break;
case 2: case 2:
if (!gPaletteFade.active) if (!gPaletteFade.active)
{
gTasks[taskId].tState++; gTasks[taskId].tState++;
}
break; break;
case 3: case 3:
if (UpdateCommunicationCounts(sStatusScreen->groupCounts, sStatusScreen->prevGroupCounts, sStatusScreen->activities, sStatusScreen->rfuTaskId)) if (UpdateCommunicationCounts(sStatusScreen->groupCounts, sStatusScreen->prevGroupCounts, sStatusScreen->activities, sStatusScreen->rfuTaskId))
@ -293,10 +317,10 @@ static void Task_WirelessCommunicationScreen(u8 taskId)
gTasks[sStatusScreen->rfuTaskId].data[15] = 0xFF; gTasks[sStatusScreen->rfuTaskId].data[15] = 0xFF;
gTasks[taskId].tState++; gTasks[taskId].tState++;
} }
WCSS_CyclePalette(&gTasks[taskId].data[7], &gTasks[taskId].data[8]); CyclePalette(&gTasks[taskId].data[7], &gTasks[taskId].data[8]);
break; break;
case 4: case 4:
BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, 0); BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK);
gTasks[taskId].tState++; gTasks[taskId].tState++;
break; break;
case 5: case 5: