
                                  JL

                               presents

          ##   ##    ##    ##   ##   ####     ####   ###     ###
          ##   ##  ##  ##  ##   ##  ##  ##   ##  ##  ####   ####
           ## ##  ##    ##  ## ##  ##    ## ##    ## ## ## ## ##
           ## ##  ########  ## ##  ##    ## ##    ## ##  ###  ##
            ###   ##    ##   ###    ##  ##   ##  ##  ##       ##
             #    ##    ##    #      ####     ####   ##       ##

                                                     version 1.10

Contents:
    0. Disclaimer
    1. Introduction
    2. Requirements
    3. Installation
    4. Starting a net game
    5. Command line parameters
    6. Differences from original game
    7. Version history
    8. Licencing
    9. Links

*****************************************************************************
0. Disclaimer
*****************************************************************************

#include <std_disclaimer.h>

   "I do not accept responsibility for any effects, adverse or otherwise,
    that this code may have on you, your computer, your sanity, your dog,
    and anything else that you can think of. Use it at your own risk."

*****************************************************************************
1. Introduction
*****************************************************************************

    Vavoom is a source port based on sources of Doom, Heretic, Hexen and
  "a little bit" from Quake. Supported platforms are DOS, Windows and LINUX.
  A dedicated server also can be compiled on OpenBSD and possibly on other
  UNIX systems, but this may require some changes.
    If you find any bugs, feel free to report them.

*****************************************************************************
2. Requirements
*****************************************************************************

