.fw files.wiki
ROM

ROM Files

Generic ROM Image

A .ROM file is usually a raw firmware, BIOS, option-ROM, or emulator cartridge image copied from read-only memory.

Generic firmware or BIOS ROM image

Most common
Developer
Various hardware vendors
Category
System Files
MIME type
application/octet-stream
Format
Binary
First released
1970
Open standard
No

Video-game cartridge ROM image

Developer
Various console and computer vendors
MIME type
application/octet-stream
Format
Binary
First released
1976
Open standard
No

Raw embedded-device flash/ROM dump

Developer
Various embedded-system vendors
MIME type
application/octet-stream
Format
Binary
First released
1970
Open standard
No

IBM PC expansion Option ROM image

Developer
IBM / PC-compatible hardware vendors
MIME type
application/octet-stream
Format
Binary
Magic bytes
55 AA
First released
1981
Latest version
PCI Firmware 3.3
Open standard
Yes

UEFI option ROM image

Developer
UEFI Forum / PCI-SIG hardware vendors
MIME type
application/octet-stream
Format
Binary
Magic bytes
55 AA
First released
2005
Latest version
UEFI 2.10 / PCI Firmware 3.3
Open standard
Yes

Macintosh ROM image

Developer
Apple
MIME type
application/octet-stream
Format
Binary
First released
1984
Open standard
No

Online .ROM Text Viewer

Reading file…

What is a .ROM file?

A ROM file, contrary to common belief, is not an exact file format. Instead, this extension is used to denote an unspecialized extension of dumped or created read-only memory files. Usually, a file denoted with .ROM stands for firmware or BIOS stored on motherboard, graphics card, optical drive, network routers, embedded boards and other equipment made by multiple manufacturers. The content is usually the raw data without a container, so any .bin file is a potential equivalent of any ROM file.

ROMs are widely used in emulation too. For instance, users may face the ROMs representing cartridge-chip dumps from various arcade boards, classic computers and consoles. There is a tendency among systems developers using such extensions as .nes, .sfc, .gb, .gba, .n64 and others. However, one may still meet some .ROM files. As for Macintosh system emulation, there are the Apple ROM dump required in SheepShaver, Mini vMac.

Some common specific file types worth discussing: PC expansion option ROMs and UEFI option ROMs. Both of those are usually very small firmware blobs for various PCI/ISA equipment and start with bytes 55 AA at 0. An even broader definition of .ROM is reserved for embedded-device ROMs. The content may represent flash partition, firmware, bootloader, compressed kernel, root filesystem, calibration and vendor payloads, etc. Due to ambiguity, the file can be identified through source and size, strings and specific headers (bytes, content), as well as various tools (such as binwalk or file utility).

How to open a .ROM file

Open a .ROM file on Windows

  1. 1 Go to the folder with your file in File Explorer. Usually, downloaded files end up in Downloads.
  2. 2 Double-click your .ROM file if you have an app for .rom files on your computer. In case it does not open, move on to step three.
  3. 3 Right-click your .ROM file -> select Open with -> Choose another app.
  4. 4 Choose HxD in the list (Windows 11: choose Always). For Windows 10 -> put a check on "Always use this app to open .rom files" and click OK.

Still not opening? See common problems and fixes, or view it in your browser.

Programs for Windows

Open a .ROM file on macOS

  1. 1 In the Finder app, locate your .ROM file.
  2. 2 Just double-click your .ROM file in order to automatically launch the program which is connected with it.
  3. 3 Need another app on your Mac? Control-click the file (or right-click with a mouse). In the pop-up menu select Open With -> ImHex.
  4. 4 If it isn't in the list, choose Other… and find the application manually.

Still not opening? See common problems and fixes, or view it in your browser.

Programs for macOS

Open a .ROM file on Linux

  1. 1 Launch your file manager. Depending on the desktop it may be named Files (GNOME), Dolphin (KDE Plasma), Nemo (Cinnamon) or Thunar (Xfce).
  2. 2 Double-click the file.
  3. 3 Or choose another program by right-clicking the file -> Open With -> ImHex.
  4. 4 Install ImHex (if it is not installed on your computer) from the software centre, repository or Flathub.

Still not opening? See common problems and fixes, or view it in your browser.

Programs for Linux

Open a .ROM file on Android

  1. 1 Launch Files or another file management app.
  2. 2 In Downloads, find the .ROM file and open it by tapping.
  3. 3 A list of apps capable of opening the file will be shown. Tap a suitable app and press Always to permanently connect the file type with this app.
  4. 4 No apps able to open this file? Download a suitable app from the Google Play Store.

Still not opening? See common problems and fixes, or view it in your browser.

Programs for Android

