diff --git a/src/netcode/client_connection.c b/src/netcode/client_connection.c
index 6c350ad702f27cc45a12ce82e90790b13ac3cf87..ace0bcc63bc7dd8dd42f00ac484ba4de05d21711 100644
--- a/src/netcode/client_connection.c
+++ b/src/netcode/client_connection.c
@@ -325,6 +325,7 @@ static void CL_DrawConnectionStatus(void)
 
 static boolean CL_AskFileList(INT32 firstfile)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	netbuffer->packettype = PT_TELLFILESNEEDED;
 	netbuffer->u.filesneedednum = firstfile;
 
@@ -340,6 +341,7 @@ boolean CL_SendJoin(void)
 {
 	UINT8 localplayers = 1;
 	char const *player2name;
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	if (netgame)
 		CONS_Printf(M_GetText("Sending join request...\n"));
 	netbuffer->packettype = PT_CLIENTJOIN;
@@ -372,6 +374,7 @@ boolean CL_SendJoin(void)
 static void SendAskInfo(INT32 node)
 {
 	const tic_t asktime = I_GetTime();
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	netbuffer->packettype = PT_ASKINFO;
 	netbuffer->u.askinfo.version = VERSION;
 	netbuffer->u.askinfo.time = (tic_t)LONG(asktime);
@@ -1354,6 +1357,7 @@ void CL_ConnectToServer(void)
 void PT_ServerInfo(SINT8 node)
 {
 	// compute ping in ms
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	const tic_t ticnow = I_GetTime();
 	const tic_t ticthen = (tic_t)LONG(netbuffer->u.serverinfo.time);
 	const tic_t ticdiff = (ticnow - ticthen)*1000/NEWTICRATE;
@@ -1380,6 +1384,7 @@ static boolean ServerOnly(SINT8 node)
 
 void PT_MoreFilesNeeded(SINT8 node)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	if (server && serverrunning)
 	{ // But wait I thought I'm the server?
 		Net_CloseConnection(node);
@@ -1398,6 +1403,7 @@ void PT_MoreFilesNeeded(SINT8 node)
 // Negative response of client join request
 void PT_ServerRefuse(SINT8 node)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	if (server && serverrunning)
 	{ // But wait I thought I'm the server?
 		Net_CloseConnection(node);
@@ -1435,6 +1441,7 @@ void PT_ServerRefuse(SINT8 node)
 // Positive response of client join request
 void PT_ServerCFG(SINT8 node)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	if (server && serverrunning && node != servernode)
 	{ // but wait I thought I'm the server?
 		Net_CloseConnection(node);
diff --git a/src/netcode/d_clisrv.c b/src/netcode/d_clisrv.c
index cd442bd9c8d07b135dfb636bc0a198ee5d9cfb30..02b991fc3d6d12374cd9aea40930981f28ca1d81 100644
--- a/src/netcode/d_clisrv.c
+++ b/src/netcode/d_clisrv.c
@@ -640,6 +640,7 @@ void CL_RemovePlayer(INT32 playernum, kickreason_t reason)
 //
 void D_QuitNetGame(void)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	mousegrabbedbylua = true;
 	I_UpdateMouseGrab();
 
@@ -864,6 +865,7 @@ static void PT_ServerShutdown(SINT8 node)
 
 static void PT_Login(SINT8 node, INT32 netconsole)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	(void)node;
 
 	if (client)
@@ -997,6 +999,7 @@ If they're not lagging, decrement the timer by 1. Of course, reset all of this i
 
 static inline void PingUpdate(void)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	boolean laggers[MAXPLAYERS];
 	UINT8 numlaggers = 0;
 	memset(laggers, 0, sizeof(boolean) * MAXPLAYERS);
@@ -1070,6 +1073,7 @@ static inline void PingUpdate(void)
 
 static void PT_Ping(SINT8 node, INT32 netconsole)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	// Only accept PT_PING from the server.
 	if (node != servernode)
 	{
@@ -1112,6 +1116,7 @@ static void PT_BasicKeepAlive(SINT8 node, INT32 netconsole)
 // Used during wipes to tell the server that a node is still connected
 static void CL_SendClientKeepAlive(void)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	netbuffer->packettype = PT_BASICKEEPALIVE;
 
 	HSendPacket(servernode, false, 0, 0);
@@ -1119,6 +1124,7 @@ static void CL_SendClientKeepAlive(void)
 
 static void SV_SendServerKeepAlive(void)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	for (INT32 n = 1; n < MAXNETNODES; n++)
 	{
 		if (netnodes[n].ingame)
@@ -1139,6 +1145,7 @@ static void SV_SendServerKeepAlive(void)
   */
 static void HandlePacketFromAwayNode(SINT8 node)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	if (node != servernode)
 		DEBFILE(va("Received packet from unknown host %d\n", node));
 
@@ -1178,6 +1185,7 @@ static void HandlePacketFromAwayNode(SINT8 node)
   */
 static void HandlePacketFromPlayer(SINT8 node)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	INT32 netconsole;
 
 	if (dedicated && node == 0)
diff --git a/src/netcode/d_clisrv.h b/src/netcode/d_clisrv.h
index 86af61e9e02eb9528b759ce635970a96e3a28ee4..b7f682e18510f5fdbd67387a37f3a9fdb578dec8 100644
--- a/src/netcode/d_clisrv.h
+++ b/src/netcode/d_clisrv.h
@@ -34,9 +34,6 @@ void Command_Numnodes(void);
 
 extern INT32 mapchangepending;
 
-// Points inside doomcom
-extern doomdata_t *netbuffer;
-
 #define BASEPACKETSIZE      offsetof(doomdata_t, u)
 #define BASESERVERTICSSIZE  offsetof(doomdata_t, u.serverpak.cmds[0])
 
diff --git a/src/netcode/d_net.c b/src/netcode/d_net.c
index 3b151f20d18bd156b5385b500267244513e32610..04e0d3bc16d915af2cf83e6e5997e9408f967961 100644
--- a/src/netcode/d_net.c
+++ b/src/netcode/d_net.c
@@ -54,8 +54,6 @@ INT16 extratics;
 
 /// \brief network packet
 doomcom_t *doomcom = NULL;
-/// \brief network packet data, points inside doomcom
-doomdata_t *netbuffer = NULL;
 
 #ifdef DEBUGFILE
 FILE *debugfile = NULL; // put some net info in a file during the game
@@ -198,6 +196,7 @@ FUNCMATH static inline INT32 cmpack(UINT8 a, UINT8 b)
   */
 static boolean GetFreeAcknum(UINT8 *freeack)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	node_t *node = &nodes[doomcom->remotenode];
 	INT32 numfreeslot = 0;
 	INT32 i;
@@ -265,6 +264,7 @@ static void RemoveAck(node_t *node, INT32 i)
 // We have got a packet, proceed the ack request and ack return
 static boolean Processackpak(void)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	boolean goodpacket = true;
 	node_t *node = &nodes[doomcom->remotenode];
 
@@ -340,6 +340,7 @@ void Net_ConnectionTimeout(INT32 node)
 // Resend the data if needed
 void Net_AckTicker(void)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	for (INT32 nodei = 0; nodei < numnetnodes; nodei++)
 	{
 		for (INT32 i = 0; i < MAXACKPACKETS; i++)
@@ -460,6 +461,7 @@ static void InitAck(void)
 // remove a node, clear all ack from this node and reset askret
 void Net_CloseConnection(INT32 node)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	boolean forceclose = (node & FORCECLOSE) != 0;
 
 	if (node == -1)
@@ -516,6 +518,7 @@ void Net_CloseConnection(INT32 node)
 //
 static UINT32 NetbufferChecksum(void)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	UINT32 c = 0x1234567;
 	const INT32 l = doomcom->datalength - 4;
 	const UINT8 *buf = (UINT8 *)netbuffer + 4;
@@ -609,6 +612,7 @@ static const char *packettypename[NUMPACKETTYPE] =
 
 static void DebugPrintpacket(const char *header)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	fprintf(debugfile, "%-12s (node %d,ack %d,ackret %d,size %d) type(%d) : %s\n",
 		header, doomcom->remotenode, netbuffer->ack, netbuffer->ackreturn, doomcom->datalength,
 		netbuffer->packettype, packettypename[netbuffer->packettype]);
@@ -770,6 +774,7 @@ void Command_Droprate(void)
 
 static boolean ShouldDropPacket(void)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	return (packetdropquantity[netbuffer->packettype])
 		|| (packetdroprate != 0 && rand() < (((double)RAND_MAX) * (packetdroprate / 100.f))) || packetdroprate == 100;
 }
@@ -780,6 +785,7 @@ static boolean ShouldDropPacket(void)
 //
 boolean HSendPacket(INT32 node, boolean reliable, UINT8 acknum, size_t packetlength)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	doomcom->datalength = (INT16)(packetlength + BASEPACKETSIZE);
 	if (node == 0) // Packet is to go back to us
 	{
@@ -870,6 +876,7 @@ boolean HSendPacket(INT32 node, boolean reliable, UINT8 acknum, size_t packetlen
 //
 boolean HGetPacket(void)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	//boolean nodejustjoined;
 
 	// Get a packet from self
@@ -1076,8 +1083,6 @@ boolean D_CheckNetGame(void)
 	if (numnetnodes > MAXNETNODES)
 		I_Error("Too many nodes (%d), max:%d", numnetnodes, MAXNETNODES);
 
-	netbuffer = (doomdata_t *)(void *)&doomcom->data;
-
 #ifdef DEBUGFILE
 	if (M_CheckParm("-debugfile"))
 	{
diff --git a/src/netcode/d_netcmd.c b/src/netcode/d_netcmd.c
index 90ffe81d720778d9cb6deb6b54e4df2528b8a20c..85b1236110c8e2955a7cf52f0786ef6713144869 100644
--- a/src/netcode/d_netcmd.c
+++ b/src/netcode/d_netcmd.c
@@ -37,6 +37,7 @@
 #include "d_clisrv.h"
 #include "server_connection.h"
 #include "net_command.h"
+#include "i_net.h"
 #include "d_net.h"
 #include "../v_video.h"
 #include "../d_main.h"
@@ -3009,6 +3010,7 @@ static void Command_Login_f(void)
 	CONS_Alert(CONS_NOTICE, "Remote administration commands are not supported in this build.\n");
 #else
 	const char *pw;
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 
 	if (!netgame)
 	{
diff --git a/src/netcode/d_netfil.c b/src/netcode/d_netfil.c
index de354f0df6ad394da219e50bfabd03ea5f93e464..a341279118b877ec999b0ebfc363eda0ffca49e2 100644
--- a/src/netcode/d_netfil.c
+++ b/src/netcode/d_netfil.c
@@ -166,6 +166,7 @@ enum
   */
 UINT8 *PutFileNeeded(UINT16 firstfile)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	UINT8 count = 0;
 	UINT8 *p_start = netbuffer->packettype == PT_MOREFILESNEEDED ? netbuffer->u.filesneededcfg.files : netbuffer->u.serverinfo.fileneeded;
 	UINT8 *p = p_start;
@@ -361,6 +362,7 @@ void CL_AbortDownloadResume(void)
   */
 boolean CL_SendFileRequest(void)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	char *p;
 	INT64 totalfreespaceneeded = 0, availablefreespace;
 
@@ -428,6 +430,7 @@ boolean CL_SendFileRequest(void)
 // get request filepak and put it on the send queue
 void PT_RequestFile(SINT8 node)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	UINT8 *p = netbuffer->u.textcmd;
 
 	if (client || !cv_downloading.value)
@@ -649,6 +652,7 @@ void AddLuaFileTransfer(const char *filename, const char *mode)
 
 static void SV_PrepareSendLuaFileToNextNode(void)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	UINT8 success = 1;
 
     // Find a client to send the file to
@@ -753,6 +757,7 @@ void SV_AbortLuaFileTransfer(INT32 node)
 
 void CL_PrepareDownloadLuaFile(void)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	// If there is no transfer in the list, this normally means the server
 	// called io.open before us, so we have to wait until we call it too
 	if (!luafiletransfers)
@@ -1004,6 +1009,7 @@ static void SV_EndFileSend(INT32 node)
   */
 void FileSendTicker(void)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	static INT32 currentnode = 0;
 	filetx_pak *p;
 	size_t fragmentsize;
@@ -1154,6 +1160,7 @@ void FileSendTicker(void)
 
 void PT_FileAck(SINT8 node)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	fileack_pak *packet = &netbuffer->u.fileack;
 	filetran_t *trans = &transfer[node];
 
@@ -1208,6 +1215,7 @@ void PT_FileAck(SINT8 node)
 
 void PT_FileReceived(SINT8 node)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	filetx_t *trans = transfer[node].txlist;
 
 	if (server && trans && netbuffer->u.filereceived == trans->fileid)
@@ -1216,6 +1224,7 @@ void PT_FileReceived(SINT8 node)
 
 static void SendAckPacket(fileack_pak *packet, UINT8 fileid)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	size_t packetsize;
 
 	packetsize = sizeof(*packet) + packet->numsegments * sizeof(*packet->segments);
@@ -1295,6 +1304,7 @@ void FileReceiveTicker(void)
 
 static void OpenNewFileForDownload(fileneeded_t *file, const char *filename)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	file->file = fopen(filename, "wb");
 	if (!file->file)
 		I_Error("Can't create file %s: %s", filename, strerror(errno));
@@ -1310,6 +1320,7 @@ static void OpenNewFileForDownload(fileneeded_t *file, const char *filename)
 
 void PT_FileFragment(SINT8 node, INT32 netconsole)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	if (netnodes[node].ingame)
 	{
 		// Only accept PT_FILEFRAGMENT from the server.
diff --git a/src/netcode/gamestate.c b/src/netcode/gamestate.c
index b8bd6e46a7491f8c1dc45f6e6aacf225d26f6844..9575fb67d6166562162259592d3acdb30fa8353e 100644
--- a/src/netcode/gamestate.c
+++ b/src/netcode/gamestate.c
@@ -155,6 +155,7 @@ void SV_SavedGame(void)
 
 void CL_LoadReceivedSavegame(boolean reloading)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	save_t savebuffer;
 	size_t decompressedlen;
 	char tmpsave[256];
@@ -251,6 +252,7 @@ void CL_ReloadReceivedSavegame(void)
 
 void Command_ResendGamestate(void)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	SINT8 playernum;
 
 	if (COM_Argc() == 1)
@@ -297,6 +299,7 @@ void PT_ReceivedGamestate(SINT8 node)
 
 void PT_WillResendGamestate(SINT8 node)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	(void)node;
 
 	char tmpsave[256];
diff --git a/src/netcode/i_net.h b/src/netcode/i_net.h
index 11da77ce52b0b88035d2058372f2b1fe4ea638ee..a2598e4739a492224adf7d7e95ce83f785ab14d9 100644
--- a/src/netcode/i_net.h
+++ b/src/netcode/i_net.h
@@ -48,6 +48,8 @@ typedef struct
 	char data[MAXPACKETLENGTH];
 } ATTRPACK doomcom_t;
 
+#define DOOMCOM_DATA(d) (doomdata_t *)&(d)->data
+
 #if defined(_MSC_VER)
 #pragma pack()
 #endif
diff --git a/src/netcode/net_command.c b/src/netcode/net_command.c
index 91813fe484268d95263807d621c8d5099da4f0ab..41bfa3116c916b5f4510dde0028d6cdcbc0a8735 100644
--- a/src/netcode/net_command.c
+++ b/src/netcode/net_command.c
@@ -304,6 +304,7 @@ size_t TotalTextCmdPerTic(tic_t tic)
 
 void PT_TextCmd(SINT8 node, INT32 netconsole)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	if (client)
 		return;
 
@@ -410,6 +411,7 @@ void CL_CopyNetCommandsFromServerPacket(tic_t tic, UINT8 **buf)
 
 void CL_SendNetCommands(void)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	// Send extra data if needed
 	if (localtextcmd[0])
 	{
diff --git a/src/netcode/server_connection.c b/src/netcode/server_connection.c
index cff83796a10ef59417c772161ddeb124570a45ac..c0fa7dc8202f9610f57853e7b6b04cc662b5b515 100644
--- a/src/netcode/server_connection.c
+++ b/src/netcode/server_connection.c
@@ -95,6 +95,7 @@ GetRefuseReason (INT32 node)
 
 static void SV_SendServerInfo(INT32 node, tic_t servertime)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	UINT8 *p;
 
 	netbuffer->packettype = PT_SERVERINFO;
@@ -173,6 +174,7 @@ static void SV_SendServerInfo(INT32 node, tic_t servertime)
 
 static void SV_SendPlayerInfo(INT32 node)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	netbuffer->packettype = PT_PLAYERINFO;
 
 	for (UINT8 i = 0; i < MAXPLAYERS; i++)
@@ -240,6 +242,7 @@ static void SV_SendPlayerInfo(INT32 node)
   */
 static boolean SV_SendServerConfig(INT32 node)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	boolean waspacketsent;
 
 	netbuffer->packettype = PT_SERVERCFG;
@@ -349,6 +352,7 @@ static void SV_AddPlayer(SINT8 node, const char *name)
 
 static void SV_SendRefuse(INT32 node, const char *reason)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	strcpy(netbuffer->u.serverrefuse.reason, reason);
 
 	netbuffer->packettype = PT_SERVERREFUSE;
@@ -359,6 +363,7 @@ static void SV_SendRefuse(INT32 node, const char *reason)
 static const char *
 GetRefuseMessage (SINT8 node, INT32 rejoinernum)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	clientconfig_pak *cc = &netbuffer->u.clientcfg;
 
 	boolean rejoining = (rejoinernum != -1);
@@ -435,6 +440,7 @@ GetRefuseMessage (SINT8 node, INT32 rejoinernum)
   */
 void PT_ClientJoin(SINT8 node)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	char names[MAXSPLITSCREENPLAYERS][MAXPLAYERNAME + 1];
 	INT32 numplayers = netbuffer->u.clientcfg.localplayers;
 	INT32 rejoinernum;
@@ -494,6 +500,7 @@ void PT_AskInfoViaMS(SINT8 node)
 
 void PT_TellFilesNeeded(SINT8 node)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	if (server && serverrunning)
 	{
 		UINT8 *p;
@@ -513,6 +520,7 @@ void PT_TellFilesNeeded(SINT8 node)
 
 void PT_AskInfo(SINT8 node)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	if (server && serverrunning)
 	{
 		SV_SendServerInfo(node, (tic_t)LONG(netbuffer->u.askinfo.time));
diff --git a/src/netcode/tic_command.c b/src/netcode/tic_command.c
index 66f6bb4252bb5a040700380ec73cb1c03786660b..cd224ba1b36e64fa1973b0aef68bb1a3b566f9c7 100644
--- a/src/netcode/tic_command.c
+++ b/src/netcode/tic_command.c
@@ -115,6 +115,7 @@ static void CheckTiccmdHacks(INT32 playernum, tic_t tic)
 static void CheckConsistancy(SINT8 nodenum, tic_t tic)
 {
 	netnode_t *node = &netnodes[nodenum];
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	INT16 neededconsistancy = consistancy[tic%BACKUPTICS];
 	INT16 clientconsistancy = SHORT(netbuffer->u.clientpak.consistancy);
 
@@ -151,6 +152,7 @@ static void CheckConsistancy(SINT8 nodenum, tic_t tic)
 void PT_ClientCmd(SINT8 nodenum, INT32 netconsole)
 {
 	netnode_t *node = &netnodes[nodenum];
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	tic_t realend, realstart;
 
 	if (client)
@@ -213,6 +215,7 @@ void PT_ClientCmd(SINT8 nodenum, INT32 netconsole)
 void PT_ServerTics(SINT8 node, INT32 netconsole)
 {
 	tic_t realend, realstart;
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	servertics_pak *packet = &netbuffer->u.serverpak;
 
 	if (!netnodes[node].ingame)
@@ -271,6 +274,7 @@ void CL_SendClientCmd(void)
 {
 	size_t packetsize = 0;
 	boolean mis = false;
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 
 	netbuffer->packettype = PT_CLIENTCMD;
 
@@ -355,6 +359,7 @@ static tic_t SV_CalculateNumTicsForPacket(SINT8 nodenum, tic_t firsttic, tic_t l
 // Sends tic/net commands from firstticstosend to maketic-1
 void SV_SendTics(void)
 {
+	doomdata_t *netbuffer = DOOMCOM_DATA(doomcom);
 	tic_t realfirsttic, lasttictosend;
 
 	// Send to all clients except yourself