Opened 4 months ago

Closed 4 months ago

#15165 closed defect (fixed)

Leisure Suit Larry 6 Freeze during Electric Shock cutscene

Reported by: tacoadventure Owned by: sluicebox
Priority: normal Component: Engine: SCI
Version: Keywords:
Cc: tacoadventure Game: Leisure Suit Larry 6

Description

During the cutscene the game freezes. See attached screenshot when the freeze happens and the save file that it being used to duplicate the freeze. I have tested on the latest daily build and the freeze still happens. The installed version of the game is the Steam version.

Attachments (4)

Screenshot 2024-06-10 134843.png (63.7 KB ) - added by tacoadventure 4 months ago.
lsl6-cd.018 (47.0 KB ) - added by tacoadventure 4 months ago.
LSL6-DIR.txt (5.2 KB ) - added by tacoadventure 4 months ago.
lsl6-cd.021 (41.1 KB ) - added by tacoadventure 4 months ago.

Download all attachments as: .zip

Change History (19)

by tacoadventure, 4 months ago

by tacoadventure, 4 months ago

Attachment: lsl6-cd.018 added

comment:1 by sluicebox, 4 months ago

Component: --Unset--Engine: SCI

comment:2 by sluicebox, 4 months ago

Hello, thank you for reporting this. This scene works for me with your save game, so I suspect that the Steam release has scattered the game files in unexpected places where ScummVM can't find them.

This scene's script waits on digital sound effects to finish playing. If they were missing then I would expect this scene to freeze.

The game directory should include all the files from the original CD, so that should include an AUD subdirectory with lots of *.MAP files and RESOURCE.AUD. I don't have the Steam release to compare, so you'll have to find them and move them over to the game directory. You could also create a new directory and just copy all the files over if you don't want to mess up your Steam setup.

I'll keep this ticket open, but I'm confident that this is the problem, because there is only one version of the lo-res CD version.

comment:3 by tacoadventure, 4 months ago

I've checked the eXo version and it is packaged that exact same way as the Steam version. Both of these include an AUD directory with *.MAP files and a RESOURCE.AUD file. I've moved all of these files to the base game directory, and it still freezes on this scene. I suppose that it is possible that it is a broken Steam version that was duplicated for the eXo version. I've attached a list of the files in the base directory. I moved all of the files from the AUD and SFX directories to the base directory and I've removed those directories. The only remaining directory is the PATCHES directory.

by tacoadventure, 4 months ago

Attachment: LSL6-DIR.txt added

comment:4 by sluicebox, 4 months ago

Thanks for the details!

There is no PATCHES directory for this version of this game to my knowledge. Try removing it. Also I am very interested in (fearful of?) what files are inside that directory.

If that doesn't change things, try pressing F5 during the freeze to save a game and upload that. I should be able to pinpoint the exact spot it's stuck at.

If you know how, can you md5sum all the files in those directories? (or sha1 or whatever your favorite hashing algorithm is?) That would identify if any resource files are indeed different. But I'm pretty focused on PATCHES for now.

comment:5 by eriktorbjorn, 4 months ago

It hangs for me too, with a freshly installed GOG version. These are the files that gave me:

