MicroMan
                                  ========

                          A Playable Demo Using WAP

                 Programmed and Developed by: Brian L. Goble

                     Copyright (c) 1993 Brian L. Goble



WHAT IS MICROMAN?
=================

MicroMan is an arcade-action style game for Windows 3.1 developed using the
new Windows Animation Package (WAP), also developed by Brian Goble.

The object of MicroMan is to move, jump, duck, climb and shoot your way past
the enemies while exploring new areas and collecting special powerups!

This release of MicroMan serves the purpose of demonstrating the
capabiltities and potential of WAP. If you would like to see a shareware
version of MicroMan, with expanded game play, more puzzles, more graphics
more sounds and more levels, please let the author know by contacting him at
the address given at the end of this document.

Please feel free to contact the author if you have any problems, comments,
ideas, suggestions, offers or if you find any bugs.  Thank you.

To run MicroMan, simply execute the MICROMAN.EXE file using Program Manager
or File Manager from Windows.  The title screen should appear and the game
will begin cycling through it's attract mode.

To play MicroMan, press the space-bar (or press Ctrl+N) to start a new game.  
Press F1 to view the quick reference help screen.  To explore new rooms, 
simply move to the edge of the screen (and keep going) to enter the 
neighboring room.  MicroMan does have an end, so keep playing until you get 
there!

The MicroMan archive should contain the following files:

   * MICROMAN.EXE
   * MICROMAN.IMG
   * MICROMAN.RMP
   * MICROMAN.WAV
   * MICROMAN.PG1
   * MICROMAN.PG2
   * MICROMAN.TXT
   * README.TXT

System requirements and recommendations for running MicroMan are:

   * Microsoft Windows 3.1  (required)
   * 2 megabytes of memory  (required)
   * 720k free disk space   (required)
   * 386DX processor        (recommended)
   * 8-bit color graphics   (recommended)
   * Sound card             (optional)

Quick Info:

   * Press F1 to view the "Quick Reference" help for MicroMan.
   * If your system is too slow, select the "Skip Frames" option under the 
     "Animation" menu.
   * Sound card users, be sure to select the "Extended Sounds" option under
     the "Sound" menu.
   * All settings are saved in the MICROMAN.INI file.
   * The keypad works best for game play--make sure Num-Lock is off.  Use
     your left hand to jump with the space-bar and place your right hand over
     the keypad, with your thumb on the Ins key for firing.
   * Programmers, be sure to check out the MICROMAN.TXT file for more 
     information on how MicroMan was developed.
   * If you use hDC's Micro App Manager, also called microman, you must
     rename microman.exe (from this archive) to mm.exe

This version of MicroMan is FreeWare.  You are free to distribute it as long
as all files are included in their unmodified forms.


WHAT IS WAP?
============

WAP stands for Windows Animation Package.  The package implements real 
software sprites and flicker-free sprite animation under Microsoft Windows 
3.1.  WAP was developed for use with 8-bit color but is able to execute on
systems using less than 256 colors as well.

The heart of WAP is the WAP.OBJ file which is linked with the Windows 
application that wants to use WAP's services.  WAP also consists of 3 utility 
applications for capturing sprites, editing rooms, and manipulating palettes.

WAP was developed by Brian L. Goble based on his DOS based GFX sprite
animation package.


WHAT LANGUAGE WAS USED TO CREATE WAP?
=====================================

WAP was compiled using Microsoft C/C++ 7.0.  No C++ was used so C and C++
programmers should both be able to use WAP.

Future versions of WAP will likely have some routines "hand optimized" in 
assembly language for further speed improvements.


WHAT DOES WAP SUPPORT?
======================

   * Sprites
   * Images
   * Patterns
   * Pages
   * Rooms
   * RoomSprites


WHAT SPRITE FEATURES DOES WAP SUPPORT?
======================================

   * Drawing
   * Moving
   * Erasing
   * Clipping
   * Flashing
   * Mirroring
   * Inverting
   * Mirverting
   * Removing
   * Virtual Frames
   * Collision Detection
   * Sprite Types
   * Sprite States
   * Sprite Control Programs


IS WAP EASY TO USE?
===================

WAP is very easy to use.  All the low level functions required for flicker- 
free sprite animation are carried out by WAP.  The programmer merely calls the 
high level functions when necessary.

A typical main animation loop might consist of the following WAP routines:

// --------------------------- //
// Example Main Animation Loop //
// --------------------------- //

  case WM_TIMER:

    WAP_ProcessSprites(lpWAP);	       // execute sprite control programs
    WAP_DrawSprites(lpWAP);            // draw all active sprites
    WAP_SwapPages(lpWAP);              // display new sprites, erase old ones
    WAP_CheckSpriteCollisions(lpWAP);  // check for sprite collisions

    return(0L);


The main programming effort required by the programmer is the coding of the 
Sprite Control Programs (SCP).  A SCP is a routine that controls a specific 
sprite.

For example, a simple SCP to animate a sprite walking across the screen to
the right might look something like:

// ------------------------------------------------------- //
// Example Sprite Control Program for Walking to the Right //
// ------------------------------------------------------- //

int       FAR    WalkRight(lpS)

LPSPRITE  lpS;

{

  if (lpS->MoveState == MS_UNINIT) {       // if first time, initialize sprite

    lpS->MoveState = MS_WALKING;           // set move state to walking
    lpS->x = 10;                           // set initial x coordinate
    lpS->y = 50;                           // set initial y coordinate
    lpS->image = 5;                        // use graphic image #5
    lpS->frame = 1;                        // use frame #1 of image #5
  }

  else if (lpS->MoveState == MS_WALKING) { // process next frame of walking

    lpS->x++;                              // increment x coordinate

    if (lpS->x > 600) {                    // is sprite at right border?
      lpS->SpriteFlags |= SF_REMOVE;       // if done walking, remove sprite
    }

    lpS->frame++;                          // use next animation frame
    if (lpS->frame > 24) lpS->frame = 1;   // if end of frames, wrap to start
  }

  return(1);                               // finished - return to WAP
}


So, by using SCP's, the programmer still has full control over all sprite
actions and logic but doesn't have to worry about all the tasks necessary
to animate them--WAP does these tasks!


WHAT LIES AHEAD FOR WAP'S FUTURE?
=================================

This release of MicroMan is intended to inform programmers of WAP's existence 
and, hopefully, obtain some feedback from interested programmers.  If there 
is sufficient interest in having WAP made available to programmers, then the 
author will try to make it happen.


HOW CAN I CONTACT THE AUTHOR?
=============================

To contact the author of both WAP and MicroMan, use:

    Brian L. Goble
    2218 Franklin Ave E.
    Seattle, WA 98102
    (206) 322-7932
    goble@u.washington.edu