Use the libretro VFS interface in libretro builds#3489
Conversation
|
Great to see that RetroArch is finally getting SAF support on Android. Also interesting to see the implementation being completely different to our SAF approach. We use wrapper classes in Java to do all the heavy lifting and you call everything via JNI and use C code. Code looks solid. Will do some testing on Android soon. |
|
Jenkins: test this please (ignore the lint error, is unrelated) |
…rectory already exists
…4 Windows builds
… `LibretroFilesystem` file stream
|
Made now some tests and their are some behaviours in the player code that break the Android side. Will try to fix them myself as they are also affecting other components on other platforms:
Besides this it appears to work inside a saf document tree. Good job. |
libretro requires them for correct functionality
Our code assumes that this works at far too many places
It goes downwards instead of upwards This prevents issues when path-like components are in the path that are not considered directories by the system.
|
@white-axe btw is their a simple way to test the core from Android Studio? (including debugger support) Currently I just use adb + root permissions to manually copy the so-file in the retroarch data folder but their must be a better way |
|
You don't have to copy the core file into the directory where RetroArch normally looks for the cores. Instead, copy it anywhere and then specify the core path when launching RetroArch: SAF paths are supported for the ROM path, either in the form of the saf:// paths that appear in RetroArch's history when you run the game from the GUI or in the form of a SAF content:// URI (only for nightly builds of RetroArch currently in the latter case). |
The libretro API provides a virtual filesystem interface that libretro cores can use to perform filesystem operations. It allows the libretro frontend to expose filesystem functionality that's not available through the native filesystem calls, such as the Storage Access Framework filesystem driver I added to the Android builds of RetroArch in libretro/RetroArch#18336.
This pull request changes the libretro builds of EasyRPG Player to request the libretro VFS interface from the libretro frontend, and then, if it's available, replace NativeFilesystem with a new LibretroFilesystem that uses the libretro VFS interface instead of the native filesystem calls.