An interactive course · Dolphin emulator

How the GameCube read its games.

We start from the very beginning — how a beam of light can read data off a spinning piece of plastic — assuming you know nothing about optical storage. Once the vocabulary is solid, we open up Nintendo's odd little 8 cm disc and the drive that reads it, then follow the data into Dolphin's emulator. Thirteen modules, each with live simulations so you can watch every idea, not just read it. No game data ships with this page; every disc you'll see is a fictional one, generated in your browser.

Part I

Optical storage from zero

This first part is pure fundamentals — nothing about any specific console yet. It's how every optical disc works, whether that's a music CD, a DVD movie, or the small purple-tinted disc we'll meet in Part II. We build the vocabulary one word at a time — pit, land, transition, spiral, sector, error correction — and you can watch each idea run live in a simulation. If a term is ever used before it's explained, that's a bug; tell us. Everything in Parts II and III is just these four ideas wired together.

Modules 01–04Difficulty Absolute beginnerLabs 3 interactive
Module 01 · Part I

Reading with light

GoalUnderstand, from scratch, how microscopic dents on a plastic disc become a stream of 1s and 0s — without anything ever touching the data.

Let's start with what an optical disc physically is. Take a thin platter of clear plastic (polycarbonate), coat one side with a mirror-thin layer of metal, and seal it under lacquer and a label. The data lives in that metal layer, as a pattern of microscopic dents pressed into it at the factory. Each dent is called a pit; each flat, undented stretch between pits is a land. That's the entire storage medium: billions of tiny pits and lands, far too small to see — a pit on a DVD-class disc is shorter than a bacterium.

To read them, the drive shines a laser — a very narrow, very pure beam of light — up through the clear plastic onto the metal layer, and watches what bounces back with a light sensor called a photodiode (a component whose electrical output rises and falls with how much light lands on it). When the beam sits on a land, the mirror-flat metal reflects it cleanly and the photodiode sees a bright return. When the beam crosses a pit, the reflection drops sharply — the pit's depth is engineered (to around a quarter of the light's wavelength) so that light bouncing off the pit and light bouncing off the surrounding land interfere and largely cancel. Bright, dim, bright, dim: as the disc spins, the photodiode's output becomes an electrical signal that traces the pattern of pits flying under the beam.

Analogy · A record player made of light

A vinyl record stores sound as a physical groove, and a needle rides in that groove to read it — touching it, and wearing it out, on every single play. An optical disc is the same idea with the needle replaced by a beam: the laser “rides” the track of pits without ever touching it. Nothing rubs, nothing wears. Play a disc ten thousand times and the ten-thousandth read is identical to the first.

From bright-and-dim to bits

Here's the part almost everyone guesses wrong: a pit does not mean 1 and a land does not mean 0. Instead, the drive watches for transitions — the moments where the signal changes, at a pit's leading or trailing edge. Each transition is read as a 1; every steady stretch (staying on a pit, or staying on a land) is a run of 0s. Edges are used because a sharp change is far easier to detect reliably than an absolute brightness level, which drifts with dust, disc tilt and laser ageing.

One more subtlety and the picture is complete. If the data were allowed to produce transitions bunched arbitrarily close together, the pits would have to be impossibly small; and if it allowed enormously long steady runs, the drive would lose count of how many 0s went by — it keeps time with an internal clock that re-synchronises on each edge, like a metronome you have to keep tapping. So the raw data is first re-written through a run-length code that guarantees every transition is followed by at least two 0s but never more than ten — CDs use a scheme called EFM, DVDs a close cousin of it. The result: pits and lands always come in a comfortable range of sizes, easy to press and easy to read.

label metal plastic pit land laser photodiode strong return = land Reflected intensity Decoded bits 1 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 1
How light becomes bits. The laser reads through the clear plastic: a land reflects it strongly, a pit cancels most of the reflection. The photodiode's signal (magenta) steps between bright and dim — and each edge of that signal, a transition, is decoded as a 1, with steady stretches counted off as 0s by the drive's clock.

Why this design is quietly brilliant

Two properties fall out of “reading with light,” and both matter enormously for a games console. First, it's contactless — no wear, ever, no matter how many hours a child leaves the disc spinning. Second, it's surprisingly durable: the laser is focused on the metal layer deep inside the plastic, so a speck of dust or a light scratch on the surface sits far out of focus — blurred into irrelevance, the way a smudge on your glasses doesn't blot out the world. Deeper scratches do get through, and Module 03 is about the mathematics that survives them.

The lab below is a magnified flyover: a strip of track scrolls under a fixed laser spot, and you can watch the reflected-intensity trace and the recovered bitstream being built in real time. Then flip the dust switch to drop a contaminated patch onto the track and watch the bits garble — remember what that looks like, because Module 03 exists to fix it.

Laser-readout lab — pits & lands under the beamCanvas · simulation
Track magnified ~50,000×. Watch a transition become a 1 and steady runs become 0s; with dust on, the mid-level mush turns into garbage bits (red).
Key takeaways
  • Data is stored as microscopic pits and lands in a metal layer inside clear plastic.
  • A laser reads them by reflection: lands return bright, pits return dim.
  • Transitions (edges) are 1s; steady runs are 0s, counted by the drive's clock — a run-length code keeps runs in a readable range.
  • Reading is contactless (no wear) and focused deep inside the disc (surface dirt is out of focus).
Module 02 · Part I

The spiral & spinning

GoalSee how the track is laid out on the disc, why the same RPM means different data speeds at different radii, and understand the two spinning strategies — CLV and CAV.

Module 01 followed the track as a straight magnified strip. Zoom back out and you'll find it's not a set of concentric rings like the grooves you might imagine — it's one single, continuous spiral, starting near the centre hole and winding outward to the rim, exactly like a vinyl record in reverse. Unrolled, the spiral on a full-size DVD is over ten kilometres long. Neighbouring turns of the spiral sit astonishingly close together — the spacing between them is the track pitch, under a thousandth of a millimetre on DVD-class media.

Starting from the inside matters: every disc, regardless of how full it is, begins its data at the same small radius, and a half-empty disc simply stops partway out. The innermost turns also carry the disc's table-of-contents area — the lead-in — which the drive reads first to learn what it's holding. File that term away; it returns with a twist in Module 08.

The geometry problem

Now spin the disc. Here's the wrinkle: a point near the rim travels a much longer circle per revolution than a point near the hub. Spin at a fixed rate and the track flies under the laser faster at the outer edge than at the inner edge — same revolutions, more millimetres. Two speeds are in play and it pays to name them: angular velocity, how fast the disc turns (measured in RPM, revolutions per minute), and linear velocity, how fast the track itself streams past the laser (metres per second). Since pits are a fixed physical size, linear velocity is what sets the data rate: track passing twice as fast means bits arriving twice as fast.

Analogy · Lanes on a running track

Runners going side-by-side around a bend at the same angular rate — staying shoulder to shoulder — are moving at very different linear speeds: the outside runner covers far more ground per lap. The disc is the same track with thousands of lanes. Keep the RPM fixed and the laser in the “outside lane” reads data much faster than in the inside lane — that's CAV. Slow the whole field down whenever you watch the outside runner, so that every lane passes you at the same ground speed — that's CLV.

