aquova.net Github's logo Mastodon's logo Blue Sky's logo Backloggd's logo Pico-8's logo The RSS logo


Video Game File Formats

Getting into retro gaming is a slippery slope. It begins with just ahem "acquiring" the games you really want to play for just a few systems. Eventually this escalates into trying out more and more games until you're storing entire system collections and have a wide variety of obscure platforms no one remembers. When you accumulate a large collection however, it's easy to end up in a place with a wide variety of different file formats, even for the same system. I wanted to take a moment and discuss the different options for many of the different consoles, and which I have personally elected to store my files in.

This is not going to cover every single possible file format and its pros and cons, instead it will just go over the ones you are most likely to encounter, the differences between them, and the justification for which I personally prefer. If you also don't care for my babbling, an excellent reference can be found on the Emulation wiki, which gives details for many disc-based systems.

Nintendo Consoles

NES

Starting off simple are NES ROMs. The only format you will likely ever see is the iNES format, which has the .nes extension. This format provides useful metadata about the game stored in the file's header, followed by the dump of the game itself. Although it was created by an early NES emulator developer, it became so widely accepted that even Nintendo uses it for their Virtual Console games.

SNES

Unlike the NES, the Super Nintendo has two widely used formats, although calling them different formats might be somewhat misleading. The first is the .sfc file extension, which is simply a dump of the SNES cartridge with no modifications. The second is .smc which is identical to the .sfc file but with the addition of a 512 byte header. This header is useless. It's a relic of an old cartridge dumping device and provides no useful information for emulators. That being said, since the .smc is so wide spread, SNES emulators largely are able to expect it and ignore it. There is no reason to keep it around though, so I would strongly recommend storing your games as .sfc files. There are tools available that will simply delete the first 512 bytes of the file to make this conversion, although it's important to note that while you can go from .smc to .sfc, you cannot go back.

