Sherlock Scalpel 3DO talkie based on zafos' work#7211
Sherlock Scalpel 3DO talkie based on zafos' work#7211bluddy wants to merge 22 commits intoscummvm:masterfrom
Conversation
The closing namespace comment incorrectly said Sherlock instead of Video.
Mark all audio tracks as finished when the stream reaches EOF. Without this fix, endOfVideo() would never return true because audio tracks would not report endOfTrack() == true. This could cause games to hang waiting for video playback to complete.
Add isAudioTrackFinished() to check if all queued audio has been played. This enables callers to determine when audio playback is complete so we can sync properly.
Add configuration and runtime support for playing 3DO voice acting in the PC version of Serrated Scalpel. Changes: - TalkieMode enum (TALKIE_NONE, TALKIE_AUDIO_ONLY) - 3DO asset detection using random files from duration table - Config file setting: talkie_mode
Precomputed audio durations for all 1722 3DO conversation clips. Used to synchronise text display with voice acting playback.
Add talkie mode that plays 3DO voice acting while displaying static portraits. - Non-blocking audio playback during conversations - Text-to-audio synchronisation using a duration lookup table - Hybrid skip behavior for multi-page dialogues - Audio cleanup on scene transitions
Remove hardcoded "Movies" path for 3DO stream files and add Movies to the default search path.
This change updates the default search path for 3DO stream files from 'HolmesData' to 'HolmesData/Movies'. Documentation has been updated to include the new talkie mode settings and path descriptions.
Restore base class Talk::waitForMore() for PC mode without talkie enabled. The custom waitLoop() uses wall-clock timing designed for audio synchronisation, which caused text to disappear too quickly when talkie mode is disabled.
Add talkie_mode checkbox to game settings for PC Serrated Scalpel. Allows enabling/disabling 3DO speech from the ScummVM GUI instead of requiring manual config file edits. - Add GAMEOPTION_TALKIE_MODE to detection.h - Add the relevant entries in detection_tables.h and metaengine.cpp - Change talkie_mode from int to bool
This allows for easy editing rather than using a complex tool.
|
I'm not a dev, and I'm not testing the pr, but I can suggest something. Can you make the option default to on if the scummvm scanner finds the default directory of the movies when scanning the games so the user that has the extra data doesnt have to remember to turn it off assuming that a user will rescan the same data many times over the years and may forget about the files ? Assuming that doesn't already happen of course. Edit: I see that it does, never mind then. "Add GAMEOPTION_TALKIE_MODE to detection.h
|
|
Apologies for the radio silence; I haven’t had time to look into this. Thank you @sev- for the review and @bluddy for continuing the work. I’m following along, but there’s a bug in my implementation I’m investigating: in some cases, the file selection for speech files seems to fail (for example, the morgue scene). I need some playtesting to understand what’s happening and to fix it properly. I have a temporary fix in place, but I’m not yet confident it doesn’t break other parts of the game. Bear with me. |
First of all, sorry for co-opting your PR - I haven't played the game yet and I really like what you did. I wish it was easier to cooperate on an PR like this one -- happy to give you permissions to my fork or to work on your fork or whatever you want. Secondly, do you have a save game around the area of the failure? I can also check it out. |
Not sure if this fixes anything, but there could be drift of the indices potentially.
|
The last commit does not conform to our Commit Guidelines, please fix. |
|
Closing this after consideration of the availability of these versions. We essentially invite people to pirate the 3DO version, mix the files in order to get the "best" experience. This could be accepted only if we have blessing from the current IP owners, or when at least both versions of the game are on sale on some modern platforms like Steam or GOG. |
Continuing the work by @zafos in #7101, I've addressed the comments: