======================
EmuSchool NES Emulator
Copyright 2000 by Chris Teague
http://members.home.net/teaguecl/
======================

The EmuSchool NES emulator is a free open source emulator of the Nintendo
Entertainment System and is protected under the GNU General Public License.
For more information on the GNU GPL please read GPL.TXT and visit their
homepage at http://www.gnu.org

I started the EmuSchool project in late September 1999.  My two major
goals at that time were to learn more about emulation, and to test the
waters of open source software development.  I had originally planned on
writing the emulator for the Linux platform (and I still plan to port
someday) but was convinced to use Windows and DirectX as a target.  The
primary focus of the emulator is accuracy, and once that is accomplished
speed will be considered.  For right now things are pretty inefficient
and the speed is lousy, but the code is readable.  Mapper 0 games are 
supported right now, but no other mappers are implemented.  For a compatibility
list, check out the homepage.

Using the emulator is simple. Only the keyboard is supported for input
right now, but keyboard support is done with DirectInput so adding
joysticks is not hard (it's just not a priority right now).  The keys
are hard coded into the program, but that will also change.  For now they
are as follows:

Directional Pad - Arrow Keys
Start - Left Alt
Select - Left Ctrl
A - Right Alt 
B - Right Ctrl

Pressing F1 will save SCREENSHOT.BMP in the directory where the ROM is located.
To exit the emulator you can hit Escape, but that doesn't exit cleanly.  Best
method is to hit Alt-Enter to go to windowed mode, then close the window.  Also, pressing either of the ALT keys will cause windows to try to open up the accelerator window, we'll fix that eventually.

Version History
---------------
0.1.6  2/5/2000

This version has alot of changes to the PPU design, and to the DirectX 	implementation.  The background is rendered onto a directX buffer, and the sprites 	are drawn on top of it.  If the background is not updated from one frame to the next, then the background is not re-calculated.  This provides a significant speed increase (not to say that it's fast yet) over the previous implementation.  Also, the background buffer is 512x480 pixels, which is two screens wide and two screens tall.  This should enable implementing scrolling more easily than the previous method.  I also figured out why the mouse pointer got corrupt when running Tennis.  Unused sprites are sometimes drawn in scanlines above 240, meaning off the screen.  Since our display buffer was only 240 lines tall, we were overwriting part of the video memory, which happened to be the mouse cursor information.  This has been fixed, and sprites located off screen are now ignored by the screen updating routines.