Dreamcast Architecture

A practical analysis by Rodrigo Copetti

Classic edition - Last updated: 1 August 2026

Languages available: English, Polski, Magyar, Türkçe, 简体字, Русский, Add translation


About this edition

The 'classic' edition is an alternative version to the 'modern' counterpart. It doesn't require Javascript, state-of-the-art CSS or convoluted HTML to work, which makes it ideal for readers who use accessibility tools. On the other hand, paper/eBook users can now check the book editions. Alternatively, if you use legacy browsers, try the 'blink' edition instead.

This edition is identical content-wise. However, interactive widgets have been simplified to work with pure HTML, though these will offer an link to the original article in case the reader wants to try the 'full version'.

As always, this article is available on Github to enable readers to report mistakes or propose changes. There's also a supporting reading list available to help understand the series. The author also accepts donations and translations to help improve the quality of current articles and upcoming ones.


Table of Contents

  1. Supporting imagery
  2. Introduction
  3. CPU
    1. The offering
      1. Special work
      2. Main memory
      3. Customised access
      4. Large package deliveries
    2. No UMA but…
    3. End of the line
  4. Graphics
    1. Organising the content
    2. Architecture
    3. Construction
      1. Tile Accelerator
      2. PowerVR2 Core
    4. The big picture
    5. Gaining detail
    6. Video Modes
  5. Audio
    1. The great leap
      1. Behind the scenes
    2. Staying alive
  6. Operating System
    1. Boot process
    2. Interactive shell
    3. Windows CE
  7. I/O
    1. External connections
  8. Games
    1. A familiar, but denser, medium
      1. The bonus format
    2. The ambitious online platform
      1. A thriving restoration community
    3. The interactive Memory Card
  9. Anti-Piracy & Homebrew
    1. The painful defeat
      1. A lesson for the future
  10. That’s all folks
  11. Copyright and permissions
  12. Sources / Keep Reading
  13. Contributing
  14. Changelog

Supporting imagery

Models

Model
The Dreamcast.
Released on 27/11/1998 in Japan, 09/09/1999 in America and 14/10/1999 in Europe.

Motherboard

Motherboard
Motherboard
Showing revision 'VA1'.
While the official docs state that the system contains 128 KB of flash memory, this motherboard happens to include a 256 KB EEPROM chip for some reason instead.
The battery and controller ports are found on a daughterboard called 'Front panel'.
Motherboard
Motherboard with important parts labelled

Diagram

Diagram
Main architecture diagram
Important data buses are labelled with their width and speed.

Introduction

The Sega Dreamcast introduced many new features over its predecessor (the Saturn) to appeal to both game developers and console gamers. While this was Sega’s last attempt to conquer the console market, some of the technologies that were pioneered in the Dreamcast carried on into future mainstream devices.


CPU

Things were progressing smoothly for Hitachi; their iconic SuperH chips had found multiple clients, and the company was now ready for a fourth instalment of the series. Their new entry would combine embedded capabilities with functionality enjoyed by 3D games.

Sega, being one of the early adopters of the SuperH, unsurprisingly selected Hitachi’s latest shipment to power their new console. Hence, the Dreamcast carries an SH-4 CPU running at a whopping 200 MHz [1]. Also, to address previous shortcomings, there’s only one fully equipped CPU.

The offering

That being said, what’s interesting about this new processor?

Well, to start with, the SH-4 serves as a superset of the previous models, meaning it inherits all the existing features of the SuperH line, including a 32-bit RISC architecture, a 5-stage pipeline, and a 16-bit instruction set. Alas, it also inherits control hazards.

Image
The SH-4 chip.

On top of that, as the next-generation CPU, it debuts many improvements that extend beyond the scope of embedded applications [2]:

Special work

Common chores of a game-console CPU include handling the game’s logic, running the enemy AI, and keeping the GPU fed with drawing tasks.

With the Dreamcast, you will see that the GPU only covers the tasks of a rasteriser. So, the CPU must get involved with the majority of the graphics pipeline. This means the CPU will be processing vast amounts of geometry data (such as computing animations and perspective transformations). Now, to ensure the CPU can sustain this role, Sega and Hitachi collaborated to incorporate two crucial extras into the SH-4.