Every drive designer must pick a side, and the trade-off shapes how the machine behaves:

  • CLV — Constant Linear Velocity. Continuously adjust the motor so the track always passes the laser at the same speed: fast RPM at the hub, slow at the rim. You get a perfectly constant data rate — which is why audio CDs, which must feed a DAC at exactly 44,100 samples per second, chose it. The cost: every time the laser jumps to a different radius, the motor must physically speed up or slow down before reading can resume, and motors change speed slowly. CLV drives seek sluggishly.
  • CAV — Constant Angular Velocity. Spin at one fixed RPM, always. The motor never needs to change speed, so jumps between radii are as fast as the optics can move — but the data rate now depends on where you are: slowest at the hub, fastest at the rim. Fine for a computer that buffers data anyway, and it makes the outer edge premium real estate — a fact game developers exploited, as you'll see in Modules 05 and 06.
CLV — constant data rate inner: ~fast RPM outer: ~slow RPM motor re-speeds on every jump → slow seeks data rate: flat everywhere CAV — constant RPM inner: slower data outer: faster data motor never re-speeds → fast seeks data rate: grows with radius
Two spinning strategies. CLV chases a constant track speed by re-tuning the motor for every radius — steady data, sluggish jumps. CAV locks the RPM and lets the data rate ride the radius — the outer edge reads fastest. The GameCube's drive picks CAV (Module 05).
Worked example

Take a disc spinning CAV at a steady 1,500 RPM, and compare a point at radius 2.4 cm with one at 5.8 cm. Circumference is 2πr, so each revolution moves 15.1 cm of track past the laser at the inner point but 36.4 cm at the outer point — the same spin, 2.4× more data per turn. Under CLV the drive would instead spin about 2.4× slower at the outer radius to hold the track speed constant. That single ratio — outer radius over inner radius — is why CAV drives always quote their speed as a range.

The lab gives you the disc, the head and both strategies. Drag the read head to any radius; in CLV mode watch the platter visibly speed up and slow down to hold the data rate flat, and in CAV mode watch the RPM pin while the data rate climbs as you slide outward.

Spin lab — CLV vs CAV, liveCanvas · simulation
RPM Data rate Head radius
Drag the head (the bright dot) in or out along its rail. Illustrative numbers, scaled for a small disc.
Key takeaways
  • The track is one continuous spiral, wound from the inside out, with a table-of-contents lead-in at the hub.
  • At fixed RPM the track streams faster at the rim — linear velocity, not RPM, sets the data rate.
  • CLV re-tunes the motor for a flat data rate but seeks slowly; CAV fixes the RPM, seeks fast, and reads fastest at the outer edge.
  • Data-hungry computers (and the GameCube) prefer CAV and simply buffer around the varying rate.
Module 03 · Part I

Surviving scratches

GoalLearn why the raw bits off a disc can never be trusted, and how parity, Reed–Solomon codes and interleaving turn a gouged disc into a perfect read.

You saw it yourself in the Module 01 lab: drop a little dust on the track and the recovered bits turn to garbage. Now scale that up. A real disc lives a hard life — fingerprints, scratches from being slid across a carpet, microscopic pressing defects from the factory itself. At the densities involved, a scratch you can barely see can obliterate thousands of bits in a row. And here's the crucial observation about the damage: it is almost never one wrong bit here and one wrong bit there. Physical damage produces bursts — long, contiguous stretches of destroyed data — because a scratch is a physical object lying across a physical track.

So every optical format is designed around a blunt admission: the raw bits are unreliable, and that's fine. The disc deliberately stores more than the data — extra, mathematically-related check information — so the drive can detect damage and reconstruct what was lost. This is error correction, and it's the deepest magic in this whole course.

Parity: the small idea underneath

Start tiny. Suppose you send four numbers, plus a fifth number that is their sum: 3, 7, 2, 5 and the check value 17. If one of the four goes missing — say you receive 3, ?, 2, 5, 17 — you can rebuild it: 17 − 3 − 2 − 5 = 7. One extra number bought you the power to recover any one lost value. That extra number is parity. Add more check values, computed in cleverer ways, and you can recover more losses — the redundancy budget scales.

The industrial-strength version used on CDs and DVDs is the Reed–Solomon code. Without the heavy mathematics, here is its honest shape: data is processed in fixed-size groups of bytes called codewords, and each codeword carries some number of parity bytes — call it 2t of them. Those parity bytes buy a precise, guaranteed budget: the decoder can repair up to t corrupted bytes at unknown positions, or up to 2t erasures — losses whose positions are known, which are twice as cheap to fix (knowing where the damage is does half the work; the drive often does know, because the signal there was obviously mush). Stay inside the budget and the reconstruction is perfect, bit-for-bit. Go one byte over and the codeword is unrecoverable. It's not fuzzy — it's a hard contract.

Interleaving: turning one deep wound into many shallow ones

But wait — a budget of a few dozen bytes per codeword, against a scratch that kills thousands of bits in a row? A burst would blow through any single codeword's budget instantly. The fix is not more parity; it's a change of layout, called interleaving: before writing to disc, the bytes of many codewords are shuffled together, so that consecutive positions on the disc belong to different codewords. A physical gouge still wipes out a long run of disc — but after un-shuffling, that run turns out to be one or two bytes from each of hundreds of codewords. Every codeword takes a small, affordable hit; every codeword stays inside budget; everything is repaired.

Analogy · A letter on many postcards

Imagine mailing a long letter as fifty postcards — but instead of putting sentence 1 on card 1 and sentence 2 on card 2, you write the 1st word of every sentence on card 1, the 2nd word of every sentence on card 2, and so on. Now if the postal service loses three whole postcards, no sentence loses more than three words — and a sentence missing a few words can be reconstructed from context. That's interleaving: lose a chunk of the medium, lose a sliver of everything, recover all of it.

Bytes as written on the disc — colour = which codeword each belongs to A1 B1 C1 D1 A2 B2 C2 D2 A3 B3 C3 D3 A4 B4 C4 D4 scratch: 4 consecutive bytes destroyed After un-shuffling — the same damage, seen per codeword codeword A A1 A2 A3 A4 1 loss — repaired ✓ codeword B B1 B2 B3 B4 1 loss — repaired ✓ codeword C C1 C2 C3 C4 1 loss — repaired ✓ codeword D D1 D2 D3 D4 1 loss — repaired ✓
Interleaving defuses bursts. On the disc (top), consecutive bytes belong to different codewords (colours). A scratch destroys four bytes in a row — but after un-shuffling (bottom), each codeword has lost only one byte, comfortably inside its correction budget. Without interleaving, the same scratch would have destroyed one codeword completely.

Why scratch direction matters

This layout has a famous, testable consequence. A radial scratch — running from the centre toward the rim — crosses each turn of the spiral only briefly: a short burst once per revolution, exactly the pattern interleaving was built to absorb. But a circumferential scratch — running along the track, following the spiral — wipes out an enormous contiguous stretch of one region. Even after de-interleaving, the losses pile up in the same codewords and blow the budget. Same length of scratch, wildly different outcomes. This is why disc-care folklore says to always wipe a disc from the centre outward, never in circles: a cleaning scratch in the radial direction is the survivable kind.

The lab makes you the vandal. Drag across the block grid to scratch it, and watch which codewords survive. Then turn interleaving off and repeat the same scratch — the difference is the whole argument of this module in one gesture. Try a horizontal gouge (along the “track”) versus a vertical one (“radial”) and see the direction effect for yourself.

Scratch lab — error correction vs your thumbnailCanvas · simulation
Codewords OK 8 / 8 Budget 3 losses each
Drag across the grid to scratch. Rows read left-to-right are disc order; colours show codeword membership. Green = repaired, red = budget exceeded.
Key takeaways
  • Physical damage corrupts data in bursts, not single bits — the format is designed around that.
  • Parity is stored check information that lets lost values be reconstructed; Reed–Solomon is the industrial version with a hard budget: t unknown errors or 2t known-position erasures per codeword.
  • Interleaving shuffles codewords across the disc so one burst becomes many small, affordable losses.
  • Radial scratches are survivable (short burst per revolution); circumferential ones concentrate damage and can exceed the budget — wipe discs centre-out.
