-
Notifications
You must be signed in to change notification settings - Fork 2
Dreamcast
Getting battery saves to work requires satisfying five conditions simultaneously — missing any one results in "No VMU Found":
-
RETRO_ENVIRONMENT_SET_CONTROLLER_INFO(cmd 35) must returntrue. Returningfalsecauses Flycast to skip all sub-peripheral initialization. -
RETRO_ENVIRONMENT_GET_RUMBLE_INTERFACE(cmd 23) must supply a function pointer. Even a no-op stub works, but returningfalseblocks sub-peripheral setup. -
Core options
reicast_device_portN_slot1 = "VMU"must be pre-seeded beforeretro_load_game. The core reads these during maple bus reconfiguration on load. -
retro_set_controller_port_devicemust be called for all 4 ports, not just port 0. This triggers full maple bus reconfiguration. -
The
system/dc/directory must exist, but VMU files must NOT be pre-created. Flycast auto-createsvmu_save_A1.binetc. 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, notflycast_.
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.
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.
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.
Console Notes
- Nintendo 64
- Nintendo 3DS
- GameCube
- Sega Saturn
- Dreamcast
- PlayStation
- PlayStation 2
- PlayStation Portable
- TurboGrafx-CD
- Neo Geo
- Arcade
- Vectrex
- Philips CD-i
- Atari Jaguar
Features
- Artwork & Metadata
- Cheats
- Cloud Sync
- Disc-Based Systems
- Disk Swapping
- Portable Mode
- RetroAchievements
- ROM Hacks
- Hardcore Compliance
Technical
Platforms
Legal