[v2.1.0] Nintendo Switch button prompts become incorrect after restart despite saved custom mappings #2546

Open
opened 2026-11-11 22:51:20 +00:00 by tofujack · 5 comments
tofujack commented 2026-11-11 22:51:20 +00:00 (Migrated from github.com)

Hookshot version

v2.1.0

What kind of problem

Sound, controls or saves

What happened

# [v2.1.0] Nintendo Switch button p.txt

Where in the game

Anywhere

How often

Every time

Graphics card and driver version

NVIDIA GeForce RTX 4070 SUPER (12 GB)

CPU, RAM and operating system

Intel(R) Core(TM) i7-10700K CPU @ 3.80GHz (3.79 GHz), 32GB, Windows 11 OS Build 26300.9974

Changes from the defaults

I did not make changes to any internal files, I have attached a note detailing what I am experiencing and a workaround. This is what the hookshot_options.ini show.

quality_preset=0
fullscreen=0
gpu_device=0
frame_generation=1
frame_pacing=0
hdr=0
hdr_paper_white=200
hdr_peak_brightness=1000
frame_rate_cap=0
nvidia_reflex=0
amd_anti-lag_2=0
output_res=2048x1152
dlss=0
dlss_model=0
resolution=1
upscaling=0
sharpness=0
anisotropic_filtering=4
handheld_profile=0
ultrawide=0
ultrawide_menus=1
robust_buffers=0
mesh_shaders=0
volume=100
mute_in_background=0
audio_output=0
fps_counter=0
menu_size=2
game_speed=1
text_speed=0
text_size=0
microphone=1
discord_status=1
controller_in_background=0
mouse_camera=0
disable_camera_centering=0
mouse_sensitivity=100
invert_mouse_vertical=0
invert_camera_x=0
invert_camera_y=0
stick_dead_zone=0
rumble_strength=100
motion_controls=1
motion_sensitivity_x=100
motion_sensitivity_y=100
invert_motion_x=0
invert_motion_y=0
motion_deadzone=1
layout_preset=3
button_prompts=1
menu_shortcut=0
debug_tools=0
descriptor_reuse=1
sampler_cache=0
options_version=4
pad_a=0
key_a=69,0
pad_b=2
key_b=16,0
pad_x=1
key_x=32,0
pad_y=3
key_y=1,0
pad_ls=7
key_ls=17,0
pad_rs=8
key_rs=67,0
pad_l=9
key_l=81,0
pad_r=10
key_r=82,0
pad_zl=15
key_zl=90,2
pad_zr=16
key_zr=88,70
pad_plus=6
key_plus=9,13
pad_minus=4
key_minus=77,0
pad_left=13
key_left=49,0
pad_up=11
key_up=50,0
pad_right=14
key_right=51,0
pad_down=12
key_down=52,0
key_move_up=87,0
key_move_down=83,0
key_move_left=65,0
key_move_right=68,0
key_cam_up=38,73
key_cam_down=40,75
key_cam_left=37,74
key_cam_right=39,76

Other software hooked into the game

No, nothing hooked in

hookshot_log.txt

hookshot_log.1.txt
hookshot_log.2.txt
hookshot_log.3.txt
hookshot_log.4.txt
hookshot_log.txt

Screenshots or video

What it should show What I set it too after 2 reboots Change after restart

Before you send it

  • I'm on the newest release, or the problem is still there on it.
  • I searched the open issues for this problem.
  • I'm not attaching game files, keys, hookshot.exe, the .bin caches or saves.