Module 04 · Part I

From CD to DVD

GoalSee how shrinking the pits and sharpening the laser multiplied capacity seven-fold, and learn what a sector is — the unit every drive actually reads.

Everything you've learned so far — pits, the spiral, error correction — was invented for the compact disc in the early 1980s. The DVD, a decade and a half later, changed almost nothing about the ideas. It changed the scale. Three shrinks, multiplied together, are the whole story:

  • Smaller pits. The shortest pit on a CD is about 0.83 µm; on a DVD, about 0.4 µm — each pit packs the same information into half the length of track.
  • A tighter spiral. The track pitch drops from 1.6 µm to 0.74 µm — more than twice as many turns fit in the same band of disc.
  • A sharper laser. You can't just declare pits smaller — the reading spot must shrink too, and a light spot can't be focused smaller than roughly its own wavelength. So the DVD moved from the CD's 780 nm infrared laser to a 650 nm red one, and paired it with tighter focusing optics. Shorter wavelength, smaller spot, smaller readable pits. (The next generation repeated the trick with a 405 nm blue-violet laser — hence “Blu-ray.”)
Analogy · Finer handwriting, sharper eyes

A page holds more words if you write smaller — but only if the reader's eyes can resolve the smaller letters. The wavelength of the laser is the reader's eyesight: infrared light simply cannot see a 0.4 µm pit, the way you can't read 4-point text from across a room. Every generation of optical disc is the same page, written in finer handwriting, read with sharper eyes.

Multiply the gains — shorter pits, tighter spiral, plus somewhat more efficient coding and error-correction overhead — and a 12 cm disc goes from the CD's ~650 MB to the DVD's 4.7 GB on a single layer. Same plastic, same factory presses, roughly seven times the data.

PropertyCD (1982)DVD (1996)
Laser wavelength780 nm infrared650 nm red
Track pitch1.6 µm0.74 µm
Shortest pit~0.83 µm~0.40 µm
Capacity (12 cm, 1 layer)~650–700 MB4.7 GB
Data rate at 1×~150 KB/s (paced for audio)~1.4 MB/s (paced for video)

“1×” is each format's original real-time job — playing music, playing a movie. A “16×” drive just spins proportionally faster. The figures above are the commonly quoted nominal values; real drives vary a little around them.

Sectors: the unit you actually read

One more piece of vocabulary completes Part I, and it's the one you'll use constantly from here on. Software never asks a drive for “bits” or “pits” — it asks for a sector: the disc's addressable block, which on DVD-class data discs carries exactly 2,048 user bytes. On the disc itself each sector is wrapped in overhead you never see: an ID number saying which sector it is (so the drive can confirm it landed where it meant to), a checksum, and the Reed–Solomon parity from Module 03 — on DVD the correction actually spans groups of sixteen sectors protected together, which is interleaving thinking at a larger scale. Roughly one byte in eight on the disc is overhead rather than payload.

CD scale pitch 1.6 µm DVD scale — same area, ~7× the data pitch 0.74 µm One sector, as recorded ID + check 2,048 user bytes what software sees RS parity …and 16 sectors share one error-correction block, interleaved together (Module 03, at industrial scale) payload ≈ 7/8 of the raw bytes the rest is addressing + parity overhead
The DVD shrink, and the sector. Left: the same patch of disc holds ~7× more data once pits and track pitch shrink (drawn to relative scale). Right: what one sector really looks like on the disc — 2,048 bytes of payload wrapped in an ID, a checksum, and Reed–Solomon parity shared across a 16-sector group.

And that's the whole optical toolkit: light reads pits, the spiral carries them, error correction makes them trustworthy, and sectors parcel them out 2 KB at a time. Every optical drive ever made is these four ideas. Time to meet a very particular one.

Key takeaways
  • DVD ≈ CD with everything shrunk: ~half-length pits, half the track pitch, a shorter-wavelength (650 nm) laser to resolve them.
  • The shrinks multiply: ~650 MB becomes 4.7 GB on the same 12 cm platter.
  • A sector = 2,048 user bytes plus hidden ID/checksum/parity overhead; DVDs correct errors across 16-sector groups.
  • 1× CD ≈ 150 KB/s, 1× DVD ≈ 1.4 MB/s — each format's original real-time job.
Part II

The GameCube's drive

Now we put the Part I toolkit into a real machine. Nintendo's console reads a deliberately strange disc: an 8 cm, DVD-technology platter holding about 1.46 GB, pressed in a format no ordinary drive can read, spun CAV by a custom Matsushita mechanism. These five modules cover the disc itself, what a game actually looks like laid out on it, the DI — the hardware doorway the CPU talks to the drive through — the copy protection story, and the streaming tricks games used to hide every loading screen. From here on we'll name real hardware, but every piece maps back to a fundamental you already know.

Modules 05–09Difficulty HardwareLabs 2 interactive
Module 05 · Part II

The 8 cm disc

GoalMeet the GameCube's odd little disc and drive — what they are, what they can do, and the (widely-reported) reasoning behind Nintendo's decision to go small and custom.

Open a GameCube's lid and you find something that looks like a DVD that shrank in the wash: a disc just 8 cm across — palm-sized, two-thirds the diameter of a normal 12 cm disc — holding roughly 1.46 GB. Technically it's a miniDVD: the same 650 nm-laser, small-pit, tight-spiral technology from Module 04, on a smaller platter. Less area, less spiral, less data — 4.7 GB scales down to about 1.46 GB. The drive that reads it was built by Matsushita (the company behind the Panasonic brand), and it is a proprietary unit through and through: custom mechanism, custom controller, custom firmware, custom disc format. This was not an off-the-shelf DVD drive with a small tray.

Why would anyone do this? Rivals were shipping full-size discs — the PlayStation 2's DVD drive held over three times as much and played movies. Nintendo never published a formal rationale, so treat what follows as the widely-reported reasoning rather than gospel; but three threads come up consistently:

  • Piracy scars. During the Nintendo 64 era, Nintendo had watched CD-based rivals suffer rampant, trivial piracy — a stock PC burner could duplicate a PlayStation game. Cartridges had dodged that, at brutal cost-per-megabyte. A custom disc promised the economics of optical media without being writable or even readable by consumer hardware: there was nothing to burn it onto, and (as Module 08 details) a PC drive couldn't even see its contents.
  • No DVD licensing. Shipping a standards-compliant DVD player means paying per-unit royalties to the DVD consortium and building in video-playback features Nintendo didn't want. A non-standard format sidestepped the licence entirely — the GameCube pointedly did not play movies. (Matsushita sold its own licensed hybrid, the Panasonic Q, a GameCube in a shiny steel body that did play DVDs — the exception that proves the licensing rule.)
  • Speed of the small. On a small platter the read head simply has less distance to travel — the worst-case hop from hub to rim is shorter, so worst-case seeks are quicker. For a games machine, which hops around its disc constantly, snappy seeks matter more than raw capacity.
Analogy · A key blank nobody sells

A standard door lock can be picked with standard tools — and standard keys can be copied at any kiosk. Nintendo instead had its own lock and its own key blank manufactured: GameCube discs came off presses that only Nintendo's disc plants ran, in a shape no consumer device could write. Nothing about the lock was cleverer than a normal one — the protection was that the blanks simply didn't exist in the wild. Module 08 tells the story of how that held up.