The first addition is a dedicated 64-bit Floating-Point Unit (FPU). This component computes 32-bit decimal numbers (the so-called ‘single-precision’ or ‘floats’) or 64-bit ones (the ‘double-precision’ or ‘doubles’ type) in accordance with the IEEE-754 standard. Its register file is made of thirty-two 32-bit registers, but they can also be combined into a different group of sixteen 64-bit registers; this is what enables the unit to operate on doubles.

If that wasn’t enough, Hitachi took a step forward with the FPU and implemented extra logic to form another register group, this time made of eight 128-bit registers. In it, each register now stores four 32-bit floats or, in other words, 128-bit vectors. This format is optimal for graphics-related operations.

To make good use of the new vectors, the FPU includes specialised instructions for operating on them, much like those provided by the Saturn Control Unit, except the industry is now a bit more standardised. These new instructions constitute what is often known as Single Instruction Multiple Data (SIMD) and may perform the following algebraic operations:

The second addition is the SH-4’s external bus, which is now 64-bit wide, enabling the CPU to transfer pairs of 32-bit values at the same time. This is another improvement that adds up to the overall performance of this CPU.

Main memory

The Dreamcast houses 16 MB of Synchronous DRAM (SDRAM), and it’s directly connected to the CPU using a 100 MHz bus (half the CPU speed).

Image
Main memory layout.

Conversely, the memory’s data bus is only 32 bits wide [4]. Does this mean the CPU’s shiny 64-bit bus is wasted? No, because the RAM is arranged as two 8 MB banks, with each chip connected to half of the CPU’s bus lines.

Customised access

To access this memory, the CPU allocates a 29-bit physical address space together with a Memory Management Unit (MMU) to provide 32-bit virtual addressing [5]. Additionally, thanks to the inclusion of a Translation Lookaside Buffer (TLB), programmers can use 32-bit addresses without incurring performance penalties.

Now, since only 29 bits are used to access memory, the remaining three bits are leveraged to provide memory protection, alter the memory map, and bypass the cache [6] [7].

Ultimately, programmers may decide whether to use these features. Games for this system certainly don’t require memory protection, and the MMU must be manually enabled during boot.

Large package deliveries

When it comes to transferring large amounts of data to, let’s say, feed the graphics chip with geometry, the SH-4’s mov.l instruction can only operate up to 32-bit chunks (the size of the CPU’s main registers) at a time. This means that wide blocks would require many individual mov.l calls. Consequently, the memory bus would be congested with unnecessary overhead.

Sega previously alleviated this with the Saturn Control Unit. Now, with the Dreamcast, the same CPU can additionally perform memory transfers using burst transactions: the SH-4 houses a 32-byte queue that can be filled with data, and then commit as a single big transfer [8]. Nevertheless, the programmer is in charge of filling the queue, assigning the destination, and triggering the exchange.

Moreover, to avoid stalling the CPU while the queue is being transmitted, a second one is available to alternate.

All in all, this is very similar to the traditional Direct Memory Access (DMA) model - which the Dreamcast also features. However, burst transactions are simpler to operate albeit less versatile (the queues can only write data from the CPU to the outside). This console’s DMA controller, on the other hand, supports variable-length transfers, multiple data sizes, and provides four channels for parallel operations (with many restrictions) [9].

No UMA but…

While this system is not built around the strict Unified Memory Architecture (UMA) like a well-known competitor, it does delegate I/O access to the GPU. This implies that whenever the CPU has to fetch anything beyond its dedicated RAM or the serial interface (which is also connected), it must issue a request to the GPU and wait if necessary.

The CPU also provides a unique functionality called Parallel Input/Output (PIO). It’s used to manipulate multiple I/O locations at the same time. Sega wired these pins so that the CPU can control the GPU’s video mode - I explain more details in the ‘Graphics’ section.

End of the line

Even with all the advantages described, I’m afraid the SuperH series didn’t progress significantly after its last major adopter, the Dreamcast, left the stores. Following the popularity of the SH-4, Hitachi (and later Renesas Electronics, the current owners) were unable to replicate the same level of success, and considering the embedded/handheld market has since favoured ARM (thanks to StrongARM), I don’t see Renesas continuing Hitachi’s invention anytime soon.

The encouraging aspect of computing, however, is that technological progress often spreads beyond the boundaries of individual brands and companies. For instance, the SH’s compressed-instruction technique lives on ARM’s Thumb mode (a secondary 16-bit instruction set) [10]. Furthermore, in 2012, a volunteer-driven initiative began work on a modern, SuperH-compatible CPU, called the ‘J2’ [11].


