This text file tells you how to make your own levels for MTRblast, with the
programs included in the package. Don't expect it to be easy or convenient.
Placing items may be very painful and require lots of testing.

Anyway, here's the instructions on how to make a level:

1. Produce a true-colour TGA picture, sized 1024*512 pixels, that has black
   space which will be used as the playing area. If you want to use water,
   use a dark color which is not used for walls elsewhere in the map. The
   level MUST be enclosed to prevent people from getting away from the
   playing area. (Could crash the machine and format your hard disk..? dunno.)

   I suggest using a rendering program such as POV-ray to make the TGA.. It
   often gives the best results. But of course you can use a true-colour
   painting program for it if you want. (But it will take long to draw a good
   level by hand)  If you decide to use POV-ray, the POVBLAST.ZIP contains
   some files you might find helpful. (including one that sets up MTRblast
   coordinate system [0,0]-[1024,512] and has borders enclosing the map)

   THE SIZE MUST BE 1024*512 PIXELS! 

2. Once you've got the TGA file, convert it to an uncompressed PIC file by
   typing: TGA2PIC <yourmap>.TGA BLASTERS.PAL <yourmap>.PIC
   The TGA2PIC is a very slow and generally lousy program. It may take 10
   minutes to convert one 1024*512 picture... Anyway, it works.

   There might be some other programs able to make this conversion faster.
   The registered version of Image Alchemy can convert pictures to BMP format
   using a palette from the pcx files within this game, but you will need to
   strip the bmp header from these files before you can use them in MTRblast.
   Anyway, I don't have such program so I made this cheap tga2pic.

   I may later make it possible to load PCX, BMP or 8-bit TGA files instead
   of PICs. But not right now.

3. Now that you have got the map picture ready, you will need to write a .map
   script that contains data about players' starting locations, landing sites
   and decorations. The script language is cheap and dirty, but should be
   possible to learn. I think the best way to learn it is to read through the
   map1.map file, but I'll write here some instructions:

   The format for all commands is:  :X "<parameter>";   , where the command
   line starts with ':' and ends with ';'. Everything outside these marks is
   ignored. Also, only the first letter after ':' (X in the example) is
   parsed by the program as a "command word". The command words are CASE-
   SENSITIVE!  X is not same as x and so on.

   To make it easier to read, I've used words like "zoom" instead of "z" in
   some cases. It's a good idea to write comments in your map files...

   The script language is based on "objects". Every object starts with an
   object type command (with an object index number), and ends with the end
   command (:e;). Between these, there may be variable amount of other
   parameters. Here are the object types and their parameters:

*  :p "map.pic"; This is the PIC file for the level.
   :x "33";      x and y are the colours that will be used as water in the        
   :y "63";      map. 33-63 means green colours...
   :z(oom) "20"; This is the general scale of ships and speeds. 
   :e;           End of PICTURE object

   - x,y,z are optional. By default, there are no water colours and z=20;
   - z values between 16 and 24 work best. (bigger/smaller are unplayable)

*  :s "0";       Ship number 0, aka Player 1 start location. ("1" = pl. 2)
   :x "384";     The x-coordinate of the ship.
   :y "256";     Y-coordinate
   :a "0";       Angle of the ship. 0=up, 64=right, 128=down etc.
   :e;           End of SHIP object

   - Angle of the ship is optional. Default angle is 0.
   - Don't bother making ':s "2";'.. Also you MUST have two players.

*  :i "0";       Item number, these are bonus icons and decorations that are
                 drawn under the player ships. Can be scaled and rotated.
   :t "0";       This is the item type. Here's a list of types:
                 0: Fuel Can. Touch to refuel your ship
                 1: Wrench. Touch to repair your ship damage.
                 2: Ammo. Touch to resupply your main gun's ammo.
                 3: Missiles. Touch to get more secondary weapon ammo.
                 4: Arrow "turn right"
                 5: Arrow "turn left"
                 6: Arrow, straight
                 7: Red arrow (for finish lines)
                 8-15: Decorations (rather use decoration objects). See the
                    blpieces.pcx to see these. (3rd row of sprites)
                 16-23: Projectile sprites...
   :x "64";      The usual x- and y-coordinates.
   :y "128";
   :r "1";       Rotation speed.
   :a "0";       Starting angle.
   :z "32";      Zoom scale. 16-64 should work.
   :e;           End of ITEM object.

   - r,a,z are optional. By default, r=a=0 and z=32.
   - I only suggest small values for r. Negatives are made by adding 256 to
     the negative value. Thus, -1 = 255.

*  :d "0";       Decoration sprite. These aren't scaled or rotated, they're
                 drawn over the ships. Decorations work VERY fast.
   :x "160";     Coordinates
   :y "104";
   :t "13";      Decoration sprite (type). This can be any sprite in the game.
                 0-4:   Large player ships (!)
                 5-12:  Bonus items and arrows (2nd row in the pcx)
                 13-20: Tree, signs, house... (3rd row)
                 21-28: Projectile sprites. (missiles and like)
   :e;           End of DECORATION object.

   - Use decorations instead of sprites whenever possible. They use a faster
     drawing routine that doesn't slow the game down even if there are lots
     of these on screen.

*  :w "0";       Waypoint for race. 0th waypoint is the start/finish.
   :x "0";       The minimum x coordinate (left)
   :y "152";     min. y coordinate (up)
   :X "144";     max. x coordinate (right)
   :Y "168";     max. y coordinate (down)
   :e;           End of WAYPOINT object.

   - Note the case-sensitivity.
   - The waypoint is always a box. When the origin of a ship is inside the
     box, the game will see you have passed the point. Thus make the box big
     enough to make even very fast ships work.
   - You MUST have X>x and Y>y.

*  :l "0";       Landing site. A ship can land here without taking damage if
                 it's well aligned... (nose pointing away from the platform) 
   :x "768";     The coordinates of the leftmost end of the landing site.
   :y "366";
   :X "896";     Rightmost end of the landing site.
   :Y "366";
   :a "0";       This is the angle in which the ship can land.
   :t "255";     Type, describing what kind of resupply the site provides you.
                 t is a bitflag that can have following values. (just add to
                 combine effects)
                 +1:  player 1 (can get resupply from here... The other can
                 +2:  player 2  land here but won't get ammo etc)
                 +4:  gives fuel
                 +8:  repairs the ship
                 +16: gives ammo for main weapon
                 +32: gives ammo for secondary weapon
                 For example, 1+2+16=t=19 gives main ammo for both players.
   :e;           End of LANDING object.

   - a is optional (only needed if Y!=y)
   - Note that both ends of the landing site have y coordinates so you can
     make angled landing platforms... But you will need to calculate the
     angle by yourself. (a = arctan((y-Y)/(X-x)) is the formula, just didn't
     put it into the game yet)

4. Well, that's it. It looks a bit harder than it actually is, but still it
   may be unconvenient to place decorative stuff into levels when you have
   to restart the game for testing every time.

   I suggest writing comments like "tree at the top left part" around your
   decorations in the development phase, so you can easily find which thing
   has to be moved after you've tested it and seen it's a few pixels away
   from where it should be... A paint program that can show the coordinates
   is very helpful in getting good approximations for the thing placement.

   Later I may write a graphical program for placing the items, but if you
   have already made one, please contact me. My email address is:
   ikeranen@raita.oulu.fi

** Ahh, finally the end! **
