Opened 2 years ago

Closed 2 years ago

#9871 closed defect (fixed)

FULL THROTTLE: Crash when skipping intro (also in original)

Reported by: salty-horse Owned by: sev-
Priority: low Component: Engine: SCUMM
Keywords: Cc:
Game: Full Throttle

Description

During the intro, if you press ESC at a particular moment the game crashes.

This happens at the second part of the intro (so you can press ESC once to reach it). Press ESC when the camera focuses on Ben's eyes (right after Corley asks "who's the guy that drove over my car?!").

The DOS interpreter crashes with this message:
`WRAP` not found in 000... illegal block len 0

ScummVM crashes with:

#3  0x00007fc34cd26bf2 in __GI___assert_fail (assertion=0x7fc333063101 "cptr", file=0x7fc333062fac "engines/scumm/palette.cpp", line=1319, function=0x7fc333063106 "const byte *Scumm::ScummEngine::getPalettePtr(int, int)") at assert.c:101
#4  0x00007fc332ef9342 in Scumm::ScummEngine::getPalettePtr (this=0x39ee620, palindex=0, room=0) at engines/scumm/palette.cpp:1319
#5  0x00007fc332efa219 in Scumm::ScummEngine::darkenPalette (this=0x39ee620, redScale=255, greenScale=255, blueScale=255, startColor=16, endColor=255) at engines/scumm/palette.cpp:974
#6  0x00007fc332f6bf26 in Scumm::ScummEngine_v6::o6_roomOps (this=0x39ee620) at engines/scumm/script_v6.cpp:1639
#7  0x00007fc332f72106 in Common::Functor0Mem<void, Scumm::ScummEngine_v6>::operator() (this=0x39d53a0) at ./common/func.h:388
#8  0x00007fc332f73afe in Scumm::ScummEngine::executeOpcode (this=0x39ee620, i=156 '\234') at engines/scumm/script.cpp:493
#9  0x00007fc332f73982 in Scumm::ScummEngine::executeScript (this=0x39ee620) at engines/scumm/script.cpp:486

Change History (4)

comment:1 by salty-horse, 2 years ago

Component: --Unset--Engine: SCUMM
Game: Full Throttle
Priority: normallow

comment:2 by BenCastricum, 2 years ago

Owner: set to BenCastricum

Here's the cause of it:

$ ./scummvm-tools/descumm -7 dumps/script-59.dmp    
<...>
[00C3] (95) beginOverride()
[00C4] (73) jump 5b8
<...>
[01C1] (BA) talkActor(sound(0x2155, 0xA) + "Who's the guy that drove over my car?!",7)
[01FC] (A9) wait.waitForMessage()
[01FE] (6C) breakHere()
[01FF] (A4) VAR_VIDEONAME[0] = "squint.san"
[0211] (C9) kernelSetFunctions.startVideo([0])
[021B] (9C) roomOps.screenEffect(257)
[0220] (7B) loadRoom(0)
[0224] (B1) delaySeconds(1)
[0228] (7B) loadRoom(5)
[022C] (74) startSound(4)
[0230] (61) drawObject(47,0)
[0237] (B1) delaySeconds(2)
[023B] (AC) soundKludge([14,4,1536,0,30])
[024E] (A4) VAR_VIDEONAME[0] = "ks_11.san"
[025F] (C9) kernelSetFunctions.startVideo([0])
[0269] (9C) roomOps.screenEffect(129)
[026E] (7B) loadRoom(98)
[0272] (70) setState(485,1)
[0279] (7F) putActorInXY(5,71,157,255)
[0286] (6C) breakHere()
[0287] (BA) talkActor(sound(0xFFFFA47F, 0xA) + "Maybe Old Man Corley got himself in trouble.",2)
<...>
[05B8] (5D) if (VAR_OVERRIDE) {
[05BE] (9C)   roomOps.darkenPalette(255,16,255)
[05C9] (**) }
[05C9] (96) endOverride()

Briefly room 0 is loaded (during the scene with Ben's eyes). When at that time user aborts the intro a jump to 05B8 occurs. Next function is a palette operation, but room 0 has no palette (as far as I can see it's just a dummy room).

comment:3 by BenCastricum, 2 years ago

PR993 should fix it.

Last edited 2 years ago by BenCastricum (previous) (diff)

comment:4 by sev-, 2 years ago

Owner: changed from BenCastricum to sev-
Resolution: fixed
Status: newclosed

Thanks to Ben, PR993 fixed it, merged.

Note: See TracTickets for help on using tickets.