Open a .ROM file on iPhone / iPad

  1. 1 Use the Files app and go to On My iPhone, iCloud Drive or Downloads.
  2. 2 Tap the .ROM file you want to open.
  3. 3 If the file can be opened by a built-in iOS app (supported format), it opens automatically.
  4. 4 Touch and hold the file to get the context menu -> choose Share -> select a suitable app from the list of apps.
  5. 5 If there is no such option, download the app first from the App Store and then tap the document again.

Still not opening? See common problems and fixes, or view it in your browser.

Programs for iPhone / iPad

Open a .ROM file online

  1. 1 Move to the online viewer at the top of this page.
  2. 2 Drag the file there or select it, and its contents will appear in your browser tab. The file is not uploaded.

Still not opening? See common problems and fixes, or view it in your browser.

Programs for Online

More details about opening .ROM files

If you are using Windows system you need to go with HxD and ImHex as both of them open the file directly as hex bytes, but not running the code. If you know the firmware of that device - RetroArch can be used on Windows for opening any supported known game dump file by installing the required core for it. Flashrom tool works well with various board and BIOS firmware on Windows and also for a part of hardware programmers as they are supported.

UEFITool, SheepShaver, UTM, ImHex on macOS allows inspecting the ROM file in your particular case. Imhex allows raw inspection and searching some information in file, guessing its structures and color-code them. OpenEmu and Mini vMac are useful for running console games and old Macintosh systems. Also, command-line binwalk may be good for extracting embedded data. Some tools are available as free, but some versions are commercial and may be downloaded only from the Mac App Store on macOS.

On Linux, flashrom reads and writes supported flash chips. Common tools to analyze are: UEFITool, binwalk, GHex, ImHex, objdump, objcopy. Common programs used as emulators: QEMU, MAME, Bochs and some similar.

On Android system RetroArch may open various dumped games ROM images by adding cores, supported console image in RetroArch on your mobile phone.

For iOS Delta program may be used to run some console supported images of your device, also UTM can be used with a proper supported configuration of the emulator. Universal browser-based application with support rendering of .ROM files is still missing. Otherwise, hex viewers can be used. In case that the doubleclick will open incorrect file without result just do not change name of file and use specific software for analysis of the particular console.

Technical details

Mostly, .rom file consists of raw binary image without wrapping, fixed sized metadata area and fixed named file extension. For non-specific ROMs like generic firmware image or ROM image, there might not be any magic byte sequences at all. Identification process might be done through size of the file, checksum, specific data of mapper/header, interrupt vectors, well-known text string and the original software to create that image. Majority of these files are recognized as raw image. A .rom image file might look the same like a .bin file except filename only.

PC compatible expansion option ROMs make an exception and have very unique characteristic: the beginning is made by 55 AA at 0 offset, then it has a field of the size in 512 blocks and always contains initialization vector and also might have its image checked for correctness. PCI option ROM contains PCIR data block with identification of ROM image type, code types and size. A single PCI ROM can contain more images like a number of payload code segments for some processors type.

UEFI option ROM images use similar 55 AA wrapper, however there is possibility to have either EFI executables or old-fashioned x86 code, or both together. Usually, UEFI compatible PC motherboard images have format of volume firmware with FFS files inside. The vendor updates might add another level to the packaging however the original flash dump should be still a collection of regions of firmwares.

The typical size ranges from KB of cartridge and option ROM files from old times until 8-64 MBytes of new pc mother board ROM files. The embedded flash dumps also are usually quite large in size especially where the complete NOR or NAND dumps are available. There exists no specific .rom MIME type. The safest option is application/octet-stream.

How to convert .ROM files

In a conversion where renaming the extension works, only that is required provided the tool supports that kind of extension rename, i.e. the bytes stay the same and only the extension changes, cp input.rom output.bin is all that is needed. To have binary raw image change to text with address records, we will use GNU objcopy to generate either: objcopy -I binary -O ihex input.rom output.hex or objcopy -I binary -O srec input.rom output.srec Here we simply change the format without actually modifying our raw bytes data, without changing device details and information included in a particular file structure.

The binwalk -e input.rom allows to extract Linux kernels or squashfs/cramfs embedded inside routers/IoT devices, certificate/other files and compressed segments, provided there are proper signatures found. For full PC firmware dump, we use UEFITool NE and UEFITool to extract UEFI firmware volume, DXE modules/drivers, microcode updates, NVRAM storages and option ROM modules. For ROM hacks, Floating IPS applies an IPS/BPS patch to the matching dump version to produce the patched ROM.

To get the byte code converted to disassembly we will again use our standard workflow using tools mentioned such as Radare2, Ghidra and objdump as well as IDA, with no possibility for getting symbols/source/comment preserved. We can not get a game ROM converted to format used for other gaming console, as these are different matters.

