FIX94 / Nintendont

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

[Enhancement] Always send a full-analog R/L press whenever a R/L digital-press occurs #1078

Closed NintendoManiac64 closed 1 year ago

NintendoManiac64 commented 1 year ago

Some games, like Mario Party 4 (particularly in the minigame "Mario Speedwagons"), do not send a full-analog press of the R or L button when a digital-press of the R or L button is transmitted.

This is most noticeable on controllers that have their shoulder button springs not functioning in their stock configuration (whether removed, lost, damaged, worn out, etc) since, with that minigame "Mario Speedwagons", the dragster basically won't accelerate unless you specifically give it a full-analog press of the R button.

There's a fork of Nintendont that implements this for non-pro classic controllers, but it'd be great if this were merged upstream and support was also added for other controllers with analog triggers/shoulder buttons including actual GameCube controllers (whether connected to an early-revision Wii or via the official Nintendo USB-GameCube adapter).

For completion sake, it'd be great if it was supported on non-Nintendo controllers like a PS4 controller or other USB controllers, but 99.99% of non-Nintendo controllers aren't even mechanically designed to be able to have a digital-press of R/L without also being a full-analog press anyway, so...

 

EDIT for extra clarification

From the games/console's point of view, a single analog shoulder button is actually two separate buttons: one that is analog, and another that is digital. If you physically look inside the GameCube or (original) classic controller, you can sort of see why this is—there's not only an analog slider but, when the physical plastic of the button is pushed all the way in, it also pushes against a physical digital button (hence the "click").

It's important to note that the analog slider is not at 100% when the shoulder button is pushed to the point just before the click—you have to actually fully press the shoulder button to the point of "clicking" in order to make the analog slider also reach its own state of 100%.

The problem was about how some games, e.g. Mario Party 4, completely ignore the digital button and only look at the analog slider. This means that, if you press the digital button, the analog slider is still recognized as not being pressed and therefore the input is treated as if the button is not being pressed at all.

My entire point of this issue was so that, when a digital button is pressed that Nintendont should also transmit that the analog slider is at full 100%. The aforementioned fork already implements this and it works great without removing proper in-between analog button functionality and granularity on controllers that support said function.

carnage702 commented 1 year ago

this would be awful, all games that actually use the pressure trigger would just be stuck on full presses for no reason, why would you remove this feature from ps3 controller, wii classic controller(original) and gc controllers? makes no sense, if your controller has damaged l/r just fix it or buy a new one but removing the ability from other controllers is not the answer and i wont make yet another menu option for this to even be a thing...

NintendoManiac64 commented 1 year ago

...you seem to have completely misunderstood the issue.

From the games/console's point of view, a single analog shoulder button is actually two separate buttons: one that is analog, and another that is digital. If you physically look inside the GameCube or (original) classic controller, you can sort of see why this is—there's not only an analog slider but, when the physical plastic of the button is pushed all the way in, it also pushes against a physical digital button (hence the "click").

It's important to note that the analog slider is not at 100% when the shoulder button is pushed to the point just before the click—you have to actually fully press the shoulder button to the point of "clicking" in order to make the analog slider also reach its own state of 100%.

The problem was about how some games, e.g. Mario Party 4, completely ignore the digital button and only look at the analog slider. This means that, if you press the digital button, the analog slider is still recognized as not being pressed and therefore the input is treated as if the button is not being pressed at all.

My entire point of this issue was so that, when a digital button is pressed that Nintendont should also transmit that the analog slider is at full 100%. The aforementioned fork already implements this and it works great without removing proper in-between analog button functionality and granularity on controllers that support said function.

user18081972 commented 1 year ago

@carnage702 I don't see a single downside to this enhancement (now that NintendoManiac64 has further elaborated). can you think of any?

Full press digital button being triggered, being equal to 100% analog trigger pull, will always be intended behavior. Its a nice enhancement for aging hardware.