Graphics

The GPU package is a custom-made chip called Holly running at 100 MHz. Unlike previous in-house designs, Sega partnered with VideoLogic (now known as Imagination Technologies) to provide them with a competitive 3D accelerator.

Image
The Holly chip (after removing the thermal pads) and the video encoder.

Inside Holly, we can find VideoLogic’s exclusive graphics circuit: the PowerVR2 (also referred to as PowerVR Series2 and CLX2). It’s based on their earlier PowerVR GPUs but specifically tailored for the Dreamcast.

Organising the content

8 MB of Video RAM (VRAM) are provided to store the materials that Holly needs to draw on the screen (e.g. textures, frame-buffers, commands, etc.) [12]. The block is installed as four SDRAM chips using a 64-bit bus.

Image
Architecture of Holly.

This memory is only accessed by Holly; the CPU fills it by talking to Holly or the Direct Memory Access (DMA) unit.

Architecture

VideoLogic chose an alternative approach to the construction of their 3D engine called Tile-Based Deferred Rendering (TBDR).

Instead of rendering a whole frame at once, as traditional Immediate Mode Renderers (IMRs) do [13], TBDR divides the rendering area into multiple sections called ‘tiles’. It then carries out the rendering process on each tile individually, and the results are combined to form the final frame [14].

Image
Sonic Adventure (1999).

This innovative design brings interesting advantages:

It’s no surprise that Imagination took this efficient technology forward to build the Series 4 PowerVR cores, which powered a remarkable number of devices, including the first-generation iPhone, the Nokia N95, and the Dell Axim x51.

Construction

Let’s take a look at the two main components of the Dreamcast’s GPU [15]:

Tile Accelerator

Image
Architecture of the Tile Accelerator.

Before the rendering process begins, a component known as the Tile Accelerator (TA) performs pre-processing. It starts by allocating several 32x32 tile bins into which the geometry will be rendered.

Then, the Tile Accelerator:

  1. Grabs the geometry data and drawing commands issued by the CPU.
  2. Converts this data into an ‘internal’ format.
  3. Distributes the geometry to each bin according to its coordinates, discarding any clipped geometry.
  4. Generates the Display Lists, which instruct the subsequent components on how and where to draw the geometry.

The resulting Display Lists are then interpreted by the 3D engine: The PowerVR2.

PowerVR2 Core

Image
Architecture of the PowerVR2 Core.

Here is where the graphics are brought to life. The Display Lists received from the TA tell the core to render the geometry of a single tile using an internal frame-buffer. The process is as follows:

  1. The Image Synthesis Processor (ISP) fetches the primitives (either triangles or quads) and performs Hidden-Surface Removal to remove unseen polygons. Then, after calculating its Z-buffers and stencil buffers, the data goes through Depth Testing to avoid rendering polygons that would appear behind others, and Stencil Tests to cull geometry that won’t be visible if it lies behind a 2D polygon (also called Mask).
    • Notice how these tests are effectively carried out at the start of the pipeline. In contrast, previous consoles using late z-buffering discard the geometry at the end of the pipeline. The ISP approach prevents processing the geometry that will ultimately be discarded [16], thereby saving resources.
  2. The Texture and Shading Processor (TSP) applies colouring, shading, and multiple effects across the tile area.
    • Textures are not applied until the tile is exported, meaning that emerging overdraw (if any) will not reduce the fill rate.

Once the operation is complete, the rendered tile is written to the main frame-buffer in VRAM. This process is repeated until all tiles have been rendered. When the full frame is ready, the resulting frame-buffer is picked up by Holly and passed on to the Video encoder, which sends it through the standard video signal.

The big picture

Apart from the clear architectural difference, the Texture and Shading Processor comes with many capabilities that highlight the substantial leap this console makes over the old Saturn. Here are some notable examples:

Gaining detail

Holly can now draw roughly ten times more polygons than its predecessor. Here’s a Before & After example that shows how model designs are no longer as constrained. I encourage you to take a closer look at them!

3D model 3D model 3D model Interactive model available in the modern edition
Sonic R (1997) for the Saturn.
286 triangles (or 185 quadrilaterals).
3D model 3D model 3D model Interactive model available in the modern edition
Sonic Adventure (1999) for the Dreamcast.
1001 triangles.

