
The SNES emulator with the extra e's...

        SSSSS   NN    NN  EEEEEE           SSSSS
       SS   SS  NNN   NN  EE              SS   SS
        SS      NNNN  NN  EE       eeee    SS       eeee
         SSS    NN NN NN  EEEEE   ee  ee    SSS    ee  ee
           SS   NN  NNNN  EE      eeeeee      SS   eeeeee
       SS   SS  NN   NNN  EE      ee      SS   SS  ee
        SSSSS   NN    NN  EEEEEE   eeee    SSSSS    eeee

                                            v0.37 (Public BETA)
                                            15 October 1999

  THIS IS NOT SHAREWARE NEVER HAS BEEN...ITS FREE AND SHOWS ;-)

- In memory of the Emu News Service/Emu News World, which served as a strong
  backbone for emulation, and will not be soon forgotten...
                                        http://www.emunews.net/

NOTE:
 This release has SPC emulation, it may get some ROMs to work that would
  not with APU skipper.
 This release also has sound, but the sound can be unstable.
  Send critical bug reports (this is, report only the ROMs that crash the
  emulator) to: esaelon@aol.com
 Please list the ROM, ROM filename, the settings you were using in the
  emulator, when it crashed, etc. Thanks for the help!

Credits
"""""""
New development
Primary Developer/Maintainer
 Charles Bilyue'    (TRAC)      esaelon@aol.com
Assistant Developer (Sound system emulation)
 Brad Martin        (Butcha)    martin@gvi.net
New logo
 Thomas "Malenko" Carnill, Jr.  LLINRAC@aol.com

Former SNEeSe team
Project founder
 Lee Hammerton      (Savoury SnaX)
Original logo
 Windwalker
GUI improvements, testing
 Santeri Saarimaa   (Gridle)
Assistant developer
 Charles Bilyue'    (TRAC)
Sound system emulation
 Lee Hammerton      (Savoury Snax)
 Brad Martin        (Butcha)
 archeide

 Shawn Hargreaves & Co. - Allegro 3.11 library!

- Thanks, Greets, and News moved to end of file

--------------! For true SNES emulation buy a SNES ;-) !--------------

