                                   FCE Ultra
                                     0.80

                         http://fceultra.sourceforge.net/


What is new:

	*  Fixed a bug affecting loading of UNIF files from zip files.
	*  Replaced Marat's 6502 emulator with my own.
	*  Removed Game Genie ROM image from the source code.  It is now
	   loaded from the FCE Ultra base directory from the file "gg.rom".
	*  Rewrote many pieces of code.
	*  Fixed a major iNES mapper 64 emulation bug introduced in 0.76.
	*  Added support for iNES mapper 152.  This should be used
	   by any games previously assigned to mapper 70 that depend
	   on one-screen mirroring(such as "Arkanoid 2" and "Saint Seiya
	   Ougon Densetsu").
	*  Added settings for the first and last scanline to be rendered
	   while in PAL emulation mode.
	*  Fixed a bug in the color deemphasis emulation code and made
	   better use of the limited palette entry space available.
	*  Undid some FDS sound emulation code changes introduced in 0.76
	   that totally messed up FDS sound emulation.
	*  Minor bug fix to the Power Pad emulation code so that the official
	   test program works correctly now.
	*  Added support for the Famicom Expansion port and
	   removed the option to select between the four-score and the Famicom
	   4-player adapter(this option is no longer required).
	*  Added an option to disable four-score emulation.
	*  Added emulation of the Arkanoid paddle controller(both NES and
	   Famicom style) via the mouse.
	*  Improved Zapper emulation, though it still needs improvement.
	*  Added emulation of the Family BASIC keyboard.	
	*  Added (partial) emulation of the Hyper Shot gun.
	*  Added code to override the user's input port/expansion port
	   settings when certain games are loaded.
	*  Added code to fix a few problems that I commonly see with
	   a few games' iNES headers and to inform the user of the problems.
	*  Increased the speed of the 8bpp to hi/true-color conversion code.
	*  DirectDraw Blt()'s to the primary surface are now attempted 
	   to be done asynchronously.


Contents:

  1.  Basic information
        1.0 What FCE Ultra is.
        1.1 System requirements.
  2.  How to use
        2.0 Starting FCE Ultra
        2.1 Using FCE Ultra
  3.  Notes
        3.0 Platform Specific Notes
        3.1 Network Play Notes
        3.2 VS Unisystem Notes
        3.3 Famicom Disk System Notes
        3.4 Light Gun Notes
        3.5 Palette Notes
        3.6 Compressed File Notes
	3.7 Game Genie Notes
  4.  Extra
        4.0 Contacting the author
        4.1 Credits

/******************************************************************************/
/*  1.0)	What FCE Ultra is:                                            */
/******************************************************************************/

        FCE Ultra is an NTSC and PAL Famicom/NES emulator for various 
        platforms. It is based upon Bero's original FCE source code.  Current
	features include good PPU, CPU, pAPU, expansion chip, and joystick
	emulation.  Also a feature unique to this emulator(at the current
        time) is authentic Game Genie emulation.  Save states and snapshot
	features also have been implemented.  The VS Unisystem is emulated
        as well.  FCE Ultra supports iNES format ROM images, UNIF format ROM
	images, headerless and FWNES style FDS disk images, and NSF files.

        FCE Ultra currently supports the following iNES mappers(many partially):

Number:         Description:                    Game Examples:
--------------------------------------------------------------------------------
  0             No Mapper                       Donkey Kong, Mario Bros
  1             Nintendo MMC1                   MegaMan 2, Final Fantasy
  2             Simple 16KB PRG Switch          MegaMan 1, Archon, 1944
  3             Simple 8KB CHR Switch           Spy Hunter, Gradius
  4             Nintendo MMC3                   Recca, TMNT 2, Final Fantasy 3
  5             Nintendo MMC5                   Castlevania 3, Just Breed, Uchuu Keibitai SDF
  6             FFE F4 Series(hacked)           Saint Seiya, Ganbare Goemon
  7             AOROM                           Battle Toads, Lion King
  8             FFE F3 Series(hacked)           Doraemon Kaitakuhen
  9             Nintendo MMC2                   Punchout!
 10             Nintendo MMC4                   Fire Emblem, Fire Emblem Gaiden
 11             Color Dreams                    Crystal Mines, Bible Adventures
 13             CPROM                           Videomation
 15             Multi-cart(pirate)              100-in-1: Contra Function 16
 16             Bandai                          Dragon Ball Z, Gundam Knight
 17             FFE F8 Series(hacked)           Parodius, Last Armageddon
 18             Jaleco SS806                    Pizza Pop, Plazma Ball
 19             Namco 106                       Splatter House, Mappy Kids                
 21             Konami VRC4 2A                  WaiWai World 2, Ganbare Goemon Gaiden 2
 22             Konami VRC4 1B                  Twinbee 3
 23             Konami VRC2B                    WaiWai World, Getsufuu Maden
 24             Konami VRC6                     Akumajo Densetsu(Dracula 3)
 25             Konami VRC4                     Gradius 2, Bio Miracle: Boku tte Upa
 26             Konami VRC6 A0-A1 Inverse       Esper Dream 2, Madara
 32             Irem G-101                      Image Fight 2, Perman
 33             Taito TC0190/TC0350             Don Doko Don 1&2
 34             NINA-001 and BNROM		Impossible Mission 2, Deadly Towers, Bug Honey
 40             (pirate)                        Super Mario Bros. 2
 41             Caltron 6-in-1                  Caltron 6-in-1
 42		(pirate)			"Mario Baby"
 43		Multi-cart(pirate)		Golden Game 150 in 1
 44		Multi-cart(pirate)		Super HiK 7 in 1	
 45		Multi-cart(pirate)		Super 1000000 in 1
 46		Game Station			Rumble Station
 47		NES-QJ				Nintendo World Cup/Super Spike V.B.
 48		Taito TC190V			Flintstones
 49             Multi-cart(pirate)              Super HiK 4 in 1
 64             Tengen RAMBO-1                  Shinobi, Klax
 65             Irem H-3001                     Daiku no Gensan 2
 66             GNROM                           SMB + Duck Hunt
 67             Sunsoft Mapper "3"              Fantasy Zone 2
 68             Sunsoft Mapper "4"              After Burner 2, Nantetta Baseball 
 69             Sunsoft FME-7                   Batman: ROTJ, Gimmick!
 70		??				Kamen Rider Club
 71             Camerica                        Fire Hawk, Linus Spacehead
 72		Jaleco ??			Pinball Quest
 73             Konami VRC3                     Salamander
 75             Jaleco SS8805/Konami VRC1       Tetsuwan Atom, King Kong 2
 76             Namco 109                       Megami Tenshi 1
 77             Irem ??                         Napoleon Senki
 78             Irem 74HC161/32                 Holy Diver
 79             NINA-06				F15 City War, Krazy Kreatures
 80             Taito X-005                     Minelvation Saga
 82		Taito ??			Kyuukyoku Harikiri Stadium - Heisei Gannen Ban			
 83		Multi-cart(pirate)		Dragon Ball Party
 85             Konami VRC7                     Lagrange Point
 86		Jaleco ??			More Pro Baseball
 87		??				Argus
 89		Sunsoft ??			Mito Koumon
 90		Pirate                          Super Mario World, Mortal Kombat
 92             Jaleco ??                       MOERO Pro Soccer, MOERO Pro Yakyuu '88
 93		??				Fantasy Zone
 94		??				Senjou no Ookami
 95		Namco ??			Dragon Buster
 97		??				Kaiketsu Yanchamaru
 99             VS System 8KB CHR Switch        VS SMB, VS Excite Bike
105             NES-EVENT                       Nintendo World Championships
112             Asder				Sango Fighter, Hwang Di
113		MB-91				Deathbots
118		MMC3-TLSROM/TKSROM Board	Ys 3, Goal! 2, NES Play Action Football
119             MMC3-TQROM Board                High Speed, Pin*Bot
140		Jaleco ??			Bio Senshi Dan
151             Konami VS System Expansion      VS The Goonies, VS Gradius
152		??				Arkanoid 2, Saint Seiya Ougon Densetsu
180             ??                              Crazy Climber
182		??				Super Donkey Kong
184		??				Wing of Madoola, The
189             Micro Genius TXC ??             Thunder Warrior
225             Multi-cart(pirate)              58-in-1/110-in-1/52 Games
226             Multi-cart(pirate)              76-in-1
227		Multi-cart(pirate)		1200-in-1
228             Action 52                       Action 52, Cheetahmen 2
229             Multi-cart(pirate)              31-in-1
232		BIC-48				Quattro Arcade, Quattro Sports
234		Multi-cart ??			Maxi-15
240             ??                              Gen Ke Le Zhuan, Shen Huo Le Zhuan
242		??				Wai Xing Zhan Shi
246		??				Fong Shen Ban
248		??				Bao Qing Tian
250		??				Time Diver Avenger

	FCE Ultra currently supports the following UNIF boards(minus the 
        prefixes HVC-, NES-, BTL-, and BMC-, as they are currently ignored):
        
Group:	Name:			Game Examples:
--------------------------------------------------------------------------------
Bootleg:
        MARIO1-MALEE2		Super Mario Bros. Malee 2
        NovelDiamond9999999in1	Novel Diamond 999999 in 1
	Super24in1SC03		Super 24 in 1
        Supervision16in1	Supervision 16-in-1

Unlicensed:
        Sachen-8259A		Super Cartridge Version 1
        Sachen-8259B		Silver Eagle
        Sachen-74LS374N		Auto Upturn
        SA-016-1M		Master Chu and the Drunkard Hu
        SA-72007		Sidewinder
        SA-72008		Jovial Race
        SA-0036			Mahjong 16
        SA-0037			Mahjong Trap
	TC-U01-1.5M		Challenge of the Dragon

MMC1:
	SAROM			Dragon Warrior
	SBROM			Dance Aerobics
	SCROM			Orb 3D
	SEROM			Boulderdash
	SGROM			Defender of the Crown
	SKROM			Dungeon Magic
	SLROM			Castlevania 2
	SL1ROM			Sky Shark
	SNROM			Shingen the Ruler
	SOROM			Nobunaga's Ambition

MMC3:
	TFROM			Legacy of the Wizard
	TGROM			Megaman 4
	TKROM			Kirby's Adventure
	TKSROM			Ys 3
	TLROM			Super Spike V'Ball
	TLSROM			Goal! 2
	TR1ROM			Gauntlet
	TQROM			Pinbot
	TSROM			Super Mario Bros. 3
	TVROM			Rad Racer 2

MMC5:
	EKROM			Gemfire
	ELROM			Castlevania 3
	ETROM			Nobunaga's Ambition 2
	EWROM			Romance of the Three Kingdoms 2

MMC6:
	HKROM			Star Tropics

Nintendo
discrete
logic:
        CNROM			Gotcha
        CPROM			Videomation
        MHROM
        NROM-128		Mario Bros.
        NROM-256		Super Mario Bros.
        RROM-128
        UNROM			Megaman


/******************************************************************************/
/*  1.1)	System requirements:                                          */
/******************************************************************************/

        Minimum system specifications:

        Pentium 60 MHz
        8 MB RAM
        400 KB free disk space
	Windows 95
	DirectX 7.0
        Video adapter

        Recommended minimum system specifications:

        Pentium 233 MHz
        16 MB RAM
        5 MB free disk space
	Windows 98SE
        Video adapter with 2D acceleration abilities
	DirectX 8.0
	Joystick
	Mouse
        Sound device capable of handling a sample rate of 44100 hz.


/******************************************************************************/
/*  2.0)        Starting FCE Ultra                                            */
/******************************************************************************/

        FCE Ultra can be started by running the executable "fceu.exe".
        I do not recommend running it from a DOS "box".


/******************************************************************************/
/*  2.1)        Using FCE Ultra:                                              */
/******************************************************************************/

        After starting FCE Ultra, you'll probably want to load a game.  Do
        this by going to File/Open.

        Menu descriptions:

        File
         Open           - Loads a new game.                
         Save State     - Saves the current NES state.
         Load State     - Loads a saved NES state.
         Log Sound As   - Logs sound to a file.  It will not work if sound
                          is disabled.                               
         Exit           - Exit the emulator.

        NES
         Reset          - Resets the virtual NES.
         Power          - Power cycles the virtual NES.
         Cheats         - Activates the cheat interface.  See "cheat.txt" for
                          more details.

        Config
         Hide Menu      - Hides the menu.
         Game Genie     - If checked, enable Game Genie emulation.
                          Game Genie emulation will only begin or end when a new
                          game is loaded.
         PAL Emulation  - If checked, enable PAL emulation.  Changes take effect
                          immediately, though I recommend resetting the virtual
                          NES afterward PAL emulation is enabled or disabled.  
         Directories    - Configure the directories that FCE Ultra will store
                          its files in.
         Input          - Enter input configuration dialog.
                          Note that not all virtual devices are configurable.
         Miscellaneous  - Enter miscellaneous configuration dialog.
         Network Play   - Enter network play configuration dialog.
         Palette        - Enter palette configuration dialog.
         Sound          - Enter sound configuration dialog.
          Sound enabled:
                Sound emulation and output are enabled when this is checked.
          Force 8-bit sound:
                Forces 8-bit sound output.  Use only when absolutely
                necessary(very rare).                        
          Sample rate:
                Specifies how many sound samples will be played back per
                second.  Unless you know what you are doing, you probably
                don't need to change this setting.
          Use secondary sound buffer:
                Uses a secondary sound buffer.  This option may be required
                for sound to work with certain sound cards/devices.
                Selecting "with global focus" will cause sound to be played
                while FCE Ultra has lost window focus, but you will probably
                also want to select "Active While Focus Lost" in the Config
                menu as well, otherwise you will just get repeating sound
                when FCE Ultra loses focus.
          Length of sound buffer:
                Specifies what length of sound(in milliseconds) should be
                buffered by FCE Ultra.  DirectSound and the Windows kernel
                may or may not cause a little more latency than what you
                might expect(usually not any more than a few milliseconds),
                depending on your setup.
                Use larger values if you have sound problems such as popping
                or gaps, though.  Larger values will increase the latency of
                the sound, however.  Finally, larger values are ideal for
                background music listening.
          Volume:
                Specifies the volume of FCE Ultra's sound output.  Setting
                the volume too high MIGHT cause noticeable clipping on some
                sounds(loud drums, for example), but don't let that possibility
                stop you from experimenting.

         Video          - Enter video configuration dialog.

        Default Key Mapping:

         For emulated Family BASIC Keyboard:
          Enable/Disable Keyboard Input         Scroll Lock
                (enabling emulated keyboard input will disable
                 commands keys)
          All emulated keys are mapped to the closest open key on the PC
          keyboard, with a few exceptions.  The emulated "@" key is
          mapped to the "`"(grave) key, and the emulated "kana" key
          is mapped to the "Insert" key(in the 3x2 key block above the
          cursor keys).

         For emulated game pads:
          Left Control             B
          Left Alt                 A
          Enter/Return             Start
          Tab                      Select
          Cursor Down              Down
          Cursor Up                Up
          Cursor Left              Left
          Cursor Right             Right
        
         For emulated power pads(keys correspond to button locations on
         side "B"):
          O P [ ]
          K L ; '
          M , . /

         For FDS games:
          I                        Insert disk.
          E                        Eject disk.
          S                        Select disk/disk side.

         For VS Unisystem games:
          C                        Insert coin.
          V                        Show/Hide dip switches.
           1-8                      Toggle dip switches(when dip switches
                                    are shown).

         0-9                      Select save state.
      
         F5/F7                    Save/Load state.
         F9                       Save screen snapshot.

         F3                       Hide/Show menu.
         F4                       Toggle between windowed/full screen modes.
         F10                      Reset.
         F11                      Power off/on.
         F12                      Exit.


/******************************************************************************/
/*  3.0)	Platform Specific Notes                                       */
/******************************************************************************/

        Your desktop color depth must be 16bpp, 24bpp, or 32bpp for FCE Ultra
        to run properly in windowed mode.

	FCE Ultra's base directory is the directory in which the executable
	is located.


/******************************************************************************/
/*  3.1)        Network Play Notes                                            */
/******************************************************************************/

        In TCP/IP network play, the server will be player one, and the
        client will be player 2.

        Zapper emulation and power pad emulation currently do not work with
        network play.

        Having Game Genie or PAL emulation enabled on only one side
        will cause problems.

        Both players MUST use the same ROM/disk image and SRAM
        file(if applicable).

	When using FDS or VS Unisystem games with network play, only player
	1 will be able to insert disk, eject disk, insert coins, toggle dip
	switches, etc.

/******************************************************************************/
/*  3.2)	VS Unisystem Notes                                            */
/******************************************************************************/

        FCE Ultra currently only supports VS Unisystem ROM images in the
        iNES format.  This will most likely change in the near future to
        support multi-file ROM images.

        ROM Images:

         * All VS Unisystem ROM images should have the VS Unisystem bit set.
         * VS Unisystem games that are about 49,000 bytes in size most likely
           use mapper 99.
         * Other VS Unisystem games will use other mappers.  Here is a short
           list of games and the mappers they use:

               CastleVania - 2
               Dr. Mario   - 1
               Goonies     - 151
               Gradius     - 151
	       Ice Climber - 99
               Platoon     - 68

        Palette(s):

         * The colors in many VS Unisystem games may be incorrect.  This
           is due to each game having its own PPU, and thus using a
           different palette than games that use a different PPU.


/******************************************************************************/
/*  3.3)        Famicom Disk System Notes                                     */
/******************************************************************************/

	You will need the FDS BIOS ROM image in the base FCE Ultra directory.
	It must be named "disksys.rom".  I will not give this file to you, so
	don't ask.

	Two types of FDS disk images are supported:  disk images with the 
	FWNES-style header, and disk images with no header.

	You should make backups of all of your FDS games you use with FCE 
	Ultra.  This is because FCE Ultra will write the disk image back to 
	the storage medium, and the disk image in RAM might have been corrupted
        because of inaccurate emulation(this case is not likely to occur, but 
	it could occur).


/******************************************************************************/
/*  3.4)        Light Gun Notes                                               */
/******************************************************************************/

	Currently, the NES Zapper and the light gun used with the VS
	Unisystem(I will call both the same name, Zapper) are supported.
	Most(all?) NES games expect the Zapper to be plugged into port 2.
	and most(all?) VS Unisystem games expect the Zapper to be plugged 
	into port(?) 1.

	The LEFT mouse button is the emulated trigger button for the
	Zapper.  The RIGHT mouse button is also emulated as the trigger,
	but as long as you have the RIGHT mouse button held down, no color
	detection will take place, which is effectively like pulling the
	trigger while the Zapper is pointed away from the television screen.
	Note that you must hold the RIGHT button down for a short
	time(greater than just a fast click, shorter than a second).
	
	Zapper emulation currently does NOT work with network play, so
	don't even try it. I may add support in the future if enough
	people want it or if I want it.


/******************************************************************************/
/*  3.5)        Palette Notes                                                 */
/******************************************************************************/

	Palettes files are expected to contain 64 8-bit RGB triplets(each in
	that order; red comes first in the triplet in the file, then green, 
	then blue).  Each 8-bit value represents brightness for that particular
	color.  0 is minimum, 255 is maximum.

	Palettes can be set on a per-game basis.  To do this, put a palette
	file in the "gameinfo" directory with the same base filename
	as the game you wish to associate with and the extension "pal".  
	Examples:

		File name:		Palette file name:
		 BigBad.nes		 BigBad.pal
		 BigBad.zip		 BigBad.pal
		 BigBad.Better.nes	 BigBad.Better.pal


        With so many ways to choose a palette, figuring out which one will
        be active may be difficult.  Here's a list of what palettes will
        be used, in order from highest priority to least priority(if a condition
        doesn't exist for a higher priority palette, the emulator will
        continue down its list of palettes).

        NSF Palette(for NSFs only)
         Palette loaded from the "gameinfo" directory.
          NTSC Color Emulation(only for NTSC NES games).
           VS Unisystem palette(if the game is a VS Unisystem game and a palette
           is available).
            Custom global palette.
             Default NES palette.


/******************************************************************************/
/*  3.6)        Compressed File Notes                                         */
/******************************************************************************/

        FCE Ultra can load data from both PKZIP-format files and
        gzip-format files.  Only one type of (de)compression algorithm is
        supported:  "deflate"; this seems to be the most popular compression
        algorithm, though.

        A compressed FDS disk image will only be saved back to disk if it
        uses the gzip format.

        All files in a PKZIP format file will be scanned for the
        followings extensions:  .nes, .fds, .nsf, .unf, .nez, .unif
        The first compressed file to have one of these extensions will be
        loaded. If no compressed file has one of these extensions, the
        first compressed file will be loaded.


/******************************************************************************/
/*  3.7)        Game Genie Notes	                                      */
/******************************************************************************/

	The Game Genie ROM image is loaded from the file "gg.rom" in the
	base directory the first time Game Genie emulation is enabled and
	a ROM image is loaded since the time FCE Ultra has run.

	The ROM image may either be the 24592 byte iNES-format image, or
	the 4352 raw ROM image.

	Remember that enabling/disabling Game Genie emulation will not take
	effect until a new game is loaded(this statement shouldn't concern
	any of the "run once" command-line driven ports).

/******************************************************************************/
/*  4.0)        Contacting the author                                         */
/******************************************************************************/

        I can be reached via email at xodnizel@users.sourceforge.net.
        Bero can be reached via email at 9bero9@geocities.co.jp
         (Note that Bero can not and will not answer any questions
          regarding the operation of FCE Ultra, so please don't ask him.
          If you understand this, remove the 9's from the email address
	  provided to get his real email address.)


/******************************************************************************/
/*  4.1)        Credits                                                       */
/******************************************************************************/

\Firebug\       -       High-level mapper information.
Bero            -       Original FCE source code.
Brad Taylor	-	NES sound channel guide.
Chris Hickman	-	Archaic Ruins.
Donald Moore    -       DC PasoFami NES packs.
Fredrik Olson	-	NES four-player adapter information.
Gilles Vollant	-	PKZIP file loading functions.
goroh           -       Various documents.
Jeff Tamer      -       Insaniacal fun.
Jeremy Chadwick -       General NES information.
Justin Smith    -       Giving me obscure ROM images in the "dark ages of
                        NES emulation".
Kevin Horton    -       Low level NES information and sound information.
Ki		-	Various technical information.
Mark Knibbs     -       Various NES information.
Marat Fayzullin -       General NES information, CPU emulation core, various
                        driver code.
Matthew Conte   -       Sound information.
N. Andou	-	Awesome NES/SNES emulators, at the time...
nori		-	FDS sound information.
Quietust        -       VRC7 sound translation code by The Quietust
                        (quietust@ircN.org).
			Ideas and corrections.
R. Hoelscher	-	Famicom four-player adapter information.
Rob Mocca       -       DC PasoFami NES packs, testing.
Sean Whalen	-	Node99.
Tatsuyuki Satoh -       OPL2 emulator
TheRedEye	-	ROM images, testing.


Info-ZIP	-	ZLIB

...and everyone else who has helped me.
