Union room activity documentation

This commit is contained in:
PikalaxALT 2020-02-03 13:42:57 -05:00
parent aed9c28dc3
commit 46a3ca5134
10 changed files with 790 additions and 628 deletions

View File

@ -1,6 +1,43 @@
#ifndef GUARD_CONSTANTS_UNION_ROOM_H
#define GUARD_CONSTANTS_UNION_ROOM_H
#define UNION_ROOM_SPAWN_NONE 0
#define UNION_ROOM_SPAWN_IN 1
#define UNION_ROOM_SPAWN_OUT 2
#define UROOM_ACTIVITY_NONE 0
#define UROOM_ACTIVITY_BATTLE 1
#define UROOM_ACTIVITY_DBLBATTLE 2
#define UROOM_ACTIVITY_MLTBATTLE 3
#define UROOM_ACTIVITY_TRADE 4
#define UROOM_ACTIVITY_CHAT 5
#define UROOM_ACTIVITY_WCARD 6
#define UROOM_ACTIVITY_WNEWS 7
#define UROOM_ACTIVITY_CARD 8
#define UROOM_ACTIVITY_PJUMP 9
#define UROOM_ACTIVITY_BCRUSH 10
#define UROOM_ACTIVITY_BPICK 11
#define UROOM_ACTIVITY_SEARCH 12
#define UROOM_ACTIVITY_SPINTRADE 13
#define UROOM_ACTIVITY_ITEMTRADE 14
// Player response
#define UROOM_ACTIVITY_ACCEPT 17
#define UROOM_ACTIVITY_DECLINE 18
// Duplicate IDs?
#define UROOM_ACTIVITY_WCARD2 21
#define UROOM_ACTIVITY_WNEWS2 22
// Used in UR_AddTextPrinterParameterized
#define UR_COLOR_DKE_WHT_LTE 0
#define UR_COLOR_RED_WHT_LTR 1
#define UR_COLOR_GRN_WHT_LTG 2
#define UR_COLOR_WHT_WHT_LTE 3
#define UR_COLOR_WHT_DKE_LTE 4
#define UR_COLOR_GRN_DN6_LTB 5
#define UR_COLOR_DN5_DN6_LTB 6
#define LINK_GROUP_SINGLE_BATTLE 0
#define LINK_GROUP_DOUBLE_BATTLE 1
#define LINK_GROUP_MULTI_BATTLE 2

View File

