Cutscene voices switch from Portuguese (pt-BR) to Japanese after the first boss #1460
Labels
No labels
accessibility
autorelease: pending
autorelease: tagged
bug
dependencies
documentation
duplicate
enhancement
github_actions
good first issue
help wanted
invalid
question
testing wanted
wontfix
No milestone
No assignees
1 participant
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Hookshot#1460
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Hookshot version
v2.0.11 (source d6369f1e)
What kind of problem
Sound, controls or saves
What happened
The game is set to Brazilian Portuguese (
language.txt=pt-BR, and the log saysoe: language pt-BR (language.txt)), but the cutscene voices switch to another language during play.JPja). Subtitles and menus stayed in Portuguese.Expected: every voiced cutscene uses the Portuguese (
USpt) dub.What I checked in the game files (romfs,
Voice/Resource/Stream):USpt_EventFlowMsg-_Dm_*.bwavfiles, the same count asUSen,JPja,EUdeand the others.Dm_Kokiri_0140,Dm_Kokiri_0150,Dm_Kokiri_0158) are all present, and none of them is byte-identical to itsJPja_counterpart, so the dump does not have Japanese audio under the Portuguese name.EventFlowMsg-_Dm_Kokiri_0158--..._001_b.bwavetc.) are tiny (about 3 KB, short sounds), so they do not explain a whole cutscene in another language.So the game seems to pick the voice language at runtime and, at some point after the start, it picks
JPjainstead ofUSpt.Side note, possibly unrelated: normal NPC dialogue has no voice, which matches the files (only
Dm_cutscenes and about 45LayoutMsglines are voiced).Where in the game
Great Deku Tree: the cutscene right after defeating Gohma. The intro cutscenes in Kokiri Forest earlier in the same playthrough were in Portuguese.
How often
Once so far
Graphics card and driver version
NVIDIA GeForce RTX 4060 (8 GB), NVIDIA 610.74
CPU, RAM and operating system
AMD Ryzen 7 5700X, 32 GB, Windows 11 Pro 24H2 (build 26100)
Changes from the defaults
language.txt:pt-BR(chosen in Hookshot Builder).nup, game folder at the root of a secondary drivehookshot_options.ini(Insert menu):audio: device sink on mix 0, 6 channels(5.1 output on the default device).hookshot_env.txt.Other software hooked into the game
No, nothing hooked in
hookshot_log.txt
Attaching
hookshot_log.txt(the run with the Gohma cutscene) in a comment below.Screenshots or video
No response
Before you send it
hookshot_log.txt
Notes from reading the game data and the host code, so nobody has to redo it. I haven't run the game for this yet.
Ruled out:
Voice/Resource/USpt_EventFlowMsg-_Dm_Kokiri_0160.bars.zsand its sixStream/USpt_..._Dm_Kokiri_0160_Text_00{0-5}_b.bwavfiles, the same set asUSen,JPjaand the rest.Event/Movie/Dm_Kokiri_0160.webm, but that file has one AV1 video stream and no audio track. The voices come from the.bwavfiles above, played alongside it, not from the movie player.Voice/VoiceSettingInfo.Product.111.byml.zs(zstd withzs.zsdic) has aLanguageMappingof 10 entries, one of them toUSpt. ItsResourcesentry forEventFlowMsg-_Dm_Kokiri_0160looks the same as the earlier Kokiri scenes' entries, which play in Portuguese.nn::oe::GetDesiredLanguage(host/nn_applet.c) readslanguage.txtonce and caches it, and the log showspt-BR (language.txt). Hookshot implements nonn::settingscalls, and the reporter's log has no unimplemented import to do with language or region.Lead: the choice of voice set is made in the game's own code. In
nn::settings::Language, Japanese is value 0. Some lookup on this scene's path (movie events, perhaps) getting 0 or a "not found" would come out asJPja.Next step, needs the game: a save just before the Deku Tree's death scene, plus a log of the voice files opened, to see which prefix the game asks for there. If anyone has such a save, please attach it here.
A lead on where the voice set is chosen. I traced this on the same game build (
e0f3ccfa) earlier, for a voice-language setting in another port of this game. It is not reproduced on Hookshot yet; I am setting up a build here and can run it.The game has a Voice Language option of its own, apart from the text language:
VoiceLanguage_TitleandVoiceLanguage_00to_08inLayoutMsg/SystemOption_00.msbt: Japanese, English, French (France), French (Canada), German, Spanish (Spain), Spanish (Latin America), Italian, Portuguese (Brazil).OptionData.VoiceLanguageof the game's flag database (GameData/GameDataList), its default isJapanese, and it is saved inoption.sav.option.savyet, the game's voice manager sets the flag once, on its first update, from the desired language (main+0x9b48c0, through a 17-entry table atmain+0x3f0fd28that has aPortuguese_Brazilentry). What I saw on a new profile with English text: the flag readJapanese, thenEnglish, before the title. A loadedoption.savthen replaces the value.barsof all nine languages and opens only the streams of the flag's language.So Japanese voices under Portuguese text is what the game does while that flag holds its default. I saw the same pair the other way round: save folders whose
option.savheldJapaneseplayedJPjavoices underen-UStext.A check that needs no save from before the scene. @deivid94, could you open the game's own Options screen and say what Voice Language shows now? If it shows Japanese, setting it to Portuguese there should bring the dub back (the game stores it in
option.savwhen it saves its options), and it would tell us that the option's value changed, not that the wrong files were picked for one scene.What that would leave open is how the value got back to the default between the opening (Portuguese) and the scene after Gohma: a load of
option.savthat holds or yields the default, or the game's option data being reset. I have not looked at that in Hookshot's code. With a build here I can start a newpt-BRprofile, log the flag and the voice files opened, and watch it across the first saves and a restart.Corrected 2026-11-11 16:33 UTC: above I wrote that the game sets the option from the system language only when there is no
option.savyet. On Hookshot it does so at every start, before it readsoption.sav(seven runs, in my next comment). The rest of this comment was a lead from another port and is replaced by those runs.I owed a reproduction here. I ran it on Hookshot main (
bdfe09cplus logging only), Linux, RTX 4090 with NVIDIA615.78.08, headless,
language.txt=pt-BR. The added logging wrote the game's ownVoice Language option every time it changed, every call on the save files, and the language prefix of every voice
file the game opened.
option.savoption.savemptied (0 bytes), Continueoption.savcut to half its size, ContinueUSptUSpt; the narration right after it: 4 of 4USptIn every run the characters' voice sets the game loaded were the Portuguese ones, and the game never opened or
created anything in its temporary storage (
user\temp).So on current main the scene after Gohma plays the Portuguese dub while the option holds Portuguese: the scene does
not pick its voices some other way. And the option did not fall back to Japanese on its own: at every start the
game sets Voice Language from the system language (pt-BR) before it reads
option.sav, and an empty or half-writtenoption.sav(what closing the game in the middle of a save could leave, runs 3 and 4) left that Portuguese value inplace.
That leaves one way I can see for Japanese voices under Portuguese text: an
option.savthat holds Japanese, which thegame reads at the start of a session and then uses for every scene. @deivid94, two questions:
Portuguese there should fix it for good.
(
user\save\...) come from anywhere else, for example copied from an emulator or another port, or withscripts/oot_saves.py?Your log is of the Gohma session only, and Hookshot's release build does not log save-file calls, so it cannot show
how
option.savlooked when that session started.Not tested: Windows, your version (v2.0.11; I ran current main), a full-size
option.savof zeros (what a power cutcan leave).
well guys i will play the game later.
but awanser the questions
i rebuild the game, because i was things of resolution I thought you could build with NVIDIA DLSS.
but i descovery what these options was native from build . (at least was the claude say it )
so i copy the save and after paste again .
about the audio into the configure is portuguese
but my windows 11 is set to english
i will print or record the issue. if continue .
I will make the changes that you suggested. later in this issue
Thanks for the report. Reports of the same problem are now collected in #2506, which lists this one with your details and links back here, so one fix closes them together and the open list stays readable. Follow #2506 for the fix, and add new details there (or here). If this turns out to be a separate problem it will be reopened.