Wat is het XCI-bestandsformaat?
Een .xci-bestand is een binair image van een Nintendo Switch-gamecartridge, gemaakt door de eMMC-chip die in een fysieke cartridge is ingebed te dumpen. Het formaat werd geïntroduceerd bij de lancering van de Nintendo Switch-console in maart 2017 en wordt soms een NX Card Image of eXternal Cart Image genoemd.
De bestandsstructuur begint met een versleutelde Gamecard-header in de eerste 0x200 bytes, gevolgd door een cartridgecertificaat en kaartmetadata. Bij offset 0x10000 bevat een HFS0 (Hash FileSystem) partitietabel subpartities genaamd secure, normal, update en logo. Binnen de secure-partitie bevatten Nintendo Content Archive (.nca)-bestanden de eigenlijke gamegegevens - versleutelde uitvoerbare bestanden in ExeFS-formaat en game-assets in RomFS-formaat.
Alle inhoud is versleuteld met AES-XTS met behulp van sleutels die zijn afgeleid van apparaatspecifieke mastersleutels. Om een .xci-bestand met een emulator te gebruiken, moeten decoderingssleutels (prod.keys) worden gedumpt van een fysieke Nintendo Switch-console. Zonder deze sleutels kan het bestand niet worden gedecodeerd of gestart.
Bestandsgroottes variëren van 512 MB tot 32 GB, wat overeenkomt met de chipcapaciteiten van fysieke cartridges. Het formaat is verschillend van .nsp (Nintendo Submission Package), dat wordt gebruikt voor digitale eShop-games. De gecomprimeerde .xcz-variant past NCZ-compressie toe om de bestandsgrootte te verkleinen zonder de kernstructuur te wijzigen.
Beide grote Switch-emulators, Yuzu en Ryujinx, werden stopgezet na juridische stappen van Nintendo in 2024. Community-forks zetten de ontwikkeling voort, maar blijven in juridische onzekerheid.
Beveiliging & veiligheid
RISICO: MEDIUMXCI-bestanden zelf zijn niet kwaadaardig (versleutelde gamegegevens). Echter, sites die XCI-gamedumps distribueren voor games die gebruikers niet bezitten, zijn bronnen van piraterij. Risico: downloaden van onofficiële bronnen kan malware bevatten die is ingebed in of vermomd als .xci-bestanden. Het juridische risico van het bezitten van commerciële gamedumps zonder de cartridge te bezitten is reëel (inbreuk op het auteursrecht). Het emulator-ecosysteem is ook doelwit geweest van juridische stappen van Nintendo (Yuzu-stopzetting 2024, Ryujinx-schikking 2024). Gebruik alleen legale, zelf gedumpte cartridges; gebruik Lockpick_RCM of op Hekate gebaseerde tools op een fysiek eigen console om sleutels/games legaal te dumpen.
Formaatdetails
in een notendop- Adobe Reader Font Mapping File - Adobe Acrobat/Reader gebruikt .xci voor op XML gebaseerde configuratiebestanden voor lettertypetoewijzing; volledig ongerelateerd aan Nintendo Switch. Dit is de db_name-vermelding - zie db_audit_notes.
- Xilinx Vivado IP Configuration File - Xilinx/AMD FPGA-tools gebruiken .xci voor IP-coreconfiguratie; ongerelateerd aan zowel Nintendo als Adobe.
Programma's die XCI-bestanden openen
Technische details
diepe specificaties| Bestandstype | Propriëtaire binaire gamecartridge-image dump |
| MIME-type | application/octet-stream |
| Byte-volgorde | little-endian |
| Containerstructuur | HFS0 (Hash FileSystem 0) partities: secure, normal, update, logo |
| Versleuteling | AES-XTS per sector; sleutels afgeleid van apparaatspecifieke mastersleutels |
| Decoderingssleutelbestand | prod.keys - moet worden gedumpt van fysieke Nintendo Switch-hardware; vereist door emulators |
| Magic bytes | HEAD (48 45 41 44) bij offset 0x0 (versleutelde Gamecard-header) |
| Header-indeling | 0x200-byte versleutelde Gamecard-header; 0x200-byte certificaat; HFS0 root-partitietabel bij offset 0x10000 |
| Intern formaat | NCA (Nintendo Content Archive) bestanden met ExeFS (uitvoerbaar) en RomFS (gamegegevens) |
| Integriteitscontrole | SHA-256 hashes opgeslagen in HFS0-partitieheaders per bestandsvermelding |
| Typische bestandsgrootte | 512 MB - 32 GB (komt overeen met fysieke cartridge eMMC-chipcapaciteit) |
| Cartridge-chipcapaciteiten | 1, 2, 4, 8, 16, of 32 GB eMMC |
| Gecomprimeerde variant | .xcz - past NCZ-compressie toe op individuele NCA-bestanden binnen de XCI-container |
| Opvulling (Padding) | Bestanden kunnen lege opvulling bevatten als de gamegegevens kleiner zijn dan de fysieke chipcapaciteit |
| Uitgebracht | 2017 (Nintendo Switch launch, March 3, 2017) |
| Laatste versie | current (no version number published; format tied to Switch hardware revision) |
| Specificatie | switchbrew.org |