shithub: qk1

ref: 120cbddefb31ed3ac9d159f32300e15c13837665
dir: /README/

View raw version
qk1 - (9) quake
===============
port of linux/x11 quake to plan9front. tested on amd64 and 386 only.
currently lacks networking and music. save for a rare crash and some stupid
bugs, it works and plays reasonably well. on my machines.


installation
------------
besides building and installing qk1, you still need .pak files to play. both
shareware and registered versions (should) work, as well as the official
expansions, and mods.
the data files are to be installed in $home/lib/quake/$gamename, where
$gamename is 'id1' for plain old quake.

% mk install
% mkdir -p $home/lib/quake/id1
% cp /n/quakecd/id1/*.pak $home/lib/quake/id1

% quake

installing an expansion or mod, for example rogue:

% mkdir $home/lib/quake/rogue
% cp /n/roguecd/*.pak $home/lib/quake/rogue

then start with:

% quake -game rogue


todo
----
- udp/ip, plan9 style
- cdaudio: reading and mixing music from e.g. cdfs(4)
- more testing, cleanups and bug fixes (g '/\* FIXME')
- (bjnh) bring asm for 386/amd64 back
- (bjnh) plan9 code style everywhere
- (bjnh) better performance
- (bjnh) redesign everything to be super cool (e.g. pakfs, console shit,
  args, etc.)


differences with x11/linux original release
-------------------------------------------
- no fullscreen; screen resolution is just the window's dimensions;
  any resolution (under the r_shared.h limits) is allowed; resize
  by dragging window edges; removed -winsize, -height, -width
- some stupid kbd/mouse bugs fixed; mouse grabbing actually grabs the mouse
- removed -condebug, -nostdout: useless in plan9 (and unix?)
- added m_windowed cvar (replacing _windowed_mouse), for mouse grabbing
- ungrabs the mouse when main menu is accessed
- removed -record, -playback: broken and unused


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


bugs
----
- crash in d_sprite.c:D_SpriteDrawSpans() after several hours of looping the
  demos
- sound dies after a few hours: (snd.c) wpos and SNDDMA_GetDMAPos() probably
  wrong, mix buffer being overwritten while writing to /dev/audio, etc.
- resolutions other than 4:3: some vertical and horizontal strips on the edge
  of the screen aren't drawn
- console color print is still screwed up (printf/print differences)
- resolutions under around 328x160 don't work, possibly because menu text isn't
  scaled down or something
- #define PARANOID reveals several points of failure that are otherwise ignored
- (?) sprites not scaled correctly on higher resolutions
- m_windowed 1: in a paused game (in menu or console during sp game), can still
  look around the frozen world
- screenshot code outputs garbage


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