Skip to content

Dreamcast

codingncaffeine edited this page May 26, 2026 · 2 revisions

Dreamcast (Flycast)

VMU Saves / "No VMU Found"

Getting battery saves to work requires satisfying five conditions simultaneously — missing any one results in "No VMU Found":

  1. RETRO_ENVIRONMENT_SET_CONTROLLER_INFO (cmd 35) must return true. Returning false causes Flycast to skip all sub-peripheral initialization.

  2. RETRO_ENVIRONMENT_GET_RUMBLE_INTERFACE (cmd 23) must supply a function pointer. Even a no-op stub works, but returning false blocks sub-peripheral setup.

  3. Core options reicast_device_portN_slot1 = "VMU" must be pre-seeded before retro_load_game. The core reads these during maple bus reconfiguration on load.

  4. retro_set_controller_port_device must be called for all 4 ports, not just port 0. This triggers full maple bus reconfiguration.

  5. The system/dc/ directory must exist, but VMU files must NOT be pre-created. Flycast auto-creates vmu_save_A1.bin etc. using its own zlib-compressed format. Pre-creating empty files → core sees them as corrupt → "No VMU Found".

Note: The core option prefix is reicast_ in this build, not flycast_.

RetroAchievements

Dreamcast .chds identify and unlock achievements end-to-end (v1.6.9). The libchdr-backed cdreader handles the GD-ROM HD-area canonical-anchor rebase that Dreamcast PVDs depend on — see RetroAchievements for the implementation detail. .gdi, .cdi, and .cue+.bin continue to work through rcheevos's default reader.

Visual Upgrades

Out of the box, Dreamcast renders at native 640x480. The Flycast core has strong upscaling support — change these in Preferences → Cores → Flycast Options or per-game:

Option Native Upscaled (suggested)
reicast_internal_resolution 640x480 1920x1440 or 2560x1920
reicast_anisotropic_filtering 4x 16x
reicast_texupscale 1x 4x (xBRZ texture upscaling)
reicast_mipmapping enabled enabled
reicast_alpha_sorting per-triangle per-pixel (most accurate, slightly heavier)

All options take effect immediately without restarting the game.

30fps Games Running at 2x Speed

Some Dreamcast titles run at native 30fps — they advance two game frames per retro_run() and produce ~33ms of audio per call. A Stopwatch-primary loop that waits one targetFrameMs (16.7ms) between calls runs the game at 2x speed.

The fix is audio-drain waiting — see Emulation Timing.

Clone this wiki locally