SnowflakePowered/snowflake

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

Alternatives

  • Symlinks
    • Probably simpler to implement, but requires users to enable symlinks without elevation

Closing in favour of proposal #818

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.