
Surfmodl 3.00C  Release Notes.

These notes discuss the differences between SURFMODL 2.00c and 3.00C.

NEW FEATURES:

  Version 3.00C has the following changes:

-- Support for the full palette of the VGA and Super VGA adapters,
   and several resolution modes.  Many thanks go to Jordan Hargrave,
   who wrote the SVGA256 support now used.  (His contribution is
   shareware, however, so users are encouraged to register with him -
   see SVGA256.REG for details.)
-- Fully dynamic memory allocation, so SURFMODL only uses as much
   memory as it needs.  This also means there is no longer a need
   for two versions of the program; everyone can use the big memory
   version, regardless of how much memory their system has.
-- Automated installation utility (SURFINST).
-- Global configuration file (SURFMODL.CFG), created by SURFINST.
-- A new symbolic command format in the .INI files, which makes them
   easy to manually modify.
-- Interactive file selector, so you don't have to type in file names
   anymore.
-- You can now save and play back screens in any graphics mode
   (previously this did not work with screens that required more than
   64 KBytes of memory to store).
-- The PLAYBACK utility now supports extended memory (using XMS, alias
   HIMEM.SYS), so it is possible to do very long animations.  (For some
   of the high resolution Super VGA modes, you MUST have extended memory
   because there isn't enough conventional memory to load even a single
   screen.)  A job well done by Yuval Tal, wrote the XMS unit I used to
   implement this.
-- New looping options in PLAYBACK.
-- Support for screen dumps to a color printer (using the shareware
   utility Colour Snap).
-- Support for the Amiga IFF format for saving SURFMODL images.
-- Option to show surface borders.
-- Support for an optional environment variable, SURFDIR, where SURFMODL
   will look for all data files (default is the current directory).
-- Performance statistics window.
-- Saved screens are sequentially numbered, to avoid overwriting them.
-- Several miscellaneous bugs tracked down and SQUASHED!
-- Third optional command-line parameter, to allow automated scripts
   that save the screen to disk.

COMPATIBILITY:

  Version 3.00C is written in Turbo Pascal 6.0.  It may still compile
under versions 5.0 and 5.5, but definitely nothing earlier.  PLAYBACK
requires version 6.0 because of the XMS unit.

  Version 3.00C reads all the old data files, but not the old .INI files.
You must use the utility INICVT to convert your old-format .INI files
into the new format.  The new format has symbolic commands, so it is
very easy to read and modify.

  Whereas I used to name all of the SURFMODL data files with no file
name extension, SURFMODL now requires that you use the extension of .SRF
if you want to use the interactive file selector.  I recommend you use
this extension for all your new data files, and rename your old data
files to this extension.


KNOWN BUGS:

  Much as I hate to admit it, there are still a few bugs in SURFMODL:

-- Shadowing still doesn't work quite right (it never did).
-- If PLAYBACK encounters an error allocating memory, on some 
   systems it leaves you in a graphics mode and you can not
   read the error message.  You have to blindly type "MODE CO80"
   to restore your screen to normal, but you may not know why
   PLAYBACK kicked you out.  If you have extended memory available,
   and HIMEM.SYS is loaded, a memory allocation can fail for two
   reasons: (1) Not enough memory left; and (2) Ran out of handles.
   This is why you will now get an extensive memory usage report at
   the end of each PLAYBACK run if you use extended memory.  If you
   have the above problem, I recommend you reduce the number of files
   that are used in your animation until you get something to work.
   Then you should have a readable memory report when the animation
   finishes, and you will be able to tell whether you are closer to
   running out of memory or out of handles.  Unfortunately, the copy
   of HIMEM.SYS that I have does not allow you to increase the number
   of handles.  If someone else knows how to, please let me know.
-- The IBM 8514 has been removed from the system selection menu,
   because the new VGA driver (SVGA256.BGI and VGA256.BGI) use the
   same system number.  I don't know anyone who has an 8514, but I
   would like to hear comments: Can you use the VGA drivers?
-- IFF files generated by SURFIFF are not readable by all IFF file
   viewers (see SURFIFF.DOC for details).
-- PREPROC's EXTRUDE function mis-orders surfaces (not always following
   the counter-clockwise rule), so you must use Nsides=2 if you use this
   feature.


FUTURE DIRECTIONS:

-- I am currently involved in a joint programming effort with Daniel
   Hudgins, the author of DANCAD3D (a popular shareware CAD program).
   We are trying to create an automated conversion utility to create
   SURFMODL data files from DANCAD3D.  If we are successful, this will
   make a very simple way to create new SURFMODL data files.
-- GIF support for file saving.  I have actually already pretty much
   got this working, but the files are not displayed properly by all
   GIF viewers.  I don't want to release this unless it's working 100%.
-- An option to over-ride SURFMODL's autoscaling of images.  I have
   been planning to do this for quite some time, but just haven't found
   the time.


Notes for Programmers:
~~~~~~~~~~~~~~~~~~~~~
  The program comes as a number of include files, several units, and the main
program:

   *.BGI         -  Borland Graphics Interface device drivers.

   COMPILE.BAT   -  Uses the Turbo Pascal line mode to compile the program.

   BGI2OBJ.BAT   -  Converts .BGI files into .OBJ files suitable for linking
                    into the final SURFMODL.EXE file.

   *.INC         -  Include files for the program and units

   SURFMODL.PAS  -  The SURFMODL program

   ANSICRT.PAS   -  A unit to emulate the CRT unit using ANSI.SYS escape
                    sequences on machines which are not IBM compatible.
                    It's emulation is incomplete, and some CRT
                    unit functions are still used, especially WINDOW,
                    KEYPRESSED, and READKEY.  You may have to modify
                    this unit further to work on your system. Normally the
                    Borland CRT unit is used and this unit is ignored.

   SURFBGI.PAS   -  A unit to provide Borland Graphics Interface support
                    for VAXmate (and eventually other) computers.  It uses
                    the Borland GRAPH unit, but also supplies equivalent
                    BGI routines for devices not supported by the GRAPH
                    unit.  It does not emulate the entire BGI system, just
                    the parts which SURFMODL needs.  It is supplied in
                    this version to demonstrate how to integrate other
                    graphics systems, but you should not need to use it.

   SURFGRAF.PAS  -  Surfmodl Graphics primitives, implemented in BGI graphics.
                    If a non BGI graphics device is being used (like the
                    VAXmate) then this unit uses the SURFBGI unit.
                    Otherwise SURFBGI is never used.

   PLAYBACK.PAS  -  A program to play back images saved with surfmodl.

   SURFINST.PAS  -  Automated installation utility.

   PLAYPAL.PAS   -  A program to allow you to experiment with the full
                    palette of the VGA, to see what your SURFMODL files
                    will look like before you run them.

  See also the file FILES.IDX for a more complete list of files.


Customizing the Program:
~~~~~~~~~~~~~~~~~~~~~~~

  The file DEFINES.INC is used to customize your program.  It contains all
the definitions for the built in Turbo Pascal pre-processor.  This file is
included at the beginning of all the programs and units, so a change in
this file forces the entire system to be re-compiled.

  Some of the options included are support of the 80x87 chip, control over
linking .BGI files into the .EXE file, use of the large memory model,
generation of debugging code, generation of shadow processing code,
and generation of code for "external" graphics devices (the VAXmate and
Amiga IFF).

  See the DEFINES.INC file for details.

..Ken Van Camp
