- Load sd:/config/omninx/preserve.ini during update mode cleanup to skip delete paths that overlap user-preserved prefixes (heap-backed path list). - Document preserve.ini in PRESERVE_INI.md, README, and INSTALLATION_PROCESS. - Prefer Hekate wording in main.c user messages for bootloader launch/errors. - Extend update deletion list for exefs_patches (audio_mastervolume, SaltyNX_Fixes, logo).
2.3 KiB
User preserve list (preserve.ini)
Update mode only. During OmniNX update cleanup (selective deletion), any path listed here with a truthy value is not deleted. Paths that would remove a preserved path (parent directory) are skipped as well.
- File:
sd:/config/omninx/preserve.ini - If missing or invalid, behavior is unchanged (full update deletion list applies).
Format
Section [Preserve] (case-sensitive). Each line is path as key, enable flag as value:
[Preserve]
'sd:/ROMs'=1
sd:/switch/MyHomebrewFolder=0
sd:/backup/tools=1
Path (key)
- Must start with
sd:/(after optional quoting). - Optional matching single or double quotes around the key are stripped (helps Ultrahand
set-ini-valand readability). - Trailing slashes are normalized away (except the volume root).
sd:/alone is rejected (too broad).- Minimum useful length after
sd:/is enforced (at least one more character).
Value (enable)
On if the value starts with 1, t, T, y, or Y (e.g. 1, true, yes). Anything else is off (path ignored).
Limits
- Up to 96 preserved paths; longer keys truncated internally (~224 bytes per path).
- Duplicate paths after normalization are skipped.
- The list is allocated on the heap only while update cleanup runs (not a large static buffer in IPL IRAM), to avoid crowding hardware-adjacent memory used by Joy-Con UART and similar peripherals.
Overlap rules
For each delete candidate from deletion_lists_update.h, deletion is skipped if it overlaps any enabled preserve path:
- Same path, or
- Delete target is inside a preserved tree (preserved path is a prefix), or
- Delete target is an ancestor of a preserved path (deleting it would remove the preserved data).
So preserving sd:/ROMs also blocks deleting sd:/ROMs/title if that were on the delete list, and blocks deleting sd:/ if sd:/ROMs is preserved.
Ultrahand
You can toggle entries with:
set-ini-val sd:/config/omninx/preserve.ini Preserve 'sd:/ROMs' 1
and 0 to disable. Use the same quoted path in the key argument as in your INI.
Clean install
Not used in clean install mode. preserve.ini is only read for update cleanup (update_mode_cleanup).