Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Is there a function to restore the subtitles of conversations between passers-by? #9

Open
garfildxm opened this issue Jun 9, 2024 · 5 comments
Labels
enhancement New feature or request

Comments

@garfildxm
Copy link

Could you please tell me about the language translation patch you released about DXMD? Does it restore the function of no subtitles for passerby dialogue in the game?

@KillerBeer01
Copy link

Not sure if Sean will be able to answer you any soon, providing a first-hand response, but I'm more than convinced that it does not and won't be ever able to. It is a matter of voice lines not being properly mapped to texts in game data files, and fixing those is not something that can be done simply by applying a .dll to the engine.

@SeanPesce
Copy link
Owner

As @KillerBeer01 correctly explained, this project only modifies existing subtitles. While your request is theoretically possible through a Herculean effort (as is nearly everything given enough time), I have no plans to implement it because the game does not (to my knowledge) ship with any mechanism to map the relevant data.

@SeanPesce SeanPesce added the enhancement New feature or request label Jun 10, 2024
@KillerBeer01
Copy link

Technically speaking, I have been mapping subtitles to their voice lines as part of my efforts of improving the quality of the translation, and that included none-displayable text lines too, where possible (it can be seen as audio tags in the modded .json file), but I highly doubt that this mapping can be used by the engine without editing original data files to impose the missing mapping on them... at least, I'm have a strong impression that the game treats voice related data entries as primary information, and text ones as secondary, not the other way around, and I don't think that the .dll ever has (or that it even may possibly have) hooks of the necessary kind.

@SeanPesce
Copy link
Owner

Interesting, can you elaborate on this mapping you've been working on? Is a mapping between files/IDs in the game archives, or more of a manual mapping? (Keep in mind that I haven't looked at the game files much in the last few years so I don't really remember the different internal file formats)

I don't think that the .dll ever has (or that it even may possibly have) hooks of the necessary kind.

Yeah it definitely doesn't have hooks for this stuff at the moment, but it would almost certainly be possible to hook some function that plays NPC dialog and inject an extra call to some other function that displays relevant subtitles. It'd take a lot more reverse-engineering of the game engine (and maybe the file formats), but with code injection via DLL technically "anything" is possible given enough time and effort.

@KillerBeer01
Copy link

To tell the truth, I also haven't looked at those files for a couple of years, and all I have right now is a big chunk of terrible uncommented spaghetti Java code, reflecting even more terrible spaghettiness of game data formats themselves, with tons of quirks and exceptions. From what I can remember off the top of my head, after parsing all pc_textlist type resources, I'd start a second pass to search for [assembly:/sound/localization/...pc_wavebank] resources whose referenced resource lists would contain references for both pc_fsb (actual audio) and pc_wavebankfx type resources, and the latter would have references to text lines' id's as well, which I'd log and then import the resulted mapping into the strings.json... of course, there were lots of pc_wavebankfx's that would have nulls instead text line id's, and those gaps I would have to fill manually, by matching unmapped texts with unmapped sounds in the strings.json files' custom editor, which I had to enhance with additional functions specifically for that purpose. So yes, it was a very manual process that I wouldn't wish on anyone, and that got completed only by sheer stubbornness and inability to overcome the sunk cost fallacy. (^_^)'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants