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 3ds
    80 Posts 6 Posters 8.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.
    • F
      Folly @DTEAM
      last edited by

      @DTEAM

      I tried the https://github.com/rtiangha/Borked3DS version on my x86_64 with your script.
      It compiled in 1 go and now have some files actually working.

      Found that line 57 doesn't work in your script and is also not needed :

      cd "$md_build/borked3ds"
      

      If needed it should have been :

      cd "$md_build"
      

      Line 57 can be totally remove though.


      I will try to check this issue again later to see if I can find a solution.

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

        @DTEAM Can you try:

        sudo apt-get install robin-map-dev
        

        and then re-build from scratch?

        I will need to investigate later but it looks like the main CMakeFile.txt has the following guard:

        # Use system tsl::robin_map if available (otherwise we fallback to version bundled with dynarmic)
        if (NOT DYNARMIC_USE_BUNDLED_EXTERNALS)
            find_package(tsl-robin-map QUIET)
        endif()
        

        I think that what we want to do is force cmake to look for tsl-robin-map as a package that is installed on the local system and not try to defer to the version that is supposedly bundled with the dynarmic jit recompilier (I suspect that it is no longer available for some reason and is causing the conflict). Something like this:

        # Use system tsl::robin_map 
            find_package(tsl-robin-map REQUIRED)
        

        I am hoping that all you then have to do is add robin-map-dev as a required dependency in the script that gets installed prior to building. I haven't tested any of this yet though. I can modify the CMake file later once we can confirm that this addresses the issue.

        I think that<tsl/robin_map.h> library is only getting used by the vulkan renderer and so yeah, it probably shouldn't impact gles. That said, I would like to try to retain the functionality of the Vulkan renderer since it does partially work and could have potential use for some games.

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

        The hotkey combos doesn't work for now with gamepads. Only work with keyboard.
        You need a mouse for now to control the arrow in the UI and in some games. The joystick can't control the arrow like the Nintendo DS emulator.

        These items are on my radar but I want to focus on fixing up the gles renderer while it is fresh in my mind.

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

          @DTEAM OK, so I pushed a new master that has the following code segment that pertains to tsl::robin_map in the main CMakeList.txt file:

          # Use system tsl::robin_map
          if (NOT DYNARMIC_USE_BUNDLED_EXTERNALS)
              message(STATUS "Looking for system-installed tsl::robin_map...")
              find_package(tsl-robin-map REQUIRED)
          
              if (tsl-robin-map_FOUND)
                  message(STATUS "Found tsl-robin-map: ${tsl-robin-map_DIR}")
              else()
                  message(FATAL_ERROR "tsl-robin-map not found. Please install it on your system.")
              endif()
          endif()
          

          What I am hoping this does is halt the building process early on with an error if the tsl-robin-map library is found to NOT be locally installed on the user's Pi (it won't even try looking for the bundled dynarmic tsl-robin-map library). That said, including robin-map-dev as a required dependency in your build script will get it installed upfront and so I am hoping that this issue disappears going forward.

          1 Reply Last reply Reply Quote 3
          • F
            Folly
            last edited by Folly

            I am busy with rewriting the script....

            @DTEAM and @ExarKunIv
            Here is my rewrite :
            https://github.com/FollyMaddy/RetroPie-Extra/blob/Borked3DS-WIP/scriptmodules/emulators/borked3ds.sh

            It's not fully tested yet, I will test it this evening if I have the time to do so.
            Can you both check and test ?

            Edit :
            Made some more changes.

            I am doing a full test now on x86_64 : looks OK

            I am doing a full test now for rpi : not working 2 errors !

            CMake Error at externals/dynarmic/CMakeLists.txt:207 (install):
              install TARGETS given target "robin_map" which does not exist.
            
            CMake Error at externals/teakra/CMakeLists.txt:111 (install):
              install TARGETS given target "robin_map" which does not exist.
            
            DTEAMD 1 Reply Last reply Reply Quote 0
            • F
              Folly
              last edited by

              @gvx64

              Your solution doesn't seem to work, any ideas ?

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

                @Folly I am working on it. I am getting the same error. I will let you know once it is working on my end.

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

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

                  Here is my rewrite :
                  https://github.com/FollyMaddy/RetroPie-Extra/blob/Borked3DS-WIP/scriptmodules/emulators/borked3ds.sh

                  Thanks, I left a lot of old stuff in there, including too many dependencies. When we have something solid, we should clean it up and change the name to Borked3DS-rpi, like @gvx64 did.

                  We could also add some presets for a good first-launch experience. I'll share my settings later, and we can discuss the best option for getting started with this emulator on a Pi.

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

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

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

                    Here is my rewrite :
                    https://github.com/FollyMaddy/RetroPie-Extra/blob/Borked3DS-WIP/scriptmodules/emulators/borked3ds.sh

                    Thanks, I left a lot of old stuff in there, including too many dependencies. When we have something solid, we should clean it up and change the name to Borked3DS-rpi, like @gvx64 did.

                    You're welcome.
                    Yes sure, some stuff can be removed, I agree.
                    Changing the name could be done but I created a chameleon script that changes the source upon aarch64 and x86_64.
                    So not sure if renaming is a good idea then.

                    We could also add some presets for a good first-launch experience. I'll share my settings later, and we can discuss the best option for getting started with this emulator on a Pi.

                    Good idea !
                    First thing first, we need a solution to get it properly compiling first ;-)

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

                      @Folly @gvx64

                      I did sudo apt-get install robin-map-dev and modify my old script a little bit (I added the depends robin-map-dev) and switch for Borked3DS-rpi inside the script and everything works well on the first run! I did the switch before your previous message, if you prefer to keep Borked3DS name for X86_64 build and Pi, and be more versatile, I understand. You don't need the last CMake version.

                      Here's the script. Feel free to modify it.

                      borked3ds-rpi.sh

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

                        @DTEAM @Folly So with the latest changes to the github master the retropie install script provided by @Folly finally built successfully on my Pi4. Note that I made a couple of edits to the build script:

                                if isPlatform "aarch64"; then
                                        gitPullOrClone "$md_build" https://github.com/gvx64/Borked3DS-rpi.git
                        #               downloadAndExtract https://cmake.org/files/v4.0/cmake--linux-aarch64.tar.gz "$md_build"
                                        downloadAndExtract https://cmake.org/files/v4.0/cmake-4.0.2-linux-aarch64.tar.gz "$md_build" #gvx64
                                        mv cmake-4.0.2* cmake-4.0.2
                                else
                        
                        function build_borked3ds() {
                                mkdir build
                                cd build
                        #       $md_build/cmake-4.0.2/bin/cmake .. -DCMAKE_BUILD_TYPE=Release
                                $md_build/cmake-4.0.2/bin/cmake .. -DCMAKE_BUILD_TYPE=Release -DDYNARMIC_USE_BUNDLED_EXTERNALS=OFF #gvx64 addition
                                $md_build/cmake-4.0.2/bin/cmake --build . -- -j"$(nproc)"
                                md_ret_require="$md_build/build/bin"
                        }
                        
                        DTEAMD 1 Reply Last reply Reply Quote 1
                        • DTEAMD
                          DTEAM @gvx64
                          last edited by DTEAM

                          @gvx64

                          Thanks , I’m gonna it with Folly script (borked3ds.sh)

                          New edit: I confirm, @Folly's script works very well on Pi5 (64-bit)! Well done!

                          @ExarKunIv The script from @Folly should be the one on Retropie-Extra and not mine

                          roslofR ExarKunIvE 3 Replies Last reply Reply Quote 2
                          • roslofR
                            roslof @DTEAM
                            last edited by roslof

                            It's a reliable issue [RPi5] that if I run any stable/decrypted game with OpenGL and GLES extensions checked, I see a black screen with correct game audio, but if I stop emulation and change to Vulkan (in the same session) and start a game, it will render correctly with correct audio... ("VULKAN" displays in lower-left of UI).

                            ...however launching any game with Vulkan initially set results in a crash.

                            So the only way I can see & hear any game is to launch w/OpenGL, stop and switch to Vulkan in the same session. Trippy.

                            Wondering if I need to upgrade/install something, like a newer version of MESA, as I'm only using mesa-drm from the RetroPie "depends" option in RetroPie Settings.

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

                              @roslof

                              I have no games (many games) issue on my side for Pi5. It's probably un 3d parameter selected in the graphic options menu

                              If you go in

                              /home/pi/.config/borked3ds-emu

                              here's my settings

                              qt-config.ini

                              sdl2-config.ini

                              Game language is set to french. Youwill have to change it

                              roslofR F 3 Replies Last reply Reply Quote 1
                              • roslofR
                                roslof @DTEAM
                                last edited by roslof

                                @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

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

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

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

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

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

                                      1 Reply Last reply Reply Quote 0
                                      • ExarKunIvE
                                        ExarKunIv @DTEAM
                                        last edited by

                                        @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

                                        RPi3B+ / 200GB/ RetroPie v4.5.14, RPi4 Model B 4gb / 256gb / RetroPie 4.8.2
                                        RPi5 4gb / 512gb / RetroPie 4.8.9 -Basic
                                        Maintainer of RetroPie-Extra .

                                        1 Reply Last reply Reply Quote 1
                                        • F
                                          Folly
                                          last edited by

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

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

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

                                            1 Reply Last reply Reply Quote 2
                                            • 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.