[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