RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login

    3DS emulator for Pi users based on "Borked 3DS"

    Scheduled Pinned Locked Moved Projects and Themes
    nintendo 3dspi 4pi5borked 3dsx86-64
    97 Posts 7 Posters 13.0k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • G
      gvx64 @DTEAM
      last edited by gvx64

      @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.

      DTEAMD 2 Replies Last reply Reply Quote 0
      • DTEAMD
        DTEAM @gvx64
        last edited by

        @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

        1 Reply Last reply Reply Quote 1
        • DTEAMD
          DTEAM @gvx64
          last edited by DTEAM

          @gvx64

          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.

          G 1 Reply Last reply Reply Quote 1
          • G
            gvx64 @DTEAM
            last edited by gvx64

            @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"
            }
            
            DTEAMD 1 Reply Last reply Reply Quote 1
            • DTEAMD
              DTEAM @gvx64
              last edited by

              @gvx64

              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.

              roslofR 1 Reply Last reply Reply Quote 0
              • roslofR
                roslof @DTEAM
                last edited by roslof

                @DTEAM said in 3DS emulator for Pi users based on "Borked 3DS":

                @gvx64

                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....
                
                FollyF 1 Reply Last reply Reply Quote 0
                • FollyF
                  Folly @roslof
                  last edited by Folly

                  @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 command sudo 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.

                  roslofR 1 Reply Last reply Reply Quote 1
                  • roslofR
                    roslof @Folly
                    last edited by roslof

                    @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

                    .

                    FollyF 1 Reply Last reply Reply Quote 0
                    • FollyF
                      Folly @roslof
                      last edited by Folly

                      @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% ...

                      roslofR 1 Reply Last reply Reply Quote 0
                      • roslofR
                        roslof @Folly
                        last edited by roslof

                        @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.

                        FollyF 3 Replies Last reply Reply Quote 1
                        • FollyF
                          Folly @roslof
                          last edited by Folly

                          @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.

                          1 Reply Last reply Reply Quote 1
                          • FollyF
                            Folly @roslof
                            last edited by

                            @roslof

                            BTW.
                            I see that tsl-robin-map seems to require cmake 3.5 or higher.

                            roslofR 1 Reply Last reply Reply Quote 0
                            • roslofR
                              roslof @Folly
                              last edited by

                              @Folly said in 3DS emulator for Pi users based on "Borked 3DS":

                              @roslof

                              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.

                              FollyF 1 Reply Last reply Reply Quote 1
                              • FollyF
                                Folly @roslof
                                last edited by Folly

                                @roslof

                                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/tsl

                                That 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

                                DTEAMD 1 Reply Last reply Reply Quote 0
                                • FollyF
                                  Folly @roslof
                                  last edited by

                                  @roslof

                                  [ 97%] Linking CXX executable ../../bin/Release/borked3ds
                                  [100%] Built target borked3ds-qt
                                  
                                  roslofR 1 Reply Last reply Reply Quote 0
                                  • roslofR
                                    roslof @Folly
                                    last edited by

                                    @Folly That looks promising

                                    FollyF 2 Replies Last reply Reply Quote 0
                                    • FollyF
                                      Folly @roslof
                                      last edited by

                                      @roslof

                                      The binary seems to work.

                                      1 Reply Last reply Reply Quote 1
                                      • FollyF
                                        Folly @roslof
                                        last edited by Folly

                                        @roslof

                                        Btw.
                                        I did not use the sudo 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.

                                        roslofR DTEAMD 2 Replies Last reply Reply Quote 2
                                        • roslofR
                                          roslof @Folly
                                          last edited by

                                          @Folly said in 3DS emulator for Pi users based on "Borked 3DS":

                                          @roslof

                                          Btw.
                                          I did not use the sudo 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!.

                                          1 Reply Last reply Reply Quote 0
                                          • DTEAMD
                                            DTEAM @Folly
                                            last edited by DTEAM

                                            @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

                                            FollyF 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            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.