Opened 8 years ago

Closed 7 years ago

#6040 closed defect (fixed)

DREAMWEB: missing sound effects/music cues during main title

Reported by: SF/banjo-oz Owned by: digitall
Priority: normal Component: Engine: Dreamweb
Keywords: Cc:
Game: Dreamweb

Description

ScummVM: 1.5.0git2963-ge23ac65
Language: English
Game version: CD ("talkie") UKV original 1994 release
Platform: Windows x64

The musical "beats" during the opening titles are supposed to play once per "title card". They only play once every OTHER title card under ScummVM.

This happens with every detected version of the game in ScummVM, but not under DOSBox or in real DOS.

If you need more clkarification, I can attach a video of the title sequence as it should look and sound.

Ticket imported from: #3528164. Ticket imported from: bugs/6040.

Attachments (2)

good-5beats-log.txt (6.5 KB ) - added by digitall 8 years ago.
"Good" 5 beats logging from 45974a
dreamweb-ukvcd1994-intro-log.txt (5.9 KB ) - added by SF/banjo-oz 8 years ago.
Dreamweb intro (original UK version) log, for sound bug

Download all attachments as: .zip

Change History (20)

comment:1 by digitall, 8 years ago

Can't replicate this here.
Testing here on Linux x86_32, latest Git master and UK White Label CD relase, there is a "beat" for all 5 credit cards before the final "aura" sound over the Dreamweb title card with the red text.

The code for this is in engines/dreamweb/titles.cpp in the realCredits() function, with the credit cards being loaded from files DREAMWEB.I01 to I06. Since this is hardcoded, and from the previously reported bug, I know this version has identical DREAMWEB.I0<n> files to the CD release I am testing with, this is not a version dependent issue. The bug report confirms this anyway.

The most likely causes are either
1) a timing issue as the sound play is queued by the playChannel0() function and only executed when the soundHandler() is called, so if there is a problem with the hangOne() function delaying, this could result in the next sound cancelling/stopping the previous before it is actually played.
2) some issue in engines/dreamweb/sound.cpp code associated with 64 bit causing alternate calls to fail.

banjo-oz: To help progress this, could you run ScummVM from a command line window i.e. cmd and execute it as "scummvm -d 1". This will enable debug output to the window at debug level 1.
Specifically, the following block of output should be associated with the "credits" card output:
stopSound(0)
stopSound(1)
loadSounds(1, DREAMWEB.V33)
table size = 12
offset: 00000000, size: 108544
offset: 0001a800, size: 268288
playSound(0, 12, 0)
playSound(0, 12, 0)
playSound(0, 12, 0)
playSound(0, 12, 0)
playSound(0, 12, 0)
playSound(0, 13, 0)
stopSound(0)
stopSound(1)

I am specifically interested in whether there are 5 calls of playSound(0, 12, 0) which is the command to trigger the drum beat per card.. (The final 13 is the aura sound for the Dreamweb card with red text)

comment:2 by digitall, 8 years ago

Owner: set to digitall

comment:3 by digitall, 8 years ago

Setting bug to pending as waiting on more information from bug submitter...

comment:4 by digitall, 8 years ago

Status: newpending

comment:5 by SF/banjo-oz, 8 years ago

During the credits, the debug output does indeed list three calls of the sound, not five.

stopSound(0)
stopSound(1)
loadSounds(1, DREAMWEB.V33)
table size = 12
offset: 00000000, size: 108544
offset: 0001a800, size: 268288
playSound(0, 12, 0)
playSound(0, 12, 0)
playSound(0, 12, 0)
playSound(0, 13, 0)
stopSound(0)
stopSound(1)

See attached screencap for the exact output.

comment:6 by SF/banjo-oz, 8 years ago

Status: pendingnew

comment:7 by SF/banjo-oz, 8 years ago

(that's with the latest build that fixes the load screen graphics bug, as of today)

comment:8 by digitall, 8 years ago

banjo-oz: Thank you. I have removed the png file as it shows nothing that your text doesn't indicate.

(Note: I'm assuming that you posted the screenshot as you couldn't cut and paste from DOS style console windows. This is possible using the Select, Copy and Paste buttons near the top of the window, so no need to post screenshot or do a manual typing into the comment in future i.e. saving you time)

As I suspected, it looks like the soundHandler code is either not being run between the calls of the call is inhibited. I will commit some extra debug output calls to the section of interest and if you then run the next daily build as ./scummvm -d 1 again, and copy the section around the same point to a text file and attach to this bug please.

comment:9 by digitall, 8 years ago

Have added additional debugging code in commit 45974a1bf03b25cd6a191702b190478cc4c1007e.

banjo-oz: Please try the next daily build which will incorporate this:
http://www.scummvm.org/downloads/#daily

If you could try running with "./scummvm -d 1 > log.txt" with no savegames previously and let the intro complete without skipping, then attach the log to this bug as a text file. I am attaching the output from my "good" CD version with 5 beats for reference.

by digitall, 8 years ago

Attachment: good-5beats-log.txt added

"Good" 5 beats logging from 45974a

by SF/banjo-oz, 8 years ago

Dreamweb intro (original UK version) log, for sound bug

comment:10 by SF/banjo-oz, 8 years ago

Logged and uploaded. I can only see three "beats" called in the intro log, compared to the five in the log you uploaded. If you're on Linux and it works, possibly a Windows build bug? (incidentally, I tried running it on the 32-bit build too; same sounds missing).

comment:11 by digitall, 7 years ago

I get the same SDL buffer size i.e. 5512 as you do, and can replicate on Win32 with the latest buildbot daily build.
This looks like a problem with the Win32/64 mixer code or SDL mixer return values i.e. it is not indicating the last sound has finished so Dreamweb's sound code doesn't detect the new beat as a change and trigger a restart of the sound... Will investigate.

comment:12 by digitall, 7 years ago

Tested with Kirben's Win32 daily builds and the issue does not occur. These and the official Win32 releases are currently built against SDL-1.2.15, whereas builbot is still using SDL-1.2.14.

Tried compiling on Win32 with latest Git master against SDL-v1.2.14 and SDL-v1.2.15 and discovered that the issue occurs with v1.2.14 and not with v1.2.15, but is somewhat unstable.

This looks like a nasty timing / race hazard type issue between the SDL mixer feedback to the Dreamweb sound code which only exhibits in certain timing conditions, for sounds where the same sound is played back repeatedly i.e. the sound code does not trigger a replay as it thinks the sound is already playing still. The correct fix here is probably within the Dreamweb sound code...

comment:13 by SF/banjo-oz, 7 years ago

Thanks for the info. Let me know if you need me to test/do anything more, otherwise I'll leave it up to you guys to fix when ya can.

comment:14 by digitall, 7 years ago

banjo-oz: Have commited fix for this as db77b9e4a7f8491d45b47b539af2077fb15e9376
Please download the next daily build and test if this is now fixed for you:
http://buildbot.scummvm.org/builds.html

comment:15 by digitall, 7 years ago

Resolution: fixed
Status: newpending

comment:16 by SF/banjo-oz, 7 years ago

The credits "beats" sound bug is indeed now fixed, however there are still sound problems that persist. I have made a new bug report for the other one I noticed and that isn't fixed in the latest build.

comment:17 by SF/banjo-oz, 7 years ago

Status: pendingnew

comment:18 by digitall, 7 years ago

Status: newclosed
Note: See TracTickets for help on using tickets.