Source/Core/Core/ handles the fundamental hardware emulation for both GameCube and Wii systems.
Console Type Detection
Dolphin supports multiple console types defined inCore/Core.h:
- Boot ROM behavior
- Hardware capabilities
- Memory map layout
- Available peripherals
Hardware Components
TheCore/HW/ directory contains emulation for all hardware subsystems:
Memory Interface
Location:Core/HW/MemoryInterface.cpp
Emulates the memory controller:
- Main RAM access (24 MB GameCube, 64 MB Wii)
- Memory protection and address translation
- Cache control
- Memory refresh timing
Processor Interface
Location:Core/HW/ProcessorInterface.cpp
Handles CPU-GPU communication:
- Interrupt controller (32 interrupt sources)
- Reset control
- Console type configuration
- Debug communication
Video Interface
Location:Core/HW/VideoInterface.cpp
Emulates the video output controller:
- Display timing generation
- Vertical blank interrupts
- Video mode configuration (NTSC, PAL, progressive)
- XFB (External Framebuffer) management
Audio Interface
Location:Core/HW/AudioInterface.cpp
Streams audio from RAM to output:
- DMA from main RAM
- Sample rate control (32 KHz default)
- Audio interrupts
- Streaming mode
Serial Interface (SI)
Location:Core/HW/SI/
GameCube controller port emulation:
- 4 controller ports
- Memory card slots (2 per controller)
- GBA link cable support
- Keyboard support
- Standard controller
- GBA
- Steering wheel
- DK Bongos
- GC Keyboard
EXI (External Interface)
Location:Core/HW/EXI/
Expansion port emulation:
- Memory cards (slot A/B)
- Broadband/modem adapter
- Real-time clock
- IPL/BIOS chip
- Gecko code handler
DVD Interface
Location:Core/HW/DVD/
Disc drive emulation:
- Disc reading and seeking
- Drive authentication
- Audio streaming from disc
- Read commands and DMA
Boot Process
Location:Core/Boot/
The boot process depends on the game type:
- GameCube Games
- Wii Games
- Wii Channels
System Timing
Location:Core/HW/SystemTimers.cpp
Dolphin uses a cycle-accurate timing system:
| Component | Clock Speed | Cycle Time |
|---|---|---|
| CPU | 486 MHz (GC/Wii) | ~2.06 ns |
| GPU | 162 MHz (GC), 243 MHz (Wii) | ~6.17 ns / ~4.12 ns |
| DSP | 81 MHz | ~12.35 ns |
| AI | 32 KHz sample rate | 31.25 μs |
- Video interrupts (60 Hz NTSC, 50 Hz PAL)
- Audio DMA
- DSP communication
- Peripheral polling
Configuration System
Location:Core/Config/
Hierarchical configuration with layers:
- Base layer: Dolphin.ini defaults
- Game layer: Per-game overrides (GameSettings/*.ini)
- Runtime layer: Temporary runtime changes
Save States
Full system state can be serialized:Saved Components
Saved Components
- All CPU registers (GPR, FPR, SPR, CR, etc.)
- Main RAM contents (24/64 MB)
- GPU state (registers, caches, command buffer)
- DSP state (IRAM, DRAM, registers)
- All hardware registers
- Peripheral state (controllers, memory cards)
State Format
State Format
Binary format with version header:
Save states are not compatible across Dolphin versions due to internal changes. Use in-game saves for long-term storage.
Debugging Features
Location:Core/Debugger/
Built-in debugging tools:
- Code Breakpoints: Break on PowerPC address execution
- Memory Breakpoints: Watch RAM reads/writes
- Logging: Per-component log levels
- Disassembly: PowerPC instruction viewer
- Register Inspector: CPU/GPU register display
- Memory Viewer: RAM/cache browser
--debugger flag or in settings.