Mapping Skins to a USB GamePad

For those who game using a PC (emulation or otherwise), NintendoSpy software can be used to show the inputs of any USB Gamepad, including XBox 360 Controllers and original Nintendo Controllers connected via an adapter. This is achieved by changing the skin to be a “pc360” type instead of it’s “correct” type and reassigning the inputs. Here is a relatively simple tutorial to achieve this:

Step 1: Determine The USB Button Mapping (non 360)

If you’re using an XBox 360 PC controller, this step is essentially done for you as the buttons you press will inherrently be matched. If you are using a non 360 controller (like an original Nintendo controller with an adapter), then you need to determine what the corresponding input for each button is when pressed. Connect your USB controller and launch the NintendoSpy software. Select “PC 360” from the main dropdown and “Default PC 360” from the list of skins. What you are seeing is a representation of how the controller is read by NintendoSpy. Every controller is different (and sometimes different revisions of the same controller can be mapped differently) so it’s important to see what each button is mapped to. Pressing any one button on your controller will light up the corresponding value on screen. I recommend writing these values down to help you later.

For example:

  • SNES => PC 360
  • x => y
  • y => x
  • up => up

In some instances, your directional pad may be mapped to one of the sliders as an analog input. If that is the case, identify which slider is being activated in you notes (ex. left = x slider). If you are using the N64 or GameCube controllers, make note of which slider moves when manipulating the analog stick. Sadly, some controllers will not map the trigger buttons in a way that allows for the GameCube triggers to move correctly.

Step 2: Decide The New Button Mapping

Now that you know what buttons correspond to which inputs in the NintendoSpy software, decide what the button on the display will activate when pressed. For instance, if you are playing a NES Emulator with an XBox 360 controller, you may want “X” to show up as “B” on the display when pressed and “A” to show as “A”, or you may want “A” to show as “B” and “B” to show as “A”. There’s no wrong answer, it’s completely up to you.

Step 3: Edit the skin.xml

Open up the skin.xml in your favourite text editor (notepad will work fine for this task). Change the “type” value from whatever is there to “pc360”. Then, adjust all the buttons in the file to line up with your new mapping using “name” property.

For example, if you are using an SNES skin and an XBox 360 controller, it will probably look something like this:

Before:

 <button name="a" image="circle.png" x="###" y="###" />
 <button name="b" image="circle.png" x="###" y="###" />

After:

<button name="b" image="circle.png" x="###" y="###" />
<button name="a" image="circle.png" x="###" y="###" />

Where the only value changed was the letter in the “name” property.

If you have a controller that maps the directional pad to analog inputs, you’ll need to map each direction button as a “rangebutton”. These will take analog values and display them as a regular button when a range is activated. This can also be used to remap analog controllers to appear as buttons.

For example, if you see pushing left makes the “x” indicator go to -1.0 on the slider then your left button should look like this in the xml:

<rangebutton name="x" from="-1.0" to="-0.9" image="left.png" x="###" y="###" />

This means show the “left” button when the x indicator goes between -1.0 and -0.9, the lowest value has to be first. If up shows as 1.0 in the “y” slider, then the range would be from 0.9 to 1.0 and the name would be “y”.

Step 4: Test

Close and re-open the NintendoSpy software and select the PC 360 dropdown. You should now see the edited skin appear. Try out the buttons and make sure it all lines up correctly. Make adjustments as needed.