RPCS3 / rpcs3

PS3 emulator/debugger
https://rpcs3.net/
GNU General Public License v2.0
15.18k stars 1.89k forks source link

PSP connection emulation #4119

Open RBNXI opened 6 years ago

RBNXI commented 6 years ago

Project Diva Dreamy Theatre 1 doesn´t support savegames to play without PSP like Project Diva Dreamy Theatre 2nd and Extend, and some functions like song edits and DLC songs of PSP games are not avaliable in PS3 games without a PSP connection so, any posibility to make a PSP emulation that allows you to connect a savegame from PSP and then use it with Project Diva games in RPCS3?

TotalCaesar659 commented 6 years ago

I think it can be implemented in very-very far future, development is on too early stage for it now. And when time comes, it should be great to cooperate with PPSSPP developers. P.S. There are more game with this function: 1) Assassin's Creed: Bloodlines (PSP) with Assassin's Creed 2 (PS3); 2) Gran Turismo (PSP) with Gran Turismo 5 (PS3); 3) Lair (PS3); 3) Resistance: Retribution (PSP) with Resistance 2 (PS3).

hcorion commented 6 years ago

This could be easily done once sys_usbd starts working. I've done some initial work here: https://github.com/RPCS3/rpcs3/commit/12ecba7d4962a142df8ff707d77fa05ef5d7b409 but it's currently non-functional.

dio-gh commented 4 years ago

5688 (sys_usbd) was merged, needs retesting with a real PSP. Otherwise, I'm not sure if this is in-scope.

xperia64 commented 4 years ago

I have tried connecting a real PSP with the relevant application launched to HMDT in rpcs3 by adding the VID and PID to sys_usbd, and it currently does not work. The game doesn't see the PSP.

rpcs3 itself seems to be picking up the PSP, as I did see the new USB device I added in the log:

S sys_usbd: Found device: "PSP" Type D

I think it depends on the sys_usbd_register_ldd function (which is currently a stub). The relevant part of the log is here:

S {PPU[0x1000000] Thread (main_thread) [0x011209ac]} PPU: LLVM: Loaded module v3-tane-gchiVUbW1b4kPJPTmwJ8QL-000007-skylake.obj
S {PPU[0x1000000] Thread (main_thread) [0x011209ac]} sys_prx: Loaded module: /dev_flash/sys/external/libadec.sprx
S {PPU[0x1000000] Thread (main_thread) [0x011209ac]} PPU: LLVM: Loaded module v3-tane-ZgbphXgac94Wnne0KqYPYA-000007-skylake.obj
S {PPU[0x1000000] Thread (main_thread) [0x011209ac]} sys_prx: Loaded module: /dev_flash/sys/external/libmp3dec.sprx
S {PPU[0x1000000] Thread (main_thread) [0x011209ac]} PPU: LLVM: Loaded module v3-tane-GidnR56pzgun0Z5aqipN0L-000007-skylake.obj
S {PPU[0x1000000] Thread (main_thread) [0x011209ac]} sys_prx: Loaded module: /dev_flash/sys/external/libusbd.sprx
S {PPU[0x1000000] Thread (main_thread) [0x011209ac]} PPU: LLVM: Loaded module v3-tane-JhS48169oUFhvsYTgcMpRp-000007-skylake.obj
S {PPU[0x1000000] Thread (main_thread) [0x011209ac]} sys_prx: Loaded module: /dev_flash/sys/external/libusbpspcm.sprx
U {PPU[0x1000000] Thread (main_thread) [0x013743a4]} sys_usbd TODO: sys_usbd_register_ldd(handle=0x115b, s_product=“cellUsbPspcm”, slen_product=0xc)

The last line there is what appears when the game starts looking for a PSP. No further output until canceled. libusbpspcm.sprx seems interesting.

13xforever commented 4 years ago

IIRC sys_usbd_register_ldd is somewhat similar to registering userspace driver for a device, and @RipleyTom looked into it when implementing usbd initially, but it's another can of worms to implement properly.

RipleyTom commented 4 years ago

As a quick hack you can try comparing the string to PSP(or whatever the string that is passed to sys_usbd_register_ldd is) and if it's equal just call sys_usbd_register_extra_ldd with the vid/pid params for your PSP. It might just work.

Though my guess is it will probably need asynchronous api too which is also unimplemented atm, sorry).

xperia64 commented 4 years ago

As a quick hack you can try comparing the string to PSP(or whatever the string that is passed to sys_usbd_register_ldd is) and if it's equal just call sys_usbd_register_extra_ldd with the vid/pid params for your PSP. It might just work.

Though my guess is it will probably need asynchronous api too which is also unimplemented atm, sorry).

Tried that, no change in-game. It does call/depend on sys_usbd_attach next, which is also unimplemented.

ghost commented 2 years ago

Would be nice if there was support for Adhoc Party somehow.

ghost commented 1 year ago

Would this still be possible since we are reaching bigger things with RPCS3 and the menu booting?