          Snes9X v0.24
               for
   Windows 95 and Windows NT 4.0
-----------------------------------
Copyright 1996-97 Snes9x Developers



Main Authors
------------
Gary Henderson                     (gary@daniver.demon.co.uk)
Jerremy Koot a.k.a. The Teacher    (jkoot@euronet.nl)


Platform Porters
----------------
Chad Kitching a.k.a. Trepalium     (kitchingc@mail.techplus.com)
John Stiles                        (jstiles@uclink4.berkeley.edu)



Contents
--------
Introduction
Known bugs
What's Missing
What You Will Need
Commandline options
Keyboard Controls
Converting ROM Images
Problems With ROMs


Introduction
------------
This is a Super Nintendo Entertainment System (SNES) emulator for Linux i386,
MS-DOS, Sun Solaris Sparc, Windows 95 and Windows NT 4.0 featuring 
work-in-progress 16-bit, digital stereo sound on all ports.

Snes9X is coded in C++ with an assembler CPU emulation core on the Linux and
MS-DOS ports. More parts will be recoded in assembler in later versions.

This project being worked on by several people. It is a spare-time project 
done for our own interest that I thought other people might enjoy. 90% of 
the time I spend on Snes9X isn't spent writing new code at all - its time 
taken trying to discover how certain SNES features work, speeding up existing 
code while still keeping it portable, testing or writing documentation.

The SNES is a much more complex beast to emulate than say the NES. It has a
more complex main CPU, clocked twice as fast the NES, that can address more
memory and larger ROM images. It has four background layers compared to the
one on the NES, each of which can display up to 256 colours at once compared
to 32 on the NES. It has twice as many sprites as the NES, each of which can
be twice as large as those on the NES and interleaved between background
layers. It has more DMA channels, raster H-DMA effects, another CPU purely for
sound and almost twice as many sound channels - each of which plays compressed
sound samples rather than simple square or triangle waves and each sound
channel has hardware volume envelopes. The SNES also has transparency effects
(not emulated yet) that pushes up the possible number of colours on the screen
to 32768.

For people who think all SNES emulators are "crap" - don't use them, go and
use a real SNES instead. For people who think NLKSNES is the best emulator
because its the fastest - good luck finding a ROM it works with and enjoy the
silence. For people who think Bloodlust Software will be their only hope for
SNES emulation - enjoy the wait. For everyone else, please enjoy this release
and I'm sorry, but you'll just have to give me more time before a GUI/more
speed/transparency effects/better joystick support/DSP/SuperFX/screen
saving/cheat codes/net-link/speed-limiting code/<insert your favourite missing
feature here> are implemented.

Sorry for not being able to respond to every e-mail message I get - all are
read but work/vacations/stress/time/social life all conspire to prevent me 
from having the time to respond to every message.


Problems With ROMs
------------------
If the emulator just displays a black screen for over 10 seconds then one
of the following could be true:

1) The ROM image is corrupt.
2) Some ROMs have a bad ROM header, mostly home-brewed SNES games or hacked
   commercial games. Snes9X cannot then detect if it is a Lo-ROM or Hi-ROM
   game and just guesses.
3) The ROM is in a loop waiting for the Sound CPU to respond with a particular
   value and the sound wait skip code in the emulator hasn't spotted the fact.
   Enables the SPC700 emulation. This allows several ROMs to continue that 
   previously were stuck in sound down-load code.
4) The ROMs FAST ROM protection check has failed and the ROM has deliberately
   crashed itself. The only thing you could try is one of the utilities on
   the 'net that remove such protection.
5) The original SNES ROM cartridge had additional hardware inside that is not
   emulated yet - this is true for all SuperFX games (DOOM, etc.) and DSP
   games (Mario Kart, Yoshi's Island, etc.). Some of the later ROMs (1994+)
   had additional hardware as a form of protection (Williams Arcade Classics,
   Clay Fighters II, etc.). There is nothing you can do about these games
   except patching the ROM or wait until I emulate the missing hardware, but
   this must be done individually, for each game.  (Williams Arcade Classics
   is already supported).
6) The ROM image has found a CPU emulator instruction or memory map bug -
   please e-mail with name of ROM images that do this. Unfortunately, it is
   difficult to tell this problem from the protection failure problem
   described above without disassembling the ROM.

If the game starts normally but refuses to go beyond the title screen try to 
enable old-style SNES joy-pad emulation or try pressing '6' in the emulator 
to swap joy-pads around; Mario All Stars swaps joy-pads around with 
old-style SNES joy-pad emulation enabled.

If the ROM says "This game is not for your system" or something similar,
try to force PAL mode or to force NTSC mode.

