[Release] Doom RPG (Reverse Engineered) for 3DS — Stereoscopic 3D, Touch HUD & CIA Build

  • Thread starter Thread starter indionicarao
  • Start date Start date
  • Views Views 978
  • Replies Replies 11
  • Likes Likes 14

indionicarao

Member
Newcomer
Joined
Mar 19, 2015
Messages
24
Reaction score
31
Trophies
1
Age
44
Location
Portland, Oregon
XP
231
Country
United States
Hey everyone,

Like many of you who remember playing mobile games in the mid-2000s, I’ve always had a soft spot for Doom RPG. When the GEC team reverse-engineered the BREW version for PC and Efim Andreev started an initial 3DS port, I was thrilled to see it running on handheld hardware.

The early port was fairly barebones and strictly a .3dsx. Over the past few weeks, I’ve been working on turning this into a native-feeling 3DS experience that takes full advantage of the console’s hardware—complete with autostereoscopic 3D, a usable bottom-screen touch interface, and a custom HOME menu banner.

We’re now up to v1.1.0, and I wanted to share the updated build here with the community.
A special shoutout and huge thank you to @CrashMidnick for his continued testing and detailed feedback on the install process and controls.

A huge shoutout and thank you to @bakuDD for his instructions on replacing the in-game music with higher quality versions! As he pointed out in the thread, the mobile BREW MIDI tracks are actually the exact same compositions as the original PC Doom and Doom II songs, and can be replaced with authentic Roland Sound Canvas SC-55 recordings. These versions sound way better and his contribution is much appreciated!

──────
### 📢 Call for Testers: Old 3DS & 2DS Feedback Needed!

A major focus of this v1.1.0 release is the Old 3DS & 2DS Performance Suite (including an internal 200×240 raycaster mode with PICA200 GPU upscaling, flat floor/ceiling options, CPU idle yielding, and 2DS stereo bypass).
However, this has only been tested on a New 3DS.

If you are running an original Old 3DS, 3DS XL, or 2DS, please take v1.1.0 for a spin and report your experience! We would really appreciate feedback on how the frame rate feels on legacy 268 MHz hardware, how smooth exploration and combat are, and whether the [ Auto ] profile or [ Retro (200) ] scaling mode works well on your system.

──────
### ⚠️ Notice for Upgrading Players (From v1.0.0 – v1.0.7):
If you are updating from an earlier release and your Circle Pad (left thumbstick) or newly mapped controls feel unresponsive, your existing saved configuration file (sdmc:/3ds/doomrpg/saves/Config) may still contain the older binding table where secondary slots were unset (-1).

To restore all default controls:

1. In the in-game menu, navigate to Options → Controls / Bindings → Reset Defaults.

2. Alternatively, you can delete or rename sdmc:/3ds/doomrpg/saves/Config on your SD card. (Your save games in saves/ are completely separate and will NOT be lost).

(v1.1.0 includes in-engine auto-migration that backfills missing Circle Pad bindings automatically, but resetting defaults is recommended).

──────
### What’s in this port:

Native HOME Menu CIA & Standalone 3DSX: Custom 3D rotating plaque banner, custom icon, and stereo CWAV shotgun audio stinger.

Hardware Autostereoscopic 3D: Motion-damped stereoscopic 3D on the top screen with adjustable strength presets (Low to Max) and zero-flicker depth-matched particles.

Dynamic Hardware Profiles: Single unified binary that probes console hardware on boot, applying Old 3DS / 2DS vs New 3DS profiles automatically and bypassing stereo 3D on 2DS.

Interactive Touch HUD & Automap: Draggable real-time automap, 10-slot weapon rack with companion progression, passcode keypad, item hotbar, and exploration/secret stats.

Widescreen 360px Layout: Expanded notebook and computer terminal layout utilizing the full 400px top screen width with natural sentence wrapping.

Turbo Mode : Toggleable gameplay acceleration for snappy combat, hold-to-fire attack repeat, 4x projectile velocity, fast doors, and accelerated terminal text.

Native 3DS Controls: Direct analog Circle Pad polling, C-Stick / face button text scrolling, physical weapon switching, and dedicated strafe triggers.

Audio & Visual Polish: Independent Music and SFX volume sliders, Roland SC-55 soundtrack support, restored blood and spark particles, sinusoidal weapon bobbing, and clamshell sleep mode.

