Repository navigation
dsperate-sa: rebind "mod" button so that the menu is usable on RK3266/RK3566 handhelds - #3579
LaurensBosscher wants to merge 2 commits into
Conversation
|
I think Select would be more fitting and in line with other emulators. I think we should try to keep convention on either select or guide. Depending on what the device has on the left hand side. If an emulator support multiple hotkeys you can assign both as hotkeys, I think ppsspp does this for example. |
Hi @sydarn, Thanks, for the suggestion, let me update this one and see if we can use select instead of the trigger! |
|
I don't think we should remove guide from Inputplumber, maybe the best would actually be change DSperate itself to add a second hotkey. |
|
Additionally, this shouldn't really be a problem for X55. X55 now emit guide additionally to select on the select button: If it doesn't work, that might be another bug in that case. Addendum: |
f0f7af4 to
b9f3a5c
Compare
|
Text below is all AI: I dropped the L2/Select switch — you were right, guide stays in I traced the X55's InputPlumber stream against DSperate's own input code and it is not just a naming choice:
Net: What the PR does now:
Verified against DSperate v3.0.5's |
layout_next/layout_prev were bound to +righttrigger/+lefttrigger in every device config but RK3588, RK3326's .oga and .r33s: pressing L2 or R2 on its own cycled the screen layout during play. A DS has no trigger so nothing was using them, but the secondary screen re-laying itself out under the player's fingers is not something to bind to an unmodified trigger. Bind them as mod+dpup/mod+dpdown as RK3588 already does - the d-pad directions the slot hotkeys leave free - so the triggers stay inert unless the modifier is held. Same two lines in each file; the modifier differs per device and is untouched.
RK3326 and RK3399 already use Select as the pad hotkey modifier, and on those pads quit = mod+start is Select+Start - the combo ROCKNIX builds its global exit hotkey from (L1+Select+Start) and the one every other emulator here uses for Quit Game. Move quit to L2, which the DS has no button for, and re-home the two bindings that lived on L2 and Y: screen_swap to mod+y, fps to mod+a. InputPlumber keeps guide. On the five RK3566 pads whose capability maps emit Guide from BTN_SELECT, guide *is* Select: holding it is the modifier and tapping it still reaches the DS, while pads with a real FUNC key keep their DS Select as a plain button. A comment records why "back" cannot be used there: DSperate sees the alias Guide event while the modifier is held, counts the press as "not alone", and never taps the DS Select out on release. Checked against DSperate 3.0.5's Input for every file: select+X pause, select+L2 quit, select+R1/L1 save/load state, select+dpup/dpdown layout, select+Y screen_swap, select+A fps, triggers inert when bare, guide+X pause and Select+Start inert on InputPlumber, Input::collisions() empty everywhere.
b9f3a5c to
d89c37f
Compare
|
@sydarn , Tested on my Powkiddy X55 and it's all working with select! I would also suggest that we switch L2 <> L1 and R2 <> R1. The triggers are in a more ergonomically position on all handhelds, having the gameplay functionality on L2 and R2 is less comfortable and a worse experience than the original Nintendo DS. Let me know if you agree and I'll do a PR with that change. |
|
I'm not sure I understand the problem with Quit being Start+Select? The kill hotkey of L1+Start+Select is an unclean force quit, and shouldn't be used in most cases as far as I know. And changing the layout keys/swapping L1-2/R1-2 can be done at user level if desired? |
It's not a problem. I initially thought it was better to have another key as the modifier button because users might accidentally press select + start and kill the emulator but given that we use select for other emulators as well I doubt that this will be an issue. With regards to L1/L2, L1 (triggers) is more comfortable when playing Mario Kart (when you have to press and hold them for quite a while when drifting) but if the key is bound to a less used function it should also not be an issue. |
|
Changed to draft, I'll redo this with the latest version in mind. I want to make sure that we still need this now that we have Input plumber. |
Summary
What does this PR do?
Issue
There was no way to open the menu, or see the FPS while using: dsperate-sa on the Powkiddy X55 and, I expect, other handhelds
Fix
Guide = Select hold
show/hidepauseFast Forwardscreen_swap/fast_forward_toggleTesting & Verification
Test Steps
Test Results & Evidence
Additional Context & Reviewer Notes
/usr/config/dsperate/dsperate.iniand seed/storage/.config/dsperate/dsperate.inionly when it is missing, so none of this reaches 20261001. On that image the local fix for an unreachable guide is addingmodifier = backto the/storagecopy..oga/.r33salready hadmod+dpup/mod+dpdown; RK3588 is untouched; H700, S922X, RK3326.s1_f2/.xutkeepmodifier = guideand get only the layout change.AI Assistance Disclosure
While ROCKNIX has no restrictions on using AI tools, transparency helps reviewers set the proper context during code review.
Did you use AI tools (e.g., ChatGPT, Copilot, Claude) to assist with this pull request?