Virtual Fileystem Projections
chyyran opened this issue · 3 comments
Rationale
Snowflake's Filesystem API allows for complicated game installation for modern, NAND based consoles. However, at runtime, this becomes complicated with the need to copy over installed DLC data, and merge it with save files, and other system files that must be present at runtime into the runtime root.
We propose an OS-agnostic filesystem projection API that allows orchestrators to project a disk-backed filesystem for emulators to access. This way, program files such as DLCs and installed games (i.e. CIAs) can be projected onto (from the emulator's POV) real directories, without having to copy or move large installed games that can be multiple gigabytes.
Implementation
Implementation will require installation of a virtual usermode filesystem backend such as Dokan.
- Backend
- Windows: winfsp
- Linux: fuse
Alternatives
- Symlinks
- Probably simpler to implement, but requires users to enable symlinks without elevation
Reopening because I am now convinced that the symlink approach is strictly inferior and this can be done safely if writing the FSP implementation in Rust.
driver bits happening in https://github.com/SnowflakePowered/snowflake-projfs