home *** CD-ROM | disk | FTP | other *** search
/ The Games Machine 38 / ZGIDEMO.iso / Emulatori / s9xd024.zip / README.TXT < prev    next >
Text File  |  1997-10-31  |  34KB  |  735 lines

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