──────
### What’s New in v1.1.0:

Universal Single Binary: Boots seamlessly across Old 3DS, 2DS, and New 3DS with automatic hardware profile adaptation.

Old 3DS & 2DS Performance Suite:
• Optional 200×240 internal raycaster mode (Retro 200) with zero-overhead PICA200 GPU upscaling to 400px.
• Floor and ceiling span step DDA math simplification.
• CPU thread yielding (svcSleepThread) during idle tick intervals to save battery and prevent thread starvation.
• 400-entry bottom-screen LUT saving 96,000 divisions per frame, fast SDL_memset clearing, and automap dirty blitting.
• Direct O(1) sound chunk lookup table (chunkLUT) for WAV sound effects.
• Toolchain compilation with -O3 -ffast-math -fomit-frame-pointer -flto.
Widescreen 360px Notebook: Full-width top screen layout with pipe (||) note delimiter parsing to join mobile wrap segments into continuous sentences.

10-Slot Bottom Touchscreen Weapon Rack: Vertical left-side rack (X = 1..37) with ammo counters, direct touch selection, and dynamic Dog Collar (RG) to captured Hound (DG) companion progression.

Turbo Mode 2.0 Enhancements:
• Truncated post-attack recovery from 333ms to 75ms (with instant skip on pressing A).
• Hold-to-fire attack repeat buffering (350ms initial delay, with door/switch safety guard).
• 4x missile projectile speed crossing rooms in 3–4 frames.
• Instant tile snap for off-screen monster turns.
• 2-frame exploration grid steps and 2x door opening animation speed.
• Accelerated typewriter terminal text (5ms/char) with instant touch/button reveal.

Controls Modernization:

• Direct Circle Pad polling via hidCircleRead with deadzone handling.
• C-Stick (Right Nub) smooth scrolling for dialogs, terminals, notebooks, and menus.
• Dedicated X (Next) and Y (Prev) weapon cycling face buttons.
• Contextual message scrolling: X (Down) and Y (Up) during dialogs and computer terminals.
• 100ms hold debounce and corner inset on the [ MENU ] touch button to reject phantom touches.

Visuals & Particles:

• Restored blood and spark particle systems with an optimized symmetric circle rasterizer.
• Sinusoidal weapon bobbing and sway during player movement.
• 3-tier stepped red damage vignette overlay.
• Desynchronized rotation animation phase across gib particles.

Automap & Telemetry:

• Color-coded locked keycard doors (Red, Blue, Yellow, Green).
• Real-time walkable exploration percentage (MAP: xx%) and secret room counter (SEC: x/x).
• 3DS notification LED telemetry (low health pulse, berserk pulse, secret room double-flash).

Memory Stability & I/O:

• Pre-allocated persistent HUD surfaces, eliminating 120 allocations/sec and fixing post-save blackouts.
• Fixed 60 FPS HUD top bar memory leak and added 3.0-second stuck message watchdog timer.
• SD card read retry logic and sector transition checkpoint autosaves.

Options Menu Additions: Dedicated toggles for System Profiles, Render Scaling, Floor/Ceiling textures, 3D Depth, Touch Menu, Hold Fire, Turbo Scope, Typewriter speed, independent Music/SFX volume sliders, and Reset Defaults.

──────
### Controls Reference:

**Physical Buttons:**

**Circle Pad / D-Pad:** Move forward/backward & turn 90° left/right
**L / R Triggers:** Dedicated strafe left / right (step without turning)
**A Button:** Attack / Talk / Use / Confirm (Hold down during combat for auto-attack repeat)
**B Button:** Cancel / Dismiss dialog / Pass turn
**X / Y Buttons:** Next / Previous weapon (during dialogs and computer terminals: X = Scroll Down, Y = Scroll Up)
**ZL / ZR Triggers (New 3DS):** Previous / Next weapon
**C-Stick (Right Nub):** Smooth scrolling for dialogs, computer terminals, notebooks, and menus
**START:** Open in-game pause menu / back • **SELECT:** Recenter automap on player (press again to cycle zoom: 1x -> 2x -> 3x) • **3D Slider:** Adjust stereoscopic 3D depth (3DS models only; bypassed on 2DS)
**Touch Screen:**

**Left Weapon Rack (10 slots):** Tap any weapon badge (AX through BF) to immediately equip. Slot 9 dynamically equips your Dog Collar (RG) or captured Hound companion (DG).

