diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/gba/types.h | 3 | ||||
-rw-r--r-- | include/link.h | 20 | ||||
-rw-r--r-- | include/link_rfu.h | 68 |
3 files changed, 35 insertions, 56 deletions
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 |