ref: 6214f75fcfebb25f277b7063ba215924c81f6dd4
parent: dfc609a2f90e1e1a3d107007b2adb0845ebf78f0
author: Konstantinn Bonnet <qu7uux@gmail.com>
date: Sat Mar 11 23:43:37 EDT 2017
clean up initialization code - move sys stuff to qk1.c - remove some useless variables and checks - fs: handle basedir in initns and minimal error checking when adding dirs - reduce redundancy in error messages originating from openlmp - misc typos
--- a/cl_demo.c
+++ b/cl_demo.c
@@ -158,7 +158,7 @@
CL_Disconnect();
a = Cmd_Argv(1);
s = va("%s%s", a, ext(a, ".dem"));
- dprint("playdemo: writing to file %s\n", s);
+ dprint("playdemo: reading file %s\n", s);
if(loaddm(s) < 0){
Con_Printf("playdemo: %r\n");
cls.demonum = -1;
--- a/cl_parse.c
+++ b/cl_parse.c
@@ -166,7 +166,7 @@
memcpy (net_message.data, olddata, net_message.cursize);
// check time
- time = Sys_FloatTime ();
+ time = dtime ();
if (time - lastmsg < 5)
return;
lastmsg = time;
--- a/cmd.c
+++ b/cmd.c
@@ -275,7 +275,7 @@
mark = Hunk_LowMark ();
f = loadhunklmp(Cmd_Argv(1), nil);
if(f == nil){
- Con_Printf("couldn't exec %s: %r\n", Cmd_Argv(1));
+ Con_Printf("exec: %r\n");
return;
}
Con_Printf ("execing %s\n",Cmd_Argv(1));
--- a/dat.h
+++ b/dat.h
@@ -1,5 +1,8 @@
typedef struct Sfx Sfx;
+extern uchar *membase;
+extern int memsize;
+
enum{
Npath = 64,
Nfspath = 128,
--- a/draw.c
+++ b/draw.c
@@ -70,7 +70,7 @@
//
dat = loadcachelmp(path, &pic->cache);
if(dat == nil)
- fatal("Draw_CachePic: failed to load %s: %r", path);
+ fatal("Draw_CachePic: %r");
SwapPic (dat);
--- a/fns.h
+++ b/fns.h
@@ -1,3 +1,5 @@
+char* Sys_ConsoleInput(void);
+void Sys_SendKeyEvents(void);
void stepcd(void);
void stepsnd(vec3_t, vec3_t, vec3_t, vec3_t);
void stopcd(void);
@@ -43,6 +45,12 @@
void initfs(void);
void dprint(char*, ...);
void fatal(char*, ...);
+void* emalloc(ulong);
+vlong flen(int);
+double dtime(void);
+void fppsgl(void);
+void fppdbl(void);
+void shutdown(void);
#pragma varargck argpos dprint 1
#pragma varargck argpos fatal 1
--- a/fs.c
+++ b/fs.c
@@ -315,11 +315,8 @@
continue;
}
snprint(d, sizeof d, "%s/%s", pl->f, f);
- if(access(d, AREAD) < 0)
+ if(bf = bopen(d, OREAD, 1), bf == nil)
continue;
- bf = bopen(d, OREAD, 1);
- if(bf == nil)
- return nil;
if(len != nil)
*len = bsize(bf);
return bf;
@@ -449,7 +446,7 @@
{
Biobuf *bf;
- if(!host_initialized || isDedicated)
+ if(!host_initialized)
return;
bf = bopen(va("%s/config.cfg", fsdir), OWRITE, 1);
if(bf == nil){
@@ -543,7 +540,7 @@
if(t != ev_string && t != ev_float && t != ev_entity)
continue;
Bprint(bf, "\"%s\" \"%s\"\n", PR_Str(d->s_name),
- PR_UglyValueString(t, (eval_t *)&pr_globals[d->ofs]));
+ PR_UglyValueString(t, (eval_t *)&pr_globals[d->ofs]));
}
Bprint(bf, "}\n");
}
@@ -843,7 +840,7 @@
pl = Hunk_Alloc(sizeof *pl);
pl->p = p;
pl->pl = pkl;
- pkl = pl;
+ pkl = pl;
}
}
@@ -851,17 +848,27 @@
initns(void)
{
int i;
- char d[Nfspath], *e;
+ char d[Nfspath], *e, *home;
memset(d, 0, sizeof d);
i = COM_CheckParm("-basedir");
- if(i != 0 && i < com_argc - 1)
+ if(i != 0 && i < com_argc - 1){
strncpy(d, com_argv[i+1], sizeof(d)-1);
- else
- strncpy(d, host_parms.basedir, sizeof(d)-1);
- e = d + strlen(d) - 1;
- if(e > d && *e == '/')
- *e = 0;
+ e = d + strlen(d) - 1;
+ if(e > d && *e == '/')
+ *e = 0;
+ }else if(home = getenv("home"), home != nil){
+ snprint(d, sizeof d, "%s/lib/quake", home);
+ free(home);
+ }
+ if(strlen(d) == 0 || access(d, AREAD) < 0){
+ strncpy(d, "/sys/games/lib/quake", sizeof(d)-1);
+ if(access(d, AREAD) < 0){
+ strncpy(d, "/sys/lib/quake", sizeof(d)-1);
+ if(access(d, AREAD) < 0)
+ fatal("no accessible game directory");
+ }
+ }
pakdir(va("%s%s", d, "/id1"));
if(COM_CheckParm("-rogue"))
pakdir(va("%s%s", d, "/rogue"));
--- a/host.c
+++ b/host.c
@@ -15,8 +15,6 @@
*/
-quakeparms_t host_parms;
-
qboolean host_initialized; // true if into command execution
double host_frametime;
@@ -27,8 +25,6 @@
int host_hunklevel;
-int minimum_memory;
-
client_t *host_client; // current client
jmp_buf host_abortserver;
@@ -358,7 +354,7 @@
CL_Disconnect ();
// flush any pending messages - like the score!!!
- start = Sys_FloatTime();
+ start = dtime();
do
{
count = 0;
@@ -378,7 +374,7 @@
}
}
}
- if ((Sys_FloatTime() - start) > 3.0)
+ if ((dtime() - start) > 3.0f)
break;
}
while (count);
@@ -554,12 +550,12 @@
// update video
if (host_speeds.value)
- time1 = Sys_FloatTime ();
+ time1 = dtime ();
SCR_UpdateScreen ();
if (host_speeds.value)
- time2 = Sys_FloatTime ();
+ time2 = dtime ();
// update audio
if (cls.signon == SIGNONS)
@@ -575,7 +571,7 @@
if (host_speeds.value)
{
pass1 = (time1 - time3)*1000;
- time3 = Sys_FloatTime ();
+ time3 = dtime ();
pass2 = (time2 - time1)*1000;
pass3 = (time3 - time2)*1000;
Con_Printf ("%3d tot %3d server %3d gfx %3d snd\n",
@@ -598,9 +594,9 @@
return;
}
- time1 = Sys_FloatTime ();
+ time1 = dtime ();
_Host_Frame (time);
- time2 = Sys_FloatTime ();
+ time2 = dtime ();
timetotal += time2 - time1;
timecount++;
@@ -626,26 +622,9 @@
Host_Init
====================
*/
-void Host_Init (quakeparms_t *parms)
+void Host_Init (void)
{
-
- if (standard_quake)
- minimum_memory = MINIMUM_MEMORY;
- else
- minimum_memory = MINIMUM_MEMORY_LEVELPAK;
-
- if (COM_CheckParm ("-minmemory"))
- parms->memsize = minimum_memory;
-
- host_parms = *parms;
-
- if (parms->memsize < minimum_memory)
- fatal ("Only %4.1f megs of memory available, can't execute game", parms->memsize / (float)0x100000);
-
- com_argc = parms->argc;
- com_argv = parms->argv;
-
- Memory_Init (parms->membase, parms->memsize);
+ Memory_Init();
Cbuf_Init ();
Cmd_Init ();
V_Init ();
@@ -660,10 +639,7 @@
Mod_Init ();
NET_Init ();
SV_Init ();
-
- Con_Printf ("Exe: 00:00:00 Jun 22 1996\n");
- Con_Printf ("%4.1f megabyte heap\n",parms->memsize/ (1024*1024.0));
-
+ dprint("%4.1f megabyte heap\n", memsize / (1024 * 1024.0));
R_InitTextures (); // needed even for dedicated servers
if (cls.state != ca_dedicated)
@@ -670,10 +646,10 @@
{
host_basepal = loadhunklmp("gfx/palette.lmp", nil);
if(host_basepal == nil)
- fatal("Host_Init: failed to load gfx/palette.lmp: %r");
+ fatal("Host_Init: %r");
host_colormap = loadhunklmp("gfx/colormap.lmp", nil);
if(host_colormap == nil)
- fatal("Host_Init: failed to load gfx/colormap.lmp: %r");
+ fatal("Host_Init: %r");
VID_Init (host_basepal);
@@ -702,7 +678,7 @@
===============
Host_Shutdown
-FIXME: this is a callback from Sys_Quit and fatal. It would be better
+FIXME: this is a callback from shutdown and fatal. It would be better
to run quit through here before the final handoff to the sys code.
===============
*/
--- a/host_cmd.c
+++ b/host_cmd.c
@@ -24,7 +24,7 @@
CL_Disconnect ();
Host_ShutdownServer(false);
- Sys_Quit ();
+ shutdown ();
}
@@ -773,7 +773,7 @@
pr_global_struct->self = EDICT_TO_PROG(sv_player);
PR_ExecuteProgram (pr_global_struct->ClientConnect);
- if ((Sys_FloatTime() - host_client->netconnection->connecttime) <= sv.time)
+ if ((dtime() - host_client->netconnection->connecttime) <= sv.time)
print("%s entered the game\n", host_client->name);
PR_ExecuteProgram (pr_global_struct->PutClientInServer);
--- a/in.c
+++ b/in.c
@@ -177,7 +177,7 @@
Rune r;
Kev ev;
- threadsetgrp(THin);
+ threadsetgrp(1);
kdown[1] = kdown[0] = 0;
if((fd = open("/dev/kbd", OREAD)) < 0)
@@ -228,7 +228,7 @@
char buf[1+5*12];
float x, y;
- threadsetgrp(THin);
+ threadsetgrp(1);
if((fd = open("/dev/mouse", ORDWR)) < 0)
sysfatal("open /dev/mouse: %r");
@@ -274,7 +274,7 @@
int n;
char s[256];
- threadsetgrp(THin);
+ threadsetgrp(1);
for(;;){
if((n = read(0, s, sizeof s)) <= 0)
@@ -309,7 +309,7 @@
IN_Shutdown(void)
{
IN_Grabm(0);
- threadintgrp(THin);
+ threadintgrp(1);
if(pfd[0] > 0)
close(pfd[0]);
if(pfd[1] > 0)
--- a/mkfile
+++ b/mkfile
@@ -65,7 +65,6 @@
sv_move.$O\
sv_phys.$O\
sv_user.$O\
- sys.$O\
vid.$O\
view.$O\
wad.$O\
@@ -105,7 +104,6 @@
screen.h\
server.h\
spritegn.h\
- sys.h\
vid.h\
view.h\
wad.h\
--- a/net_main.c
+++ b/net_main.c
@@ -73,7 +73,7 @@
double SetNetTime(void)
{
- net_time = Sys_FloatTime();
+ net_time = dtime();
return net_time;
}
@@ -282,7 +282,7 @@
}
slistInProgress = true;
- slistStartTime = Sys_FloatTime();
+ slistStartTime = dtime();
SchedulePollProcedure(&slistSendProcedure, 0.0);
SchedulePollProcedure(&slistPollProcedure, 0.1);
@@ -302,7 +302,7 @@
dfunc.SearchForHosts (true);
}
- if ((Sys_FloatTime() - slistStartTime) < 0.5)
+ if ((dtime() - slistStartTime) < 0.5)
SchedulePollProcedure(&slistSendProcedure, 0.75);
}
@@ -321,7 +321,7 @@
if (! slistSilent)
PrintSlist();
- if ((Sys_FloatTime() - slistStartTime) < 1.5)
+ if ((dtime() - slistStartTime) < 1.5)
{
SchedulePollProcedure(&slistPollProcedure, 0.1);
return;
@@ -633,7 +633,7 @@
}
}
- start = Sys_FloatTime();
+ start = dtime();
while (count)
{
count = 0;
@@ -668,7 +668,7 @@
continue;
}
}
- if ((Sys_FloatTime() - start) > blocktime)
+ if ((dtime() - start) > blocktime)
break;
}
return count;
@@ -826,7 +826,7 @@
{
PollProcedure *pp, *prev;
- proc->nextTime = Sys_FloatTime() + timeOffset;
+ proc->nextTime = dtime() + timeOffset;
for (pp = pollProcedureList, prev = nil; pp; pp = pp->next)
{
if (pp->nextTime >= proc->nextTime)
--- a/qk1.c
+++ b/qk1.c
@@ -1,9 +1,19 @@
#include <u.h>
#include <libc.h>
+#include <thread.h>
#include "dat.h"
#include "quakedef.h"
#include "fns.h"
+mainstacksize = 512*1024;
+uchar *membase;
+int memsize;
+
+enum{
+ KB = 1024*1024,
+ Nmem = 8 * KB
+};
+
static int debug;
void
@@ -33,4 +43,96 @@
Host_Shutdown();
fprint(2, "%s: %s\n", argv0, s);
exits(s);
+}
+
+void *
+emalloc(ulong n)
+{
+ void *p;
+
+ if(p = mallocz(n, 1), p == nil)
+ sysfatal("emalloc %r");
+ setmalloctag(p, getcallerpc(&n));
+ return p;
+}
+
+vlong
+flen(int fd)
+{
+ vlong l;
+ Dir *d;
+
+ if((d = dirfstat(fd)) == nil) /* file assumed extant and readable */
+ sysfatal("flen: %r");
+ l = d->length;
+ free(d);
+ return l;
+}
+
+double
+dtime(void)
+{
+ static double t0;
+
+ if(t0 == 0.0)
+ t0 = time(nil);
+ return nsec() / 1000000000.0 - t0;
+}
+
+void
+fppdbl(void)
+{
+}
+
+void
+fppsgl(void)
+{
+}
+
+void
+shutdown(void)
+{
+ Host_Shutdown();
+ threadexitsall(nil);
+}
+
+static void
+croak(void *, char *note)
+{
+ if(strncmp(note, "sys:", 4) == 0)
+ IN_Grabm(0);
+ noted(NDFLT);
+}
+
+void
+threadmain(int c, char **v)
+{
+ int n;
+ double t, t´, Δt;
+
+ /* ignore fp exceptions: rendering shit assumes they are */
+ setfcr(getfcr() & ~(FPOVFL|FPUNFL|FPINVAL|FPZDIV));
+ notify(croak);
+ COM_InitArgv(c, v);
+ argv0 = *v;
+ memsize = Nmem;
+ if(n = COM_CheckParm("-mem"))
+ memsize = atoi(com_argv[n+1]) * KB;
+ membase = emalloc(memsize);
+ Host_Init();
+ t = dtime() - 1.0 / Fpsmax;
+ for(;;){
+ t´ = dtime();
+ Δt = t´ - t;
+ if(cls.state == ca_dedicated){
+ if(Δt < sys_ticrate.value)
+ continue;
+ Δt = sys_ticrate.value;
+ }
+ if(Δt > sys_ticrate.value * 2)
+ t = t´;
+ else
+ t += Δt;
+ Host_Frame(Δt);
+ }
}
--- a/quakedef.h
+++ b/quakedef.h
@@ -13,10 +13,6 @@
// !!! if this is changed, it must be changed in d_ifacea.h too !!!
#define CACHE_SIZE 32 // used to align key data structures
-/* FIXME? wrong on !386? */
-#define MINIMUM_MEMORY 0x550000
-#define MINIMUM_MEMORY_LEVELPAK (MINIMUM_MEMORY + 0x100000)
-
#define MAX_NUM_ARGVS 50
// up / down
@@ -145,7 +141,6 @@
#include "common.h"
#include "bspfile.h"
#include "vid.h"
-#include "sys.h"
#include "zone.h"
#include "mathlib.h"
@@ -193,26 +188,6 @@
#include "r_local.h"
#include "d_local.h"
-//=============================================================================
-
-// the host system specifies the base of the directory tree, the
-// command line parms passed to the program, and the amount of memory
-// available for the program to use
-
-typedef struct
-{
- char *basedir;
- int argc;
- char **argv;
- void *membase;
- int memsize;
-} quakeparms_t;
-
-
-//=============================================================================
-
-
-
extern qboolean noclip_anglehack;
@@ -219,8 +194,6 @@
//
// host
//
-extern quakeparms_t host_parms;
-
extern cvar_t sys_ticrate;
extern qboolean host_initialized; // true if into command execution
@@ -234,7 +207,7 @@
void Host_ClearMemory (void);
void Host_ServerFrame (void);
void Host_InitCommands (void);
-void Host_Init (quakeparms_t *parms);
+void Host_Init (void);
void Host_Shutdown(void);
void Host_Error (char *error, ...);
void Host_EndGame (char *message, ...);
@@ -249,10 +222,6 @@
extern int current_skill; // skill level for currently loaded level (in case
// the user changes the cvar while the level is
// running, this reflects the level actually in use)
-
-extern qboolean isDedicated;
-
-extern int minimum_memory;
//
// chase
--- a/r_main.c
+++ b/r_main.c
@@ -856,7 +856,7 @@
if (r_dspeeds.value)
{
- rw_time1 = Sys_FloatTime ();
+ rw_time1 = dtime ();
}
R_RenderWorld ();
@@ -870,7 +870,7 @@
if (r_dspeeds.value)
{
- rw_time2 = Sys_FloatTime ();
+ rw_time2 = dtime ();
db_time1 = rw_time2;
}
@@ -878,7 +878,7 @@
if (r_dspeeds.value)
{
- db_time2 = Sys_FloatTime ();
+ db_time2 = dtime ();
se_time1 = db_time2;
}
@@ -901,7 +901,7 @@
r_warpbuffer = warpbuffer;
if (r_timegraph.value || r_speeds.value || r_dspeeds.value)
- r_time1 = Sys_FloatTime ();
+ r_time1 = dtime ();
R_SetupFrame ();
@@ -916,7 +916,7 @@
// while, so we don't do it globally. This also sets chop mode, and we do it
// here so that setup stuff like the refresh area calculations match what's
// done in screen.c
- Sys_LowFPPrecision ();
+ fppsgl ();
if (!cl_entities[0].model || !cl.worldmodel)
fatal ("R_RenderView: NULL worldmodel");
@@ -925,7 +925,7 @@
if (r_dspeeds.value)
{
- se_time2 = Sys_FloatTime ();
+ se_time2 = dtime ();
de_time1 = se_time2;
}
@@ -933,7 +933,7 @@
if (r_dspeeds.value)
{
- de_time2 = Sys_FloatTime ();
+ de_time2 = dtime ();
dv_time1 = de_time2;
}
@@ -941,14 +941,14 @@
if (r_dspeeds.value)
{
- dv_time2 = Sys_FloatTime ();
- dp_time1 = Sys_FloatTime ();
+ dv_time2 = dtime ();
+ dp_time1 = dtime ();
}
R_DrawParticles ();
if (r_dspeeds.value)
- dp_time2 = Sys_FloatTime ();
+ dp_time2 = dtime ();
if (r_dowarp)
D_WarpScreen ();
@@ -974,7 +974,7 @@
Con_Printf ("Short roughly %d edges\n", r_outofedges * 2 / 3);
// back to high floating-point precision
- Sys_HighFPPrecision ();
+ fppdbl ();
}
void R_RenderView (void)
--- a/r_misc.c
+++ b/r_misc.c
@@ -56,7 +56,7 @@
startangle = r_refdef.viewangles[1];
- start = Sys_FloatTime ();
+ start = dtime ();
for (i=0 ; i<128 ; i++)
{
r_refdef.viewangles[1] = i/128.0*360.0;
@@ -74,7 +74,7 @@
vr.pnext = nil;
VID_Update (&vr);
}
- stop = Sys_FloatTime ();
+ stop = dtime ();
time = stop-start;
Con_Printf ("%f seconds (%f fps)\n", time, 128/time);
@@ -136,7 +136,7 @@
static byte r_timings[MAX_TIMINGS];
int x;
- r_time2 = Sys_FloatTime ();
+ r_time2 = dtime ();
a = (r_time2-r_time1)/0.01;
//a = fabs(mouse_y * 0.05);
@@ -177,7 +177,7 @@
float r_time2;
float ms;
- r_time2 = Sys_FloatTime ();
+ r_time2 = dtime ();
ms = 1000* (r_time2 - r_time1);
@@ -196,7 +196,7 @@
{
float ms, dp_time, r_time2, rw_time, db_time, se_time, de_time, dv_time;
- r_time2 = Sys_FloatTime ();
+ r_time2 = dtime ();
dp_time = (dp_time2 - dp_time1) * 1000;
rw_time = (rw_time2 - rw_time1) * 1000;
--- a/snd.c
+++ b/snd.c
@@ -607,7 +607,7 @@
return;
nt -= 1; /* d001 assumed part of track list */
if(nt < 1 || nt > ntrk){
- fprint(2, "startcd: invalid track number %ud\n", nt);
+ fprint(2, "startcd: invalid track number %d\n", nt);
return;
}
if(cdfd = open(va("%s%03d", cdfile, nt), OREAD), cdfd < 0){
@@ -972,7 +972,7 @@
Cvar_RegisterVariable(&ambient_level);
Cvar_RegisterVariable(&ambient_fade);
- if(host_parms.memsize < 0x800000){
+ if(memsize < 0x800000){
setcvar("loadas8bit", "1");
fprint(2, "initsnd: forcing 8bit width\n");
}
--- a/sys.c
+++ /dev/null
@@ -1,124 +1,0 @@
-#include <u.h>
-#include <libc.h>
-#include <thread.h>
-#include "dat.h"
-#include "quakedef.h"
-#include "fns.h"
-
-qboolean isDedicated;
-mainstacksize = 512*1024;
-
-void
-Sys_Quit(void)
-{
- Host_Shutdown();
- threadexitsall(nil);
-}
-
-vlong
-flen(int fd)
-{
- vlong l;
- Dir *d;
-
- if((d = dirfstat(fd)) == nil) /* file assumed extant and readable */
- sysfatal("flen: %r");
- l = d->length;
- free(d);
- return l;
-}
-
-double
-Sys_FloatTime(void)
-{
- static long secbase;
-
- if(secbase == 0)
- secbase = time(nil);
- return nsec()/1000000000.0 - secbase;
-}
-
-void *
-emalloc(ulong b)
-{
- void *p;
-
- if((p = malloc(b)) == nil)
- sysfatal("malloc %lud: %r", b);
- return p;
-}
-
-void
-Sys_HighFPPrecision(void)
-{
-}
-
-void
-Sys_LowFPPrecision(void)
-{
-}
-
-static void
-croak(void *, char *note)
-{
- if(strncmp(note, "sys:", 4) == 0)
- IN_Shutdown();
- noted(NDFLT);
-}
-
-void
-threadmain(int c, char **v)
-{
- static char basedir[1024];
- int j;
- char *home;
- double time, oldtime, newtime;
- quakeparms_t parms;
-
- memset(&parms, 0, sizeof parms);
-
- /* ignore fp exceptions: rendering shit assumes they are */
- setfcr(getfcr() & ~(FPOVFL|FPUNFL|FPINVAL|FPZDIV));
- notify(croak);
-
- COM_InitArgv(c, v);
- parms.argc = com_argc;
- parms.argv = com_argv;
- argv0 = *v;
-
- parms.memsize = 8*1024*1024;
- if(j = COM_CheckParm("-mem"))
- parms.memsize = atoi(com_argv[j+1]) * 1024*1024;
- parms.membase = emalloc(parms.memsize);
-
- if(home = getenv("home")){
- snprint(basedir, sizeof basedir, "%s/lib/quake", home);
- free(home);
- }else
- snprint(basedir, sizeof basedir, "/sys/lib/quake");
- parms.basedir = basedir;
-
- Host_Init(&parms);
-
- oldtime = Sys_FloatTime() - 1.0 / Fpsmax;
- for(;;){
- // find time spent rendering last frame
- newtime = Sys_FloatTime();
- time = newtime - oldtime;
-
- if(cls.state == ca_dedicated){ // play vcrfiles at max speed
- if(time < sys_ticrate.value){
- //usleep(1);
- continue; // not time to run a server only tic yet
- }
- time = sys_ticrate.value;
- }
-
- if(time > sys_ticrate.value*2)
- oldtime = newtime;
- else
- oldtime += time;
-
- Host_Frame(time);
- }
-}
--- a/sys.h
+++ /dev/null
@@ -1,15 +1,0 @@
-// sys.h -- non-portable functions
-
-enum{
- THin = 1,
- THnet = 3
-};
-
-void Sys_Quit(void);
-void Sys_LowFPPrecision(void);
-void Sys_HighFPPrecision(void);
-void* emalloc(ulong);
-vlong flen(int);
-double Sys_FloatTime(void);
-char* Sys_ConsoleInput(void);
-void Sys_SendKeyEvents(void); // call Key_Event() until the input queue is empty
--- a/wad.c
+++ b/wad.c
@@ -57,7 +57,7 @@
wad_base = loadhunklmp(filename, nil);
if(wad_base == nil)
- fatal("W_LoadWadFile: failed to load %s: %r", filename);
+ fatal("W_LoadWadFile: %r");
header = (wadinfo_t *)wad_base;
--- a/zone.c
+++ b/zone.c
@@ -249,9 +249,6 @@
char name[8];
} hunk_t;
-byte *hunk_base;
-int hunk_size;
-
int hunk_low_used;
int hunk_high_used;
@@ -271,11 +268,11 @@
{
hunk_t *h;
- for (h = (hunk_t *)hunk_base ; (byte *)h != hunk_base + hunk_low_used ; )
+ for (h = (hunk_t *)membase ; (byte *)h != membase + hunk_low_used ; )
{
if (h->sentinal != HUNK_SENTINAL)
fatal ("Hunk_Check: trahsed sentinal");
- if (h->size < 16 || h->size + (byte *)h - hunk_base > hunk_size)
+ if (h->size < 16 || h->size + (byte *)h - membase > memsize)
fatal ("Hunk_Check: bad size");
h = (hunk_t *)((byte *)h+h->size);
}
@@ -301,12 +298,12 @@
sum = 0;
totalblocks = 0;
- h = (hunk_t *)hunk_base;
- endlow = (hunk_t *)(hunk_base + hunk_low_used);
- starthigh = (hunk_t *)(hunk_base + hunk_size - hunk_high_used);
- endhigh = (hunk_t *)(hunk_base + hunk_size);
+ h = (hunk_t *)membase;
+ endlow = (hunk_t *)(membase + hunk_low_used);
+ starthigh = (hunk_t *)(membase + memsize - hunk_high_used);
+ endhigh = (hunk_t *)(membase + memsize);
- Con_Printf (" :%8d total hunk size\n", hunk_size);
+ Con_Printf (" :%8d total hunk size\n", memsize);
Con_Printf ("-------------------------\n");
while (1)
@@ -317,7 +314,7 @@
if ( h == endlow )
{
Con_Printf ("-------------------------\n");
- Con_Printf (" :%8d REMAINING\n", hunk_size - hunk_low_used - hunk_high_used);
+ Con_Printf (" :%8d REMAINING\n", memsize - hunk_low_used - hunk_high_used);
Con_Printf ("-------------------------\n");
h = starthigh;
}
@@ -333,7 +330,7 @@
//
if (h->sentinal != HUNK_SENTINAL)
fatal ("Hunk_Check: trahsed sentinal");
- if (h->size < 16 || h->size + (byte *)h - hunk_base > hunk_size)
+ if (h->size < 16 || h->size + (byte *)h - membase > memsize)
fatal ("Hunk_Check: bad size");
next = (hunk_t *)((byte *)h+h->size);
@@ -386,10 +383,10 @@
size = sizeof(hunk_t) + ((size+15)&~15);
- if (hunk_size - hunk_low_used - hunk_high_used < size)
+ if (memsize - hunk_low_used - hunk_high_used < size)
fatal ("Hunk_Alloc: failed on %d bytes",size);
- h = (hunk_t *)(hunk_base + hunk_low_used);
+ h = (hunk_t *)(membase + hunk_low_used);
hunk_low_used += size;
Cache_FreeLow (hunk_low_used);
@@ -422,7 +419,7 @@
{
if (mark < 0 || mark > hunk_low_used)
fatal ("Hunk_FreeToLowMark: bad mark %d", mark);
- memset(hunk_base + mark, 0, hunk_low_used - mark);
+ memset(membase + mark, 0, hunk_low_used - mark);
hunk_low_used = mark;
}
@@ -446,7 +443,7 @@
}
if (mark < 0 || mark > hunk_high_used)
fatal ("Hunk_FreeToHighMark: bad mark %d", mark);
- memset(hunk_base + hunk_size - hunk_high_used, 0, hunk_high_used - mark);
+ memset(membase + memsize - hunk_high_used, 0, hunk_high_used - mark);
hunk_high_used = mark;
}
@@ -475,7 +472,7 @@
size = sizeof(hunk_t) + ((size+15)&~15);
- if (hunk_size - hunk_low_used - hunk_high_used < size)
+ if (memsize - hunk_low_used - hunk_high_used < size)
{
Con_Printf ("Hunk_HighAlloc: failed on %d bytes\n",size);
return nil;
@@ -484,7 +481,7 @@
hunk_high_used += size;
Cache_FreeHigh (hunk_high_used);
- h = (hunk_t *)(hunk_base + hunk_size - hunk_high_used);
+ h = (hunk_t *)(membase + memsize - hunk_high_used);
memset(h, 0, size);
h->size = size;
@@ -589,7 +586,7 @@
c = cache_head.next;
if (c == &cache_head)
return; // nothing in cache at all
- if ((byte *)c >= hunk_base + new_low_hunk)
+ if ((byte *)c >= membase + new_low_hunk)
return; // there is space to grow the hunk
Cache_Move ( c ); // reclaim the space
}
@@ -612,7 +609,7 @@
c = cache_head.prev;
if (c == &cache_head)
return; // nothing in cache at all
- if ( (byte *)c + c->size <= hunk_base + hunk_size - new_high_hunk)
+ if ( (byte *)c + c->size <= membase + memsize - new_high_hunk)
return; // there is space to grow the hunk
if (c == prev)
Cache_Free (c->user); // didn't move out of the way
@@ -662,10 +659,10 @@
if (!nobottom && cache_head.prev == &cache_head)
{
- if (hunk_size - hunk_high_used - hunk_low_used < size)
+ if (memsize - hunk_high_used - hunk_low_used < size)
fatal ("Cache_TryAlloc: %d is greater then free hunk", size);
- new = (cache_system_t *) (hunk_base + hunk_low_used);
+ new = (cache_system_t *) (membase + hunk_low_used);
memset(new, 0, sizeof *new);
new->size = size;
@@ -678,7 +675,7 @@
// search from the bottom up for space
- new = (cache_system_t *) (hunk_base + hunk_low_used);
+ new = (cache_system_t *) (membase + hunk_low_used);
cs = cache_head.next;
do
@@ -708,7 +705,7 @@
} while (cs != &cache_head);
// try to allocate one at the very end
- if ( hunk_base + hunk_size - hunk_high_used - (byte *)new >= size)
+ if ( membase + memsize - hunk_high_used - (byte *)new >= size)
{
memset(new, 0, sizeof *new);
new->size = size;
@@ -743,7 +740,7 @@
Cache_Report(void)
{
print("%4.1f megabyte data cache\n",
- (hunk_size - hunk_high_used - hunk_low_used)
+ (memsize - hunk_high_used - hunk_low_used)
/ (float)(1024*1024));
}
@@ -849,21 +846,11 @@
return Cache_Check (c);
}
-//============================================================================
-
-
-/*
-========================
-Memory_Init
-========================
-*/
-void Memory_Init (void *buf, int size)
+void Memory_Init (void)
{
int p;
int zonesize = DYNAMIC_SIZE;
- hunk_base = buf;
- hunk_size = size;
hunk_low_used = 0;
hunk_high_used = 0;
@@ -879,4 +866,3 @@
mainzone = Hunk_AllocName (zonesize, "zone" );
Z_ClearZone (mainzone, zonesize);
}
-
--- a/zone.h
+++ b/zone.h
@@ -64,7 +64,7 @@
*/
-void Memory_Init (void *buf, int size);
+void Memory_Init (void);
void Z_Free (void *ptr);
void *Z_Malloc (int size); // returns 0 filled memory