
Changes to the Quake 1 source to enable compilation of Alpha/OSF binaries:
--------------------------------------------------------------------------

This file describes the changes that were made to the recently released
Quake 1 source code in order to compile the X and OpenGL versions for the
Alpha/OSF platform. These versions were intended to be used with the
Simplescalar processor simulator.

Some useful URLs:
   Original Quake 1.06 shareware:
	   ftp://ftp.cdrom.com/pub/idgames/idstuff/quake/quake106.zip
   Original Quake 1 source: 
	   ftp://ftp.cdrom.com/pub/idgames/idstuff/source/q1source.zip
   Simplescalar simulator:  
	   http://www.cs.wisc.edu/~mscalar/simplescalar.html
   Latest Alpha ISA/syscall defs, Quake 1 for Alpha files: 
	   http://www.cs.wisc.edu/~plakal/simplescalar

Distribution note:
   - The original Quake 1 sources were released under the GPL (see
     readme and license in the directory containing this file). Accordingly,
     this modified source distribution is also being released under
     the GPL. You are free to make changes and redistribute either
     this or your modified source tree. However, you will have to provide
     the source for any binary distribution you make.
     

Details of changes:
   - README.changes_for_ss_alpha: this file

   - All changes were made to the WinQuake directory. The QuakeWorld client (in the QW/
     directory) was not ported to Alpha/OSF as it was multi-player only. The WinQuake
     sources were modified to generate statically-linked binaries of X and OpenGL
     Quake with no support for sound, CD audio, assembly routines for rendering or
     DGA extensions of the X server. Binaries were generated using both the GNU C compiler
     and the Alpha vendor compiler.

     Compilation configuration details:
       Platform: Alpha 21264, Digital UNIX V4.0F (Rev. 1229)
       Compiler: gcc: gcc version egcs-2.91.66 19990314 (egcs-1.1.2 release)
	          cc: DEC C V5.9-005
       Libraries:  X: X Window System Version 11 Release 6.3
	      OpenGL: Mesa v3.0

     Files modified in WinQuake/:
      - Makefile: This is a modified copy of Makefile.linuxi386. It builds only the X (x11quake)
	and OpenGL-on-X (glquake) versions. The Makefile has two sets of compiler flags for gcc 
	and cc respectively. It also uses null versions of the sound and CD audio files. 
	`make build_release' builds release_axp/gl/glquake and release_axp/x11/x11quake
	`make build_debug' builds debug_axp/gl/glquake and debug_axp/x11/x11quake
        `make' builds both build_release and build_debug.
      - menu.c: Changed level_t to qlevel_t to avoid type conflict with system headers
      - net.h: Added if !defined(__osf__) to avoid type conflict with system headers
      - snd_null.c: Pulled in some definitions from snd_dma.c to satisfy linker
      - sys_dosa.s: Enclosed routines with #if id386 to prevent compilation of x86 assembly
      - gl_mesh.c: Added hack to read pre-computed model mesh from id1/glquake directory
        (meshes generated on first execution of GLQuake).
      - gl_vidlinux.c: commented include of sys/vt.h
      - gl_vidlinuxglx.c: commented include of sys/vt.h, commented/#ifdef'd out all uses of
        xf86dga/xf86vmode headers and functions, as well as 3DFX-OpenGL extensions.
      - r_sky.c: Added a #error directive to make sure that UNALIGNED_OK is never non-zero
      - d_polyse.c: Shifted pre-processor conditionals (#if id386) to be flush against the
        first column (or else vendor compiler complains)
      - gl_rsurf.c: Shifted pre-processor definition (#define COLINEAR_EPSILON) for same reason.
      - gl_warp.c: Shifted pre-processor include (#include gl_warp_sin.h) for same reason.

     Known bugs/wish-list:
      - x11quake makes a huge number of unaligned accesses. A lot of the hand-tuned rendering
        code could probably be cleaned up to avoid these, but only by someone who knows what's
        going on in the code. Not for the faint of heart.
       
      - Translate the x86 assembly (*.s files) into Alpha assembly!

      - Use an annotated version of an OpenGL library (or annotate the OpenGL calls in Quake)
        so that we can model OpenGL hardware acceleration in Simplescalar.