@ -117,8 +117,10 @@ struct GFtgtGnameSub
struct __attribute__((packed, aligned(2))) GFtgtGname
{
struct GFtgtGnameSub unk_00;
u8 unk_04[RFU_CHILD_MAX]; // u8 sprite_idx:3;
// u8 gender:1;
u8 child_sprite_gender[RFU_CHILD_MAX]; // u8 sprite_idx:3;
// u8 gender:1;
// u8 unk_4:3
// u8 active:1
u16 species:10;
u16 type:6;
u8 activity:7;
@ -385,13 +387,13 @@ void var_800D_set_xB(void);
struct GFtgtGname *GetHostRFUtgtGname(void);
void UpdateWirelessStatusIndicatorSprite(void);
void InitRFU(void);
bool32 sub_80FBA00(void);
bool32 RfuIsErrorStatus1or2(void);
void RFU_queue_20_70_reset(struct UnkRfuStruct_2_Sub_124 *ptr);
void RFU_queue_40_14_reset(struct UnkRfuStruct_2_Sub_9e8 *ptr);
void sub_80FB9E4(u8 a0, u16 msg);
u8 sub_80FB9F4(void);
void RfuSetErrorStatus(u8 a0, u16 msg);
u8 RfuGetErrorStatus(void);
void RFU_queue_20_70_recv(struct UnkRfuStruct_2_Sub_124 *q1, u8 *q2);
bool8 RFU_queue_40_14_send(struct UnkRfuStruct_2_Sub_9e8 *q1, u8 *q2);
bool8 RFU_queue_2_14_send(struct UnkRfuStruct_2_Sub_c1c *q1, u8 *q2);
@ -410,14 +412,14 @@ bool32 sub_80F8F7C(bool32 a0);
bool32 sub_80FA634(u16 trainerId, const u8 *trainerName);
void sub_80FA670(u8 a0, u16 a1, const u8 *a2);
u32 sub_80FA6FC(u16 a0, const u8 *a1);
void SetHostRFUtgtGname(u8 a0, u32 a1, u32 a2);
void SetHostRFUtgtGname(u8 activity, u32 child_sprite_genders, u32 a2);
void sub_80FBB8C(u32 a0);
void sub_80FBD4C(const u8 *trainerName, u16 trainerId);
void LinkRfu3_SetGnameUnameFromStaticBuffers(struct GFtgtGname *gname, u8 *uname);
void sub_80FBBD8(void);
void sub_80FA6BC(void);
void sub_80FBF54(const u8 *src, u16 trainerId);
void sub_80FB008(u8 a0, u32 a1, u32 a2);
void sub_80FB008(u8 activity, u32 child_sprite_genders, u32 a2);
void RecordMixTrainerNames(void);
void sub_80F8CFC();
void sub_80F8D14();

View File

@ -25,7 +25,7 @@ struct UnkStruct_x20
{
struct UnkStruct_Shared unk;
u16 field_18;
u8 tradeStatus:2;
u8 groupScheduledAnim:2;
u8 field_1A_1:1;
u8 field_1B;
u8 field_1D;
@ -114,19 +114,21 @@ struct UnkStruct_URoom
/* 0x018 */ u8 field_18;
/* 0x019 */ u8 field_19;
/* 0x01A */ u8 field_1A;
/* 0x01B */ u8 field_1B;
/* 0x01C */ u8 field_1C;
/* 0x01D */ u8 field_1D;
/* 0x01E */ u8 field_1E;
/* 0x01B */ u8 topListMenuWindowId;
/* 0x01C */ u8 topListMenuListMenuId;
/* 0x01D */ u8 tradeBoardSelectWindowId;
/* 0x01E */ u8 tradeBoardDetailsWindowId;
/* 0x01F */ u8 field_1F;
/* 0x020 */ u8 field_20;
/* 0x021 */ u8 spriteIds[40];
/* 0x049 */ u8 field_49;
/* 0x04A */ u8 field_4A;
/* 0x04C */ u16 field_4C[6];
/* 0x058 */ u8 field_58[4][11];
/* 0x084 */ u16 field_98;
/* 0x086 */ u16 field_9A[3];
/* 0x04A */ u8 tradeBoardListMenuId;
// For communication with potential link partners
/* 0x04C */ u16 playerSendBuffer[6];
/* 0x058 */ u8 activityRequestStrbufs[4][11];
/* 0x084 */ u16 partnerYesNoResponse;
/* 0x086 */ u16 recvActivityRequest[3]; // activity[, species, level]
/* 0x08C */ struct UnionObj unionObjs[8];
/* 0x0AC */ u8 trainerCardStrbufs[12][15];
/* 0x160 */ u8 field_174[48];

View File

@ -3,7 +3,7 @@
#include "global.h"
extern const u8 gUnknown_84571AC[];
extern const u8 gUnionRoomActivity_Blank[];
extern const u8 gUnknown_84571B0[];
extern const u8 gUnknown_84571B4[];
extern const u8 gUnknown_84571B8[];
@ -46,7 +46,7 @@ extern const u8 gUnknown_8457E44[];
extern const u8 gUnknown_8457E60[];
extern const u8 *const gUnknown_8457F80[][2];
extern const u8 gUnknown_8457F90[];
extern const u8 *const gUnknown_84580F4[][4];
extern const u8 *const gResponseToURoomActivityInviteStringPtrs[][4];
extern const u8 *const gUnknown_8458230[][2][3];
extern const u8 *const gUnknown_8458314[];
extern const u8 *const gUnknown_84583B4[];
@ -91,20 +91,20 @@ extern const u8 gUnknown_8459360[];
extern const u8 gUnknown_8459368[];
extern const u8 gUnknown_8459370[];
extern const u8 gUnknown_8459378[];
extern const u8 gUnknown_8459394[];
extern const u8 gUnknown_84593A4[];
extern const u8 gUnknown_84593B4[];
extern const u8 gUnknown_84593C4[];
extern const u8 gUnknown_84593D4[];
extern const u8 gUnknown_84593E4[];
extern const u8 gUnknown_84593F4[];
extern const u8 gUnknown_84593DC[];
extern const u8 gUnknown_8459400[];
extern const u8 gUnknown_8459410[];
extern const u8 gUnknown_845941C[];
extern const u8 gUnknown_845942C[];
extern const u8 gUnknown_8459434[];
extern const u8 gUnknown_8459440[];
extern const u8 gUnionRoomActivity_SingleBattle[];
extern const u8 gUnionRoomActivity_DoubleBattle[];
extern const u8 gUnionRoomActivity_MultiBattle[];
extern const u8 gUnionRoomActivity_PokemonTrades[];
extern const u8 gUnionRoomActivity_Chat[];
extern const u8 gUnionRoomActivity_WonderCards[];
extern const u8 gunionRoomActivity_WonderNews[];
extern const u8 gUnionRoomActivity_Cards[];
extern const u8 gUnionRoomActivity_PokemonJump[];
extern const u8 gUnionRoomActivity_BerryCrush[];
extern const u8 gUnionRoomActivity_BerryPicking[];
extern const u8 gUnionRoomActivity_Search[];
extern const u8 gUnionRoomActivity_SpinTradeJP[];
extern const u8 gUnionRoomActivity_ItemTradeJP[];
extern const u8 *const gUnknown_84594B0[];
extern const u8 gUnknown_84594C4[];
extern const u8 gUnknown_8459504[];

View File

@ -12,6 +12,7 @@
#include "string_util.h"
#include "task.h"
#include "constants/species.h"
#include "constants/union_room.h"
struct UnkRfuStruct_8010A14{
char unk_00[15]; // PokemonSioInfo
@ -39,7 +40,7 @@ static void sub_80F8DA8(u16 a0);
static void sub_80F906C(void);
static void sub_80F9868(u8 unused);
static void ResetSendDataManager(struct UnkRfuStruct_2_Sub_6c *data);
static void sub_80F9D04(u16 command);
static void RfuPrepareSendBuffer(u16 command);
static void rfufunc_80F9F44(void);
static void sub_80F9FA8(void);
static void rfufunc_80FA020(void);
@ -397,11 +398,11 @@ static void sub_80F8AEC(void)
static void sub_80F8B34(u8 taskId)
{
if (GetHostRFUtgtGname()->activity == 0x54 && sub_80FB9F4() == 4)
if (GetHostRFUtgtGname()->activity == 0x54 && RfuGetErrorStatus() == 4)
{
rfu_REQ_disconnect(lman.acceptSlot_flag);
rfu_waitREQComplete();
sub_80FB9E4(0, 0);
RfuSetErrorStatus(0, 0);
}
switch (Rfu.unk_04)
{
@ -705,7 +706,7 @@ static bool32 sub_80F911C(void)
Rfu.bm_DisconnectSlot = 0;
if (Rfu.unk_ce4 == 1)
{
sub_80FB9E4(2, 0x8000);
RfuSetErrorStatus(2, 0x8000);
GetLinkmanErrorParams(0x8000);
return FALSE;
}
@ -860,15 +861,15 @@ static bool32 sub_80F9514(void)
{
rfu_REQ_disconnect(gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag);
rfu_waitREQComplete();
switchval = sub_80FB9F4();
switchval = RfuGetErrorStatus();
if (switchval != 1 && switchval != 6 && switchval != 9)
sub_80FB9E4(2, 0x9000);
RfuSetErrorStatus(2, 0x9000);
rfu_clearAllSlot();
gReceivedRemoteLinkPlayers = FALSE;
Rfu.RfuFunc = NULL;
if (Rfu.unk_ce4 == 1)
{
sub_80FB9E4(2, 0x9000);
RfuSetErrorStatus(2, 0x9000);
GetLinkmanErrorParams(0x9000);
}
lman.state = lman.next_state = 0;
@ -950,7 +951,7 @@ static void RfuFunc_SendKeysToRfu(void)
{
gUnknown_3001188++;
gHeldKeyCodeToSend |= (gUnknown_3001188 << 8);
sub_80F9D04(0xbe00);
RfuPrepareSendBuffer(0xbe00);
}
}
@ -1049,7 +1050,7 @@ static void sub_80F9868(u8 unused)
}
else
{
sub_80F9D04(0xee00);
RfuPrepareSendBuffer(0xee00);
gSendCmd[1] = gRecvCmds[i][1];
gSendCmd[2] = gRecvCmds[i][2];
gSendCmd[3] = gRecvCmds[i][3];
@ -1130,7 +1131,7 @@ u8 Rfu_GetBlockReceivedStatus(void)
return flags;
}
static void sub_80F9D04(u16 command)
static void RfuPrepareSendBuffer(u16 command)
{
u8 i;
u8 *buff;
@ -1176,10 +1177,10 @@ static void sub_80F9D04(u16 command)
void sub_80F9E2C(void * data)
{
if (gSendCmd[0] == 0 && !sub_80FBA00())
if (gSendCmd[0] == 0 && !RfuIsErrorStatus1or2())
{
memcpy(Rfu.unk_f2, data, sizeof(Rfu.unk_f2));
sub_80F9D04(0x2f00);
RfuPrepareSendBuffer(0x2f00);
}
}
@ -1209,7 +1210,7 @@ bool32 Rfu_InitBlockSend(const u8 *src, size_t size)
memcpy(gBlockSendBuffer, src, size);
Rfu.unk_6c.payload = gBlockSendBuffer;
}
sub_80F9D04(0x8800);
RfuPrepareSendBuffer(0x8800);
Rfu.RfuFunc = rfufunc_80F9F44;
Rfu.unk_5b = 0;
return TRUE;
@ -1219,7 +1220,7 @@ static void rfufunc_80F9F44(void)
{
if (gSendCmd[0] == 0)
{
sub_80F9D04(0x8800);
RfuPrepareSendBuffer(0x8800);
if (Rfu.unk_0c == 1)
{
if (++Rfu.unk_5b > 2)
@ -1275,7 +1276,7 @@ static void rfufunc_80FA020(void)
bool8 sub_80FA0F8(u8 a0)
{
Rfu.unk_5a = a0;
sub_80F9D04(0xa100);
RfuPrepareSendBuffer(0xa100);
return TRUE;
}
@ -1341,7 +1342,7 @@ static void sub_80FA224(void)
{
if (gSendCmd[0] == 0 && !Rfu.unk_ce8)
{
sub_80F9D04(0x5f00);
RfuPrepareSendBuffer(0x5f00);
Rfu.RfuFunc = sub_80FA1C4;
}
}
@ -1371,7 +1372,7 @@ static void sub_80FA2B0(void)
{
if (Rfu.unk_124.count == 0 && Rfu.unk_fe > 0x3c)
{
sub_80F9D04(0x6600);
RfuPrepareSendBuffer(0x6600);
Rfu.unk_fe = 0;
}
}
@ -1395,7 +1396,7 @@ static void sub_80FA350(void)
{
if (Rfu.unk_124.count == 0 && gSendCmd[0] == 0)
{
sub_80F9D04(0x6600);
RfuPrepareSendBuffer(0x6600);
Rfu.RfuFunc = sub_80FA2B0;
}
}
@ -1409,7 +1410,7 @@ static void sub_80FA388(void)
{
if (Rfu.unk_124.count == 0 && gSendCmd[0] == 0)
{
sub_80F9D04(0x6600);
RfuPrepareSendBuffer(0x6600);
Rfu.RfuFunc = sub_80FA2B0;
}
}
@ -1425,7 +1426,7 @@ static void sub_80FA388(void)
{
if (Rfu.unk_124.count == 0 && gSendCmd[0] == 0)
{
sub_80F9D04(0x6600);
RfuPrepareSendBuffer(0x6600);
Rfu.RfuFunc = sub_80FA350;
}
}
@ -1605,7 +1606,7 @@ static s32 sub_80FA788(void)
if (gRfuSlotStatusNI[Rfu.child_slot]->recv.state == SLOT_STATE_RECV_SUCCESS || gRfuSlotStatusNI[Rfu.child_slot]->recv.state == SLOT_STATE_RECV_SUCCESS_AND_SENDSIDE_UNKNOWN)
{
rfu_clearSlot(TYPE_NI_RECV, Rfu.child_slot);
sub_80FB9E4(Rfu.unk_c86, 0);
RfuSetErrorStatus(Rfu.unk_c86, 0);
retval = Rfu.unk_c86;
}
else if (gRfuSlotStatusNI[Rfu.child_slot]->recv.state == SLOT_STATE_RECV_FAILED)
@ -1639,9 +1640,9 @@ static void sub_80FA834(u8 taskId)
if (Rfu.unk_0c == 1)
{
if (gReceivedRemoteLinkPlayers)
sub_80F9D04(0x7800);
RfuPrepareSendBuffer(0x7800);
else
sub_80F9D04(0x7700);
RfuPrepareSendBuffer(0x7700);
gTasks[taskId].data[0] = 101;
}
else
@ -1661,7 +1662,7 @@ static void sub_80FA834(u8 taskId)
if (sub_80F9C50())
{
Rfu.unk_5a = 0;
sub_80F9D04(0xa100);
RfuPrepareSendBuffer(0xa100);
gTasks[taskId].data[0]++;
}
}
@ -1751,7 +1752,7 @@ static void sub_80FAA94(u8 taskId)
if (gSendCmd[0] == 0)
{
ResetBlockReceivedFlag(r4);
sub_80F9D04(0x7800);
RfuPrepareSendBuffer(0x7800);
gTasks[taskId].data[0]++;
}
break;
@ -1850,7 +1851,7 @@ static void RfuCheckErrorStatus(void)
gWirelessCommType = 2;
SetMainCallback2(CB2_LinkError);
gMain.savedCallback = CB2_LinkError;
SetLinkErrorFromRfu((Rfu.linkman_msg << 16) | (Rfu.linkman_param[0] << 8) | Rfu.linkman_param[1], Rfu.unk_124.count, Rfu.unk_9e8.count, sub_80FB9F4() == 2);
SetLinkErrorFromRfu((Rfu.linkman_msg << 16) | (Rfu.linkman_param[0] << 8) | Rfu.linkman_param[1], Rfu.unk_124.count, Rfu.unk_9e8.count, RfuGetErrorStatus() == 2);
Rfu.errorState = 2;
CloseLink();
}
@ -1858,7 +1859,7 @@ static void RfuCheckErrorStatus(void)
{
if (lman.childClockSlave_flag)
rfu_LMAN_requestChangeAgbClockMaster();
sub_80FB9E4(1, 0x7000);
RfuSetErrorStatus(1, 0x7000);
GetLinkmanErrorParams(0x7000);
}
}
@ -1919,9 +1920,9 @@ void ClearAndInitHostRFUtgtGname(void)
InitHostRFUtgtGname(&gHostRFUtgtGnameBuffer, 0, 0, 0);
}
void SetHostRFUtgtGname(u8 a0, u32 a1, u32 a2)
void SetHostRFUtgtGname(u8 activity, u32 child_sprite_genders, u32 a2)
{
InitHostRFUtgtGname(&gHostRFUtgtGnameBuffer, a0, a2, a1);
InitHostRFUtgtGname(&gHostRFUtgtGnameBuffer, activity, a2, child_sprite_genders);
}
void sub_80FAF74(bool32 a0, bool32 a1)
@ -1940,40 +1941,42 @@ void sub_80FAFA0(u32 type, u32 species, u32 level)
void sub_80FAFE0(u8 a0)
{
gHostRFUtgtGnameBuffer.unk_0a_7 = a0;
rfu_REQ_configGameData(0, 2, (void *)&gHostRFUtgtGnameBuffer, gHostRFUtgtUnameBuffer);
rfu_REQ_configGameData(0, 0x0002, (void *)&gHostRFUtgtGnameBuffer, gHostRFUtgtUnameBuffer);
}
void sub_80FB008(u8 a0, u32 a1, u32 a2)
void sub_80FB008(u8 activity, u32 child_sprite_genders, u32 a2)
{
if (a0)
SetHostRFUtgtGname(a0, a1, a2);
rfu_REQ_configGameData(0, 2, (void *)&gHostRFUtgtGnameBuffer, gHostRFUtgtUnameBuffer);
if (activity)
SetHostRFUtgtGname(activity, child_sprite_genders, a2);
rfu_REQ_configGameData(0, 0x0002, (void *)&gHostRFUtgtGnameBuffer, gHostRFUtgtUnameBuffer);
}
void sub_80FB030(u32 linkPlayerCount)
{
s32 i;
u32 r5;
u32 r7;
s32 r8;
u32 numConnectedChildren;
u32 child_sprite_genders;
s32 bm_child_slots;
if (GetHostRFUtgtGname()->activity == 0x45)
if (GetHostRFUtgtGname()->activity == (0x40 | UROOM_ACTIVITY_CHAT))
{
r5 = 0;
r7 = 0;
r8 = Rfu.bm_PartnerFlags ^ Rfu.bm_DisconnectSlot;
numConnectedChildren = 0;
child_sprite_genders = 0;
bm_child_slots = Rfu.bm_PartnerFlags ^ Rfu.bm_DisconnectSlot;
for (i = 0; i < RFU_CHILD_MAX; i++)
{
if ((r8 >> i) & 1)
if ((bm_child_slots >> i) & 1)
{
r7 |= ((
0x80 | ((gLinkPlayers[Rfu.unk_cde[i]].gender & 1) << 3) | (gLinkPlayers[Rfu.unk_cde[i]].trainerId & 7)) << (r5 << 3));
r5++;
if (r5 == linkPlayerCount - 1)
// The 0x80 prevents this element from being incorrectly read as a 0.
child_sprite_genders |= ((
0x80 | ((gLinkPlayers[Rfu.unk_cde[i]].gender & 1) << 3) | (gLinkPlayers[Rfu.unk_cde[i]].trainerId & 7)
) << (numConnectedChildren << 3));
numConnectedChildren++;
if (numConnectedChildren == linkPlayerCount - 1)
break;
}
}
sub_80FB008(0x45, r7, 0);
sub_80FB008(0x45, child_sprite_genders, 0);
}
}
@ -1988,7 +1991,7 @@ static void GetLinkmanErrorParams(u32 msg)
}
}
static void sub_80FB118(void)
static void ResetErrorState(void)
{
Rfu.errorState = 0;
}
@ -2077,7 +2080,7 @@ static void sub_80FB184(u8 msg, u8 param_count)
else
sub_80FB174();
}
sub_80FB9E4(2, msg);
RfuSetErrorStatus(2, msg);
break;
case 0x34:
break;
@ -2086,7 +2089,7 @@ static void sub_80FB184(u8 msg, u8 param_count)
case LMAN_MSG_MANAGER_FORCED_STOPPED_AND_RFU_RESET:
break;
case LMAN_MSG_LMAN_API_ERROR_RETURN:
sub_80FB9E4(1, msg);
RfuSetErrorStatus(1, msg);
GetLinkmanErrorParams(msg);
Rfu.unk_ef = 1;
break;
@ -2095,7 +2098,7 @@ static void sub_80FB184(u8 msg, u8 param_count)
case LMAN_MSG_CLOCK_SLAVE_MS_CHANGE_ERROR_BY_DMA:
case LMAN_MSG_RFU_FATAL_ERROR:
GetLinkmanErrorParams(msg);
sub_80FB9E4(1, msg);
RfuSetErrorStatus(1, msg);
Rfu.unk_cdb = 1;
break;
}
@ -2119,7 +2122,7 @@ static void sub_80FB37C(u8 msg, u8 param_count)
Rfu.child_slot = lman.param[0];
break;
case LMAN_MSG_CONNECT_PARENT_FAILED:
sub_80FB9E4(2, msg);
RfuSetErrorStatus(2, msg);
break;
case LMAN_MSG_CHILD_NAME_SEND_COMPLETED:
Rfu.unk_04 = 11;
@ -2129,7 +2132,7 @@ static void sub_80FB37C(u8 msg, u8 param_count)
rfu_setRecvBuffer(TYPE_UNI, Rfu.child_slot, Rfu.unk_c3f, sizeof(Rfu.unk_c3f));
break;
case LMAN_MSG_CHILD_NAME_SEND_FAILED_AND_DISCONNECTED:
sub_80FB9E4(2, msg);
RfuSetErrorStatus(2, msg);
break;
case LMAN_MSG_LINK_LOSS_DETECTED_AND_DISCONNECTED:
Rfu.linkLossRecoveryState = 2;
@ -2139,7 +2142,7 @@ static void sub_80FB37C(u8 msg, u8 param_count)
if (Rfu.linkLossRecoveryState != 2)
Rfu.linkLossRecoveryState = 4;
if (Rfu.unk_c86 != 9)
sub_80FB9E4(2, msg);
RfuSetErrorStatus(2, msg);
nullsub_87("LINK LOSS DISCONNECT!", 5, 5);
if (gReceivedRemoteLinkPlayers == 1)
GetLinkmanErrorParams(msg);
@ -2159,7 +2162,7 @@ static void sub_80FB37C(u8 msg, u8 param_count)
case LMAN_MSG_MANAGER_FORCED_STOPPED_AND_RFU_RESET:
break;
case LMAN_MSG_LMAN_API_ERROR_RETURN:
sub_80FB9E4(1, msg);
RfuSetErrorStatus(1, msg);
GetLinkmanErrorParams(msg);
Rfu.unk_ef = 1;
break;
@ -2167,7 +2170,7 @@ static void sub_80FB37C(u8 msg, u8 param_count)
case LMAN_MSG_WATCH_DOG_TIMER_ERROR:
case LMAN_MSG_CLOCK_SLAVE_MS_CHANGE_ERROR_BY_DMA:
case LMAN_MSG_RFU_FATAL_ERROR:
sub_80FB9E4(1, msg);
RfuSetErrorStatus(1, msg);
GetLinkmanErrorParams(msg);
Rfu.unk_cdb = 1;
break;
@ -2198,7 +2201,7 @@ static u8 sub_80FB5A0(s32 a0)
if ((a0 >> i) & 1)
{
struct GFtgtGname *structPtr = (void *)&gRfuLinkStatus->partner[i].gname;
if (structPtr->activity == 0x45)
if (structPtr->activity == (0x40 | UROOM_ACTIVITY_CHAT))
ret |= (1 << i);
}
}
@ -2216,10 +2219,10 @@ static void sub_80FB5EC(u8 msg, u8 param_count)
Rfu.unk_04 = 0x11;
break;
case LMAN_MSG_NEW_CHILD_CONNECT_DETECTED:
sub_80FB9E4(4, 0);
RfuSetErrorStatus(4, 0);
break;
case LMAN_MSG_NEW_CHILD_CONNECT_ACCEPTED:
if (GetHostRFUtgtGname()->activity == 0x45 && Rfu.unk_cd9 == 0)
if (GetHostRFUtgtGname()->activity == (0x40 | UROOM_ACTIVITY_CHAT) && Rfu.unk_cd9 == 0)
{
u8 idx = sub_80FB5A0(lman.param[0]);
if (idx != 0)
@ -2242,7 +2245,7 @@ static void sub_80FB5EC(u8 msg, u8 param_count)
Rfu.unk_ce4 = 2;
}
}
else if (GetHostRFUtgtGname()->activity == 0x54)
else if (GetHostRFUtgtGname()->activity == (0x40 | 20))
{
rfu_REQ_disconnect(lman.acceptSlot_flag);
rfu_waitREQComplete();
@ -2254,7 +2257,7 @@ static void sub_80FB5EC(u8 msg, u8 param_count)
case LMAN_MSG_SEARCH_CHILD_PERIOD_EXPIRED:
break;
case LMAN_MSG_END_WAIT_CHILD_NAME:
if (GetHostRFUtgtGname()->activity != 0x45 && lman.acceptCount > 1)
if (GetHostRFUtgtGname()->activity != (0x40 | UROOM_ACTIVITY_CHAT) && lman.acceptCount > 1)
{
r1 = 1 << sub_80F886C(lman.param[0]);
rfu_REQ_disconnect(lman.acceptSlot_flag ^ r1);
@ -2280,16 +2283,16 @@ static void sub_80FB5EC(u8 msg, u8 param_count)
}
else
{
sub_80FB9E4(2, msg);
RfuSetErrorStatus(2, msg);
}
break;
case LMAN_MSG_CHILD_NAME_SEND_COMPLETED:
Rfu.unk_04 = 0xD;
sub_80FB9E4(3, 0);
RfuSetErrorStatus(3, 0);
rfu_setRecvBuffer(TYPE_UNI, Rfu.child_slot, Rfu.unk_c3f, sizeof(Rfu.unk_c3f));
break;
case LMAN_MSG_CHILD_NAME_SEND_FAILED_AND_DISCONNECTED:
sub_80FB9E4(2, msg);
RfuSetErrorStatus(2, msg);
break;
case LMAN_MSG_LINK_LOSS_DETECTED_AND_START_RECOVERY:
if (lman.acceptSlot_flag & lman.param[0])
@ -2326,7 +2329,7 @@ static void sub_80FB5EC(u8 msg, u8 param_count)
if (gRfuLinkStatus->parentChild == MODE_NEUTRAL && lman.pcswitch_flag == 0 && FuncIsActiveTask(sub_80F8B34) == TRUE)
Rfu.unk_04 = 0x11;
sub_80FB9E4(2, msg);
RfuSetErrorStatus(2, msg);
break;
case LMAN_MSG_LINK_DISCONNECTED_BY_USER:
Rfu.bm_DisconnectSlot = 0;
@ -2336,7 +2339,7 @@ static void sub_80FB5EC(u8 msg, u8 param_count)
case LMAN_MSG_MANAGER_FORCED_STOPPED_AND_RFU_RESET:
break;
case LMAN_MSG_LMAN_API_ERROR_RETURN:
sub_80FB9E4(1, msg);
RfuSetErrorStatus(1, msg);
GetLinkmanErrorParams(msg);
Rfu.unk_ef = 1;
break;
@ -2345,7 +2348,7 @@ static void sub_80FB5EC(u8 msg, u8 param_count)
case LMAN_MSG_CLOCK_SLAVE_MS_CHANGE_ERROR_BY_DMA:
case LMAN_MSG_RFU_FATAL_ERROR:
GetLinkmanErrorParams(msg);
sub_80FB9E4(1, msg);
RfuSetErrorStatus(1, msg);
Rfu.unk_cdb = 0;
break;
}
@ -2356,20 +2359,20 @@ void sub_80FB9D0(void)
Rfu.unk_ce4 = 2;
}
void sub_80FB9E4(u8 a0, u16 msg)
void RfuSetErrorStatus(u8 a0, u16 msg)
{
Rfu.unk_f1 = a0;
Rfu.linkman_msg = msg;
}
u8 sub_80FB9F4(void)
u8 RfuGetErrorStatus(void)
{
return Rfu.unk_f1;
}
bool32 sub_80FBA00(void)
bool32 RfuIsErrorStatus1or2(void)
{
u32 var = sub_80FB9F4();
u32 var = RfuGetErrorStatus();
if (var == 1 || var == 2)
return TRUE;
else
@ -2559,7 +2562,7 @@ static void sub_80FBDB8(u8 taskId)
{
if (gSendCmd[0] == 0 && !Rfu.unk_ce8)
{
sub_80F9D04(0xED00);
RfuPrepareSendBuffer(0xED00);
gSendCmd[1] = gTasks[taskId].data[0];
gSendCmd[2] = gTasks[taskId].data[1];
Rfu.playerCount -= gUnknown_843EC41[gTasks[taskId].data[0]];
@ -2605,7 +2608,7 @@ static void sub_80FBE80(u8 taskId)
}
else
{
sub_80FB9E4(2, 0x7000);
RfuSetErrorStatus(2, 0x7000);
DestroyTask(taskId);
}
}
@ -2622,7 +2625,7 @@ static void sub_80FBE80(u8 taskId)
if (data[15] > 240)
{
sub_80FB9E4(2, 0x7000);
RfuSetErrorStatus(2, 0x7000);
DestroyTask(taskId);
}
}
@ -2641,16 +2644,16 @@ void sub_80FBF54(const u8 *src, u16 trainerId)
static bool32 sub_80FBF98(s16 a1, struct GFtgtGname *structPtr)
{
if (GetHostRFUtgtGname()->activity == 0x45)
if (GetHostRFUtgtGname()->activity == (0x40 | UROOM_ACTIVITY_CHAT))
{
if (structPtr->activity != 0x45)
if (structPtr->activity != (0x40 | UROOM_ACTIVITY_CHAT))
return TRUE;
}
else if (structPtr->activity != 0x40)
{
return TRUE;
}
else if (a1 == 0x44)
else if (a1 == (0x40 | UROOM_ACTIVITY_TRADE))
{
struct GFtgtGname *structPtr2 = (struct GFtgtGname *)&Rfu.unk_104.gname;
if (structPtr2->species == SPECIES_EGG)
@ -2678,7 +2681,7 @@ static void sub_80FC028(u8 taskId)
if (++gTasks[taskId].data[0] > 300)
{
sub_80FB9E4(2, 0x7000);
RfuSetErrorStatus(2, 0x7000);
DestroyTask(taskId);
}
@ -2698,14 +2701,14 @@ static void sub_80FC028(u8 taskId)
}
else
{
sub_80FB9E4(2, 0x7000);
RfuSetErrorStatus(2, 0x7000);
DestroyTask(taskId);
}
}
}
}
void sub_80FC114(const u8 *name, struct GFtgtGname *structPtr, u8 a2)
void sub_80FC114(const u8 *name, struct GFtgtGname *structPtr, u8 activity)
{
u8 taskId, taskId2;
@ -2715,9 +2718,9 @@ void sub_80FC114(const u8 *name, struct GFtgtGname *structPtr, u8 a2)
memcpy(Rfu.unk_104.gname, structPtr, RFU_GAME_NAME_LENGTH);
rfu_LMAN_forceChangeSP();
taskId = CreateTask(sub_80FC028, 2);
gTasks[taskId].data[1] = a2;
gTasks[taskId].data[1] = activity;
taskId2 = FindTaskIdByFunc(sub_80F8B34);
if (a2 == 0x45)
if (activity == (UROOM_ACTIVITY_CHAT | 0x40))
{
if (taskId2 != 0xFF)
gTasks[taskId2].data[7] = 1;

View File

@ -603,7 +603,7 @@ static u8 GetConnectedChildStrength(u8 maxFlags)
}
#endif
void InitHostRFUtgtGname(struct GFtgtGname *data, u8 activity, bool32 r2, s32 r3)
void InitHostRFUtgtGname(struct GFtgtGname *data, u8 activity, bool32 r2, s32 child_sprite_genders)
{
s32 i;
@ -613,8 +613,8 @@ void InitHostRFUtgtGname(struct GFtgtGname *data, u8 activity, bool32 r2, s32 r3
}
for (i = 0; i < RFU_CHILD_MAX; i++)
{
data->unk_04[i] = r3;
r3 >>= 8;
data->child_sprite_gender[i] = child_sprite_genders;
child_sprite_genders >>= 8;
}
data->playerGender = gSaveBlock2Ptr->playerGender;
data->activity = activity;
@ -837,7 +837,7 @@ void UpdateWirelessStatusIndicatorSprite(void)
gMain.oamBuffer[125].paletteNum = sprite->oam.paletteNum;
gMain.oamBuffer[125].tileNum = sprite->data[6] + sprite->anims[sprite->data[2]][sprite->data[4]].frame.imageValue;
CpuCopy16(gMain.oamBuffer + 125, (struct OamData *)OAM + 125, sizeof(struct OamData));
if (sub_80FB9F4() == 1)
if (RfuGetErrorStatus() == 1)
{
DestroyWirelessStatusIndicatorSprite();
}

View File

@ -10,6 +10,7 @@
#include "task.h"
#include "constants/flags.h"
#include "constants/event_object_movement.h"
#include "constants/union_room.h"
#include "constants/object_events.h"
static EWRAM_DATA struct UnionObj * UnionObjWork = NULL;
@ -311,7 +312,7 @@ static bool32 SpawnGroupLeader(u32 playerIdx, u32 gender, u32 idMod256)
{
struct UnionObj * ptr = &UnionObjWork[playerIdx];
AGB_ASSERT_EX(UnionObjWork != NULL, ABSPATH("rfu_union_tool.c"), 561)
ptr->schedAnim = 1;
ptr->schedAnim = UNION_ROOM_SPAWN_IN;
ptr->gfxId = GetUnionRoomPlayerGraphicsId(gender, idMod256);
if (ptr->state == 0)
{
@ -327,7 +328,7 @@ static bool32 DespawnGroupLeader(u32 playerIdx)
{
struct UnionObj * ptr = &UnionObjWork[playerIdx];
AGB_ASSERT_EX(UnionObjWork != NULL, ABSPATH("rfu_union_tool.c"), 577)
ptr->schedAnim = 2;
ptr->schedAnim = UNION_ROOM_SPAWN_OUT;
if (ptr->state == 1)
{
return TRUE;
@ -343,7 +344,7 @@ static void AnimateUnionObj(u32 playerIdx, struct UnionObj * ptr)
switch (ptr->state)
{
case 0:
if (ptr->schedAnim == 1)
if (ptr->schedAnim == UNION_ROOM_SPAWN_IN)
{
ptr->state = 2;
ptr->animState = 0;
@ -367,7 +368,7 @@ static void AnimateUnionObj(u32 playerIdx, struct UnionObj * ptr)
}
break;
case 1:
if (ptr->schedAnim == 2)
if (ptr->schedAnim == UNION_ROOM_SPAWN_OUT)
{
ptr->state = 3;
ptr->animState = 0;
@ -384,7 +385,7 @@ static void AnimateUnionObj(u32 playerIdx, struct UnionObj * ptr)
}
break;
}
ptr->schedAnim = 0;
ptr->schedAnim = UNION_ROOM_SPAWN_NONE;
}
static void Task_AnimateUnionObjs(u8 taskId)
@ -496,7 +497,7 @@ static void SpawnGroupMember(u32 groupNo, u32 memberNo, u8 direction, struct GFt
if (RfuUnionGroupMemberIsInvisible(groupNo, memberNo) == TRUE)
{
RfuUnionObjectToggleInvisibility(objId - 0x38, FALSE);
RfuUnionObjectStartWarp(objId - 0x38, 1);
RfuUnionObjectStartWarp(objId - 0x38, UNION_ROOM_SPAWN_IN);
}
RfuUnionObjectSetFacingDirection(objId - 0x38, direction);
UnionPartnerObjectSetFacing(memberNo, groupNo, UnionPartnerObjectGetFacing(memberNo, groupNo, gname));
@ -507,7 +508,7 @@ static void SpawnGroupMember(u32 groupNo, u32 memberNo, u8 direction, struct GFt
static void DespawnGroupMember(u32 group, u32 member)
{
s32 x, y;
RfuUnionObjectStartWarp(5 * group + member - 0x38, 2);
RfuUnionObjectStartWarp(5 * group + member - 0x38, UNION_ROOM_SPAWN_OUT);
GetUnionRoomPlayerFacingCoords(group, member, &x, &y);
MapGridSetMetatileImpassabilityAt(x, y, FALSE);
}
@ -529,13 +530,13 @@ static void AssembleGroup(u32 group, struct GFtgtGname * gname)
}
for (i = 1; i < 5; i++)
{
if (gname->unk_04[i - 1] == 0)
if (gname->child_sprite_gender[i - 1] == 0)
{
DespawnGroupMember(group, i);
}
else if (IsUnionRoomPlayerFacingTileAt(group, i, x, y) == FALSE && IsUnionRoomPlayerFacingTileAt(group, i, x2, y2) == FALSE)
{
SpawnGroupMember(group, i, GetUnionRoomPlayerGraphicsId((gname->unk_04[i - 1] >> 3) & 1, gname->unk_04[i - 1] & 7), gname);
SpawnGroupMember(group, i, GetUnionRoomPlayerGraphicsId((gname->child_sprite_gender[i - 1] >> 3) & 1, gname->child_sprite_gender[i - 1] & 7), gname);
}
}
}
@ -585,11 +586,11 @@ static void UpdateUnionRoomPlayerSprites(struct UnkStruct_URoom * groups)
sUnionObjRefreshTimer = 0;
for (i = 0, x20_p = groups->field_0->arr; i < 8; i++)
{
if (x20_p[i].tradeStatus == 1)
if (x20_p[i].groupScheduledAnim == UNION_ROOM_SPAWN_IN)
{
SpawnGroupLeaderAndMembers(i, &x20_p[i].unk.gname);
}
else if (x20_p[i].tradeStatus == 2)
else if (x20_p[i].groupScheduledAnim == UNION_ROOM_SPAWN_OUT)
{
DespawnGroupLeaderAndMembers(i, &x20_p[i].unk.gname);
}
@ -640,7 +641,7 @@ bool32 RfuUnionTool_GetGroupAndMemberInFrontOfPlayer(struct UnkStruct_Main0 *mai
{
continue;
}
if (x20_p[i].tradeStatus != 1)
if (x20_p[i].groupScheduledAnim != UNION_ROOM_SPAWN_IN)
{
continue;
}

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,9 @@
#include "global.h"
#include "union_room_message.h"
#include "mevent_server.h"
#include "constants/union_room.h"
ALIGNED(4) const u8 gUnknown_84571AC[] = _("");
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_84571B8[] = _("Please start over from the beginning.");
@ -150,6 +151,7 @@ const u8 *const gUnknown_8457898[] = {
ALIGNED(4) const u8 gUnknown_84578A0[] = _("はなしかけています…\nしょうしょう おまちください");
ALIGNED(4) const u8 gUnknown_84578BC[] = _("Awaiting {STR_VAR_1}'s response about\nthe trade…");
ALIGNED(4) const u8 gUnknown_84578E4[] = _("Communicating{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.\n{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.");
ALIGNED(4) const u8 gUnknown_8457950[] = _("Communicating with {STR_VAR_1}{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.\n{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.");
ALIGNED(4) const u8 gUnknown_84579BC[] = _("Please wait a while{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.\n{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.");
@ -237,6 +239,7 @@ const u8 *const gUnknown_8457F80[][2] = {
};
ALIGNED(4) const u8 gUnknown_8457F90[] = _("……\nThe TRAINER appears to be busy…\p");
ALIGNED(4) const u8 gUnknown_8457FB4[] = _("A battle, huh?\nAll right, just give me some time.");
ALIGNED(4) const u8 gUnknown_8457FE8[] = _("You want to chat, huh?\nSure, just wait a little.");
ALIGNED(4) const u8 gUnknown_845801C[] = _("Sure thing! As my “Greetings,”\nhere's my TRAINER CARD.");
@ -244,7 +247,7 @@ ALIGNED(4) const u8 gUnknown_8458054[] = _("A battle? Of course, but I need\ntim
ALIGNED(4) const u8 gUnknown_8458088[] = _("Did you want to chat?\nOkay, but please wait a moment.");
ALIGNED(4) const u8 gUnknown_84580C0[] = _("As my introduction, I'll show you\nmy TRAINER CARD.");
const u8 *const gUnknown_84580F4[][4] = {
const u8 *const gResponseToURoomActivityInviteStringPtrs[][4] = {
{
gUnknown_8457FB4,
gUnknown_8457FE8,
@ -442,6 +445,7 @@ ALIGNED(4) const u8 gUnknown_8458F9C[] = _("Your trade offer was rejected.\p");
ALIGNED(4) const u8 gUnknown_8458FBC[] = _("EGG TRADE");
ALIGNED(4) const u8 gUnknown_8458FC8[] = _("{DPAD_UPDOWN}CHOOSE {A_BUTTON}JOIN {B_BUTTON}CANCEL");
ALIGNED(4) const u8 gUnknown_8458FE4[] = _("Please choose a TRAINER.");
ALIGNED(4) const u8 gUnknown_8459000[] = _("Please choose a TRAINER for\na SINGLE BATTLE.");
ALIGNED(4) const u8 gUnknown_8459030[] = _("Please choose a TRAINER for\na DOUBLE BATTLE.");
ALIGNED(4) const u8 gUnknown_8459060[] = _("Please choose the LEADER\nfor a MULTI BATTLE.");
@ -453,15 +457,15 @@ ALIGNED(4) const u8 gUnknown_8459160[] = _("BERRY CRUSH!\nPlease choose the LEAD
ALIGNED(4) const u8 gUnknown_8459188[] = _("DODRIO BERRY-PICKING!\nPlease choose the LEADER.");
const u8 *const gUnknown_84591B8[] = {
gUnknown_8459000,
gUnknown_8459030,
gUnknown_8459060,
gUnknown_8459090,
gUnknown_845912C,
gUnknown_8459160,
gUnknown_8459188,
gUnknown_84590BC,
gUnknown_84590F4
[LINK_GROUP_SINGLE_BATTLE] = gUnknown_8459000,
[LINK_GROUP_DOUBLE_BATTLE] = gUnknown_8459030,
[LINK_GROUP_MULTI_BATTLE] = gUnknown_8459060,
[LINK_GROUP_TRADE] = gUnknown_8459090,
[LINK_GROUP_POKEMON_JUMP] = gUnknown_845912C,
[LINK_GROUP_BERRY_CRUSH] = gUnknown_8459160,
[LINK_GROUP_BERRY_PICKING] = gUnknown_8459188,
[LINK_GROUP_WONDER_CARD] = gUnknown_84590BC,
[LINK_GROUP_WONDER_NEWS] = gUnknown_84590F4
};
ALIGNED(4) const u8 gUnknown_84591DC[] = _("Searching for a WIRELESS\nCOMMUNICATION SYSTEM. Wait...");
@ -470,6 +474,7 @@ ALIGNED(4) const u8 gUnknown_8459238[] = _("Awaiting {STR_VAR_1}'s response…")
ALIGNED(4) const u8 gUnknown_8459250[] = _("{STR_VAR_1} has been asked to register\nyou as a member. Please wait.");
ALIGNED(4) const u8 gUnknown_845928C[] = _("Awaiting a response from the\nWIRELESS COMMUNICATION SYSTEM.");
ALIGNED(4) const u8 gUnref_PlsWaitLittleWHile[] = _("ほかの さんかしゃが そろうまで\nしょうしょう おまちください");
ALIGNED(4) const u8 gUnknown_84592E8[] = _("No CARDS appear to be shared \nright now.");
ALIGNED(4) const u8 gUnknown_8459314[] = _("No NEWS appears to be shared\nright now.");
@ -482,23 +487,26 @@ ALIGNED(4) const u8 gUnknown_8459344[] = _("BATTLE");
ALIGNED(4) const u8 gUnknown_845934C[] = _("CHAT");
ALIGNED(4) const u8 gUnknown_8459354[] = _("GREETINGS");
ALIGNED(4) const u8 gUnknown_8459360[] = _("EXIT");
ALIGNED(4) const u8 gUnknown_8459368[] = _("EXIT");
ALIGNED(4) const u8 gUnknown_8459370[] = _("INFO");
ALIGNED(4) const u8 gUnknown_8459378[] = _("NAME{CLEAR_TO 0x3C}WANTED{CLEAR_TO 0x6E}OFFER{CLEAR_TO 0xC6}LV.");
ALIGNED(4) const u8 gUnknown_8459394[] = _("SINGLE BATTLE");
ALIGNED(4) const u8 gUnknown_84593A4[] = _("DOUBLE BATTLE");
ALIGNED(4) const u8 gUnknown_84593B4[] = _("MULTI BATTLE");
ALIGNED(4) const u8 gUnknown_84593C4[] = _("POKéMON TRADES");
ALIGNED(4) const u8 gUnknown_84593D4[] = _("CHAT");
ALIGNED(4) const u8 gUnknown_84593DC[] = _("CARDS");
ALIGNED(4) const u8 gUnknown_84593E4[] = _("WONDER CARDS");
ALIGNED(4) const u8 gUnknown_84593F4[] = _("WONDER NEWS");
ALIGNED(4) const u8 gUnknown_8459400[] = _("POKéMON JUMP");
ALIGNED(4) const u8 gUnknown_8459410[] = _("BERRY CRUSH");
ALIGNED(4) const u8 gUnknown_845941C[] = _("BERRY-PICKING");
ALIGNED(4) const u8 gUnknown_845942C[] = _("SEARCH");
ALIGNED(4) const u8 gUnknown_8459434[] = _("ぐるぐるこうかん");
ALIGNED(4) const u8 gUnknown_8459440[] = _("アイテムトレード");
ALIGNED(4) const u8 gUnionRoomActivity_SingleBattle[] = _("SINGLE BATTLE");
ALIGNED(4) const u8 gUnionRoomActivity_DoubleBattle[] = _("DOUBLE BATTLE");
ALIGNED(4) const u8 gUnionRoomActivity_MultiBattle[] = _("MULTI BATTLE");
ALIGNED(4) const u8 gUnionRoomActivity_PokemonTrades[] = _("POKéMON TRADES");
ALIGNED(4) const u8 gUnionRoomActivity_Chat[] = _("CHAT");
ALIGNED(4) const u8 gUnionRoomActivity_Cards[] = _("CARDS");
ALIGNED(4) const u8 gUnionRoomActivity_WonderCards[] = _("WONDER CARDS");
ALIGNED(4) const u8 gunionRoomActivity_WonderNews[] = _("WONDER NEWS");
ALIGNED(4) const u8 gUnionRoomActivity_PokemonJump[] = _("POKéMON JUMP");
ALIGNED(4) const u8 gUnionRoomActivity_BerryCrush[] = _("BERRY CRUSH");
ALIGNED(4) const u8 gUnionRoomActivity_BerryPicking[] = _("BERRY-PICKING");
ALIGNED(4) const u8 gUnionRoomActivity_Search[] = _("SEARCH");
ALIGNED(4) const u8 gUnionRoomActivity_SpinTradeJP[] = _("ぐるぐるこうかん");
ALIGNED(4) const u8 gUnionRoomActivity_ItemTradeJP[] = _("アイテムトレード");
ALIGNED(4) const u8 gUnknown_845944C[] = _("It's a NORMAL CARD.");
ALIGNED(4) const u8 gUnknown_8459460[] = _("It's a BRONZE CARD!");
ALIGNED(4) const u8 gUnknown_8459474[] = _("It's a COPPER CARD!");

View File

@ -18,6 +18,7 @@
#include "link_rfu.h"
#include "union_room.h"
#include "constants/songs.h"
#include "constants/union_room.h"
struct WirelessCommunicationStatusScreenStruct
{
@ -364,19 +365,19 @@ void sub_814F65C(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 palIdx)
u32 sub_814F714(struct UnkStruct_x20 * unk20, u32 * arg1)
{
u32 r8 = unk20->unk.gname.activity;
u32 activity = unk20->unk.gname.activity;
s32 i, j, k;
for (i = 0; i < NELEMS(gUnknown_846FAC0); i++)
{
if (r8 == gUnknown_846FAC0[i][0] && unk20->tradeStatus == 1)
if (activity == gUnknown_846FAC0[i][0] && unk20->groupScheduledAnim == UNION_ROOM_SPAWN_IN)
{
if (gUnknown_846FAC0[i][2] == 0)
{
k = 0;
for (j = 0; j < 4; j++)
{
if (unk20->unk.gname.unk_04[j] != 0) k++;
if (unk20->unk.gname.child_sprite_gender[j] != 0) k++;
}
k++;
arg1[gUnknown_846FAC0[i][1]] += k;
@ -388,7 +389,7 @@ u32 sub_814F714(struct UnkStruct_x20 * unk20, u32 * arg1)
}
}
return r8;
return activity;
}
bool32 sub_814F7BC(const u32 * ptr0, const u32 * ptr1)