← Blog
RETROPIE · FS · 0.6.0

Nintendo DS #56 + NTFS Cross-Directory Move + VFS Write Surface Complete

June 22, 2026 · sigil-retropie / sigil-fs · Sigil-Docs
retropie gaming fs ntfs 0.6.0

Nintendo DS (#56, ARM9 ARMv5TE + ARM7 stub + 256×192 dual-screen) pushes the RetroPie fleet to 56 LAUNCHABLE. sigil-fs lands ntfs_move_in — NTFS cross-directory rename that atomically updates both the $FILE_NAME field and ParentRef in a single MFT write — completing all four root/nested cross-dir combinations for NTFS. A capabilities doc commit closes every stale VFS write follow-up: all NTFS, FAT, and exFAT write ops are now wired. MANIFEST 363, ALL PASS. (sigil-retropie 6d9c8d6; sigil-fs 0d7a199, d9f0b71)

Nintendo DS (system #56) — ARM9 ARMv5TE + dual 256×192 screens stacked vertically
Nintendo DS (system #56) — ARM9 ARMv5TE + dual 256×192 screens stacked vertically

Nintendo DS — system #56 (6d9c8d6)

cores/nds.sg — the dual-screen handheld (Nintendo, 2004).

ARM9 (main CPU)
ARMv5TE stub — 32-bit, Thumb-capable. The first ARM core in the fleet with Thumb support. Runs game code.
ARM7 (co-processor)
Stub co-processor handling audio, WiFi, and GBA compatibility slot. Separate bus from ARM9.
Dual screen
Two 256×192 framebuffers stacked: top screen (3D engine output) + bottom screen (2D engine + touchscreen). Total canvas: 256×384. nds_render fills both FBs from their respective engine buffers in ARGB format.

uart=56 PASS. apps/nds (EL0), loads /roms/game.nds. First dual-screen console in the fleet.


ntfs_move_in (0d7a199 — sigil-fs) — NTFS cross-directory file move

ntfs_move_in(old_parent, old_ptr, old_len, new_parent, new_ptr, new_len, out):

The vfsdev_rename_path NTFS branch now handles all 4 rename/move combinations:

CaseHandler
root → rootntfs_rename (unchanged)
root → nested or nested → rootntfs_move_in (root sentinel: record 5)
nested → nested, same parentntfs_rename_in
nested → nested, different parentsntfs_move_in

Test: ntfs_movein_test output ABCDEFG — includes ParentRef verification, confirming the ParentRef was actually updated in the MFT record, not just the filename string.

MANIFEST 363 entries, ALL PASS

VFS write surface complete (d9f0b71)

A doc commit closes every stale "follow-up" or "unwired" label in the capabilities doc. The VFS write surface is now the broadest it has ever been — every op required for a working userspace file manager is wired on at least NTFS + FAT + exFAT.

NTFS
create, unlink, mkdir, rename (nested), rmdir (nested, dual-gate), move_in (cross-dir, atomic ParentRef+name), truncate, append.
FAT
rename_in (same-parent), cross_rename (all 4 root/subdir cases), create_in, mkdir_in.
exFAT
Same surface as FAT plus entryset-based write paths.
btrfs
lookup_dir, readdir_in (previously wired).