Also, some ROMs use background colour addition (which isn't emulated yet) in
such a way that is hides the character you are trying to control or important
scenery; try toggling the background layers on and off with the keys 1 to 4 to
see if you can find the background layer causing the problem and leave it
switched off.


Converting ROM Images
---------------------
If you have a ROM image in several pieces, simply rename them so their
filename extensions are numbered: e.g. game.1, game.2, etc. Then, when
loading the ROM image, just specify the name of the first part; the remaining
parts will be loaded automatically.

If they are already in the form sf32xxxa, sf32xxxb, etc., you don't even have
to rename them; just specify the name of the first part, as above.

Commandline options
-------------------
I finally got around to adding commandline options, these can be entered on
a dos-box commandline or with the RUN option in your Start menu. None of 
these options are saved, so you need to specify them everytime.

Specifying a ROM filename in the command line then Snes9X will automaticly
load that ROM and not the default "Snes9X.ROM".

Sound options:
-S1       Play sound at  8Khz-16Bit-Stereo
-S2       Play sound at 11Khz-16Bit-Stereo
-S3       Play sound at 16Khz-16Bit-Stereo
-S4       Play sound at 22Khz-16Bit-Stereo
-S5       Play sound at 36Khz-16Bit-Stereo
-S6       Play sound at 44Khz-16Bit-Stereo
-D        Disable DirectX 5 sound support
          Only do this if you have DirectX 5 installed and the sound is
		  horible and has a lot of cracks/etc.

General options:
-C        This will clear the default settings and reset them to 
          'Factory'-defaults.

Keyboard Controls
-----------------
While the emulator is running:
'0'       Toggle H-DMA emulation on/off.
'1'       Toggle background 1 on/off (useful for speeding up the
'2'       Toggle background 2 on/off  emulation and for ROMs
'3'       Toggle background 3 on/off  that use colour addition in
'4'       Toggle background 4 on/off  a certain way, e.g. zelda)
'5'       Toggle sprites (OBJs) on/off
'6'       Toggle swapping of joy-pad one and two around
'7'       Toggle TV mode on/off, a scaled mode(2:1 or better) must be selected.
'8'       Toggle background layering on/off
'9'       Toggle fastredraw on/off

F2        RealTime - Quickrestore
F3        RealTime - Quicksave

F8        Make screenshot
F9        Enable / Disable frame-per-second display.

'-'       Decrease frame redraw skip rate
'+'       Increase frame redraw skip rate

CTRL+'1'  Toggle soundchannel 1 on/off
CTRL+'2'  Toggle soundchannel 2 on/off
CTRL+'3'  Toggle soundchannel 3 on/off
CTRL+'4'  Toggle soundchannel 4 on/off
CTRL+'5'  Toggle soundchannel 5 on/off
CTRL+'6'  Toggle soundchannel 6 on/off
CTRL+'7'  Toggle soundchannel 7 on/off
CTRL+'8'  Toggle soundchannel 8 on/off
CTRL+'9'  Enable all soundchannels

F11       Toggle the clear tone on/off.
F12       Resync the sound with the sound time.
          This may make the sound worse then it is, or better,
		  Retry with F11 enabled until a clear tone is generated.
		  [This will *ONLY* work on DirectX 1~3]

What You Will Need
------------------
Snes9X for Windows 95 or Windows NT 4.0 need the following things:

o A Pentiumclass PC running either Windows 95 or Windows NT
o DirectX v2.0 or higher needs to be installed.
  (If this is not the case you'll get a 'missing DDRAW.DLL' error)
o 10Mb of RAM to run without swapping.
o A fast Windows Accelerator with DirectDraw support.
o A 16-Bit soundcard with DirectSound support for sound.
o A SNES ROM image.


What's Missing
--------------
Sub-screen addition and subtraction (used for transparency effects), offset
change mode (no idea what its used for), sound pitch modulation and echo
effects and pseudo 512 horizontal pixel mode.

A couple of other odd features that no ROMs seem to use are also missing:
direct colour output and interlaced display.

Some ROM cartridges contained additional hardware such as the SuperFX chip (a
16MHz RISC processor) or DSP chip, neither of these chips are emulated at the
moment so games that use them like Mario Kart, DOOM, Yoshi's Island, etc.
don't work.


Known bugs
----------
The current release of Snes9X for Windows 95 and Windows NT 4.0 contain a few 
known bugs. These bugs will be removed as soon as I know how to remove them.

B. Bug
S. Solution/Workaround

B. Sound gets corrupt after a while or after switching between programs.
S. This happens because the timer is not accurate anymore and you have to
   restart the emulator to get correct sound or try to get it to sound 
   better using the F12 key(read the key's section for more details).

B. The emulator crashes or no roms are able to run anymore.
S. This happens because the reset routine doesn't reset all the variables
   yet. Restart the emulator and the roms will work again.

B. When I use Double Buffering the palette sometimes isn't updated correctly.
   For example with Super Mario World, the sky isn't blue anymore.
   (This only happens to me when I am in Windows NT 4.0)
S. Use a Single Buffered mode or use the faulty palette. Sometimes pressing
   ALT a few times may 'solve' the problem


Credits
-------
This emulator could never be made without the support of several people on
#EMU and without the support of ESNES, Gary(Linux/SunOS programmer) and
several other people who I forgot to mention.
 
Many special thanks go to Wizard (Cyber Force) who provided me with the SNES 
Manual and with a lot of ROM files to test with.

SNES is a trademark of Nintendo.
Windows95 / Windows NT4.0 / DirectX are trademarks of Microsoft.


------------------------------------------------------------------------------
Jerremy Koot a.k.a. The Teacher (jkoot@euronet.nl)