Still Thinking: How Reicast Carried Dreamcast Emulation to Phones — and Handed It to Flycast
Features

Still Thinking: How Reicast Carried Dreamcast Emulation to Phones — and Handed It to Flycast

Sega’s last console refuses to stay in the past. The Dreamcast launched in Japan on 27 November 1998 and in North America on 9 September 1999 — the famous 9/9/99 date — under the slogan “It’s thinking…” The hardware was discontinued in 2001, yet its games never really left. They survived on original discs, on fan servers, in arcade cabinets, and, crucially, inside emulators. Of all those emulators, few matter more to that survival story than Reicast: not always the most accurate, not always the easiest to love, but the project that carried Dreamcast emulation out of the desktop-only era, onto phones, and then handed the whole thing on to Flycast, the emulator most players should be using today.

This is not a story about a single program staying perfect for a decade. It is a story about code that kept moving — from NullDC to Reicast to Flycast — each generation fixing problems the previous one could not, and each generation proving the same point: the Dreamcast was unusually hard to emulate for very specific reasons, and unusually rewarding to emulate for exactly the same reasons.

Before Reicast: the first wave

Dreamcast emulation began almost while the console was still commercially alive. Chankast caused a sensation in 2004 because it could boot commercial games at a time when many people assumed Sega’s hardware was too custom and too powerful for ordinary PCs. It was fast, fragile and quickly left behind, but it established an appetite. Demul and Makaron followed with more serious compatibility, particularly for demanding titles and for Sega’s arcade relatives, while remaining firmly Windows-centric and, for most players, fiddly to configure.

The turning point was NullDC, first released in public beta form in 2007. Developed principally by the coder known as drkIIRaziel — also credited as skmp — working with ZeZu and a wider circle of contributors, NullDC ran a large part of the library at convincing speed on the mid-range PCs of its day. Just as importantly, it was open source. That decision, more than any single compatibility breakthrough, is why we are still talking about this lineage now. Closed emulators tend to die with their authors’ interest. Open code can be picked up, reworked and redirected when tastes and hardware change — and hardware was about to change completely.

Crazy Taxi gameplay on Dreamcast, the yellow cab drifting through a busy city street
Crazy Taxi became a standard emulation test: fast, colourful, full of transparency and traffic — and merciless on weak graphics emulation.

A fork with a phone in mind

By the early 2010s the interesting question was no longer whether a gaming PC could imitate a Dreamcast. It was whether the computer in your pocket could. Smartphones and tablets had capable multi-core processors and graphics chips, but nothing like the thermal headroom or driver maturity of a desktop. Reicast was the answer its creators gave to that question: a fork of NullDC and its mobile sibling NullDCe, rebuilt with portability as the headline goal.

The core team was small. Code came overwhelmingly from drkIIRaziel, while PsyMan handled the unglamorous work that makes an emulator actually usable — debugging, testing and everything else, in the project’s own self-deprecating summary — with smaller contributions from others, including gb_away. The project described itself cheerfully as developer-oriented and its source as a mess; dragons, one version of the readme warned, might eat your cat. That honesty was part of the charm. Reicast was never a polished retail product. It was a working tool, built in the open, from Greece for the most part, and released for Android, Windows and Linux, with ports and builds later reaching platforms as unlikely as Nintendo Switch and PlayStation 4.

Its first public impact, in late 2013, was genuinely startling. Games that had needed a respectable desktop now ran on Android hardware. Sonic Adventure, Crazy Taxi, Soulcalibur, Jet Set Radio — suddenly these were not screenshots in a compatibility list, they were playable on a phone, with a touchscreen if you were desperate and a Bluetooth controller if you were sensible. The final standalone Reicast release, r20.04, arrived in 2020, and active development wound down around 2021. Judged only on those dates, Reicast looks like a seven-year project. Judged on what it made possible, it is the bridge between two eras.

Why the Dreamcast fought back

