Duimon / Duimon-Mega-Bezel

4K Console System graphics created specifically for use with the HSM Reflection Shader.
Other
130 stars 6 forks source link

Mouse Cursor Position Misalignment in 3DS Landscape Preset #9

Open Hzbeta opened 2 weeks ago

Hzbeta commented 2 weeks ago

Description

When using the 3DS-[Native]-[ADV]-[Guest].slangp preset (including the DREZ version), I noticed that the mouse cursor position does not correspond to the small screen area.

Since the preset is designed to work with the Citra core outputting both top and bottom screens by default, enabling the Render simulated touchscreen interactions option in the core settings allows you to see the actual cursor position as rendered by the core. However, the mouse clicks are still confined to the bottom half of the screen (as it appears without shaders applied) rather than the bottom-right corner area adjusted by the shader.

This misalignment makes the touchscreen functionality of the small screen nearly unusable, especially when streaming to a touchscreen device using Moonlight. In this setup, touch input is equivalent to mouse clicks, which means the click position is similarly misaligned, leading to incorrect interactions.


Steps to Reproduce

  1. Use the Citra core with 3DS-[Native]-[ADV]-[Guest].slangp shader preset (or the DREZ version).
  2. Enable the Render simulated touchscreen interactions option in the core settings.
  3. Attempt to interact with the small screen using the mouse or a touchscreen in windowed mode.
  4. When using the mouse, you will notice that the position displayed by Windows does not match the cursor position rendered by the core on the small screen. Similarly, using a touchscreen device will not allow you to accurately click the buttons on the small screen.

Expected Behavior

The mouse cursor should align correctly with the bottom-right screen area modified by the shader, ensuring accurate touch and mouse interactions.


Actual Behavior

Mouse clicks and touch inputs are confined to the bottom half of the screen, leading to incorrect interaction points on the small screen.


Version Information


I am not sure if the shader has the capability to remap the mouse cursor position. I haven't found a solution within the RetroArch options yet, but any suggestions or guidance would be appreciated.

Let me know if any additional details are needed!

Duimon commented 4 days ago

There isn't a solution. No border shader has the ability to correct it, the functionality needs to be in the core. The new NDS core is the only core that has it so far.

The solution is to use a gamepad and the right thumb-stick to control the on screen cursor.

For a touch screen device I recommend using and overlay instead of the shader. SInce the Citra core doesn't have a screen gap setting it won't look quite as nice but it will work. I have an overlay for it in my overlay repo.

https://github.com/Duimon/Retroarch-Overlays/blob/master/Logo/Nintendo_3DS/3DS_Vertical.png

Hzbeta commented 4 days ago

Thank you for your great work, it's really impressive. Compared to overlays, I find the reflective border effects of the shader much more appealing. If there were a shader that provided reflective borders without altering the screen's position or size, it would allow for using the Citra core in side-by-side mode, thus achieving both reflective borders and correct touch positions simultaneously. I am interested in exploring this possibility myself, but I have limited knowledge of shader configuration. If you could offer some quick-start guidance based on the 3DS-[Native]-[ADV]-[Guest].slangp preset, it would be greatly appreciated.