5b3b93130e29620927a2056ca1d31084  ./ADL.DRV
d519cbd80f99f4c018678a0b73aaccd9  ./AUD/0.MAP
e6c1edea1759964888541ab86e085e4e  ./AUD/130.MAP
f2f7d4cf894640456bd7800bfe506e39  ./AUD/140.MAP
e814d928dae857fcfe50013991eec2a8  ./AUD/190.MAP
4aecc8b0d344c48e4b23efba24823efd  ./AUD/200.MAP
434d8693c49f04148d9dd4b722ec202e  ./AUD/205.MAP
a2b17730abe920159e1482c1734f7a7e  ./AUD/210.MAP
af7897534de5e6024b6b7c7638b89076  ./AUD/230.MAP
be12369e3684de2216d8a7a681ca27b6  ./AUD/240.MAP
9a1a1e0a0712d74cd92d2fe98c38fffa  ./AUD/250.MAP
a072b3accaefbc4ecd644ddcbd3d725d  ./AUD/260.MAP
ca3d6ec3e4893d1e56504cea88c03c3c  ./AUD/270.MAP
a41a7ad7cde0d627c903915673c6f2ec  ./AUD/280.MAP
03a321f89795ed2fd63f794c0e7b2070  ./AUD/300.MAP
38fd797793977fb25a2075ef03b049a6  ./AUD/305.MAP
8d1cb8070644cc613db56d7b90d4eb5a  ./AUD/310.MAP
213e88a30637b42d278492a8dc97c73a  ./AUD/320.MAP
9b213006eefb11cb67e82c16df7f8185  ./AUD/330.MAP
efd1d329d74e31d20031131942a5ace7  ./AUD/340.MAP
4c6509ed99b62e1a8cf4838cfd454152  ./AUD/350.MAP
7b46d4f311afb8befd689ccc34991174  ./AUD/360.MAP
5d4a3699d8aa44c03020d99dc2cacddd  ./AUD/370.MAP
031cefba0287c944f5224beb7a64ed1d  ./AUD/380.MAP
5dc946ae8b34d33fcc16adb4de17a72a  ./AUD/390.MAP
7a092f04a5c2a8551a270a775bed8a1d  ./AUD/400.MAP
a274831e5eeeeb31a70cd66b6d347bf4  ./AUD/410.MAP
0653f6f4fd9806fc105eeb8a144cb296  ./AUD/420.MAP
763350495edfe7bd1c94122fd6ace1a7  ./AUD/430.MAP
c39d4df27a0ce6b4a6d8d34de6762dca  ./AUD/440.MAP
65644aca79b63bac1635627e192c8d50  ./AUD/460.MAP
91e9263bd4fc31f48fdb0839192b9990  ./AUD/500.MAP
6f4194b507a8bde4a8fb3d6d670932f4  ./AUD/505.MAP
941e810f0c5cc4a32a10da1f46cf4219  ./AUD/510.MAP
5de46fab5f8b7f49b48ffef07e53e28d  ./AUD/520.MAP
417c22d4f2a953cf55a9e4476830880a  ./AUD/530.MAP
dbd8a3d2125c4723d08fd1ca5a2f2843  ./AUD/560.MAP
78b7f7d93993a5169c50dccd1d2e91ae  ./AUD/570.MAP
6264218504cc6b2d8a05dbe5d631a6b8  ./AUD/580.MAP
79c032c062e89cff84ce76458daa659a  ./AUD/590.MAP
9538062ad379d995c0980c068ebde1d1  ./AUD/600.MAP
277fd769a170e0a5d42984f40fbaae4a  ./AUD/610.MAP
d85dd0022c4e3a4d72909712ce3516e7  ./AUD/611.MAP
0df965db5569106a75adf3b49e9f9411  ./AUD/620.MAP
1c8fe48594deb8df8970988815f28842  ./AUD/630.MAP
f0422e53a0459f140977551d8c911247  ./AUD/640.MAP
8307ebca7c355e86ba57167b64553ebe  ./AUD/650.MAP
d47bbbcecedaf93987378dca76c62d3c  ./AUD/660.MAP
16f5269e90ce1688a3fe8fa30065fd52  ./AUD/680.MAP
d26b365f744ca24c653197ea769e55de  ./AUD/690.MAP
abfd10e7ddd8461241b7dde5931ebdd4  ./AUD/700.MAP
bbbe81f88658d76468c38646e4201eea  ./AUD/710.MAP
9b1db90814a6e56e20e8888e6b6cb006  ./AUD/720.MAP
d2ccfe3683474777ea8b554e9ba6986e  ./AUD/740.MAP
f4cbb38f6581db085b3d909d523a2322  ./AUD/800.MAP
f7fd652b9efb9c0f1e30d8b430c5d53c  ./AUD/810.MAP
68cd8331d9e9ac2ffbe8f1bb6574c720  ./AUD/820.MAP
212b8089fed779285d0d4624044af1e4  ./AUD/825.MAP
c94148b1c18115787ceb88fe882378ee  ./AUD/82.MAP
74a25a37536e7add3a186d758d6e508e  ./AUD/830.MAP
80fa56f4d0c03d9bebdd6e1321172b5d  ./AUD/840.MAP
2ad1b7999028d3d171bf6c1df03e2932  ./AUD/850.MAP
bb0b9770298f936267d624bdf6f6c67a  ./AUD/85.MAP
f00a2f50fbbfa03a404c9d32fdb0f73e  ./AUD/860.MAP
5930d88f624da69be246206497c65414  ./AUDARIA.DRV
d7987cb38c9bdf4b1f6e3716d3498856  ./AUDBLAST.DRV
bf6d4c8363982853c866cc808abd894b  ./AUDDISNY.DRV
0efeb4ecc6effab9086f0c377516c5c3  ./AUDGUS.DRV
0bd68a11574c013f907c2c2f4c51a8bc  ./AUDMSSYS.DRV
ca101ab33ce2f343286bb5898a25fb99  ./AUDNONE.DRV
ee13a6ef348b01e534d6e6b1d181cd92  ./AUDPRO16.DRV
e23c633dd3d5f975b51b7e8e030a919d  ./AUDPRO.DRV
977418a2e3ca3d99245ccc681696192d  ./AUDPS1.DRV
217d9e460a4a9ff03aa73e3e2e1544e5  ./AUD/RESOURCE.AUD
2262e5ded211dcbd30c700ff10631d16  ./AUDTHUND.DRV
4d0b552a80a88a9c416223950fd7ff60  ./BOOTDISK.EXE
22aa153907cb69d5aac4b128555f7b62  ./GENMIDI.DRV
61190a63533d6b282eec860b8d843f5a  ./GMGUS.DRV
6c28c010a05441bd392037f87ca7f0bd  ./GUSDRV.COM
3e33931a9bfe41408806d392c26f57b3  ./IBMKBD.DRV
eacc88538ed711cc103e3c9bd40efc86  ./IBMPS1.DRV
561b5c051b1bb010e91b41c89d6de979  ./INSTALL.EXE
cd551a60a4006499af880247a1499904  ./INSTALL.HLP
7751b6f7a640cc9112133b20b0bec208  ./INSTALL.SCR
c959ec0cbe3be152ac9586d95745b0d2  ./INSTALL.TXT
0bae624423368fe39b4808134b946006  ./INTERP.ERR
963fc9e3860753fce5ad00815288c5a7  ./MICROSOF.DRV
e2bcbb34b6bfe586c52605258ef9a312  ./MT32.DRV
be6b9872a2da486b58beb331697087f6  ./PATCHES/93.MSG
59e30f55db630b2e7a71442c45fef3ed  ./PATCHES/T
184fbf00cfb5cf1f6ef43982a9045d56  ./PROAUDIO.DRV
17cd1603be97afff56b6ca6b07688a1d  ./README
3434f03c74ae136ce8cb6b8f2ae87b78  ./RESOURCE.000
f8ca8b5decb9c4f861a0cf6202053748  ./RESOURCE.CFG
b30afee9ae66208201008c5d4b315099  ./RESOURCE.LL6
c18d3dd21b5637344f407604bc06d006  ./RESOURCE.MAP
cbbe51830655cd8abe8dc2cfdb3cb025  ./RESOURCE.MTB
ff96016b21e92df672abe3ca57901fe2  ./RESOURCE.NOL
da3971d2f5e3265435dc8bc81333e6f0  ./RESOURCE.PRO
1ecb03e9ef121104b9a5cb6a44a5e061  ./SBPRO.DRV
8d284d70d11327ec6f6acee8bd4ca0fb  ./SFX/RESOURCE.SFX
0073868ae0cdc06835455f2142b28603  ./SIERRA.ERR
3e9e1653ff964048b70be8f4b86663e4  ./SIERRA.EXE
aa444eeb77bc162d0ee52379df408358  ./STD.DRV
275dbe1cec69850722da197284b57f86  ./VERSION
ef68c7e2d344b296f2fb24d7a3ce2852  ./VGA320.DRV