You may be wondering why the NES needed a special format with a header while the SNES apparently does not. The NES format stores information about the physical components of its cartridge in the header. This is required so the emulator knows how to configure various parameters. This would be needed for the SNES as well, except the SNES game format already includes this information (even though real hardware doesn't actually use it). Dumping devices don't need to store any additional information about the cartridge because the original developers did that for us.

N64

There are three common Nintendo 64 file formats, although two of them are much more common than the third. These are the .n64, .v64, and .z64 formats, with .n64 and .z64 being the two common ones. Unlike the NES and SNES, there are no header differences here. Instead, the three formats differ based on their endianness. Without getting too technical, when the data values you're working with are large enough to require more than one byte each, there's different ways to actually store them in a file. So long as you're consistent all the way through, you can use any endian style you prefer. However, the designers of the N64 chose Big Endian for cartridges, meaning that only the .z64 format stores the game in the same manner as a physical cartridge. The other two formats are again due to the dumping devices which produced .n64 and .v64 files back in the day. It's strongly suggested you store all your N64 files as .z64 files, and there are programs that can do this conversion. Conveniently, converting between any of the three formats is possible without any data loss, although the only practical reason to do this would be for mods that only support one of the other formats.

GameCube

Here's where things get interesting. The GameCube has quite a few widely used formats, somewhat due to the prevalence of the Dolphin emulator, whose developers have devised a number of these formats. Because the GameCube is an optical disc format, it will share similarities with most of the other disc systems we'll discuss later, although it does have a few unique ones to itself.

The first to discuss is perhaps the most common, the .iso format. As I was saying, ISOs are by no means unique to GameCube games, and are instead a direct rip of all the data stored on an optical disc. When you rip an .iso, the software has no idea what is and isn't useful data, so the entire disc is ripped and encoded into a file. This means that .iso files are always the same size -- the maximum size of the optical media in question. For the smaller discs the GameCube used, this means that all GameCube .iso files are exactly 1.4GB.

It's very rare for any disc to contain 100% useful data. Instead, .iso files will store a lot of empty data that will never actually be accessed. With some knowledge about how the platform stores its data on disc, it's possible to identify useless data and remove it. For GameCube (and Wii games) this was commonly done using a format called NKit. NKit would perform the steps to strip out the unused junk data in a reversible fashion, and was commonly used on both .iso and .gcz files. Since it could be used on more than one format, it was common to see these files saved as .nkit.gcz or .nkit.iso depending.

Speaking of .gcz, this was a compressed format for GameCube games created by Dolphin. After importing games into Dolphin an option would be available to compress them into their own .gcz format, which could be combined with NKit for better gains.

I've used the past tense for most of these formats because none of them are really recommended anymore. In recent years, Dolphin has devised a new file format which improves upon the benefits of .gcz and NKit. This is the .rvz format, and it's the current recommended format for GameCube titles. Conversion can be done within Dolphin and it is fully reversible back to raw .iso files. This benefit is important as while Dolphin can readily use .rvz files, a real GameCube cannot. So if you have a modded GameCube, you will need to convert back to .iso before attempting to load the game.

Wii

Wii shares a lot of similarities to the GameCube, both in physical architecture but also perhaps due to also being supported by Dolphin. Like GameCube games, physical Wii games can be ripped as .iso files, the junk data can be removed via NKit, and they are also supported by the new .rvz format. Like the GameCube, it is recommended that you store games as .rvz for space efficiency reasons. There are a few other formats that exist, such as .wia and .wbfs, but I personally haven't encountered them much and they seem to not be as preferred as .rvz these days.

Unlike the GameCube however, the Wii supported digital download games. Since these did not ship on a physical disc, the .iso format doesn't apply to them. The .wad format (not to be confused with WADs for Doom) is the primary format for WiiWare titles. From what I can tell, this is really the only format for WiiWare games, and as such is really the only choice for archiving.

Wii U

The Wii U disc format allows for up to 25GB of storage, further necessitating the need for some sort of compression. There are a number of different formats which can be converted between.

Perhaps the one I see most commonly is just the raw game data extracted from the device. These can be identified by assets broken out into game, content, and meta folders. Since these are just the raw assets, they can be compressed like any other folder into something like .zip.

When dumping from a disc though, a disc image similar to an .iso is produced, identified as a .wud file, or more commonly compressed into a .wux file. These can be executed by the Cemu emulator and can be converted back into a format a physical Wii U can use. Lastly is the .wua format which was created by the Cemu emulator as a more optical file format. Games stored as raw files can be converted into .wua, which combines everything into a single, compressed file which can be directly used by Cemu (which something like .zip cannot). I am a little unclear on whether .wua archives can be converted back into a format useful for physical hardware however, but if that is not a concern, then this is the optimal format.

Switch

There are two common Switch formats, and in a way they mimic the formats on previous Nintendo consoles. These are .xci and .nsp. .xci files are complete dumps of a physical Switch cartridge, which often can contain assets not required by the game itself. .nsp is more akin to the digital download of the game, which doesn't include any of the junk data .xci might. Both are perfectly valid formats, but .nsp is more advantageous for its (sometimes slight) size benefits. I also prefer .nsp for its usability. Since .xci files are packaged cartridge games, they will need to be "installed" to the emulator in question, while .nsp files are more readily available to be played. This is a small difference in practice -- and some people might prefer the opposite behavior -- but I personally have stored everything as .nsp for this reason.

Nintendo Handhelds

Game Boy / Game Boy Color

The Game Boy immediately stands out as being simpler to the home Nintendo console by only having a single file format. Like the SNES, this format is just a raw dump of the data stored on the cartridge ROM, but unlike the SNES, no one made a competing format with a useless header. You will sometimes see different file extensions for Game Boy games -- .gb versus .gbc are common to differentiate between GB and GBC titles, but I have rarely seen .dmg or .bin files. There are no differences between these (even between .gb and .gbc), they're just there for recognition, you're free to rename them to the standard you prefer, which I would recommend being .gb and .gbc.

Game Boy Advance

I have never seen any GBA formats other than .gba, which like the GB/GBC before it, is a dump of the game's cartridge. I have seen some older dumps with custom intros added in by the developers who dumped them. This is an older (and terrible) practice that seems to have fallen out of favor, and isn't unique to GBA, but it's the system I've historically seen on the most. Perhaps this was just my own experience as those dumps are largely frowned upon.

Nintendo DS/DSi

Like the two systems before it, the DS has only one widespread file format -- .nds files. Some research implies that DSiWare titles might have their own format which is a dump of the download format, but I've only ever seen DSiWare games also distributed as .nds files.

Nintendo 3DS

Finally, something a bit more complicated. The 3DS has quite a few different formats, with the most common being .3ds, .3dsx, and .cia. The simplest to understand is .3dsx which is only used for Homebrew titles. For commercial titles, it's somewhat similar to the different Switch formats, with .cia used for installable game dumps while .3ds files are cartridge dumps but don't need to be installed to be used. I personally prefer .3ds when using an emulator, as they can simply be launched, but .cia files integrate to a 3DS home screen, making them more ideal on a real unit. However, both play just as well in emulators as on real hardware.

Note that while the New Nintendo 3DS has games that aren't supported on a base 3DS, there's no separate file format. AFAIK only way to tell if a game isn't going to work on a base 3DS is to try it, or to memorize the small list of commercially released New 3DS titles.

Sony

PlayStation

Since most Sony consoles are disc-based, the general advice for disc systems applies. I discussed a few of these when discussing GameCube and Wii titles, but there are other formats that don't apply to them. The PS1 used a version of the CD format to store data, and thus the primary format you'll encounter is based off of the Audio CD format, which is made up of a combination of .bin and .cue files. .bin is a general file extension for binary data. For PS1 games this will include all the game and audio data, and it is not uncommon to have more than one .bin file. .cue files provide a datasheet for giving context to each of the accompanying .bin files. You'll sometimes see .iso files rather than .bin, or for traditional audio files to be mixed in, but this is more or less the same format.

BIN/CUE files are fine, but it can be a bit of a pain to have to manage multiple files per game. A new format has been created by the MAME arcade developers to compress optical media data into a single .chd file. This format has become well supported by relevant emulators. You'll see me mention this format quite a bit in this article, as it's the one I've largely used for many disc-based consoles for its compression and greater ease of use over BIN/CUE.

Since many PS1 games were multi-disc, an optional format you might see are .m3u files. This format was originally for creating music playlists, but has been used by some emulators to specify a set of discs belonging to the same game. The format is simply a plaintext list of discs, one per line, but this allows some emulators to know which discs can be swapped in when needed.

A final common format are .pbp files, often named eboot.pbp. This is the official file format Sony created for playing PS1 games on PSP and other later consoles. Converting between other PS1 formats and .pbp is possible, but there aren't many tools to do it. For that reason, I tend to only have .pbp files for games I explicitly want to play on a PSP, and keep everything else as .chd.

PlayStation 2

Pretty much all the advice for the PS1 applies here too. The PS2 uses a DVD format, so the common format is the generic .iso. Like other formats that use it, .iso files are straight rips from the entire capacity of a disc, and thus often contain a lot of junk data the game doesn't access. This can be stripped away, although I personally don't know of any tools to do so for PS2 titles. Standard compression methods can also be used to minimize storage size, although you'll need to decompress the files in order to play them. Instead, like the PS1 I would recommend using .chd files to compress and remove the junk data, while still leaving them playable in popular emulators -- although you'll need to convert them back to .iso if you wish to play them on physical hardware.

.m3u files might also be used for disc-swapping, although it's not as common as PS1 games.

PlayStation Portable

Just about the same advice for the PS2 applies to the PSP. While the UMD is a physically smaller platform, its games still use a .iso format for rips. These can again be improved upon by converting them to .chd files, but that is only useful for archiving or some emulators. If you need to play on a physical system, you will need to convert back to .iso.

It was mentioned in the PS1 section, but PS1 games for the PSP use Sony's proprietary .pbp format. More details can be found above.

PlayStation Vita

Systems released after 2010 or so tend to have a few different supported file types, and the Vita is no exception. Sony's official format is .pkg which is an encrypted format, requiring a decryption key (usually named work.bin) to make the game files playable. AFAIK, there doesn't seem to be a standard single-file file format for decrypted commercial games, instead you have to manage the raw game directories, meaning you can use any standard compression software to archive them. Finally, there is the .vpk format, which is largely used for Homebrew Vita titles.

Sega

Master System & Game Gear

While the two systems are very strongly related, their games are not compatible with each other. Both are simply ROM dumps of their games and are typically given the .gg prefix for Game Gear and .sms for Master System.

Sega Genesis / Mega Drive

There is surprisingly little information available about the different Genesis file formats. Throughout my travels I've seen quite a few different formats, most commonly .md, but .smd and .bin also shows up occasionally. .bin is a generic file extension for binary files, so it really doesn't tell us anything about the file (and really shouldn't be used, but it is), but these appear to just be exact ROM dumps. .md and .smd appear to be situations like we saw for the SNES, where popular dumping hardware would format the ROMs in their own manner. The only documentation I could find on this is here unfortunately, so I don't have any technical details about what the precise differences between these formats actually is. Finally, that same link -- and some other search results on the web -- also mention a .gen format. This essentially is what those .bin files should've been called, but I don't think I've ever once ran into a .gen file before.

Sega Saturn

Not too much to say here. Like other CD-based consoles such as the PS1, the Saturn uses formats common to CDs, such as BIN/CUE, ISO, or the more modern .chd, if your emulator supports it.

Sega Dreamcast

Last but not least is the Dreamcast. The Dreamcast did not use a typical CD-ROM format, instead opting to create their own proprietary GD-ROM discs, which was considered more secure and had a higher density than traditional CD-ROMS (ironically, while the GD-ROM format was considered secure, the system also supported a format known as MIL-CD, which was wildly insecure and led to widespread piracy on the system). Due to this change in format, we see formats similar to, but distinct from, the typical optical filetypes. The first is .gdi which are exact rips of the game disc, in a similar way to how .iso files are exact rips of DVD-based games. There is also a trimmed down format, known as .cdi, which is commonly used for burning onto typical CD-Rs. Finally, like other optical systems, .chd support is becoming quite common as that format has increased compression advantages over the traditional two formats.

Microsoft

I'm going to be honest, I'm not terribly involved with Xbox system emulation. In the slight amount I have played around with it, I've only seen your traditional .iso files, for both the original Xbox as well as the 360. I don't see .chd support cited for these systems as I do for other optical consoles, but I suspect that .chd support will eventually come to the popular emulators, if the format proves to have the same advantages.

Misc.

Most players aren't going to branch out to systems not made by the big four -- Nintendo, Sony, Sega, or Microsoft. However, there have been other console developers over the years, although their systems generally have a single, somewhat straight-forward file format. You're not going to see the amount of attention something like the GameCube has received on consoles that only had a few million in sales.

WonderSwan / WonderSwan Color / SwanCrystal

Bandai's WonderSwan line was developed by the former creator of the Game Boy -- Gunpei Yokoi -- after he left Nintendo. It's a rather interesting system, but being a cartridge-based console only has a single file format for each its black and white and color consoles. This is the appropriately named .ws for the original WonderSwan and .wsc for the WonderSwan Color and its fancier SwanCrystal release.

TurfoGrafx-16 / PC Engine / TurboGrafx-CD / PC Engine CD

Perhaps better known in the west are NEC's consoles, the TurboGrafx-16 (known as the PC Engine worldwide) and its CD-based successor the TurboGrafx-CD / PC Engine CD. I'm again not too familiar with these, but the common formats seem to be .pce for the cartridge-based games, and the common BIN/CUE format for the CD ones.