Vavoom System Requirements:
     - Pentium processor or better
     - 32 MB RAM
     - optional: Sound card
     - optional: CD-ROM
     - Windows version: DirectX 7 (http://www.microsoft.com/directx)

*** IMPORTANT!: Vavoom requires a floating point processor.
Systems that do not have an FPU installed will not run Vavoom -- at all.

  To play Vavoom you need main wad file from one of the following games:
     - Doom shareware
     - Registered Doom
     - Ultimate Doom
     - Doom 2: Hell on Earyh
     - Doom 2: TNT Evilution
     - Doom 2: The Plutonia experiment
     - Heretic shareware
     - Heretic registered
     - Hexen
     - Strife shareware
     - Strife
  If you have multiple IWADs, you can use command line params -doom, -doom2,
-tnt, -plutonia, -heretic, -hexen or -strife to look for IWADs only for that
game. Hexen requires wad file from version 1.1. Strife support is just a test.

*****************************************************************************
3. Installation
*****************************************************************************

==============================================================================
3.1 Installing DOS/Windows binaries
==============================================================================

  First choose a directory, where you will place Vavoom - an existing Doom,
Heretic and/or Hexen directory or new directory. If you decide to create a
new directory, you must copy here main game wad file. Then unarchieve here
binaries.

==============================================================================
3.2 Linux/UNIX installation
==============================================================================

In order to compile and run Vavoom under Linux, you need the following:

Compiler and tools:
    * GNU C++ Compiler, GNU make (every LINUX user must have them)
Libraries:
    * Allegro game programming library - latest Work In Progress version
  (http://www.talula.demon.co.uk/allegro)
    * OpenGL: OpenGL implementation from your video card's manufacturer
  or MESA (http://www.mesa3d.org) and X-Windows development libraries.

  And of course Vavoom sources.

Step by step:
-------------

  1. Create a new directory 'vavoom' somewhere where you will compile Vavoom
and change into it:

        md vavoom
        cd vavoom

  2. Unpack the Vavoom source package:

        unzip v110_src.zip

  3. Run fixunix.sh to convert text files to UNIX format:

        ./fixunix.sh

  4. If you don't have OpenGL or have problems with compiling OpenGL driver
you can disable it by editing Makefile configuration part.

  5. Run make in the main directory.

        make

  This will compile Vavoom executable, utilites, progs and will build
additional wad files.

  6. Then you install it:

        su -c "make install"

  This will install Vavoom into /usr/local/games/Vavoom.

  7. Change to this directory and copy the main .wad file here or create
a symbolic link to it:

        cd /usr/local/games/Vavoom
        cp <where-your-wad-file-is> .
   or:
        cd /usr/local/games/Vavoom
        ln -s <where-your-wad-file-is> .

==============================================================================
3.3 Compiling LINUX / UNIX dedicated server
==============================================================================

Compiler and tools:
    * GNU C++ Compiler, GNU make

  First run fixunix.sh to convert text files to UNIX format:

        ./fixunix.sh

  Then you compile it:

        make sv

  Then you install it:

        su -c "make installsv"

==============================================================================
3.4 Other source code compiling information for developers
==============================================================================

For DOS you need
  Compiler and tools:
      * DJGPP (http://www.delorie.com/djgpp)
      * GNU make or RHIDE
  Libraries:
      * Allegro game programming library - latest Work In Progress version
    (http://www.talula.demon.co.uk/allegro)
      * OpenGL version: MESA (http://www.mesa3d.org) and Allegro driver for
    MESA (http://www.geocities.com/SiliconValley/7259/)

For Windows you need:
  Compiler and tools:
      * Borland C Compiler with Borland Turbo Assembler or Borland C++
    Builder 5.0 (http://www.borland.com) Compiler itself is freeware, but I
    don't know how about TASM.
  Libraries:
      * DirectX 7 SDK (http://www.microsoft.com/directx), already included
    in Builder but some headers needed by DirectMusic are missing. In Allogro
    website (http://www.talula.demon.co.uk/allegro) section Work In Progress
    you will find a minimal version of DirectX 7 SDK.

  The Makefile-s are for DOS and LINUX, for Windows the makefiles are files
with extension .mak. For DOS there's also RHIDE project files, for Windows
there's also Builder project files.

  You can also compile main executable with MSVC, but it will abort with
Segmentation violation during startup. I don't know, how MSVC is fucking
with arrays of classes, but in the result chat macros are not constructed
like it is expected. That's why I don't use it anymore. All project files
are removed, so if you wanna try it, you will have to create a new ones.

*****************************************************************************
4. Starting a net game
*****************************************************************************

  First about drivers. DOS version supports IPX, Beame & Whiteside TCP/IP and
MPATH TCP/IP drivers. MPATH driver needs a launcher, the one from Quake works
fine (because the drivers are taken from Quake sources). Serial driver is not
fixed (if you need this, please let me know or otherwise I will not fix it).
Windows version supports Winsock TCP/IP and Winsock IPX driers. Linux version
haves only TCP/IP driver.

  The default socket port is 26000. It can be changed in console with command
"port <port>".

  Now network game can be launched from menu. It's Quake-like, so you should
not have problems with it.

  Here is a list of most important server console variables and commands for
dedicated server operators.

Server console variables:
-------------------------

    DeathMatch          - 0 - cooperative, other - deathmatch, in Doom
                            1 - like was param -deathmatch
                            2 - like was -altdeath - items and weapons are
                          respawning
                            3 - like 2, but monsters are respawning very fast
                          and they are attacking each other - total nightmare
    NoMonsters          - 0 - enable, 1 - disable monsters;
    TimeLimit           - Replaces command line param -time, sets time (in
                     minutes), after which level will automaticly end, 0 for
                     no limit, works only in deathmatch.
    HostName            - Name, listed in server list and that can be used to
                     connect to this server.
    Skill               - Game skill, 0 - very easy, 4 - nightmare

Server console commands:
------------------------

    MaxPlayers [<players>]

  Changes maximal mumber of players. Can be executed only when server is not
running, for dedicated servers only on command line.

    Map <mapname>

  Shuts down current server and spawns a new one in specified map. As you
understand all clients are dropped.

*****************************************************************************
5. Command line parameters
*****************************************************************************

  All console commands can be specified at command line by prefixing them
with symbol +, they will be executed after executing jl/startup.vs.
  Some examples:
    +SetResolution 640 480 16
    +Exec myconfig.cfg
    +Map MAP03

Graphics
--------

-OPENGL selects OpenGL driver
-opengl

-D3D selects Direct3D driver
-d3d

-PARTICLES specifies number of particles to use, default is 2048, but you
can't have less than 512 (i.e. you can't disable them)
-particles <count>

-SURFCACHESIZE specifies size of surface cache memory, in kilobytes
-surfcachesize <size>

Sound
-----

-NOSOUND disables all sound, music and CD-Audio
-nosound

-NOSFX disables sound
-nosfx

-NO3DSOUND disables 3D sound, use original mode, Windows version only
-no3dsound

-NOMUSIC disables music
-nomusic

-NOCDAUDIO disables CD music
-nocdaudio

-CDDEV specifies CD device file, default /dev/cdrom, LINUX version only
-cddev <file>

Input
-----

-NOMOUSE disables mouse
-nomouse

-NOJOY disables joystick
-nojoy

Network
-------

-NOLAN disables all LAN drivers
-nolan

-NOUDP disables TCP/IP driver
-noudp

-IP specifies IP address, Windows version only
-ip <address>

-NOIPX disables IPX driver
-noipx

-MPATH enables MPATH TCP/IP driver, DOS version only
-mpath

-PORT sets default LAN port
-port <port>

Game selection
--------------

-DOOM look only for Doom IWAD files
-doom

-DOOM2 look only for Doom 2:Hell On Earth IWAD files
-doom2

-TNT look only for tnt.wad
-tnt

-PLUTONIA look only for plutonia.wad
-plutonia

-HERETIC look only for Heretic IWAD files
-heretic

-HEXEN look only for Hexen IWAD files
-hexen

-STRIFE look only for Strife IWAD files
-strife

Custom games and development
----------------------------

-GAME specifies custom game
-game <directory>

-DEVGAME like -game, but also sets Vavoom in development mode
-devgame <directory>

-DEVSND sets sound development mode, uses given SNDINFO script, sounds and
music are loaded form archive directory, which is specified in script.
-devsound <SNDINFO_script>

-PROGS specifies directory where to look for progs. Server progs are loaded
from file svprogs.dat, client progs - clprogs.dat. Path must include ending
slash.
-progs <directory>  ex. -progs progs/myprogs/

-FILE specifies additional files
-file <file1> [<file2> ...]

Debugging
---------

-DEBUG creates a debug file basev/debug.txt with all console messages.
-debug

-STARTTIME sets start time, not in LINUX version and dedicated servers
-starttime <time>

-RHIDE prints debugfile to stderr, in DOS version Sys_Error exits with call
frame traceback
-rhide

Misc
----

-MAXZONE sets maximal amount of memory, that Vavoom will try to allocate
-maxzone <size>   ex. -maxzone 14.5

-MINZONE sets amount of mini-zone (used for strings and small structures)
-minzone <size>

*****************************************************************************
6. Differences from original game
*****************************************************************************

    - Support higher (and lower ;-) resolutions.
    - 16 and 32 bit colors for all drivers, 24 bit for OpenGL and Direct3D.
    - Polygon-based software rendering.
    - OpenGL rendering.
    - Direct3D rendering.
    - Lightmapped lighting.
    - Static light sources with sight checking (i.e. true shadows).
    - Dynamic lighting.
    - Colored lighting.
    - Specular highlights.
    - Particles.
    - Mipmapping.
    - Skyboxes.
    - Freelook.
    - Zooming.
    - Jumping.
    - Models.
    - Progs - now you can forget about DeHackEd.
    - Translucency.
    - Consle. Call it witnh '`' key (also known as tilde). Special keys are:
        - Tab to complete command, press it again for next matching command;
        - Shift + Tab for reverse order;
        - PageUp/PageDown to scroll lines up/down.
        - Up/Down for last 16 command history
    - CD audio.
    - 3 croshairs.
    - Fullscreen stats also in Doom.
    - Controls can be redefined in game.
    - Pure cient/server architecture with in-game joining.
    - Sloped floors and ceilings.
    - 3D floors.
    - Possibility to use wall textures on floors/ceilings and flats on walls.
    - glBSP plugin.
    - glVIS plugin.
    - A lots more.

*****************************************************************************
7. Version history
*****************************************************************************

==============================================================================
Version 1.1
==============================================================================

* Replaced immediate console command execution with command buffer (like in
 Quake).
* Replaced old message with 5 notify messages.
* Created switches script.
* All games can have extended level structure with ACS scripts.
* Reworked all sound, music and CD-audio stuff.
* Created new sound script with more info than SNDINFO, this one replaces
 builtin table of sounds.
* Fixed problem with long sound lumps.
* Added function S_PlayTillDone for Doom quit sounds.
* Windows version now suports 3D sound (if Your hardware suports it).
* No more builtin sound sequence list - now registering all sequences from
 script.
* CD now works on Windows and also on Linux (thanks to sources if Quake).
* Some other bugfixes and improvements.

==============================================================================
Version 1.2
==============================================================================

* Some structures are replaced with C++ classes, which makes coding easier.
* Functions, that takes most of the execution time (R_DrawColumn, R_DrawSpan
 and RunFunction) now are in assembler (DOS and LINUX versions only).
* Improved dehacked support. Now it handles everything, that it can. It is
 also added to makeinfo utility, which means that now you can create PROGS
 with changes of dehacked patch.
* Removed some command line params (-playdemo, -record, -width, -height, ..).
 Moust of them are replaced with console commands that can be specified in
 command line by adding + before them (like in Quake).
* Some bug fixes.

==============================================================================
Version 1.3
==============================================================================

* DOS network drivers ported to DJGPP and moved into main executable.
* Fixed chat.
* Fixed multiplayer intermission.
* Totaly rewrote network protocol. Added multicast server. This means that
 all client messages are sent only to server and server forwards them to
 other players. Why that's for? Whel, in the begining, when I tried to run
 4 players on IPX, it seemed that it runs one tic per second. By adding
 -extratics situation got a little bit better, but not by much. Now 4 players
 on IPX realy can play. No need to use -dup option so I decided to remove it.
 -extratics option was removed, when I added ACK mechanism.

==============================================================================
Version 1.4 BETA
==============================================================================

* Added almolst all Quake network drivers.
* Client/server architecture. As You understand, this is a realy BIG cahnge.
* Removed support for old demos. New demos is not done yet :-(
* Real random numbers.
* Net game launching from console.

==============================================================================
Version 1.4
==============================================================================

* In-game joining (also in single player).
* Fixed savegames, intermission, floor texture cahnges, other minor bugs.

==============================================================================
Version 1.5 BETA
==============================================================================

* Replacing fixed point with floating point, in progs everything is replaced,
 in executable some drawing functions still use them because conversation from
 float to int is very expensive.
* Fixed bug with framerate bigger than 35 FPS (caused delays between input
 and actual action)
* Improoved Windows keyboard input
* I hope that I fixed problem with sound in Windows version
* Added screen resolution menu
* Server's mobj baseline is now saved in save game

==============================================================================
Version 1.5
==============================================================================

* Dedicated server application.
* Multiplayer menus.
* Fixed some bugs in DOS/LINUX prog execution asm.
* Changed network protocol.

==============================================================================
Version 1.5.1
==============================================================================

* Some changes to compile it on OpenBSD

==============================================================================
Version 1.6
==============================================================================

* Added vectors, are used a lots.
* Splited progs into 2 parts - server progs and client progs.
* In a lots of places time is measured in seconds, not tics. Speed now is in
 pixels per second.
* Quake style key bindings.
* Angles are handled by client.
* Togglable mouse look, lookspring
* Client position is sent using floats, no more screen jiggle.

==============================================================================
Version 1.666 BETA 1
==============================================================================

* New polygon based software renderer
* Wider look range
* Tilted death view.
* Skyboxes
* 16 bit colors
* Early OpenGL rendering
* Added builtins for retrieving texture/flat num from name. To use them open
 file builtins.c in directory common and in section of common builtins add
 the following lines:

    extern int CheckTextureNumForName(string name);
    extern int TextureNumForName(string name);
    extern int CheckFlatNumForName(string name);
    extern int FlatNumForName(string name);

  If texture or flat is not found, Check... functions returns -1, but
 functions without Check will abort programm with error message.

==============================================================================
Version 1.666 BETA 2
==============================================================================

* Disabled testing of lighting effects, in Hexen MAP01 it took 62% of
 execution time.
* Support for different sprite types.
* For key bindings added command for key-up event. This allows such commands
 as "bind PADDIVIDE "fov 45" "fov 90"".
* Fixed drawing of translucent sprites
* Fixed Z-buffering.
* Fixed translated sprites.
* Fully functional OpenGL driver, selectable from command line.

==============================================================================
Version 1.666
==============================================================================

* Direct3D rendering, also selectable from command line.
* Basic support for decals. Not available yet.
* OpenGL driver for DOS version ;-).
* Fixed crashing in clipping because of roundoffs.
* Fixed crashing when starting a net game.
* Puffs are correctly spawned on floors and ceilings.
* Reworked menus.
* New demos.

==============================================================================
Version 1.7 BETA 1
==============================================================================

* Removed dehacked support from engine. Will not come back. ;-(
* Sloped floors and ceilings. ;-)
* Most of the timing is in seconds.
* Switched from mobjinfo table to object spawn functions. You can easily add
 new object params.
* Partialy redesigned VavoomC compiler. The new features are:
    - pointers to pointers;
    - indirect function calls;
    - C++ style structure inheritance;
    - special type for vectors, operators with vectors;
    - supprot for Borland preprocessor;
    - varargs for builtin printing functions.
* Partialy moved menus to progs. In one of the next betas I will move the
 rest of the menu code and also intermission and finale.
* Level identification by name.
* Sprite name list is sent from server. Disabled character cast in Doom 2
 finale. Client don't need server progs anymore.
* Testing support for Strife.
* Possibility to use wall textures on floors/ceilings and flats on walls.
* Reworked memory meneger to have less memory leaks.
* Translucent walls.
* Terrain type script.
* Center messages.
* Translation tables loaded from wad file.
* Correct player colors.

==============================================================================
Version 1.7 BETA 2
==============================================================================

* In Doom/Doom2 walking over/under other things.
* 3D floors!
* Translucent floors.
* Palette color shifts. Currently used only for contents but soon all PLAYPAL
 entries will be replaced with color shifts.
* Underwater effect.
* Increased anims limit for retail Strife.
* Config not saved on error.

==============================================================================
Version 1.7 BETA 3
==============================================================================

* Removed limitation for switches.
* In compiler possibility to define multi-dimensional arrays and structures.
* Use Hexen map format as default, for old format do internal translation.
 Tried to do this compatible with ZDoom, maps converted with zwadconv runs
 fine.

==============================================================================
Version 1.7 BETA 4
==============================================================================

* New OpenGL driver for LINUX.
* Scanline world drawing.
* Improved performance of OpenGL and Direct3D drivers. Removed all stuff that
 slows it down.
* Fixed Hexen hubs, made them available for all games. Cluster 0 is treated as
 "no cluster", all maps in it are treated as in different clusters.

==============================================================================
Version 1.7 BETA 5
==============================================================================

* Finished moving menus to progs.
* Moved intermissions and finales to progs.
* Translucent croshair (cvar croshair_trans in range 0-100)

==============================================================================
Version 1.7
==============================================================================

* Dynamic lighting.
* Draw entire polygon, not by splitting into triangles, faster.
* Lighting of sprites in data level, even more faster.
* Other bug fixes and improvements.
* In glBSP fixed polyobj finding.
* A different algorythm for glVIS, more precise, but slower.

==============================================================================
Version 1.8
==============================================================================

* Optimized glVIS utility, now it's faster.
* Network message functions in progs. For nonrecognized server commands
 engine calls progs function to handle it. In other words you can extend
 network protocol.
* Particles.
* Lightmapped lighting.
* Mipmapping.
* Sorted edge rasterization.
* Static light sources.
* 32 bpp colors.
* Colored lighting.
* Console alias saved in config.
* Progs virtual machine now allocates local vars from progs stack.

==============================================================================
Version 1.9
==============================================================================

* Support for md2 models.
* Some renaming, game data directory now is called basev and VavoomC files
 now haves extension vc.
* Translucent 3D floors.
* Mipmaping for OpenGL and Direct3D
* Multitexture support in OpenGL.
* Automap works in OpenGL and Direct3D
* Confiurable automap colors.
* Reworked filesystem. Now Vavoom uses a filesystem similar to Quake.
* Some client/server improvements.
* Up to 8 sounds per entity.

==============================================================================
Version 1.10
==============================================================================

* glBSP plugin.
* glVIS plugin.
* Windowed mode for Windows OpenGL version.
* vcc now haves a built-in preprocessor, no need for external compiler
 anymore.
* Made VavoomC language object-oriented. All the basic features: classes and
 methods (currently all methods are virtual), as well as support for class
 references (not yet used in actual code).
* Support for all format TGA model skins.
* Some new extensions to the MAPINFO script (see vavmref.txt).
* Added skybox script.
* Floatification of angles - now represented as floats and measured in
 degrees.
* glVIS now also builds REJECT data (if GL-nodes are in wad file, not in gwa).
* Gamma controls for OpenGL and Direct3D.
* Specular highlights.

*****************************************************************************
8. Licencing
*****************************************************************************

    Vavoom is distributed under terms of GNU General Public Licence.

*****************************************************************************
9. Links
*****************************************************************************

  The Vavoom homepage:
    http://www.vavoom-engine.com/

  The Vavoom SourceForfe project page:
    http://sourceforge.net/projects/vavoom/

  The homepage for glBSP:
    http://glbsp.sourceforge.net/

  The homepage for glVIS:
    http://www.vavoom-engine.com/glvis.html

  The home of ID-Software:
    http://www.idsoftware.com/

  The home of Raven Software:
    http://www.ravensoft.com/

  The home of Rogue Entertainement:
    http://www.rogue-ent.com/

  Doom related pages:
    http://www.doomworld.com/
    http://www.new-doom.com/
    http://www.doomcenter.com/

  Raven games related page:
    http://www.ravengames.com/
    http://www.raven-games.com/

  All questions, bug reports, etc. should be sent to:
    vavoom@vavoom-engine.com


Have a lots of fun!

Janis Legzdinsh
