fix some of the shittiness when trying to connect more than two players

This commit is contained in:
Arisotura 2022-09-04 02:00:12 +02:00
parent 3758062101
commit f41cfd70ab
2 changed files with 7 additions and 4 deletions

View File

@ -1407,7 +1407,9 @@ bool CheckRX(int type) // 0=regular 1=MP replies 2=MP host frames
*(u16*)&RXBuffer[6] = txrate;
*(u16*)&RXBuffer[8] = framelen;
if (((framectl & 0x00FF) == 0x0010) && timestamp)
bool macgood = (RXBuffer[12 + 4] & 0x01) || MACEqual(&RXBuffer[12 + 4], (u8*)&IOPORT(W_MACAddr0));
if (((framectl & 0x00FF) == 0x0010) && timestamp && macgood)
{
// if receiving an association response: get the sync value from the host
@ -1425,7 +1427,7 @@ bool CheckRX(int type) // 0=regular 1=MP replies 2=MP host frames
RXTimestamp = 0;
StartRX();
}
else if (((framectl & 0x00FF) == 0x00C0) && timestamp && IsMPClient)
else if (((framectl & 0x00FF) == 0x00C0) && timestamp && macgood && IsMPClient)
{
IsMPClient = false;
NextSync = 0;
@ -1433,7 +1435,7 @@ bool CheckRX(int type) // 0=regular 1=MP replies 2=MP host frames
RXTimestamp = 0;
StartRX();
}
else if (IsMPClient)
else if (macgood && IsMPClient)
{
// if we are being a MP client, we need to delay this frame until we reach the
// timestamp it came with

View File

@ -555,7 +555,8 @@ u16 RecvReplies(u8* packets, u64 timestamp, u16 aidmask)
}
myinstmask |= (1 << pktheader.SenderID);
if ((myinstmask & curinstmask) == curinstmask)
if (((myinstmask & curinstmask) == curinstmask) ||
((ret & aidmask) == aidmask))
{
// all the clients have sent their reply