Emulator Issues #2437

GCPad - Many Issues

Added by Billiard26 over 10 years ago.

% Done:


Operating system:
Issue type:
Feature request
Relates to usability:
Relates to performance:
Relates to maintainability:
Regression start:
Fixed in:


What steps will reproduce the problem?
1. Start Dolphin
2. Use GCPad
3. Notice how much GCPad sucks?

What is the expected output? What do you see instead?
- The triggers are expected to work properly.
- Rumble is expected to work properly.
- The source code is expected to be organized and easy to modify.

What version of the product are you using? On what operating system?
- Any version with GCPad, Windows/All.

Please provide any additional information below.
- GCPad is just njoy and that other input plugin thrown together with a
bunch of if statements. That's not cool. Here's a patch for a complete
replacement plugin for GCPad.


Supported Sources: ( not just thrown together with a bunch of if statements )
- XInput (with rumble)
- SDL for joysticks (with rumble)
- DirectInput for keyboard/AND mouse
- Xlib for Linux keyboard ( completely untested, but like 80% done )

- multiple devices mapped to each gamepad
- map buttons to axis - AND axis to buttons
- Individual dead zone for each input / direction
- map multiple inputs to the same control, AND/OR modes
- hold down time ( 0 - 400ms ) - useful when you want A+B to grab while A
and B are also attacks, set hold down time of a few milliseconds for A and B
- adjustable range for each input
- modifier for analog sticks - either increase or decrease the default
range of the sticks
- double tap time ( 0 - 400ms ) - useful for walking/running when playing
ssbm/b on a keyboard or dpad. set range to around half, when you double tap
you will get the full range instead.
- separated trigger-analogs and trigger-clicks - set L/R-Click to the same
button with a high dead zone if you want to use actual analog triggers -
can set R-Click range to 0 and enable double tap to have a full trigger
pull when you double tap - works alright on mario sunshine
- profiles - basic load, save, and delete - currently they are all saved in
the main ini file, i'm going to change this.

- In this patch, I accidentally put the SDL devices before the XInput, so
the detect button picks up the SDL device rather than the XInput like it
should. I've got it fixed now, only takes half a second to swap 2 lines of
- Setting the mouse wheel to an input can get a little funky. I have that
fixed in my code.
- I accidentally disabled the main stick modifier in this new patch. It is
fixed on my end.

- GUI code is a mess
- The class "MasterControl" was kinda a joke, I renamed it DeviceInterface now
- Currently, the code would need #ifdefs added to allow compiling without a
GUI, but it wouldn't be difficult.
- I have only tested on Windows. ( needs a few modifications for non-windows )
- It uses SDL for joysticks, but keyboard input is using DirectInput/Xlib,
so there would be no keyboard in OS X. This could be added in pretty easily
by someone who knows how to use the OS X keyboard.
- I am re-doing some of the code so I can integrate the plugin with
emulated wiimote support. Then I will merge the plugin with Dolphin,
eliminating input plugins.


#1 Updated by Billiard26 over 10 years ago

New Patch Download:

Fixed the 3 Bugs that I mentioned in my original message. Currently, there are no
issues that I know of, on Windows.

#2 Updated by BhaaL over 10 years ago

  • Status changed from New to Accepted
  • Issue type set to Feature request
  • Category set to controls
  • Relates to usability set to Yes

#3 Updated by Billiard26 over 10 years ago

Another new patch at

Check the thread link in my first message for a list of all the changes.

#4 Updated by Billiard26 over 10 years ago

  • Status changed from Accepted to Fixed

Also available in: Atom PDF