The drive spins CAV — the fixed-RPM strategy from Module 02 — so its read speed depends on where the head is: commonly quoted figures put it at roughly 2 MB/s near the hub rising to about 3 MB/s at the rim (treat the exact numbers as approximate; they vary by source and measurement). That inner-to-outer gradient is not trivia: it made the outer millimetres of every disc premium real estate, and in the next module's lab you'll watch developers exploit it.

Platter
8 cm
vs 12 cm standard DVD
Capacity
~1.46 GB
single layer, single side
Read rate
~2–3 MB/s
CAV — grows with radius
Laser
650 nm
DVD-generation red
Maker
MEI
Matsushita / Panasonic
Format
custom
unreadable by stock PC drives
12 cm DVD 4.7 GB · plays movies · standard format 8 cm GameCube disc ~1.46 GB · games only · custom format same pit geometry, smaller platter shorter worst-case head travel = faster seeks
Two-thirds the diameter, a third the capacity. The GameCube disc (right, to scale) uses the same DVD-generation pit geometry as its big sibling — the capacity difference is purely area. The small platter's hidden gift: the head never has far to travel, so worst-case seeks stay short.

One caution before we open the disc up: capacity discipline was real. 1.46 GB was generous in 2001 and cramped by 2004 — late-generation games shipped on two discs (you may remember swapping mid-game) and compressed their assets hard. Keep that pressure in mind through the next module: the layout you're about to see was drawn by developers fighting for every megabyte and every millisecond.

Key takeaways
  • The GameCube disc is an 8 cm miniDVD-technology platter holding about 1.46 GB, read by a custom Matsushita drive.
  • The widely-reported rationale for going small and custom: piracy resistance, avoiding DVD licensing (and movie playback), and shorter seeks — Nintendo never published an official one.
  • The drive spins CAV: roughly 2 MB/s at the hub to ~3 MB/s at the rim (approximate figures) — the outer edge reads fastest.
  • Capacity was tight; late games shipped on two discs and leaned on compression.
Module 06 · Part II

What's actually on the disc

GoalRead a GameCube disc's layout like a map: the boot header, the apploader, the main executable, and the FST that turns filenames into disc offsets.

Pop the mental lid off a game disc and you will not find a general- purpose filesystem like a PC's — no directories being created, no files growing, nothing ever written. A GameCube disc is one big read-only filesystem, laid out once at mastering time and then pressed, identically, a million times. That permanence buys wonderful simplicity: everything can live at a fixed, known offset, and “opening a file” reduces to “read n bytes starting at sector x.” Here's the map, from sector zero outward:

  • The boot header — the very first bytes of the disc. It carries the six-character game ID (something like GALE01: game, region, maker), the game's title, a magic number proving this is a GameCube disc, and — crucially — the disc offsets of everything below. The console's boot ROM reads this first.
  • The apploader — a small bootstrap program (living at a fixed early offset, 0x2440). The console's ROM doesn't know how to load a game; it knows how to load the apploader, and the apploader — shipped on every disc, built from Nintendo's SDK — does the rest: it copies the main executable off the disc into RAM and jumps to it.
  • The main executable — a file in DOL format (the extension is .dol): the game's actual code. It's a refreshingly simple format — a header listing code and data sections, the RAM address each should be copied to, and the entry point to jump to. No dynamic linking, no relocation: the game owns the whole machine.
  • The FST — the File String Table, the disc's entire directory in one block: a tree of entries (file or folder), each file entry holding a name (pointing into a shared string table), a disc offset, and a length. When game code asks for audio/theme.adp, the runtime looks the name up in the FST — already sitting in RAM — and issues a raw read at the resulting offset. That's the whole filesystem.
  • The files themselves — everything else, gigabyte and a half of textures, models, music, cutscene video, laid out in whatever order the developers chose. And between them…
  • Padding and junk — files are aligned to convenient boundaries, and the gaps between them (plus all the unused tail of a not-full disc) aren't zeroed: the mastering tools filled them with pseudo-random junk bytes. Remember this detail — it looks like trivia now, but in Module 10 it turns out to decide how well a dumped disc compresses.
Analogy · A printed atlas

A game disc is like a printed atlas, not a filing cabinet. The first page (the boot header) names the book and points to the index; the index (the FST) maps every place-name to a page number; and because the book is printed, page numbers never change — the runtime can jump straight to page 812 without searching. Nothing is ever filed, moved or renamed. The only “write” that ever happened was the printing press.

One disc, laid out flat — inner edge on the left boot header app- loader main .dol FST movies/… audio/… maps/… junk 0x0000 0x2440 ~1.46 GB alignment gaps: pseudo-random junk (→ Module 10) FST entry: "audio/theme.adp" → offset 0x2C40_0000 · length 0x0122_8000
The disc as an address map. A fixed boot header at offset 0, the apploader at its fixed early offset, the game's .dol executable, then the FST that maps every filename to an offset+length in the file area beyond. Grey slivers are junk-filled padding. (Offsets in the FST example are made up.)

Layout as a performance tool

Because the disc is pressed once and read forever, where a file sits is a designer's decision — and it interacts with both facts you learned about the drive. The CAV gradient means data near the rim streams up to half again as fast as data near the hub, so mastering tools let developers push bandwidth-hungry files (streaming video, big level data) outward. And because seeks cost tens of milliseconds (Module 09 does the arithmetic), files read together were placed together — some games even pressed duplicate copies of small shared files next to each big level, spending cheap capacity to avoid expensive head travel.

The lab below is a full fictional game disc drawn as the spiral it really is. Click a file in the picker and watch the head do real work: slide to the radius, wait for the platter to bring the data around, then read — with a millisecond-by-millisecond breakdown, and the CAV rate difference plainly visible between an inner file and an outer one.

Disc-map lab — seek around a game discCanvas · simulation
Seek Read rate
Breakdown = sled move + settle + rotational wait + read. Notice the outer files (bigger radius) report a higher CAV read rate. Illustrative timings, not measurements.
Key takeaways
  • A game disc is one read-only filesystem, fixed at mastering: boot header → apploader → main .dol → FST → file data.
  • The boot ROM runs the apploader; the apploader loads the .dol; the .dol is the game.
  • The FST maps every filename to a raw offset + length — “opening” a file is just an offset lookup and a read.
  • Placement is a tool: fast outer tracks for hungry files, co-location (even duplication) to dodge seeks, and pseudo-random junk filling the gaps.
Module 07 · Part II

Talking to the drive: the DI

GoalFollow one disc read end-to-end through the DI: the CPU posts a command, the drive's own firmware does the work, DMA lands the data in RAM, and an interrupt says “done.”

So far the drive has been a black box that “reads sectors.” Time to wire it to the rest of the console. The GameCube's main chip, Flipper, contains a small block of hardware called the DI — the disc interface — and it is the only doorway between the CPU and the drive. The CPU cannot touch the laser, the motor, or a single pit. It can only do one thing: fill in a short form and ring a bell.

The “form” is a handful of memory-mapped registers — special addresses that, when written, poke the DI hardware directly. To read from the disc, the game's runtime:

  1. writes a command into the DI's command-buffer registers — an opcode (“read”) plus parameters (which disc offset, how many bytes);
  2. writes a main-RAM destination address and a length into the DI's DMA registers;
  3. sets the “go” bit in the DI control register — rings the bell;
  4. …and walks away. This is the important part: the CPU does not sit there copying bytes.

