Overview
Of all GameCube controller mods, those that eliminate snapback are objectively among the most important. However, few resources exist to explain how these mods work and why. The goal of this page is to demystify “Snapback Modules” and serve as a reference for any who wish to make their own!
What is Snapback?
Snapback is a mechanical phenomenon which causes undesired input errors such as turnarounds and tap jumps. It occurs due to motions of the control stick itself. Whenever the stick snaps to center, it briefly experiences high-speed oscillations while settling to rest. This “overshoot” is tracked by the potentiometers and sent directly to the GCC microcontroller as a raw (analog) electrical signal. Depending on the amount of overshoot, an undesired input in the reverse direction may occur.
Thanks to @yaboimikey97 for this awesome high-speed video showing snapback in action:
There is one universal goal of snapback capacitors, modules, etc. - to filter the electrical signal and reduce the magnitude of “overshoot” such that it does not exceed the stick’s input deadzone. (Note, the mechanical behavior of the stick remains unchanged.)
Low-Pass Filtering
At the time of writing, snapback capacitors and modules universally achieve their goal by means of low-pass filtering. Without diving into too much detail, low-pass filters “smooth out” high-frequency (rapid) signal changes while preserving low-frequency (slow) signal changes.
The “RC lowpass filter” is one of the most common implementations due to its simplicity - it requires only a single resistor and single capacitor. Luckily, stickbox potentiometers themselves operate using resistive carbon tracks. This means the “R” is already built into the controller (it’s the potentiometer itself), and all that’s needed is the “C”! Hence, the origin of snapback capacitor modding.
The value of R times C determines which frequencies the filter eliminates (high/rapid) and which it preserves (low/slow). Since R is already fixed, we simply change “C”.
Note: RC low-pass filtering is not the only way to mitigate snapback. For example, the Goomwave DX deals with snapback via a combination of onboard RC filtering and an algorithm for simulated PODE. More exotic filtering circuits and algorithms also exist, but in general these are not relevant to GCC modding for a few reasons: (a) hardware solutions are substantially more complicated to integrate; (b) software solutions aren’t possible as we can’t modify GCC microcontroller code; and (c) the existing solution - snapback modules - are quite simple and already work very well!
Capacitor Arrays (Modules)
Ideally we could set a “sharp cutoff” point where everything “fast” in the signal would be totally eliminated and everything “slow” would be preserved. Unfortunately RC filters simply aren’t this elegant, and there’s a large transition region between what counts as “slow” vs “fast”. Additionally, snapback oscillations and quick player inputs are actually relatively close in speed… at least as far as the filter is concerned. This makes it tricky to tune the filter such that snapback is meaningfully reduced while player inputs remain (effectively) unchanged. (By the numbers - it’d be great if snapback were separated from player inputs by a factor of 100x or more, but in reality it’s only ~5-10x.)
Because of this, snapback mods are typically tuned on a per-controller, per-direction basis. The goal is to add just enough capacitance (“C”) to eliminate snapback - but no more! - else your own inputs will start to be filtered out too. This is what a snapback capacitor module does! Each is simply a switch plus a large bank of capacitors, allowing you to individually add or remove capacitance from the filter.
“No-Reset” Functionality
When a GCC is plugged in, it powers up and calibrates extremely quickly. With a snapback capacitor is installed, this calibration occurs so quickly that control stick signals have not even had the chance to stabilize (due to the added filter). Because of this, snapback capacitors cause calibration issues and potential control stick drift.
Modules with “No-Reset” circuits simply wait a second or two to let the controller power on before connecting their capacitor array(s). They allow the controller to calibrate properly (as if no capacitor at all was present), then “connect” the capacitors shortly afterwards so you get all the snapback filtering benefits. Assuming the circuit is implemented properly, is no downside to “No-Reset” functionality.
Note: If you have a snapback capacitor/module installed and it’s not a “no-reset” type, you should ALWAYS perform a controller reset (hold X + Y + Start for 5 seconds), even if you don’t have drift. It’s possible to have calibration issues even without drift, as drift only occurs when calibration is so bad that the centerpoint falls outside of the central deadzone. A snapback capacitor can cause calibration issues even if you don’t experience drift (bad notch values, assymmetric input sensitivity e.g. dashes, etc).