Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Instruments do not pass button presses to Native Interface #15164

Closed
carlmylo opened this issue Feb 7, 2024 · 24 comments · Fixed by #15180 or #15629
Closed

Instruments do not pass button presses to Native Interface #15164

carlmylo opened this issue Feb 7, 2024 · 24 comments · Fixed by #15180 or #15629
Assignees

Comments

@carlmylo
Copy link

carlmylo commented Feb 7, 2024

Quick summary

Anything that's not a "standard controller" has issues passing button presses when RPCS3's Native Interface is up.

Details

When the player brings up UI that requires the Native Interface, any button presses on "non-standard" controllers will simply not work. If the player does not have an alternative input method that works, they will be soft locked.

I have personally tested:

  • MIDI to USB Rock Band 3 Mustang Guitar (Emulated MIDI Device)
  • USB MIDI Keyboard (Emulated MIDI Device) [not logged]
  • Rock Band 3 Keyboard (Zadig/USB Passthrough)

Other users in Milohax report this issue now and then. I will forward any messages from them here.

Current workaround is to disable the Native Interface for those that don't have an alternative input method set up.

PS3 hardware does not have this issue.

Attach a log file

Mustang - RPCS3.log.gz
RB3 Keyboard Passthrough - RPCS3.log.gz

Attach capture files for visual issues

No response

System configuration

Tested on a couple of Windows machines.

Other details

Example of this happening on a Rock Band 3 Mustang Guitar connected via MIDI to USB and set up through the Emulated MIDI Device section in I/O.
https://youtu.be/x3bIaiRE7fY

@carlmylo carlmylo changed the title Native Interface does not pass button presses on instruments Instruments do not pass button presses to Native Interface Feb 7, 2024
@Megamouse
Copy link
Contributor

I don't really understand how you're supposed to control a UI with an instrument.
What do you do on a PS3 with your instrument in these cases?

@LinosM
Copy link

LinosM commented Feb 7, 2024

The actual ps3 buttons on them
image

@carlmylo
Copy link
Author

carlmylo commented Feb 7, 2024

The guitar in the video also has PS3 buttons. I've heard similarly that some instruments mapped through MMJoystick have issues interacting with the Native Interface enabled but I haven't been able to replicate it so will ask around for anyone else with this issue.
image

@DarkRTA
Copy link
Contributor

DarkRTA commented Feb 7, 2024

The instruments themselves also show up as HID devices to the PS3 rather than an actual midi instrument. All of the MIDI code that I wrote for RPCS3 does this conversion that is normally done by a separate hardware device with gamepad buttons it.

In case you are curious, the Wii version of this device looks like this but this one has been converted to work on PS3 instead. (And of course there exists an actual PS3 version of it.)

PXL_20240207_155312513

PXL_20240207_155314105

For RPCS3, we instead emulate the gamepad buttons with additional midi notes that would have otherwise been ignored by this device.

@Megamouse
Copy link
Contributor

Please try with #15180

And also try to open the home menu with the ps button on the instrument.

@Megamouse Megamouse self-assigned this Feb 10, 2024
@LinosM
Copy link

LinosM commented Feb 12, 2024

Tested with what was just pushed an hour ago
#15180 (comment)

Native interface still does not respond to a passthrough Keyboard
RPCS3.log
https://www.youtube.com/watch?v=54bit_D4E0M

@carlmylo
Copy link
Author

carlmylo commented May 25, 2024

This was marked as closed but the problem persists on USB Passthrough instruments.
Tested with a PS3 Rock Band 3 Mustang Controller (VID=0x12ba, PID=0x2430) running with passthrough (Zadig).
The game works fine but it locks up when the "Invite Friends" menu pops up and the PlayStation guide button does nothing.
Rock Band 3 [BLUS30463].log.gz

@Megamouse
Copy link
Contributor

Does it work on PS3?
The game is supposed to call cellPadLddDataInsert, which it doesn't.

@Megamouse
Copy link
Contributor

it's set to trace. Can you put it to notice and create a new log?

@carlmylo
Copy link
Author

carlmylo commented May 25, 2024

It does work on PS3. The PlayStation button would bring up the respective menu, the PSN invite menu flow would work via the gamepad buttons, etc.
Regarding trace for log, would this be on the right click menu for RPCS3's log or somewhere else?
Also could this problem be caused by emulation pausing when the RPCN friend list menu is up?

@Megamouse
Copy link
Contributor

I think you have to manually edit the config.yml and set
Log: {}
to
Log: {cellPad: Trace}

@carlmylo
Copy link
Author

Hopefully I did it right.
RPCS3.log.gz

@Megamouse
Copy link
Contributor

ah... it's
Log: {sys_io: Trace}

@carlmylo
Copy link
Author

Here it is.
RPCS3.log.gz

@Megamouse Megamouse reopened this May 25, 2024
@Megamouse
Copy link
Contributor

I added some more logging to this one:
rpcs3.zip

@carlmylo
Copy link
Author

Getting this error on starting that RPCS3 exe.

rpcs3.exe - Entry Point Not Found

The procedure entry point ?fromString@QDateTime@@sa?AV1@AEBVQString@@0h@Z could not be located in the dynamic link library C:\Games\RPCS3\rpcs3.exe.

OK

image

@Megamouse
Copy link
Contributor

uhm, right, I'm already on a newer Qt version.
You could try with the dlls and qt6 folder from #15473.

@carlmylo
Copy link
Author

Here it is.
RPCS3.log.gz

@Megamouse
Copy link
Contributor

Based on the log, it seems to call cellPadLddDataInsert periodically, but doesn't set the length field, so it never really sets any data.
Also, it doesn't seem to do anything while the dialog is open.
I've made another one that logs the buttons even if the length is 0.
rpcs3.zip

@carlmylo
Copy link
Author

carlmylo commented May 25, 2024

Same results.
New log:
RPCS3.log.gz

@Megamouse
Copy link
Contributor

Did you press up/down/cross on the guitar a couple of times?

@Megamouse
Copy link
Contributor

I've changed a couple of things.
I doubt that the friend list works, but maybe the home menu does now.

rpcs3.zip

@carlmylo
Copy link
Author

Did you press up/down/cross on the guitar a couple of times?

Yep!
RPCS3.log.gz

Just as you said, home menu and interacting with it works. When the menu is pulled up, the emulation persists in the background like on real hardware. The RPCN friend menu seems to pause emulation entirely while it's up and it does not respond until dismissed by using an alternative input method (like a keyboard) is used. On hardware, the game behaves like how the Home Menu behaves at the moment.

@Megamouse
Copy link
Contributor

Maybe open a separate issue with this specific dialog in this game.
I think we've proven that it works for all other dialogs.
I'll open a PR with the home menu changes for this one.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
4 participants