Video Modes

The video system was designed to support multiple types of screens and formats. Thus, the video encoder outputs from a unified socket that carries the following signal types:

Now, the Dreamcast can’t encode all of these formats at the same time, so both the GPU and the audio processor contain a register named Image Mode. This coordinates which video and audio buses are activated to generate the requested output signal. The CPU detects the type of cable inserted by checking which ‘select bits’ on the video connector are active, then writes the appropriate values to the GPU. Finally, these values are forwarded to the audio processor.

Because VGA is strictly a progressive-scan format (as opposed to the traditional interlaced video), some compatibility issues arose with games designed exclusively for interlaced output. Such games explicitly indicate in their code that they can’t display on VGA, so the CPU prevents them from running until the user swaps the VGA cable with another type.


Audio

The audio functionality is handled by a custom chip called AICA. It was designed by Sega’s long-term partner and audio industry leader, Yamaha.

Image
Architecture of the audio subsystem.

This is a continuation of the SCSP found in the Saturn, in the sense that it’s fundamentally the same architecture, but with modernised parts. That being said, AICA is composed of four components [19]:

To help with development, the official SDK included multiple sound drivers for different needs (e.g. sequencing, decoding, etc.).

The great leap

We’ve come so far since the days of the Mega Drive/Genesis. In order to show how much progress has been made in sound synthesis, here is an example featuring two games, one for the Mega Drive and the other for the Dreamcast, that used the same musical composition.

Sonic 3D Blast (1996) for the Mega Drive / Genesis.
The predecessor performs FM synthesis to generate audio signals on the fly.
Sonic Adventure (1999) for the Dreamcast.
The new audio subsystem processes PCM samples without any hassle.
Oscilloscope display of two Sonic games.

You can also try this widget if you want to switch between the two on-the-fly:

Interactive player available in the modern edition
Audio samples
MegaDrive / Genesis: Sonic 3D Blast (1996).
Dreamcast: Sonic Adventure (1999).

Behind the scenes

Rather than dealing with hardware-specific FM arrangements, the composers of Sonic Adventure were free to produce their soundtrack in-house. It also didn’t matter how many instruments the track used as, in the end, the score would always be mixed down before being exported as stereo PCM audio.

If you look at the contents of the game disc, the music is encoded in ADX, a lossy format developed by CRI Middleware. This extra layer enables the game to decode and stream audio data from the GD-ROM to the Sound IC without running out of memory or bandwidth. Furthermore, the respective driver could be implemented in many ways, as multiple approaches existed to balance the workload between the main CPU and ARM7.

Staying alive

For some reason, AICA is also responsible for providing the system with a Real Time Clock (RTC), and is connected to a clock battery to continue working without AC power.


Operating System

The motherboard contains 2 MB of ‘System ROM’, which stores a ‘Basic Input/Output System’ (BIOS). This is the first location from which the CPU reads when starting up. The ROM contains code that instructs the CPU to either bootstrap the game or load the interactive shell.

Furthermore, the BIOS also contains routines that games may use to simplify I/O operations [20], such as reading from the GD-ROM drive.

Boot process

Image
The popular red-tinted Dreamcast logo.
Image
Europeans got a blue swirl instead.
The splash screen, varying across regions.
Image
The licence screen. Some games also appended their logos alongside Sega’s.

When the SH-4 CPU gets power, it looks for a program at address 0xA0000000 [21]. On the Dreamcast, this points to the 2 MB of System ROM [22], meaning the system will follow these steps [23]:

  1. BIOS stage.
    1. Execute the BIOS bootloader, initialising the hardware in the process.
    2. Display the iconic Dreamcast splash animation.
  2. IP.BIN stage.
    1. Check for a valid disc (GD-ROM or MIL-CD) in the drive. If one is present, read the metadata sectors (called IP.BIN); otherwise, skip to the ‘No-disc’ stage.
      • At some point, the drive authenticates the security ring on GD-ROMs, presumably after identifying the disc as a GD-ROM and before reading IP.BIN, although it’s not publicly known exactly when this occurs.
    2. Using the contents of IP.BIN, verify that the disc matches the console’s region.
    3. Validate and display the ‘SEGA’ licence screen stored in IP.BIN.
    4. Execute the initialisation code stored in IP.BIN [25].
  3. 1ST_READ.BIN stage.
    1. With the hardware ready, load the game’s entry point (called 1ST_READ.BIN) from the disc into memory and execute it. Behind the scenes, the exact loading process varies depending on the type of disc. I explain this in more detail in the ‘Games’ section.
    2. The game is now in control.
  4. No-disc stage.
    1. When the disc is not inserted or invalid, the BIOS loads the interactive shell.
    2. The user is now in control.

