Minorly Enhanced QBSP v29 for Win32: A Quake level compiler
(QBSP256C for short)

Original program by John Carmack of id Software
Modifications by Tom Grandgent (Woofer)
  Email: tgrand@ultra.net
  WWW: Shake N' Quake, http://www.canvasnet.com/quake/
  FTP: ftp://ftp.canvasnet.com/quake/utils/graphics/qbsp256?.zip

Submodel support by Oden (see below)

------
Notice
------

If you have any questions, comments, or requests concerning
QBSP256C, please email me at tgrand@ultra.net.  If you want
to distribute this, go ahead as long as you don't make people
pay or anything like that.  It's still id's program, I just
made some modifications to it.

-----------------------------------
How to use the WAD override feature
-----------------------------------

To make this QBSP use a single WAD that you specify, just do:

qbsp -wad c:\quest\fart.wad waffles

In this example you would be compiling waffles.map using only
the WAD file c:\quest\fart.wad.  It will -not- try to use the
WAD file specified in waffles.map.

To make this QBSP use multiple WADs that you specify, just do:

qbsp -wad c:\quest\*.wad waffles

In this example you would be compiling waffles.map using all of
the WAD files in the c:\quest directory.  It will -not- try to
use the WAD file specified in waffles.map.

This is particularly useful in a batch file.  You could make
one batch file that always compiles any map with your set of
WAD files by creating a QB.BAT file (or something) like this:

qbsp %2 %3 %4 %5 %6 -wad c:\qbsp\gfx\*.wad %1

The %1 would be for the map file name and the other %'s would
be for optional parameters like -verbose.  You would run this
batch file like:

qb waffles

Simple, eh?  I have inclded this QB.BAT file in the ZIP.

*** NOTE! ***  Multiple WAD support does not always work at
this time.  I hope to have this working for QBSP256D, and
make it compatible with Worldcraft's multiple WAD support.

----------------------------------
How to use Oden's submodel support
----------------------------------

This feature causes QBSP256 to take any entities which have a
"classname" of "submodel" and merge their brushes with the "worldspawn"
entity's brushes.  All other information from the entity is ignored.  This
allows editors to use "submodel"s as a convenient way to group together
brushes from the world in an editor-independant manner (and a much cleaner
map-file output).  For instance, if you had a table made up of five brushes
(four legs and the table's surface), you could group them together in a
"submodel" entity and treat them as a single group, regardless of what
editor you use.


----------
What's New
----------

------------------------
Third release (11/22/96)
------------------------

Changes / Additions:

  1) Added memory allocation failure handling code.  Now,
     if you run out of virtual memory QBSP256C will beep,
     tell you to free up some disk space, and wait until
     you press a key.  Then it will try to allocate the
     memory it needs again.  It will keep trying until
     you either free up some virtual memory or kill the
     process (CTRL-BREAK is the easiest way to do that.)

  2) Added progress indicators.  Ok, so they don't tell
     you how long they're going to run for, but you can
     easily get a good idea of things after compiling
     your same map a couple times.  It's loads better
     than nothing.

  3) Increased the sizes of various limits of QBSP, such
     as MAX_MAP_PLANES, MAX_MAP_BRUSHES, MAX_MAP_ENTITIES,
     and the maximum MAP file line length (now you can
     put longer message displays into your levels, with
     the \n line break and such...)  These increases
     should not impact performance in any way.  Only the
     memory that is absolutely needed (heh) is allocated.

  4) Fixed logfile support to include the error message
     if QBSP256C dies for some reason.  This used to be
     omitted...

  5) Added Oden's submodel support. (Thanks Oden!)  The
     info on how to use this is given above...

------------------------
Second release (9/30/96)
------------------------

Changes / Additions:

  1) Added multi-wadfile support!  Now you can give QBSP a wildcard
     for the WAD override parameter, and it will search through each
     WAD looking for the textures it needs (if necessary).  Note that
     you'd probably want an editor that supports this.  Worldcraft
     will supposedly support this in its next release.  Quest should
     work the way it is now, if you just select different WAD files..

  2) I fixed some problems with -proj and -wad sometimes causing QBSP
     to crash with a page fault.

  3) I made it so that QBSP always automatically generates a QBSP.LOG
     file so you can look at that afterwards, but still see the output
     normally while QBSP is running.

  4) I improved (?) the way "point off plane" warnings are displayed.

------------------------
First release  (9/11/96)
------------------------

Changes / Additions:

  1) QBSP will allow up to 256 faces per brush (in theory).

  2) The infamous "point off plane" problem has been eliminated- QBSP will
     only give you warnings now, instead of giving up and aborting.

  3) The time is now displayed a little nicer.  I already had this exact
     code written for my FTP log analyzer so I just pasted it in.

  4) You can specify an "override WAD file" on the command line.  This
     way you can have it ignore whatever the MAP file says and use your
     one big texture WAD.  I have included a simple batch file (Q.BAT) to run
     if you want to easily use this feature.  But, just do something like:

     QBSP -wad c:\quest\quake101.wad woofer.map

  5) QBSP now checks for the existence of a WAD file specified in the MAP
     file BEFORE it goes and does all the hard work.  Now you'll know if
     that WAD file doesn't exist before you go through the trouble of
     compiling the level.

I guess that's about it for now.  If you like it, hate it, have comments,
questions, suggestions, etc etc please email me at tgrand@ultra.net.  Thanks!