**Bottom Hotbar:** Tap icons to quick-use S.MED, L.MED, SOUL, BRSK, or DOG.
**Automap:** Touch & drag with stylus or finger to pan the map; tap [+] to zoom in, [-] to zoom out, and [CTR] to snap back to the player.

**Combat Turbo:** Tap [ TURBO ] above the automap to toggle speedup on the fly.
**Dialogs & Computer Terminals:** Tap text for instant typewriter page reveal; drag to scroll lines.
**Passcode Keypad:** Tap on-screen digits 0–9, <- (backspace), and OK.
**Top-Bar Touch Buttons:** Tap [ PASS ] to skip a turn, or tap [ MENU ] on the top-right of the lower screen (has a 100ms hold debounce to prevent accidental taps).

──────
### How to Install:

Because Doom RPG is copyrighted by id Software / Bethesda, no game assets or audio files are included in the download. You must supply your own extracted game data.

1. Download DoomRPG-1.1.0.cia (or DoomRPG.3dsx) from the release links below.
2. Install the .cia via FBI, or copy DoomRPG.3dsx into sdmc:/3ds/.

3. Extract your original BREW game assets (from doomrpg.bar using tools like BarToZip).
4. Copy the extracted loose files directly into: sdmc:/3ds/doomrpg/Make sure you include:

