Skip to content

Conversation

Sam-Belliveau
Copy link
Contributor

@Sam-Belliveau Sam-Belliveau commented Sep 23, 2025

Wii Remote + Nunchuck Controls

Kinda depends on #13961

Basically

  • Nunchuck Stick -> Left Stick
  • Nunchuck C / L -> Left Shoulder / Trigger
  • Wii Remote DPad -> DPad
  • Wii Remote A / B -> A / B or Right Shoulder / Right Bumper
  • Wii Remote Shake -> X or Y
  • Wii Remote Pointer -> Relative Right Stick, Hide after 5 seconds

Which maps very closely to how you hold the Wii Remote + Nunchuck. I tested it and it works very well in Super Mario Galaxy, New Super Mario Bros, and Rhythm Heaven Fever. The Wii Pointer works very well with relative input + the auto hiding, I had to change the yaw range so that the sensitivity was the same in each axis.

The IR hides using hold(`Right X+` + `Right X-` + `Right Y+` + `Right Y-` < 0.1, 5.0)

This makes playing games like Super Mario Galaxy much easier.

I had to change the relative FOV's for the relative IR in order to make the sensitivity feel even in both axis on a 16:9 monitor. The pointer can go off screen, but because the IR resets after 5 seconds it's not a big deal.

image image image

@Sam-Belliveau
Copy link
Contributor Author

@MayImilae We can go down the rabbit hole here :)

I think you'd be pleased with these bindings. I've been making Mii's for like 30m using the IR controls on a joystick.

@Trihy
Copy link

Trihy commented Sep 24, 2025

Shouldn't be absolute input for pointer on right stick? I mean the pointer will be more aligned to the screen area this way. But maybe I'm wrong. And could be uncomfortable.

@Sam-Belliveau Sam-Belliveau force-pushed the sdl-wiimote-nunchuk-profile branch from fbd7dd8 to 7a4369d Compare September 24, 2025 04:10
@MayImilae
Copy link
Contributor

MayImilae commented Sep 24, 2025

The problem with shipping defaults for Wii is that there is no way to make a single configuration for all games. Games do whatever the hell they want with the weird inputs available to them, and there is a TON of variation. There are patterns of course, but if you pick a single pattern and say all get this default, you'll be excluding hundreds if not thousands of games. And that's not even including differences in mapping preferences, it's just objectively, if you ship a single configuration it will not work with vast swaths of the Wii library.

For example, this config will not work with sideways Wii Remote titles. New Super Mario Bros Wii, Kirby's Return to Dreamland, Sonic and the Secret Rings, etc etc. Some of these will let you use Wii Remote + Nunchuk or Classic Controller instead, but many don't. After all the Wii Remote is included with the system, so why would they have backups? They won't work with this config, and that's hundreds of games.

This won't work with games that use the Classic Controller. Most Classic Controller games also work with other configurations (excluding Virtual Console and such), but the classic controller is closer to a traditional controller, and might give a better experience, but you are not including that here. Lots of users will want to use that capability.

This will not work with "weird" motion control games. So like, Wii Sports and Wii Sports Resort, Monkey Ball Banana Blitz and it's upright remote weirdness, Just Dance, various golf and tennis games, Go Vacation, WarioWare, etc etc etc. That's a few hundred games too, many of which are the most unique of the Wii library. Supporting these would require unique profiles for single games, or even unique profiles for single minigames in single games. It's hell.

I don't have total number for all of these, but are you ok with shipping a default that just doesn't work with hundreds of games in the Wii library?

The only way to cover the library with defaults is to make profiles for common input types and then use GameINIs to set which profile to use on a game by game basis. That's tedious, laborious work. But that doesn't cover the really weird cases, like, how do you emulate holding a nunchuk and wii remote sideways and pointed at eachother and steering a jetski like it's a bicycle? I don't know! And how do we do games that switch between many zanny control styles, like Wii Sports Resort, Go Vacation, or heaven forbid Warioware?

And that's not even getting into the bazillion variations that people like for the Wii Remote. Since it doesn't map cleanly, the user configurations out there are all over the place! If we ship one configuration as default, we'll get complaints. Is that better than forcing them to configure it manually? Maybe?

This is the rabbit hole of Wii Remote defaults. I don't know how to solve this problem without either a bazillion hours and/or ignoring hundreds if not thousands of games with a default.

I've thought about this problem a fair bit over the years, and this is what I think is the best way forward.

