- thinned out Blood's network code.

This commit is contained in:
Christoph Oelckers 2020-08-25 23:04:08 +02:00
parent 84b6af24d3
commit 9440ddb68f
5 changed files with 7 additions and 344 deletions

View file

@ -536,14 +536,7 @@ void ProcessFrame(void)
gPlayer[i].input.q16mlook = gFifoInput[gNetFifoTail&255][i].q16mlook; gPlayer[i].input.q16mlook = gFifoInput[gNetFifoTail&255][i].q16mlook;
} }
gNetFifoTail++; gNetFifoTail++;
#if 0
if (!(gFrame&7))
{
CalcGameChecksum();
memcpy(gCheckFifo[gCheckHead[myconnectindex]&255][myconnectindex], gChecksum, sizeof(gChecksum));
gCheckHead[myconnectindex]++;
}
#endif
for (int i = connecthead; i >= 0; i = connectpoint2[i]) for (int i = connecthead; i >= 0; i = connectpoint2[i])
{ {
if (gPlayer[i].input.keyFlags.quit) if (gPlayer[i].input.keyFlags.quit)

View file

@ -485,59 +485,6 @@ extern void G_SetupGlobalPsky(void);
#pragma pack(push,1) #pragma pack(push,1)
#if 0
struct sectortype
{
short wallptr, wallnum;
int ceilingz, floorz;
unsigned short ceilingstat, floorstat;
short ceilingpicnum, ceilingheinum;
signed char ceilingshade;
char ceilingpal, ceilingxpanning, ceilingypanning;
short floorpicnum, floorheinum;
signed char floorshade;
char floorpal, floorxpanning, floorypanning;
char visibility, filler;
unsigned short lotag;
short hitag, extra;
};
struct walltype
{
int x, y;
short point2, nextwall, nextsector;
unsigned short cstat;
short picnum, overpicnum;
signed char shade;
char pal, xrepeat, yrepeat, xpanning, ypanning;
short lotag, hitag, extra;
};
struct spritetype
{
int x, y, z;
short cstat, picnum;
signed char shade;
char pal, clipdist, filler;
unsigned char xrepeat, yrepeat;
signed char xoffset, yoffset;
short sectnum, statnum;
short ang, owner, index, yvel, zvel;
short type, hitag, extra;
};
struct PICANM {
unsigned int animframes : 5;
unsigned int at0_5 : 1;
unsigned int animtype : 2;
signed int xoffset : 8;
signed int yoffset : 8;
unsigned int animspeed : 4;
unsigned int at3_4 : 3; // type
unsigned int at3_7 : 1; // filler
};
#endif
struct LOCATION { struct LOCATION {
int x, y, z; int x, y, z;
int ang; int ang;
@ -590,29 +537,6 @@ inline int DecBy(int a, int b)
return a; return a;
} }
#if 0
inline float IncByF(float a, float b)
{
a += b;
float q = fmod(a, b);
a -= q;
if (q < 0)
a -= b;
return a;
}
inline float DecByF(float a, float b)
{
//a--;
a -= fabs(b)*0.001;
float q = fmod(a, b);
a -= q;
if (q < 0)
a -= b;
return a;
}
#endif
inline int ClipLow(int a, int b) inline int ClipLow(int a, int b)
{ {
if (a < b) if (a < b)

View file

@ -510,9 +510,6 @@ bool GameInterface::LoadGame(FSaveGameNode* node)
gPredictTail = 0; gPredictTail = 0;
gNetFifoMasterTail = 0; gNetFifoMasterTail = 0;
memset(gFifoInput, 0, sizeof(gFifoInput)); memset(gFifoInput, 0, sizeof(gFifoInput));
memset(gChecksum, 0, sizeof(gChecksum));
memset(gCheckFifo, 0, sizeof(gCheckFifo));
memset(gCheckHead, 0, sizeof(gCheckHead));
gSendCheckTail = 0; gSendCheckTail = 0;
gCheckTail = 0; gCheckTail = 0;
gBufferJitter = 0; gBufferJitter = 0;

View file

@ -36,11 +36,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#include "menu.h" #include "menu.h"
#include "gamestate.h" #include "gamestate.h"
extern bool gHaveNetworking;
BEGIN_BLD_NS BEGIN_BLD_NS
char packet[576];
MapRecord *gStartNewGame = 0; MapRecord *gStartNewGame = 0;
PACKETMODE gPacketMode = PACKETMODE_1; PACKETMODE gPacketMode = PACKETMODE_1;
ClockTicks gNetFifoClock = 0; ClockTicks gNetFifoClock = 0;
@ -52,9 +49,6 @@ GINPUT gFifoInput[256][8];
int myMinLag[8]; int myMinLag[8];
int otherMinLag = 0; int otherMinLag = 0;
int myMaxLag = 0; int myMaxLag = 0;
unsigned int gChecksum[4];
unsigned int gCheckFifo[256][8][4];
int gCheckHead[8];
int gSendCheckTail = 0; int gSendCheckTail = 0;
int gCheckTail = 0; int gCheckTail = 0;
int gInitialNetPlayers = 0; int gInitialNetPlayers = 0;
@ -82,14 +76,6 @@ void netResetToSinglePlayer(void)
UpdateNetworkMenus(); UpdateNetworkMenus();
} }
void netSendPacket(int nDest, char *pBuffer, int nSize)
{
}
void netSendPacketAll(char *pBuffer, int nSize)
{
}
void netReset(void) void netReset(void)
{ {
gNetFifoClock = gFrameClock = totalclock = 0; gNetFifoClock = gFrameClock = totalclock = 0;
@ -97,42 +83,15 @@ void netReset(void)
gPredictTail = 0; gPredictTail = 0;
gNetFifoTail = 0; gNetFifoTail = 0;
memset(gNetFifoHead, 0, sizeof(gNetFifoHead)); memset(gNetFifoHead, 0, sizeof(gNetFifoHead));
memset(gCheckFifo, 0, sizeof(gCheckFifo));
memset(myMinLag, 0, sizeof(myMinLag)); memset(myMinLag, 0, sizeof(myMinLag));
otherMinLag = 0; otherMinLag = 0;
myMaxLag = 0; myMaxLag = 0;
memset(gCheckHead, 0, sizeof(gCheckHead));
gSendCheckTail = 0; gSendCheckTail = 0;
gCheckTail = 0; gCheckTail = 0;
bOutOfSync = 0; bOutOfSync = 0;
gBufferJitter = 1; gBufferJitter = 1;
} }
void CalcGameChecksum(void)
{
}
void netCheckSync(void)
{
}
short netGetPacket(short *pSource, char *pMessage)
{
return 0;
}
void netGetPackets(void)
{
}
void netBroadcastPlayerLogoff(int nPlayer)
{
}
void netBroadcastMyLogoff(bool bRestart)
{
}
void netBroadcastPlayerInfo(int nPlayer) void netBroadcastPlayerInfo(int nPlayer)
{ {
PROFILE *pProfile = &gProfile[nPlayer]; PROFILE *pProfile = &gProfile[nPlayer];
@ -144,85 +103,8 @@ void netBroadcastPlayerInfo(int nPlayer)
return; return;
} }
void netBroadcastNewGame(void)
{
}
void netWaitForEveryone(char a1)
{
}
void netMasterUpdate(void)
{
if (myconnectindex != connecthead)
return;
char v4 = 0;
do
{
for (int p = connecthead; p >= 0; p = connectpoint2[p])
if (gNetFifoMasterTail >= gNetFifoHead[p])
{
if (v4)
return;
char *pPacket = packet;
PutPacketByte(pPacket, 254);
for (; p >= 0; p = connectpoint2[p])
netSendPacket(p, packet, pPacket-packet);
return;
}
v4 = 1;
char *pPacket = packet;
PutPacketByte(pPacket, 0);
for (int p = connecthead; p >= 0; p = connectpoint2[p])
{
GINPUT *pInput = &gFifoInput[gNetFifoMasterTail&255][p];
if (pInput->buttonFlags.byte)
pInput->syncFlags.buttonChange = 1;
if (pInput->keyFlags.word)
pInput->syncFlags.keyChange = 1;
if (pInput->useFlags.byte)
pInput->syncFlags.useChange = 1;
if (pInput->newWeapon)
pInput->syncFlags.weaponChange = 1;
if (pInput->q16mlook)
pInput->syncFlags.mlookChange = 1;
PutPacketByte(pPacket, pInput->syncFlags.byte);
PutPacketWord(pPacket, pInput->forward);
PutPacketDWord(pPacket, pInput->q16turn);
PutPacketWord(pPacket, pInput->strafe);
if (pInput->syncFlags.buttonChange)
PutPacketByte(pPacket, pInput->buttonFlags.byte);
if (pInput->syncFlags.keyChange)
PutPacketWord(pPacket, pInput->keyFlags.word);
if (pInput->syncFlags.useChange)
PutPacketByte(pPacket, pInput->useFlags.byte);
if (pInput->syncFlags.weaponChange)
PutPacketByte(pPacket, pInput->newWeapon);
if (pInput->syncFlags.mlookChange)
PutPacketDWord(pPacket, pInput->q16mlook);
}
if ((gNetFifoMasterTail&15) == 0)
{
for (int p = connectpoint2[connecthead]; p >= 0; p = connectpoint2[p])
PutPacketByte(pPacket, ClipRange(myMinLag[p], -128, 127));
for (int p = connecthead; p >= 0; p = connectpoint2[p])
myMinLag[p] = 0x7fffffff;
}
while (gSendCheckTail != gCheckHead[myconnectindex])
{
PutPacketBuffer(pPacket, gCheckFifo[gSendCheckTail&255][myconnectindex], 16);
gSendCheckTail++;
}
for (int p = connectpoint2[connecthead]; p >= 0; p = connectpoint2[p])
netSendPacket(p, packet, pPacket-packet);
gNetFifoMasterTail++;
} while (1);
}
void netGetInput(void) void netGetInput(void)
{ {
if (numplayers > 1)
netGetPackets();
for (int p = connecthead; p >= 0; p = connectpoint2[p]) for (int p = connecthead; p >= 0; p = connectpoint2[p])
if (gNetFifoHead[myconnectindex]-200 > gNetFifoHead[p]) if (gNetFifoHead[myconnectindex]-200 > gNetFifoHead[p])
return; return;
@ -243,81 +125,6 @@ void netGetInput(void)
} }
return; return;
} }
for (int p = connecthead; p >= 0; p = connectpoint2[p])
{
if (p != myconnectindex)
{
int nLag = gNetFifoHead[myconnectindex]-1-gNetFifoHead[p];
myMinLag[p] = ClipHigh(nLag, myMinLag[p]);
myMaxLag = ClipLow(nLag, myMaxLag);
}
}
if (((gNetFifoHead[myconnectindex]-1)&15) == 0)
{
int t = myMaxLag-gBufferJitter;
myMaxLag = 0;
if (t > 0)
gBufferJitter += (3+t)>>2;
else if (t < 0)
gBufferJitter -= (1-t)>>2;
}
if (myconnectindex != connecthead)
{
char *pPacket = packet;
PutPacketByte(pPacket, 1);
if (input.buttonFlags.byte)
input.syncFlags.buttonChange = 1;
if (input.keyFlags.word)
input.syncFlags.keyChange = 1;
if (input.useFlags.byte)
input.syncFlags.useChange = 1;
if (input.newWeapon)
input.syncFlags.weaponChange = 1;
if (input.q16mlook)
input.syncFlags.mlookChange = 1;
PutPacketByte(pPacket, input.syncFlags.byte);
PutPacketWord(pPacket, input.forward);
PutPacketDWord(pPacket, input.q16turn);
PutPacketWord(pPacket, input.strafe);
if (input.syncFlags.buttonChange)
PutPacketByte(pPacket, input.buttonFlags.byte);
if (input.syncFlags.keyChange)
PutPacketWord(pPacket, input.keyFlags.word);
if (input.syncFlags.useChange)
PutPacketByte(pPacket, input.useFlags.byte);
if (input.syncFlags.weaponChange)
PutPacketByte(pPacket, input.newWeapon);
if (input.syncFlags.mlookChange)
PutPacketDWord(pPacket, input.q16mlook);
if (((gNetFifoHead[myconnectindex]-1)&15) == 0)
{
int t = myMinLag[connecthead]-otherMinLag;
if (klabs(t) > 2)
{
if (klabs(t) > 8)
{
if (t < 0)
t++;
t >>= 1;
}
else
t = ksgn(t);
totalclock -= t<<2;
otherMinLag += t;
myMinLag[connecthead] -= t;
}
for (int p = connecthead; p >= 0; p = connectpoint2[p])
myMinLag[p] = 0x7fffffff;
}
while (gSendCheckTail != gCheckHead[myconnectindex])
{
PutPacketBuffer(pPacket, gCheckFifo[gSendCheckTail&255][myconnectindex], 16);
gSendCheckTail++;
}
netSendPacket(connecthead, packet, pPacket-packet);
return;
}
netMasterUpdate();
} }
void netInitialize(bool bConsole) void netInitialize(bool bConsole)

