Moin Jeffrey-O-'! @@؀@@@DRnh@@@$$!  	      	  	 	 	 $ 	 $       	9 	 $ $       	   	   	  		  $     	  	  	$	     3#<'   	  $	$	  <## <<8     yMod()"-routine, just try to replace it. In the package of sources I 
included a modfile ("CROCKETT.MOD") which (on my machine with SB16) is played
correctly (by the way: "HYPN.MOD", the modfile included with "Rock Dodge" also 
works with the player!). 
But now, here comes a list of the sources you should have received with this 
mail:
 
 - "EASM.H--" : This file contains assembly-opcodes the compiler currently
	        does not support, implemented as macros (mainly opcodes for
		addressing memory in flat-mode);
		for code examples look at: "FLAMFLAT.C--", "FLAT.H--",
					   "TF_FIXED.C--"

 - "FIXED.H--" : Routines for fixed-point-arithmetic. I wrote this piece of 
		 code before I got version 0.203 of C--, so I did not know
		 that this would already be implemented. The new type called
	         "fixed" is equivalent to "fixed32s". Maybe that at least the
		 Sin, Cos, Ln, Exp etc. routines are interesting (done by 
		 using Taylor-polynominals).
	         These routines are used in "TF_FIXED.C--" to some extent.

 - "FLAMFLAT.C--" : Tiny demonstration of the flat-memory model.
	
 - "FLAMVEC.C--" : Fractal flames with line-vector rotating (and burning).
		 You can create your own objects by editing an ascii-file of
		 the following format: 
		    First line    : number of points (let's say n)
		    next n lines  : x, y, z component of each point (integer)
		      (n+1)'nd line : number of (vector-)lines (m)
		    next m lines  : starting point, ending point of each line
		 (look at "FLAMVEC.DRH") ;

 - "FLAT.H--" : Routines (actually only one) to establish flat-memory mode.
	        In this mode (which actually is real-mode) you can address all
	        your memory linearly.
	        To use this mode, XMS has to be installed, EMM not.
	      XMS is currently only necessary to enable the A20-line of
		the processor.
		Code example: "FLAMFLAT.H--" or "TF_FIXED.C--"
	        (You have to do the memory-management on your own!).
		Needs EASM.H-- to work.

 - "FLIGHT.C--" : Flight over a goraud-shaded landscape. The display sometimes
		is awfully buggy. Uses "DATA\\LSCAPE01.PAL" for the palette
		  and "LSCAPE.DAT". The latter only contains a 256x256 plasma-
		  pattern which should better be generated by the program 
		  itself, but I was to lazy to implement that.

 - "GORAUD.C--" : Little program, which displays goraud-shaded 3d-objects.
		  Commandline - driven : "goraud filename".
		  File-format:
		   First line     : number of points (let's say n)
		   next n lines   : x, y, z component of each point (integer)         
		     (n+1)'nd line  : number of polygones 
		   next n+1 lines : point #1 #2 #3 #4 of each polygon
		Examples: "DATA\GLIDER.DAT", "DATA\TORUS.DAT"

 - "MANDEL.C--" : Draws a small Mandelbrot-fractal using "FIXED.H--".
		Output done with "SVGA.H--". (requires VESA-compatible VGA)
 
 - "POLY.H--" : Routine for drawing polygons with 4 edges (but can easily be
	        modified to cope with other numbers of edges).
	        Mode-independent, "HLine"-procedure has to be implemented.
		Example: "SUPERMS.C--"

 - "STRING.H--" : Modified version of the original "STRING.H--"-file.
		"STRTOINT()" added. Used by some of the above/below programs.

 - "SUPERMS.C--" : SuperMarioKart-style graphics engine. Works all right,
		 but you cannot leave it without your computer crashing 
		   (I tried to find the bug, but I did not find it).

 - "SVGA.H--" : Simple routines for using 640x480x256 graphics.
	        VESA-compatible graphics-board needed.
	        Example: "MANDEL.C--"

 - "TF_FIXED.C--" : A free-direction-texture-mapper using lighting and polygon-
		  clipping (straight forward, try and set ClipDistance to 
		7*65536). All data is read from an ascii-file called 
		"TEX3.TDT", but you can override this by using the "-file"-
		option. Format of data-file:
		     first line: number (n) of texture-maps to be used 
		   next n lines: pathnames of texture-maps (surrounded with
				'"').
		   next line: pathname of palette-file
		     next line: number (m) of points
		     next m lines: x y z component of each point (fixed32s)
		     next line: number (k) of polygons
		   next k lines: 
		    each line contains several numbers:
		    - point #1 #2 #3 #4 of each polygon (clockwise or 
		      anti-clockwise order, try out (I can't remember)).
		      vector 1->2 and 1->4 defines the base for the 
		      teture-mapping (important if you want to use triangles).
		    - number of texture to be used for this polygon
		    - number (0 or 1) indicating whether this polygon should
		        be visible from both sides or only from that side, on
		      which the order of points is right (clockwise of...)
		    - x-size and y-size of texture
		      - light value for each point of the polygon 
		         (0 bright - 15 dark)
		Examples: "TEX3.TDT", "TEX5.TDT"
		Notice: source is split up into:
		        "TF_FIXED.C--", "TFILEIO.INC", "LLEVEL.INC",
			"TMATH.INC", "TPOLY.INC"    

 - "WALLMAPA.C--" : (Don't ask for that silly name).
		  Wolfenstein 3D-like game using texture-mapping.
		  Originally, I included a scanned photo of someone (as a
		  joke), but I better replaced it by this ugly drawing of a
		  face. The data-file-format resembles that of TF_FIXED (it
		  is more simple, just look at "NIXF.WAD").       
		I got some of the texture-maps from a shareware-program
		  called "Zox3D" (I can't find it again, and I do not know
		  who wrote it). So I don't know if it is possible to spread
		  it over the internet, but maybe I will draw some textures
		  myself soon.
		The game uses sound (the modplayer), so I don't know
		if you get it running, but I tested it on different computers.
		(Check for SBIRQ and SBIOAddress again!).
		In the game, use the keys:
		Up, Down, Left, Right, Alt, Ctrl, PgUp, PgDown, Tab, 
		F1, F2, F3, Esc.

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

The directory "DATA" contains different data-files that are used by different
programs (and the modfile I mentioned above). Most of the files are texture
files for WALLMAPA, TF_FIXED and SUPERMS. The files with 4096 bytes in size
contain 64x64 pixel texture maps - so if you want to use others, just replace
them.

I tested all the programs included herein with version 0.203 of the compiler.
For most of them, it was the first time I compiled them under this version, 
and I had to change some of them to get them running (mostly because C-- no 
longer pushes all variables for stack-procedures as word when no explicit 
override is given). But now all of them should at least do the things they 
are supposed to do (to a large extent). 

In this place I should better mention that I do not take over any 
responsability for any damages any of my programs may cause, because most of 
them access the hardware in quite a direct way, which is not always the 
safest way to do such things.

One word about the source-codes:
I myself would say that they are not very useful for someone who wants to 
understand them, because identifier-names (especially in older programs) are
a strange mixture of german and english and most of them are classical 
examples for spaghetti-code.

Good luck when testing the code!

Bye, Marko


Last Note: In the last minute before sending the mail, I modified "FLIGHT.C--".
	 I took the plasma-code from Peter's example-prog "PLASMA.C--" and
	 used it to let "FLIGHT.C--" generate a new landscape each time it is
	 started. So "DATA\LSCAPE.DAT" is no longer needed, which saves 64K
	 space!


