3DS emulator for Pi users based on "Borked 3DS"
-
The script works, but I have to run it twice, like for an update. I leave the temporary folder there and run the installation again. It'S strange. It was not like that before
BTW, the emulator works very well.
-
@DTEAM Thank you for letting me know. When the build fails at the very end like that it usually means that it is a linking issue (e.g. a missing include or a module that was mistakenly not added to a CMake file). I wonder if it had something to do with one of the externals not downloading properly that set it off. It's weird that it is working now for you because I didn't change anything.
I actually have had a lot of difficulty successfully running these install scripts for the more complex emulators (ppsspp, dolphin, citra) I think because of my internet connection. That said, the install process usually fails for me prior to building when it is doing the submodule update stage not at the very end like it did for you. I usually find it a lot easier just to manually build.
Anyways, I was wondering if you might be able to update the configure_borked3ds() in your build script as follows and just test + verify that it works as intended. I haven't been able to test it out but ChatGPT says that this should get the env var gl_oes_texture_buffer added to the /etc/emulationstation/es_systems.cfg file as I showed above:
function configure_borked3ds() { mkRomDir "3ds" ensureSystemretroconfig "3ds" local launch_prefix isPlatform "kms" && launch_prefix="XINIT-WMC:" addEmulator 0 "$md_id-ui" "3ds" "$launch_prefix$md_inst/borked3ds" addEmulator 1 "$md_id-roms" "3ds" "env MESA_EXTENSION_OVERRIDE=GL_OES_texture_buffer $launch_prefix$md_inst/borked3ds %ROM%" #addEmulator 1 "$md_id-room" "3ds" "$launch_prefix$md_inst/borked3ds-room" #addEmulator 2 "$md_id-cli" "3ds" "$launch_prefix$md_inst/borked3ds-cli" #addEmulator 3 "$md_id-tests" "3ds" "$launch_prefix$md_inst/tests" addSystem "3ds" "3ds" ".3ds .3dsx .elf .axf .cci ,cxi .app" }
-
Same problem with your method on GitHub. I can't tell if the problem is only on my side. If someone else could test it on a Pi5, that might be helpful.
-
@DTEAM said in 3DS emulator for Pi users based on "Borked 3DS":
Same problem with your method on GitHub. I can't tell if the problem is only on my side. If someone else could test it on a Pi5, that might be helpful.
It breaks for me earlier in the process:
[ 94%] Building CXX object src/tests/CMakeFiles/tests.dir/common/param_package.cpp.o In file included from /home/pi/RetroPie-Setup/tmp/build/borked3ds/src/./video_core/renderer_opengl/gl_texture_runtime.h:9, from /home/pi/RetroPie-Setup/tmp/build/borked3ds/src/./video_core/renderer_opengl/gl_rasterizer.h:13, from /home/pi/RetroPie-Setup/tmp/build/borked3ds/src/./video_core/renderer_opengl/renderer_opengl.h:12, from /home/pi/RetroPie-Setup/tmp/build/borked3ds/src/borked3ds/borked3ds.cpp:15: /home/pi/RetroPie-Setup/tmp/build/borked3ds/src/./video_core/rasterizer_cache/rasterizer_cache_base.h:15:10: fatal error: tsl/robin_map.h: No such file or directory 15 | #include <tsl/robin_map.h> | ^~~~~~~~~~~~~~~~~ compilation terminated. gmake[2]: *** [src/borked3ds/CMakeFiles/borked3ds.dir/build.make:96: src/borked3ds/CMakeFiles/borked3ds.dir/borked3ds.cpp.o] Error 1 gmake[1]: *** [CMakeFiles/Makefile2:4618: src/borked3ds/CMakeFiles/borked3ds.dir/all] Error 2 gmake[1]: *** Waiting for unfinished jobs....
-
@roslof said in 3DS emulator for Pi users based on "Borked 3DS":
/home/pi/RetroPie-Setup/tmp/build/borked3ds/src/./video_core/rasterizer_cache/rasterizer_cache_base.h:15:10: fatal error: tsl/robin_map.h: No such file or directory
15 | #include <tsl/robin_map.h>@gvx64
For me it failed on the same when building manually.
(not using the commandsudo
btw., no need to do so)
Noticed that when using :git submodule update --init --recursive
It had a problem getting the submodule that contains robin_map.h.
I am trying again to see if it will work when doing it a second time.
-
@Folly said in 3DS emulator for Pi users based on "Borked 3DS":
It had a problem getting the submodule that contains robin_map.h.
Right. Was just zeroing in on the same. It appears that it fails early on in the process, but doesn't Fatal until near the end. Here's where multiple files aren't found and a clue about why:
The following configuration files were considered but not accepted: /usr/lib/aarch64-linux-gnu/cmake/fmt/fmt-config.cmake, version: 9.1.0 /lib/aarch64-linux-gnu/cmake/fmt/fmt-config.cmake, version: 9.1.0 -- Could NOT find mcl (missing: mcl_DIR) -- Could NOT find tsl-robin-map (missing: tsl-robin-map_DIR) -- Could NOT find oaknut (missing: oaknut_DIR) CMake Deprecation Warning at externals/dynarmic/externals/robin-map/CMakeLists.txt:1 (cmake_minimum_required): Compatibility with CMake < 3.10 will be removed from a future version of CMake. Update the VERSION argument <min> value. Or, use the <min>...<max> syntax to tell CMake that the project requires at least <min> but has been updated to work with policies introduced by <max> or earlier.
@Folly are you using cmake 4.0 or higher? I'm wondering if CMake just needs a range for cmake_minimum_required as specified
-
@roslof said in 3DS emulator for Pi users based on "Borked 3DS":
@Folly are you using cmake 4.0 or higher? I'm wondering if CMake just needs a range for cmake_minimum_required as specified
Yes, I use the latest cmake 4.0.2 now.
78% ...
-
@Folly said in 3DS emulator for Pi users based on "Borked 3DS":
Yes, I use the latest cmake 4.0.2 now.
78% ...
I modified CMakeLists.txt adding the range and I'm giving it another run.
EDIT: Still having the same problem each time cmake is run. mcl_DIR, tsl-robin-map_DIR and oaknut_DIR are missing. Boo. -
@roslof said in 3DS emulator for Pi users based on "Borked 3DS":
I modified CMakeLists.txt adding the range and I'm giving it another run.
I didn't edit the CMakeList.txt, I think it should work oob.
90%..
Edit:
[ 95%] Building CXX object src/tests/CMakeFiles/tests.dir/common/bit_field.cpp.o In file included from /home/pi/Borked3DS-rpi/src/./video_core/renderer_opengl/gl_texture_runtime.h:9, from /home/pi/Borked3DS-rpi/src/./video_core/renderer_opengl/gl_rasterizer.h:13, from /home/pi/Borked3DS-rpi/src/./video_core/renderer_opengl/renderer_opengl.h:12, from /home/pi/Borked3DS-rpi/src/borked3ds/borked3ds.cpp:15: /home/pi/Borked3DS-rpi/src/./video_core/rasterizer_cache/rasterizer_cache_base.h:15:10: fatal error: tsl/robin_map.h: Bestand of map bestaat niet 15 | #include <tsl/robin_map.h>
git submodule seemed to get all submodules and cmake did not say "Not Found", Hmmm..
Edit : I will have a look later.
-
BTW.
I see that tsl-robin-map seems to require cmake 3.5 or higher. -
@Folly said in 3DS emulator for Pi users based on "Borked 3DS":
BTW.
I see that tsl-robin-map seems to require cmake 3.5 or higher.I was able to clear the error by modifying
Borked3DS-rpi/externals/dynarmic/externals/robin-map/CMakeLists.txt
and adding the range to the top line:cmake_minimum_required(VERSION 3.5...4.0)
But this did not solve the problem of the various "Could NOT find" issue.
-
Just to see if I get it compiling I copied the
/home/pi/Borked3DS-rpi/externals/teakra/externals/robin-map/include/tsl
folder to
/home/pi/Borked3DS-rpi/src/tslThat will circumvent the not found issue, tsl/robin-map.h not found.
Still have this issue :
/home/pi/Borked3DS-rpi/src/borked3ds_qt/bootmanager.cpp:42:10: fatal error: qpa/qplatformnativeinterface.h: Bestand of map bestaat niet 42 | #include <qpa/qplatformnativeinterface.h>
Perhaps missing dependency.
Edit :
I missed the package :
qt6-base-private-dev -
[ 97%] Linking CXX executable ../../bin/Release/borked3ds [100%] Built target borked3ds-qt
-
@Folly That looks promising
-
The binary seems to work.
-
Btw.
I did not use thesudo
command when compiling manually, there is no need to do so.Seems the only problem is that the folder
tsl
cannot be found.
Not sure where we can edit that.Edit:
Have to leave now, will test some stuff later. -
@Folly said in 3DS emulator for Pi users based on "Borked 3DS":
Btw.
I did not use thesudo
command when compiling manually, there is no need to do so.Seems the only problem is that the folder
tsl
cannot be found.
Not sure where we can edit that.Edit:
Have to leave now, will test some stuff later.Works great. Nicely done @Folly!.
-
@Folly said in 3DS emulator for Pi users based on "Borked 3DS":
Perhaps missing dependency.
With the script, you have all the necessary dependencies. This CMake issue was fixed with rtiangha, but it seems to be reappearing.
I can confirm, the emulator works fine on a Pi5, it's really just a new CMake issue.
Here's my cmake version from bookworm/backports
cmake 3.31.6-2~bpo12+1
cmake-data 3.31.6-2~bpo12+1 -
@DTEAM said in 3DS emulator for Pi users based on "Borked 3DS":
@Folly said in 3DS emulator for Pi users based on "Borked 3DS":
Perhaps missing dependency.
With the script, you have all the necessary dependencies.
Yep, I saw that you have added that in the script..
Just wanted to check it out manually first before starting with your script.This CMake issue was fixed with rtiangha, but it seems to be reappearing.
I can confirm, the emulator works fine on a Pi5, it's really just a new CMake issue.
I am just starting with this, I have to get more familiar with it.
Which issue do you mean, not findingtsl/robin-map.h
? -
@Folly said in 3DS emulator for Pi users based on "Borked 3DS":
I am just starting with this, I have to get more familiar with it.
Which issue do you mean, not finding tsl/ronin-map.h ?The issue in general
It's strange, because on my side, it stops at 95%. It can't build the file borked3ds (the one needed)
Could not successfully install 3DS Emulator borked3ds (/home/pi/RetroPie-Setup/tmp/build/borked3ds/build/bin/Release/borked3ds not found)
but when I restart my script and leave the tmp folder full, it generates the borked3ds emulator and everything is installed properly.
Here's my cmake version from bookworm/backports
cmake 3.31.6-2~bpo12+1
cmake-data 3.31.6-2~bpo12+1
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.