Opened 11 years ago
Closed 11 years ago
#6040 closed defect (fixed)
DREAMWEB: missing sound effects/music cues during main title
|Reported by:||SF/banjo-oz||Owned by:||digitall|
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.
Change History (20)
comment:1 by , 11 years ago
comment:2 by , 11 years ago
comment:3 by , 11 years ago
Setting bug to pending as waiting on more information from bug submitter...
comment:4 by , 11 years ago
|Status:||new → pending|
comment:5 by , 11 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 , 11 years ago
|Status:||pending → new|
comment:7 by , 11 years ago
(that's with the latest build that fixes the load screen graphics bug, as of today)
comment:8 by , 11 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 , 11 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 , 11 years ago
"Good" 5 beats logging from 45974a
by , 11 years ago
Dreamweb intro (original UK version) log, for sound bug
comment:10 by , 11 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 , 11 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 , 11 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 , 11 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 , 11 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 , 11 years ago
|Status:||new → pending|
comment:16 by , 11 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 , 11 years ago
|Status:||pending → new|
comment:18 by , 11 years ago
|Status:||new → closed|
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)