Convert toToolCommand / note
Intel HEX (.hex) GNU objcopy objcopy -I binary -O ihex input.rom output.hex Useful for EPROM programmers and microcontroller tools; address origin is assumed to be 0 unless adjusted with objcopy options.
Motorola S-record (.srec/.s19) GNU objcopy objcopy -I binary -O srec input.rom output.srec Converts raw bytes to an address-record text format; does not add device-specific metadata.
Binary image (.bin) cp / copy cp input.rom output.bin .rom and .bin are often only different filename extensions for the same raw bytes.
Extracted firmware filesystem/files Binwalk binwalk -e input.rom Works when the ROM contains recognizable compressed streams, archives, SquashFS, cramfs, UBI, or other embedded payloads.
Disassembly listing (.asm/.txt) radare2 r2 -A -q -c 'pD $s' input.rom > output.asm Produces architecture-dependent disassembly; select CPU, bitness, and load address for accurate results.
Patched ROM image Floating IPS For game ROM hacks, apply a BPS/IPS patch to a legally obtained matching ROM; output remains a ROM image.

Common problems and fixes

"Format not recognized" often means either that a file is incompatible with the intended tool/hardware/platform/chip size/image orientation. For example: there won't work 512 KB BIOS dump in emulator core expecting 1 MB file, option ROM dump for IBM PC with 55 AA starting from offset 0 doesn't have chance to be loaded as cartridge ROM. When there is black screen in emulator tools like MAME, RetroArch, OpenEmu, Delta, 86Box, QEMU, Bochs - this may be a problem of missing BIOS, incorrect region set, corrupted or wrong header, mapper used for selected core is not supported yet or not properly handled, and the case when image file is still compressed for some other reason (for example an archive).

"Bad checksum," "Invalid ROM," and "BIOS checksum error" often mean truncated image, byte-swapped ROM, altered header or ROM image for incorrect revision of HW. With PC option ROMs two things are critical - the correct size byte and a correct checksum value. With consoles/computers the slightest change even in one-byte can change expected vectors/validation arrays etc… If you see write error using flashrom make sure that proper chipset is used, correct Write protect pins, proper unlocked state of Descriptor regions, right voltage and chip description provided.

QEMU, 86Box and Bochs return error "No bootable device," when a dump is used directly on as boot disk, instead being loaded by emulator either directly as BIOS (option BIOS rom for IBM) pflash/efi or loaded just as firmware for selected device. Also, for UEFI images, UEFITool returns "not a valid UEFI image" when a dump of update in .CAP, vendor encrypted/signed/combined/zip bundle file or legacy BIOS is attempted. When FAT32/COPY/PEN drive truncates a dump file - better dump original file again.

Security considerations

The .rom file cannot be typically treated as a document that belongs to the operating system because it may contain code or instructions that are executed on specific types of processors such as CPUs and GPUs or optional and embedded boards that can have a dedicated ROM. An incorrect flashing can damage your board, destroy its security capabilities or boot sequence, install persistent malware, or erase data in nonvolatile registers.

However, the dumps of option and other ROM may also include hardware-specific serial numbers, MAC addresses, information about wireless connections (including Wi-Fi keys), certificates used for authentications in the internet, device keys, settings stored by nonvolatile memory variables, etc., even information saved during user backups. Ensure that you do not distribute dumps that violate intellectual property right and do not require any special privileges for their analysis.

History and versions

The 1970s era witnessed the use of read-only memory chip on many commercial computers, consoles, and game stations and byte dumps of ROM contained popular file names such as ".ROM" and ".bin." ROM has always remained an integral part of computer hardware since 1981 IBM PC which used to contain BIOS ROM as well as scanned options ROM. Later in 1984, Macintosh released their own Mac ROM which is currently being used by MAC emulators. M.A.M.E., Arcade machine preserving tool and console emulating software started maintaining ROM dump database which also included cartridge dump in late 1990s. Later PCI option ROM structures started expanding for EFI and UEFI firmware modules and eventually, from the 2010s onwards, BIOS was replaced by UEFI in the PC world. Though, no one defines any single .ROM file extension but it has been traditionally retained and continues to be used for BIOS firmware repairing, custom BIOS modifying, old computer preservation, and reverse engineering.

.BIN comes as close to ROM file format because many programs can consider these formats the same when it comes to identical byte order, particularly when dealing with microchips of software or cartridge backups. The .HEX file extension involves Intel Hex format and features address information and error checking, which makes its utilization convenient for microcontrollers in case the programming tool used supports the file format. There are Motorola S-records in such extensions as .S19, .S28, .S37 and .SREC. They also are important in terms of embedded production flow. The vendor updates known by names such as the capsule UEFI updates will involve .CAP file format. The .FD and .WPH extensions belong to some popular vendors such as AMI, Insyde, Phoenix and laptop utilities services. The typical games have such file extensions as .NES, .SNES or .SFC for console games, .GB or .GBA for portable games, and .N64. ISO does represent optical disc sectors, not memory chips.

Comments (0)

Replying to

No comments yet. Be the first to share your experience with this file type.