Emulation Basics: ROMs, Emulators, Cores, BIOS, and Firmware

Understand the files and software used for emulation and learn how LaunchBox connects a game to its emulator, core, BIOS, firmware, and dependencies.

Written By launchbox

Last updated 7 days ago

LaunchBox can organize and launch games from many systems, but it helps to understand the separate pieces involved. This guide explains the common emulation terms you will encounter and how LaunchBox connects them.

The essential idea: LaunchBox manages your library and starts the configured emulator with the game path and launch settings it needs. The emulator is the program that actually runs the game.


🖥️ Is LaunchBox an emulator?

No. LaunchBox is a game library manager and launcher. It stores information about your games, connects each game to the correct emulator or application, downloads optional metadata and media, and starts everything with the appropriate settings.

The emulator remains a separate program. Some LaunchBox import workflows can download and configure supported emulators for you, but the emulator still does the actual emulation.


🎮 What is a ROM?

ROM is commonly used as a general term for a game file made for an emulated system. Depending on the original hardware, the file may actually be:

  • A cartridge dump

  • A disc image

  • An arcade ROM set

  • A tape, floppy disk, or other media image

  • A folder containing several files

  • An archive containing supported game content

The file extension and structure must be supported by the emulator you choose. A compressed archive is not automatically compatible simply because LaunchBox can import it; the emulator must support the archive, or LaunchBox must be configured to extract it before launch. LaunchBox can add a file to the library even when the selected emulator cannot run that format, so a successful import does not automatically guarantee a successful launch.

LaunchBox does not provide commercial ROM collections, BIOS files, firmware, or encryption keys. Obtain and use game and system files only in ways permitted by the laws and licenses that apply to you.


⚙️ What is an emulator?

An emulator is software that reproduces enough of another system's behavior to run its games on your Windows PC.

Different emulators support different:

  • Platforms and game-file formats

  • Controllers and input methods

  • Graphics, audio, and performance options

  • BIOS, firmware, keys, or other dependencies

  • Command-line parameters and launch methods

LaunchBox needs to know the emulator's application path, which platforms it handles, and any parameters required to open a game correctly.


🧱 What is a core?

A core is an emulation module loaded by a multi-system application such as RetroArch. RetroArch is the main application, while each core provides support for a particular system or family of systems.

For a RetroArch game to launch successfully, LaunchBox needs the correct RetroArch emulator entry. In that emulator's Associated Platforms settings, the game's platform normally needs an appropriate core selected, and the corresponding core file must exist in RetroArch's cores folder.

A standalone emulator does not normally use RetroArch cores; its emulation code is built into that emulator application.


💾 What is a BIOS?

A BIOS is low-level system software originally stored on the hardware. Some emulators require a copy of this data to reproduce the original system accurately or to start games at all.

BIOS requirements vary by emulator and platform:

  • Some systems do not need a BIOS.

  • Some emulators can use a BIOS optionally for accuracy or compatibility.

  • Some systems require one or more exact BIOS files.

  • Filename, folder location, region, version, and checksum may matter.

For supported emulator integrations, LaunchBox can show known dependency requirements during setup and on the emulator's Dependency Files page. It cannot supply copyrighted or otherwise restricted BIOS and firmware files for you.


🔧 What is firmware?

Firmware is system software used by the original hardware or one of its components. In emulator documentation, firmware may refer to system software, device data, keys, fonts, or other files needed for compatibility.

The terms BIOS and firmware are sometimes used differently by different emulator projects. Follow the requirements documented by the emulator you are using.


🔑 What about keys and other dependency files?

Some newer systems require encryption keys, system files, device data, or other dependencies in addition to, or instead of, a traditional BIOS. These files may need to come from hardware or software you own.

If LaunchBox shows a Dependency Files page, use it as a checklist of the files known to that emulator integration. A found file is in the expected location; when LaunchBox has a known MD5 hash, the file's contents must also match that hash. Some entries are optional or alternatives, while missing required entries can prevent affected games from running. Always consult the emulator's own documentation for its complete, current requirements.


🔗 How LaunchBox connects everything

