summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/bg_regs.h6
-rw-r--r--include/event_data.h3
-rw-r--r--include/librfu.h141
-rw-r--r--include/link.h59
-rw-r--r--include/link_rfu.h22
-rw-r--r--include/main.h2
-rw-r--r--include/overworld.h2
-rw-r--r--include/strings.h7
-rw-r--r--include/trade.h6
9 files changed, 232 insertions, 16 deletions
diff --git a/include/bg_regs.h b/include/bg_regs.h
new file mode 100644
index 000000000..660b47d1e
--- /dev/null
+++ b/include/bg_regs.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_BG_REGS_H
+#define GUARD_BG_REGS_H
+
+extern const u8 gBGControlRegOffsets[];
+
+#endif //GUARD_BG_REGS_H
diff --git a/include/event_data.h b/include/event_data.h
index 5f455467d..036b0a325 100644
--- a/include/event_data.h
+++ b/include/event_data.h
@@ -36,9 +36,8 @@ bool32 sub_806E2BC(void);
void sub_806E6FC(void);
void sub_806E2D0(void);
void sub_806E370(void);
-bool32 sub_806E25C(void);
+bool32 IsNationalPokedexEnabled(void);
void sub_806E190(void);
-
extern u16 gSpecialVar_0x8000;
extern u16 gSpecialVar_0x8001;
extern u16 gSpecialVar_0x8002;
diff --git a/include/librfu.h b/include/librfu.h
index 90f69cb5a..69f0bb695 100644
--- a/include/librfu.h
+++ b/include/librfu.h
@@ -1,3 +1,6 @@
+#ifndef GUARD_LIBRFU_H
+#define GUARD_LIBRFU_H
+
#include "main.h"
enum
@@ -116,8 +119,8 @@ struct RfuStruct
void (*callbackM)();
void (*callbackS)();
u32 callbackID;
- union RfuPacket *txPacket;
- union RfuPacket *rxPacket;
+ union RfuPacket * txPacket;
+ union RfuPacket * rxPacket;
vu8 unk_2c;
u8 padding[3];
};
@@ -130,6 +133,136 @@ struct RfuIntrStruct
u8 block2[0x30];
};
-extern struct RfuStruct *gRfuState;
+struct RfuUnk1
+{
+ u16 unk_0;
+ u8 unk_2;
+ u8 unk_3;
+ u8 fill_4[14];
+ u8 unk_12;
+ u32 unk_14;
+ u32 unk_18;
+ struct RfuIntrStruct unk_1c;
+};
+
+struct RfuUnk2
+{
+ u16 unk_0;
+ u16 unk_2;
+ u8 fill_4[0x16];
+ u8 unk_1a;
+ u8 fill_1b[0x19];
+ u16 unk_34;
+ u16 unk_36;
+ u8 fill_38[0x16];
+ u8 unk_4e;
+ u8 fill_4f[0x12];
+ u8 unk_61;
+ u8 fill_62[6];
+ void *unk_68;
+ void *unk_6c;
+ u8 unk_70[0x70];
+};
+
+struct RfuUnk3
+{
+ u32 unk_0;
+ u32 unk_4;
+ u8 unk_8[0xD4];
+ u32 unk_dc;
+};
+
+struct RfuUnk5Sub
+{
+ u16 unk_00;
+ u8 unk_02;
+ u16 unk_04;
+ struct UnkLinkRfuStruct_02022B14 unk_06;
+ u8 fill_13[1];
+ u8 playerName[PLAYER_NAME_LENGTH + 1];
+};
+
+struct RfuUnk5
+{
+ u8 unk_00;
+ u8 unk_01;
+ u8 unk_02;
+ u8 unk_03;
+ u8 unk_04;
+ u8 unk_05;
+ u8 unk_06;
+ u8 unk_07;
+ u8 unk_08;
+ u8 filler_09[1];
+ u8 unk_0a[4];
+ u8 filler_0e[6];
+ struct RfuUnk5Sub unk_14[4];
+};
+
+extern struct RfuStruct * gRfuState;
+
+extern struct RfuUnk5 * gUnknown_3007460;
+extern u32 *gUnknown_3007464;
+extern struct RfuUnk3 * gUnknown_3007468;
+extern struct RfuUnk2 * gUnknown_3007450[4];
+extern struct RfuUnk1 * gUnknown_3007440[4];
+extern struct {
+ u8 unk0;
+ u8 unk1;
+ u16 unk2;
+ u16 unk4;
+ u8 fill6[4];
+ u16 unkA;
+} gUnknown_3007470;
+
+extern void rfu_STC_clearAPIVariables(void);
+
+void STWI_init_all(struct RfuIntrStruct * interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam);
+void rfu_REQ_stopMode(void);
+void rfu_waitREQComplete(void);
+u32 rfu_REQBN_softReset_and_checkID(void);
+void rfu_REQ_sendData(u8);
+void rfu_setMSCCallback(void (*func)(u16));
+void rfu_setREQCallback(void (*func)(u16, u16));
+bool8 rfu_getMasterSlave(void);
+void rfu_REQBN_watchLink(u16 a0, u8 *a1, u8 *a2, u8 *a3);
+bool16 rfu_syncVBlank(void);
+void rfu_REQ_reset(void);
+void rfu_REQ_configSystem(u16, u8, u8);
+void rfu_REQ_configGameData(u8, u16, struct UnkLinkRfuStruct_02022B14 *, u8 *);
+void rfu_REQ_startSearchChild(void);
+void rfu_REQ_pollSearchChild(void);
+void rfu_REQ_endSearchChild(void);
+void rfu_REQ_startSearchParent(void);
+void rfu_REQ_pollSearchParent(void);
+void rfu_REQ_endSearchParent(void);
+void rfu_REQ_startConnectParent(u16);
+void rfu_REQ_pollConnectParent(void);
+void rfu_REQ_endConnectParent(void);
+void rfu_REQ_CHILD_startConnectRecovery(u8);
+void rfu_REQ_CHILD_pollConnectRecovery(void);
+void rfu_REQ_CHILD_endConnectRecovery(void);
+void rfu_REQ_changeMasterSlave(void);
+void rfu_REQ_RFUStatus(void);
+void rfu_getRFUStatus(u8 *status);
+u8 *rfu_getSTWIRecvBuffer(void);
+u8 rfu_NI_CHILD_setSendGameName(u8 a0, u8 a1);
+void rfu_clearSlot(u8 a0, u8 a1);
+void rfu_clearAllSlot(void);
+bool16 rfu_CHILD_getConnectRecoveryStatus(u8 *status);
+bool16 rfu_getConnectParentStatus(u8 *status, u8 *a1);
+bool16 rfu_UNI_PARENT_getDRAC_ACK(u8 *a0);
+void rfu_REQ_disconnect(u8 who);
+void rfu_changeSendTarget(u8 a0, u8 who, u8 a2);
+void rfu_NI_stopReceivingData(u8 who);
+u16 rfu_initializeAPI(u32 *unk0, u16 unk1, IntrFunc *interrupt, bool8 copyInterruptToRam);
+void rfu_setTimerInterrupt(u8 which, IntrFunc *intr);
+void rfu_setRecvBuffer(u8 a0, u8 a1, void *a2, size_t a3);
+bool16 rfu_UNI_setSendData(u8 flag, void *ptr, u8 size);
+void rfu_REQ_recvData(void);
+void rfu_UNI_readySendData(u8 a0);
+void rfu_UNI_clearRecvNewDataFlag(u8 a0);
+void rfu_REQ_PARENT_resumeRetransmitAndChange(void);
+void rfu_NI_setSendData(u8, u8, const void *, u32);
-void STWI_init_all(struct RfuIntrStruct *interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam);
+#endif // GUARD_LIBRFU_H
diff --git a/include/link.h b/include/link.h
index d5d3f08a3..51f103745 100644
--- a/include/link.h
+++ b/include/link.h
@@ -9,6 +9,9 @@
#define QUEUE_CAPACITY 50
#define BLOCK_BUFFER_SIZE 0x100
+#define LINK_SLAVE 0
+#define LINK_MASTER 8
+
#define LINK_STAT_LOCAL_ID 0x00000003
#define LINK_STAT_PLAYER_COUNT 0x0000001C
#define LINK_STAT_PLAYER_COUNT_SHIFT 2
@@ -18,7 +21,23 @@
#define LINK_STAT_CONN_ESTABLISHED_SHIFT 6
#define LINK_STAT_RECEIVED_NOTHING 0x00000100
#define LINK_STAT_RECEIVED_NOTHING_SHIFT 8
+#define LINK_STAT_UNK_FLAG_9 0x00000200
+#define LINK_STAT_UNK_FLAG_9_SHIFT 9
#define LINK_STAT_ERRORS 0x0007F000
+#define LINK_STAT_ERRORS_SHIFT 12
+
+#define LINK_STAT_ERROR_HARDWARE 0x00001000
+#define LINK_STAT_ERROR_HARDWARE_SHIFT 12
+#define LINK_STAT_ERROR_CHECKSUM 0x00002000
+#define LINK_STAT_ERROR_CHECKSUM_SHIFT 13
+#define LINK_STAT_ERROR_QUEUE_FULL 0x00004000
+#define LINK_STAT_ERROR_QUEUE_FULL_SHIFT 14
+#define LINK_STAT_ERROR_LAG_MASTER 0x00010000
+#define LINK_STAT_ERROR_LAG_MASTER_SHIFT 16
+#define LINK_STAT_ERROR_INVALID_ID 0x00020000
+#define LINK_STAT_ERROR_INVALID_ID_SHIFT 17
+#define LINK_STAT_ERROR_LAG_SLAVE 0x00040000
+#define LINK_STAT_ERROR_LAG_SLAVE_SHIFT 18
#define EXTRACT_PLAYER_COUNT(status) \
(((status) & LINK_STAT_PLAYER_COUNT) >> LINK_STAT_PLAYER_COUNT_SHIFT)
@@ -28,6 +47,23 @@
(((status) >> LINK_STAT_CONN_ESTABLISHED_SHIFT) & 1)
#define EXTRACT_RECEIVED_NOTHING(status) \
(((status) >> LINK_STAT_RECEIVED_NOTHING_SHIFT) & 1)
+#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_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 MASTER_HANDSHAKE 0x8FFF
#define SLAVE_HANDSHAKE 0xB9A0
@@ -47,6 +83,10 @@ enum
EXCHANGE_COMPLETE,
EXCHANGE_TIMED_OUT,
EXCHANGE_IN_PROGRESS,
+ EXCHANGE_STAT_4,
+ EXCHANGE_STAT_5,
+ EXCHANGE_STAT_6,
+ EXCHANGE_STAT_7
};
enum
@@ -138,7 +178,7 @@ extern u16 gRecvCmds[MAX_RFU_PLAYERS][CMD_LENGTH];
extern u8 gBlockSendBuffer[BLOCK_BUFFER_SIZE];
extern u16 gLinkType;
extern u32 gLinkStatus;
-extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2];
+extern u16 gBlockRecvBuffer[MAX_RFU_PLAYERS][BLOCK_BUFFER_SIZE / 2];
extern u16 gSendCmd[CMD_LENGTH];
extern u8 gShouldAdvanceLinkState;
extern struct LinkPlayer gLinkPlayers[];
@@ -147,20 +187,19 @@ extern bool8 gReceivedRemoteLinkPlayers;
extern bool8 gLinkVSyncDisabled;
extern u8 gWirelessCommType;
-extern u8 gUnknown_3003F84;
-extern u64 gSioMlt_Recv;
+extern u8 gShouldAdvanceLinkState;
void Task_DestroySelf(u8);
void OpenLink(void);
void CloseLink(void);
-u16 LinkMain2(u16 *);
+u16 LinkMain2(const u16 *);
void sub_8007B14(void);
bool32 sub_8007B24(void);
void ClearLinkCallback(void);
void ClearLinkCallback_2(void);
u8 GetLinkPlayerCount(void);
void OpenLinkTimed(void);
-u8 GetLinkPlayerDataExchangeStatusTimed(void);
+u8 GetLinkPlayerDataExchangeStatusTimed(int lower, int higher);
bool8 IsLinkPlayerDataExchangeComplete(void);
u32 GetLinkPlayerTrainerId(u8);
void ResetLinkPlayers(void);
@@ -181,7 +220,7 @@ bool8 IsLinkConnectionEstablished(void);
void SetSuppressLinkErrorMessage(bool8);
bool8 HasLinkErrorOccurred(void);
void ResetSerial(void);
-u32 LinkMain1(u8 *, u16 *, u16[CMD_LENGTH][MAX_LINK_PLAYERS]);
+u32 LinkMain1(u8 *, u16 *, u16[MAX_RFU_PLAYERS][CMD_LENGTH]);
void RFUVSync(void);
void Timer3Intr(void);
void SerialCB(void);
@@ -203,17 +242,19 @@ void sub_800AAC0(void);
void OpenLink(void);
bool8 IsLinkMaster(void);
void CheckShouldAdvanceLinkState(void);
-void sub_800AA80(u8);
+void sub_800AA80(u16 a0);
void sub_80098D8(void);
void CloseLink(void);
bool8 IsLinkTaskFinished(void);
bool32 sub_800B270(void);
-void sub_800B388(void);
+void ResetSerial(void);
void sub_8054A28(void);
void sub_800B1F4(void);
void LoadWirelessStatusIndicatorSpriteGfx(void);
void CreateWirelessStatusIndicatorSprite(u8, u8);
void sub_8009FE8(void);
-void sub_800A068(void);
+void ClearLinkCallback_2(void);
+void sub_80FA42C(void);
+void sub_800B284(struct LinkPlayer * linkPlayer);
#endif // GUARD_LINK_H
diff --git a/include/link_rfu.h b/include/link_rfu.h
index 928ae380e..2757e5296 100644
--- a/include/link_rfu.h
+++ b/include/link_rfu.h
@@ -11,7 +11,7 @@ bool32 MG_PrintTextOnWindow1AndWaitButton(u8 * cmdPtr, const u8 * src);
void sub_80FA190(void);
void MG_DrawCheckerboardPattern(void);
void task_add_05_task_del_08FA224_when_no_RfuFunc(void);
-bool8 IsNoOneConnected(void);
+bool8 IsRfuTaskFinished(void);
void DestroyWirelessStatusIndicatorSprite(void);
void MEvent_CreateTask_CardOrNewsWithFriend(u8);
void MEvent_CreateTask_CardOrNewsOverWireless(u8);
@@ -19,5 +19,25 @@ void MEvent_CreateTask_Leader(u8);
void sub_80F9E2C(void * data);
u8 sub_8116DE0(void);
void sub_80FBB4C(void);
+void sub_80F86F4(void);
+void sub_80FB128(bool32 a0);
+u32 sub_80FD3A4(void);
+bool32 IsSendingKeysToRfu(void);
+void Rfu_set_zero(void);
+u8 GetRfuPlayerCount(void);
+void sub_80F9828(void);
+u8 rfu_get_multiplayer_id(void);
+bool8 Rfu_InitBlockSend(const void * src, u16 size);
+bool8 sub_80FA0F8(u8 a0);
+u8 Rfu_GetBlockReceivedStatus(void);
+void Rfu_SetBlockReceivedFlag(u8 who);
+void Rfu_ResetBlockReceivedFlag(u8 who);
+bool8 Rfu_IsMaster(void);
+void sub_80F85F8(void);
+bool32 sub_80FAE94(void);
+bool32 sub_80FAEF0(void);
+bool32 IsRfuRecvQueueEmpty(void);
+u32 GetRfuRecvQueueLength(void);
+void sub_80F8DC0(void);
#endif //GUARD_LINK_RFU_H
diff --git a/include/main.h b/include/main.h
index 589709436..c962cf7bd 100644
--- a/include/main.h
+++ b/include/main.h
@@ -72,4 +72,6 @@ u16 GetGeneratedTrainerIdLower(void);
extern const char RomHeaderGameCode[4];
extern const char RomHeaderSoftwareVersion;
+extern u8 gLinkTransferringData;
+
#endif // GUARD_MAIN_H
diff --git a/include/overworld.h b/include/overworld.h
index f2ef24e9e..77cacff94 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -142,4 +142,6 @@ void ResetGameStats(void);
void Overworld_CreditsMainCB(void);
bool32 Overworld_DoScrollSceneForCredits(u8 *, const struct CreditsOverworldCmd *, u8);
+bool32 sub_8058318(void);
+
#endif //GUARD_OVERWORLD_H
diff --git a/include/strings.h b/include/strings.h
index 9ddce6044..1bafbacbe 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -329,4 +329,11 @@ extern const u8 gText_ItemfinderResponding[];
extern const u8 gText_ItemfinderShakingWildly[];
extern const u8 gText_NopeTheresNoResponse[];
+// link
+extern const u8 gText_CommErrorEllipsis[];
+extern const u8 gText_MoveCloserToLinkPartner[];
+extern const u8 gText_CommErrorCheckConnections[];
+extern const u8 gText_ABtnTitleScreen[];
+extern const u8 gText_ABtnRegistrationCounter[];
+
#endif //GUARD_STRINGS_H
diff --git a/include/trade.h b/include/trade.h
new file mode 100644
index 000000000..02ed7d8c4
--- /dev/null
+++ b/include/trade.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_TRADE_H
+#define GUARD_TRADE_H
+
+s32 sub_804FB34(void);
+
+#endif //GUARD_TRADE_H