Opened 9 years ago
Last modified 3 years ago
#6680 new defect
SCUMM: INDY3 - 'What is' command glitch on Actor 10 (Venice/Brunwald)
|Reported by:||SF/diggly||Owned by:|
|Cc:||Game:||Indiana Jones 3|
mingw-w64-stable-c36867d1 1.7.0pre-24-gc36867d (64-bit) on Windows 7 64-bit
At the library in Venice, if you use the 'What is' command and hover the pointer over the librarian, it says he is Irene. Irene is a different character earlier in the game (Jones' secretary at the college), so that name is incorrect. This glitch happens in both the EGA version and VGA remake of Indiana Jones 3 in ScummVM. When I tried it in DOSBox, the What is command didn't say anything about the librarian.
I've included saves for both versions in ScummVM, and a save of the EGA version I took in DOSBox with the original .exe
Ticket imported from: bugs/6680.
Change History (6)
by , 9 years ago
|Attachment:||INDY3 Library.rar added|
by , 9 years ago
|Attachment:||INDY3 Nazi Irene glitch.rar added|
comment:1 by , 9 years ago
comment:2 by , 9 years ago
I can reproduce this with the VGA version. I don't have the EGA version, and I wasn't able to reproduce it with the Mac version. (I'll have to look into why that one works after I finish writing this.)
This seems to only happen if you have met Irene at the beginning of the game. If you just rush off to Venice as quickly as possible, it doesn't.
What seems to be happening is that internally, both Irene and the librarian are actor number 10, just with different costumes. When you enter Irene's room (room 3), the entry script sets up actor 10 like this:
 (13) ActorOps(10,[Costume(5),TalkColor(2),Sound(6),Name("Irene")]);  (5D) setClass(10,[0,150,149,141]);  (2D) putActorInRoom(10,3);  (01) putActor(10,174,83); [003D] (11) animateCostume(10,250);
When you exit, it simply does:
 (5D) setClass(10,);
When you enter the library (room 16), it sets up actor 10 like this:
 (5D) setClass(10,[150,148]); [001D] (2D) putActorInRoom(10,16);  (01) putActor(10,271,118);  (0C) Resource.loadSound(6);  (13) ActorOps(10,[Costume(74),Sound(6),Width(20)]);  (11) animateCostume(10,250);  (11) animateCostume(10,3);
And when you leave:
 (5D) setClass(10,);
So at the library, it does not explicitly set any name for the actor. According to the comments in o5_setClass(), "Class '0' means: clear all class data". For actors this does clear some additional things, but the actor name isn't part of the actor data type, it's an entirely separate type of resource.
The glitch seems to go away if I add _res->nukeResource(rtActorName, obj) to that part of o5_setClass(), but I don't know if it's the right thing to do.
comment:3 by , 9 years ago
In the Mac version, for whatever reason it seems that the "What is" command doesn't even try to display the name of actor 10 in the library.
comment:4 by , 3 years ago
|Summary:||INDY3: 'What is' command glitch in the Library → SCUMM: INDY3 - 'What is' command glitch on Actor 10 (Venice/Brunwald)|
ScummVM 2.2.0git (Jul 15 2020 10:24:49)
Features compiled in: Vorbis FLAC MP3 RGB zLib MPEG2 Theora AAC A/52 FreeType2 FriBiDi JPEG PNG cloud (servers, local)
Confirmed with above version of ScummVM in both Venice library and Brunwald castle.
Indiana Jones and the Last Crusade (CD/English)
AmigaOS4 - PPC - BE - SDL
I found another occurrence of this glitch in the Brunwald Castle. After you knock out the Nazi, if you use the 'What is' command on him, it will say he is Irene too. Again, this happens in both the EGA and VGA versions in ScummVM. This glitch does not happen in the original game. I've included ScummVM saves for both versions, and a regular save for the VGA version (Due to a glitch with DOSBox I wasn't able to also get a regular save for the EGA version)