A typical emulated game launch follows this path:

  1. You select a game entry in your LaunchBox library.

  2. The game entry supplies its application path: the ROM, disc image, archive, playlist, folder, or other content to open.

  3. The game normally identifies which emulator entry LaunchBox should use. You can view this by right-clicking the game, choosing Edit, and opening Emulation.

  4. LaunchBox finds the matching row for the game's platform in that emulator's Associated Platforms settings. For RetroArch, this row also selects the core. It can also supply platform-specific command-line parameters.

  5. LaunchBox starts the emulator and passes it the game path and configured parameters. Game-specific parameters can override the platform or emulator defaults.

  6. The emulator loads any BIOS, firmware, keys, and other dependencies from the locations it expects.

The Default Emulator checkbox on an associated-platform row tells LaunchBox which emulator to prefer when assigning that platform to newly imported or newly added games. Existing games normally keep their saved emulator assignment unless you change it; when you make a different emulator the default, LaunchBox may offer to update those games.

If any link in this chain is incorrect, the game may fail to start even though it appears normally in the LaunchBox library.


✨ Automatic emulator setup

During supported import workflows, LaunchBox may offer to download, install, update, and configure a recommended emulator or emulator integration.

Automatic setup can handle many common choices, including application paths, associated platforms, cores, and default command-line parameters. It cannot provide game files, restricted BIOS or firmware files, encryption keys, or every system-specific configuration.

Review dependency indicators and test a game after setup instead of assuming that every file required by the emulator was included.


🛠️ Manual emulator setup

To connect an emulator yourself:

  1. Install or extract the emulator and confirm that it opens on its own.

  2. In LaunchBox, go to Tools > Manage > Emulators.

  3. Choose Add, or edit an existing emulator, then set its application path to the emulator's executable.

  4. Open Associated Platforms and add the platform name exactly as it appears in your LaunchBox library.

  5. Choose whether this should be the default emulator for newly assigned games on that platform.

  6. For RetroArch, select the appropriate installed core. For other emulators, add only the command-line parameters required by that emulator and platform.

  7. If the integration provides a Dependency Files page, review it and add any required files you are permitted to use.

  8. Test one game directly in the emulator, then test that same game from LaunchBox. If the game already exists in your library, confirm its Edit > Emulation page uses this emulator.


❓ Why did the game import but not play?

Importing and launching are separate steps. An import can create a valid library entry while the launch configuration is incomplete.

Common causes include:

  • The ROM or disc-image format is not supported by the emulator assigned to the game.

  • The game path changed after import, or the selected launch file is wrong.

  • The wrong emulator or RetroArch core is assigned.

  • The game's platform name does not match a row in the emulator's Associated Platforms settings.

  • A required BIOS, firmware, key, or dependency file is missing, has the wrong contents, or is in the wrong folder.

  • A compressed game needs extraction, or its extraction setting is incorrect.

  • A disc game was imported using a track file instead of its descriptor file, such as a .cue, .gdi, or .m3u file.

  • The emulator itself has not yet been configured for controllers, graphics, or system-specific requirements.


🧪 The best troubleshooting test

  1. Open the emulator outside LaunchBox.

  2. Load the same game using the same content file and, for RetroArch, the same core.

  3. If it fails there, fix the emulator, game file, or dependency problem first.

  4. If it works there but not in LaunchBox, right-click the game and check Edit > Launching for its application path and Edit > Emulation for its emulator assignment and game-specific parameters. Then check the emulator's associated platform, core, extraction option, and command-line parameters under Tools > Manage > Emulators.

Beginner rule: When practical, make one game work directly in the emulator before importing an entire platform. Then use that working setup as the foundation for the rest of the library.


📚 Quick glossary

  • LaunchBox: Organizes the library and starts the configured software.

  • ROM or game file: The content the emulator loads.

  • Emulator: The program that runs content from another system.

  • Core: An emulation module used by a multi-system program such as RetroArch.

  • BIOS or firmware: System software or data that some emulators require.

  • Associated Platform: A row that maps a LaunchBox platform to an emulator and stores its default status, platform-specific launch parameters, and, for RetroArch, the selected core.