3DS emulator for Pi users based on "Borked 3DS"
-
My screen is 800x480 and my "emulator resolution" is 640x480
[Layout] anaglyph_shader_name=rendepth (builtin) anaglyph_shader_name\default=true custom_bottom_height=480 custom_bottom_height\default=true custom_bottom_width=640 custom_bottom_width\default=true custom_bottom_x=80 custom_bottom_x\default=true custom_bottom_y=500 custom_bottom_y\default=true custom_portrait_bottom_height=480 custom_portrait_bottom_height\default=true custom_portrait_bottom_width=640 custom_portrait_bottom_width\default=true custom_portrait_bottom_x=80 custom_portrait_bottom_x\default=true custom_portrait_bottom_y=500 custom_portrait_bottom_y\default=true custom_portrait_top_height=480 custom_portrait_top_height\default=true custom_portrait_top_width=800 custom_portrait_top_width\default=true custom_portrait_top_x=0 custom_portrait_top_x\default=true custom_portrait_top_y=0 custom_portrait_top_y\default=true custom_second_layer_opacity=100 custom_second_layer_opacity\default=true custom_top_height=480 custom_top_height\default=true custom_top_width=800 custom_top_width\default=true custom_top_x=0 custom_top_x\default=true custom_top_y=0 custom_top_y\default=true factor_3d=0 factor_3d\default=true filter_mode=true filter_mode\default=true large_screen_proportion=4 large_screen_proportion\default=true layout_option=0 layout_option\default=true mono_render_option=0 mono_render_option\default=true pp_shader_name=None (default) pp_shader_name\default=false render_3d=0 render_3d\default=true screen_bottom_leftright_padding=0 screen_bottom_leftright_padding\default=true screen_bottom_stretch=false screen_bottom_stretch\default=true screen_bottom_topbottom_padding=0 screen_bottom_topbottom_padding\default=true screen_top_leftright_padding=0 screen_top_leftright_padding\default=true screen_top_stretch=false screen_top_stretch\default=true screen_top_topbottom_padding=0 screen_top_topbottom_padding\default=true small_screen_position=2 small_screen_position\default=true swap_eyes_3d=true swap_eyes_3d\default=false swap_screen=false swap_screen\default=true upright_screen=false upright_screen\default=true
-
How is the performance on the Pi 4? I've been tempted to upgrade to a 64-bit system but not sure I can be bothered, as 32-bit seems to be where the performance caps out anyway...
-
@StonedEdge With an aggressive overclock (e.g. 2300MHz/900MHz+) some 3DS games are playable on the Pi4, mostly RPGs. In addition to that you will need to optimize every setting possible as well as make use of any possible cheats that can speed up gameplay. For example, the 150% speedhack in Pokemon Sun is enough to get the game playable on my Pi4, which was a pleasant surprise. Less demanding RPG's like Etrian Mystery Dungeon, Etrian Odyssey, Pokemon Mystery Dungeon, Pokemon ORAS all seem to be playable even if they are not quite at full speed. That said, games like Mario Kart and Smash Bros are just out of the question as really any slow-down is completely unforgiving in games like these. If your interest is mainly RPG's and you are comfortable with overclocking, then I would say that it might be worth it for you to get Borked3DS working on your Pi4.
That said, I believe that the bigger motivation for you to make the jump to 64-bit should be for Gamecube emulation as that is lower hanging fruit than 3ds. Gamecube emulation is a measurably less demanding than 3DS in large part because dolphin has the CPU override feature that works far better than it does in Borked3DS to speed up games on slow hardware (honestly, dolphin is just a better piece of software than citra was and it has far better optimization for use on a variety of devices).
-
@gvx64 said in 3DS emulator for Pi users based on "Borked 3DS":
@DTEAM I appreciate the detailed analysis. Can you let me know the exact screen resolution that you are using that is resulting in this issue? For me to be able to resolve this issue, it is important that I can reproduce it on one of my Pi4's. Once I am finished trying to get shader acceleration functionality working I will see if I can get this problem to reproduce on my Pi's.
If it's to hard to set it blindly, I'll connect my Pi to a PC screen to do the setup. The arrow control on the screen with a joystick and the hotkeys combo settings with gamepad are more important than my issue I think. Thanks for your hard work.
-
@DTEAM No worries, this task is still on my radar. Once I start on it I want to begin by copying your screen resolution and seeing if I can reproduce the problem on my Pi. The problem you are describing is potentially more than just an issue of the config window being too large to fit the window size on the lower res since the text spacing and size is supposed to automatically adjust based on the window size. The fact that yours is getting cut off tells me that there is some potential issue in the window re-sizing functionality.
I am planning to work on your issue once I am finished with the Hardware Shader Acceleration. I really want to get the Hardware Shader Acceleration working on the Pi as it can (at the very least) allow users to precompile shaders and potentially provide other significant performance gains.
-
@gvx64 said in 3DS emulator for Pi users based on "Borked 3DS":
I did notice similar boxes in Smash 3DS and I am guessing that it might be a similar problem as with Fire Emblem. This patch is Fire Emblem specific and will not help with Smash. Smash 3DS is utterly unplayable on my Pi4, due to it being a fighting game with slow-down, and I doubt that it will even be playable at full-speed on a Pi5 and so I probably will not invest time into fixing those boxes. If somebody really wants to play Smash 3DS on the Pi they can do so using Vulkan as there are no boxes and the usual Vulkan rendering issues aren't too noticeable with this game.
Super Smash Bros. 3DS (Europe) (rev 11) is fully playable at full speed without bugs on a Pi5 with OPEN GL (GLES extensions) on my side. Great gaming experience for me. Did you try the rev 11 rom version? I'm on mesa (25.0.7-2~bpo12+1)
-
-
Wow. This is awesome. Professional work!!! Truly impressive. Thank you so much for this overlay.
I hadn't seen it on the thread My Console & Game Themed Bezels for retroarch . I don't know, for now, how to use it with Borked 3ds. I'll check if I can find a way to download it with an option in the UI.
-
@DTEAM Thanks for letting me know, I will have to look into that. It's great that Smash 4 is working for you on the Pi, I am honestly surprised to hear that it is.
I dumped my cart and so I am not sure what version I was using, I will look into the one that you are suggesting. That said, I don't think it was a bad dump because the game played fine on Vulkan except for the usual Citra Vulkan visual artifacts. That said, on GLES with my build, most of the Smash stages were completely unplayable for multiple reasons. First is because of various colored boxes obstructing the screen on battles stages and even the menus (I assume that these are problematic textures for GLES such as incomplete mipmaps but I am not sure). Also Little Mac was neon green and looked like the Hulk for some reason. Finally, the game ran at ~30% on my aggressively OC'ed Pi4 and I recall that disabling right eye did very little to help (I am surprised to hear that it is 100% on the Pi5).
I am still running MESA 24.2.9 (the current default for sudo apt install mesa-vulkan-drivers), and so that could definitely be a possible reason for our difference in experiences. I do want to eventually upgrade to 25.1.0 to get the dual source blending functionality (especially for dolphin) but I decided to just wait for mesa-vulkan-drivers to catch up. I may need to fast-track that though if these newer mesa drivers are truly delivering this kind of enhanced Borked3DS gles performance.
-
D DTEAM referenced this topic
-
@DTEAM HW renderer functionality should be online with latest git commit. It looks like there is a significant performance uplift at least on the Pi4. That said, I recommend not turning on shader cache in Borked3DS as it seems like the shaders are already getting cached in a whole bunch of places and turning it on just makes things even slower when they are first being compiled and cached. The game will actually seemingly crash a bunch of times (or just have a very long pause) when you first turn hardware shader acceleration on as shaders are getting compiled for the first time, that said after a while gameplay should become pretty smooth and noticeably better than with hardware shader acceleration turned off.
Note that if for some reason you need to delete your shader cache, it is a bit of a pain on the Pi as the shaders are cached not just in the location that Borked3DS deletes from within the gui. The solution I found was that I had to manually delete all locations of the shader cache in borked as well as all locations of the mesa shader cache:
sudo rm -r /home/pi/.local/share/borked3ds-emu/shaders/ mv /home/pi/.cache/mesa_shader_cache /home/pi/.cache/mesa_shader_cache_bad mv /home/pi/.cache/mesa_shader_cache_db/ /home/pi/.cache/mesa_shader_cache_db_bad sudo su sudo rm -r /root/.local/share/borked3ds-emu/shaders/ sudo rm -r /root/.local/share/borked3ds-emu/borked3ds-emu/shaders/ sudo mv /root/.cache/mesa_shader_cache /root/.cache/mesa_shader_cache_bad sudo mv /root/.cache/mesa_shader_cache_db/ /root/.cache/mesa_shader_cache_db_bad
Note that you can delete those bad mesa shader directories once you are sure that the removal doesn't cause unforeseen issues on your Pi.
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.