CAGE readme 5/25/98 (version 1.06)
---------------------------------
The easiest way to use it currently it to put the EXE in the same directory as
MAME so it will have access to the ROM images.  CAGE currently only supports
uncompressed ROM images.  For example: to play ROBOTRON, there must be a
ROBOTRON directory where CAGE is running and it must have the uncompressed files
ROBOTRON.SB1 through ROBOTRON.SBC + ROBOTRON.SND in that directory.

CAGE currently runs the following games well:

Robotron, Joust, Defender, Splat, Colony 7, Asteroids, Asteroids Deluxe, Qix,
Super Pac-man, Pac-Man, Ms. Pac-Man, Space Invaders, Space Invaders Part II,
Galaxy Wars, Lunar Rescue, Stargate, Jr. Pac-Man

The following games run poorly or not at all:
ZooKeeper, Sinistar, Bubbles

Sound works reasonably well on the Williams games, but is not ready on the
vector games yet.

During gameplay, the following keys are monitored:

ESC - quits running the current game.
PRNTSCRN - saves a snapshot of the game as CAPTURE.BMP in the EXE's directory.
PAUSE - pauses the game and displays the 'pause' dialog box.
F1 - Load a game state (up to 5)
F2 - Save a game state

Check the game settings for things like save-state and screen-stretch.  The
save game feature does not work reliably in some games and will cause it to
hang.  In this case, uncheck the option for that game and it will return to
working normally.

Current Game Status:
--------------------
Asteroids
---------
Functional, no sound, no where near optimized yet, vectors slightly off

Asteroids Deluxe
----------------
Functional, no sound, no where near optimized yet, vectors slightly off

Bubbles
-------
100% functional, but mysteriously resets after a few minutes of play

Colony7
-------
100% functional, sound is very faint

Defender
--------
100% functional

Galaxy Wars
-----------
100% functional. No sound yet.

Jr. Pac-Man
-----------
100% functional.

Joust
-----
100% functional, sound is 95% functional (occasional clicks).

Lunar Rescue
------------
100% functional, sound is not implemented yet.  Needs samples or alt method.

Robotron
--------
100% functional, sound is 95% functional (occasional clicks).

Sinistar
--------
95% functional, but resets after a minute of play.

Space Invaders
--------------
100% functional, sound is not implemented yet.  Needs samples or alt method.

Space Invaders Part II
----------------------
100% functional, sound is not implemented yet.  Needs samples or alt method.

Splat
-----
100% functional, but dual player controls are not set up yet

Stargate
--------
100% functional

Qix
---
100% functional, sound mostly working, but does some strange things.

Qix 2
-----
100% functional, sound mostly working, but does some strange things.

Super Pac-Man
-------------
100% functional; plays well, sound is nearly perfect

Zoo Keeper
----------
90% playable, seems to work, but has some problems, sound mostly working.

Pac-Man
-------
100% playable, sound is good. Extremely fast

Ms. Pac-Man
-----------
100% playable, sound is good. Extremely fast

Mappy
-----
100% playable.

DigDug2
-------
100% playable, sound is a little scratchy.

Crush Roller
------------
Almost playable; controls not working properly.

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

All code is copyright (c) 1998 BitBank Software, Inc. and is currently freeware;
if you purchased this program then you were ripped-off and the person selling it
is a thief.  The ROM images are copyrighted and must not be distributed with
this software.  Failure to follow this rule could jeopardize the entire
emulator community.  ROM images are legally available to those who own the real
arcade machine or who have purchased the rights by buying products such as the
Williams' Arcade Classics collection.  ROMs can be found on various sites on
the internet, but will not be available on my web site.

Encouragement is definitely welcome.  Such an endeavour requires enormous
amounts of time and energy.  I am working on this alone and all code is newly
written by me in C and assembler (nothing borrowed from others except hardware
information). I currently have the 6502,6808,6809 and Z80 CPU cores working
properly and will soon have 68000 support.  My emulator runs some games
considerably faster than some competing emulators; currently the 6502, 6800,
6809, and Z80 cores are written in pentium-optimized assembler. I have no plans
to adapt this program for MSDOS or other platforms, but the code is portable
enough to allow easy translation.

I need to give credit to the MAME team for providing hardware information by
releasing their source code.  Since I don't have access to many schematic
diagrams, this has provided a great source of information.  I also would like
to thank Chris Pile, Sean Riddle and Edward Massey for answering my endless
questions with patience and useful answers.

My original goal was to write an emulator which could run Robotron with full
sound in a scaled-up window on Win95/NT.  After acheiving that goal, I started
on other games that I liked over the years.

Larry Bank

Please send all comments and bug reports to: bitbank@pobox.com
Home Page: http://www.geocities.com/SiliconValley/Campus/3356/
-------------------------------------------------------------------------------

Changes for version 1.02
------------------------
1) Fixed screen dump to work in properly with all games and in hicolor/true
   -color mode and stretched mode.
2) Fixed hiscore/state save for Defender, Robotron.
3) Fixed mysterious GPF when viewing some game's options.
4) Added ROM information dialog to show directory name and ROM file names.
5) Added support for Space Invaders, Space Invaders Part II, Galaxy Wars, Lunar
   Rescue, Qix.
6) Improved keyboard definition dialog.
7) Fixed some memory leaks.
8) Improved speed of 6808 and 6809 emulation dramatically.

Changes for version 1.03
------------------------
1) Added support for Pac-Man, Ms. Pac-Man.
2) Added preliminary support for Crush-Roller.
3) Added Qix2 & Zoo Keeper.
4) Fixed Galaxy Wars hang problem.
5) Added Super Pac-Man, Pac-Man, Ms. Pac-Man.
6) Rewrote 6502 CPU core in assembler.

Changes for version 1.04
------------------------
1) Added preliminary support for Pac & Pal.
2) Rewrote 6808 and 6809 CPU's in assembler for maximum speed.
3) Added support for Windowed and Full-Screen DirectX.
4) Added very preliminary support for Galaga.
5) Cleaned up PAUSE functionality.
6) Added very preliminary joystick support (only works in PacMan & Qix).

Changes for version 1.05
------------------------
1) Fixed PAUSE logic to keep display painted properly.
2) Enhanced windows mode to run at full speed even on a 65536 color display
   when stretched! (eliminates the need for fullscreen mode).
3) Added user-settable option to pause with loss of focus.
4) Added drop-down list to allow choosing of the fullscreen resolution
   (previously it forced display to 640x480).
5) Fixed timing screw-up after pausing the game.  Previously, the frames would
   run too quickly until it 'caught up' to the current time.
6) Added support for Mappy & DigDug2 (100% operational).  Sorry, but these
   require at least a Pentium 100 to run well.  I need to optimize my character
   graphics/sprite code.
7) Cleaned up sound support a bit and added more error checking and the
   option to disable sound.
8) Fixed screen capture to work when directx enabled.

Changes for version 1.06
------------------------
1) Rewrote all sprite and character draw routines in assembler.  This does not
   add much to overall gameplay speed, but it certainly doesn't hurt.  See my
   download page for the source code.
2) Added support for Jr. PacMan (credit goes to the MAME team for the ROM
   decryption info).
3) Improved sound on Super PacMan, Mappy and DigDug 2.
4) Fixed bonus point levels on Mappy dipswitch options.
5) Rewrote the Z80 emulator in assembler.  Fast is not a strong enough word to
   describe its incredible speed.
6) Optimized character and sprite routines in Pac-Man and Ms. Pac-Man.  These
   games now run at incredible speed and should work on a slow 486 machine.
   Try turning off throttling to see how zippy it runs.  On my P233 it goes at
   hundreds of frames per second.

Changes for version 1.07
------------------------
1) Added display of frame rate to title bar.
2) Fixed ROM reading to open files as READ_ONLY.  Some have reported problems
   reading ROM files because CAGE was trying to access them as READ/WRITE.
3) Squeezed another 10% of speed out of Ms. Pac-Man & Pac-Man.
4) Crush Roller now works; the problem was that it uses undocumented Z80
   instructions which I had not previously implemented.
5) Added support for Galaxians; sound not implemented yet.
6) Tweaked Z80 ASM code for even more speed.  Now PacMan runs at 650-700 frames
   per second on my P233.  Space invaders goes at 1100-1500 fps.
7) Added support for reading from zipped ROMS; thanks to Brian Levine for
   providing the source code.
8) Rewrote inner loop timing logic to make use of the high resolution timer.
   This means that 60fps really is 60 instead of 62 or 58.
9) Fixed some of the sounds on Joust - the 6808 was executing code in zero page
   RAM which was not accounted for by my 6800 emulator.
10) Fixed hiscore save/restore on PacMan, Crush Roller, Ms. PacMan
11) Rewrote the load/save game functions to work properly.  Now you can load
    or save a game (up to 5) at any time by pressing F1 to load or F2 to save.
12) Added joystick support to all games.
13) Added option to use my software stretchblt routine when running windowed
    at 2X scale and without DirectX.  On some machines, my code is faster than
    the Windows GDI.
