Sync link.c

This commit is contained in:
GriffinR
2022-11-01 23:09:17 -04:00
parent 2abdb6aa41
commit d8aa1ce2bf
12 changed files with 369 additions and 504 deletions
+10 -10
View File
@@ -3,18 +3,18 @@ gLinkDebugSeed
gLocalLinkPlayerBlock gLocalLinkPlayerBlock
gLinkErrorOccurred gLinkErrorOccurred
gLinkDebugFlags gLinkDebugFlags
gFiller_3003EB4 gLinkFiller1
gRemoteLinkPlayersNotReceived gRemoteLinkPlayersNotReceived
gBlockReceivedStatus gBlockReceivedStatus
gFiller_3003EC0 gLinkFiller2
gLinkHeldKeys gLinkHeldKeys
gRecvCmds gRecvCmds
gLinkStatus gLinkStatus
gLinkAllAcked5FFF gLinkDummy1
gUnknown_3003F28 gLinkDummy2
gLinkCommand2FFEAck gReadyToExitStandby
gLinkCommand5FFFAck gReadyToCloseLink
gLinkCmd5FFFparam gReadyCloseLinkType
gSuppressLinkErrorMessage gSuppressLinkErrorMessage
gWirelessCommType gWirelessCommType
gSavedLinkPlayerCount gSavedLinkPlayerCount
@@ -26,9 +26,9 @@ gLinkCallback
gShouldAdvanceLinkState gShouldAdvanceLinkState
gLinkTestBlockChecksums gLinkTestBlockChecksums
gBlockRequestType gBlockRequestType
gFiller_3003F94 gLinkFiller3
gFiller_3003F98 gLinkFiller4
gFiller_3003F9C gLinkFiller5
gLastSendQueueCount gLastSendQueueCount
gLink gLink
gLastRecvQueueCount gLastRecvQueueCount

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Before

Width:  |  Height:  |  Size: 904 B

After

Width:  |  Height:  |  Size: 904 B

