
                                  JL

                               presents

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

                                                     version 1.7

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
     - 8 MB RAM, 16 MB for Windows version
     - 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,
-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
*****************************************************************************

  In all cases you need game data.
  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, LINUX users can create
symbolic links to them (and save disk space). Then unarchieve game data and
then one of the binaries or sources or all of them.
  Since version 1.666 Vavoom needs "GL-Friendly Nodes" created with glbsp
(http://glbsp.sourceforge.net) and PVS (Potentially Visible Set) data created
with glvis utility (available in Vavoom homepage) at least in fast mode.
Builtin poligonization is not planed.
  Info on building sources can be found in file compile.txt.

*****************************************************************************
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
    +Exec myconfig.cfg
    +Map MAP03

Graphics
--------

-OPENGL selects OpenGL driver
-opengl

-D3D selects Direct3D driver
-d3d

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 IWAD files
-doom2

-HERETIC look only for Heretic IWAD files
-heretic

-HEXEN look only for Hexen IWAD files
-hexen

-STRIFE look only for Strife IWAD files
-strife

Development
-----------

-DEVMAPS enables map development mode. The script haves following format:
        mapsdir <directory>
        scriptsdir <directory>
After these lines there can be any number of following lines:
        file <file>
mapsdir selects directory, where to look for map wad files. scriptsdir
selects directory, where to look for scripts, file adds a file.
-devmaps <script_file>

-SCRIPTS specifies directory, where to look for scripts
-scripts <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. By default progs are loaded from wad file.
-progs <directory>  ex. -progs progs/myprogs/

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

Debugging
---------

-DEBUG creates a debug file jl/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 I_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-bit colors.
    - Polygon-based software rendering.
    - OpenGL rendering.
    - Direct3D rendering.
    - Skyboxes.
    - Freelook.
    - Zooming.
    - Jumping.
    - Progs - now you can forget about DeHackEd.
    - Translucency. Misc things are translucent, also specters partial
  invisibility is replaced with 10% visibility, so they are REALY hard to
  see. Also new wipe effect using 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.
    - Dynamic lighting.
    - 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.

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

    Vavoom is distributed under terms of GNU General Public Licence.

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

  The Vavoom homepage:
    http://www.raven-games.com/vavoom/

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

  The homepage for glVIS:
    http://www.raven-games.com/vavoom/glvis.shtml

  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/

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

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


Have a lots of fun!

Janis Legzdinsh
