Sync cable club

This commit is contained in:
GriffinR
2022-08-25 15:03:04 -04:00
parent feccd302d7
commit 321f5371d8
24 changed files with 535 additions and 462 deletions
+38 -38
View File
@@ -275,12 +275,12 @@ CableClub_EventScript_TryEnterColosseum::
special TryBattleLinkup special TryBattleLinkup
waitstate waitstate
call EventScript_RestorePrevTextColor call EventScript_RestorePrevTextColor
goto_if_eq VAR_RESULT, 1, CableClub_EventScript_EnterColosseum goto_if_eq VAR_RESULT, LINKUP_SUCCESS, CableClub_EventScript_EnterColosseum
goto_if_eq VAR_RESULT, 2, CableClub_EventScript_AbortLinkSomeoneNotReady goto_if_eq VAR_RESULT, LINKUP_SOMEONE_NOT_READY, CableClub_EventScript_AbortLinkSomeoneNotReady
goto_if_eq VAR_RESULT, 3, CableClub_EventScript_AbortLinkDifferentSelections goto_if_eq VAR_RESULT, LINKUP_DIFF_SELECTIONS, CableClub_EventScript_AbortLinkDifferentSelections
goto_if_eq VAR_RESULT, 4, CableClub_EventScript_AbortLinkIncorrectNumberOfBattlers goto_if_eq VAR_RESULT, LINKUP_WRONG_NUM_PLAYERS, CableClub_EventScript_AbortLinkIncorrectNumberOfBattlers
goto_if_eq VAR_RESULT, 5, CableClub_EventScript_AbortLink goto_if_eq VAR_RESULT, LINKUP_FAILED, CableClub_EventScript_AbortLink
goto_if_eq VAR_RESULT, 6, CableClub_EventScript_AbortLinkConnectionError goto_if_eq VAR_RESULT, LINKUP_CONNECTION_ERROR, CableClub_EventScript_AbortLinkConnectionError
end end
CableClub_EventScript_EnterColosseum:: CableClub_EventScript_EnterColosseum::
@@ -373,14 +373,14 @@ CableClub_EventScript_TradeCenter::
special TryTradeLinkup special TryTradeLinkup
waitstate waitstate
call EventScript_RestorePrevTextColor call EventScript_RestorePrevTextColor
goto_if_eq VAR_RESULT, 1, CableClub_EventScript_EnterTradeCenter goto_if_eq VAR_RESULT, LINKUP_SUCCESS, CableClub_EventScript_EnterTradeCenter
goto_if_eq VAR_RESULT, 2, CableClub_EventScript_AbortLinkSomeoneNotReady goto_if_eq VAR_RESULT, LINKUP_SOMEONE_NOT_READY, CableClub_EventScript_AbortLinkSomeoneNotReady
goto_if_eq VAR_RESULT, 3, CableClub_EventScript_AbortLinkDifferentSelections goto_if_eq VAR_RESULT, LINKUP_DIFF_SELECTIONS, CableClub_EventScript_AbortLinkDifferentSelections
goto_if_eq VAR_RESULT, 4, CableClub_EventScript_AbortLinkIncorrectNumberOfParticipants goto_if_eq VAR_RESULT, LINKUP_WRONG_NUM_PLAYERS, CableClub_EventScript_AbortLinkIncorrectNumberOfParticipants
goto_if_eq VAR_RESULT, 5, CableClub_EventScript_AbortLink goto_if_eq VAR_RESULT, LINKUP_FAILED, CableClub_EventScript_AbortLink
goto_if_eq VAR_RESULT, 6, CableClub_EventScript_AbortLinkConnectionError goto_if_eq VAR_RESULT, LINKUP_CONNECTION_ERROR, CableClub_EventScript_AbortLinkConnectionError
goto_if_eq VAR_RESULT, 7, CableClub_EventScript_AbortLinkPlayerNotReady goto_if_eq VAR_RESULT, LINKUP_PLAYER_NOT_READY, CableClub_EventScript_AbortLinkPlayerNotReady
goto_if_eq VAR_RESULT, 9, CableClub_EventScript_AbortLinkOtherTrainerNotReady goto_if_eq VAR_RESULT, LINKUP_PARTNER_NOT_READY, CableClub_EventScript_AbortLinkOtherTrainerNotReady
end end
CableClub_EventScript_EnterTradeCenter:: CableClub_EventScript_EnterTradeCenter::
@@ -963,17 +963,17 @@ CableClub_EventScript_ChooseLinkLeaderFrom2::
CableClub_EventScript_TryLeadGroup2Players:: CableClub_EventScript_TryLeadGroup2Players::
call CableClub_EventScript_TryBecomeLinkLeader call CableClub_EventScript_TryBecomeLinkLeader
goto_if_eq VAR_RESULT, 1, CableClub_EventScript_EnterWirelessLinkRoom goto_if_eq VAR_RESULT, LINKUP_SUCCESS, CableClub_EventScript_EnterWirelessLinkRoom
goto_if_eq VAR_RESULT, 5, CableClub_EventScript_ChooseLinkLeaderFrom2 goto_if_eq VAR_RESULT, LINKUP_FAILED, CableClub_EventScript_ChooseLinkLeaderFrom2
goto_if_eq VAR_RESULT, 8, CableClub_EventScript_TryLeadGroup2Players goto_if_eq VAR_RESULT, LINKUP_RETRY_ROLE_ASSIGN, CableClub_EventScript_TryLeadGroup2Players
release release
return return
CableClub_EventScript_TryJoinGroup2Players:: CableClub_EventScript_TryJoinGroup2Players::
call CableClub_EventScript_TryJoinLinkGroup call CableClub_EventScript_TryJoinLinkGroup
goto_if_eq VAR_RESULT, 1, CableClub_EventScript_EnterWirelessLinkRoom goto_if_eq VAR_RESULT, LINKUP_SUCCESS, CableClub_EventScript_EnterWirelessLinkRoom
goto_if_eq VAR_RESULT, 5, CableClub_EventScript_ChooseLinkLeaderFrom2 goto_if_eq VAR_RESULT, LINKUP_FAILED, CableClub_EventScript_ChooseLinkLeaderFrom2
goto_if_eq VAR_RESULT, 8, CableClub_EventScript_TryJoinGroup2Players goto_if_eq VAR_RESULT, LINKUP_RETRY_ROLE_ASSIGN, CableClub_EventScript_TryJoinGroup2Players
release release
return return
@@ -992,17 +992,17 @@ CableClub_EventScript_ChooseLinkLeaderFrom4::
CableClub_EventScript_TryLeadGroup4Players:: CableClub_EventScript_TryLeadGroup4Players::
call CableClub_EventScript_TryBecomeLinkLeader call CableClub_EventScript_TryBecomeLinkLeader
goto_if_eq VAR_RESULT, 1, CableClub_EventScript_EnterWirelessLinkRoom goto_if_eq VAR_RESULT, LINKUP_SUCCESS, CableClub_EventScript_EnterWirelessLinkRoom
goto_if_eq VAR_RESULT, 5, CableClub_EventScript_ChooseLinkLeaderFrom4 goto_if_eq VAR_RESULT, LINKUP_FAILED, CableClub_EventScript_ChooseLinkLeaderFrom4
goto_if_eq VAR_RESULT, 8, CableClub_EventScript_TryLeadGroup4Players goto_if_eq VAR_RESULT, LINKUP_RETRY_ROLE_ASSIGN, CableClub_EventScript_TryLeadGroup4Players
release release
return return
CableClub_EventScript_TryJoinGroup4Players:: CableClub_EventScript_TryJoinGroup4Players::
call CableClub_EventScript_TryJoinLinkGroup call CableClub_EventScript_TryJoinLinkGroup
goto_if_eq VAR_RESULT, 1, CableClub_EventScript_EnterWirelessLinkRoom goto_if_eq VAR_RESULT, LINKUP_SUCCESS, CableClub_EventScript_EnterWirelessLinkRoom
goto_if_eq VAR_RESULT, 5, CableClub_EventScript_ChooseLinkLeaderFrom4 goto_if_eq VAR_RESULT, LINKUP_FAILED, CableClub_EventScript_ChooseLinkLeaderFrom4
goto_if_eq VAR_RESULT, 8, CableClub_EventScript_TryJoinGroup4Players goto_if_eq VAR_RESULT, LINKUP_RETRY_ROLE_ASSIGN, CableClub_EventScript_TryJoinGroup4Players
release release
return return
@@ -1021,17 +1021,17 @@ CableClub_EventScript_ChooseLinkLeader::
CableClub_EventScript_TryLeadGroupXPlayers:: CableClub_EventScript_TryLeadGroupXPlayers::
call CableClub_EventScript_TryBecomeLinkLeader call CableClub_EventScript_TryBecomeLinkLeader
goto_if_eq VAR_RESULT, 1, CableClub_EventScript_EnterWirelessLinkRoom goto_if_eq VAR_RESULT, LINKUP_SUCCESS, CableClub_EventScript_EnterWirelessLinkRoom
goto_if_eq VAR_RESULT, 5, CableClub_EventScript_ChooseLinkLeader goto_if_eq VAR_RESULT, LINKUP_FAILED, CableClub_EventScript_ChooseLinkLeader
goto_if_eq VAR_RESULT, 8, CableClub_EventScript_TryLeadGroupXPlayers goto_if_eq VAR_RESULT, LINKUP_RETRY_ROLE_ASSIGN, CableClub_EventScript_TryLeadGroupXPlayers
release release
return return
CableClub_EventScript_TryJoinGroupXPlayers:: CableClub_EventScript_TryJoinGroupXPlayers::
call CableClub_EventScript_TryJoinLinkGroup call CableClub_EventScript_TryJoinLinkGroup
goto_if_eq VAR_RESULT, 1, CableClub_EventScript_EnterWirelessLinkRoom goto_if_eq VAR_RESULT, LINKUP_SUCCESS, CableClub_EventScript_EnterWirelessLinkRoom
goto_if_eq VAR_RESULT, 5, CableClub_EventScript_ChooseLinkLeader goto_if_eq VAR_RESULT, LINKUP_FAILED, CableClub_EventScript_ChooseLinkLeader
goto_if_eq VAR_RESULT, 8, CableClub_EventScript_TryJoinGroupXPlayers goto_if_eq VAR_RESULT, LINKUP_RETRY_ROLE_ASSIGN, CableClub_EventScript_TryJoinGroupXPlayers
release release
return return
@@ -1217,17 +1217,17 @@ CableClub_EventScript_ChooseLinkLeaderMinigame::
CableClub_EventScript_TryBecomeMinigameLinkLeader:: CableClub_EventScript_TryBecomeMinigameLinkLeader::
call CableClub_EventScript_TryBecomeLinkLeader call CableClub_EventScript_TryBecomeLinkLeader
goto_if_eq VAR_RESULT, 1, CableClub_EventScript_EnterMinigame goto_if_eq VAR_RESULT, LINKUP_SUCCESS, CableClub_EventScript_EnterMinigame
goto_if_eq VAR_RESULT, 5, CableClub_EventScript_ChooseLinkLeaderMinigame goto_if_eq VAR_RESULT, LINKUP_FAILED, CableClub_EventScript_ChooseLinkLeaderMinigame
goto_if_eq VAR_RESULT, 8, CableClub_EventScript_TryBecomeMinigameLinkLeader goto_if_eq VAR_RESULT, LINKUP_RETRY_ROLE_ASSIGN, CableClub_EventScript_TryBecomeMinigameLinkLeader
release release
return return
CableClub_EventScript_TryJoinMinigameLinkGroup:: CableClub_EventScript_TryJoinMinigameLinkGroup::
call CableClub_EventScript_TryJoinLinkGroup call CableClub_EventScript_TryJoinLinkGroup
goto_if_eq VAR_RESULT, 1, CableClub_EventScript_EnterMinigame goto_if_eq VAR_RESULT, LINKUP_SUCCESS, CableClub_EventScript_EnterMinigame
goto_if_eq VAR_RESULT, 5, CableClub_EventScript_ChooseLinkLeaderMinigame goto_if_eq VAR_RESULT, LINKUP_FAILED, CableClub_EventScript_ChooseLinkLeaderMinigame
goto_if_eq VAR_RESULT, 8, CableClub_EventScript_TryJoinMinigameLinkGroup goto_if_eq VAR_RESULT, LINKUP_RETRY_ROLE_ASSIGN, CableClub_EventScript_TryJoinMinigameLinkGroup
release release
return return
+1 -1
View File
@@ -2,6 +2,6 @@
#define GUARD_BATTLE_RECORDS_H #define GUARD_BATTLE_RECORDS_H
void ClearPlayerLinkBattleRecords(void); void ClearPlayerLinkBattleRecords(void);
void TryRecordLinkBattleOutcome(s32 battlerId); void UpdatePlayerLinkBattleRecords(s32 battlerId);
#endif // GUARD_BATTLE_RECORDS_H #endif // GUARD_BATTLE_RECORDS_H
+2 -9
View File
@@ -1,15 +1,8 @@
#ifndef GUARD_CABLE_CLUB_H #ifndef GUARD_CABLE_CLUB_H
#define GUARD_CABLE_CLUB_H #define GUARD_CABLE_CLUB_H
#include "task.h" void Task_WaitForLinkPlayerConnection(u8 taskId);
u8 CreateTask_ReestablishCableClubLink(void);
// Exported type declarations
// Exported RAM declarations
// Exported ROM declarations
void Task_WaitForReceivedRemoteLinkPlayers5SecondTimeout(u8 taskId);
u8 CreateTask_ReestablishLinkInCableClubRoom(void);
void CB2_ReturnFromCableClubBattle(void); void CB2_ReturnFromCableClubBattle(void);
bool32 GetSeeingLinkPlayerCardMsg(u8 who); bool32 GetSeeingLinkPlayerCardMsg(u8 who);
+17
View File
@@ -12,4 +12,21 @@
#define USING_MINIGAME 8 #define USING_MINIGAME 8
#define USING_BATTLE_TOWER 9 #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
#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_RETRY_ROLE_ASSIGN 8
#define LINKUP_PARTNER_NOT_READY 9
#define CABLE_SEAT_WAITING 0
#define CABLE_SEAT_SUCCESS 1
#define CABLE_SEAT_FAILED 2
#endif //GUARD_CONSTANTS_CABLE_CLUB_H #endif //GUARD_CONSTANTS_CABLE_CLUB_H
+2
View File
@@ -12,6 +12,8 @@
#define MAP(map) MAP_GROUP(map), MAP_NUM(map) #define MAP(map) MAP_GROUP(map), MAP_NUM(map)
#define WARP_ID_DYNAMIC 0x7F
// Used to indicate an invalid warp id, for dummy warps or when a warp should // Used to indicate an invalid warp id, for dummy warps or when a warp should
// use the given coordinates rather than the coordinates of a target warp. // use the given coordinates rather than the coordinates of a target warp.
#define WARP_ID_NONE (-1) #define WARP_ID_NONE (-1)
+7
View File
@@ -3,6 +3,13 @@
#include "global.h" #include "global.h"
enum {
FIELD_MESSAGE_BOX_HIDDEN,
FIELD_MESSAGE_BOX_UNUSED,
FIELD_MESSAGE_BOX_NORMAL,
FIELD_MESSAGE_BOX_AUTO_SCROLL,
};
bool8 ShowFieldMessage(const u8 *message); bool8 ShowFieldMessage(const u8 *message);
bool8 ShowFieldAutoScrollMessage(const u8 *message); bool8 ShowFieldAutoScrollMessage(const u8 *message);
void HideFieldMessageBox(void); void HideFieldMessageBox(void);
+21 -14
View File
@@ -68,7 +68,7 @@
#define LINKTYPE_TRADE 0x1111 // trade #define LINKTYPE_TRADE 0x1111 // trade
#define LINKTYPE_0x1122 0x1122 // trade #define LINKTYPE_0x1122 0x1122 // trade
#define LINKTYPE_0x1133 0x1133 // trade #define LINKTYPE_TRADE_SETUP 0x1133
#define LINKTYPE_0x1144 0x1144 // trade #define LINKTYPE_0x1144 0x1144 // trade
#define LINKTYPE_BATTLE 0x2211 #define LINKTYPE_BATTLE 0x2211
#define LINKTYPE_0x2222 0x2222 // unused battle? #define LINKTYPE_0x2222 0x2222 // unused battle?
@@ -78,11 +78,19 @@
#define LINKTYPE_BATTLE_TOWER_50 0x2266 #define LINKTYPE_BATTLE_TOWER_50 0x2266
#define LINKTYPE_BATTLE_TOWER_OPEN 0x2277 #define LINKTYPE_BATTLE_TOWER_OPEN 0x2277
#define LINKTYPE_BATTLE_TOWER 0x2288 #define LINKTYPE_BATTLE_TOWER 0x2288
#define LINKTYPE_0x3311 0x3311 #define LINKTYPE_RECORD_MIX_BEFORE 0x3311
#define LINKTYPE_0x3322 0x3322 #define LINKTYPE_RECORD_MIX_AFTER 0x3322
#define LINKTYPE_BERRY_BLENDER_SETUP 0x4411 #define LINKTYPE_BERRY_BLENDER_SETUP 0x4411
#define LINKTYPE_CONTEST_GMODE 0x6601 #define LINKTYPE_CONTEST_GMODE 0x6601
enum {
BLOCK_REQ_SIZE_NONE, // Identical to 200
BLOCK_REQ_SIZE_200,
BLOCK_REQ_SIZE_100,
BLOCK_REQ_SIZE_220,
BLOCK_REQ_SIZE_40,
};
#define MASTER_HANDSHAKE 0x8FFF #define MASTER_HANDSHAKE 0x8FFF
#define SLAVE_HANDSHAKE 0xB9A0 #define SLAVE_HANDSHAKE 0xB9A0
@@ -102,11 +110,10 @@ enum
EXCHANGE_NOT_STARTED, EXCHANGE_NOT_STARTED,
EXCHANGE_COMPLETE, EXCHANGE_COMPLETE,
EXCHANGE_TIMED_OUT, EXCHANGE_TIMED_OUT,
EXCHANGE_IN_PROGRESS, EXCHANGE_DIFF_SELECTIONS,
EXCHANGE_STAT_4, EXCHANGE_PLAYER_NOT_READY,
EXCHANGE_STAT_5, EXCHANGE_PARTNER_NOT_READY,
EXCHANGE_STAT_6, EXCHANGE_WRONG_NUM_PLAYERS,
EXCHANGE_STAT_7
}; };
enum enum
@@ -269,17 +276,17 @@ void ClearLinkCallback_2(void);
void Rfu_SetLinkStandbyCallback(void); void Rfu_SetLinkStandbyCallback(void);
void ConvertLinkPlayerName(struct LinkPlayer * linkPlayer); void ConvertLinkPlayerName(struct LinkPlayer * linkPlayer);
bool8 IsWirelessAdapterConnected(void); bool8 IsWirelessAdapterConnected(void);
bool8 Link_PrepareCmd0xCCCC_Rfu0xA100(u8 blockRequestType); bool8 SendBlockRequest(u8 blockRequestType);
void LinkVSync(void); void LinkVSync(void);
bool8 HandleLinkConnection(void); bool8 HandleLinkConnection(void);
void LocalLinkPlayerToBlock(void); void LocalLinkPlayerToBlock(void);
void LinkPlayerFromBlock(u32 who); void LinkPlayerFromBlock(u32 who);
void SetLinkErrorFromRfu(u32 status, u8 lastSendQueueCount, u8 lastRecvQueueCount, u8 isConnectionError); void SetLinkErrorFromRfu(u32 status, u8 lastSendQueueCount, u8 lastRecvQueueCount, u8 isConnectionError);
u8 sub_800A8D4(void); u8 GetLinkPlayerCountAsBitFlags(void);
void sub_800AA24(void); void ResetLinkPlayerCount(void);
void sub_800A900(u8 a0); void SaveLinkPlayers(u8 numPlayers);
u8 sub_800A8A4(void); u8 GetSavedLinkPlayerCountAsBitFlags(void);
void sub_800A9A4(void); void CheckLinkPlayersMatchSaved(void);
void SetLocalLinkPlayerId(u8 playerId); void SetLocalLinkPlayerId(u8 playerId);
bool32 IsSendingKeysToLink(void); bool32 IsSendingKeysToLink(void);
u32 GetLinkRecvQueueLength(void); u32 GetLinkRecvQueueLength(void);
+7 -1
View File
@@ -3,6 +3,12 @@
#include "global.h" #include "global.h"
#define CARD_STAT_BATTLES_WON 0
#define CARD_STAT_BATTLES_LOST 1
#define CARD_STAT_NUM_TRADES 2
#define CARD_STAT_NUM_STAMPS 3
#define CARD_STAT_MAX_STAMPS 4
struct MEventClientHeaderStruct struct MEventClientHeaderStruct
{ {
u32 unk_00; u32 unk_00;
@@ -85,7 +91,7 @@ bool32 WonderCard_Test_Unk_08_6(void);
u32 MENews_GetInput(u16 input); u32 MENews_GetInput(u16 input);
void InitMEventData(void); void InitMEventData(void);
u16 MEvent_GetBattleCardCount(u32 command); u16 MEvent_GetBattleCardCount(u32 command);
void MEvent_RecordIdOfWonderCardSenderByEventType(u32 eventId, u32 trainerId); void MysteryGift_TryIncrementStat(u32 eventId, u32 trainerId);
u16 *GetMEventProfileECWordsMaybe(void); u16 *GetMEventProfileECWordsMaybe(void);
void ResetReceivedWonderCardFlag(void); void ResetReceivedWonderCardFlag(void);
bool32 MEventHandleReceivedWonderCard(u16 flagId); bool32 MEventHandleReceivedWonderCard(u16 flagId);
+1 -1
View File
@@ -31,7 +31,7 @@ void DrawDialogueFrame(u8 windowId, bool8 transfer);
void DrawStdWindowFrame(u8 windowId, bool8 copyNow); void DrawStdWindowFrame(u8 windowId, bool8 copyNow);
void ClearDialogWindowAndFrame(u8 windowId, bool8 copyToVram); void ClearDialogWindowAndFrame(u8 windowId, bool8 copyToVram);
void ClearStdWindowAndFrame(u8 windowId, bool8 copyNow); void ClearStdWindowAndFrame(u8 windowId, bool8 copyNow);
void sub_80F771C(bool8 copyToVram); void EraseFieldMessageBox(bool8 copyToVram);
void SetStdWindowBorderStyle(u8 windowId, bool8 copyToVram); void SetStdWindowBorderStyle(u8 windowId, bool8 copyToVram);
void sub_80F7768(u8 windowId, bool8 copyToVram); void sub_80F7768(u8 windowId, bool8 copyToVram);
void Menu_LoadStdPal(void); void Menu_LoadStdPal(void);
+5 -5
View File
@@ -1174,11 +1174,11 @@ extern const u8 gText_ExcellentsInARow[];
extern const u8 gText_PkmnJumpRecords[]; extern const u8 gText_PkmnJumpRecords[];
// cable_club // cable_club
extern const u8 gUnknown_841DF82[]; extern const u8 gText_NumPlayerLink[];
extern const u8 gUnknown_841DF8B[]; extern const u8 gText_BronzeCard[];
extern const u8 gUnknown_841DF92[]; extern const u8 gText_CopperCard[];
extern const u8 gUnknown_841DF99[]; extern const u8 gText_SilverCard[];
extern const u8 gUnknown_841DFA0[]; extern const u8 gText_GoldCard[];
// berry_crush // berry_crush
extern const u8 gText_BerryCrush_AreYouReady[]; extern const u8 gText_BerryCrush_AreYouReady[];
+1 -1
View File
@@ -36,7 +36,7 @@ void HandleLinkBattleSetup(void)
SetWirelessCommType1(); SetWirelessCommType1();
if (!gReceivedRemoteLinkPlayers) if (!gReceivedRemoteLinkPlayers)
OpenLink(); OpenLink();
CreateTask(Task_WaitForReceivedRemoteLinkPlayers5SecondTimeout, 0); CreateTask(Task_WaitForLinkPlayerConnection, 0);
CreateTasksForSendRecvLinkBuffers(); CreateTasksForSendRecvLinkBuffers();
} }
} }
+1 -1
View File
@@ -440,7 +440,7 @@ static void UpdateBattleOutcomeOnTrainerCards(s32 battlerId)
} }
} }
void TryRecordLinkBattleOutcome(s32 battlerId) void UpdatePlayerLinkBattleRecords(s32 battlerId)
{ {
if (gSaveBlock1Ptr->location.mapGroup != MAP_GROUP(UNION_ROOM) || gSaveBlock1Ptr->location.mapNum != MAP_NUM(UNION_ROOM)) if (gSaveBlock1Ptr->location.mapGroup != MAP_GROUP(UNION_ROOM) || gSaveBlock1Ptr->location.mapNum != MAP_NUM(UNION_ROOM))
{ {
+384 -325
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -173,7 +173,7 @@ static void Task_ReturnToFieldCableLink(u8 taskId)
switch (task->data[0]) switch (task->data[0])
{ {
case 0: case 0:
task->data[1] = CreateTask_ReestablishLinkInCableClubRoom(); task->data[1] = CreateTask_ReestablishCableClubLink();
task->data[0]++; task->data[0]++;
break; break;
case 1: case 1:
+1 -8
View File
@@ -1,18 +1,11 @@
#include "global.h" #include "global.h"
#include "field_message_box.h"
#include "gflib.h" #include "gflib.h"
#include "new_menu_helpers.h" #include "new_menu_helpers.h"
#include "quest_log.h" #include "quest_log.h"
#include "script.h" #include "script.h"
#include "text_window.h" #include "text_window.h"
enum
{
FIELD_MESSAGE_BOX_HIDDEN,
FIELD_MESSAGE_BOX_UNUSED,
FIELD_MESSAGE_BOX_NORMAL,
FIELD_MESSAGE_BOX_AUTO_SCROLL,
};
static EWRAM_DATA u8 sMessageBoxType = 0; static EWRAM_DATA u8 sMessageBoxType = 0;
static void ExpandStringAndStartDrawFieldMessageBox(const u8 *str); static void ExpandStringAndStartDrawFieldMessageBox(const u8 *str);
+18 -18
View File
@@ -163,11 +163,11 @@ static const u16 sLinkTestFontPal[] = INCBIN_U16("graphics/interface/link_test_f
static const u16 sLinkTestFontGfx[] = INCBIN_U16("graphics/interface/link_test_font.4bpp"); static const u16 sLinkTestFontGfx[] = INCBIN_U16("graphics/interface/link_test_font.4bpp");
static const struct BlockRequest sBlockRequests[] = { static const struct BlockRequest sBlockRequests[] = {
{gBlockSendBuffer, 200}, [BLOCK_REQ_SIZE_NONE] = { gBlockSendBuffer, 200 },
{gBlockSendBuffer, 200}, [BLOCK_REQ_SIZE_200] = { gBlockSendBuffer, 200 },
{gBlockSendBuffer, 100}, [BLOCK_REQ_SIZE_100] = { gBlockSendBuffer, 100 },
{gBlockSendBuffer, 220}, [BLOCK_REQ_SIZE_220] = { gBlockSendBuffer, 220 },
{gBlockSendBuffer, 40} [BLOCK_REQ_SIZE_40] = { gBlockSendBuffer, 40 }
}; };
static const char sASCIIGameFreakInc[] = "GameFreak inc."; static const char sASCIIGameFreakInc[] = "GameFreak inc.";
static const char sASCIITestPrint[] = "TEST PRINT\n" static const char sASCIITestPrint[] = "TEST PRINT\n"
@@ -788,8 +788,8 @@ u8 GetLinkPlayerDataExchangeStatusTimed(int lower, int upper)
cmpVal = GetLinkPlayerCount_2(); cmpVal = GetLinkPlayerCount_2();
if (lower > cmpVal || cmpVal > upper) if (lower > cmpVal || cmpVal > upper)
{ {
sPlayerDataExchangeStatus = EXCHANGE_STAT_6; sPlayerDataExchangeStatus = EXCHANGE_WRONG_NUM_PLAYERS;
return EXCHANGE_STAT_6; return sPlayerDataExchangeStatus;
} }
else else
{ {
@@ -815,10 +815,10 @@ u8 GetLinkPlayerDataExchangeStatusTimed(int lower, int upper)
sPlayerDataExchangeStatus = EXCHANGE_COMPLETE; sPlayerDataExchangeStatus = EXCHANGE_COMPLETE;
break; break;
case 1: case 1:
sPlayerDataExchangeStatus = EXCHANGE_STAT_4; sPlayerDataExchangeStatus = EXCHANGE_PLAYER_NOT_READY;
break; break;
case 2: case 2:
sPlayerDataExchangeStatus = EXCHANGE_STAT_5; sPlayerDataExchangeStatus = EXCHANGE_PARTNER_NOT_READY;
break; break;
} }
} }
@@ -829,7 +829,7 @@ u8 GetLinkPlayerDataExchangeStatusTimed(int lower, int upper)
} }
else else
{ {
sPlayerDataExchangeStatus = EXCHANGE_IN_PROGRESS; sPlayerDataExchangeStatus = EXCHANGE_DIFF_SELECTIONS;
} }
} }
} }
@@ -862,7 +862,7 @@ bool8 IsLinkPlayerDataExchangeComplete(void)
else else
{ {
retval = FALSE; retval = FALSE;
sPlayerDataExchangeStatus = EXCHANGE_IN_PROGRESS; sPlayerDataExchangeStatus = EXCHANGE_DIFF_SELECTIONS;
} }
return retval; return retval;
} }
@@ -999,7 +999,7 @@ bool8 SendBlock(u8 unused, const void *src, u16 size)
return InitBlockSend(src, size); return InitBlockSend(src, size);
} }
bool8 Link_PrepareCmd0xCCCC_Rfu0xA100(u8 blockRequestType) bool8 SendBlockRequest(u8 blockRequestType)
{ {
if (gWirelessCommType == 1) if (gWirelessCommType == 1)
{ {
@@ -1195,7 +1195,7 @@ void SetLinkDebugValues(u32 seed, u32 flags)
gLinkDebugFlags = flags; gLinkDebugFlags = flags;
} }
u8 sub_800A8A4(void) u8 GetSavedLinkPlayerCountAsBitFlags(void)
{ {
int i; int i;
u8 flags; u8 flags;
@@ -1208,7 +1208,7 @@ u8 sub_800A8A4(void)
return flags; return flags;
} }
u8 sub_800A8D4(void) u8 GetLinkPlayerCountAsBitFlags(void)
{ {
int i; int i;
u8 flags; u8 flags;
@@ -1221,11 +1221,11 @@ u8 sub_800A8D4(void)
return flags; return flags;
} }
void sub_800A900(u8 a0) void SaveLinkPlayers(u8 numPlayers)
{ {
int i; int i;
gSavedLinkPlayerCount = a0; gSavedLinkPlayerCount = numPlayers;
gSavedMultiplayerId = GetMultiplayerId(); gSavedMultiplayerId = GetMultiplayerId();
for (i = 0; i < MAX_RFU_PLAYERS; i++) for (i = 0; i < MAX_RFU_PLAYERS; i++)
{ {
@@ -1265,7 +1265,7 @@ bool8 sub_800A95C(void)
return FALSE; return FALSE;
} }
void sub_800A9A4(void) void CheckLinkPlayersMatchSaved(void)
{ {
u8 i; u8 i;
@@ -1280,7 +1280,7 @@ void sub_800A9A4(void)
} }
} }
void sub_800AA24(void) void ResetLinkPlayerCount(void)
{ {
gSavedLinkPlayerCount = 0; gSavedLinkPlayerCount = 0;
gSavedMultiplayerId = 0; gSavedMultiplayerId = 0;
+6 -6
View File
@@ -168,11 +168,11 @@ static const u8 sNumTrailingZeroes[] = {
}; };
static const struct BlockRequest sBlockRequests[] = { static const struct BlockRequest sBlockRequests[] = {
{ gBlockSendBuffer, 200 }, [BLOCK_REQ_SIZE_NONE] = { gBlockSendBuffer, 200 },
{ gBlockSendBuffer, 200 }, [BLOCK_REQ_SIZE_200] = { gBlockSendBuffer, 200 },
{ gBlockSendBuffer, 100 }, [BLOCK_REQ_SIZE_100] = { gBlockSendBuffer, 100 },
{ gBlockSendBuffer, 220 }, [BLOCK_REQ_SIZE_220] = { gBlockSendBuffer, 220 },
{ gBlockSendBuffer, 40 } [BLOCK_REQ_SIZE_40] = { gBlockSendBuffer, 40 }
}; };
static const u16 sAcceptedSerialNos[] = { static const u16 sAcceptedSerialNos[] = {
@@ -1709,7 +1709,7 @@ static void sub_80FA834(u8 taskId)
{ {
if (AreNoPlayersReceiving()) if (AreNoPlayersReceiving())
{ {
Rfu.cmdA100_blockRequestType = 0; Rfu.cmdA100_blockRequestType = BLOCK_REQ_SIZE_NONE;
RfuPrepareSendBuffer(RFUCMD_SEND_BLOCK_REQ); RfuPrepareSendBuffer(RFUCMD_SEND_BLOCK_REQ);
gTasks[taskId].data[0]++; gTasks[taskId].data[0]++;
} }
+1 -1
View File
@@ -961,7 +961,7 @@ bool32 MEventHandleReceivedWonderCard(u16 flagId)
return TRUE; return TRUE;
} }
void MEvent_RecordIdOfWonderCardSenderByEventType(u32 eventId, u32 trainerId) void MysteryGift_TryIncrementStat(u32 eventId, u32 trainerId)
{ {
if (sReceivedWonderCardIsValid) if (sReceivedWonderCardIsValid)
{ {
+1 -1
View File
@@ -592,7 +592,7 @@ static void WindowFunc_ClearDialogWindowAndFrame(u8 bg, u8 tilemapLeft, u8 tilem
FillBgTilemapBufferRect(bg, 0, tilemapLeft - 2, tilemapTop - 1, width + 4, height + 2, STD_WINDOW_PALETTE_NUM); FillBgTilemapBufferRect(bg, 0, tilemapLeft - 2, tilemapTop - 1, width + 4, height + 2, STD_WINDOW_PALETTE_NUM);
} }
void sub_80F771C(bool8 copyToVram) void EraseFieldMessageBox(bool8 copyToVram)
{ {
FillBgTilemapBufferRect(0, 0, 0, 0, 0x20, 0x20, 0x11); FillBgTilemapBufferRect(0, 0, 0, 0, 0x20, 0x20, 0x11);
if (copyToVram == TRUE) if (copyToVram == TRUE)
+6 -5
View File
@@ -47,6 +47,7 @@
#include "trainer_pokemon_sprites.h" #include "trainer_pokemon_sprites.h"
#include "vs_seeker.h" #include "vs_seeker.h"
#include "wild_encounter.h" #include "wild_encounter.h"
#include "constants/cable_club.h"
#include "constants/maps.h" #include "constants/maps.h"
#include "constants/region_map_sections.h" #include "constants/region_map_sections.h"
#include "constants/songs.h" #include "constants/songs.h"
@@ -2979,14 +2980,14 @@ static u16 KeyInterCB_SendNothing_2(u32 key)
u32 GetCableClubPartnersReady(void) u32 GetCableClubPartnersReady(void)
{ {
if (IsAnyPlayerInLinkState(PLAYER_LINK_STATE_EXITING_ROOM) == TRUE) if (IsAnyPlayerInLinkState(PLAYER_LINK_STATE_EXITING_ROOM) == TRUE)
return 2; return CABLE_SEAT_FAILED;
if (sPlayerKeyInterceptCallback == KeyInterCB_Ready && sPlayerLinkStates[gLocalLinkPlayerId] != PLAYER_LINK_STATE_READY) if (sPlayerKeyInterceptCallback == KeyInterCB_Ready && sPlayerLinkStates[gLocalLinkPlayerId] != PLAYER_LINK_STATE_READY)
return 0; return CABLE_SEAT_WAITING;
if (sPlayerKeyInterceptCallback == KeyInterCB_DoNothingAndKeepAlive && sPlayerLinkStates[gLocalLinkPlayerId] == PLAYER_LINK_STATE_BUSY) if (sPlayerKeyInterceptCallback == KeyInterCB_DoNothingAndKeepAlive && sPlayerLinkStates[gLocalLinkPlayerId] == PLAYER_LINK_STATE_BUSY)
return 2; return CABLE_SEAT_FAILED;
if (AreAllPlayersInLinkState(PLAYER_LINK_STATE_READY) != FALSE) if (AreAllPlayersInLinkState(PLAYER_LINK_STATE_READY) != FALSE)
return 1; return CABLE_SEAT_SUCCESS;
return 0; return CABLE_SEAT_WAITING;
} }
static bool32 IsAnyPlayerExitingCableClub(void) static bool32 IsAnyPlayerExitingCableClub(void)
+5 -5
View File
@@ -1168,11 +1168,11 @@ const u8 gText_CommErrorEllipsis[] = _("Communication error…");
const u8 gText_MoveCloserToLinkPartner[] = _("Move closer to your link partner(s).\nAvoid obstacles between partners."); const u8 gText_MoveCloserToLinkPartner[] = _("Move closer to your link partner(s).\nAvoid obstacles between partners.");
const u8 gText_ABtnRegistrationCounter[] = _("A Button: Registration Counter"); const u8 gText_ABtnRegistrationCounter[] = _("A Button: Registration Counter");
const u8 gText_ABtnTitleScreen[] = _("A Button: Title Screen"); const u8 gText_ABtnTitleScreen[] = _("A Button: Title Screen");
const u8 gUnknown_841DF82[] = _("{STR_VAR_1}P LINK"); const u8 gText_NumPlayerLink[] = _("{STR_VAR_1}P LINK");
const u8 gUnknown_841DF8B[] = _("BRONZE"); const u8 gText_BronzeCard[] = _("BRONZE");
const u8 gUnknown_841DF92[] = _("COPPER"); const u8 gText_CopperCard[] = _("COPPER");
const u8 gUnknown_841DF99[] = _("SILVER"); const u8 gText_SilverCard[] = _("SILVER");
const u8 gUnknown_841DFA0[] = _("GOLD"); const u8 gText_GoldCard[] = _("GOLD");
const u8 gText_HelpSystemControls_A_Next[] = _("{A_BUTTON}NEXT"); const u8 gText_HelpSystemControls_A_Next[] = _("{A_BUTTON}NEXT");
const u8 gText_HelpSystemControls_PickOkEnd[] = _("{DPAD_UPDOWN}PICK {A_BUTTON}OK {B_BUTTON}END"); const u8 gText_HelpSystemControls_PickOkEnd[] = _("{DPAD_UPDOWN}PICK {A_BUTTON}OK {B_BUTTON}END");
const u8 gText_HelpSystemControls_AorBtoCancel[] = _("{A_BUTTON}{B_BUTTON}CANCEL"); const u8 gText_HelpSystemControls_AorBtoCancel[] = _("{A_BUTTON}{B_BUTTON}CANCEL");
+6 -16
View File
@@ -767,7 +767,7 @@ static void CB2_ReturnFromLinkTrade2(void)
gMain.state++; gMain.state++;
} }
if (gWirelessCommType == 0) if (gWirelessCommType == 0)
CreateTask(Task_WaitForReceivedRemoteLinkPlayers5SecondTimeout, 1); CreateTask(Task_WaitForLinkPlayerConnection, 1);
} }
else else
{ {
@@ -1346,9 +1346,7 @@ static bool8 shedinja_maker_maybe(void)
break; break;
case 3: case 3:
if (id == 0) if (id == 0)
{ SendBlockRequest(BLOCK_REQ_SIZE_200);
Link_PrepareCmd0xCCCC_Rfu0xA100(1);
}
sTradeMenuResourcesPtr->state++; sTradeMenuResourcesPtr->state++;
break; break;
case 4: case 4:
@@ -1365,9 +1363,7 @@ static bool8 shedinja_maker_maybe(void)
break; break;
case 7: case 7:
if (id == 0) if (id == 0)
{ SendBlockRequest(BLOCK_REQ_SIZE_200);
Link_PrepareCmd0xCCCC_Rfu0xA100(1);
}
sTradeMenuResourcesPtr->state++; sTradeMenuResourcesPtr->state++;
break; break;
case 8: case 8:
@@ -1384,9 +1380,7 @@ static bool8 shedinja_maker_maybe(void)
break; break;
case 11: case 11:
if (id == 0) if (id == 0)
{ SendBlockRequest(BLOCK_REQ_SIZE_200);
Link_PrepareCmd0xCCCC_Rfu0xA100(1);
}
sTradeMenuResourcesPtr->state++; sTradeMenuResourcesPtr->state++;
break; break;
case 12: case 12:
@@ -1403,9 +1397,7 @@ static bool8 shedinja_maker_maybe(void)
break; break;
case 15: case 15:
if (id == 0) if (id == 0)
{ SendBlockRequest(BLOCK_REQ_SIZE_220);
Link_PrepareCmd0xCCCC_Rfu0xA100(3);
}
sTradeMenuResourcesPtr->state++; sTradeMenuResourcesPtr->state++;
break; break;
case 16: case 16:
@@ -1422,9 +1414,7 @@ static bool8 shedinja_maker_maybe(void)
break; break;
case 19: case 19:
if (id == 0) if (id == 0)
{ SendBlockRequest(BLOCK_REQ_SIZE_40);
Link_PrepareCmd0xCCCC_Rfu0xA100(4);
}
sTradeMenuResourcesPtr->state++; sTradeMenuResourcesPtr->state++;
break; break;
case 20: case 20:
+1 -3
View File
@@ -2583,9 +2583,7 @@ static void CB2_HandleTradeEnded(void)
IncrementGameStat(GAME_STAT_POKEMON_TRADES); IncrementGameStat(GAME_STAT_POKEMON_TRADES);
} }
if (gWirelessCommType) if (gWirelessCommType)
{ MysteryGift_TryIncrementStat(CARD_STAT_NUM_TRADES, gLinkPlayers[GetMultiplayerId() ^ 1].trainerId);
MEvent_RecordIdOfWonderCardSenderByEventType(2, gLinkPlayers[GetMultiplayerId() ^ 1].trainerId);
}
SetContinueGameWarpStatusToDynamicWarp(); SetContinueGameWarpStatusToDynamicWarp();
LinkFullSave_Init(); LinkFullSave_Init();
gMain.state++; gMain.state++;
+2 -2
View File
@@ -1794,11 +1794,11 @@ static void Task_ExchangeCards(u8 taskId)
{ {
case 0: case 0:
if (GetMultiplayerId() == 0) if (GetMultiplayerId() == 0)
Link_PrepareCmd0xCCCC_Rfu0xA100(2); SendBlockRequest(BLOCK_REQ_SIZE_100);
gTasks[taskId].data[0]++; gTasks[taskId].data[0]++;
break; break;
case 1: case 1:
if (GetBlockReceivedStatus() == sub_800A8D4()) if (GetBlockReceivedStatus() == GetLinkPlayerCountAsBitFlags())
{ {
s32 i; s32 i;
u16 *recvBuff; u16 *recvBuff;