• entities.db and help.txt
• Maps: *.bsp
• Graphics: *.bmp
• Tables: wtexels.bin, stexels.bin, bitshapes.bin, palettes.bin, mappings.bin, sintable.bin
5. Copy your audio files into that same folder (sdmc:/3ds/doomrpg/):
• Sound effects as numbered .wav files (5042.wav through 5138.wav).
• Music tracks as numbered .mp3 files (5039.mp3, 5040.mp3, 5043.mp3).
High-Quality Roland SC-55 Music (Recommended):
│ Instead of converting the low-bitrate downmixed BREW .mid files, download the authentic Roland Sound Canvas SC-55 recordings from sc55.duke4.net https://sc55.duke4.net/games.php (huge thanks to @bakuDD for this discovery!):
│ • 5039.mp3 ← d_dead.mp3 (Doom II — The Demon's Dead / Waiting for Romero to Play)
│ • 5040.mp3 ← d_e1m1.mp3 (Doom — At Doom's Gate)
│ • 5043.mp3 ← d_inter.mp3 (Doom — Sweet Little Dead Bunny / Intermission)
│ These recordings sound vastly better on 3DS speakers and headphones than the converted mobile tracks!
6. Launch from the HOME Menu or Homebrew Launcher! Save files will automatically be saved to sdmc:/3ds/doomrpg/saves/.

──────
### Download & Source:

GitHub Release: Doom RPG RE — 3DS v1.1.0 https://github.com/iNdioNicarao/DoomRPG-RE-3DS/releases/tag/v1.1.0
Direct Downloads:

• DoomRPG-1.1.0.cia https://github.com/iNdioNicarao/DoomRPG-RE-3DS/releases/download/v1.1.0/DoomRPG-1.1.0.cia (1.03 MB)

• DoomRPG.3dsx https://github.com/iNdioNicarao/DoomRPG-RE-3DS/releases/download/v1.1.0/DoomRPG.3dsx (1.02 MB)
• DoomRPG-1.1.0-source.zip https://github.com/iNdioNicarao/DoomRPG-RE-3DS/releases/download/v1.1.0/DoomRPG-1.1.0-source.zip (1.59 MB)

Source Repository: https://github.com/iNdioNicarao/DoomRPG-RE-3DS
──────
### Community Feedback Wanted!

I’d love to hear your thoughts! Especially if you are testing on an original 3DS or 2DS:
• How does the frame rate feel on your model? Does [ Retro (200) ] scaling or solid floors/ceilings give you a smooth 60 FPS experience?

• How does the hold-to-fire attack repeat and Turbo 2.0 combat pacing feel during dungeons?
• How does the new 10-slot touchscreen weapon rack and widescreen notebook layout feel during play?
• Any quirks, bugs, or control feedback on your console model.

──────
### Credits:

id Software / Fountainhead Entertainment: For creating the original mobile masterpiece.
GEC Team (Erick194 & contributors): Incredible reverse-engineering work on the BREW binary. • Efim Andreev (efimandreev0): The initial 3DS port base. • Dennis Isaac Gutierrez Zeledon: 3DS CIA build, autostereoscopic 3D, motion damping, touch HUD, automap navigation, and v1.0.1–v1.1.0 enhancements.
Gemini Antigravity (Google DeepMind): AI pair programmer helping with stereoscopic math, touch UI implementation, audio pipeline, and engine debugging.
CrashMidnick: Invaluable community testing, file checklist verification, and input bug reporting (for both this and Descent 1!).
bakuDD: Research identifying that the mobile BREW tracks correspond directly to original Doom/Doom II tracks, and providing the Roland Sound Canvas SC-55 replacement instructions.
 

Attachments

Last edited by indionicarao,
It’s so cool to see Doom RPG gaining more recognition, I never thought I’d see another console running the game besides the Zeebo. (The game was never actually officially released for the Zeebo, but since the Zeebo uses a customized version of Qualcomm BREW 4.0.2, it can actually run some mobile games made for BREW and at a higher resolution, too and Doom RPG was released for both BREW and Java.)

 
  • Like
Reactions: indionicarao
Hey everyone,


Like many of you who remember playing mobile games in the mid-2000s, I’ve always had a soft spot for Doom RPG. When the GEC team managed to reverse-engineer it for PC and Efim Andreev started an initial 3DS port last year, I was thrilled to see it running on handheld hardware.

However, the original port was fairly barebones and primarily aimed at running as a .3dsx. I wanted to turn this into a native-feeling 3DS experience that takes genuine advantage of the console’s hardware—complete with autostereoscopic 3D, a usable bottom-screen touch interface, and a proper HOME menu banner.

Over the last few weeks, I’ve put together several updates (now up to v1.0.6), and I wanted to share the build here with the community.


──────


### What’s in this build:


Native Home Menu CIA & 3DSX: Comes with a custom 3D rotating banner (this part needs the most work if anyone wants to contribute), custom icon, and a proper audio stinger.


Autostereoscopic 3D: Full hardware stereoscopic 3D using the physical slider on both the original and New 3DS.

Motion Damping: One problem with turn-based grid movement in 3D is that stepping forward causes harsh visual shearing. Depth is dynamically eased during steps and recovers when you land, keeping eye strain to a minimum.

Stereo Particles: Blood splatters, sparks, and explosion particles render to both eye buffers with proper depth separation so they don't flicker.

In-game Multiplier: You can adjust stereo intensity in the pause menu (Low, Normal, High, Max) to match your comfort level.

Bottom Screen Touch HUD & Automap:

• The automap tracks the player in real time.

• You can touch-and-drag the map with your stylus or finger to look around the level, with [+] zoom in, [-] zoom out, and [O] / player-arrow tap to snap back.

• Quick-access hotbar slots for medkits, armor, and dog collars (grayed out when empty, with tactile feedback if tapped).

• On-screen keypad for typing door passcodes without cycling buttons.

Combat Turbo toggle: Tapping [ TURBO ] next to the map controls speeds up enemy turn pauses and projectile animations if you want faster battles.


Visual & Audio Polish:

• Cutscenes, story pages, and splash screens are scaled 2x so they don’t look like tiny postage stamps on the top screen.

• Textured floors and ceilings are on by default.

• In-game toggle between Crisp (nearest neighbor pixel art) and Smooth (linear filtering).

• Background music streams as MP3 via libmad with low memory overhead.

• Closing the 3DS clam-shell immediately suspends audio and puts the console into low-power sleep.



──────
### How to Install:


Because Doom RPG is copyrighted by id Software / Bethesda, no game assets or audio files are included in the download. You will need to provide your own extracted game data.


1. Download DoomRPG-1.0.6.cia (or DoomRPG.3dsx) from the GitHub release page.

2. Install the .cia using FBI (or drop .3dsx in /3ds/DoomRPG/).

3. Obtain your copy of the original mobile game files (from the BREW doomrpg.bar container; tools like BarToZip or similar will extract the loose files).

4. Put the extracted assets directly into the following folder on your SD card:

sdmc:/3ds/doomrpg/


(Files should sit loose inside that folder: *.bmp, *.bsp, wtexels.bin, stexels.bin, etc.)


5. Place audio files alongside them in the same folder:

• Sound effects as numbered .wav files (5042.wav through 5138.wav).

• Music tracks as numbered .mp3 files (5039.mp3, 5040.mp3, 5043.mp3).

6. Launch from the HOME Menu! Save files will automatically be stored under sdmc:/3ds/doomrpg/saves/.


──────


### Download & Source Code:


GitHub Repository: https://github.com/iNdioNicarao/DoomRPG-RE-3DS

Latest Release (v1.0.6): GitHub Releases https://github.com/iNdioNicarao/DoomRPG-RE-3DS/releases/tag/v1.0.6


──────


### Credits:


id Software / Fountainhead Entertainment: The original game.

GEC Team (Erick194 & contributors): Incredible work reverse-engineering the BREW binary.

Efim Andreev (efimandreev0): The initial 3DS port base.

Dennis Isaac Gutierrez Zeledon: 1.0.1–v1.0.6 enhancements.

Gemini Antigravity (Google DeepMind): AI coding partner for the stereoscopic 3D implementation, Touch HUD / automap controls, 3D banner, and engine enhancements across v1.0.3–v1.0.6.


Give it a spin if you have a 3DS lying around! If you run into any weird crashes or glitches, please let me know here or open an issue on GitHub.
Many Thanks for this new port ! It seems to work great.

Please note that your install instructions are missing the following info :

- needed files (on top of those already listed) : entities.db and help.txt
- music files come as .mid. You need to convert them to mp3.
- the 3dsx file cannot create the sdmc:/3ds/doomrpg/Saves folder. Only the CIA can. So for those who want to use only the 3dsx, you need to install and launch the CIA first and then delete it.
"6. Launch from the HOME Menu! Save files will automatically be stored under sdmc:/3ds/doomrpg/saves/." Maybe add the info here (3dsx will not create this folder and files).

EDIT : backward with the circle pad does not work on my side (with Dpad it is OK).
 
Last edited by CrashMidnick,
  • Like
Reactions: indionicarao
It’s so cool to see Doom RPG gaining more recognition, I never thought I’d see another console running the game besides the Zeebo. (The game was never actually officially released for the Zeebo, but since the Zeebo uses a customized version of Qualcomm BREW 4.0.2, it can actually run some mobile games made for BREW and at a higher resolution, too and Doom RPG was released for both BREW and Java.)


Dont think I've heard of the Zeebo! Thanks for sharig this!
 
  • Like
Reactions: Moon164
This ports targets new 3ds? I tried running the CIA on a regular 2ds and it struggles to run it. Not to mention the controls, we don't have ZL and ZR so I rebinded next weapon and prev weapon to X and Y
 
  • Like
Reactions: indionicarao
This ports targets new 3ds? I tried running the CIA on a regular 2ds and it struggles to run it. Not to mention the controls, we don't have ZL and ZR so I rebinded next weapon and prev weapon to X and Y
Yes it does, the New 3DS and New 2DS are the main targets. I will see what adjustments can be made to squeeze out some more juice from it by allowing players to select flat color ceilings and floors and maybe lowering the internal rendering resolution and using GPU scaling to scale it back up... im really not sure how much better it will be but I will give it a shot. Thanks for the feedback!
 
I played the 3 midi files on my sc55 and they are pretty much the exact same tracks as regular Doom, just downmixed and with some instruments missing. So instead of converting you might as well just download better quality music from the original game directly.
5039.mid = d_dead.mp3 (Doom II)
5040.mid = d_e1m1.mp3
5043.mid = d_inter.mp3
You can dl them here https://sc55.duke4.net/games.php
 
  • Like
Reactions: indionicarao
This ports targets new 3ds? I tried running the CIA on a regular 2ds and it struggles to run it. Not to mention the controls, we don't have ZL and ZR so I rebinded next weapon and prev weapon to X and Y
Hey there, would love to hear if the latest changes made a difference to how well the game runs on your device!
Post automatically merged:

I played the 3 midi files on my sc55 and they are pretty much the exact same tracks as regular Doom, just downmixed and with some instruments missing. So instead of converting you might as well just download better quality music from the original game directly.
5039.mid = d_dead.mp3 (Doom II)
5040.mid = d_e1m1.mp3
5043.mid = d_inter.mp3
You can dl them here https://sc55.duke4.net/games.php
These sound way better! Thanks for sharing!
 

Site & Scene News

Popular threads in this forum