3DS emulator for Pi users based on "Borked 3DS"
-
@DTEAM said in 3DS emulator for Pi users based on "Borked 3DS":
here's my settings
Thank you for providing @DTEAM will check it out (Done).
Got it, thanks to diff'ing qt-config.ini
Needed to deselect "Hardware Shader Acceleration" (from default checked)
Cheers @DTEAM -
@DTEAM said in 3DS emulator for Pi users based on "Borked 3DS":
@ExarKunIv The script from @Folly should be the one on Retropie-Extra and not mine
Might want to fix the small "comma" typo on line 16 that appears as ,cxi instead of .cxi
Current (incorrect):
rp_module_help="ROM Extension: .3ds .3dsx .elf .axf .cci ,cxi .app\n\nCopy your 3DS roms to $romdir/3ds"
-
@roslof Yes, good call I should have mentioned this. Make sure that Hardware Shader Acceleration is ALWAYS disabled. I tried to get Hardware Shader Acceleration working on the Pi but I hit a dead-end. It likely won't make much of a difference anyways since the Pi's GPU is way too slow to take advantage of it.
Also, the Borked3DS-cli binary also currently doesn't work. I came close to getting it working but I stopped when it became apparent (again) that the Pi's GPU won't be able to handle rendering the window and the emulation at the same time without a major loss of performance compared to the QT5.
It's good keep in mind that Vulkan works at least somewhat. Most games have weird rendering artifacts under Vulkan but there may be some games (that I haven't come across yet) that work better under Vulkan than GLES currently.
-
@gvx64 said in 3DS emulator for Pi users based on "Borked 3DS":
It's good keep in mind that Vulkan works at least somewhat. Most games have weird rendering artifacts under Vulkan but there may be some games (that I haven't come across yet) that work better under Vulkan than GLES currently.
All very good info. I also noticed that when Full Screen mode is much slower than when the UI is displayed. The opposite is true for Dolphin. Was going to report that some games were slower under OpenGL, but it was just the Full Screen mode. :)
Starting to get used to the nuance now.
Having a ball with this one. -
@DTEAM open a PR on my repo. I'm not by a computer to do big changes. It will be next week before I'm in front of a computer again
-
-
@gvx64 said in 3DS emulator for Pi users based on "Borked 3DS":
It's good keep in mind that Vulkan works at least somewhat. Most games have weird rendering artifacts under Vulkan but there may be some games (that I haven't come across yet) that work better under Vulkan than GLES currently.
@roslof With Vulkan, the only playable one tested for now is MarioKArt. Vulkan works well on a computer with that emulator. The Vulkan version under MESA is to low on a Pi for now.
Another thing, I don't remember wich one , but one of the audio settings affect the performance (big impact).
-
@Folly said in 3DS emulator for Pi users based on "Borked 3DS":
@gvx64 @roslof
I added both your changes to the script.I will probably will change the script so -DDYNARMIC_USE_BUNDLED_EXTERNALS=OFF
will only be added when compiling for rpi.
Will have a look later.@gvx64 does adding the prefix
env MESA_EXTENSION_OVERRIDE="GL_OES_texture_buffer"
to es_systems.cfg still provide benefit?I noticed that it's still in the fork README.md, but does not appear in the latest RetroPie script. Specifically:
<command>env MESA_EXTENSION_OVERRIDE="GL_OES_texture_buffer" /opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ 3ds %ROM%</command>
Cheers!
-
@roslof Yes, THANK YOU for reminding me, I totally forgot about this important point. GL_OES_texture_buffer is a GLES 3.2 extension that the Pi partially supports - well enough for Borked3DS-rpi to take advantage of it. @Folly , can we please replace the addEmulator line with the following on your install script:
addEmulator 1 "$md_id-roms" "3ds" "env MESA_EXTENSION_OVERRIDE=GL_OES_texture_buffer $launch_prefix$md_inst/borked3ds %ROM%"
This should hopefully get environment variable specified in /etc/emulationstation/es_systems.cfg at time of install and so it should get set whenever users launch Borked3DS-rpi from within emulationstation (please let me know if it does not work). Note that the easiest way to check to see if the environment variable is functioning as expected is to check the log after running Borked3DS-rpi and look for the following message:
GL_OES_texture_buffer is available, utilizing primary code path
present in the log means that it the env variable assignment is working properly while,GL_EXT_texture_buffer not available, falling back to 2D texture LUTs
means that it is not working and that there is something wrong.As you can see there is also a fallback path that myself and rtiangha introduced that functions in the event that GL_OES_texture_buffer env var is not specified that seems to work fine but it provides less GPU acceleration. Theoretically, enabling texture buffers should make Borked3ds faster. Practically speaking, I didn't see much a difference enabling texture buffers on the Pi4 but it might make more of a difference on a Pi5 with its faster gpu. In any case, I would just specify the environment variable in the install script, make sure that it is in /etc/emulationstation/es_systems.cfg and then leave it at that - texture buffers are the default functionality for the emulator and it stands to reason that it is possibly more stable than the fallback path which has had less testing.
-
Committed improvements can be viewed here.
Script needs to be checked and tested again. -
@Folly said in 3DS emulator for Pi users based on "Borked 3DS":
Committed improvements can be viewed here.
Script needs to be checked and tested again.Thank you again Folly!
For me, when the emulator.cfg line is prepended
env MESA_EXTENSION_OVERRIDE=GL_OES_texture_buffer
runcommand seems to have a hard time. Guessing something to do with number of parameters since we're adding one?Viewing /dev/shm/runcommand.log yields the following error before kicking back to ES:
Parameters: Executing: env MESA_EXTENSION_OVERRIDE=GL_OES_texture_buffer XINIT-WMC:/opt/retropie/emulators/borked3ds/borked3ds "/home/pi/RetroPie/roms/3ds/Angry Birds Star Wars (USA) (En,Fr,Es,Pt).3ds" env: ‘XINIT-WMC:/opt/retropie/emulators/borked3ds/borked3ds’: No such file or directory
So I removed the environment variable from emulators.cfg and added it to
es_systems.cfg
in this location (which I believe was @gvx64's or @DTEAM's original idea:<command>env MESA_EXTENSION_OVERRIDE=GL_OES_texture_buffer /opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ 3ds %ROM%</command>
This yielded the correct log information in ~/.local/share/borked3ds-emu/log is specified by @gvx64:
GL_OES_texture_buffer is available, utilizing primary code path
-
@roslof OK, that wasn't supposed to happen. Thanks for letting me know. I will need to do some additional investigation to figure out how to get the install script to add the env var to /etc/emulationstation/es_systems.cfg. I haven't seen it done in any other examples scripts and so I will have to do some digging.
-
I think the runcommand didn't work because it was missing a semicolon.
The env part is a command not an option, by adding the semicolon, I think, it should work now.
The change can be viewed here.
Script needs to be checked and tested again.@roslof
If you want you can test only the configure part by doing the following commands.cd RetroPie-Setup sudo ./retropie_packages.sh borked3ds configure
That should only install the new runcommands.
-
Found that it should be possible to add a configuration gui to the script.
I tested the "function gui_retroarch" from retroarch.sh and renamed it and placed it in the script.
It will then add an option for borked3ds in the configuration / tools menu.
This means that if we I create a function called "function gui_borked3ds" we can work from there,
and it should be possible to create something similar as the mamedev.sh script. -
@Folly said in 3DS emulator for Pi users based on "Borked 3DS":
Found that it should be possible to add a configuration gui to the script.
I tested the "function gui_retroarch" from retroarch.sh and renamed it and placed it in the script.
It will then add an option for borked3ds in the configuration / tools menu.
This means that if we I create a function called "function gui_borked3ds" we can work from there,
and it should be possible to create something similar as the mamedev.sh script.This is a good news.
In the PS2 script from Retropie Extra, they have write config settings at the end of the script.This is another example to preset the GUI.
-
@DTEAM said in 3DS emulator for Pi users based on "Borked 3DS":
@Folly said in 3DS emulator for Pi users based on "Borked 3DS":
Found that it should be possible to add a configuration gui to the script.
I tested the "function gui_retroarch" from retroarch.sh and renamed it and placed it in the script.
It will then add an option for borked3ds in the configuration / tools menu.
This means that if we I create a function called "function gui_borked3ds" we can work from there,
and it should be possible to create something similar as the mamedev.sh script.This is a good news.
In the PS2 script from Retropie Extra, they have write config settings at the end of the script.This is another example to preset the GUI.
Depending of what we want to add that's indeed a way of adding config settings quite easily.
However if we want to add other or more stuff a gui could come in handy.
Examples could be :- predefined gamelists
- cheats
- joystick configs
just naming a few ideas.
-
@Folly said in 3DS emulator for Pi users based on "Borked 3DS":
Script needs to be checked and tested again.
Cheers, Folly. I'm having the same basic issue with the modification. For what it's worth, here are the contents of emulators.cfg post-change:
borked3ds-ui = "env MESA_EXTENSION_OVERRIDE=GL_OES_texture_buffer;XINIT-WMC:/opt/retropie/emulators/borked3ds/borked3ds" borked3ds-roms = "env MESA_EXTENSION_OVERRIDE=GL_OES_texture_buffer;XINIT-WMC:/opt/retropie/emulators/borked3ds/borked3ds %ROM%" default = "borked3ds-roms"
This is what runcommand is executing:
Executing: env MESA_EXTENSION_OVERRIDE=GL_OES_texture_buffer;XINIT-WMC:/opt/retropie/emulators/borked3ds/borked3ds "/home/pi/RetroPie/roms/3ds/Angry Birds Star Wars.3ds"
and here is the bottom of runcommand.log:
_=/usr/bin/env MESA_EXTENSION_OVERRIDE=GL_OES_texture_buffer /opt/retropie/supplementary/runcommand/runcommand.sh: line 1329: XINIT-WMC:/opt/retropie/emulators/borked3ds/borked3ds: No such file or directory
For now, on my local device, will revert to having the env command in es_systems.cfg and remove it from emulators.cfg (which works fine).
-
@roslof
Thanks for letting me know.@DTEAM @ExarKunIv @gvx64
Do you have the same issue ?Edit :
Turned off the launch_extension until there is a better solution. -
I added the basic structure for adding a Configuration/Options menu (also viewable from the main Configuration/Tools menu).
You can view the commit here .
Try to play with it and see how it works.
The "build_menu" code is basically code from the docsview script.
I also use that for the mamedev script, with the addition for showing and running stuff that is placed inside a CSV.
Here I used the special char □ as comma so commas can be used in the CSV.
If you somehow need to add " in the commands then use a backslash in front of it.
Let me know if you can work with that. -
It works, we can see options 1 to 4 . Maybe we could start (option 1 = pi5/pi4 settings and option 2 cheat codes) I didn't test a cheat code yet with that emulator. Here's a forum about it . I don't see sites with all the cheat codes ready to go. For Joystick, is there a way to match ES settings like Lr emulators?
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.