How to Add Cheats to the Flycast Core in RetroArch
If you've been playing Dreamcast, NAOMI, or Atomiswave games through the Flycast core in RetroArch, you may already know it's one of the most accurate emulators available for that hardware generation. What fewer people realize is that RetroArch has a built-in cheat management system that works directly with Flycast â no external tools or patched ROMs required. Here's how it actually works.
What Is the Flycast Core and How Does Cheat Support Work?
Flycast is a RetroArch core (a self-contained emulation engine) built for Sega Dreamcast and arcade hardware. Unlike standalone emulators that may bundle cheat databases or GUI tools, Flycast relies on RetroArch's core cheat infrastructure â a system that applies memory patches at runtime using cheat files stored in a standard format.
These cheat files use the .cht extension and are plain text. Each entry contains a name, a memory address, a value to write, and a toggle state. RetroArch reads these files and applies the patches during gameplay, so no ROM modification is involved. đŽ
Finding or Creating Cheat Files
Before you can load cheats into Flycast, you need the .cht file for your specific game.
Option 1: Download from RetroArch's Cheat Database
RetroArch maintains an official cheat repository on GitHub (libretro/libretro-database), which includes .cht files for many Dreamcast titles. You can also update cheats directly inside RetroArch:
- Open RetroArch
- Go to Main Menu â Online Updater
- Select Update Cheats
This downloads the full cheat database to your system's cheat directory, typically located at:
- Windows:
RetroArchcheats - Linux/macOS:
~/.config/retroarch/cheats/ - Android:
/storage/emulated/0/RetroArch/cheats/
Cheats are organized in subfolders by system and then by game title.
Option 2: Write a Cheat File Manually
If your game isn't in the database, you can create a .cht file yourself. The format looks like this:
cheats = 1 cheat0_desc = "Infinite Lives" cheat0_enable = false cheat0_code = "XXXXXXXX+YYYYYYYY" The code format Flycast uses is typically GameShark or Action Replay style codes, which are widely documented for Dreamcast games across community databases and fan wikis. Codes are written as address+value pairs.
Loading Cheats Into the Flycast Core đšī¸
Once your .cht file is in place, loading it during a session is straightforward.
- Launch your game using the Flycast core
- Once the game is running, open the Quick Menu (usually by pressing F1 on desktop, or your configured hotkey)
- Navigate to Cheats
- RetroArch will attempt to auto-load the matching
.chtfile based on the game's file name or hash - If not auto-loaded, select Load Cheat File (Replace) and browse to your
.chtmanually - Toggle individual cheats on or off using the list that appears
- Select Apply Changes to activate them immediately
Changes take effect in real time for most memory-based cheats, though some require you to start a new game or reach a specific point before they activate.
Variables That Affect Whether Cheats Work
Not every cheat works reliably with every setup. Several factors determine real-world results:
| Variable | Why It Matters |
|---|---|
| Game region | Memory addresses differ between NTSC, PAL, and JP releases |
| Game version/revision | Even minor disc revisions can shift memory layouts |
| Cheat code source | Codes written for hardware cheat devices may need format conversion |
| RetroArch version | Older builds may have cheat UI differences or bugs |
| Core version | Flycast updates occasionally change how memory is mapped |
| Cheat type | Some codes are one-time writes; others need constant re-application |
Region mismatches are the most common reason a cheat appears to load but does nothing â or causes a crash. A code written for the Japanese version of a game often won't function on the US release because the memory address where "lives" or "health" is stored sits at a different location.
Saving and Managing Your Cheat State
RetroArch gives you a few options for persistence:
- Save Cheat File writes your current cheat state back to the
.chtfile, preserving your toggle choices - Autoload behavior can be configured in RetroArch's settings so enabled cheats are applied automatically each session
- You can maintain separate
.chtfiles for different play styles (speedrun vs. casual) and swap them using the Load menu
If you're using a cheat that conflicts with another â for instance, two codes that write to overlapping memory addresses â the last one applied generally wins, though behavior can be unpredictable.
The Spectrum of User Experiences
For someone running a well-maintained RetroArch build on desktop with a clean library of Dreamcast ISOs matched to community-documented cheat codes, the process is largely seamless. The Online Updater handles the database, file naming conventions take care of auto-matching, and the Quick Menu makes toggling simple.
For someone using a custom Android build, a modded console frontend, or games ripped from discs that don't match standard naming conventions, each of those steps introduces friction. The cheat file may not auto-match, region codes may be ambiguous, and some frontend overlays hide the full Quick Menu depth.
There's also a meaningful difference between users working with well-documented retail Dreamcast titles versus NAOMI or Atomiswave arcade ROM sets, where cheat databases are thinner and code documentation is scattered across specialized communities rather than centralized repositories. âī¸
How smoothly this process goes â and which cheats actually function reliably â depends heavily on the specific game, the source of your ROM, which version of RetroArch and Flycast you're running, and how closely your setup matches the environment those cheat codes were originally written for.