The drive does the slow physical work — seek, wait, read, error- correct — and streams the resulting sectors back through the DI, which writes them into main RAM by DMA (Direct Memory Access: hardware-to-memory copying with no CPU involvement). When the last byte lands, the DI raises an interrupt — a hardware tap on the CPU's shoulder that runs a completion handler. Between the bell-ring and the tap, the CPU was simulating physics and building graphics frames. Small commands that need only a short answer (a status code, the drive's ID string) skip the DMA and return their reply in an immediate buffer register instead.

Analogy · A restaurant pass-through window

The kitchen (the drive) and the dining room (the CPU) never mix. A waiter clips an order ticket to the pass-through window — dish name, table number — and goes back to serving. The kitchen cooks at its own pace, puts the finished plate on the shelf (DMA into RAM), and rings the little bell (the interrupt). The ticket rail is the DI's command registers; the bell is wired so the waiter always hears it, mid-conversation or not.

The GameCube disc interface The CPU writes commands into the DI's registers inside Flipper. The DI forwards commands to the drive, which runs its own firmware on its own controller. Sector data flows back through the DI and lands in main RAM by DMA; interrupts (transfer complete, cover) flow back to the CPU. Main CPU Gekko Main RAM sectors land here Flipper — the DI block memory-mapped registers Command buffer opcode + offset + len DMA registers RAM address · length Control / status go bit · busy · error Immediate buffer short replies Interrupts transfer complete · error · cover open/close audio-streaming control also lives here (→ Module 09) The drive Own controller runs its own firmware Mechanism laser · sled · motor servo + error correction Lid switch cover open / close 1 · write command 2 · to drive 3 · sector data → DMA into RAM 4 · interrupt: “done”
One read, end to end. The CPU fills the DI's command buffer and DMA registers, sets the go bit, and leaves. The drive — a little computer in its own right, running its own firmware — does the physical work and streams sectors back; the DI lands them in RAM by DMA and raises an interrupt. Even the lid is an interrupt source.

The command set

