3DS emulator for Pi users based on "Borked 3DS"
-
Following the post #15 in this tread Citra-Nightly-2104 on Pi5 (screen issue) - Nintendo 3DS
A new work in progress option is available for Pi and Retropie users.
@gvx64 said in Citra-Nightly-2104 on Pi5 (screen issue) - Nintendo 3DS:
For those that are new to this conversation, instructions on building Borked3ds-rpi are on the github page (@DTEAM may also have a build script): https://github.com/gvx64/Borked3DS-rpi/tree/master
If you don't want to install it manually, Here's my WIP script to install Borked 3DS. It works well.
-
@DTEAM Thank you for creating this. I am still supporting this fork and resolving outstanding issues. If you encounter games with issues please post here (specifically issues that are present under GLES that are not present under the Vulkan API are of specific interest to me and are something that I can help with correcting). The Vulkan API seems to run most games but it has rendering issues that are beyond my abilities to fix. GLES 3.1 is a lot simpler and is something that I can use ChatGPT to help with fixing and so it makes sense for us to focus our efforts on improving performance of this API.
An issue that is currently on my radar, but that I have been able to fix yet, is the black box that appears in the bottom right corner of Fire Emblem Awakening during the battle screens. It is an issue with a particular mipmapping handle that I haven't been able to isolate. I will post here when I make progress.
-
-
Just to re-iterate from the other thread:
@gvx64 said in Citra-Nightly-2104 on Pi5 (screen issue) - Nintendo 3DS:
I added support for GL_OES_texture_buffer in Borked3ds-rpi. This is a GLES 3.2 extension that the Pi does not completely support, but the code in Borked3ds-rpi does not depend on the problematic portions of this extension and so we can tap into this GLES 3.2 functionality on the Pi by using an environment variable override. to launch within Retropie with GL_OES_texture_buffer support enabled, edit the contents of /etc/emulationstation/es_systems.cfg so that the 3DS entry appears as follows. This will theoretically give better performance than the fall-back code path that uses 2D texture LUTs and it should be more accelerated in games that have fog/lighting effects (that said, I am not noticing much of an improvement on my Pi4, maybe because it's GPU is too weak for it to matter).
<system>
<name>3ds</name>
<fullname>3ds</fullname>
<path>/home/pi/RetroPie/roms/3ds</path>
<extension>.3ds .cci .zip .3DS .CCI .ZIP </extension>
<command>env MESA_EXTENSION_OVERRIDE="GL_OES_texture_buffer" /opt/retropie/supplementary/runcommand/runcommand.sh 0 SYS 3ds %ROM%</command>
<platform>3ds</platform>
<theme>3ds</theme>
</system> -
With your latest update, my script no longer works. I'll take care of it tomorrow. It's probably a small problem that needs to be fixed.
Maybe the addition of the capital letter B in the word Build. I'll do a test. -
@DTEAM Thanks for letting me know. I haven't made any changes to the name of the fork. It should work same as before. Do you have any info on where it is failing? The log should be retrievable at this location (just correctly enter the fields that have x's below):
sudo zcat /home/pi/RetroPie-Setup/logs/rps_2025-xx-xx-xxxxx.log.gz
-
@gvx64 said in 3DS emulator for Pi users based on "Borked 3DS":
@DTEAM Thanks for letting me know. I haven't made any changes to the name of the fork. It should work same as before. Do you have any info on where it is failing? The log should be retrievable at this location (just correctly enter the fields that have x's below):
sudo zcat /home/pi/RetroPie-Setup/logs/rps_2025-xx-xx-xxxxx.log.gz
Just to let you know, there is no need to use sudo, it should work without it.
-
Now Is it borked3ds-qt instead of borked3ds? Maybe it's on my side. I'll double check. It says the emulator is a Port now. It doesn't make sense.
[100%] Building CXX object src/borked3ds_qt/CMakeFiles/borked3ds-qt.dir/borked3ds-qt_autogen/37D3MJFPTG/qrc_style.cpp.o [100%] Linking CXX executable ../../bin/Release/borked3ds /home/pi/RetroPie-Setup/tmp/build/borked3ds/src/input_common/gcadapter/gc_poller.cpp: In member function ‘GetAnalog’: /home/pi/RetroPie-Setup/tmp/build/borked3ds/src/input_common/gcadapter/gc_poller.cpp:202:38: note: parameter passing for argument of type ‘struct pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 202 | const auto [x, y] = GetAnalog(axis_x, axis_y); | ^ [100%] Built target borked3ds-qt gmake: *** [Makefile:146: all] Error 2 /home/pi /home/pi/RetroPie-Setup/tmp/build/borked3ds /home/pi '/home/pi/RetroPie-Setup/tmp/build/borked3ds/build/bin/Release/borked3ds' -> '/opt/retropie/emulators/borked3ds/borked3ds' cp: cannot overwrite non-directory '/opt/retropie/emulators/borked3ds/borked3ds' with directory '/home/pi/RetroPie-Setup/tmp/build/borked3ds/' /home/pi /opt/retropie/emulators/borked3ds /home/pi = = = = = = = = = = = = = = = = = = = = = Configuring 'borked3ds' : 3DS Emulator borked3ds = = = = = = = = = = = = = = = = = = = = = /home/pi Log ended at: Tue 10 Jun 08:54:36 EDT 2025 Total running time: 0 hours, 9 mins, 5 secs
-
@gvx64 said in 3DS emulator for Pi users based on "Borked 3DS":
@DTEAM Thanks for letting me know. I haven't made any changes to the name of the fork. It should work same as before. Do you have any info on where it is failing? The log should be retrievable at this location (just correctly enter the fields that have x's below):
sudo zcat /home/pi/RetroPie-Setup/logs/rps_2025-xx-xx-xxxxx.log.gz
here's my log
https://pastebin.com/W93hFNQs -
@DTEAM Thanks for this info. Can you try building Borked3DS-rpi using the instructions below (instead of using the install script). It's building successfully on my Pi4 using these steps.
Instructions for Building from Source:
cd /home/pi sudo git clone https://github.com/gvx64/Borked3DS-rpi.git cd ./Borked3DS-rpi sudo git submodule update --init --recursive sudo mkdir ./Build ; cd ./Build sudo cmake ..
(note minimum cmake 3.26 requirement - if necessary follow instructions to build new cmake https://geeksww.com/tutorials/operating_systems/linux/installation/downloading_compiling_and_installing_cmake_on_linux.php )
sudo make -j4
Note that if this build attempt fails, please try the build command again using sudo make -j1 as this will sometimes provide a more descriptive error log (the second build attempt should take a lot less time as well).
Note that I am going to try to get your script to build on my Pi.
-
@gvx64 said in 3DS emulator for Pi users based on "Borked 3DS":
(note minimum cmake 3.26 requirement - if necessary follow instructions to build new cmake https://geeksww.com/tutorials/operating_systems/linux/installation/downloading_compiling_and_installing_cmake_on_linux.php )
I'm ok for that part, with Bookworm backport, I'm at 3.31 or 3.3x
-
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.
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.