{
  "commit": "d38cd580364b2c788e633b9e51c15e1668f726c0",
  "count": 1,
  "generated_at": "2026-11-03T13:36:34Z",
  "items": [
    {
      "id": "cemu",
      "profile": {
        "core_classification": "community_fork",
        "core_version": "2.6-372-g29f2f1fa",
        "cores": [
          "cemu",
          "cemu-sa"
        ],
        "data_directories": [
          {
            "destination": "Cemu/gameProfiles/default",
            "mode": "libretro",
            "ref": "cemu-gameprofiles",
            "source_ref": "source src/Cafe/GameProfile/GameProfile.cpp:181-195, source src/libretro/CemuLibretro.cpp:2162-2170"
          },
          {
            "destination": "Cemu/graphicPacks/downloadedGraphicPacks",
            "installed_on": [
              "retrobat"
            ],
            "mode": "standalone",
            "ref": "cemu-graphic-packs",
            "source_ref": "source src/Cafe/GraphicPack/GraphicPack2.cpp:96-111, upstream src/gui/wxgui/DownloadGraphicPacksWindow.cpp:234-238"
          }
        ],
        "data_root": {
          "linux": {
            "note": "portable/ next to the executable or the AppImage when that folder exists. Configuration sits in $XDG_CONFIG_HOME/Cemu, else ~/.config/Cemu",
            "path": "$XDG_DATA_HOME/Cemu, else ~/.local/share/Cemu",
            "source_ref": "upstream src/gui/wxgui/CemuApp.cpp:127-171"
          },
          "macos": {
            "note": "portable/ next to Cemu.app when that folder exists",
            "path": "~/Library/Application Support/Cemu",
            "source_ref": "upstream src/gui/wxgui/CemuApp.cpp:175-203"
          },
          "windows": {
            "note": "portable/ next to Cemu.exe when that folder exists, or the folder of Cemu.exe when settings.xml sits there",
            "path": "%APPDATA%/Cemu",
            "source_ref": "upstream src/gui/wxgui/CemuApp.cpp:74-86,90-123"
          }
        },
        "display_name": "Nintendo - Wii U (Cemu)",
        "emulator": "Cemu",
        "files": [
          {
            "description": "Disc title keys, one AES-128 key per line",
            "name": "keys.txt",
            "note": "Tried in file order against the encrypted partition header of a .wud or .wux image, with a 16-byte <image>.key beside the image as the last resort. Created with a template when absent. The libretro core refuses to load an encrypted image whose key is not in it.",
            "path": "Cemu/keys.txt",
            "required": true,
            "source_ref": "source src/Cafe/Filesystem/FST/KeyCache.cpp:65-137, upstream src/Cafe/Filesystem/FST/FST.cpp:192-246, source src/libretro/CemuLibretro.cpp:6094-6142",
            "standalone_path": "keys.txt"
          },
          {
            "description": "Wii U OTP dump",
            "name": "otp.bin",
            "note": "Read into the OTP mirror at init. Any other size is rejected and online mode stays off. Its keys decrypt the client certificate keys and sign the device certificate.",
            "path": "Cemu/otp.bin",
            "required": false,
            "size": 1024,
            "source_ref": "source src/Cafe/IOSU/legacy/iosu_crypto.cpp:553-577, source src/Cafe/IOSU/legacy/iosu_crypto.cpp:619-626",
            "standalone_path": "otp.bin",
            "validation": [
              "size"
            ]
          },
          {
            "description": "Wii U SEEPROM dump",
            "name": "seeprom.bin",
            "note": "Read into the SEEPROM mirror at init. Any other size is rejected and online mode stays off.",
            "path": "Cemu/seeprom.bin",
            "required": false,
            "size": 512,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:580-601, source src/Cafe/IOSU/legacy/iosu_crypto.cpp:627-632",
            "standalone_path": "seeprom.bin",
            "validation": [
              "size"
            ]
          },
          {
            "description": "Shared font, Simplified Chinese, console dump",
            "hle_fallback": true,
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "CafeCn.ttf",
            "note": "The four fonts are loaded as a set: one missing in both locations drops the whole set to shareddata.bin, then to the placeholder font compiled into the binary.",
            "path": "Cemu/mlc01/sys/title/0005001b/10042400/content/CafeCn.ttf",
            "required": false,
            "source_ref": "source src/Cafe/CafeSystem.cpp:292, source src/Cafe/CafeSystem.cpp:300-356",
            "standalone_path": "mlc01/sys/title/0005001b/10042400/content/CafeCn.ttf"
          },
          {
            "description": "Shared font, Korean, console dump",
            "hle_fallback": true,
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "CafeKr.ttf",
            "path": "Cemu/mlc01/sys/title/0005001b/10042400/content/CafeKr.ttf",
            "required": false,
            "source_ref": "source src/Cafe/CafeSystem.cpp:293, source src/Cafe/CafeSystem.cpp:300-356",
            "standalone_path": "mlc01/sys/title/0005001b/10042400/content/CafeKr.ttf"
          },
          {
            "description": "Shared font, standard Latin and Japanese, console dump",
            "hle_fallback": true,
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "CafeStd.ttf",
            "path": "Cemu/mlc01/sys/title/0005001b/10042400/content/CafeStd.ttf",
            "required": false,
            "source_ref": "source src/Cafe/CafeSystem.cpp:294, source src/Cafe/CafeSystem.cpp:300-356",
            "standalone_path": "mlc01/sys/title/0005001b/10042400/content/CafeStd.ttf"
          },
          {
            "description": "Shared font, Traditional Chinese, console dump",
            "hle_fallback": true,
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "CafeTw.ttf",
            "path": "Cemu/mlc01/sys/title/0005001b/10042400/content/CafeTw.ttf",
            "required": false,
            "source_ref": "source src/Cafe/CafeSystem.cpp:295, source src/Cafe/CafeSystem.cpp:300-356",
            "standalone_path": "mlc01/sys/title/0005001b/10042400/content/CafeTw.ttf"
          },
          {
            "description": "Shared font replacement, Noto Sans SC Medium",
            "hle_fallback": true,
            "mode": "libretro",
            "name": "CafeCn.ttf",
            "note": "Read only when the MLC copy is absent. The libretro core ships without it and looks under <system_dir>/Cemu/resources/sharedFonts/.",
            "path": "Cemu/resources/sharedFonts/CafeCn.ttf",
            "required": false,
            "sha1": "2d95227b9b3eaf1c74d9293ecd0d190ec7ffbbe3",
            "size": 9664448,
            "source_ref": "source src/Cafe/CafeSystem.cpp:292, source src/Cafe/CafeSystem.cpp:329-334, source bin/resources/sharedFonts/CafeCn.ttf",
            "standalone_path": "resources/sharedFonts/CafeCn.ttf"
          },
          {
            "bundled": true,
            "description": "Shared font replacement, Noto Sans SC Medium",
            "hle_fallback": true,
            "mode": "standalone",
            "name": "CafeCn.ttf",
            "not_bundled_on": [
              "retrodeck"
            ],
            "note": "Shipped in resources/sharedFonts/ of the 2.6 Windows and Linux zips, read only when the MLC copy is absent.",
            "path": "Cemu/resources/sharedFonts/CafeCn.ttf",
            "required": false,
            "sha1": "2d95227b9b3eaf1c74d9293ecd0d190ec7ffbbe3",
            "size": 9664448,
            "source_ref": "source src/Cafe/CafeSystem.cpp:292, source src/Cafe/CafeSystem.cpp:329-334, source bin/resources/sharedFonts/CafeCn.ttf",
            "standalone_path": "resources/sharedFonts/CafeCn.ttf"
          },
          {
            "description": "Shared font replacement, Noto Sans KR Medium",
            "hle_fallback": true,
            "mode": "libretro",
            "name": "CafeKr.ttf",
            "note": "Read only when the MLC copy is absent. The libretro core ships without it and looks under <system_dir>/Cemu/resources/sharedFonts/.",
            "path": "Cemu/resources/sharedFonts/CafeKr.ttf",
            "required": false,
            "sha1": "f0ef38fcc6133c24f4f38ff9b5c06b37e970d3cc",
            "size": 5626464,
            "source_ref": "source src/Cafe/CafeSystem.cpp:293, source src/Cafe/CafeSystem.cpp:329-334, source bin/resources/sharedFonts/CafeKr.ttf",
            "standalone_path": "resources/sharedFonts/CafeKr.ttf"
          },
          {
            "bundled": true,
            "description": "Shared font replacement, Noto Sans KR Medium",
            "hle_fallback": true,
            "mode": "standalone",
            "name": "CafeKr.ttf",
            "not_bundled_on": [
              "retrodeck"
            ],
            "note": "Shipped in resources/sharedFonts/ of the 2.6 Windows and Linux zips, read only when the MLC copy is absent.",
            "path": "Cemu/resources/sharedFonts/CafeKr.ttf",
            "required": false,
            "sha1": "f0ef38fcc6133c24f4f38ff9b5c06b37e970d3cc",
            "size": 5626464,
            "source_ref": "source src/Cafe/CafeSystem.cpp:293, source src/Cafe/CafeSystem.cpp:329-334, source bin/resources/sharedFonts/CafeKr.ttf",
            "standalone_path": "resources/sharedFonts/CafeKr.ttf"
          },
          {
            "description": "Shared font replacement, Noto Sans JP Medium",
            "hle_fallback": true,
            "mode": "libretro",
            "name": "CafeStd.ttf",
            "note": "Read only when the MLC copy is absent. The libretro core ships without it and looks under <system_dir>/Cemu/resources/sharedFonts/.",
            "path": "Cemu/resources/sharedFonts/CafeStd.ttf",
            "required": false,
            "sha1": "da0d4bcc3b13339179bee946eba16adfd731b4d3",
            "size": 5363768,
            "source_ref": "source src/Cafe/CafeSystem.cpp:294, source src/Cafe/CafeSystem.cpp:329-334, source bin/resources/sharedFonts/CafeStd.ttf",
            "standalone_path": "resources/sharedFonts/CafeStd.ttf"
          },
          {
            "bundled": true,
            "description": "Shared font replacement, Noto Sans JP Medium",
            "hle_fallback": true,
            "mode": "standalone",
            "name": "CafeStd.ttf",
            "not_bundled_on": [
              "retrodeck"
            ],
            "note": "Shipped in resources/sharedFonts/ of the 2.6 Windows and Linux zips, read only when the MLC copy is absent.",
            "path": "Cemu/resources/sharedFonts/CafeStd.ttf",
            "required": false,
            "sha1": "da0d4bcc3b13339179bee946eba16adfd731b4d3",
            "size": 5363768,
            "source_ref": "source src/Cafe/CafeSystem.cpp:294, source src/Cafe/CafeSystem.cpp:329-334, source bin/resources/sharedFonts/CafeStd.ttf",
            "standalone_path": "resources/sharedFonts/CafeStd.ttf"
          },
          {
            "description": "Shared font replacement, Noto Sans TC Medium",
            "hle_fallback": true,
            "mode": "libretro",
            "name": "CafeTw.ttf",
            "note": "Read only when the MLC copy is absent. The libretro core ships without it and looks under <system_dir>/Cemu/resources/sharedFonts/.",
            "path": "Cemu/resources/sharedFonts/CafeTw.ttf",
            "required": false,
            "sha1": "8ec796192ebc710f23ab6bd55453cae523b70444",
            "size": 6593548,
            "source_ref": "source src/Cafe/CafeSystem.cpp:295, source src/Cafe/CafeSystem.cpp:329-334, source bin/resources/sharedFonts/CafeTw.ttf",
            "standalone_path": "resources/sharedFonts/CafeTw.ttf"
          },
          {
            "bundled": true,
            "description": "Shared font replacement, Noto Sans TC Medium",
            "hle_fallback": true,
            "mode": "standalone",
            "name": "CafeTw.ttf",
            "not_bundled_on": [
              "retrodeck"
            ],
            "note": "Shipped in resources/sharedFonts/ of the 2.6 Windows and Linux zips, read only when the MLC copy is absent.",
            "path": "Cemu/resources/sharedFonts/CafeTw.ttf",
            "required": false,
            "sha1": "8ec796192ebc710f23ab6bd55453cae523b70444",
            "size": 6593548,
            "source_ref": "source src/Cafe/CafeSystem.cpp:295, source src/Cafe/CafeSystem.cpp:329-334, source bin/resources/sharedFonts/CafeTw.ttf",
            "standalone_path": "resources/sharedFonts/CafeTw.ttf"
          },
          {
            "description": "Dump of the shared data region of a console",
            "hle_fallback": true,
            "name": "shareddata.bin",
            "note": "Read only when the four shared fonts are not all present: 32 MiB copied from the user data path to 0xF8000000, table of font entries included. Nothing about it is validated. The region holds the SharedDataEntry table (0xFFCAFE01 to 0xFFCAFE04, type 2) followed by CafeCn.ttf, CafeKr.ttf, CafeStd.ttf and CafeTw.ttf, byte-identical to the console dumps of title 0005001b-10042400 above, and every other byte is zero.",
            "path": "Cemu/shareddata.bin",
            "required": false,
            "size": 33554432,
            "source_ref": "upstream src/Cafe/CafeSystem.cpp:269-292, source src/Cafe/CafeSystem.cpp:357-365",
            "standalone_path": "shareddata.bin"
          },
          {
            "description": "Cafe OS sound library",
            "hle_fallback": true,
            "name": "snd_user.rpl",
            "note": "Loaded from cafeLibs/ in place of the built-in module whenever a title depends on snd_user, unless the game profile turns shared libraries off. Named by the code as the module to dump when a title uses an audio effect the built-in one does not implement.",
            "path": "Cemu/cafeLibs/snd_user.rpl",
            "required": false,
            "source_ref": "source src/Cafe/OS/RPL/rpl.cpp:1971-1991, source src/Cafe/OS/RPL/rpl.cpp:2142-2154, source src/Cafe/OS/libs/snd_user/snd_user.cpp:1220-1227",
            "standalone_path": "cafeLibs/snd_user.rpl"
          },
          {
            "description": "Cafe OS sound library, second generation",
            "hle_fallback": true,
            "name": "snduser2.rpl",
            "note": "Same mechanism as snd_user.rpl, for titles that depend on snduser2.",
            "path": "Cemu/cafeLibs/snduser2.rpl",
            "required": false,
            "source_ref": "source src/Cafe/OS/RPL/rpl.cpp:1971-1991, source src/Cafe/OS/RPL/rpl.cpp:2142-2154, source src/Cafe/OS/libs/snd_user/snd_user.cpp:1220-1227",
            "standalone_path": "cafeLibs/snduser2.rpl"
          },
          {
            "description": "Cafe OS software keyboard applet library",
            "hle_fallback": true,
            "name": "swkbd.rpl",
            "note": "Loaded from cafeLibs/ only when swkbd.pack is present in the MLC. Otherwise the built-in keyboard is used and the file is ignored.",
            "path": "Cemu/cafeLibs/swkbd.rpl",
            "required": false,
            "source_ref": "source src/Cafe/OS/RPL/rpl.cpp:1929-1933, source src/Cafe/OS/RPL/rpl.cpp:1978-1988",
            "standalone_path": "cafeLibs/swkbd.rpl"
          },
          {
            "description": "Cafe OS error viewer applet library",
            "hle_fallback": true,
            "name": "erreula.rpl",
            "note": "Loaded from cafeLibs/ only when erreula.pack is present in the MLC. Otherwise the built-in error viewer is used and the file is ignored.",
            "path": "Cemu/cafeLibs/erreula.rpl",
            "required": false,
            "source_ref": "source src/Cafe/OS/RPL/rpl.cpp:1935-1939, upstream src/Cafe/OS/RPL/rpl.cpp:1978-1988",
            "standalone_path": "cafeLibs/erreula.rpl"
          },
          {
            "description": "Software keyboard applet data, title 0005001b-1004f000",
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "swkbd.pack",
            "note": "Its presence in the MLC is what lets a swkbd.rpl from cafeLibs/ be used, and the applet then reads it through the Cafe filesystem.",
            "path": "Cemu/mlc01/sys/title/0005001b/1004f000/content/00/swkbd/swkbd.pack",
            "required": false,
            "source_ref": "source src/Cafe/OS/RPL/rpl.cpp:1929-1933",
            "standalone_path": "mlc01/sys/title/0005001b/1004f000/content/00/swkbd/swkbd.pack"
          },
          {
            "description": "Error viewer applet data, title 0005001b-10051000",
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "erreula.pack",
            "note": "Its presence in the MLC is what lets an erreula.rpl from cafeLibs/ be used, and the applet then reads it through the Cafe filesystem.",
            "path": "Cemu/mlc01/sys/title/0005001b/10051000/content/00/erreula/erreula.pack",
            "required": false,
            "source_ref": "source src/Cafe/OS/RPL/rpl.cpp:1935-1939",
            "standalone_path": "mlc01/sys/title/0005001b/10051000/content/00/erreula/erreula.pack"
          },
          {
            "description": "Archived Miiverse posts for The Wind Waker HD",
            "name": "OfflineDB.zar",
            "note": "ZArchive opened lazily from the user data path when a title running with the Nintendo network service asks for posts. The reader serves PostList_WindWakerHD.xml, memo/<post id> and image/<post id>.jpg for the three Wind Waker HD title ids and nothing for any other title. Without it the post list is empty.",
            "path": "Cemu/resources/miiverse/OfflineDB.zar",
            "required": false,
            "source_ref": "source src/Cafe/OS/libs/nn_olv/nn_olv_OfflineDB.cpp:21-31, source src/Cafe/OS/libs/nn_olv/nn_olv_OfflineDB.cpp:67-72, source src/Cafe/OS/libs/nn_olv/nn_olv_OfflineDB.cpp:114-135, source src/Cafe/OS/libs/nn_olv/nn_olv_OfflineDB.cpp:186-197, source src/Cafe/OS/libs/nn_olv/nn_olv_InitializeTypes.cpp:242-248",
            "standalone_path": "resources/miiverse/OfflineDB.zar",
            "unsourceable": "archive of Wind Waker HD Miiverse posts in a layout only this reader describes, never published with any Cemu release"
          },
          {
            "description": "Client certificate, common",
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "WIIU_COMMON_1_CERT.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_COMMON_1_CERT.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:472, source src/Cafe/IOSU/legacy/iosu_crypto.cpp:303-330",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_COMMON_1_CERT.der"
          },
          {
            "description": "Client key, common, AES-CBC encrypted",
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "WIIU_COMMON_1_RSA_KEY.aes",
            "note": "Must be a non-empty multiple of 16 bytes.",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_COMMON_1_RSA_KEY.aes",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:472, source src/Cafe/IOSU/legacy/iosu_crypto.cpp:312-326",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_COMMON_1_RSA_KEY.aes"
          },
          {
            "description": "Client certificate, account",
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "WIIU_ACCOUNT_1_CERT.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_ACCOUNT_1_CERT.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:473, source src/Cafe/IOSU/legacy/iosu_crypto.cpp:303-330",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_ACCOUNT_1_CERT.der"
          },
          {
            "description": "Client key, account, AES-CBC encrypted",
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "WIIU_ACCOUNT_1_RSA_KEY.aes",
            "note": "Must be a non-empty multiple of 16 bytes.",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_ACCOUNT_1_RSA_KEY.aes",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:473, source src/Cafe/IOSU/legacy/iosu_crypto.cpp:312-326",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_ACCOUNT_1_RSA_KEY.aes"
          },
          {
            "description": "Client certificate, olive (Miiverse)",
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "WIIU_OLIVE_1_CERT.der",
            "note": "Registered twice, under ids 4 and 7.",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_OLIVE_1_CERT.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:474, upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:477, source src/Cafe/IOSU/legacy/iosu_crypto.cpp:303-330",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_OLIVE_1_CERT.der"
          },
          {
            "description": "Client key, olive, AES-CBC encrypted",
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "WIIU_OLIVE_1_RSA_KEY.aes",
            "note": "Must be a non-empty multiple of 16 bytes.",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_OLIVE_1_RSA_KEY.aes",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:474, upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:477, source src/Cafe/IOSU/legacy/iosu_crypto.cpp:312-326",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_OLIVE_1_RSA_KEY.aes"
          },
          {
            "description": "Client certificate, vino (Nintendo TVii)",
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "WIIU_VINO_1_CERT.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_VINO_1_CERT.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:475, source src/Cafe/IOSU/legacy/iosu_crypto.cpp:303-330",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_VINO_1_CERT.der"
          },
          {
            "description": "Client key, vino, AES-CBC encrypted",
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "WIIU_VINO_1_RSA_KEY.aes",
            "note": "Must be a non-empty multiple of 16 bytes.",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_VINO_1_RSA_KEY.aes",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:475, source src/Cafe/IOSU/legacy/iosu_crypto.cpp:312-326",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_VINO_1_RSA_KEY.aes"
          },
          {
            "description": "Client certificate, wood (eShop)",
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "WIIU_WOOD_1_CERT.der",
            "note": "Registered twice, under ids 6 and 8.",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_WOOD_1_CERT.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:476, upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:478, source src/Cafe/IOSU/legacy/iosu_crypto.cpp:303-330",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_WOOD_1_CERT.der"
          },
          {
            "description": "Client key, wood, AES-CBC encrypted",
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "WIIU_WOOD_1_RSA_KEY.aes",
            "note": "Must be a non-empty multiple of 16 bytes.",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_WOOD_1_RSA_KEY.aes",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:476, upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:478, source src/Cafe/IOSU/legacy/iosu_crypto.cpp:312-326",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_WOOD_1_RSA_KEY.aes"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "CACERT_NINTENDO_CA.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/CACERT_NINTENDO_CA.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:481",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/CACERT_NINTENDO_CA.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "CACERT_NINTENDO_CA_G2.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/CACERT_NINTENDO_CA_G2.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:482",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/CACERT_NINTENDO_CA_G2.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "CACERT_NINTENDO_CA_G3.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/CACERT_NINTENDO_CA_G3.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:483",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/CACERT_NINTENDO_CA_G3.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "CACERT_NINTENDO_CLASS2_CA.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/CACERT_NINTENDO_CLASS2_CA.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:484",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/CACERT_NINTENDO_CLASS2_CA.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "CACERT_NINTENDO_CLASS2_CA_G2.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/CACERT_NINTENDO_CLASS2_CA_G2.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:485",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/CACERT_NINTENDO_CLASS2_CA_G2.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "CACERT_NINTENDO_CLASS2_CA_G3.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/CACERT_NINTENDO_CLASS2_CA_G3.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:486",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/CACERT_NINTENDO_CLASS2_CA_G3.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "BALTIMORE_CYBERTRUST_ROOT_CA.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/BALTIMORE_CYBERTRUST_ROOT_CA.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:489",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/BALTIMORE_CYBERTRUST_ROOT_CA.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "CYBERTRUST_GLOBAL_ROOT_CA.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/CYBERTRUST_GLOBAL_ROOT_CA.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:490",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/CYBERTRUST_GLOBAL_ROOT_CA.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "VERIZON_GLOBAL_ROOT_CA.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/VERIZON_GLOBAL_ROOT_CA.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:491",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/VERIZON_GLOBAL_ROOT_CA.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "GLOBALSIGN_ROOT_CA.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/GLOBALSIGN_ROOT_CA.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:492",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/GLOBALSIGN_ROOT_CA.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "GLOBALSIGN_ROOT_CA_R2.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/GLOBALSIGN_ROOT_CA_R2.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:493",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/GLOBALSIGN_ROOT_CA_R2.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "GLOBALSIGN_ROOT_CA_R3.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/GLOBALSIGN_ROOT_CA_R3.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:494",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/GLOBALSIGN_ROOT_CA_R3.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "VERISIGN_CLASS3_PUBLIC_PRIMARY_CA_G3.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/VERISIGN_CLASS3_PUBLIC_PRIMARY_CA_G3.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:495",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/VERISIGN_CLASS3_PUBLIC_PRIMARY_CA_G3.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "VERISIGN_UNIVERSAL_ROOT_CA.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/VERISIGN_UNIVERSAL_ROOT_CA.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:496",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/VERISIGN_UNIVERSAL_ROOT_CA.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "VERISIGN_CLASS3_PUBLIC_PRIMARY_CA_G5.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/VERISIGN_CLASS3_PUBLIC_PRIMARY_CA_G5.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:497",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/VERISIGN_CLASS3_PUBLIC_PRIMARY_CA_G5.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "THAWTE_PRIMARY_ROOT_CA_G3.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/THAWTE_PRIMARY_ROOT_CA_G3.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:498",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/THAWTE_PRIMARY_ROOT_CA_G3.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "THAWTE_PRIMARY_ROOT_CA.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/THAWTE_PRIMARY_ROOT_CA.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:499",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/THAWTE_PRIMARY_ROOT_CA.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "GEOTRUST_GLOBAL_CA.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/GEOTRUST_GLOBAL_CA.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:500",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/GEOTRUST_GLOBAL_CA.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "GEOTRUST_GLOBAL_CA2.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/GEOTRUST_GLOBAL_CA2.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:501",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/GEOTRUST_GLOBAL_CA2.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "GEOTRUST_PRIMARY_CA.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/GEOTRUST_PRIMARY_CA.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:502",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/GEOTRUST_PRIMARY_CA.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "GEOTRUST_PRIMARY_CA_G3.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/GEOTRUST_PRIMARY_CA_G3.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:503",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/GEOTRUST_PRIMARY_CA_G3.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "ADDTRUST_EXT_CA_ROOT.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/ADDTRUST_EXT_CA_ROOT.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:504",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/ADDTRUST_EXT_CA_ROOT.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "COMODO_CA.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/COMODO_CA.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:505",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/COMODO_CA.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "UTN_DATACORP_SGC_CA.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/UTN_DATACORP_SGC_CA.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:506",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/UTN_DATACORP_SGC_CA.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "UTN_USERFIRST_HARDWARE_CA.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/UTN_USERFIRST_HARDWARE_CA.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:507",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/UTN_USERFIRST_HARDWARE_CA.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "DIGICERT_HIGH_ASSURANCE_EV_ROOT_CA.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/DIGICERT_HIGH_ASSURANCE_EV_ROOT_CA.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:508",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/DIGICERT_HIGH_ASSURANCE_EV_ROOT_CA.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "DIGICERT_ASSURED_ID_ROOT_CA.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/DIGICERT_ASSURED_ID_ROOT_CA.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:509",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/DIGICERT_ASSURED_ID_ROOT_CA.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "DIGICERT_GLOBAL_ROOT_CA.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/DIGICERT_GLOBAL_ROOT_CA.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:510",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/DIGICERT_GLOBAL_ROOT_CA.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "GTE_CYBERTRUST_GLOBAL_ROOT.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/GTE_CYBERTRUST_GLOBAL_ROOT.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:511",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/GTE_CYBERTRUST_GLOBAL_ROOT.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "VERISIGN_CLASS3_PUBLIC_PRIMARY_CA.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/VERISIGN_CLASS3_PUBLIC_PRIMARY_CA.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:512",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/VERISIGN_CLASS3_PUBLIC_PRIMARY_CA.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "THAWTE_PREMIUM_SERVER_CA.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/THAWTE_PREMIUM_SERVER_CA.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:513",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/THAWTE_PREMIUM_SERVER_CA.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "EQUIFAX_SECURE_CA.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/EQUIFAX_SECURE_CA.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:514",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/EQUIFAX_SECURE_CA.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "ENTRUST_SECURE_SERVER_CA.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/ENTRUST_SECURE_SERVER_CA.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:515",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/ENTRUST_SECURE_SERVER_CA.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "VERISIGN_CLASS3_PUBLIC_PRIMARY_CA_G2.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/VERISIGN_CLASS3_PUBLIC_PRIMARY_CA_G2.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:516",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/VERISIGN_CLASS3_PUBLIC_PRIMARY_CA_G2.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "ENTRUST_CA_2048.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/ENTRUST_CA_2048.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:517",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/ENTRUST_CA_2048.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "ENTRUST_ROOT_CA.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/ENTRUST_ROOT_CA.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:518",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/ENTRUST_ROOT_CA.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "ENTRUST_ROOT_CA_G2.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/ENTRUST_ROOT_CA_G2.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:519",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/ENTRUST_ROOT_CA_G2.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "DIGICERT_ASSURED_ID_ROOT_CA_G2.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/DIGICERT_ASSURED_ID_ROOT_CA_G2.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:520",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/DIGICERT_ASSURED_ID_ROOT_CA_G2.der"
          },
          {
            "load_from": {
              "libretro": "save_dir",
              "standalone": "data_dir"
            },
            "name": "DIGICERT_GLOBAL_ROOT_CA_G2.der",
            "path": "Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/DIGICERT_GLOBAL_ROOT_CA_G2.der",
            "required": false,
            "source_ref": "upstream src/Cafe/IOSU/legacy/iosu_crypto.cpp:521",
            "standalone_path": "mlc01/sys/title/0005001b/10054000/content/scerts/DIGICERT_GLOBAL_ROOT_CA_G2.der"
          }
        ],
        "firmware_titles": [
          {
            "content": [
              "CafeCn.ttf",
              "CafeKr.ttf",
              "CafeStd.ttf",
              "CafeTw.ttf"
            ],
            "id": "0005001b-10042400",
            "name": "Shared fonts",
            "note": "Read from the MLC before the resources/sharedFonts/ copy of the data path.",
            "required": false,
            "source_ref": "source src/Cafe/CafeSystem.cpp:286-296"
          },
          {
            "content": [
              "ccerts/",
              "scerts/"
            ],
            "id": "0005001b-10054000",
            "name": "SSL certificates",
            "note": "Every file of the certificate table must be present for online mode, with a valid otp.bin and seeprom.bin.",
            "required": false,
            "source_ref": "source src/Cafe/IOSU/legacy/iosu_crypto.cpp:463-521, source src/Cafe/IOSU/legacy/iosu_crypto.cpp:535"
          },
          {
            "content": [
              "content/00/swkbd/swkbd.pack"
            ],
            "id": "0005001b-1004f000",
            "name": "Software keyboard applet",
            "note": "Presence of the pack lets a dumped swkbd.rpl in cafeLibs/ replace the built-in keyboard.",
            "required": false,
            "source_ref": "source src/Cafe/OS/RPL/rpl.cpp:1929-1933"
          },
          {
            "content": [
              "content/00/erreula/erreula.pack"
            ],
            "id": "0005001b-10051000",
            "name": "Error viewer applet",
            "note": "Presence of the pack lets a dumped erreula.rpl in cafeLibs/ replace the built-in error viewer.",
            "required": false,
            "source_ref": "source src/Cafe/OS/RPL/rpl.cpp:1935-1939"
          },
          {
            "content": [
              "language.txt",
              "country.txt"
            ],
            "id": "0005001b-1005c000",
            "name": "Language and country lists",
            "note": "Written when absent, by the wx frontend on first run and by the libretro core at init.",
            "required": false,
            "source_ref": "upstream src/gui/wxgui/CemuApp.cpp:580-606, source src/libretro/CemuLibretro.cpp:2072-2108"
          }
        ],
        "library_name": "Cemu",
        "logo": "https://raw.githubusercontent.com/cemu-project/Cemu/main/dist/linux/info.cemu.Cemu.png",
        "mlc_structure": [
          "mlc01/sys/title/0005001b/10042400/content/",
          "mlc01/sys/title/0005001b/10054000/content/ccerts/",
          "mlc01/sys/title/0005001b/10054000/content/scerts/",
          "mlc01/sys/title/0005001b/1004f000/content/00/swkbd/",
          "mlc01/sys/title/0005001b/10051000/content/00/erreula/",
          "mlc01/sys/title/0005001b/1005c000/content/",
          "mlc01/usr/title/00050000/",
          "mlc01/usr/title/0005000c/",
          "mlc01/usr/title/0005000e/",
          "mlc01/usr/save/",
          "mlc01/usr/boss/"
        ],
        "notes": "Wii U emulator. The libretro core is a fork of the Cemu tree with the wx\napplication removed, kept merged with upstream, with the frontend glue in\nsrc/libretro/. The upstream_commit above is the last merge base. The\nrepository builds the core and nothing else, as a bare shared object, for\nlinux x86_64 and aarch64, windows x86_64, osx x86_64 and arm64, android\narm64-v8a and x86_64, webos aarch64, ios arm64 and tvos arm64. Nothing that\nthe standalone distribution carries next to the executable (resources/,\ngameProfiles/default/) comes with the core. The community graphic packs,\nwhich standalone downloads, are compiled into it.\nref: CMakeLists.txt:4-7, src/CMakeLists.txt:75-90,\n     .gitlab-ci.yml:123, 129, 152, 414, 435, 440, 448, 478, 564, 583\n\nPath model. Cemu resolves every file through four roots: the user data\npath (keys.txt, otp.bin, seeprom.bin, cafeLibs/, graphicPacks/,\nshareddata.bin, resources/miiverse/, the default mlc01), the config path\n(settings.xml, network_services.xml, controllerProfiles/, per-title\ngameProfiles/), the data path (resources/sharedFonts/, gameProfiles/default/)\nand the MLC. The libretro core points user data, config, cache and data at\n<system_dir>/Cemu, and always puts the MLC at <save_dir>/Cemu/mlc01: it\ndoes not read settings.xml. The Cemu\nsubdirectory is not doubled when the frontend already hands over a\ndirectory of that name (saves sorted per core). Standalone Cemu uses the\nportable directory next to the executable when it exists, otherwise the\nuser data directory given per system in data_root, and the MLC defaults to\n<user data>/mlc01. path: entries below are\nthe libretro destination under the system directory, or under the save\ndirectory for the MLC (load_from), and standalone_path: is relative to the\nCemu user data directory, which holds the MLC by default (load_from\ndata_dir). The core reports library_name \"Cemu\"\n(src/libretro/CemuLibretro.cpp:4173).\nref: src/libretro/CemuLibretro.cpp:2110-2170,\n     src/libretro/CemuLibretro.cpp:4083-4091,\n     src/gui/wxgui/CemuApp.cpp:90-123, src/gui/wxgui/CemuApp.cpp:127-171,\n     src/config/ActiveSettings.cpp:295-321\n\nkeys.txt is read once from the user data path. A missing file is created\nwith a comment header and an example key. Each line is stripped of\ncomments, spaces, dashes and underscores and must then be 32 hex\ncharacters, otherwise an error is raised for that line. FindDiscKey tries\nevery key in order against the encrypted partition header of a .wud/.wux\nand falls back to a 16-byte <image>.key next to the image. The libretro\ncore asks that question before setting up any renderer and refuses the\nload with a message naming keys.txt when no key matches, so an encrypted\ndisc image does not start without it. .wua archives, .rpx and NUS\ndirectories are not encrypted with a disc key and load without the file.\nref: src/Cafe/Filesystem/FST/KeyCache.cpp:65-137,\n     src/Cafe/Filesystem/FST/FST.cpp:192-246,\n     src/libretro/CemuLibretro.cpp:6094-6142\n\nShared fonts. LoadSharedData runs at every title start and looks for the\nfour fonts of title 0005001b-10042400 in the MLC first, then under\nresources/sharedFonts/ of the data path. All four must be found in one\nplace or the other, otherwise none is loaded and the code tries\nshareddata.bin, a 32 MiB dump of the shared data region, read from the\nuser data path straight into 0xF8000000. With nothing loaded a title that\ncalls OSGetSharedData receives the placeholder font compiled into the\nbinary, decompressed from a zlib array, so games run but with one Latin\nface standing in for the CJK sets. The four files in resources/sharedFonts/\nof the source tree are Noto Sans CJK Medium faces under the console names,\nnot dumps: the standalone distribution ships them, the libretro core does\nnot and looks under <system_dir>/Cemu/resources/sharedFonts/.\nref: src/Cafe/CafeSystem.cpp:286-365, src/Cafe/CafeSystem.cpp:907-911,\n     src/Cafe/OS/libs/coreinit/coreinit.cpp:137-184,\n     src/resource/CafeDefaultFont.cpp:2562-2569\n\nOnline files. iosuCrypto_init reads otp.bin and seeprom.bin from the user\ndata path and rejects any size other than 1024 and 512 bytes. Without a\nvalid OTP no certificate is loaded and online mode is off. The certificate\ntable names 8 client certificates with their AES-encrypted RSA keys and 39\nCA certificates, all under sys/title/0005001b/10054000/content/ of the\nMLC, and olive and wood appear twice under distinct ids, so 7 distinct client\npairs and 39 CA files are read. A key file must be a non-empty multiple of\n16 bytes and is decrypted with the key at OTP offset 0x120. Online mode is\nonly enabled when every file of the table is present. For the libretro\ncore these live in the save directory, not the system directory.\nref: src/Cafe/IOSU/legacy/iosu_crypto.cpp:303-330,\n     src/Cafe/IOSU/legacy/iosu_crypto.cpp:463-606,\n     src/Cafe/IOSU/legacy/iosu_crypto.cpp:608-655,\n     src/config/ActiveSettings.cpp:50-55, src/Cafe/Account/Account.cpp:422-458\n\ncafeLibs. When a title depends on a module, the loader first looks for\n<module>.rpl in cafeLibs/ under the user data path and loads it in place\nof Cemu's own implementation, as long as the game profile does not set\nloadSharedLibraries to false (the default is true). Any Cafe OS module can\nbe placed there. The code names snd_user.rpl and snduser2.rpl as the ones\nto dump when a title uses an unsupported audio effect, and gates\nswkbd.rpl and erreula.rpl on the presence of their data packs in the MLC\n(swkbd.pack of title 0005001b-1004f000, erreula.pack of 0005001b-10051000),\nfalling back to the built-in applets when the pack is absent.\nref: src/Cafe/OS/RPL/rpl.cpp:1929-1939, src/Cafe/OS/RPL/rpl.cpp:1971-1991,\n     src/Cafe/OS/RPL/rpl.cpp:2142-2154, src/config/ActiveSettings.cpp:57-60,\n     src/Cafe/OS/libs/snd_user/snd_user.cpp:1220-1227\n\nData directories. A title's game profile is read from gameProfiles/<title\nid>.ini under the config path, then from gameProfiles/default/<title\nid>.ini under the data path. Upstream ships 236 of them in\nbin/gameProfiles/default and the libretro data path is <system_dir>/Cemu.\nStandalone loads as a graphic pack every directory holding a rules.txt\nunder graphicPacks/ of the user data path, and its downloader extracts the\ncemu_graphic_packs release into graphicPacks/downloadedGraphicPacks/. The\nlibretro core carries its own copy of that set, zipped into the binary at\nbuild time from the dependencies/cemu_graphic_packs submodule. On each\ncontent load it compares the first line of graphicPacks/version.txt with\nthe set it carries and, when they differ, deletes everything under\n<system_dir>/Cemu/graphicPacks and unpacks its set there. A user's own\npacks go in <system_dir>/Cemu/customGraphicPacks, where a folder replaces\nthe bundled pack at the same relative path. The core enables the packs\nflagged default and those switched on through its core options. Miiverse\nposts for The Wind Waker HD are served from resources/miiverse/OfflineDB.zar\nunder the user data path when the Nintendo network service is selected.\nref: src/Cafe/GameProfile/GameProfile.cpp:181-195,\n     src/Cafe/GraphicPack/GraphicPack2.cpp:96-111,\n     src/gui/wxgui/DownloadGraphicPacksWindow.cpp:133,\n     src/gui/wxgui/DownloadGraphicPacksWindow.cpp:234-238,\n     src/libretro/embed_graphic_packs.cmake:8-54,\n     src/libretro/LibretroGraphicPacks.cpp:30-103,\n     src/libretro/CemuLibretro.cpp:6355,\n     src/libretro/CemuLibretro.cpp:3541-3582,\n     src/libretro/CemuLibretro.cpp:3895-3905,\n     src/Cafe/OS/libs/nn_olv/nn_olv_OfflineDB.cpp:21-31,\n     src/Cafe/OS/libs/nn_olv/nn_olv_OfflineDB.cpp:124-125,\n     src/Cafe/OS/libs/nn_olv/nn_olv_InitializeTypes.cpp:242-248\n\nGenerated, not collected: settings.xml (standalone only), network_services.xml\n(custom service URLs, read when present), controllerProfiles/,\ntitle_list_cache.xml (standalone only, the core keeps no cache), the shader\ncaches, log.txt, sdcard/, dump/, and the language.txt and country.txt that\nthe wx frontend and the libretro core both write into title\n0005001b-1005c000 of the MLC when absent. The core also creates titles/\nunder <system_dir>/Cemu and scans it for updates and DLC, which like\ntitle.tmd, title.tik and bootSound.btsnd belong to each title's own dump.\nThe core writes account_name.txt under <system_dir>/Cemu with a\n\"<persistent id> = <name>\" line per account and names the accounts from\nit when a title starts.\nref: src/main.cpp:117-141, src/config/NetworkSettings.cpp:10-14,\n     src/gui/wxgui/CemuApp.cpp:580-606,\n     src/libretro/CemuLibretro.cpp:2072-2108,\n     src/libretro/CemuLibretro.cpp:4108-4114,\n     src/libretro/CemuLibretro.cpp:4906-4918,\n     src/Cafe/HW/Latte/Core/LatteShaderCache.cpp:232\n",
        "profiled_date": "2026-10-23",
        "save_folder_once": true,
        "source": "https://git.libretro.com/libretro/cemu-libretro",
        "source_commit": "14f56b569b3668db01a4972225993abd3e8f2096",
        "source_mirror": "https://github.com/WizzardSK/cemu-libretro",
        "systems": [
          "nintendo-wiiu"
        ],
        "type": "standalone + libretro",
        "upstream": "https://github.com/cemu-project/Cemu",
        "upstream_commit": "42876aa86d2b92f9c620a76959a792bf392b89d3",
        "version_basis": {
          "kind": "file",
          "path": "src/libretro/CemuLibretro.cpp",
          "pattern": "info->library_version\\s*=\\s*\"([^\"]+)\""
        }
      }
    }
  ],
  "kind": "emulators",
  "schema_version": 1
}
