Opened 12 years ago

Closed 12 years ago

#3062 closed defect (fixed)

KQ4: Crash in introduction

Reported by: SF/jonww Owned by: bluegr
Priority: normal Component: Engine: AGI
Keywords: Cc:
Game: King's Quest 4


ScummVM version: ScummVM 0.10.0svn (Feb 13 2007 00:03:03)

Bug details: Game freezes when ESC key is pressed 3 times
durning introduction.
"event AC:32 occured" is displayed with ESC

AGI engine 0.10svn is ready.
Emulating Sierra AGI v3.002.086
Loading objects: object
Decrypting objects... done.
Reading objects: 45 objects read.
Loading dictionary: words.tok
Running AGI script.
Game ID: "KQ4"
Priority base set to 73
event AC:32 occured
event AC:32 occured
event AC:32 occured

Language of game: English

Version of game: King's Quest IV: The Perils of Rosella (2.0 1988-07-27 3.5"/DOS/English)

Platform and Compiler: Win32

Ticket imported from: #1660158. Ticket imported from: bugs/3062.

Change History (5)

comment:1 Changed 12 years ago by Kirben

Component: Engine: AGI
Game: King's Quest 4
Summary: King's Quest 4 crash in introductionKQ4: Crash in introduction

comment:2 Changed 12 years ago by bluegr

There's also a relevant closed bug in the old sarien project (where the AGI engine is inherited from), which has been closed.

The bug is #417927 - Can't skip KQ4 titles --->

The relevant change in the Sarien code seems to be in cycle.c (ScummVM's agi/cycle.cpp), here:

comment:3 Changed 12 years ago by sev-

With that patch it looks like it simply looks like setvar() should be applied to in default case too. Our code seems to be similar. Weird. Perhaps origin of the bug is deeper. You told that NAGI behaves correctly there, perhaps it would be best to investigate its codepath better?

comment:4 Changed 12 years ago by bluegr

Owner: set to bluegr
Resolution: fixed
Status: newclosed

comment:5 Changed 12 years ago by bluegr

It was (yet) another issue with how esc key is handled by handleController. It seems that in the case of KQ4, the special case of key == KEY_ESCAPE has to be checked as well as key == 0.

It should be fixed in the current SVN version now

Note: See TracTickets for help on using tickets.