More symbol docs in librfu, link_rfu_2
This commit is contained in:
+35
-35
@@ -3,30 +3,30 @@
|
|||||||
struct LLSFStruct
|
struct LLSFStruct
|
||||||
{
|
{
|
||||||
u8 frameSize;
|
u8 frameSize;
|
||||||
u8 unk01;
|
u8 recvFirstShift;
|
||||||
u8 unk02;
|
u8 connSlotFlagShift;
|
||||||
u8 slotStateShift;
|
u8 slotStateShift;
|
||||||
u8 ackShift;
|
u8 ackShift;
|
||||||
u8 phaseShit;
|
u8 phaseShit;
|
||||||
u8 nShift;
|
u8 nShift;
|
||||||
u8 unk07;
|
u8 recvFirstMask;
|
||||||
u8 unk08;
|
u8 connSlotFlagMask;
|
||||||
u8 slotStateMask;
|
u8 slotStateMask;
|
||||||
u8 ackMask;
|
u8 ackMask;
|
||||||
u8 phaseMask;
|
u8 phaseMask;
|
||||||
u8 nMask;
|
u8 nMask;
|
||||||
u16 unk0E;
|
u16 framesMask;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct RfuLocalStruct
|
struct RfuLocalStruct
|
||||||
{
|
{
|
||||||
u8 unk0;
|
u8 recvFirst;
|
||||||
u8 unk1;
|
u8 connSlotFlag;
|
||||||
u8 slotState;
|
u8 slotState;
|
||||||
u8 ack;
|
u8 ack;
|
||||||
u8 phase;
|
u8 phase;
|
||||||
u8 n;
|
u8 n;
|
||||||
u16 unk6;
|
u16 frame;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void rfu_CB_defaultCallback(u8 reqCommand, u16 reqResult);
|
static void rfu_CB_defaultCallback(u8 reqCommand, u16 reqResult);
|
||||||
@@ -76,35 +76,35 @@ struct RfuFixed *gRfuFixed;
|
|||||||
static const struct LLSFStruct llsf_struct[2] = {
|
static const struct LLSFStruct llsf_struct[2] = {
|
||||||
[MODE_CHILD] = {
|
[MODE_CHILD] = {
|
||||||
.frameSize = 2,
|
.frameSize = 2,
|
||||||
.unk01 = 14,
|
.recvFirstShift = 14,
|
||||||
.unk02 = 0,
|
.connSlotFlagShift = 0,
|
||||||
.slotStateShift = 10,
|
.slotStateShift = 10,
|
||||||
.ackShift = 9,
|
.ackShift = 9,
|
||||||
.phaseShit = 5,
|
.phaseShit = 5,
|
||||||
.nShift = 7,
|
.nShift = 7,
|
||||||
.unk07 = 2,
|
.recvFirstMask = 2,
|
||||||
.unk08 = 0,
|
.connSlotFlagMask = 0,
|
||||||
.slotStateMask = 15,
|
.slotStateMask = 15,
|
||||||
.ackMask = 1,
|
.ackMask = 1,
|
||||||
.phaseMask = 3,
|
.phaseMask = 3,
|
||||||
.nMask = 3,
|
.nMask = 3,
|
||||||
.unk0E = 0x1f
|
.framesMask = 0x1f
|
||||||
},
|
},
|
||||||
[MODE_PARENT] = {
|
[MODE_PARENT] = {
|
||||||
.frameSize = 3,
|
.frameSize = 3,
|
||||||
.unk01 = 22,
|
.recvFirstShift = 22,
|
||||||
.unk02 = 18,
|
.connSlotFlagShift = 18,
|
||||||
.slotStateShift = 14,
|
.slotStateShift = 14,
|
||||||
.ackShift = 13,
|
.ackShift = 13,
|
||||||
.phaseShit = 9,
|
.phaseShit = 9,
|
||||||
.nShift = 11,
|
.nShift = 11,
|
||||||
.unk07 = 3,
|
.recvFirstMask = 3,
|
||||||
.unk08 = 15,
|
.connSlotFlagMask = 15,
|
||||||
.slotStateMask = 15,
|
.slotStateMask = 15,
|
||||||
.ackMask = 1,
|
.ackMask = 1,
|
||||||
.phaseMask = 3,
|
.phaseMask = 3,
|
||||||
.nMask = 3,
|
.nMask = 3,
|
||||||
.unk0E = 0x7f
|
.framesMask = 0x7f
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1911,7 +1911,7 @@ static void rfu_STC_CHILD_analyzeRecvPacket(void)
|
|||||||
} while (!(frames_remaining & 0x8000));
|
} while (!(frames_remaining & 0x8000));
|
||||||
}
|
}
|
||||||
|
|
||||||
static u16 rfu_STC_analyzeLLSF(u8 bm_slot_id, const u8 *src, u16 last_frame)
|
static u16 rfu_STC_analyzeLLSF(u8 slot_id, const u8 *src, u16 last_frame)
|
||||||
{
|
{
|
||||||
struct RfuLocalStruct llsf_NI;
|
struct RfuLocalStruct llsf_NI;
|
||||||
const struct LLSFStruct *llsf_p;
|
const struct LLSFStruct *llsf_p;
|
||||||
@@ -1925,42 +1925,42 @@ static u16 rfu_STC_analyzeLLSF(u8 bm_slot_id, const u8 *src, u16 last_frame)
|
|||||||
frames = 0;
|
frames = 0;
|
||||||
for (i = 0; i < llsf_p->frameSize; ++i)
|
for (i = 0; i < llsf_p->frameSize; ++i)
|
||||||
frames |= *src++ << 8 * i;
|
frames |= *src++ << 8 * i;
|
||||||
llsf_NI.unk0 = (frames >> llsf_p->unk01) & llsf_p->unk07;
|
llsf_NI.recvFirst = (frames >> llsf_p->recvFirstShift) & llsf_p->recvFirstMask;
|
||||||
llsf_NI.unk1 = (frames >> llsf_p->unk02) & llsf_p->unk08;
|
llsf_NI.connSlotFlag = (frames >> llsf_p->connSlotFlagShift) & llsf_p->connSlotFlagMask;
|
||||||
llsf_NI.slotState = (frames >> llsf_p->slotStateShift) & llsf_p->slotStateMask;
|
llsf_NI.slotState = (frames >> llsf_p->slotStateShift) & llsf_p->slotStateMask;
|
||||||
llsf_NI.ack = (frames >> llsf_p->ackShift) & llsf_p->ackMask;
|
llsf_NI.ack = (frames >> llsf_p->ackShift) & llsf_p->ackMask;
|
||||||
llsf_NI.phase = (frames >> llsf_p->phaseShit) & llsf_p->phaseMask;
|
llsf_NI.phase = (frames >> llsf_p->phaseShit) & llsf_p->phaseMask;
|
||||||
llsf_NI.n = (frames >> llsf_p->nShift) & llsf_p->nMask;
|
llsf_NI.n = (frames >> llsf_p->nShift) & llsf_p->nMask;
|
||||||
llsf_NI.unk6 = (frames & llsf_p->unk0E) & frames;
|
llsf_NI.frame = (frames & llsf_p->framesMask) & frames;
|
||||||
retVal = llsf_NI.unk6 + llsf_p->frameSize;
|
retVal = llsf_NI.frame + llsf_p->frameSize;
|
||||||
if (llsf_NI.unk0 == 0)
|
if (llsf_NI.recvFirst == 0)
|
||||||
{
|
{
|
||||||
if (gRfuLinkStatus->parentChild == MODE_PARENT)
|
if (gRfuLinkStatus->parentChild == MODE_PARENT)
|
||||||
{
|
{
|
||||||
if ((gRfuLinkStatus->connSlotFlag >> bm_slot_id) & 1)
|
if ((gRfuLinkStatus->connSlotFlag >> slot_id) & 1)
|
||||||
{
|
{
|
||||||
if (llsf_NI.slotState == LCOM_UNI)
|
if (llsf_NI.slotState == LCOM_UNI)
|
||||||
{
|
{
|
||||||
rfu_STC_UNI_receive(bm_slot_id, &llsf_NI, src);
|
rfu_STC_UNI_receive(slot_id, &llsf_NI, src);
|
||||||
}
|
}
|
||||||
else if (llsf_NI.ack == 0)
|
else if (llsf_NI.ack == 0)
|
||||||
{
|
{
|
||||||
rfu_STC_NI_receive_Receiver(bm_slot_id, &llsf_NI, src);
|
rfu_STC_NI_receive_Receiver(slot_id, &llsf_NI, src);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for (i = 0; i < RFU_CHILD_MAX; ++i)
|
for (i = 0; i < RFU_CHILD_MAX; ++i)
|
||||||
if (((gRfuSlotStatusNI[i]->send.bmSlot >> bm_slot_id) & 1)
|
if (((gRfuSlotStatusNI[i]->send.bmSlot >> slot_id) & 1)
|
||||||
&& ((gRfuLinkStatus->sendSlotNIFlag >> bm_slot_id) & 1))
|
&& ((gRfuLinkStatus->sendSlotNIFlag >> slot_id) & 1))
|
||||||
break;
|
break;
|
||||||
if (i < RFU_CHILD_MAX)
|
if (i < RFU_CHILD_MAX)
|
||||||
rfu_STC_NI_receive_Sender(i, bm_slot_id, &llsf_NI, src);
|
rfu_STC_NI_receive_Sender(i, slot_id, &llsf_NI, src);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
s32 conSlots = gRfuLinkStatus->connSlotFlag & llsf_NI.unk1;
|
s32 conSlots = gRfuLinkStatus->connSlotFlag & llsf_NI.connSlotFlag;
|
||||||
|
|
||||||
if (conSlots)
|
if (conSlots)
|
||||||
{
|
{
|
||||||
@@ -1990,7 +1990,7 @@ static void rfu_STC_UNI_receive(u8 bm_slot_id, const struct RfuLocalStruct *llsf
|
|||||||
struct UNIRecv *UNI_recv = &slotStatusUNI->recv;
|
struct UNIRecv *UNI_recv = &slotStatusUNI->recv;
|
||||||
|
|
||||||
UNI_recv->errorCode = 0;
|
UNI_recv->errorCode = 0;
|
||||||
if (gRfuSlotStatusUNI[bm_slot_id]->recvBufferSize < llsf_NI->unk6)
|
if (gRfuSlotStatusUNI[bm_slot_id]->recvBufferSize < llsf_NI->frame)
|
||||||
{
|
{
|
||||||
slotStatusUNI->recv.state = SLOT_STATE_RECV_IGNORE;
|
slotStatusUNI->recv.state = SLOT_STATE_RECV_IGNORE;
|
||||||
UNI_recv->errorCode = ERR_RECV_BUFF_OVER;
|
UNI_recv->errorCode = ERR_RECV_BUFF_OVER;
|
||||||
@@ -2011,7 +2011,7 @@ static void rfu_STC_UNI_receive(u8 bm_slot_id, const struct RfuLocalStruct *llsf
|
|||||||
UNI_recv->errorCode = ERR_RECV_DATA_OVERWRITED;
|
UNI_recv->errorCode = ERR_RECV_DATA_OVERWRITED;
|
||||||
}
|
}
|
||||||
UNI_recv->state = SLOT_STATE_RECEIVING;
|
UNI_recv->state = SLOT_STATE_RECEIVING;
|
||||||
size = UNI_recv->dataSize = llsf_NI->unk6;
|
size = UNI_recv->dataSize = llsf_NI->frame;
|
||||||
dest = gRfuSlotStatusUNI[bm_slot_id]->recvBuffer;
|
dest = gRfuSlotStatusUNI[bm_slot_id]->recvBuffer;
|
||||||
gRfuFixed->fastCopyPtr(&src, &dest, size);
|
gRfuFixed->fastCopyPtr(&src, &dest, size);
|
||||||
UNI_recv->newDataFlag = 1;
|
UNI_recv->newDataFlag = 1;
|
||||||
@@ -2138,10 +2138,10 @@ static void rfu_STC_NI_receive_Receiver(u8 bm_slot_id, const struct RfuLocalStru
|
|||||||
{
|
{
|
||||||
if (llsf_NI->n == ((recvSlot->n[llsf_NI->phase] + 1) & 3))
|
if (llsf_NI->n == ((recvSlot->n[llsf_NI->phase] + 1) & 3))
|
||||||
{
|
{
|
||||||
gRfuFixed->fastCopyPtr(&data_p, (u8 **)&recvSlot->now_p[llsf_NI->phase], llsf_NI->unk6);
|
gRfuFixed->fastCopyPtr(&data_p, (u8 **)&recvSlot->now_p[llsf_NI->phase], llsf_NI->frame);
|
||||||
if (recvSlot->state == SLOT_STATE_RECEIVING)
|
if (recvSlot->state == SLOT_STATE_RECEIVING)
|
||||||
recvSlot->now_p[llsf_NI->phase] += 3 * recvSlot->payloadSize;
|
recvSlot->now_p[llsf_NI->phase] += 3 * recvSlot->payloadSize;
|
||||||
recvSlot->remainSize -= llsf_NI->unk6;
|
recvSlot->remainSize -= llsf_NI->frame;
|
||||||
recvSlot->n[llsf_NI->phase] = llsf_NI->n;
|
recvSlot->n[llsf_NI->phase] = llsf_NI->n;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+9
-9
@@ -53,7 +53,7 @@ static void sub_80FAA58(void * a0);
|
|||||||
static void sub_80FAA94(u8 taskId);
|
static void sub_80FAA94(u8 taskId);
|
||||||
static void sub_80FACF0(u8 taskId);
|
static void sub_80FACF0(u8 taskId);
|
||||||
static void GetLinkmanErrorParams(u32 msg);
|
static void GetLinkmanErrorParams(u32 msg);
|
||||||
static void sub_80FB564(s32 a0);
|
static void sub_80FB564(s32 bmConnectedFlag);
|
||||||
static void sub_80FBB74(void);
|
static void sub_80FBB74(void);
|
||||||
static u8 GetPartnerIndexByNameAndTrainerID(const u8 *trainerName, u16 trainerId);
|
static u8 GetPartnerIndexByNameAndTrainerID(const u8 *trainerName, u16 trainerId);
|
||||||
static void RfuReqDisconnectSlot(u32 bmDisconnectSlot);
|
static void RfuReqDisconnectSlot(u32 bmDisconnectSlot);
|
||||||
@@ -354,10 +354,10 @@ static void Task_JoinGroupSearchForParent(u8 taskId)
|
|||||||
break;
|
break;
|
||||||
case 12:
|
case 12:
|
||||||
{
|
{
|
||||||
u8 r5 = 1 << Rfu.child_slot;
|
u8 bmChildSlot = 1 << Rfu.child_slot;
|
||||||
rfu_clearSlot(TYPE_NI_SEND | TYPE_NI_RECV, Rfu.child_slot);
|
rfu_clearSlot(TYPE_NI_SEND | TYPE_NI_RECV, Rfu.child_slot);
|
||||||
rfu_setRecvBuffer(TYPE_UNI, Rfu.child_slot, Rfu.unk_c3f, sizeof(Rfu.unk_c3f));
|
rfu_setRecvBuffer(TYPE_UNI, Rfu.child_slot, Rfu.unk_c3f, sizeof(Rfu.unk_c3f));
|
||||||
rfu_UNI_setSendData(r5, Rfu.unk_4c, sizeof(Rfu.unk_4c));
|
rfu_UNI_setSendData(bmChildSlot, Rfu.unk_4c, sizeof(Rfu.unk_4c));
|
||||||
gTasks[taskId].data[1] = 8;
|
gTasks[taskId].data[1] = 8;
|
||||||
DestroyTask(taskId);
|
DestroyTask(taskId);
|
||||||
if (gUnknown_203AC08.unk_0f == 0)
|
if (gUnknown_203AC08.unk_0f == 0)
|
||||||
@@ -2018,7 +2018,7 @@ static void sub_80FB174(void)
|
|||||||
static void LmanCallback_Parent2(u8 msg, u8 param_count)
|
static void LmanCallback_Parent2(u8 msg, u8 param_count)
|
||||||
{
|
{
|
||||||
u8 i;
|
u8 i;
|
||||||
u8 r6 = 0;
|
u8 bmDisconnectFlag = 0;
|
||||||
switch (msg)
|
switch (msg)
|
||||||
{
|
{
|
||||||
case LMAN_MSG_INITIALIZE_COMPLETED:
|
case LMAN_MSG_INITIALIZE_COMPLETED:
|
||||||
@@ -2041,13 +2041,13 @@ static void LmanCallback_Parent2(u8 msg, u8 param_count)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
r6 |= (1 << i);
|
bmDisconnectFlag |= (1 << i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (r6)
|
if (bmDisconnectFlag)
|
||||||
{
|
{
|
||||||
rfu_REQ_disconnect(r6);
|
rfu_REQ_disconnect(bmDisconnectFlag);
|
||||||
rfu_waitREQComplete();
|
rfu_waitREQComplete();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -2177,13 +2177,13 @@ static void LmanCallback_Child(u8 msg, u8 param_count)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_80FB564(s32 a0)
|
static void sub_80FB564(s32 bmConnectedFlag)
|
||||||
{
|
{
|
||||||
s32 i;
|
s32 i;
|
||||||
|
|
||||||
for (i = 0; i < RFU_CHILD_MAX; i++)
|
for (i = 0; i < RFU_CHILD_MAX; i++)
|
||||||
{
|
{
|
||||||
if ((a0 >> i) & 1)
|
if ((bmConnectedFlag >> i) & 1)
|
||||||
{
|
{
|
||||||
Rfu.unk_cea[i] = 0;
|
Rfu.unk_cea[i] = 0;
|
||||||
Rfu.unk_cee[i] = 0xFF;
|
Rfu.unk_cee[i] = 0xFF;
|
||||||
|
|||||||
Reference in New Issue
Block a user