comment:6 by eriktorbjorn, 4 months ago

I also have a "SierraOriginals" CD version, but it's a bit confusing because it apparently contains several versions of the game and I'm not sure which files to copy from it.

Working on the theory that I need the files from the "LORES", "AUD" and "SFX" directories... that one freezes too.

To confuse things even further, that doesn't quite match the version I already had installed for ScummVM, which also freezes. (I think the only game-related files that old one has in addition to what I just created from that CD are 740.MSG, 860.HEP, 860.SCR and 93.MSG. I don't have the time right now to dig out all my LSL collection CDs to see if it matches any of those.)

by tacoadventure, 4 months ago

Attachment: lsl6-cd.021 added

comment:7 by tacoadventure, 4 months ago

I've removed the PATCHES directory, and the game is still freezing. I've attached a save game that is saved while the game is frozen (lsl6-cd.021).

comment:8 by eriktorbjorn, 4 months ago

Except for two .BAT files, the files I got from the SierraOriginals CD were identical to the ones I got from the GOG version.

comment:9 by tacoadventure, 4 months ago

0.MAP - d519cbd80f99f4c018678a0b73aaccd9
130.MAP - e6c1edea1759964888541ab86e085e4e
140.MAP - f2f7d4cf894640456bd7800bfe506e39
190.MAP - e814d928dae857fcfe50013991eec2a8
200.MAP - 4aecc8b0d344c48e4b23efba24823efd
205.MAP - 434d8693c49f04148d9dd4b722ec202e
210.MAP - a2b17730abe920159e1482c1734f7a7e
230.MAP - af7897534de5e6024b6b7c7638b89076
240.MAP - be12369e3684de2216d8a7a681ca27b6
250.MAP - 9a1a1e0a0712d74cd92d2fe98c38fffa
260.MAP - a072b3accaefbc4ecd644ddcbd3d725d
270.MAP - ca3d6ec3e4893d1e56504cea88c03c3c
280.MAP - a41a7ad7cde0d627c903915673c6f2ec
300.MAP - 03a321f89795ed2fd63f794c0e7b2070
305.MAP - 38fd797793977fb25a2075ef03b049a6
310.MAP - 8d1cb8070644cc613db56d7b90d4eb5a
320.MAP - 213e88a30637b42d278492a8dc97c73a
330.MAP - 9b213006eefb11cb67e82c16df7f8185
340.MAP - efd1d329d74e31d20031131942a5ace7
350.MAP - 4c6509ed99b62e1a8cf4838cfd454152
360.MAP - 7b46d4f311afb8befd689ccc34991174
370.MAP - 5d4a3699d8aa44c03020d99dc2cacddd
380.MAP - 031cefba0287c944f5224beb7a64ed1d
390.MAP - 5dc946ae8b34d33fcc16adb4de17a72a
400.MAP - 7a092f04a5c2a8551a270a775bed8a1d
410.MAP - a274831e5eeeeb31a70cd66b6d347bf4
420.MAP - 0653f6f4fd9806fc105eeb8a144cb296
430.MAP - 763350495edfe7bd1c94122fd6ace1a7
440.MAP - c39d4df27a0ce6b4a6d8d34de6762dca
460.MAP - 65644aca79b63bac1635627e192c8d50
500.MAP - 91e9263bd4fc31f48fdb0839192b9990
505.MAP - 6f4194b507a8bde4a8fb3d6d670932f4
510.MAP - 941e810f0c5cc4a32a10da1f46cf4219
520.MAP - 5de46fab5f8b7f49b48ffef07e53e28d
530.MAP - 417c22d4f2a953cf55a9e4476830880a
560.MAP - dbd8a3d2125c4723d08fd1ca5a2f2843
570.MAP - 78b7f7d93993a5169c50dccd1d2e91ae
580.MAP - 6264218504cc6b2d8a05dbe5d631a6b8
590.MAP - 79c032c062e89cff84ce76458daa659a
600.MAP - 9538062ad379d995c0980c068ebde1d1
610.MAP - 277fd769a170e0a5d42984f40fbaae4a
611.MAP - d85dd0022c4e3a4d72909712ce3516e7
620.MAP - 0df965db5569106a75adf3b49e9f9411
630.MAP - 1c8fe48594deb8df8970988815f28842
640.MAP - f0422e53a0459f140977551d8c911247
650.MAP - 8307ebca7c355e86ba57167b64553ebe
660.MAP - d47bbbcecedaf93987378dca76c62d3c
680.MAP - 16f5269e90ce1688a3fe8fa30065fd52
690.MAP - d26b365f744ca24c653197ea769e55de
700.MAP - abfd10e7ddd8461241b7dde5931ebdd4
710.MAP - bbbe81f88658d76468c38646e4201eea
720.MAP - 9b1db90814a6e56e20e8888e6b6cb006
740.MAP - d2ccfe3683474777ea8b554e9ba6986e
800.MAP - f4cbb38f6581db085b3d909d523a2322
810.MAP - f7fd652b9efb9c0f1e30d8b430c5d53c
82.MAP - c94148b1c18115787ceb88fe882378ee
820.MAP - 68cd8331d9e9ac2ffbe8f1bb6574c720
825.MAP - 212b8089fed779285d0d4624044af1e4
830.MAP - 74a25a37536e7add3a186d758d6e508e
840.MAP - 80fa56f4d0c03d9bebdd6e1321172b5d
85.MAP - bb0b9770298f936267d624bdf6f6c67a
850.MAP - 2ad1b7999028d3d171bf6c1df03e2932
860.MAP - f00a2f50fbbfa03a404c9d32fdb0f73e
ADL.DRV - 5b3b93130e29620927a2056ca1d31084
AUDARIA.DRV - 5930d88f624da69be246206497c65414
AUDBLAST.DRV - d7987cb38c9bdf4b1f6e3716d3498856
AUDDISNY.DRV - bf6d4c8363982853c866cc808abd894b
AUDGUS.DRV - 0efeb4ecc6effab9086f0c377516c5c3
AUDMSSYS.DRV - 0bd68a11574c013f907c2c2f4c51a8bc
AUDNONE.DRV - ca101ab33ce2f343286bb5898a25fb99
AUDPRO.DRV - e23c633dd3d5f975b51b7e8e030a919d
AUDPRO16.DRV - ee13a6ef348b01e534d6e6b1d181cd92
AUDPS1.DRV - 977418a2e3ca3d99245ccc681696192d
AUDTHUND.DRV - 2262e5ded211dcbd30c700ff10631d16
BOOTDISK.EXE - 4d0b552a80a88a9c416223950fd7ff60
GENMIDI.DRV - 22aa153907cb69d5aac4b128555f7b62
GMGUS.DRV - 61190a63533d6b282eec860b8d843f5a
GUSDRV.COM - 6c28c010a05441bd392037f87ca7f0bd
IBMKBD.DRV - 3e33931a9bfe41408806d392c26f57b3
IBMPS1.DRV - eacc88538ed711cc103e3c9bd40efc86
INSTALL.EXE - 561b5c051b1bb010e91b41c89d6de979
INSTALL.HLP - cd551a60a4006499af880247a1499904
INSTALL.SCR - 7751b6f7a640cc9112133b20b0bec208
INSTALL.TXT - c959ec0cbe3be152ac9586d95745b0d2
INTERP.ERR - 0bae624423368fe39b4808134b946006
LSL6CHK.BAT - 8628110a188ce3fd27bf44dc016414eb
MICROSOF.DRV - 963fc9e3860753fce5ad00815288c5a7
MT32.DRV - e2bcbb34b6bfe586c52605258ef9a312
PROAUDIO.DRV - 184fbf00cfb5cf1f6ef43982a9045d56
README - 17cd1603be97afff56b6ca6b07688a1d
README.BAT - a8b66d7bb020fb9921d83288161981f9
RESOURCE.000 - 3434f03c74ae136ce8cb6b8f2ae87b78
RESOURCE.AUD - 217d9e460a4a9ff03aa73e3e2e1544e5
RESOURCE.CFG - f8ca8b5decb9c4f861a0cf6202053748
RESOURCE.LL6 - b30afee9ae66208201008c5d4b315099
RESOURCE.MAP - c18d3dd21b5637344f407604bc06d006
RESOURCE.MTB - cbbe51830655cd8abe8dc2cfdb3cb025
RESOURCE.NOL - ff96016b21e92df672abe3ca57901fe2
RESOURCE.PRO - da3971d2f5e3265435dc8bc81333e6f0
RESOURCE.SFX - 8d284d70d11327ec6f6acee8bd4ca0fb
SBPRO.DRV - 1ecb03e9ef121104b9a5cb6a44a5e061
SIERRA.ERR - 0073868ae0cdc06835455f2142b28603
SIERRA.EXE - 3e9e1653ff964048b70be8f4b86663e4
STD.DRV - aa444eeb77bc162d0ee52379df408358
VERSION - 275dbe1cec69850722da197284b57f86
VGA320.DRV - ef68c7e2d344b296f2fb24d7a3ce2852
Last edited 4 months ago by tacoadventure (previous) (diff)

