emulator: Cemu type: standalone + libretro core_classification: community_fork source: "https://git.libretro.com/libretro/cemu-libretro" source_mirror: "https://github.com/WizzardSK/cemu-libretro" upstream: "https://github.com/cemu-project/Cemu" logo: "https://raw.githubusercontent.com/cemu-project/Cemu/main/dist/linux/info.cemu.Cemu.png" profiled_date: "2026-10-04" source_commit: "4802094a2c15559541b3da3a6b11c2e12ba5d7e8" upstream_commit: "32e6628a6a9e5255fd0f7e734386a364ff9c106e" core_version: "2.6" display_name: "Nintendo - Wii U (Cemu)" cores: - cemu systems: [nintendo-wiiu] data_directories: - ref: cemu-gameprofiles destination: "Cemu/gameProfiles/default" source_ref: "src/Cafe/GameProfile/GameProfile.cpp:181-195, src/libretro/CemuLibretro.cpp:1699-1707" - ref: cemu-graphic-packs destination: "Cemu/graphicPacks/downloadedGraphicPacks" mode: standalone source_ref: "src/Cafe/GraphicPack/GraphicPack2.cpp:96-111, src/gui/wxgui/DownloadGraphicPacksWindow.cpp:234-238" notes: | Wii U emulator. The libretro core is a fork of the Cemu tree with the wx application removed, kept merged with upstream, with the frontend glue in src/libretro/. The upstream_commit above is the last merge base. The repository builds the core and nothing else, as a bare shared object, for linux x86_64 and aarch64, windows x86_64, osx x86_64 and arm64, android arm64-v8a and x86_64, webos aarch64, ios arm64 and tvos arm64. Nothing that the standalone distribution carries next to the executable (resources/, gameProfiles/default/) comes with the core. The community graphic packs, which standalone downloads, are compiled into it. ref: CMakeLists.txt:4-7, src/CMakeLists.txt:75-90, .gitlab-ci.yml:110, 116, 139, 400, 421, 426, 434, 464, 550, 569 Path model. Cemu resolves every file through four roots: the user data path (keys.txt, otp.bin, seeprom.bin, cafeLibs/, graphicPacks/, shareddata.bin, resources/miiverse/, the default mlc01), the config path (settings.xml, network_services.xml, controllerProfiles/, per-title gameProfiles/), the data path (resources/sharedFonts/, gameProfiles/default/) and the MLC. The libretro core points user data, config, cache and data at /Cemu, and always puts the MLC at /Cemu/mlc01: it does not read settings.xml. The Cemu subdirectory is not doubled when the frontend already hands over a directory of that name (saves sorted per core). Standalone Cemu uses the portable directory next to the executable when it exists, otherwise %APPDATA%/Cemu on Windows, XDG_DATA_HOME/Cemu and XDG_CONFIG_HOME/Cemu on Linux, and the MLC defaults to /mlc01. path: entries below are the libretro destination under the system directory; standalone_path: is relative to the Cemu user data directory. ref: src/libretro/CemuLibretro.cpp:1647-1707, src/libretro/CemuLibretro.cpp:3264-3272, src/gui/wxgui/CemuApp.cpp:90-123, src/gui/wxgui/CemuApp.cpp:127-171, src/config/ActiveSettings.cpp:295-321 keys.txt is read once from the user data path. A missing file is created with a comment header and an example key; each line is stripped of comments, spaces, dashes and underscores and must then be 32 hex characters, otherwise an error is raised for that line. FindDiscKey tries every key in order against the encrypted partition header of a .wud/.wux and falls back to a 16-byte .key next to the image. The libretro core asks that question before setting up any renderer and refuses the load with a message naming keys.txt when no key matches, so an encrypted disc image does not start without it. .wua archives, .rpx and NUS directories are not encrypted with a disc key and load without the file. ref: src/Cafe/Filesystem/FST/KeyCache.cpp:64-136, src/Cafe/Filesystem/FST/FST.cpp:192-246, src/libretro/CemuLibretro.cpp:4688-4734 Shared fonts. LoadSharedData runs at every title start and looks for the four fonts of title 0005001b-10042400 in the MLC first, then under resources/sharedFonts/ of the data path. All four must be found in one place or the other, otherwise none is loaded and the code tries shareddata.bin, a 32 MiB dump of the shared data region, read from the user data path straight into 0xF8000000. With nothing loaded a title that calls OSGetSharedData receives the placeholder font compiled into the binary, decompressed from a zlib array, so games run but with one Latin face standing in for the CJK sets. The four files in resources/sharedFonts/ of the source tree are Noto Sans CJK Medium faces under the console names, not dumps: the standalone distribution ships them, the libretro core does not and looks under /Cemu/resources/sharedFonts/. ref: src/Cafe/CafeSystem.cpp:286-365, src/Cafe/CafeSystem.cpp:907-911, src/Cafe/OS/libs/coreinit/coreinit.cpp:137-184, src/resource/CafeDefaultFont.cpp:2562-2569 Online files. iosuCrypto_init reads otp.bin and seeprom.bin from the user data path and rejects any size other than 1024 and 512 bytes; without a valid OTP no certificate is loaded and online mode is off. The certificate table names 8 client certificates with their AES-encrypted RSA keys and 39 CA certificates, all under sys/title/0005001b/10054000/content/ of the MLC; olive and wood appear twice under distinct ids, so 7 distinct client pairs and 39 CA files are read. A key file must be a non-empty multiple of 16 bytes and is decrypted with the key at OTP offset 0x120. Online mode is only enabled when every file of the table is present. For the libretro core these live in the save directory, not the system directory. ref: src/Cafe/IOSU/legacy/iosu_crypto.cpp:303-330, src/Cafe/IOSU/legacy/iosu_crypto.cpp:463-606, src/Cafe/IOSU/legacy/iosu_crypto.cpp:608-655, src/config/ActiveSettings.cpp:50-55, src/Cafe/Account/Account.cpp:422-458 cafeLibs. When a title depends on a module, the loader first looks for .rpl in cafeLibs/ under the user data path and loads it in place of Cemu's own implementation, as long as the game profile does not set loadSharedLibraries to false (the default is true). Any Cafe OS module can be placed there; the code names snd_user.rpl and snduser2.rpl as the ones to dump when a title uses an unsupported audio effect, and gates swkbd.rpl and erreula.rpl on the presence of their data packs in the MLC (swkbd.pack of title 0005001b-1004f000, erreula.pack of 0005001b-10051000), falling back to the built-in applets when the pack is absent. ref: src/Cafe/OS/RPL/rpl.cpp:1929-1939, src/Cafe/OS/RPL/rpl.cpp:1971-1991, src/Cafe/OS/RPL/rpl.cpp:2142-2154, src/config/ActiveSettings.cpp:57-60, src/Cafe/OS/libs/snd_user/snd_user.cpp:1220-1227 Data directories. A title's game profile is read from gameProfiles/.ini under the config path, then from gameProfiles/default/<title id>.ini under the data path; upstream ships 236 of them in bin/gameProfiles/default and the libretro data path is <system_dir>/Cemu. Standalone loads as a graphic pack every directory holding a rules.txt under graphicPacks/ of the user data path, and its downloader extracts the cemu_graphic_packs release into graphicPacks/downloadedGraphicPacks/. The libretro core carries its own copy of that set, zipped into the binary at build time from the dependencies/cemu_graphic_packs submodule. On each content load it compares the first line of graphicPacks/version.txt with the set it carries and, when they differ, deletes everything under <system_dir>/Cemu/graphicPacks and unpacks its set there. A user's own packs go in <system_dir>/Cemu/customGraphicPacks, where a folder replaces the bundled pack at the same relative path. The core enables the packs flagged default and those switched on through its core options. Miiverse posts for The Wind Waker HD are served from resources/miiverse/OfflineDB.zar under the user data path when the Nintendo network service is selected. ref: src/Cafe/GameProfile/GameProfile.cpp:181-195, src/Cafe/GraphicPack/GraphicPack2.cpp:96-111, src/gui/wxgui/DownloadGraphicPacksWindow.cpp:133, src/gui/wxgui/DownloadGraphicPacksWindow.cpp:234-238, src/libretro/embed_graphic_packs.cmake:8-54, src/libretro/LibretroGraphicPacks.cpp:30-103, src/libretro/CemuLibretro.cpp:4883, src/libretro/CemuLibretro.cpp:2745-2786, src/libretro/CemuLibretro.cpp:3130-3140, src/Cafe/OS/libs/nn_olv/nn_olv_OfflineDB.cpp:21-31, src/Cafe/OS/libs/nn_olv/nn_olv_OfflineDB.cpp:124-125, src/Cafe/OS/libs/nn_olv/nn_olv_InitializeTypes.cpp:242-248 Generated, not collected: settings.xml (standalone only), network_services.xml (custom service URLs, read when present), controllerProfiles/, title_list_cache.xml (standalone only, the core keeps no cache), the shader caches, log.txt, sdcard/, dump/, and the language.txt and country.txt that the wx frontend and the libretro core both write into title 0005001b-1005c000 of the MLC when absent. The core also creates titles/ under <system_dir>/Cemu and scans it for updates and DLC, which like title.tmd, title.tik and bootSound.btsnd belong to each title's own dump. ref: src/main.cpp:117-141, src/config/NetworkSettings.cpp:10-14, src/gui/wxgui/CemuApp.cpp:580-606, src/libretro/CemuLibretro.cpp:1609-1645, src/libretro/CemuLibretro.cpp:3289-3295, src/Cafe/HW/Latte/Core/LatteShaderCache.cpp:232 files: - name: keys.txt path: Cemu/keys.txt standalone_path: keys.txt required: true description: "Disc title keys, one AES-128 key per line" 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. source_ref: "src/Cafe/Filesystem/FST/KeyCache.cpp:64-136, src/Cafe/Filesystem/FST/FST.cpp:192-246, src/libretro/CemuLibretro.cpp:4688-4734" - name: otp.bin path: Cemu/otp.bin standalone_path: otp.bin required: false size: 1024 validation: [size] description: "Wii U OTP dump" 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. source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:553-577, src/Cafe/IOSU/legacy/iosu_crypto.cpp:619-626" - name: seeprom.bin path: Cemu/seeprom.bin standalone_path: seeprom.bin required: false size: 512 validation: [size] description: "Wii U SEEPROM dump" note: >- Read into the SEEPROM mirror at init; any other size is rejected and online mode stays off. source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:579-600, src/Cafe/IOSU/legacy/iosu_crypto.cpp:627-632" # Shared fonts, title 0005001b-10042400. Two slots per font: the console # dump in the MLC, read first, and the replacement Cemu ships in # resources/sharedFonts/ of its data path, read when the MLC has none. - name: CafeCn.ttf path: Cemu/mlc01/sys/title/0005001b/10042400/content/CafeCn.ttf standalone_path: mlc01/sys/title/0005001b/10042400/content/CafeCn.ttf load_from: save_dir required: false hle_fallback: true description: "Shared font, Simplified Chinese, console dump" 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. source_ref: "src/Cafe/CafeSystem.cpp:292, src/Cafe/CafeSystem.cpp:300-356" - name: CafeKr.ttf path: Cemu/mlc01/sys/title/0005001b/10042400/content/CafeKr.ttf standalone_path: mlc01/sys/title/0005001b/10042400/content/CafeKr.ttf load_from: save_dir required: false hle_fallback: true description: "Shared font, Korean, console dump" source_ref: "src/Cafe/CafeSystem.cpp:293, src/Cafe/CafeSystem.cpp:300-356" - name: CafeStd.ttf path: Cemu/mlc01/sys/title/0005001b/10042400/content/CafeStd.ttf standalone_path: mlc01/sys/title/0005001b/10042400/content/CafeStd.ttf load_from: save_dir required: false hle_fallback: true description: "Shared font, standard Latin and Japanese, console dump" source_ref: "src/Cafe/CafeSystem.cpp:294, src/Cafe/CafeSystem.cpp:300-356" - name: CafeTw.ttf path: Cemu/mlc01/sys/title/0005001b/10042400/content/CafeTw.ttf standalone_path: mlc01/sys/title/0005001b/10042400/content/CafeTw.ttf load_from: save_dir required: false hle_fallback: true description: "Shared font, Traditional Chinese, console dump" source_ref: "src/Cafe/CafeSystem.cpp:295, src/Cafe/CafeSystem.cpp:300-356" - name: CafeCn.ttf path: Cemu/resources/sharedFonts/CafeCn.ttf standalone_path: resources/sharedFonts/CafeCn.ttf required: false bundled: true hle_fallback: true size: 9664448 sha1: 2d95227b9b3eaf1c74d9293ecd0d190ec7ffbbe3 description: "Shared font replacement, Noto Sans SC Medium" note: >- Carried in bin/resources/sharedFonts/ of the source tree and installed next to the standalone executable. Read only when the MLC copy is absent. The libretro core ships without it and looks under <system_dir>/Cemu/resources/sharedFonts/. source_ref: "src/Cafe/CafeSystem.cpp:292, src/Cafe/CafeSystem.cpp:329-334, bin/resources/sharedFonts/CafeCn.ttf" - name: CafeKr.ttf path: Cemu/resources/sharedFonts/CafeKr.ttf standalone_path: resources/sharedFonts/CafeKr.ttf required: false bundled: true hle_fallback: true size: 5626464 sha1: f0ef38fcc6133c24f4f38ff9b5c06b37e970d3cc description: "Shared font replacement, Noto Sans KR Medium" source_ref: "src/Cafe/CafeSystem.cpp:293, src/Cafe/CafeSystem.cpp:329-334, bin/resources/sharedFonts/CafeKr.ttf" - name: CafeStd.ttf path: Cemu/resources/sharedFonts/CafeStd.ttf standalone_path: resources/sharedFonts/CafeStd.ttf required: false bundled: true hle_fallback: true size: 5363768 sha1: da0d4bcc3b13339179bee946eba16adfd731b4d3 description: "Shared font replacement, Noto Sans JP Medium" source_ref: "src/Cafe/CafeSystem.cpp:294, src/Cafe/CafeSystem.cpp:329-334, bin/resources/sharedFonts/CafeStd.ttf" - name: CafeTw.ttf path: Cemu/resources/sharedFonts/CafeTw.ttf standalone_path: resources/sharedFonts/CafeTw.ttf required: false bundled: true hle_fallback: true size: 6593548 sha1: 8ec796192ebc710f23ab6bd55453cae523b70444 description: "Shared font replacement, Noto Sans TC Medium" source_ref: "src/Cafe/CafeSystem.cpp:295, src/Cafe/CafeSystem.cpp:329-334, bin/resources/sharedFonts/CafeTw.ttf" - name: shareddata.bin path: Cemu/shareddata.bin standalone_path: shareddata.bin required: false hle_fallback: true description: "Dump of the shared data region of a console" size: 33554432 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; every other byte is zero. source_ref: "src/Cafe/CafeSystem.cpp:268-291, src/Cafe/CafeSystem.cpp:357-365" - name: snd_user.rpl path: Cemu/cafeLibs/snd_user.rpl standalone_path: cafeLibs/snd_user.rpl required: false hle_fallback: true description: "Cafe OS sound library" 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. source_ref: "src/Cafe/OS/RPL/rpl.cpp:1971-1991, src/Cafe/OS/RPL/rpl.cpp:2142-2154, src/Cafe/OS/libs/snd_user/snd_user.cpp:1220-1227" - name: snduser2.rpl path: Cemu/cafeLibs/snduser2.rpl standalone_path: cafeLibs/snduser2.rpl required: false hle_fallback: true description: "Cafe OS sound library, second generation" note: >- Same mechanism as snd_user.rpl, for titles that depend on snduser2. source_ref: "src/Cafe/OS/RPL/rpl.cpp:1971-1991, src/Cafe/OS/RPL/rpl.cpp:2142-2154, src/Cafe/OS/libs/snd_user/snd_user.cpp:1220-1227" - name: swkbd.rpl path: Cemu/cafeLibs/swkbd.rpl standalone_path: cafeLibs/swkbd.rpl required: false hle_fallback: true description: "Cafe OS software keyboard applet library" 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. source_ref: "src/Cafe/OS/RPL/rpl.cpp:1929-1933, src/Cafe/OS/RPL/rpl.cpp:1978-1988" - name: erreula.rpl path: Cemu/cafeLibs/erreula.rpl standalone_path: cafeLibs/erreula.rpl required: false hle_fallback: true description: "Cafe OS error viewer applet library" 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. source_ref: "src/Cafe/OS/RPL/rpl.cpp:1935-1939, src/Cafe/OS/RPL/rpl.cpp:1978-1988" - name: swkbd.pack path: Cemu/mlc01/sys/title/0005001b/1004f000/content/00/swkbd/swkbd.pack standalone_path: mlc01/sys/title/0005001b/1004f000/content/00/swkbd/swkbd.pack load_from: save_dir required: false description: "Software keyboard applet data, title 0005001b-1004f000" note: >- Its presence in the MLC is what lets a swkbd.rpl from cafeLibs/ be used; the applet then reads it through the Cafe filesystem. source_ref: "src/Cafe/OS/RPL/rpl.cpp:1929-1933" - name: erreula.pack path: Cemu/mlc01/sys/title/0005001b/10051000/content/00/erreula/erreula.pack standalone_path: mlc01/sys/title/0005001b/10051000/content/00/erreula/erreula.pack load_from: save_dir required: false description: "Error viewer applet data, title 0005001b-10051000" note: >- Its presence in the MLC is what lets an erreula.rpl from cafeLibs/ be used; the applet then reads it through the Cafe filesystem. source_ref: "src/Cafe/OS/RPL/rpl.cpp:1935-1939" - name: OfflineDB.zar path: Cemu/resources/miiverse/OfflineDB.zar standalone_path: resources/miiverse/OfflineDB.zar required: false unsourceable: "archive of Wind Waker HD Miiverse posts in a layout only this reader describes, never published with any Cemu release" description: "Archived Miiverse posts for The Wind Waker HD" 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. source_ref: "src/Cafe/OS/libs/nn_olv/nn_olv_OfflineDB.cpp:21-31, src/Cafe/OS/libs/nn_olv/nn_olv_OfflineDB.cpp:67-72, src/Cafe/OS/libs/nn_olv/nn_olv_OfflineDB.cpp:114-135, src/Cafe/OS/libs/nn_olv/nn_olv_OfflineDB.cpp:186-197, src/Cafe/OS/libs/nn_olv/nn_olv_InitializeTypes.cpp:242-248" # Client certificates, title 0005001b-10054000. Each pair is read from the # MLC and the .aes key is decrypted with the OTP key at offset 0x120. - name: WIIU_COMMON_1_CERT.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_COMMON_1_CERT.der standalone_path: mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_COMMON_1_CERT.der load_from: save_dir required: false description: "Client certificate, common" source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:471, src/Cafe/IOSU/legacy/iosu_crypto.cpp:303-330" - name: WIIU_COMMON_1_RSA_KEY.aes path: Cemu/mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_COMMON_1_RSA_KEY.aes standalone_path: mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_COMMON_1_RSA_KEY.aes load_from: save_dir required: false description: "Client key, common, AES-CBC encrypted" note: "Must be a non-empty multiple of 16 bytes." source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:471, src/Cafe/IOSU/legacy/iosu_crypto.cpp:312-326" - name: WIIU_ACCOUNT_1_CERT.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_ACCOUNT_1_CERT.der standalone_path: mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_ACCOUNT_1_CERT.der load_from: save_dir required: false description: "Client certificate, account" source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:472, src/Cafe/IOSU/legacy/iosu_crypto.cpp:303-330" - name: WIIU_ACCOUNT_1_RSA_KEY.aes path: Cemu/mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_ACCOUNT_1_RSA_KEY.aes standalone_path: mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_ACCOUNT_1_RSA_KEY.aes load_from: save_dir required: false description: "Client key, account, AES-CBC encrypted" note: "Must be a non-empty multiple of 16 bytes." source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:472, src/Cafe/IOSU/legacy/iosu_crypto.cpp:312-326" - name: WIIU_OLIVE_1_CERT.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_OLIVE_1_CERT.der standalone_path: mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_OLIVE_1_CERT.der load_from: save_dir required: false description: "Client certificate, olive (Miiverse)" note: "Registered twice, under ids 4 and 7." source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:473, src/Cafe/IOSU/legacy/iosu_crypto.cpp:476, src/Cafe/IOSU/legacy/iosu_crypto.cpp:303-330" - name: WIIU_OLIVE_1_RSA_KEY.aes path: Cemu/mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_OLIVE_1_RSA_KEY.aes standalone_path: mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_OLIVE_1_RSA_KEY.aes load_from: save_dir required: false description: "Client key, olive, AES-CBC encrypted" note: "Must be a non-empty multiple of 16 bytes." source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:473, src/Cafe/IOSU/legacy/iosu_crypto.cpp:476, src/Cafe/IOSU/legacy/iosu_crypto.cpp:312-326" - name: WIIU_VINO_1_CERT.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_VINO_1_CERT.der standalone_path: mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_VINO_1_CERT.der load_from: save_dir required: false description: "Client certificate, vino (Nintendo TVii)" source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:474, src/Cafe/IOSU/legacy/iosu_crypto.cpp:303-330" - name: WIIU_VINO_1_RSA_KEY.aes path: Cemu/mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_VINO_1_RSA_KEY.aes standalone_path: mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_VINO_1_RSA_KEY.aes load_from: save_dir required: false description: "Client key, vino, AES-CBC encrypted" note: "Must be a non-empty multiple of 16 bytes." source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:474, src/Cafe/IOSU/legacy/iosu_crypto.cpp:312-326" - name: WIIU_WOOD_1_CERT.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_WOOD_1_CERT.der standalone_path: mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_WOOD_1_CERT.der load_from: save_dir required: false description: "Client certificate, wood (eShop)" note: "Registered twice, under ids 6 and 8." source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:475, src/Cafe/IOSU/legacy/iosu_crypto.cpp:477, src/Cafe/IOSU/legacy/iosu_crypto.cpp:303-330" - name: WIIU_WOOD_1_RSA_KEY.aes path: Cemu/mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_WOOD_1_RSA_KEY.aes standalone_path: mlc01/sys/title/0005001b/10054000/content/ccerts/WIIU_WOOD_1_RSA_KEY.aes load_from: save_dir required: false description: "Client key, wood, AES-CBC encrypted" note: "Must be a non-empty multiple of 16 bytes." source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:475, src/Cafe/IOSU/legacy/iosu_crypto.cpp:477, src/Cafe/IOSU/legacy/iosu_crypto.cpp:312-326" # CA certificates, same title, scerts/. Parsed as DER X.509 and added to # the SSL store; every one of them must load for online mode. - name: CACERT_NINTENDO_CA.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/CACERT_NINTENDO_CA.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/CACERT_NINTENDO_CA.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:480" - name: CACERT_NINTENDO_CA_G2.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/CACERT_NINTENDO_CA_G2.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/CACERT_NINTENDO_CA_G2.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:481" - name: CACERT_NINTENDO_CA_G3.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/CACERT_NINTENDO_CA_G3.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/CACERT_NINTENDO_CA_G3.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:482" - name: CACERT_NINTENDO_CLASS2_CA.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/CACERT_NINTENDO_CLASS2_CA.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/CACERT_NINTENDO_CLASS2_CA.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:483" - name: CACERT_NINTENDO_CLASS2_CA_G2.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/CACERT_NINTENDO_CLASS2_CA_G2.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/CACERT_NINTENDO_CLASS2_CA_G2.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:484" - name: CACERT_NINTENDO_CLASS2_CA_G3.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/CACERT_NINTENDO_CLASS2_CA_G3.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/CACERT_NINTENDO_CLASS2_CA_G3.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:485" - name: BALTIMORE_CYBERTRUST_ROOT_CA.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/BALTIMORE_CYBERTRUST_ROOT_CA.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/BALTIMORE_CYBERTRUST_ROOT_CA.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:488" - name: CYBERTRUST_GLOBAL_ROOT_CA.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/CYBERTRUST_GLOBAL_ROOT_CA.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/CYBERTRUST_GLOBAL_ROOT_CA.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:489" - name: VERIZON_GLOBAL_ROOT_CA.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/VERIZON_GLOBAL_ROOT_CA.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/VERIZON_GLOBAL_ROOT_CA.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:490" - name: GLOBALSIGN_ROOT_CA.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/GLOBALSIGN_ROOT_CA.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/GLOBALSIGN_ROOT_CA.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:491" - name: GLOBALSIGN_ROOT_CA_R2.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/GLOBALSIGN_ROOT_CA_R2.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/GLOBALSIGN_ROOT_CA_R2.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:492" - name: GLOBALSIGN_ROOT_CA_R3.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/GLOBALSIGN_ROOT_CA_R3.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/GLOBALSIGN_ROOT_CA_R3.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:493" - name: VERISIGN_CLASS3_PUBLIC_PRIMARY_CA_G3.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/VERISIGN_CLASS3_PUBLIC_PRIMARY_CA_G3.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/VERISIGN_CLASS3_PUBLIC_PRIMARY_CA_G3.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:494" - name: VERISIGN_UNIVERSAL_ROOT_CA.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/VERISIGN_UNIVERSAL_ROOT_CA.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/VERISIGN_UNIVERSAL_ROOT_CA.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:495" - name: VERISIGN_CLASS3_PUBLIC_PRIMARY_CA_G5.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/VERISIGN_CLASS3_PUBLIC_PRIMARY_CA_G5.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/VERISIGN_CLASS3_PUBLIC_PRIMARY_CA_G5.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:496" - name: THAWTE_PRIMARY_ROOT_CA_G3.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/THAWTE_PRIMARY_ROOT_CA_G3.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/THAWTE_PRIMARY_ROOT_CA_G3.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:497" - name: THAWTE_PRIMARY_ROOT_CA.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/THAWTE_PRIMARY_ROOT_CA.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/THAWTE_PRIMARY_ROOT_CA.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:498" - name: GEOTRUST_GLOBAL_CA.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/GEOTRUST_GLOBAL_CA.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/GEOTRUST_GLOBAL_CA.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:499" - name: GEOTRUST_GLOBAL_CA2.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/GEOTRUST_GLOBAL_CA2.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/GEOTRUST_GLOBAL_CA2.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:500" - name: GEOTRUST_PRIMARY_CA.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/GEOTRUST_PRIMARY_CA.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/GEOTRUST_PRIMARY_CA.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:501" - name: GEOTRUST_PRIMARY_CA_G3.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/GEOTRUST_PRIMARY_CA_G3.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/GEOTRUST_PRIMARY_CA_G3.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:502" - name: ADDTRUST_EXT_CA_ROOT.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/ADDTRUST_EXT_CA_ROOT.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/ADDTRUST_EXT_CA_ROOT.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:503" - name: COMODO_CA.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/COMODO_CA.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/COMODO_CA.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:504" - name: UTN_DATACORP_SGC_CA.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/UTN_DATACORP_SGC_CA.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/UTN_DATACORP_SGC_CA.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:505" - name: UTN_USERFIRST_HARDWARE_CA.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/UTN_USERFIRST_HARDWARE_CA.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/UTN_USERFIRST_HARDWARE_CA.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:506" - name: DIGICERT_HIGH_ASSURANCE_EV_ROOT_CA.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/DIGICERT_HIGH_ASSURANCE_EV_ROOT_CA.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/DIGICERT_HIGH_ASSURANCE_EV_ROOT_CA.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:507" - name: DIGICERT_ASSURED_ID_ROOT_CA.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/DIGICERT_ASSURED_ID_ROOT_CA.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/DIGICERT_ASSURED_ID_ROOT_CA.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:508" - name: DIGICERT_GLOBAL_ROOT_CA.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/DIGICERT_GLOBAL_ROOT_CA.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/DIGICERT_GLOBAL_ROOT_CA.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:509" - name: GTE_CYBERTRUST_GLOBAL_ROOT.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/GTE_CYBERTRUST_GLOBAL_ROOT.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/GTE_CYBERTRUST_GLOBAL_ROOT.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:510" - name: VERISIGN_CLASS3_PUBLIC_PRIMARY_CA.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/VERISIGN_CLASS3_PUBLIC_PRIMARY_CA.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/VERISIGN_CLASS3_PUBLIC_PRIMARY_CA.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:511" - name: THAWTE_PREMIUM_SERVER_CA.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/THAWTE_PREMIUM_SERVER_CA.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/THAWTE_PREMIUM_SERVER_CA.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:512" - name: EQUIFAX_SECURE_CA.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/EQUIFAX_SECURE_CA.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/EQUIFAX_SECURE_CA.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:513" - name: ENTRUST_SECURE_SERVER_CA.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/ENTRUST_SECURE_SERVER_CA.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/ENTRUST_SECURE_SERVER_CA.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:514" - name: VERISIGN_CLASS3_PUBLIC_PRIMARY_CA_G2.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/VERISIGN_CLASS3_PUBLIC_PRIMARY_CA_G2.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/VERISIGN_CLASS3_PUBLIC_PRIMARY_CA_G2.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:515" - name: ENTRUST_CA_2048.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/ENTRUST_CA_2048.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/ENTRUST_CA_2048.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:516" - name: ENTRUST_ROOT_CA.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/ENTRUST_ROOT_CA.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/ENTRUST_ROOT_CA.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:517" - name: ENTRUST_ROOT_CA_G2.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/ENTRUST_ROOT_CA_G2.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/ENTRUST_ROOT_CA_G2.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:518" - name: DIGICERT_ASSURED_ID_ROOT_CA_G2.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/DIGICERT_ASSURED_ID_ROOT_CA_G2.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/DIGICERT_ASSURED_ID_ROOT_CA_G2.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:519" - name: DIGICERT_GLOBAL_ROOT_CA_G2.der path: Cemu/mlc01/sys/title/0005001b/10054000/content/scerts/DIGICERT_GLOBAL_ROOT_CA_G2.der standalone_path: mlc01/sys/title/0005001b/10054000/content/scerts/DIGICERT_GLOBAL_ROOT_CA_G2.der load_from: save_dir required: false source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:520" firmware_titles: - id: "0005001b-10042400" name: "Shared fonts" content: ["CafeCn.ttf", "CafeKr.ttf", "CafeStd.ttf", "CafeTw.ttf"] required: false note: "Read from the MLC before the resources/sharedFonts/ copy of the data path." source_ref: "src/Cafe/CafeSystem.cpp:286-296" - id: "0005001b-10054000" name: "SSL certificates" content: ["ccerts/", "scerts/"] required: false note: "Every file of the certificate table must be present for online mode, with a valid otp.bin and seeprom.bin." source_ref: "src/Cafe/IOSU/legacy/iosu_crypto.cpp:463-521, src/Cafe/IOSU/legacy/iosu_crypto.cpp:535" - id: "0005001b-1004f000" name: "Software keyboard applet" content: ["content/00/swkbd/swkbd.pack"] required: false note: "Presence of the pack lets a dumped swkbd.rpl in cafeLibs/ replace the built-in keyboard." source_ref: "src/Cafe/OS/RPL/rpl.cpp:1929-1933" - id: "0005001b-10051000" name: "Error viewer applet" content: ["content/00/erreula/erreula.pack"] required: false note: "Presence of the pack lets a dumped erreula.rpl in cafeLibs/ replace the built-in error viewer." source_ref: "src/Cafe/OS/RPL/rpl.cpp:1935-1939" - id: "0005001b-1005c000" name: "Language and country lists" content: ["language.txt", "country.txt"] required: false note: "Written when absent, by the wx frontend on first run and by the libretro core at init." source_ref: "src/gui/wxgui/CemuApp.cpp:580-606, src/libretro/CemuLibretro.cpp:1609-1645" 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/"