Project

General

Profile

Emulator Issues #11642

Real Wiimote not always working after loading a save state with recent change also slowing down responsiveness after loading a savestate

Added by jonrico about 1 year ago. Updated about 2 months ago.

Status:
Fixed
Priority:
Low
Assignee:
% Done:

0%

Operating system:
N/A
Issue type:
Bug
Milestone:
Regression:
No
Relates to usability:
No
Relates to performance:
No
Easy:
No
Relates to maintainability:
No
Regression start:
Fixed in:
5.0-11684

Description

Game Name?

Super Mario Galaxy 2, Xenoblade Chronicles but applies to all games.

Game ID? (right click the game in the game list, properties, info tab)

SB4P01 (SMG2)

MD5 Hash? (right click the game in the game list, properties, info tab, MD5 Hash: Compute)

4765b7e7a547aeaf308dd2dbc3e6f7dd

What's the problem? Describe what went wrong.

When loading save states when using a Real Wiimote (motion plus, official Nintendo) the controls do not always work after loading.

What steps will reproduce the problem?

  1. Start a new instance of Dolphin.
  2. Load Super Mario Galaxy 2 and load a save game using the Wii loading system, not a save state.
  3. Save your game using a save state.
  4. Quit Dolphin.
  5. Start Dolphin and Super Mario Galaxy 2 and load your previous save state.
  6. Play a bit and save a new save state.
  7. Load that new save state as soon as you save it.
  8. Sometimes the controls will not be working after the disconnect/reconnect of the Wiimote that was added in build 5.0-9808

Holding down a button on the Wiimote or a direction on the Nunchuck seems to make the failure more likely.

A secondary problem with the 9808 solution is that time taken to do the disconnect/reconnect is sufficient to make save states less useful in timed or dangerous situations because you dont have control for 1-2 seconds.

Is the issue present in the latest development version? For future reference, please also write down the version number of the latest development version.

Yes. Latest tested version is 9808.

Is the issue present in the latest stable version?

No because the disconnect/reconnect was not implemented there. There are other issues with this in stable.

If the issue isn't present in the latest stable version, which is the first broken version? (You can find the first broken version by bisecting. Windows users can use the tool https://forums.dolphin-emu.org/Thread-green-notice-development-thread-unofficial-dolphin-bisection-tool-for-finding-broken-builds and anyone who is building Dolphin on their own can use git bisect.)

  1. But again a different issue across Dolphin instances existed before hence the fix in 9808.

If your issue is a graphical issue, please attach screenshots and record a three frame fifolog of the issue if possible. Screenshots showing what it is supposed to look like from either console or older builds of Dolphin will help too. For more information on how to use the fifoplayer, please check here: https://wiki.dolphin-emu.org/index.php?title=FifoPlayer

[Attach any fifologs if possible, write a description of fifologs and screenshots here to assist people unfamiliar with the game.]

What are your PC specifications? (CPU, GPU, Operating System, more)

Core i7 4770K, Nvidia 1080TI, Windows 10

Is there anything else that can help developers narrow down the issue? (e.g. logs, screenshots,
configuration files, savefiles, savestates)

No data I can supply will be useful here I think. Ideally the disconnect/reconnect would only happen when required - i.e not within a single session of Dolphin. It may also be useful to have a config option that we could apply to switch this on and off on a game config level. Ideally this could be changed when the game is running without having to restart.

History

#1 Updated by jonrico about 1 year ago

Note that in Step 7 in What steps will reproduce the problem? it should be possible to just keep loading the save state and getting different results. I have seen the same save state work, mess up the controls like an input is held down, start with seemingly no controls available and make Dolphin say the WiiRemote has been disconnected. In all cases using the menu Disconnect/reconnect seems to fix the problem until the save state is next loaded.

#2 Updated by Billiard26 about 1 year ago

  • Assignee set to Billiard26

#3 Updated by jonrico about 1 year ago

After more testing it seems I have misreported this - it is consistent but not ideal.

If I dont touch the Nunchuck at all during the disconnect/reconnect everything works.

The 1-2 second delay is still annoying and could be removed by only doing the reset when required if such a test is possible, but the controls work if I dont touch the Nunchuck.

If I am holding a direction or button on the Nunchuck when the disconnect/reconnect happens the controls always break.

I cannot now repeat the issue with the Wiimote becoming disconnected and displaying the "press A to reconnect" method on loading a save, but I do know that it happened once. Maybe a timing issue.

#4 Updated by JMC4789 about 1 year ago

This is the expected behavior considering what we're doing. If you were to connect a Wii Remote on the Wii while holding the joystick it'd end up broken too.

The question become is there a way to make this better without the problems the old system had (which were sometimes permanent issues with controls after saving a state.)

#5 Updated by jonrico about 1 year ago

Thanks again.

My suggestion would be to simply only do the disconnect/reconnect when required if its possible to check "when required" in a reliable way.

#6 Updated by Billiard26 about 1 year ago

Things that need to be watched to check if a reconnection is "required".

Reporting mode -> Could be synced instead of reconnecting (This is all that was synced before)
Extension initialization/encryption state -> Possible to sync
Speaker state -> Not really understood enough to properly sync
IR Camera State -> Potentially possible to sync
Motion plus initialization state -> Could not be synced but we could hack in our own responses now that M+ is fully understood.
Any ongoing read requests -> Would be a pain to sync
Probably more I'm forgetting...

Basically, it would be a ton of code and would be super hacky.

A better solution would be adding Wiimote support to controller interface (in progress).
Users wanting to make regular use of savestates with physical wiimotes can simply re-map all wiimote controls to a fully emulated wiimote.
Savestates would then work perfectly without adding state tracking and hackery.

#7 Updated by Billiard26 about 1 year ago

  • Priority changed from Normal to Low
  • Status changed from New to Questionable

#8 Updated by JMC4789 about 1 year ago

That would also give us Hybrid Wii Remote 2.0, so I'm in favor of that solution.

#9 Updated by Billiard26 2 months ago

  • Status changed from Questionable to Fix pending

#10 Updated by Billiard26 about 2 months ago

  • Fixed in set to 5.0-11684
  • Status changed from Fix pending to Fixed

Issue is avoided by configuring an emulated Wii remote which is now possible with real Wii remote data.

Also available in: Atom PDF