
                         
                               
                                   
                                
                         The Quake Model Editing Tool
                            by the Satanic Cabbage
                    
                         ----------------------------
                          S n e a k    P r e v i e w
                         ----------------------------

 QMET is a model editor designed specifically for Quake.   Everything is
 geared towards making baddies, weapons, bonus items and other models for
 the Quake game engine.

 The sneak preview is essentially just a model viewer.   It's pretty but
 it doesn't do much in the way of model editing!   Models are shaded and
 textured and their animation frames can be viewed.   Panning, zooming
 and rotation are controlled by the mouse.

 QMET accepts an optional command line parameter to specify the model to
 load.   The models do not need to be unpacked from the Quake distribution
 files although models which are not in PAK files may be viewed.   An INI
 file is used to store the Quake directory and default model to load.   You
 will be prompted to enter your Quake directory if it is not specified in
 the INI file.

 Remember to visit the QMET home page:

  http://www.geocities.com/SiliconValley/3078/


-- About the source code ---------------------------------------------------

 I like to see free source code distributed over the internet and so I'm
 including the source code with QMET.   QMET is written in 100% assembly
 language and was assembled with Turbo Assembler 2.51 (oh dear - us
 students don't get much money for buying expensive software).   Everything
 was typed in using DOS EDIT (the one supplied with '95 which supports
 long file names though - not that I've used any or anything).


-- The Satanic Cabbage -----------------------------------------------------

 I'm studying for my A-levels at the moment and this program is getting
 written in my spare time (between Quake deathmatches).   I'm not exactly
 an expert at programming but what I've managed to cobble together so far
 I'm quite pleased with.   Hopefully this thing is going to get finished!

 Just in case you were wondering, my real name is Matthew Shepcar.   I
 live in a small town called Pocklington in Yorkshire.   As well as writing
 QMET I also help run a web site on Quake called 'Gibbed!' which can be
 found on:

  http://ourworld.compuserve.com/homepages/gibbed



-- Programming Log ---------------------------------------------------------

 Here's how QMET started life:

 20th January
  Initial code in place:
   Protected mode (gosh what a lot of system crashes I get)
   Memory allocation (system crashes! really I didn't think my programs
    were that bad!)
   Filing routines (more bugs! what do you mean I've overwritten half
    of system RAM?)
   Basic .MDL reader (used to test memory/filing routines)
   Beginnings of VGA code (Quake palette read)
   Skins can be viewed.

  Well, with that the main system code in place I hope I won't crash the
  system so often writing the rest of the program!
  
  22nd January:
   Floating to fixed point conversion routine written
   .MDL reader extended to scale model correctly (using float to fixed)
   3D Transformation code included (revamped an old program)
   Environment and Texture Mapping Polygon code included (no clipping yet)
   It now renders a rotating animating light sourced model!!!
   Made very exciting logo
   Wrote font code and made four fonts using Visual Basic (i hate basic)
    the fonts look pretty good and can be displayed in any colour (uses
    the Quake colour mapping table)
   Anti-aliasing/transparency tables built

  It looks very pretty now and I'm wondering how to start making the editor
  part.   Polygon clipping is needed definitely though!!!   SVGA would be
  nice too.

  24th January:
   Crude clipping added to polygon routine
   Vertices can now be displayed
   Mouse support added!!!
   Mouse controlled panning, zooming and rotation (rotation needs more work)
   Get/Plot bitmap routines with clipping added
   Timer routines added (sometimes I hate using protected mode)
   Timer driven animation and spin (speed same on all machines)
   Discovered a bug when I was viewing Chthon and Shub Niggurath
    - it's seems to cause a divide overflow for big models - aaaaargh!

  I need to rewrite my polygon routine but can't be bothered.   It'll do for
  a bit longer yet!   I'm considering displaying 'mid-frames' if the model
  is currently mid-way between two frames (ie It's going too jerkily in
  animate mode!)   Not that there's much point or anything - it'll just
  be more prettier (good grammar)!

  My PC has just been upgraded to a Cyrix P166+ (only from a 150+ though!).
  Isn't that smashing?   Oh, all right then, it's not.   (I didn't even
  know my Dad had upgraded it for most of the afternoon until I rebooted
  and it said 166+ on the startup screen!!!)   I tried running QMET on some
  486s at school and it was a bit slooowwww.   Timer wasn't in then though.
  Might add a frame rate counter too.   Mouse routines need finishing next,
  so back to work!

  25th January:
    Added skin colour changing
   I added between frame interpolation and it goes SMOOOOTH as buggery
    now - I just can't believe it!   Not very useful, however, as it's not
    done in Quake as far as I know (bloomin' should be though!).
   Designed web page
   Made sneak preview
   Added PAK handling routines
   Added bug to PAK handling routines
   Removed bug from PAK handling routines (see below)
   Added simple line drawing routine and wireframe mesh option.   Needs
    clipping yet.
  
  Pass me a brick wall would you so that I can bang my head repeatedly
  against it.   I just don't believe how stupid I've been!   I saw this
  routine which didn't close a file before returning so made it close
  the file.   I then spent 3 hours wondering why my PACK file routines
  had packed up thinking it 'might be something to do which DOS getting
  stuck because of the protected mode barrier'.   THE BLOODY PACK FILES
  HAD BEEN BLOODY CLOSED IN THE 'OPEN PACK FILES' ROUTINE!!!! WHAT A
  STUPID FOOL!!!!!!!!   I feel much better for that little outburst.

  26th January:
   Added INI file routines
   Added simple command line parsing routine
   Fixed memory routine bug (see below)

  You wouldn't happen to have another brick wall handy would you?   I've
  spent nearly a day at it this time.   Why weren't my memory routines
  working?   They'd worked up until I put in the INI file handling routines.
  These routines needed a bit of workspace which they freed after being
  called and made the memory routines do more than they'd done before
  because they had to rejoin series of freed blocks.   They only forgot
  to update the pointers in the next block to point to the block before
  the one that gets deleted didn't they?   AAAAAAAARRRRRRRGGGGGGGHHHHHHHHH!
  What a waste of a day.

  I really must add divide overflow handling and other error handling so
  that the timer can be unhooked and the machine will stop crashing after
  a few minor modifications which cause the program to bomb out!

 This is incomplete.   Go to the web page if you're really interested:

  http://www.geocities.com/SiliconValley/3078/


----------------------------------------------------------------------------