The first is to ship profiles of the common types (Wii Remote / Wii Remote + Nunchuk, Sideways Wii Remote, Classic Controller) and not set any of them as a default, and let users pick what works for a game. It won't "just work" but it could allow them to just pick a profile and go, which is a lot faster than mapping on their own. This won't handle the zanny cases like WarioWare, but they at least have been introduced to where mapping is and can make mappings on their own from there.

That's the easiest solution, and we could just stop there. That is my personal preference to be honest, but that is unambitious.

The next step is where things get messy - spread these profiles of common controller types as defaults via GameINIs. This would require modifying our GameINI system so our per-game control defaults don't override a user's mapping, but it's possible. The downside is that it would take a lot of work, and there are still issues of not covering most of the library unless we have shipped a default for a game. It's a big job. It's possible to just add a default to all the known sideways wii remote and all the known classic controller games and then just set Wii Remote + Nunchuk as a generic default - we'll still be missing quite a few and can't cover zanny games, but that would cover the majority, as well as most popular games too. And more could be added over time.

A complication is user preferences. Unlike the GameCube were the face button variations are fairly well known, I don't know common mappings for the Wii Remote. What you have here seems like a sane Wii Remote + Nunchuk setup to me (I appreciate B button on RT, a good touch) but users are weird and I've seen things. So some research would be required, such as scouring the forum and asking on discord and what not.

Anyway, there's the infodump. I'm not against a default per se, but we need to think about and decide where the line of support will be. I'm not ok with promising default controls and then ignoring half the library, but I know that there are plenty of games that are just impossible to support with default controls. Where to draw the line? That has paralyzed us for a long time.

@Trihy
Copy link

Trihy commented Sep 24, 2025

Maybe we can define names for those different configs (upright, sideway, etc). And how many will be necessary. Three will cover most games? Five? Ten? And just leaving them there, for user selection, without making it mandatory.

@Sam-Belliveau
Copy link
Contributor Author

Just to be clear there isn't a default here, it's just a profile.

@Sam-Belliveau
Copy link
Contributor Author

I was playing Wii sports resort with the Wiimote + Nunchuk + Gyroscope profile after disconnecting the nunchuk.

@Sam-Belliveau
Copy link
Contributor Author

But @MayImilae the issue is, if we don't provide something for the user, it doesn't necessarily mean the user will be able to figure it out.

It took me about an hour of research to make this Wiimote + Nunchuk profile, as I was referencing 3D Allstars, an actual Wii remote + Nunchuk and my Xbox and PS4 controller.

When you disconnect the Nunchuk the profile becomes an upright Wii remote. And if you think it's useful, I could add a Sideways Wiimote as well. I could also add a classic controller profile.

I think the advantage to these being stock profiles is that they serve as useful starting points should the user want to edit them.

Overall I think it's really important to include these and it'll make it easier for users to play their Wii library without necessarily having a Wii remote.

@Sam-Belliveau
Copy link
Contributor Author

Shouldn't be absolute input for pointer on right stick? I mean the pointer will be more aligned to the screen area this way. But maybe I'm wrong. And could be uncomfortable.

