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

View File

@ -3,18 +3,18 @@ gLinkDebugSeed
gLocalLinkPlayerBlock
gLinkErrorOccurred
gLinkDebugFlags
gFiller_3003EB4
gLinkFiller1
gRemoteLinkPlayersNotReceived
gBlockReceivedStatus
gFiller_3003EC0
gLinkFiller2
gLinkHeldKeys
gRecvCmds
gLinkStatus
gLinkAllAcked5FFF
gUnknown_3003F28
gLinkCommand2FFEAck
gLinkCommand5FFFAck
gLinkCmd5FFFparam
gLinkDummy1
gLinkDummy2
gReadyToExitStandby
gReadyToCloseLink
gReadyCloseLinkType
gSuppressLinkErrorMessage
gWirelessCommType
gSavedLinkPlayerCount
@ -26,9 +26,9 @@ gLinkCallback
gShouldAdvanceLinkState
gLinkTestBlockChecksums
gBlockRequestType
gFiller_3003F94
gFiller_3003F98
gFiller_3003F9C
gLinkFiller3
gLinkFiller4
gLinkFiller5
gLastSendQueueCount
gLink
gLastRecvQueueCount

View File

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

Before

Width:  |  Height:  |  Size: 904 B

After

Width:  |  Height:  |  Size: 904 B

View File

