Document union_room.c

This commit is contained in:
GriffinR 2020-05-30 04:09:21 -04:00
parent 24075e9e72
commit 4fe507e453
34 changed files with 1811 additions and 1664 deletions

View File

@ -3,6 +3,6 @@
#include "main.h"
void sub_8020C70(MainCallback callback);
void StartBerryCrush(MainCallback callback);
#endif // GUARD_BERRY_CRUSH_H

View File

@ -11,7 +11,7 @@
void sub_80B37D4(TaskFunc taskFunc);
u8 sub_80B3050(void);
void sub_80B360C(void);
void CB2_ReturnFromCableClubBattle(void);
bool32 sub_80B2AF4(u16 *arg0, u16 *arg1);
void sub_80B3AF8(u8 taskId);
void task00_08081A90(u8 taskId);

View File

@ -1,6 +1,58 @@
#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 ACTIVITY_NONE 0
#define ACTIVITY_BATTLE_SINGLE 1
#define ACTIVITY_BATTLE_DOUBLE 2
#define ACTIVITY_BATTLE_MULTI 3
#define ACTIVITY_TRADE 4
#define ACTIVITY_CHAT 5
#define ACTIVITY_WONDER_CARD 6
#define ACTIVITY_WONDER_NEWS 7
#define ACTIVITY_CARD 8
#define ACTIVITY_POKEMON_JUMP 9
#define ACTIVITY_BERRY_CRUSH 10
#define ACTIVITY_BERRY_PICK 11
#define ACTIVITY_SEARCH 12
#define ACTIVITY_SPIN_TRADE 13
#define ACTIVITY_BATTLE_TOWER_OPEN 14
#define ACTIVITY_RECORD_CORNER 15
#define ACTIVITY_BERRY_BLENDER 16
// Player response
#define ACTIVITY_ACCEPT 17
#define ACTIVITY_DECLINE 18
#define ACTIVITY_NPCTALK 19
#define ACTIVITY_PLYRTALK 20
// Duplicate IDs?
#define ACTIVITY_WONDER_CARD2 21
#define ACTIVITY_WONDER_NEWS2 22
#define ACTIVITY_CONTEST_COOL 23
#define ACTIVITY_CONTEST_BEAUTY 24
#define ACTIVITY_CONTEST_CUTE 25
#define ACTIVITY_CONTEST_SMART 26
#define ACTIVITY_CONTEST_TOUGH 27
#define ACTIVITY_BATTLE_TOWER 28
#define ACTIVITY_29 29
#define IN_UNION_ROOM 0x40
// 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
@ -10,8 +62,8 @@
#define LINK_GROUP_BERRY_PICKING 6
#define LINK_GROUP_WONDER_CARD 7
#define LINK_GROUP_WONDER_NEWS 8
#define LINK_GROUP_UNK_9 9
#define LINK_GROUP_UNK_10 10
#define LINK_GROUP_UNION_ROOM_RESUME 9
#define LINK_GROUP_UNION_ROOM_INIT 10
#define LINK_GROUP_UNK_11 11
#define LINK_GROUP_RECORD_CORNER 12
#define LINK_GROUP_BERRY_BLENDER 13
@ -25,4 +77,8 @@
#define LINK_GROUP_BATTLE_TOWER_OPEN 21
#define NUM_LINK_GROUP_TYPES 22
#define UR_TRADE_MATCH 0
#define UR_TRADE_NOTYPE 1
#define UR_TRADE_NOEGG 2
#endif //GUARD_CONSTANTS_UNION_ROOM_H

View File

@ -1,7 +1,7 @@
#ifndef GUARD_DODRIO_BERRY_PICKING_H
#define GUARD_DODRIO_BERRY_PICKING_H
void sub_802493C(u16 a0, void (*callback)(void));
void StartDodrioBerryPicking(u16 a0, void (*callback)(void));
void IsDodrioInParty(void);
void ShowDodrioBerryPickingRecords(void);

View File

@ -8,6 +8,6 @@ void LockSelectedObjectEvent(void);
void sub_8098630(void);
bool8 sub_8098734(void);
void ScriptUnfreezeObjectEvents(void);
void sub_8098524(void);
void UnionRoom_UnlockPlayerAndChatPartner(void);
#endif // GUARD_EVENT_OBJECT_LOCK_H

View File

@ -274,7 +274,7 @@ void LoadWirelessStatusIndicatorSpriteGfx(void);
bool8 IsLinkTaskFinished(void);
void CreateWirelessStatusIndicatorSprite(u8, u8);
void sub_800ADF8(void);
void sub_800B488(void);
void SetWirelessCommType1(void);
void CheckShouldAdvanceLinkState(void);
void sub_8011BD0(void);
u8 IsLinkMaster(void);

View File

@ -204,7 +204,7 @@ extern u8 gWirelessStatusIndicatorSpriteId;
// Exported ROM declarations
void WipeTrainerNameRecords(void);
void sub_800E700(void);
void sub_800EDD4(void);
void LinkRfu_Shutdown(void);
void sub_800F6FC(u8 who);
void sub_800F728(u8 who);
bool32 IsSendingKeysToRfu(void);
@ -225,51 +225,51 @@ void sub_800E174(void);
void sub_800E6D0(void);
bool32 sub_8010EC0(void);
bool32 sub_8010F1C(void);
bool32 sub_8011A80(void);
bool32 RfuIsErrorStatus1or2(void);
bool32 IsRfuRecvQueueEmpty(void);
u32 GetRfuRecvQueueLength(void);
void RfuVSync(void);
void sub_80111B0(bool32 a0);
u8 sub_8011A74(void);
struct GFtgtGname *sub_800F7DC(void);
void sub_8011068(u8 a0);
u8 RfuGetErrorStatus(void);
struct GFtgtGname *GetHostRFUtgtGname(void);
void UpdateGameData_GroupLockedIn(u8 a0);
void sub_8011170(u32 a0);
void sub_8011A64(u8 a0, u16 a1);
void RfuSetErrorStatus(u8 a0, u16 a1);
u8 sub_801048C(bool32 a0);
void sub_800DF90(struct GFtgtGname *buff1, u8 *buff2);
void sub_8010F84(u8 a0, u32 a1, u32 a2);
void sub_8011C10(u32 a0);
void LinkRfu3_SetGnameUnameFromStaticBuffers(struct GFtgtGname *buff1, u8 *buff2);
void SetHostRFUtgtGname(u8 a0, u32 a1, u32 a2);
void InitializeRfuLinkManager_LinkLeader(u32 a0);
bool32 sub_8012240(void);
void sub_800EF38(void);
void LinkRfu_StopManagerAndFinalizeSlots(void);
bool32 sub_80105EC(void);
bool32 sub_801064C(u16 a0, const u8 *a1);
void sub_8010688(u8 a0, u16 a1, const u8 *a2);
u32 sub_8010714(u16 a0, const u8 *a1);
void sub_8011DC0(const u8 *a0, u16 a1);
bool8 sub_800EF1C(void);
bool32 sub_800EF58(bool32 a0);
bool32 TrainerIdAndNameStillInPartnersList(u16 a0, const u8 *a1);
void SendByteToPartnerByIdAndName(u8 a0, u16 a1, const u8 *a2);
u32 WaitSendByteToPartnerByIdAndName(u16 a0, const u8 *a1);
void RequestDisconnectSlotByTrainerNameAndId(const u8 *a0, u16 a1);
bool8 LmanAcceptSlotFlagIsNotZero(void);
bool32 WaitRfuState(bool32 a0);
void DestroyWirelessStatusIndicatorSprite(void);
void sub_801103C(void);
void sub_8011C5C(void);
void sub_80106D4(void);
void InitializeRfuLinkManager_JoinGroup(void);
void LinkRfuNIsend8(void);
void RecordMixTrainerNames(void);
void sub_800ED10(void);
void sub_800ED28(void);
void sub_8011090(u8 a0, u32 a1, u32 a2);
void sub_8011FC8(const u8 *src, u16 trainerId);
void sub_8010FA0(bool32 a0, bool32 a1);
void sub_8010F60(void);
void LinkRfu_CreateConnectionAsParent(void);
void LinkRfu_StopManagerBeforeEnteringChat(void);
void UpdateGameDataWithActivitySpriteGendersFlag(u8 a0, u32 a1, u32 a2);
void CreateTask_RfuReconnectWithParent(const u8 *src, u16 trainerId);
void SetGnameBufferWonderFlags(bool32 a0, bool32 a1);
void ClearAndInitHostRFUtgtGname(void);
void sub_8010FCC(u32 a0, u32 a1, u32 a2);
void sub_8011C84(void);
void InitializeRfuLinkManager_EnterUnionRoom(void);
void sub_8012188(const u8 *name, struct GFtgtGname *structPtr, u8 a2);
bool32 sub_8011B90(void);
bool32 IsUnionRoomListenTaskActive(void);
void sub_800FE50(void *a0);
bool32 sub_800E540(u16 id, u8 *name);
bool32 PlayerHasMetTrainerBefore(u16 id, u8 *name);
void sub_8011DE0(u32 arg0);
u8 sub_801100C(s32 a0);
void sub_800EF7C(void);
bool8 sub_800DE7C(struct GFtgtGname *buff1, u8 *buff2, u8 idx);
bool8 sub_800DF34(struct GFtgtGname *buff1, u8 *buff2, u8 idx);
bool8 LinkRfu_GetNameIfCompatible(struct GFtgtGname *buff1, u8 *buff2, u8 idx);
bool8 LinkRfu_GetNameIfSerial7F7D(struct GFtgtGname *buff1, u8 *buff2, u8 idx);
s32 sub_800E87C(u8 idx);
void sub_8011BA4(void);
void sub_8010198(void);
@ -325,9 +325,6 @@ void PkmnStrToASCII(u8 *q1, const u8 *q2);
void ASCIIToPkmnStr(u8 *q1, const u8 *q2);
u8 sub_800DD1C(u8 maxFlags);
void sub_800DD94(struct GFtgtGname *data, u8 r9, bool32 r2, s32 r3);
bool8 sub_800DE7C(struct GFtgtGname *buff1, u8 *buff2, u8 idx);
bool8 sub_800DF34(struct GFtgtGname *buff1, u8 *buff2, u8 idx);
void sub_800DF90(struct GFtgtGname *buff1, u8 *buff2);
void CreateWirelessStatusIndicatorSprite(u8 x, u8 y);
void DestroyWirelessStatusIndicatorSprite(void);
void LoadWirelessStatusIndicatorSpriteGfx(void);
@ -337,7 +334,6 @@ void sub_800E174(void);
void CopyTrainerRecord(struct TrainerNameRecord *dest, u32 trainerId, const u8 *name);
bool32 NameIsNotEmpty(const u8 *name);
void RecordMixTrainerNames(void);
bool32 sub_800E540(u16 id, u8 *name);
void WipeTrainerNameRecords(void);
#endif //GUARD_LINK_RFU_H

View File