comment:10 by eriktorbjorn, 4 months ago

I think I see where I got the additional files from my old version. The CD has an LSL6PAT.EXE that contains

  • 740.MSG
  • 860.HEP
  • 860.SCR
  • 93.MSG
  • LSL6_SFX.EXE
  • READ.ME
  • README.BAT

According to the READ.ME:

"This patch will correct two "Oops" errors that occur while playing Leisure Suit Larry VI. One occurs on the beach after lighting the "Lamp of Wisdom". The other will occur on the beach when trying to light the match".

So I guess I may have used this CD, or something pretty similar, to put together my old installed version. Though this probably has no bearing on the bug report at hand.

comment:11 by tacoadventure, 4 months ago

My PATCHES directory, which has since been deleted contained the file 93.MSG and a file T, that contained the contents "directory can't be empty"

This appears to be the same PATCHES directory that is contained in the GOG version.

Last edited 4 months ago by tacoadventure (previous) (diff)

comment:12 by sluicebox, 4 months ago

Thank you both! That's a lot of good info, and now that we've got eriktorbjorn reproducing this too I'm certain we'll get it figured out. He is unstoppable! I will take a look at all of this, starting with a slow audit of what exactly is on the various CDs.

This is a very easy game to get confused about because there are so many versions: SCI16 floppy, SCI16 CD, SCI32 CD, SCI32 Mac CD, SCI16 Mac floppy, *localized versions*... and then there's all the ways they've been packaged on different CDs over the years. Some CDs have multiple languages and/or SCI16 *and* SCI32 pointed at shared resource directories. In one CD, Sierra messed up the location of PATCHES, causing code that never should have shipped make the game impossible to complete. All of this is very nuanced, and the internet is loaded with 30 years of posts that don't take into account any of that. Sierra's patch notes confuse things further by misrepresenting the problems they fix or simply making things up; they are unfortunately untrustworthy. My mental model for LSL6 is to tune out everything until I see it for myself, which just means it takes some patience.