@ -7,6 +7,7 @@
#define MAX_RFU_PLAYERS 5
#define CMD_LENGTH 8
#define QUEUE_CAPACITY 50
#define OVERWORLD_RECV_QUEUE_MAX 3
#define BLOCK_BUFFER_SIZE 0x100
#define LINK_SLAVE 0
@ -50,23 +51,41 @@
#define EXTRACT_LINK_ERRORS(status) \
(((status) & LINK_STAT_ERRORS) >> LINK_STAT_ERRORS_SHIFT)
#define LINKCMD_SEND_LINK_TYPE 0x2222
#define LINKCMD_0x2FFE 0x2FFE
#define LINKCMD_SEND_HELD_KEYS 0x4444
#define LINKCMD_0x5555 0x5555
#define LINKCMD_0x5566 0x5566
#define LINKCMD_0x5FFF 0x5FFF
#define LINKCMD_0x6666 0x6666
#define LINKCMD_0x7777 0x7777
#define LINKCMD_COUNTDOWN 0x7FFF
#define LINKCMD_CONT_BLOCK 0x8888
#define LINKCMD_0xAAAA 0xAAAA
#define LINKCMD_0xAAAB 0xAAAB
#define LINKCMD_INIT_BLOCK 0xBBBB
#define LINKCMD_SEND_HELD_KEYS_2 0xCAFE
#define LINKCMD_0xCCCC 0xCCCC
#define LINKCMD_BLENDER_STOP 0x1111
#define LINKCMD_SEND_LINK_TYPE 0x2222
#define LINKCMD_BLENDER_SCORE_MISS 0x2345
#define LINKCMD_READY_EXIT_STANDBY 0x2FFE
#define LINKCMD_SEND_PACKET 0x2FFF
#define LINKCMD_BLENDER_SEND_KEYS 0x4444
#define LINKCMD_BLENDER_SCORE_BEST 0x4523
#define LINKCMD_BLENDER_SCORE_GOOD 0x5432
#define LINKCMD_DUMMY_1 0x5555
#define LINKCMD_DUMMY_2 0x5566
#define LINKCMD_READY_CLOSE_LINK 0x5FFF
#define LINKCMD_SEND_EMPTY 0x6666
#define LINKCMD_SEND_0xEE 0x7777
#define LINKCMD_BLENDER_PLAY_AGAIN 0x7779
#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_TRADE_SETUP 0x1133
#define LINKTYPE_0x1144 0x1144 // trade
@ -80,8 +99,8 @@
#define LINKTYPE_BATTLE_TOWER 0x2288
#define LINKTYPE_RECORD_MIX_BEFORE 0x3311
#define LINKTYPE_RECORD_MIX_AFTER 0x3322
#define LINKTYPE_BERRY_BLENDER_SETUP 0x4411
#define LINKTYPE_CONTEST_GMODE 0x6601
#define LINKTYPE_BERRY_BLENDER_SETUP 0x4411
#define LINKTYPE_CONTEST_GMODE 0x6601
enum {
BLOCK_REQ_SIZE_NONE, // Identical to 200
@ -263,10 +282,10 @@ void SetCloseLinkCallback(void);
void OpenLink(void);
bool8 IsLinkMaster(void);
void CheckShouldAdvanceLinkState(void);
void Link_StartSend5FFFwithParam(u16 a0);
void SetCloseLinkCallbackAndType(u16 type);
void CloseLink(void);
bool8 IsLinkTaskFinished(void);
bool32 LinkRecvQueueLengthMoreThan2(void);
bool32 IsLinkRecvQueueAtOverworldMax(void);
void ResetSerial(void);
void SetWirelessCommType1(void);
void LoadWirelessStatusIndicatorSpriteGfx(void);

View File

@ -1,13 +1,7 @@
#ifndef GUARD_RESET_SAVE_HEAP_H
#define GUARD_RESET_SAVE_HEAP_H
// Exported type declarations
// Exported RAM declarations
// Exported ROM declarations
void ResetSaveHeap(void);
void ReloadSave(void);
#endif //GUARD_RESET_SAVE_HEAP_H

File diff suppressed because it is too large Load Diff

View File

@ -134,7 +134,7 @@ bool8 sub_80BF748(void)
{
if (MenuHelpers_CallLinkSomething() == TRUE)
return TRUE;
else if (LinkRecvQueueLengthMoreThan2() != TRUE)
else if (IsLinkRecvQueueAtOverworldMax() != TRUE)
return FALSE;
else
return TRUE;

View File

@ -210,7 +210,7 @@ static u32 EReaderReceive(u8 * state_p, u16 * receiveDelay)
}
break;
case 4:
Link_StartSend5FFFwithParam(0);
SetCloseLinkCallbackAndType(0);
*state_p = 5;
break;
case 5:
@ -416,7 +416,7 @@ static void Task_EReaderComm(u8 taskId)
break;
case 15:
data->initialSendResult = ValidateTrainerTowerData((struct EReaderTrainerTowerSet *)gDecompressionBuffer);
Link_StartSend5FFFwithParam(data->initialSendResult);
SetCloseLinkCallbackAndType(data->initialSendResult);
data->state = 16;
break;
case 16:

View File

@ -1119,7 +1119,7 @@ static void Task_InputHandler_Info(u8 taskId)
case PSS_STATE3270_HANDLEINPUT:
if (MenuHelpers_CallLinkSomething() == TRUE)
return;
else if (LinkRecvQueueLengthMoreThan2() == TRUE)
else if (IsLinkRecvQueueAtOverworldMax() == TRUE)
return;
else if (FuncIsActiveTask(Task_PokeSum_SwitchDisplayedPokemon))
return;
@ -1218,7 +1218,7 @@ static void Task_InputHandler_Info(u8 taskId)
case PSS_STATE3270_ATEXIT_WAITLINKDELAY:
if (Overworld_LinkRecvQueueLengthMoreThan2() == TRUE)
return;
else if (LinkRecvQueueLengthMoreThan2() == TRUE)
else if (IsLinkRecvQueueAtOverworldMax() == TRUE)
return;
sMonSummaryScreen->state3270 = PSS_STATE3270_ATEXIT_WAITFADE;
@ -3501,7 +3501,7 @@ static void Task_HandleInput_SelectMove(u8 taskId)
switch (sMonSummaryScreen->selectMoveInputHandlerState)
{
case 0:
if (MenuHelpers_CallLinkSomething() == TRUE || LinkRecvQueueLengthMoreThan2() == TRUE)
if (MenuHelpers_CallLinkSomething() == TRUE || IsLinkRecvQueueAtOverworldMax() == TRUE)
return;
if (JOY_NEW(DPAD_UP))
@ -3662,7 +3662,7 @@ static void Task_HandleInput_SelectMove(u8 taskId)
sMonSummaryScreen->selectMoveInputHandlerState = 3;
break;
case 3:
if (MenuHelpers_CallLinkSomething() == TRUE || LinkRecvQueueLengthMoreThan2() == TRUE)
if (MenuHelpers_CallLinkSomething() == TRUE || IsLinkRecvQueueAtOverworldMax() == TRUE)
return;
CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2);
@ -3880,7 +3880,7 @@ static void Task_InputHandler_SelectOrForgetMove(u8 taskId)
sMonSummaryScreen->selectMoveInputHandlerState = 4;
break;
case 4:
if (MenuHelpers_CallLinkSomething() == TRUE || LinkRecvQueueLengthMoreThan2() == TRUE)
if (MenuHelpers_CallLinkSomething() == TRUE || IsLinkRecvQueueAtOverworldMax() == TRUE)
return;
CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2);
@ -5148,7 +5148,7 @@ static void Task_PokeSum_SwitchDisplayedPokemon(u8 taskId)
sMonSummaryScreen->switchMonTaskState++;
break;
case 11:
if (!Overworld_LinkRecvQueueLengthMoreThan2() && !LinkRecvQueueLengthMoreThan2())
if (!Overworld_LinkRecvQueueLengthMoreThan2() && !IsLinkRecvQueueAtOverworldMax())
{
PokeSum_CreateSprites();
PokeSum_TryPlayMonCry();

View File

@ -6,7 +6,7 @@
#include "new_game.h"
#include "overworld.h"
void ResetSaveHeap(void)
void ReloadSave(void)
{
u16 imeBackup = REG_IME;

View File

@ -1200,7 +1200,7 @@ static void TradeMenuCB_10(void)
}
else
{
Link_StartSend5FFFwithParam(32);
SetCloseLinkCallbackAndType(32);
sTradeMenuResourcesPtr->tradeMenuCBnum = 13;
}
}
@ -1985,7 +1985,7 @@ static void TradeMenuCB_11(void)
}
else
{
Link_StartSend5FFFwithParam(12);
SetCloseLinkCallbackAndType(12);
}
sTradeMenuResourcesPtr->tradeMenuCBnum = 12;