flycast icon indicating copy to clipboard operation
flycast copied to clipboard

UI: Controller Type Requires Re-Selection to Apply

Open wn2000 opened this issue 1 month ago • 6 comments

Platform / OS / Hardware: DC / Linux arm32 / Rockchip RK3328 SBC

Flycast version: v2.5 Standalone

Description of the Issue

After setting controller to Lightgun and exiting Flycast, when re-entering Flycast the crosshair has no response. I need to open the menu, re-select the controller type as Lightgun, even though it is already showing Lightgun as the current type. After that it behaves as expected.

I'm using a regular USB mouse, and the SDL driver (showing as SDL Default Mouse). Tried on House of The Dead 2 DC version.

wn2000 avatar Nov 01 '25 08:11 wn2000

I can't reproduce this issue using the same game. Are you loading a savestate?

flyinghead avatar Nov 01 '25 09:11 flyinghead

Ahh yes I was loading a savestate.

wn2000 avatar Nov 01 '25 09:11 wn2000

To clarify, when I said "crosshair has no response", it was not entirely true:

The crosshair (drawn by Flycast) did move. But the in-game crosshair did not move.

wn2000 avatar Nov 01 '25 09:11 wn2000

Just tested again. Without loading a savestate, it works correctly.

So the bug appears to be when after loading a savestate, UI shows Lightgun but it was not actually in effect, until being manually re-selected.

wn2000 avatar Nov 01 '25 10:11 wn2000

The reason is that the Dreamcast controllers configuration is included in save states, but the UI doesn't show the current configuration after loading it. If you manually change the configuration at this point, then the game is notified and the UI and game are in sync.

This is done so that the controller configuration stays the same regardless of loaded states, even though it can be confusing as in this case.

flyinghead avatar Nov 01 '25 10:11 flyinghead

Thanks. That makes perfect sense now.

This still feels like a bug though.

Ideally the savestate should only contain game state and not the emulator state. But I understand there might be technical reasons why that is hard to do.

In that case, I think the UI should reflect the current actual controller setting. As even the configuration stays the same, I still need to reapply it, so it doesn't really save any effort from the user. And it causes so much confusion. I was going back and forth for two days trying to figure out why the SDL driver doesn't work for the mouse.

Or perhaps, the code could go through each configuration and compare with the current in-memory configuration, and sync them automatically?

wn2000 avatar Nov 01 '25 17:11 wn2000