Closed MoonStoneManta closed 5 months ago
This issue has been popping up mostly from those that own Odin 2. Unfortunately I don't think @TapiocaFox @Post-Mortem own a Odin 2. And I also don't own an Odin 2. So it's kinda hard for us to offer a possible solution. The best thing I've seen is that it seems to be a vendor specific issue but not much an Android 13/Frontend/ADB issue.
There issue that popped with PPSSPP failing to launch CHD files from command on Odin 2. I asked the person to try creating an android system ppsspp widget and selecting the CHD file. PPSSPP would crash.
Only thing that can find that's similar between all those apps is that they are using sdk 33.
There was a crashing issue that someone has with the Odin 2 that was fixed by clearing Play Store cache. Try that and see what happens.
I would also mention these emulators also have issues with the Odin 2: YabaSanshiro 2, PPSSPP, & Drastic.
YabaSanshiro 2 is the only one that I know that doesn't launch on Android 12 and up when launched from a frontend or adb session
Thanks for the info! Unfortunately clearing the PlayStore cache wasnt the solution; regarding the PPSSPP emulator, this is working correctly on the Odin2 and launching the games as expected from Daijishou. Im sure the issue is related to the tightening up of security in Android 13 specifically, found some good resources Android 13 intent filter changes and Match intents to other apps' intent filters.
I dug around some more and ended up finding the missing AndroidManifest.xml activity declarations for DraStic and Redream emulation tasks: DraStic AndroidManifest.xml:
...
<activity android:label="@string/app_name" android:name="com.dsemu.drastic.DraSticActivity" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="file"/>
<data android:scheme="content"/>
<data android:mimeType="*/*"/>
<data android:pathPattern=".*\\.nds"/>
<data android:pathPattern=".*\\..*\\.nds"/>
<data android:pathPattern=".*\\..*\\..*\\.nds"/>
<data android:pathPattern=".*\\..*\\..*\\..*\\.nds"/>
<data android:host="*"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
<category android:name="android.intent.category.LEANBACK_LAUNCHER"/>
</intent-filter>
</activity>
...
Redream AndroidManifest.xml:
...
<activity android:theme="@style/AppTheme.NoActionBar.Fullscreen" android:name="io.recompiled.redream.MainActivity" android:exported="true" android:screenOrientation="sensorLandscape" android:configChanges="screenSize|orientation|keyboardHidden|keyboard">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
<category android:name="android.intent.category.LEANBACK_LAUNCHER"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="*/*" android:scheme="file" android:host="*" android:pathPattern=".*\\.cdi"/>
<data android:mimeType="*/*" android:scheme="file" android:host="*" android:pathPattern=".*\\.CDI"/>
<data android:mimeType="*/*" android:scheme="file" android:host="*" android:pathPattern=".*\\.chd"/>
<data android:mimeType="*/*" android:scheme="file" android:host="*" android:pathPattern=".*\\.CHD"/>
<data android:mimeType="*/*" android:scheme="file" android:host="*" android:pathPattern=".*\\.cue"/>
<data android:mimeType="*/*" android:scheme="file" android:host="*" android:pathPattern=".*\\.CUE"/>
<data android:mimeType="*/*" android:scheme="file" android:host="*" android:pathPattern=".*\\.gdi"/>
<data android:mimeType="*/*" android:scheme="file" android:host="*" android:pathPattern=".*\\.GDI"/>
</intent-filter>
</activity>
...
It looks like the DraStic emulator does not accept .zip files being passed to the apps activity, I did some tests unzipping and passing the .nds file directly and it is now working as expected. I've updated my Daijishou player regex to:
Player: nds - Drastic
File regex: ^(.*)\\.(?:nds)$
-n com.dsemu.drastic/.DraSticActivity
-d {file.uri}
--activity-clear-task
--activity-clear-top
I've also found a solution to the Citra issue for 3DS games, based on the intent filters in its manifest it seems to be rejected by the PackageManager due no -d data being passed (sent in the current Daijishou player instead as an extras key-value pair); I've modified the player as below to send the uri as data instead and it is now launching games as expected:
Player: 3ds - Citra Canary
File regex: ^(.*)\.(?:3ds|3dsx|app|axf|cci|cxi|elf)$
-n org.citra.citra_emu.canary/org.citra.citra_emu.activities.EmulationActivity
-a android.intent.action.VIEW
-d {file.uri}
--activity-clear-task
--activity-clear-top
However regarding the Redream emulator, I'm still a little lost; it seems like the activity is expecting a file.path instead of a file.uri based on the android:scheme="file"
in its activity intent filter.
When i look at what is being sent via logcat when the emulator is called from Daijishou with file.path set, the address is being passed as /path/to/file.chd
, would this not require the file://
prefix? i had a play around and managed to get the activity to be accepted by the intent filter and open the emulator, although the selected ROM does not start, by defining the type and including the file prefix as below:
adb shell am start -n io.recompiled.redream/.MainActivity -a android.intent.action.VIEW -t '*/*' -d 'file:///path/to/file.chd'
Although the same also works if you simply call:
adb shell am start -n io.recompiled.redream/.MainActivity
Below is the output when either of above command is run:
vs log when ROM is loaded from within Redream:
Appreciate this is a more emulator specific query, however in order to correctly update the Daijishou player argument for Android 13 users, any ideas based on the redream AndroidManifest.xml intent filters as to what its missing / or what else i can interrogate to figure out what argument it is expecting to load the ROM file passed to it?
Interesting. Thanks for the info
For Drastic: .zip files definitely work on 12 and below. Haven't seen any issues from A13 users besides Odin 2.
For Citra: Thanks I'll update the player command. As I confirmed the command is working on non Odin 2 devices.
For Redream: You might want to report your findings to Redream dev on their discord. I would but again I don't have a Odin 2 to test.
Also if you dont already know use this command to quickly find out the apps androidmanifest.xml :
adb shell dumpsys package packname
As for looking for extra commands that's usually supplied by the devs documentation (usually through GitHub) or looking through source code. Obviously though this information might not be available
Hmmm, now I'm wondering if one of the issues is that its not liking the extra commands (-e
) for some apps.
Interesting. Thanks for the info
For Drastic: .zip files definitely work on 12 and below. Haven't seen any issues from A13 users besides Odin 2.
For Citra: Thanks I'll update the player command. As I confirmed the command is working on non Odin 2 devices.
For Redream: You might want to report your findings to Redream dev on their discord. I would but again I don't have a Odin 2 to test.
Also if you dont already know use this command to quickly find out the apps androidmanifest.xml :
adb shell dumpsys package packname
hello, i resolve the problem with drastic just unzip all my games, there is really some problem with .zip (saw it before on reddit) and there is really some problem with redream but i`m not some sorta programmer guy and har to help here
Odin 2 user here - Following as i am seeing some of these issues, definitely seeing the DS issue, i haven't tried unzipping the ROM's yet, will try that shortly.
I am using Citra MMJ for 3DS emulation and i can confirm no issues for that particular emulator on the Odin 2
EDIT - Did try unzipping the DS ROM's and can confirm it fixes the particular issue with Dajisho and Drastic
For Redream: You might want to report your findings to Redream dev on their discord. I would but again I don't have a Odin 2 to test.
Redream does run games correctly on the Odin 2, the issue is with running games using Dajisho that then launch Redream, not sure the Redream dev is going to be too concerned about that.
Documenting here in case others have encountered the same issue:
On my Odin2, with N64 using the org.mupen64plusae.v3.fzurita.pro
emulator, I'm encountering the Unable to find explicit activity class..
error only for Super Smash Bros. Weirdly, I've tried dozens of other N64 titles and they all launched fine through Daijisho. Super Smash Bros. also ran fine when launched directly in the mupen64 app itself. I've tried unzipping the ROM file and even tried with a different version of Super Smash Bros and neither worked through Daijisho.
hi can you share wii and ps2 command?
Hi all, just so you are aware the Odin 2 just had a new OTA update pushed which seems to have fixed this issue? Was something the AYN team needed to fix. I can confirm I can now use Redream from the Daijisho frontend, launching straight into games! Yippee! I didn't have issues with the other emulators (Citra, Drastic) if other people can confirm that it is resolved for them? Very happy this issue has been fixed.
EDIT: changed "launchers" to "emulators (Citra, Drastic)"
Forgot to close this as this was a Odin issue that the AYN team fix as mentioned in the above post.
Brief
Been down the rabbit hole on this one; some popular emulators (DS DraStic, 3DS Citra Canary, Dreamcast Redream) are unable to launch ROMs using the built in Daijisho player am launch arguments. It may be related to Android 13 as many people have reported the emulators launching correctly in older versions, but now encountering this issue with the same configuration after upgrading (unfortunately cannot test to confirm).
This is bound to be a growing issue due the recent popular release of the Odin2, which is built on Android 13, and the increasing popularity of the fantastic Daijisho emulator front end.
Details of Issue
Citra Canary (sideload) version: 4253d11 [canary-2711] Source
Attempting to load: .3ds
Daijisho player settings: Player:
3ds - Citra Canary
File regex:^(.*)\.(?:3ds|3dsx|app|axf|cci|cxi|elf)$
APK analyser shows app has available activity:
org.citra.citra_emu.canary/org.citra.citra_emu.activities.EmulationActivity
Citra AndroidManifest.xml Activity:
Daijisho Error Log on ROM Launch:
DraStic (PlayStore) version: r2.6.0.4a build 109 Source
Attempting to load: .zip
Daijisho player settings: Player:
nds - Drastic
File regex:^(.*)\\.(?:bin|nds|rar|zip|7z)$
APK analyser shows app has available activity:
com.dsemu.drastic/com.dsemu.drastic.DraSticActivity
DraStic AndroidManifest.xml: (unfamiliar with Android, assume the activity declaration is generated elsewhere)
Daijisho Error Log on ROM Launch:
Redream (PlayStore) version: 1.2.07 [207] Source
Attempting to load: .chd
Daijisho player settings: Player:
dreamcast - io.recompiled.redream
File regex:^(.*)\\.(?:7z|bin|cdi|chd|cue|dat|elf|gdi|iso|lst|m3u|zip)$
APK analyser shows app has available activity:
io.recompiled.redream/io.recompiled.redream.MainActivity
Redream AndroidManifest.xml: (unfamiliar with Android, assume the activity declaration is generated elsewhere)
Daijisho Error Log on ROM Launch:
Issue Research So Far
I have some coding experience, however the android ecosystem is pretty foreign to me so please excuse any obvious oversights. Below is a summary of the research I've performed so far regarding the issue: :white_check_mark: Regarding an issue with the activity intent filter, I've tried every combination of Daijisho player am start arguments i can think of, including explicitly passing any parameters which are defined in the emulators available AndroidManifest.xml, eg:
Action (-a), Category (-c), Type (-t), Data (-d) / Extra (-e)
etc. This was spurred on from Unable to launch activity since Android 13, and Activity intent filters and interacting with other apps :white_large_square: Unsure where the issue is stemming from, TBD contacting emulator devs directly once the cause of the issue is determined and can prove it's related to problem on their side. :white_check_mark: May have similarities to related issues #157 #443 #434 #562 #413 #490