ref: a4474be05dd2196175875f7333185e7b6c9bd449
dir: /README/
qk1 - (9) quake =============== Port of linux/x11 quake to plan9front. - Works on amd64 and 386, broken on arm and probably other arches Installation ------------ Besides building and installing qk1, you still need .pak files to play. Both shareware and registered versions work, as well as the official expansions, and mods. The data files are to be installed in /sys/games/lib/quake/$gamename, where $gamename is 'id1' for plain old quake. Savegames, configuration files and other user-specific data is saved in $home/lib/quake/$gamename, if it exists. ; mk install ; mkdir -p $home/lib/quake/id1 ; cp /n/quakecd/id1/*.pak $home/lib/quake/id1 ; quake >/dev/null By default, qk1 allocates 12 MB of memory for its internal heap. This amount can be controlled via the -m command line parameter like so: ; quake -m 16 It is necessary to increase it when playing on larger resolutions, else qk1 might crash with errors such as 'Hunk_Alloc: failed on 548512 bytes'. qk1 reads /mnt/cd/[au]NNN files as in cdfs(1) to play music. The directory needn't be populated by cdfs(1), so long as the files are in the format described by audio(3). Reading from actual cdroms is currently broken. On lower framerates, devaudio's delay must be increased appropriately, up to 4410 (for a rate of 44.1 kHz), or sound will cut up. Installing an expansion or mod, for example rogue: ; mkdir /sys/games/lib/quake/rogue ; cp /n/roguecd/*.pak /sys/games/lib/quake/rogue ; mkdir $home/lib/quake/rogue Then start with: ; quake -g rogue Todo/bugs --------- - don't use #pragma pack and do not read in structs directly - fix arm graphics issues - cd: buffer reading from actual cdroms - do away with PR_Str shit - manpages - port quakeworld: mkmany, merging common code - random crashes in d_sprite.c:D_SpriteDrawSpans - infinite loop in SV_TouchLinks - (amd64) entities visible through walls right when emerging from/immerging into water - fix stdio console color print - resolutions other than 4:3: some vertical and horizontal strips on the edge of the screen aren't drawn - #define PARANOID reveals several points of failure that are otherwise ignored - (?) sprites not scaled correctly on higher resolutions - more testing, cleanups and bug fixes (g '/\* FIXME') Shitty workarounds and other bullshit ------------------------------------- - #pragma pack for stuff (structs) loaded from files - pr_strings assumed 32bit pointer arithmetic, so enter PR_GetStr(), which completely sucks - text and code seen as useless for plan9 nuked from orbit (cpp defs, etc.) - arbitrary resolution limit (r_shared.h): 2048x2048 (was 1280x1024), which inflates e.g. a bunch of arrays in the code - mouse handling is too heavy, all for the purpose of not letting the mouse escape the window too easily (and the kludged up shit could probably be done better) - removal of stdio stuff probably not really warranted and possibly introduced bugs - pcx screenshots: the only reason to keep this code around is to be able to do screenshots without tearing. that's it. Legal ----- Quake, hence qk1, is licensed under the GPLv2. see COPYING for details.