Switch file formats:
.XCI = PFS0 Game Cartridge
.NSP = PFS0 Installer (Nintendo Submission Package)
.NCA = Nintendo Content Archive (NCA2 / NCA3)
if you unpack a XCI or NSP you get multiple NCA, these are the game files
if you unpack a NCA you get romfs(istorage)/exefs/manual/...
That's filled with misinformation.
.XCI = 1:1 image of the game cart's eMMC chip / N
X Cart
Image.
.NSP = What devs submit to Nintendo when they're ready to release a game: the "master ROM", it contains the game NCA, meta, description, NACP, various documents, the unique ticket and the cert.
.NCA = Nintendo Content Archive, can contain RomFS, ExeFS and PFS0 partitions. All NCAs must contain either a RomFS or PFS0 partition with at least one file, so if a title is ExeFS only, a RomFS or PFS0 partition needs to be added.
For example, all the necessary files for FLOG, the NES Golf emulator were contained in the executable, so Nintendo added a RomFS partition with a null file called "AtLeastOneFile", amusingly.
Similarly, Splatoon 2's Octo Expansion contains a null file called "aoc_data.dat", presumably a purchase verification method to unlock internal files, or a placeholder for an AOC revision.