• v1.06 8537f176b2

    buddy released this 1996-09-30 00:00:00 +00:00 | 0 commits to master since this release

    Quake C progs for version 1.06

    Downloads
  • v1.05beta d9cdbbafad

    buddy released this 1996-09-13 00:00:00 +00:00 | 1 commits to master since this release

    This is a beta release of Quake v1.05. The full, supported release will be mid next week if there are no problems.

    In addition to the new exe files, the progs.dat has also been changed. The full release will include a patch program to change the .pak file in place, but to test the prog changes now, you must do the following:

    create an "id1_test" subdirectory in your quake directory.

    Copy the new progs.dat file to there.

    Add a "-game id1_test" command line parm when running Quake, which will cause it to use the newer version.

    Email bugs to johnc@idsoftware.com.

    ================================================================
    CHANGES

    Increased the number of edges, so walls don't vanish in e1m8 at high-res at
    certain viewing angles.

    Fixed problem with trying to lock the NULL pointer protection page, so Quake
    should now run under CWSDPMI r3 and 386MAX.

    Fixed problem where video mode corruption was reported and Quake was exited
    if _vid_default_mode in config.cfg was not a valid mode (often resulted from
    switching from UniVBE 5.2 to UniVBE 5.3, which supports fewer modes than
    5.2). Now just defaults to 320x200 if this happens.

    Fixed problem with working_size not being preadjusted up by 64K in memory
    allocation loop. This may provide 64K more memory on some systems.

    Fixed names with spaces showing up as "unconnected".

    Fixed the "Mod_NumForName: not found" bug.

    Fixed getting stuck on start map with noexit on. There must be
    a time or frag limit or there is no way to exit. It will run through
    the four episodes; sharware will only do epsiode 1. The end level
    is skipped since it's rotten for deathmatch.

    Fixed getting stuck on end map in deathmatch (since there is not exit).
    You must have a frag or time limit. It will takes you to the start map.

    Fixed it so dead players don't keep their stuff if the level changes
    while they are dead.

    Setting of the crosshair variable is now saved in config.cfg.

    Fixed the problem that using percent signs in a chat message would
    page fault the server.

    Fixed it so cell ammo is no longer carried over to the start level.

    Fixed a problem where you could kill shub the wrong way.

    Fixed a problem where you could "kill" a secret door and crash
    the server with a host_error.

    Fixed it so cell ammo is no longer picked up when you already have 100.

    Fixed a problem where if you discharged the thunderbolt in teh water your
    cells were dropped with your backpack.

    Added IPX support to the winded server.

    Fixed it so the ranking screen is centered in high resolution modes.

    Added support for extneral controllers (spaceball, assassin).

    Fixed a problem where the crosshair was drawn at the wrong location
    if you were underwater in a high resolution video mode.

    Fixed it so doing restart or edict when a server isn't running does
    no crash.

    Fixed it so you exit to the quake console instead of crashing when
    a net game fails to load. These failures are mostly due to trying
    to connect to a server running a level you do not have.

    Added teamplay 2. It differs from teamplay 1 in twop ways. You can
    hurt teamates (and yourself) and you lose 1 frag for killing a teamate.

    Fixed a problem where spaces were being added onto key bindings when the
    config.cfg was read. These wre then written out later. This caused the
    bindings to keep growing until it eventually caused a crash.

    Fixed it so a binding to ";" is now written to config.cfg properly.

    Fixed it so unbound keys no longer written to config.cfg.

    Fixed a hole where a fake client was able to change cvars and execute
    Quake consoel commands.

    Fixed it so showscores works in total full screen (no menu bar at all).

    Fixd the axe's aiming. It wasn't always correct causing false hits and
    misses.

    Added cycle weapon backwards (impulse 12).

    Fixed it so picking up a weapon in a backpack uses the same rules as
    picking up a weapon any other time.

    Fixed a lot of the obituaries. Many deaths were getting inappropraite
    messages. There are still a few cases that can occur with projectiles.

    Made the size of the zone a command line paramater. You specify -zone
    followed by a size in KB. The default is 48.

    Downloads
  • v1.01 c843ab4fd8

    buddy released this 1996-06-19 00:00:00 +00:00 | 2 commits to master since this release

    This is the last major component of the quake utilities to be released. To be honest, I have been a little reticent to release this because most of the actual qc code is basically rather embarassing crap. The time never became available to even give it a good top to bottom going over. I never spent any quality engineering time on my parts, American wrote a lot of qc code, and even Romero has a bit of work in there. It is a mess. If you look through the code and occasionally think "This is stupid!", you are probably right...

    The compiler itself can be drastically sped up by just replacing the symbol searches with binary trees or hashing. We remotely compile on our alpha, so it hasn't been a big enough issue for me to do it, but as the code size grows and grows it will be done sooner or later.

    The resulting code is horribly nieve and space ineficient (twleve bytes / instruction). If common subexpression removal was added, the instruction count could probably be cut nearly in half. I would have liked to have done a better job at this, but this was my first compiler front end, and I had a ton of other things fighting for my time. The next one will turn out better. (wow, I'm making a lot of excuses here, aren't I?)

    Qcc also performs some other maintenence functions for us, like rebuildinng all the brush models and making pak files, but those functions are only usefull if you have created all new data for everything. models.qc and sprites.qc don't actually generate any code, they are just parsed by modelgen and spritegen and included for completeness.

    To modify the quake program code, set up a new game directory parallel with id1, and containing a "progs" subdirectory. Copy all the .qc files and progs.src into that, and just run qcc from that directory. That will compile all of the files listed in progs.src and (if there aren't any errors) generate a new progs.dat file in the parent directory.

    As a simple test, open the client.qc file, go to the ClientObituary function at the end, and change some of the messages.

    The directory structure will look something like:

    /quake/quake.exe
    /quake/id1/
    /quake/mygame/progs.dat
    /quake/mygame/progs/progs.src
    /quake/mygame/progs/world.qc
    /quake/mygame/progs/client.qc
    /quake/mygame/progs/... etc ...

    Run quake with "-game mygame", which will cause quake to look for data in the mygame directory before falling back to id1. In this example, it will find the new progs.dat from mygame, and take everything else from id1. You can type "path" at the quake console to verify the current search order of directories and pak files. THIS WILL ONLY WORK WITH A REGISTERED VERSION OF QUAKE.

    The header qcc.h has the language spec and some documentation, but I'm not positive if it is all current.

    The only documentation for the various builtin functions I can offer is the source code used by quake. See builtin.c. Some of them are required to do things outside the scope of the qc world, and some are just there for speed reasons.

    PLEASE don't ask me questions about all this!

    John Carmack

    Downloads