Select a style sheet:
SNES Pad Mini HOWTO by Mongoose
0. What is the SNES Mini HOWTO?
---------------------------------------------------------
		
   Back when I was writing some code for an animation
   demo I saw a need for 'quick start' instructions to
   setup the SNES pad in Linux.  This document digests
   the Linux Kernel Documentation along with other sources
   and original information to compile a quick guide to
   help you get your pad up and running.

   Please contact me, Terry 'Mongoose' Hendrix II, to
   make corrections, comments, or remind me to update.

      mongoose(AT)icculus.org


1. Disassembly of the SNES pad.
---------------------------------------------------------

   WARNING:
   Take care when disasmebling not to hurt yourself.

   * Never have the direction of force towards you when 
     using sharp objects.
   * Use equipment in safe manner with any safety gear 
     you require.
   * Remeber if you lop off a finger, then the pad is 
     worthless.  =)


2. Taking the snes pins out of the casing.
---------------------------------------------------------

   Take the end of the SNES cable, aka the cable casing,
   that goes into the console.  Look at it, and notice 
   how the cable end is made.  

   There are 4 tiny slots on the cable end: 
   * 2 slots on the top
   * 2 on the bottom

   Now it's time to remove the casing without damaging
   it.  This way you can later just slide the casing back
   together and use in your SNES. There are two ways to
   do this.  

   One is to use 2 pairs of needle lab tweesers and
   simultaneously depress both slots on each side and
   pull on the part that goes into the console.

   The second, safer, method and the one I recommend 
   is far more easy.  Find 2 thin pieces of flat metal.
   If you choose to use two knives use dull ones.  Slide
   one piece of metal into the top directly in the middle
   of the cable end.  Do the same to the bottom.  Now you
   can pull the cable end apart.

   Now you have the casing pulled apart, but not 
   damaged.  You can slide it back together, and it'll
   be fine for you snes use agian.  To open the little
   box that's on the cable end, use your fingernail to
   pull up on the base where the cable enters the little
   box.  Pop.  Now pull all your pins free from the 
   little box.  Wasn't that fun!


3. Wiring the controller to the parallel port.
---------------------------------------------------------

   Parallel port
   ___________________________________________
   \   1  2  3  4  5  6  7  8  9 10 11 12 13 /
    \   14 15 16 17 18 19 20 21 22 23 25    /
     ---------------------------------------

   SNES
    __________________
   |         |        \
   | P C L D | X X G   )
   |_________|________/  

     Power  ( white  )
     Clock  ( yellow )
     Latch  ( orange )
     Data   ( red    )
     X      ( no pin ) 
     Ground ( brown  )


   Plug the snes pins to the parallel port pins like so:
  
      2 - CLOCK ( yellow )
      3 - LATCH ( orange )
      9 - POWER ( white )
     10 - DATA ( red )
     18 - GROUND ( brown )

   Make sure the pins don't touch each other!
   I suggest making an adapter out of an old printer 
   LTP cable, or buying parts from radio shack.


4. Linux joystick setup.
---------------------------------------------------------

   4.0. Make the linux joystick driver modules for the SNES.
       
        Your distro may already have done this for you.
        If not read the end of this document.


   4.1. Update your joystick device files in /dev like so:

        For Linux 2.2.x use the following:

        cd /dev
        rm js*
        mknod js0 c 15 0
        mknod js1 c 15 1
        mknod js2 c 15 2
        mknod js3 c 15 3


        For Linux 2.4.x use the following:

        cd /dev
        rm js*
        mkdir input
        mknod input/js0 c 13 0
        mknod input/js1 c 13 1
        mknod input/js2 c 13 2
        mknod input/js3 c 13 3
        ln -s input/js0 js0
        ln -s input/js1 js1
        ln -s input/js2 js2
        ln -s input/js3 js3


   4.2. To enable the pad you must use the modules:
 
        For Linux 2.2.x use the following commands:

           insmod joystick
           insmod joy-console js_console=0,1,0,0,0,0

        For Linux 2.4.x use the following commands:

           modprobe joydev
           modprobe gamecon gc=0,1,0,0,0,0


   4.3. If you use debian install jstest utils:

        apt-get install joystick


   4.4. Use jstest to test your SNES pad.

        jstest /dev/js0


4. Instructions on how to make pretty adapter here later.
---------------------------------------------------------
 
   Everyone that's seen my adapter at UWG, stop asking how 
   to make one.  I need to make pictures of it and post 
   some instructions, but for now it's an exercise for the
   reader.


5. Use of SNES pad.
---------------------------------------------------------

   Most all of the emulators like MAME (SDL), SNES9X, etc
   support this driver and pad.

   Now you can also write a driver wrapper, play PC games,
   or write driver support in an application for your 
   SNES controller.  Have fun.


Joystick Driver Setup for 2.4.x from Jeff Mrochuk
---------------------------------------------------------

 Setup for 2.4.x

 Character Devices -->
 Joysticks -->

 --- Parallel port joysticks
 [M]   Multisystem, NES, SNES, N64, PSX joysticks 
       and gamepads

 You no longer need a "joystick" module. You just need
 parport and parport_pc for parallel support. 

 The new modules is called "gamecon" and you have 
 different paramaters for insmod.

    insmod gamecon  gc=port,pad1,pad2,pad3,pad4,pad5

 where padX is the pad type, snes is type 1.  The port 
 is the parallel port number. So to have 1 snes 
 controller in your first parallel port its:

    insmod gamecon gc=0,1,0,0,0,0


6. Here are some helpful links.
---------------------------------------------------------
  * SNES Adapter with external power source HOWTO
    http://www.fortunecity.com/underworld/doom/727/howto_guide.html
  * JoyStick Driver page
    http://atrey.karlin.mff.cuni.cz/~vojtech/joystick/