diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/librfu.h | 75 |
1 files changed, 46 insertions, 29 deletions
diff --git a/include/librfu.h b/include/librfu.h index 9482b94c4..ff160e207 100644 --- a/include/librfu.h +++ b/include/librfu.h @@ -3,6 +3,12 @@ #include "main.h" +/* TODOs: + * - documentation + * - check if any field needs to be volatile + * - decompile librfu_intr.s once arm support is back again + */ + enum { RFU_RESET = 0x10, @@ -134,16 +140,25 @@ struct RfuIntrStruct struct RfuSlotStatusUNI { - u16 sendState; - u8 dataReadyFlag; - u8 bmSlot; - u16 payloadSize; - void *src; // TODO: is it correct? - u16 recvState; - u16 errorCode; - u16 dataSize; - u8 newDataFlag; - u8 dataBlockFlag; + struct + { + struct UNISend + { + u16 state; + u8 dataReadyFlag; + u8 bmSlot; + u16 payloadSize; + const void *src; + } send; + struct UNIRecv + { + u16 state; + u16 errorCode; + u16 dataSize; + u8 newDataFlag; + u8 dataBlockFlag; + } recv; + } sub; void *recvBuffer; u32 recvBufferSize; }; @@ -152,16 +167,15 @@ struct NIComm { u16 state; u16 failCounter; - u32 nowP[4]; // ??? + const u8 *nowP[4]; u32 remainSize; u16 errorCode; u8 bmSlot; - u8 unk_1b; u8 recvAckFlag[4]; u8 ack; u8 phase; - u8 n[4]; // ??? - void *src; + u8 n[4]; + const void *src; u8 bmSlotOrg; u8 dataType; u16 payloadSize; @@ -170,16 +184,19 @@ struct NIComm struct RfuSlotStatusNI { - struct NIComm send; - struct NIComm recv; + struct + { + struct NIComm send; + struct NIComm recv; + } sub; void *recvBuffer; - void *recvBufferSize; + u32 recvBufferSize; }; struct RfuFixed { void (*reqCallback)(u16, u16); - void *fastCopyPtr; + void (*fastCopyPtr)(const u8 **, u8 **, s32); u16 fastCopyBuffer[24]; u32 fastCopyBuffer2[12]; u32 LLFBuffer[29]; @@ -190,7 +207,7 @@ struct RfuStatic { u8 flags; u8 NIEndRecvFlag; - u8 RecvRenewalFlag; + u8 recvRenewalFlag; u8 commExistFlag; u8 recvErrorFlag; u8 recoveryBmSlot; @@ -231,7 +248,7 @@ struct RfuLinkStatus u8 findParentCount; u8 watchInterval; u8 strength[4]; - u8 LLFReadyFlag; + vu8 LLFReadyFlag; u8 remainLLFrameSizeParent; u8 remainLLFrameSizeChild[4]; struct RfuTgtData partner[4]; @@ -275,7 +292,7 @@ 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); +s32 rfu_REQBN_watchLink(u16 a0, u8 *a1, u8 *a2, u8 *a3); u16 rfu_syncVBlank(void); void rfu_REQ_reset(void); void rfu_REQ_configSystem(u16, u8, u8); @@ -296,24 +313,24 @@ void rfu_REQ_changeMasterSlave(void); void rfu_REQ_RFUStatus(void); u32 rfu_getRFUStatus(u8 *status); struct RfuIntrStruct *rfu_getSTWIRecvBuffer(void); -u8 rfu_NI_CHILD_setSendGameName(u8 a0, u8 a1); -void rfu_clearSlot(u8 a0, u8 a1); +s32 rfu_NI_CHILD_setSendGameName(u8 a0, u8 a1); +s32 rfu_clearSlot(u8 a0, u8 a1); void rfu_clearAllSlot(void); -bool16 rfu_CHILD_getConnectRecoveryStatus(u8 *status); +u16 rfu_CHILD_getConnectRecoveryStatus(u8 *status); u16 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); +s32 rfu_changeSendTarget(u8 a0, u8 who, u8 a2); +s32 rfu_NI_stopReceivingData(u8 who); u16 rfu_initializeAPI(struct Unk_3001190 *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); +s32 rfu_setRecvBuffer(u8 a0, u8 a1, void *a2, size_t a3); +s32 rfu_UNI_setSendData(u8 flag, const 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); +s32 rfu_NI_setSendData(u8, u8, const void *, u32); // librfu_intr void IntrSIO32(void); |