To understand why that bridge took so long to build, you have to look inside the white box. The Dreamcast pairs a Hitachi SH-4 processor running at 200MHz with 16MB of main memory, a PowerVR2 graphics processor at 100MHz backed by 8MB of video memory, and a Yamaha AICA audio system built around a 32-bit ARM7 core with 2MB of its own sound memory and 64 voices. On paper those numbers look modest now. In emulation, raw clock speed is rarely the problem. Architecture is.

Start with the SH-4. It is a superscalar RISC design with a powerful floating-point unit that Dreamcast games leaned on heavily for 3D maths. Emulating it slowly, instruction by instruction, wastes that power; emulating it quickly means dynamic recompilation — translating blocks of SH-4 code into native code for the host processor while the game runs, caching them, and invalidating them correctly when games do the tricks games always do. Get the timing, interrupts or floating-point edge cases slightly wrong and you do not get a slightly wrong game. You get a hang, a corrupted replay, or a boss who never spawns.

Then there is the PowerVR2, the single biggest reason Dreamcast graphics took years to get right. Modern graphics processors, and the APIs that drive them, broadly expect triangles to be drawn in order, front to back as submitted. PowerVR instead uses tile-based deferred rendering: the screen is split into small tiles, geometry is sorted into those tiles, and only the visible pixels are shaded. It was a brilliant, efficient design for 1998 hardware, and a deeply awkward one to map onto OpenGL or Vulkan two decades later. Transparency exposes the mismatch most painfully. The Dreamcast could produce correct results for overlapping transparent objects in ways a conventional renderer simply does not, which is why so many early emulator screenshots feature smoke, water, glass and shadows in entirely the wrong order. Doing it properly — per-pixel order-independent transparency — eventually became possible, but it demanded OpenGL 4.3-class hardware and serious engineering.

Shenmue gameplay screenshot showing Ryo Hazuki exploring a detailed Japanese street
Shenmue pushed every subsystem at once — streaming streets, voices, weather and a living clock — making it a stern test for any emulator.

Sound was a third project hiding inside the first two. The AICA is not a simple beep generator you can approximate and forget; it is effectively a small computer of its own, with its own processor, a digital signal processor and dozens of channels that games synchronise against. Approximate it and music drifts, effects arrive late, or cutscenes fall out of step. Add the GD-ROM drive with its high-density disc format, the Visual Memory Unit with its own tiny screen and games, the modem and broadband adaptor, and controllers ranging from fishing rods to light guns to the Twin Stick, and “Dreamcast compatible” turns out to be a very large promise.

Finally, there was the Windows CE problem. Microsoft collaborated with Sega on the console, and a minority of games were built on a tailored version of Windows CE with DirectX rather than Sega’s native libraries. Those titles need full memory-management-unit support — the SH-4’s address translation machinery — which native games mostly bypass and early emulators therefore mostly skipped. Without an MMU, games such as Sega Rally 2, Armada and the Dreamcast port of Half-Life simply lived in a different, unreachable category. For years, “except the Windows CE games” was the footnote under every compatibility claim.

Why it was worth the trouble

And yet, for a difficult machine, the Dreamcast is also a kind one. Its library is heavily 60-frames-per-second, cleanly rendered at 640×480, and blessed with VGA output that means its games scale beautifully to modern displays instead of fighting them. Its hardware was well documented by homebrew developers, not least through the KallistiOS development environment, which kept independent coding alive long after Sega left. Its arcade siblings — NAOMI, NAOMI 2 and Sammy’s Atomiswave, all built on closely related technology — meant every improvement to Dreamcast emulation unlocked arcade history at the same time. Fix the SH-4 core properly, and you have not saved one console. You have saved an ecosystem.

Reicast’s developers understood the audience for that ecosystem had moved. Their trade was explicit, even if it frustrated purists: cut some accuracy corners inherited-proof code could not afford on mobile chips, chase speed, get games playable on the devices people actually owned. Advancing phone hardware should eventually have allowed those shortcuts to be removed again. In practice, a tiny team ran out of hours, and the codebase sat largely untouched for long stretches. That stall, not any fatal flaw, is what set up the next fork.

