                                                                  ******
     ##   ##    ##    ##   ##   ####     ####   ###     ###     **********
     ##   ##  ##  ##  ##   ##  ##  ##   ##  ##  ####   ####     **      **
      ## ##  ##    ##  ## ##  ##    ## ##    ## ## ## ## ##     **
      ## ##  ########  ## ##  ##    ## ##    ## ##  ###  ##     **
       ###   ##    ##   ###    ##  ##   ##  ##  ##       ##     **      **
        #    ##    ##    #      ####     ####   ##       ##     **********
                                                                  ******
                L A N G U A G E   S P E C I F I C A T I O N

!!! This document is far from completed.


  1   Terminology.


    VavoomC - scripting language used in progs.

    progs - code writed in VavoomC sripting language, which is compiled into
            virtual machine files that are executed by Vavoom.


  2   Getting sources.


  Prog sources are included in following archives:

    v19_prog.zip - This archive contains prog sources and compiler binaries.
                   Mod makers working in DOS or Windows most likely will
                   choose this package.

    v19_src.zip  - Full Vavoom source code with progs as part of it. In LINUX
                   progs are compiled as part of the build process.

  The latest prog sources can be found in Vavoom CVS repository.


  3   Making a mod.


  Follow the followinf steps:

  1) Create a subdirectory in Vavoom directory. This will be your game
directory. For example:

    md mygame

  2) From directory basev copy games.txt into your game directory and rename
it to base.txt. For example:

    cp basev/games.txt mygame/base.txt

  3) Edit base.txt and remove detection of the games with which your mod will
not work.

  4) In your game directory create directory progs. For example:

    md mygame/progs

  5) For all games but Doom2 copy sources of that game's rpogs into this
directory. For example:

    cp -r progs/heretic/* mygame/progs

  For Doom2 copy soyrces of Doom progs, then edit doomdefs.vc and at the top
of the file add the following line:

    #define DOOM2

  You also need the contents of directory common. There are multiple ways to
go. The simplest is to copy directory common into your game directory, for
example:

    cp -r progs/common mygame

  You can also copy it into <gamedir>/progs or not to copy at all. In this
case you will have to edit clprogs.vc and svprogs.vc and fix path to files
client.vc and server.vc.


  4   Compiling PROGS.


  Progs are compiled with vcc (Vavoom C Compiler). In progs source version
it's located in utils/bin, in source distributive it's located in utils/vcc.
vcc must be available on path. Add directory utils/bin to the path or put vcc
in any other directory which is included in path or put it in the directory,
where you will use it (possibly will not work in Linux).

  For each PROGS there is a Makefile and bat file compile.bat. Simply run
make or compile.bat.


  5   Progs from DeHackEd


  To compile Doom2 PROGS with changes from dehacked patch go to directory
progs/hack_d2. Here you will find an example dehacked patch hack.deh. It is a
dehacked patch from Batman Doom with fixed some bugs that progs don't like.
Replace it with patch that you want to use. Then run hack.bat to create hacked
source files and scripts. Then you must compile progs with compile.bat.
Finally run makewad.bat to create hack.wad which I hope you know how to use.

  For Doom the directory is progs/hack_d1, the sample hack.deh is from Aliens
Doom.


  6   The VavoomC language.


  VavoomC language is based on C/C++ language. It features most of the C/C++
features and also haves some VavoomC specific features. The best way how to
learn it is by exploring progs source code.
