mmatyas / pegasus-frontend

A cross platform, customizable graphical frontend for launching emulators and managing your game collection.
http://pegasus-frontend.org
Other
1.19k stars 106 forks source link

PS2 game still can't start from Pegasus #976

Open tlanks opened 2 years ago

tlanks commented 2 years ago

The issue

I tried to start aethersx2 from Pegasus , although I successfully started aethersx2. But the emulator only stays in the BIOS interface, which is the interface that asks me to insert the CD. photo:https://drive.google.com/file/d/1PcCGsIFT7yCpPXKu-SjBk1_q1xCWFWgL/view?usp=sharing

System info

https://drive.google.com/file/d/1szRk9rsNsJmGj8IDdetJFwZND8oI-Q_t/view?usp=sharing lastlog: 2022-03-29T15:33:58 [i] Executing command: [am,start,-n,xyz.aethersx2.android/.EmulationActivity,-a,android.intent.action.MAIN,-e,bootPath,/storage/emulated/0/ROMS/PS2/Dynasty Warriors 5 - Empires (Europe, Australia).iso,--activity-clear-task,--activity-clear-top,--activity-no-history] 2022-03-29T15:33:58 [i] Working directory: /storage/emulated/0/ROMS/PS2 2022-03-29T15:33:58 [i] Activity finished

my metadata.txt: https://drive.google.com/file/d/1UQBhux6KY2wraShXHOxr0flylc9Jl8YJ/view?usp=sharing collection: PlayStation 2 shortname: ps2 extensions: bin, chd, ciso, cso, cue, dump, elf, gz, img, iso, isz, m3u, mdf, nrg launch: am start -n xyz.aethersx2.android/.EmulationActivity -a android.intent.action.MAIN -e bootPath "{file.path}" --activity-clear-task --activity-clear-top --activity-no-history

game: Dynasty Warriors : Gundam 2 file: ./Dynasty Warriors Gundam2.iso developer: OMEGA Force publisher: Koei genre: Beat'em Up description: Dynasty Warriors: Gundam 2 combines the devastating power of the mobile suit, the rich legacy of the anime Gundam universe, and the furious tactical action gameplay of the Dynasty Warriors series. For the first time, engage in melee battles against colossal enemies such as the Psycho Gundam who can quickly reconfigure their bodies into titanic mobile fortresses. Prepare to head off into the furthest reaches of space and wage war against legions of enemy mobile suits. release: 2009-04-21 players: 2 x-id: 22408 x-source: ScreenScraper.fr assets.boxfront: ./media/box2dfront/Dynasty Warriors Gundam2.png

Pegasus version

Alpha 16(2022-3-21)

Pegasus log

https://drive.google.com/file/d/1szRk9rsNsJmGj8IDdetJFwZND8oI-Q_t/view?usp=sharing

mmatyas commented 2 years ago

Hi, have you tried using {file.documenturi} or {file.uri} in your launch command? Can aethersx2 open the file on its own?

tlanks commented 2 years ago

Hi, have you tried using {file.documenturi} or {file.uri} in your launch command? Can aethersx2 open the file on its own

yes ,using both tabs I can't even get into the emulator https://drive.google.com/file/d/1GiMNj1VwdGWBClxgKxbnVK0PMi-NgAcZ/view?usp=sharing

BTW I put the ROM inside the phone instead of the SD card, does it make a difference?

/storage/emulated/0/ROM/PS2/

mmatyas commented 2 years ago

I've heard it does matter, some programs can only access either the internal or the external storage properly, or only their own data directory with recent Androids, when the launched file comes as an argument.

tlanks commented 2 years ago

I've heard it does matter, some programs can only access either the internal or the external storage properly, or only their own data directory with recent Androids, when the launched file comes as an argument.

Unfortunately, I put the ROM on the SD card and still can't start the game, which means the location of the ROM is irrelevant. The problem is back to square one.

mmatyas commented 2 years ago

Hm, in this case I'd recommend asking around on Discord; I'm not familiar enough with Aethers, but perhaps someone else has run into this issue before.

allenz8512 commented 2 years ago

the uri create by pegasus is wrong,i fixed it by setting the correct uri in launch segment for every rom

mmatyas commented 2 years ago

Could you tell us more details? Would you have an example for an incorrectly generated path, and its corrected version?

allenz8512 commented 2 years ago

such as rom on my device in sdcard:/storage/9C33-6BBD/Roms/PS2/战神2.chd

Screenshot_20220408-171748

the uri generate by pegasus and the uri read in aethersx2

leocmp commented 2 years ago

Here it is not working in the latest version of pegasus, only in this one, follow the execution configuration this version work alpha15-135-gd1e90e77

