Nightly - controls not working anymore after loading state

Issue:

I play a game, then save a couple of states
the next day I load a state after the game started (or I simply start the game) my controls are not working anymore
I use a bluetooth gamepad. If I re assign one button in the inpu configuration, only that button is working, while all my other buttons are correctly configured

seems like a cache problem of some sort

System Information

  • Operating System: Win 10 Pro
  • CPU: Intel(R) Core™ i7-8665U CPU @ 1.90GHz 2.11 GHz
  • GPU: no idea
  • Citra Version (found in title bar): 1734
  • Game: Zelda link between worlds
  • Screenshot of Issue (include the full Citra window including titlebar):

Diagnostic Log
citra_log.txt (228.9 KB)

System Information for Support

Client Version                                Nightly 1734 HEAD-64b502a
Operating System                              Windows 10 (10.0)
CPU                                           Intel(R) Core(TM) i7-8665U CPU @ 1.90GHz | AVX2 | FMA
Graphics API                                  OpenGL 3.3.0
Graphics Renderer                             Intel(R) UHD Graphics 620
GPU Driver Version                            27.20.100.9664
CPU JIT                                       [x]
Hardware Renderer                             [x]
Hardware Shader                               [x]
Hardware Shader, Accurate Multiplication      [x]
Shader JIT                                    [x]
System Region                                 -1
Shader Disk Cache                             [x]

I did not find anything wrong in your log file. Please wait for a moderator to assist.

Save States don’t just save your game’s state, they save the entirety of Citra’s state. This means that configuration settings are saved as well. Add to that that your controller might be getting a different Controller ID every time you connect via bluetooth (thank Windows for the “infinite wisdom” on that one), which means that loading save states will likely desync the controller that is “mapped” according to the save state, to the “new” controller that has been connected.

The controls that you see in the configuration menu are mapped to the controller “instance” of when the save state was saved. That “instance” is different when you reconnect your controller. So when you load a save state, a different controller “instance” is loaded from the one that is currently connected, leading to the issue you’re experiencing. There isn’t much we can do about this unforunately. Maybe you can work around this by using a third party controller program profile. That way you’ll always use the same controller instance so it wouldn’t desync even when using save states.