I have been dumping a lot of my collection recently and even just keeping up with the assortment of tools/formats for each system is challenging - which made me start wondering if it would be possible to make an equivalent of the MKV container format for games: a single, standard container format able to store game data efficiently and not bound to a single toolset/emulator.
Right now the closest thing we have to this is CHD, but that only fits 5th gen consoles' optical media formats.
What would the design goals for such a format be, to begin with? I can think of the following:
Right now the closest thing we have to this is CHD, but that only fits 5th gen consoles' optical media formats.
What would the design goals for such a format be, to begin with? I can think of the following:
- Archive based: the format would store game data as files in a hierarchy, without storing the original filesystem itself. Like what zip archives do
- Encryption: game files would be stored unencrypted, for compressibility and easier access to game assets (less overhead for emulators too). Original media and encryption metadata would not take up much extra space to store to allow for rebuilding the original image (or something close to it that would still work on devices)
- Storage efficiency: the format would only store actual data, padding to accomplish a given media layout would be expressed as metadata
- Random access to game assets: like CHD, compressed data would include metadata to enable random access. This would decrease compression efficiency but enable emulators to run the format directly, without needing to install/decompress
- Metadata: ability to embed a game system identifier, game product ID and some other metadata (things like cover image, game title/icon) to help emulators/launchers create a game catalog without manual intervention or internet access. What id3 tags do for MP3s
- Multidisc: ability to bundle multiple discs in a single file for multidisc games
- Up to 4th gen, some later carts (NES/SNES/N64/Genesis/GameGear/GameBoy/GBA/PCEngine/NeoGeo Pocket/WonderSwan): games are a single ROM, memory mapped to device's addressing space - there is no concept of files and assets are accessed by memory location. No encryption
- 5th gen and optical 4th gen (PSX/Saturn/DreamCast/PCEngineCD/PCFX): game data on one data track (usually ISO9660 file system), audio often stored as separate audio CD tracks. No encryption.
- 6th gen (PS2/GC/OG Xbox?): Game data stored in a single data track on optical media (ISO9660/UDF file system). Audio stored as any other game file. Padding/dummy files used to optimize disk layout for faster access on physical systems and balloon sizes
- 6th gen handheld (DS): Game data stored as files in a proprietary file system. No encryption
- 7th gen+, optical (PS3/PSP/PS4/Wii/Wii U/Xbox 360): Game data stored as files in a standard file system (usually UDF) in a single track. Usually encrypted with a per disc key, either at file level or block level. PSP has no encryption
- 7th gen+ carts (3DS/Switch/PSVita): Game data stored as files in a proprietary file system, encryption at block level.
- 7th gen+ digital: Game data stored in compressed, then encrypted archive files.
- All PC games