Frequently Asked Question (FAQ) of the Quake Sourcecode Mailing List (QSML) (!!! Under development !!!) Maintained by Matthias "Maddes" Buecher Quake Sourcecode Mailing List homepage at https://www.quake-info-pool.net/ Last changes: 2000-01-14 Content ========== 0. Disclaimer 1. About this FAQ 2000-01-14 1.1 Where to get the latest version 2000-01-14 2. How to compile... 2.1 with Microsoft VisualC++ 2.1.1 Microsoft's Macro Assembler (MASM) 2.1.2 Latest service packs 2000-01-14 2.1.3 Problems and other odd things 2000-01-14 2.2 with LCC-Win32 2000-01-14 2.3 WinQuake for Linux 3. Useful Links 3.1 Quake 2000-01-14 3.2 Compilers and libraries 3.3 Freeware tools 4. Credits and thanks 5. Abbreviations 0. Disclaimer ============= Don't take these information as granted or prefect. Use at your own risk. If there are any problems, please tell me. (the typical necessary bla bla will come soon) 1. About this FAQ ================= 1.1 Where to get the latest version ----------------------------------- The FAQ is available in the file area of the QSML. To access the file area of QSML, you have to be a member of the QSML and login into Onelist at http://www.onelist.com/ You will get a list of the communities you have joined, select the "quakesource" community and you will get a new menu with all the different areas (files, links, etc.) A mirror is also available on the Quake Info Pool at https://www.quake-info-pool.net/ 2. How to compile ================= 2.1 With Microsoft VisualC++ ---------------------------- Microsoft Visual Studio homepage: http://msdn.microsoft.com/vstudio/ The necessary environment files are .DSP, .DSW and .RC, other files like .NCP, .PLG, .OPT will be recreated by VisualC++. 2.1.1 Microsoft's Macro Assembler (MASM) ---------------------------------------- (Some information are taken from the Quake Standards Group VC++ tutorial and Mike Tsao's homepage at http://www.sowbug.org/qdev.html) MASM is needed for best performance. If you want to compile it without MASM (pure C code), then search for "#define id386" in QUAKEDEF.H plus QUAKEASM.H and change the files as following: /* no 386 assembler, no MASM #if defined __i386__ // && !defined __sun__ #define id386 1 #else */ #define id386 0 /* no 386 assembler, no MASM #endif */ You can get version 6.11d of MASM for free through the Win98 DDK at http://www.microsoft.com/ddk/download/98/BINS_DDK.EXE Run it to extract the BINS_DDK.CAB file, then open the new file with an CAB- capable tool (e.g. PowerArchiver, see link on 3.3), extract BIN_WIN98_ML.EXE, rename to ML.EXE and put it in the BIN directory of your VC++ installation. An update to version 6.14 can be found on Microsoft's homepage at http://support.microsoft.com/support/kb/articles/Q228/4/54.asp A MASM FAQ can be found at http://www.dgsys.com/~raymoon/faq/masm.html 2.1.2 Latest service packs -------------------------- It is also recommended to get the latest service pack for your VC++. Note that sometimes there are several versions of a service pack, make sure to get the one which includes the VC++ updates. As of 2000-01-13 the service packs are... * Visual C++ 5.0 Service Pack 3 available at http://msdn.microsoft.com/vstudio/sp/vs97/default.asp Note: You HAVE to download the FULL version (~90MB). plus http://support.microsoft.com/support/kb/articles/Q187/2/80.asp * Visual C++ 6.0 Service Pack 5 available at http://msdn.microsoft.com/vstudio/sp/vs6sp5/ Note: You HAVE to download the FULL version (~95-120MB). 2.1.3 Problems and other odd things ----------------------------------- Depedency problems: The release versions depend on the DEBUG(!) version of GAS2MASM, that's no problem as it just converts .s files to .asm files, hence does not effect speed of the executables. Build the DEBUG(!) version of GAS2MASM first, and you should be able to compile the release versions. Optimisation problems: If you experience weird problems, like players/monsters can shoot through doors/walls, then disable optimisations for the release versions through menu "Project->Settings..." under the "C/C++" tab. I found out which optimisations are responsible for these behaviours, you have to remove the /Ow optimisation and should add the /Op optimisation. More info about these can be found in the VC++ help, just do a search for these parameters. Especially note the comment about possible wrong data in the /Ow help section. Odd usage of debug libraries: The GLQWCL release version defines _DEBUG instead of NDEBUG. 2.2 With LCC-Win32 ------------------ Please refer to Jeff Ford's page at http://home.sprintmail.com/~sjford/quake.html 2.3 WinQuake for Linux ---------------------- Please refer to Mike Tsao's page at http://www.sowbug.org/building_quake.html 3. Useful Links =============== (more links can be found on the QSML links area) 3.1 Quake --------- id software - http://www.idsoftware.com/ Quake Standards Group - http://qsg.telefragged.com/ Quake Info Pool - https://www.quake-info-pool.net/ Quake Engine Resources - http://www.planetquake.com/qer/ Quake 2000 - http://www.geocities.com/tanepiper/ Quake Lives - http://www.quakelives.com/ Direct3D Quake - http://www.palevich.com/3d/d3dquake/ Compile GLQuake with LCC-Win32 - http://home.sprintmail.com/~sjford/quake.html How to compile Quake - http://www.sowbug.org/qdev.html How to compile WinQuake for Linux - http://www.sowbug.org/building_quake.html Amiga Quake PPC - http://cdbssoftware.net/quake/ Quake Forge Project - http://quake.sourceforge.net/ QuakeWorld Forever - http://qwf.challenge-world.com/ 3.2 Compilers and libraries --------------------------- GNU Project - http://www.gnu.org/ Microsoft Visual Studio - http://msdn.microsoft.com/vstudio/ MASM FAQ - http://www.dgsys.com/~raymoon/faq/masm.html LCC compiler (Freeware) - http://www.cs.princeton.edu/software/lcc/ LCC-Win32 compiler (Freeware) - http://www.cs.virginia.edu/~lcc-win32/ DJGPP compiler (Freeware) - http://www.delorie.com/ NASM assembler (Freeware) - http://www.web-sites.co.uk/nasm/ OpenGL Organization - http://www.opengl.org/ Scitech Software MGLLib - http://www.scitechsoft.com/ 3.3 Freeware tools ------------------ PowerArchiver (previously known as EasyZip) - http://www.lancs.ac.uk/people/cpaap/pfe/ Programmer's File Editor (PFE) - http://www.softwarecenter.net/powerarchiver/ WinCVS - http://www.wincvs.org/ 4. Credits and thanks ===================== Thanks to id software for releasing the Classic Quake sourcecode and making great games which are still enjoyable after several years. Thanks to all the people providing information and help on the Quakesource Mailing List, the Quake Standards Group, the Quake Info Pool and all the other Quakesource related pages and forums. 5. Abbreviations ================ Some useful abbreviations which often get mixed up: * NQ = normal Quake (not QuakeWorld, sometimes called NetQuake too) * QW = QuakeWorld * RQ = regular Quake (unmodified gameplay) * QC = QuakeC * SRC = Source * Observer mode = client is connected as a player, who is not involved in the action, but can join without reconnecting * Spectator mode = client is connected as a spectator, to join the action he must reconnect (like in QW) * VC = Microsoft Visual C++