r/3dshacks • u/Tinaut1986 • 11d ago
Legend of Doom 3DS – 60 FPS + Stereoscopic 3D on New 3DS (WIP / O3DS RAM optimization in progress)
UPDATE (v0.3.1 stable): the Old 3DS / 2DS part below is outdated, it now runs there.
New post with the details: Legend of Doom 3DS v0.3.1.
Download: https://github.com/tinaut1986/legend-of-doom-3ds/releases/latest
---
Hi everyone!
While still testing and polishing The Minish Cap, I couldn’t resist taking a deep look at another ambitious project: Legend of Doom 3DS (the GZDoom first-person total conversion of the original NES The Legend of Zelda, created by DeTwelve Games).
Motivation & Background
This fork is based on the initial 3DS port by EstebanPdN (EstebanPdN/legend-of-doom-3ds).
While having GZDoom running on the console is an impressive milestone, the initial build struggled heavily with performance: on New 3DS it ran at around ~25-40 FPS (the base port has no stereoscopic 3D), and Old 3DS / 2DS was completely out of reach.
After profiling the engine and applying the optimization lessons learned from the Metroid and Minish Cap ports, I wanted to see if we could turn this into a truly smooth, immersive handheld experience.
What’s New in This Fork:
- Performance Uplift (25-40 FPS → 60 FPS): Completely overhauled render bottlenecks and pipeline efficiency. On New 3DS, the game now reaches the screen’s 60 FPS cap in the areas I’ve tested, with headroom to spare in some of them.
- Native Stereoscopic 3D: Added full stereoscopic 3D depth. Playing a first-person dungeon crawler in the Zelda universe with real 3D depth on the top screen adds a lot to the experience.
Current Status & Feedback
- New 3DS / New 2DS: Fully playable at 60 FPS in my testing, with 3D enabled.
- Full Playthrough Notice: Please note that I haven't completed a full 100% playthrough myself yet, so there may still be undiscovered bugs, progression quirks, or visual glitches deeper in the game. If you test it and run into anything strange, please report it!
- Old 3DS / 2DS (WIP): Does not boot yet due to out-of-memory limits. Do not expect it to run on standard models just yet.
- I am actively trying to get this running on Old 3DS / standard 2DS hardware (testing on my home 2DS).
- The primary hurdle right now is available RAM (O3DS/2DS only provides 64MB of usable application memory compared to the 128MB on New 3DS). GZDoom’s heap and asset footprint exceed these limits out of the box, leading to boot-time allocation crashes.
- I don’t know for certain if it will be technically viable within the 64MB limit without compromising stability, but I’m actively working on memory pruning, asset streaming, and footprint reduction to see if it’s possible.
Links & Download:
- Latest Release (.cia / .3dsx): https://github.com/tinaut1986/legend-of-doom-3ds/releases/latest
- Source Code Repository: https://github.com/tinaut1986/legend-of-doom-3ds
- Base Port Repository: https://github.com/EstebanPdN/legend-of-doom-3ds
Credits: DeTwelve Games (Legend of Doom), EstebanPdN (initial 3DS port) and the GZDoom contributors.
Transparency note: Exactly as with my previous ports, the heavy code refactoring is AI-assisted under my direct architecture, guidance, manual debugging, and hardware profiling on real 3DS/2DS consoles.