diff options
Diffstat (limited to 'include/librfu.h')
-rw-r--r-- | include/librfu.h | 214 |
1 files changed, 136 insertions, 78 deletions
diff --git a/include/librfu.h b/include/librfu.h index 69f0bb695..5eb9fd7a0 100644 --- a/include/librfu.h +++ b/include/librfu.h @@ -76,9 +76,9 @@ struct UnkLinkRfuStruct_02022B14Substruct u16 unk_00_4:1; u16 unk_00_5:1; u16 unk_00_6:1; - u16 unk_00_7:1; - u16 unk_01_0:1; - u16 unk_01_1:1; + u16 isChampion:1; + u16 hasNationalDex:1; + u16 gameClear:1; u16 unk_01_2:4; u16 unk_01_6:2; u8 playerTrainerId[2]; @@ -93,36 +93,35 @@ struct __attribute__((packed, aligned(2))) UnkLinkRfuStruct_02022B14 u8 unk_0a_0:7; u8 unk_0a_7:1; u8 playerGender:1; - u8 unk_0b_1:7; + u8 level:7; u8 unk_0c; }; struct RfuStruct { - vs32 unk_0; - u8 txParams; - u8 unk_5; - u8 activeCommand; - u8 unk_7; - u8 unk_8; - u8 unk_9; + vs32 state; + u8 reqLength; + u8 reqNext; + u8 reqActiveCommand; + u8 ackLength; + u8 ackNext; + u8 ackActiveCommand; u8 timerSelect; u8 unk_b; - int timerState; + s32 timerState; vu8 timerActive; u8 unk_11; - vu16 unk_12; + vu16 error; vu8 msMode; - u8 unk_15; + u8 recoveryCount; u8 unk_16; u8 unk_17; void (*callbackM)(); void (*callbackS)(); - u32 callbackID; - union RfuPacket * txPacket; - union RfuPacket * rxPacket; + u32 callbackId; + union RfuPacket *txPacket; + union RfuPacket *rxPacket; vu8 unk_2c; - u8 padding[3]; }; struct RfuIntrStruct @@ -133,90 +132,149 @@ struct RfuIntrStruct u8 block2[0x30]; }; -struct RfuUnk1 +struct RfuSlotStatusUNI { - 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; + u16 sendState; + u8 dataReadyFlag; + u8 bmSlot; + u16 payloadSize; + void *src; // TODO: is it correct? + u16 recvState; + u16 errorCode; + u16 dataSize; + u8 newDataFlag; + u8 dataBlockFlag; + void *recvBuffer; + u32 recvBuffSize; }; -struct RfuUnk2 +struct NIComm { - 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]; + u16 state; + u16 failCounter; + u32 nowP[4]; // ??? + u32 remainSize; + u16 errorCode; + u8 bmSlot; + u8 unk_1b; + u8 recvAckFlag[4]; + u8 ack; + u8 phase; + u8 n[4]; // ??? + void *src; + u8 bmSlotOrg; + u8 dataType; + u16 payloadSize; + u32 dataSize; }; -struct RfuUnk3 +struct RfuSlotStatusNI { - u32 unk_0; - u32 unk_4; - u8 unk_8[0xD4]; - u32 unk_dc; + struct NIComm send; + struct NIComm recv; + void *recvBuffer; + void *recvBufferSize; }; -struct RfuUnk5Sub +struct RfuFixed { - u16 unk_00; - u8 unk_02; - u16 unk_04; - struct UnkLinkRfuStruct_02022B14 unk_06; - u8 fill_13[1]; - u8 playerName[PLAYER_NAME_LENGTH + 1]; + void *reqCallback; + void *fastCopyPtr; + u16 fastCopyBuffer[24]; + u32 fastCopyBuffer2[12]; + u32 LLFBuffer[29]; + u8 *STWIBuffer; }; -struct RfuUnk5 +struct RfuStatic { - 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]; + u8 flags; + u8 NIEndRecvFlag; + u8 RecvRenewalFlag; + u8 commExistFlag; + u8 recvErrorFlag; + u8 recoveryBmSlot; + u8 nowWatchInterval; + u8 nullFrameCount; + u8 emberCount; + u8 SCStartFlag; + u8 linkEmergencyFlag[4]; + u8 lsFixedCount[4]; + u16 cidBak[4]; + u16 unk_1a; + u16 reqResult; + u16 tryPid; + u32 watchdogTimer; + u32 totalPacketSize; }; -extern struct RfuStruct * gRfuState; +struct RfuTgtData +{ + u16 id; + u8 slot; + u8 multibootFlag; + u16 serialNum; + u8 gname[15]; + u8 uname[9]; +}; -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 { +struct RfuLinkStatus +{ + u8 connMode; + u8 connCount; + u8 connSlotFlag; + u8 linkLossSlotFlag; + u8 sendSlotNIFlag; + u8 recvSlotNIFlag; + u8 sendSlotUNIFlag; + u8 getNameFlag; + u8 findParentCount; + u8 watchInterval; + u8 stength[4]; + u8 LLFReadyFlag; + u8 remainLLFrameSizeParent; + u8 remainLLFrameSizeChild[4]; + struct RfuTgtData partner[4]; + struct RfuTgtData my; +}; + +struct Unk_3007470 +{ u8 unk0; u8 unk1; u16 unk2; u16 unk4; u8 fill6[4]; u16 unkA; -} gUnknown_3007470; +}; + +struct STWIStruct +{ + // TODO: resolve the struct + u8 unk_0[232]; + u8 function[2400]; + struct RfuStruct STWIStatus; +}; + +struct Unk_3001190 +{ + struct RfuLinkStatus linkStatus; + struct RfuStatic static_; + struct RfuFixed fixed; + struct RfuSlotStatusNI NI[4]; + struct RfuSlotStatusUNI UNI[4]; + struct STWIStruct STWI; +}; -extern void rfu_STC_clearAPIVariables(void); +extern struct RfuStruct *gRfuState; +extern struct RfuLinkStatus *gRfuLinkStatus; +extern struct RfuStatic *gRfuStatic; +extern struct RfuFixed *gRfuFixed; +extern struct RfuSlotStatusNI *gRfuSlotStatusNI[4]; +extern struct RfuSlotStatusUNI *gRfuSlotStatusUNI[4]; +extern struct Unk_3007470 gUnknown_3007470; +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); |