Interactive shell

Much like the Sega Saturn, when there is no valid game disc inserted, the console launches a visual shell.

Image
Home screen.
Image
VMU manager.
Image
Saves manager.
Image
Audio player.
Image
Settings screen.
The Dreamcast’s interactive shell, which boots when no (valid) disc is inserted.

The shell provides a simple graphical user interface that enables the user to perform basic but essential tasks, including:

Windows CE

Ever since the Dreamcast’s announcement, Sega and Microsoft revealed that the console could run Windows CE [26]. In fact, you only have to look at the console’s front to notice a Microsoft stamp… So, what’s going on here?

Image
The Windows CE seal on the front of the console. Coincidentally, you may find similar labels on other handheld equipment from the same era.

First things first, what exactly is ‘Windows CE’? Well, it was one of the many projects Microsoft embarked on during the mid-90s to conquer territories beyond the conventional PC market. In the wake of more efficient CPU architectures than x86 and the emergence of handheld computing, a new team at Microsoft was tasked with bringing the Windows ecosystem to those new devices [27].

This led to the creation of Windows CE: a complete operating system, developed from the ground up, that provided a subset of the existing Windows APIs, development tools, and services.

Image
Windows CE 3.0 (2000), bundled with a desktop interface and a couple of business apps.

Unlike Windows 95 or NT, the new operating system presented the following advantages:

Image
An HP Palmtop PC 360LX (1997) running Windows CE 2.0. I found it lying on a table at The Centre for Computing History (Cambridge, UK) during my visit in August 2024. Coincidentally, this palmtop houses an SH-3 CPU!

Moreover, Windows CE was sold as a set of building blocks for manufacturers, allowing them to cherry-pick which components to bundle. Manufacturers could then integrate it into a variety of hardware (such as handhelds, point-of-sale terminals, and even automotive systems). Nevertheless, Windows CE gained significant notice as the OS powering palmtops (the precursors to PDAs), effectively competing with the Apple Newton and Palm.

As the cellphone industry surged throughout the late 90s, Microsoft leveraged Windows CE’s modularity to develop PocketPC, another operating system (later renamed Windows Mobile) focused entirely on PDAs and mobile phones.

Image
Windows CE 2.11 ‘Palm-size PC Edition’ 1.2 (1999).
Image
PocketPC (2000), based on Windows CE 3.
Microsoft’s attempts to push Windows CE into the PDA market.

Now, what does all of this have to do with the Dreamcast? At some point, Microsoft and Sega ventured the idea of producing a Windows CE package for the Dreamcast [29]. After all, Windows CE was already running on top of Hitachi’s CPUs. In the end, this didn’t materialise into a full desktop interface or integration with Microsoft’s online services. Instead, it served as an optional layer of abstraction to simplify hardware operations.

Similar to what Nintendo provided with the Nintendo 64, Microsoft shipped an SDK (commonly referred to as Dragon SDK), based on Windows CE, for developing applications on the Sega Dreamcast. The libraries comprised a subset of CE with the minimal components needed to assist with graphics, audio, and debugging. As part of ‘joining the Microsoft club’, developers could now make use of Microsoft’s star IDE (Visual Studio 6.0) and Visual C++ 6.0.

Some developers found this option very attractive. Since the audio/graphics framework included with CE was none other than DirectX 6, plenty of PC games could, in theory, be easily ported to the Dreamcast. However, the architectural differences between the Dreamcast and conventional PCs were too great to ignore. So, in the end, programmers had to go through a great deal of optimisation to reach optimal performance [30]. Furthermore, since the Dreamcast’s BIOS didn’t include any of Microsoft’s frameworks, the SDK had to be statically linked with the game. Thus, compared with Sega’s closer-to-metal libraries, Dragon SDK increased the game’s loading times (after all, a separate ‘OS’ had to be loaded from the game disc) and, throughout execution, the Windows CE layer happened to eat a substantial amount of resources.

