Opened 13 years ago
Closed 13 years ago
#5916 closed defect (fixed)
AGI-FANMADE: Nick's Quest hangs ScummVM upon starting
Reported by: | SF/captainjei | Owned by: | bluegr |
---|---|---|---|
Priority: | normal | Component: | Engine: AGI |
Version: | Keywords: | script | |
Cc: | Game: | AGI Fanmade |
Description
Scummvm version: 1.5.0git1072-gcc81dfe (Dec 5 2011 12:38:40) Game: AGI fanmade: Nick's Quest - In Pursuit of QuakeMovie (v2.1 Gold) (DOS/English) Platform: Win32 on Windows 7
Upon lauching game, usual AGI hourglass mouse cursor appears, is movable for a moment, then freezes. Cannot do anything. Cannot quit ScummVM with Alt-X. Eventually Windows 7 askes if I would like to close the program. (I used the version of Nick's Quest that came with the bundle that used to be linked to the ScummVM news article announcing that fanmade AGI games were now supported. All other fanmade and official AGI games I've tested work; I've tried about a hundred of them.)
Ticket imported from: #3451122. Ticket imported from: bugs/5916.
Attachments (2)
Change History (9)
comment:1 by , 13 years ago
Summary: | Nick's Quest hangs ScummVM upon starting → AGI-FANMADE: Nick's Quest hangs ScummVM upon starting |
---|
comment:2 by , 13 years ago
comment:3 by , 13 years ago
captainjei: Thank you for this bug report. Have replicated and done some basic investigation. Both games are triggering an infinite loop in the AGI engine. The AGI engine team will look at fixing this and addressing the underlying cause.
AGI engine devs: Ran with gdb, this shows that the infinite loop is in void AgiEngine::fixPosition(int n) in the engines/agi/checks.cpp file... The cultprit is the while loop with no shouldQuit() clause. Though adding this does not fix the engine quit hangup... and also this is not the underlying cause... Continuing to investigate, but hope this helps anyone else looking at this.
comment:4 by , 13 years ago
Found a fix for this... Attaching my patch with debug output for investigation as to whether this is "correct".
comment:5 by , 13 years ago
Attaching the clean version of my patch, so you can cleanly see the fix to the logic...
comment:6 by , 13 years ago
Keywords: | script added |
---|---|
Owner: | set to |
Resolution: | → fixed |
Status: | new → closed |
comment:7 by , 13 years ago
Fixed in beb1f5b. The game scripts incorrectly try to draw a sprite before loading a picture, thus no priority is set up, which leads to checkPriority() failing and fixPosition() looping forever as a result.
Btw, tdhs: your patch results in fixPosition() being always skipped (shouldQuit() returns false, thus the while loop is never processed). Thanks for your work nonetheless, as this helped in pinpointing the actual issue :)
A similar thing is happening with 'Star Pilot: Bigger Fish (DOS/English)'.