### Hookshot version v2.1.0 ### What kind of problem Sound, controls or saves ### What happened [# \[v2.1.0\] Nintendo Switch button p.txt](https://github.com/user-attachments/files/34718918/v2.1.0.Nintendo.Switch.button.p.txt) ### Where in the game Anywhere ### How often Every time ### Graphics card and driver version NVIDIA GeForce RTX 4070 SUPER (12 GB) ### CPU, RAM and operating system Intel(R) Core(TM) i7-10700K CPU @ 3.80GHz (3.79 GHz), 32GB, Windows 11 OS Build 26300.9974 ### Changes from the defaults I did not make changes to any internal files, I have attached a note detailing what I am experiencing and a workaround. This is what the hookshot_options.ini show. quality_preset=0 fullscreen=0 gpu_device=0 frame_generation=1 frame_pacing=0 hdr=0 hdr_paper_white=200 hdr_peak_brightness=1000 frame_rate_cap=0 nvidia_reflex=0 amd_anti-lag_2=0 output_res=2048x1152 dlss=0 dlss_model=0 resolution=1 upscaling=0 sharpness=0 anisotropic_filtering=4 handheld_profile=0 ultrawide=0 ultrawide_menus=1 robust_buffers=0 mesh_shaders=0 volume=100 mute_in_background=0 audio_output=0 fps_counter=0 menu_size=2 game_speed=1 text_speed=0 text_size=0 microphone=1 discord_status=1 controller_in_background=0 mouse_camera=0 disable_camera_centering=0 mouse_sensitivity=100 invert_mouse_vertical=0 invert_camera_x=0 invert_camera_y=0 stick_dead_zone=0 rumble_strength=100 motion_controls=1 motion_sensitivity_x=100 motion_sensitivity_y=100 invert_motion_x=0 invert_motion_y=0 motion_deadzone=1 layout_preset=3 button_prompts=1 menu_shortcut=0 debug_tools=0 descriptor_reuse=1 sampler_cache=0 options_version=4 pad_a=0 key_a=69,0 pad_b=2 key_b=16,0 pad_x=1 key_x=32,0 pad_y=3 key_y=1,0 pad_ls=7 key_ls=17,0 pad_rs=8 key_rs=67,0 pad_l=9 key_l=81,0 pad_r=10 key_r=82,0 pad_zl=15 key_zl=90,2 pad_zr=16 key_zr=88,70 pad_plus=6 key_plus=9,13 pad_minus=4 key_minus=77,0 pad_left=13 key_left=49,0 pad_up=11 key_up=50,0 pad_right=14 key_right=51,0 pad_down=12 key_down=52,0 key_move_up=87,0 key_move_down=83,0 key_move_left=65,0 key_move_right=68,0 key_cam_up=38,73 key_cam_down=40,75 key_cam_left=37,74 key_cam_right=39,76 ### Other software hooked into the game No, nothing hooked in ### hookshot_log.txt [hookshot_log.1.txt](https://github.com/user-attachments/files/34719134/hookshot_log.1.txt) [hookshot_log.2.txt](https://github.com/user-attachments/files/34719133/hookshot_log.2.txt) [hookshot_log.3.txt](https://github.com/user-attachments/files/34719130/hookshot_log.3.txt) [hookshot_log.4.txt](https://github.com/user-attachments/files/34719131/hookshot_log.4.txt) [hookshot_log.txt](https://github.com/user-attachments/files/34719132/hookshot_log.txt) ### Screenshots or video <img width="1080" height="1440" alt="What it should show" src="https://github.com/user-attachments/assets/39572b28-e6e9-4ef8-a9ac-43aa8b008178" /> <img width="1080" height="1440" alt="What I set it too after 2 reboots" src="https://github.com/user-attachments/assets/afd0458f-fefb-4306-83e8-6e970b4b49bd" /> <img width="888" height="508" alt="Change after restart" src="https://github.com/user-attachments/assets/02ceb93d-d8d5-449f-9a22-bfbc5b498384" /> ### Before you send it - [x] I'm on the newest release, or the problem is still there on it. - [x] I searched the open issues for this problem. - [x] I'm not attaching game files, keys, hookshot.exe, the .bin caches or saves.
mooki000 commented 2026-11-12 02:51:26 +00:00 (Migrated from github.com)

I'm looking at this tonight (Linux, RTX 4090): reproducing the steps from your note first, then why the prompts change after a restart although the mappings are saved. By the project's scoring: S3, one report (confidence 0.4). I'll post what I find here, fix or not.

I'm looking at this tonight (Linux, RTX 4090): reproducing the steps from your note first, then why the prompts change after a restart although the mappings are saved. By the project's scoring: S3, one report (confidence 0.4). I'll post what I find here, fix or not.
NotRexed commented 2026-11-12 03:11:59 +00:00 (Migrated from github.com)

Thanks for the detailed report and the ini comparison, that made this traceable.

What happens: the icons follow the button positions SDL reports. On the Switch face, the bottom face button is drawn as B, the right one as A, the top as X and the left as Y, as on a Nintendo controller. Your saved controls bind Switch A to the bottom input, B to the left, X to the right and Y to the top (pad_a=0, pad_b=2, pad_x=1, pad_y=3). Your actions work because your controller reports its buttons in that order, but by position those are B, Y, A and X, which is exactly what the game shows after a restart.

Right after you remap in game, the texts already on screen keep the icons they were drawn with (the ones from before the change), which is why it looks right until the next start.

To fix it properly we need to know how your controller presents itself. Could you attach the hookshot_log.txt from one start with it plugged in? The lines that start with hid: and prompts: auto: controller "..." name it. Meanwhile, if your controller has a mode switch (Switch / XInput / D-input), try the other mode: in one of them its buttons should line up with the Nintendo (Default) preset, and both the controls and the icons will be right.

