Skip to content

fix: resolve OoT voice streams with repeated RomFS separators - #1

Open
baromas wants to merge 1 commit into
MD5Visual:feat/oot-bootfrom
baromas:review/oot-voice-romfs-md5
Open

baromas wants to merge 1 commit into
MD5Visual:feat/oot-bootfrom
baromas:review/oot-voice-romfs-md5

Conversation

@baromas

@baromas baromas commented Nov 7, 2026

Copy link
Copy Markdown

What changed

OoT can request voice streams with a repeated interior separator, for example content://Voice/Resource//Stream/.... The RomFS parser already accepts repeated root separators. It rejected the interior separator before looking up the stream, so music and subtitles could play while the narrator was silent.

Normalize separators for mounted OoT RomFS lookups. Keep rejecting traversal, backslashes and truncated paths. The strict parser still serves the other games and overlay manifests.

Validation

  • M3 Pro, macOS 27.0, OoT v131072. The player confirmed audible English dialogue with Russian text in the combined development build.
  • The same patch passed 16 focused path cases and the production RomFS probe, including byte-identical reads through canonical and repeated-separator paths.
  • This isolated branch is based on a2e9e756. The whole MD5Visual branch with only this patch has yet to be played. No iOS device test.

Both Russian and English opening runs request the English BWAV with a repeated separator before Stream. The title already chooses a supported voice locale. Normalize repeated separators for mounted OoT paths before read-only index lookup, including entry type and directory lookups, and keep rejecting traversal and backslashes. Keep the strict parser for other games and overlay manifests.

Validated with 16 focused tests and the production RomFS probe against v131072, including byte-for-byte reads of the same opening voice asset through canonical and repeated-separator paths and 65 sampled files. Gameplay audibility is a separate check.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant