--------------------------------------------------------------------------
                    Mini-Pac: A Miniature Pac-Man emulator

            Copyright (C) 1999 by Mike Balfour.  All Rights Reserved.
--------------------------------------------------------------------------


------------------------------
Usage and Distribution License
------------------------------

Mini-Pac may be distributed in unmodified form to any medium.

Mini-Pac may not be sold by itself or as a part of a commercial package 
without the express written permission of Mike Balfour (mab22@po.cwru.edu).
This includes shareware.

Modified versions of Mini-Pac may not be publicly redistributed without 
author approval (mab22@po.cwru.edu). This includes distributing via a 
publicly accessible LAN. You may make your own source modifications and 
distribute Mini-Pac in source form, but if you make modifications to 
Mini-Pac then it should be noted in the top of the modified source file(s)
as a comment.

Mike Balfour will not be held responsible for any damage done by the use of
Mini-Pac. It is offered purely "as-is".

If you use portions of Mini-Pac in a freeware application, the following 
text must accompany the freeware application within the application itself 
or in the documentation:

"This application uses source code from Mini-Pac.
 Mini-Pac is copyright (c) 1999 by Mike Balfour (mab22@po.cwru.edu)."

All usage of the MZ80 CPU core is bound by the MZ80 license agreement.

Mini-Pac is intended to be used as a reference material.  The source code
to Mini-Pac provides documentation to the Pac-Man hardware as well as an
example of both emulation coding and DirectX/C++ coding.

Mini-Pac is a non-profit project.

----------------------------
Mini-Pac Contact information
----------------------------

Author      : Mike Balfour (mab22@po.cwru.edu)
Distribution: http://www.primenet.com/~overload/pacx/pacx.htm


----------
What's New
----------

Version 1.0:
First release.
No known bugs, though the sound is of dubious quality.

----------------------
Mini-Pac Documentation
----------------------

Mini-Pac is intended to be a "minimalist" attempt at Pac-Man emulation.  The
goal is to provide a bare minimum of source code that demonstrates how to 
accomplish emulation using DirectX, DirectSound, and C++.  This is not a full
implementation of emulation - DIP switches are hard-coded, there is no
cocktail-mode support, etc.  However, the code that is present should be
sufficient to demonstrate *how* to accomplish a full emulation.

Note:  Mini-Pac is an emulator; consequently, it will not function without
Pac-Man ROMs.  Do not run the Mini-Pac executable unless you own a Pac-Man
arcade board.  The ROMs can be transferred from your arcade board through
the use of an EPROM reader.  My Pac-Man board cost about $15, so I imagine
these are still pretty easy to find.  If you don't own one, please buy one.

Mini-Pac expects the ROMs to be uncompressed and in the same directory as
the Mini-Pac executable.  ZIPPED ROMS WILL NOT WORK.

The ROM names used by Mini-Pac are hard-coded, they can be changed at the
top of "Interpreter.cpp" if so desired.

Here are the ROM names expected by Mini-Pac:
"namcopac.6e" - code ROM (location $0000)
"namcopac.6f" - code ROM (location $1000)
"namcopac.6h" - code ROM (location $2000)
"namcopac.6j" - code ROM (location $3000)
"namcopac.5e" - graphics ROM (tiles)
"namcopac.5f" - graphics ROM (sprites)
"82s123.7f"   - color PROM (palette)
"82s126.4a"   - color PROM (lookup table)
"82s126.1m"   - sound PROM (wavetable)

How to use Mini-Pac:

Keys
----
ESC				Exit
LEFT ARROW		Move Left
RIGHT ARROW		Move Right
UP ARROW		Move Up
DOWN ARROW		Move Down
'1'				Start a one-player game
'2'				Start a two-player game
'3'				Insert a coin
'R'				Reset the emulation
'U'				Unthrottle (only while held down)


-----------------
Building Mini-Pac
-----------------

Hopefully you won't find it very difficult to build Mini-Pac, but I'm
anticipating one or two problems, so I'll try to answer them here.

1)  Make sure you have the DirectX SDK installed.  Without it, you will
have a difficult time building the executable.

2)  I've only compiled this with MS Visual C++.  I don't know what happens
if you try to build it with other compilers.

3)  Make sure that the DirectX library and include directories appear
*before* any MS Visual C++ directories in Tools/Options/Directories.  The
newer Visual C++ installations include out-of-date versions of the DirectX
libraries and include files, so you need to be certain that you're linking
in exactly what you expect.

4)  Be certain to include "ddraw.lib", "dsound.lib", and "dxguid.lib" in
your project.  You'll get some link errors if you don't.

5)  Don't forget to include MZ80.obj as well.

Everything else should compile and build without any problems, I hope.


-------
Credits
-------

Mini-Pac is copyright (c) 1999 by Mike Balfour.  All rights reserved.

Multi-Z80 CPU emulator by Neil Bradley (neil@synthcom.com)
Distribution: ftp://ftp.synthcom.com/pub/emulators/cpu/makez80.zip (latest)

The Pac-Man ROMs I own are copyright (c) 1980 by Namco, Ltd.  Your
Pac-Man ROMs might have different copyright information.

---------------
Acknowledgments
---------------

Thanks to Neil Bradley for the usage of the MZ80 emulator.  Also, thanks
for criticizing my code and providing lots of helpful tips!

Thanks to Howie Cohen for testing and design input!

A special thanks to the MAME team, especially Nicola Salmoria.  Working 
with the MAME team is quite a bit of fun, and I have learned volumes 
about programming, game design, emulation, and project management from
them!