Thanks for the detailed report and the ini comparison, that made this traceable. What happens: the icons follow the button positions SDL reports. On the Switch face, the bottom face button is drawn as B, the right one as A, the top as X and the left as Y, as on a Nintendo controller. Your saved controls bind Switch A to the bottom input, B to the left, X to the right and Y to the top (`pad_a=0`, `pad_b=2`, `pad_x=1`, `pad_y=3`). Your actions work because your controller reports its buttons in that order, but by position those are B, Y, A and X, which is exactly what the game shows after a restart. Right after you remap in game, the texts already on screen keep the icons they were drawn with (the ones from before the change), which is why it looks right until the next start. To fix it properly we need to know how your controller presents itself. Could you attach the `hookshot_log.txt` from one start with it plugged in? The lines that start with `hid:` and `prompts: auto: controller "..."` name it. Meanwhile, if your controller has a mode switch (Switch / XInput / D-input), try the other mode: in one of them its buttons should line up with the Nintendo (Default) preset, and both the controls and the icons will be right.
Owner

@tofujack commented on GitHub · 2026-11-12 05:14 UTC · original

hookshot_log.txt

> [@tofujack](https://github.com/tofujack) commented on GitHub · 2026-11-12 05:14 UTC · [original](https://github.com/NotRexed/Hookshot/issues/2546#issuecomment-6815327893) [hookshot_log.txt](https://github.com/user-attachments/files/34730090/hookshot_log.txt) <!-- github-sync:c:6815327893 -->
Owner

@tofujack commented on GitHub · 2026-11-12 05:18 UTC · original

Hookshot v2.1.0 sees the controller as Core (Plus) Wired Controller through SDL3. The key line is 216:

[hos host] hid: controller "Core (Plus) Wired Controller" connected (SDL)

There’s no prompts: auto: controller "..." entry in this run. Hookshot logs Switch icons at line 109, detects the controller at line 216, then logs Talk ring positions 1 3 0 2 and Switch textures at lines 420 and 428. The log gives the SDL device name, but leaves the controller’s input mode and SDL mapping unspecified.

My controller does not have a mode switch. It is a basic USB Core PowerA branded licensed Nintendo Switch controller

> [@tofujack](https://github.com/tofujack) commented on GitHub · 2026-11-12 05:18 UTC · [original](https://github.com/NotRexed/Hookshot/issues/2546#issuecomment-6815387837) Hookshot v2.1.0 sees the controller as Core (Plus) Wired Controller through SDL3. The key line is 216: [hos host] hid: controller "Core (Plus) Wired Controller" connected (SDL) There’s no prompts: auto: controller "..." entry in this run. Hookshot logs Switch icons at line 109, detects the controller at line 216, then logs Talk ring positions 1 3 0 2 and Switch textures at lines 420 and 428. The log gives the SDL device name, but leaves the controller’s input mode and SDL mapping unspecified. My controller does not have a mode switch. It is a basic USB Core PowerA branded licensed Nintendo Switch controller <!-- github-sync:c:6815387837 -->
Owner

@mooki000 commented on GitHub · 2026-11-12 12:45 UTC · original

Thanks for the new log and for confirming that your PowerA pad has no mode switch. There is a specific lead: SDL lists the same USB ID for a PowerA Wired Controller Plus and a GameCube-style model, and its GameCube classification can produce the button order you need—but your log does not yet identify that route.

I've opened #2678 to log the controller's GUID and active mapping without changing its input. It is still open: v2.1.0 and the current nightly, 51da0464, do not include it. Once it merges, please use the first nightly containing #2678 and start with the pad connected, then paste the hid: controller line containing guid= and mapping-name=, plus the following mapping-string line(s), or attach that startup's hookshot_log.txt. That will let us check the classification instead of guessing a replacement mapping.

The real-controller check is also recorded as test request T-6RQB; that is a request to test the PR, not a claim that today's nightly already has the line.

> [@mooki000](https://github.com/mooki000) commented on GitHub · 2026-11-12 12:45 UTC · [original](https://github.com/NotRexed/Hookshot/issues/2546#issuecomment-6823981487) Thanks for the new log and for confirming that your PowerA pad has no mode switch. There is a specific lead: [SDL lists the same USB ID for a PowerA Wired Controller Plus and a GameCube-style model](https://github.com/libsdl-org/SDL/blob/f00dc919ca35b9756316e86c4777392de442f9b2/src/joystick/controller_list.h#L608-L614), and its GameCube classification can produce the button order you need—but your log does not yet identify that route. I've opened #2678 to log the controller's GUID and active mapping without changing its input. It is still open: v2.1.0 and the current nightly, `51da0464`, do not include it. Once it merges, please use the first nightly containing #2678 and start with the pad connected, then paste the `hid: controller` line containing `guid=` and `mapping-name=`, plus the following `mapping-string` line(s), or attach that startup's `hookshot_log.txt`. That will let us check the classification instead of guessing a replacement mapping. The real-controller check is also recorded as [test request T-6RQB](https://git.magicbean.dev/MagicBeanDev/Hookshot/pulls/2678); that is a request to test the PR, not a claim that today's nightly already has the line. <!-- github-sync:c:6823981487 -->
Commenting is not possible because the repository is archived.
No milestone
No assignees
2 participants
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
MagicBeanDev/Hookshot#2546
No description provided.