A Sega Dreamcast console with its distinctive swirl logo and controller
The hardware itself: a 200MHz SH-4, PowerVR2 graphics and Yamaha AICA sound in one small, loud, much-loved box.

From Reicast to Flycast

The rescue came through RetroArch. In 2018 the libretro project introduced updated Reicast cores, including a version built around a reworked renderer contributed by developer flyinghead, supporting proper order-independent transparency on capable hardware alongside a lighter build for mobile and mid-range PCs. That October the variants merged into a single core. In 2019 the core was briefly renamed Beetle DC and then, for licensing reasons, Flycast. What began as backporting improvements into a dormant project became, in effect, a succession.

Flycast, maintained by flyinghead, took the Reicast foundation and attacked precisely the list of compromises its predecessor had been forced to make. Graphics, input, system timing and VMU handling were all substantially improved. Full MMU support brought the Windows CE catalogue into reach. NAOMI, NAOMI 2, Atomiswave and System SP arcade emulation matured alongside the console side. Support arrived for MAME’s CHD disc format, for Vulkan rendering, for high-resolution upscaling and widescreen patches, for RetroAchievements, and for online play — first through community Dreamcast servers, and now through DCNet, the free service that reconnects modem games without original hardware. A built-in high-level replacement BIOS, reios, means a dumped console BIOS is recommended for the best compatibility rather than strictly required for Dreamcast games. Releases kept coming at a pace Reicast never managed in its later years: version 2.5 in May 2025, 2.6 in January 2026 and 2.7 in August 2026, spanning Windows, Linux, macOS, Android and Switch, standalone and as a RetroArch core.

Where Dreamcast emulation stands now

Players arriving today are spoiled, and it is worth saying plainly how unusual that is. Flycast is the default recommendation for most people: free, open source, actively developed, and compatible with the overwhelming majority of the library, Windows CE titles included. Redream offers a credible alternative philosophy — closed source, deliberately simple to set up, no BIOS required, with a premium tier for higher resolutions — and lists around 96 per cent of the library as playable. Demul remains of historical and specialist interest on Windows but is no longer the place to start. Experiments continue at the edges, including a 2026 browser-based Flycast build using a custom SH-4-to-WebAssembly compiler to reach full speed at native resolution, which would have sounded like fantasy in the Chankast years.

The honest caveats are smaller than they used to be, but they exist. A handful of games still show audio stutter, rendering quirks or timing oddities. Light-gun, fishing and other exotic peripherals are better served on some setups than others. And emulation still asks something of the user: use disc images dumped from games you own, expect CHD to be the tidy modern format, and treat any site promising a one-click library with the suspicion it deserves. None of that diminishes the headline. A console that sold for barely two years can now be played, upscaled, networked and preserved on almost anything with a screen.

The verdict on Reicast

So how should history grade the emulator in the middle of that chain? Not as a footnote, and not as a finished masterpiece. Reicast’s achievement was directional. NullDC proved a PC could do it; Reicast proved the code did not have to stay on a PC. It took Dreamcast emulation to Android at the moment Android became the world’s default gaming device, kept the source open when it would have been easier to let it lapse, and left behind exactly the foundation a more sustained project needed. Every Flycast session today is, in a real technical sense, a Reicast session that kept going — and behind that, a NullDC session from 2007.

There is a fitting symmetry in that. The Dreamcast itself was Sega thinking past its own short commercial life: online play, downloadable content and arcade-perfect conversions before the market was ready to reward any of them. It took a chain of volunteer coders, passing one codebase hand to hand for nearly twenty years, to make sure the thinking did not stop. Reicast was the hand in the middle — and the library is still playable because it reached out.

At a glance: Reicast (2013–2021) — open-source Dreamcast emulator for Android, Windows and Linux, forked from NullDC, superseded by Flycast. Use today: Flycast, standalone or via RetroArch, with your own game dumps in CHD, GDI, CDI or CUE format.

One email a week: the best new articles, hidden gems, and zero spam. Insert coin to continue.

Join the discussion

Your email address will not be published. Required fields are marked *