
                      Snes9X DOS Frequently Asked Questions
                      ~~~~~~ ~~~ ~~~~~~~~~~ ~~~~~ ~~~~~~~~~

Contents:
   Why doesn't sound work ?
   Why does Snes9X complain "no DPMI"?
   How can I safely speed up Snes9X?
   It's still not fast enough!
   When I play [some game] I can't see my character!
   Where can I find games for Snes9X?
   What's "WindowsFriendly" mode?
   Why are parts of the GUI disabled?
   What does "Load error: Self check failed." mean?
   How do I use the Snes9X cheat locator, and applier?

Question:
   Why doesn't sound work ?

Answer:
   Enable APU emulation by adding "-S" to the command line (case sensitive!).
   If it crashes for some reason, try a different playback rate, for example
   "-r 2".

   Sound still isn't working?

   Did you set your "BLASTER" variable correct ?
   (You can check if the variable is set by typing "SET" at the command line)
   Please type this at the command line:

   SET BLASTER=A??? I? D? H? T?

   Where:
   A??? should be replaced with the address of your sound card (Common: A220)
   I?   should be replaced with the interrupt of your sound card (Common: I5
        or I7)
   D?   should be replaced with the Low-DMA of your sound card (Common: D1)
   H?   should be replaced with the High-DMA of your sound card (Common: D5)
   T?   is the version/type of your sound blaster/compatible, please check
        your documentation for this setting and if still unknown set it to T1

   Some sound cards (including the Sound Blaster 16, and better) require a
   software utility to configure the card with it's DMA, Interrupt, and 16bit
   DMA channels.  For Creative Labs cards, this is typically called
   diagnose.exe or sb???set.exe.  Creative Labs PnP cards also require
   CTPNP.EXE to be loaded, in order to set up the PnP aspect of the card.

   Sound STILL isn't working ???

   Please check if your sound card is 100% Sound blaster Compatible and
   if all the drivers are loaded correctly also check if you experience any
   problems with DOS games when you select the 100% Sound blaster compatible
   driver. If you experience problems with DOS games then please contact
   your supplier for more details !

   Some sound cards that claim to be 100% SoundBlaster compatible aren't.
   If so, there's absolutely nothing we or you can do.

Question:
   Why does Snes9X complain "no DPMI - Get csdpmi*b.zip", and then quit
   when I run Snes9X under DOS mode?

Answer:
   Snes9X was compiled in DJGPP, and it needs a DPMI stack to run.  Windows
   95 automatically provides DPMI services to DOS-based programs.  However,
   to run under dos, another program, cwsdpmi.exe, is needed to provide
   these services.  This error will occur if this file is missing, or
   corrupt.  Snes9X MUST be able to find this file or it cannot run.  The
   file can be placed in a number of places.  It can be in Snes9X's
   directory, the current directory, or somewhere in the PATH.

Question:
   How can I safely speed up Snes9X?

Answer:
   There are a number of ways to speed up Snes9X.  One of the easiest is to
   turn off joystick support if you're not using it.  Joystick polling
   takes a long time, and is very slow.  Another method is to use a faster
   video mode.  Several of the video modes (e.g. -m 0) are very slow, and not
   recommended.  Other modes, such as -m 2 or the svga modes are generally
   much faster.  Even the VESA modes -m 4, and higher will provide better
   performance.  -m 1 is not recommended because a great deal of the screen
   will be cut off.  You can also override the auto frame rate and specify
   your own frame rate instead by specifying -f [number of frames to skip].
   If you prefer the auto-adjust frame rate, you can also adjust the time
   between frames with the -ft [time in ms per frame] switch.  The defaults
   are 17ms for NTSC games (~59-60Hz), and 20ms for PAL games (50Hz).

Question:
   It's still not fast enough!

Answer:
   If it's still not fast enough, and you've followed all the suggestions
   in the previous question, you can try to specify -h [percentage] to try
   to speed things up.  However, this can cause some games to lose
   control over their own execution and crash.  Other games can actually run
   more slowly.  Another option is the -O flag that turns off the
   line-by-line graphics engine, and can speed up things dramatically.

Question:
   When I play [some game] I can't see my character!  Help!

Answer:
   Snes9X doesn't currently support screen addition/subtraction, so at times,
   the characters in the games may drop down too many layers, and become
   hidden.  You have two options.  You can press 8 to reverse the way the
   layers are drawn, or you can press 1-4 to disable a single BG layer.  This
   will hopefully be corrected in a later release when addition/subtraction is
   fully supported.

Question:
   Where can I find games for Snes9X?

Answer:
   There are freeware snes demos and games available at:

   ftp://ftp.futureone.com/users/damftp/consoles/SNES/
   http://evil.ml.org/~grits

   Do not ask us for commercial games, we do not know where to get them,
   cannot give them to you, and will, most likely, not respond to such
   e-mail.  It it illegal for me to give you games, and is also quite
   annoying.  The less time I have to put up with silly messages, the longer
   I have to work on Snes9X.  Remember that.

Question:
   What is "WindowsFriendly" mode?

