aboutsummaryrefslogtreecommitdiffstats
path: root/README-old.txt
diff options
context:
space:
mode:
Diffstat (limited to 'README-old.txt')
-rw-r--r--README-old.txt197
1 files changed, 197 insertions, 0 deletions
diff --git a/README-old.txt b/README-old.txt
new file mode 100644
index 0000000..2a72b88
--- /dev/null
+++ b/README-old.txt
@@ -0,0 +1,197 @@
+A brief readme added by Wyatt Ward.
+
+I added this readme and some updated Makefiles, as well as tweaking a few of
+Quake's source files, to make it work properly on a modern Linux system.
+I did _not_ change any parts of the game to make it look all pretty, or
+to bring new improvements in graphics to the game. I only changed what was
+_absolutely essential_ to run the game, plus some things that desperately
+needed to be changed to work *properly* on modern Linux/Unix systems.
+
+Specifically, I am most interested in preserving the software-rendered version
+of Quake, since no one seems to care about it and everyone uses the later
+OpenGL port.
+
+Perhaps on account of me not knowing almost any 3D graphics programming
+already, I am not too intimidated by the concept of working on software
+quake... OpenGL would probably be just as hard. And I prefer how software
+rendered quake looks.
+
+Some more recent noteworthy changes, features, and notes (as of 2023):
+
+In the `WinQuake` (original "NetQuake") directory:
+* Bumped maximum window resolution from 1280x1024 to 2560x2048 for software
+ rendered Quake. Patched some assembly routines related to it, too (for i386).
+* Added SDL audio backend (borrowed and adapted from Quakespasm). This allows
+ for playing music with a CD drive emulator and getting sound effects
+ simultaneously, without needing two sound cards (since OSS DMA doesn't play
+ nice with software mixing).
+* Some bad hacks in the makefile to make it link to everything it needs to.
+* XQuake and GLQuake both function; XQuake is more thoroughly tested.
+
+In the `QW` (QuakeWorld) directory (NEW!):
+* Added support for 24-bit RGB color in X11 software rendered quakeworld.
+ The sources in the `WinQuake` directory supported this already, but
+ QuakeWorld's did not. In many ways, QW seems to be based on an older
+ version of the code.
+* Bumped maximum window resolution from 1280x1024 to 2560x2048 for software
+ rendered quakeworld. Note that this was more difficult here than in
+ `WinQuake` due to more hardcoded values. Patched some related assembly
+ routines, too (for i386).
+* Added SDL audio backend (borrowed and adapted from Quakespasm). This allows
+ for playing music with a CD drive emulator and getting sound effects
+ simultaneously, without needing two sound cards (since OSS DMA doesn't play
+ nice with software mixing).
+* Fixed a crash related to going underwater on some larger screen resolutions.
+* Some bad hacks in the makefile to make it link to everything it needs to.
+* XQuakeWorld functions; I play with a friend online using it.
+* GLQuakeWorld is completely untested and likely needs work.
+* Extended maximum length of user info string, for partial compatibility with
+ some more "modern" (i.e., incompatible) quakeworld server variants.
+
+The original, unmodified source can be found here:
+https://github.com/id-Software/Quake
+
+A good how-to for arguments and troubleshooting and such is here:
+http://www.linuxdoc.org/HOWTO/Quake-HOWTO-1.html
+
+Very old version of this readme from 2014 follows, half the information is no
+longer valid but I don't really feel up to the task of replacing it yet.
+
+=================================================
+: WHAT THIS IS / GENERAL BACKGROUND INFO :
+=================================================
+
+
+The how-to did not mention a few problems, which I created fixes for. These
+include the mouse not working to allow input and no input whatsoever (not even
+the keyboard) working in fullscreen. I also fixed a buffer overflow caused by
+the sheer number of OpenGL extensions that modern systems support (the game
+tries to print them to the console, and in doing so causes a buffer overflow
+because the string containing all of the extensions is larger than the game
+expected). The only noticeable difference my tweaks have caused (besides the
+fact that you now can play the game) is that this string of OpenGL extensions
+is no longer printed to the terminal (which I doubt most people care about,
+anyway). I promise I made no tweaks to functionality or controls that would
+make it differ from the original.
+
+=================================================
+: COMPILING QUAKE FOR LINUX :
+=================================================
+ ++++++++++++++
+ | DISCLAIMER |
+ ++++++++++++++
+
+ I have only built this on 32-bit Linux Mint 14.
+ It should work on 64 bit, but will have to be
+ Compiled with 32-bit libraries and binaries. I
+ think this is merely due to some assembly used,
+ and some changes to update the assembly to the
+ x86_64 architecture could make this work in 64
+ bit OSes natively. Also, there is a "pure C"
+ implementation of everything that needs assembly
+ on x86; I just need to remember how I used it.
+ I have it working on my Powerbook G4 (PowerPC).
+
+With that out of the way here is how to compile it:
+For the OpenGL GLX version (the high-quality version most sane people want),
+go to the directory 'WinQuake' and type
+
+ $ make build_release
+
+The makefile named 'Makefile.linuxi386' is the original one from id, which
+does not work anymore. The GLX and X11 makefiles are derived from this one,
+but do successfully build. Use them instead!
+
+The file 'Makefile.Linuxi386.glx' should be the same as the normal 'Makefile'.
+
+ ++++++++++++
+ | X11 Port |
+ ++++++++++++
+
+For the X11 version, the only version I even tried to port and which works
+well, is simpler to build, has fewer dependencies, and has fewer hardcoded
+paths, but is lower quality graphics-wise, do
+
+ $ make -f Makefile.Linuxi386.X11 build_release
+
+=================================================
+: POTENTIAL BUILD PROBLEMS :
+=================================================
+ +++++++++++++
+ | Libraries |
+ +++++++++++++
+
+If you are missing libraries, headers or whatnot, it will let you know about
+it quite loudly. You will need a few headers from the linux kernel; if you
+use ubuntu or an ubuntu variant, the headers should be under something like
+
+/usr/src/linux-headers-3.5.0-44/arch/x86/include
+
+and
+
+/usr/src/linux-headers-3.5.0-44-generic/include
+
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ $ YOU DO NOT HAVE TO COMPILE THE KERNEL. $
+ $ YOU DO NOT HAVE TO COMPILE THE KERNEL. $
+ $ YOU DO NOT HAVE TO COMPILE THE KERNEL. $
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ...Although if you do, enable OSS while you are at it.
+ This can be worked around if you don't compile.
+ All we need is the source files. We have no reason to
+ compile it unless that's something you would normally do
+ anyway.
+
+These will have to be edited in the makefile if you have a different version
+or architecture of the kernel than I did. Search one of the above strings to
+find where I included them. Replace them appropriately with your kernel
+versions. If you don't have sources, they are obtainable from most package
+managers, including apt. A few other paths may have to be changed in the
+Makefile that I hardcoded, but you can figure those out I think.
+
+(Look for 'wyatt' in the makefile; those paths are hardcoded, but there
+may be more. I honestly don't remember. I only know that when I got the
+source, id had hardcoded paths in the makefile and i simply changed the
+paths to fit my environment.)
+
+Good luck!
+
+___________________________________________________________________________
+
+
+=================================================
+: PROBLEMS RUNNING THE GAME :
+=================================================
+
+After building, it will be in the directory 'releasei386'.
+You will need to copy the directory 'id1' from a quake CD-ROM
+and place it in the 'bin' directory that your compiled game is in.
+
+I have yet to have this problem in Linux, but in windows, I have had
+blank (white) textures and a flickering display. To fix these, you can
+add the parameters '-no8bit' '+gl_ztrick 0' to the launching parameters.
+Note that 'gl_ztrick' _should_ have a "+" sign preceeding it instead of
+a "-".
+
+=================================================
+: SOUND PROBLEMS :
+=================================================
+
+This game uses OSS on Linux; Most modern computers running linux (e.g.
+Ubuntu, unless you built your own kernel) do not supply this. To fix,
+install 'aoss' (ALSA OSS wrapper) and run the game using
+
+ $ aoss ./glquake.glx <parameters>
+
+to make it see a fake OSS. The alternative (which will disable sounds but
+does not require any more package installations) is to pass '-nosound' to
+the game when invoking.
+
+I have not had luck getting sound in Linux Quake. I may need to have the
+CD-ROM in the drive, but I lost mine years ago and only have the
+installed version of the game on a old PC's hard disk. I cannot test why
+sound isn't working, but I can tell you Quake complains about not seeing
+a CD-ROM. I cannot answer questions about sound support.
+
+-Wyatt Ward, 2014-01-06 16:04 EST
+ Last Edited: 2014-01-14 9:25 EST