Thread: Problem building Quake source

  1. #1
    Banned
    Join Date
    Jan 2003
    Posts
    1,708

    Problem building Quake source

    I download the 3MB quake source from IDsoftware, but it cannot find the d_draw.obj file. First of all what exactly is stored in a .obj file, is it like assembly or something? Secondly how can I get the d_draw.obj file? Or did Id purposely not include it so little buttheads like me can't actually build the quake project?

  2. #2
    Programming Sex-God Polymorphic OOP's Avatar
    Join Date
    Nov 2002
    Posts
    1,078
    ddraw is directdraw.

    You need the directx SDK

    http://msdn.microsoft.com/directx

  3. #3
    mov.w #$1337,D0 Jeremy G's Avatar
    Join Date
    Nov 2001
    Posts
    704
    i believe d_draw is part of the Direct X package.
    go to: http://www.microsoft.com and use the little search field on th left navigation menu and search for DirectX 8.1 SDK.

    Download and install that 182ish mB file, and you will have the direct x files.

    I believe .obj are what the compiler compiles your .cpp files into, before it LINKS them together to create the executeables.
    c++->visualc++->directx->opengl->c++;
    (it should be realized my posts are all in a light hearted manner. And should not be taken offense to.)

  4. #4
    Banned
    Join Date
    Jan 2003
    Posts
    1,708
    Does it matter which version of dx sdk I get? Im downloading 9 will that work? I mean this is afterall an extremely old game so I have my doubts if either would end up working.

    Thanks

  5. #5
    I lurk
    Join Date
    Aug 2002
    Posts
    1,361
    No, sorry to say you're all wrong
    You need the MASM assembler installed to your VC98\bin\ folder.

    Yet again, a simple search: http://www.inside3d.com/qip/home.shtml

  6. #6
    Banned
    Join Date
    Jan 2003
    Posts
    1,708
    Ok Eibro. What is the exact name of the program? There's a bunch there and I don't see 'MASM' anything, perhaps I don't have it?

    What's the difference between 'MASM' and 'GASM'?

  7. #7
    I lurk
    Join Date
    Aug 2002
    Posts
    1,361
    Originally posted by Silvercord
    Ok Eibro. What is the exact name of the program? There's a bunch there and I don't see 'MASM' anything, perhaps I don't have it?

    What's the difference between 'MASM' and 'GASM'?
    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.
    I also found you have to extract BIN_WIN98_ML.ERR and rename it to ML.ERR

    I'll take a shot in the dark and guess GASM is ASM for *nix.

  8. #8
    Banned
    Join Date
    Jan 2003
    Posts
    1,708
    Ok thanks Eibro, I appreciate the help. I downloaded the entire dx 9.0 sdk (200 somethingMB) for nothing, lol!!! Oh well I've done worse things! Who knows maybe I'll find it useful yet!

  9. #9
    mov.w #$1337,D0 Jeremy G's Avatar
    Join Date
    Nov 2001
    Posts
    704
    well, you kinda did, kinda didnt download DX sdk for nothing.

    On the PRO, you now have the DX sdk, and you can start with making graphic window applications.

    On the CON, for me, DX9 has been the crappiest dx EVER! Its given me nothing but problems (Prevent half life, 3dsMax, and other programs from running) and slowed down my quake 3.
    How ever, some others dont seem to face this problem. Sigh. i hate dx9
    c++->visualc++->directx->opengl->c++;
    (it should be realized my posts are all in a light hearted manner. And should not be taken offense to.)

  10. #10
    Banned
    Join Date
    Jan 2003
    Posts
    1,708
    I'm getting these errors, I don't really know what I'm doing but I'm going to try to fix them anyways

    Code:
    --------------------Configuration: winquake - Win32 Release--------------------
    mycoolbuild
    Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
    Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
    worlda.s
    The system cannot find the path specified.
    Microsoft (R) Macro Assembler Version 6.11d
    Copyright (C) Microsoft Corp 1981-1995.  All rights reserved.
     Assembling: .\Release\worlda.asm
    .\Release\worlda.asm(1) : error A2088: END directive required at end of file
    mycoolbuild
    Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
    Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
    sys_wina.s
    The system cannot find the path specified.
    Microsoft (R) Macro Assembler Version 6.11d
    Copyright (C) Microsoft Corp 1981-1995.  All rights reserved.
     Assembling: .\Release\sys_wina.asm
    .\Release\sys_wina.asm(1) : error A2088: END directive required at end of file
    mycoolbuild
    Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
    Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
    surf8.s
    The system cannot find the path specified.
    Microsoft (R) Macro Assembler Version 6.11d
    Copyright (C) Microsoft Corp 1981-1995.  All rights reserved.
     Assembling: .\Release\surf8.asm
    .\Release\surf8.asm(1) : error A2088: END directive required at end of file
    mycoolbuild
    Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
    Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
    surf16.s
    The system cannot find the path specified.
    Microsoft (R) Macro Assembler Version 6.11d
    Copyright (C) Microsoft Corp 1981-1995.  All rights reserved.
     Assembling: .\Release\surf16.asm
    .\Release\surf16.asm(1) : error A2088: END directive required at end of file
    mycoolbuild
    Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
    Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
    snd_mixa.s
    The system cannot find the path specified.
    Microsoft (R) Macro Assembler Version 6.11d
    Copyright (C) Microsoft Corp 1981-1995.  All rights reserved.
     Assembling: .\Release\snd_mixa.asm
    .\Release\snd_mixa.asm(1) : error A2088: END directive required at end of file
    mycoolbuild
    Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
    Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
    r_varsa.s
    The system cannot find the path specified.
    Microsoft (R) Macro Assembler Version 6.11d
    Copyright (C) Microsoft Corp 1981-1995.  All rights reserved.
     Assembling: .\Release\r_varsa.asm
    .\Release\r_varsa.asm(1) : error A2088: END directive required at end of file
    mycoolbuild
    Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
    Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
    r_edgea.s
    The system cannot find the path specified.
    Microsoft (R) Macro Assembler Version 6.11d
    Copyright (C) Microsoft Corp 1981-1995.  All rights reserved.
     Assembling: .\Release\r_edgea.asm
    .\Release\r_edgea.asm(1) : error A2088: END directive required at end of file
    mycoolbuild
    Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
    Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
    r_drawa.s
    The system cannot find the path specified.
    Microsoft (R) Macro Assembler Version 6.11d
    Copyright (C) Microsoft Corp 1981-1995.  All rights reserved.
     Assembling: .\Release\r_drawa.asm
    .\Release\r_drawa.asm(1) : error A2088: END directive required at end of file
    mycoolbuild
    Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
    Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
    r_aliasa.s
    The system cannot find the path specified.
    Microsoft (R) Macro Assembler Version 6.11d
    Copyright (C) Microsoft Corp 1981-1995.  All rights reserved.
     Assembling: .\Release\r_aliasa.asm
    .\Release\r_aliasa.asm(1) : error A2088: END directive required at end of file
    mycoolbuild
    Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
    Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
    r_aclipa.s
    The system cannot find the path specified.
    Microsoft (R) Macro Assembler Version 6.11d
    Copyright (C) Microsoft Corp 1981-1995.  All rights reserved.
     Assembling: .\Release\r_aclipa.asm
    .\Release\r_aclipa.asm(1) : error A2088: END directive required at end of file
    mycoolbuild
    Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
    Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
    math.s
    The system cannot find the path specified.
    Microsoft (R) Macro Assembler Version 6.11d
    Copyright (C) Microsoft Corp 1981-1995.  All rights reserved.
     Assembling: .\Release\math.asm
    .\Release\math.asm(1) : error A2088: END directive required at end of file
    mycoolbuild
    Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
    Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
    d_varsa.s
    The system cannot find the path specified.
    Microsoft (R) Macro Assembler Version 6.11d
    Copyright (C) Microsoft Corp 1981-1995.  All rights reserved.
     Assembling: .\Release\d_varsa.asm
    .\Release\d_varsa.asm(1) : error A2088: END directive required at end of file
    mycoolbuild
    Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
    Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
    d_spr8.s
    The system cannot find the path specified.
    Microsoft (R) Macro Assembler Version 6.11d
    Copyright (C) Microsoft Corp 1981-1995.  All rights reserved.
     Assembling: .\Release\d_spr8.asm
    .\Release\d_spr8.asm(1) : error A2088: END directive required at end of file
    mycoolbuild
    Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
    Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
    d_scana.s
    The system cannot find the path specified.
    Microsoft (R) Macro Assembler Version 6.11d
    Copyright (C) Microsoft Corp 1981-1995.  All rights reserved.
     Assembling: .\Release\d_scana.asm
    .\Release\d_scana.asm(1) : error A2088: END directive required at end of file
    mycoolbuild
    Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
    Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
    d_polysa.s
    The system cannot find the path specified.
    Microsoft (R) Macro Assembler Version 6.11d
    Copyright (C) Microsoft Corp 1981-1995.  All rights reserved.
     Assembling: .\Release\d_polysa.asm
    .\Release\d_polysa.asm(1) : error A2088: END directive required at end of file
    mycoolbuild
    Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
    Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
    d_parta.s
    The system cannot find the path specified.
    Microsoft (R) Macro Assembler Version 6.11d
    Copyright (C) Microsoft Corp 1981-1995.  All rights reserved.
     Assembling: .\Release\d_parta.asm
    .\Release\d_parta.asm(1) : error A2088: END directive required at end of file
    mycoolbuild
    Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
    Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
    d_draw16.s
    The system cannot find the path specified.
    Microsoft (R) Macro Assembler Version 6.11d
    Copyright (C) Microsoft Corp 1981-1995.  All rights reserved.
     Assembling: .\Release\d_draw16.asm
    .\Release\d_draw16.asm(1) : error A2088: END directive required at end of file
    mycoolbuild
    Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
    Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
    d_draw.s
    The system cannot find the path specified.
    Microsoft (R) Macro Assembler Version 6.11d
    Copyright (C) Microsoft Corp 1981-1995.  All rights reserved.
     Assembling: .\Release\d_draw.asm
    .\Release\d_draw.asm(1) : error A2088: END directive required at end of file
    Linking...
    LINK : fatal error LNK1181: cannot open input file ".\Release\d_draw.obj"
    Error executing link.exe.
    
    WinQuake.exe - 19 error(s), 0 warning(s)

  11. #11
    I lurk
    Join Date
    Aug 2002
    Posts
    1,361
    Haha. Looks like you're having the same problems I was having. I just said the hell with it

    My best guess is: what we downloaded was a newer version of MASM, and those files are using something which has been depricated.

    If anyone knows MASM, perhaps they could take a look at the d_draw.s file.
    *signals Silvercord to attach d_draw.s*

  12. #12
    Banned
    Join Date
    Jan 2003
    Posts
    1,708
    Oh sorry it took so long for me to attach it, here is d_draw.s

    EDIT: Just to let you know even when we do get this part working you are still going to need to download quake so you can have all the .wad files and what not

  13. #13
    mov.w #$1337,D0 Jeremy G's Avatar
    Join Date
    Nov 2001
    Posts
    704

    READ THIS OR DIE!!!!!

    Found this at my favorite quake sites:
    http://www.sowbug.org/qdev.html

    contents:
    Building Quake from id's source
    If this doesn't work for you or if you have other tips please let me (Mike Tsao) know at [email protected].

    December 27, 1999
    If you'd like to compile Quake under Linux, here's another tutorial from Ralph Churchill. I haven't tried it myself so please e-mail questions and comments to him. Thanks, Ralph!

    Also, to solve the mathlib.c freezing problem under MSVC 5.0, try compiling the QuakeWorld version of the same file. That should work ok and you can just copy the file into the WinQuake project. Also try removing lines 178 and 287 from the mathlib.c file (I haven't tried this myself so I don't know what these lines are, but I have been told this makes it work).

    December 26, 1999
    Several people have written me about trouble getting the source to compile and run using Visual Studio 5.0. The specific problems are:

    1. Freezing during compilation of mathlib.c;

    2. The QuakeWorld server freezes during runtime if compiled with the optimizations used in the VC6 project.

    I don't have Visual Studio 5 so I can't reproduce these problems, but it makes sense to create your own project (.dsp) and workspace (.dsw) files and recreate the projects from scratch, because there may be a new option in VC6 that makes VC5 explode. Also make sure you have the latest Service Pack for VC 5, which you can get here.

    If you know how to solve these problems, please write me and I'll post the instructions here.

    December 23, 1999
    If you don't have MASM, telefragged.com has a link on how to get it. Or just get it from here and find the file in the CAB file named BIN_WIN98_ML.EXE, and rename that to ml.exe. Then continue with step 1 below.

    This is how to get a fully functional copy of WinQuake working if you have MASM:

    1. Install MASM if you haven't already, and add the MASM611\bin path so that Visual Studio 6.0 can see it.

    2. Open the WinQuake workspace and set to the debug configuration. This is important because both the release and debug configurations of WinQuake rely on the debug version of gas2masm!

    3. Compile. It should work just fine.

    4. Now switch to the release configuration of the WinQuake project. Compile. Done.

    I am working on a version of the .s files in WinQuake that will compile under NASM, but I haven't figured out how to integrate NASM with Visual Studio 6.0. If you know how to do this, please let me know. The next step, of course, is getting it to compile under a totally free development environment, but I know lots of people are already working on that.

    December 22, 1999
    This is how to get a marginally functional copy of WinQuake working without MASM (but I don't think there's any reason to do this since you can get MASM for free here):

    1. Download the source from ftp.cdrom.com or wherever else and unzip into some directory somewhere.

    2. Open the WinQuake project from Visual Studio 6.0.

    3. In quakedef.h, modify line 65 which defines id386 to be 1. You want this constant defined as 0. This is the project-wide constant that says "we are compiling for an Intel processor and we have provided hand-optimized code from Michael Abrash that must be compiled with an assembler."

    4. Move all the .s files within the project to a new project folder called "Assembly files" or something like that. Then right-click that project folder, select "settings...," and check the box that says "Exclude file from build." These are all the files that you need MASM to compile, so what we're doing here is setting them aside for now but not actually removing them from the project.

    5. Add nonintel.c to the project.

    6. In sys_win.c, comment out lines 273 and 291, which cause the following empty functions to be included: Sys_SetFPCW(), Sys_PushFPCW_SetHigh(), Sys_PopFPCW(), MaskExceptions(). These are some of the functions that would have been implemented in the .s files that we took out.

    7. In sys_win.c, add the following empty functions:

    void Sys_HighFPPrecision (void)
    {
    }

    void Sys_LowFPPrecision (void)
    {
    }

    8. Compile. You'll get a couple warnings about functions that might not return required results, but that's ok.

    9. Move the file WinQuake.exe that's now in the Release folder into some other folder on your drive, and copy the ID1 folder from your Quake 1 folder into that folder (this is just like how it already is in your Quake 1 folder). Run it. It should work. You'll see the textures wig out from time to time and draw gray instead of the right texture. Since the functions we stubbed out in steps 6 and 7 all deal with particular ways to round floating-point numbers and deal with NAN problems, I'm sure that the reason we're seeing buggy drawing code is because it relied on these functions.

    Note: After running WinQuake my Windows Start button turns blue and the taskbar doubles its height. Go figure.

    If you have questions e-mail Mike Tsao at [email protected].

    If you have a handheld device and would like to get stock quotes, sports scores, daily news, message board postings, maps, and driving directions on it for free, go to AvantGo! It works with Palms, Palm Pilots, Windows CE devices, Pocket PCs, Windows, Macintosh, Unix, and Linux! Symbian/Epoc and RIM support is coming soon.


    --------------------------------------------------------------------------------
    c++->visualc++->directx->opengl->c++;
    (it should be realized my posts are all in a light hearted manner. And should not be taken offense to.)

  14. #14
    Banned
    Join Date
    Jan 2003
    Posts
    1,708
    I tried download quake off of KaZaa, it seems to run fine except for that fact that it doesn't actually do anything, it just goes to the opening screen (console) says the direct sound sampling rate, and it makes gameplay noises but it never actually goes into the game. Anyone know why?

    EDIT: Just to let you guys know I got it to work and I'm fiddling with it right now. Instead of relying on MASM I did the 'marginal functional working version' directions from that website and it works fine, it hasn't even 'tweaked out' yet (the drawing) like it said it would. This is pretty neat looking at a full version of a game, I hope I can learn a lot from this.

    EDIT1: actually the drawing is tweaked out, I guess it really isn't optimized afterall, but it's still fun to play and i can still mess with the source so I guess it is kind of a moot point
    Last edited by Silvercord; 01-25-2003 at 04:19 PM.

  15. #15
    Did you download the game or the source? If you just got the source you'll need to plug in the resources for the game (levels, etc.)

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. small reference problem
    By DavidP in forum C++ Programming
    Replies: 6
    Last Post: 06-21-2004, 07:29 PM
  2. Tutorial review
    By Prelude in forum A Brief History of Cprogramming.com
    Replies: 11
    Last Post: 03-22-2004, 09:40 PM
  3. i got the source code for my problem
    By DarkViper in forum Windows Programming
    Replies: 14
    Last Post: 11-13-2002, 05:55 PM
  4. QUAKE 2 SOURCE GPL'ED!!!(eg. ITS FREE AND OPEN!!)
    By no-one in forum A Brief History of Cprogramming.com
    Replies: 8
    Last Post: 12-23-2001, 11:33 PM