Image
The licence screen of ‘Q-Bert’, denoting the use of the Windows CE SDK (pretty much the only visible feature of Windows that users would notice).

In conclusion, ‘Windows CE for Dreamcast’ was merely a secondary SDK of choice for developers. Nonetheless, a considerable number of Dreamcast games ended up making use of it.

If you’re curious about the fate of Windows CE and Windows Mobile, things didn’t go particularly well for Microsoft in the handheld market. Windows CE was abandoned in 2013. The year before, the CE-based core of Windows Mobile was replaced with Windows NT (aligning it with the desktop-based Windows 8). Nevertheless, Windows Mobile eventually lost ground to newer platforms (Android and iOS) and was discontinued in 2019.


I/O

Image
The main buses of this console.

The GPU also includes another module for handling most of the I/O. It is called System Bus and provides the following interfaces:

External connections

Image
The back of the console, featuring modem, video out, and serial.

Behind the console, we find a modem and a Serial port. The modem is an interesting topic that will be further discussed in the ‘Games’ section. However, the serial port socket feels like a leftover from what Sega had envisioned before focusing on online services. It wasn’t widely adopted, aside from connecting a handful of accessories:


Games

Development was mainly done in C or C++. At first, C was the recommended choice since the available C++ compilers were very limited in both functionality and quality.

Image
My European copy of Sonic Adventure… stamped by the Australian authorities.

Sega also supplied development hardware in the form of a PC-like tower known as the Sega Katana Development Box. This housed Dreamcast hardware with enhanced I/O for debugging. It also shipped with a CD containing the official Katana SDK, intended for PCs running Windows 98.

As mentioned before, developers could also choose to adopt Microsoft’s Dragon SDK on top of Sega’s frameworks. In that case, DirectX 6.0 and Visual C++ 6.0 were also available for development.

A familiar, but denser, medium

It seems the popular 650 MB CD-XA discs weren’t enough for this generation anymore, prompting Yamaha and Sega to develop a proprietary variant called ‘GD-ROM’ that could now store around 1 GB of data.

Unlike ascending standards like the DVD, GD-ROM was a cheaper option by retaining the same laser used to read CDs, but improving the surrounding electronics to be able to extract more data from the same space.

Image
A close look at the GD-ROM, showing the clear distinction between the sparse inner zone and the denser outer zone. In between them lies a thin security ring.

Not a lot is known about the GD-ROM as Sega kept the protocol for themselves. What is known, however, is that GD-ROMs are divided into three zones [31]:

The speed of the reader is 12x, which is not too shabby compared to Saturn’s 2x CD reader. Nevertheless, it’s worth mentioning that the new reader operates at Constant-Angular-Velocity (CAV), as opposed to Constant Linear Velocity (CLV). This means that, with little effort, data access gets faster on the outer edge, which is coincidentally where the game data resides.

The bonus format

The Dreamcast also debuted another disc format: the Music Interactive Live-CD (MIL-CD); this was another creation of Sega that merely extended the standard Audio CD with interactive programs [32].

Whereas conventional CD players would only find audio tracks on a MIL-CD, the Dreamcast was able to ‘enhance’ the experience by displaying video, lyrics, and interactive menus. I’m guessing karaoke was its primary application.

In any case, the format didn’t attract enough attention. That is, until piracy groups found another use for it… The story continues in the ‘Anti-Piracy & Homebrew’ section.

The ambitious online platform

Sega had been a trailblazer in dial-up services since the Mega Drive/Genesis era, initially through separate modem accessories and games that could take advantage of online content; but as the hardware improved, new types of services could now be offered on the net. It’s worth noting that the late 90s coincided with the end of the walled-garden era, as the once-isolated servers connected over the telephone line gradually opened up to an emerging web of interconnected networks known as the ‘Internet’.

Image
The Dreamarena portal, the entry point for (some) European users who wanted to join the online experience. All in all, Dreamarena was an attempt to bring the internet into the living room.

For the Dreamcast launch, Sega pre-equipped the console with a 33.6 kbit/s modem module (or a 56 kbit/s variant in America!), paving the way for users to subscribe to an Internet Service Provider (ISP) for enhanced gaming. In there, the Dreamcast could find:

