shithub: qk1

ref: 216c1ae66ef6967d1a470a431418241c001c708b
dir: /README/

View raw version
qk1 - (9) quake
===============
	- based on linux/x11 code from original release
	- setup:
		. mk install
		. mkdir id1
		. cp /n/quakecd/id1/*.pak id1/
		. run from same dir...
	- unfinished and very buggy (both shitty new code and badly ported old code)
	- sound works, but is glitchy and reduces FPS quite a bit
	- cdaudio, networking: PORTME
	- assume high resolutions don't work well and are very crash prone (e.g. > 800x600)
		. exit with: Hunk_Alloc: failed on ... => not enough memory (default 8M);
		->use [-mem megabytes], e.g.:
			% qk1 -nosound -mem 10
		. if window size < physical screen size, swipe mouse super fast to exit
		the window (bug in mproc())
		. actually, I've seen only two points where it segfaults, and it's fairly
		constant
	- resolutions under 320x240 don't seem to work
	- don't use -winsize, -width, -height; just resize the window (bugsbugsbugs)
	- mouse is grabbed using m_windowed cvar
		. open console (~)
		. type m_windowed 1 (can autocomplete w/ tab)
		. setting now saved in id1/config.cfg
	- official expansions (rogue and hipnotic) work fine, mods could too
	- tested on 386 and amd64 only (works ok on a pentium 4)
	- the point of THIS port is to make it work on plan9, and be portable across
	cputypes on plan9, which justifies some more intrusive changes (but is a bad
	justification)


some params useful for workarounds
----------------------------------
	-nosound
	-nostdout
	-mem %d
	(-noudp)
	(-winsize %d %d)
	(-width %d)
	(-height %d)


port notes
----------
	- pr_strings: assumed 32bit pointer arithmetic: use PR_GetStr() instead of
	  dealing with it directly; may be ass
	- global cppdefotomy, removing code seen as useless for plan9
	- Sys_Warn added again for print(2) stuff in *_9.c that uses %r, kind of stupid
	since Con_Printf was often used there, and it outputs to both fd=1 and console,
	so needs fixing
	- m_freelook, as a quick hack to have (reversible) free mouse look
	- vid_9.c: shitty, can probably improve performance a bit without screwing code
	- snd_9.c: maybe writes to /dev/audio should be on another proc?
	- *printf -> *print was stupid
	- m_freelook is sort of useless, can just type +mlook in console, but that isn't
	saved on exit; maybe there's a better way


bugs present in linux/x11 (w/ my workaround for amd64)
------------------------------------------------------
	- compile with PARANOID -> MSG_WriteByte complains about range error and
	  exits. no idea why.
	- new game while already ingame -> front falls off
		. most of the time: exits with R_RenderView: called without enough stack
		. sometimes: goes batshit on the console (->press y again and quit normally, etc.)
	- compile with BAN_TEST -> net_dgrm build fails
	- sprites/particles not scaled on high resolutions
	- mouselook was completely fucked; still is somewhat
		. when paused, if _windowed_mouse 1, can still look around with the mouse, even
		if world is frozen
	- fp exceptions galore
	- high resolutions -> casts Anxiodepressive Disorder on user
	- resizing to smaller window -> no.
	- resizing several times -> no.
	- seemingly random crashes on startup (fp?)


todo/issues
-----------
	- net_9p.c
	- cd_9.c,net_udp.c,net_dgrm.c: actuallyport
	- snd_9.c, vid_9.c: lousy
	- plan9-like install (lib/quake rather than cwd), manpages
	- caps lock == Kctl (← kbdfs, notanissue?)
	- ungrab mouse when entering console or menus a la games/doom (IN_Grabm())
	- cleanse *_9.c from linux legacy
	- linking errors with -T cflag
	- fix potential fp exceptions in code rather than ignoring them?
	- sys_9.c: proper P9 use (style)
	- rewrite everything to use plan9 style? (ocd)
	- g '/\* FIXME'
	- port quakeworld and utilities +/- merge common code and mkmany
	- Sys_Error printing %r systematically is stupid


legal
-----
Quake, hence qk1, is licensed under the GPLv2. See COPYING for details.