I'd recommend trying the profile. I spent a lot of time tuning the IR controls to feel natural, and over all I've found something which made navigating Wii menus feel fun and natural (especially with A and B being on Shoulder and Bumper, which is required to make grabbing Mii's comfortable, among other things)

@MayImilae
Copy link
Contributor

Just to be clear there isn't a default here, it's just a profile.

This is what I get for reviewing at 5 in the morning. Well that's good then, but it would be good to include profiles for Horizontal Wii Remote and Classic Controller as well. Both are at least pretty easy.

@MayImilae
Copy link
Contributor

MayImilae commented Sep 26, 2025

Tested with my Dual Sense Edge (Steam turned off of course). I'll use playstation buttons to reference the physical controller being used since it's less confusing.

I primarily tested the gyro versions.

General

  • HOME is mapped to "Misc 1" which is the mic button on my Dual Sense Edge. That works fine, but I can imagine cases like an Xbox Controller where they don't have a Misc 1. I didn't actually test this though. Ultimately it isn't an important button anyway since Dolphin handles most of those functions.

Wii Remote + Nunchuk Notes:

  • Point Recenter is not mapped in the Gyro version. It MUST be mapped and accessible.

  • 1 and 2 must be mapped. Lots of games use them for secondary functions, such as Twilight Princess using it for map controls and Metroid Prime 3 using 1 for the Map and 2 to select Visor.

    • You could put 1 and 2 on Square and Triangle but that is pretty premium real estate for secondary functions. Putting an alternate d-pad down on triangle would probably be better (see below) and using square for nunchuk shake is also probably better (see further below). So I don't know where 1 and 2 should go.
  • Lots of games use D-Pad down as a third face button, such as Metroid Prime 3 using it for missiles. An alternate d-pad down someone that is easily pressed would be good, ideally in a position where it can be combined with A. Maybe R1 or Triangle?

  • Using the controller's gyro for both the Wii Remote and Nunchuk motion is going to cause some problems for games that use both at once for different things. In testing, it usually just meant I couldn't do the nunchuk action for non-motion plus titles, while always doing the nunchuk action in motion plus titles. For example, in Prime 3 I couldn't do a enemy grapple, and in Twilight Princess I could sometimes spin attack but only if I shook the controller ridiculously hard. However, in Skyward Sword I always, ALWAYS did the shield block and couldn't swing the sword at all!

    • The only solution is to unmap the nunchuk motions from the motion input and put it on a button. Since you already have that mapped to square, I just undid the motion input for the nunchuk and unmapped the wii remote shake buttons, and it was fine. Then Square was the dedicated nunchuk shake button and gyro was used for all the complex bits. I definitely recommend you do that change. This won't work for games that actual use the nunchuk motion but very few do.
      • I didn't get around to testing the Jet Ski minigame, I'll test that later.
    • Also in skyward sword with these controls, it is very difficulty to swing the sword. I had to do full 90° swipes which is ridiculous and made me worry I'd lose my grip on the big (for me) dual sense edge! But this profile doesn't need to be perfect across each and every game, just passable. You may want to test Skyward Sword though if you can, as an extreme case. We'll foot the bill if you need to get a copy.

Sideways Wii Remote Notes:

  • You aren't using the Sideways Wii Remote option in the profile so it doesn't work.

  • Up is broken in the sideways wii remote profile. It's `Pad N` | `Left Y+ When it should be `Pad N` | `Left Y+` (missing the last backtick)

  • Confirmed the Gyro works in New Super Mario Bros Wii and Sonic and the Secret Rings.

    • Secret Rings feels terribly awkward to control with this profile, but that's accurate.

Classic Controller Notes:

  • You should provide Nintendo layout alternate profile for the Classic Controller. Since it is a 1:1 match, it feels really weird to use Xbox layout to me. And it would be hella weird if I was using a Switch controller and didn't use a Nintendo layout.

    • On a classic controller, ZL and ZR are the triggers and L and R are the bumpers, like a switch controller. I'm fine with them swapped in the xbox-y profile (as that is more natural to how games use them) but for the Nintendo profile please make sure that matches. Don't worry about the Analogue L and R, effectively nothing uses it.
  • You don't have the Wii Remote mapped at all in the classic controller profile, and that's probably fine but I feel like there's an edge case out there. I would suggest leaving it as is for now and we'll adjust if someone points it out.

@Sam-Belliveau Sam-Belliveau force-pushed the sdl-wiimote-nunchuk-profile branch from 79d5f12 to 73ec415 Compare September 28, 2025 19:05
@Sam-Belliveau
Copy link
Contributor Author

@MayImilae

  • "Misc 1" actually does exist on new Xbox controllers. That's actually how I bound it in the first place.

  • I added a Gyro Recenter, I made it flicking the right stick in any direction as it was unused otherwise.

  • I unbound the Nunchuk Accelerometer and just split the shaking onto X for the Wiimote and Y for the Nunchuk. Apparently in Super Mario Galaxy the different shakes have different purposes.

  • I feel like binding d-pad down to anything other than d-pad down in a default configuration might be a little bit confusing. It reminds me of majora's mask bindings, which always confused me. I think if a user really wants to change the binding for d-pad down, its easy enough using this config as a base.

  • I fixed the sideways wii remote's configuration.

  • I swapped the classic controllers configuration.

  • I also added a "Touch IR" configuration for PS4 Remotes.

@Sam-Belliveau Sam-Belliveau changed the title SDL Wiimote + Nunchuk profile Add SDL Wii Remote + Nunchuk profiles Sep 28, 2025
Classic/Left Stick/Down = `Left Y-`
Classic/Left Stick/Left = `Left X-`
Classic/Left Stick/Right = `Left X+`
Classic/Left Stick/Calibration = 100.00
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason we would want to set this to 100 instead of the default? (Idem for all the other Calibration values)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

100 probably makes sense since this creates a perfect circle of radius 1. This is probably the closest thing to being correct for a typical "SDL Gamepad".

D-Pad/Down = `Pad S` | `Left Y-`
D-Pad/Left = `Pad W` | `Left X-`
D-Pad/Right = `Pad E` | `Left X+`
IR/Dead Zone = 10.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason we would want to set this to 10 instead of the default? (Idem for all Dead Zone values)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

6 participants