Emulator Issues #12546
openMultiplayer Wii Controller Profile switching: all controllers map to same player.
0%
Description
This applies to switching Wii Controller Profiles when input mode is set to "Emulated Wii Remote" for all players.
Reproduce:
- Assign a hotkey to toggle Wii controller profiles in-game.
- Start a 2 player game with emulated Wii controllers.(Mario Kart Battle mode is a great example).
- Play the game to verify each player has control of their respective character.
- Hit the hotkey to switch controller profiles.
Actual Outcome:
Both characters will now be controlled by the same emulated Wii input device. If I'd done this with a 4 player device, all 4 would be controlled by one controller.
Expected Outcome:
Either:
- Only the player who pressed the hotkey should find their profile has changed.
- All players' profiles change, providing bespoke profiles have been set up for wiimotes 2 - 4 as they have been for wiimote 1.
Either way - all players remain in control of their respective characters.
Proposed fix:
Please see attached. Because the UI for profile hotkey assignment is so far advanced, I am optimistic a lot of the work is already done.
The Wiimote Profile Ini files currently start with the header '[Profile]'. All Ini entries below this header are automatically assigend to all players, as things stand.
I recommend Dolphin looks for additional headers after this one, looking for headers '[Wiimote1]' through to '[Wiimote4]'.
When the hotkey is pressed and the next profile is loaded, Dolphin will look for these '[WiimoteX]' headers and assign them to players as needed.
If one Wiimote header is not found (say '[Wimmote3]') when the profile is loaded, that player simply keeps their previous control scheme.
If no Wiimote headers are found under the main '[Profile]' header, Dolphin simply behaves as it does now. This way - nothing breaks.
I would like to add that the Dolphin input system for emulated devices is phenominal. It is extremely powerful and I extend my gratitude to the person / people behind this implementation.
Files