However, the implementation and deployment of this functionality were highly decentralised and chaotic: Sega relied on local ISPs to supply the infrastructure and services, resulting in turbulent changes throughout the console’s lifespan. To give you an idea of the panorama:

Players signed up to their local service using regional registration discs, such as DreamKey (for Europe) or Dream Passport (for Japan). These were often bundled with games and provided a tailored web browser (e.g. NetFront for Europe/Japan, PlanetWeb for the US) designed to register an account and browse the web. Later revisions of DreamKey finally allowed users to customise the ISP settings.

Image
The DreamKey disc that came with my copy of ChuChu Rocket!.

Over time, however, players around the world found out that the advertised functionality (like online gaming) was not yet available or unreliable, prompting an unfortunate mention on the BBC program Watchdog [36]. In extreme cases, like Australia and New Zealand, the delay in the ISPs’ implementation impacted the release date of the console.

To improve customer satisfaction, Sega later shipped a Dreamcast-branded keyboard and mouse [37], in case users fancied surfing the net PC-style.

Image
The home page offered plenty of content to explore.
Image
Sega used holiday events to offer extra content for the game.
Sonic Adventure’s Internet portal, restored by Dreampipe. Behind the scenes, it consists of HTML interacted with a built-in web browser.
Image
The home screen.
Image
The web browser interface.
PlanetWeb, the internet suite for the US market. Unlike Dreamkey, it wasn’t tied to any ISP.

Whilst ambitious, the service reflected Sega’s hopes of leading the fast-growing online gaming market. Ultimately, however, these offerings once again failed to convince enough users, and SegaNet and Dreamarena were discontinued two years after launch. The dedicated multiplayer servers slowly faded over the coming years, and with them, all online functionality bundled in games ceased to work.

A thriving restoration community

You may be interested to know that the present day paints a different attitude towards Sega’s original venture. In recent years, an enthusiastic group has taken it upon itself to re-implement the defunct services, culminating in the following projects that have managed to restore most - if not all - of the original online experience:

The interactive Memory Card

Image
The Visual Memory Unit (VMU) [40].

Another innovative feature of the Dreamcast is the Visual Memory Unit (VMU), a small gadget that attaches to the controller and, aside from serving as a memory card, is a fully fledged system that houses [41]:

Image
Controller without VMU attached [42].
Image
Controller with VMU attached [43].

The VMU has two modes of operation:


Anti-Piracy & Homebrew

At first glance, the adoption of the proprietary GD-ROM format was a strong deterrent to the production of unauthorised copies and their use on non-Dreamcast hardware. Games are also region-locked, meaning that the console refuses to run a game intended for a different geographical region.

Thus, attention turns towards MIL-CDs: as they rely on the standard CD medium, they become a potential (and affordable) attack vector for executing third-party code on the console. To mitigate this, Sega included another layer of protection: it required MIL-CD executables (1ST_READ.BIN) to be obfuscated using a simple block permutation algorithm [44]. The BIOS then applies the inverse algorithm to reconstruct the executable in memory. Overall, this system didn’t make use of a secret key, and only Sega knew the implementation of this algorithm, meaning its defence relied entirely on obscurity.

Additionally, after the BIOS descrambles the executable in memory, it locks the disc drive, requiring the MIL-CD application to manually reinitialise the drive [45]. This is an extra layer meant to prevent a somehow-pirated GD-ROM game from executing immediately afterwards.

The painful defeat

As you may already know, security is only as strong as the weakest link. GD-ROMs were very secure by design, but MIL-CDs were not (hence Sega adding layers on top). Unfortunately for the company, relying on the secrecy of the MIL-CD algorithm proved to be a fatal flaw that compromised the entire security model.

At the start of 2000, independent distributors such as Datel and Bleem! released unauthorised Dreamcast software that booted as MIL-CDs [46]. While they didn’t reveal how this was achieved, the same year saw major breakthroughs:

The combination of these discoveries soon led to an influx of unauthorised software (e.g. independent games, cheat loaders, movie players, emulators, etc.) disguised as MIL-CDs to bypass Sega’s protection. Alongside this, a surge in third-party development tools (e.g. libronin and libdream/KallistiOS) allowed homebrew development to thrive.