+39 -20
View File
@@ -7,6 +7,7 @@
#define MAX_RFU_PLAYERS 5 #define MAX_RFU_PLAYERS 5
#define CMD_LENGTH 8 #define CMD_LENGTH 8
#define QUEUE_CAPACITY 50 #define QUEUE_CAPACITY 50
#define OVERWORLD_RECV_QUEUE_MAX 3
#define BLOCK_BUFFER_SIZE 0x100 #define BLOCK_BUFFER_SIZE 0x100
#define LINK_SLAVE 0 #define LINK_SLAVE 0
@@ -50,23 +51,41 @@
#define EXTRACT_LINK_ERRORS(status) \ #define EXTRACT_LINK_ERRORS(status) \
(((status) & LINK_STAT_ERRORS) >> LINK_STAT_ERRORS_SHIFT) (((status) & LINK_STAT_ERRORS) >> LINK_STAT_ERRORS_SHIFT)
#define LINKCMD_SEND_LINK_TYPE 0x2222 #define LINKCMD_BLENDER_STOP 0x1111
#define LINKCMD_0x2FFE 0x2FFE #define LINKCMD_SEND_LINK_TYPE 0x2222
#define LINKCMD_SEND_HELD_KEYS 0x4444 #define LINKCMD_BLENDER_SCORE_MISS 0x2345
#define LINKCMD_0x5555 0x5555 #define LINKCMD_READY_EXIT_STANDBY 0x2FFE
#define LINKCMD_0x5566 0x5566 #define LINKCMD_SEND_PACKET 0x2FFF
#define LINKCMD_0x5FFF 0x5FFF #define LINKCMD_BLENDER_SEND_KEYS 0x4444
#define LINKCMD_0x6666 0x6666 #define LINKCMD_BLENDER_SCORE_BEST 0x4523
#define LINKCMD_0x7777 0x7777 #define LINKCMD_BLENDER_SCORE_GOOD 0x5432
#define LINKCMD_COUNTDOWN 0x7FFF #define LINKCMD_DUMMY_1 0x5555
#define LINKCMD_CONT_BLOCK 0x8888 #define LINKCMD_DUMMY_2 0x5566
#define LINKCMD_0xAAAA 0xAAAA #define LINKCMD_READY_CLOSE_LINK 0x5FFF
#define LINKCMD_0xAAAB 0xAAAB #define LINKCMD_SEND_EMPTY 0x6666
#define LINKCMD_INIT_BLOCK 0xBBBB #define LINKCMD_SEND_0xEE 0x7777
#define LINKCMD_SEND_HELD_KEYS_2 0xCAFE #define LINKCMD_BLENDER_PLAY_AGAIN 0x7779
#define LINKCMD_0xCCCC 0xCCCC #define LINKCMD_COUNTDOWN 0x7FFF
#define LINKCMD_CONT_BLOCK 0x8888
#define LINKCMD_BLENDER_NO_BERRIES 0x9999
#define LINKCMD_BLENDER_NO_PBLOCK_SPACE 0xAAAA
#define LINKCMD_SEND_ITEM 0xAAAB
#define LINKCMD_READY_TO_TRADE 0xAABB
#define LINKCMD_READY_FINISH_TRADE 0xABCD
#define LINKCMD_INIT_BLOCK 0xBBBB
#define LINKCMD_READY_CANCEL_TRADE 0xBBCC
#define LINKCMD_SEND_HELD_KEYS 0xCAFE
#define LINKCMD_SEND_BLOCK_REQ 0xCCCC
#define LINKCMD_START_TRADE 0xCCDD
#define LINKCMD_CONFIRM_FINISH_TRADE 0xDCBA
#define LINKCMD_SET_MONS_TO_TRADE 0xDDDD
#define LINKCMD_PLAYER_CANCEL_TRADE 0xDDEE
#define LINKCMD_REQUEST_CANCEL 0xEEAA
#define LINKCMD_BOTH_CANCEL_TRADE 0xEEBB
#define LINKCMD_PARTNER_CANCEL_TRADE 0xEECC
#define LINKCMD_NONE 0xEFFF
#define LINKTYPE_TRADE 0x1111 // trade #define LINKTYPE_TRADE 0x1111 // trade
#define LINKTYPE_0x1122 0x1122 // trade #define LINKTYPE_0x1122 0x1122 // trade
#define LINKTYPE_TRADE_SETUP 0x1133 #define LINKTYPE_TRADE_SETUP 0x1133
#define LINKTYPE_0x1144 0x1144 // trade #define LINKTYPE_0x1144 0x1144 // trade
@@ -80,8 +99,8 @@
#define LINKTYPE_BATTLE_TOWER 0x2288 #define LINKTYPE_BATTLE_TOWER 0x2288
#define LINKTYPE_RECORD_MIX_BEFORE 0x3311 #define LINKTYPE_RECORD_MIX_BEFORE 0x3311
#define LINKTYPE_RECORD_MIX_AFTER 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 { enum {
BLOCK_REQ_SIZE_NONE, // Identical to 200 BLOCK_REQ_SIZE_NONE, // Identical to 200
@@ -263,10 +282,10 @@ void SetCloseLinkCallback(void);
void OpenLink(void); void OpenLink(void);
bool8 IsLinkMaster(void); bool8 IsLinkMaster(void);
void CheckShouldAdvanceLinkState(void); void CheckShouldAdvanceLinkState(void);
void Link_StartSend5FFFwithParam(u16 a0); void SetCloseLinkCallbackAndType(u16 type);
void CloseLink(void); void CloseLink(void);
bool8 IsLinkTaskFinished(void); bool8 IsLinkTaskFinished(void);
bool32 LinkRecvQueueLengthMoreThan2(void); bool32 IsLinkRecvQueueAtOverworldMax(void);
void ResetSerial(void); void ResetSerial(void);
void SetWirelessCommType1(void); void SetWirelessCommType1(void);
void LoadWirelessStatusIndicatorSpriteGfx(void); void LoadWirelessStatusIndicatorSpriteGfx(void);
+1 -7
View File
@@ -1,13 +1,7 @@
#ifndef GUARD_RESET_SAVE_HEAP_H #ifndef GUARD_RESET_SAVE_HEAP_H
#define GUARD_RESET_SAVE_HEAP_H #define GUARD_RESET_SAVE_HEAP_H
// Exported type declarations void ReloadSave(void);
// Exported RAM declarations
// Exported ROM declarations
void ResetSaveHeap(void);
#endif //GUARD_RESET_SAVE_HEAP_H #endif //GUARD_RESET_SAVE_HEAP_H
+307 -455
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -134,7 +134,7 @@ bool8 sub_80BF748(void)
{ {
if (MenuHelpers_CallLinkSomething() == TRUE) if (MenuHelpers_CallLinkSomething() == TRUE)
return TRUE; return TRUE;
else if (LinkRecvQueueLengthMoreThan2() != TRUE) else if (IsLinkRecvQueueAtOverworldMax() != TRUE)
return FALSE; return FALSE;
else else
return TRUE; return TRUE;
+2 -2
View File
@@ -210,7 +210,7 @@ static u32 EReaderReceive(u8 * state_p, u16 * receiveDelay)
} }
break; break;
case 4: case 4:
Link_StartSend5FFFwithParam(0); SetCloseLinkCallbackAndType(0);
*state_p = 5; *state_p = 5;
break; break;
case 5: case 5:
@@ -416,7 +416,7 @@ static void Task_EReaderComm(u8 taskId)
break; break;
case 15: case 15:
data->initialSendResult = ValidateTrainerTowerData((struct EReaderTrainerTowerSet *)gDecompressionBuffer); data->initialSendResult = ValidateTrainerTowerData((struct EReaderTrainerTowerSet *)gDecompressionBuffer);
Link_StartSend5FFFwithParam(data->initialSendResult); SetCloseLinkCallbackAndType(data->initialSendResult);
data->state = 16; data->state = 16;
break; break;
case 16: case 16:
+6 -6
View File
@@ -1119,7 +1119,7 @@ static void Task_InputHandler_Info(u8 taskId)
case PSS_STATE3270_HANDLEINPUT: case PSS_STATE3270_HANDLEINPUT:
if (MenuHelpers_CallLinkSomething() == TRUE) if (MenuHelpers_CallLinkSomething() == TRUE)
return; return;
else if (LinkRecvQueueLengthMoreThan2() == TRUE) else if (IsLinkRecvQueueAtOverworldMax() == TRUE)
return; return;
else if (FuncIsActiveTask(Task_PokeSum_SwitchDisplayedPokemon)) else if (FuncIsActiveTask(Task_PokeSum_SwitchDisplayedPokemon))
return; return;
@@ -1218,7 +1218,7 @@ static void Task_InputHandler_Info(u8 taskId)
case PSS_STATE3270_ATEXIT_WAITLINKDELAY: case PSS_STATE3270_ATEXIT_WAITLINKDELAY:
if (Overworld_LinkRecvQueueLengthMoreThan2() == TRUE) if (Overworld_LinkRecvQueueLengthMoreThan2() == TRUE)
return; return;
else if (LinkRecvQueueLengthMoreThan2() == TRUE) else if (IsLinkRecvQueueAtOverworldMax() == TRUE)
return; return;
sMonSummaryScreen->state3270 = PSS_STATE3270_ATEXIT_WAITFADE; sMonSummaryScreen->state3270 = PSS_STATE3270_ATEXIT_WAITFADE;
@@ -3501,7 +3501,7 @@ static void Task_HandleInput_SelectMove(u8 taskId)
switch (sMonSummaryScreen->selectMoveInputHandlerState) switch (sMonSummaryScreen->selectMoveInputHandlerState)
{ {
case 0: case 0:
if (MenuHelpers_CallLinkSomething() == TRUE || LinkRecvQueueLengthMoreThan2() == TRUE) if (MenuHelpers_CallLinkSomething() == TRUE || IsLinkRecvQueueAtOverworldMax() == TRUE)
return; return;
if (JOY_NEW(DPAD_UP)) if (JOY_NEW(DPAD_UP))
@@ -3662,7 +3662,7 @@ static void Task_HandleInput_SelectMove(u8 taskId)
sMonSummaryScreen->selectMoveInputHandlerState = 3; sMonSummaryScreen->selectMoveInputHandlerState = 3;
break; break;
case 3: case 3:
if (MenuHelpers_CallLinkSomething() == TRUE || LinkRecvQueueLengthMoreThan2() == TRUE) if (MenuHelpers_CallLinkSomething() == TRUE || IsLinkRecvQueueAtOverworldMax() == TRUE)
return; return;
CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2); CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2);
@@ -3880,7 +3880,7 @@ static void Task_InputHandler_SelectOrForgetMove(u8 taskId)
sMonSummaryScreen->selectMoveInputHandlerState = 4; sMonSummaryScreen->selectMoveInputHandlerState = 4;
break; break;
case 4: case 4:
if (MenuHelpers_CallLinkSomething() == TRUE || LinkRecvQueueLengthMoreThan2() == TRUE) if (MenuHelpers_CallLinkSomething() == TRUE || IsLinkRecvQueueAtOverworldMax() == TRUE)
return; return;
CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2); CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2);
@@ -5148,7 +5148,7 @@ static void Task_PokeSum_SwitchDisplayedPokemon(u8 taskId)
sMonSummaryScreen->switchMonTaskState++; sMonSummaryScreen->switchMonTaskState++;
break; break;
case 11: case 11:
if (!Overworld_LinkRecvQueueLengthMoreThan2() && !LinkRecvQueueLengthMoreThan2()) if (!Overworld_LinkRecvQueueLengthMoreThan2() && !IsLinkRecvQueueAtOverworldMax())
{ {
PokeSum_CreateSprites(); PokeSum_CreateSprites();
PokeSum_TryPlayMonCry(); PokeSum_TryPlayMonCry();
+1 -1
View File
@@ -6,7 +6,7 @@
#include "new_game.h" #include "new_game.h"
#include "overworld.h" #include "overworld.h"
void ResetSaveHeap(void) void ReloadSave(void)
{ {
u16 imeBackup = REG_IME; u16 imeBackup = REG_IME;
+2 -2
View File
@@ -1200,7 +1200,7 @@ static void TradeMenuCB_10(void)
} }
else else
{ {
Link_StartSend5FFFwithParam(32); SetCloseLinkCallbackAndType(32);
sTradeMenuResourcesPtr->tradeMenuCBnum = 13; sTradeMenuResourcesPtr->tradeMenuCBnum = 13;
} }
} }
@@ -1985,7 +1985,7 @@ static void TradeMenuCB_11(void)
} }
else else
{ {
Link_StartSend5FFFwithParam(12); SetCloseLinkCallbackAndType(12);
} }
sTradeMenuResourcesPtr->tradeMenuCBnum = 12; sTradeMenuResourcesPtr->tradeMenuCBnum = 12;