View file

@ -43,7 +43,6 @@ enum NETWORKMODE {
#define kNetDefaultPort 23513 #define kNetDefaultPort 23513
extern char packet[576];
extern MapRecord *gStartNewGame; extern MapRecord *gStartNewGame;
extern PACKETMODE gPacketMode; extern PACKETMODE gPacketMode;
extern ClockTicks gNetFifoClock; extern ClockTicks gNetFifoClock;
@ -55,9 +54,6 @@ extern GINPUT gFifoInput[256][8];
extern int myMinLag[8]; extern int myMinLag[8];
extern int otherMinLag; extern int otherMinLag;
extern int myMaxLag; extern int myMaxLag;
extern unsigned int gChecksum[4];
extern unsigned int gCheckFifo[256][8][4];
extern int gCheckHead[8];
extern int gSendCheckTail; extern int gSendCheckTail;
extern int gCheckTail; extern int gCheckTail;
extern int gInitialNetPlayers; extern int gInitialNetPlayers;
@ -72,73 +68,19 @@ extern char gNetAddress[32];
extern int gNetPort; extern int gNetPort;
inline void PutPacketByte(char *&p, int a2)
{
//dassert(p - packet + 1 < sizeof(packet));
*p++ = a2;
}
inline void PutPacketWord(char *&p, int a2)
{
//dassert(p - packet + 2 < sizeof(packet));
*(short*)p = a2;
p += 2;
}
inline void PutPacketDWord(char *&p, int a2)
{
//dassert(p - packet + 4 < sizeof(packet));
*(int*)p = a2;
p += 4;
}
inline void PutPacketBuffer(char *&p, const void *pBuffer, int size)
{
//dassert(p + size < packet + sizeof(packet));
memcpy(p, pBuffer, size);
p += size;
}
inline char GetPacketByte(char *&p)
{
return *p++;
}
inline short GetPacketWord(char *&p)
{
short t = *(short*)p;
p += 2;
return t;
}
inline int GetPacketDWord(char *&p)
{
int t = *(int*)p;
p += 4;
return t;
}
inline void GetPacketBuffer(char *&p, void *pBuffer, int size)
{
//dassert(p + size < packet + sizeof(packet));
memcpy(pBuffer, p, size);
p += size;
}
void netReset(void); void netReset(void);
void netResetToSinglePlayer(void); void netResetToSinglePlayer(void);
void netWaitForEveryone(char a1); inline void netWaitForEveryone(char a1) {}
void netGetPackets(void); inline void netGetPackets(void) {}
void CalcGameChecksum(void); inline void CalcGameChecksum(void) {}
void netBroadcastPlayerLogoff(int nPlayer); inline void netBroadcastPlayerLogoff(int nPlayer) {}
void netBroadcastMyLogoff(bool bRestart); inline void netBroadcastMyLogoff(bool bRestart) {}
void netInitialize(bool bConsole); void netInitialize(bool bConsole);
void netBroadcastPlayerInfo(int nPlayer); void netBroadcastPlayerInfo(int nPlayer);
void netCheckSync(void); inline void netCheckSync(void) {}
void netMasterUpdate(void); void netMasterUpdate(void);
void netGetInput(void); void netGetInput(void);
void netPlayerQuit(int nPlayer); void netPlayerQuit(int nPlayer);
void netDeinitialize(void); void netDeinitialize(void);
void netBroadcastNewGame(void);
END_BLD_NS END_BLD_NS