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
sys_usbd implementation #5688
sys_usbd implementation #5688
Conversation
b122d9b
to
55ad04e
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Any plans to refactor the DS3 handler and the work here? The passthrough class could be useful in a general-purpose manner and would reduce amount of replicated code. Or maybe implement DS3 adapter via sys_usbd? Just brainstorming here.
|
DS3 actually goes through sys_hid_manager syscalls in lv2 and 95% of what we do in cellPad actually happens in those syscalls so there is really no motivation to implement those and lle cellPad. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Use sys_event_queue for usbd events, create it with SYS_SYNC_PRIORITY protocol and 0x10 size. (as the kernel does)
This will fix ppu scheduling traits and make the code a little more compact.
|
Added a proof of concept emulator for skylander portal, tested with Skylanders SWAP force. Also added proper IDs for DJ Hero Turn Table, Harmonix/GH guitars/drums for passthrough. |
|
Added the VIDs/PIDs of all supported devices by GT5. |
|
Every Skylander is a member of exactly one element. It would be useful to associate each skylander object with corresponding element. Could be used for better / shorter / quicker emulated portal list selection. According to https://skylanders.fandom.com/wiki/Main_Page there are 11 elements across all six Skylanders titles.
Total: 278 Pairs of "skylander":"element" grouped per titles...
Skylanders: Spyro's Adventure{ Skylanders: Giants{ Skylanders: Swap Force{ Skylanders: Trap Team{ Skylanders: SuperChargers{ Skylanders: Imaginators{ Skylanderes grouped per elements...
Air (33)Lightning Rod Dark (6)Knight Mare Earth (32)Bash Fire (33)Eruptor Kaos (1)Kaos Life (35)Camo Light (6)Knight Light Magic (33)Double Trouble Tech (34)Boomer Undead (32)Chop Chop Water (33)Gill Grunt |
|
Atm the skylanders are sorted per ID which is, as far as I can tell, the order in which they were released(ie Spyro's Adventure skylanders, then Giants skylanders, etc). Which imo makes more sense. edit: |
7ac7f3e
to
968e3ba
Compare
|
How I can give you a trace of my wheel Logitech g27 to make it support for gran turismo? |
|
It's already supported & has been tested as working(on Windows with WinUsb driver). |
aca86b1
to
13b233a
Compare
d0faaa6
to
e643d5d
Compare
|
@RipleyTom Sorry, but this implementation can also work with Buzz controllers? Thanks a lot. |
|
@RipleyTom This PR broken Time Crisis Razing Storm. Freezes on load now. Fine on the build prior. Broken: Previous PR: |
|
I can verify that the Skylanders stuff works with Giants. It's a little awkward but I was able to create a new .sky file, initialize it and go ingame without any extra help. |
|
Anyone had luck get the Rock Band or Guitar Hero drums working? My GH drums don't work; log shows it is detected; Zadig has already changed the drums driver to WinUsb. |
|
Does anyone know how to get the Lego Dimensions Portal to work with sys_usb? I followed the tutorial on installing the new driver but RPCS3 doesn't detect the portal and you can't play Lego Dimensions without it. Here is a picture of the problem on the latest RPCS3 version 0.0.9-10101: The game runs perfectly well its just you can't play the game past the main menu without the Lego Dimensions Portal. I tried to compile a version of RPCS3 that includes the Device Ids for the Lego Dimensions Portal using this code:
But I have had build errors because there are missing dependencies from the github page: https://github.com/RPCS3/rpcs3 I followed this build tutorial and downloaded all of the dependencies that were listed: https://github.com/RPCS3/rpcs3/blob/master/BUILDING.md I have a forum thread about my problems and errors here: https://forums.rpcs3.net/thread-201525-post-309496.html#pid309496 There is also a new issue opened about how to implement the Lego Dimensions Portal here: #7761 Any help would be appreciated, thanks! |
|
Thanks guys! The Lego Dimensions Portal works perfect! Thank you so much for implementing this! |
|
Hello! Also i have programmed before but in java not in c++ or whatever this is |
Please forgive me if I am posting in the wrong way, but I have an issue regarding the USB passthrough feature and this seemed like the most logical place to post seeing as the topic is conducive to it.Although the list of devices compatible with this USB-passthrough feature extend to wheels supported by GT5/GT6, my Thrustmaster T300RS GT is unable to be recognised by RPCS3, yet the wheel is listed by Polyphony Digital as being supported for GT6. I have searched through forum entries for multiple weeks and I am yet to find an answer as to why my wheel is seemingly unsupported despite evidence to the contrary. There are videos on setting up Logitech wheels with Zadig, but Thrustmaster wheels are seemingly unable to be configured in the same manner -- which doesn't make any sense, since on my real PS3 my Logitech G29 was unusable with either GT5 or GT6, and my Thrustmaster wheel worked flawlessly and was able to be adjusted ingame. If there is additional setup required for my T300RS beyond simply installing a WinUSB driver through Zadig, please let me know as I have yet to find any info on, and as such I am completely flummoxed on the matter. Thanks in advance, and I sincerely apologise for bothering you all. |
|
@Anubeia don't start conversations in old pull requests. Either open a new issue or come to Discord server for general conversation. Anyways, I don't see T300RS mentioned in the GT 5 wheel list here: rpcs3/rpcs3/Emu/Cell/lv2/sys_usbd.cpp Lines 193 to 199 in f1c6106
If it has a different product or vendor ID then it has to be added to the list before games can attempt to connect to it. |
|
Where do I go to use this implementation when trying to play skylanders? This is my first time using Github sorry |
|
@RyoOfMostShort If you need help with the emulator then join our Discord server and ask questions there. GitHub isn't the place for support questions. You should also read this wiki page. |
sys_usbd implementation with:
-Passthrough implementation for
*Guitar Hero/Harmonix Guitars/Drums(untested)
*DJ Hero Turntable(Both DJ Hero 1&2 work perfectly)
*Skylander Portal(working)
*Singstar Microphone(untested and probably broken)
*Various wheels supported by GT5/GT6(G27 tested working on GT5/GT6)
-Framework for USB device emulation with:
*Fake Skylanders Portal basic implementation(Manager=>Skylanders Portal to config, each file represent a figure). Tested only with Skylanders SWAP Team.
To make it work on linux:
You need to add:
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0666"
To a rule file in /etc/udev/rules.d/
Note that this give r/w access to all usb devices by default, if you want to specify a specific device you can use:
SUBSYSTEM=="usb", ATTRS{idVendor}=="ABCD", ATTRS{idProduct}=="1234", MODE="0666"
changing idVendor&idProduct values to the VID/PID of the device you want to allow.
To make it work on windows:
You need to change the driver of the accessory you want to use to WinUsb one with zadig: https://zadig.akeo.ie/
You can revert drivers through device manager, the device will be listed under "Universal Serial Bus Devices", right click on it, Properties => Driver => Update Driver => Browse my computer for driver software => Let me pick... => USB Input Device(or whatever the previous driver was).