### Please note: This page is unfinished and still contains references to the Citra emulator and the Nintendo 3ds! ## The User Directory yuzu's user directory is where the emulator persists the emulated Switchs NAND, save data, extra data, and a host of other files necessary for yuzu to run properly. The path of the user directory varies on different systems: - on Windows, the path is `C:/Users/[your-user-name]/AppData/Roaming/yuzu/`. Note that the folder `AppData` is hidden by default, so you need to change the configuration to view it. - in old version of yuzu, the user directory used to be the `user` folder in the same directory as the yuzu executable. - on macOS and Linux, the path is `~/.local/share/yuzu-emu/`. Note that the folder `.local` is hidden on most machines, so you need to change the configuration to view it. **Additionally, the `config` folder is located in `~/.config/yuzu-emu/`**. There are at least three directories within the user directory: `config`, `nand`, and `sdmc`. For users that have dumped the shared fonts from a Switch console, there will also be a `sysdata` directory. See below for details about each directory and what data is stored within. ##### Diagram of yuzu's User Directory ``` "User directory" ├── config ├── nand │ ├── 00000000000000000000000000000000 (optional) │ └── data │ ├── sysdata │ └── extdata ├── sdmc │ └── Nintendo │ ├── 00000000000000000000000000000000 │ | └── 00000000000000000000000000000000 │ | ├── title │ | └── extdata │ └── Private └── sysdata (optional) ``` ### Dumping files from a Switch Included in this guide are instructions on how to dump various files from a Switch console to put into the yuzu user directory. These files are optional in terms of yuzu's ability to run, but depending on certain circumstances some may be required in order to run a particular game or get past a certain point in the game. In general, dumping files from a Switch will require an SD card reader or some way to use wireless file transfer from a Switch to a computer like the [FTP System Module](https://github.com/jakibaki/sys-ftpd) or the [FTPd Homebrew](https://github.com/mtheall/ftpd) and that the Switch being dumped from has [Custom Firmware](https://guide.sdsetup.com) installed. Optionally, more advanced users can use [HacDiskMount](https://switchtools.sshnuke.net/) to access a [NAND Backup](https://guide.sdsetup.com/#/configuringhekate) instead of accessing the Switch directly. If the below articles are too wordy, consult the below tutorials for obtaining optional files to improve the yuzu experience: * [[Dumping System Archives and the Shared Fonts from a Switch Console]] * [[Dumping Save Data from a Switch Console]] --- ### config This directory contains files containing information that tell yuzu how to run. These files are in plain text and thus are fully editable and contain configurations for mapping controls, which [[CPU]] and audio engine to use, rendering and other visual options, the [[Log Filters]], which region the emulated Switch belongs to, whether to treat the emulated Switch as a new Switch, and whether to insert a virtual SD card into the emulated system. Changing these files is only to be done by advanced users because making changes at random can cause yuzu not to work as expected or at all. The yuzu executable has options menus that allow users to change most of the aforementioned configurations safely. If yuzu has trouble running after changing a file and the user cannot remember what they changed, delete the configuration files and run the executable again so that they are regenerated automatically (albeit as though yuzu is being run for the first time so any existing configurations are lost). ### log This directory contains `yuzu_log.txt`. This file is automatically generated by yuzu and stores the logging. It is overwritten every time yuzu is launched. ### nand This directory is the emulated Switch system NAND. It does not match an actual console's NAND exactly due to differences between yuzu and a physical Switch. This directory will contain the `data` directory and potentially also the system archives. #### data This directory is automatically generated by yuzu and contains the system and extra data for the emulated NAND. Inside this directory is another directory, `00000000000000000000000000000000`. On a physical Switch, the directory inside `data` would be named differently. Its name would be 32 characters long and made of hexadecimal characters (0-9 and A-F) instead of it being all 0's like yuzu. This knowledge is only important if you plan on dumping any NAND system data or extra data from a physical Switch and associating it with yuzu. The `00000000000000000000000000000000` contains two folders, `extdata`, containing NAND extra data, and `sysdata`, containing NAND system save data. ##### sysdata System save data is identified by a title ID, separated into TID High, the first 8 characters of the title ID, and TID Low, the last 8 characters of the title ID. Most system save data has a TID high of 00000000. An individual piece of system save data is stored in `sysdata/[TID Low]/[TID High]`. For details about the different kinds of system save data, see [3dbrew](https://www.3dbrew.org/wiki/System_SaveData). For first-time yuzu users, there may be nothing inside the `sysdata` directory. In fact this will be the case for most yuzu users, and is nothing to be alarmed about. This data will be created automatically in some cases, such as when a Mii is saved in Mii Maker. Almost none of this data is essential for yuzu to run homebrew games or backups of licensed titles. There is one notable exception to the last statement. yuzu requires a dump of a physical Switch's config savegame in order to run a small number of games. Follow the instructions located at [[Dumping Config Savegame from a Switch Console]] to obtain the config savegame from a Switch console. Other system save data aside from the config savegame can be dumped from a Switch console by an expert user and placed in the `sysdata` folder. At this time, though, many features that read from or write to system save data have not been implemented so there is currently little value in doing so. See [this discussion topic](https://discuss.citra-emu.org/d/905-nand-sysdata) for more details about dumping system save data. ##### extdata NAND extra data always has a TID High of 00048000, so the `extdata` directory should contain a `00048000` folder, though it has been observed in yuzu that there may be a `00000000` folder instead, and users have reported issues if there is both a `00000000` and `00048000` folder contained therein, so it is advised to delete the `00000000` folder if that is the case. Inside the folder may be nothing, or it may contain one or more directories named `F000000#`, where # can be the characters A-F or the numbers 0-9. Each of these folders corresponds to a TID low, which can be used to identify the type of extra data stored therein. See [3dbrew](https://www.3dbrew.org/wiki/Extdata?section=13#NAND_Shared_Extdata) for details about the different kinds of extra data stored in NAND. At this point in time, it is possible to dump extra data from a physical Switch's NAND using a save manager like [JKSM](https://github.com/J-D-K/JKSM) and to place it in the `extdata` directory, but doing so is entirely optional and yuzu does not currently emulate NAND features that utilize most of this extra data. #### system archives This folder, named `00000000000000000000000000000000`, will only exist if the system archives have been dumped from a physical Switch. The system archives are required for some games to work with yuzu. To obtain the system archives, follow the instructions located at [[Dumping System Archives and the Shared Fonts from a Switch Console]]. ### sdmc This directory is the equivalent of the SD card inserted into a physical Switch, which stores game save and extra data and any titles installed to the SD card in encrypted format, though yuzu does not currently emulate installing titles to SD and instead runs decrypted .Switch, .app, and .cxi files directly from the computer's filesystem. Inside the `sdmc` folder, just like on a real Switch console, is a `Nintendo Switch` directory, which contains two more directories, `Private` and `00000000000000000000000000000000`. #### Private The `Private` directory on a real Switch contains camera data (in `00020400/phtcache.bin`) and sound data (in `00020500/voice/...`). yuzu will create camera data while it is running. If a user wants to copy their camera and sound data to yuzu, they can do so easily by copying the `Private` folder from their SD card and overwriting yuzu's, but at this time there is no value in doing so. #### 00000000000000000000000000000000 This directory contains another directory of the same name, and inside of that is where game saves (in the `title` directory) and extra data (in the `extdata` directory) can be found. On a real SD card, there would not be two `00000000000000000000000000000000` folders, but instead the folders would be named as hexadecimal characters corresponding to a Switch console ID. If a user wishes to extract save or extra data from their physical console, they do not need to worry about the console ID not matching yuzu's `00000000000000000000000000000000` folders. ##### title If any games have been saved while playing them with yuzu, there should be a folder inside `sysdata` named `00040000`. This folder contains all of the save data for Switch titles. It is entirely possible to retrieve save data from an SD card using a physical Switch console and import it into yuzu to continue a game where it was last left off on the console. See [[Dumping Save Data from a Switch Console]] for instructions. On a real SD card, the `sysdata` folder will also contain the files required to run any Switch titles installed to the SD card. This can be mimicked somewhat by [[Dumping Installed Titles]] and importing them into yuzu's `sysdata` directory but this is unnecessary since yuzu can run them from anywhere on a computer filesystem and doesn't require the accompanying .tmd and .cmd files. On a real SD card, there may be two other directories inside `sysdata`. These directories are named `0004000e` and `0004008c` and correspond to downloaded game updates and DLC respectively. The data contained within these directories can be backed up on a computer as decrypted CIA files and installed with yuzu ([[Dumping Updates and DLCs]]). The latest version of GodMode9 is required to redump your DLCs if you do not own all them as it was dumped incorrectly before. ##### extdata This directory contains all of the extra data created when playing Switch game backups. yuzu emulates a console's behavior of reading from and writing to extra data, so this data can be dumped from an SD card using a physical Switch console and imported into yuzu. See [[Dumping Extra Data from a Switch Console]] for instructions. ##### other folders If a real SD card is compared to yuzu's emulated SD card, yuzu may appear to be missing one or more folders present on the real SD card: `dbs`, `backups`, and `Nintendo DSiWare`. The `dbs` folder contains a Switch console's title database. The `backups` folder contains saved data backed up via the Home Menu. The `Nintendo DSiWare` folder contains exported DSi exports. yuzu does not need any of these folders so there is currently no value in dumping them. ### sysdata This directory can contain two files. - `shared_font.bin`: this was a legacy system font data dumped from old versions of Switchutils and is no longer supported. If the user does not have shared font installed, yuzu will use the open source font replacement instead. Users should redump their shared font since the open source font replacement may not always look accurate. See [[Dumping System Archives and the Shared Fonts from a Switch Console]] for more information. - `aes_keys.txt`: this file is reserved for future use to hold decryption keys.