On the other side of the coin, piracy groups were now able to extract the contents of GD-ROMs and repackage them as bootable MIL-CDs. These also took advantage of IP.BIN‘s space for initialisation code to embed a 1ST_READ.BIN unscrabler routine and a disc reader unlocker [49], allowing games to boot without modifying their executables. Overall, this caused an unstoppable wave of ’game rips’ to be released on the net.

Game piracy was not without further challenges, nonetheless. Although GD-ROMs can store around a gigabyte of data, CD-ROMs can fit only around 700 MB. So, how could ‘rippers’ shrink larger games to fit on a CD? Well, by recompressing music and graphics assets until they fit. Some games were even split across multiple discs. After all, game data is no longer stored as a single blob (unlike on an old cartridge), but is instead organised hierarchically into files and directories.

Two years after the Dreamcast’s release, Sega began shipping consoles with a revised BIOS that patched the previous tricks by removing support for MIL-CD altogether [50]. However, the change came too late to undo the damage.

A lesson for the future

I find it educational to point out that the Dreamcast’s security missteps had already been predicted by 19th-century cryptographers such as Auguste Kerckhoffs, who stipulated that, for a cryptographic system to survive, one cannot rely on keeping the algorithm secret. Instead, an additional factor (i.e. a secret key) must be added. This explains why later competitors adopted key-based cryptographic systems instead.


That’s all folks

Image
A Dreamcast I had to get in order to write lots of stuff here. Not too bad for its age!

I hope you enjoyed reading the article. I finished writing it at the start of my final year at uni.

I’ll probably be very busy from now on, but I do enjoy writing these articles so hopefully you’ll get the next one in a few weeks!

Until next time!
Rodrigo


Contributing

This article is part of the Architecture of Consoles series. If you found it interesting then please consider donating. Your contribution will be used to fund the purchase of tools and resources that will help me to improve the quality of existing articles and upcoming ones.

Donate with PayPal
Become a Patreon

You can also buy the book editions in English. I treat profits as donations.

Book edition

A list of desirable tools and latest acquisitions for this article are tracked in here:

Interesting hardware to get (ordered by priority)

Acquired tools used

Alternatively, you can help out by suggesting changes and/or adding translations.


Copyright and permissions

This work is licensed under a Creative Commons Attribution 4.0 International License. You may use it for your work at no cost, even for commercial purposes. But you have to respect the license and reference the article properly. Please take a look at the following guidelines and permissions:

Article information and referencing

For any referencing style, you can use the following information:

For instance, to use with BibTeX:

@misc{copetti-dreamcast,
    url = {https://classic.copetti.org/writings/consoles/dreamcast/},
    title = {Dreamcast Architecture - A Practical Analysis},
    author = {Rodrigo Copetti},
    year = {2019}
}

or a IEEE style citation:

[1]R. Copetti, "Dreamcast Architecture - A Practical Analysis", Copetti.org, 2019. [Online]. Available: https://classic.copetti.org/writings/consoles/dreamcast/. [Accessed: day- month- year].

Special use in multimedia (Youtube, Twitch, etc)

I only ask that you at least state the author’s name, the title of the article and the URL of the article, using any style of choice.

You don’t have to include all the information in the same place if it’s not feasible. For instance, if you use the article’s imagery in a Youtube video, you may state either the author’s name or URL of the article at the bottom of the image, and then include the complete reference in the video description. In other words, for any resource used from this website, let your viewers know where it originates from.

This is a very nice example because the channel shows this website directly and their viewers know where to find it. In fact, I was so impressed with their content and commentary that I gave them an interview 🙂.

Appreciated additions

If this article has significantly contributed to your work, I would appreciate it if you could dedicate an acknowledgement section, just like I do with the people and communities that helped me.

This is of course optional and beyond the requirements of the CC license, but I think it’s a nice detail that makes us, the random authors on the net, feel part of something bigger.

Third-party publishing

If you are interested in publishing this article on a third-party website, please get in touch.

If you have translated an article and wish to publish it on a third-party website, I tend to be open about it, but please contact me first.


Sources / Keep Reading

Anti-Piracy

CPU

Games

Graphics

Operating System

Photography


Changelog

It’s always nice to keep a record of changes. For a complete report, you can check the commit log. Alternatively, here’s a simplified list:

2026-07-31

2024-08-06

2024-01-30

2021-30-04

2020-09-13

2020-04-10

2020-03-01

2019-10-24

2019-10-09

2019-10-08

2019-10-07