I hope this isn't related, but we've had a freeze in this scene before: #6358. That was 11 years ago, and it was a bug in our sound code that affected multiple versions. I mention it for completeness, but since I'm not having this problem, I don't think it's going to be that.

comment:13 by sluicebox, 4 months ago

I can reproduce this now, I was missing RESOURCE.SFX, preventing the conflicting digital sound effect from playing.

This is a sound bug, and I'm scared. The script plays the digital sound of the alligator clips at the same time it plays Larry saying "Ow!" and it waits on both of those to complete at once. But in in SCI16, you can only play one digital sound at a time, so one interrupts the other, preventing them from both completing, and freezing the script.

ScummVM used to allow multiple digital sounds at once, even though that wasn't original behavior. It caused many sound bugs, because games rely on that behavior. I fixed that a few years ago by implementing the one-sound-effect-at-a-time behavior. I bet that's when this stopped working in ScummVM. How did the original work? Maybe its interpreter was different? Maybe it got lucky with timing? In the SCI32 version, the rewrote these specific lines of script to not do this problematic thing, so this may have been a real problem for Sierra too.

comment:14 by sluicebox <22204938+sluicebox@…>, 4 months ago

In 90f8cb26:

SCI: Implement SCI1.1 AudioLoc behavior

  • Fixes LSL6 CD (SCI16 version) Electroshock freeze, bug #15165
  • Improves LB2 CD "Ra Ra Amon Ra" chant scene

