shithub: choc

Download patch

ref: 0774dce204c2c01622c59819e2a29590a1b50e46
parent: 0df2cb80cf03d7259746834220d209b306a8c503
author: Simon Howard <[email protected]>
date: Thu Sep 4 19:22:39 EDT 2008

Remove unused files.

Subversion-branch: /branches/raven-branch
Subversion-revision: 1196

--- a/src/heretic/d_netbak.c
+++ /dev/null
@@ -1,797 +1,0 @@
-
-// I_pcnet.m
-//
-// Modified 12-21-94 by Chris Rhinehart for use with multiple ticdups
-//		actually, it wasn't modified, but rather we are currently using this
-// 	older version of D_NET.C, since the new one doesn't seem to work with
-//		ticdup set to greater than one.
-
-#include "DoomDef.h"
-#include "P_local.h"
-#include "soundst.h"
-
-#define	NCMD_EXIT		0x80000000
-#define	NCMD_RETRANSMIT	0x40000000
-#define	NCMD_SETUP		0x20000000
-#define	NCMD_CHECKSUM	0x0fffffff
-
-/*
-if more space needs to be crunched out of the protocol...
-
-1	drone
-2	player
-8	tic
-5	numtics
-
-#define	NCMD_EXIT		0x80000000
-#define	NCMD_RETRANSMIT	0x40000000			// a retransmit will have 0 tics
-#define	NCMD_DRONE		0x20000000
-#define	NCMD_PLAYER		0x18000000
-#define	NCMD_PLAYERSHIFT	27
-#define	NCMD_TIC		0x00ff0000
-#define	NCMD_TICSHIFT	16
-#define	NCMD_NUMTICS	0x0000ff00
-#define	NCMD_NUMTICSSHIFT	8
-#define	NCMD_CHECKSUM	0x000000ff
-
-*/
-
-
-
-
-
-doomcom_t		*doomcom;
-doomdata_t		*netbuffer;		// points inside doomcom
-
-
-/*
-==============================================================================
-
-							NETWORKING
-
-gametic is the tic about to (or currently being) run
-maketic is the tick that hasn't had control made for it yet
-nettics[] has the maketics for all players
-
-a gametic cannot be run until nettics[] > gametic for all players
-
-==============================================================================
-*/
-
-#define	RESENDCOUNT	10
-#define	PL_DRONE	0x80				// bit flag in doomdata->player
-
-ticcmd_t		localcmds[BACKUPTICS];
-
-ticcmd_t        netcmds[MAXPLAYERS][BACKUPTICS];
-int         	nettics[MAXNETNODES];
-boolean			nodeingame[MAXNETNODES];	// set false as nodes leave game
-boolean			remoteresend[MAXNETNODES];	// set when local needs tics
-int				resendto[MAXNETNODES];			// set when remote needs tics
-int				resendcount[MAXNETNODES];
-
-int				nodeforplayer[MAXPLAYERS];
-
-int             gametime;
-int             maketic;
-int				lastnettic, skiptics;
-int				ticdup;
-
-void D_ProcessEvents (void);
-void G_BuildTiccmd (ticcmd_t *cmd);
-void D_DoAdvanceDemo (void);
-
-boolean			reboundpacket;
-doomdata_t		reboundstore;
-
-
-int	NetbufferSize (void)
-{
-	return (int)&(((doomdata_t *)0)->cmds[netbuffer->numtics]);
-}
-
-unsigned NetbufferChecksum (void)
-{
-	unsigned		c;
-	int		i,l;
-
-	c = 0x1234567;
-
-	l = (NetbufferSize () - (int)&(((doomdata_t *)0)->retransmitfrom))/4;
-	for (i=0 ; i<l ; i++)
-		c += ((unsigned *)&netbuffer->retransmitfrom)[i] * (i+1);
-
-	return c & NCMD_CHECKSUM;
-}
-
-int ExpandTics (int low)
-{
-	int	delta;
-
-	delta = low - (maketic&0xff);
-
-	if (delta >= -64 && delta <= 64)
-		return (maketic&~0xff) + low;
-	if (delta > 64)
-		return (maketic&~0xff) - 256 + low;
-	if (delta < -64)
-		return (maketic&~0xff) + 256 + low;
-
-	I_Error ("ExpandTics: strange value %i at maketic %i",low,maketic);
-	return 0;
-}
-
-
-//============================================================================
-
-
-/*
-==============
-=
-= HSendPacket
-=
-==============
-*/
-
-void HSendPacket (int node, int flags)
-{
-	netbuffer->checksum = NetbufferChecksum () | flags;
-
-	if (!node)
-	{
-		reboundstore = *netbuffer;
-		reboundpacket = true;
-		return;
-	}
-
-	if (!netgame)
-		I_Error ("Tried to transmit to another node");
-
-	doomcom->command = CMD_SEND;
-	doomcom->remotenode = node;
-	doomcom->datalength = NetbufferSize ();
-
-if (debugfile)
-{
-	int		i;
-	int		realretrans;
-	if (netbuffer->checksum & NCMD_RETRANSMIT)
-		realretrans = ExpandTics (netbuffer->retransmitfrom);
-	else
-		realretrans = -1;
-	fprintf (debugfile,"send (%i + %i, R %i) [%i] "
-	,ExpandTics(netbuffer->starttic),netbuffer->numtics, realretrans, doomcom->datalength);
-	for (i=0 ; i<doomcom->datalength ; i++)
-		fprintf (debugfile,"%i ",((byte *)netbuffer)[i]);
-	fprintf (debugfile,"\n");
-}
-
-	I_NetCmd ();
-}
-
-/*
-==============
-=
-= HGetPacket
-=
-= Returns false if no packet is waiting
-=
-==============
-*/
-
-boolean HGetPacket (void)
-{
-	if (reboundpacket)
-	{
-		*netbuffer = reboundstore;
-		doomcom->remotenode = 0;
-		reboundpacket = false;
-		return true;
-	}
-
-	if (!netgame)
-		return false;
-
-	doomcom->command = CMD_GET;
-	I_NetCmd ();
-	if (doomcom->remotenode == -1)
-		return false;
-
-	if (doomcom->datalength != NetbufferSize ())
-	{
-		if (debugfile)
-			fprintf (debugfile,"bad packet length %i\n",doomcom->datalength);
-		return false;
-	}
-
-	if (NetbufferChecksum () != (netbuffer->checksum&NCMD_CHECKSUM) )
-	{
-		if (debugfile)
-			fprintf (debugfile,"bad packet checksum\n");
-		return false;
-	}
-
-if (debugfile)
-{
-	int		realretrans;
-			int	i;
-
-	if (netbuffer->checksum & NCMD_SETUP)
-		fprintf (debugfile,"setup packet\n");
-	else
-	{
-		if (netbuffer->checksum & NCMD_RETRANSMIT)
-			realretrans = ExpandTics (netbuffer->retransmitfrom);
-		else
-			realretrans = -1;
-		fprintf (debugfile,"get %i = (%i + %i, R %i)[%i] ",doomcom->remotenode,
-		ExpandTics(netbuffer->starttic),netbuffer->numtics, realretrans, doomcom->datalength);
-		for (i=0 ; i<doomcom->datalength ; i++)
-			fprintf (debugfile,"%i ",((byte *)netbuffer)[i]);
-		fprintf (debugfile,"\n");
-	}
-}
-	return true;
-}
-
-
-/*
-===================
-=
-= GetPackets
-=
-===================
-*/
-
-char    exitmsg[80];
-
-void GetPackets (void)
-{
-	int		netconsole;
-	int		netnode;
-	int		netdrone;
-	int		j;
-	ticcmd_t	*src, *dest;
-	int		dupedstart, dupedend;
-	int		skiptics;
-	int		realstart;
-
-	while (HGetPacket ())
-	{
-		if (netbuffer->checksum & NCMD_SETUP)
-			continue;		// extra setup packet
-
-		netdrone = netbuffer->player & PL_DRONE;
-		netconsole = netbuffer->player & ~PL_DRONE;
-		netnode = doomcom->remotenode;
-		//
-		// to save bytes, only the low byte of tic numbers are sent
-		// Figure out what the rest of the bytes are
-		//
-		realstart = ExpandTics (netbuffer->starttic);
-		dupedstart = realstart*doomcom->ticdup;
-		dupedend = (realstart+netbuffer->numtics)*doomcom->ticdup;
-
-		//
-		// check for exiting the game
-		//
-		if (netbuffer->checksum & NCMD_EXIT)
-		{
-			if (!nodeingame[netnode])
-				continue;
-			nodeingame[netnode] = false;
-			if (!netdrone)
-			{
-				playeringame[netconsole] = false;
-				strcpy (exitmsg, "PLAYER 1 HAS LEFT THE GAME");
-				exitmsg[7] += netconsole;
-				P_SetMessage(&players[consoleplayer], exitmsg, true);
-				UpdateState |= I_MESSAGES;
-				S_StartSound(NULL, sfx_chat);
-			}
-			continue;
-		}
-
-		//
-		// drone packets are just notifications
-		//
-		if (netdrone)
-		{
-			nettics[netnode] = dupedend;
-			continue;
-		}
-
-		nodeforplayer[netconsole] = netnode;
-
-		//
-		// check for retransmit request
-		//
-		if ( resendcount[netnode] <= 0
-		&& (netbuffer->checksum & NCMD_RETRANSMIT) )
-		{
-			resendto[netnode] = ExpandTics(netbuffer->retransmitfrom);
-if (debugfile)
-fprintf (debugfile,"retransmit from %i\n", resendto[netnode]);
-			resendcount[netnode] = RESENDCOUNT;
-		}
-		else
-			resendcount[netnode]--;
-
-		//
-		// check for out of order / duplicated packet
-		//
-		if (dupedend == nettics[netnode])
-			continue;
-
-		if (dupedend < nettics[netnode])
-		{
-if (debugfile)
-fprintf (debugfile,"out of order packet (%i + %i)\n" ,realstart,netbuffer->numtics);
-			continue;
-		}
-
-		//
-		// check for a missed packet
-		//
-		if (dupedstart > nettics[netnode])
-		{
-		// stop processing until the other system resends the missed tics
-if (debugfile)
-fprintf (debugfile,"missed tics from %i (%i - %i)\n", netnode, dupedstart, nettics[netnode]);
-			remoteresend[netnode] = true;
-			continue;
-		}
-
-//
-// update command store from the packet
-//
-		remoteresend[netnode] = false;
-
-		skiptics = nettics[netnode]/doomcom->ticdup - realstart;
-		src = &netbuffer->cmds[skiptics];
-
-		while (nettics[netnode] < dupedend)
-		{
-			for (j=0 ; j<doomcom->ticdup ; j++)
-			{
-				dest = &netcmds[netconsole][nettics[netnode]%BACKUPTICS];
-				nettics[netnode]++;
-				*dest = *src;
-				src->chatchar = 0;
-				if (src->buttons & BT_SPECIAL)
-					src->buttons = 0;
-			}
-			src++;
-		}
-	}
-}
-
-/*
-=============
-=
-= NetUpdate
-=
-= Builds ticcmds for console player
-= sends out a packet
-=============
-*/
-
-void NetUpdate (void)
-{
-	int             nowtime;
-	int             newtics;
-	int				i,j;
-	int				gameticdiv;
-	int				realstart;
-
-	if (singletics)
-		return;         // singletic update is syncronous
-
-//
-// check time
-//
-	nowtime = I_GetTime ()/doomcom->ticdup;
-	newtics = nowtime - gametime;
-	gametime = nowtime;
-	if (newtics <= 0)                       // nothing new to update
-		goto listen;
-
-	if (skiptics <= newtics)
-	{
-		newtics -= skiptics;
-		skiptics = 0;
-	}
-	else
-	{
-		skiptics -= newtics;
-		newtics = 0;
-	}
-
-
-	netbuffer->player = consoleplayer;
-	if (doomcom->drone)
-		netbuffer->player |= PL_DRONE;
-
-//
-// drone packets
-//
-	if (doomcom->drone)
-	{
-		I_StartTic ();
-		D_ProcessEvents ();
-		goto sendit;
-	}
-
-//
-// build new ticcmds for console player
-//
-	gameticdiv = (gametic+doomcom->ticdup-1)/doomcom->ticdup;
-	for (i=0 ; i<newtics ; i++)
-	{
-		I_StartTic ();
-		D_ProcessEvents ();
-		if (maketic - gameticdiv >= BACKUPTICS/2 /* /doomcom->ticdup */- 1)
-		{
-			newtics = i;
-			break;          // can't hold any more
-		}
-//printf ("mk:%i ",maketic);
-		G_BuildTiccmd (&localcmds[maketic%BACKUPTICS]);
-		maketic++;
-	}
-
-//
-// send the packet to the other nodes
-//
-sendit:
-	for (i=0 ; i<doomcom->numnodes ; i++)
-		if (nodeingame[i])
-		{
-			if (doomcom->drone)
-			{
-				netbuffer->starttic = realstart = maketic + BACKUPTICS/2;
-				netbuffer->numtics = 0;
-			}
-			else
-			{
-				netbuffer->starttic = realstart = resendto[i];
-				netbuffer->numtics = maketic - realstart;
-				resendto[i] = maketic - doomcom->extratics;
-			}
-
-			if (netbuffer->numtics > BACKUPTICS)
-				I_Error ("NetUpdate: netbuffer->numtics > BACKUPTICS");
-
-			for (j=0 ; j< netbuffer->numtics ; j++)
-				netbuffer->cmds[j] =
-					localcmds[(realstart+j)%BACKUPTICS];
-
-			if (remoteresend[i])
-			{
-				netbuffer->retransmitfrom = nettics[i]/doomcom->ticdup;
-				HSendPacket (i, NCMD_RETRANSMIT);
-			}
-			else
-			{
-				netbuffer->retransmitfrom = 0;
-				HSendPacket (i, 0);
-			}
-		}
-
-//
-// listen for other packets
-//
-listen:
-
-	GetPackets ();
-}
-
-
-/*
-=====================
-=
-= CheckAbort
-=
-=====================
-*/
-
-void CheckAbort (void)
-{
-	event_t *ev;
-
-	I_WaitVBL(2);
-
-	I_StartTic ();
-	for ( ; eventtail != eventhead
-	; eventtail = (++eventtail)&(MAXEVENTS-1) )
-	{
-		ev = &events[eventtail];
-		if (ev->type == ev_keydown && ev->data1 == KEY_ESCAPE)
-			I_Error ("Network game synchronization aborted.");
-	}
-}
-
-/*
-=====================
-=
-= D_ArbitrateNetStart
-=
-=====================
-*/
-
-void D_ArbitrateNetStart (void)
-{
-	int		i;
-	boolean	gotinfo[MAXNETNODES];
-
-	autostart = true;
-	memset (gotinfo,0,sizeof(gotinfo));
-
-	if (doomcom->consoleplayer)
-	{	// listen for setup info from key player
-		//printf ("listening for network start info...\n");
-		while (1)
-		{
-			CheckAbort ();
-			if (!HGetPacket ())
-				continue;
-			if (netbuffer->checksum & NCMD_SETUP)
-			{
-				if (netbuffer->player != VERSION)
-					I_Error ("Different HERETIC versions cannot play a net game!");
-				startskill = netbuffer->retransmitfrom & 15;
-				deathmatch = (netbuffer->retransmitfrom & 0x80) > 0;
-				startmap = netbuffer->starttic & 15;
-				startepisode = netbuffer->starttic >> 4;
-				return;
-			}
-		}
-	}
-	else
-	{	// key player, send the setup info
-//		printf ("sending network start info...\n");
-		do
-		{
-			CheckAbort ();
-			for (i=0 ; i<doomcom->numnodes ; i++)
-			{
-				netbuffer->retransmitfrom = startskill;
-				if (deathmatch)
-					netbuffer->retransmitfrom |= 0x80;
-				netbuffer->starttic = startepisode * 16 + startmap;
-				netbuffer->player = VERSION;
-				netbuffer->numtics = 0;
-				HSendPacket (i, NCMD_SETUP);
-			}
-
-			while (HGetPacket ())
-			{
-//printf ("got packet\n");
-				gotinfo[netbuffer->player&0x7f] = true;
-			}
-
-			for (i=1 ; i<doomcom->numnodes ; i++)
-				if (!gotinfo[i])
-					break;
-		} while (i < doomcom->numnodes);
-	}
-}
-
-/*
-===================
-=
-= D_CheckNetGame
-=
-= Works out player numbers among the net participants
-===================
-*/
-
-extern	int			viewangleoffset;
-
-void D_CheckNetGame (void)
-{
-	int             i;
-
-	for (i=0 ; i<MAXNETNODES ; i++)
-	{
-		nodeingame[i] = false;
-       	nettics[i] = 0;
-		remoteresend[i] = false;	// set when local needs tics
-		resendto[i] = 0;			// which tic to start sending
-	}
-
-// I_InitNetwork sets doomcom and netgame
-	I_InitNetwork ();
-	if (doomcom->id != DOOMCOM_ID)
-		I_Error ("Doomcom buffer invalid!");
-	netbuffer = &doomcom->data;
-	consoleplayer = displayplayer = doomcom->consoleplayer;
-	if (netgame)
-		D_ArbitrateNetStart ();
-//printf ("startskill %i  deathmatch: %i  startmap: %i  startepisode: %i\n", startskill, deathmatch, startmap, startepisode);
-
-// read values out of doomcom
-	ticdup = doomcom->ticdup;
-
-	for (i=0 ; i<doomcom->numplayers ; i++)
-		playeringame[i] = true;
-	for (i=0 ; i<doomcom->numnodes ; i++)
-		nodeingame[i] = true;
-
-//printf ("player %i of %i (%i nodes)\n", consoleplayer+1, doomcom->numplayers, doomcom->numnodes);
-
-}
-
-/*
-==================
-=
-= D_QuitNetGame
-=
-= Called before quitting to leave a net game without hanging the
-= other players
-=
-==================
-*/
-
-void D_QuitNetGame (void)
-{
-	int             i, j;
-
-	if (debugfile)
-		fclose (debugfile);
-
-	if (!netgame || !usergame || consoleplayer == -1)
-		return;
-
-// send a bunch of packets for security
-	netbuffer->player = consoleplayer;
-	if (doomcom->drone)
-		netbuffer->player |= PL_DRONE;
-	netbuffer->numtics = 0;
-	for (i=0 ; i<4 ; i++)
-	{
-		for (j=1 ; j<doomcom->numnodes ; j++)
-			if (nodeingame[j])
-				HSendPacket (j, NCMD_EXIT);
-		I_WaitVBL (1);
-	}
-}
-
-
-
-/*
-===============
-=
-= TryRunTics
-=
-===============
-*/
-
-int	frametics[4], frameon;
-int	frameskip[4];
-int		oldnettics;
-extern	boolean	advancedemo;
-
-void TryRunTics (void)
-{
-	int             i;
-	int             lowtic, nextlowest;
-	int             entertic;
-	int	static		oldentertics;
-	int				realtics, availabletics;
-	int				counts;
-	int				numplaying;
-
-//
-// get real tics
-//
-	entertic = I_GetTime ();
-	realtics = entertic - oldentertics;
-	oldentertics = entertic;
-
-//
-// get available tics
-//
-	NetUpdate ();
-
-	lowtic = nextlowest = MAXINT;
-	numplaying = 0;
-	for (i=0 ; i<doomcom->numnodes ; i++)
-		if (nodeingame[i])
-		{
-			numplaying++;
-			if (nettics[i] < lowtic)
-			{
-				nextlowest = lowtic;
-				lowtic = nettics[i];
-			}
-			else if (nettics[i] < nextlowest)
-				nextlowest = nettics[i];
-		}
-	availabletics = lowtic - gametic;
-
-
-//
-// decide how many tics to run
-//
-	if (realtics < availabletics-1)
-		counts = realtics+1;
-	else if (realtics < availabletics)
-		counts = realtics;
-	else
-		counts = availabletics;
-	if (counts < 1)
-		counts = 1;
-
-	frameon++;
-
-if (debugfile)
-	fprintf (debugfile,"=======real: %i  avail: %i  game: %i\n",realtics, availabletics,counts);
-
-//=============================================================================
-//
-//	ideally nettics[0] should be 1 - 3 tics above lowtic
-//	if we are consistantly slower, speed up time
-//	drones should never hold up the other players
-//
-	for (i=0 ; i<MAXPLAYERS ; i++)
-		if (playeringame[i])
-			break;
-	if (consoleplayer == i)
-	{	// the key player does not adapt
-	}
-	else
-	{
-		if (nettics[0] <= nettics[nodeforplayer[i]])
-		{
-			gametime--;
-//			printf ("-");
-		}
-		frameskip[frameon&3] = (oldnettics > nettics[nodeforplayer[i]]);
-		oldnettics = nettics[0];
-		if (frameskip[0] && frameskip[1] && frameskip[2] && frameskip[3])
-		{
-			skiptics = 1;
-//			printf ("+");
-		}
-	}
-//=============================================================================
-
-//
-// wait for new tics if needed
-//
-	while (lowtic < gametic + counts)
-	{
-
-		NetUpdate ();
-		lowtic = MAXINT;
-
-		for (i=0 ; i<doomcom->numnodes ; i++)
-			if (nodeingame[i] && nettics[i] < lowtic)
-				lowtic = nettics[i];
-
-		if (lowtic < gametic)
-			I_Error ("TryRunTics: lowtic < gametic");
-
-		// don't stay in here forever -- give the menu a chance to work
-		if (I_GetTime () - entertic >= 20)
-		{
-			MN_Ticker ();
-			return;
-		}
-	}
-
-
-//
-// run the tics
-//
-	while (counts--)
-	{
-		if (advancedemo)
-			D_DoAdvanceDemo ();
-		MN_Ticker ();
-		G_Ticker ();
-		NetUpdate ();					// check for new console commands
-		gametic++;
-	}
-}
--- a/src/heretic/drcoord.h
+++ /dev/null
@@ -1,18 +1,0 @@
-
-#import <appkit/appkit.h>
-
-@interface DRCoord:Object
-{
-	id	players_i;
-	id	console_i;
-	id	skill_i;
-	id	episode_i;
-	id	map_i;
-}
-
-- newGame: sender;
-- scale1: sender;
-- scale2: sender;
-- scale4: sender;
-
-@end
--- a/src/heretic/dstrings.bak
+++ /dev/null
@@ -1,406 +1,0 @@
-
-// DStrings.h
-
-//---------------------------------------------------------------------------
-//
-// M_menu.c
-//
-//---------------------------------------------------------------------------
-#define PRESSKEY 	"press a key."
-#define PRESSYN 	"press y or n."
-#define TXT_PAUSED "PAUSED"
-#define QUITMSG		"are you sure you want to\nquit this great game?"
-#define LOADNET 	"you can't do load while in a net game!\n\n"PRESSKEY
-#define QLOADNET	"you can't quickload during a netgame!\n\n"PRESSKEY
-#define QSAVESPOT	"you haven't picked a quicksave slot yet!\n\n"PRESSKEY
-#define SAVEDEAD 	"you can't save if you aren't playing!\n\n"PRESSKEY
-#define QSPROMPT 	"quicksave over your game named\n\n'%s'?\n\n"PRESSYN
-#define QLPROMPT	"do you want to quickload the game named"\
-					"\n\n'%s'?\n\n"PRESSYN
-#define NEWGAME		"you can't start a new game\n"\
-					"while in a network game.\n\n"PRESSKEY
-#define NIGHTMARE	"are you sure? this skill level\n"\
-					"isn't even remotely fair.\n\n"PRESSYN
-#define SWSTRING	"this is the shareware version of doom.\n\n"\
-					"you need to order the entire trilogy.\n\n"PRESSKEY
-#define MSGOFF		"Messages OFF"
-#define MSGON		"Messages ON"
-#define NETEND		"you can't end a netgame!\n\n"PRESSKEY
-#define ENDGAME		"are you sure you want to end the game?\n\n"PRESSYN
-#define DOSY		"(press y to quit to dos.)"
-#define DETAILHI	"High detail"
-#define DETAILLO	"Low detail"
-#define GAMMALVL0	"Gamma correction OFF"
-#define GAMMALVL1	"Gamma correction level 1"
-#define GAMMALVL2	"Gamma correction level 2"
-#define GAMMALVL3	"Gamma correction level 3"
-#define GAMMALVL4	"Gamma correction level 4"
-#define	EMPTYSTRING	"empty slot"
-
-//---------------------------------------------------------------------------
-//
-// P_inter.c
-//
-//---------------------------------------------------------------------------
-
-// Keys
-
-#define TXT_GOTBLUEKEY			"BLUE KEY"
-#define TXT_GOTYELLOWKEY		"YELLOW KEY"
-#define TXT_GOTGREENKEY			"GREEN KEY"
-
-// Artifacts
-
-#define TXT_ARTIHEALTH			"QUARTZ FLASK"
-#define TXT_ARTIFLY				"WINGS OF WRATH"
-#define TXT_ARTIINVULNERABILITY	"RING OF INVINCIBILITY"
-#define TXT_ARTITOMEOFPOWER		"TOME OF POWER"
-#define TXT_ARTIINVISIBILITY	"SHADOWSPHERE"
-#define TXT_ARTIEGG				"MORPH OVUM"
-#define TXT_ARTISUPERHEALTH		"MYSTIC URN"
-#define TXT_ARTITORCH			"TORCH"
-#define TXT_ARTIFIREBOMB		"TIME BOMB OF THE ANCIENTS"
-#define TXT_ARTITELEPORT		"CHAOS DEVICE"
-
-// Items
-
-#define TXT_ITEMHEALTH			"CRYSTAL VIAL"
-#define TXT_ITEMBAGOFHOLDING	"BAG OF HOLDING"
-#define TXT_ITEMSHIELD1			"SILVER SHIELD"
-#define TXT_ITEMSHIELD2			"ENCHANTED SHIELD"
-#define TXT_ITEMSUPERMAP		"MAP SCROLL"
-
-// Ammo
-
-#define TXT_AMMOGOLDWAND1		"WAND CRYSTAL"
-#define TXT_AMMOGOLDWAND2		"CRYSTAL GEODE"
-#define TXT_AMMOMACE1			"MACE SPHERES"
-#define TXT_AMMOMACE2			"PILE OF MACE SPHERES"
-#define TXT_AMMOCROSSBOW1		"ETHEREAL ARROWS"
-#define TXT_AMMOCROSSBOW2		"QUIVER OF ETHEREAL ARROWS"
-#define TXT_AMMOBLASTER1		"CLAW ORB"
-#define TXT_AMMOBLASTER2		"ENERGY ORB"
-#define TXT_AMMOSKULLROD1		"LESSER RUNES"
-#define TXT_AMMOSKULLROD2		"GREATER RUNES"
-#define TXT_AMMOPHOENIXROD1		"FLAME ORB"
-#define TXT_AMMOPHOENIXROD2		"INFERNO ORB"
-
-// Weapons
-
-#define TXT_WPNMACE				"FIREMACE"
-#define TXT_WPNCROSSBOW			"ETHEREAL CROSSBOW"
-#define TXT_WPNBLASTER			"DRAGON CLAW"
-#define TXT_WPNSKULLROD			"HELLSTAFF"
-#define TXT_WPNPHOENIXROD		"PHOENIX ROD"
-#define TXT_WPNGAUNTLETS		"GAUNTLETS OF THE NECROMANCER"
-
-//---------------------------------------------------------------------------
-//
-// SB_bar.c
-//
-//---------------------------------------------------------------------------
-
-#define TXT_CHEATGODON			"GOD MODE ON"
-#define TXT_CHEATGODOFF			"GOD MODE OFF"
-#define TXT_CHEATNOCLIPON		"NO CLIPPING ON"
-#define TXT_CHEATNOCLIPOFF		"NO CLIPPING OFF"
-#define TXT_CHEATWEAPONS		"ALL WEAPONS"
-#define TXT_CHEATFLIGHTON		"FLIGHT ON"
-#define TXT_CHEATFLIGHTOFF		"FLIGHT OFF"
-#define TXT_CHEATPOWERON		"POWER ON"
-#define TXT_CHEATPOWEROFF		"POWER OFF"
-#define TXT_CHEATHEALTH			"FULL HEALTH"
-#define TXT_CHEATKEYS			"ALL KEYS"
-#define TXT_CHEATSOUNDON		"SOUND DEBUG ON"
-#define TXT_CHEATSOUNDOFF		"SOUND DEBUG OFF"
-#define TXT_CHEATTICKERON		"TICKER ON"
-#define TXT_CHEATTICKEROFF		"TICKER OFF"
-#define TXT_CHEATARTIFACTS1		"CHOOSE AN ARTIFACT ( A - J )"
-#define TXT_CHEATARTIFACTS2		"HOW MANY ( 1 - 9 )"
-#define TXT_CHEATARTIFACTS3		"YOU GOT IT"
-#define TXT_CHEATARTIFACTSFAIL	"BAD INPUT"
-#define TXT_CHEATWARP			"LEVEL WARP"
-#define TXT_CHEATSCREENSHOT		"SCREENSHOT"
-#define TXT_CHEATCHICKENON		"CHICKEN ON"
-#define TXT_CHEATCHICKENOFF		"CHICKEN OFF"
-#define TXT_CHEATMASSACRE		"MASSACRE"
-#define TXT_CHEATIDDQD			"TRYING TO CHEAT, EH?  NOW YOU DIE!"
-#define TXT_CHEATIDKFA			"CHEATER - YOU DON'T DESERVE WEAPONS"
-
-//---------------------------------------------------------------------------
-//
-// P_doors.c
-//
-//---------------------------------------------------------------------------
-
-#define TXT_NEEDBLUEKEY			"YOU NEED A BLUE KEY TO OPEN THIS DOOR"
-#define TXT_NEEDGREENKEY		"YOU NEED A GREEN KEY TO OPEN THIS DOOR"
-#define TXT_NEEDYELLOWKEY		"YOU NEED A YELLOW KEY TO OPEN THIS DOOR"
-
-//---------------------------------------------------------------------------
-//
-// G_game.c
-//
-//---------------------------------------------------------------------------
-
-#define TXT_GAMESAVED			"GAME SAVED"
-
-//---------------------------------------------------------------------------
-//
-// HU_stuff.c
-//
-//---------------------------------------------------------------------------
-
-#define HUSTR_E1M1	"E1M1: Hangar"
-#define HUSTR_E1M2	"E1M2: Nuclear Plant"
-#define HUSTR_E1M3	"E1M3: Toxin Refinery"
-#define HUSTR_E1M4	"E1M4: Command Control"
-#define HUSTR_E1M5	"E1M5: Phobos Lab"
-#define HUSTR_E1M6	"E1M6: Central Processing"
-#define HUSTR_E1M7	"E1M7: Computer Station"
-#define HUSTR_E1M8	"E1M8: Phobos Anomaly"
-#define HUSTR_E1M9	"E1M9: Military Base"
-
-#define HUSTR_E2M1	"E2M1: Deimos Anomaly"
-#define HUSTR_E2M2	"E2M2: Containment Area"
-#define HUSTR_E2M3	"E2M3: Refinery"
-#define HUSTR_E2M4	"E2M4: Deimos Lab"
-#define HUSTR_E2M5	"E2M5: Command Center"
-#define HUSTR_E2M6	"E2M6: Halls of the Damned"
-#define HUSTR_E2M7	"E2M7: Spawning Vats"
-#define HUSTR_E2M8	"E2M8: Tower of Babel"
-#define HUSTR_E2M9	"E2M9: Fortress of Mystery"
-
-#define HUSTR_E3M1	"E3M1: Hell Keep"
-#define HUSTR_E3M2	"E3M2: Slough of Despair"
-#define HUSTR_E3M3	"E3M3: Pandemonium"
-#define HUSTR_E3M4	"E3M4: House of Pain"
-#define HUSTR_E3M5	"E3M5: Unholy Cathedral"
-#define HUSTR_E3M6	"E3M6: Mt. Erebus"
-#define HUSTR_E3M7	"E3M7: Limbo"
-#define HUSTR_E3M8	"E3M8: Dis"
-#define HUSTR_E3M9	"E3M9: Warrens"
-
-#define HUSTR_CHATMACRO1	"I'm ready to kick butt!"
-#define HUSTR_CHATMACRO2	"I'm OK."
-#define HUSTR_CHATMACRO3	"I'm not looking too good!"
-#define HUSTR_CHATMACRO4	"Help!"
-#define HUSTR_CHATMACRO5	"You suck!"
-#define HUSTR_CHATMACRO6	"Next time, scumbag..."
-#define HUSTR_CHATMACRO7	"Come here!"
-#define HUSTR_CHATMACRO8	"I'll take care of it."
-#define HUSTR_CHATMACRO9	"Yes"
-#define HUSTR_CHATMACRO0	"No"
-
-#define HUSTR_TALKTOSELF1	"You mumble to yourself"
-#define HUSTR_TALKTOSELF2	"Who's there?"
-#define HUSTR_TALKTOSELF3	"You scare yourself"
-#define HUSTR_TALKTOSELF4	"You start to rave"
-#define HUSTR_TALKTOSELF5	"You've lost it..."
-
-#define HUSTR_MESSAGESENT	"[Message Sent]"
-
-// The following should NOT be changed unless it seems
-// just AWFULLY necessary
-
-#define HUSTR_PLRGREEN	"Green: "
-#define HUSTR_PLRINDIGO	"Indigo: "
-#define HUSTR_PLRBROWN	"Brown: "
-#define HUSTR_PLRRED		"Red: "
-
-#define HUSTR_KEYGREEN	'g'
-#define HUSTR_KEYINDIGO	'i'
-#define HUSTR_KEYBROWN	'b'
-#define HUSTR_KEYRED		'r'
-
-//---------------------------------------------------------------------------
-//
-// AM_map.c
-//
-//---------------------------------------------------------------------------
-
-#define AMSTR_FOLLOWON		"FOLLOW MODE ON"
-#define AMSTR_FOLLOWOFF		"FOLLOW MODE OFF"
-
-#define AMSTR_GRIDON		"Grid ON"
-#define AMSTR_GRIDOFF		"Grid OFF"
-
-#define AMSTR_MARKEDSPOT	"Marked Spot"
-#define AMSTR_MARKSCLEARED	"All Marks Cleared"
-
-//---------------------------------------------------------------------------
-//
-// ST_stuff.c
-//
-//---------------------------------------------------------------------------
-
-#define STSTR_DQDON			"Degreelessness Mode On"
-#define STSTR_DQDOFF		"Degreelessness Mode Off"
-
-#define STSTR_KFAADDED		"Very Happy Ammo Added"
-
-#define STSTR_NCON			"No Clipping Mode ON"
-#define STSTR_NCOFF			"No Clipping Mode OFF"
-
-#define STSTR_BEHOLD		"inVuln, Str, Inviso, Rad, Allmap, or Lite-amp"
-#define STSTR_BEHOLDX		"Power-up Toggled"
-
-#define STSTR_CHOPPERS		"... doesn't suck - GM"
-#define STSTR_CLEV			"Changing Level..."
-
-//---------------------------------------------------------------------------
-//
-// F_finale.c
-//
-//---------------------------------------------------------------------------
-
-#define E1TEXT	"with the destruction of the iron\n"\
-					"liches and their minions, the last\n"\
-					"of the undead are cleared from this\n"\
-					"plane of existence.\n\n"\
-					"those creatures had to come from\n"\
-					"somewhere, though, and you have the\n"\
-					"sneaky suspicion that the fiery\n"\
-					"portal of hell's maw opens onto\n"\
-					"their home dimension.\n\n"\
-					"to make sure that more undead\n"\
-					"(or even worse things) don't come\n"\
-					"through, you'll have to seal hell's\n"\
-					"maw from the other side. of course\n"\
-					"this means you may get stuck in a\n"\
-					"very unfriendly world, but no one\n"\
-					"ever said being a Heretic was easy!"
-
-#define E2TEXT "the mighty maulotaurs have proved\n"\
-					"to be no match for you, and as\n"\
-					"their steaming corpses slide to the\n"\
-					"ground you feel a sense of grim\n"\
-					"satisfaction that they have been\n"\
-					"destroyed.\n\n"\
-					"the gateways which they guarded\n"\
-					"have opened, revealing what you\n"\
-					"hope is the way home. but as you\n"\
-					"step through, mocking laughter\n"\
-					"rings in your ears.\n\n"\
-					"was some other force controlling\n"\
-					"the maulotaurs? could there be even\n"\
-					"more horrific beings through this\n"\
-					"gate? the sweep of a crystal dome\n"\
-					"overhead where the sky should be is\n"\
-					"certainly not a good sign...."
-
-#define E3TEXT	"the death of d'sparil has loosed\n"\
-					"the magical bonds holding his\n"\
-					"creatures on this plane, their\n"\
-					"dying screams overwhelming his own\n"\
-					"cries of agony.\n\n"\
-					"your oath of vengeance fulfilled,\n"\
-					"you enter the portal to your own\n"\
-					"world, mere moments before the dome\n"\
-					"shatters into a million pieces.\n\n"\
-					"but if d'sparil's power is broken\n"\
-					"forever, why don't you feel safe?\n"\
-					"was it that last shout just before\n"\
-					"his death, the one that sounded\n"\
-					"like a curse? or a summoning? you\n"\
-					"can't really be sure, but it might\n"\
-					"just have been a scream.\n\n"\
-					"then again, what about the other\n"\
-					"serpent riders?"
-
-#define E4TEXT		"you thought you would return to your\n"\
-					"own world after d'sparil died, but\n"\
-					"his final act banished you to his\n"\
-					"own plane. here you entered the\n"\
-					"shattered remnants of lands\n"\
-					"conquered by d'sparil. you defeated\n"\
-					"the last guardians of these lands,\n"\
-					"but now you stand before the gates\n"\
-					"to d'sparil's stronghold. until this\n"\
-					"moment you had no doubts about your\n"\
-					"ability to face anything you might\n"\
-					"encounter, but beyond this portal\n"\
-					"lies the very heart of the evil\n"\
-					"which invaded your world. d'sparil\n"\
-					"might be dead, but the pit where he\n"\
-					"was spawned remains. now you must\n"\
-					"enter that pit in the hopes of\n"\
-					"finding a way out. and somewhere,\n"\
-					"in the darkest corner of d'sparil's\n"\
-					"demesne, his personal bodyguards\n"\
-					"await your arrival ..."
-
-#define E5TEXT		"as the final maulotaur bellows his\n"\
-					"death-agony, you realize that you\n"\
-					"have never come so close to your own\n"\
-					"destruction. not even the fight with\n"\
-					"d'sparil and his disciples had been\n"\
-					"this desperate. grimly you stare at\n"\
-					"the gates which open before you,\n"\
-					"wondering if they lead home, or if\n"\
-					"they open onto some undreamed-of\n"\
-					"horror. you find yourself wondering\n"\
-					"if you have the strength to go on,\n"\
-					"if nothing but death and pain await\n"\
-					"you. but what else can you do, if\n"\
-					"the will to fight is gone? can you\n"\
-					"force yourself to continue in the\n"\
-					"face of such despair? do you have\n"\
-					"the courage? you find, in the end,\n"\
-					"that it is not within you to\n"\
-					"surrender without a fight. eyes\n"\
-					"wide, you go to meet your fate."
-
-/*
-#define E1TEXT	"Once you beat the big badasses and\n"\
-				"clean out the moon base you're supposed\n"\
-				"to win, aren't you? Aren't you? Where's\n"\
-				"your fat reward and ticket home? What\n"\
-				"the hell is this? It's not supposed to\n"\
-				"end this way!\n"\
-				"\n" \
-				"It stinks like rotten meat, but looks\n"\
-				"like the lost Deimos base.  Looks like\n"\
-				"you're stuck on The Shores of Hell.\n"\
-				"The only way out is through.\n"\
-				"\n"\
-				"To continue the DOOM experience, play\n"\
-				"The Shores of Hell and its amazing\n"\
-				"sequel, Inferno!\n"
-
-#define E2TEXT	"You've done it! The hideous cyber-\n"\
-				"demon lord that ruled the lost Deimos\n"\
-				"moon base has been slain and you\n"\
-				"are triumphant! But ... where are\n"\
-				"you? You clamber to the edge of the\n"\
-				"moon and look down to see the awful\n"\
-				"truth.\n" \
-				"\n"\
-				"Deimos floats above Hell itself!\n"\
-				"You've never heard of anyone escaping\n"\
-				"from Hell, but you'll make the bastards\n"\
-				"sorry they ever heard of you! Quickly,\n"\
-				"you rappel down to  the surface of\n"\
-				"Hell.\n"\
-				"\n" \
-				"Now, it's on to the final chapter of\n"\
-				"DOOM! -- Inferno."
-
-#define E3TEXT	"The loathsome spiderdemon that\n"\
-				"masterminded the invasion of the moon\n"\
-				"bases and caused so much death has had\n"\
-				"its ass kicked for all time.\n"\
-				"\n"\
-				"A hidden doorway opens and you enter.\n"\
-				"You've proven too tough for Hell to\n"\
-				"contain, and now Hell at last plays\n"\
-				"fair -- for you emerge from the door\n"\
-				"to see the green fields of Earth!\n"\
-				"Home at last.\n" \
-				"\n"\
-				"You wonder what's been happening on\n"\
-				"Earth while you were battling evil\n"\
-				"unleashed. It's good that no Hell-\n"\
-				"spawn could have come through that\n"\
-				"door with you ..."
-*/
--- a/src/heretic/g_old.c
+++ /dev/null
@@ -1,1819 +1,0 @@
-
-// G_game.c
-
-#include <string.h>
-#include "DoomDef.h"
-#include "P_local.h"
-#include "soundst.h"
-
-// Macros
-
-#define SAVE_GAME_TERMINATOR 0x1d
-
-// Functions
-
-boolean G_CheckDemoStatus (void);
-void G_ReadDemoTiccmd (ticcmd_t *cmd);
-void G_WriteDemoTiccmd (ticcmd_t *cmd);
-void G_PlayerReborn (int player);
-void G_InitNew (skill_t skill, int episode, int map);
-
-void G_DoReborn (int playernum);
-
-void G_DoLoadLevel (void);
-void G_DoNewGame (void);
-void G_DoLoadGame (void);
-void G_DoPlayDemo (void);
-void G_DoCompleted (void);
-void G_DoVictory (void);
-void G_DoWorldDone (void);
-void G_DoSaveGame (void);
-
-void D_PageTicker(void);
-void D_AdvanceDemo(void);
-
-struct
-{
-	mobjtype_t type;
-	int speed[2];
-} MonsterMissileInfo[] =
-{
-	{ MT_IMPBALL, 10, 20 },
-	{ MT_MUMMYFX1, 9, 18 },
-	{ MT_KNIGHTAXE, 9, 18 },
-	{ MT_REDAXE, 9, 18 },
-	{ MT_BEASTBALL, 12, 20 },
-	{ MT_WIZFX1, 18, 24 },
-	{ MT_SNAKEPRO_A, 14, 20 },
-	{ MT_SNAKEPRO_B, 14, 20 },
-	{ MT_HEADFX1, 13, 20 },
-	{ MT_HEADFX3, 10, 18 },
-	{ MT_MNTRFX1, 20, 26 },
-	{ MT_MNTRFX2, 14, 20 },
-	{ MT_SRCRFX1, 20, 28 },
-	{ MT_SOR2FX1, 20, 28 },
-	{ -1, -1, -1 } // Terminator
-};
-
-gameaction_t    gameaction;
-gamestate_t     gamestate;
-skill_t         gameskill;
-boolean         respawnmonsters;
-int             gameepisode;
-int             gamemap;
-int				 prevmap;
-
-boolean         paused;
-boolean         sendpause;              // send a pause event next tic
-boolean         sendsave;               // send a save event next tic
-boolean         usergame;               // ok to save / end game
-
-boolean         timingdemo;             // if true, exit with report on completion
-int             starttime;              // for comparative timing purposes      
-
-boolean         viewactive;
-
-boolean         deathmatch;             // only if started as net death
-boolean         netgame;                // only true if packets are broadcast
-boolean         playeringame[MAXPLAYERS];
-player_t        players[MAXPLAYERS];
-
-int             consoleplayer;          // player taking events and displaying
-int             displayplayer;          // view being displayed
-int             gametic;
-int             levelstarttic;          // gametic at level start
-int             totalkills, totalitems, totalsecret;    // for intermission
-
-char            demoname[32];
-boolean         demorecording;
-boolean         demoplayback;
-byte            *demobuffer, *demo_p;
-boolean         singledemo;             // quit after playing a demo from cmdline
-
-boolean         precache = true;        // if true, load all graphics at start
-
-short            consistancy[MAXPLAYERS][BACKUPTICS];
-
-byte            *savebuffer, *save_p;
-
-
-//
-// controls (have defaults)
-//
-int             key_right, key_left, key_up, key_down;
-int             key_strafeleft, key_straferight;
-int             key_fire, key_use, key_strafe, key_speed;
-int				key_flyup, key_flydown, key_flycenter;
-int				key_lookup, key_lookdown, key_lookcenter;
-int				key_invleft, key_invright, key_useartifact;
-
-int             mousebfire;
-int             mousebstrafe;
-int             mousebforward;
-
-int             joybfire;
-int             joybstrafe;
-int             joybuse;
-int             joybspeed;
-
-
-
-#define MAXPLMOVE       0x32
-
-fixed_t         forwardmove[2] = {0x19, 0x32};
-fixed_t         sidemove[2] = {0x18, 0x28};
-fixed_t         angleturn[3] = {640, 1280, 320};     // + slow turn
-#define SLOWTURNTICS    6
-
-#define NUMKEYS 256
-boolean         gamekeydown[NUMKEYS];
-int             turnheld;                   // for accelerative turning
-int				 lookheld;
-
-
-boolean         mousearray[4];
-boolean         *mousebuttons = &mousearray[1];
-	// allow [-1]
-int             mousex, mousey;             // mouse values are used once
-int             dclicktime, dclickstate, dclicks;
-int             dclicktime2, dclickstate2, dclicks2;
-
-int             joyxmove, joyymove;         // joystick values are repeated
-boolean         joyarray[5];
-boolean         *joybuttons = &joyarray[1];     // allow [-1]
-
-int     savegameslot;
-char    savedescription[32];
-
-int inventoryTics;
-
-#ifdef __WATCOMC__
-extern externdata_t *i_ExternData;
-#endif
-
-//=============================================================================
-// Not used - ripped out for Heretic
-/*
-int G_CmdChecksum(ticcmd_t *cmd)
-{
-	int	i;
-	int sum;
-
-	sum = 0;
-	for(i = 0; i < sizeof(*cmd)/4-1; i++)
-	{
-		sum += ((int *)cmd)[i];
-	}
-	return(sum);
-}
-*/
-
-/*
-====================
-=
-= G_BuildTiccmd
-=
-= Builds a ticcmd from all of the available inputs or reads it from the
-= demo buffer.
-= If recording a demo, write it out
-====================
-*/
-
-extern boolean inventory;
-extern int curpos;
-extern int inv_ptr;
-
-extern  int             isCyberPresent;     // is CyberMan present?
-boolean usearti = true;
-void I_ReadCyberCmd (ticcmd_t *cmd);
-
-void G_BuildTiccmd (ticcmd_t *cmd)
-{
-	int             i;
-	boolean         strafe, bstrafe;
-	int             speed, tspeed, lspeed;
-	int             forward, side;
-	int look, arti;
-	int flyheight;
-
-	extern boolean noartiskip;
-
-#ifdef __WATCOMC__
-	int angleDelta;
-	static int oldAngle;
-	extern int newViewAngleOff;
-	static int externInvKey;
-	extern boolean automapactive;
-	event_t ev;
-#endif
-
-
-	memset (cmd,0,sizeof(*cmd));
-	cmd->consistancy =
-		consistancy[consoleplayer][(maketic*ticdup)%BACKUPTICS];
-	if (isCyberPresent)
-		I_ReadCyberCmd (cmd);
-
-//printf ("cons: %i\n",cmd->consistancy);
-	
-	strafe = gamekeydown[key_strafe] || mousebuttons[mousebstrafe]
-		|| joybuttons[joybstrafe];
-	speed = gamekeydown[key_speed] || joybuttons[joybspeed]
-		|| joybuttons[joybspeed];
-#ifdef __WATCOMC__
-	if(useexterndriver)
-	{
-		speed |= (i_ExternData->buttons&EBT_SPEED);
-		strafe |= (i_ExternData->buttons&EBT_STRAFE);
-	}
-#endif
-
-	forward = side = look = arti = flyheight = 0;
-	
-//
-// use two stage accelerative turning on the keyboard and joystick
-//
-	if (joyxmove < 0 || joyxmove > 0 
-	|| gamekeydown[key_right] || gamekeydown[key_left])
-		turnheld += ticdup;
-	else
-		turnheld = 0;
-	if (turnheld < SLOWTURNTICS)
-		tspeed = 2;             // slow turn
-	else
-		tspeed = speed;
-
-	if(gamekeydown[key_lookdown] || gamekeydown[key_lookup])
-	{
-		lookheld += ticdup;
-	}
-	else
-	{
-		lookheld = 0;
-	}
-	if(lookheld < SLOWTURNTICS)
-	{
-		lspeed = 3;
-	}
-	else
-	{
-		lspeed = 5;
-	}
-
-//
-// let movement keys cancel each other out
-//
-	if(strafe)
-	{
-		if (gamekeydown[key_right])
-			side += sidemove[speed];
-		if (gamekeydown[key_left])
-			side -= sidemove[speed];
-		if (joyxmove > 0)
-			side += sidemove[speed];
-		if (joyxmove < 0)
-			side -= sidemove[speed];
-	}
-	else
-	{
-		if (gamekeydown[key_right])
-			cmd->angleturn -= angleturn[tspeed];
-		if (gamekeydown[key_left])
-			cmd->angleturn += angleturn[tspeed];
-		if (joyxmove > 0)
-			cmd->angleturn -= angleturn[tspeed];
-		if (joyxmove < 0)
-			cmd->angleturn += angleturn[tspeed];
-	}
-
-	if (gamekeydown[key_up])
-		forward += forwardmove[speed];
-	if (gamekeydown[key_down])
-		forward -= forwardmove[speed];
-	if (joyymove < 0)
-		forward += forwardmove[speed];
-	if (joyymove > 0)
-		forward -= forwardmove[speed];
-	if (gamekeydown[key_straferight])
-		side += sidemove[speed];
-	if (gamekeydown[key_strafeleft])
-		side -= sidemove[speed];
-
-	// Look up/down/center keys
-	if(gamekeydown[key_lookup])
-	{
-		look = lspeed;
-	}
-	if(gamekeydown[key_lookdown])
-	{
-		look = -lspeed;
-	}
-	if(gamekeydown[key_lookcenter])
-	{
-		look = TOCENTER;
-	}
-
-#ifdef __WATCOMC__
-	if(useexterndriver && i_ExternData->buttons&EBT_CENTERVIEW)
-	{
-		look = TOCENTER;
-	}
-	if(useexterndriver && look != TOCENTER && (gamestate == GS_LEVEL ||
-		gamestate == GS_INTERMISSION))
-	{
-		if(i_ExternData->moveForward)
-		{
-			forward += i_ExternData->moveForward;
-			if(speed)
-			{
-				forward <<= 1;
-			}
-		}
-		if(i_ExternData->angleTurn)
-		{
-			if(strafe)
-			{
-				side += i_ExternData->angleTurn;
-			}
-			else
-			{
-				cmd->angleturn += i_ExternData->angleTurn;
-			}
-		}
-		if(i_ExternData->moveSideways)
-		{
-			side += i_ExternData->moveSideways;
-			if(speed)
-			{
-				side <<= 1;
-			}
-		}
-		if(i_ExternData->pitch)
-		{
-			angleDelta = i_ExternData->pitch-oldAngle;
-			if(abs(angleDelta < 14))
-			{
-				look = angleDelta/2;
-			}
-			else
-			{
-				look = 7*(angleDelta > 0 ? 1 : -1);
-			}
-			if(look == TOCENTER)
-			{
-				look++;
-			}
-			oldAngle += look;
-		}
-		if(i_ExternData->flyDirection)
-		{
-			if(i_ExternData->flyDirection > 0)
-			{
-				flyheight = 5;
-			}
-			else
-			{
-				flyheight = -5;
-			}
-		}
-		if(abs(newViewAngleOff-i_ExternData->angleHead) < 3000)
-		{
-			newViewAngleOff = i_ExternData->angleHead;
-		}
-		if(i_ExternData->buttons&EBT_FIRE)
-		{
-			cmd->buttons |= BT_ATTACK;
-		}
-		if(i_ExternData->buttons&EBT_OPENDOOR)
-		{
-			cmd->buttons |= BT_USE;
-		}
-		if(i_ExternData->buttons&EBT_PAUSE)
-		{
-			sendpause ^= 1;
-		}
-		if(externInvKey&EBT_USEARTIFACT)
-		{
-			ev.type = ev_keyup;
-			ev.data1 = key_useartifact;
-			D_PostEvent(&ev);
-			externInvKey &= ~EBT_USEARTIFACT;
-		}
-		else if(i_ExternData->buttons&EBT_USEARTIFACT)
-		{
-			externInvKey |= EBT_USEARTIFACT;
-			ev.type = ev_keydown;
-			ev.data1 = key_useartifact;
-			D_PostEvent(&ev);
-		}
-		if(externInvKey&EBT_INVENTORYRIGHT)
-		{
-			ev.type = ev_keyup;
-			ev.data1 = key_invright;
-			D_PostEvent(&ev);
-			externInvKey &= ~EBT_INVENTORYRIGHT;
-		}
-		else if(i_ExternData->buttons&EBT_INVENTORYRIGHT)
-		{
-			externInvKey |= EBT_INVENTORYRIGHT;
-			ev.type = ev_keydown;
-			ev.data1 = key_invright;
-			D_PostEvent(&ev);
-		}
-		if(externInvKey&EBT_INVENTORYLEFT)
-		{
-			ev.type = ev_keyup;
-			ev.data1 = key_invleft;
-			D_PostEvent(&ev);
-			externInvKey &= ~EBT_INVENTORYLEFT;
-		}
-		else if(i_ExternData->buttons&EBT_INVENTORYLEFT)
-		{
-			externInvKey |= EBT_INVENTORYLEFT;
-			ev.type = ev_keydown;
-			ev.data1 = key_invleft;
-			D_PostEvent(&ev);
-		}
-		if(i_ExternData->buttons&EBT_FLYDROP)
-		{
-			flyheight = TOCENTER;
-		}
-		if(i_ExternData->buttons&EBT_MAP && gamestate == GS_LEVEL)
-		{
-			if(automapactive)
-			{
-				AM_Stop();
-			}
-			else
-			{
-				AM_Start();
-			}
-		}
-	}
-#endif
-
-	// Fly up/down/drop keys
-	if(gamekeydown[key_flyup])
-	{
-		flyheight = 5; // note that the actual flyheight will be twice this
-	}
-	if(gamekeydown[key_flydown])
-	{
-		flyheight = -5;
-	}
-	if(gamekeydown[key_flycenter])
-	{
-		flyheight = TOCENTER;
-		look = TOCENTER;
-	}
-
-	// Use artifact key
-	if(gamekeydown[key_useartifact])
-	{
-		if(gamekeydown[key_speed] && !noartiskip)
-		{
-			if(players[consoleplayer].inventory[inv_ptr].type != arti_none)
-			{
-				gamekeydown[key_useartifact] = false;
-				cmd->arti = 0xff; // skip artifact code
-			}
-		}
-		else
-		{
-			if(inventory)
-			{
-				players[consoleplayer].readyArtifact =
-					players[consoleplayer].inventory[inv_ptr].type;
-				inventory = false;
-				cmd->arti = 0;
-				usearti = false;
-			}
-			else if(usearti)
-			{
-				cmd->arti = players[consoleplayer].inventory[inv_ptr].type;
-				usearti = false;
-			}
-		}
-	}
-	if(gamekeydown[127] && !cmd->arti
-		&& !players[consoleplayer].powers[pw_weaponlevel2])
-	{
-		gamekeydown[127] = false;
-		cmd->arti = arti_tomeofpower;
-	}
-
-//
-// buttons
-//
-	cmd->chatchar = CT_dequeueChatChar();
-
-	if (gamekeydown[key_fire] || mousebuttons[mousebfire]
-		|| joybuttons[joybfire])
-		cmd->buttons |= BT_ATTACK;
-
-	if (gamekeydown[key_use] || joybuttons[joybuse] )
-	{
-		cmd->buttons |= BT_USE;
-		dclicks = 0;                    // clear double clicks if hit use button
-	}
-	
-	for(i = 0; i < NUMWEAPONS-2; i++)
-	{
-		if(gamekeydown['1'+i])
-		{
-			cmd->buttons |= BT_CHANGE;
-			cmd->buttons |= i<<BT_WEAPONSHIFT;
-			break;
-		}
-	}
-
-//
-// mouse
-//
-	if (mousebuttons[mousebforward])
-		forward += forwardmove[speed];
-		
-//
-// forward double click
-//
-	if (mousebuttons[mousebforward] != dclickstate && dclicktime > 1 )
-	{
-		dclickstate = mousebuttons[mousebforward];
-		if (dclickstate)
-			dclicks++;
-		if (dclicks == 2)
-		{
-			cmd->buttons |= BT_USE;
-			dclicks = 0;
-		}
-		else
-			dclicktime = 0;
-	}
-	else
-	{
-		dclicktime += ticdup;
-		if (dclicktime > 20)
-		{
-			dclicks = 0;
-			dclickstate = 0;
-		}
-	}
-	
-//
-// strafe double click
-//
-	bstrafe = mousebuttons[mousebstrafe]
-|| joybuttons[joybstrafe];
-	if (bstrafe != dclickstate2 && dclicktime2 > 1 )
-	{
-		dclickstate2 = bstrafe;
-		if (dclickstate2)
-			dclicks2++;
-		if (dclicks2 == 2)
-		{
-			cmd->buttons |= BT_USE;
-			dclicks2 = 0;
-		}
-		else
-			dclicktime2 = 0;
-	}
-	else
-	{
-		dclicktime2 += ticdup;
-		if (dclicktime2 > 20)
-		{
-			dclicks2 = 0;
-			dclickstate2 = 0;
-		}
-	}
-
-	if (strafe)
-	{
-		side += mousex*2;
-	}
-	else
-	{
-		cmd->angleturn -= mousex*0x8;
-	}	
-	forward += mousey;
-	mousex = mousey = 0;
-	
-	if (forward > MAXPLMOVE)
-		forward = MAXPLMOVE;
-	else if (forward < -MAXPLMOVE)
-		forward = -MAXPLMOVE;
-	if (side > MAXPLMOVE)
-		side = MAXPLMOVE;
-	else if (side < -MAXPLMOVE)
-		side = -MAXPLMOVE;
-
-	cmd->forwardmove += forward;
-	cmd->sidemove += side;
-	if(players[consoleplayer].playerstate == PST_LIVE)
-	{
-		if(look < 0)
-		{
-			look += 16;
-		}
-		cmd->lookfly = look;
-	}
-	if(flyheight < 0)
-	{
-		flyheight += 16;
-	}
-	cmd->lookfly |= flyheight<<4;
-
-//
-// special buttons
-//
-	if (sendpause)
-	{
-		sendpause = false;
-		cmd->buttons = BT_SPECIAL | BTS_PAUSE;
-	}
-
-	if (sendsave)
-	{
-		sendsave = false;
-		cmd->buttons = BT_SPECIAL | BTS_SAVEGAME | (savegameslot<<BTS_SAVESHIFT);
-	}
-}
-
-
-/*
-==============
-=
-= G_DoLoadLevel
-=
-==============
-*/
-
-void G_DoLoadLevel (void)
-{
-	int             i;
-	
-	levelstarttic = gametic;        // for time calculation 
-	gamestate = GS_LEVEL;
-	for (i=0 ; i<MAXPLAYERS ; i++)
-	{
-		if (playeringame[i] && players[i].playerstate == PST_DEAD)
-			players[i].playerstate = PST_REBORN;
-		memset (players[i].frags,0,sizeof(players[i].frags));
-	}
-		
-	P_SetupLevel (gameepisode, gamemap, 0, gameskill);   
-	displayplayer = consoleplayer;      // view the guy you are playing   
-	starttime = I_GetTime ();
-	gameaction = ga_nothing;
-	Z_CheckHeap ();
-
-//
-// clear cmd building stuff
-// 
-
-	memset (gamekeydown, 0, sizeof(gamekeydown));
-	joyxmove = joyymove = 0;
-	mousex = mousey = 0;
-	sendpause = sendsave = paused = false;
-	memset (mousebuttons, 0, sizeof(mousebuttons));
-	memset (joybuttons, 0, sizeof(joybuttons));
-}
-
-
-/*
-===============================================================================
-=
-= G_Responder 
-=
-= get info needed to make ticcmd_ts for the players
-=
-===============================================================================
-*/
-
-boolean G_Responder(event_t *ev)
-{
-	player_t *plr;
-	extern boolean MenuActive;
-
-	plr = &players[consoleplayer];
-	if(ev->type == ev_keyup && ev->data1 == key_useartifact)
-	{ // flag to denote that it's okay to use an artifact
-		if(!inventory)
-		{
-			plr->readyArtifact = plr->inventory[inv_ptr].type;
-		}
-		usearti = true;
-	}
-
-	// Check for spy mode player cycle
-	if(gamestate == GS_LEVEL && ev->type == ev_keydown
-		&& ev->data1 == KEY_F12 && !deathmatch)
-	{ // Cycle the display player
-		do
-		{
-			displayplayer++;
-			if(displayplayer == MAXPLAYERS)
-			{
-				displayplayer = 0;
-			}
-		} while(!playeringame[displayplayer]
-			&& displayplayer != consoleplayer);
-		return(true);
-	}
-
-	if(gamestate == GS_LEVEL)
-	{
-		if(CT_Responder(ev))
-		{ // Chat ate the event
-			return(true);
-		}
-		if(SB_Responder(ev))
-		{ // Status bar ate the event
-			return(true);
-		}
-		if(AM_Responder(ev))
-		{ // Automap ate the event
-			return(true);
-		}
-	}
-
-	switch(ev->type)
-	{
-		case ev_keydown:
-			if(ev->data1 == key_invleft)
-			{
-				inventoryTics = 5*35;
-				if(!inventory)
-				{
-					inventory = true;
-					break;
-				}
-				inv_ptr--;
-				if(inv_ptr < 0)
-				{
-					inv_ptr = 0;
-				}
-				else
-				{
-					curpos--;
-					if(curpos < 0)
-					{
-						curpos = 0;
-					}
-				}
-				return(true);
-			}
-			if(ev->data1 == key_invright)
-			{
-				inventoryTics = 5*35;
-				if(!inventory)
-				{
-					inventory = true;
-					break;
-				}
-				inv_ptr++;
-				if(inv_ptr >= plr->inventorySlotNum)
-				{
-					inv_ptr--;
-					if(inv_ptr < 0)
-						inv_ptr = 0;
-				}
-				else
-				{
-					curpos++;
-					if(curpos > 6)
-					{
-						curpos = 6;
-					}
-				}
-				return(true);
-			}
-			if(ev->data1 == KEY_PAUSE && !MenuActive)
-			{
-				sendpause = true;
-				return(true);
-			}
-			if(ev->data1 < NUMKEYS)
-			{
-				gamekeydown[ev->data1] = true;
-			}
-			return(true); // eat key down events
-
-		case ev_keyup:
-			if(ev->data1 < NUMKEYS)
-			{
-				gamekeydown[ev->data1] = false;
-			}
-			return(false); // always let key up events filter down
-
-		case ev_mouse:
-			mousebuttons[0] = ev->data1&1;
-			mousebuttons[1] = ev->data1&2;
-			mousebuttons[2] = ev->data1&4;
-			mousex = ev->data2*(mouseSensitivity+5)/10;
-			mousey = ev->data3*(mouseSensitivity+5)/10;
-			return(true); // eat events
-
-		case ev_joystick:
-			joybuttons[0] = ev->data1&1;
-			joybuttons[1] = ev->data1&2;
-			joybuttons[2] = ev->data1&4;
-			joybuttons[3] = ev->data1&8;
-			joyxmove = ev->data2;
-			joyymove = ev->data3;
-			return(true); // eat events
-
-		default:
-			break;
-	}
-	return(false);
-}
-
-/*
-===============================================================================
-=
-= G_Ticker
-=
-===============================================================================
-*/
-
-void G_Ticker (void)
-{
-	int                     i, buf;
-	ticcmd_t        *cmd;
-			
-//
-// do player reborns if needed
-//
-	for (i=0 ; i<MAXPLAYERS ; i++)
-		if (playeringame[i] && players[i].playerstate == PST_REBORN)
-			G_DoReborn (i);
-
-//
-// do things to change the game state
-//
-	while (gameaction != ga_nothing)
-	{
-		switch (gameaction)
-		{
-		case ga_loadlevel:
-			G_DoLoadLevel ();
-			break;
-		case ga_newgame:
-			G_DoNewGame ();
-			break;
-		case ga_loadgame:
-			G_DoLoadGame ();
-			break;
-		case ga_savegame:
-			G_DoSaveGame ();
-			break;
-		case ga_playdemo:
-			G_DoPlayDemo ();
-			break;
-		case ga_screenshot:
-			M_ScreenShot ();
-			gameaction = ga_nothing;
-			break;
-		case ga_completed:
-			G_DoCompleted ();
-			break;
-		case ga_worlddone:
-			G_DoWorldDone();
-			break;
-		case ga_victory:
-			F_StartFinale();
-			break;
-		default:
-			break;
-		}
-	}
-	
-			
-//
-// get commands, check consistancy, and build new consistancy check
-//
-	buf = gametic%BACKUPTICS;
-
-	for (i=0 ; i<MAXPLAYERS ; i++)
-		if (playeringame[i])
-		{
-			cmd = &players[i].cmd;
-
-			memcpy (cmd, &netcmds[i][buf], sizeof(ticcmd_t));
-
-			if (demoplayback)
-				G_ReadDemoTiccmd (cmd);
-			if (demorecording)
-				G_WriteDemoTiccmd (cmd);
-
-			if (netgame && !(gametic%ticdup) )
-			{
-				if (gametic > BACKUPTICS
-				&& consistancy[i][buf] != cmd->consistancy)
-				{
-					I_Error ("consistency failure (%i should be %i)",cmd->consistancy, consistancy[i][buf]);
-				}
-				if (players[i].mo)
-					consistancy[i][buf] = players[i].mo->x;
-				else
-					consistancy[i][buf] = rndindex;
-			}
-		}
-
-//
-// check for special buttons
-//
-	for (i=0 ; i<MAXPLAYERS ; i++)
-		if (playeringame[i])
-		{
-			if (players[i].cmd.buttons & BT_SPECIAL)
-			{
-				switch (players[i].cmd.buttons & BT_SPECIALMASK)
-				{
-				case BTS_PAUSE:
-					paused ^= 1;
-					if(paused)
-					{
-						S_PauseSound();
-					}
-					else
-					{
-						S_ResumeSound();
-					}
-					break;
-					
-				case BTS_SAVEGAME:
-					if (!savedescription[0])
-					{
-						if(netgame)
-						{
-							strcpy (savedescription, "NET GAME");
-						}
-						else
-						{
-							strcpy(savedescription, "SAVE GAME");
-						}
-					}
-					savegameslot = 
-						(players[i].cmd.buttons & BTS_SAVEMASK)>>BTS_SAVESHIFT;
-					gameaction = ga_savegame;
-					break;
-				}
-			}
-		}
-	
// turn inventory off after a certain amount of time
-	if(inventory && !(--inventoryTics))
-	{
-		players[consoleplayer].readyArtifact =
-			players[consoleplayer].inventory[inv_ptr].type;
-		inventory = false;
-		cmd->arti = 0;
-	}
-//
-// do main actions
-//
-//
-// do main actions
-//
-	switch (gamestate)
-	{
-		case GS_LEVEL:
-			P_Ticker ();
-			SB_Ticker ();
-			AM_Ticker ();
-			CT_Ticker();
-			break;
-		case GS_INTERMISSION:
-			IN_Ticker ();
-			break;
-		case GS_FINALE:
-			F_Ticker();
-			break;
-		case GS_DEMOSCREEN:
-			D_PageTicker ();
-			break;
-	}       
-}
-
-
-/*
-==============================================================================
-
-						PLAYER STRUCTURE FUNCTIONS
-
-also see P_SpawnPlayer in P_Things
-==============================================================================
-*/
-
-/*
-====================
-=
-= G_InitPlayer
-=
-= Called at the start
-= Called by the game initialization functions
-====================
-*/
-
-void G_InitPlayer (int player)
-{
-	player_t        *p;
-
-// set up the saved info        
-	p = &players[player];
-	
-// clear everything else to defaults
-	G_PlayerReborn (player);
-	
-}
-
-
-/*
-====================
-=
-= G_PlayerFinishLevel
-=
-= Can when a player completes a level
-====================
-*/
-extern int curpos;
-extern int inv_ptr;
-extern int playerkeys;
-
-void G_PlayerFinishLevel(int player)
-{
-	player_t *p;
-	int i;
-
-/*	// BIG HACK
-	inv_ptr = 0;
-	curpos = 0;
-*/
-	// END HACK
-	p = &players[player];
-	for(i=0; i<p->inventorySlotNum; i++)
-	{
-		p->inventory[i].count = 1;
-	}
-	p->artifactCount = p->inventorySlotNum;
-	
-	if(!deathmatch)
-	{
-		for(i = 0; i < 16; i++)
-		{
-			P_PlayerUseArtifact(p, arti_fly);
-		}
-	}	
-	memset(p->powers, 0, sizeof(p->powers));
-	memset(p->keys, 0, sizeof(p->keys));
-	playerkeys = 0;
-//	memset(p->inventory, 0, sizeof(p->inventory));
-	if(p->chickenTics)
-	{
-		p->readyweapon = p->mo->special1; // Restore weapon
-		p->chickenTics = 0;
-	}
-	p->messageTics = 0;
-	p->lookdir = 0;
-	p->mo->flags &= ~MF_SHADOW; // Remove invisibility
-	p->extralight = 0; // Remove weapon flashes
-	p->fixedcolormap = 0; // Remove torch
-	p->damagecount = 0; // No palette changes
-	p->bonuscount = 0;
-	p->rain1 = NULL;
-	p->rain2 = NULL;
-	if(p == &players[consoleplayer])
-	{
-		SB_state = -1; // refresh the status bar
-	}
-}
-
-/*
-====================
-=
-= G_PlayerReborn
-=
-= Called after a player dies
-= almost everything is cleared and initialized
-====================
-*/
-
-void G_PlayerReborn(int player)
-{
-	player_t *p;
-	int i;
-	int frags[MAXPLAYERS];
-	int killcount, itemcount, secretcount;
-	boolean secret;
-	
-	secret = false;
-	memcpy(frags, players[player].frags, sizeof(frags));
-	killcount = players[player].killcount;
-	itemcount = players[player].itemcount;
-	secretcount = players[player].secretcount;
-
-	p = &players[player];
-	if(p->didsecret)
-	{
-		secret = true;
-	}
-	memset(p, 0, sizeof(*p));
-
-	memcpy(players[player].frags, frags, sizeof(players[player].frags));
-	players[player].killcount = killcount;
-	players[player].itemcount = itemcount;
-	players[player].secretcount = secretcount;
-
-	p->usedown = p->attackdown = true; // don't do anything immediately
-	p->playerstate = PST_LIVE;
-	p->health = MAXHEALTH;
-	p->readyweapon = p->pendingweapon = wp_goldwand;
-	p->weaponowned[wp_staff] = true;
-	p->weaponowned[wp_goldwand] = true;
-	p->messageTics = 0;
-	p->lookdir = 0;
-	p->ammo[am_goldwand] = 50;
-	for(i = 0; i < NUMAMMO; i++)
-	{
-		p->maxammo[i] = maxammo[i];
-	}
-	if(gamemap == 9 || secret)
-	{
-		p->didsecret = true;
-	}
-	if(p == &players[consoleplayer])
-	{
-		SB_state = -1; // refresh the status bar
-	}
-}
-
-/*
-====================
-=
-= G_CheckSpot 
-=
-= Returns false if the player cannot be respawned at the given mapthing_t spot 
-= because something is occupying it
-====================
-*/
-
-void P_SpawnPlayer (mapthing_t *mthing);
-
-boolean G_CheckSpot (int playernum, mapthing_t *mthing)
-{
-	fixed_t         x,y;
-	subsector_t *ss;
-	unsigned        an;
-	mobj_t      *mo;
-	
-	x = mthing->x << FRACBITS;
-	y = mthing->y << FRACBITS;
-
-	players[playernum].mo->flags2 &= ~MF2_PASSMOBJ;
-	if (!P_CheckPosition (players[playernum].mo, x, y) )
-	{
-		players[playernum].mo->flags2 |= MF2_PASSMOBJ;
-		return false;
-	}
-	players[playernum].mo->flags2 |= MF2_PASSMOBJ;
-
-// spawn a teleport fog
-	ss = R_PointInSubsector (x,y);
-	an = ( ANG45 * (mthing->angle/45) ) >> ANGLETOFINESHIFT;
-
-	mo = P_SpawnMobj (x+20*finecosine[an], y+20*finesine[an]
-	, ss->sector->floorheight+TELEFOGHEIGHT
-, MT_TFOG);
-	
-	if (players[consoleplayer].viewz != 1)
-		S_StartSound (mo, sfx_telept);  // don't start sound on first frame
-
-	return true;
-}
-
-/*
-====================
-=
-= G_DeathMatchSpawnPlayer
-=
-= Spawns a player at one of the random death match spots
-= called at level load and each death
-====================
-*/
-
-void G_DeathMatchSpawnPlayer (int playernum)
-{
-	int             i,j;
-	int             selections;
-	
-	selections = deathmatch_p - deathmatchstarts;
-	if (selections < 4)
-		I_Error ("Only %i deathmatch spots, 4 required", selections);
-
-	for (j=0 ; j<20 ; j++)
-	{
-		i = P_Random() % selections;
-		if (G_CheckSpot (playernum, &deathmatchstarts[i]) )
-		{
-			deathmatchstarts[i].type = playernum+1;
-			P_SpawnPlayer (&deathmatchstarts[i]);
-			return;
-		}
-	}
-
-// no good spot, so the player will probably get stuck
-	P_SpawnPlayer (&playerstarts[playernum]);
-}
-
-/*
-====================
-=
-= G_DoReborn
-=
-====================
-*/
-
-void G_DoReborn (int playernum)
-{
-	int                             i;
-	
-	if (G_CheckDemoStatus ())
-		return;
-	if (!netgame)
-		gameaction = ga_loadlevel;                      // reload the level from scratch
-	else
-	{       // respawn at the start
-		players[playernum].mo->player = NULL;   // dissasociate the corpse
-		
-		// spawn at random spot if in death match
-		if (deathmatch)
-		{
-			G_DeathMatchSpawnPlayer (playernum);
-			return;
-		}
-		
-		if (G_CheckSpot (playernum, &playerstarts[playernum]) )
-		{
-			P_SpawnPlayer (&playerstarts[playernum]);
-			return;
-		}
-		// try to spawn at one of the other players spots
-		for (i=0 ; i<MAXPLAYERS ; i++)
-			if (G_CheckSpot (playernum, &playerstarts[i]) )
-			{
-				playerstarts[i].type = playernum+1;             // fake as other player
-				P_SpawnPlayer (&playerstarts[i]);
-				playerstarts[i].type = i+1;                             // restore
-				return;
-			}
-		// he's going to be inside something.  Too bad.
-		P_SpawnPlayer (&playerstarts[playernum]);
-	}
-}
-
-
-void G_ScreenShot (void)
-{
-	gameaction = ga_screenshot;
-}
-
-
-/*
-====================
-=
-= G_DoCompleted
-=
-====================
-*/
-
-boolean         secretexit;
-
-void G_ExitLevel (void)
-{
-	secretexit = false;
-	gameaction = ga_completed;
-}
-
-void G_SecretExitLevel (void)
-{
-	secretexit = true;
-	gameaction = ga_completed;
-}
-
-void G_DoCompleted(void)
-{
-	int i;
-	static int afterSecret[3] = { 7, 5, 5 };
-
-	gameaction = ga_nothing;
-	if(G_CheckDemoStatus())
-	{
-		return;
-	}
-	for(i = 0; i < MAXPLAYERS; i++)
-	{
-		if(playeringame[i])
-		{
-			G_PlayerFinishLevel(i);
-		}
-	}
-	prevmap = gamemap;
-	if(secretexit == true)
-	{
-		gamemap = 9;
-	}
-	else if(gamemap == 9)
-	{ // Finished secret level
-		gamemap = afterSecret[gameepisode-1];
-	}
-	else if(gamemap == 8)
-	{
-		gameaction = ga_victory;
-		return;
-	}
-	else
-	{
-		gamemap++;
-	}
-	gamestate = GS_INTERMISSION;
-	IN_Start();
-}
-
-//============================================================================
-//
-// G_WorldDone
-//
-//============================================================================
-
-void G_WorldDone(void)
-{
-	gameaction = ga_worlddone;
-}
-
-//============================================================================
-//
-// G_DoWorldDone
-//
-//============================================================================
-
-void G_DoWorldDone(void)
-{
-	gamestate = GS_LEVEL;
-	G_DoLoadLevel();
-	gameaction = ga_nothing;
-	viewactive = true;
-}
-
-//---------------------------------------------------------------------------
-//
-// PROC G_LoadGame
-//
-// Can be called by the startup code or the menu task.
-//
-//---------------------------------------------------------------------------
-
-char savename[256];
-
-void G_LoadGame(char *name)
-{
-	strcpy(savename, name);
-	gameaction = ga_loadgame;
-}
-
-//---------------------------------------------------------------------------
-//
-// PROC G_DoLoadGame
-//
-// Called by G_Ticker based on gameaction.
-//
-//---------------------------------------------------------------------------
-
-#define VERSIONSIZE 16
-
-void G_DoLoadGame(void)
-{
-	int length;
-	int i;
-	int a, b, c;
-	char vcheck[VERSIONSIZE];
-
-	gameaction = ga_nothing;
-
-	length = M_ReadFile(savename, &savebuffer);
-	save_p = savebuffer+SAVESTRINGSIZE;
-	// Skip the description field
-	memset(vcheck, 0, sizeof(vcheck));
-	sprintf(vcheck, "version %i", VERSION);
-	if (strcmp (save_p, vcheck))
-	{ // Bad version
-		return;
-	}
-	save_p += VERSIONSIZE;
-	gameskill = *save_p++;
-	gameepisode = *save_p++;
-	gamemap = *save_p++;
-	for(i = 0; i < MAXPLAYERS; i++)
-	{
-		playeringame[i] = *save_p++;
-	}
-	// Load a base level
-	G_InitNew(gameskill, gameepisode, gamemap);
-
-	// Create leveltime
-	a = *save_p++;
-	b = *save_p++;
-	c = *save_p++;
-	leveltime = (a<<16)+(b<<8)+c;
-
-	// De-archive all the modifications
-	P_UnArchivePlayers();
-	P_UnArchiveWorld();
-	P_UnArchiveThinkers();
-	P_UnArchiveSpecials();
-
-	if(*save_p != SAVE_GAME_TERMINATOR)
-	{ // Missing savegame termination marker
-		I_Error("Bad savegame");
-	}
-	Z_Free(savebuffer);
-}
-
-//---------------------------------------------------------------------------
-//
-// PROC G_SaveGame
-//
-// Called by the menu task.  <description> is a 24 byte text string.
-//
-//---------------------------------------------------------------------------
-
-void G_SaveGame(int slot, char *description)
-{
-	savegameslot = slot;
-	strcpy(savedescription, description);
-	sendsave = true;
-}
-
-//---------------------------------------------------------------------------
-//
-// PROC G_DoSaveGame
-//
-// Called by G_Ticker based on gameaction.
-//
-//---------------------------------------------------------------------------
-
-void G_DoSaveGame(void)
-{
-	char name[100];
-	char name2[VERSIONSIZE];
-	char *description;
-	int length;
-	int i;
-
-	if(cdrom)
-	{
-		sprintf(name, SAVEGAMENAMECD"%d.hsg", savegameslot);
-	}
-	else
-	{
-		sprintf(name, SAVEGAMENAME"%d.hsg", savegameslot);
-	}
-	description = savedescription;
-
-	// Allocate save game buffer
-	save_p = savebuffer = Z_Malloc(SAVEGAMESIZE, PU_STATIC, NULL);
-
-	memcpy(save_p, description, SAVESTRINGSIZE);
-	save_p += SAVESTRINGSIZE;
-	memset(name2, 0, sizeof(name2));
-	sprintf(name2, "version %i",VERSION);
-	memcpy(save_p, name2, VERSIONSIZE);
-	save_p += VERSIONSIZE;
-
-	*save_p++ = gameskill;
-	*save_p++ = gameepisode;
-	*save_p++ = gamemap;
-	for(i = 0; i < MAXPLAYERS; i++)
-	{
-		*save_p++ = playeringame[i];
-	}
-	*save_p++ = leveltime>>16;
-	*save_p++ = leveltime>>8;
-	*save_p++ = leveltime;
-
-	P_ArchivePlayers();
-	P_ArchiveWorld();
-	P_ArchiveThinkers();
-	P_ArchiveSpecials();
-
-	// Send a savegame termination marker
-	*save_p++ = SAVE_GAME_TERMINATOR;
-
-	length = save_p-savebuffer;
-	if(length > SAVEGAMESIZE)
-	{
-		I_Error("Savegame buffer overrun");
-	}
-	M_WriteFile(name, savebuffer, length);
-	gameaction = ga_nothing;
-	savedescription[0] = 0;
-	Z_Free(savebuffer);
-	P_SetMessage(&players[consoleplayer], TXT_GAMESAVED, true);
-}
-
-/*
-====================
-=
-= G_InitNew
-=
-= Can be called by the startup code or the menu task
-= consoleplayer, displayplayer, playeringame[] should be set
-====================
-*/
-
-skill_t d_skill;
-int     d_episode;
-int     d_map;
-
-void G_DeferedInitNew (skill_t skill, int episode, int map)
-{
-	d_skill = skill;
-	d_episode = episode;
-	d_map = map;
-	gameaction = ga_newgame;
-}
-
-void G_DoNewGame (void)
-{
-	G_InitNew (d_skill, d_episode, d_map);
-	gameaction = ga_nothing;
-}
-
-extern  int                     skytexture;
-
-void G_InitNew(skill_t skill, int episode, int map)
-{
-	int i;
-	int speed;
-
-	if(paused)
-	{
-		paused = false;
-		S_ResumeSound();
-	}
-	if(skill < sk_baby)
-		skill = sk_baby;
-	if(skill > sk_nightmare)
-		skill = sk_nightmare;
-	if(episode < 1)
-		episode = 1;
-	// Up to 9 episodes for testing
-	if(episode > 9)
-		episode = 9;
-	if(map < 1)
-		map = 1;
-	if(map > 9)
-		map = 9;
-	M_ClearRandom();
-	if(respawnparm)
-	{
-		respawnmonsters = true;
-	}
-	else
-	{
-		respawnmonsters = false;
-	}
-	// Set monster missile speeds
-	speed = skill == sk_nightmare;
-	for(i = 0; MonsterMissileInfo[i].type != -1; i++)
-	{
-		mobjinfo[MonsterMissileInfo[i].type].speed
-			= MonsterMissileInfo[i].speed[speed]<<FRACBITS;
-	}
-	// Force players to be initialized upon first level load
-	for(i = 0; i < MAXPLAYERS; i++)
-	{
-		players[i].playerstate = PST_REBORN;
-	}
-	// Set up a bunch of globals
-	usergame = true; // will be set false if a demo
-	paused = false;
-	demorecording = false;
-	demoplayback = false;
-	viewactive = true;
-	gameepisode = episode;
-	gamemap = map;
-	gameskill = skill;
-	viewactive = true;
-	BorderNeedRefresh = true;
-
-	// Set the sky map
-	switch(episode)
-	{
-		case 1:
-			skytexture = R_TextureNumForName("SKY1");
-			break;
-		case 2:
-			skytexture = R_TextureNumForName("SKY2");
-			break;
-		case 3:
-			skytexture = R_TextureNumForName("SKY3");
-			break;
-		default:
-			skytexture = R_TextureNumForName("SKY1");
-			break;
-	}
-
-//
-// give one null ticcmd_t
-//
-#if 0
-	gametic = 0;
-	maketic = 1;
-	for (i=0 ; i<MAXPLAYERS ; i++)
-		nettics[i] = 1;                 // one null event for this gametic
-	memset (localcmds,0,sizeof(localcmds));
-	memset (netcmds,0,sizeof(netcmds));
-#endif
-	G_DoLoadLevel();
-}
-
-
-/*
-===============================================================================
-
-							DEMO RECORDING
-
-===============================================================================
-*/
-
-#define DEMOMARKER      0x80
-
-void G_ReadDemoTiccmd (ticcmd_t *cmd)
-{
-	if (*demo_p == DEMOMARKER)
-	{       // end of demo data stream
-		G_CheckDemoStatus ();
-		return;
-	}
-	cmd->forwardmove = ((signed char)*demo_p++);
-	cmd->sidemove = ((signed char)*demo_p++);
-	cmd->angleturn = ((unsigned char)*demo_p++)<<8;
-	cmd->buttons = (unsigned char)*demo_p++;
-	cmd->lookfly = (unsigned char)*demo_p++;
-	cmd->arti = (unsigned char)*demo_p++;
-}
-
-void G_WriteDemoTiccmd (ticcmd_t *cmd)
-{
-	if (gamekeydown['q'])           // press q to end demo recording
-		G_CheckDemoStatus ();
-	*demo_p++ = cmd->forwardmove;
-	*demo_p++ = cmd->sidemove;
-	*demo_p++ = cmd->angleturn>>8;
-	*demo_p++ = cmd->buttons;
-	*demo_p++ = cmd->lookfly;
-	*demo_p++ = cmd->arti;
-	demo_p -= 6;
-	G_ReadDemoTiccmd (cmd);         // make SURE it is exactly the same
-}
-
-
-
-/*
-===================
-=
-= G_RecordDemo
-=
-===================
-*/
-
-void G_RecordDemo (skill_t skill, int numplayers, int episode, int map, char *name)
-{
-	int             i;
-	
-	G_InitNew (skill, episode, map);
-	usergame = false;
-	strcpy (demoname, name);
-	strcat (demoname, ".lmp");
-	demobuffer = demo_p = Z_Malloc (0x20000,PU_STATIC,NULL);
-	*demo_p++ = skill;
-	*demo_p++ = episode;
-	*demo_p++ = map;
-	
-	for (i=0 ; i<MAXPLAYERS ; i++)
-		*demo_p++ = playeringame[i];
-		
-	demorecording = true;
-}
-
-
-/*
-===================
-=
-= G_PlayDemo
-=
-===================
-*/
-
-char    *defdemoname;
-
-void G_DeferedPlayDemo (char *name)
-{
-	defdemoname = name;
-	gameaction = ga_playdemo;
-}
-
-void G_DoPlayDemo (void)
-{
-	skill_t skill;
-	int             i, episode, map;
-	
-	gameaction = ga_nothing;
-	demobuffer = demo_p = W_CacheLumpName (defdemoname, PU_STATIC);
-	skill = *demo_p++;
-	episode = *demo_p++;
-	map = *demo_p++;
-
-	for (i=0 ; i<MAXPLAYERS ; i++)
-		playeringame[i] = *demo_p++;
-		
-	precache = false;               // don't spend a lot of time in loadlevel
-	G_InitNew (skill, episode, map);
-	precache = true;
-	usergame = false;
-	demoplayback = true;
-}
-
-
-/*
-===================
-=
-= G_TimeDemo
-=
-===================
-*/
-
-void G_TimeDemo (char *name)
-{
-	skill_t skill;
-	int             episode, map;
-	
-	demobuffer = demo_p = W_CacheLumpName (name, PU_STATIC);
-	skill = *demo_p++;
-	episode = *demo_p++;
-	map = *demo_p++;
-	G_InitNew (skill, episode, map);
-	usergame = false;
-	demoplayback = true;
-	timingdemo = true;
-	singletics = true;
-}
-
-
-/*
-===================
-=
-= G_CheckDemoStatus
-=
-= Called after a death or level completion to allow demos to be cleaned up
-= Returns true if a new demo loop action will take place
-===================
-*/
-
-boolean G_CheckDemoStatus (void)
-{
-	int             endtime;
-	
-	if (timingdemo)
-	{
-		endtime = I_GetTime ();
-		I_Error ("timed %i gametics in %i realtics",gametic
-		, endtime-starttime);
-	}
-	
-	if (demoplayback)
-	{
-		if (singledemo)
-			I_Quit ();
-			
-		Z_ChangeTag (demobuffer, PU_CACHE);
-		demoplayback = false;
-		D_AdvanceDemo ();
-		return true;
-	}
-
-	if (demorecording)
-	{
-		*demo_p++ = DEMOMARKER;
-		M_WriteFile (demoname, demobuffer, demo_p - demobuffer);
-		Z_Free (demobuffer);
-		demorecording = false;
-		I_Error ("Demo %s recorded",demoname);
-	}
-	
-	return false;
-}
-
-
-
--- a/src/heretic/i_ibm_a.asm
+++ /dev/null
@@ -1,135 +1,0 @@
-	.386
-	.MODEL  small
-
-.DATA
-
-
-
-.CODE
-
-IF 0
-#define PEL_WRITE_ADR   0x3c8
-#define PEL_READ_ADR    0x3c7
-#define PEL_DATA                0x3c9
-ENDIF
-
-;================
-;
-; I_DivException
-;
-;================
-
-PROC  	I_DivException_
-PUBLIC 	I_DivException_
-	mov	edx,03c9h
-	mov	al,63
-	out	dx,al
-
-	mov	ebx,0ffffffh
-	mov	eax,[ebx]
-	retf
-ENDP
-
-;================
-;
-; I_SetDivException
-;
-;================
-
-PROC  	I_SetDivException_
-PUBLIC 	I_SetDivException_
-	pusha
-
-	mov	eax,0212h
-	mov	ebx,0
-	mov	ecx,cs
-	mov	edx,OFFSET I_DivException_
-	int 31h
-	jnc	good
-
-	popa
-	mov	eax,0
-	ret
-
-good:
-	popa
-	mov	eax,1
-	ret
-
-ENDP
-
-
-;================
-;
-; I_ReadJoystick
-;
-; Read the absolute joystick values
-; returns false if not connected
-;================
-
-.data
-
-_joystickx	dd	0
-_joysticky	dd	0
-PUBLIC	_joystickx, _joysticky
-
-.code
-
-PROC  	I_ReadJoystick_
-PUBLIC 	I_ReadJoystick_
-	pusha
-	pushf					; state of interrupt flag
-	cli
-
-	mov		dx,0201h
-	in		al,dx
-	out		dx,al		; Clear the resistors
-
-	mov		ah,1		; Get masks into registers
-	mov		ch,2
-
-	xor		esi,esi		; Clear count registers
-	xor		edi,edi
-	xor		ebx,ebx		; Clear high byte of bx for later
-
-	mov		ebp,10000	; joystick is disconnected if value is this big
-
-jloop:
-	in		al,dx		; Get bits indicating whether all are finished
-
-	dec		ebp			; Check bounding register
-	jz		bad			; We have a silly value - abort
-
-	mov		bl,al		; Duplicate the bits
-	and		bl,ah		; Mask off useless bits (in [xb])
-	add		esi,ebx		; Possibly increment count register
-	mov		cl,bl		; Save for testing later
-
-	mov		bl,al
-	and		bl,ch		; [yb]
-	add		edi,ebx
-
-	add		cl,bl
-	jnz		jloop 		; If both bits were 0, drop out
-
-done:
-	mov		[_joystickx],esi
-	shr		edi,1		; because 2s were added
-	mov		[_joysticky],edi
-
-	popf			; restore interrupt flag
-	popa
-	mov	eax,1		; read was ok
-	ret
-
-bad:
-	popf			; restore interrupt flag
-	popa
-	xor     eax, eax	; read was bad
-	ret
-
-ENDP
-
-
-END
-
--- a/src/heretic/linear.asm
+++ /dev/null
@@ -1,258 +1,0 @@
-	.386
-	.MODEL  small
-	INCLUDE defs.inc
-
-
-;============================================================================
-;
-; unwound vertical scaling code
-;
-; eax   light table pointer, 0 lowbyte overwritten
-; ebx   all 0, low byte overwritten
-; ecx   fractional step value
-; edx   fractional scale value
-; esi   start of source pixels
-; edi   bottom pixel in screenbuffer to blit into
-;
-; ebx should be set to 0 0 0 dh to feed the pipeline
-;
-; The graphics wrap vertically at 128 pixels
-;============================================================================
-
-.DATA
-
-EXTRN	_centery:DWORD
-
-SCALEDEFINE     MACRO   number
-	dd      vscale&number
-ENDM
-
-	ALIGN   4
-scalecalls      LABEL
-LINE    =       0
-REPT    SCREENHEIGHT+1
-	SCALEDEFINE     %LINE
-LINE    =       LINE+1
-ENDM
-
-
-;=================================
-
-
-.CODE
-
-;================
-;
-; R_DrawColumn
-;
-;================
-
-PROC   R_DrawColumn_
-PUBLIC   R_DrawColumn_
-	PUSHR
-
-	mov		ebp,[_dc_yh]
-	mov		ebx,ebp
-	mov     edi,[_ylookup+ebx*4]
-	mov		ebx,[_dc_x]
-	add     edi,[_columnofs + ebx*4]
-
-	mov		eax,[_dc_yl]
-	sub     ebp,eax                    ; ebp = pixel count
-	or		ebp,ebp
-	js		done
-
-	mov     ecx,[_dc_iscale]
-
-	sub		eax,[_centery]
-	imul	ecx
-	mov		edx,[_dc_texturemid]
-	add		edx,eax
-	shl		edx,9							; 7 significant bits, 25 frac
-
-	shl		ecx,9							; 7 significant bits, 25 frac
-	mov     esi,[_dc_source]
-
-	mov     eax,[_dc_colormap]
-
-	xor     ebx,ebx
-	shld    ebx,edx,7						; get address of first location
-	call    [scalecalls+4+ebp*4]
-
-done:
-	POPR
-	ret
-
-;============ HIGH DETAIL ============
-
-SCALELABEL      MACRO   number
-vscale&number:
-ENDM
-
-LINE    =       SCREENHEIGHT
-REPT SCREENHEIGHT-1
-	SCALELABEL      %LINE
-	mov     al,[esi+ebx]                    ; get source pixel
-	add     edx,ecx                         ; calculate next location
-	mov     al,[eax]                        ; translate the color
-;	xor             ebx,ebx
-;	shld    ebx,edx,7                      ; get address of next location
-	mov		ebx,edx
-	shr		ebx,25
-	mov     [edi-(LINE-1)*SCREENWIDTH],al   ; draw a pixel to the buffer
-LINE    =       LINE-1
-ENDM
-vscale1:
-	mov     al,[esi+ebx]
-	mov     al,[eax]
-	mov     [edi],al
-vscale0:
-	ret
-
-ENDP
-
-
-
-;============================================================================
-;
-; unwound horizontal texture mapping code
-;
-; eax   lighttable
-; ebx   scratch register
-; ecx   position 6.10 bits x, 6.10 bits y
-; edx   step 6.10 bits x, 6.10 bits y
-; esi   start of block
-; edi   dest
-; ebp   fff to mask bx
-;
-; ebp should by preset from ebx / ecx before calling
-;============================================================================
-
-OP_SHLD	=	0fh
-
-
-.DATA
-
-
-MAPDEFINE     MACRO   number
-	dd      hmap&number
-ENDM
-
-	ALIGN   4
-mapcalls      LABEL
-LINE    =       0
-REPT    SCREENWIDTH+1
-	MAPDEFINE     %LINE
-LINE    =       LINE+1
-ENDM
-
-
-callpoint	dd  0
-returnpoint	dd	0
-
-
-.CODE
-
-;================
-;
-; R_DrawSpan
-;
-; Horizontal texture mapping
-;
-;================
-
-
-PROC   R_DrawSpan_
-PUBLIC	R_DrawSpan_
-	PUSHR
-
-IFE SKIPPRIMITIVES
-
-	mov	eax,[_ds_x1]
-	mov	ebx,[_ds_x2]
-	mov	eax,[mapcalls+eax*4]
-	mov	[callpoint],eax       ; spot to jump into unwound
-	mov	eax,[mapcalls+4+ebx*4]
-	mov	[returnpoint],eax     ; spot to patch a ret at
-	mov	BYTE PTR [eax], OP_RET
-
-;
-; build composite position
-;
-	mov	ecx,[_ds_xfrac]
-	shl	ecx,10
-	and	ecx,0ffff0000h
-	mov	eax,[_ds_yfrac]
-	shr	eax,6
-	and	eax,0ffffh
-	or	ecx,eax
-
-;
-; build composite step
-;
-	mov	edx,[_ds_xstep]
-	shl	edx,10
-	and	edx,0ffff0000h
-	mov	eax,[_ds_ystep]
-	shr	eax,6
-	and	eax,0ffffh
-	or	edx,eax
-
-	mov	esi,[_ds_source]
-
-	mov	edi,[_ds_y]
-	mov	edi,[_ylookup+edi*4]
-	add edi,[_columnofs]
-
-	mov	eax,[_ds_colormap]
-
-;
-; feed the pipeline and jump in
-;
-	mov		ebp,0fffh		; used to mask off slop high bits from position
-	shld	ebx,ecx,22				; shift y units in
-	shld	ebx,ecx,6				; shift x units in
-	and		ebx,ebp					; mask off slop bits
-	call    [callpoint]
-
-	mov	ebx,[returnpoint]
-	mov	BYTE PTR [ebx],OP_MOVAL		; remove the ret patched in
-
-ENDIF
-	POPR
-	ret
-
-
-;============= HIGH DETAIL ============
-
-.CODE
-
-MAPLABEL      MACRO   number
-hmap&number:
-ENDM
-
-LINE    =      0
-PCOL	=	0
-REPT SCREENWIDTH/4
-PLANE	=	0
-REPT	4
-	MAPLABEL      %LINE
-LINE    =	LINE + 1
-
-	mov     al,[esi+ebx]            ; get source pixel
-	shld	ebx,ecx,22				; shift y units in
-	shld	ebx,ecx,6				; shift x units in
-	mov     al,[eax]                ; translate color
-	and		ebx,ebp					; mask off slop bits
-	add		ecx,edx					; position += step
-	mov     [edi+PLANE+PCOL*4],al       ; write pixel
-PLANE	=	PLANE + 1
-ENDM
-PCOL	=	PCOL + 1
-ENDM
-hmap320:
-	ret
-
-ENDP
-
-END
--- a/src/heretic/netold.c
+++ /dev/null
@@ -1,783 +1,0 @@
-// I_pcnet.m
-
-#include "DoomDef.h"
-#include "P_local.h"
-#include "soundst.h"
-
-#define NCMD_EXIT               0x80000000
-#define NCMD_RETRANSMIT 0x40000000
-#define NCMD_SETUP              0x20000000
-#define NCMD_KILL               0x10000000              // kill game
-#define NCMD_CHECKSUM   0x0fffffff
-
- 
-doomcom_t               *doomcom;       
-doomdata_t              *netbuffer;             // points inside doomcom
-
-
-/*
-==============================================================================
-
-							NETWORKING
-
-gametic is the tic about to (or currently being) run
-maketic is the tick that hasn't had control made for it yet
-nettics[] has the maketics for all players 
-
-a gametic cannot be run until nettics[] > gametic for all players
-
-==============================================================================
-*/
-
-#define RESENDCOUNT     10
-#define PL_DRONE        0x80                            // bit flag in doomdata->player
-
-ticcmd_t                localcmds[BACKUPTICS];
-
-ticcmd_t        netcmds[MAXPLAYERS][BACKUPTICS];
-int             nettics[MAXNETNODES];
-boolean                 nodeingame[MAXNETNODES];        // set false as nodes leave game
-boolean                 remoteresend[MAXNETNODES];      // set when local needs tics
-int                             resendto[MAXNETNODES];                  // set when remote needs tics
-int                             resendcount[MAXNETNODES];
-
-int                             nodeforplayer[MAXPLAYERS];
-
-int             maketic;
-int                             lastnettic, skiptics;
-int                             ticdup;         
-int                             maxsend;        // BACKUPTICS/(2*ticdup)-1
-
-void D_ProcessEvents (void); 
-void G_BuildTiccmd (ticcmd_t *cmd); 
-void D_DoAdvanceDemo (void);
- 
-boolean                 reboundpacket;
-doomdata_t              reboundstore;
-
-
-int     NetbufferSize (void)
-{
-	return (int)&(((doomdata_t *)0)->cmds[netbuffer->numtics]); 
-}
-
-unsigned NetbufferChecksum (void)
-{
-	unsigned                c;
-	int             i,l;
-
-	c = 0x1234567;
-
-#ifdef NeXT
-	return 0;                       // byte order problems
-#endif
-
-	l = (NetbufferSize () - (int)&(((doomdata_t *)0)->retransmitfrom))/4;
-	for (i=0 ; i<l ; i++)
-		c += ((unsigned *)&netbuffer->retransmitfrom)[i] * (i+1);
-
-	return c & NCMD_CHECKSUM;
-}
-
-int ExpandTics (int low)
-{
-	int     delta;
-	
-	delta = low - (maketic&0xff);
-	
-	if (delta >= -64 && delta <= 64)
-		return (maketic&~0xff) + low;
-	if (delta > 64)
-		return (maketic&~0xff) - 256 + low;
-	if (delta < -64)
-		return (maketic&~0xff) + 256 + low;
-		
-	I_Error ("ExpandTics: strange value %i at maketic %i",low,maketic);
-	return 0;
-}
-
-
-//============================================================================
-
-
-/*
-==============
-=
-= HSendPacket
-=
-==============
-*/
-
-void HSendPacket (int node, int flags)
-{
-	netbuffer->checksum = NetbufferChecksum () | flags;
-
-	if (!node)
-	{
-		reboundstore = *netbuffer;
-		reboundpacket = true;
-		return;
-	}
-
-	if (demoplayback)
-		return;
-
-	if (!netgame)
-		I_Error ("Tried to transmit to another node");
-		
-	doomcom->command = CMD_SEND;
-	doomcom->remotenode = node;
-	doomcom->datalength = NetbufferSize ();
-	
-if (debugfile)
-{
-	int             i;
-	int             realretrans;
-	if (netbuffer->checksum & NCMD_RETRANSMIT)
-		realretrans = ExpandTics (netbuffer->retransmitfrom);
-	else
-		realretrans = -1;
-	fprintf (debugfile,"send (%i + %i, R %i) [%i] "
-	,ExpandTics(netbuffer->starttic),netbuffer->numtics, realretrans, doomcom->datalength);
-	for (i=0 ; i<doomcom->datalength ; i++)
-		fprintf (debugfile,"%i ",((byte *)netbuffer)[i]);
-	fprintf (debugfile,"\n");
-}
-
-	I_NetCmd ();
-}
-
-/*
-==============
-=
-= HGetPacket
-=
-= Returns false if no packet is waiting
-=
-==============
-*/
-
-boolean HGetPacket (void)
-{       
-	if (reboundpacket)
-	{
-		*netbuffer = reboundstore;
-		doomcom->remotenode = 0;
-		reboundpacket = false;
-		return true;
-	}
-
-	if (!netgame)
-		return false;
-	if (demoplayback)
-		return false;
-		
-	doomcom->command = CMD_GET;
-	I_NetCmd ();
-	if (doomcom->remotenode == -1)
-		return false;
-
-	if (doomcom->datalength != NetbufferSize ())
-	{
-		if (debugfile)
-			fprintf (debugfile,"bad packet length %i\n",doomcom->datalength);
-		return false;
-	}
-	
-	if (NetbufferChecksum () != (netbuffer->checksum&NCMD_CHECKSUM) )
-	{
-		if (debugfile)
-			fprintf (debugfile,"bad packet checksum\n");
-		return false;
-	}
-
-if (debugfile)
-{
-	int             realretrans;
-			int     i;
-			
-	if (netbuffer->checksum & NCMD_SETUP)
-		fprintf (debugfile,"setup packet\n");
-	else
-	{
-		if (netbuffer->checksum & NCMD_RETRANSMIT)
-			realretrans = ExpandTics (netbuffer->retransmitfrom);
-		else
-			realretrans = -1;
-		fprintf (debugfile,"get %i = (%i + %i, R %i)[%i] ",doomcom->remotenode,
-		ExpandTics(netbuffer->starttic),netbuffer->numtics, realretrans, doomcom->datalength);
-		for (i=0 ; i<doomcom->datalength ; i++)
-			fprintf (debugfile,"%i ",((byte *)netbuffer)[i]);
-		fprintf (debugfile,"\n");
-	}
-}
-	return true;    
-}
-
-
-/*
-===================
-=
-= GetPackets
-=
-===================
-*/
-
-char    exitmsg[80];
-
-void GetPackets (void)
-{
-	int             netconsole;
-	int             netnode;
-	ticcmd_t        *src, *dest;
-	int             realend;
-	int             realstart;
-				 
-	while (HGetPacket ())
-	{
-		if (netbuffer->checksum & NCMD_SETUP)
-			continue;               // extra setup packet
-			
-		netconsole = netbuffer->player & ~PL_DRONE;
-		netnode = doomcom->remotenode;
-		//
-		// to save bytes, only the low byte of tic numbers are sent
-		// Figure out what the rest of the bytes are
-		//
-		realstart = ExpandTics (netbuffer->starttic);           
-		realend = (realstart+netbuffer->numtics);
-		
-		//
-		// check for exiting the game
-		//
-		if (netbuffer->checksum & NCMD_EXIT)
-		{
-			if (!nodeingame[netnode])
-				continue;
-			nodeingame[netnode] = false;
-			playeringame[netconsole] = false;
-			strcpy(exitmsg, "PLAYER 1 LEFT THE GAME");
-			S_StartSound(NULL, sfx_chat);
-			exitmsg[7] += netconsole;
-			//players[consoleplayer].message = exitmsg;
-			P_SetMessage(&players[consoleplayer], exitmsg, true);
-/*                      if (demorecording)
-				G_CheckDemoStatus ();
-*/ // DEBUG
-			continue;
-		}
-
-		//
-		// check for a remote game kill
-		//
-		if (netbuffer->checksum & NCMD_KILL)
-			I_Error ("Killed by network driver");
-
-		nodeforplayer[netconsole] = netnode;
-		
-		//
-		// check for retransmit request
-		//
-		if ( resendcount[netnode] <= 0 
-		&& (netbuffer->checksum & NCMD_RETRANSMIT) )
-		{
-			resendto[netnode] = ExpandTics(netbuffer->retransmitfrom);
-if (debugfile)
-fprintf (debugfile,"retransmit from %i\n", resendto[netnode]);
-			resendcount[netnode] = RESENDCOUNT;
-		}
-		else
-			resendcount[netnode]--;
-
-		//
-		// check for out of order / duplicated packet
-		//              
-		if (realend == nettics[netnode])
-			continue;
-			
-		if (realend < nettics[netnode])
-		{
-if (debugfile)
-fprintf (debugfile,"out of order packet (%i + %i)\n" ,realstart,netbuffer->numtics);
-			continue;
-		}
-
-		//
-		// check for a missed packet
-		//
-		if (realstart > nettics[netnode])
-		{
-		// stop processing until the other system resends the missed tics
-if (debugfile)
-fprintf (debugfile,"missed tics from %i (%i - %i)\n", netnode, realstart, nettics[netnode]);
-			remoteresend[netnode] = true;
-			continue;
-		}
-	
-//
-// update command store from the packet
-//
-{
-	int             start;
-
-		remoteresend[netnode] = false;
-		
-		start = nettics[netnode] - realstart;           
-		src = &netbuffer->cmds[start];
-
-		while (nettics[netnode] < realend)
-		{
-			dest = &netcmds[netconsole][nettics[netnode]%BACKUPTICS];
-			nettics[netnode]++;
-			*dest = *src;
-			src++;
-		}
-	}
-}
-
-}
-
-/*
-=============
-=
-= NetUpdate
-=
-= Builds ticcmds for console player
-= sends out a packet
-=============
-*/
-
-int      gametime;
-
-void NetUpdate (void)
-{
-	int             nowtime;
-	int             newtics;
-	int                             i,j;
-	int                             realstart;
-	int                             gameticdiv;
-			
-//
-// check time
-//  
-	nowtime = I_GetTime ()/ticdup;
-	newtics = nowtime - gametime;
-	gametime = nowtime;
-	
-	if (newtics <= 0)                       // nothing new to update
-		goto listen; 
-
-	if (skiptics <= newtics)
-	{
-		newtics -= skiptics;
-		skiptics = 0;
-	}
-	else
-	{
-		skiptics -= newtics;
-		newtics = 0;
-	}
-	
-		
-	netbuffer->player = consoleplayer;
-		
-//
-// build new ticcmds for console player
-//
-	gameticdiv = gametic/ticdup;
-	for (i=0 ; i<newtics ; i++)
-	{
-		I_StartTic ();
-		D_ProcessEvents ();
-		if (maketic - gameticdiv >= BACKUPTICS/2-1)
-			break;          // can't hold any more
-//printf ("mk:%i ",maketic);
-		G_BuildTiccmd (&localcmds[maketic%BACKUPTICS]);
-		maketic++;
-	}
-
-
-	if (singletics)
-		return;         // singletic update is syncronous
-		
-//
-// send the packet to the other nodes
-//
-	for (i=0 ; i<doomcom->numnodes ; i++)
-		if (nodeingame[i])
-		{
-			netbuffer->starttic = realstart = resendto[i];
-			netbuffer->numtics = maketic - realstart;
-			if (netbuffer->numtics > BACKUPTICS)
-				I_Error ("NetUpdate: netbuffer->numtics > BACKUPTICS");
-
-			resendto[i] = maketic - doomcom->extratics;
-	
-
-			for (j=0 ; j< netbuffer->numtics ; j++)
-				netbuffer->cmds[j] = 
-					localcmds[(realstart+j)%BACKUPTICS];
-					
-			if (remoteresend[i])
-			{
-				netbuffer->retransmitfrom = nettics[i];
-				HSendPacket (i, NCMD_RETRANSMIT);
-			}
-			else
-			{
-				netbuffer->retransmitfrom = 0;
-				HSendPacket (i, 0);
-			}
-		}
-
-//
-// listen for other packets
-//              
-listen:
-
-	GetPackets ();
-}
-
-
-/*
-=====================
-=
-= CheckAbort
-=
-=====================
-*/
-
-void CheckAbort (void)
-{
-	event_t *ev;
-	int             stoptic;
-	
-	stoptic = I_GetTime () + 2; 
-	while (I_GetTime() < stoptic) 
-		I_StartTic (); 
-	
-	I_StartTic ();
-	for ( ; eventtail != eventhead 
-	; eventtail = (++eventtail)&(MAXEVENTS-1) ) 
-	{ 
-		ev = &events[eventtail]; 
-		if (ev->type == ev_keydown && ev->data1 == KEY_ESCAPE)
-			I_Error ("Network game synchronization aborted.");
-	} 
-}
-
-/*
-=====================
-=
-= D_ArbitrateNetStart
-=
-=====================
-*/
-
-void D_ArbitrateNetStart (void)
-{
-	int             i;
-	boolean gotinfo[MAXNETNODES];
-	
-	autostart = true;
-	memset (gotinfo,0,sizeof(gotinfo));
-	
-	if (doomcom->consoleplayer)
-	{       // listen for setup info from key player
-		while (1)
-		{
-			CheckAbort ();
-			if (!HGetPacket ())
-				continue;
-			if (netbuffer->checksum & NCMD_SETUP)
-			{
-				if (netbuffer->player != VERSION)
-					I_Error ("Different DOOM versions cannot play a net game!");
-				startskill = netbuffer->retransmitfrom & 15;
-				deathmatch = (netbuffer->retransmitfrom & 0xc0) >> 6;
-				nomonsters = (netbuffer->retransmitfrom & 0x20) > 0;
-				respawnparm = (netbuffer->retransmitfrom & 0x10) > 0;
-				startmap = netbuffer->starttic & 0x3f;
-				startepisode = netbuffer->starttic >> 6;
-				return;
-			}
-		}
-	}
-	else
-	{       // key player, send the setup info
-		do
-		{
-			CheckAbort ();
-			for (i=0 ; i<doomcom->numnodes ; i++)
-			{
-				netbuffer->retransmitfrom = startskill;
-				if (deathmatch)
-					netbuffer->retransmitfrom |= (deathmatch<<6);
-				if (nomonsters)
-					netbuffer->retransmitfrom |= 0x20;
-				if (respawnparm)
-					netbuffer->retransmitfrom |= 0x10;
-				netbuffer->starttic = startepisode * 64 + startmap;
-				netbuffer->player = VERSION;
-				netbuffer->numtics = 0;
-				HSendPacket (i, NCMD_SETUP);
-			}
-
-#if 1
-			for(i = 10 ; i  &&  HGetPacket(); --i)
-			{
- if((netbuffer->player&0x7f) < MAXNETNODES)
-				gotinfo[netbuffer->player&0x7f] = true;
-			}
-#else
-			while (HGetPacket ())
-			{
-				gotinfo[netbuffer->player&0x7f] = true;
-			}
-#endif
-
-			for (i=1 ; i<doomcom->numnodes ; i++)
-				if (!gotinfo[i])
-					break;
-		} while (i < doomcom->numnodes);
-	}
-}
-
-/*
-===================
-=
-= D_CheckNetGame
-=
-= Works out player numbers among the net participants
-===================
-*/
-
-extern  int                     viewangleoffset;
-
-void D_CheckNetGame (void)
-{
-	int             i;
-	
-	for (i=0 ; i<MAXNETNODES ; i++)
-	{
-		nodeingame[i] = false;
-	nettics[i] = 0;
-		remoteresend[i] = false;        // set when local needs tics
-		resendto[i] = 0;                        // which tic to start sending
-	}
-	
-// I_InitNetwork sets doomcom and netgame
-	I_InitNetwork ();
-	if (doomcom->id != DOOMCOM_ID)
-		I_Error ("Doomcom buffer invalid!");
-	netbuffer = &doomcom->data;
-	consoleplayer = displayplayer = doomcom->consoleplayer;
-	if (netgame)
-		D_ArbitrateNetStart ();
-//printf ("startskill %i  deathmatch: %i  startmap: %i  startepisode: %i\n", startskill, deathmatch, startmap, startepisode);
-	
-// read values out of doomcom
-	ticdup = doomcom->ticdup;
-	maxsend = BACKUPTICS/2-1;
-	if (maxsend<1)
-		maxsend = 1;
-			
-	for (i=0 ; i<doomcom->numplayers ; i++)
-		playeringame[i] = true;
-	for (i=0 ; i<doomcom->numnodes ; i++)
-		nodeingame[i] = true;
-	
-//printf ("player %i of %i (%i nodes)\n", consoleplayer+1, doomcom->numplayers, doomcom->numnodes);
-
-}
-
-/*
-==================
-=
-= D_QuitNetGame
-=
-= Called before quitting to leave a net game without hanging the
-= other players
-=
-==================
-*/
-
-void D_QuitNetGame (void)
-{
-	int             i, j;
-	
-	if (debugfile)
-		fclose (debugfile);
-		
-	if (!netgame || !usergame || consoleplayer == -1 || demoplayback)
-		return;
-	
-// send a bunch of packets for security
-	netbuffer->player = consoleplayer;
-	netbuffer->numtics = 0;
-	for (i=0 ; i<4 ; i++)
-	{
-		for (j=1 ; j<doomcom->numnodes ; j++)
-			if (nodeingame[j])
-				HSendPacket (j, NCMD_EXIT);
-		I_WaitVBL (1);
-	}
-}
-
-
-
-/*
-===============
-=
-= TryRunTics
-=
-===============
-*/
-
-int     frametics[4], frameon;
-int     frameskip[4];
-int             oldnettics;
-extern  boolean advancedemo;
-
-void TryRunTics (void)
-{
-	int             i;
-	int             lowtic;
-	int             entertic;
-	static int              oldentertics;
-	int                             realtics, availabletics;
-	int                             counts;
-	int                             numplaying;
-
-//
-// get real tics
-//                      
-	entertic = I_GetTime ()/ticdup;
-	realtics = entertic - oldentertics;
-	oldentertics = entertic;
-
-//
-// get available tics
-//
-	NetUpdate ();
-	
-	lowtic = MAXINT;
-	numplaying = 0;
-	for (i=0 ; i<doomcom->numnodes ; i++)
-		if (nodeingame[i])
-		{
-			numplaying++;
-			if (nettics[i] < lowtic)
-				lowtic = nettics[i];
-		}
-	availabletics = lowtic - gametic/ticdup;
-	
-
-//
-// decide how many tics to run
-//
-	if (realtics < availabletics-1)
-		counts = realtics+1;
-	else if (realtics < availabletics)
-		counts = realtics;
-	else
-		counts = availabletics;
-	if (counts < 1)
-		counts = 1;
-		
-	frameon++;
-
-if (debugfile)
-	fprintf (debugfile,"=======real: %i  avail: %i  game: %i\n",realtics, availabletics,counts);
-
-	if (!demoplayback)
-	{       
-	//=============================================================================
-	//
-	//      ideally nettics[0] should be 1 - 3 tics above lowtic
-	//      if we are consistantly slower, speed up time
-	//
-		for (i=0 ; i<MAXPLAYERS ; i++)
-			if (playeringame[i])
-				break;
-		if (consoleplayer == i)
-		{       // the key player does not adapt
-		}
-		else
-		{
-			if (nettics[0] <= nettics[nodeforplayer[i]])
-			{
-				gametime--;
-	//                      printf ("-");
-			}
-			frameskip[frameon&3] = (oldnettics > nettics[nodeforplayer[i]]);
-			oldnettics = nettics[0];
-			if (frameskip[0] && frameskip[1] && frameskip[2] && frameskip[3])
-			{
-				skiptics = 1;
-	//                      printf ("+");
-			}
-		}
-	//============================================================================= 
-	}       // demoplayback                 
-
-	//
-	// wait for new tics if needed
-	//
-		while (lowtic < gametic/ticdup + counts)        
-		{
-	
-			NetUpdate ();   
-			lowtic = MAXINT;
-			
-			for (i=0 ; i<doomcom->numnodes ; i++)
-				if (nodeingame[i] && nettics[i] < lowtic)
-					lowtic = nettics[i];
-	
-			if (lowtic < gametic/ticdup)
-				I_Error ("TryRunTics: lowtic < gametic");
-				
-			// don't stay in here forever -- give the menu a chance to work
-			if (I_GetTime ()/ticdup - entertic >= 20)
-			{
-				MN_Ticker ();
-				return;
-			} 
-		}
-
-//
-// run the count * ticdup dics
-//
-	while (counts--)
-	{
-		for (i=0 ; i<ticdup ; i++)
-		{
-			if (gametic/ticdup > lowtic)
-				I_Error ("gametic>lowtic");
-			if (advancedemo)
-				D_DoAdvanceDemo ();
-			MN_Ticker ();
-			G_Ticker ();
-			gametic++;
-			//
-			// modify command for duplicated tics
-			//
-			if (i != ticdup-1)
-			{
-				ticcmd_t        *cmd;
-				int                     buf;
-				int                     j;
-				
-				buf = (gametic/ticdup)%BACKUPTICS; 
-				for (j=0 ; j<MAXPLAYERS ; j++)
-				{
-					cmd = &netcmds[j][buf];
-					cmd->chatchar = 0;
-					if (cmd->buttons & BT_SPECIAL)
-						cmd->buttons = 0;
-				}
-			}
-		}
-		NetUpdate ();                                   // check for new console commands
-	}
-}
--- a/src/heretic/oldd_net.c
+++ /dev/null
@@ -1,790 +1,0 @@
-// I_pcnet.m
-
-#include "DoomDef.h"
-
-#define	NCMD_EXIT		0x80000000
-#define	NCMD_RETRANSMIT	0x40000000
-#define	NCMD_SETUP		0x20000000
-#define	NCMD_CHECKSUM	0x0fffffff
-
-/*
-if more space needs to be crunched out of the protocol...
-
-1	drone
-2	player
-8	tic
-5	numtics
-
-#define	NCMD_EXIT		0x80000000
-#define	NCMD_RETRANSMIT	0x40000000			// a retransmit will have 0 tics
-#define	NCMD_DRONE		0x20000000
-#define	NCMD_PLAYER		0x18000000
-#define	NCMD_PLAYERSHIFT	27
-#define	NCMD_TIC		0x00ff0000
-#define	NCMD_TICSHIFT	16
-#define	NCMD_NUMTICS	0x0000ff00
-#define	NCMD_NUMTICSSHIFT	8
-#define	NCMD_CHECKSUM	0x000000ff
-
-*/
-
-
-
-
-
-doomcom_t		*doomcom;	
-doomdata_t		*netbuffer;		// points inside doomcom
-
-
-/*
-==============================================================================
-
-							NETWORKING
-
-gametic is the tic about to (or currently being) run
-maketic is the tick that hasn't had control made for it yet
-nettics[] has the maketics for all players 
-
-a gametic cannot be run until nettics[] > gametic for all players
-
-==============================================================================
-*/
-
-#define	RESENDCOUNT	10
-#define	PL_DRONE	0x80				// bit flag in doomdata->player
-
-ticcmd_t		localcmds[BACKUPTICS];
-
-ticcmd_t        netcmds[MAXPLAYERS][BACKUPTICS];
-int         	nettics[MAXNETNODES];
-boolean			nodeingame[MAXNETNODES];	// set false as nodes leave game
-boolean			remoteresend[MAXNETNODES];	// set when local needs tics
-int				resendto[MAXNETNODES];			// set when remote needs tics
-int				resendcount[MAXNETNODES];
-
-int				nodeforplayer[MAXPLAYERS];
-
-int             gametime;
-int             maketic;
-int				lastnettic, skiptics;
-int				ticdup;		
-
-void D_ProcessEvents (void);
-void G_BuildTiccmd (ticcmd_t *cmd);
-void D_DoAdvanceDemo (void);
-
-boolean			reboundpacket;
-doomdata_t		reboundstore;
-
-
-int	NetbufferSize (void)
-{
-	return (int)&(((doomdata_t *)0)->cmds[netbuffer->numtics]); 
-}
-
-unsigned NetbufferChecksum (void)
-{
-	unsigned		c;
-	int		i,l;
-
-	c = 0x1234567;
-
-#ifdef NeXT
-	return 0;			// byte order problems
-#endif
-
-	l = (NetbufferSize () - (int)&(((doomdata_t *)0)->retransmitfrom))/4;
-	for (i=0 ; i<l ; i++)
-		c += ((unsigned *)&netbuffer->retransmitfrom)[i] * (i+1);
-
-	return c & NCMD_CHECKSUM;
-}
-
-int ExpandTics (int low)
-{
-	int	delta;
-	
-	delta = low - (maketic&0xff);
-	
-	if (delta >= -64 && delta <= 64)
-		return (maketic&~0xff) + low;
-	if (delta > 64)
-		return (maketic&~0xff) - 256 + low;
-	if (delta < -64)
-		return (maketic&~0xff) + 256 + low;
-		
-	I_Error ("ExpandTics: strange value %i at maketic %i",low,maketic);
-	return 0;
-}
-
-
-//============================================================================
-
-
-/*
-==============
-=
-= HSendPacket
-=
-==============
-*/
-
-void HSendPacket (int node, int flags)
-{
-	netbuffer->checksum = NetbufferChecksum () | flags;
-
-	if (!node)
-	{
-		reboundstore = *netbuffer;
-		reboundpacket = true;
-		return;
-	}
-
-	if (!netgame)
-		I_Error ("Tried to transmit to another node");
-		
-	doomcom->command = CMD_SEND;
-	doomcom->remotenode = node;
-	doomcom->datalength = NetbufferSize ();
-	
-if (debugfile)
-{
-	int		i;
-	int		realretrans;
-	if (netbuffer->checksum & NCMD_RETRANSMIT)
-		realretrans = ExpandTics (netbuffer->retransmitfrom);
-	else
-		realretrans = -1;
-	fprintf (debugfile,"send (%i + %i, R %i) [%i] "
-	,ExpandTics(netbuffer->starttic),netbuffer->numtics, realretrans, doomcom->datalength);
-	for (i=0 ; i<doomcom->datalength ; i++)
-		fprintf (debugfile,"%i ",((byte *)netbuffer)[i]);
-	fprintf (debugfile,"\n");
-}
-
-	I_NetCmd ();
-}
-
-/*
-==============
-=
-= HGetPacket
-=
-= Returns false if no packet is waiting
-=
-==============
-*/
-
-boolean HGetPacket (void)
-{	
-	if (reboundpacket)
-	{
-		*netbuffer = reboundstore;
-		doomcom->remotenode = 0;
-		reboundpacket = false;
-		return true;
-	}
-
-	if (!netgame)
-		return false;
-		
-	doomcom->command = CMD_GET;
-	I_NetCmd ();
-	if (doomcom->remotenode == -1)
-		return false;
-
-	if (doomcom->datalength != NetbufferSize ())
-	{
-		if (debugfile)
-			fprintf (debugfile,"bad packet length %i\n",doomcom->datalength);
-		return false;
-	}
-	
-	if (NetbufferChecksum () != (netbuffer->checksum&NCMD_CHECKSUM) )
-	{
-		if (debugfile)
-			fprintf (debugfile,"bad packet checksum\n");
-		return false;
-	}
-
-if (debugfile)
-{
-	int		realretrans;
-			int	i;
-			
-	if (netbuffer->checksum & NCMD_SETUP)
-		fprintf (debugfile,"setup packet\n");
-	else
-	{
-		if (netbuffer->checksum & NCMD_RETRANSMIT)
-			realretrans = ExpandTics (netbuffer->retransmitfrom);
-		else
-			realretrans = -1;
-		fprintf (debugfile,"get %i = (%i + %i, R %i)[%i] ",doomcom->remotenode,
-		ExpandTics(netbuffer->starttic),netbuffer->numtics, realretrans, doomcom->datalength);
-		for (i=0 ; i<doomcom->datalength ; i++)
-			fprintf (debugfile,"%i ",((byte *)netbuffer)[i]);
-		fprintf (debugfile,"\n");
-	}
-}
-	return true;	
-}
-
-
-/*
-===================
-=
-= GetPackets
-=
-===================
-*/
-
-char    exitmsg[80];
-
-void GetPackets (void)
-{
-	int		netconsole;
-	int		netnode;
-	int		netdrone;
-	int		j;
-	ticcmd_t	*src, *dest;
-	int		dupedstart, dupedend;
-	int		skiptics;
-	int		realstart;
-				 
-	while (HGetPacket ())
-	{
-		if (netbuffer->checksum & NCMD_SETUP)
-			continue;		// extra setup packet
-			
-		netdrone = netbuffer->player & PL_DRONE;
-		netconsole = netbuffer->player & ~PL_DRONE;
-		netnode = doomcom->remotenode;
-		//
-		// to save bytes, only the low byte of tic numbers are sent
-		// Figure out what the rest of the bytes are
-		//
-		realstart = ExpandTics (netbuffer->starttic);		
-		dupedstart = realstart*doomcom->ticdup;
-		dupedend = (realstart+netbuffer->numtics)*doomcom->ticdup;
-		
-		//
-		// check for exiting the game
-		//
-		if (netbuffer->checksum & NCMD_EXIT)
-		{
-			if (!nodeingame[netnode])
-				continue;
-			nodeingame[netnode] = false;
-			if (!netdrone)
-			{
-				playeringame[netconsole] = false;
-				strcpy (exitmsg, "Player 1 left the game");
-				exitmsg[7] += netconsole;
-				players[consoleplayer].message = exitmsg;
-			}
-			continue;
-		}
-
-		//
-		// drone packets are just notifications
-		//
-		if (netdrone)
-		{
-			nettics[netnode] = dupedend;
-			continue;
-		}
-
-		nodeforplayer[netconsole] = netnode;
-		
-		//
-		// check for retransmit request
-		//
-		if ( resendcount[netnode] <= 0 
-		&& (netbuffer->checksum & NCMD_RETRANSMIT) )
-		{
-			resendto[netnode] = ExpandTics(netbuffer->retransmitfrom);
-if (debugfile)
-fprintf (debugfile,"retransmit from %i\n", resendto[netnode]);
-			resendcount[netnode] = RESENDCOUNT;
-		}
-		else
-			resendcount[netnode]--;
-
-		//
-		// check for out of order / duplicated packet
-		//		
-		if (dupedend == nettics[netnode])
-			continue;
-			
-		if (dupedend < nettics[netnode])
-		{
-if (debugfile)
-fprintf (debugfile,"out of order packet (%i + %i)\n" ,realstart,netbuffer->numtics);
-			continue;
-		}
-
-		//
-		// check for a missed packet
-		//
-		if (dupedstart > nettics[netnode])
-		{
-		// stop processing until the other system resends the missed tics
-if (debugfile)
-fprintf (debugfile,"missed tics from %i (%i - %i)\n", netnode, dupedstart, nettics[netnode]);
-			remoteresend[netnode] = true;
-			continue;
-		}
-	
-//
-// update command store from the packet
-//
-		remoteresend[netnode] = false;
-		
-		skiptics = nettics[netnode]/doomcom->ticdup - realstart;		
-		src = &netbuffer->cmds[skiptics];
-
-		while (nettics[netnode] < dupedend)
-		{
-			for (j=0 ; j<doomcom->ticdup ; j++)
-			{
-				dest = &netcmds[netconsole][nettics[netnode]%BACKUPTICS];
-				nettics[netnode]++;
-				*dest = *src;
-				src->chatchar = 0;
-				if (src->buttons & BT_SPECIAL)
-					src->buttons = 0;
-			}
-			src++;
-		}
-	}
-}
-
-/*
-=============
-=
-= NetUpdate
-=
-= Builds ticcmds for console player
-= sends out a packet
-=============
-*/
-
-void NetUpdate (void)
-{
-	int             nowtime;
-	int             newtics;
-	int				i,j;
-	int				gameticdiv;
-	int				realstart;
-		
-	if (singletics)
-		return;         // singletic update is syncronous
-		
-//
-// check time
-//      
-	nowtime = I_GetTime ()/doomcom->ticdup;
-	newtics = nowtime - gametime;
-	gametime = nowtime;
-	if (newtics <= 0)                       // nothing new to update
-		goto listen; 
-
-	if (skiptics <= newtics)
-	{
-		newtics -= skiptics;
-		skiptics = 0;
-	}
-	else
-	{
-		skiptics -= newtics;
-		newtics = 0;
-	}
-	
-		
-	netbuffer->player = consoleplayer;
-	if (doomcom->drone)
-		netbuffer->player |= PL_DRONE;
-	
-//
-// drone packets
-//
-	if (doomcom->drone)
-	{
-		I_StartTic ();
-		D_ProcessEvents ();
-		goto sendit;
-	}
-	
-//
-// build new ticcmds for console player
-//
-	gameticdiv = (gametic+doomcom->ticdup-1)/doomcom->ticdup;
-	for (i=0 ; i<newtics ; i++)
-	{
-		I_StartTic ();
-		D_ProcessEvents ();
-		if (maketic - gameticdiv >= BACKUPTICS/2 /* /doomcom->ticdup */- 1)
-		{
-			newtics = i;
-			break;          // can't hold any more
-		}
-//printf ("mk:%i ",maketic);
-		G_BuildTiccmd (&localcmds[maketic%BACKUPTICS]);
-		maketic++;
-	}
-
-//
-// send the packet to the other nodes
-//
-sendit:
-	for (i=0 ; i<doomcom->numnodes ; i++)
-		if (nodeingame[i])
-		{
-			if (doomcom->drone)
-			{
-				netbuffer->starttic = realstart = maketic + BACKUPTICS/2;
-				netbuffer->numtics = 0;
-			}
-			else
-			{
-				netbuffer->starttic = realstart = resendto[i];
-				netbuffer->numtics = maketic - realstart;
-				resendto[i] = maketic - doomcom->extratics;
-			}
-	
-			if (netbuffer->numtics > BACKUPTICS)
-				I_Error ("NetUpdate: netbuffer->numtics > BACKUPTICS");
-
-			for (j=0 ; j< netbuffer->numtics ; j++)
-				netbuffer->cmds[j] = 
-					localcmds[(realstart+j)%BACKUPTICS];
-					
-			if (remoteresend[i])
-			{
-				netbuffer->retransmitfrom = nettics[i]/doomcom->ticdup;
-				HSendPacket (i, NCMD_RETRANSMIT);
-			}
-			else
-			{
-				netbuffer->retransmitfrom = 0;
-				HSendPacket (i, 0);
-			}
-		}
-
-//
-// listen for other packets
-//		
-listen:
-
-	GetPackets ();
-}
-
-
-/*
-=====================
-=
-= CheckAbort
-=
-=====================
-*/
-
-void CheckAbort (void)
-{
-	event_t *ev;
-	
-	I_WaitVBL(2);
-	
-	I_StartTic ();
-	for ( ; eventtail != eventhead 
-	; eventtail = (++eventtail)&(MAXEVENTS-1) )
-	{
-		ev = &events[eventtail];
-		if (ev->type == ev_keydown && ev->data1 == KEY_ESCAPE)
-			I_Error ("Network game synchronization aborted.");
-	}
-}
-
-/*
-=====================
-=
-= D_ArbitrateNetStart
-=
-=====================
-*/
-
-void D_ArbitrateNetStart (void)
-{
-	int		i;
-	boolean	gotinfo[MAXNETNODES];
-	
-	autostart = true;
-	memset (gotinfo,0,sizeof(gotinfo));
-	
-	if (doomcom->consoleplayer)
-	{	// listen for setup info from key player
-		printf ("listening for network start info...\n");
-		while (1)
-		{
-			CheckAbort ();
-			if (!HGetPacket ())
-				continue;
-			if (netbuffer->checksum & NCMD_SETUP)
-			{
-				if (netbuffer->player != VERSION)
-					I_Error ("Different DOOM versions cannot play a net game!");
-				startskill = netbuffer->retransmitfrom & 15;
-				deathmatch = (netbuffer->retransmitfrom & 0x80) > 0;
-				nomonsters = (netbuffer->retransmitfrom & 0x40) > 0;
-				respawnparm = (netbuffer->retransmitfrom & 0x20) > 0;
-				startmap = netbuffer->starttic & 15;
-				startepisode = netbuffer->starttic >> 4;
-				return;
-			}
-		}
-	}
-	else
-	{	// key player, send the setup info
-		printf ("sending network start info...\n");
-		do
-		{
-			CheckAbort ();
-			for (i=0 ; i<doomcom->numnodes ; i++)
-			{
-				netbuffer->retransmitfrom = startskill;
-				if (deathmatch)
-					netbuffer->retransmitfrom |= 0x80;
-				if (nomonsters)
-					netbuffer->retransmitfrom |= 0x40;
-				if (respawnparm)
-					netbuffer->retransmitfrom |= 0x20;
-				netbuffer->starttic = startepisode * 16 + startmap;
-				netbuffer->player = VERSION;
-				netbuffer->numtics = 0;
-				HSendPacket (i, NCMD_SETUP);
-			}
-	
-			while (HGetPacket ())
-			{
-				gotinfo[netbuffer->player&0x7f] = true;
-			}
-
-			for (i=1 ; i<doomcom->numnodes ; i++)
-				if (!gotinfo[i])
-					break;
-		} while (i < doomcom->numnodes);
-	}
-}
-
-/*
-===================
-=
-= D_CheckNetGame
-=
-= Works out player numbers among the net participants
-===================
-*/
-
-extern	int			viewangleoffset;
-
-void D_CheckNetGame (void)
-{
-	int             i;
-	
-	for (i=0 ; i<MAXNETNODES ; i++)
-	{
-		nodeingame[i] = false;
-       	nettics[i] = 0;
-		remoteresend[i] = false;	// set when local needs tics
-		resendto[i] = 0;			// which tic to start sending
-	}
-	
-// I_InitNetwork sets doomcom and netgame
-	I_InitNetwork ();
-	if (doomcom->id != DOOMCOM_ID)
-		I_Error ("Doomcom buffer invalid!");
-	netbuffer = &doomcom->data;
-	consoleplayer = displayplayer = doomcom->consoleplayer;
-	if (netgame)
-		D_ArbitrateNetStart ();
-printf ("startskill %i  deathmatch: %i  startmap: %i  startepisode: %i\n", startskill, deathmatch, startmap, startepisode);
-	
-// read values out of doomcom
-	ticdup = doomcom->ticdup;
-					
-	for (i=0 ; i<doomcom->numplayers ; i++)
-		playeringame[i] = true;
-	for (i=0 ; i<doomcom->numnodes ; i++)
-		nodeingame[i] = true;
-	
-printf ("player %i of %i (%i nodes)\n", consoleplayer+1, doomcom->numplayers, doomcom->numnodes);
-
-}
-
-/*
-==================
-=
-= D_QuitNetGame
-=
-= Called before quitting to leave a net game without hanging the
-= other players
-=
-==================
-*/
-
-void D_QuitNetGame (void)
-{
-	int             i, j;
-	
-	if (debugfile)
-		fclose (debugfile);
-		
-	if (!netgame || !usergame || consoleplayer == -1)
-		return;
-	
-// send a bunch of packets for security
-	netbuffer->player = consoleplayer;
-	if (doomcom->drone)
-		netbuffer->player |= PL_DRONE;
-	netbuffer->numtics = 0;
-	for (i=0 ; i<4 ; i++)
-	{
-		for (j=1 ; j<doomcom->numnodes ; j++)
-			if (nodeingame[j])
-				HSendPacket (j, NCMD_EXIT);
-		I_WaitVBL (1);
-	}
-}
-
-
-
-/*
-===============
-=
-= TryRunTics
-=
-===============
-*/
-
-int	frametics[4], frameon;
-int	frameskip[4];
-int		oldnettics;
-extern	boolean	advancedemo;
-
-void TryRunTics (void)
-{
-	int             i;
-	int             lowtic, nextlowest;
-	int             entertic;
-	int	static		oldentertics;
-	int				realtics, availabletics;
-	int				counts;
-	int				numplaying;
-
-//
-// get real tics
-//			
-	entertic = I_GetTime ();
-	realtics = entertic - oldentertics;
-	oldentertics = entertic;
-
-//
-// get available tics
-//
-	NetUpdate ();
-	
-	lowtic = nextlowest = MAXINT;
-	numplaying = 0;
-	for (i=0 ; i<doomcom->numnodes ; i++)
-		if (nodeingame[i])
-		{
-			numplaying++;
-			if (nettics[i] < lowtic)
-			{
-				nextlowest = lowtic;
-				lowtic = nettics[i];
-			}
-			else if (nettics[i] < nextlowest)
-				nextlowest = nettics[i]; 
-		}
-	availabletics = lowtic - gametic;
-	
-
-//
-// decide how many tics to run
-//
-	if (realtics < availabletics-1)
-		counts = realtics+1;
-	else if (realtics < availabletics)
-		counts = realtics;
-	else
-		counts = availabletics;
-	if (counts < 1)
-		counts = 1;
-		
-	frameon++;
-	
-if (debugfile)
-	fprintf (debugfile,"=======real: %i  avail: %i  game: %i\n",realtics, availabletics,counts);
-
-//=============================================================================
-//
-//	ideally nettics[0] should be 1 - 3 tics above lowtic
-//	if we are consistantly slower, speed up time
-//	drones should never hold up the other players
-//
-	for (i=0 ; i<MAXPLAYERS ; i++)
-		if (playeringame[i])
-			break;
-	if (consoleplayer == i)
-	{	// the key player does not adapt
-	}
-	else
-	{
-		if (nettics[0] <= nettics[nodeforplayer[i]])
-		{
-			gametime--;
-//			printf ("-");
-		}
-		frameskip[frameon&3] = (oldnettics > nettics[nodeforplayer[i]]);
-		oldnettics = nettics[0];
-		if (frameskip[0] && frameskip[1] && frameskip[2] && frameskip[3])
-		{
-			skiptics = 1;
-//			printf ("+");
-		}
-	}
-//=============================================================================
-
-//
-// wait for new tics if needed
-//
-	while (lowtic < gametic + counts)	
-	{
-
-		NetUpdate ();   
-		lowtic = MAXINT;
-		
-		for (i=0 ; i<doomcom->numnodes ; i++)
-			if (nodeingame[i] && nettics[i] < lowtic)
-				lowtic = nettics[i];
-
-		if (lowtic < gametic)
-			I_Error ("TryRunTics: lowtic < gametic");
-			
-		// don't stay in here forever -- give the menu a chance to work
-		if (I_GetTime () - entertic >= 20)
-			return;
-	}
-			
-
-//
-// run the tics
-//	
-	while (counts--)
-	{
-		G_Ticker ();
-		NetUpdate ();					// check for new console commands
-		gametic++;
-	}
-}
--- a/src/heretic/vgaview.h
+++ /dev/null
@@ -1,24 +1,0 @@
-
-#import <appkit/appkit.h>
-
-#import "DoomDef.h"
-
-// a few globals
-extern byte	*bytebuffer;
-
-
-@interface VGAView:View
-{
-    id		game;
-    int		nextpalette[256];	// color lookup table
-    int		*nextimage;		// palette expanded and scaled
-    unsigned	scale;
-    NXWindowDepth	depth;
-}
-
-- updateView;
-- (unsigned)scale;
-- setPalette:(byte *)pal;
-- setScale:(int)newscale;
-
-@end
--- a/src/hexen/defs.inc
+++ /dev/null
@@ -1,52 +1,0 @@
-SKIPPRIMITIVES	=  0			; set to 1 to skip unwound drawing
-
-
-SCREEN  =       0a0000h
-SCREENWIDTH     =   320
-SCREENHEIGHT	=	200
-PLANEWIDTH		=	80
-PLANESIZE		=	80*200
-
-PEL_WRITE_ADR	=	03c8h
-PEL_DATA		=	03c9h
-
-SC_INDEX		=	03C4h
-SC_MAPMASK		=	2
-
-OP_RET		=	0c3h
-OP_MOVAL	= 	08ah
-OP_MOVDEST	= 	088h
-
-
-	.DATA
-
-EXTRN	_dc_colormap:DWORD
-EXTRN _tinttable:DWORD
-EXTRN	_dc_x:DWORD
-EXTRN	_dc_yl:DWORD
-EXTRN	_dc_yh:DWORD
-EXTRN	_dc_iscale:DWORD
-EXTRN	_dc_texturemid:DWORD
-EXTRN	_dc_source:DWORD
-
-EXTRN	_ylookup:DWORD
-EXTRN	_columnofs:DWORD
-
-
-EXTRN	_ds_y:DWORD
-EXTRN	_ds_x1:DWORD
-EXTRN	_ds_x2:DWORD
-EXTRN	_ds_colormap:DWORD
-EXTRN	_ds_xfrac:DWORD
-EXTRN	_ds_yfrac:DWORD
-EXTRN	_ds_xstep:DWORD
-EXTRN	_ds_ystep:DWORD
-EXTRN	_ds_source:DWORD
-
-PUSHR	MACRO
-	pushad
-ENDM
-
-POPR	MACRO
-	popad
-ENDM
--- a/src/hexen/drcoord.h
+++ /dev/null
@@ -1,29 +1,0 @@
-
-//**************************************************************************
-//**
-//** DRCoord.h : Heretic 2 : Raven Software, Corp.
-//**
-//** $RCSfile: DRCoord.h,v $
-//** $Revision: 1.1 $
-//** $Date: 95/05/11 00:19:30 $
-//** $Author: bgokey $
-//**
-//**************************************************************************
-
-#import <appkit/appkit.h>
-
-@interface DRCoord:Object
-{
-	id	players_i;
-	id	console_i;
-	id	skill_i;
-	id	episode_i;
-	id	map_i;
-}
-
-- newGame: sender;
-- scale1: sender;
-- scale2: sender;
-- scale4: sender;
-
-@end
--- a/src/hexen/dstrings.h
+++ /dev/null
@@ -1,205 +1,0 @@
-
-//**************************************************************************
-//**
-//** DStrings.H
-//**
-//**************************************************************************
-
-// MN_menu.c ---------------------------------------------------------------
-
-#define PRESSKEY	"press a key."
-#define PRESSYN		"press y or n."
-#define TXT_PAUSED	"PAUSED"
-#define QUITMSG		"are you sure you want to\nquit this great game?"
-#define LOADNET		"you can't do load while in a net game!\n\n"PRESSKEY
-#define QLOADNET	"you can't quickload during a netgame!\n\n"PRESSKEY
-#define QSAVESPOT	"you haven't picked a quicksave slot yet!\n\n"PRESSKEY
-#define SAVEDEAD 	"you can't save if you aren't playing!\n\n"PRESSKEY
-#define QSPROMPT 	"quicksave over your game named\n\n'%s'?\n\n"PRESSYN
-#define QLPROMPT	"do you want to quickload the game named"\
-					"\n\n'%s'?\n\n"PRESSYN
-#define NEWGAME		"you can't start a new game\n"\
-					"while in a network game.\n\n"PRESSKEY
-#define NIGHTMARE	"are you sure? this skill level\n"\
-					"isn't even remotely fair.\n\n"PRESSYN
-#define SWSTRING	"this is the shareware version of doom.\n\n"\
-					"you need to order the entire trilogy.\n\n"PRESSKEY
-#define MSGOFF		"Messages OFF"
-#define MSGON		"Messages ON"
-#define NETEND		"you can't end a netgame!\n\n"PRESSKEY
-#define ENDGAME		"are you sure you want to end the game?\n\n"PRESSYN
-#define DOSY		"(press y to quit to dos.)"
-#define DETAILHI	"High detail"
-#define DETAILLO	"Low detail"
-#define GAMMALVL0	"Gamma correction OFF"
-#define GAMMALVL1	"Gamma correction level 1"
-#define GAMMALVL2	"Gamma correction level 2"
-#define GAMMALVL3	"Gamma correction level 3"
-#define GAMMALVL4	"Gamma correction level 4"
-#define	EMPTYSTRING	"empty slot"
-
-// P_inter.c ---------------------------------------------------------------
-
-// Keys
-
-#define TXT_GOTBLUEKEY			"BLUE KEY"
-#define TXT_GOTYELLOWKEY		"YELLOW KEY"
-#define TXT_GOTGREENKEY			"GREEN KEY"
-
-// Artifacts
-
-#define TXT_ARTIHEALTH			"QUARTZ FLASK"
-#define TXT_ARTIFLY				"WINGS OF WRATH"
-#define TXT_ARTIINVULNERABILITY	"RING OF INVINCIBILITY"
-#define TXT_ARTITOMEOFPOWER		"TOME OF POWER"
-#define TXT_ARTIINVISIBILITY	"SHADOWSPHERE"
-#define TXT_ARTIEGG				"MORPH OVUM"
-#define TXT_ARTISUPERHEALTH		"MYSTIC URN"
-#define TXT_ARTITORCH			"TORCH"
-#define TXT_ARTIFIREBOMB		"TIME BOMB OF THE ANCIENTS"
-#define TXT_ARTITELEPORT		"CHAOS DEVICE"
-
-// Items
-
-#define TXT_ITEMHEALTH			"CRYSTAL VIAL"
-#define TXT_ITEMBAGOFHOLDING	"BAG OF HOLDING"
-#define TXT_ITEMSHIELD1			"SILVER SHIELD"
-#define TXT_ITEMSHIELD2			"ENCHANTED SHIELD"
-#define TXT_ITEMSUPERMAP		"MAP SCROLL"
-
-// Ammo
-
-#define TXT_AMMOGOLDWAND1		"WAND CRYSTAL"
-#define TXT_AMMOGOLDWAND2		"CRYSTAL GEODE"
-#define TXT_AMMOMACE1			"MACE SPHERES"
-#define TXT_AMMOMACE2			"PILE OF MACE SPHERES"
-#define TXT_AMMOCROSSBOW1		"ETHEREAL ARROWS"
-#define TXT_AMMOCROSSBOW2		"QUIVER OF ETHEREAL ARROWS"
-#define TXT_AMMOBLASTER1		"CLAW ORB"
-#define TXT_AMMOBLASTER2		"ENERGY ORB"
-#define TXT_AMMOSKULLROD1		"LESSER RUNES"
-#define TXT_AMMOSKULLROD2		"GREATER RUNES"
-#define TXT_AMMOPHOENIXROD1		"FLAME ORB"
-#define TXT_AMMOPHOENIXROD2		"INFERNO ORB"
-
-// Weapons
-
-#define TXT_WPNMACE				"FIREMACE"
-#define TXT_WPNCROSSBOW			"ETHEREAL CROSSBOW"
-#define TXT_WPNBLASTER			"DRAGON CLAW"
-#define TXT_WPNSKULLROD			"HELLSTAFF"
-#define TXT_WPNPHOENIXROD		"PHOENIX ROD"
-#define TXT_WPNGAUNTLETS		"GAUNTLETS OF THE NECROMANCER"
-
-// SB_bar.c ----------------------------------------------------------------
-
-#define TXT_CHEATGODON			"GOD MODE ON"
-#define TXT_CHEATGODOFF			"GOD MODE OFF"
-#define TXT_CHEATNOCLIPON		"NO CLIPPING ON"
-#define TXT_CHEATNOCLIPOFF		"NO CLIPPING OFF"
-#define TXT_CHEATWEAPONS		"ALL WEAPONS"
-#define TXT_CHEATFLIGHTON		"FLIGHT ON"
-#define TXT_CHEATFLIGHTOFF		"FLIGHT OFF"
-#define TXT_CHEATPOWERON		"POWER ON"
-#define TXT_CHEATPOWEROFF		"POWER OFF"
-#define TXT_CHEATHEALTH			"FULL HEALTH"
-#define TXT_CHEATKEYS			"ALL KEYS"
-#define TXT_CHEATSOUNDON		"SOUND DEBUG ON"
-#define TXT_CHEATSOUNDOFF		"SOUND DEBUG OFF"
-#define TXT_CHEATTICKERON		"TICKER ON"
-#define TXT_CHEATTICKEROFF		"TICKER OFF"
-#define TXT_CHEATARTIFACTS1		"CHOOSE AN ARTIFACT ( A - J )"
-#define TXT_CHEATARTIFACTS2		"HOW MANY ( 1 - 9 )"
-#define TXT_CHEATARTIFACTS3		"YOU GOT IT"
-#define TXT_CHEATARTIFACTSFAIL	"BAD INPUT"
-#define TXT_CHEATWARP			"LEVEL WARP"
-#define TXT_CHEATSCREENSHOT		"SCREENSHOT"
-#define TXT_CHEATCHICKENON		"CHICKEN ON"
-#define TXT_CHEATCHICKENOFF		"CHICKEN OFF"
-#define TXT_CHEATMASSACRE		"MASSACRE"
-#define TXT_CHEATIDDQD			"TRYING TO CHEAT, EH?  NOW YOU DIE!"
-#define TXT_CHEATIDKFA			"CHEATER - YOU DON'T DESERVE WEAPONS"
-
-// P_doors.c ---------------------------------------------------------------
-
-#define TXT_NEEDBLUEKEY			"YOU NEED A BLUE KEY TO OPEN THIS DOOR"
-#define TXT_NEEDGREENKEY		"YOU NEED A GREEN KEY TO OPEN THIS DOOR"
-#define TXT_NEEDYELLOWKEY		"YOU NEED A YELLOW KEY TO OPEN THIS DOOR"
-
-// G_game.c ----------------------------------------------------------------
-
-#define TXT_GAMESAVED			"GAME SAVED"
-
-// M_misc.c ----------------------------------------------------------------
-
-#define HUSTR_CHATMACRO1 "I'm ready to kick butt!"
-#define HUSTR_CHATMACRO2 "I'm OK."
-#define HUSTR_CHATMACRO3 "I'm not looking too good!"
-#define HUSTR_CHATMACRO4 "Help!"
-#define HUSTR_CHATMACRO5 "You suck!"
-#define HUSTR_CHATMACRO6 "Next time, scumbag..."
-#define HUSTR_CHATMACRO7 "Come here!"
-#define HUSTR_CHATMACRO8 "I'll take care of it."
-#define HUSTR_CHATMACRO9 "Yes"
-#define HUSTR_CHATMACRO0 "No"
-
-// AM_map.c ----------------------------------------------------------------
-
-#define AMSTR_FOLLOWON		"FOLLOW MODE ON"
-#define AMSTR_FOLLOWOFF		"FOLLOW MODE OFF"
-
-// F_finale.c --------------------------------------------------------------
-
-#define E1TEXT		"with the destruction of the iron\n"\
-					"liches and their minions, the last\n"\
-					"of the undead are cleared from this\n"\
-					"plane of existence.\n\n"\
-					"those creatures had to come from\n"\
-					"somewhere, though, and you have the\n"\
-					"sneaky suspicion that the fiery\n"\
-					"portal of hell's maw opens onto\n"\
-					"their home dimension.\n\n"\
-					"to make sure that more undead\n"\
-					"(or even worse things) don't come\n"\
-					"through, you'll have to seal hell's\n"\
-					"maw from the other side. of course\n"\
-					"this means you may get stuck in a\n"\
-					"very unfriendly world, but no one\n"\
-					"ever said being a Heretic was easy!"
-
-#define E2TEXT		"the mighty maulotaurs have proved\n"\
-					"to be no match for you, and as\n"\
-					"their steaming corpses slide to the\n"\
-					"ground you feel a sense of grim\n"\
-					"satisfaction that they have been\n"\
-					"destroyed.\n\n"\
-					"the gateways which they guarded\n"\
-					"have opened, revealing what you\n"\
-					"hope is the way home. but as you\n"\
-					"step through, mocking laughter\n"\
-					"rings in your ears.\n\n"\
-					"was some other force controlling\n"\
-					"the maulotaurs? could there be even\n"\
-					"more horrific beings through this\n"\
-					"gate? the sweep of a crystal dome\n"\
-					"overhead where the sky should be is\n"\
-					"certainly not a good sign...."
-
-#define E3TEXT		"the death of d'sparil has loosed\n"\
-					"the magical bonds holding his\n"\
-					"creatures on this plane, their\n"\
-					"dying screams overwhelming his own\n"\
-					"cries of agony.\n\n"\
-					"your oath of vengeance fulfilled,\n"\
-					"you enter the portal to your own\n"\
-					"world, mere moments before the dome\n"\
-					"shatters into a million pieces.\n\n"\
-					"but if d'sparil's power is broken\n"\
-					"forever, why don't you feel safe?\n"\
-					"was it that last shout just before\n"\
-					"his death, the one that sounded\n"\
-					"like a curse? or a summoning? you\n"\
-					"can't really be sure, but it might\n"\
-					"just have been a scream.\n\n"\
-					"then again, what about the other\n"\
-					"serpent riders?"
--- a/src/hexen/i_ibm_a.asm
+++ /dev/null
@@ -1,135 +1,0 @@
-	.386
-	.MODEL  small
-
-.DATA
-
-
-
-.CODE
-
-IF 0
-#define PEL_WRITE_ADR   0x3c8
-#define PEL_READ_ADR    0x3c7
-#define PEL_DATA                0x3c9
-ENDIF
-
-;================
-;
-; I_DivException
-;
-;================
-
-PROC  	I_DivException_
-PUBLIC 	I_DivException_
-	mov	edx,03c9h
-	mov	al,63
-	out	dx,al
-
-	mov	ebx,0ffffffh
-	mov	eax,[ebx]
-	retf
-ENDP
-
-;================
-;
-; I_SetDivException
-;
-;================
-
-PROC  	I_SetDivException_
-PUBLIC 	I_SetDivException_
-	pusha
-
-	mov	eax,0212h
-	mov	ebx,0
-	mov	ecx,cs
-	mov	edx,OFFSET I_DivException_
-	int 31h
-	jnc	good
-
-	popa
-	mov	eax,0
-	ret
-
-good:
-	popa
-	mov	eax,1
-	ret
-
-ENDP
-
-
-;================
-;
-; I_ReadJoystick
-;
-; Read the absolute joystick values
-; returns false if not connected
-;================
-
-.data
-
-_joystickx	dd	0
-_joysticky	dd	0
-PUBLIC	_joystickx, _joysticky
-
-.code
-
-PROC  	I_ReadJoystick_
-PUBLIC 	I_ReadJoystick_
-	pushad
-	pushf					; state of interrupt flag
-	cli
-
-	mov		dx,0201h
-	in		al,dx
-	out		dx,al		; Clear the resistors
-
-	mov		ah,1		; Get masks into registers
-	mov		ch,2
-
-	xor		esi,esi		; Clear count registers
-	xor		edi,edi
-	xor		ebx,ebx		; Clear high byte of bx for later
-
-	mov		ebp,10000	; joystick is disconnected if value is this big
-
-jloop:
-	in		al,dx		; Get bits indicating whether all are finished
-
-	dec		ebp			; Check bounding register
-	jz		bad			; We have a silly value - abort
-
-	mov		bl,al		; Duplicate the bits
-	and		bl,ah		; Mask off useless bits (in [xb])
-	add		esi,ebx		; Possibly increment count register
-	mov		cl,bl		; Save for testing later
-
-	mov		bl,al
-	and		bl,ch		; [yb]
-	add		edi,ebx
-
-	add		cl,bl
-	jnz		jloop 		; If both bits were 0, drop out
-
-done:
-	mov		[_joystickx],esi
-	shr		edi,1		; because 2s were added
-	mov		[_joysticky],edi
-
-	popf			; restore interrupt flag
-	popad
-	mov	eax,1		; read was ok
-	ret
-
-bad:
-	popf			; restore interrupt flag
-	popad
-	xor     eax, eax	; read was bad
-	ret
-
-ENDP
-
-
-END
-
--- a/src/hexen/linear.asm
+++ /dev/null
@@ -1,349 +1,0 @@
-	.386
-	.MODEL  small
-	INCLUDE defs.inc
-
-
-;============================================================================
-;
-; unwound vertical scaling code
-;
-; eax   light table pointer, 0 lowbyte overwritten
-; ebx   all 0, low byte overwritten
-; ecx   fractional step value
-; edx   fractional scale value
-; esi   start of source pixels
-; edi   bottom pixel in screenbuffer to blit into
-;
-; ebx should be set to 0 0 0 dh to feed the pipeline
-;
-; The graphics wrap vertically at 128 pixels
-;============================================================================
-
-.DATA
-
-EXTRN	_centery:DWORD
-
-SCALEDEFINE     MACRO   number
-	dd      vscale&number
-ENDM
-
-	ALIGN   4
-scalecalls      LABEL
-LINE    =       0
-REPT    SCREENHEIGHT+1
-	SCALEDEFINE     %LINE
-LINE    =       LINE+1
-ENDM
-
-FUZZSCALEDEFINE     MACRO   number
-	dd      fuzzvscale&number
-ENDM
-
-	ALIGN   4
-fuzzscalecalls      LABEL
-LINE    =       0
-REPT    SCREENHEIGHT+1
-	FUZZSCALEDEFINE     %LINE
-LINE    =       LINE+1
-ENDM
-
-calladdr	dd	?
-
-;=================================
-
-
-.CODE
-
-;================
-;
-; R_DrawColumn
-;
-;================
-
-PROC   R_DrawColumn_
-PUBLIC   R_DrawColumn_
-	PUSHR
-
-	mov		ebp,[_dc_yh]
-	mov		ebx,ebp
-	mov     edi,[_ylookup+ebx*4]
-	mov		ebx,[_dc_x]
-	add     edi,[_columnofs + ebx*4]
-
-	mov		eax,[_dc_yl]
-	sub     ebp,eax                    ; ebp = pixel count
-	or		ebp,ebp
-	js		done
-
-	mov     ecx,[_dc_iscale]
-
-	sub		eax,[_centery]
-	imul	ecx
-	mov		edx,[_dc_texturemid]
-	add		edx,eax
-	shl		edx,9							; 7 significant bits, 25 frac
-
-	shl		ecx,9							; 7 significant bits, 25 frac
-	mov     esi,[_dc_source]
-
-	mov     eax,[_dc_colormap]
-
-	xor     ebx,ebx
-	shld    ebx,edx,7						; get address of first location
-	call    [scalecalls+4+ebp*4]
-
-done:
-	POPR
-	ret
-
-;============ HIGH DETAIL ============
-
-SCALELABEL      MACRO   number
-vscale&number:
-ENDM
-
-LINE    =       SCREENHEIGHT
-REPT SCREENHEIGHT-1
-	SCALELABEL      %LINE
-	mov     al,[esi+ebx]                    ; get source pixel
-	add     edx,ecx                         ; calculate next location
-	mov     al,[eax]                        ; translate the color
-;	xor             ebx,ebx
-;	shld    ebx,edx,7                      ; get address of next location
-	mov		ebx,edx
-	shr		ebx,25
-	mov     [edi-(LINE-1)*SCREENWIDTH],al   ; draw a pixel to the buffer
-LINE    =       LINE-1
-ENDM
-vscale1:
-	mov     al,[esi+ebx]
-	mov     al,[eax]
-	mov     [edi],al
-vscale0:
-	ret
-
-ENDP
-
-
-;================
-;
-; R_DrawFuzz
-;
-;================
-
-PROC   R_DrawFuzzColumn_
-PUBLIC   R_DrawFuzzColumn_
-	PUSHR
-
-	mov	ebp,[_dc_yh]
-	mov	ebx,ebp
-	mov     edi,[_ylookup+ebx*4]
-	mov	ebx,[_dc_x]
-	add     edi,[_columnofs + ebx*4]
-
-	mov	eax,[_dc_yl]
-	sub     ebp,eax                    ; ebp = pixel count
-	or	ebp,ebp
-	js	fuzzdone
-
-	mov     ecx,[_dc_iscale]
-
-	sub	eax,[_centery]
-	imul	ecx
-	mov	edx,[_dc_texturemid]
-	add	edx,eax
-	shl	edx,9  ; 7 significant bits, 25 frac
-
-	shl	ecx,9  ; 7 significant bits, 25 frac
-	mov     esi,[_dc_source]
-	mov     eax,[_dc_colormap]
-	xor     ebx,ebx
-	shld    ebx,edx,7	;get address of first location
-
-	mov	ebp, [fuzzscalecalls+4+ebp*4]
-	mov	calladdr, ebp
-	mov	ebp, ecx
-	xor	ecx, ecx
-
-	call 	[calladdr]
-
-fuzzdone:
-	POPR
-	ret
-
-
-FUZZSCALELABEL      MACRO   number
-fuzzvscale&number:
-ENDM
-
-LINE    =       SCREENHEIGHT
-REPT SCREENHEIGHT-1
-	FUZZSCALELABEL      %LINE
-	mov     al, byte ptr [esi+ebx]    ; get source pixel
-	add     edx, ebp                         ; calculate next location
-
-	mov	cl, byte ptr [edi-(LINE-1)*SCREENWIDTH]
-	mov 	ch, [eax]
-	add	ecx, [_tinttable]
-	mov	ebx, edx
-	shr	ebx, 25
-	mov	al, [ecx]
-	mov     [edi-(LINE-1)*SCREENWIDTH],al   ; draw a pixel to the buffer
-	xor	ecx, ecx
-LINE    =       LINE-1
-ENDM
-fuzzvscale1:
-	mov     al,[esi+ebx]
-	mov	cl, byte ptr [edi-(LINE-1)*SCREENWIDTH]
-	mov 	ch, [eax]
-	add	ecx, [_tinttable]
-	mov	al, [ecx]
-	mov     [edi],al
-fuzzvscale0:
-	ret
-
-ENDP
-
-;============================================================================
-;
-; unwound horizontal texture mapping code
-;
-; eax   lighttable
-; ebx   scratch register
-; ecx   position 6.10 bits x, 6.10 bits y
-; edx   step 6.10 bits x, 6.10 bits y
-; esi   start of block
-; edi   dest
-; ebp   fff to mask bx
-;
-; ebp should by preset from ebx / ecx before calling
-;============================================================================
-
-OP_SHLD	=	0fh
-
-
-.DATA
-
-
-MAPDEFINE     MACRO   number
-	dd      hmap&number
-ENDM
-
-	ALIGN   4
-mapcalls      LABEL
-LINE    =       0
-REPT    SCREENWIDTH+1
-	MAPDEFINE     %LINE
-LINE    =       LINE+1
-ENDM
-
-
-callpoint	dd  0
-returnpoint	dd	0
-
-
-.CODE
-
-;================
-;
-; R_DrawSpan
-;
-; Horizontal texture mapping
-;
-;================
-
-
-PROC   R_DrawSpan_
-PUBLIC	R_DrawSpan_
-	PUSHR
-
-IFE SKIPPRIMITIVES
-
-	mov	eax,[_ds_x1]
-	mov	ebx,[_ds_x2]
-	mov	eax,[mapcalls+eax*4]
-	mov	[callpoint],eax       ; spot to jump into unwound
-	mov	eax,[mapcalls+4+ebx*4]
-	mov	[returnpoint],eax     ; spot to patch a ret at
-	mov	BYTE PTR [eax], OP_RET
-
-;
-; build composite position
-;
-	mov	ecx,[_ds_xfrac]
-	shl	ecx,10
-	and	ecx,0ffff0000h
-	mov	eax,[_ds_yfrac]
-	shr	eax,6
-	and	eax,0ffffh
-	or	ecx,eax
-
-;
-; build composite step
-;
-	mov	edx,[_ds_xstep]
-	shl	edx,10
-	and	edx,0ffff0000h
-	mov	eax,[_ds_ystep]
-	shr	eax,6
-	and	eax,0ffffh
-	or	edx,eax
-
-	mov	esi,[_ds_source]
-
-	mov	edi,[_ds_y]
-	mov	edi,[_ylookup+edi*4]
-	add edi,[_columnofs]
-
-	mov	eax,[_ds_colormap]
-
-;
-; feed the pipeline and jump in
-;
-	mov		ebp,0fffh		; used to mask off slop high bits from position
-	shld	ebx,ecx,22				; shift y units in
-	shld	ebx,ecx,6				; shift x units in
-	and		ebx,ebp					; mask off slop bits
-	call    [callpoint]
-
-	mov	ebx,[returnpoint]
-	mov	BYTE PTR [ebx],OP_MOVAL		; remove the ret patched in
-
-ENDIF
-	POPR
-	ret
-
-
-;============= HIGH DETAIL ============
-
-.CODE
-
-MAPLABEL      MACRO   number
-hmap&number:
-ENDM
-
-LINE    =      0
-PCOL	=	0
-REPT SCREENWIDTH/4
-PLANE	=	0
-REPT	4
-	MAPLABEL      %LINE
-LINE    =	LINE + 1
-
-	mov     al,[esi+ebx]            ; get source pixel
-	shld	ebx,ecx,22				; shift y units in
-	shld	ebx,ecx,6				; shift x units in
-	mov     al,[eax]                ; translate color
-	and	ebx,ebp					; mask off slop bits
-	add	ecx,edx					; position += step
-	mov     [edi+PLANE+PCOL*4],al       ; write pixel
-PLANE	=	PLANE + 1
-ENDM
-PCOL	=	PCOL + 1
-ENDM
-hmap320:
-	ret
-
-ENDP
-
-END
--- a/src/hexen/oldd_net.c
+++ /dev/null
@@ -1,790 +1,0 @@
-// I_pcnet.m
-
-#include "DoomDef.h"
-
-#define	NCMD_EXIT		0x80000000
-#define	NCMD_RETRANSMIT	0x40000000
-#define	NCMD_SETUP		0x20000000
-#define	NCMD_CHECKSUM	0x0fffffff
-
-/*
-if more space needs to be crunched out of the protocol...
-
-1	drone
-2	player
-8	tic
-5	numtics
-
-#define	NCMD_EXIT		0x80000000
-#define	NCMD_RETRANSMIT	0x40000000			// a retransmit will have 0 tics
-#define	NCMD_DRONE		0x20000000
-#define	NCMD_PLAYER		0x18000000
-#define	NCMD_PLAYERSHIFT	27
-#define	NCMD_TIC		0x00ff0000
-#define	NCMD_TICSHIFT	16
-#define	NCMD_NUMTICS	0x0000ff00
-#define	NCMD_NUMTICSSHIFT	8
-#define	NCMD_CHECKSUM	0x000000ff
-
-*/
-
-
-
-
-
-doomcom_t		*doomcom;	
-doomdata_t		*netbuffer;		// points inside doomcom
-
-
-/*
-==============================================================================
-
-							NETWORKING
-
-gametic is the tic about to (or currently being) run
-maketic is the tick that hasn't had control made for it yet
-nettics[] has the maketics for all players 
-
-a gametic cannot be run until nettics[] > gametic for all players
-
-==============================================================================
-*/
-
-#define	RESENDCOUNT	10
-#define	PL_DRONE	0x80				// bit flag in doomdata->player
-
-ticcmd_t		localcmds[BACKUPTICS];
-
-ticcmd_t        netcmds[MAXPLAYERS][BACKUPTICS];
-int         	nettics[MAXNETNODES];
-boolean			nodeingame[MAXNETNODES];	// set false as nodes leave game
-boolean			remoteresend[MAXNETNODES];	// set when local needs tics
-int				resendto[MAXNETNODES];			// set when remote needs tics
-int				resendcount[MAXNETNODES];
-
-int				nodeforplayer[MAXPLAYERS];
-
-int             gametime;
-int             maketic;
-int				lastnettic, skiptics;
-int				ticdup;		
-
-void D_ProcessEvents (void);
-void G_BuildTiccmd (ticcmd_t *cmd);
-void D_DoAdvanceDemo (void);
-
-boolean			reboundpacket;
-doomdata_t		reboundstore;
-
-
-int	NetbufferSize (void)
-{
-	return (int)&(((doomdata_t *)0)->cmds[netbuffer->numtics]); 
-}
-
-unsigned NetbufferChecksum (void)
-{
-	unsigned		c;
-	int		i,l;
-
-	c = 0x1234567;
-
-#ifdef NeXT
-	return 0;			// byte order problems
-#endif
-
-	l = (NetbufferSize () - (int)&(((doomdata_t *)0)->retransmitfrom))/4;
-	for (i=0 ; i<l ; i++)
-		c += ((unsigned *)&netbuffer->retransmitfrom)[i] * (i+1);
-
-	return c & NCMD_CHECKSUM;
-}
-
-int ExpandTics (int low)
-{
-	int	delta;
-	
-	delta = low - (maketic&0xff);
-	
-	if (delta >= -64 && delta <= 64)
-		return (maketic&~0xff) + low;
-	if (delta > 64)
-		return (maketic&~0xff) - 256 + low;
-	if (delta < -64)
-		return (maketic&~0xff) + 256 + low;
-		
-	I_Error ("ExpandTics: strange value %i at maketic %i",low,maketic);
-	return 0;
-}
-
-
-//============================================================================
-
-
-/*
-==============
-=
-= HSendPacket
-=
-==============
-*/
-
-void HSendPacket (int node, int flags)
-{
-	netbuffer->checksum = NetbufferChecksum () | flags;
-
-	if (!node)
-	{
-		reboundstore = *netbuffer;
-		reboundpacket = true;
-		return;
-	}
-
-	if (!netgame)
-		I_Error ("Tried to transmit to another node");
-		
-	doomcom->command = CMD_SEND;
-	doomcom->remotenode = node;
-	doomcom->datalength = NetbufferSize ();
-	
-if (debugfile)
-{
-	int		i;
-	int		realretrans;
-	if (netbuffer->checksum & NCMD_RETRANSMIT)
-		realretrans = ExpandTics (netbuffer->retransmitfrom);
-	else
-		realretrans = -1;
-	fprintf (debugfile,"send (%i + %i, R %i) [%i] "
-	,ExpandTics(netbuffer->starttic),netbuffer->numtics, realretrans, doomcom->datalength);
-	for (i=0 ; i<doomcom->datalength ; i++)
-		fprintf (debugfile,"%i ",((byte *)netbuffer)[i]);
-	fprintf (debugfile,"\n");
-}
-
-	I_NetCmd ();
-}
-
-/*
-==============
-=
-= HGetPacket
-=
-= Returns false if no packet is waiting
-=
-==============
-*/
-
-boolean HGetPacket (void)
-{	
-	if (reboundpacket)
-	{
-		*netbuffer = reboundstore;
-		doomcom->remotenode = 0;
-		reboundpacket = false;
-		return true;
-	}
-
-	if (!netgame)
-		return false;
-		
-	doomcom->command = CMD_GET;
-	I_NetCmd ();
-	if (doomcom->remotenode == -1)
-		return false;
-
-	if (doomcom->datalength != NetbufferSize ())
-	{
-		if (debugfile)
-			fprintf (debugfile,"bad packet length %i\n",doomcom->datalength);
-		return false;
-	}
-	
-	if (NetbufferChecksum () != (netbuffer->checksum&NCMD_CHECKSUM) )
-	{
-		if (debugfile)
-			fprintf (debugfile,"bad packet checksum\n");
-		return false;
-	}
-
-if (debugfile)
-{
-	int		realretrans;
-			int	i;
-			
-	if (netbuffer->checksum & NCMD_SETUP)
-		fprintf (debugfile,"setup packet\n");
-	else
-	{
-		if (netbuffer->checksum & NCMD_RETRANSMIT)
-			realretrans = ExpandTics (netbuffer->retransmitfrom);
-		else
-			realretrans = -1;
-		fprintf (debugfile,"get %i = (%i + %i, R %i)[%i] ",doomcom->remotenode,
-		ExpandTics(netbuffer->starttic),netbuffer->numtics, realretrans, doomcom->datalength);
-		for (i=0 ; i<doomcom->datalength ; i++)
-			fprintf (debugfile,"%i ",((byte *)netbuffer)[i]);
-		fprintf (debugfile,"\n");
-	}
-}
-	return true;	
-}
-
-
-/*
-===================
-=
-= GetPackets
-=
-===================
-*/
-
-char    exitmsg[80];
-
-void GetPackets (void)
-{
-	int		netconsole;
-	int		netnode;
-	int		netdrone;
-	int		j;
-	ticcmd_t	*src, *dest;
-	int		dupedstart, dupedend;
-	int		skiptics;
-	int		realstart;
-				 
-	while (HGetPacket ())
-	{
-		if (netbuffer->checksum & NCMD_SETUP)
-			continue;		// extra setup packet
-			
-		netdrone = netbuffer->player & PL_DRONE;
-		netconsole = netbuffer->player & ~PL_DRONE;
-		netnode = doomcom->remotenode;
-		//
-		// to save bytes, only the low byte of tic numbers are sent
-		// Figure out what the rest of the bytes are
-		//
-		realstart = ExpandTics (netbuffer->starttic);		
-		dupedstart = realstart*doomcom->ticdup;
-		dupedend = (realstart+netbuffer->numtics)*doomcom->ticdup;
-		
-		//
-		// check for exiting the game
-		//
-		if (netbuffer->checksum & NCMD_EXIT)
-		{
-			if (!nodeingame[netnode])
-				continue;
-			nodeingame[netnode] = false;
-			if (!netdrone)
-			{
-				playeringame[netconsole] = false;
-				strcpy (exitmsg, "Player 1 left the game");
-				exitmsg[7] += netconsole;
-				players[consoleplayer].message = exitmsg;
-			}
-			continue;
-		}
-
-		//
-		// drone packets are just notifications
-		//
-		if (netdrone)
-		{
-			nettics[netnode] = dupedend;
-			continue;
-		}
-
-		nodeforplayer[netconsole] = netnode;
-		
-		//
-		// check for retransmit request
-		//
-		if ( resendcount[netnode] <= 0 
-		&& (netbuffer->checksum & NCMD_RETRANSMIT) )
-		{
-			resendto[netnode] = ExpandTics(netbuffer->retransmitfrom);
-if (debugfile)
-fprintf (debugfile,"retransmit from %i\n", resendto[netnode]);
-			resendcount[netnode] = RESENDCOUNT;
-		}
-		else
-			resendcount[netnode]--;
-
-		//
-		// check for out of order / duplicated packet
-		//		
-		if (dupedend == nettics[netnode])
-			continue;
-			
-		if (dupedend < nettics[netnode])
-		{
-if (debugfile)
-fprintf (debugfile,"out of order packet (%i + %i)\n" ,realstart,netbuffer->numtics);
-			continue;
-		}
-
-		//
-		// check for a missed packet
-		//
-		if (dupedstart > nettics[netnode])
-		{
-		// stop processing until the other system resends the missed tics
-if (debugfile)
-fprintf (debugfile,"missed tics from %i (%i - %i)\n", netnode, dupedstart, nettics[netnode]);
-			remoteresend[netnode] = true;
-			continue;
-		}
-	
-//
-// update command store from the packet
-//
-		remoteresend[netnode] = false;
-		
-		skiptics = nettics[netnode]/doomcom->ticdup - realstart;		
-		src = &netbuffer->cmds[skiptics];
-
-		while (nettics[netnode] < dupedend)
-		{
-			for (j=0 ; j<doomcom->ticdup ; j++)
-			{
-				dest = &netcmds[netconsole][nettics[netnode]%BACKUPTICS];
-				nettics[netnode]++;
-				*dest = *src;
-				src->chatchar = 0;
-				if (src->buttons & BT_SPECIAL)
-					src->buttons = 0;
-			}
-			src++;
-		}
-	}
-}
-
-/*
-=============
-=
-= NetUpdate
-=
-= Builds ticcmds for console player
-= sends out a packet
-=============
-*/
-
-void NetUpdate (void)
-{
-	int             nowtime;
-	int             newtics;
-	int				i,j;
-	int				gameticdiv;
-	int				realstart;
-		
-	if (singletics)
-		return;         // singletic update is syncronous
-		
-//
-// check time
-//      
-	nowtime = I_GetTime ()/doomcom->ticdup;
-	newtics = nowtime - gametime;
-	gametime = nowtime;
-	if (newtics <= 0)                       // nothing new to update
-		goto listen; 
-
-	if (skiptics <= newtics)
-	{
-		newtics -= skiptics;
-		skiptics = 0;
-	}
-	else
-	{
-		skiptics -= newtics;
-		newtics = 0;
-	}
-	
-		
-	netbuffer->player = consoleplayer;
-	if (doomcom->drone)
-		netbuffer->player |= PL_DRONE;
-	
-//
-// drone packets
-//
-	if (doomcom->drone)
-	{
-		I_StartTic ();
-		D_ProcessEvents ();
-		goto sendit;
-	}
-	
-//
-// build new ticcmds for console player
-//
-	gameticdiv = (gametic+doomcom->ticdup-1)/doomcom->ticdup;
-	for (i=0 ; i<newtics ; i++)
-	{
-		I_StartTic ();
-		D_ProcessEvents ();
-		if (maketic - gameticdiv >= BACKUPTICS/2 /* /doomcom->ticdup */- 1)
-		{
-			newtics = i;
-			break;          // can't hold any more
-		}
-//printf ("mk:%i ",maketic);
-		G_BuildTiccmd (&localcmds[maketic%BACKUPTICS]);
-		maketic++;
-	}
-
-//
-// send the packet to the other nodes
-//
-sendit:
-	for (i=0 ; i<doomcom->numnodes ; i++)
-		if (nodeingame[i])
-		{
-			if (doomcom->drone)
-			{
-				netbuffer->starttic = realstart = maketic + BACKUPTICS/2;
-				netbuffer->numtics = 0;
-			}
-			else
-			{
-				netbuffer->starttic = realstart = resendto[i];
-				netbuffer->numtics = maketic - realstart;
-				resendto[i] = maketic - doomcom->extratics;
-			}
-	
-			if (netbuffer->numtics > BACKUPTICS)
-				I_Error ("NetUpdate: netbuffer->numtics > BACKUPTICS");
-
-			for (j=0 ; j< netbuffer->numtics ; j++)
-				netbuffer->cmds[j] = 
-					localcmds[(realstart+j)%BACKUPTICS];
-					
-			if (remoteresend[i])
-			{
-				netbuffer->retransmitfrom = nettics[i]/doomcom->ticdup;
-				HSendPacket (i, NCMD_RETRANSMIT);
-			}
-			else
-			{
-				netbuffer->retransmitfrom = 0;
-				HSendPacket (i, 0);
-			}
-		}
-
-//
-// listen for other packets
-//		
-listen:
-
-	GetPackets ();
-}
-
-
-/*
-=====================
-=
-= CheckAbort
-=
-=====================
-*/
-
-void CheckAbort (void)
-{
-	event_t *ev;
-	
-	I_WaitVBL(2);
-	
-	I_StartTic ();
-	for ( ; eventtail != eventhead 
-	; eventtail = (++eventtail)&(MAXEVENTS-1) )
-	{
-		ev = &events[eventtail];
-		if (ev->type == ev_keydown && ev->data1 == KEY_ESCAPE)
-			I_Error ("Network game synchronization aborted.");
-	}
-}
-
-/*
-=====================
-=
-= D_ArbitrateNetStart
-=
-=====================
-*/
-
-void D_ArbitrateNetStart (void)
-{
-	int		i;
-	boolean	gotinfo[MAXNETNODES];
-	
-	autostart = true;
-	memset (gotinfo,0,sizeof(gotinfo));
-	
-	if (doomcom->consoleplayer)
-	{	// listen for setup info from key player
-		printf ("listening for network start info...\n");
-		while (1)
-		{
-			CheckAbort ();
-			if (!HGetPacket ())
-				continue;
-			if (netbuffer->checksum & NCMD_SETUP)
-			{
-				if (netbuffer->player != VERSION)
-					I_Error ("Different DOOM versions cannot play a net game!");
-				startskill = netbuffer->retransmitfrom & 15;
-				deathmatch = (netbuffer->retransmitfrom & 0x80) > 0;
-				nomonsters = (netbuffer->retransmitfrom & 0x40) > 0;
-				respawnparm = (netbuffer->retransmitfrom & 0x20) > 0;
-				startmap = netbuffer->starttic & 15;
-				startepisode = netbuffer->starttic >> 4;
-				return;
-			}
-		}
-	}
-	else
-	{	// key player, send the setup info
-		printf ("sending network start info...\n");
-		do
-		{
-			CheckAbort ();
-			for (i=0 ; i<doomcom->numnodes ; i++)
-			{
-				netbuffer->retransmitfrom = startskill;
-				if (deathmatch)
-					netbuffer->retransmitfrom |= 0x80;
-				if (nomonsters)
-					netbuffer->retransmitfrom |= 0x40;
-				if (respawnparm)
-					netbuffer->retransmitfrom |= 0x20;
-				netbuffer->starttic = startepisode * 16 + startmap;
-				netbuffer->player = VERSION;
-				netbuffer->numtics = 0;
-				HSendPacket (i, NCMD_SETUP);
-			}
-	
-			while (HGetPacket ())
-			{
-				gotinfo[netbuffer->player&0x7f] = true;
-			}
-
-			for (i=1 ; i<doomcom->numnodes ; i++)
-				if (!gotinfo[i])
-					break;
-		} while (i < doomcom->numnodes);
-	}
-}
-
-/*
-===================
-=
-= D_CheckNetGame
-=
-= Works out player numbers among the net participants
-===================
-*/
-
-extern	int			viewangleoffset;
-
-void D_CheckNetGame (void)
-{
-	int             i;
-	
-	for (i=0 ; i<MAXNETNODES ; i++)
-	{
-		nodeingame[i] = false;
-       	nettics[i] = 0;
-		remoteresend[i] = false;	// set when local needs tics
-		resendto[i] = 0;			// which tic to start sending
-	}
-	
-// I_InitNetwork sets doomcom and netgame
-	I_InitNetwork ();
-	if (doomcom->id != DOOMCOM_ID)
-		I_Error ("Doomcom buffer invalid!");
-	netbuffer = &doomcom->data;
-	consoleplayer = displayplayer = doomcom->consoleplayer;
-	if (netgame)
-		D_ArbitrateNetStart ();
-printf ("startskill %i  deathmatch: %i  startmap: %i  startepisode: %i\n", startskill, deathmatch, startmap, startepisode);
-	
-// read values out of doomcom
-	ticdup = doomcom->ticdup;
-					
-	for (i=0 ; i<doomcom->numplayers ; i++)
-		playeringame[i] = true;
-	for (i=0 ; i<doomcom->numnodes ; i++)
-		nodeingame[i] = true;
-	
-printf ("player %i of %i (%i nodes)\n", consoleplayer+1, doomcom->numplayers, doomcom->numnodes);
-
-}
-
-/*
-==================
-=
-= D_QuitNetGame
-=
-= Called before quitting to leave a net game without hanging the
-= other players
-=
-==================
-*/
-
-void D_QuitNetGame (void)
-{
-	int             i, j;
-	
-	if (debugfile)
-		fclose (debugfile);
-		
-	if (!netgame || !usergame || consoleplayer == -1)
-		return;
-	
-// send a bunch of packets for security
-	netbuffer->player = consoleplayer;
-	if (doomcom->drone)
-		netbuffer->player |= PL_DRONE;
-	netbuffer->numtics = 0;
-	for (i=0 ; i<4 ; i++)
-	{
-		for (j=1 ; j<doomcom->numnodes ; j++)
-			if (nodeingame[j])
-				HSendPacket (j, NCMD_EXIT);
-		I_WaitVBL (1);
-	}
-}
-
-
-
-/*
-===============
-=
-= TryRunTics
-=
-===============
-*/
-
-int	frametics[4], frameon;
-int	frameskip[4];
-int		oldnettics;
-extern	boolean	advancedemo;
-
-void TryRunTics (void)
-{
-	int             i;
-	int             lowtic, nextlowest;
-	int             entertic;
-	int	static		oldentertics;
-	int				realtics, availabletics;
-	int				counts;
-	int				numplaying;
-
-//
-// get real tics
-//			
-	entertic = I_GetTime ();
-	realtics = entertic - oldentertics;
-	oldentertics = entertic;
-
-//
-// get available tics
-//
-	NetUpdate ();
-	
-	lowtic = nextlowest = MAXINT;
-	numplaying = 0;
-	for (i=0 ; i<doomcom->numnodes ; i++)
-		if (nodeingame[i])
-		{
-			numplaying++;
-			if (nettics[i] < lowtic)
-			{
-				nextlowest = lowtic;
-				lowtic = nettics[i];
-			}
-			else if (nettics[i] < nextlowest)
-				nextlowest = nettics[i]; 
-		}
-	availabletics = lowtic - gametic;
-	
-
-//
-// decide how many tics to run
-//
-	if (realtics < availabletics-1)
-		counts = realtics+1;
-	else if (realtics < availabletics)
-		counts = realtics;
-	else
-		counts = availabletics;
-	if (counts < 1)
-		counts = 1;
-		
-	frameon++;
-	
-if (debugfile)
-	fprintf (debugfile,"=======real: %i  avail: %i  game: %i\n",realtics, availabletics,counts);
-
-//=============================================================================
-//
-//	ideally nettics[0] should be 1 - 3 tics above lowtic
-//	if we are consistantly slower, speed up time
-//	drones should never hold up the other players
-//
-	for (i=0 ; i<MAXPLAYERS ; i++)
-		if (playeringame[i])
-			break;
-	if (consoleplayer == i)
-	{	// the key player does not adapt
-	}
-	else
-	{
-		if (nettics[0] <= nettics[nodeforplayer[i]])
-		{
-			gametime--;
-//			printf ("-");
-		}
-		frameskip[frameon&3] = (oldnettics > nettics[nodeforplayer[i]]);
-		oldnettics = nettics[0];
-		if (frameskip[0] && frameskip[1] && frameskip[2] && frameskip[3])
-		{
-			skiptics = 1;
-//			printf ("+");
-		}
-	}
-//=============================================================================
-
-//
-// wait for new tics if needed
-//
-	while (lowtic < gametic + counts)	
-	{
-
-		NetUpdate ();   
-		lowtic = MAXINT;
-		
-		for (i=0 ; i<doomcom->numnodes ; i++)
-			if (nodeingame[i] && nettics[i] < lowtic)
-				lowtic = nettics[i];
-
-		if (lowtic < gametic)
-			I_Error ("TryRunTics: lowtic < gametic");
-			
-		// don't stay in here forever -- give the menu a chance to work
-		if (I_GetTime () - entertic >= 20)
-			return;
-	}
-			
-
-//
-// run the tics
-//	
-	while (counts--)
-	{
-		G_Ticker ();
-		NetUpdate ();					// check for new console commands
-		gametic++;
-	}
-}
--- a/src/hexen/template.c
+++ /dev/null
@@ -1,32 +1,0 @@
-
-//**************************************************************************
-//**
-//** TEMPLATE.C
-//**
-//**************************************************************************
-
-// HEADER FILES ------------------------------------------------------------
-
-// MACROS ------------------------------------------------------------------
-
-// TYPES -------------------------------------------------------------------
-
-// EXTERNAL FUNCTION PROTOTYPES --------------------------------------------
-
-// PUBLIC FUNCTION PROTOTYPES ----------------------------------------------
-
-// PRIVATE FUNCTION PROTOTYPES ---------------------------------------------
-
-// EXTERNAL DATA DECLARATIONS ----------------------------------------------
-
-// PUBLIC DATA DEFINITIONS -------------------------------------------------
-
-// PRIVATE DATA DEFINITIONS ------------------------------------------------
-
-// CODE --------------------------------------------------------------------
-
-//==========================================================================
-//
-//
-//
-//==========================================================================
--- a/src/hexen/vgaview.h
+++ /dev/null
@@ -1,34 +1,0 @@
-
-//**************************************************************************
-//**
-//** VGAView.h : Heretic 2 : Raven Software, Corp.
-//**
-//** $RCSfile: VGAView.h,v $
-//** $Revision: 1.1 $
-//** $Date: 95/05/11 00:19:48 $
-//** $Author: bgokey $
-//**
-//**************************************************************************
-
-#import <appkit/appkit.h>
-#import "h2def.h"
-
-// a few globals
-extern byte	*bytebuffer;
-
-
-@interface VGAView:View
-{
-    id		game;
-    int		nextpalette[256];	// color lookup table
-    int		*nextimage;		// palette expanded and scaled
-    unsigned	scale;
-    NXWindowDepth	depth;
-}
-
-- updateView;
-- (unsigned)scale;
-- setPalette:(byte *)pal;
-- setScale:(int)newscale;
-
-@end