@ -79,7 +79,7 @@ void sub_8198DBC(u8 windowId, u8 fontId, u8 left, u8 top, u8 a4, u8 itemCount, u
u8 sub_8199944(u8 windowId, u8 optionWidth, u8 columns, u8 rows, u8 initialCursorPos);
u8 sub_8199134(s8, s8);
u8 GetStartMenuWindowId(void);
void sub_819A2BC(u8, u8);
void ListMenuLoadStdPalAt(u8, u8);
u8 Menu_MoveCursor(s8 cursorDelta);
u8 Menu_MoveCursorNoWrapAround(s8 cursorDelta);
void DrawStdWindowFrame(u8 windowId, bool8 CopyToVram);

View File

@ -57,7 +57,7 @@ u32 sub_801B708(const u16 *a0, const struct MEventStruct_Unk1442CC *a1, const vo
bool32 MEventStruct_Unk1442CC_CompareField_unk_16(const struct MEventStruct_Unk1442CC *a0, const u16 *a1);
u16 MEventStruct_Unk1442CC_GetValueNFrom_unk_20(const struct MEventStruct_Unk1442CC *a0, u32 command);
u16 mevent_081445C0(u32 command);
void sub_801B940(void);
bool32 sub_801B94C(u16 a0);
void ResetReceivedWonderCardFlag(void);
bool32 MEventHandleReceivedWonderCard(u16 a0);
#endif //GUARD_MEVENT_H

View File

@ -12,5 +12,7 @@ bool32 MG_PrintTextOnWindow1AndWaitButton(u8 *textState, const u8 *str);
void AddTextPrinterToWindow1(const u8 *src);
void c2_ereader(void);
void c2_mystery_gift(void);
void MG_DrawTextBorder(u8 windowId);
s8 mevent_message_print_and_prompt_yes_no(u8 *textState, u16 *windowId, bool8 yesNoBoxPlacement, const u8 *str);
#endif //GUARD_MYSTERY_GIFT_H

View File

@ -3,7 +3,7 @@
#include "main.h"
void sub_802A9A8(u16 monId, MainCallback callback);
void StartPokemonJump(u16 monId, MainCallback callback);
bool32 IsSpeciesAllowedInPokemonJump(u16 species);
void IsPokemonJumpSpeciesInParty(void);
void ResetPokeJumpResults(void);

View File

@ -5,23 +5,23 @@
// Exported type declarations
struct UnkStruct_Shared
struct WirelessGnameUnamePair
{
struct GFtgtGname field_0;
struct GFtgtGname gname;
u8 ALIGNED(4) playerName[PLAYER_NAME_LENGTH + 1];
};
struct UnkStruct_x1C
struct UnkStruct_x1C // WirelessLink_Member?
{
struct UnkStruct_Shared unk0;
u8 unk18:1;
struct WirelessGnameUnamePair gname_uname;
u8 active:1;
};
struct UnkStruct_x20
struct UnkStruct_x20 // WirelessLink_Member?
{
struct UnkStruct_Shared unk;
struct WirelessGnameUnamePair gname_uname;
u16 field_18;
u8 field_1A_0:2;
u8 groupScheduledAnim:2;
u8 field_1A_1:1;
u8 field_1B;
u8 field_1D;
@ -44,29 +44,28 @@ struct UnkStruct_Main8
struct UnkStruct_x20 arr[5];
};
struct UnkStruct_Leader
struct WirelessLink_Leader
{
struct UnkStruct_Main0 *field_0;
struct UnkStruct_Main4 *field_4;
struct UnkStruct_Main8 *field_8;
u8 state;
u8 textState;
u8 field_E;
u8 delayTimerAfterOk;
u8 listWindowId;
u8 field_10;
u8 field_11;
u8 bButtonCancelWindowId;
u8 nPlayerModeWindowId;
u8 listTaskId;
u8 field_13;
u8 field_14;
u8 field_15;
u8 playerCount;
u16 field_14;
u8 field_16;
u8 field_17;
u8 field_18;
u8 listenTaskId;
u8 activity;
u8 field_19;
u16 field_1A;
};
struct UnkStruct_Group
struct WirelessLink_Group
{
struct UnkStruct_Main0 *field_0;
struct UnkStruct_Main4 *field_4;
@ -74,16 +73,16 @@ struct UnkStruct_Group
u8 textState;
u8 field_A;
u8 listWindowId;
u8 field_C;
u8 field_D;
u8 bButtonCancelWindowId;
u8 playerNameAndIdWindowId;
u8 listTaskId;
u8 field_F;
u8 leaderId;
u8 field_10;
u8 field_11;
u8 field_12;
u8 listenTaskId;
u8 isWonderNews;
u8 field_13;
u8 field_14;
u8 field_15;
u8 refreshTimer;
u8 delayBeforePrint;
};
struct UnkStruct_8019BA8
@ -94,7 +93,7 @@ struct UnkStruct_8019BA8
u8 field_3;
};
struct UnkStruct_URoom
struct WirelessLink_URoom
{
struct UnkStruct_Main0 *field_0;
struct UnkStruct_Main4 *field_4;
@ -109,30 +108,30 @@ struct UnkStruct_URoom
u8 field_18;
u8 field_19;
u8 field_1A;
u8 field_1B;
u8 field_1C;
u8 field_1D;
u8 field_1E;
u8 topListMenuWindowId;
u8 topListMenuId;
u8 tradeBoardSelectWindowId;
u8 tradeBoardDetailsWindowId;
u8 field_1F;
u8 field_20;
u8 spriteIds[40];
u8 field_49;
u8 field_4A;
u16 field_4C[6];
u8 field_58[0x98 - 0x58];
u16 field_98;
u16 field_9A[3];
u16 playerSendBuffer[6];
u8 activityRequestStrbufs[4][16];
u16 partnerYesNoResponse;
u16 recvActivityRequest[3];
struct UnkStruct_8019BA8 field_A0[8];
u8 field_C0[12][15];
u8 field_174[48];
u8 field_1A4[200];
};
union UnkUnion_Main
union WirelessLink_Main
{
struct UnkStruct_Leader *leader;
struct UnkStruct_Group *group;
struct UnkStruct_URoom *uRoom;
struct WirelessLink_Leader *leader;
struct WirelessLink_Group *group;
struct WirelessLink_URoom *uRoom;
};
struct UnionRoomTrade
@ -152,20 +151,22 @@ struct UnionRoomTrade
// Exported RAM declarations
extern u8 gUnknown_02022C2C;
extern union UnkUnion_Main gUnknown_02022C30;
extern struct GFtgtGnameSub gUnknown_02022C38;
extern u8 gPlayerCurrActivity;
extern union WirelessLink_Main gUnknown_02022C30;
extern struct GFtgtGnameSub gPartnerTgtGnameSub;
extern u16 gUnionRoomOfferedSpecies;
extern u8 gUnionRoomRequestedMonType;
// Exported ROM declarations
u8 sub_8013F78(void);
u8 CreateTask_ReturnFromLinkTrade(void);
void nullsub_89(u8 taskId);
void var_800D_set_xB(void);
void MEvent_CreateTask_CardOrNewsWithFriend(u32 arg0);
void MEvent_CreateTask_CardOrNewsOverWireless(u32 arg0);
void MEvent_CreateTask_Leader(u32 arg0);
u8 CreateTask_ListenToWireless(void);
void StartUnionRoomBattle(u16 battleFlags);
#endif //GUARD_UNION_ROOM_H

View File

@ -1,7 +1,6 @@
#ifndef GUARD_UNION_ROOM_BATTLE_H
#define GUARD_UNION_ROOM_BATTLE_H
u8 sub_8013C40(void);
void sub_8014210(u16 battleFlags);
void CB2_UnionRoomBattle(void);
#endif //GUARD_UNION_ROOM_BATTLE_H

View File

@ -12,7 +12,7 @@ enum
#define UNION_ROOM_KB_ROW_COUNT 10
void sub_801DD98(void);
void EnterUnionRoomChat(void);
void copy_strings_to_sav1(void);
#endif // GUARD_UNION_ROOM_CHAT_H

View File

@ -3,12 +3,12 @@
u8 sub_8019BA8(struct UnkStruct_8019BA8 * ptr);
void sub_8019E3C(void);
void sub_8019E70(u8 *arg0, s32 arg1);
void sub_8019F04(u8 *spriteIds);
void CreateGroupMemberObjectsInvisible(u8 *arg0, s32 arg1);
void DestroyGroupMemberObjects(u8 *spriteIds);
void sub_8019F2C(void);
void sub_801A274(struct UnkStruct_URoom *arg0);
void sub_801A284(struct UnkStruct_URoom *arg0);
bool32 sub_801A2A8(struct UnkStruct_Main0 *arg0, s16 *arg1, s16 *arg2, u8 *arg3);
void sub_801A3D0(u32 arg0, u32 arg1, struct UnkStruct_Main0 *arg2);
void ScheduleUnionRoomPlayerRefresh(struct WirelessLink_URoom *arg0);
void HandleUnionRoomPlayerRefresh(struct WirelessLink_URoom *arg0);
bool32 RfuUnionTool_GetGroupAndMemberInFrontOfPlayer(struct UnkStruct_Main0 *arg0, s16 *arg1, s16 *arg2, u8 *arg3);
void UpdateUnionGroupMemberFacing(u32 arg0, u32 arg1, struct UnkStruct_Main0 *arg2);
#endif //GUARD_UNION_ROOM_PLAYER_AVATAR_H

View File

@ -33,7 +33,7 @@ void HandleLinkBattleSetup(void)
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
if (gWirelessCommType)
sub_800B488();
SetWirelessCommType1();
if (!gReceivedRemoteLinkPlayers)
OpenLink();
CreateTask(task00_08081A90, 0);

View File

@ -832,7 +832,7 @@ u32 sub_8020C0C(MainCallback callback)
return 0;
}
void sub_8020C70(MainCallback callback)
void StartBerryCrush(MainCallback callback)
{
u8 playerCount = 0;
u8 multiplayerId;

View File

@ -849,7 +849,7 @@ static void sub_80B32B4(u8 taskId)
CleanupOverworldWindowsAndTilemaps();
gTrainerBattleOpponent_A = 0x800;
SetMainCallback2(CB2_InitBattle);
gMain.savedCallback = sub_80B360C;
gMain.savedCallback = CB2_ReturnFromCableClubBattle;
DestroyTask(taskId);
break;
}
@ -915,7 +915,7 @@ static void sub_80B33BC(u8 taskId)
CleanupOverworldWindowsAndTilemaps();
gTrainerBattleOpponent_A = 0x800;
SetMainCallback2(CB2_InitBattle);
gMain.savedCallback = sub_80B360C;
gMain.savedCallback = CB2_ReturnFromCableClubBattle;
DestroyTask(taskId);
break;
}
@ -965,7 +965,7 @@ static void sub_80B3554(void)
RunTasks();
}
void sub_80B360C(void)
void CB2_ReturnFromCableClubBattle(void)
{
gBattleTypeFlags &= ~BATTLE_TYPE_20;
Overworld_ResetMapMusic();
@ -1129,7 +1129,7 @@ static void sub_80B3894(u8 taskId)
case 3:
if (IsLinkTaskFinished())
{
sub_8013F78();
CreateTask_ReturnFromLinkTrade();
DestroyTask(taskId);
}
break;

View File

@ -50,27 +50,36 @@ const u8 sText_4PlayerMode[] = _("4-PLAYER\nMODE");
const u8 sText_5PlayerMode[] = _("5-PLAYER\nMODE");
static const u8 *const sPlayersNeededOrModeTexts[][5] = {
// 2 players required
{
sText_1PlayerNeeded,
sText_2PlayerMode
}, {
},
// 4 players required
{
sText_3PlayersNeeded,
sText_2PlayersNeeded,
sText_1PlayerNeeded,
sText_4PlayerMode
}, {
},
// 2-5 players required
{
sText_1PlayerNeeded,
sText_2PlayerMode,
sText_3PlayerMode,
sText_4PlayerMode,
sText_5PlayerMode
}, {
},
// 3-5 players required
{
sText_2PlayersNeeded,
sText_1PlayerNeeded,
sText_3PlayerMode,
sText_4PlayerMode,
sText_5PlayerMode
}, {
},
// 2-4 players required
{
sText_1PlayerNeeded,
sText_2PlayerMode,
sText_3PlayerMode,
@ -484,8 +493,8 @@ static const u8 *const sChooseTrainerTexts[NUM_LINK_GROUP_TYPES] =
[LINK_GROUP_BERRY_PICKING] = sText_ChooseLeaderBerryPicking,
[LINK_GROUP_WONDER_CARD] = sText_ChooseTrainerToShareWonderCards,
[LINK_GROUP_WONDER_NEWS] = sText_ChooseTrainerToShareWonderNews,
[LINK_GROUP_UNK_9] = NULL,
[LINK_GROUP_UNK_10] = NULL,
[LINK_GROUP_UNION_ROOM_RESUME] = NULL,
[LINK_GROUP_UNION_ROOM_INIT] = NULL,
[LINK_GROUP_UNK_11] = NULL,
[LINK_GROUP_RECORD_CORNER] = sText_ChooseLeaderRecordCorner,
[LINK_GROUP_BERRY_BLENDER] = sText_ChooseLeaderBerryBlender,
@ -599,7 +608,7 @@ const u8 *const sLinkGroupActivityTexts[] = {
sText_BattleTowerLv50
};
const struct WindowTemplate gUnknown_082F00BC = {
static const struct WindowTemplate sWindowTemplate_BButtonCancel = {
.bg = 0x00,
.tilemapLeft = 0x00,
.tilemapTop = 0x00,
@ -609,29 +618,33 @@ const struct WindowTemplate gUnknown_082F00BC = {
.baseBlock = 0x0008
};
const u32 gUnknown_082F00C4[NUM_LINK_GROUP_TYPES] = {
0x0201,
0x0202,
0x0403,
0x0204,
0x2509,
0x250a,
0x350b,
0x0000,
0x0000,
0x0000,
0x0000,
0x0000,
0x240f,
0x2410,
0x0000,
0x2417,
0x2418,
0x2419,
0x241a,
0x241b,
0x021c,
0x020e
// Minimum and maximum number of players for a link group
// A minimum of 0 means the min and max are equal
#define LINK_GROUP_CAPACITY(min, max)(((min) << 12) | ((max) << 8))
static const u32 sLinkGroupToActivityAndCapacity[NUM_LINK_GROUP_TYPES] = {
[LINK_GROUP_SINGLE_BATTLE] = ACTIVITY_BATTLE_SINGLE | LINK_GROUP_CAPACITY(0, 2),
[LINK_GROUP_DOUBLE_BATTLE] = ACTIVITY_BATTLE_DOUBLE | LINK_GROUP_CAPACITY(0, 2),
[LINK_GROUP_MULTI_BATTLE] = ACTIVITY_BATTLE_MULTI | LINK_GROUP_CAPACITY(0, 4),
[LINK_GROUP_TRADE] = ACTIVITY_TRADE | LINK_GROUP_CAPACITY(0, 2),
[LINK_GROUP_POKEMON_JUMP] = ACTIVITY_POKEMON_JUMP | LINK_GROUP_CAPACITY(2, 5),
[LINK_GROUP_BERRY_CRUSH] = ACTIVITY_BERRY_CRUSH | LINK_GROUP_CAPACITY(2, 5),
[LINK_GROUP_BERRY_PICKING] = ACTIVITY_BERRY_PICK | LINK_GROUP_CAPACITY(3, 5),
[LINK_GROUP_WONDER_CARD] = ACTIVITY_NONE | LINK_GROUP_CAPACITY(0, 0),
[LINK_GROUP_WONDER_NEWS] = ACTIVITY_NONE | LINK_GROUP_CAPACITY(0, 0),
[LINK_GROUP_UNION_ROOM_RESUME] = ACTIVITY_NONE | LINK_GROUP_CAPACITY(0, 0),
[LINK_GROUP_UNION_ROOM_INIT] = ACTIVITY_NONE | LINK_GROUP_CAPACITY(0, 0),
[LINK_GROUP_UNK_11] = ACTIVITY_NONE | LINK_GROUP_CAPACITY(0, 0),
[LINK_GROUP_RECORD_CORNER] = ACTIVITY_RECORD_CORNER | LINK_GROUP_CAPACITY(2, 4),
[LINK_GROUP_BERRY_BLENDER] = ACTIVITY_BERRY_BLENDER | LINK_GROUP_CAPACITY(2, 4),
[LINK_GROUP_UNK_14] = ACTIVITY_NONE | LINK_GROUP_CAPACITY(0, 0),
[LINK_GROUP_COOL_CONTEST] = ACTIVITY_CONTEST_COOL | LINK_GROUP_CAPACITY(2, 4),
[LINK_GROUP_BEAUTY_CONTEST] = ACTIVITY_CONTEST_BEAUTY | LINK_GROUP_CAPACITY(2, 4),
[LINK_GROUP_CUTE_CONTEST] = ACTIVITY_CONTEST_CUTE | LINK_GROUP_CAPACITY(2, 4),
[LINK_GROUP_SMART_CONTEST] = ACTIVITY_CONTEST_SMART | LINK_GROUP_CAPACITY(2, 4),
[LINK_GROUP_TOUGH_CONTEST] = ACTIVITY_CONTEST_TOUGH | LINK_GROUP_CAPACITY(2, 4),
[LINK_GROUP_BATTLE_TOWER] = ACTIVITY_BATTLE_TOWER | LINK_GROUP_CAPACITY(0, 2),
[LINK_GROUP_BATTLE_TOWER_OPEN] = ACTIVITY_BATTLE_TOWER_OPEN | LINK_GROUP_CAPACITY(0, 2)
};
const struct WindowTemplate gUnknown_082F011C = {
@ -654,7 +667,7 @@ const struct WindowTemplate gUnknown_082F0124 = {
.baseBlock = 0x0044
};
const struct WindowTemplate gUnknown_082F012C = {
static const struct WindowTemplate sWindowTemplate_NumPlayerMode = {
.bg = 0x00,
.tilemapLeft = 0x10,
.tilemapTop = 0x03,
@ -672,11 +685,11 @@ const struct ListMenuItem gUnknown_082F0134[] = {
{ sText_EmptyString, 4 }
};
const struct ListMenuTemplate gUnknown_082F015C = {
static const struct ListMenuTemplate sListMenuTemplate_PossibleGroupMembers = {
.items = gUnknown_082F0134,
.moveCursorFunc = NULL,
.itemPrintFunc = sub_8013278,
.totalItems = 5,
.itemPrintFunc = ItemPrintFunc_PossibleGroupMembers,
.totalItems = ARRAY_COUNT(gUnknown_082F0134),
.maxShowed = 5,
.windowId = 0,
.header_X = 0,
@ -732,11 +745,11 @@ const struct ListMenuItem gUnknown_082F0184[] = {
{ sText_EmptyString, 15 }
};
const struct ListMenuTemplate gUnknown_082F0204 = {
static const struct ListMenuTemplate sListMenuTemplate_UnionRoomGroups = {
.items = gUnknown_082F0184,
.moveCursorFunc = ListMenuDefaultCursorMoveFunc,
.itemPrintFunc = sub_8013DF4,
.totalItems = 16,
.itemPrintFunc = ListMenuItemPrintFunc_UnionRoomGroups,
.totalItems = ARRAY_COUNT(gUnknown_082F0184),
.maxShowed = 5,
.windowId = 0,
.header_X = 0,
@ -753,7 +766,7 @@ const struct ListMenuTemplate gUnknown_082F0204 = {
.cursorKind = 0
};
const struct WindowTemplate gUnknown_082F021C = {
static const struct WindowTemplate sWindowTemplate_InviteToActivity = {
.bg = 0x00,
.tilemapLeft = 0x14,
.tilemapTop = 0x05,
@ -770,11 +783,11 @@ const struct ListMenuItem gUnknown_082F0224[] = {
{ sText_Exit, 0x040 }
};
const struct ListMenuTemplate gUnknown_082F0244 = {
static const struct ListMenuTemplate sListMenuTemplate_InviteToActivity = {
.items = gUnknown_082F0224,
.moveCursorFunc = ListMenuDefaultCursorMoveFunc,
.itemPrintFunc = NULL,
.totalItems = 4,
.totalItems = ARRAY_COUNT(gUnknown_082F0224),
.maxShowed = 4,
.windowId = 0,
.header_X = 0,
@ -811,7 +824,7 @@ const struct ListMenuTemplate gUnknown_082F027C = {
.items = gUnknown_082F0264,
.moveCursorFunc = ListMenuDefaultCursorMoveFunc,
.itemPrintFunc = NULL,
.totalItems = 3,
.totalItems = ARRAY_COUNT(gUnknown_082F0264),
.maxShowed = 3,
.windowId = 0,
.header_X = 0,
@ -838,7 +851,7 @@ const struct WindowTemplate gUnknown_082F0294 = {
.baseBlock = 0x0001
};
static const struct ListMenuItem sTradingBoardTypes[] = {
static const struct ListMenuItem sTradingBoardTypes[NUMBER_OF_MON_TYPES] = {
{ gTypeNames[TYPE_NORMAL], TYPE_NORMAL },
{ gTypeNames[TYPE_FIRE], TYPE_FIRE },
{ gTypeNames[TYPE_WATER], TYPE_WATER },
@ -856,14 +869,14 @@ static const struct ListMenuItem sTradingBoardTypes[] = {
{ gTypeNames[TYPE_DRAGON], TYPE_DRAGON },
{ gTypeNames[TYPE_STEEL], TYPE_STEEL },
{ gTypeNames[TYPE_DARK], TYPE_DARK },
{ sText_Exit, NUMBER_OF_MON_TYPES }
{ sText_Exit, NUMBER_OF_MON_TYPES }
};
const struct ListMenuTemplate sMenuTemplate_TradingBoardRequestType = {
.items = sTradingBoardTypes,
.moveCursorFunc = ListMenuDefaultCursorMoveFunc,
.itemPrintFunc = NULL,
.totalItems = NUMBER_OF_MON_TYPES,
.totalItems = ARRAY_COUNT(sTradingBoardTypes),
.maxShowed = 6,
.windowId = 0,
.header_X = 0,
@ -900,7 +913,7 @@ const struct WindowTemplate gUnknown_082F034C = {
.baseBlock = 0x0039
};
const struct ListMenuItem gUnknown_082F0354[] = {
static const struct ListMenuItem sTradeBoardListMenuItems[] = {
{ sText_EmptyString, -3 },
{ sText_EmptyString, 0 },
{ sText_EmptyString, 1 },
@ -913,11 +926,11 @@ const struct ListMenuItem gUnknown_082F0354[] = {
{ sText_Exit2, 8 }
};
const struct ListMenuTemplate gUnknown_082F03A4 = {
.items = gUnknown_082F0354,
static const struct ListMenuTemplate sTradeBoardListMenuTemplate = {
.items = sTradeBoardListMenuItems,
.moveCursorFunc = ListMenuDefaultCursorMoveFunc,
.itemPrintFunc = sub_8017BE8,
.totalItems = 10,
.itemPrintFunc = TradeBoardListMenuItemPrintFunc,
.totalItems = ARRAY_COUNT(sTradeBoardListMenuItems),
.maxShowed = 6,
.windowId = 0,
.header_X = 0,
@ -944,7 +957,7 @@ const struct WindowTemplate UnrefWindowTemplate_082F03B4 = {
.baseBlock = 0x0039
};
const struct ListMenuItem gUnknown_082F03C4[] = {
static const struct ListMenuItem sEmptyListMenuItems[] = {
{ sText_EmptyString, 0 },
{ sText_EmptyString, 1 },
{ sText_EmptyString, 2 },
@ -963,11 +976,12 @@ const struct ListMenuItem gUnknown_082F03C4[] = {
{ sText_EmptyString, 15 }
};
const struct ListMenuTemplate UnrefListMenuTemplate_082F0444 = {
.items = gUnknown_082F03C4,
// Unused
static const struct ListMenuTemplate sUnknownListMenuTemplate = {
.items = sEmptyListMenuItems,
.moveCursorFunc = ListMenuDefaultCursorMoveFunc,
.itemPrintFunc = nullsub_14,
.totalItems = 16,
.totalItems = ARRAY_COUNT(sEmptyListMenuItems),
.maxShowed = 4,
.windowId = 0,
.header_X = 0,
@ -984,78 +998,100 @@ const struct ListMenuTemplate UnrefListMenuTemplate_082F0444 = {
.cursorKind = 0
};
const struct UnkStruct_Shared gUnknown_082F045C = {0};
const struct WirelessGnameUnamePair sWirelessGnameUnamePair_Dummy = {0};
ALIGNED(4) const u8 gUnknown_082F0474[] = {0x01, 0xff};
ALIGNED(4) const u8 gUnknown_082F0478[] = {0x02, 0xff};
ALIGNED(4) const u8 gUnknown_082F047C[] = {0x03, 0xff};
ALIGNED(4) const u8 gUnknown_082F0480[] = {0x04, 0xff};
ALIGNED(4) const u8 gUnknown_082F0484[] = {0x09, 0xff};
ALIGNED(4) const u8 gUnknown_082F0488[] = {0x0a, 0xff};
ALIGNED(4) const u8 gUnknown_082F048C[] = {0x0b, 0xff};
ALIGNED(4) const u8 gUnknown_082F0490[] = {0x15, 0xff};
ALIGNED(4) const u8 gUnknown_082F0494[] = {0x16, 0xff};
ALIGNED(4) const u8 gUnknown_082F0498[] = {0x40, 0x41, 0x44, 0x45, 0x48, 0x51, 0x52, 0x53, 0x54, 0xff};
ALIGNED(4) const u8 gUnknown_082F04A4[] = {0x0c, 0xff};
ALIGNED(4) const u8 gUnknown_082F04A8[] = {0x01, 0x02, 0x03, 0x04, 0x09, 0x0a, 0x0b, 0x15, 0x16, 0x0d, 0xff};
ALIGNED(4) const u8 gUnknown_082F04B4[] = {0x0f, 0xff};
ALIGNED(4) const u8 gUnknown_082F04B8[] = {0x10, 0xff};
ALIGNED(4) const u8 gUnknown_082F04BC[] = {0x17, 0xff};
ALIGNED(4) const u8 gUnknown_082F04C0[] = {0x18, 0xff};
ALIGNED(4) const u8 gUnknown_082F04C4[] = {0x19, 0xff};
ALIGNED(4) const u8 gUnknown_082F04C8[] = {0x1a, 0xff};
ALIGNED(4) const u8 gUnknown_082F04CC[] = {0x1b, 0xff};
ALIGNED(4) const u8 gUnknown_082F04D0[] = {0x1c, 0xff};
ALIGNED(4) const u8 gUnknown_082F04D4[] = {0x0e, 0xff};
ALIGNED(4) const u8 sAcceptedActivityIds_SingleBattle[] = {ACTIVITY_BATTLE_SINGLE, 0xff};
ALIGNED(4) const u8 sAcceptedActivityIds_DoubleBattle[] = {ACTIVITY_BATTLE_DOUBLE, 0xff};
ALIGNED(4) const u8 sAcceptedActivityIds_MultiBattle[] = {ACTIVITY_BATTLE_MULTI, 0xff};
ALIGNED(4) const u8 sAcceptedActivityIds_Trade[] = {ACTIVITY_TRADE, 0xff};
ALIGNED(4) const u8 sAcceptedActivityIds_PokemonJump[] = {ACTIVITY_POKEMON_JUMP, 0xff};
ALIGNED(4) const u8 sAcceptedActivityIds_BerryCrush[] = {ACTIVITY_BERRY_CRUSH, 0xff};
ALIGNED(4) const u8 sAcceptedActivityIds_BerryPicking[] = {ACTIVITY_BERRY_PICK, 0xff};
ALIGNED(4) const u8 sAcceptedActivityIds_WonderCard[] = {ACTIVITY_WONDER_CARD2, 0xff};
ALIGNED(4) const u8 sAcceptedActivityIds_WonderNews[] = {ACTIVITY_WONDER_NEWS2, 0xff};
ALIGNED(4) const u8 sAcceptedActivityIds_Resume[] = {
IN_UNION_ROOM | ACTIVITY_NONE,
IN_UNION_ROOM | ACTIVITY_BATTLE_SINGLE,
IN_UNION_ROOM | ACTIVITY_TRADE,
IN_UNION_ROOM | ACTIVITY_CHAT,
IN_UNION_ROOM | ACTIVITY_CARD,
IN_UNION_ROOM | ACTIVITY_ACCEPT,
IN_UNION_ROOM | ACTIVITY_DECLINE,
IN_UNION_ROOM | ACTIVITY_NPCTALK,
IN_UNION_ROOM | ACTIVITY_PLYRTALK,
0xff
};
ALIGNED(4) const u8 sAcceptedActivityIds_Init[] = {ACTIVITY_SEARCH, 0xff};
ALIGNED(4) const u8 sAcceptedActivityIds_Unk11[] = {
ACTIVITY_BATTLE_SINGLE,
ACTIVITY_BATTLE_DOUBLE,
ACTIVITY_BATTLE_MULTI,
ACTIVITY_TRADE,
ACTIVITY_POKEMON_JUMP,
ACTIVITY_BERRY_CRUSH,
ACTIVITY_BERRY_PICK,
ACTIVITY_WONDER_CARD2,
ACTIVITY_WONDER_NEWS2,
ACTIVITY_SPIN_TRADE,
0xff
};
ALIGNED(4) const u8 sAcceptedActivityIds_RecordCorner[] = {ACTIVITY_RECORD_CORNER, 0xff};
ALIGNED(4) const u8 sAcceptedActivityIds_BerryBlender[] = {ACTIVITY_BERRY_BLENDER, 0xff};
ALIGNED(4) const u8 sAcceptedActivityIds_CoolContest[] = {ACTIVITY_CONTEST_COOL, 0xff};
ALIGNED(4) const u8 sAcceptedActivityIds_BeautyContest[] = {ACTIVITY_CONTEST_BEAUTY, 0xff};
ALIGNED(4) const u8 sAcceptedActivityIds_CuteContest[] = {ACTIVITY_CONTEST_CUTE, 0xff};
ALIGNED(4) const u8 sAcceptedActivityIds_SmartContest[] = {ACTIVITY_CONTEST_SMART, 0xff};
ALIGNED(4) const u8 sAcceptedActivityIds_ToughContest[] = {ACTIVITY_CONTEST_TOUGH, 0xff};
ALIGNED(4) const u8 sAcceptedActivityIds_BattleTower[] = {ACTIVITY_BATTLE_TOWER, 0xff};
ALIGNED(4) const u8 sAcceptedActivityIds_BattleTowerOpen[] = {ACTIVITY_BATTLE_TOWER_OPEN, 0xff};
const u8 *const gUnknown_082F04D8[NUM_LINK_GROUP_TYPES] = {
gUnknown_082F0474,
gUnknown_082F0478,
gUnknown_082F047C,
gUnknown_082F0480,
gUnknown_082F0484,
gUnknown_082F0488,
gUnknown_082F048C,
gUnknown_082F0490,
gUnknown_082F0494,
gUnknown_082F0498,
gUnknown_082F04A4,
gUnknown_082F04A8,
gUnknown_082F04B4,
gUnknown_082F04B8,
NULL,
gUnknown_082F04BC,
gUnknown_082F04C0,
gUnknown_082F04C4,
gUnknown_082F04C8,
gUnknown_082F04CC,
gUnknown_082F04D0,
gUnknown_082F04D4
const u8 *const sAcceptedActivityIds[NUM_LINK_GROUP_TYPES] = {
[LINK_GROUP_SINGLE_BATTLE] = sAcceptedActivityIds_SingleBattle,
[LINK_GROUP_DOUBLE_BATTLE] = sAcceptedActivityIds_DoubleBattle,
[LINK_GROUP_MULTI_BATTLE] = sAcceptedActivityIds_MultiBattle,
[LINK_GROUP_TRADE] = sAcceptedActivityIds_Trade,
[LINK_GROUP_POKEMON_JUMP] = sAcceptedActivityIds_PokemonJump,
[LINK_GROUP_BERRY_CRUSH] = sAcceptedActivityIds_BerryCrush,
[LINK_GROUP_BERRY_PICKING] = sAcceptedActivityIds_BerryPicking,
[LINK_GROUP_WONDER_CARD] = sAcceptedActivityIds_WonderCard,
[LINK_GROUP_WONDER_NEWS] = sAcceptedActivityIds_WonderNews,
[LINK_GROUP_UNION_ROOM_RESUME] = sAcceptedActivityIds_Resume,
[LINK_GROUP_UNION_ROOM_INIT] = sAcceptedActivityIds_Init,
[LINK_GROUP_UNK_11] = sAcceptedActivityIds_Unk11,
[LINK_GROUP_RECORD_CORNER] = sAcceptedActivityIds_RecordCorner,
[LINK_GROUP_BERRY_BLENDER] = sAcceptedActivityIds_BerryBlender,
[LINK_GROUP_UNK_14] = NULL,
[LINK_GROUP_COOL_CONTEST] = sAcceptedActivityIds_CoolContest,
[LINK_GROUP_BEAUTY_CONTEST] = sAcceptedActivityIds_BeautyContest,
[LINK_GROUP_CUTE_CONTEST] = sAcceptedActivityIds_CuteContest,
[LINK_GROUP_SMART_CONTEST] = sAcceptedActivityIds_SmartContest,
[LINK_GROUP_TOUGH_CONTEST] = sAcceptedActivityIds_ToughContest,
[LINK_GROUP_BATTLE_TOWER] = sAcceptedActivityIds_BattleTower,
[LINK_GROUP_BATTLE_TOWER_OPEN] = sAcceptedActivityIds_BattleTowerOpen
};
// Link group type to ID for gUnknown_02022C2C
const u8 gUnknown_082F0530[NUM_LINK_GROUP_TYPES + 2] =
static const u8 sLinkGroupToURoomActivity[NUM_LINK_GROUP_TYPES + 2] =
{
0x01,
0x02,
0x03,
0x04,
0x09,
0x0a,
0x0b,
0x15,
0x16,
0x00,
0x00,
0x00,
0x0f,
0x10,
0x00,
0x17,
0x18,
0x19,
0x1a,
0x1b,
0x1c,
0x0e
[LINK_GROUP_SINGLE_BATTLE] = ACTIVITY_BATTLE_SINGLE,
[LINK_GROUP_DOUBLE_BATTLE] = ACTIVITY_BATTLE_DOUBLE,
[LINK_GROUP_MULTI_BATTLE] = ACTIVITY_BATTLE_MULTI,
[LINK_GROUP_TRADE] = ACTIVITY_TRADE,
[LINK_GROUP_POKEMON_JUMP] = ACTIVITY_POKEMON_JUMP,
[LINK_GROUP_BERRY_CRUSH] = ACTIVITY_BERRY_CRUSH,
[LINK_GROUP_BERRY_PICKING] = ACTIVITY_BERRY_PICK,
[LINK_GROUP_WONDER_CARD] = ACTIVITY_WONDER_CARD2,
[LINK_GROUP_WONDER_NEWS] = ACTIVITY_WONDER_NEWS2,
[LINK_GROUP_UNION_ROOM_RESUME] = ACTIVITY_NONE,
[LINK_GROUP_UNION_ROOM_INIT] = ACTIVITY_NONE,
[LINK_GROUP_UNK_11] = ACTIVITY_NONE,
[LINK_GROUP_RECORD_CORNER] = ACTIVITY_RECORD_CORNER,
[LINK_GROUP_BERRY_BLENDER] = ACTIVITY_BERRY_BLENDER,
[LINK_GROUP_UNK_14] = ACTIVITY_NONE,
[LINK_GROUP_COOL_CONTEST] = ACTIVITY_CONTEST_COOL,
[LINK_GROUP_BEAUTY_CONTEST] = ACTIVITY_CONTEST_BEAUTY,
[LINK_GROUP_CUTE_CONTEST] = ACTIVITY_CONTEST_CUTE,
[LINK_GROUP_SMART_CONTEST] = ACTIVITY_CONTEST_SMART,
[LINK_GROUP_TOUGH_CONTEST] = ACTIVITY_CONTEST_TOUGH,
[LINK_GROUP_BATTLE_TOWER] = ACTIVITY_BATTLE_TOWER,
[LINK_GROUP_BATTLE_TOWER_OPEN] = ACTIVITY_BATTLE_TOWER_OPEN
};

View File

@ -450,7 +450,7 @@ static void (*const gUnknown_082F7AF4[])(void) =
};
// code
void sub_802493C(u16 a0, void (*callback)(void))
void StartDodrioBerryPicking(u16 a0, void (*callback)(void))
{
gUnknown_03000DB0 = FALSE;

View File

@ -96,7 +96,7 @@ void ScriptUnfreezeObjectEvents(void)
UnfreezeObjectEvents();
}
void sub_8098524(void)
void UnionRoom_UnlockPlayerAndChatPartner(void)
{
u8 playerObjectId;

View File

@ -2290,7 +2290,7 @@ void SetupBagMenu_Textboxes(void)
DeactivateAllTextPrinters();
LoadUserWindowBorderGfx(0, 1, 0xE0);
LoadMessageBoxGfx(0, 10, 0xD0);
sub_819A2BC(0xC0, 1);
ListMenuLoadStdPalAt(0xC0, 1);
LoadPalette(&gUnknown_0860F074, 0xF0, 0x20);
for (i = 0; i < 3; i++)
{

View File

@ -221,7 +221,7 @@ static const u8 sUnused_082ED224[] = {0x00, 0xff, 0xfe, 0xff, 0x00};
bool8 IsWirelessAdapterConnected(void)
{
sub_800B488();
SetWirelessCommType1();
sub_800E700();
if (rfu_LMAN_REQBN_softReset_and_checkID() == 0x8001)
{
@ -389,7 +389,7 @@ void CloseLink(void)
gReceivedRemoteLinkPlayers = FALSE;
if (gWirelessCommType)
{
sub_800EDD4();
LinkRfu_Shutdown();
}
gLinkOpen = FALSE;
DisableSerial();
@ -1860,7 +1860,7 @@ bool8 HandleLinkConnection(void)
return FALSE;
}
void sub_800B488(void)
void SetWirelessCommType1(void)
{
if (gReceivedRemoteLinkPlayers == 0)
{

View File

@ -375,11 +375,11 @@ void sub_800EAFC(void)
void sub_800EB44(u8 taskId)
{
if (sub_800F7DC()->activity == 0x54 && sub_8011A74() == 4)
if (GetHostRFUtgtGname()->activity == 0x54 && RfuGetErrorStatus() == 4)
{
rfu_REQ_disconnect(lman.acceptSlot_flag);
rfu_waitREQComplete();
sub_8011A64(0, 0);
RfuSetErrorStatus(0, 0);
}
switch (Rfu.unk_04)
{
@ -421,7 +421,7 @@ void sub_800EB44(u8 taskId)
case 16:
Rfu.unk_cdb = 0;
rfu_LMAN_setMSCCallback(sub_800EDBC);
sub_8011068(1);
UpdateGameData_GroupLockedIn(TRUE);
sub_800EAB4();
sub_800EAFC();
Rfu.unk_04 = 20;
@ -434,12 +434,12 @@ void sub_800EB44(u8 taskId)
}
}
void sub_800ED10(void)
void LinkRfu_CreateConnectionAsParent(void)
{
rfu_LMAN_establishConnection(1, 0, 240, (u16 *)gUnknown_082ED6E0);
}
void sub_800ED28(void)
void LinkRfu_StopManagerBeforeEnteringChat(void)
{
rfu_LMAN_stopManager(FALSE);
}
@ -471,7 +471,7 @@ void sub_800EDBC(u16 unused)
Rfu.unk_cdb = 1;
}
void sub_800EDD4(void)
void LinkRfu_Shutdown(void)
{
u8 i;
@ -538,7 +538,7 @@ void sub_800EF00(void)
Rfu.unk_67 = CreateTask(sub_800E94C, 1);
}
bool8 sub_800EF1C(void)
bool8 LmanAcceptSlotFlagIsNotZero(void)
{
if (lman.acceptSlot_flag)
{
@ -547,13 +547,13 @@ bool8 sub_800EF1C(void)
return FALSE;
}
void sub_800EF38(void)
void LinkRfu_StopManagerAndFinalizeSlots(void)
{
Rfu.unk_04 = 4;
Rfu.unk_ce7 = lman.acceptSlot_flag;
}
bool32 sub_800EF58(bool32 a0)
bool32 WaitRfuState(bool32 a0)
{
if (Rfu.unk_04 == 17 || a0)
{
@ -676,13 +676,13 @@ bool32 sub_800F0F8(void)
Rfu.unk_ce3 = 0;
if (Rfu.unk_ce4 == 1)
{
sub_8011A64(2, 0x8000);
RfuSetErrorStatus(2, 0x8000);
sub_8011170(0x8000);
return FALSE;
}
if (!lman.acceptSlot_flag)
{
sub_800EDD4();
LinkRfu_Shutdown();
gReceivedRemoteLinkPlayers = 0;
return FALSE;
}
@ -831,15 +831,15 @@ bool32 sub_800F4F0(void)
{
rfu_REQ_disconnect(gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag);
rfu_waitREQComplete();
switchval = sub_8011A74();
switchval = RfuGetErrorStatus();
if (switchval != 1 && switchval != 6 && switchval != 9)
sub_8011A64(2, 0x9000);
RfuSetErrorStatus(2, 0x9000);
rfu_clearAllSlot();
gReceivedRemoteLinkPlayers = FALSE;
Rfu.linkRfuCallback = NULL;
if (Rfu.unk_ce4 == 1)
{
sub_8011A64(2, 0x9000);
RfuSetErrorStatus(2, 0x9000);
sub_8011170(0x9000);
}
lman.state = lman.next_state = 0;
@ -924,7 +924,7 @@ void rfu_func_080F97B8(void)
}
}
struct GFtgtGname *sub_800F7DC(void)
struct GFtgtGname *GetHostRFUtgtGname(void)
{
return &gUnknown_02022B14;
}
@ -1000,7 +1000,7 @@ void sub_800F86C(u8 unused)
{
Rfu.unk_80[i].unk_12 = 2;
sub_800F6FC(i);
if (sub_800F7DC()->activity == 0x45 && gReceivedRemoteLinkPlayers != 0 && Rfu.unk_0c == 0)
if (GetHostRFUtgtGname()->activity == 0x45 && gReceivedRemoteLinkPlayers != 0 && Rfu.unk_0c == 0)
sub_8010A70(gBlockRecvBuffer);
}
}
@ -1164,7 +1164,7 @@ void sub_800FD14(u16 command)
void sub_800FE50(void *a0)
{
if (gSendCmd[0] == 0 && !sub_8011A80())
if (gSendCmd[0] == 0 && !RfuIsErrorStatus1or2())
{
memcpy(Rfu.unk_f2, a0, sizeof(Rfu.unk_f2));
sub_800FD14(0x2f00);
@ -1535,7 +1535,7 @@ bool32 sub_80105EC(void)
return FALSE;
}
bool32 sub_801064C(u16 a0, const u8 *a1)
bool32 TrainerIdAndNameStillInPartnersList(u16 a0, const u8 *a1)
{
u8 r1 = sub_8011CE4(a1, a0);
if (r1 == 0xFF)
@ -1545,7 +1545,7 @@ bool32 sub_801064C(u16 a0, const u8 *a1)
return FALSE;
}
void sub_8010688(u8 a0, u16 a1, const u8 *a2)
void SendByteToPartnerByIdAndName(u8 a0, u16 a1, const u8 *a2)
{
u8 r4 = sub_8011CE4(a2, a1);
Rfu.unk_cd1[r4] = a0;
@ -1553,14 +1553,14 @@ void sub_8010688(u8 a0, u16 a1, const u8 *a2)
rfu_NI_setSendData(1 << r4, 8, Rfu.unk_cd1 + r4, 1);
}
void sub_80106D4(void)
void LinkRfuNIsend8(void)
{
Rfu.unk_c85 = 8;
rfu_clearSlot(4, Rfu.unk_c3e);
rfu_NI_setSendData(1 << Rfu.unk_c3e, 8, &Rfu.unk_c85, 1);
}
u32 sub_8010714(u16 a0, const u8 *a1)
u32 WaitSendByteToPartnerByIdAndName(u16 a0, const u8 *a1)
{
u8 r0 = sub_8011CE4(a1, a0);
if (r0 == 0xFF)
@ -1597,7 +1597,7 @@ s32 sub_80107A0(void)
if (gRfuSlotStatusNI[Rfu.unk_c3e]->recv.state == 0x46 || gRfuSlotStatusNI[Rfu.unk_c3e]->recv.state == 0x48)
{
rfu_clearSlot(8, Rfu.unk_c3e);
sub_8011A64(Rfu.unk_c86, 0);
RfuSetErrorStatus(Rfu.unk_c86, 0);
retval = Rfu.unk_c86;
}
else if (gRfuSlotStatusNI[Rfu.unk_c3e]->recv.state == 0x47)
@ -1842,7 +1842,7 @@ void sub_8010DB4(void)
gWirelessCommType = 2;
SetMainCallback2(CB2_LinkError);
gMain.savedCallback = CB2_LinkError;
sub_800AF18((Rfu.unk_0a << 16) | (Rfu.unk_10 << 8) | Rfu.unk_12, Rfu.unk_124.unk_8c2, Rfu.unk_9e8.unk_232, sub_8011A74() == 2);
sub_800AF18((Rfu.unk_0a << 16) | (Rfu.unk_10 << 8) | Rfu.unk_12, Rfu.unk_124.unk_8c2, Rfu.unk_9e8.unk_232, RfuGetErrorStatus() == 2);
Rfu.unk_ee = 2;
CloseLink();
}
@ -1850,7 +1850,7 @@ void sub_8010DB4(void)
{
if (lman.childClockSlave_flag)
rfu_LMAN_requestChangeAgbClockMaster();
sub_8011A64(1, 0x7000);
RfuSetErrorStatus(1, 0x7000);
sub_8011170(0x7000);
}
}
@ -1905,18 +1905,18 @@ void sub_8010F48(void)
StringCopy(gUnknown_02022B22, gSaveBlock2Ptr->playerName);
}
void sub_8010F60(void)
void ClearAndInitHostRFUtgtGname(void)
{
memset(&gUnknown_02022B14, 0, 0xD);
sub_800DD94(&gUnknown_02022B14, 0, 0, 0);
}
void sub_8010F84(u8 a0, u32 a1, u32 a2)
void SetHostRFUtgtGname(u8 a0, u32 a1, u32 a2)
{
sub_800DD94(&gUnknown_02022B14, a0, a2, a1);
}
void sub_8010FA0(bool32 a0, bool32 a1)
void SetGnameBufferWonderFlags(bool32 a0, bool32 a1)
{
gUnknown_02022B14.unk_00.hasNews = a0;
gUnknown_02022B14.unk_00.hasCard = a1;
@ -1946,16 +1946,16 @@ void sub_801103C(void)
r5->child_sprite_gender[i - 1] = sub_801100C(i);
}
void sub_8011068(u8 a0)
void UpdateGameData_GroupLockedIn(u8 a0)
{
gUnknown_02022B14.started = a0;
rfu_REQ_configGameData(0, 2, (const u8 *)&gUnknown_02022B14, gUnknown_02022B22);
}
void sub_8011090(u8 a0, u32 a1, u32 a2)
void UpdateGameDataWithActivitySpriteGendersFlag(u8 a0, u32 a1, u32 a2)
{
if (a0)
sub_8010F84(a0, a1, a2);
SetHostRFUtgtGname(a0, a1, a2);
rfu_REQ_configGameData(0, 2, (const u8 *)&gUnknown_02022B14, gUnknown_02022B22);
}
@ -1966,7 +1966,7 @@ void sub_80110B8(u32 a0)
u32 r7;
s32 r8;
if (sub_800F7DC()->activity == 0x45)
if (GetHostRFUtgtGname()->activity == 0x45)
{
r5 = 0;
r7 = 0;
@ -1981,7 +1981,7 @@ void sub_80110B8(u32 a0)
break;
}
}
sub_8011090(0x45, r7, 0);
UpdateGameDataWithActivitySpriteGendersFlag(0x45, r7, 0);
}
}
@ -2038,7 +2038,7 @@ void sub_801120C(u8 a0, u8 unused1)
if ((lman.param[0] >> i) & 1)
{
struct GFtgtGname *structPtr = (void *)gRfuLinkStatus->partner[i].gname;
if (structPtr->activity == sub_800F7DC()->activity)
if (structPtr->activity == GetHostRFUtgtGname()->activity)
{
Rfu.unk_cd1[i] = 0;
Rfu.unk_cd5[i] = 0;
@ -2085,21 +2085,21 @@ void sub_801120C(u8 a0, u8 unused1)
else
sub_80111FC();
}
sub_8011A64(2, a0);
RfuSetErrorStatus(2, a0);
break;
case 0x34:
break;
case 0x42 ... 0x44:
break;
case 0xf3:
sub_8011A64(1, a0);
RfuSetErrorStatus(1, a0);
sub_8011170(a0);
Rfu.unk_ef = 1;
break;
case 0xf0 ... 0xf2:
case 0xff:
sub_8011170(a0);
sub_8011A64(1, a0);
RfuSetErrorStatus(1, a0);
Rfu.unk_cdb = 1;
break;
}
@ -2121,7 +2121,7 @@ void sub_8011404(u8 a0, u8 unused1)
Rfu.unk_c3e = lman.param[0];
break;
case 0x23:
sub_8011A64(2, a0);
RfuSetErrorStatus(2, a0);
break;
case 0x24:
Rfu.unk_04 = 11;
@ -2131,7 +2131,7 @@ void sub_8011404(u8 a0, u8 unused1)
rfu_setRecvBuffer(0x10, Rfu.unk_c3e, Rfu.unk_c3f, 70);
break;
case 0x25:
sub_8011A64(2, 0x25);
RfuSetErrorStatus(2, 0x25);
break;
case 0x30:
Rfu.unk_f0 = 2;
@ -2141,7 +2141,7 @@ void sub_8011404(u8 a0, u8 unused1)
if (Rfu.unk_f0 != 2)
Rfu.unk_f0 = 4;
if (Rfu.unk_c86 != 9)
sub_8011A64(2, a0);
RfuSetErrorStatus(2, a0);
nullsub_5(gUnknown_082ED7FC, 5, 5);
if (gReceivedRemoteLinkPlayers == 1)
sub_8011170(a0);
@ -2159,13 +2159,13 @@ void sub_8011404(u8 a0, u8 unused1)
case 0x42 ... 0x44:
break;
case 0xF3:
sub_8011A64(1, a0);
RfuSetErrorStatus(1, a0);
sub_8011170(a0);
Rfu.unk_ef = 1;
break;
case 0xF0 ... 0xF2:
case 0xFF:
sub_8011A64(1, a0);
RfuSetErrorStatus(1, a0);
sub_8011170(a0);
Rfu.unk_cdb = 1;
break;
@ -2214,10 +2214,10 @@ void sub_8011674(u8 a0, u8 unused1)
Rfu.unk_04 = 0x11;
break;
case 0x10:
sub_8011A64(4, 0);
RfuSetErrorStatus(4, 0);
break;
case 0x11:
if (sub_800F7DC()->activity == 0x45 && Rfu.unk_cd9 == 0)
if (GetHostRFUtgtGname()->activity == 0x45 && Rfu.unk_cd9 == 0)
{
u8 idx = sub_8011628(lman.param[0]);
if (idx != 0)
@ -2240,7 +2240,7 @@ void sub_8011674(u8 a0, u8 unused1)
Rfu.unk_ce4 = 2;
}
}
else if (sub_800F7DC()->activity == 0x54)
else if (GetHostRFUtgtGname()->activity == 0x54)
{
rfu_REQ_disconnect(lman.acceptSlot_flag);
rfu_waitREQComplete();
@ -2252,7 +2252,7 @@ void sub_8011674(u8 a0, u8 unused1)
case 0x13:
break;
case 0x14:
if (sub_800F7DC()->activity != 0x45 && lman.acceptCount > 1)
if (GetHostRFUtgtGname()->activity != 0x45 && lman.acceptCount > 1)
{
r1 = 1 << sub_800E87C(lman.param[0]);
rfu_REQ_disconnect(lman.acceptSlot_flag ^ r1);
@ -2279,16 +2279,16 @@ void sub_8011674(u8 a0, u8 unused1)
}
else
{
sub_8011A64(2, a0);
RfuSetErrorStatus(2, a0);
}
break;
case 0x24:
Rfu.unk_04 = 0xD;
sub_8011A64(3, 0);
RfuSetErrorStatus(3, 0);
rfu_setRecvBuffer(0x10, Rfu.unk_c3e, Rfu.unk_c3f, 70);
break;
case 0x25:
sub_8011A64(2, a0);
RfuSetErrorStatus(2, a0);
break;
case 0x31:
if (lman.acceptSlot_flag & lman.param[0])
@ -2324,7 +2324,7 @@ void sub_8011674(u8 a0, u8 unused1)
if (gRfuLinkStatus->parentChild == 0xFF && lman.pcswitch_flag == 0 && FuncIsActiveTask(sub_800EB44) == TRUE)
Rfu.unk_04 = 0x11;
sub_8011A64(2, a0);
RfuSetErrorStatus(2, a0);
break;
case 0x40:
Rfu.unk_ce3 = 0;
@ -2332,14 +2332,14 @@ void sub_8011674(u8 a0, u8 unused1)
case 0x42 ... 0x44:
break;
case 0xF3:
sub_8011A64(1, a0);
RfuSetErrorStatus(1, a0);
sub_8011170(a0);
Rfu.unk_ef = 1;
break;
case 0xF0 ... 0xF2:
case 0xFF:
sub_8011170(a0);
sub_8011A64(1, a0);
RfuSetErrorStatus(1, a0);
Rfu.unk_cdb = 0;
break;
}
@ -2350,20 +2350,20 @@ void sub_8011A50(void)
Rfu.unk_ce4 = 2;
}
void sub_8011A64(u8 a0, u16 a1)
void RfuSetErrorStatus(u8 a0, u16 a1)
{
Rfu.unk_f1 = a0;
Rfu.unk_0a = a1;
}
u8 sub_8011A74(void)
u8 RfuGetErrorStatus(void)
{
return Rfu.unk_f1;
}
bool32 sub_8011A80(void)
bool32 RfuIsErrorStatus1or2(void)
{
u32 var = sub_8011A74() - 1;
u32 var = RfuGetErrorStatus() - 1;
if (var < 2)
return TRUE;
else
@ -2409,7 +2409,7 @@ void sub_8011AFC(void)
if (IsWirelessAdapterConnected())
{
gLinkType = LINKTYPE_0x1111;
sub_800B488();
SetWirelessCommType1();
OpenLink();
SeedRng(gMain.vblankCounter2);
for (i = 0; i < 4; i++)
@ -2425,7 +2425,7 @@ void sub_8011AFC(void)
}
}
bool32 sub_8011B90(void)
bool32 IsUnionRoomListenTaskActive(void)
{
return FuncIsActiveTask(sub_800EB44);
}
@ -2450,7 +2450,7 @@ void sub_8011BF8(void)
UpdatePaletteFade();
}
void sub_8011C10(u32 a0)
void InitializeRfuLinkManager_LinkLeader(u32 a0)
{
Rfu.unk_0c = 1;
sub_8010F48();
@ -2460,7 +2460,7 @@ void sub_8011C10(u32 a0)
sub_800EE78();
}
void sub_8011C5C(void)
void InitializeRfuLinkManager_JoinGroup(void)
{
Rfu.unk_0c = 0;
sub_8010F48();
@ -2468,7 +2468,7 @@ void sub_8011C5C(void)
sub_800EF00();
}
void sub_8011C84(void)
void InitializeRfuLinkManager_EnterUnionRoom(void)
{
Rfu.unk_0c = 2;
sub_8010F48();
@ -2516,7 +2516,7 @@ void sub_8011D6C(u32 a0)
Rfu.unk_cda = sub_800E87C(Rfu.unk_ce2);
}
void sub_8011DC0(const u8 *ptr, u16 a1)
void RequestDisconnectSlotByTrainerNameAndId(const u8 *ptr, u16 a1)
{
u8 var = sub_8011CE4(ptr, a1);
if (var != 0xFF)
@ -2584,13 +2584,13 @@ void sub_8011EF4(u8 taskId)
if (sub_800EEBC())
DestroyTask(taskId);
}
else if (sub_800F7DC()->activity == 0x15 || sub_800F7DC()->activity == 0x16)
else if (GetHostRFUtgtGname()->activity == 0x15 || GetHostRFUtgtGname()->activity == 0x16)
{
data[15]++;
}
else
{
sub_8011A64(2, 0x7000);
RfuSetErrorStatus(2, 0x7000);
DestroyTask(taskId);
}
}
@ -2607,12 +2607,12 @@ void sub_8011EF4(u8 taskId)
if (data[15] > 240)
{
sub_8011A64(2, 0x7000);
RfuSetErrorStatus(2, 0x7000);
DestroyTask(taskId);
}
}
void sub_8011FC8(const u8 *src, u16 trainerId)
void CreateTask_RfuReconnectWithParent(const u8 *src, u16 trainerId)
{
u8 taskId;
s16 *data;
@ -2626,7 +2626,7 @@ void sub_8011FC8(const u8 *src, u16 trainerId)
bool32 sub_801200C(s16 a1, struct GFtgtGname *structPtr)
{
if (sub_800F7DC()->activity == 0x45)
if (GetHostRFUtgtGname()->activity == 0x45)
{
if (structPtr->activity != 0x45)
return TRUE;
@ -2663,7 +2663,7 @@ void sub_801209C(u8 taskId)
if (++gTasks[taskId].data[0] > 300)
{
sub_8011A64(2, 0x7000);
RfuSetErrorStatus(2, 0x7000);
DestroyTask(taskId);
}
@ -2683,7 +2683,7 @@ void sub_801209C(u8 taskId)
}
else
{
sub_8011A64(2, 0x7000);
RfuSetErrorStatus(2, 0x7000);
DestroyTask(taskId);
}
}

View File

@ -625,7 +625,7 @@ void sub_800DD94(struct GFtgtGname *data, u8 r9, bool32 r2, s32 r3)
data->unk_00.gameClear = FlagGet(FLAG_SYS_GAME_CLEAR);
}
bool8 sub_800DE7C(struct GFtgtGname *buff1, u8 *buff2, u8 idx)
bool8 LinkRfu_GetNameIfCompatible(struct GFtgtGname *buff1, u8 *buff2, u8 idx)
{
bool8 retVal;
@ -660,7 +660,7 @@ bool8 sub_800DE7C(struct GFtgtGname *buff1, u8 *buff2, u8 idx)
return retVal;
}
bool8 sub_800DF34(struct GFtgtGname *buff1, u8 *buff2, u8 idx)
bool8 LinkRfu_GetNameIfSerial7F7D(struct GFtgtGname *buff1, u8 *buff2, u8 idx)
{
bool8 retVal = FALSE;
if (gRfuLinkStatus->partner[idx].serialNo == 0x7F7D)
@ -677,7 +677,7 @@ bool8 sub_800DF34(struct GFtgtGname *buff1, u8 *buff2, u8 idx)
return retVal;
}
void sub_800DF90(struct GFtgtGname *buff1, u8 *buff2)
void LinkRfu3_SetGnameUnameFromStaticBuffers(struct GFtgtGname *buff1, u8 *buff2)
{
memcpy(buff1, &gUnknown_02022B14, 0xD);
memcpy(buff2, gUnknown_02022B22, 8);
@ -820,7 +820,7 @@ void sub_800E174(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_8011A74() == 1)
if (RfuGetErrorStatus() == 1)
{
DestroyWirelessStatusIndicatorSprite();
}
@ -908,7 +908,7 @@ void RecordMixTrainerNames(void)
}
}
bool32 sub_800E540(u16 id, u8 *name)
bool32 PlayerHasMetTrainerBefore(u16 id, u8 *name)
{
s32 i;

View File

@ -2107,7 +2107,7 @@ void sub_819A27C(u8 windowId, u16 speciesId, u32 personality, u16 x, u16 y)
BlitBitmapToWindow(windowId, GetMonIconPtr(speciesId, personality, 1), x, y, 32, 32);
}
void sub_819A2BC(u8 palOffset, u8 palId)
void ListMenuLoadStdPalAt(u8 palOffset, u8 palId)
{
const u16 *palette;

View File

@ -548,12 +548,12 @@ u16 mevent_081445C0(u32 command)
return 0;
}
void sub_801B940(void)
void ResetReceivedWonderCardFlag(void)
{
gUnknown_02022C70 = FALSE;
}
bool32 sub_801B94C(u16 a0)
bool32 MEventHandleReceivedWonderCard(u16 a0)
{
gUnknown_02022C70 = FALSE;
if (a0 == 0)

View File

@ -3527,7 +3527,7 @@ static void CursorCb_Register(u8 taskId)
u16 species = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES);
u8 obedience = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_OBEDIENCE);
switch (CanRegisterMonForTradingBoard(*(struct GFtgtGnameSub *)sub_800F7DC(), species2, species, obedience))
switch (CanRegisterMonForTradingBoard(*(struct GFtgtGnameSub *)GetHostRFUtgtGname(), species2, species, obedience))
{
case CANT_REGISTER_MON:
StringExpandPlaceholders(gStringVar4, gText_PkmnCantBeTradedNow);
@ -3553,7 +3553,7 @@ static void CursorCb_Trade1(u8 taskId)
u16 species2 = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES2);
u16 species = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES);
u8 obedience = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_OBEDIENCE);
u32 stringId = GetUnionRoomTradeMessageId(*(struct GFtgtGnameSub *)sub_800F7DC(), gUnknown_02022C38, species2, gUnionRoomOfferedSpecies, gUnionRoomRequestedMonType, species, obedience);
u32 stringId = GetUnionRoomTradeMessageId(*(struct GFtgtGnameSub *)GetHostRFUtgtGname(), gPartnerTgtGnameSub, species2, gUnionRoomOfferedSpecies, gUnionRoomRequestedMonType, species, obedience);
if (stringId != UR_TRADE_MSG_NONE)
{

View File

@ -400,7 +400,7 @@ static const struct PokemonJumpMons gPkmnJumpSpecies[] =
{ .species = SPECIES_BAGON, .unk2 = 1, },
};
void sub_802A9A8(u16 partyIndex, MainCallback callback)
void StartPokemonJump(u16 partyIndex, MainCallback callback)
{
u8 taskId;

View File

@ -52,6 +52,7 @@
#include "constants/rgb.h"
#include "constants/species.h"
#include "constants/songs.h"
#include "constants/union_room.h"
#define Trade_SendData(ptr) (SendBlock(bitmask_all_link_players_but_self(), ptr->linkData, 20))
@ -234,7 +235,7 @@ static void CB2_SaveAndEndWirelessTrade(void);
static bool8 SendLinkData(const void *linkData, u32 size)
{
if (gUnknown_02022C2C == 29)
if (gPlayerCurrActivity == ACTIVITY_29)
{
rfu_NI_setSendData(lman.acceptSlot_flag, 84, linkData, size);
return TRUE;
@ -252,7 +253,7 @@ static void sub_80771AC(u8 a0)
static bool32 sub_80771BC(void)
{
if (gUnknown_02022C2C == 29)
if (gPlayerCurrActivity == ACTIVITY_29)
{
if (gRfuSlotStatusNI[sub_800E87C(lman.acceptSlot_flag)]->send.state == 0)
return TRUE;
@ -288,7 +289,7 @@ static void TradeResetReceivedFlag(u32 who)
static bool32 IsWirelessTrade(void)
{
if (gWirelessCommType && gUnknown_02022C2C == 29)
if (gWirelessCommType && gPlayerCurrActivity == ACTIVITY_29)
return TRUE;
else
return FALSE;
@ -393,7 +394,7 @@ static void CB2_CreateTradeMenu(void)
if (gWirelessCommType)
{
sub_800B488();
SetWirelessCommType1();
OpenLink();
sub_8011BA4();
}

File diff suppressed because it is too large Load Diff

View File

@ -35,14 +35,14 @@ struct UnkStruct_3000DAC
/*0x62*/ u8 filler_62[10];
};
struct UnkStruct_2022C6C
struct UnionRoomBattleWork
{
s16 a0;
s16 textState;
};
static struct UnkStruct_3000DAC * gUnknown_03000DAC;
EWRAM_DATA struct UnkStruct_2022C6C * gUnknown_02022C6C = NULL;
EWRAM_DATA struct UnionRoomBattleWork * sWork = NULL;
void sub_801A43C(void);
void sub_801A6C0(u8 taskId);
@ -53,7 +53,7 @@ const u16 gWirelessInfoScreenPal[] = INCBIN_U16("graphics/interface/wireless_inf
const u32 gWirelessInfoScreenGfx[] = INCBIN_U32("graphics/interface/wireless_info_screen.4bpp.lz");
const u32 gWirelessInfoScreenTilemap[] = INCBIN_U32("graphics/interface/wireless_info_screen.bin.lz");
const struct BgTemplate gUnknown_082F0D34[] = {
static const struct BgTemplate sBgTemplates[] = {
{
.bg = 0,
.charBaseIndex = 2,
@ -67,7 +67,7 @@ const struct BgTemplate gUnknown_082F0D34[] = {
}
};
const struct WindowTemplate gUnknown_082F0D3C[] = {
const struct WindowTemplate sWindowTemplates[] = {
{
.bg = 0x00,
.tilemapLeft = 0x03,
@ -191,12 +191,12 @@ void sub_801A43C(void)
gUnknown_03000DAC = AllocZeroed(sizeof(struct UnkStruct_3000DAC));
SetVBlankCallback(NULL);
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, gUnknown_082F0D34, ARRAY_COUNT(gUnknown_082F0D34));
InitBgsFromTemplates(0, sBgTemplates, ARRAY_COUNT(sBgTemplates));
SetBgTilemapBuffer(1, Alloc(0x800));
SetBgTilemapBuffer(0, Alloc(0x800));
DecompressAndLoadBgGfxUsingHeap(1, gWirelessInfoScreenGfx, 0, 0, 0);
CopyToBgTilemapBuffer(1, gWirelessInfoScreenTilemap, 0, 0);
InitWindows(gUnknown_082F0D3C);
InitWindows(sWindowTemplates);
DeactivateAllTextPrinters();
ResetPaletteFade();
ResetSpriteData();
@ -205,7 +205,7 @@ void sub_801A43C(void)
m4aSoundVSyncOn();
SetVBlankCallback(sub_801A418);
gUnknown_03000DAC->taskId = CreateTask(sub_801A6C0, 0);
gUnknown_03000DAC->unk61 = sub_8013C40();
gUnknown_03000DAC->unk61 = CreateTask_ListenToWireless();
gUnknown_03000DAC->unk10[3] = 1;
ChangeBgX(0, 0, 0);
ChangeBgY(0, 0, 0);
@ -369,7 +369,7 @@ static void sub_801A8B0(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 m
u32 sub_801A960(struct UnkStruct_x20 * a0, u32 * a1)
{
s32 i, j, r2;
u32 result = a0->unk.field_0.activity;
u32 result = a0->gname_uname.gname.activity;
for (i = 0; i < (unsigned)ARRAY_COUNT(gUnknown_082F0D70); i++)
{
@ -377,7 +377,7 @@ u32 sub_801A960(struct UnkStruct_x20 * a0, u32 * a1)
{
continue;
}
if (a0->field_1A_0 != 1)
if (a0->groupScheduledAnim != 1)
{
continue;
}
@ -386,7 +386,7 @@ u32 sub_801A960(struct UnkStruct_x20 * a0, u32 * a1)
r2 = 0;
for (j = 0; j < 4; j++)
{
if (a0->unk.field_0.child_sprite_gender[j] != 0)
if (a0->gname_uname.gname.child_sprite_gender[j] != 0)
{
r2++;
}
@ -450,7 +450,7 @@ bool32 sub_801AA30(u32 * a0, u32 * a1, u32 * a2, u8 taskId)
void sub_801AAD4(void)
{
s32 i;
sub_8014210(10);
StartUnionRoomBattle(10);
for (i = 0; i < UNION_ROOM_PARTY_SIZE; i++)
{
gEnemyParty[i] = gPlayerParty[gSelectedOrderFromParty[i] - 1];
@ -506,13 +506,13 @@ void sub_801AC40(void)
TransferPlttBuffer();
}
void sub_801AC54(void)
void CB2_UnionRoomBattle(void)
{
switch (gMain.state)
{
case 0:
SetGpuReg(REG_OFFSET_DISPCNT, 0x0000);
gUnknown_02022C6C = AllocZeroed(4);
sWork = AllocZeroed(4);
ResetSpriteData();
FreeAllSpritePalettes();
ResetTasks();
@ -535,7 +535,7 @@ void sub_801AC54(void)
gMain.state++;
break;
case 1:
if (sub_801ABDC(&gUnknown_02022C6C->a0, gText_CommStandbyAwaitingOtherPlayer, 0))
if (sub_801ABDC(&sWork->textState, gText_CommStandbyAwaitingOtherPlayer, 0))
{
gMain.state++;
}
@ -604,7 +604,7 @@ void sub_801AC54(void)
}
break;
case 7:
if (sub_801ABDC(&gUnknown_02022C6C->a0, gText_RefusedBattle, 1))
if (sub_801ABDC(&sWork->textState, gText_RefusedBattle, 1))
{
SetMainCallback2(CB2_ReturnToField);
}
@ -616,7 +616,7 @@ void sub_801AC54(void)
}
break;
case 9:
if (sub_801ABDC(&gUnknown_02022C6C->a0, gText_BattleWasRefused, 1))
if (sub_801ABDC(&sWork->textState, gText_BattleWasRefused, 1))
{
SetMainCallback2(CB2_ReturnToField);
}

View File

@ -588,7 +588,7 @@ const struct SpriteTemplate gUnknown_082F3244 = {
.callback = SpriteCallbackDummy
};
void sub_801DD98(void)
void EnterUnionRoomChat(void)
{
gUnknown_02022C84 = Alloc(sizeof(*gUnknown_02022C84));
sub_801DDD0(gUnknown_02022C84);

View File

@ -17,28 +17,46 @@ static u8 sub_8019DF4(void);
static u32 sub_8019F8C(u32 playerIdx, u32 arg1);
static void sub_801A3B0(s32 arg0, s32 arg1, u8 arg2);
ALIGNED(4) const u8 gUnknown_082F072C[][10] = {
{0x21, 0x2c, 0x1f, 0x23, 0x25, 0x24, 0x41, 0x42},
{0x22, 0x28, 0x20, 0x2f, 0x2f, 0x0e, 0x14, 0x2d}
static const u8 sUnionRoomObjGfxIds[GENDER_COUNT][10] = {
[MALE] = {
OBJ_EVENT_GFX_MAN_3,
OBJ_EVENT_GFX_BLACK_BELT,
OBJ_EVENT_GFX_CAMPER,
OBJ_EVENT_GFX_YOUNGSTER,
OBJ_EVENT_GFX_PSYCHIC_M,
OBJ_EVENT_GFX_BUG_CATCHER,
OBJ_EVENT_GFX_MAN_4,
OBJ_EVENT_GFX_MAN_5
},
[FEMALE] = {
OBJ_EVENT_GFX_WOMAN_5,
OBJ_EVENT_GFX_HEX_MANIAC,
OBJ_EVENT_GFX_PICNICKER,
OBJ_EVENT_GFX_LASS,
OBJ_EVENT_GFX_LASS,
OBJ_EVENT_GFX_GIRL_3,
OBJ_EVENT_GFX_WOMAN_2,
OBJ_EVENT_GFX_BEAUTY
}
};
static const s16 gUnknown_082F0740[][2] = {
{0x4, 0x6},
{0xd, 0x8},
{0xa, 0x6},
{0x1, 0x8},
{0xd, 0x4},
{0x7, 0x4},
{0x1, 0x4},
{0x7, 0x8}
static const s16 sUnionPartnerCoords[][2] = {
{ 4, 6},
{13, 8},
{10, 6},
{ 1, 8},
{13, 4},
{ 7, 4},
{ 1, 4},
{ 7, 8}
};
static const s8 gUnknown_082F0760[][2] = {
{ 0, 0},
{ 1, 0},
{ 0, -1},
{-1, 0},
{ 0, 1}
static const s8 sFacingDirectionOffsets[][2] = {
[DIR_NONE] = { 0, 0},
[DIR_SOUTH] = { 1, 0},
[DIR_NORTH] = { 0, -1},
[DIR_WEST] = {-1, 0},
[DIR_EAST] = { 0, 1}
};
static const u8 gUnknown_082F076A[] = {
@ -79,22 +97,22 @@ static bool32 is_walking_or_running(void)
static u8 sub_8019978(u32 a0, u32 a1)
{
return gUnknown_082F072C[a0][a1 % 8];
return sUnionRoomObjGfxIds[a0][a1 % 8];
}
static void sub_8019990(u32 a0, u32 a1, s32 * a2, s32 * a3)
{
*a2 = gUnknown_082F0740[a0][0] + gUnknown_082F0760[a1][0] + 7;
*a3 = gUnknown_082F0740[a0][1] + gUnknown_082F0760[a1][1] + 7;
*a2 = sUnionPartnerCoords[a0][0] + sFacingDirectionOffsets[a1][0] + 7;
*a3 = sUnionPartnerCoords[a0][1] + sFacingDirectionOffsets[a1][1] + 7;
}
static bool32 sub_80199E0(u32 a0, u32 a1, s32 a2, s32 a3)
{
if (gUnknown_082F0740[a0][0] + gUnknown_082F0760[a1][0] + 7 != a2)
if (sUnionPartnerCoords[a0][0] + sFacingDirectionOffsets[a1][0] + 7 != a2)
{
return FALSE;
}
else if (gUnknown_082F0740[a0][1] + gUnknown_082F0760[a1][1] + 7 != a3)
else if (sUnionPartnerCoords[a0][1] + sFacingDirectionOffsets[a1][1] + 7 != a3)
{
return FALSE;
}
@ -384,19 +402,19 @@ void sub_8019E3C(void)
sub_8019E20();
}
void sub_8019E70(u8 * sp8, s32 r9)
void CreateGroupMemberObjectsInvisible(u8 * sp8, s32 r9)
{
s32 r7;
for (r7 = 0; r7 < 5; r7++)
{
s32 r5 = 5 * r9 + r7;
sp8[r5] = sprite_new(OBJ_EVENT_GFX_MAN_4, r5 - 0x38, gUnknown_082F0740[r9][0] + gUnknown_082F0760[r7][0], gUnknown_082F0740[r9][1] + gUnknown_082F0760[r7][1], 3, 1);
sp8[r5] = sprite_new(OBJ_EVENT_GFX_MAN_4, r5 - 0x38, sUnionPartnerCoords[r9][0] + sFacingDirectionOffsets[r7][0], sUnionPartnerCoords[r9][1] + sFacingDirectionOffsets[r7][1], 3, 1);
sub_8097C44(r5 - 0x38, TRUE);
}
}
void sub_8019F04(u8 * r5)
void DestroyGroupMemberObjects(u8 * r5)
{
s32 i;
for (i = 0; i < 40; i++)
@ -526,30 +544,30 @@ static void sub_801A214(u32 r5, struct GFtgtGname * unused)
}
}
static void sub_801A234(struct UnkStruct_URoom *r0)
static void sub_801A234(struct WirelessLink_URoom *r0)
{
s32 i;
struct UnkStruct_x20 * r4;
gUnknown_02022C68 = 0;
for (i = 0, r4 = r0->field_0->arr; i < 8; i++)
{
if (r4[i].field_1A_0 == 1)
if (r4[i].groupScheduledAnim == 1)
{
sub_801A16C(i, &r4[i].unk.field_0);
sub_801A16C(i, &r4[i].gname_uname.gname);
}
else if (r4[i].field_1A_0 == 2)
else if (r4[i].groupScheduledAnim == 2)
{
sub_801A214(i, &r4[i].unk.field_0);
sub_801A214(i, &r4[i].gname_uname.gname);
}
}
}
void sub_801A274(struct UnkStruct_URoom *unused)
void ScheduleUnionRoomPlayerRefresh(struct WirelessLink_URoom *unused)
{
gUnknown_02022C68 = 300;
}
void sub_801A284(struct UnkStruct_URoom *r2)
void HandleUnionRoomPlayerRefresh(struct WirelessLink_URoom *r2)
{
if (++gUnknown_02022C68 > 300)
{
@ -557,7 +575,7 @@ void sub_801A284(struct UnkStruct_URoom *r2)
}
}
bool32 sub_801A2A8(struct UnkStruct_Main0 *arg0, s16 *arg1, s16 *arg2, u8 *arg3)
bool32 RfuUnionTool_GetGroupAndMemberInFrontOfPlayer(struct UnkStruct_Main0 *arg0, s16 *arg1, s16 *arg2, u8 *arg3)
{
s16 x, y;
s32 i, j;
@ -572,11 +590,11 @@ bool32 sub_801A2A8(struct UnkStruct_Main0 *arg0, s16 *arg1, s16 *arg2, u8 *arg3)
for (j = 0; j < 5; j++)
{
s32 r3 = 5 * i + j;
if (x != gUnknown_082F0740[i][0] + gUnknown_082F0760[j][0] + 7)
if (x != sUnionPartnerCoords[i][0] + sFacingDirectionOffsets[j][0] + 7)
{
continue;
}
if (y != gUnknown_082F0740[i][1] + gUnknown_082F0760[j][1] + 7)
if (y != sUnionPartnerCoords[i][1] + sFacingDirectionOffsets[j][1] + 7)
{
continue;
}
@ -588,7 +606,7 @@ bool32 sub_801A2A8(struct UnkStruct_Main0 *arg0, s16 *arg1, s16 *arg2, u8 *arg3)
{
continue;
}
if (r4[i].field_1A_0 != 1)
if (r4[i].groupScheduledAnim != 1)
{
continue;
}
@ -606,7 +624,7 @@ static void sub_801A3B0(s32 arg0, s32 arg1, u8 arg2)
sub_8097B78(5 * arg1 - 0x38 + arg0, arg2);
}
void sub_801A3D0(u32 arg0, u32 arg1, struct UnkStruct_Main0 *arg2)
void UpdateUnionGroupMemberFacing(u32 arg0, u32 arg1, struct UnkStruct_Main0 *arg2)
{
return sub_801A3B0(arg0, arg1, sub_8019F64(arg0, arg1, &arg2->arr[arg1].unk.field_0));
return sub_801A3B0(arg0, arg1, sub_8019F64(arg0, arg1, &arg2->arr[arg1].gname_uname.gname));
}