Opened 13 years ago

Closed 13 years ago

Last modified 2 months ago

#5709 closed defect (fixed)

INDY3: EGA version script bugs

Reported by: BenCastricum Owned by: sev-
Priority: normal Component: Engine: SCUMM
Version: 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 13 years ago.
New patch, tested and found working.

Download all attachments as: .zip

Change History (9)

comment:1 by fingolfin, 13 years ago

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

comment:2 by fingolfin, 13 years ago

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 by fingolfin, 13 years ago

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 by fingolfin, 13 years ago

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 :)

by BenCastricum, 13 years ago

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

New patch, tested and found working.

comment:5 by BenCastricum, 13 years ago

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 by sev-, 13 years ago

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

comment:7 by sev-, 13 years ago

Owner: set to sev-
Resolution: fixed
Status: newclosed

comment:8 by dwatteau, 2 months ago

In d74b20ae:

SCUMM: Make Trac#5709 enhancements optional

Reading the scripts and the (nicely detailed) original bug report,
it looks all good for being a kEnhMinorBugFixes enhancement.

The Macintosh and 256-color releases appear to be not affected, but
the workaround is done in a way where this doesn't matter.

Note: See TracTickets for help on using tickets.