FIX94 / Nintendont

A Wii Homebrew Project to play GC Games on Wii and vWii on Wii U
1.85k stars 317 forks source link

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

Open vaguerant opened 9 months ago

vaguerant commented 9 months ago

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 commented 5 months ago

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 commented 3 weeks ago

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?