							   Virtual VCS
								v0.60

	copyright 1996 by Daniel Boris (dan.boris@coat.com)
   ported from X2600 by Alex Hornbey copyright 1996 GNU Public Licence.

I would like to thank Alex Hornby (W.A.Hornby@dcs.warwick.ac.uk for his
assistance and for the original source code. I could have never gotten this
far without the work he did.

The current version of Virtual VCS along with the source code can be found
at:
        http://www.geocities.com/SiliconValley/9461

Usage:

vcs file -[options]

        file - vcs file to load. This must be a raw binary file. The emulator
               will also work with Activision Action-Pack images. For
               copyright reasons I have not included any images with this
               file, but they can be found in various places on the internet.

        -r=# - Sets frame skip rate. The higher the number, the faster the
               emulation, but more frames are skipped. -r=3 or -r=4 works good
               for most games.

		-debug  - Start emulator in debug mode.

        -bank=# - Sets the bank switch scheme:
                        F6 = Atari 16K
                        F8 = Atari 8K
                        E0 = Parker Brothers (8K)
                        FA = CBS Ram Plus (12K)
                                (Used in Mountain King, Tunnel Runner) 
                        F6SC = Atari F6 + Super Chip RAM
				(Used in Dig Dug, Crystal Castles, Mystic Quest, etc.)

		   The bank switch scheme used for each cartridge can be found in the
		   file 2600bank.txt included with this program.

        -left=(stick,paddle,keypad) - Sets the left controller
                stick = joystick emulated from keyboard
                paddle = paddle emulated from mouse
                keypad = keypad emulated from keyboard

        -right=(stick,paddle,keypad) - Sets the right controller
                stick = joystick emulated from keyboard
                paddle = paddle emulated from mouse
                keypad = keypad emulated from keyboard
         (Note: At this point you cannot mix controllers)

        -auto      - Auto configure emulator (See below).

        -sens=(1-9)    - Set sensitivity of mouse for paddle emulation 

		-swap		-Swap keys used for left and right joysticks.
					(Someone informed me that some laptops don't have
					 right ALT keys. This will fix that until I can
					 implement fully configurable keys).

Controls:
		Arrow keys = Joystick 1
		Right Alt  = Fire 1
		W,Z,A,S    = Joystick 2
		Left Alt   = Fire 2

		ESC        = Leave the emulator
		F2         = Game select
		F1         = Reset game
		F5         = Enter debugger
		F7		   = Set BW/Color switch to B/W
		F8		   = Set BW/Color switch to Color
		F9		   = Set player 0 difficulty to amateur
		F10		   = Set player 0 difficulty to pro
		F11		   = Set player 1 difficulty to amateur
		F12		   = Set player 1 difficulty to pro

		Left Keypad:            Right Keypad:

		1   2   3               4   5   6

		Q   W   E               R   T   Y

		A   S   D               F   G   H

		Z   X   C               V   B   N


Auto Configure:
	Virtual VCS now has the ability to autoconfigure it self from a
	configuration file. When you run the program with the -A option
	the emulator will load the file you specify, and calculate a
	checksum for the cartridge. It will then lookup the checksum in a
	file called vcscfg.dat. If it find the checksum it will display
	the name of the cartridge, it's manufacturer, and an indication
	of how well the emulator runs this cartridge. It will also
	automatically configure the bank select mode, controller setup, and
	frame rate for that cartridge.  If the emulator does not find and
	entry in that cartridge in the configuration file it will use
	default configurations, or the configurations you specified on
	the command line. You can add cartridge to the configuration file
	by editing vcscfg.dat with a text editor. The field in vcscfg.dat
	are as follows:

	CHECKSUM= The checksum of the cartridge. This is displayed when ever
	   you load a cartridge image into the emulator.

	NAME= The name of the cartridge.

	MAKER= The manufacturer of the cartridge.

	FRAMERATE= The frame rate set with the -R option.

	TYPE= The size and bank switch mode of the cartridge:
		2K = standard 2K cart.
		4K = standard 4K cart.
		F6 = Atari 16K bank switching.
		F8 = Atari 8K bank switching.
		E0 = Parker Brothers 8K bank switching.
                FA = CBS Ram Plus 12K
                F6SC = Atari 16K bank switching with Superchip RAM.

        RIGHT= The type of the left game controller to emulate:
		STICK = Joystick.
		KEYPAD = Keypad controller.
		PADDLE = Paddler controller.
                
		LEFT= The type of the left game controller to emulate:
		STICK = Joystick.
		KEYPAD = Keypad controller.
		PADDLE = Paddler controller.

	EMULATION= How good this cartridge is emulated.

Debugger:
		D   =   Display VCS screen. Press any key to return to debugger.
		S   =   Step to next instruction.
		Q   =   Quit emulator.
		M   =   Display a location in memory. Address must be in hex.
		G   =   Run to a specific address. Address must be in hex.
		up arrow = Scroll up disassembly.
		down arrow = Scroll down disassembly.

Limitations:
		- Does not support E7 or FE bank switching
		- No sound emulation
		- Does not support 2 different controllers at the same time

Version History:

v0.52: First Public Release
V0.54: 6/18/96
		- Filename can now be anywhere on command line
		- Fixed bugs in debugger disassembler
		- Reading from timer set registers return $FF (Space Attack)
		- Cleaned up address decoding
		- Various cleanups of the source code
v0.56 6/25/96
		- Fixed major bug in address decoding that occured in V0.54
		- Parker Brother bank switch support added.
		- Atari Super Chip ram emulation added.
		- RIOT timer now decrements instead of incrementing.
		- Fixed problem when sprites run off the edge of the screen Video
			Pinball won't crash now.
		- Screen colors are now correct in when using debugger.
		- Various bugs in debugger fixed.
		- Opcode fetches now go through faster non-decoded read.
v0.60 7//96
		- Added support for VDELAY registers (Fixes Activision logo and score
				line in Pitfall among others)
		- Added support for SCORE bit in CTRLPF (ColorDemo)
		- Fixed problem with BRK opcode (Kangaroo)
                - Removed extra command line option for SuperChip and made it part of -bank
		- Added keypad controller support.
		- Added paddle support through mouse.
		- Added BW/Color switch support.
		- Added Dificulty switch support.
		- Initilize stack pointer to $FF (Midnight Magic)
		- Fixed a problem with timer emulation (Checkers)
				- Do bounds checking and wrap around on all sprites.
		- Added autoconfigure capability
                - Location 0x0F (which is undecoded in the TIA) should return
                  0x0F (Haunted House).
                - Changed handling of command line and some option names.
                - Multiple copies of missiles are now displayed
                - Added CBS Ram Plus emulation (Omega Race, Mountain King, Tunnerl Runner)

