				   O2EM V0.60
			    an Odyssey 2 emulator

	     copyright 1997 by Daniel Boris (dan.boris@coat.com)

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

Acknowledgments:

I would like to thank the following people for their help and encouragement:


	Keita Iida (Keita/Pooka/Fygar)
		for his enthusiasm, for the O2EM beta testing, and
		general encouragement.

	Marco Kerstens (MarcoK)
		for providing Videopac schematics, and general support.

	Bo Krogsgaard (Therion23)
		for putting the idea of doing the emulator into my head to 
		start with.

        Dave (Conjurer), Carl J. Gade (Albertini)
		for help in beta testing.

	Erica (unico)
		for putting up with me while I was working on this ;)

        everyone on EFNET IRC channels #emulate and #rgvc

        and all the people have given such positive feedback to the first
        version.

---------------------------------------------------------------------------
Copyright:
O2EM is copyright 1997 by Daniel Boris.

Odyssey 2 and Videopac are trademarks of Philips Electronics.

O2EM is free as long as it is not used in a commercial matter and not
altered in any way. The contents of this archive should not be
added to or changed in any way. ROM images should never be distributed
with this emulator.

I maintain the right to forbid the use of the emulator  at
any time. I am not responsible for any damage caused by the use
of this program. This program is distributed "as-is". I make no
guarantees as to it's accuracy, performance, or compatibility with
the users hardware. 

The emulator is not to be distributed for profit and may not be  
included on CD's without my express permission.
---------------------------------------------------------------------------    

Introduction
	
        O2EM is and Odyssey 2 video game console emulator. The emulator
went through a number of changes between version 0.50 and 0.60. I have
moved from Borland C (which served me well during initial development)
to DJGPP. I have re-written the routines that render the screen so that
games like Cosmic Conflict run better and games like Dynasty are now playable.
I have adjusted the colors and made a number of bug fixes so that more
games now run accurately. I have also added support a joystick, and a
speed limiter which should allow games to run at the correct speed.

This emulator was built up completely from scratch with almost no technical
information to work from. The only materials I had to work with when
writing this emulator where the Intel 8048 microcontroller data book,
an O^2 console, and a couple of cartridges. Everything else was figured
out by tracing circuits, running code on the real hardware, and generally
do a lot of high tech detective work.

The current version of O2EM can be found at:

	http://www.geocities.com/SiliconValley/9461

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

Setup:

	Before you can run O2EM you need a copy of the O2 BIOS ROM. For
copyright reasons I am not including this ROM image in this archive. This
ROM image is stored inside the 8048 processor and can be read out with the
appropriate equipment. The image should be 1024 bytes long , named 
O2ROM.BIN and should be in the same directory as the emulator.

        You will also need cartridge images, but again for copyright reasons
I cannot provide these. PLEASE DO NOT E-mail me asking for ROM images! All
messages asking for ROM images will be promptly deleted.

The following games run almost perfectly:
KC Munchkin, Thunderball Pinball, KC's Krazy Chase, Pick Axe Pete,
Cosmic Conflict, Dynasty, Quest for the Kings among others.

------------------------------------------------------------------------------------
Usage:

To start O2EM simply type O2EM followed by the name of the rom image you want
to run. For example to run a rom called KCMUNCH.BIN, in DOS type:

O2EM KCMUNCH.BIN


Command line options:

O2EM file -[options]

	file - O2 file to load. The file should be either 2048, 4096, or 8192 
	bytes long.

	-debug  - Start emulator in debug mode.

	-s1=#   - Set stick 1 mode
	-s2=#   - Set stick 2 mode
	      Modes: 0 = Disable
		     1 = Right keyboard controls
		     2 = Left keyboard controls
		     3 = Joystick
        -nolimit - Turns off speed limiter. The speed limiter is on by default
        and should keep the emulator running at proper speed, but if the games
        run too slow try adding this option to turn the limiter off.

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

Controls:
    
    Arrow keys = Joystick 1
    W,D,X,A    = Joystick 2
    Right Shift = Fire Stick 1
    Left Shift  = Fire Stick 2

    ESC = Leave the emulator
    F4  = Enter debugger
    F5  = Reset emulator (same as pressing the reset on the O2 keyboard)
----------------------------------------------------------------------------

Debugger:

The emulator comes with a built in debugger that I used for development.
The debugger is not very polished and fairly incomplete but it can be
useful for single stepping through programs and watching their behavior.
I will clean up and improve the debugger in later versions.

H = display help

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

Limitations
         - no sound: I have not had a chance to figure out how the O2's
         sound works, so look for this feature in future versions.

         - Mid screen changes: In this version of O2EM I added support for
         mid-screen interrupts which I hoped would fix a lot of games.
         Unfortunately some games do mid-screen changes without using
         interrupts so I will have to re-write the screen engine again
         to make these work.

         -Killer Bees: This is the only game so far that does not run at
         all on the emulator. I have a feeling it is doing some strange
         things that I do not know about.

Version History:

v0.50: 7/06/97 First Public Release

V0.60: 10/8/97 
        - Ported from Borland C to DJGPP
	- Fixed DA A instruction
	- Add new screen draw engine that allows mid screen changes
        - Fixed handling of A11 during interrupts
        - Fixed pushing of PSW onto stack during interrupts
        - Made various timing fixes
	- Adjust colors
        - Add speed limiter
        - Added joystick support
        - Added configurable controls
        - Shifted screen to the right so it is centered
        - Fixed a couple character set images

