home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / SNES9X-D.RAR / README.TXT < prev    next >
Text File  |  1997-10-07  |  30KB  |  662 lines

  1.                 Snes9X v0.20 Released 8th October 1997
  2.                 --------------------------------------
  3.  
  4. Main Authors
  5. ------------
  6. Gary Henderson                     (gary@daniver.demon.co.uk)
  7. Jerremy Koot a.k.a. The Teacher    (jkoot@euronet.nl)
  8.  
  9. Platform Porters
  10. ----------------
  11. Chad Kitching a.k.a. Trepalium     (kitchingc@mail.techplus.com)
  12. John Stiles                        (jstiles@uclink4.berkeley.edu)
  13. Jeremy Shear                       (jeremy@netzone.com)
  14. Gary Henderson                     (gary@daniver.demon.co.uk)
  15. Jerremy Koot a.k.a. The Teacher    (jkoot@euronet.nl)
  16.  
  17.  
  18. Contents
  19. --------
  20. Introduction
  21. Key Features
  22. What's New
  23. What's Missing
  24. What You Will Need
  25. Getting Started/Command Line Options
  26. Keyboard Controls
  27. Joystick Support
  28. Problems With ROMs
  29. Sound Problems
  30. Converting ROM Images
  31. Speeding up the Emulation
  32. Known problems
  33. Credits
  34.  
  35. Introduction
  36. ------------
  37.  
  38. Snes9X is coded in C++ with an assembler CPU emulation core on the Linux and
  39. MS-DOS ports. It is a spare-time project being written by Gary Henderson and
  40. Jerremy Koot. 
  41.  
  42. This read-me file describes the MS-DOS port of Snes9x, a freeware Super
  43. Nintendo Entertainment System (SNES) emulator. Other ports are available:
  44. Jerremy Koot works on the Windows 95 port, Gary Henderson maintains the
  45. Linux i386 and Sun Solaris ports and John Stiles and Jeremy Shear work on
  46. the Mac port.
  47.  
  48. If you have any questions or comments on this port of Snes9x, please write to
  49. me at kitchingc@mail.techplus.com.  Be aware that I can only help on MS-DOS
  50. issues.  I don't own a mac, don't have linux installed, and don't use the
  51. Windows 95 port often, so I cannot answer any questions on those.  If you
  52. wish to e-mail me a file, please ask for permission first, because a 2MB file
  53. takes a while to get though a 28.8kbps modem, and internet time is currently
  54. expensive for me.  All requests for ROM images will be ignored, and/or
  55. forwarded to the emulation abuse database.  Please make sure you've read this
  56. file completely, and the faq.txt file completely before sending me a question
  57. or bug report.
  58.  
  59. Key Features
  60. ------------
  61. o A user-friendly user interface in the DOS and Windows ports
  62. o Speed: Snes9x now gives NLKSNES, formally the the fastest SNES emulator, a
  63.   run for its money, while being more compatible, supporting sound and have
  64.   more features. Also, many parts of Snes9x are still in C++; more speed
  65.   could be gained be rewriting other parts of the emulator in assembler.
  66.   NLKSNES is already written in assembler.
  67.   Many games now play full speed on a P100 WITH SOUND will only a frame skip
  68.   of one.
  69. o 16-bit, digital stereo sound on all ports.
  70. o Two screen refresh methods, an accurate, but slower mode and a much faster
  71.   tile-based mode which now has all the features of the line-by-line code,
  72.   except mosaic and window effects.
  73. o Multiple screen mode supported on the Linux S-VGA and MS-DOS ports.
  74. o Simultaneous two SNES joy-pad emulation allowing two player games to be
  75.   played.
  76. o Lots of ROMs work, the numbers are increasing with each release (slowly).
  77. o Cheat functions, now including both RAM-patch and code-based cheats.
  78. o Support for one 2, 4 or 6 button joystick or two 2-button joysticks - Linux
  79.   and MS-DOS ports only.
  80. o Snapshot a game in progress and restore the game to that exact point at
  81.   a later time.
  82. o Complete, fast mode 7 emulation (screen rotation and scaling) - all except
  83.   one rarely used feature.
  84. o Complete H-DMA emulation for those split screen and wavy background effects.
  85. o Background clip windows for those shaped H-DMA zoom effects.
  86. o Mosaic effect.
  87. o Compressed and/or split ROM image support.
  88. o SNES image scaling.
  89. o 8-bit, 16-bit and 24-bit X11 server support.
  90. o An uncrackable binary - mainly because it has no protection to crack such as
  91.   time limits, limited colours, etc., etc. and never will.
  92.  
  93. What's New
  94. ----------
  95. Snes9X v0.2
  96. -----------
  97. - C++ and assembler CPU emulations rewritten with many speed improvements.
  98. - SPC700 emulation speeded up and partially rewritten in assembler.
  99. - Line-by-line graphics code rewritten for more speed - still have lots more
  100.   ideas on how to improve speed further.
  101. - Tile-based graphics code rewritten for  a major speed increase, and
  102.   its features extended to support all those in the line-based code except
  103.   for mosaic and graphic window effects.
  104. - Tile-based graphics code now the default redraw method.
  105. - DMA code rewritten for speed - really helps ROMs that make use of a lot of
  106.   DMA.
  107. - Mode 7 screen rotation code rewritten for a major speed increase. Also,
  108.   several scrolling offset bugs fixed.
  109. - Several sound code fixes and speed ups.
  110. - LoROM S-RAM memory map bug fixed. Now Uniracers works plus several others.
  111. - V-RAM reading bug fixed. This fixed at least three ROMs that I know of.
  112. - Variable-cycle length emulation removed as a fixed-length cycle emulation
  113.   was faster to implement. Unfortunately, this has broken compatibility with
  114.   several ROMs which I'll try and fix soon.
  115. - Auto-frame rate adjust can now be turned on and off using the +/- keys.
  116. - RAM-patch cheat engine ported from snes97 to snes9x
  117. - Nice new user interface in the MS-DOS port.
  118. - Snes9X.INI file for storage of defaults
  119.  
  120. Snes9X v0.131, v0.13
  121. --------------------
  122. - Due to big errors, I've discarded most of the changes from this release,
  123.   and reimplemented a few of them a little better in 0.20
  124.  
  125. Snes9X v0.12
  126. ------------
  127. - Auto-frame rate adjust to keep a constant game and music speed - idea from
  128.   Bloodlust (thanks).
  129. - Sound state now saved and restored in snapshot files.
  130. - Pro Action Reply, Game Genie(TM) and Gold Finger cheat code support.
  131. - Added long name forms of all the command line switches.
  132. - Added option to disable a few "internal" speed up hacks that caused problems
  133.   for some games with sound enabled - e.g. Super Off Road Racing.
  134. - Sound code rewritten to help support a group of ROMs that spool sound data
  135.   between the two the CPUs in real-time, although I'm still having timing
  136.   problems with these ROMs.
  137. - Fixed memory locking problem on the MS-DOS port. It was effectively
  138.   preventing virtual memory from working, causing problems for people with
  139.   limited RAM.
  140. - A few more sound fixes.
  141. - Speed ups to the tile-based redraw code.
  142.  
  143. Snes9X v0.1
  144. -----------
  145. - Sound support on all ports.
  146. - The name has changed!
  147. - Multiple SPC700 CPU emulation fixes and several sound DSP fixes - many more
  148.   ROMs work with sound enabled.
  149. - Added fix for ROMs that re-use sprites during the same frame.
  150. - Fixed bug I accidentally added to Allegro keyboard scanning code - now no
  151.   more lock ups when Caps-lock or Pause pressed on DOS port.
  152. - Documented some extra keys and command line options that have always been
  153.   there.
  154. - Asm CPU core speed ups.
  155. - Minor bug fix that helps Final Fantasy 3.
  156. - Added code to help some games that use sub-screen addition/subtraction.
  157.   The lack of sub-screen addition/subtraction shows itself as background
  158.   'priority' problems - now you don't have to toggle background layers on
  159.   and off so often just to see hidden text, characters, or maps, etc.
  160.   Use -L to enable. Toggle with '8' during a game to see if it makes a
  161.   difference.
  162.   Acts as a good intermediate solution until sub-screen addition/subtraction
  163.   is actually implemented in a future release.
  164. - Made several bug fixes to the old, but faster tile-based drawing code
  165.   (enabled by pressing '9') - now several more ROMs work with it enabled.
  166. - Modified sound skipper code - helps several ROMs that previously didn't work
  167.   with the current selection of APU skippers.
  168. - Improved sound mixing code so volume is not attenuated so much, giving
  169.   better results on 8bit sound cards.
  170. - Changed the frequency at which the joystick polling routine is called - now
  171.   called every-other frame rather than every 3rd frame.
  172. - Recompiled Linux and DOS ports with the Pentium optimising version of gcc -
  173.   gives a few percent speed increase (on a Pentium processor).
  174. - Fixed sprite priority bug with Mode 7 - apparently Final Fantasy 3 needs
  175.   this.
  176. - Fixed a screen clipping problem with the Linux S-VGA mode.
  177. - Fixed bug that had crept in with -m 2 Linux S-VGA mode.
  178. - Fixed S-VGA Linux version with sound enabled.
  179. - Fixed #define problem that was stopping DOS snapshot saving from working.
  180.  
  181. Coming Soon
  182. ------------
  183. - GrIP support in MS-DOS
  184. - Control reconfigure in MS-DOS
  185. - GUI-based cheat code entry in MS-DOS
  186. - Linux and Solaris versions with a GUI.
  187. - Mosaic and graphic window support for the tile code.
  188. - Sub-screen addition/subtraction using a full 32000 colour screen mode - none
  189.   of this simulate-in-256-colours rubbish.
  190.  
  191. What's Missing
  192. --------------
  193.  
  194. Sub-screen addition and subtraction (used for transparency effects), offset
  195. change mode (no idea what its used for), sound pitch modulation and echo
  196. effects, pseudo 512 horizontal pixel mode and an interlaced display are all
  197. missing. Also, colour palette changes during the frame are not emulated
  198. correctly.
  199.  
  200. A couple of other odd features that no ROMs seem to use are also missing.
  201.  
  202. Some ROM cartridges contained additional hardware such as the SuperFX chip (a
  203. 16MHz RISC processor) or DSP chip, neither of these chips are emulated at the
  204. moment so games that use them like Mario Kart, DOOM, Yoshi's Island, etc.
  205. don't work.
  206.  
  207. What You Will Need
  208. ------------------
  209.  
  210. The MS-DOS port requires a Pentium-class PC or higher running Linux with 16Mb
  211. or more of RAM and MS-DOS (or PC-DOS, DR-DOS, whatever) v3.30 or later.
  212. Snes9x will run under Windows 95 in a DOS box without a problem, although for
  213. more speed, you may want to run it in a true DOS session.
  214.  
  215. For sound output in DOS, you need to have a 100% Sound Blaster compatible
  216. sound card.  Beware: Some sound cards have very flakey Sound Blaster
  217. emulation.  I can only guarentee that they should work on authentic Creative
  218. Labs Sound Blaster devices.
  219.  
  220.           Bare minimum      Recommended              Optimum Equipment
  221.           ------------      -----------              -----------------
  222. System:   80386SX           Pentium-100 or better    Pentium-200 or better
  223. Memory:   16MB              16MB                     16MB
  224. Video:    VGA               SVGA                     VESA2 compliant SVGA
  225. Input:    Keyboard          Keyboard or joystick     Keyboard or joystick
  226. Sound:    None              Sound Blaster 16         Sound Blaster 16
  227.  
  228. Be aware that the bare minimum is NOT a recommended minimum.  Snes9x will be
  229. torture on a 386sx.  Anything less than a 486dx2 should not be used, for
  230. purposes of preserving your sanity.
  231.  
  232. Access to SNES ROM images in *.smc, *.sfc, *.fig or *.1, *.2, or sf32xxxa,
  233. sf32xxxb, etc., format will also help otherwise you will have nothing to run!
  234. Several public domain images are available from:
  235. http://www.rollanet.org/~khigh/emulator.htm
  236.  
  237. Some commercial ROM images are available via the Internet.
  238.  
  239. Please note, it is illegal in most countries to have commercial ROM images
  240. without also owning the actual SNES ROM cartridge.
  241.  
  242. PLEASE DO NOT ASK JERREMY, GARY, MYSELF OR ANYONE ELSE ON THE SNES9X TEAM
  243. FOR ROM IMAGES OR FOR INFORMATION ON WHERE TO GET MORE, WE DO NOT KNOW AND
  244. WILL IGNORE ALL SUCH E-MAILS OR, IF WE ARE HAVING A PARTICULARLY BAD DAY,
  245. FORWARD THE E-MAIL TO THE EMULATOR ABUSE DATABASE.
  246.  
  247. Getting Started
  248. ---------------
  249.  
  250. From the dos prompt just type:
  251. snes9x <ROM filename>
  252.  
  253. ROM images are normally loaded from the directory .\roms. This can be
  254. changed by specifying a pathname with the image name or setting the
  255. environment variable SNES96_ROM_DIR to point to a different directory.  You
  256. can also customize the directory by editing the snes9x.ini file to suit your
  257. preferences.  In fact, I suggest using the .ini file over the environment
  258. variable, because under DOS, the environment space is very limited.
  259.  
  260. Snapshot files and S-RAM save files are normally read from and written to the
  261. directory .\snesnaps. This can be changed by setting the environment variable
  262. SNES96_SNAPSHOT_DIR or editing the SnapshotPath in the snes9x.ini file to
  263. point to a different directory.
  264.  
  265. Some command line flags are available:
  266.  
  267. Sound options:
  268. -S or -sound (default: on)
  269.    Enable sound CPU emulation and actual sound output.
  270. -NS or -nosound
  271.    Disable sound CPU emulation and sound output, useful for the few ROMs
  272.    where sound emulation causes them to lock up due to timing errors.
  273. -stereo (default: mono)
  274.    Enable stereo sound output (requires more CPU power to implement)
  275. -r 0-7 or -soundquality 0-7 (default: 4)
  276.    Sound playback rate/quality:
  277.        0 - disable sound, 1 - 8192, 2 - 11025, 3 - 16500, 4 - 22050 (default),
  278.        5 - 29300, 6 - 36600, 7 - 44000.
  279. -B size or -buffersize size (default: auto-select)
  280.    Sound playback buffer size in bytes 128-4096
  281.  
  282. Cheat options:
  283. -gg <code> or -gamegenie <code>
  284.    Supply a Game Genie code for the current ROM. Up to 10 codes can be in
  285.    affect at once. Game Genie codes for many SNES games are available from:
  286.    http://game-genie.nvc.cc.ca.us/  Caution: Game genie codes seem a bit
  287.    flakey yet when using them in snes9x.  There may be an error in the decode
  288.    process, or something.
  289. -ar <code> or -actionreplay <code>
  290.    Supply a Pro-Action Reply code for the current ROM. Up to 10 codes can be
  291.    in affect at once. At the moment, codes which alter RAM do not work.
  292. -gf <code> or -goldfinger <code>
  293.    Supply a Gold Finger code for the current ROM. Up to 10 codes can be in
  294.    affect at once.
  295.  
  296. Speed up/slow down options: (See "Speeding Up The Emulation")
  297. -f <frame skip count> or -frameskip <frame skip count> (default: 4)
  298.    Set this value to set the frame skip rate. Use a larger value faster
  299.    emulation but more jerky movement and a smaller value for smooth but
  300.    slower screen updates.  Use '+' and '-' keys to modify the value during
  301.    a game.
  302. -fauto
  303.    Enables auto speed regulation. Makes the game and sound run at the correct
  304.    speed, by stalling, or skipping frames based on the actual framerate.
  305. -ft <time> or -frametime <time>
  306.    Sets the speed between frames in milliseconds.  Defaults are 17ms for
  307.    NTSC games (~59-60Hz), and 20ms for PAL games (50Hz).
  308. -h <0-200> or -cycles <0-200>(default: 90)
  309.    Percentage of CPU cycles to execute per scan line, decrease value to
  310.    increase emulation frame rate. Most ROMs work with a value of 85 or above.
  311. -O or -tileredraw (default: enabled)
  312.    Enable cached-tiled based screen redrawing method. Gives a very noticeable
  313.    frame rate increase but doesn't yet support mosaic and window effects.
  314. -NO or -lineredraw
  315.    Enable line-by-line based screen redrawing method. It's quite slow, but
  316.    supports mosaic and window effects, and is less likely to mess up while
  317.    displaying.
  318. -j or -nojoy (default)
  319.    Turn off automatic joystick detection (joystick polling on the PC slows
  320.    the emulator down).
  321.  
  322. Linux S-VGA:
  323. -m <0-4> or -mode <0-4> (default: 2)
  324.    Screen mode/resolution (try -m 0 if the default mode is not compatible
  325.                            with your hardware)
  326.          0 - 320x240 ModeX, 1 - 320x200 VGA, 2 - 256x256 Non-standard VGA,
  327.          3 - 640x480 Auto, 4 - 640x480 VESA 1.x, 5 - 640x480 VESA2(Banked)
  328.          6 - 640x480 VESA2 Linear, 7 - 640x400 Xtended, 8 - 800x600 Auto
  329.    Another way you can set your preferred resolution is to edit the
  330.    snes9x.ini file.  You can choose Video card, and resolution resolution
  331.    from there.
  332.  
  333. -scale (default: no scale)
  334.    Scale SNES image to fit screen resolution (significant slowdown).
  335.  
  336. ROM image format options:
  337. -i or -interleaved (default: auto-detect 32Mbit ROM images)
  338.    Inform emulator ROM image is in interleaved format.
  339. -ni or -nointerleave
  340.    Inform emulator ROM image is not in interleaved format.  (default, and
  341.    currently useless)
  342. -FH or -F or -forcehirom (default: auto-detect)
  343.    Force Hi-ROM memory map for ROMs where the Hi-ROM header test fails.
  344. -FL or -forcelorom (default: auto-detect)
  345.    Force Lo-ROM memory map for ROMs where the Hi-ROM header test fails, e.g
  346.    Micro Machines, Pacman.
  347. -o or -old (default: disabled)
  348.    Enable old-style joy-pad emulation (required by a few ROMs, e.g.
  349.    Super Bomber man 1, Star Wars trilogy)
  350. -p or -pal (default: auto-detect)
  351.    Fool ROM into thinking this is a PAL SNES system.
  352. -n or -ntsc (default: auto-detect)
  353.    Fool ROM into thinking this is a NTSC SNES system.
  354. -ss <0-3> or -soundskip <0-3> (default: 0)
  355.    SPC-700 skip wait method - NOT USED IF SOUND IS ENABLED.
  356.    Use 1 for Metroid 3 and Animatics, and 3 for NBA Live 96.
  357. -L or -layering (default: off)
  358.    Swap background layer priorities from background involved in sub-screen
  359.    addition/subtraction. Can improve some games playability - no need to
  360.    constantly toggle background layers on and off to read text/see maps, etc.
  361.    Toggle feature on and off during game by pressing '8'.
  362. -l <snapshot file name> or -loadsnapshot <snapshot file name>
  363.    Load snapshot file and required ROM image and restart game from saved
  364.    position.
  365. -H or -nohdma (default: H-DMA enabled)
  366.    Turn off the H-DMA emulation. Pressing '0' during a game toggles H-DMA on
  367.    and off. Only use if H-DMA causes a problem for a game, e.g.
  368.    Super Punchout.
  369. -N or -nospeedhacks (default: speed hacks)
  370.    Turn off a couple of speed hacks. The hacks boost the speed of many ROMs
  371.    with sound enabled but cause problems a few ROMs, e.g. Super Off-Road Racer.
  372. -SH or -speedhacks
  373.    Re-enables the speed hacks which can, in some cases, double the emulation
  374.    speed of the ROM.
  375.  
  376. Joystick options:
  377. -2 or -two (default: Off)
  378.    Joystick connected to computer has 2 buttons.
  379. -4 or -four (default: Off)
  380.    Joystick connected to computer has 4 buttons.
  381. -6 or -six (default: Off)
  382.    Joystick connected to computer has 6 buttons.
  383. -s or -swap
  384.    Swap emulated joy-pad 1 and 2 around, pressing '6' during a game does the
  385.    same thing.
  386. -j or -nojoy
  387.    Turn off automatic joystick detection (joystick polling on the PC slows
  388.    the emulator down).
  389.  
  390. Limited use options:
  391. -nogui
  392.    Turns off the menu system, and reverts to snes9x 0.12-type handling of
  393.    ESC, F2 and F3.  Only useful for front-end systems.
  394. -quiet
  395.    Turns off the pre-game status report when you specify a game on the
  396.    command line.  No effect if you just run snes9x without specifying a
  397.    ROM, because the GUI system will start-up instead.  Only useful for
  398.    front-end systems.
  399.  
  400. For example, to start a game called "mario", with sound, tile-based redrawing
  401. and 256x256 graphics mode, type:
  402.  
  403. snes9x mario.smc -O -m 2 -sound
  404.  
  405. Keyboard Controls
  406. -----------------
  407.  
  408. While the emulator is running:
  409. 'Escape'                 Enter the in-game menu system
  410. 'Pause' or 'Scroll Lock' Pause the emulator
  411.  
  412. Joy-pad 1:
  413. 'up' or 'u'             Up direction
  414. 'down', 'j' or 'n'      Down direction
  415. 'left' or 'h'           Left direction
  416. 'right' or 'k'          Right direction
  417. 'a', 'v' or 'q'         TL button
  418. 'z', 'b' or 'w'         TR button
  419. 's', 'm' or 'e'         X button
  420. 'x', ',' or 'r'         Y button
  421. 'd', '.' or 't'         A button
  422. 'c', '/' or 'y'         B button
  423. 'Left Control' or 'Left Meta' Start button
  424. 'Left Shift'            Select button
  425.  
  426. Joy-pad 2:
  427. 'Keypad 8'              Up direction
  428. 'Keypad 2'              Down direction
  429. 'Keypad 6'              Left direction
  430. 'Keypad 4'              Right direction
  431. 'Insert'                TL button
  432. 'Delete'                TR button
  433. 'Home'                  X button
  434. 'End'                   Y button
  435. 'Page Up'               A button
  436. 'Page Down'             B button
  437. 'Right Control' or 'Right Meta'    Start button
  438. 'Right Shift'           Select button
  439.  
  440. '0'                     Toggle H-DMA emulation on/off.
  441. '1'                     Toggle background 1 on/off (useful for speeding up the
  442. '2'                     Toggle background 2 on/off  emulation and for ROMs
  443. '3'                     Toggle background 3 on/off  that use colour addition in
  444. '4'                     Toggle background 4 on/off  a certain way, e.g. Zelda)
  445. '5'                     Toggle sprites (OBJs) on/off
  446. '6'                     Toggle swapping of joy-pad one and two around
  447. '7'                     Take a snapshot of the current screen and save it to
  448.                         a file.
  449. '8'                     Toggle background layer priorities for backgrounds
  450.                         involved in sub-screen addition/subtraction.
  451. '9'            Toggle old, cached-tiled based screen redrawing method
  452.             on/off. Gives noticeable speed increase but many ROMs
  453.                         can exhibit slight to severe screen redisplay
  454.             problems.
  455.  
  456. '-'            Decrease frame redraw skip rate
  457. '+'            Increase frame redraw skip rate
  458.             The sequence is auto-frame rate adjust, render every
  459.                         frame, render 1 frame in two, render 1 frame in three,
  460.                         render 1 frame in four, etc.
  461. 'F2'                    Load a game's saved position
  462. 'F3'                    Save a game's position
  463.  
  464. 'F4' -> 'F11'        Toggle sound channels on/off
  465. 'F12'            Turn on all sound channels.
  466.  
  467. Joystick Support
  468. ----------------
  469.  
  470. The MS-DOS port of Snes9X supports one or two 2-button joysticks, or one
  471. 4-button or 6-button joystick - this limitation is imposed by PC hardware.
  472. Currently, there's no way to remap the buttons on the joystick, however, this
  473. should change in a future version, since the incorperation of the game menu
  474. system.
  475.  
  476. On a 2-button joystick only the A and B SNES buttons are available, the
  477. remaining 4 can still be accessed via the keyboard.
  478.  
  479. The following diagram showing you the button layout for 6-button PC joy-pads
  480. that look similar to real SNES joy-pads:
  481.  
  482.      ---TL---           ---TR---
  483.  
  484.         ^                  X
  485.         |
  486.      <-   ->            Y     A
  487.         |       /  /
  488.         v                  B
  489.  
  490.  
  491. Make sure the joystick is centred or no buttons pressed for joy-pads when
  492. the emulator is first started to enable auto-calibration to work.  Manual
  493. calibration is currently not possible, but will be added soon.
  494.  
  495. Problems With ROMs
  496. ------------------
  497.  
  498. If the emulator just displays a black screen for over 10 seconds then one
  499. of the following could be true:
  500.  
  501. 1) The ROM image is corrupt. More likely is the ROM image is in interleaved 
  502.    format; use the -i command line flag to tell the emulator it is in this
  503.    format.
  504. 2) Some ROMs have a bad ROM header, mostly home-brewed SNES games or hacked
  505.    commercial games. Snes9X cannot then detect if it is a Lo-ROM or Hi-ROM
  506.    game and just guesses. You might have to use the -F to force Hi-ROM or -FL
  507.    to force Lo-ROM to help it out.
  508. 3) The ROM is in a loop waiting for the Sound CPU to respond with a particular
  509.    value. Try turning off sound support. You might also have to change the
  510.    sound skip method using the -ss command line option.
  511. 4) The ROMs FAST ROM protection check has failed and the ROM has deliberately
  512.    crashed itself. The only thing you could try is one of the utilities on
  513.    the 'net that remove such protection.
  514. 5) You have set the -h command line value too low.
  515. 6) The original SNES ROM cartridge had additional hardware inside that is not
  516.    emulated yet - this is true for all SuperFX games (DOOM, etc.) and DSP
  517.    games (Mario Kart, Yoshi's Island, etc.). 
  518. 7) The ROM image has found a CPU emulator instruction or memory map bug -
  519.    please e-mail with name of ROM images that do this. Unfortunately, it is
  520.    difficult to tell this problem from the protection failure problem
  521.    described above without disassembling the ROM.
  522.  
  523. If the game starts normally but refuses to go beyond the title screen try
  524. using the -o command line flag to enable old-style SNES joy-pad emulation or
  525. try pressing '6' in the emulator to swap joy-pads around; Mario All Stars
  526. swaps joy-pads around with old-style SNES joy-pad emulation enabled.
  527.  
  528. If the ROM says "This game is not for your system" or something similar,
  529. try using the -p flag to force PAL mode or -n to force NTSC mode.
  530.  
  531. Also, some ROMs use background colour addition (which isn't emulated yet) in
  532. such a way that is hides the character you are trying to control or important
  533. scenery; try toggling the background layers on and off with the keys 1 to 4 to
  534. see if you can find the background layer causing the problem and leave it
  535. switched off or try pressing '8' which changes the background priority levels
  536. for backgrounds involved in sub-screen addition/subtraction.
  537.  
  538. Converting ROM Images
  539. ---------------------
  540.  
  541. If you have a ROM image in several pieces, simply rename them so their
  542. filename extensions are numbered: e.g. game.1, game.2, etc. Then, when
  543. loading the ROM image, just specify the name of the first part; the remaining
  544. parts will be loaded automatically.
  545.  
  546. If they are already in the form sf32xxxa, sf32xxxb, etc., you don't even have
  547. to rename them; just specify the name of the first part, as above.
  548.  
  549. Speeding up the Emulation
  550. -------------------------
  551.  
  552. Try the following command line flags:
  553. -f or -frameskip <frame skip rate> (default auto-adjust)
  554.    Set this value to set the frame skip rate. Use a larger value for faster
  555.    emulation but more jerky movement and a smaller value for smooth but
  556.    slower screen updates. Use '+' and '-' keys to modify the value during a
  557.    game.
  558.  
  559. -fauto
  560.    Turn on auto-regulation of speed.  Just beware that it will not exceed a
  561.    fixed frame-rate setting of -f 10.
  562.  
  563. -ft or -frametime <Milliseconds per emulated frame> (default: 20 or 17)
  564.    If auto-speed regulation is in effect, this value is used as the time, in
  565.    milliseconds, that an emulated frame should take. The frame skip rate
  566.    is automatically adjusted or the CPU paused to try and maintain this
  567.    target. 486 and low-end Pentium machines might never be able to hit the
  568.    default 20ms target with sound enabled, so you might want to increase this
  569.    value to maintain a constant, but slower game speed.
  570.    Under Windows 95 this value is currently limited to next greater
  571.    5ms value.  You can by-pass that by editing the snes9x.ini file, and the
  572.    PIF file for snes9x.exe
  573.  
  574. -h or -cycles <CPU percentage of cycles execute> (default: 90)
  575.    Lowering this value will increase the frame rate but setting the
  576.    value too low can cause problems from some ROMs because not
  577.    enough CPU instructions are being executed per frame as the ROM
  578.    expects and can actually slow down a game! Most games work with a value
  579.    of 85 or above.
  580.  
  581. -m or -mode <screen mode> (default: 2)
  582.    Some screen modes allow faster screen update than others, -m 2, the default
  583.    is usually the fastest on most systems, but try the other modes, you never
  584.    know.
  585.  
  586. -j or -nojoy (default: off)
  587.    Disable automatic joystick detection. Reading joystick values on a PC takes
  588.    a relatively long time. If you have a joystick attached to your computer
  589.    that you are not using, use this option to stop the joystick from being
  590.    polled.
  591.  
  592. Disabling sound also speeds up the emulator because to get sound on an SNES
  593. another 2.5MHz CPU must be emulated together with the eight channel sound DSP
  594. and real-time sample decompression. If you must have sound, don't enable
  595. stereo output and also consider lowering the playback rate.
  596.  
  597. Turning off some of the background layers by pressing '1' to '4' also speeds
  598. up the emulator. As always, you could try running the emulator on a faster
  599. machine/graphics card!
  600.  
  601. Known Problems
  602. --------------
  603.  
  604. Problem:  The GUI may stop responding if Windows 95 suggests that this program
  605.           should be run in DOS mode.
  606. Solution: Press ctrl-alt-end (not ctrl-alt-del) to terminate snes9x, and
  607.           either change the snes9x.pif file so that win95 won't suggest DOS
  608.           mode, or set WindowsFriendly=1 in the snes9x.ini file.
  609.  
  610. Problem:  After loading several games, some games will refuse to run.
  611. Solution: I'm forgetting to reinitialise something, but I'm not sure what.
  612.           But since it doesn't happen too often, the only solution is to exit
  613.           snes9x, then restart it.
  614.  
  615. Problem:  "Near" and "Changed" searches take FOREVER!
  616. Solution: Sorry, those searches have to analyse a lot of data, so you'll just
  617.           have to wait it out.
  618.  
  619. Problem:  Can't specify Game Genie/PAR/GoldFinger cheats within the GUI.
  620. Solution: I haven't yet finished a GUI-based dialog interface to add and
  621.           remove these codes.  A future version will feature this.
  622.  
  623. Problem:  Some previously working games do not run anymore, or run very
  624.           slowly.
  625. Solution: The default cycles per scanline was reduced to be comparable to
  626.           esnes and nlksnes.  You may need to specify -h 100 on the command
  627.           line to get a few games running.  There is currently no GUI
  628.           interface to this, sorry.
  629.  
  630. Credits
  631. -------
  632.  
  633. Thanks to Jared Hoag (Aquis) for the background graphic which integrated
  634. nicely into the menu system.
  635.  
  636. Game Genie(TM), Gold Finger and Pro Action Replay cheat system information was
  637. obtained from DiskDude's SNES Kart v1.6 document.
  638.  
  639. A great big thank you to Steve Snake for his insights into SNES sound sample
  640. decompression.
  641.  
  642. Many thanks must go to Jerremy Koot (jkoot@euronet.nl) because without all
  643. his hard work on the original Snes96 and Snes97 Windows 95 versions, Snes9X
  644. would not exist in its current form.
  645.  
  646. Thanks to Lee Hyde (lee@jlp1.demon.co.uk) for his quest for sound information
  647. and the Windows 95 icon.
  648.  
  649. Thanks also to a person who shall remain nameless for his continuing quest for
  650. SNES information on my behalf (thanks to him, SuperFX emulation might be a
  651. reality one day).
  652.  
  653. SNES is a trademark of Nintendo. 
  654. MS-DOS, Windows 95 and Windows are trademarks of Microsoft.  
  655. Sound Blaster is a trademark of Creative Labs.
  656. Game Genie is a trademark of Lewis Galoob Toys, Inc.
  657. The Graphics Interchange Format(c) is the Copyright property of CompuServe
  658. Incorporated. GIF(tm) is a Service Mark property of CompuServe Incorporated.
  659. LZW compression, used as a part of GIF generation is patented by Unisys.
  660. ------------------------------------------------------------------------------
  661. Chad Kitching (kitchingc@mail.techplus.com)
  662.