Opened 7 years ago

Closed 6 years ago

#6407 closed defect (fixed)

SCI: QFG1 - Knocking down nest while running freezes game

Reported by: (none) Owned by: m-kiewitz
Priority: normal Component: Engine: SCI
Keywords: original script Cc:
Game: Quest for Glory 1

Description

In the screen immediately north of the town gates in QFG1 (EGA), throwing a rock at the nest is supposed to reveal a ring. However, if you're running at the time, the game freezes when your character attempts to take the ring.

Tested on Debian x86_64 with both distro package and latest nightly, EGA version of QFG1 as purchased from GOG. A savefile is attached; simply type "throw rock at nest" to exhibit the bug. Type "walk" or "sneak" beforehand to show correct behavior.

Ticket imported from: #3614986. Ticket imported from: bugs/6407.

Attachments (4)

qfg1.000 (15.0 KB ) - added by SF/*anonymous 7 years ago.
Savegame exhibiting bug
backtrace-after-throw-part1.png (26.7 KB ) - added by digitall 6 years ago.
backtrace-after-throw-part2.png (26.7 KB ) - added by digitall 6 years ago.
backtrace-at-point-of-lockup.png (17.3 KB ) - added by digitall 6 years ago.

Download all attachments as: .zip

Change History (15)

by SF/*anonymous, 7 years ago

Attachment: qfg1.000 added

Savegame exhibiting bug

comment:1 by digitall, 7 years ago

Summary: Knocking down nest while running freezes QFG1SCI: QFG1 - Knocking down nest while running freezes game

comment:2 by SF/diggly, 6 years ago

Replicated with mingw-w64-stable-bccbdb75 1.7.0pre64-gbccbdb7 (64-bit) in Windows 7 using Anonymous' savegame.

comment:3 by digitall, 6 years ago

Replicated with savegame, both the bug and avoiding by walking. This may be a scripting bug.

Ran under GDB, triggered the lockup and broke execution to get a backtrace: #2 0x0000000000407a73 in OSystem_SDL::delayMillis (this=0xa1a010, msecs=10) at backends/platform/sdl/sdl.cpp:500 #3 0x000000000043817e in Sci::kGetEvent (s=0x11da060, argc=2, argv=0x11f94e8) at engines/sci/engine/kevent.cpp:203 #4 0x000000000046d38e in Sci::callKernelFunc (s=0x11da060, kernelCallNr=28, argc=2) at engines/sci/engine/vm.cpp:383 #5 0x000000000046f30e in Sci::run_vm (s=0x11da060) at engines/sci/engine/vm.cpp:866 #6 0x000000000042fab9 in Sci::SciEngine::runGame (this=0x1095870) at engines/sci/sci.cpp:718

by digitall, 6 years ago

comment:4 by digitall, 6 years ago

Attaching backtrace from ScummVM SCI internal debugger. The first two images show the full backtrace after "throw rock at nest" but before the point of lockup in the "run" case, the third shows the backtrace after lockup.

by digitall, 6 years ago

comment:5 by digitall, 6 years ago

Second shot...

by digitall, 6 years ago

comment:6 by digitall, 6 years ago

Third...

comment:7 by digitall, 6 years ago

Keywords: script added

comment:8 by wjp, 6 years ago

This is likely the pathfinder not getting as close to the target as the script is expecting; there are some similar bugs in the tracker. (But the new tracker search function doesn't like me enough to let me easily find them.)

comment:9 by m-kiewitz, 6 years ago

Just a little update on this one.

I was just able to replicate it using the original SCI interpreter by Sierra, which means it's actually a game bug (possibly the only one in the whole game). I should be able to patch the script to fix it.

comment:10 by m-kiewitz, 6 years ago

A bit more information: the bug exists in at least version 1.000 and 1.012 of the PC version It was definitely fixed by Sierra in the Japanese PC-9801 version

Script patch done. fixed in 5b42fa81961d86b20659e50f10eb828b900dd1d9

comment:11 by m-kiewitz, 6 years ago

Keywords: original added
Owner: set to m-kiewitz
Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.