Opened 8 years ago

Closed 8 years ago

Last modified 8 years ago

#5709 closed defect (fixed)

INDY3: EGA version script bugs

Reported by: BenCastricum Owned by: sev-
Priority: normal Component: Engine: SCUMM
Keywords: original Cc:
Game: Indiana Jones 3

Description

There are 2 script bugs in the Amiga version of Indy 3 preventing getting all IQ points. I debugged the problem and found the code responsible for those. It would be nice to fix it in ScummVM. My findings are explained on the forum at:

http://forums.scummvm.org/viewtopic.php?t=8018&start=35

Ticket imported from: #3306145. Ticket imported from: bugs/5709.

Attachments (1)

indy3-iq-fixes-v2.patch (2.2 KB) - added by BenCastricum 8 years ago.
New patch, tested and found working.

Download all attachments as: .zip

Change History (8)

comment:1 Changed 8 years ago by fingolfin

Keywords: original added; script removed
Summary: Indy 3 Amiga script bugsINDY3: EGA version script bugs

comment:2 Changed 8 years ago by fingolfin

Since forum posts can be deleted, edited or lost otherwise, I will quote & summarize here what was said in that thread. Also note that the issue is also present in the PC EGA and Mac versions of Indy3, but not in the VGA and FM-TOWNS versions.

1) "About the points error leaving Castle Brunwald: It seems to "reversed"! When you get caught, free yourself and escape, you get 25 IQ points even though you're not supposed to. However if you escape WITHOUT getting caught, you get 0 IQ points (supposed to get 25 IQ points). Weird stuff..."

Comparing roomobj-25-363 then yielded this:

PC (correct) : [002E] (0F) if (getState(367) == 0) {
Amiga (wrong) : [002C] (0F) if (getState(367) == 1) {

2) "For the 2nd bug (not getting the points for KO of the security officer a.k.a. puzzle 29) : "

This time the issue is in script-106, where
startScript(125,[29,10]);
near the end would be correct, but in the broken versions, they incorrectly duplicated a line from earlier in the script, namely:
startScript(125,[30,15]);

comment:3 Changed 8 years ago by fingolfin

Small clarifcation: Bug 1 does *not* affect the Mac version, but bug 2 does.

Also, there is another subtle difference in roomobj-25-363: The newer script versions have this line
setOwnerOf(406,0);
among the other setOwnerOf calls in that script. Maybe a hint at yet another script bug they fixed in the newer versions?

comment:4 Changed 8 years ago by fingolfin

Erf... not my day... the mac version does not suffer from those bugs at all. I think I must have read some diffs reverse or whatever... Anyhow, the EGA version is affected, and I guess the Amiga version (I doN't have it right now, but the bug submitter claimed so).

Anyway... the attached patch tries to address both bugs. But I can't test it right now (no time) which is why I don't commit it just now. If anybody could test either of these bugs with this patch applied, that wold be great :)

Changed 8 years ago by BenCastricum

Attachment: indy3-iq-fixes-v2.patch added

New patch, tested and found working.

comment:5 Changed 8 years ago by BenCastricum

previous patch didn't compile cleanly and set's the wrong value for workaround A, The new patch fixes both. I tested it to be sure.

comment:6 Changed 8 years ago by sev-

I committed the patch, but removed debug messages from it.

comment:7 Changed 8 years ago by sev-

Owner: set to sev-
Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.