The vocabulary the CPU can put on that ticket rail is small. The exact opcode numbers are an implementation detail (Dolphin's source is the public reference), but the jobs are:

Read
The workhorse: “deliver n bytes from disc offset x into RAM.” Nearly everything a game does with the disc is this.
Seek
Move the head to an offset without reading — games issue it early so the mechanical work (Module 09) overlaps with other setup.
Request error / status
“What happened?” / “What are you doing?” Returns a code in the immediate buffer: ready, busy, lid open, read error, wrong disc…
Audio-streaming control
Start, stop and query the drive's built-in background-music streaming — a lovely trick that gets its own treatment in Module 09.
Stop motor / inquiry
Housekeeping: spin the disc down; report the drive's identity and firmware revision.

Two details in that diagram deserve a second look, because both return as emulation problems in Part III. First, the lid is an interrupt: opening the cover mid-game fires a DI interrupt, and games genuinely handle it — pausing, showing “the disc cover was opened,” then re-checking the disc and resuming when it closes. Disc-swap in two-disc games is built on this little dance. Second, the drive is a computer: its own controller and firmware handle focus, tracking, spin-up, retries and error correction privately. The CPU never sees a pit or a parity byte — it sees clean 2,048-byte sectors and status codes. Keep both facts warm for Module 08 (where the firmware becomes a battleground) and Module 11 (where Dolphin has to impersonate all of it).

CPU posts
command + DMA target, sets go
Drive works
seek · rotate · read · correct
DMA lands
sectors written into main RAM
Interrupt
“done” — handler runs
Key takeaways
  • The DI is the only doorway between CPU and drive: command-buffer, DMA, control and immediate-buffer registers.
  • Reads are asynchronous: the CPU posts a command and gets on with the game; DMA delivers the data; an interrupt signals completion.
  • The command set is tiny: read, seek, status/error, audio-streaming control, and housekeeping.
  • The lid is an interrupt too, and the drive runs its own firmware on its own controller — the CPU only ever sees clean sectors and status codes.
Module 08 · Part II

The copy protection

GoalUnderstand — as history, not as a manual — why a GameCube disc is invisible to a PC drive, what the barcode near the hub is, and why the cat-and-mouse game moved to the drive's firmware.

A quick framing note before we start: this module is the history of a twenty-year-old protection scheme, told at the level long documented by the emulation and preservation community. It explains why things were built as they were — it is not a how-to for anything.

Here is the striking, easily-verified fact at the centre of it all: put a GameCube disc in an ordinary PC DVD drive, and the drive cannot read it at all. Not “the files are encrypted” — the drive typically reports no usable disc. Physically it's DVD technology through and through (same laser, same pit scale — Module 05), but the low-level format is deliberately off-spec: the widely-reported account is that the innermost structures a drive reads first — the lead-in from Module 02 — and the low-level sector scrambling don't follow the DVD standard's rules. A standard drive's firmware reads the opening structures, finds gibberish where a table-of-contents should be, and gives up. Nintendo never published the details, so treat the precise mechanism as community inference; the effect — stock drives refuse, and only the console's own Matsushita drive knows the dialect — is beyond doubt.

Analogy · The same alphabet, a different first page

Imagine two books printed with the same ink, same paper, same letters — but one shuffles its letters by a private rule and opens with a title page written in that shuffled form. A reader who doesn't know the rule can't even find the table of contents; they hold a physically perfect book they cannot begin to read. The GameCube disc is that book: the printing technology is standard DVD; the opening conventions are private.

Two more layers completed the scheme:

  • The barcode by the hub. Look at the inner rim of a GameCube disc and you can see a faint ring of marks — a BCA-style barcode (the DVD world's “Burst Cutting Area”), burned into each disc after pressing. It carries a small amount of data the drive can read and is understood to take part in the drive's disc-verification; the specifics of what's checked were never published. The salient property: a home-burned disc has no way to carry it.
  • No writable medium existed. Even with a perfect image of a game (Part III is all about legitimate ones), there was nothing to write it onto: no consumer burner produced the non-standard format, and no blank “GameCube discs” existed. The Module 05 key-blank analogy, made literal.
GameCube disc standard DVD physics · non-standard format BCA-style barcode ring, burned per-disc near the hub GameCube drive knows the dialect reads fine ✓ clean sectors out Stock PC DVD drive expects the DVD standard no disc found ✕ lead-in unreadable
Same physics, private dialect. The console's Matsushita drive reads the off-spec lead-in and scrambling natively; a standard drive's firmware finds gibberish where the table of contents should be and reports no usable disc. The amber ring is the per-disc BCA-style barcode — something a home-burned disc could never carry.

Why the attacks went after the firmware

Now connect this to Module 07's closing thought: the drive is a computer running firmware, and the console trusts what it says. The disc format was effectively unforgeable — so the historical cat-and-mouse, as documented across two decades of emulator and homebrew history, went around the disc entirely and targeted the trusted messenger. Commercial mod-chips of the era attached to the drive's electronics and interfered with its firmware-level conversation, making the drive accept media or report checks as passed when they hadn't. In other words: nobody counterfeited the key — they suborned the doorman. Later, the community found gentler doors for legitimate homebrew: software exploits (famously via crafted save files) that ran code without touching the drive at all, which is the lineage today's homebrew and disc-preservation tools descend from. That preservation path — dumping a disc you own into a file — is exactly where Part III begins.

Scope note. Mechanism details in this module (which structures differ from the DVD spec, what the barcode encodes, what exactly mod-chips patched) were never officially documented; the summaries above reflect the consensus of published reverse-engineering history and are hedged accordingly. The effects — PC drives can't read the discs, per-disc barcode, firmware-level attacks — are well established.

Key takeaways
  • GameCube discs use standard DVD physics but a deliberately non-standard low-level format — stock PC drives can't read them at all.
  • The widely-reported (unofficial) mechanism: off-spec lead-in structures and sector scrambling, plus a per-disc BCA-style barcode near the hub.
  • With the disc unforgeable, historical attacks targeted the drive's firmware — the trusted messenger — via mod-chips; homebrew later used software exploits instead.
  • All of this is why disc images, not disc copies, are the unit of preservation — Part III's subject.
Module 09 · Part II

Streaming & hiding the seams

GoalDo the brutal arithmetic of a seek, then learn the tricks — corridors, prefetching into ARAM, and the drive's own music streaming — that games used to make loading invisible.

Time to put numbers on the drive's one great weakness. Reading sequentially is fine — 2 to 3 MB/s of steady flow. The killer is jumping. Every random hop pays a mechanical toll with several parts:

  • Command overhead — the DI handshake and the drive's firmware deciding what to do: a millisecond or so.
  • Sled move — the whole optical assembly physically slides along its rails to the target radius. Motors and mass: tens of milliseconds for a long hop.
  • Settle & re-lock — the servo re-focuses the laser and locks onto the exact spiral turn: a few more milliseconds.
  • Rotational latency — the head is at the right radius, but the data you want is somewhere around the circle. On average you wait half a revolution for it to come around.
Worked example

Take a drive spinning around 1,400 RPM (a plausible GameCube-class figure — treat it as illustrative). One revolution is 60 ÷ 1,400 ≈ 43 ms, so the average rotational wait alone is ≈ 21 ms. Add ~1 ms of command overhead, a 30–80 ms sled move for a mid-to-long hop, and settle time, and a random read costs somewhere in the region of 50–150 ms before the first byte arrives. In that time the console could have rendered up to nine 60 fps frames — or read ~300 KB sequentially. Seeks aren't slightly expensive; they are catastrophically expensive, and every design decision in this module flows from that.

cmd sled moves to radius settle rotational wait (avg ½ rev) data flows — at last ~1 ms ~30–80 ms ~ms ~0–43 ms · avg 21 2–3 MB/s Anatomy of one random read (illustrative figures) total before first byte: ~50–150 ms — up to nine whole frames at 60 fps
Where a seek's time goes. The sled move and the rotational wait dominate. Nothing useful arrives until every stage completes — which is why games organise their whole disc layout (Module 06) around not paying this toll.

Hiding the seams

Yet you rarely stared at a loading screen on a GameCube. That's not because the drive was fast — you've just seen it isn't — but because developers became masters of overlap: making sure that whenever the drive was paying its mechanical toll, you were looking at something else.

  • Corridors, elevators & airlocks. That suspiciously long hallway between areas, the slow elevator ride, the door that takes two seconds to open — often load-bearing theatre. While you walk it, the game is streaming the next area in behind the scenes. Level designers shaped spaces around the drive's timings.
  • Prefetching into ARAM. The console has a second, 16 MB pool of memory called ARAM — officially “audio RAM” (its starring role is in our audio course), but games treated it as a disc cache: stream likely-soon assets into ARAM during quiet moments, then copy them to main RAM in microseconds when actually needed. A software-managed read-ahead.
  • Layout, again. Module 06's tricks — group files read together, duplicate small shared files next to each level — exist precisely to convert would-be seeks into sequential reads.
  • Early seeks. The DI's seek command (Module 07) lets a game send the head toward data it will want soon, overlapping the sled move with gameplay before issuing the actual read.
Analogy · The water tank on the roof

A house with irregular mains pressure puts a tank on the roof: the mains fills it when pressure allows, the taps drain it smoothly at any moment. A streaming game runs the same plumbing — the drive fills a memory buffer in bursts (stalling entirely during seeks), the game drains it steadily. As long as the tank never runs dry, you never notice the pump stopping. The lab below lets you run the tank dry on purpose.

The drive plays the music: DTK

One more streaming trick is so elegant it deserves its own heading. The drive can play background music by itself. A game issues the DI's audio-streaming command (Module 07) pointing at a compressed audio file on the disc, and from then on the drive — its own firmware, its own schedule — reads that stream and feeds it, decoded from its ADPCM encoding, straight to the console's audio output, with essentially no CPU involvement. This is DTK (“Disc Track”) audio. It's why music could keep playing seamlessly while the CPU was flat-out mid-load. The stream arrives at 48 kHz and joins the audio mixer's other sources — our audio course picks the story up from exactly that point (its Module 15, “The output path”). The cost: while the drive is busy streaming music, it is a shared, mechanical resource — game and stream take turns, which the layout planners of Module 06 also had to budget for.

In the lab, you are the streaming engine. Data flows from the drive into the buffer and drains out to the game. Trigger a seek — the player just entered a new area — and watch the buffer absorb the stall. Then set the drain faster than the fill, or seek twice in quick succession, and watch the tank run dry: that moment is a loading screen being born.

Streaming lab — keep the buffer aliveCanvas · simulation
Each seek stalls the drive ~120 ms while the game keeps draining. If the buffer empties, the dreaded “loading…” appears.
Key takeaways
  • A random read costs ~50–150 ms (command + sled + settle + avg half-revolution rotational wait) — frames' worth of time.
  • Games hid the toll with overlap: corridor/elevator loading theatre, prefetching into ARAM, seek-early commands, and seek-avoiding layout.
  • Buffering absorbs the drive's bursts-and-stalls; a starved buffer is a loading screen.
  • DTK audio streaming lets the drive itself read and decode background music with no CPU work — see the audio course for where that stream goes next.
Part III

Emulating it in Dolphin

Finally: how does software on your PC stand in for that whole spinning machine? First the disc has to become a file — and it turns out Module 06's junk padding makes that surprisingly interesting. Then the drive itself has to be impersonated, and “just read the file” is nowhere near good enough: twenty years of games are tuned, sometimes accidentally, to the real drive's exact rhythms. These four modules connect the whole course to the actual files and settings you'll see in the emulator — and close with a short farewell to spinning media.

Modules 10–13Difficulty EmulationLabs 2 interactive
Module 10 · Part III

The disc, as a file

GoalUnderstand disc images: what a raw dump contains, why it compresses badly, how RVZ-style formats fix that losslessly, and how the community verifies a dump is perfect.

An emulator has no laser, so the first step of this whole Part is turning a disc you own into a file — dumping it. A dump is beautifully unmysterious: read every sector from first to last (homebrew on a real console is the classic legitimate path, since Module 08 explained why a PC drive can't do it) and concatenate the 2,048-byte payloads. The result is traditionally named GCM or .iso, and because Module 06's filesystem is just offsets, the file is the disc: byte 0x2440 of the file is the apploader, exactly as pressed. Every full dump of a standard GameCube disc is the same size — 1,459,978,240 bytes, about 1.46 GB (1.36 GiB) — whether the game “uses” all of it or not, because the dump includes everything: files, padding, junk and all.

Why a naive zip disappoints

1.46 GB per game adds up, so you compress — and get a nasty surprise: the ratio is often mediocre. The culprit is Module 06's parting detail. The gaps between files, and the unused tail of the disc, are filled with pseudo-random junk. A compressor works by finding patterns — repetition, structure, predictability. Random-looking bytes have none, by construction: to a compressor, junk is incompressible noise, and on a half-full disc there can be hundreds of megabytes of it, passed through at a stubborn ~1:1 while the real game data compresses politely.

Analogy · Photographing static

Try to describe a TV screen showing static: there's no shorter description than the picture itself — random is, by definition, patternless. But if you know the static came from a machine — a pseudo-random generator cranked from a known starting seed — the perfect description is one line: “the machine's output, seed 42.” The junk on a GameCube disc came from exactly such a machine in Nintendo's mastering tools, and that one-line description is the trick behind RVZ.

Purpose-built formats: GCZ, then RVZ

Dolphin's community answered with formats that understand what they're compressing while staying perfectly lossless — the original image is reconstructible bit-for-bit:

  • GCZ — the older format: slice the image into blocks, compress each with a general-purpose algorithm, keep an index so the emulator can jump straight to any block (random access matters — the emulator seeks, too!). Helpful, but it still chews on the junk.
  • RVZ — the modern one. Dolphin's developers worked out how the mastering tools' junk generator behaves (it's derived from values like the disc's ID), so RVZ recognises junk regions and stores, in effect, “junk here, these parameters” — kilobytes describing hundreds of megabytes, regenerated exactly on demand. Zero-filled and repeated blocks are deduplicated similarly, and what remains — the actual game data — is compressed with modern algorithms (Zstandard and friends). Typical results are dramatically smaller than a zipped ISO, still byte-exact, still randomly accessible.
The same disc, three ways (illustrative half-full disc: 60% data · 15% zero padding · 25% junk) raw ISO game data zeros pseudo-random junk 100% naive zip ~58% junk barely shrinks — it looks random RVZ-style ~30% data compressed with modern codecs junk + zeros stored as generator parameters — kilobytes
Why RVZ wins. A general-purpose compressor treats the pseudo-random junk as incompressible noise. RVZ knows the junk was generated, stores the generator's parameters instead of its output, deduplicates zeros, and compresses only the real data. All three representations reconstruct the identical 1,459,978,240-byte image. (Proportions illustrative.)

Trust, but verify

One last habit separates a preservation-grade dump from a hopeful one. Optical reads can fail silently — a marginal disc, a tired laser, and Module 03's error correction quietly gives up on a sector without your dumping tool noticing anything worse than a retry. The community's answer is verification by hash: compute a cryptographic fingerprint of your dump and compare it against a community database of fingerprints from many people's dumps of the same pressing (the Redump project is the best-known such effort). If your hash matches the consensus, your copy is bit-for-bit identical to everyone else's — about the strongest statement of “this dump is good” you can make. Dolphin can check a loaded image against these databases from its game-properties window (Module 12).

The lab packs a fictional disc three ways. Watch where the bytes go — especially the junk blocks, which sail through the zip untouched but collapse to a sliver of parameters under RVZ.

Image-compression lab — ISO vs zip vs RVZ-styleCanvas · simulation
Output size 100% Ratio 1.00 : 1
Educational simulation with made-up block sizes — real ratios vary per game. Cyan = game data, grey = zeros, magenta = pseudo-random junk.
Key takeaways
  • A raw dump (GCM/ISO) is every sector's 2,048 payload bytes in order — always 1,459,978,240 bytes for a standard disc.
  • Generic compression stumbles on the pseudo-random junk padding: random-looking bytes have no patterns to exploit.
  • GCZ block-compresses; RVZ goes further — it regenerates junk from stored parameters and deduplicates padding, losslessly and with random access.
  • Preservation-grade dumps are verified by hashing against a community database of consensus fingerprints (Redump-style).
Module 11 · Part III

Emulating the drive

GoalSee why a faithful drive emulation must imitate the drive's slowness, its status quirks and its side-channels — not just hand over the file's bytes.

Here's the naive plan, and it's genuinely tempting: the game writes a read command into the emulated DI (Module 07), we memcpy the bytes out of the RVZ at the right offset, fire the completion interrupt on the next emulated cycle, done. Instant, perfect data. What could be wrong with faster and always correct?

Quite a lot, it turns out. Twenty years of GameCube games were developed against one specific physical drive, and they are shaped by its rhythms in ways both deliberate and accidental:

  • Some games race the drive. Module 09 taught developers to overlap work with reads: kick off a read, then spend the “guaranteed” 80 ms doing setup. Some code — through bugs that never mattered on hardware — actually relies on the data not arriving too soon: an instant completion interrupt lands in the middle of the setup and fires callbacks in an order the developers never saw in testing. The game misbehaves — on data that is byte-perfect.
  • Some games starve if it's too slow — or too fast in the wrong place: streaming systems tuned to the CAV rate curve (2→3 MB/s across the radius, Module 05) can stutter or desync if fed at one flat rate.
  • Status must lie convincingly. Games poll the drive: busy? ready? error? A drive that is never busy is a drive that never existed — polling loops written as “wait until busy clears” can fall straight through, or spin forever, when the emulated status doesn't sequence like the real firmware's.
  • The side-channels are load-bearing. The DTK music stream has drive-side state — position, looping, play/pause — that must tick along realistically (and survive savestates). And the lid: two-disc games orchestrate their swap around the cover-open and cover-close interrupts followed by a re-check of the new disc. An emulator's “change disc” menu item must perform that whole theatrical sequence — open, swap, close, interrupt, re-identify — or swap-time code breaks.
Analogy · The too-perfect stagehand

A play's actors are cued by the set changes: they begin their lines when the scenery arrives. Hire a supernaturally fast stagehand who slams every set into place instantly and the actors trip over each other — scenes begin before costumes are on. The fix isn't a slower stagehand out of nostalgia; it's one who moves on the rehearsed timing, because the whole production was rehearsed around it. Dolphin's drive emulation is that stagehand: deliberately, faithfully punctual rather than maximally fast.

Instant reads (inaccurate) read cmd interrupt fires immediately… …while setup is still running callback order never seen on hardware → glitch Realistic timing (accurate) read cmd setup runs in the drive's shadow emulated seek + read interrupt — right on cue ✓ Same bytes both times. Only the when differs — and the when is part of the interface.
Correct data, wrong moment. Above: instant completion interrupts a setup phase that always finished first on real hardware — a latent bug becomes a real glitch. Below: Dolphin schedules the completion where the physical drive would have delivered it, and the rehearsed order holds.

How Dolphin plays it

So Dolphin's disc emulation is a small physics act. The DI block is emulated register-for-register; disc reads are served from the image on a separate thread (decompressing RVZ blocks on the fly); and — the heart of it — completion is scheduled, not immediate: the emulator models the drive's behaviour, informed by measurements of real hardware — per-command overheads, head travel related to how far the target is, the CAV read-rate curve rising toward the outer edge, even buffering effects where recently-passed data returns faster (the fine details are tuned in Dolphin's source; treat the exact model as an implementation detail that keeps improving). Accurate disc timing ships enabled by default, because a handful of well-known games simply break without it — and a per-game escape hatch exists for the impatient, which is Module 12's business.

The lab runs the same scripted “load a level” sequence twice, side by side: once with instant reads, once against the modelled drive. It's a deliberately simplified dramatisation — real failures are subtler and rarer — but the shape of the problem is exactly this.

Timing lab — instant vs realistic readsCanvas · dramatisation
Instant run idle Realistic run idle
A simplified dramatisation of a real class of bug — most games tolerate instant reads; a stubborn few do not, which is why accurate timing is the default.
Key takeaways
  • Emulating the drive is not “read the file”: games depend on realistic transfer and seek timing, sometimes accidentally.
  • Status/error behaviour, the DTK audio-stream state, and the cover open/close sequence are all part of the drive's observable interface.
  • Dolphin schedules read completions from a model of the real drive (seek distance, CAV rate curve, buffering), with accurate timing on by default.
  • Byte-perfect data at the wrong moment is still a bug — the when is part of the contract.
Module 12 · Part III

Try it in Dolphin

GoalTurn the whole course into things you can click: where images live, the settings that map to what you've learned, and the full laser-to-RAM journey in one picture.

You now know what a disc image is, so let's put the knowledge to work in the emulator. (Menu wording shifts a little between Dolphin versions; everything below is described by function, so you can find it whatever it's currently called.)

  • The game list. Point Dolphin at the folders holding your dumps; it accepts raw .iso/.gcm alongside compressed .gcz and .rvz (Module 10) and reads the boot header of each — the ID, title and banner you see in the list are Module 06's header, parsed live.
  • Convert. A built-in converter turns raw dumps into RVZ and back — losslessly, as Module 10 promised. Converting your library is the single most practical thing this course can hand you: identical games, a fraction of the disk space.
  • Verify. The game's properties window can hash your image and check it against the community databases — Module 10's “trust but verify,” one click away. If a game misbehaves, verifying the dump is always step one.
  • Disc-speed emulation. Somewhere in the settings lives the toggle from Module 11 — an option controlling whether reads follow the real drive's timing or complete as fast as possible (it has gone by names like “emulate disc speed” and “speed up disc transfer” across versions). Accurate is the default; the fast path shortens loads in many games and breaks a stubborn few. Now you know exactly why both facts are true.
  • Change disc. The disc-swap menu item performs Module 11's full theatrical sequence — cover-open interrupt, new image mounted, cover-close interrupt, re-identification — because two-disc games genuinely watch each step happen.
Analogy · The restored classic car

A lovingly restored classic can be driven two ways: factory-exact — original engine note, original (leisurely) acceleration — or quietly upgraded for the daily commute. Neither is wrong; you just want to know which you've chosen and why. Dolphin's disc-timing options are the same choice: factory-exact is the faithful default that everything was designed around; the upgrade is faster and almost always fine. “Almost” is Module 11 in one word.

The whole journey, one last time

Here is the entire course in a single chain — worth tracing with your finger once, because every link is now a module you've done:

Laser
pits → transitions → bits (01)
Sector
2,048 bytes, error-corrected (03–04)
Drive
firmware, seeks, CAV (05, 09)
DI · DMA
command in, sectors → RAM (07)
Game
FST offset → asset in memory (06)
pit / land laser + photodiode sector RS-corrected 2 KB drive firmware + buffer DI + DMA interrupt on done main RAM the game reads it in Dolphin: replaced by the image file + a timing model (10–11) emulated register-for-register — the game can't tell
Laser → sector → drive → DI/DMA → RAM. On real hardware, every byte a game ever touched made this trip. In Dolphin, the left half becomes an RVZ file plus a timing model, the right half is emulated exactly — and if both halves are done well, the game cannot tell the difference. That's the entire course in one sentence.

A good closing exercise: pick a game you know, convert it to RVZ, verify it, then boot it twice — once with accurate disc timing, once with the fast option — and pay attention to loading moments, streaming music, and area transitions. Nine times in ten you'll see nothing but shorter loads; you now know precisely what the tenth time would look like, and why.

Key takeaways
  • Dolphin reads ISO/GCM, GCZ and RVZ; convert to RVZ for identical games at a fraction of the space.
  • Verify dumps by hash from the properties window before blaming the emulator.
  • The disc-speed option is Module 11 as a checkbox: accurate by default, fast at your own (small) risk.
  • The full chain — laser → sector → drive → DI/DMA → RAM — is now something you can narrate link by link.
Module 13 · Part III

Epilogue: the last spinning disc

GoalStep back: where the GameCube's drive came from, where its lineage went, and what optical media did — for one shining decade — better than anything else.

The little drive you've spent twelve modules with did not retire when the GameCube did. Its direct descendant went into the Wii: a 12 cm drive from the same lineage, still speaking a proprietary DVD-based dialect — and, in the original models, still perfectly happy to accept an 8 cm GameCube disc, which is how the Wii ran GameCube games with no emulation at all: same drive family, same DI, same dance. The Wii U carried optical media one console further with a high-capacity custom disc, and then the line ended: the Switch went to solid-state cartridges and downloads, and Nintendo has not spun a disc since. Sony and Microsoft kept drives as optional Blu-ray appendages, but by the 2020s the industry's centre of mass had moved decisively to flash storage and downloads — no seeks, no rotational latency, no moving parts. Module 09's entire bag of tricks, obsoleted by silicon.

Analogy · The lighthouse and the GPS

Nobody argues GPS isn't better than lighthouses — and yet a lighthouse is a magnificent, comprehensible thing: you can stand inside one and see exactly how it works, lens to lamp. Optical drives are the lighthouses of storage. A flash chip is billions of invisible charge wells; a disc drive is a laser, a sled, a spinning platter and some heroic error correction — every part of which you have now personally watched work. When the machinery is visible, understanding is possible. That's why this course exists.

And be fair to the old machinery: in 2001, the spinning disc was the right answer, by a mile. A pressed disc cost mere cents to manufacture — orders of magnitude cheaper per gigabyte than any solid-state option of the day (N64 cartridges had cost dollars-per-megabyte territory to make; the exact figures varied by chip and volume, but the gap was brutal). The disc is why a GameCube game could afford 1.46 GB of textures, orchestral audio and full-motion video at a $49.99 price point. Every weakness you've studied — the seeks, the buffering, the corridor theatre — was the tax on an overwhelming bargain, and a generation of engineers paid it brilliantly.

2001 GameCube 8 cm · ~1.46 GB 2006 Wii — same lineage 12 cm · reads GC discs natively 2012 Wii U — the last one custom high-capacity disc flash 2017 Switch — nothing spins cartridges + downloads One drive lineage, and where it ended
The lineage. The GameCube's drive begat the Wii's — same proprietary approach, bigger platter, native backward compatibility — the Wii U pressed one last custom disc, and then the spinning stopped. Emulation and the RVZ archives of Module 10 are how this machinery stays alive and studiable.

If this course did its job, a GameCube start-up now sounds different to you: that whirr is a CAV spin-up, that first pause is the lead-in and boot header being read, the apploader is pulling the DOL into RAM, and somewhere a buffer is already filling ahead of the title screen. The same machine has more stories like this one. The audio course follows the DSP that DTK music flows into; companion courses on the graphics pipeline and the CPU trace the other paths out of that main RAM your sectors just landed in. And when you'd rather build than examine, the homebrew course shows you how to put a DOL of your own on the other end of this journey. Pick a door.

Course complete ✦
  • You can narrate a byte's full journey: pit → transition → sector → firmware → DI/DMA → RAM → FST lookup.
  • You know why the disc was small, custom, CAV and unreadable elsewhere — and how the protection era actually played out.
  • You can dump, compress (RVZ), verify and configure a game in Dolphin, and explain every option you touch.
  • The drive's lineage ran GameCube → Wii → Wii U, then the industry stopped spinning — preservation is now the disc's afterlife.

An interactive course built for the Dolphin project. Every disc, scratch and seek on this page is a synthetic simulation drawn on the fly with the Canvas API to illustrate a concept. This page contains no game data and no copyrighted material. Hardware behaviour is grounded in Dolphin's source and published reverse-engineering history; where a mechanism was never officially documented (the low-level protection details in Module 08, exact drive timings), the text says so and hedges.

Source of truth · Source/Core/Core/HW/DVD/ · Source/Core/DiscIO/