home *** CD-ROM | disk | FTP | other *** search
/ Igromania 1999 September / 24_09_1999.iso / Emulat / Readme / SNES9.TXT < prev    next >
Text File  |  1999-08-31  |  37KB  |  764 lines

  1. Snes9x: The Portable Super Nintendo Entertainment System Emulator
  2. =================================================================
  3. v1.18d 10-MAR-1999
  4. ==================
  5.  
  6. Home page: www.snes9x.com
  7.  
  8. Contents
  9. ========
  10. Changes Since Last Release
  11. Introduction
  12. What's Emulated
  13. What's Not
  14. What You Will Need
  15. Getting Started/Command Line Options
  16. Keyboard Controls
  17. Joystick Support
  18. Netplay Support
  19. Super FX
  20. Problems With ROMs
  21. Sound Problems
  22. Converting ROM Images
  23. Speeding up the Emulation
  24. Credits
  25.  
  26. Changes Since Last Release
  27. ==========================
  28.  
  29. GUI
  30. - Added Background Selector
  31. - Fixed up some code
  32. - Fixed the problem of not clearing the memory when loading a new rom!
  33. - Added Kreed's Interpolation routines (replaces TVMode for now)
  34.  
  35. 1.18
  36. - Implemented a sync-sound mode where sound data gets generated in sync with
  37.   SPC700 instructions being executed. Finally the sound Williams Arcade
  38.   classics can be heard. Also helps slight sound timing problems in many other
  39.   games but doesn't fix Mortal Kombat 2 like I thought it would - its 
  40.   sound routine programmers must have been on drugs or something!
  41. - Added interpolated sound - gives low frequency sounds much more bass similar
  42.   to a real SNES especially with the playback rate ramped up to 44KHz.
  43. - Added on-screen messages as various emulation options are toggled on and off
  44.   using the in-game keys.
  45. - Fixed a PPU register read bug with the sprite register write position. Thanks
  46.   to Takehiro TOMINAGA for the bug report.
  47. - Altered the auto-frame skip timing code to only wait and re-sync to the end 
  48.   of frame when frames haven't been skipped. Again thanks to Takehiro.
  49. - Speeded up the colour addition and subtraction code using ideas from
  50.   Takehiro.
  51. 1.17
  52. - Linux and UNIX sound code now driven directly from signal timer handler 
  53.   rather than the timer handler just setting a flag which had to be polled in
  54.   the main emulation code. Slightly faster execution.
  55. - Fixed the crash bug in the ZSNES Super FX asm code with Vortex - the game's
  56.   polygons still aren't visible though.
  57. - Implemented bent-line increase and exponential decay and sustain volume
  58.   envelopes - they should match, or at least be very similar to the real SNES
  59.   sound DSP chip now.
  60. - It would seem ROMs can key on sound channels even if the channel hasn't
  61.   been keyed-off, Pac-In-Time requires it. Changed code to allow it.
  62. - Quick mod to ZSNES Super FX code to get Winter Gold working - it was already
  63.   working with the C Super FX code.
  64. - Added emulation of the extra 1/2 scan-line per frame on PAL and NTSC - 
  65.   should help improve music speed emulation.
  66. - Worked around the click sound heard when ROMs use 0 volume envelope attack
  67.   rate.
  68. - Removed the 'check for IRQ already happened' H-IRQ position register setting
  69.   code - it was causing problems for Ninja Warriors and was not required by
  70.   F1 Grand Prix.
  71. - Fixed a bug in the new sound code - the sustain part of the 
  72.   attack-decay-sustain-release volume envelope was being skipped if the 
  73.   sustain level wasn't at 100%. The fix has helped some music notes from 
  74.   being cut off early in a few games.
  75. - Added fix to Pro Action Reply support (again). Thanks to Paul Shoener III for
  76.   the original fix and Gil Pedersen for reminding me to apply it!
  77. - Finally fixed the Tales of Phantasia 'bum note' problem! The ROM set its
  78.   sample directory to the upper-most page and I forget to code for the hidden
  79.   64 bytes of RAM, that appear when the boot ROM is switched off, when fetching
  80.   sample addresses.
  81. - Adjusted the relative cycle length between the 65c816 and the SPC700 slightly
  82.   to get Terranigma working again.
  83. - Oops, the emulated joypads 3 and 4 via the emulated Multi-player 5 interface
  84.   weren't working. Thanks to Steffen Schwenke for the bug report.
  85. - Optimised the echo sound code - by-passed the the FIR filter code if only
  86.   a pass-through FIR filter was defined by the ROM.
  87. - Modified V and H-IRQ register changing code to trigger an IRQ immediately if
  88.   V-IRQ is enabled and the scan-lines match and either H-IRQ is not enabled or
  89.   the electron beam position has already gone past the trigger point. Fixes 
  90.   the screen flicker in F1 Grand Prix.
  91. - Modified the priority-per-pixel mode 7 code to use BG#1's clipping data if
  92.   the top bit of the mode 7 pixel is set. Fixes initial track drive-through
  93.   display in F1 Grand Prix.
  94. - Modified the sprite priority levels for the priority-per-pixel mode 7
  95.   display. Now the car can be seen in F1 Grand Prix.
  96. - Wrote a sound DSP register recording scheme which 'plays back' the register
  97.   changes in sync with the sound generation code. I'm bit disappointed, it
  98.   only improves the sound in a very few games... Scrapped the code, it actually
  99.   causes more problems than it fixes. Oh, well, another 3 weeks work wasted...
  100. - Fixed a SPC700 wake up problem for Lufia I - made the SPC700 also wake up
  101.   when the 65c816 read from one of the four comm ports.
  102. - Included lots of sound code speed ups and sound quality improvements
  103.   from Takehiro TOMINAGA - many thanks go to him.
  104. 1.16
  105. - Fixed a case where the -forcelorom option didn't work - the case was
  106.   required for Formation Soccer which claims in its ROM header to use the 
  107.   same memory map as Super FX ROM, it doesn't.
  108. - Pulled apart a real SNES using a crowbar (great fun), just to look at what
  109.   speed the SPC700 is actually clocked at for more acturate relative emulation
  110.   speed.
  111. - Implemented SPC700 cycle counting in the hope the improved timing would fix
  112.   Tales'; no such luck but at least the -ratio option is obsolete now.
  113. - Implemented executing SPC700 instructions during DMA, fixes BS Zelda,
  114.   Goal and Smurfs 2 lock up at start and music pausing briefly when ROMs do 
  115.   lots of DMA, usually between game screens.
  116. - Scrapped the i386 asm SPC700 code - it was the cause of the music not 
  117.   restarting after a battle in Chrono Trigger and FF3 and I didn't realise
  118.   because the bug had already occurred in the test freeze-file I had.
  119.   Thanks to John Stiles for pointing out that the Mac port didn't have the
  120.   missing music problem in the first place.
  121. - Fixed RGB subtraction bug on displays with only 5 bits for green, e.g. RGB555
  122.   displays. The GREEN_HI_BIT variable was always set to a value for 6 bit
  123.   green displays.
  124. - Added the SA-1 memory map, still a long way to go before any SA-1 game will 
  125.   run.
  126. 1.15
  127. - Jumped versions to keep in sync with the DOS port release.
  128. 1.14
  129. - Improved 8-bit sound generation slightly, but it still sounds very poor
  130.   compared to 16-bit sound.
  131. 1.13
  132. - Implemented the Tales of Phantasia memory map using the information supplied
  133.   by zsKnight. Had to also implement a de-interleave routine to work around
  134.   a ROM feature and Snes9x CPU instruction fetching implementation detail.
  135. - Added a frames-per-second on-screen display option.
  136. - Fixed the final glitch bug with the Mario Kart track display - the byte code
  137.   for the termination of the DSP1 raster command wasn't been recognised.
  138. - Disabled a NMI/DMA hack for Rise of the Robots, was causing problems for
  139.   Mario Kart and 'Robots wasn't working correctly anyway.
  140. - Optimised the mode 7 rendering a little.
  141. - Changed tile rendering code to use offsets into screen buffer rather than
  142.   direct pointers ready for z-buffer implementation.
  143. 1.12
  144. - Changed V-blank NMI to occur immediately after a WAI instruction, Toy Story 
  145.   required this.
  146. - Fixed reading of H-DMA line counter register, Top Gear 3000 needed this.
  147. - Ripped off large parts of ZSNES's DSP1 code (with _Demo_'s and zsKnight's
  148.   approval). Now Mario Kart works almost 100%.
  149. - Added a check to see if a vertical scanline IRQ register change will cause
  150.   a H-IRQ later on the current scanline. Pilot Wings needed this.
  151. - Fixed possible crash bug in clip window code when both windows had two
  152.   spans. Could actually cause Chrono Trigger to crash the emulator.
  153. - Fixed a lock-up problem with the C Super FX code, Star Fox and executing
  154.   a few 'FX instructions per scan-line (required for Winter Gold).
  155.  
  156. Introduction
  157. ============
  158.  
  159. Snes9x is a portable, freeware Super Nintendo Entertainment System (SNES)
  160. emulator. It basically allows you to play most games designed for the SNES
  161. and Super Famicom Nintendo game systems on your PC or Workstation; which
  162. includes some real gems that were only ever released in Japan.
  163.  
  164. Snes9x is the result of well over two years worth of part-time hacking,
  165. coding, recoding, debugging, divorce, etc. (just kidding about the divorce
  166. bit). Snes9x is coded in C++, with three assembler CPU emulation cores on the
  167. i386 Linux and Windows ports.
  168.  
  169. Snes9x is better than a real SNES:
  170. o Freeze a game at any position, then restore the game to that exact spot at
  171.   a later date - ideal for saving a game just before a difficult bit.
  172. o Built-in cheat cartridge.
  173. o Built-in peripheral emulation. The SNES mouse, Multi-player 5 and SuperScope
  174.   external add-ons are all emulated, they cost extra money with a real SNES.
  175. o Stereo sound - yes I know the SNES produced stereo sound, but who actually
  176.   paid the inflated price for the special lead just so you could hear it?
  177. o No more cartridge contact cleaning!
  178. o Some SNES hardware features that be turned on and off during game play,
  179.   games might be using one of these features to deliberately make a section
  180.   of the game more difficult. Easy, just turn the feature off.
  181. o Networked game play.
  182.  
  183. Snes9x is worse than a real SNES:
  184. o Unless your computer is very fast (Pentium II+), some games just can't
  185.   hit every frame being rendered and the emulator starts to omit rendering
  186.   some frames to keep the emulator running at a constant speed - to you
  187.   it appears as if the graphics aren't moving as smoothly as they should.
  188. o Not all games work; bugs and missing features cause some games to fail to
  189.   work or renders them un-playable.
  190. o You have to wait for your computer to boot before you can play games,
  191.   no waiting on the real SNES!
  192. o The SNES has an analog low-pass sound filter that give a nice bass to
  193.   all the sounds and music - Snes9x doesn't emulate this. If you have
  194.   a posh sound card, you could try fiddling with it mixer controls to produce
  195.   a similar effect. Turning on interpolated sound helps a lot.
  196.  
  197. What's Emulated
  198. ===============
  199. - The 65c816 main CPU.
  200. - The Sony SPC700 sound CPU.
  201. - SNES variable length cycles.
  202. - 8 channel DMA and H-DMA (raster effects).
  203. - All background modes, 0 to 7.
  204. - Sound DSP, with eight 16-bit stereo channels, compressed samples, hardware
  205.   attack-decay-sustain-release volume processing, echo, pitch modulation
  206.   and digital FIR sound filter.
  207. - 8x8, 16x8 and 16x16 tile sizes, flipped in either direction.
  208. - 32x32, 32x64, 64x32 and 64x64 screen tile sizes.
  209. - H-IRQ, V-IRQ and NMI.
  210. - Mode 7 screen rotation, scaling and screen flipping.
  211. - Vertical offset-per-tile in modes 2, and 4.
  212. - 256x224, 256x239, 512x224, 512x239, 512x448 and 512x478 SNES screen
  213.   resolutions.
  214. - Sub-screen and fixed colour transparency effects.
  215. - Mosaic effect.
  216. - Single and dual graphic clip windows, with all four logic combination modes.
  217. - Colour effects only inside a window.
  218. - 128 8x8, 16x16, 32x32 or 64x64 sprites, flipped in either direction.
  219. - SNES palette changes during frame (15/16-bit internal rendering only).
  220. - Super FX, a 21/10MHz RISC CPU found in the cartridge of several games.
  221. - SNES mouse.
  222. - SuperScope (light gun) emulated using computer mouse.
  223. - Multi-player 5 - allowing up to five people to play games simultaneously on
  224.   games that support that many players.
  225. - Game-Genie, Action Replay and Gold Finger cheat codes.
  226. - Multiple ROM image formats, with or without a 512 byte copier header.
  227. - Single or split images, compressed using gzip, and interleaved in one of two
  228.   ways.
  229. - Auto S-RAM (battery backed RAM) loading and saving.
  230. - Freeze-game support, now portable between different Snes9x ports.
  231. - Interpolated sound.
  232.  
  233. What's Not
  234. ==========
  235. - Only partial DSP1 support, enough to play Mario Kart but no more. The DSP1
  236.   is a math co-processor chip that was inside the cartridge of some games,
  237.   notably Mario Kart and Pilot Wings.
  238. - Any other odd chips that manufactures sometimes placed inside the
  239.   cartridge to enhance games and as a nice side-effect, also act as an 
  240.   anti-piracy measure, e.g. SA-1, S-DD1, C4, etc.
  241. - Direct colour mode - uses tile and palette-group data directly as RGB value.
  242. - Pseudo hi-res. mode - SNES hardware uses interpolation to give apparent
  243.   increase in horizontal resolution, use the TV mode to get the same effect.
  244. - Mosaic effect on mode 7.
  245. - A couple of SPC700 instructions that I can't work exactly out what they 
  246.   should do.
  247. - Fixed colour and mosaic effects in SNES hi-res. (512x448) modes.
  248. - Offset-per-tile in mode 6. Luckily I haven't found a game that uses it, yet.
  249. - Horizontal offset-per-tile in modes 2, 4 and 6. Just noticed that Chrono
  250.   Trigger uses that.
  251. - Various pixel priority problems with sprites and transparency effects.
  252.  
  253. What You Will Need
  254. ==================
  255.  
  256. CPU
  257. ---
  258. Faster the better, but 486DX4 100 minimum when using 8-bit graphics and
  259. minimal or no sound, Pentium 166 or higher for transparency effects and
  260. Pentium 200 or higher for Super FX games.
  261.  
  262. Memory
  263. ------
  264. 16Mb or more for Linux. Sun workstations shouldn't have a problem.
  265.  
  266. Screen
  267. ------
  268. X Window System ports needs an 8, 15, 16, 24 or 32 bit X server running;
  269. transparency effects are available at all depths, but don't look good with
  270. only an 8-bit display. For maximum emulation speed, have the X server switched
  271. to 8-bit and don't enable transparency effects, or 15 or 16-bit with
  272. transparency effects enabled.
  273.  
  274. The Linux SVGA port is very limited at the moment due to no 16-bit screen
  275. modes being supported on my main development machine. However, the Linux X
  276. Window System version now has a full-screen mode, so there's hopefully no need
  277. to use the SVGA version.
  278.  
  279. Disk Space
  280. ----------
  281. 1Mb for the emulator.
  282.  
  283. Software
  284. --------
  285. Access to SNES ROM images in *.smc, *.sfc, *.fig or *.1, *.2, or sf32xxxa,
  286. sf32xxxb, etc., format otherwise you will have nothing to run!
  287.  
  288. Please note, it is illegal in most countries to have commercial ROM images
  289. without also owning the actual SNES ROM cartridge.
  290.  
  291. Getting Started
  292. ===============
  293.  
  294. From a shell just type:
  295. snes9x <ROM filename>
  296.  
  297. to start the X Window System port or
  298.  
  299. ssnes9x <ROM filename>
  300.  
  301. to start the Linux SVGA port.
  302.  
  303. ROM images are normally loaded from the directory ./roms. This can be
  304. changed by specifying a pathname with the image name or setting the
  305. environment variable SNES96_ROM_DIR to point to a different directory.
  306.  
  307. Freeze game files and S-RAM save files are normally read from and written to
  308. the directory $HOME/.snes96_snapshots.  This can be changed by setting the
  309. environment variable SNES96_SNAPSHOT_DIR to point to a different directory.
  310.  
  311. To enable full-screen mode on the Linux X Window System and SVGA ports, Snes9x
  312. needs special system access permissions to allow it to write directly to video
  313. RAM and alter video chipset register values. In the directory where Snes9x is
  314. located, typing:
  315.  
  316. su root
  317. chown root snes9x ssnes9x
  318. chmod 4755 snes9x ssnes9x
  319.  
  320. will give the binaries the required access.
  321.  
  322. Lots of command line flags are available:
  323.  
  324. Graphics options:
  325. -tr or transparency (default: off)
  326.    Enable transparency effects, also enables 16-bit screen mode selection.
  327.    Transparency effects are automatically enabled if the depth of your X 
  328.    server is 15 or greater. 
  329. -16 or -sixteen (default: off)
  330.    Enable 16-bit internal screen rendering, allows palette changes but no
  331.    transparency effects.
  332. -hires or -hi (default: lo-res.)
  333.    Enable support for SNES hi-res. and interlace modes. USE ONLY IF GAME
  334.    REQUIRES IT (FEW DO) BECAUSE IT REALLY SLOWS DOWN THE EMULATOR.
  335. -y or -interpolate (default: off)
  336.    Enables 'TV mode', hires support, 16-bit internal rendering and
  337.    transparency effects. TV mode scales the SNES image by x2 by inserting an
  338.    extra blended pixel between each SNES pixel and 80% brightness 'scan-lines'
  339.    between each horizontal line. The result looks very nice but needs a fast
  340.    machine. Use with the full-screen X mode and a 15 or 16 depth X server,
  341.    or the SVGA port for fastest operation.
  342. -nms or -nomodeswitch (default: switch modes)
  343.    The Linux X Windows System port can change the screen resolution when
  344.    switching to full-screen mode so the SNES display fills the whole screen.
  345.    Specify this option to stop it if causes you problems.
  346. -scale or -sc (default: off)
  347.    Stretch the SNES display to fit the whole of the computer display.
  348.    Linux X Window System full-screen mode or SVGA port only. Use only if you
  349.    have a very fast machine.
  350. -displayframerate or -dfr
  351.    Display a frame rate counter superimposed over the bottom, left-hand corner
  352.    of the SNES display. The value before the slash (/) indicates how many
  353.    frames per second are being rendered compared to a real SNES, the value of
  354.    which is displayed after the slash.
  355.  
  356. Sound options:
  357. -ns or -nosound
  358.    Disable sound CPU emulation and sound output, useful for the few ROMs
  359.    where sound emulation causes them to lock up due to timing errors.
  360. -sk 0-3 or -soundskip 0-3 (default: 0)
  361.    ONLY USED IF SOUND IS DISABLED. 
  362. -stereo or -st (default: stereo)
  363.    Enable stereo sound output.
  364. -mono (default: stereo)
  365.    Enable mono sound output. Faster, but doesn't sound as nice.
  366. -r 0-7 or -soundquality or -sq 0-7 (default: 4)
  367.    Sound playback rate/quality:
  368.        0 - disable sound, 1 - 8192, 2 - 11025, 3 - 16500, 4 - 22050 (default),
  369.        5 - 29300, 6 - 36600, 7 - 44000.
  370. -envx or -ex (default: off)
  371.    Enable volume envelope height reading by the sound CPU. Can cure sound
  372.    repeat problems with some games (e.g. Mortal Kombat series), while causing
  373.    others to lock if enabled (eg. Bomberman series). Use with -sy option below
  374.    to fix the problems this option can otherwise create.
  375. -sy or -soundsync
  376.    Turns on sound-sync code where sound data is generated in sync with the
  377.    emulation of the SNES sound CPU instructions. Slighty slower emulation speed
  378.    but helps reduce note and sound effects timing problems and one or two 
  379.    games actually require this mode, notably Williams Arcade Classics.
  380.    Also turns on interpolated sound and envelope height reading.
  381.    Pressing the ']' key during gameplay toggles sound-sync only on and off.
  382. -is or -interpolatedsound (default: off)
  383.    Turns on interpolated sound. Any samples played at a lower frequency than
  384.    the current playback rate (-r option) have additional sample points
  385.    computed and played where previously the same sample data was played
  386.    repeatedly. Lower frequency sounds have improved bass and sound much less
  387.    harsh - I suspect the real SNES does this.
  388.    Pressing '[' during gameplay toggles the feature on and off.
  389. -b size or -buffersize size or -bs size (default: auto-select)
  390.    Sound playback buffer size in bytes 128-4096.
  391. -nosamplecaching or -nsc or -nc (default: on)
  392.    Disable decompressed sound sample caching. Decompressing samples takes time,
  393.    slowing down the emulator. Normally the decompressed samples are saved
  394.    just in case they need to be played again, but the way samples are stored
  395.    and played on the SNES, it can result in a click sound or distortion when
  396.    caching samples with loops in them.
  397. -noecho or -ne (default: on)
  398.    Turn off sound echo and FIR filter effects. Processing these effects can
  399.    really slow down a non-MMX Pentium machine due to the number of calculations
  400.    required to implement these features.
  401. -ratio 1+ or -ra 1+ (default: 2) (OBSOLETE)
  402.    Ratio of 65c816 to SPC700 instructions. The value is no longer used
  403.    because SPC700 cycle counting is now implemented giving much more acturate 
  404.    timing.
  405. -nomastervolume or -nmv (default: on)
  406.    Disable emulation of the sound DSP master volume control. Some ROMs set
  407.    the volume level very low requiring you to turn up the volume level of
  408.    your speakers introducing more background noise. Use this option to
  409.    always have the master volume set on full and to by-pass a bug which
  410.    prevents the music and sound effects being heard on Turrican.
  411.  
  412. Cheat options:
  413. -gg <code> or -gamegenie <code>
  414.    Supply a Game Genie code for the current ROM. Up to 10 codes can be in
  415.    affect at once. Game Genie codes for many SNES games are available from:
  416.    http://game-genie.nvc.cc.ca.us
  417. -ar <code> or -actionreplay <code>
  418.    Supply a Pro-Action Reply code for the current ROM. Up to 10 codes can be in
  419.    affect at once. At the moment, codes which alter RAM do not work.
  420. -gf <code> or -goldfinger <code>
  421.    Supply a Gold Finger code for the current ROM. Up to 10 codes can be in
  422.    affect at once.
  423.  
  424. Speed up/slow down options: (See "Speeding Up The Emulation")
  425. -f <frame skip count> or -frameskip <frame skip count> (default: auto-adjust)
  426.    Set this value to deliberately fix the frame skip rate and disable auto-
  427.    speed regulation. Use a larger value faster emulation but more jerky
  428.    movement and a smaller value for smooth but slower screen updates.
  429.    Use '+' and '-' keys to modify the value during a game.
  430.    Ideal for some Super FX games that confuse the auto-adjust code or
  431.    for games that deliberately flash the screen every alternate frame.
  432. -frametime <time in milliseconds> or -ft <time in milliseconds>
  433.    (default: 16.6ms NTSC games and 20ms for PAL games)
  434.    If auto-adjust frame skip option is in effect, then the emulator will try
  435.    to maintain a constant game and music speed locked to this value by skipping
  436.    the rendering of some frames or waiting until the required time is reached.
  437.    Increase the value to slow down games, decrease it to speed up games.
  438.    During a game the value can be adjusted in millisecond steps by pressing
  439.    Shift '-' or Shift '+'.
  440. -h <0-200> or -cycles <0-200>(default: 100)
  441.    Percentage of CPU cycles to execute per scan line, decrease value to
  442.    increase emulation frame rate. Most ROMs work with a value of 85 or above.
  443. -j or -nojoy
  444.    Turn off joystick, SideWinder and GrIP detection (joystick polling on the
  445.    PC slows the emulator down).
  446.  
  447. ROM image format options:
  448. -i or -interleaved (default: auto-detect)
  449.    Force interleaved ROM image format.
  450. -i2 or -interleaved (default: can't be auto-detected)
  451.    Force alternate interleaved format (i.e. most Super FX games).
  452. -hirom or -fh or -hr (default: auto-detect)
  453.    Force Hi-ROM memory map for ROMs where the Hi-ROM header test fails.
  454. -lorom or -fl or -lr (default: auto-detect)
  455.    Force Lo-ROM memory map for ROMs where the Hi-ROM header test fails)
  456. -header or -hd (default: auto-detect)
  457.    Force the detection of a ROM image header. Some ROM images have been 
  458.    hand-edited to remove unused space from the end of the file; if the
  459.    resultant image size is not a multiple of 32k then Snes9x can't 
  460.    auto-detect the presense of a 512 byte ROM image header.
  461. -noheader or -nhd (default: auto-detect)
  462.    Force Snes9x into thinking no ROM image header is present. See -header
  463.    above.
  464. -p or -pal (default: auto-detect)
  465.    Fool ROM into thinking this is a PAL SNES system and adjust frame time
  466.    to 20ms (50 frames per second)
  467. -n or -ntsc (default: auto-detect)
  468.    Fool ROM into thinking this is a NTSC SNES system and adjust frame time
  469.    to 16.7ms (60 frames per second)
  470. -l or -layering (default: off)
  471.    Swap background layer priorities from background involved in sub-screen
  472.    addition/subtraction. Can improve some games play-ability - no need to
  473.    constantly toggle background layers on and off to read text/see maps, etc.
  474.    Toggle feature on and off during game by pressing '8'.
  475.    Not used if transparency effects are enabled.
  476. -l <freeze game file name> or -loadsnapshot <freeze game file name>
  477.    Load snapshot file and restart game from saved position.
  478. -nh or -nohdma (default: H-DMA enabled)
  479.    Turn off the H-DMA emulation. Pressing '0' during a game toggles H-DMA on
  480.    and off.
  481. -n or -nospeedhacks (default: speed hacks)
  482.    Turn off a couple of speed hacks. The hacks boost the speed of many ROMs
  483.    but cause problems a few ROMs.
  484. -nw or -nowindows (default: graphics windows emulated)
  485.    Disable graphics windows emulation. Use 'backspace' key during a game to
  486.    toggle the emulation on and off.
  487.  
  488. Joystick options:
  489. -joymap[1|2|3|4] followed by 8 numbers
  490.    Specify the SNES joypad buttons to Linux joystick driver buttons mapping for
  491.    each of the four supported joypads.
  492.    Specify the Linux joystick button number for the corresponding SNES button
  493.    in the following order: A, B, X, Y, TL, TR, Start and Select
  494.    The default map is: 1 0 4 3 6 7 8 9 
  495.    which is suitable for Sidewinder gamepads.
  496. -s or -swap
  497.    Swap emulated joy-pad 1 and 2 around, pressing '6' during a game does the
  498.    same thing.
  499. -j or -nojoy
  500.    Turn off joystick, SideWinder and GrIP detection (joystick polling on the
  501.    PC slows the emulator down).
  502.  
  503. For example, to start a game called "mario", with sound, and transparency
  504. effects, type:
  505.  
  506. snes9x -tr mario.smc
  507.  
  508. Keyboard Controls
  509. =================
  510.  
  511. While the emulator is running:
  512. 'Escape'                 Quit the emulator
  513. 'Pause' or 'Scroll Lock' Pause the emulator
  514. Alt+'f' or PrtSc     Toggle the Linux X11 port full-screen mode on and off.
  515.  
  516. Joy-pad 1:
  517. 'up' or 'u'             Up direction
  518. 'down', 'j' or 'n'      Down direction
  519. 'left' or 'h'           Left direction
  520. 'right' or 'k'          Right direction
  521. 'a', 'v' or 'q'         TL button
  522. 'z', 'b' or 'w'         TR button
  523. 's', 'm' or 'e'         X button
  524. 'x', ',' or 'r'         Y button
  525. 'd', '.' or 't'         A button
  526. 'c', '/' or 'y'         B button
  527. 'return'                Start button
  528. 'space'                 Select button
  529.  
  530. 'Mouse left'            Mouse left button or SuperScope fire button.
  531. 'Mouse right'           Mouse right button or SuperScope cursor button.
  532.  
  533. 'tab'                   SuperScope turbo toggle switch.
  534. '`'                     SuperScope pause button.
  535.  
  536. '0'                     Toggle H-DMA emulation on/off.
  537. '1'                     Toggle background 1 on/off.
  538. '2'                     Toggle background 2 on/off.
  539. '3'                     Toggle background 3 on/off.
  540. '4'                     Toggle background 4 on/off.
  541. '5'                     Toggle sprites (sprites) on/off
  542. '6'                     Toggle swapping of joy-pad one and two around
  543. '7'            Rotate between Multi-player 5, mouse on port 1,
  544.                         mouse on port 2 and SuperScope emulation.
  545. '8'                     Toggle background layer priorities for backgrounds
  546.                         involved in sub-screen addition/subtraction.
  547. '9'            Toggle transparency effects on and off - only if
  548.             16-bit screen mode selected.
  549. 'Backspace'        Toggle emulation of graphics window effects on/off.
  550.  
  551. '-'            Decrease frame redraw skip rate
  552. '+'            Increase frame redraw skip rate
  553.             The sequence is auto-frame rate adjust, render every
  554.                         frame, render 1 frame in two, render 1 frame in three,
  555.                         render 1 frame in four, etc.
  556.  
  557. Shift+'-'        Decrease frame time in 1ms steps.
  558. Shift+'+'        Increase frame time in 1ms steps.
  559.             The frame time value is the average length of time a
  560.             single frame should take to emulate - works only if
  561.             the auto-frame rate adjust is operational.
  562.             The code will skip the rendering of some
  563.             frames in order to try and reach the required value.
  564. Shift+'F1-F10'          Quick save a freeze game file.
  565. 'F1-F10'                Quick load a freeze game file, restoring a game to an
  566.                         exact position.
  567. Alt or Ctrl+'F2' or 'F11' Load a game's saved position.
  568. Alt or Ctrl+'F3' or 'F12' Save a game's position.
  569.  
  570. Alt or Ctrl+'F4' -> 'F11' Toggle sound channels on/off.
  571. Alt or Ctrl+'F12'       Turn on all sound channels.
  572.  
  573. Joystick Support
  574. ================
  575.  
  576. The Linux port now makes use of the new v1.x joystick kernel drivers written
  577. by Vojtech Pavlik (vojtech@ucw.cz) to allow the use of a wide varity of
  578. different joystick/joypad types to control SNES games.
  579.  
  580. Older versions of the drivers are included in recent development Linux
  581. kernels. Download the lastest driver version from 
  582. http://atrey.karlin.mff.cuni.cz/~vojtech/joystick/
  583.  
  584. Refer to the documentation that comes with the drivers to enable support for
  585. your type of joystick/pad in Snes9x.
  586.  
  587. Netplay Support
  588. ===============
  589.  
  590. The Linux and UNIX ports of Snes9x support networked game-play, where
  591. each player of a multi-player SNES game can be on their own workstation.
  592. Due to the nature in which the emulated SNES games where written and speed
  593. general lack of speed of the Internet, only local-area network game play is
  594. usually possible.
  595.  
  596. Start the s9xserver process on one machine, then start snes9x on each
  597. workstation giving the extra command-line flag -server <hostname> where
  598. <hostname> is the name of the machine where the s9xserver process was
  599. started. Is is also possible to specify the server name by setting the
  600. environment variable S9XSERVER to the server hostname.
  601.  
  602. Snes9x normally uses network port 6096 by default, this can be changed by
  603. specifying -port <port num> on the command line of the server and snes9x,
  604. or by setting the environment variable S9XPORT.
  605.  
  606. The first snes9x session to connect to the server becomes player 1 and dicates
  607. what ROM all other snes9x clients will have to run before connecting to the
  608. server. The second client to connect becomes player 2, and so on. As each new
  609. snes9x client process connects to the server, existing games in progress are
  610. reset to the beginning to keep everyone in sync.
  611.  
  612. Some SNES games randomise game play and screen layout using data from the SNES
  613. sound chip, notably the Bomberman series. Since Snes9x doesn't keep the sound
  614. generation in exact synchronisation with the CPU emulation (if it did you'd
  615. keep hearing breaks in the sound), you find such games can vary the screen
  616. layout and baddy movement between Snes9x sessions given that all other
  617. external input is identical, thus making it difficult to play multi-player
  618. networked sessions with these games. To network play such games, either switch
  619. off sound (-ns) or wait until I provide a re-sync option in a future release.
  620.  
  621. Super FX
  622. ========
  623.  
  624. The Super FX is a 10/21MHz RISC CPU developed by Argonaut Software used as a
  625. game enhancer by several game tiles. Support is still buggy and I've no
  626. idea what the problem is. Oh well, may be one day... Anyway, games that work:
  627. Yoshi's Island (best single-player game on SNES, if you like platform games),
  628. Doom, Winter Gold and Dirt Trax FX.
  629.  
  630. Games that don't work:
  631. StarFox, StarFox 2, Stunt Race FX, Vortex.
  632.  
  633. All games that actually work are extremely playable on my 200MHz K6 desktop
  634. machine. Frame rates will suffer for people with slower machines.
  635.  
  636. Lots of Super FX ROM images available are in an odd interleaved format that
  637. I haven't worked out how to auto-detect. If your ROM image isn't working try
  638. using the -i2 command line flag.
  639.  
  640. Problems With ROMs
  641. ==================
  642.  
  643. If the emulator just displays a black screen for over 10 seconds, then one
  644. of the following could be true:
  645.  
  646. 1) If its a Super FX game, chances are its in interleaved2 format, try the -i2
  647.    switch.
  648. 2) Someone has edited the Nintendo ROM information area inside the ROM image
  649.    and Snes9x can't work out what format ROM image is in. Try playing
  650.    around with the ROM options: -i, -fl, -fh, -hd, -nhd.
  651. 3) The ROM image is corrupt. If you're loading from CD, I know it might
  652.    sound silly, but is the CD dirty?
  653. 4) The original SNES ROM cartridge had additional hardware inside that is not
  654.    emulated yet and might never be - e.g. Street Fighter 2 Alpha (S-DD1),
  655.    Megaman X2 and Megaman X3 (C4).
  656.  
  657. Sound Problems
  658. ==============
  659.  
  660. No sound coming from any SNES game using Snes9x? Could be any or all of
  661. these:
  662.  
  663. - Snes9x couldn't open the sound device (/dev/dsp) when it started (Snes9x
  664.   should display an error message), a permissions problem, the device doesn't
  665.   exist or some other process already has the sound device open.
  666. - The kernel doesn't support your sound hardware (Linux barely supports the
  667.   sound card in my new laptop, I'm stuck with 8-bit sound only at the moment).
  668. - You haven't got the volume control on your speakers turned down, have you?
  669.  
  670. General sound problems:
  671.  
  672. - Sound samples keep repeating or don't switch off, especially ones
  673.   that play lots of speech samples, try -envx (e.g. Mortal Kombat series) or
  674.   -sy.
  675. - Sound quality is poor on all games. You have a noisy sound card (usually 
  676.   cheap cards) or one that Linux only supports at 8-bit, turning on 
  677.   interpolated sound (-is), sound-sync (-sy) and/or increasing the playback
  678.   rate (-r 1-7]) will help.
  679.  
  680. Converting ROM Images
  681. =====================
  682.  
  683. If you have a ROM image in several pieces, simply rename them so their
  684. filename extensions are numbered: e.g. game.1, game.2, etc. Then, when
  685. loading the ROM image, just specify the name of the first part; the remaining
  686. parts will be loaded automatically.
  687.  
  688. If they are already in the form sf32xxxa, sf32xxxb, etc., you don't even have
  689. to rename them; just specify the name of the first part, as above.
  690.  
  691. Emulation speed
  692. ===============
  693.  
  694. Emulating an SNES is very compute intensive, with its two or three CPUs,
  695. an 8 channel digital sound processor with real-time sound sample decompression
  696. and stereo sound, two custom graphics processors, etc.
  697.  
  698. If you only have a 486 machine, you will need to stick to using only 8-bit
  699. graphics and minimal or no sound:
  700.  
  701. With sound:
  702. snes9x -ne -r 1 -m 2 -mono <rom filename>
  703.  
  704. Without sound:
  705. snes9x -ns -m 2 <ROM filename>.
  706.  
  707. Disabling the joystick support will also help (-j).
  708.  
  709. For maximum speed, if you're using the X Window System port, make sure your
  710. X server is set to depth 8 and transparency effects are not enabled, or your
  711. X server is set to depth 15 or 16 if you want transparency effects.
  712.  
  713. If you want to use the TV mode (-y), switching to a full-screen display is
  714. usually fastest with the X server set to depth 15 or 16.
  715.  
  716. Don't enable the scale option and don't resize the window on the X Windows
  717. port.
  718.  
  719. Users with slower Pentium machines might want to turn off echo and digital
  720. FIR filter effects, due to the number of multiply operations needed to
  721. implement them. Use -ne option.
  722.  
  723. Got a big throbbing beast of a CPU under the cover of your computer? These
  724. options will sort out the men from the boys:
  725. snes9x -y -sc -r 7 -sy <ROM filename>
  726.  
  727. Credits
  728. -------
  729.  
  730. - Jerremy Koot for all his hard work on current and previous versions of 
  731.   Snes96, Snes97 and Snes9x.
  732. - Ivar for the original Super FX C emulation, DSP1 emulation work and 
  733.   information on both chips.
  734. - zsKnight and _Demo_ for the Intel Super FX assembler code.
  735. - zsKnight and _Demo_ for all the other ideas I've nicked off them; they've
  736.   nicked lots of my ideas and information too!
  737. - DiskDude's SNES Kart v1.6 document for the Game Genie(TM), Gold Finger and
  738.   Pro Action Replay cheat system information.
  739. - Lord ESNES for some nice chats and generally useful stuff.
  740. - Lee Hyde (lee@jlp1.demon.co.uk) for his quest for sound information and 
  741.   the Windows 95 icon.
  742. - Shawn Hargreaves for the rather good Allegro 3.0 DOS library.
  743. - Robert Grubbs for the SideWinder information - although I didn't use his
  744.   actual driver in the end.
  745. - Steve Snake for his insights into SNES sound sample decompression.
  746. - Vojtech Pavlik for the Linux joystick driver patches.
  747. - Maciej Babinski for the basics of Linux's DGA X server extensions.
  748. - Alexander Larsson for the GGI Linux port code.
  749. - Harald Fielker for the sound interpolation code (not included in this 
  750.   release due to problems).
  751.  
  752. Nintendo is a trademark.
  753. Super NES, SuperScope and Super FX are a trademarks of Nintendo. 
  754. Sun, Solaris and Sparc are all trademarks of Sun Microsystems, Inc.  
  755. Game Genie is a trademark of Lewis Galoob Toys, Inc.
  756. MS-DOS and Windows 95 are trademarks of Microsoft Corp.
  757. Intel, Pentium and MMX are all trademarks of Intel Corp.
  758. Sony is a trademark of Sony Corp.
  759. UNIX is a trademark of someone, I forget who, but its not AT&T, they sold it.
  760.  
  761. ------------------------------------------------------------------------------
  762. Gary Henderson
  763. gary@snes9x.com
  764.