Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add shoulder button swap combo (L+R+D-pad Down) #1145

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

vaguerant
Copy link

@vaguerant vaguerant commented Sep 30, 2023

Fixes #785, fixes #829.

I know this has been discussed and rejected before, but I was already doing this for my own benefit and figured I'd PR it just in case there was any interest.

The what

This allows swapping L with ZL and R with ZR on the Classic Controller Pro and other controllers which identify the same way such as the SNES Classic Mini, the many open-source BlueRetro Wiimote adapters, the various RaphNet and Mayflash adapters, etc. Pressing L+R+D-pad Down on any such controller swaps the shoulder buttons, pressing the combo again resets the layout back to normal. Other controllers (original Classic Controller, GameCube, USB HID, Wii U GamePad) are not affected.

The why

Obviously, this is a relatively niche feature. It benefits controllers which either only have one set of shoulder buttons (e.g. SNES Classic Mini, Switch Online N64 via BlueRetro) or two sets of shoulder buttons but mapped awkwardly (e.g. any modern controller like Xbox/PlayStation/Switch via BlueRetro). For the retro controllers, this is mainly useful for things like retro game collections (Mega Man, Sonic, Nintendo Puzzle Collection, Zelda Collector's Edition, etc.). For the modern controllers, this benefits basically any GameCube game which uses shoulder buttons. The BlueRetro controller mapping itself swaps the shoulder buttons on modern controllers, for better use on classic consoles, but on GameCube that's not very beneficial and un-swapping them is useful.

The how

Adds C_ZSWAP to the other five remapping schemes, the necessary button triggers and the code to check whether the user currently has C_ZSWAP engaged in the Classic Controller Pro controller configuration. It can be used at the same time as the C_SWAP (face button rotation) config for players who want both.

The bonus

With the shoulder buttons swapped, Crazy Taxi is surprisingly playable on a SNES Classic Mini controller. It supports D-pad steering and only makes use of the L/R/A/B buttons.

@h6t
Copy link

h6t commented Jan 5, 2024

Hi, don't know much about Nintendont and stuff, but i was wondering if you think it'd be possible to make something similar to this but where a button combo swaps the x axis on the c stick? This is an using the gamecube controller as many games use an inverted x-axis on the c stick which is pretty annoying (or atleast it's inverted in comparison to modern first person games.)
Sorry for botherin'

@Willicious
Copy link

I'm looking for a way to change the button combo for Reset/Power-Off. (R + Z + B + D-Pad Down) is too easy to press accidentally in many games (SSX series, Tony Hawk Series, etc) so I'd rather just remove it or swap B for the start button, something like that.

Since you've managed to successfully edit button combos, could you perhaps point to whereabouts in the code this change would need to be made?

Also, do you have any building/compiling tips? Is it relatively straightforward?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Controllers [Request] Add SNES classic edition controller mode
3 participants