I built the Nokia DCT3 (3310) emulator I wanted as a teenager — now with J2ME support

I built the Nokia DCT3 (3310) emulator I wanted as a teenager — now with J2ME support

I was pretty active in the early DCT3 scene around 2003–2006 under the name spaceimpact33. That scene is what got me into programming as a teenager.

I started with VB6, which gave me far more confidence than competence, before deciding to jump into ARM assembly and C. That was a brutal reality check for a 15-year-old, but eventually it clicked. I spent years writing NokiX patches and modding DCT3 firmware.

Looking back, that hobby became my career in commercial systems.

Back then I always wanted a DCT3 emulator for the PC. It never existed. Twenty years later, I finally made it.

Unashamedly built with AI and it’s not perfect by any stretch of the imagination. So certainly I’m not going to pretend I hand-coded the whole thing. AI let me focus on the hard problems instead of grinding through implementation. The project still draws heavily on what I learned in the old scene and on the work of the early DCT3 reverse engineering pioneers.

Here in Australia, 2G has been gone for years, so keeping these phones alive is harder than simply putting one back into daily use. Part of the motivation was preserving that experience and making it accessible again.

Current features:

- Runs in the browser on desktop and mobile and native SDL harness
- Boots and runs the 3310, 3330, 3350, 3410, 5110, 5210 and 7110
- Emulates the LCD, keypad, LEDs, buzzer and keypad tones
- 3410 J2ME support with JAR/JAD sideloading
- Runs built-in and J2ME games
- Faithful hardware emulation rather than ROM patching
- No network (SMS, Calling, CSD). Yet!

Try it: https://retro-phone.com

Source and contributions: https://github.com/djr-747/nokia-dct3-emulator

Happy to answer questions and take feature requests. If anyone from the old DCT3 scene is still around, it’d be great to hear from you.

Dan

u/747djr — 1 month ago
▲ 13 r/HomeComp+1 crossposts

Nokia DCT3 (3310/3410/5210) emulator — MAD2 ARM + TI C54x DSP, native and running in the browser

Emulating the DCT3 generation of Nokia phones — the MAD2 chipset that powered the 3310, 3410, 5210 and friends. As far as I know nobody’s done a full-boot emulator for these before, so most of it had to be worked out from firmware disassembly and old scene documentation from the 2000s modding community (NokiX era — I was part of that scene as a teenager (screen name spaceimpact33), which is where the domain knowledge comes from).
There are two tracks to this: what’s live in the browser today, and hardware-in-the-loop work that currently only runs in a native harness.

In the browser (what you can try now):
ARM7TDMI core borrowed from mGBA, wrapped with the MAD2 memory map and peripherals. One catch: mGBA’s core is little-endian (GBA), while the MAD2 runs the ARM in big-endian mode — so the core needed byte-order handling throughout the memory interface to run Nokia firmware

The DSP is HLE’d. MAD2 pairs the ARM MCU with a TI C54x DSP, and firmware won’t boot without it responding correctly. The HLE is good enough to get real firmware through boot and into normal operation, though I wouldn’t claim it’s faithful beyond what firmware actually exercises

The SIM interface is emulated at the UART level — MAD2 talks to the SIM over its hardware UART, and the emulator presents as a real SIM, characterised by capturing the exchanges from an actual card

Compiles to WASM, works on mobile

Currently booting: 3310, 3410 (with J2ME), 8210, 8250, 8850/8855, 5210, 5110, 6110. The 6210/3210/7110 don’t boot yet.

Native harness only (not in the browser yet):
True C54x co-emulation using the DSP ROM4 mask ROM, which has been dumped from a 5110 (ROM6 hasn’t been dumped — hence the HLE path above). ROM4 boots with the DSP genuinely alive: keypress tones are produced by the DSP’s oscillators driving PCM output, not faked. The open problem is timing — the DSP ran at roughly 4x the ARM core clock, and getting the co-emulation timing right is impacting tone sound quality.
Dumping ROM v6 is proving difficult, TI and Nokia protected the lower mask rom from reading.

An ESP32-based SIM bridge that pipes SIM comms from the emulator to a physical SIM card, so firmware can talk to a real card

A DSP bridge (WIP) that lets the emulator drive the real DSP in a real phone — commands go over MBUS to a custom MADos build running on the handset. It works, but as you’d imagine over 9600 baud, it’s glacially slow

Honest disclosure: a lot of the implementation was AI-assisted. It’s a passion project with zero commercial value and I don’t have unlimited hours, so I used the tools that let me actually finish it. The reverse engineering and architecture calls are where the real work was.

Live: https://retro-phone.com

Source: https://github.com/djr-747/nokia-dct3-emulator

reddit.com
u/747djr — 1 month ago

I built the Nokia DCT3 emulator I wanted as a teenager, 20 years too late

I was pretty active in the early DCT3 scene around 2003–2006 under the name spaceimpact33. That scene is basically what got me into computing — I had a false start trying to learn VB6, then jumped into ARM assembly way before I was ready for it. Eventually it clicked, and I spent years modding my phones with NokiX and writing my own patches.

Back then I always wanted a DCT3 emulator that ran on the PC. It never existed. Twenty years later I’ve finally built it.

Unashamedly built with AI. I’m not going to pretend I have endless hours to pour into a passion project with little to no commercial value — AI is the only reason this exists instead of sitting half-finished on a hard drive.

It stands on the shoulders of the early DCT3 reverse engineering pioneers, uses mGBA’s ARM core, and mixes in a fair bit of my own knowledge from the old scene.

It runs in the browser (works on mobile too) and does a faithful full boot. The 3310, 3410 (J2ME), 5210 and a few others boot and run, games included.

Try it: https://retro-phone.com

Source and contributions welcome: https://github.com/djr-747/nokia-dct3-emulator

Happy to answer questions about the internals.
If anyone from the old scene is still around, would be good to hear from you.

reddit.com
u/747djr — 1 month ago