Answer:
   That flag in the .ini file tells Snes9X if it should be nice to Windows 95,
   and 3.1 and not reprogram the PIT chip.  In windows 95 you can turn this
   setting off, if you set the program's property's to NOT suggest MS-DOS
   mode.  Why?  When Win95 suggests that, it appears that the timer is
   disabled for the DOS program, and will cause several aspects of Snes9X to
   stop functioning.  If you experience a hang because of this, just press
   CTRL, Alt, and End together (not CTRL-alt-del), and Snes9X will terminate
   itself.  Then either edit the PIF for the Snes9X.exe, or change the
   WindowsFriendly mode to 1.  Under Windows 3.1, you must enable this option,
   or you may experience crashes.  This option has no effect under MS-DOS.

Question:
   Why are there disabled items within the GUI?  Are you locking me out
   of some of the features?

Answer:
   No, the code behind those items is not finished yet, but I'm too lazy to
   remove it completely before sending out a release version.  It saves me
   time and energy just to disable those items, rather than try to
   temporarily remove the code, and probably break something else that was
   working before.  If I had left the joypad configure buttons active, all
   you'd get to see is the snes controller config screen before being blasted
   back to the options dialog, because I haven't finished that yet.  That's
   also why the options dialog is still empty feeling.  There's several
   options that need to be put there sometime, but it hasn't been done yet.

   On, the other hand, the APU Emulation radio button will disable itself if
   you uncheck it.  The only way to re-enable it is to reset the ROM, or to
   load a new ROM.  Because of the way the APU skippers work, it's impossible
   to re-enable sound after the APU skipper has been used, because the SPC700
   state may be very different from what the game is expecting, and may cause
   the game or Snes9X to crash.

Question:
   What does "Load error: Self check failed." mean?  (also "not EXE",
   "not COFF (Check for viruses)" and "cannot open"

Answer:
   Whenever Snes9X/DOS loads up, it automatically decompresses itself, and
   checks a checksum to detect if it's been tampered with.  This is in place
   for several reasons.  First, it protects you, the user from hacked or virus
   infected copies of Snes9X.  Second, it protects us, by ensuring there's
   fewer hacked copies of programs that we work hard on.  And third it reduces
   the executable size, and makes it practical to store Snes9X on a diskette.

   There is a possibility you could see that message without having downloaded
   a corrupt copy of Snes9X.  If you get this message repeatedly, you should
   check to see if you have a virus infecting your system.  There are also
   some anti-virus software that incorrectly interpret Snes9X's
   self-decompress as "virus-like behaviour", and may be altering the
   executable, thinking it's "disinfecting" it, or "immunizing" it against
   infection.  A few products have been reported to act this way -- Norton
   Anti-Virus is one of them.  I personally check my system frequently with
   F-Prot and ThunderByte Anti-Virus, and a few others when I'm bored.  Most
   programs allow you to set some exceptions to their immunization or
   auto-disinfection modules -- I suggest you definitely add Snes9x.exe to an
   immunization exception list, and, if you're having problems, to the
   disinfection exception list.


Question:
   How do I use the Snes9X cheat locator, and applier?

Answer:
   It's quite easy to operate the cheat finder.  The first thing you have to
   do is choose what aspect of the game you wish to change.  This may be the
   number of lives you have right now, your energy in a fight, experience
   level, or something else completely.  Choose a value, and note it's
   current position.

   Exact searching:
        This is the quickest search possible.  All it does is scan RAM and
        Save RAM for the exact value you enter.  This is ideal for exact
        numbers you can observe, like number of lives, and experience.
        Usually after searching for the second time, you'll be down to
        one or two matches, which, at that point, would be just trial and
        error.

   Near searching:
        This mode is ideal for searching for energy bars, and values you
        cannot locate via the Exact function on the search.  You have
        to assign a value to the current amount (say, like 100 or 0), and
        then enter estimates of how the value is changing.  Just be aware that
        you MUST keep the values between 0 and 255, or you may mess up
        your search history.  It's easiest to use the value as a percentage.
        Snes9x really only looks at if you changed the value, or not, and in
        what direction (greater than, less than, or equal).
        Searching this way takes a LONG time to narrow it down to just a few
        matches.

   Changed searching:
        This mode is for searching for anything that cannot be located by
        the other two methods.  One example of this is something like fixing
        a character's state in a game (e.g. Powered-up, special weapon, etc).
        Here, you just assign values to the various states you're searching
        for, and search for that specific value when you have the state.
        Searching this way takes a LONG time to narrow it down to just a few
        matches.

   Once you have just one (or two) matches, you have to note the address of
   the match, and go to the Apply dialog, and enter the Address, and value,
   then choose "Add" to add the cheat to the list.  When you need to enter a
   value that is >255, you have to do it in multiple parts:

       Address         Value Mod 256
       Address+1       Value / 256
       Address+2       Value / 65536
       ...             ...

   The value 999 happens to be 231 for Address, and 3 for Address+1.  9999 is
   15 for Address and 39 for Address+1.  Be cautious about entering values
   beyond what the game expects, because the game may react in ways you
   didn't plan, like crashing itself, or trying to jump to some error-recovery
   routine (extra-secret level), or there may be no effect, and the game may
   internally clip the value to what it expects.

   I also suggest you remove all cheats before saving your game via an in-game
   function (e.g.  Not saving a snapshot file via F2).  Snapshot files don't
   care if you have patches active when you take them.  SRAM saves, however
   aren't always generated properly on some games if cheats are active (rare,
   but does happen).


Question:
   I changed video resolutions, now snes9x always complains that the selected
   resolution is invalid.

Answer:
   Your card does not support the resolution you chose.  Run "snes9x -m 1",
   and choose a new video resolution.