Neither of these scenes are perfectly reproduced in ScummVM yet, but
they are better than they were. They accidentally rely on precise
undocumented/undiscovered audio driver behavior when digital sound
and speech are played at the same time and interrupt each other.

These scripts do conflicting things that had no effect in the original
floppy versions, but caused conflicts once CD speech was added later.
They still appeared to work, but only by accident, and so no one would
have noticed the problems at the time. When LSL6 was ported to SCI32,
the Electroshock script was discovered and rewritten to be normal.

This commit implements two missing pieces of interpreter behavior:

  1. processUpdateCues stops the sound if it's a digital sample and the audio driver's AudioLoc function returns -1. To replicate this, we query our two separate components that play digital samples and speech.
  1. kDoAudio(AudioLoc) returns the audio driver's AudioLoc result. SSCI's audio driver could have been playing a digital sample or speech, but we do these in two separate components, and we were only querying one of them. Now we query both and produce the same results as the original.

comment:15 by sluicebox, 4 months ago

Owner: set to sluicebox
Resolution: fixed
Status: newclosed

The freeze is fixed. It was due to engine inaccuracies I noticed two years ago when investigating a more difficult audio bug in Dagger of Amon Ra; it was too difficult for me to complete. I found my notes, implemented some of my findings, and now the freeze is fixed and the Dagger scene is slightly better.