collection: Sony Playstation 2 shortname: ps2 extensions: chd, cso command: am start -n xyz.aethersx2.android/.EmulationActivity -a android.intent.action.MAIN -e bootPath {file.documenturi} --activity-clear-task --activity-clear-top --activity-no-history This log is the version with work 2022-04-09T07:50:04 [i] Executing command: [am,start,-n,xyz.aethersx2.android/.EmulationActivity,-a,android.intent.action.MAIN,-e,bootPath,content://com.android.externalstorage.documents/tree/primary%3Aroms%2FSony%20Playstation%202/document/primary%3Aroms%2FSony%20Playstation%202%2FFinal%20Fantasy%20X%20International.chd,--activity-clear-task,--activity-clear-top,--activity-no-history] 2022-04-09T07:50:04 [i] Working directory: /storage/emulated/0/roms/Sony Playstation 2

leocmp commented 2 years ago

the uri create by pegasus is wrong,i fixed it by setting the correct uri in launch segment for every rom

Hello can you post an example of the launch you use, thanks

StryderUK commented 2 years ago

As stated earlier in the thread by allenz8512 the issue is that the document uri is hardcoded to use the primary storage so it wont launch games on an sd card (may not be an issue if it is formatted as internal storage, mine is set as external to be able to manage roms with an sd card reader).

When creating a shortcut on the home screen in aetherSX2 to launch a ROM directly the document uri is formatted as: content://com.android.externalstorage.documents/tree/1111-2222%3ARetroidPocketGames%2FROMs%2FPS2/document/1111-2222%3ARetroidPocketGames%2FROMs%2FPS2%2FLord%20of%20the%20Rings%2C%20The%20-%20The%20Return%20of%20the%20King%20(Europe)%20(En%2CNl%2CPt%2CSv%2CPl).iso

Where 1111-2222 is the volume serial number (this can be found using a file manager)

I could then launch the app through adb using the command: am start -n xyz.aethersx2.android/.EmulationActivity -a android.intent.action.MAIN -e bootPath content://com.android.externalstorage.documents/tree/1111-2222%3ARetroidPocketGames%2FROMs%2FPS2/document/1111-2222%3ARetroidPocketGames%2FROMs%2FPS2%2FLord%20of%20the%20Rings%2C%20The%20-%20The%20Return%20of%20the%20King%20(Europe)%20(En%2CNl%2CPt%2CSv%2CPl).iso --activity-clear-task --activity-clear-top --activity-no-history

I've worked around this for now by setting my launch options to have the correctly formatted document uri with {file.name} to replace the file name.

The only issue is that you need to remove all spaces and symbols from the rom file (that would be usually url encoded) e.g. I changed Lord of the Rings, The - The Return of the King (Europe) (En,Nl,Pt,Sv,Pl).iso to LordoftheRingsTheTheReturnoftheKingEuropeEnNlPtSvPl.iso

This issue could potentially be fixed by detecting if the path is located in an external drive in the function

// Located in: src/backend/platform/AndroidHelpers.cpp
QString to_document_uri(const QString& path)

and formatting the uri appropriately

for completeness here is my currently working metadata.pegasus.txt

collection: PlayStation 2
shortname: ps2
extensions: chd, ciso, cso, cue, dump, elf, gz, img, iso, isz, m3u, mdf, nrg
launch: am start
  -n xyz.aethersx2.android/.EmulationActivity
  -a android.intent.action.MAIN
  -e bootPath "content://com.android.externalstorage.documents/tree/1111-2222%3ARetroidPocketGames%2FROMs%2FPS2/document/1111-2222%3ARetroidPocketGames%2FROMs%2FPS2%2F{file.name}"
  --activity-clear-task
  --activity-clear-top
  --activity-no-history

you will most likely need to change the uri but here is it's format: "content://com.android.externalstorage.documents/tree/<volume-id>%3A<url_encoded_folder_path>/document/<volume-id>%3A<url_encoded_folder_path>%2F{file.name}"

where: <volume-id> is in the format nnnn-nnnn <url_encoded_folder_path> is the url ended path of the folder which holds the rom (path can be used by using a url encoder (such as this one)

e.g. a volume id of: 1234-5678 and rom path of Emulation/ROMs/PS2 on the sd card becomes: content://com.android.externalstorage.documents/tree/1234-5678%3AEmulation%2FROMs%2FPS2/document/1234-5678%3AEmulation%2FROMs%2FPS2%2F{file.name}

Hopefully this can help someone else

mmatyas commented 2 years ago

Document URIs should be now fixed, could you try the the latest version?