[v2.1.0] Nintendo Switch button prompts become incorrect after restart despite saved custom mappings #2546
Labels
No labels
accessibility
autorelease: pending
autorelease: tagged
bug
dependencies
documentation
duplicate
enhancement
github_actions
good first issue
help wanted
invalid
question
testing wanted
wontfix
No milestone
No assignees
2 participants
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Hookshot#2546
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
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
Before you send it
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.
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.txtfrom one start with it plugged in? The lines that start withhid:andprompts: 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.hookshot_log.txt
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
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 thehid: controllerline containingguid=andmapping-name=, plus the followingmapping-stringline(s), or attach that startup'shookshot_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.