ref: 7ab940ff1683c49a3dfb54aa0b3f8683052c8ea4
dir: /wl3d.c/
#include <u.h>
#include <libc.h>
#include <thread.h>
#include "dat.h"
#include "fns.h"
mainstacksize = 16*1024;
char *ext = "wl6";
int debug;
int skipintro;
void *
emalloc(ulong n)
{
void *p;
p = mallocz(n, 1);
if(p == nil)
sysfatal("emalloc: %r");
return p;
}
/* use only for shortening buffers, no zeroing done */
void *
erealloc(void *p, ulong n)
{
p = realloc(p, n);
if(p == nil)
sysfatal("erealloc: %r");
return p;
}
static void
usage(void)
{
fprint(2, "usage: %s [-23Ddios] [-m dir] [-w map] [-x difficulty]\n", argv0);
threadexits("usage");
}
void
threadmain(int argc, char **argv)
{
char *datdir = "/sys/games/lib/wl3d/";
ARGBEGIN{
case '2': ext = "sd2"; break;
case '3': ext = "sd3"; break;
case 'D': debug++; break;
case 'd': ext = "wl1"; break;
case 'i': skipintro++; break;
case 'm': datdir = EARGF(usage()); break;
case 'o': ext = "sdm"; break;
case 's': ext = "sod"; break;
case 'w': /* TODO: warp to ep, level */ break;
case 'x': /* TODO: set difficulty for warp */ break;
default:
usage();
}ARGEND;
dat(datdir);
threadexitsall(nil);
}