From 4fe507e4539f2c349a7297c31f66893bbf775ff5 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sat, 30 May 2020 04:09:21 -0400 Subject: Document union_room.c --- include/berry_crush.h | 2 +- include/cable_club.h | 2 +- include/constants/union_room.h | 60 ++++++++++++++++++++++++++- include/dodrio_berry_picking.h | 2 +- include/event_object_lock.h | 2 +- include/link.h | 2 +- include/link_rfu.h | 62 +++++++++++++-------------- include/menu.h | 2 +- include/mevent.h | 4 +- include/mystery_gift.h | 2 + include/pokemon_jump.h | 2 +- include/union_room.h | 85 +++++++++++++++++++------------------- include/union_room_battle.h | 3 +- include/union_room_chat.h | 2 +- include/union_room_player_avatar.h | 12 +++--- 15 files changed, 149 insertions(+), 95 deletions(-) (limited to 'include') diff --git a/include/berry_crush.h b/include/berry_crush.h index 8909ae821..a08f1f699 100755 --- a/include/berry_crush.h +++ b/include/berry_crush.h @@ -3,6 +3,6 @@ #include "main.h" -void sub_8020C70(MainCallback callback); +void StartBerryCrush(MainCallback callback); #endif // GUARD_BERRY_CRUSH_H diff --git a/include/cable_club.h b/include/cable_club.h index c2849ca3e..72e344009 100644 --- a/include/cable_club.h +++ b/include/cable_club.h @@ -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); diff --git a/include/constants/union_room.h b/include/constants/union_room.h index 2314f85a0..9243ea15d 100644 --- a/include/constants/union_room.h +++ b/include/constants/union_room.h @@ -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 diff --git a/include/dodrio_berry_picking.h b/include/dodrio_berry_picking.h index 9995decc2..5decbeccb 100644 --- a/include/dodrio_berry_picking.h +++ b/include/dodrio_berry_picking.h @@ -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); diff --git a/include/event_object_lock.h b/include/event_object_lock.h index a3b350019..0226eb632 100644 --- a/include/event_object_lock.h +++ b/include/event_object_lock.h @@ -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 diff --git a/include/link.h b/include/link.h index f41161d23..2818b3a7c 100644 --- a/include/link.h +++ b/include/link.h @@ -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); diff --git a/include/link_rfu.h b/include/link_rfu.h index 2d74e686a..901b5deae 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -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 diff --git a/include/menu.h b/include/menu.h index d4a038920..4a19f55b0 100644 --- a/include/menu.h +++ b/include/menu.h @@ -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); diff --git a/include/mevent.h b/include/mevent.h index a34ca355c..8c0ebbad7 100755 --- a/include/mevent.h +++ b/include/mevent.h @@ -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 diff --git a/include/mystery_gift.h b/include/mystery_gift.h index 243895a67..fb0414ee0 100644 --- a/include/mystery_gift.h +++ b/include/mystery_gift.h @@ -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 diff --git a/include/pokemon_jump.h b/include/pokemon_jump.h index 9cf65212f..91733b385 100644 --- a/include/pokemon_jump.h +++ b/include/pokemon_jump.h @@ -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); diff --git a/include/union_room.h b/include/union_room.h index 4c4cb5a62..0f0075344 100644 --- a/include/union_room.h +++ b/include/union_room.h @@ -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 diff --git a/include/union_room_battle.h b/include/union_room_battle.h index 2f5086008..ffccf197f 100644 --- a/include/union_room_battle.h +++ b/include/union_room_battle.h @@ -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 diff --git a/include/union_room_chat.h b/include/union_room_chat.h index e7ca9d46e..3dd22743a 100755 --- a/include/union_room_chat.h +++ b/include/union_room_chat.h @@ -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 diff --git a/include/union_room_player_avatar.h b/include/union_room_player_avatar.h index 9870d0981..698fc1693 100644 --- a/include/union_room_player_avatar.h +++ b/include/union_room_player_avatar.h @@ -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 -- cgit v1.2.3 From f53e2491bfe41cea6e912bef1692c2961927ef23 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Mon, 1 Jun 2020 10:23:12 -0400 Subject: Document union_room_player_avatar.c --- include/constants/union_room.h | 2 ++ include/event_object_movement.h | 18 +++++++++--------- include/fieldmap.h | 2 +- include/union_room.h | 15 ++++++++------- include/union_room_player_avatar.h | 18 +++++++++--------- 5 files changed, 29 insertions(+), 26 deletions(-) (limited to 'include') diff --git a/include/constants/union_room.h b/include/constants/union_room.h index 9243ea15d..7b1d1a1be 100644 --- a/include/constants/union_room.h +++ b/include/constants/union_room.h @@ -1,6 +1,8 @@ #ifndef GUARD_CONSTANTS_UNION_ROOM_H #define GUARD_CONSTANTS_UNION_ROOM_H +#define MAX_UNION_ROOM_PLAYERS 8 + #define UNION_ROOM_SPAWN_NONE 0 #define UNION_ROOM_SPAWN_IN 1 #define UNION_ROOM_SPAWN_OUT 2 diff --git a/include/event_object_movement.h b/include/event_object_movement.h index f0caa38aa..6ccd4759e 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -81,11 +81,11 @@ void sub_808E16C(s16, s16); void OverrideSecretBaseDecorationSpriteScript(u8 localId, u8 mapNum, u8 mapGroup, u8 decorCat); void sub_8092FF0(s16, s16, s16 *, s16 *); u8 GetFaceDirectionAnimNum(u8); -void sub_80930E0(s16 *, s16 *, s16, s16); +void SetSpritePosToOffsetMapCoords(s16 *, s16 *, s16, s16); void ObjectEventClearHeldMovement(struct ObjectEvent *); void ObjectEventClearHeldMovementIfActive(struct ObjectEvent *); void TrySpawnObjectEvents(s16, s16); -u8 sprite_new(u8 graphicsId, u8 a1, s16 x, s16 y, u8 z, u8 direction); +u8 CreateObjectSprite(u8 graphicsId, u8 a1, s16 x, s16 y, u8 z, u8 direction); u8 AddPseudoObjectEvent(u16, void (*)(struct Sprite *), s16 x, s16 y, u8 subpriority); u8 TrySpawnObjectEvent(u8, u8, u8); u8 SpawnSpecialObjectEventParameterized(u8 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 z); @@ -180,7 +180,7 @@ void CreateLevitateMovementTask(struct ObjectEvent *); void DestroyExtraMovementTask(u8); void UnfreezeObjectEvents(void); void FreezeObjectEventsExceptOne(u8 objectEventId); -void sub_8097B78(u8, u8); +void TurnObjectEventSprite(u8, u8); void sub_8098074(u8 var1, u8 var2); void FreezeObjectEvents(void); bool8 FreezeObjectEvent(struct ObjectEvent *objectEvent); @@ -194,7 +194,7 @@ void UpdateObjectEventSpriteVisibility(struct Sprite *sprite, bool8 invisible); s16 sub_809773C(s16 a1); s16 sub_8097728(s16 a1); void CameraObjectReset2(void); -u8 ObjectEventGetBerryTreeId(u8 objectEventId); +u8 GetObjectEventBerryTreeId(u8 objectEventId); void sub_8092EF0(u8 mapId, u8 mapNumber, u8 mapGroup); bool8 IsBerryTreeSparkling(u8, u8, u8); @@ -414,10 +414,10 @@ u8 MovementType_RunInPlace_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementType_Invisible_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementType_Invisible_Step1(struct ObjectEvent *, struct Sprite *); u8 MovementType_Invisible_Step2(struct ObjectEvent *, struct Sprite *); -void sub_8097C44(u8 var, bool32 var2); -bool32 sub_8097C8C(u8 var); -void sub_8097BB4(u8 var1, u8 graphicsId); -void sub_8097CC4(u8 var1, u8 var2); -bool32 sub_8097D9C(u8 var); +void SetObjectEventSpriteInvisibility(u8 var, bool32 var2); +bool32 IsObjectEventSpriteInvisible(u8 var); +void SetObjectEventSpriteGraphics(u8 var1, u8 graphicsId); +void SetObjectEventSpriteAnim(u8 var1, u8 var2); +bool32 IsObjectEventSpriteAnimating(u8 var); #endif //GUARD_EVENT_OBJECT_MOVEMENT_H diff --git a/include/fieldmap.h b/include/fieldmap.h index dc81d1766..aff458eb1 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -43,6 +43,7 @@ void copy_map_tileset1_to_vram(const struct MapLayout *); void copy_map_tileset2_to_vram(const struct MapLayout *); struct MapHeader const *const mapconnection_get_mapheader(struct MapConnection *connection); struct MapConnection *GetConnectionAtCoords(s16 x, s16 y); +void MapGridSetMetatileImpassabilityAt(int x, int y, bool32 impassable); void SpriteCB_PokeballGlow(struct Sprite *); void SpriteCB_PokecenterMonitor(struct Sprite *); @@ -50,6 +51,5 @@ void SpriteCB_HallOfFameMonitor(struct Sprite *); // field_region_map.c void FieldInitRegionMap(MainCallback callback); -void sub_8088B94(int x, int y, int a2); #endif //GUARD_FIELDMAP_H diff --git a/include/union_room.h b/include/union_room.h index 0f0075344..4cdb17662 100644 --- a/include/union_room.h +++ b/include/union_room.h @@ -2,6 +2,7 @@ #define GUARD_UNION_ROOM_H #include "link_rfu.h" +#include "constants/union_room.h" // Exported type declarations @@ -31,7 +32,7 @@ struct UnkStruct_x20 // WirelessLink_Member? struct UnkStruct_Main0 { - struct UnkStruct_x20 arr[8]; + struct UnkStruct_x20 arr[MAX_UNION_ROOM_PLAYERS]; }; struct UnkStruct_Main4 @@ -85,12 +86,12 @@ struct WirelessLink_Group u8 delayBeforePrint; }; -struct UnkStruct_8019BA8 +struct UnionRoomObject { - u8 field_0; - u8 field_1; - s8 field_2; - u8 field_3; + u8 state; + u8 gfxId; + s8 animState; + u8 schedAnim; }; struct WirelessLink_URoom @@ -121,7 +122,7 @@ struct WirelessLink_URoom u8 activityRequestStrbufs[4][16]; u16 partnerYesNoResponse; u16 recvActivityRequest[3]; - struct UnkStruct_8019BA8 field_A0[8]; + struct UnionRoomObject objects[MAX_UNION_ROOM_PLAYERS]; u8 field_C0[12][15]; u8 field_174[48]; u8 field_1A4[200]; diff --git a/include/union_room_player_avatar.h b/include/union_room_player_avatar.h index 698fc1693..072126949 100644 --- a/include/union_room_player_avatar.h +++ b/include/union_room_player_avatar.h @@ -1,14 +1,14 @@ #ifndef GUARD_UNION_ROOM_PLAYER_AVATAR_H #define GUARD_UNION_ROOM_PLAYER_AVATAR_H -u8 sub_8019BA8(struct UnkStruct_8019BA8 * ptr); -void sub_8019E3C(void); -void CreateGroupMemberObjectsInvisible(u8 *arg0, s32 arg1); -void DestroyGroupMemberObjects(u8 *spriteIds); -void sub_8019F2C(void); -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); +u8 InitUnionRoomPlayerObjects(struct UnionRoomObject *players); +void DestroyUnionRoomPlayerObjects(void); +void CreateGroupMemberSpritesInvisible(u8 *spriteIds, s32 playerIdx); +void DestroyGroupMemberSprites(u8 *spriteIds); +void SetTilesAroundUnionRoomPlayersPassable(void); +void ScheduleUnionRoomPlayerRefresh(struct WirelessLink_URoom *uroom); +void HandleUnionRoomPlayerRefresh(struct WirelessLink_URoom *uroom); +bool32 TrySetUnionRoomMemberFacePlayer(struct UnkStruct_Main0 *main0, s16 *directionPtr, s16 *playerIdxPtr, u8 *spriteIds); +void UpdateUnionRoomMemberFacing(u32 currDirection, u32 playerIdx, struct UnkStruct_Main0 *main0); #endif //GUARD_UNION_ROOM_PLAYER_AVATAR_H -- cgit v1.2.3 From 7632404ba5c8ad3c1a282d080f1c65d84b485798 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Mon, 1 Jun 2020 14:05:29 -0400 Subject: Document union_room_chat.c --- include/constants/global.h | 1 + include/global.h | 2 +- include/graphics.h | 16 ++++++++-------- include/strings.h | 8 ++++---- include/union_room_chat.h | 13 +------------ 5 files changed, 15 insertions(+), 25 deletions(-) (limited to 'include') diff --git a/include/constants/global.h b/include/constants/global.h index c7063d71c..b86e29a29 100644 --- a/include/constants/global.h +++ b/include/constants/global.h @@ -52,6 +52,7 @@ #define APPRENTICE_COUNT 4 #define APPRENTICE_MAX_QUESTIONS 9 #define MAX_REMATCH_ENTRIES 100 // only REMATCH_TABLE_ENTRIES (78) are used +#define UNION_ROOM_KB_ROW_COUNT 10 #define PYRAMID_BAG_ITEMS_COUNT 10 #define HALL_FACILITIES_COUNT 9 // 7 facilities for single mode + tower double mode + tower multi mode. diff --git a/include/global.h b/include/global.h index 2b03ebbe1..cc1faa9f2 100644 --- a/include/global.h +++ b/include/global.h @@ -974,7 +974,7 @@ struct SaveBlock1 /*0x3B24*/ u8 seen2[DEX_FLAGS_NO]; /*0x3B58*/ LilycoveLady lilycoveLady; /*0x3B98*/ struct TrainerNameRecord trainerNameRecords[20]; - /*0x3C88*/ u8 unk3C88[10][21]; + /*0x3C88*/ u8 registeredTexts[UNION_ROOM_KB_ROW_COUNT][21]; /*0x3D5A*/ u8 filler3D5A[0xA]; /*0x3D64*/ struct SaveTrainerHill trainerHill; /*0x3D70*/ struct WaldaPhrase waldaPhrase; diff --git a/include/graphics.h b/include/graphics.h index b41a43095..6811b7620 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -4986,14 +4986,14 @@ extern const u16 gEasyChatRightWindow_Pal[]; extern const u32 gUsePokeblockCondition_Gfx[]; // Union Room Chat -extern const u16 gUnknown_08DD4BB0[]; -extern const u16 gUnknown_08DD4BD0[]; -extern const u32 gUnknown_08DD4BF0[]; -extern const u32 gUnknown_08DD4C4C[]; -extern const u32 gUnknown_08DD4CF8[]; -extern const u16 gLinkMiscMenu_Pal[]; -extern const u32 gLinkMiscMenu_Gfx[]; -extern const u32 gLinkMiscMenu_Tilemap[]; +extern const u16 gUnionRoomChat_Background_Pal[]; +extern const u32 gUnionRoomChat_Background_Gfx[]; +extern const u32 gUnionRoomChat_Background_Tilemap[]; +extern const u16 gUnionRoomChat_Window_Pal1[]; +extern const u16 gUnionRoomChat_Window_Pal2[]; +extern const u32 gUnionRoomChat_Border_Gfx[]; +extern const u32 gUnionRoomChat_Border_Tilemap[]; +extern const u32 gUnionRoomChat_RButtonLabels[]; // Use Pokeblock extern const u8 gPokenavConditionCancel_Gfx[]; diff --git a/include/strings.h b/include/strings.h index 5720598ad..dc3653163 100644 --- a/include/strings.h +++ b/include/strings.h @@ -2815,10 +2815,10 @@ extern const u8 gText_RegisterTextHere[]; extern const u8 gText_InputText[]; extern const u8 gText_ExitingChat[]; extern const u8 gText_LeaderLeftEndingChat[]; -extern const u8 gText_RegisteredTextChanged[]; -extern const u8 gText_AlreadySavedFile_Unused[]; -extern const u8 gText_SavingDontTurnOff_Unused[]; -extern const u8 gText_PlayerSavedGame_Unused[]; +extern const u8 gText_RegisteredTextChangedOKToSave[]; +extern const u8 gText_AlreadySavedFile_Chat[]; +extern const u8 gText_SavingDontTurnOff_Chat[]; +extern const u8 gText_PlayerSavedGame_Chat[]; extern const u8 gText_IfLeaderLeavesChatEnds[]; extern const u8 gText_Upper[]; extern const u8 gText_Lower[]; diff --git a/include/union_room_chat.h b/include/union_room_chat.h index 3dd22743a..dbd45c543 100755 --- a/include/union_room_chat.h +++ b/include/union_room_chat.h @@ -1,18 +1,7 @@ #ifndef GUARD_UNION_ROOM_CHAT_H #define GUARD_UNION_ROOM_CHAT_H -enum -{ - UNION_ROOM_KB_PAGE_UPPER, - UNION_ROOM_KB_PAGE_LOWER, - UNION_ROOM_KB_PAGE_EMOJI, - UNION_ROOM_KB_PAGE_COUNT -}; - -#define UNION_ROOM_KB_ROW_COUNT 10 - - void EnterUnionRoomChat(void); -void copy_strings_to_sav1(void); +void InitUnionRoomChatRegisteredTexts(void); #endif // GUARD_UNION_ROOM_CHAT_H -- cgit v1.2.3 From 9190af73b7ebe690be7204c023d4c14d0241af29 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Wed, 3 Jun 2020 15:28:29 -0400 Subject: Label union room battle trainer --- include/constants/trainers.h | 2 +- include/pokemon.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'include') diff --git a/include/constants/trainers.h b/include/constants/trainers.h index 541b131ca..3f22c7cef 100644 --- a/include/constants/trainers.h +++ b/include/constants/trainers.h @@ -13,7 +13,7 @@ #define TRAINER_PLAYER 1023 #define TRAINER_SECRET_BASE 1024 #define TRAINER_LINK_OPPONENT 2048 -#define TRAINER_OPPONENT_C00 3072 +#define TRAINER_UNION_ROOM 3072 #define TRAINER_STEVEN_PARTNER 3075 #define TRAINER_PIC_HIKER 0 diff --git a/include/pokemon.h b/include/pokemon.h index 7ac65d36b..69ef7a142 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -279,8 +279,8 @@ void sub_80686FC(struct Pokemon *mon, struct BattleTowerPokemon *dest); void CreateObedientMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId); bool8 sub_80688F8(u8 caseId, u8 battlerId); void SetDeoxysStats(void); -u16 sub_8068B48(void); -u16 sub_8068BB0(void); +u16 GetUnionRoomTrainerPic(void); +u16 GetUnionRoomTrainerClass(void); void CreateObedientEnemyMon(void); void CalculateMonStats(struct Pokemon *mon); void BoxMonToMon(const struct BoxPokemon *src, struct Pokemon *dest); -- cgit v1.2.3 From 3f97763181c486cf537ac187036b086e1f222cfc Mon Sep 17 00:00:00 2001 From: GriffinR Date: Wed, 3 Jun 2020 18:00:53 -0400 Subject: Document cable_club.c --- include/cable_club.h | 8 ++++---- include/constants/cable_club.h | 18 ++++++++++++++++++ include/field_message_box.h | 2 +- include/link.h | 20 ++++++++++---------- include/mevent2.h | 2 +- include/save.h | 2 +- include/start_menu.h | 4 ++-- include/strings.h | 2 +- include/union_room.h | 2 +- 9 files changed, 39 insertions(+), 21 deletions(-) (limited to 'include') diff --git a/include/cable_club.h b/include/cable_club.h index 72e344009..515960dfd 100644 --- a/include/cable_club.h +++ b/include/cable_club.h @@ -9,12 +9,12 @@ // Exported ROM declarations -void sub_80B37D4(TaskFunc taskFunc); -u8 sub_80B3050(void); +void CreateTask_EnterCableClubSeat(TaskFunc taskFunc); +u8 CreateTask_ReestablishCableClubLink(void); void CB2_ReturnFromCableClubBattle(void); -bool32 sub_80B2AF4(u16 *arg0, u16 *arg1); +bool32 AreBattleTowerLinkSpeciesSame(u16 *speciesList1, u16 *speciesList2); void sub_80B3AF8(u8 taskId); -void task00_08081A90(u8 taskId); +void Task_WaitForLinkPlayerConnection(u8 taskId); bool32 GetLinkTrainerCardColor(u8 linkPlayerIndex); #endif //GUARD_CABLE_CLUB_H diff --git a/include/constants/cable_club.h b/include/constants/cable_club.h index f2aa4120c..960a27644 100644 --- a/include/constants/cable_club.h +++ b/include/constants/cable_club.h @@ -12,4 +12,22 @@ #define USING_MINIGAME 8 #define USING_BATTLE_TOWER 9 +#define LINKUP_ONGOING 0 +#define LINKUP_SUCCESS 1 +#define LINKUP_SOMEONE_NOT_READY 2 +#define LINKUP_DIFF_SELECTIONS 3 +#define LINKUP_WRONG_NUM_PLAYERS 4 +#define LINKUP_FAILED 5 +#define LINKUP_CONNECTION_ERROR 6 +#define LINKUP_PLAYER_NOT_READY 7 +#define LINKUP_UNK8 8 +#define LINKUP_PARTNER_NOT_READY 9 +#define LINKUP_FAILED_CONTEST_GMODE 10 +#define LINKUP_FAILED_BATTLE_TOWER 11 +#define LINKUP_FOREIGN_GAME 12 + +#define LINK_BATTLE_TOWER_SAME_MON 1 +#define LINK_BATTLE_TOWER_SAME_MONS 2 +#define LINK_BATTLE_TOWER_DIFF_MODE 3 + #endif //GUARD_CONSTANTS_CABLE_CLUB_H diff --git a/include/field_message_box.h b/include/field_message_box.h index 58f782d9c..7bd2a0dca 100644 --- a/include/field_message_box.h +++ b/include/field_message_box.h @@ -16,7 +16,7 @@ bool8 ShowFieldAutoScrollMessage(const u8 *message); void HideFieldMessageBox(void); bool8 IsFieldMessageBoxHidden(void); u8 GetFieldMessageBoxMode(void); -void sub_8098374(void); +void StopFieldMessage(void); void InitFieldMessageBox(void); #endif // GUARD_FIELD_MESSAGE_BOX_H diff --git a/include/link.h b/include/link.h index 2818b3a7c..5e75af088 100644 --- a/include/link.h +++ b/include/link.h @@ -73,10 +73,10 @@ #define LINKCMD_CANCEL_TRADE 0xEEBB #define LINKCMD_0xEECC 0xEECC -#define LINKTYPE_0x1111 0x1111 // trade -#define LINKTYPE_0x1122 0x1122 // trade -#define LINKTYPE_0x1133 0x1133 // trade -#define LINKTYPE_0x1144 0x1144 // trade +#define LINKTYPE_TRADE 0x1111 +#define LINKTYPE_TRADE_CONNECTING 0x1122 +#define LINKTYPE_TRADE_SETUP 0x1133 +#define LINKTYPE_TRADE_DISCONNECTED 0x1144 #define LINKTYPE_BATTLE 0x2211 #define LINKTYPE_0x2222 0x2222 // unused battle? #define LINKTYPE_SINGLE_BATTLE 0x2233 @@ -85,13 +85,13 @@ #define LINKTYPE_BATTLE_TOWER_50 0x2266 #define LINKTYPE_BATTLE_TOWER_OPEN 0x2277 #define LINKTYPE_BATTLE_TOWER 0x2288 -#define LINKTYPE_0x3311 0x3311 -#define LINKTYPE_0x3322 0x3322 +#define LINKTYPE_RECORD_MIX_BEFORE 0x3311 +#define LINKTYPE_RECORD_MIX_AFTER 0x3322 #define LINKTYPE_BERRY_BLENDER_SETUP 0x4411 #define LINKTYPE_BERRY_BLENDER 0x4422 -#define LINKTYPE_0x5501 0x5501 // mystery event +#define LINKTYPE_MYSTERY_EVENT 0x5501 #define LINKTYPE_0x5502 0x5502 // unused? -#define LINKTYPE_0x5503 0x5503 // eReader +#define LINKTYPE_EREADER 0x5503 #define LINKTYPE_CONTEST_GMODE 0x6601 #define LINKTYPE_CONTEST_EMODE 0x6602 @@ -126,10 +126,10 @@ enum EXCHANGE_NOT_STARTED, EXCHANGE_COMPLETE, EXCHANGE_TIMED_OUT, - EXCHANGE_IN_PROGRESS, + EXCHANGE_DIFF_SELECTIONS, EXCHANGE_PLAYER_NOT_READY, EXCHANGE_PARTNER_NOT_READY, - EXCHANGE_STAT_6, + EXCHANGE_WRONG_NUM_PLAYERS, EXCHANGE_STAT_7 }; diff --git a/include/mevent2.h b/include/mevent2.h index 80b1fd51b..316a9e6de 100644 --- a/include/mevent2.h +++ b/include/mevent2.h @@ -1,6 +1,6 @@ #ifndef GUARD_MEVENT2_H #define GUARD_MEVENT2_H -void sub_801B990(u32, u32); +void RecordIdOfWonderCardSenderByEventType(u32, u32); #endif //GUARD_MEVENT2_H diff --git a/include/save.h b/include/save.h index 225b2b62c..18b57502b 100644 --- a/include/save.h +++ b/include/save.h @@ -102,7 +102,7 @@ u8 Save_LoadGameData(u8 saveType); u16 sub_815355C(void); u32 TryReadSpecialSaveSection(u8 sector, u8* dst); u32 TryWriteSpecialSaveSection(u8 sector, u8* src); -void sub_8153688(u8 taskId); +void Task_LinkSave(u8 taskId); // save_failed_screen.c void DoSaveFailedScreen(u8 saveType); diff --git a/include/start_menu.h b/include/start_menu.h index df2a290a2..1ddd82066 100644 --- a/include/start_menu.h +++ b/include/start_menu.h @@ -8,8 +8,8 @@ void Task_ShowStartMenu(u8 taskId); void ShowStartMenu(void); void ShowBattlePyramidStartMenu(void); void SaveGame(void); -void sub_80A0514(void); -void sub_80A08CC(void); +void CB2_SetUpSaveAfterLinkBattle(void); +void SaveForBattleTowerLink(void); void HideStartMenu(void); void AppendToList(u8* list, u8* pos, u8 newEntry); diff --git a/include/strings.h b/include/strings.h index dc3653163..1867f0ca4 100644 --- a/include/strings.h +++ b/include/strings.h @@ -962,7 +962,7 @@ extern const u8 gText_TwoDashes[]; extern const u8 *const gReturnToXStringsTable2[]; -extern const u8 gText_XPLink[]; +extern const u8 gText_NumPlayerLink[]; extern const u8 gText_ConfirmLinkWhenPlayersReady[]; extern const u8 gText_ConfirmStartLinkWithXPlayers[]; extern const u8 gText_AwaitingLinkup[]; diff --git a/include/union_room.h b/include/union_room.h index 4cdb17662..7c48a9506 100644 --- a/include/union_room.h +++ b/include/union_room.h @@ -161,7 +161,7 @@ extern u8 gUnionRoomRequestedMonType; // Exported ROM declarations -u8 CreateTask_ReturnFromLinkTrade(void); +u8 CreateTask_CreateTradeMenu(void); void nullsub_89(u8 taskId); void var_800D_set_xB(void); void MEvent_CreateTask_CardOrNewsWithFriend(u32 arg0); -- cgit v1.2.3 From e6f5c4f264520dde185691201df76830c2d2f1cb Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sat, 6 Jun 2020 16:46:19 -0400 Subject: Sync link_rfu_2.c --- include/cable_club.h | 6 -- include/constants/cable_club.h | 28 +++---- include/link.h | 5 +- include/link_rfu.h | 170 ++++++++++++++++++----------------------- include/union_room.h | 1 - 5 files changed, 88 insertions(+), 122 deletions(-) (limited to 'include') diff --git a/include/cable_club.h b/include/cable_club.h index 515960dfd..7340742ea 100644 --- a/include/cable_club.h +++ b/include/cable_club.h @@ -3,12 +3,6 @@ #include "task.h" -// Exported type declarations - -// Exported RAM declarations - -// Exported ROM declarations - void CreateTask_EnterCableClubSeat(TaskFunc taskFunc); u8 CreateTask_ReestablishCableClubLink(void); void CB2_ReturnFromCableClubBattle(void); diff --git a/include/constants/cable_club.h b/include/constants/cable_club.h index 960a27644..3250ce6f8 100644 --- a/include/constants/cable_club.h +++ b/include/constants/cable_club.h @@ -12,22 +12,18 @@ #define USING_MINIGAME 8 #define USING_BATTLE_TOWER 9 -#define LINKUP_ONGOING 0 -#define LINKUP_SUCCESS 1 -#define LINKUP_SOMEONE_NOT_READY 2 -#define LINKUP_DIFF_SELECTIONS 3 -#define LINKUP_WRONG_NUM_PLAYERS 4 -#define LINKUP_FAILED 5 -#define LINKUP_CONNECTION_ERROR 6 -#define LINKUP_PLAYER_NOT_READY 7 -#define LINKUP_UNK8 8 -#define LINKUP_PARTNER_NOT_READY 9 +#define LINKUP_ONGOING 0 +#define LINKUP_SUCCESS 1 +#define LINKUP_SOMEONE_NOT_READY 2 +#define LINKUP_DIFF_SELECTIONS 3 +#define LINKUP_WRONG_NUM_PLAYERS 4 +#define LINKUP_FAILED 5 +#define LINKUP_CONNECTION_ERROR 6 +#define LINKUP_PLAYER_NOT_READY 7 +#define LINKUP_UNK8 8 +#define LINKUP_PARTNER_NOT_READY 9 #define LINKUP_FAILED_CONTEST_GMODE 10 -#define LINKUP_FAILED_BATTLE_TOWER 11 -#define LINKUP_FOREIGN_GAME 12 - -#define LINK_BATTLE_TOWER_SAME_MON 1 -#define LINK_BATTLE_TOWER_SAME_MONS 2 -#define LINK_BATTLE_TOWER_DIFF_MODE 3 +#define LINKUP_FAILED_BATTLE_TOWER 11 +#define LINKUP_FOREIGN_GAME 12 #endif //GUARD_CONSTANTS_CABLE_CLUB_H diff --git a/include/link.h b/include/link.h index 5e75af088..d33b84c79 100644 --- a/include/link.h +++ b/include/link.h @@ -276,7 +276,6 @@ void CreateWirelessStatusIndicatorSprite(u8, u8); void sub_800ADF8(void); void SetWirelessCommType1(void); void CheckShouldAdvanceLinkState(void); -void sub_8011BD0(void); u8 IsLinkMaster(void); void sub_800AC34(void); bool8 HandleLinkConnection(void); @@ -288,11 +287,11 @@ u8 GetSioMultiSI(void); void sub_800AAF4(void); void sub_800AF18(u32 status, u8 lastSendQueueCount, u8 lastRecvQueueCount, u8 unk_06); void sub_800B348(void); -void sub_800B3A4(u32 who); +void LinkPlayerFromBlock(u32 who); bool32 sub_800A07C(void); void ResetLinkPlayerCount(void); void sub_800AA04(u8 a0); -void sub_800B4C0(void); +void SetWirelessCommType0(void); bool32 sub_800B504(void); extern u16 gLinkPartnersHeldKeys[6]; diff --git a/include/link_rfu.h b/include/link_rfu.h index 901b5deae..55b1b3712 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -5,7 +5,18 @@ #include "link.h" #include "AgbRfu_LinkManager.h" -// Exported type declarations +#define RFU_COMMAND_0x4400 0x4400 +#define RFU_COMMAND_0x8800 0x8800 +#define RFU_COMMAND_0x8900 0x8900 +#define RFU_COMMAND_0xA100 0xA100 +#define RFU_COMMAND_0x7700 0x7700 +#define RFU_COMMAND_0x7800 0x7800 +#define RFU_COMMAND_0x6600 0x6600 +#define RFU_COMMAND_0x5F00 0x5F00 +#define RFU_COMMAND_0x2F00 0x2F00 +#define RFU_COMMAND_0xBE00 0xBE00 +#define RFU_COMMAND_0xEE00 0xEE00 +#define RFU_COMMAND_0xED00 0xED00 // RfuTgtData.gname is read as these structs. struct GFtgtGnameSub @@ -67,34 +78,34 @@ struct UnkLinkRfuStruct_02022B44 u8 fill_84[0x58]; }; -struct UnkRfuStruct_2_Sub_6c +struct RfuBlockSend { - /* 0x00 */ u16 unk_00; - /* 0x02 */ u16 unk_02; - /* 0x04 */ const u8 *unk_04; - /* 0x08 */ u32 unk_08; - /* 0x0c */ u32 unk_0c; - /* 0x10 */ u8 unk_10; - /* 0x11 */ u8 unk_11; - /* 0x12 */ u8 unk_12; + /* 0x00 */ u16 next; + /* 0x02 */ u16 count; + /* 0x04 */ const u8 *payload; + /* 0x08 */ u32 receivedFlags; + /* 0x0c */ u32 failedFlags; + /* 0x10 */ bool8 sending; + /* 0x11 */ u8 owner; + /* 0x12 */ u8 receiving; }; -struct UnkRfuStruct_2_Sub_124 +struct RfuRecvQueue { /* 0x000 */ u8 unk_00[32][70]; /* 0x8c0 */ vu8 unk_8c0; /* 0x8c1 */ vu8 unk_8c1; - /* 0x8c2 */ vu8 unk_8c2; - /* 0x8c3 */ vu8 unk_8c3; + /* 0x8c2 */ vu8 count; + /* 0x8c3 */ vu8 full; }; -struct UnkRfuStruct_2_Sub_9e8 +struct RfuSendQueue { /* 0x000 */ u8 unk_00[40][14]; /* 0x230 */ vu8 unk_230; /* 0x231 */ vu8 unk_231; - /* 0x232 */ vu8 unk_232; - /* 0x233 */ vu8 unk_233; + /* 0x232 */ vu8 count; + /* 0x233 */ vu8 full; }; struct UnkRfuStruct_2_Sub_c1c @@ -102,7 +113,7 @@ struct UnkRfuStruct_2_Sub_c1c /* 0x00 */ u8 unk_00[2][14]; /* 0x1c */ vu8 unk_1c; /* 0x1d */ vu8 unk_1d; - /* 0x1e */ vu8 unk_1e; + /* 0x1e */ vu8 count; }; struct UnkRfuStruct_Sub_Unused @@ -114,13 +125,13 @@ struct UnkRfuStruct_Sub_Unused /* 0x203 */ vu8 unk_203; }; -struct UnkRfuStruct_2 +struct GFRfuManager { - /* 0x000 */ void (*linkRfuCallback)(void); - /* 0x004 */ u16 unk_04; + /* 0x000 */ void (*callback)(void); + /* 0x004 */ u16 state; /* 0x006 */ u8 filler_06[4]; - /* 0x00a */ u16 unk_0a; - /* 0x00c */ u8 unk_0c; + /* 0x00a */ u16 linkmanMsg; + /* 0x00c */ u8 parentChild; /* 0x00d */ u8 playerCount; /* 0x00e */ u8 unk_0e; /* 0x00f */ u8 unk_0f; @@ -130,19 +141,19 @@ struct UnkRfuStruct_2 /* 0x04c */ u8 unk_4c[14]; /* 0x05a */ u8 unk_5a; /* 0x05b */ u8 unk_5b; - /* 0x05c */ u8 unk_5c[5]; - /* 0x061 */ u8 unk_61[5]; - /* 0x066 */ u8 unk_66; - /* 0x067 */ u8 unk_67; + /* 0x05c */ bool8 unk_5c[MAX_RFU_PLAYERS]; + /* 0x061 */ bool8 unk_61[MAX_RFU_PLAYERS]; + /* 0x066 */ u8 idleTaskId; + /* 0x067 */ u8 searchTaskId; /* 0x068 */ u8 filler_68[4]; - /* 0x06c */ struct UnkRfuStruct_2_Sub_6c unk_6c; - /* 0x080 */ struct UnkRfuStruct_2_Sub_6c unk_80[5]; + /* 0x06c */ struct RfuBlockSend unk_6c; + /* 0x080 */ struct RfuBlockSend unk_80[MAX_RFU_PLAYERS]; /* 0x0e4 */ u8 unk_e4[5]; /* 0x0e9 */ u8 unk_e9[5]; - /* 0x0ee */ vu8 unk_ee; - /* 0x0ef */ u8 unk_ef; - /* 0x0f0 */ u8 unk_f0; - /* 0x0f1 */ u8 unk_f1; + /* 0x0ee */ vu8 errorState; + /* 0x0ef */ bool8 isShuttingDown; + /* 0x0f0 */ u8 linkLossRecoveryState; + /* 0x0f1 */ u8 errorStatus; /* 0x0f2 */ u16 unk_f2[6]; /* 0x0fe */ u16 unk_fe; /* 0x100 */ u16 unk_100; @@ -151,18 +162,18 @@ struct UnkRfuStruct_2 /* 0x10A */ struct GFtgtGname unk_10A; u8 filler_; u8 playerName[PLAYER_NAME_LENGTH + 1]; - /* 0x124 */ struct UnkRfuStruct_2_Sub_124 unk_124; - /* 0x9e8 */ struct UnkRfuStruct_2_Sub_9e8 unk_9e8; + /* 0x124 */ struct RfuRecvQueue recvQueue; + /* 0x9e8 */ struct RfuSendQueue sendQueue; /* 0xc1c */ struct UnkRfuStruct_2_Sub_c1c unk_c1c; /* 0xc3c */ vu8 unk_c3c; /* 0xc3d */ u8 unk_c3d; - /* 0xc3e */ vu8 unk_c3e; + /* 0xc3e */ vu8 childSlot; /* 0xc3f */ u8 unk_c3f[70]; /* 0xc85 */ u8 unk_c85; /* 0xc86 */ u8 unk_c86; - /* 0xc87 */ u8 unk_c87[5][7][2]; - /* 0xccd */ u8 unk_ccd; - /* 0xcce */ u8 unk_cce; + /* 0xc87 */ u8 recvCmds[5][7][2]; + /* 0xccd */ u8 parentId; + /* 0xcce */ u8 multiplayerId; /* 0xccf */ u8 unk_ccf; /* 0xcd0 */ vu8 unk_cd0; /* 0xcd1 */ u8 unk_cd1[4]; @@ -172,57 +183,48 @@ struct UnkRfuStruct_2 /* 0xcdb */ vu8 unk_cdb; /* 0xcdc */ vu8 unk_cdc; /* 0xcdd */ u8 unk_cdd; - /* 0xcde */ u8 unk_cde[4]; + /* 0xcde */ u8 linkPlayerIdx[RFU_CHILD_MAX]; /* 0xce2 */ u8 unk_ce2; /* 0xce2 */ u8 unk_ce3; /* 0xce4 */ u8 unk_ce4; /* 0xce5 */ u8 unk_ce5; /* 0xce5 */ u8 unk_ce6; - /* 0xce7 */ u8 unk_ce7; + /* 0xce7 */ u8 acceptSlot_flag; /* 0xce8 */ u8 unk_ce8; /* 0xce9 */ u8 unk_ce9; /* 0xcea */ u8 unk_cea[4]; /* 0xcee */ u8 unk_cee[4]; }; // size = 0xcf4 -struct UnkRfuStruct_8010A14 -{ - char unk_00[15]; - u8 unk_0f; - u8 unk_10[4]; - struct LinkPlayer unk_14[5]; - u8 fill_a0[0x5c]; -}; - // Exported RAM declarations -extern struct GFtgtGname gUnknown_02022B14; -extern u8 gUnknown_02022B22[]; -extern struct UnkRfuStruct_2 Rfu; +extern struct GFtgtGname gHostRFUtgtGnameBuffer; +extern u8 gHostRFUtgtUnameBuffer[]; +extern struct GFRfuManager Rfu; extern u8 gWirelessStatusIndicatorSpriteId; // Exported ROM declarations void WipeTrainerNameRecords(void); void sub_800E700(void); void LinkRfu_Shutdown(void); -void sub_800F6FC(u8 who); -void sub_800F728(u8 who); +void Rfu_SetBlockReceivedFlag(u8 who); +void Rfu_ResetBlockReceivedFlag(u8 who); bool32 IsSendingKeysToRfu(void); -void sub_800F804(void); +void StartSendingKeysToRfu(void); void sub_800F850(void); -u8 sub_800FCD8(void); -bool32 sub_800FE84(const u8 *src, size_t size); +u8 Rfu_GetBlockReceivedStatus(void); +bool32 Rfu_InitBlockSend(const u8 *src, size_t size); void ClearLinkRfuCallback(void); -u8 sub_80104F4(void); -u8 rfu_get_multiplayer_id(void); +u8 Rfu_GetLinkPlayerCount(void); +u8 Rfu_GetMultiplayerId(void); bool8 sub_8010100(u8 a0); bool8 IsLinkRfuTaskFinished(void); bool8 Rfu_IsMaster(void); void task_add_05_task_del_08FA224_when_no_RfuFunc(void); void sub_8010434(void); -void sub_800E604(void); +void ResetLinkRfuGFLayer(void); void sub_800E174(void); -void sub_800E6D0(void); +void InitRFU(void); bool32 sub_8010EC0(void); bool32 sub_8010F1C(void); bool32 RfuIsErrorStatus1or2(void); @@ -233,7 +235,7 @@ void sub_80111B0(bool32 a0); u8 RfuGetErrorStatus(void); struct GFtgtGname *GetHostRFUtgtGname(void); void UpdateGameData_GroupLockedIn(u8 a0); -void sub_8011170(u32 a0); +void GetLinkmanErrorParams(u32 a0); void RfuSetErrorStatus(u8 a0, u16 a1); u8 sub_801048C(bool32 a0); void LinkRfu3_SetGnameUnameFromStaticBuffers(struct GFtgtGname *buff1, u8 *buff2); @@ -259,7 +261,7 @@ 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 SetTradeBoardRegisteredMonInfo(u32 type, u32 species, u32 level); void InitializeRfuLinkManager_EnterUnionRoom(void); void sub_8012188(const u8 *name, struct GFtgtGname *structPtr, u8 a2); bool32 IsUnionRoomListenTaskActive(void); @@ -271,7 +273,8 @@ void sub_800EF7C(void); 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 CreateTask_RfuIdle(void); +void DestroyTask_RfuIdle(void); void sub_8010198(void); void sub_8011AC8(void); void LinkRfu_FatalError(void); @@ -280,42 +283,17 @@ void sub_80104B0(void); void sub_8011A50(void); void sub_80110B8(u32 a0); bool8 sub_800DAC8(struct UnkRfuStruct_2_Sub_c1c *q1, u8 *q2); -void sub_800EAB4(void); -void sub_800EAFC(void); void sub_800ED34(u16 unused); -void sub_800EDBC(u16 unused); -void sub_800F048(void); -void sub_800F86C(u8 unused); -void sub_800FCC4(struct UnkRfuStruct_2_Sub_6c *data); -void sub_800FD14(u16 command); -void rfufunc_80F9F44(void); -void sub_800FFB0(void); -void rfufunc_80FA020(void); -bool32 sub_8010454(u32 a0); -void sub_8010528(void); -void sub_8010750(void); -s32 sub_80107A0(void); -void sub_801084C(u8 taskId); -void sub_80109E8(u16 a0); -void sub_8010A70(void *a0); -void sub_8010AAC(u8 taskId); -void sub_8010D0C(u8 taskId); -void sub_80115EC(s32 a0); -u8 sub_8011CE4(const u8 *a0, u16 a1); -void sub_8011D6C(u32 a0); -void sub_8011E94(u32 a0, u32 a1); +bool32 RfuSerialNumberIsValid(u32 serialNo); bool8 sub_8012224(void); -void sub_801227C(void); -void sub_801209C(u8 taskId); -void sub_8011BF8(void); void sub_8011BA4(void); -void sub_800D6C8(struct UnkRfuStruct_2_Sub_124 *ptr); -void sub_800D724(struct UnkRfuStruct_2_Sub_9e8 *ptr); +void sub_800D6C8(struct RfuRecvQueue *ptr); +void sub_800D724(struct RfuSendQueue *ptr); void sub_800D780(struct UnkRfuStruct_Sub_Unused *ptr); -void sub_800D7D8(struct UnkRfuStruct_2_Sub_124 *q1, u8 *q2); -void sub_800D888(struct UnkRfuStruct_2_Sub_9e8 *q1, u8 *q2); -bool8 sub_800D934(struct UnkRfuStruct_2_Sub_124 *q1, u8 *q2); -bool8 sub_800D9DC(struct UnkRfuStruct_2_Sub_9e8 *q1, u8 *q2); +void sub_800D7D8(struct RfuRecvQueue *q1, u8 *q2); +void sub_800D888(struct RfuSendQueue *q1, u8 *q2); +bool8 sub_800D934(struct RfuRecvQueue *q1, u8 *q2); +bool8 sub_800D9DC(struct RfuSendQueue *q1, u8 *q2); void sub_800DA68(struct UnkRfuStruct_2_Sub_c1c *q1, const u8 *q2); bool8 sub_800DAC8(struct UnkRfuStruct_2_Sub_c1c *q1, u8 *q2); void sub_800DB18(struct UnkRfuStruct_Sub_Unused *q1, u8 *q2); diff --git a/include/union_room.h b/include/union_room.h index 7c48a9506..985a6404f 100644 --- a/include/union_room.h +++ b/include/union_room.h @@ -162,7 +162,6 @@ extern u8 gUnionRoomRequestedMonType; // Exported ROM declarations u8 CreateTask_CreateTradeMenu(void); -void nullsub_89(u8 taskId); void var_800D_set_xB(void); void MEvent_CreateTask_CardOrNewsWithFriend(u32 arg0); void MEvent_CreateTask_CardOrNewsOverWireless(u32 arg0); -- cgit v1.2.3 From c98342c9730175e57c0cf242292d5ccad61b471d Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sun, 7 Jun 2020 17:37:09 -0400 Subject: Document link_rfu_3.c --- include/link_rfu.h | 77 +++++++++++++++++++----------------------------------- 1 file changed, 27 insertions(+), 50 deletions(-) (limited to 'include') diff --git a/include/link_rfu.h b/include/link_rfu.h index 55b1b3712..46ed3c30a 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -24,12 +24,11 @@ struct GFtgtGnameSub u16 language:4; u16 hasNews:1; u16 hasCard:1; - u16 unk_00_6:1; + u16 unknown:1; // Never read u16 isChampion:1; u16 hasNationalDex:1; u16 gameClear:1; u16 version:4; - u16 unk_01_6:2; u8 playerTrainerId[2]; }; @@ -92,39 +91,30 @@ struct RfuBlockSend struct RfuRecvQueue { - /* 0x000 */ u8 unk_00[32][70]; - /* 0x8c0 */ vu8 unk_8c0; - /* 0x8c1 */ vu8 unk_8c1; + /* 0x000 */ u8 slots[32][70]; + /* 0x8c0 */ vu8 recvSlot; + /* 0x8c1 */ vu8 sendSlot; /* 0x8c2 */ vu8 count; /* 0x8c3 */ vu8 full; }; struct RfuSendQueue { - /* 0x000 */ u8 unk_00[40][14]; - /* 0x230 */ vu8 unk_230; - /* 0x231 */ vu8 unk_231; + /* 0x000 */ u8 slots[40][14]; + /* 0x230 */ vu8 recvSlot; + /* 0x231 */ vu8 sendSlot; /* 0x232 */ vu8 count; /* 0x233 */ vu8 full; }; -struct UnkRfuStruct_2_Sub_c1c +struct RfuBackupQueue { - /* 0x00 */ u8 unk_00[2][14]; - /* 0x1c */ vu8 unk_1c; - /* 0x1d */ vu8 unk_1d; + /* 0x00 */ u8 slots[2][14]; + /* 0x1c */ vu8 recvSlot; + /* 0x1d */ vu8 sendSlot; /* 0x1e */ vu8 count; }; -struct UnkRfuStruct_Sub_Unused -{ - /* 0x000 */ u8 unk_00[2][256]; - /* 0x200 */ vu8 unk_200; - /* 0x201 */ vu8 unk_201; - /* 0x202 */ vu8 unk_202; - /* 0x203 */ vu8 unk_203; -}; - struct GFRfuManager { /* 0x000 */ void (*callback)(void); @@ -141,8 +131,8 @@ struct GFRfuManager /* 0x04c */ u8 unk_4c[14]; /* 0x05a */ u8 unk_5a; /* 0x05b */ u8 unk_5b; - /* 0x05c */ bool8 unk_5c[MAX_RFU_PLAYERS]; - /* 0x061 */ bool8 unk_61[MAX_RFU_PLAYERS]; + /* 0x05c */ bool8 blockReceived[MAX_RFU_PLAYERS]; + /* 0x061 */ bool8 numBlocksReceived[MAX_RFU_PLAYERS]; /* 0x066 */ u8 idleTaskId; /* 0x067 */ u8 searchTaskId; /* 0x068 */ u8 filler_68[4]; @@ -164,8 +154,8 @@ struct GFRfuManager u8 playerName[PLAYER_NAME_LENGTH + 1]; /* 0x124 */ struct RfuRecvQueue recvQueue; /* 0x9e8 */ struct RfuSendQueue sendQueue; - /* 0xc1c */ struct UnkRfuStruct_2_Sub_c1c unk_c1c; - /* 0xc3c */ vu8 unk_c3c; + /* 0xc1c */ struct RfuBackupQueue backupQueue; + /* 0xc3c */ vu8 linkRecovered; /* 0xc3d */ u8 unk_c3d; /* 0xc3e */ vu8 childSlot; /* 0xc3f */ u8 unk_c3f[70]; @@ -223,7 +213,7 @@ bool8 Rfu_IsMaster(void); void task_add_05_task_del_08FA224_when_no_RfuFunc(void); void sub_8010434(void); void ResetLinkRfuGFLayer(void); -void sub_800E174(void); +void UpdateWirelessStatusIndicatorSprite(void); void InitRFU(void); bool32 sub_8010EC0(void); bool32 sub_8010F1C(void); @@ -250,7 +240,6 @@ u32 WaitSendByteToPartnerByIdAndName(u16 a0, const u8 *a1); void RequestDisconnectSlotByTrainerNameAndId(const u8 *a0, u16 a1); bool8 LmanAcceptSlotFlagIsNotZero(void); bool32 WaitRfuState(bool32 a0); -void DestroyWirelessStatusIndicatorSprite(void); void sub_801103C(void); void InitializeRfuLinkManager_JoinGroup(void); void LinkRfuNIsend8(void); @@ -282,36 +271,24 @@ bool32 sub_8011A9C(void); void sub_80104B0(void); void sub_8011A50(void); void sub_80110B8(u32 a0); -bool8 sub_800DAC8(struct UnkRfuStruct_2_Sub_c1c *q1, u8 *q2); -void sub_800ED34(u16 unused); -bool32 RfuSerialNumberIsValid(u32 serialNo); -bool8 sub_8012224(void); +bool32 IsRfuSerialNumberValid(u32 serialNo); +bool8 IsRfuRecoveringFromLinkLoss(void); void sub_8011BA4(void); -void sub_800D6C8(struct RfuRecvQueue *ptr); -void sub_800D724(struct RfuSendQueue *ptr); -void sub_800D780(struct UnkRfuStruct_Sub_Unused *ptr); -void sub_800D7D8(struct RfuRecvQueue *q1, u8 *q2); -void sub_800D888(struct RfuSendQueue *q1, u8 *q2); -bool8 sub_800D934(struct RfuRecvQueue *q1, u8 *q2); -bool8 sub_800D9DC(struct RfuSendQueue *q1, u8 *q2); -void sub_800DA68(struct UnkRfuStruct_2_Sub_c1c *q1, const u8 *q2); -bool8 sub_800DAC8(struct UnkRfuStruct_2_Sub_c1c *q1, u8 *q2); -void sub_800DB18(struct UnkRfuStruct_Sub_Unused *q1, u8 *q2); -bool8 sub_800DB84(struct UnkRfuStruct_Sub_Unused *q1, u8 *q2); +void RfuRecvQueue_Reset(struct RfuRecvQueue *queue); +void RfuSendQueue_Reset(struct RfuSendQueue *queue); +void RfuRecvQueue_Enqueue(struct RfuRecvQueue *queue, u8 *data); +void RfuSendQueue_Enqueue(struct RfuSendQueue *queue, u8 *data); +bool8 RfuRecvQueue_Dequeue(struct RfuRecvQueue *queue, u8 *dest); +bool8 RfuSendQueue_Dequeue(struct RfuSendQueue *queue, u8 *dest); +void RfuBackupQueue_Enqueue(struct RfuBackupQueue *queue, const u8 *q2); +bool8 RfuBackupQueue_Dequeue(struct RfuBackupQueue *queue, u8 *q2); void sub_800DBF8(u8 *q1, u8 mode); -void PkmnStrToASCII(u8 *q1, const u8 *q2); -void ASCIIToPkmnStr(u8 *q1, const u8 *q2); u8 sub_800DD1C(u8 maxFlags); -void sub_800DD94(struct GFtgtGname *data, u8 r9, bool32 r2, s32 r3); +void InitHostRFUtgtGname(struct GFtgtGname *data, u8 r9, bool32 r2, s32 r3); void CreateWirelessStatusIndicatorSprite(u8 x, u8 y); void DestroyWirelessStatusIndicatorSprite(void); void LoadWirelessStatusIndicatorSpriteGfx(void); u8 sub_800E124(void); void sub_800E15C(struct Sprite *sprite, s32 signalStrengthAnimNum); -void sub_800E174(void); -void CopyTrainerRecord(struct TrainerNameRecord *dest, u32 trainerId, const u8 *name); -bool32 NameIsNotEmpty(const u8 *name); -void RecordMixTrainerNames(void); -void WipeTrainerNameRecords(void); #endif //GUARD_LINK_RFU_H -- cgit v1.2.3 From 35867f531bbcfaf360045160734a1ff09ce0f6d8 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Mon, 8 Jun 2020 00:45:06 -0400 Subject: Some link rfu cleanup / link.c documentation --- include/gba/types.h | 3 +++ include/link.h | 20 ++++++++-------- include/link_rfu.h | 68 +++++++++++++++++------------------------------------ 3 files changed, 35 insertions(+), 56 deletions(-) (limited to 'include') diff --git a/include/gba/types.h b/include/gba/types.h index 7163f925f..35d02e263 100644 --- a/include/gba/types.h +++ b/include/gba/types.h @@ -27,6 +27,9 @@ typedef double f64; typedef u8 bool8; typedef u16 bool16; typedef u32 bool32; +typedef vu8 vbool8; +typedef vu16 vbool16; +typedef vu32 vbool32; struct BgCnt { diff --git a/include/link.h b/include/link.h index d33b84c79..25e62ff1e 100644 --- a/include/link.h +++ b/include/link.h @@ -284,13 +284,13 @@ void sub_800A418(void); void SetSuppressLinkErrorMessage(bool8 flag); void sub_800B524(struct LinkPlayer *linkPlayer); u8 GetSioMultiSI(void); -void sub_800AAF4(void); -void sub_800AF18(u32 status, u8 lastSendQueueCount, u8 lastRecvQueueCount, u8 unk_06); +void ClearSavedLinkPlayers(void); +void BufferLinkErrorInfo(u32 status, u8 lastSendQueueCount, u8 lastRecvQueueCount, u8 unk_06); void sub_800B348(void); void LinkPlayerFromBlock(u32 who); -bool32 sub_800A07C(void); +bool32 Link_AnyPartnersPlayingFRLG_JP(void); void ResetLinkPlayerCount(void); -void sub_800AA04(u8 a0); +void SaveLinkPlayers(u8 a0); void SetWirelessCommType0(void); bool32 sub_800B504(void); @@ -330,18 +330,18 @@ extern u32 gFiller_03003080; extern struct LinkPlayer gLocalLinkPlayer; bool32 Link_AnyPartnersPlayingRubyOrSapphire(void); -bool32 sub_800A03C(void); +bool32 LinkDummy_Return2(void); void SetLocalLinkPlayerId(u8); u8 GetSavedPlayerCount(void); void sub_8009FAC(void); bool8 sub_800A4D8(u8 a0); -u8 sub_800A9D8(void); +u8 GetLinkPlayerCountAsBitFlags(void); u8 sub_800A0C8(s32, s32); -u8 sub_800A9A8(void); +u8 GetSavedLinkPlayerCountAsBitFlags(void); void sub_800AD10(void); -void sub_800AB18(void); -void sub_8009F18(void); -bool8 sub_800AA60(void); +void CheckLinkPlayersMatchSaved(void); +void StartSendingKeysToLink(void); +bool8 DoesLinkPlayerCountMatchSaved(void); void sub_800ABF4(u16 a0); bool32 IsSendingKeysToLink(void); u32 GetLinkRecvQueueLength(void); diff --git a/include/link_rfu.h b/include/link_rfu.h index 46ed3c30a..b88d0af83 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -18,6 +18,17 @@ #define RFU_COMMAND_0xEE00 0xEE00 #define RFU_COMMAND_0xED00 0xED00 +#define RFU_SERIAL_7F7D 0x7F7D + +#define RECV_QUEUE_NUM_SLOTS 32 +#define RECV_QUEUE_SLOT_LENGTH (14 * MAX_RFU_PLAYERS) + +#define SEND_QUEUE_NUM_SLOTS 40 +#define SEND_QUEUE_SLOT_LENGTH 14 + +#define BACKUP_QUEUE_NUM_SLOTS 2 +#define BACKUP_QUEUE_SLOT_LENGTH 14 + // RfuTgtData.gname is read as these structs. struct GFtgtGnameSub { @@ -48,35 +59,6 @@ struct __attribute__((packed, aligned(2))) GFtgtGname u8 padding; }; // size: RFU_GNAME_SIZE -struct UnkLinkRfuStruct_02022B2C -{ - u8 unk_00; - u8 unk_01; - u16 unk_02; - u8 unk_04; - u16 unk_06; - struct GFtgtGname *unk_08; - u8 *unk_0c; - u8 unk_10; - u8 unk_11; - u16 unk_12; - u16 unk_14; -}; - -struct UnkLinkRfuStruct_02022B44 -{ - u8 fill_00[6]; - u16 unk_06; - u8 fill_08[6]; - vu8 unk_0e; - u8 unk_0f; - u8 fill_10[0x54]; - u16 unk_64; - u8 fill_66[0x1d]; - u8 unk_83; - u8 fill_84[0x58]; -}; - struct RfuBlockSend { /* 0x00 */ u16 next; @@ -91,7 +73,7 @@ struct RfuBlockSend struct RfuRecvQueue { - /* 0x000 */ u8 slots[32][70]; + /* 0x000 */ u8 slots[RECV_QUEUE_NUM_SLOTS][RECV_QUEUE_SLOT_LENGTH]; /* 0x8c0 */ vu8 recvSlot; /* 0x8c1 */ vu8 sendSlot; /* 0x8c2 */ vu8 count; @@ -100,7 +82,7 @@ struct RfuRecvQueue struct RfuSendQueue { - /* 0x000 */ u8 slots[40][14]; + /* 0x000 */ u8 slots[SEND_QUEUE_NUM_SLOTS][SEND_QUEUE_SLOT_LENGTH]; /* 0x230 */ vu8 recvSlot; /* 0x231 */ vu8 sendSlot; /* 0x232 */ vu8 count; @@ -109,7 +91,7 @@ struct RfuSendQueue struct RfuBackupQueue { - /* 0x00 */ u8 slots[2][14]; + /* 0x00 */ u8 slots[BACKUP_QUEUE_NUM_SLOTS][BACKUP_QUEUE_SLOT_LENGTH]; /* 0x1c */ vu8 recvSlot; /* 0x1d */ vu8 sendSlot; /* 0x1e */ vu8 count; @@ -123,11 +105,11 @@ struct GFRfuManager /* 0x00a */ u16 linkmanMsg; /* 0x00c */ u8 parentChild; /* 0x00d */ u8 playerCount; - /* 0x00e */ u8 unk_0e; + /* 0x00e */ bool8 unk_0e; /* 0x00f */ u8 unk_0f; /* 0x010 */ u16 unk_10; /* 0x012 */ u16 unk_12; - /* 0x014 */ u8 unk_14[4][14]; + /* 0x014 */ u8 unk_14[RFU_CHILD_MAX][14]; /* 0x04c */ u8 unk_4c[14]; /* 0x05a */ u8 unk_5a; /* 0x05b */ u8 unk_5b; @@ -136,8 +118,8 @@ struct GFRfuManager /* 0x066 */ u8 idleTaskId; /* 0x067 */ u8 searchTaskId; /* 0x068 */ u8 filler_68[4]; - /* 0x06c */ struct RfuBlockSend unk_6c; - /* 0x080 */ struct RfuBlockSend unk_80[MAX_RFU_PLAYERS]; + /* 0x06c */ struct RfuBlockSend sendBlock; + /* 0x080 */ struct RfuBlockSend recvBlock[MAX_RFU_PLAYERS]; /* 0x0e4 */ u8 unk_e4[5]; /* 0x0e9 */ u8 unk_e9[5]; /* 0x0ee */ vu8 errorState; @@ -170,8 +152,8 @@ struct GFRfuManager /* 0xcd5 */ u8 unk_cd5[4]; /* 0xcd9 */ u8 unk_cd9; /* 0xcda */ u8 unk_cda; - /* 0xcdb */ vu8 unk_cdb; - /* 0xcdc */ vu8 unk_cdc; + /* 0xcdb */ vbool8 unk_cdb; + /* 0xcdc */ vbool8 unk_cdc; /* 0xcdd */ u8 unk_cdd; /* 0xcde */ u8 linkPlayerIdx[RFU_CHILD_MAX]; /* 0xce2 */ u8 unk_ce2; @@ -195,7 +177,7 @@ extern u8 gWirelessStatusIndicatorSpriteId; // Exported ROM declarations void WipeTrainerNameRecords(void); -void sub_800E700(void); +void InitRFUAPI(void); void LinkRfu_Shutdown(void); void Rfu_SetBlockReceivedFlag(u8 who); void Rfu_ResetBlockReceivedFlag(u8 who); @@ -264,7 +246,6 @@ bool8 LinkRfu_GetNameIfSerial7F7D(struct GFtgtGname *buff1, u8 *buff2, u8 idx); s32 sub_800E87C(u8 idx); void CreateTask_RfuIdle(void); void DestroyTask_RfuIdle(void); -void sub_8010198(void); void sub_8011AC8(void); void LinkRfu_FatalError(void); bool32 sub_8011A9C(void); @@ -273,7 +254,6 @@ void sub_8011A50(void); void sub_80110B8(u32 a0); bool32 IsRfuSerialNumberValid(u32 serialNo); bool8 IsRfuRecoveringFromLinkLoss(void); -void sub_8011BA4(void); void RfuRecvQueue_Reset(struct RfuRecvQueue *queue); void RfuSendQueue_Reset(struct RfuSendQueue *queue); void RfuRecvQueue_Enqueue(struct RfuRecvQueue *queue, u8 *data); @@ -282,13 +262,9 @@ bool8 RfuRecvQueue_Dequeue(struct RfuRecvQueue *queue, u8 *dest); bool8 RfuSendQueue_Dequeue(struct RfuSendQueue *queue, u8 *dest); void RfuBackupQueue_Enqueue(struct RfuBackupQueue *queue, const u8 *q2); bool8 RfuBackupQueue_Dequeue(struct RfuBackupQueue *queue, u8 *q2); -void sub_800DBF8(u8 *q1, u8 mode); -u8 sub_800DD1C(u8 maxFlags); -void InitHostRFUtgtGname(struct GFtgtGname *data, u8 r9, bool32 r2, s32 r3); +void InitHostRFUtgtGname(struct GFtgtGname *data, u8 activity, bool32 started, s32 child_sprite_genders); void CreateWirelessStatusIndicatorSprite(u8 x, u8 y); void DestroyWirelessStatusIndicatorSprite(void); void LoadWirelessStatusIndicatorSpriteGfx(void); -u8 sub_800E124(void); -void sub_800E15C(struct Sprite *sprite, s32 signalStrengthAnimNum); #endif //GUARD_LINK_RFU_H -- cgit v1.2.3 From 2859900ea9aa6f381006976fa94b95e6a4cad0b7 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Mon, 8 Jun 2020 18:16:57 -0400 Subject: Second pass on documenting union room --- include/constants/cable_club.h | 4 ++- include/constants/union_room.h | 18 ++++++++++++- include/link_rfu.h | 40 +++++++++++++++++++---------- include/union_room.h | 52 ++++++++++++++++++-------------------- include/union_room_player_avatar.h | 2 +- 5 files changed, 72 insertions(+), 44 deletions(-) (limited to 'include') diff --git a/include/constants/cable_club.h b/include/constants/cable_club.h index 3250ce6f8..cbdd049db 100644 --- a/include/constants/cable_club.h +++ b/include/constants/cable_club.h @@ -12,6 +12,8 @@ #define USING_MINIGAME 8 #define USING_BATTLE_TOWER 9 +// Return states for the group of specials that use CreateLinkupTask +// A few also used by TryBecomeLinkLeader and TryJoinLinkGroup #define LINKUP_ONGOING 0 #define LINKUP_SUCCESS 1 #define LINKUP_SOMEONE_NOT_READY 2 @@ -20,7 +22,7 @@ #define LINKUP_FAILED 5 #define LINKUP_CONNECTION_ERROR 6 #define LINKUP_PLAYER_NOT_READY 7 -#define LINKUP_UNK8 8 +#define LINKUP_RETRY_ROLE_ASSIGN 8 #define LINKUP_PARTNER_NOT_READY 9 #define LINKUP_FAILED_CONTEST_GMODE 10 #define LINKUP_FAILED_BATTLE_TOWER 11 diff --git a/include/constants/union_room.h b/include/constants/union_room.h index 7b1d1a1be..d867fb340 100644 --- a/include/constants/union_room.h +++ b/include/constants/union_room.h @@ -44,7 +44,7 @@ #define ACTIVITY_BATTLE_TOWER 28 #define ACTIVITY_29 29 -#define IN_UNION_ROOM 0x40 +#define IN_UNION_ROOM (1 << 6) // Used in UR_AddTextPrinterParameterized #define UR_COLOR_DKE_WHT_LTE 0 @@ -83,4 +83,20 @@ #define UR_TRADE_NOTYPE 1 #define UR_TRADE_NOEGG 2 +#define UR_TRADE_READY 0 +#define UR_TRADE_PLAYER_NOT_READY 1 +#define UR_TRADE_PARTNER_NOT_READY 2 + +#define UR_INTERACT_PLAYER_1 1 +#define UR_INTERACT_PLAYER_2 2 +#define UR_INTERACT_PLAYER_3 3 +#define UR_INTERACT_PLAYER_4 4 +#define UR_INTERACT_PLAYER_5 5 +#define UR_INTERACT_PLAYER_6 6 +#define UR_INTERACT_PLAYER_7 7 +#define UR_INTERACT_PLAYER_8 8 +#define UR_INTERACT_ATTENDANT 9 +#define UR_INTERACT_UNUSED 10 +#define UR_INTERACT_START_MENU 11 + #endif //GUARD_CONSTANTS_UNION_ROOM_H diff --git a/include/link_rfu.h b/include/link_rfu.h index b88d0af83..eede41d60 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -29,6 +29,20 @@ #define BACKUP_QUEUE_NUM_SLOTS 2 #define BACKUP_QUEUE_SLOT_LENGTH 14 +#define RFU_STATUS_OK 0 +#define RFU_STATUS_FATAL_ERROR 1 +#define RFU_STATUS_CONNECTION_ERROR 2 +#define RFU_STATUS_CHILD_SEND_COMPLETE 3 +#define RFU_STATUS_NEW_CHILD_DETECTED 4 +#define RFU_STATUS_JOIN_GROUP_OK 5 +#define RFU_STATUS_JOIN_GROUP_NO 6 +#define RFU_STATUS_WAIT_ACK_JOIN_GROUP 7 +#define RFU_STATUS_LEAVE_GROUP_NOTICE 8 +#define RFU_STATUS_LEAVE_GROUP 9 +#define RFU_STATUS_10 10 +#define RFU_STATUS_11 11 +#define RFU_STATUS_ACK_JOIN_GROUP 12 + // RfuTgtData.gname is read as these structs. struct GFtgtGnameSub { @@ -125,7 +139,7 @@ struct GFRfuManager /* 0x0ee */ vu8 errorState; /* 0x0ef */ bool8 isShuttingDown; /* 0x0f0 */ u8 linkLossRecoveryState; - /* 0x0f1 */ u8 errorStatus; + /* 0x0f1 */ u8 status; /* 0x0f2 */ u16 unk_f2[6]; /* 0x0fe */ u16 unk_fe; /* 0x100 */ u16 unk_100; @@ -142,14 +156,14 @@ struct GFRfuManager /* 0xc3e */ vu8 childSlot; /* 0xc3f */ u8 unk_c3f[70]; /* 0xc85 */ u8 unk_c85; - /* 0xc86 */ u8 unk_c86; + /* 0xc86 */ u8 recvStatus; /* 0xc87 */ u8 recvCmds[5][7][2]; /* 0xccd */ u8 parentId; /* 0xcce */ u8 multiplayerId; /* 0xccf */ u8 unk_ccf; /* 0xcd0 */ vu8 unk_cd0; - /* 0xcd1 */ u8 unk_cd1[4]; - /* 0xcd5 */ u8 unk_cd5[4]; + /* 0xcd1 */ u8 partnerSendStatuses[RFU_CHILD_MAX]; + /* 0xcd5 */ u8 partnerRecvStatuses[RFU_CHILD_MAX]; /* 0xcd9 */ u8 unk_cd9; /* 0xcda */ u8 unk_cda; /* 0xcdb */ vbool8 unk_cdb; @@ -199,36 +213,36 @@ void UpdateWirelessStatusIndicatorSprite(void); void InitRFU(void); bool32 sub_8010EC0(void); bool32 sub_8010F1C(void); -bool32 RfuIsErrorStatus1or2(void); +bool32 RfuHasErrored(void); bool32 IsRfuRecvQueueEmpty(void); u32 GetRfuRecvQueueLength(void); void RfuVSync(void); void sub_80111B0(bool32 a0); -u8 RfuGetErrorStatus(void); +u8 RfuGetStatus(void); struct GFtgtGname *GetHostRFUtgtGname(void); void UpdateGameData_GroupLockedIn(u8 a0); void GetLinkmanErrorParams(u32 a0); -void RfuSetErrorStatus(u8 a0, u16 a1); +void RfuSetStatus(u8 a0, u16 a1); u8 sub_801048C(bool32 a0); void LinkRfu3_SetGnameUnameFromStaticBuffers(struct GFtgtGname *buff1, u8 *buff2); -void SetHostRFUtgtGname(u8 a0, u32 a1, u32 a2); +void SetHostRFUtgtGname(u8 activity, u32 child_sprite_genders, bool32 started); void InitializeRfuLinkManager_LinkLeader(u32 a0); bool32 sub_8012240(void); void LinkRfu_StopManagerAndFinalizeSlots(void); bool32 sub_80105EC(void); -bool32 TrainerIdAndNameStillInPartnersList(u16 a0, const u8 *a1); -void SendByteToPartnerByIdAndName(u8 a0, u16 a1, const u8 *a2); -u32 WaitSendByteToPartnerByIdAndName(u16 a0, const u8 *a1); +bool32 HasTrainerLeftPartnersList(u16 trainerId, const u8 *name); +void SendRfuStatusToPartner(u8 status, u16 trainerId, const u8 *name); +u32 WaitSendRfuStatusToPartner(u16 trainerId, const u8 *name); void RequestDisconnectSlotByTrainerNameAndId(const u8 *a0, u16 a1); bool8 LmanAcceptSlotFlagIsNotZero(void); bool32 WaitRfuState(bool32 a0); void sub_801103C(void); void InitializeRfuLinkManager_JoinGroup(void); -void LinkRfuNIsend8(void); +void SendLeaveGroupNotice(void); void RecordMixTrainerNames(void); void LinkRfu_CreateConnectionAsParent(void); void LinkRfu_StopManagerBeforeEnteringChat(void); -void UpdateGameDataWithActivitySpriteGendersFlag(u8 a0, u32 a1, u32 a2); +void UpdateGameData_SetActivity(u8 activity, u32 flags, bool32 started); void CreateTask_RfuReconnectWithParent(const u8 *src, u16 trainerId); void SetGnameBufferWonderFlags(bool32 a0, bool32 a1); void ClearAndInitHostRFUtgtGname(void); diff --git a/include/union_room.h b/include/union_room.h index 985a6404f..563a048d3 100644 --- a/include/union_room.h +++ b/include/union_room.h @@ -2,6 +2,7 @@ #define GUARD_UNION_ROOM_H #include "link_rfu.h" +#include "link.h" #include "constants/union_room.h" // Exported type declarations @@ -12,22 +13,20 @@ struct WirelessGnameUnamePair u8 ALIGNED(4) playerName[PLAYER_NAME_LENGTH + 1]; }; -struct UnkStruct_x1C // WirelessLink_Member? +struct UnkStruct_x1C { struct WirelessGnameUnamePair gname_uname; u8 active:1; }; -struct UnkStruct_x20 // WirelessLink_Member? +struct UnkStruct_x20 { struct WirelessGnameUnamePair gname_uname; - u16 field_18; + u16 timeoutCounter; u8 groupScheduledAnim:2; - u8 field_1A_1:1; + bool8 useRedText:1; // Never set u8 field_1B; - u8 field_1D; - u8 field_1E; - u8 field_1F; + u8 filler[3]; }; struct UnkStruct_Main0 @@ -37,12 +36,12 @@ struct UnkStruct_Main0 struct UnkStruct_Main4 { - struct UnkStruct_x1C arr[5]; + struct UnkStruct_x1C arr[MAX_RFU_PLAYERS]; }; struct UnkStruct_Main8 { - struct UnkStruct_x20 arr[5]; + struct UnkStruct_x20 arr[MAX_RFU_PLAYERS]; }; struct WirelessLink_Leader @@ -62,8 +61,8 @@ struct WirelessLink_Leader u8 field_16; u8 listenTaskId; u8 activity; - u8 field_19; - u16 field_1A; + u8 joinRequestAnswer; + u16 memberConfirmTimeout; }; struct WirelessLink_Group @@ -100,32 +99,29 @@ struct WirelessLink_URoom struct UnkStruct_Main4 *field_4; struct UnkStruct_Main0 *field_8; struct UnkStruct_Main4 *field_C; - u16 field_10; + u16 unknown; // Never read u16 field_12; u8 state; u8 stateAfterPrint; u8 textState; - u8 field_17; - u8 field_18; - u8 field_19; - u8 field_1A; + u8 filler[4]; u8 topListMenuWindowId; u8 topListMenuId; u8 tradeBoardSelectWindowId; u8 tradeBoardDetailsWindowId; - u8 field_1F; - u8 field_20; + u8 unused1; + u8 searchTaskId; u8 spriteIds[40]; - u8 field_49; - u8 field_4A; + u8 unused2; + u8 tradeBoardListMenuId; u16 playerSendBuffer[6]; u8 activityRequestStrbufs[4][16]; u16 partnerYesNoResponse; u16 recvActivityRequest[3]; struct UnionRoomObject objects[MAX_UNION_ROOM_PLAYERS]; - u8 field_C0[12][15]; - u8 field_174[48]; - u8 field_1A4[200]; + u8 trainerCardStrBuffer[12][15]; + u8 trainerCardColorStrBuffer[48]; + u8 trainerCardMsgStrBuffer[200]; }; union WirelessLink_Main @@ -137,16 +133,16 @@ union WirelessLink_Main struct UnionRoomTrade { - u16 field_0; + u16 state; u16 type; u32 playerPersonality; - u8 field_8; - u8 field_9; + u8 offerPlayerId; + u8 filler1; u16 playerSpecies; u16 playerLevel; u16 species; u16 level; - u16 field_12; + u16 filler2; u32 personality; }; @@ -162,7 +158,7 @@ extern u8 gUnionRoomRequestedMonType; // Exported ROM declarations u8 CreateTask_CreateTradeMenu(void); -void var_800D_set_xB(void); +void SetUsingUnionRoomStartMenu(void); void MEvent_CreateTask_CardOrNewsWithFriend(u32 arg0); void MEvent_CreateTask_CardOrNewsOverWireless(u32 arg0); void MEvent_CreateTask_Leader(u32 arg0); diff --git a/include/union_room_player_avatar.h b/include/union_room_player_avatar.h index 072126949..c7add758a 100644 --- a/include/union_room_player_avatar.h +++ b/include/union_room_player_avatar.h @@ -8,7 +8,7 @@ void DestroyGroupMemberSprites(u8 *spriteIds); void SetTilesAroundUnionRoomPlayersPassable(void); void ScheduleUnionRoomPlayerRefresh(struct WirelessLink_URoom *uroom); void HandleUnionRoomPlayerRefresh(struct WirelessLink_URoom *uroom); -bool32 TrySetUnionRoomMemberFacePlayer(struct UnkStruct_Main0 *main0, s16 *directionPtr, s16 *playerIdxPtr, u8 *spriteIds); +bool32 TryInteractWithUnionRoomMember(struct UnkStruct_Main0 *main0, s16 *directionPtr, s16 *playerIdxPtr, u8 *spriteIds); void UpdateUnionRoomMemberFacing(u32 currDirection, u32 playerIdx, struct UnkStruct_Main0 *main0); #endif //GUARD_UNION_ROOM_PLAYER_AVATAR_H -- cgit v1.2.3 From 3264cf697f5fe996c2a79c6c34181c186fe2f96e Mon Sep 17 00:00:00 2001 From: Michael Panzlaff Date: Sat, 9 May 2020 14:49:51 +0200 Subject: fix aggressive loop optimizations Previously, aggressive loop optimizations with a new compiler were not possible due to undefined behaviour at end of arrays. A macro "UBFIX" is added to allow ifdefs for fixes which resolve undefined behavior. For example newer GCC versions will detect various bugs in the original game code and will otherwise not compile with -Werror. --- include/config.h | 8 ++++++++ include/global.tv.h | 7 +++++++ 2 files changed, 15 insertions(+) (limited to 'include') diff --git a/include/config.h b/include/config.h index 318ed39d8..4f97a12a3 100644 --- a/include/config.h +++ b/include/config.h @@ -26,4 +26,12 @@ #define UNITS_METRIC #endif +// Various undefined behavior bugs may or may not prevent compilation with +// newer compilers. So always fix them when using a modern compiler. +#if MODERN +#ifndef UBFIX +#define UBFIX +#endif +#endif + #endif // GUARD_CONFIG_H diff --git a/include/global.tv.h b/include/global.tv.h index 34791d43c..ba1c3c37e 100644 --- a/include/global.tv.h +++ b/include/global.tv.h @@ -18,6 +18,13 @@ typedef union // size = 0x24 /*0x23*/ u8 trainerIdHi; } common; + // Common init (used for initialization loop) + struct { + /*0x00*/ u8 kind; + /*0x01*/ bool8 active; + /*0x02*/ u8 pad02[34]; + } commonInit; + // Local shows // TVSHOW_FAN_CLUB_LETTER struct { -- cgit v1.2.3