The scene isn't perfectly accurate yet: in the original you hear *clip* "Ow!" *clip* and in ScummVM you will only here "Ow!" *clip*. That's because the original only worked by accident: it plays the first *clip* sound and then on the next line of script, plays "Ow!" which stops the previous sound and plays the new one, because SCI16 can only play one digital audio at a time. And yet, it appears to work in the original. That's because, and I think this is a new finding, when the SCI16 audio driver interrupts one sound with another, a very short amount of the first sound still ends up playing. I replaced the *clip* sounds with much longer sounds to verify this. The *clip* sound is so short that it manages to completely play, and so this scripting mistake went unnoticed until the SCI32 port when their luck ran out and they rewrote this script to be normal.

I don't know if or when we will ever figure out and implement this obscure interruption behavior. With each of these changes though, we get closer to original accuracy.

There's another inaccuracy in this scene, but it happens to be beneficial: when Chardonnay enters the room, the original would cut off her speech when the door-close sound played. For some reason we are not interrupting that and both sounds play; I think that's another inaccuracy I noted two years ago. But for now, that's good, because you can hear her speech which you couldn't in the original.

Thanks again for reporting this! But yeesh why couldn't it have been another scene... =O

For reference, here's the original behavior: https://youtu.be/VINuOmJH1_I?t=9813
And here's the script that plays a digital sample and speech at the same time: https://github.com/sluicebox/sci-scripts/blob/65c4100d1ba073e89290554f51acbe78777e3c95/lsl6-cd-dos-1.000.000/src/rm380.sc#L535

Note: See TracTickets for help on using tickets.