System Requirements
"""""""""""""""""""
Here is a rough guide to the things you need to run this emulator:

 - PC running MS-DOS/Win9x (can't guarantee full compatibility with
    compatible O/S's!)

 - 486 or better CPU (preferably better, this emulator is in beta
    stage and is slow and incomplete).

 - roughly 4-8 MB of memory free, dependant on ROM size.

 - VGA-compatible graphics card capable of mode 13h for the following
    8-bit display modes:
     320x200        - 320x200 (squashed to fit)
     320x240 Mode-X - 256x239
 - SVGA graphics card (either with native VESA 2 support, or with a driver
    providing VESA 2 support, such as UniVBE or Scitech Display Doctor)
    for the following display modes:
     16-bit using linear framebuffer
      320x200        - 320x240
      640x480        - 640x480 (pixels stretched to 2x2)
   Note that the 16-bit modes are slower and there is currently no
    advantage to using them!

 - A reasonable monitor (if you want to use the 256x239 or Mode-X modes!).

 - A Sound Blaster compatible sound card, only needed if you enable SPC
    with sound emulation. SOUND IS NOT SUPPORTED IN THIS RELEASE.

 - Some SNES ROM images to try out. I will NOT give images due to ethics
    and copyright laws. Don't waste our time asking.

The config file
"""""""""""""""
 A config file is used so SNEeSe remembers what state it was in when the
user quit. It can be edited with a text editor for those interested, but
most options can be changed inside the GUI, with less hassle...

 If you want to use the standard .SRM extension for Save RAM files instead
of SNEeSe's .RAM (exists to prevent corruption of saved files, in case of
bugs) simply edit the SNEeSe.CFG file and change the line:

saveextension=RAM

to

saveextension=SRM

 Simple eh?

The GUI
"""""""
 The GUI can be opened by pressing ESC during emulation. From here you
can RESUME emulation, RESET the emulation, LOAD a new SNES ROM into
the emulator, setup some CONFIGURATION options (see below), get various
infos about the loaded ROM and current emulated hardware state, and EXIT
the emulator. Pressing ESC while in the GUI closes the current window,
if the last window is closed, emulation resumes. To move the bar use the
cursor UP/DOWN controls, to choose an option press ENTER (either one
will do).

In the file loading window, PAGE UP and PAGE DOWN allow you to travel
through the listing faster than UP/DOWN. There is no sorting, no
exclusion by extension, and no jump-to-pressed-letter in the file
loader yet, as well as no LFNs... sorry, but will fix all of these
soon!

 The CONFIGURATION menu allows you to change some features of the
emulation as follows:

  ???x???x???              - The first option in the list will
                             show the current emulation resolution.
                             When you press ENTER a window will open
                             allowing you to choose a new resolution.
                             If the resolution cannot be set, it will
                             revert to standard 320x200x256 mode.

  Min Frameskip: ?         - You can modify the amount of frames to
  Max Frameskip: ?           skip by pressing left or right arrow.
                             Default is 4 for maxframeskip (show at least
                             every 4th frame), 0 for minframeskip.

   Max Frameskip sets the maximum number of frames that will be skipped
    before a frame is drawn.
   Min Frameskip sets the number of frames that will always be skipped before
    a frame is drawn. a min skip of 0 tells SNEeSe to wait for at least one
    timer tick (50/60Hz) to have passed before emulating a frame (to slow
    down machines that are running too fast)
   Min Frameskip will never be above Max Frameskip. In the config file,
    'maxframeskip' has precedence over 'minframeskip'.
   'frameskip' is still supported in the config file for backwards
    compatibility, and is used for 'maxframeskip' when and only when
    'maxframeskip' is not already defined.
   Setting Min Frameskip and Max Frameskip to the same number effectively
    disables all speed-throttling.

  Keyboard on player 1     - This option toggles joystick or keyboard
                             mode for controller 1. Now toggles to
                             mouse support, in mouse mode joypad will
                             still function using keyboard controls.

  Keyboard on player 2     - This option toggles joystick or keyboard
                             mode for controller 2.
                             Only 1 joystick/joypad is supported,
                             don't map it to both unless you want
                             mirrored controls for some reason...
                             Also toggles to mouse support.

  Define keys for player 1 - This option lets you redefine the
                             keys for controller 1. Since version 0.15
                             this has been done through the GUI, it
                             shows a nice picture of the SNES joypad
                             and asks the keys. You can press ESC
                             anytime to stop redefining.

  Define keys for player 1 - This option lets you redefine the
                             keys for controller 2.

  Emulate SPC              - Toggle SPC emulation/skipper. SPC emulation
  Skip SPC                   must be enabled with below option for sound.

  Sound Enabled            - Enable/disable sound output when
                             emulating the SPC. Selects mono or
                             stereo too, NB stereo uses 2* more
                             voices so not all cards / systems
                             may support it.
                             SOUND IS NOT SUPPORTED IN THIS RELEASE.

Readme or don't bother e-mailing me
"""""""""""""""""""""""""""""""""""
When you attempt to use a ROM you should take note of any information
displayed on the screen. For instance, if a ROM just bombs back to DOS
and all the information displayed looked like rubbish, the ROM image
format may not be supported by the emulator (split ROMs, certain
interleaved ROMs, certain memory maps), the ROM may be corrupted,
or the ROM may have hit a bug in the emulator.

To start the emulation, type SNEESE and then the file name of the ROM to
load, or with no filename to go straight into GUI (you can load a ROM from
the GUI, but it's painful!)

SNEESE thisrom.smc

You may also try any combination of the following switches:
Memory map:
 -fl  Force LoROM memory map
 -fh  Force HiROM memory map
ROM format:
 -fi  Force interleaved ROM (only supported for HiROM)
 -fn  Force non-interleaved ROM
Copier header:
 -h   Force ROM copier header
 -n   Force no ROM copier header
Video standard:
 -fvp Force PAL video standard
 -fvn Force NTSC video standard

If two or more switches conflict, the last switch takes priority.

Once the ROM title is displayed, press a key to start the emulation.

To pause the emulation and enter the GUI, press ESC. The GUI will pop up
and allow you to return to the emulation, reset the emulation, load
another ROM, reconfigure the emulator, display information about the
ROM, or exit the emulator. Use the cursor and ENTER keys to navigate
through the menus.

To break out of the emulator (quick-exit) press Ctrl-Alt-End.
Use this if the emulator stops responding to input (including ESC).

If you have any helpful information on DSP, SuperFX, sound, bug fixes,
or any other emulation or general improvements, and would like to
send me some constructive comments or help (NOT - are you gonna have
DSP/FX/better sound/better graphics/more speed/etc., when for the same)
feel free to e-mail me at:

 esaelon@aol.com

Or you can visit the SNEeSe homepage at:
 http://sneese.n3.net/
 http://www.emuunlim.com/sneese/
 http://skyscraper.fortunecity.com/online/312/sneese.html

The source code for this release of SNEeSe should be available at the
homepage.

Any email about obtaining copyright ROMs will likely be forwarded to the
appropriate authorities, so don't waste our time!

What can SNEeSe do in this version?
"""""""""""""""""""""""""""""""""""
Emulation details:
 - 65c816 main CPU with 254/256 opcodes implemented, including BRK/COP
    interrupts. The last two remain unimplemented (WDM/STP) since they
    do nothing important and can help detect runaway ROMs!
 - SPC700 sound CPU with 250/256 opcodes implemented, running with
    on-demand execution. Does not maintain constant sync with main CPU.
    BRK/RETI, BCD (DAS/DAA), SLEEP/STOP remain unimplemented.
 - NMI/IRQ interrupts running (timings are a little out).
 - Hblank/Vblank CPU timing.
 - Partial SlowROM/FastROM support (fixed-cycle, buggy).
 - LoROM and HiROM memory maps (up to 32Mbit).
 - DMA and HDMA, all 8 channels, modes 0-4 (5-7 supported but possibly
    incorrect), HDMA may have some bugs.
 - Partial sound DSP support and sound generation.
 - Most hardware registers emulated ('cept some undocumented stuff).
 - SNES joypads 1 and 2 and mouse are supported.
 - BG modes 0-7, 8x8 and 16x16 tiles, X/Y flip, palette mapping,
    scrolling, tile priorities.
 - Screen sizes 32x32, 64x32, 32x64, and 64x64 supported.
 - Sprites are supported in all sizes (8x8, 16x16, 32x32, 64x64), with
    name and base select and priority rotation.
 - Partial 16x8 tile support in modes 5 and 6.
 - Partial vertical offset change mode support in mode 2 (buggy).
 - Partial mosaic effect (vertical direction only).
Extras:
 - Specialized 'squashed' copy so entire SNES screen is visible on a
    standard 320x200 VGA mode 13h screen.
 - Speed-throttling with speed-capping, and minimum/maximum frameskip
    control.
 - GUI and config file.

 - Keyboard working as follows:
    The following settings are fixed:
     ESC     - Open GUI
     F1-F8   - Toggle sound channels
     1-4     - Toggle BG layers 1-4
     5       - Toggle sprites
     6       - Reset BG layers/sprites/sound channels
     7       - Toggle vertical offset change in mode 2
     0       - Save PCX of current display
    The following settings are reconfigurable:
     Keypad cursor keys - joypad direction
     Q,A     - L/R buttons
     W,S     - X/Y buttons
     E,D     - A/B buttons
     [,]     - Select/Start buttons

 - A 4 or 6 button joystick/joypad can be used in place of the keyboard,
   selectable from the GUI.

What is left to do in this emulator?
""""""""""""""""""""""""""""""""""""

The following list contains a sampling of things I know need fixing or
adding, it may not be complete!

TO DO:
~~~~~~
 Command-line interface: More control, especially over configuration
 IRQ      : Multiple IRQ on a scanline, H-IRQ, etc. not implemented
 HDMA     : Seems to have bugs

 SPC      : May still have bugs
  Skipper  : Fails to work on MANY ROMs, need at least an alternate skipper
 Sound    : Needs work

 Screen rendering
  Layering : BG3 highest priority not implemented in mode 0
  16-wide and larger tiles: Improve wrapping from end of tilesets
  Windowing: I am slowly working towards implementing this...
  Mosaic   : Horizontal Mosaic effect in all BG modes
  Color +/-: This relies on windowing, and allows overlaying BGs like the
             rain in Zelda?
  Plenty of other missing stuff...

 GUI      : More interface cleanup/rewrite/ease-of-use/versatility
  File Selector: LFN support, file exclusion by extension, file sorting

 ROM loader: Split files, more memory maps, compressed ROMs...
 Savestates: ...
 Keyboard: Replace or extend keyboard handler to help with interface

 Source   : More source cleanup/clarity/commentation
 Joypad   : Implement joystick/joypad support using Allegro 3.11
            Button reconfig
            Better joypad hardware emulation

Known ROM Compatibility
"""""""""""""""""""""""

 Anyone want to do a real compatibility list? Would really help!

 This compatibility list is not 100% current, and is somewhat sorted by
  time, the longer since it's been tested, the farther down on the list!
 Also - just because a ROM is listed as working, the degree to which it
  does is NOT guaranteed!

---
 Thanks to Avarice for testing the following (0.36)
---
Crashes the emulator
 Bill Laimbeer's Combat Basketball - resets computer (with SPC enabled)
---
 Thanks to Inacio Veiga Escobar for testing the following (0.33)
---
Works with SPC/Sound on or off:
 Dragon Ball Z: Super Butoden 2 - graphic problems during battle
 Dragon Ball Z: Super Butoden 3 - graphic problems during battle
 Dragon Ball Z: Super Goku Den 
 Front Mission - some graphic problems
 F-Zero 2
 Megaman X
 Romancing Saga 3
 Sailor Moon: Another Story
 Seiken Desentsu 3
 Super Punchout
 Super Robot Wars 4 - some graphic problems during animations
 Treasure Hunter G

Works with SPC/Sound on
 Dragon Ball Z: Super Butoden - graphic problems during battle
 Dragon Quest 6
 EVO
 Fire Emblem 4??
 Gundam: Cross Dimension 0079 - some graphic problems during intro
 Gundam Wing: Endless Duel - some graphic problems during intro and battles
 Super R-Type
 Tactics Ogre - little graphics problems during tutorial
 Wonder Project J

Works with SPC/Sound off
 Record of the Lodoss War

Not playable
 Inindo: Way of the Ninja - several graphic problems
 Dragon Quest 3 Remix - black screen

---
 Thanks to TeMp8sHuN for testing the following (0.33)
---
Working with sound
 Alcahest - Layering priority problems
 Battle Dodge
 Breath of Fire - graphics corruption
 Captain Commando - some sound problems
 Earthbound - Layering priority problems
 Final Fight 3
 Final Fantasy 5 - Layering priority problems (at least at name selection)
 Fatal Fury Special - some missing sounds
 Holy Striker - Layering priority problems (press 2)
 King Arthur
 Looney Tunes Basketball - some sound problems
 Magic Sword
 Mega Man 7 - Game speed problems?
 Rockman and Forte - Layering priority problems, game speed problems?
 Sanrio Smash - Score piece visible at start?
 Secret of Mana - Layering priority problems (press 1)
 ShadowRun - Layering priority problems
 Super Godzilla - some sound problems, graphics corruption
 Super Metroid - Layering priority problems, requires SPC (press 3)
Not Working
 Best of the Best - graphics corruption in title, can't get past menu
 Pacman Demo - After eating 10 dots you go to next level
 Spawn - Can't see screen in play?
 Yoshi Safari - Missing Super Scope

---
---
Playable ROMs
 that appear to have no problems:
  Legend of the Mystical Ninja
  Parodius
  Pushover
  Super Mario World
  Tetris & Dr. Mario
  TMNT4
 with some problems:
  ActRaiser         - Missing tile on mode 7 logo (no effect on gameplay)
  Art of Fighting   - Some layering problems
  F-Zero            - Lack of color arithmetic (health bar, first place win)
  FF2/FF4j          - Lack of color arithmetic
  Killer Instinct   - Gfx corruption (shouldn't interfere with playability
                       except Thunder stage missing correct offset change)
  Mario Allstars    - Lack of windowing causes a few problems
                      Lack of correct offset change messes up SMB2 title
  Mega Man 7        - Lack of windowing makes dialog difficult to see
  Mega Man X        - Lack of windowing makes dialog difficult to see
  Terranigma        - Problems with overhead map, lack of color arithmetic
  Tetris Attack     - Offset change problems, requires SPC
  Wario's Woods     - Sound sometimes gets stuck repeating 'sweet'
                      Occasionally freezes and crashes
  Wolverine: Adamantium Rage - Problems during title screens
  Zelda 3           - Probably not completable due to lack of windowing
 with serious problems:
  Kirby's Avalanche - Serious offset change/layering problems
  Secret of Evermore - Freezes and crashes on return to GUI if sound enabled
Non-playable ROMs
 with serious problems:
  SF2 Turbo         - background problems
  Chrono Trigger    - offset change problems, sprite priority problems,
                       text windows/menus don't always display or flicker,
                       requires SPC
 that show title screens and/or intro only:
  Donkey Kong Country

The following have definitely not been checked recently!
Playable ROMs
 that appear to have no problems:
  Cliffhanger
 with some problems:
  Brutal Paws of Fury - minor gfx problems in intro
Non-playable ROMs
 with unknown problems:
  Final Fight 2
 with serious problems:
  Judge Dredd       - severe gfx corruption in game
  Roadrunner        - missing scanlines
 that show title screens and/or intro only:
  Biker Mice from Mars  - Kanomi logo, waiting for SPC
  Aero Fighters     - McORiver logo, waiting for SPC
  Dracula X         - Kanomi logo, waiting for SPC
  FF3               - FF3 fire logo, waiting for SPC
  Super Bomberman 1 - appears to get stuck waiting for SPC, missing layers
 that don't start at all:
  Super Bomberman 2 - waiting for SPC
  Super Bomberman 3 - waiting for SPC
  Super Bomberman 4 - waiting for SPC
  Super Bomberman 5 - waiting for SPC
  Super R-Type 3
  War of the Gems   - waiting for SPC

History
"""""""
 0.37
  PPU: Modified the way VRAM read is done - now uses 'VRAM read
   buffering' which makes MUCH more sense, thanks to Ben Parnell
   of FCE Ultra (NES emulator) for info!
  Sound: Made a few improvements to the sample decompression routines
  Sound: Figured out why Soundscape cards weren't getting any sound
   and told Allegro to put the drivers in
  Sound: GUI should now be quiet on more cards
  CPU: Completely redid CPU opcode timing tables - thanks to Neill
   Corlett for better timing info!
  CPU: More improvements to the execution loop
  HDMA: Removed some unnecessary code that was in since the last rewrite
  Source: Removed an erroneous extra line in one file, thanks to TNSe^1999
   for finding this...
  Source: Added a kludge in many files to work around the DJGPP linker's
   lack of object file alignment
  SPC700: Changed flag format conversion to use lookup tables
  65c816: Fixed a few bugs related to the Break flag in emulation mode
   (allowing Break flag to be cleared, Break flag set on stack after NMI)
  65c816: Simplified stack operations
  PPU: Fixed a bug that caused CGDATAREAD to be disabled
  Commandline: Added support for video standard forcing (-fvp to force PAL,
   -fvn to force NTSC)
 0.36
  CPU: Timing base changed
  CPU: Redid the FastROM support, improving speed in cycle counting
  IRQ: Improved IRQ support (IRQs were being ignored in Vblank before,
   fixed)
  PPU: Improved joypad hardware emulation ('automatic read' timing)
  SPC: Improved speed in opcode fetcher, some source changes
  SPC: Now only resync'ing on CPU<->SPC communication and on the start
   of Vblank (when sound update is done), doesn't appear to worsen
   anything and improves speed
  Other: Redid some of the debug dump from when the emulator exits
 0.35
  SPC: Many more optimizations and some source cleanup
  SPC: Fixed yet another bug in the CPU<->SPC cycle calculation code -
   caused Reset to cause 'unpredictable behavior' when the SPC was enabled
 0.34
  Render: Slight tweaks inside the renderer, including a modification
   to the back area color addition hack
  Render: Implemented mosaic effect (vertical direction only)
  Render: Major tweaks to the vertical offset change support in mode 2 -
   still not correct but appears better
 0.33
  SPC: Fixed a very stupid, nasty bug that showed up in 0.26, that
   caused the DIV YA,X opcode to corrupt the stack pointer
  Sound: Fixed a bug that caused the sound driver not to be installed
   if a ROM filename was not specified on the command line
 0.32
  Sound: Fixed some problems that caused sound generation to be used
   when sound was disabled
  SPC: Fixed a bug that caused SPC timers to lose cycles in conditional
   branches
  SPC: Now allowing SPC timer targets to be set when timer is enabled
   as it seems to fix other timing problems
  Render: Fixed some problems with layers using 16x16 tiles having
   small virtual screens
 0.30
  GUI: Fixed yet another small GUI bug
  Joypad: Tore out the old joypad code
  Allegro: Now linking with Allegro 3.11, should fix some sound card
   incompatibilities
  SPC: Bug fixes in 4 SPC opcodes, and a serious bug in the SPC CTRL
   register fixed, AND a new sound DSP/sound generation core, all
   thanks to Butcha! (Compatibility noticably improved!)
 0.277
  SPC: Fixed timer 2 to be a 64kHz timer - had mistakenly made it 8kHz
   in the rewrite
  SPC: Fixed some bugs in the sound DSP, that could have potentially
   caused memory overwrite
 0.276
  APU skipper: fixed a nasty bug that showed up in (and went unnoticed
   since) 0.27, caused severe SNES timing problems
  GUI: Fixed a bug causing the CPU Reset to freeze up when the SPC is
   enabled after it having been disabled during execution
 0.275
  SPC: Many more optimizations to opcode fetcher
  SPC: Implemented TCALL instruction
 0.27
  SPC: More optimizations
  SPC: Completely rewrote SPC timers - fixes some SPC problems and sound
   playing too fast or slow
  SPC: Forcing SPC to 'catch up' once per 65816 'scanline' time period,
   may clear up more sound quirks (until sound generation code can be
   rewritten)
  Timing: Vblank timing adjusted slightly
  Timing: Hblank timing code simplified (actually done in 0.26!)
 0.26
  HDMA: Fixed a bug where the transfer size for the first line of a set
   was corrupted
  HDMA: No longer repeats write to register for continue mode
  IRQ: Put in a better H-IRQ hack, until I do the timing
  Render: Palette is set for highest brightness in the frame (helps
   Chrono Trigger, SF2 series, others), thanks to an anonymous person
   for help
 0.251
  Render: Fixed the back color add hack (Mario World blue sky, others)
   that got broke somewhere along the way.
  Source: Fixed some problems in the makefile that gave some users
   trouble rebuilding.
 0.25
  CLI: Implemented a basic commandline interface, providing a means to
   override ROM loader autodetection
  Released to the public!
 0.25b17
  Timing: Reworked how Hblank is handled
  SPC: Now forced to 'catch up' once a frame, solves the 'lags' and
   improves sound overall
 0.25b16
  SPC: Source cleanup, general optimization (register allocation needs
   more improvement), a few more fixes
  DMA: Fixed a bug where DASL/DASH was not being reset to 0 after general
   DMA transfer (thanks to ESNES and Trepalium for pointing me to DMA -
   F-Zero is fixed!!!)
  Render: Fixed a stupid, nasty, bug in the new sprite code
 0.25b15
  GUI: Fixed another bug with changing SPC enable (menu item wasn't changed)
  Render: More changes to sprite render code
  PPU: Slight change to 16x8 multiply
  PPU: Fixed the emulation of the RDNMI register/timing - thanks to
   archeide of SNEmul for pointing me in the right direction!)
  65816: Fixed the write order of some instructions
  SPC: Now treating SLEEP and STOP as invalid opcodes for debugging purposes
   (is there any point in emulating these, similar to the 65816's STP?)
  SPC: Fixed part of the SPC register dump
  SPC: Implemented hidden 64 bytes of RAM at top of SPC address space
 0.25b14
  Fixed a bug in the GUI with changing SPC/sound enable
  Added a FPS counter - it works, unfortunately you can't always see it...
   must be enabled in the GUI
 0.25b13
  Reversed plot order back to the way it used to be before 0.16 - another
   speed increase (doh!)
 0.25b12 (unreleased)
  Implemented deinterleaved VRAM storage and a new mode 7 renderer:
   VRAM is now also stored as 32k low bytes and 32k high bytes. This has
   minimal effect overall but may provide a mode 7 speed increase, in
   particular for low-end systems (486)
  Fixed a bug where disabling mode 7 also disabled sprites
  More layering priority fixes in modes 2-6
  Altered the 256x240 mode to get rid of a lot of the excess border
  Reduced the 256x240 mode to 256x239
  Modified the way screen modes are handled with the GUI
  More tweaking with DMA/HDMA emulation
 0.25b11
  Tweaked with the screen core a bit, removing a lot of redundant code
  Improved the header detection in the ROM loader (thanks to Gridle for the
   suggestion)
  Modified the way frameskipping is handled
 0.25b10
  Tweaked with the controller code a bit - now DKC and Mario All Stars
   work as expected
 0.25b9
  Fixed a bug in VRAM read ports - they were suggested by zsKnight as a
   likely cause of gfx corruption, and making a change to match a noticed
   difference in the '9X source, gfx corruption went away in the following
   ROMs, and likely others: ActRaiser, FF2, Super Metroid, Wario's Woods...
  Fixed a stupid bug that showed up in 0.25b8 that stopped FF2 from starting
  Several layering priority fixes
 0.25b8
  Removed H-IRQ hack as it was causing more problems than it helped
  Implemented partial support for delayed IRQ
  Implemented a hack in WAI which causes the CPU timing to skip ahead to the
   next event
  Some SPC optimizations
  Another doc was wrong: increased SPC RAM back to 64k, sound is back to
   being reasonable (timing is still terrible)
 0.25b7
  More CPU speed-ups
  Hooked SPC back up with on-demand execution, however sound is not
   considered a 'demand', and SPC is slow and buggy still.
 0.25b6
  Layering priority fix: BG3 highest priority in mode 1 - BG3 high priority
   tiles now drawn over highest priority sprites, not under (helps Mario
   World map)
 0.25b5
  A new logo, thanks to Malenko!
  Fixed a bug in full VRAM address increment
  Fixed a bug that sometimes caused Reset to freeze emulator
  Fixed mode 7 outside-screen-area clip/char 0 repeat - it appears that
   two docs were wrong on this...
  Native mode XCE no longer forces M/X bits set
  Now always keeping 65c816 flags in a register during opcode execution
  More source reorganization
 0.25b4
  Fixed a bug in scrolling hardware ports
  Rewrote more opcodes to take better advantage of new opcode fetcher
 0.25b3
  Implemented alternate 65c816 opcode fetcher (should be considerably
   faster - original one likely to be removed in the future)
  Implemented interleaved HiROM support in ROM loader
 0.25b2
  Finished hooking in last of new horizontal calc code
  Slight speed-up tweak in 65c816 emulation
  Fixed a nasty bug that showed up in 0.25b1 that caused severe gfx
   corruption in at least one ROM (ActRaiser)
 0.25b1 (doh! date in readme said 4-3, should have said 23-3)
  Rewrote horizontal scrolling calc code to reuse data
  Reworked some of the tile cache invalidate tables/recaching code to
   store information on certain special cases of tiles to limit some
   unnecessary checks
  Implemented OAM decode caching - this increases sprite rendering speed
   noticably - more optimizations possible here...
 0.17b7
  Fixed data store method of double write registers (BG scroll, M7 matrix)
  More speed up tweaks in memory mapper and screen core
  Fixed a bug in HDMA code - fixes GPFs after fights in FF5, extra
   sprites in TMNT4 and missing sprites in Killer Instinct
  Disabled DJGPP LFN support (was causing problems in the Load ROM file
   selector in the GUI, because it's still expecting 8.3 filenames)
   Thanks to Lanice for pointing out the crashing! (doh)
  Rewrote a lot more bits of the GUI to use OOP and allow more advanced
   features to be implemented in the future
  Compiling in two new fonts: the font from ZSNES (thanks zsKnight!),
   and a slightly cosmetically modified version of the same
   (only the modified font is available in the GUI at this time)
 0.17b6
  More internal work on GUI
  Fixed a bug in mode 1 background priorities with BG3 high priority
   enabled - helps intro in FF5
  Oops! Removed some code that shouldn't have been in b5 - was causing
   the ROM loader to create a test file the size of the loaded ROM
  Fixed a bug that caused the color subtraction in back area hack to
   kick in sometimes when it shouldn't
 0.17b5
  Fixed a bug in the ROM loader that caused it to get in an endless loop
   on ROMs that weren't an even multiple of 32k (excluding header)
  Fixed a bug that prevented HiROM SRAM from working AND allowed it to
   overwrite other memory
  Implemented SRAM mirroring in HiROM
  Reduced SRAM allocated to 64k and SRAM supported in HiROM to 64k
  Changed the value certain areas of RAM were initialized to to closer
   match SNES '9X
  Changed memory mapper so LoROM/HiROM shared more code/data
  ROM loader: replaced the fstream code with stdio code - this seems to
   fix the problem with 32k ROMs not loading correctly
 0.17b4
  More work on background plotting speed, hw port emulation speed/accuracy
  SPC disabled - stopped working sometime between b2/b3 and needs to be
   rewritten anyway
  More CPU speed
  Fixed many non-emulation related bugs that caused crashes in pure DOS,
   and forced the switch to WDOSX before
  Reverted to standard DJGPP stub now that WDOSX is no longer necessary
  More fixes to LoROM SRAM mapping - SNES '9X source and one problematic
   ROM provided insight into the workings of SRAM mirroring
  Improved emulation of CGDATA/CGDATAREAD:
   now use seperate vars for odd byte reads
  DMA modes 2+ had been disabled for some strange reason (doh!) - fixed
 0.17b3
  Now using WDOSX, because of having too many problems with the standard
   DJGPP stub
  Moved plenty of code around in gfx engine for potential speed increase
   and code size reduction
  Most data moved around in hw port emulation
  Most hw ports now reset in Reset (used in 'Reset Emulation' and
   'Load ROM' in GUI) - some still remain (especially in SPC)
  More work on ROM loader
  Can now go in GUI without specifying ROM on command line, however trying
   to load a ROM in GUI is still painful!
 0.17b2
  Simplified hardware ports in memory mapper
  Improved emulation of OPHCT/OPVCT
  Statically allocating SRAM, WRAM, VRAM, SPC address space, OAM now
  Improved emulation of OAMDATA/OAMDATAREAD:
   now use seperate vars for odd byte reads
  Fixed a bug where 8 bytes too few were being allocated for OAM
  SRAM allocation halved (only 128k now)
  LoROM: SRAM supported reduced to 64k, writes prevented if ROM says less
   exists (allows Puzzle Bobble to start)
 0.17b1
  Implemented speed throttling (thanks to Richard Mitton of the New
   Zealand Story Emulator for help with this!)
  GUI overhaul begun ('3D' appearance added, code is becoming more object
   oriented)
  CFG handler rewrite begun
  Source cleanup/overhaul begun
  LoROM >16Mbit and HiROM memory maps fixed (thanks to zsKnight for help!)
  Implemented Hblank emulation/CPU timing (thanks to zsKnight and the '9X
   source for help and info!)
  Fixed emulation of SLHV register (thanks to '9X source for info!)
  Fixed SPC memory map to only have 32k of RAM
  Fixed a few CPU opcodes
  Fixed a memory overwrite bug in a few CPU opcodes which caused the
   emulator to deconfigure controller keymaps

 0.16f: Various bug fixes and speed-ups.

Thanks go out to...
"""""""""""""""""""
 Nintendo, for making the SNES...
 and the SNES software developers, who suffered through the SNES design,
  showing what it could do, and making it what it is today!

 Pastor M. M. Angel: you know what you're doing with code...
 Y0SHi and Marat Fayzullin: Nintendo emulation wouldn't have come nearly
  this far without you...
 Lord ESNES: For supporting SNES emulation so much, and giving so much
  help to the authors of the more primitive SNES emulators...
 SNES '9X team, past and present: for putting so much effort into making
  it what it is today... fix those quirks!
 zsKnight, _Demo_, Pharos: For ZSNES. Need I say more?
 archeide, Brad Martin: for getting the SPC and sound DSP and generation
  working in the first place...
 zsKnight: for always being so helpful!
 archeide: hope you get that tile editor figured out...

 Richard Ferreira (general code and optimization ideas and support)
 Richard Mitton of the New Zealand Story Emulator (speed-throttling ideas)
 zsKnight (for providing so much help and info... HDMA, memory maps, timing,
  and the list goes on...)
 SNES9X team (for spending so much time on trying to make such an exact
  emulator, and releasing the source to it!)
 zsKnight, for the 5x5 font for the GUI!
 Malenko, for the new logo!
 Lanice, for finding the LFN bug in the GUI!

 Beta testing:
  AC/DC, Malenko, Richard Ferreira
  Y0ssarian, Polestar, Steve, Vilmar, Enternal, [E|YSiUM], Goku19, JaguarPaw,
  JJJJ, Lanice from EFnet-#snesromz and #classicgames, never coulda done it
  without you!

Greets
""""""
 TCF, Borson, Malenko, AC/DC, Richard Ferreira, Richard Mitton
 Everyone from EFnet IRC #snesromz and #classicgames
 Savoury SnaX and Gridle
 archeide, Tim Riemann, Brad Martin, Qwertie, Martijn Kersbergen, B. Walker,
 Paul Robson, Aquarius-1, D.Kieselhof, zsKnight, _Demo_, Pastor M. M. Angel,
 Y0SHi, Albert Lloyd Sawyers, Zachary Williams, Lord ESNES, Jonathan Turner,
 W/\re\/\/0lf, James Cartrette, Duncanthrax, rRNA, Dark Claw, Poiple Shadow,
 Flash, Windwalker, Chris Lacey, MaJiC, Dark Elf, Shade, + any I forgot.

Legalese
""""""""
 SNEeSe is helpware - if you see a problem, help me to fix it.
  Tell me about it if nothing else!

 Anything you do with SNEeSe, and any consequences of your use of SNEeSe
  are your responsibility - do the right thing! If using SNEeSe damages you
  or others in any way, it's your fault and your problem!

 NEVER distribute SNEeSe with commercial ROMs! It is bad for me, bad for
  emulation, and wrong! I didn't write the ROMs, the ROM developers didn't
  write SNEeSe!
  Note: If you wish to distribute SNEeSe with freeware/PD ROMs, contact me
   first!

 NEVER SELL SNEeSe, or any part of it! It is EXPRESSLY PROHIBITED!

 The rights of all trademarks mentioned in this document and in the emulator
  binary executable ("SNEeSe") are retained by their respective owners.

 I have no affiliation with rightful owner of trademarks, copyrights,
  patents, or otherwise of emulated hardware, nor of software that functions
  in the emulation.

 If you ask me for ROMs, you obviously didn't read the rest of this document!
  Go back and catch up, you don't have to be an illiterate leech!
