From 3fd878483f38145cb4311d377f99545f25af52a8 Mon Sep 17 00:00:00 2001 From: Phlosioneer Date: Sun, 10 Feb 2019 00:50:46 -0500 Subject: Start renaming symbols I finally figured out what the code is trying to do. I have a foothold; the rest should follow. --- include/cable_club.h | 2 +- include/global.h | 4 ++-- include/overworld.h | 2 +- include/trainer_card.h | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) (limited to 'include') diff --git a/include/cable_club.h b/include/cable_club.h index 60d56460d..c2849ca3e 100644 --- a/include/cable_club.h +++ b/include/cable_club.h @@ -15,6 +15,6 @@ void sub_80B360C(void); bool32 sub_80B2AF4(u16 *arg0, u16 *arg1); void sub_80B3AF8(u8 taskId); void task00_08081A90(u8 taskId); -bool32 sub_80B39D4(u8 linkPlayerIndex); +bool32 GetLinkTrainerCardColor(u8 linkPlayerIndex); #endif //GUARD_CABLE_CLUB_H diff --git a/include/global.h b/include/global.h index 14a6387cd..64d039c6f 100644 --- a/include/global.h +++ b/include/global.h @@ -907,12 +907,12 @@ struct MapPosition s8 height; }; -struct UnkStruct_8054FF8 +struct TradeRoomTrainer { u8 a; u8 b; u8 c; - u8 d; + u8 facing; struct MapPosition sub; u16 field_C; }; diff --git a/include/overworld.h b/include/overworld.h index 79cbf1da3..1a8702d71 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -25,7 +25,7 @@ extern u16 *gBGTilemapBuffers3; extern u16 gUnknown_03005DA8; extern void (*gFieldCallback)(void); extern bool8 (*gFieldCallback2)(void); -extern u8 gUnknown_03005DB4; +extern u8 gLinkGuestPlayerId; extern u8 gFieldLinkPlayerCount; // Exported ROM declarations diff --git a/include/trainer_card.h b/include/trainer_card.h index 1cadbd8fc..173d23baa 100644 --- a/include/trainer_card.h +++ b/include/trainer_card.h @@ -43,7 +43,7 @@ struct TrainerCard extern struct TrainerCard gTrainerCards[4]; u32 CountPlayerTrainerStars(void); -u8 sub_80C4904(u8 cardId); +u8 GetTrainerCardStars(u8 cardId); void CopyTrainerCardData(struct TrainerCard *dst, u16 *src, u8 gameVersion); void ShowPlayerTrainerCard(void (*callback)(void)); void ShowTrainerCardInLink(u8 arg0, void (*callback)(void)); -- cgit v1.2.3 From f2f1b1978ba3423a519df66d4f382dd68ac8b185 Mon Sep 17 00:00:00 2001 From: Phlosioneer Date: Sun, 10 Feb 2019 03:54:50 -0500 Subject: Done documenting link code in overworld.c --- include/global.h | 8 ++++---- include/link.h | 4 ++-- include/link_rfu.h | 6 +++--- include/overworld.h | 22 +++++++++++++++++----- 4 files changed, 26 insertions(+), 14 deletions(-) (limited to 'include') diff --git a/include/global.h b/include/global.h index 64d039c6f..6843b4216 100644 --- a/include/global.h +++ b/include/global.h @@ -907,13 +907,13 @@ struct MapPosition s8 height; }; -struct TradeRoomTrainer +struct TradeRoomPlayer { - u8 a; - u8 b; + u8 playerId; + u8 isSelf; u8 c; u8 facing; - struct MapPosition sub; + struct MapPosition pos; u16 field_C; }; diff --git a/include/link.h b/include/link.h index 52a631570..b29d9b4e1 100644 --- a/include/link.h +++ b/include/link.h @@ -312,7 +312,7 @@ void sub_800AB18(void); void sub_8009F18(void); bool8 sub_800AA60(void); void sub_800ABF4(u16 a0); -bool32 sub_8009F3C(void); -u32 sub_800B4DC(void); +bool32 IsSendingKeysToLink(void); +u32 GetLinkRecvQueueLength(void); #endif // GUARD_LINK_H diff --git a/include/link_rfu.h b/include/link_rfu.h index d468d6c49..435880e20 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -218,7 +218,7 @@ void sub_800E700(void); void sub_800EDD4(void); void sub_800F6FC(u8 who); void sub_800F728(u8 who); -bool32 sub_800F7E4(void); +bool32 IsSendingKeysToRfu(void); void sub_800F804(void); void sub_800F850(void); u8 sub_800FCD8(void); @@ -237,8 +237,8 @@ void sub_800E6D0(void); bool32 sub_8010EC0(void); bool32 sub_8010F1C(void); bool32 sub_8011A80(void); -bool32 sub_800F0B8(void); -u32 sub_80124D4(void); +bool32 IsRfuRecvQueueEmpty(void); +u32 GetRfuRecvQueueLength(void); void RfuVSync(void); void sub_80111B0(bool32 a0); u8 sub_8011A74(void); diff --git a/include/overworld.h b/include/overworld.h index 1a8702d71..b5c41b1e6 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -1,6 +1,18 @@ #ifndef GUARD_OVERWORLD_H #define GUARD_OVERWORLD_H +#define LINK_KEY_CODE_NULL 0x00 +#define LINK_KEY_CODE_EMPTY 0x11 +#define LINK_KEY_CODE_DPAD_DOWN 0x12 +#define LINK_KEY_CODE_DPAD_UP 0x13 +#define LINK_KEY_CODE_DPAD_LEFT 0x14 +#define LINK_KEY_CODE_DPAD_RIGHT 0x15 +#define LINK_KEY_CODE_UNK_2 0x16 +#define LINK_KEY_CODE_UNK_3 0x17 +#define LINK_KEY_CODE_START_BUTTON 0x18 +#define LINK_KEY_CODE_A_BUTTON 0x19 +#define LINK_KEY_CODE_UNK_4 0x1A // I'd guess this is the B button? + struct InitialPlayerAvatarState { u8 transitionFlags; @@ -22,10 +34,10 @@ extern struct LinkPlayerEventObject gLinkPlayerEventObjects[4]; extern u16 *gBGTilemapBuffers1; extern u16 *gBGTilemapBuffers2; extern u16 *gBGTilemapBuffers3; -extern u16 gUnknown_03005DA8; +extern u16 gHeldKeyCodeToSend; extern void (*gFieldCallback)(void); extern bool8 (*gFieldCallback2)(void); -extern u8 gLinkGuestPlayerId; +extern u8 gLinkSelfPlayerId; extern u8 gFieldLinkPlayerCount; // Exported ROM declarations @@ -103,7 +115,7 @@ u8 GetSavedWarpRegionMapSectionId(void); u8 GetCurrentRegionMapSectionId(void); u8 GetCurrentMapBattleScene(void); void CleanupOverworldWindowsAndTilemaps(void); -bool32 is_c1_link_related_active(void); +bool32 IsUpdateLinkStateCBActive(void); void CB1_Overworld(void); void CB2_OverworldBasic(void); void CB2_Overworld(void); @@ -117,13 +129,13 @@ void sub_8086074(void); void CB2_ReturnToField(void); void CB2_ReturnToFieldLocal(void); void CB2_ReturnToFieldLink(void); -void c2_8056854(void); +void CB2_ReturnToFieldFromMultiplayer(void); void CB2_ReturnToFieldWithOpenMenu(void); void CB2_ReturnToFieldContinueScript(void); void CB2_ReturnToFieldContinueScriptPlayMapMusic(void); void sub_80861E8(void); void CB2_ContinueSavedGame(void); -void sub_8086C2C(void); +void ResetAllMultiplayerState(void); u32 sub_8087214(void); bool32 sub_808727C(void); u16 sub_8087288(void); -- cgit v1.2.3 From e75f45dbcfcd65901035fbc7e3793332670eb306 Mon Sep 17 00:00:00 2001 From: Phlosioneer Date: Sun, 10 Feb 2019 20:42:50 -0500 Subject: Reverse engineered many of the multiplayer events Some corrections to the way events are handled and identified. --- include/constants/battle_frontier.h | 2 ++ include/link.h | 6 +++--- include/overworld.h | 19 +++++++++++++++---- include/party_menu.h | 2 +- include/record_mixing.h | 2 +- include/save.h | 6 ++---- 6 files changed, 24 insertions(+), 13 deletions(-) (limited to 'include') diff --git a/include/constants/battle_frontier.h b/include/constants/battle_frontier.h index ca9e3bc9f..1224c0f31 100644 --- a/include/constants/battle_frontier.h +++ b/include/constants/battle_frontier.h @@ -10,6 +10,8 @@ #define FRONTIER_FACILITY_PIKE 5 #define FRONTIER_FACILITY_PYRAMID 6 #define NUM_FRONTIER_FACILITIES 7 +// The multiplayer battle colosseum rooms re-use VAR_FRONTIER_FACILITY. +#define FRONTIER_FACILITY_DOUBLE_COLOSSEUM 9 #define TENT_VERDANTURF 2 #define TENT_FALLARBOR 3 diff --git a/include/link.h b/include/link.h index b29d9b4e1..8c272699d 100644 --- a/include/link.h +++ b/include/link.h @@ -244,7 +244,7 @@ bool8 IsLinkTaskFinished(void); void CreateWirelessStatusIndicatorSprite(u8, u8); void sub_800ADF8(void); void sub_800B488(void); -void sub_800A620(void); +void CheckShouldAdvanceLinkState(void); void sub_8011BD0(void); u8 IsLinkMaster(void); void sub_800AC34(void); @@ -299,8 +299,8 @@ extern struct LinkPlayer gLocalLinkPlayer; bool32 Link_AnyPartnersPlayingRubyOrSapphire(void); bool32 sub_800A03C(void); -void sub_8009628(u8); -u8 sub_800AA48(void); +void SetLocalLinkPlayerId(u8); +u8 GetSavedPlayerCount(void); void sub_8009FAC(void); bool8 sub_800A4D8(u8 a0); u8 sub_800A9D8(void); diff --git a/include/overworld.h b/include/overworld.h index b5c41b1e6..9434d5c28 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -8,11 +8,22 @@ #define LINK_KEY_CODE_DPAD_LEFT 0x14 #define LINK_KEY_CODE_DPAD_RIGHT 0x15 #define LINK_KEY_CODE_UNK_2 0x16 -#define LINK_KEY_CODE_UNK_3 0x17 +#define LINK_KEY_CODE_EXIT_ROOM 0x17 #define LINK_KEY_CODE_START_BUTTON 0x18 #define LINK_KEY_CODE_A_BUTTON 0x19 #define LINK_KEY_CODE_UNK_4 0x1A // I'd guess this is the B button? +// These two are a hack to stop user input until link stuff can be +// resolved. +#define LINK_KEY_CODE_HANDLE_RECV_QUEUE 0x1B +#define LINK_KEY_CODE_HANDLE_SEND_QUEUE 0x1C +#define LINK_KEY_CODE_UNK_7 0x1D +#define LINK_KEY_CODE_UNK_8 0x1E + +#define MOVEMENT_MODE_FREE 0 +#define MOVEMENT_MODE_FROZEN 1 +#define MOVEMENT_MODE_SCRIPTED 2 + struct InitialPlayerAvatarState { u8 transitionFlags; @@ -24,7 +35,7 @@ struct LinkPlayerEventObject u8 active; u8 linkPlayerId; u8 eventObjId; - u8 mode; + u8 movementMode; }; // Exported RAM declarations @@ -120,7 +131,7 @@ void CB1_Overworld(void); void CB2_OverworldBasic(void); void CB2_Overworld(void); void SetMainCallback1(void (*cb)(void)); -void sub_8085E94(void *a0); +void SetUnusedCallback(void *a0); void CB2_NewGame(void); void CB2_WhiteOut(void); void CB2_LoadMap(void); @@ -140,7 +151,7 @@ u32 sub_8087214(void); bool32 sub_808727C(void); u16 sub_8087288(void); u16 sub_808729C(void); -u16 sub_80872B0(void); +u16 QueueExitLinkRoomKey(void); u16 sub_80872C4(void); bool32 sub_8087598(void); bool32 sub_80875C8(void); diff --git a/include/party_menu.h b/include/party_menu.h index 702b4fde1..e67dd56f2 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -85,7 +85,7 @@ u8 GetItemEffectType(u16 item); void CB2_PartyMenuFromStartMenu(void); void sub_81B7F60(void); void sub_81B8448(void); -void sub_81B8518(u8 unused); +void InitChooseHalfPartyForBattle(u8 unused); void sub_81B8558(void); void sub_81B8904(u8 initArg, MainCallback callback); void sub_81B892C(void); diff --git a/include/record_mixing.h b/include/record_mixing.h index 0d50f46f9..d02b77f9c 100644 --- a/include/record_mixing.h +++ b/include/record_mixing.h @@ -7,7 +7,7 @@ struct PlayerHallRecords struct RankingHall2P twoPlayers[2]; }; -void sub_80E6BE8(void); +void EventScript_RecordMixingPlayerSpotTriggered(void); void GetPlayerHallRecords(struct PlayerHallRecords *dst); #endif //GUARD_RECORD_MIXING_H diff --git a/include/save.h b/include/save.h index 42ce8b3f3..de2dd5129 100644 --- a/include/save.h +++ b/include/save.h @@ -83,13 +83,11 @@ bool8 sub_8153380(void); bool8 sub_81533AC(void); u8 sub_81533E0(void); u8 sub_8153408(void); -u8 sub_8153430(void); -bool8 sub_8153474(void); +u8 FullSaveGame(void); //FullSaveGame +bool8 CheckSaveFile(void); //CheckSaveFile u8 Save_LoadGameData(u8 a1); u16 sub_815355C(void); u8 sub_81534D0(u8); -u8 sub_8153430(void); -bool8 sub_8153474(void); u32 TryCopySpecialSaveSection(u8 sector, u8* dst); u32 sub_8153634(u8 sector, u8* src); void sub_8153688(u8 taskId); -- cgit v1.2.3 From 08579edbcd596c9659fe25490480c6f96e2b4288 Mon Sep 17 00:00:00 2001 From: Phlosioneer Date: Mon, 18 Feb 2019 01:03:44 -0500 Subject: Clean up mistakes and bad formatting --- include/global.h | 2 +- include/overworld.h | 2 +- include/record_mixing.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'include') diff --git a/include/global.h b/include/global.h index 6843b4216..1b0b0afa3 100644 --- a/include/global.h +++ b/include/global.h @@ -910,7 +910,7 @@ struct MapPosition struct TradeRoomPlayer { u8 playerId; - u8 isSelf; + u8 isLocalPlayer; u8 c; u8 facing; struct MapPosition pos; diff --git a/include/overworld.h b/include/overworld.h index 9434d5c28..ea361e25b 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -48,7 +48,7 @@ extern u16 *gBGTilemapBuffers3; extern u16 gHeldKeyCodeToSend; extern void (*gFieldCallback)(void); extern bool8 (*gFieldCallback2)(void); -extern u8 gLinkSelfPlayerId; +extern u8 LocalLinkPlayerId; extern u8 gFieldLinkPlayerCount; // Exported ROM declarations diff --git a/include/record_mixing.h b/include/record_mixing.h index d02b77f9c..4cd231e8a 100644 --- a/include/record_mixing.h +++ b/include/record_mixing.h @@ -7,7 +7,7 @@ struct PlayerHallRecords struct RankingHall2P twoPlayers[2]; }; -void EventScript_RecordMixingPlayerSpotTriggered(void); +void RecordMixingPlayerSpotTriggered(void); void GetPlayerHallRecords(struct PlayerHallRecords *dst); #endif //GUARD_RECORD_MIXING_H -- cgit v1.2.3 From accea672f16cb74b0ec16e0e740cf9f67a651dfb Mon Sep 17 00:00:00 2001 From: Phlosioneer Date: Tue, 26 Feb 2019 22:04:44 -0500 Subject: Incorporate feedback --- include/link.h | 2 +- include/overworld.h | 2 +- include/save.h | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) (limited to 'include') diff --git a/include/link.h b/include/link.h index 83deab88f..182ee68f4 100644 --- a/include/link.h +++ b/include/link.h @@ -299,7 +299,7 @@ extern struct LinkPlayer gLocalLinkPlayer; bool32 Link_AnyPartnersPlayingRubyOrSapphire(void); bool32 sub_800A03C(void); -void SetLocalLinkPlayerId(u8); +void SetgLocalLinkPlayerId(u8); u8 GetSavedPlayerCount(void); void sub_8009FAC(void); bool8 sub_800A4D8(u8 a0); diff --git a/include/overworld.h b/include/overworld.h index ea361e25b..bf1d93901 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -48,7 +48,7 @@ extern u16 *gBGTilemapBuffers3; extern u16 gHeldKeyCodeToSend; extern void (*gFieldCallback)(void); extern bool8 (*gFieldCallback2)(void); -extern u8 LocalLinkPlayerId; +extern u8 gLocalLinkPlayerId; extern u8 gFieldLinkPlayerCount; // Exported ROM declarations diff --git a/include/save.h b/include/save.h index de2dd5129..7ce86de70 100644 --- a/include/save.h +++ b/include/save.h @@ -83,8 +83,8 @@ bool8 sub_8153380(void); bool8 sub_81533AC(void); u8 sub_81533E0(void); u8 sub_8153408(void); -u8 FullSaveGame(void); //FullSaveGame -bool8 CheckSaveFile(void); //CheckSaveFile +u8 FullSaveGame(void); +bool8 CheckSaveFile(void); u8 Save_LoadGameData(u8 a1); u16 sub_815355C(void); u8 sub_81534D0(u8); -- cgit v1.2.3 From 459fd93b59795c0c9c888584d38e82577e07c056 Mon Sep 17 00:00:00 2001 From: Phlosioneer Date: Fri, 1 Mar 2019 01:18:58 -0500 Subject: Fix minor errors --- include/link.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/link.h b/include/link.h index 182ee68f4..83deab88f 100644 --- a/include/link.h +++ b/include/link.h @@ -299,7 +299,7 @@ extern struct LinkPlayer gLocalLinkPlayer; bool32 Link_AnyPartnersPlayingRubyOrSapphire(void); bool32 sub_800A03C(void); -void SetgLocalLinkPlayerId(u8); +void SetLocalLinkPlayerId(u8); u8 GetSavedPlayerCount(void); void sub_8009FAC(void); bool8 sub_800A4D8(u8 a0); -- cgit v1.2.3