[Scummvm-tracker] [ScummVM :: Bugs] #17359: DIRECTOR: Opera Fatal - intro hangs on black screen, soundtrack never plays (audio-only QuickTime stopped immediately)

ScummVM :: Bugs trac at scummvm.org
Tue Oct 13 09:24:41 UTC 2026


#17359: DIRECTOR: Opera Fatal - intro hangs on black screen, soundtrack never plays
(audio-only QuickTime stopped immediately)
----------------------------+------------------------------
Reporter:  AdrianJHerskind  |      Owner:  (none)
    Type:  defect           |     Status:  new
Priority:  normal           |  Component:  Engine: Director
 Version:                   |   Keywords:  Opera Fatal
    Game:                   |
----------------------------+------------------------------
 **Game:** Opera Fatal (Windows/English, CD, 1997 – detected as
 `director:operafatal`)
 **ScummVM version:** 2026.4.1git (master 6e51e828), also current macOS
 release
 **Platform:** macOS (Apple Silicon); reproduced on Linux x86_64 too

 **Description:**

 After clicking Start, the intro shows the publisher/title cards and then
 stays on a black screen forever. No sound plays. If you skip ahead, the
 opera house appears but nothing can be clicked.

 ScummVM 2.8.0 plays the intro correctly, so this is a regression.

 **Cause (from debugging):**

 `INTRO.DXR` syncs its scenes to the soundtrack `OPERA/INTRO/CON0822.MOV`.
 That file is a QuickTime movie with an audio track only (8-bit PCM `twos`,
 no video track). It sits in sprite channel 40. The movie script starts it
 with `set the movieRate of sprite 40 to 1`. Its `on idle` handler then
 advances scenes by checking `the movieTime of sprite 40` against a
 property list.

 Because playback is started via `movieRate`,
 `DigitalVideoCastMember::startVideo()` is never called. So
 `_channel->_stopTime` stays 0. `DigitalVideoCastMember::endOfVideo()` then
 returns true right away (`currentTime >= stopTime` with `stopTime = 0`).
 As a result, `isModified()` calls `stopVideo()` on every update. With
 extra logging, the video was stopped about 2,000 times in 30 seconds at
 t=0–2 ms. `movieTime` never advances, so the intro never leaves the
 "black" scene.

 **Fix:** Initialise `_stopTime` in `setMovieRate()` when it is 0, and
 ignore an uninitialised `stopTime` in `endOfVideo()`. With the patch, the
 full intro plays in sync with the music. The doors open and the game loads
 `HE.DXR` and `TOOLBOX.DXR`. A pull request follows; the patch is also
 attached.

 **Steps to reproduce:**

 1. Add Opera Fatal (Windows/English) and start it. Choose "Start anyway".
 2. Wait past the "the hair-raising hunt for the lost score" card. The
 screen stays black indefinitely.

 Related: #13899 (other Opera Fatal gameplay issues).
-- 
Ticket URL: <https://bugs.scummvm.org/ticket/17359>
ScummVM :: Bugs <https://bugs.scummvm.org>
ScummVM


More information about the Scummvm-tracker mailing list