Opened 21 years ago

Closed 21 years ago

Last modified 21 years ago

#1265 closed defect (fixed)

FOA: Talk to Sophia -> Atlantis/Great Machine = crash

Reported by: SF/arundel Owned by: fingolfin
Priority: normal Component: Engine: SCUMM
Version: Keywords:
Cc: Game: Indiana Jones 4

Description

When you talk to Sophia in front of the huge drilling machine in inner Atlantis the debugging console comes up (no crash):

/////////////////////////////////////////////// getResourceAddress(Room,17) == 0x8335004 Script 206, offset 0xe2a1: [1A] o5_move() Script 206, offset 0xe2a6: [1A] o5_move() Script 206, offset 0xe2ab: [68] o5_isScriptRunning() Script 206, offset 0xe2af: [A8] o5_notEqualZero() readvar(0) Script 206, offset 0xe2bc: [68] o5_isScriptRunning() Script 206, offset 0xe2c0: [A8] o5_notEqualZero() readvar(0) Script 206, offset 0xe2c5: [1A] o5_move() Script 206, offset 0xe2ca: [11] o5_animateActor() (17:206:0xE2CC): Invalid actor 31 in o5_animateActor! (17:206:0xE2CC): Invalid actor 31 in o5_animateActor /////////////////////////////////////////////////

OS: FreeBSD 4.8-STABLE VERSION: ScummVM 0.5.1 LANGUAGE: GERMAN SELF-COMPILED: yes REPRODUCABLE: yes

GCC OPTIONS: CFLAGS= -O -pipe CPUTYPE=k7 NO_CPU_CFLAGS=false NO_CPU_COPTFLAGS=false

Ticket imported from: #820357. Ticket imported from: bugs/1265.

Attachments (1)

atlantis.s02 (82.5 KB ) - added by SF/arundel 21 years ago.
SAVEGAME

Download all attachments as: .zip

Change History (13)

by SF/arundel, 21 years ago

Attachment: atlantis.s02 added

SAVEGAME

comment:1 by SF/arundel, 21 years ago

Summary: Talk to Sophia -> Atlantis/Great MachineATLANTIS:Talk to Sophia -> Atlantis/Great Machine = crash

comment:2 by fingolfin, 21 years ago

Please always try with latest CVS before filing a bug report (esp. if it's self compiled :-). Does it still happen there?

comment:3 by SF/arundel, 21 years ago

The scummvm cvs source won't build on my system. I have to use the FreeBSD ports system which pre-patches the source files in order to build correctly. So I can't test the current cvs snapshot.

Plus there seems to be a bug in gcc 2.95. Don't know if it has been corrected in 3.x:

//////////////////////////////////////// g++ -Wp,-MMD,"scumm/.deps/player_v2a.d2" -O -Wall -Wuninitialized -g -Wno-long-long -Wno-multichar

-Wno-unknown-pragmas -pedantic -Wpointer-arith -Wcast-qual -Wconversion -Wshadow -Wimplicit -Wundef

-Wnon-virtual-dtor -Wno-reorder -Wwrite-strings -fcheck-new -Wctor-dtor-privacy -DHAVE_CONFIG_H -DU

NIX -I. -Icommon -I/usr/local/include/SDL11 -I/usr/local/include -D_REENTRANT -D_THREAD_SAFE -c scum

m/player_v2a.cpp -o scumm/player_v2a.o In file included from /usr/include/sys/types.h:45, from common/stdafx.h:99, from scumm/player_v2a.cpp:23: /usr/include/sys/cdefs.h:273: warning: `_POSIX_C_SOURCE' is not defined /usr/include/sys/cdefs.h:279: warning: `_POSIX_C_SOURCE' is not defined In file included from common/stdafx.h:109, from scumm/player_v2a.cpp:23: /usr/include/fcntl.h:206: warning: `int flock(int, int)' hides constructor for `struct flock' scumm/player_v2a.cpp: In function `void __static_initialization_and_destruction_0(int, int)': scumm/player_v2a.cpp:1106: Internal compiler error in `scan_region', at except.c:2585 Please submit a full bug report. See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions. gmake: *** [scumm/player_v2a.o] Error 1 g++ -Wp,-MMD,"scumm/.deps/player_v2a.d2" -O -Wall -Wuninitialized -g -Wno-long-long -Wno-multichar

-Wno-unknown-pragmas -pedantic -Wpointer-arith -Wcast-qual -Wconversion -Wshadow -Wimplicit -Wundef

-Wnon-virtual-dtor -Wno-reorder -Wwrite-strings -fcheck-new -Wctor-dtor-privacy -DHAVE_CONFIG_H -DU

NIX -I. -Icommon -I/usr/local/include/SDL11 -I/usr/local/include -D_REENTRANT -D_THREAD_SAFE -c scum

m/player_v2a.cpp -o scumm/player_v2a.o In file included from /usr/include/sys/types.h:45, from common/stdafx.h:99, from scumm/player_v2a.cpp:23: /usr/include/sys/cdefs.h:273: warning: `_POSIX_C_SOURCE' is not defined /usr/include/sys/cdefs.h:279: warning: `_POSIX_C_SOURCE' is not defined In file included from common/stdafx.h:109, from scumm/player_v2a.cpp:23: /usr/include/fcntl.h:206: warning: `int flock(int, int)' hides constructor for `struct flock' scumm/player_v2a.cpp: In function `void __static_initialization_and_destruction_0(int, int)': scumm/player_v2a.cpp:1106: Internal compiler error in `scan_region', at except.c:2585 Please submit a full bug report. See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions. gmake: *** [scumm/player_v2a.o] Error 1 ///////////////////////////////////////////////////////

Maybe somebody else wants to verify if the bug still is exists in the current cvs src (savegame atached).

comment:4 by fingolfin, 21 years ago

Summary: ATLANTIS:Talk to Sophia -> Atlantis/Great Machine = crashFOA: Talk to Sophia -> Atlantis/Great Machine = crash

comment:5 by fingolfin, 21 years ago

"pre-patches" ? You mean FreeBSD Ports contain patches to ScummVM ? I wonder why they never submitted them to upstream (=us) for integration.. hrmbl.

Anyway, the issue you describe has already been fixed in CVS. Could you please try again with latest CVS?

comment:6 by fingolfin, 21 years ago

Sorry I was unclear: the *GCC 2.95 issue* has been fixed. I have no idea whether the *bug* you reported has been fixed.

comment:7 by fingolfin, 21 years ago

Still happens in latest CVS.

comment:8 by fingolfin, 21 years ago

Owner: set to fingolfin

comment:9 by fingolfin, 21 years ago

Don't have time to look into this ATM. As a starter to anybody who wants to look into this: the script 206 in room 17 starts like this:

Script# 206 [0000] (1A) Local[1] = 0; [0005] (1A) Local[0] = 0; [000A] (68) VAR_KEYPRESS = isScriptRunning(86) [000E] (A8) if (VAR_KEYPRESS) { [0013] (1A) Local[1] = 1; [0018] (11) animateCostume(86,255) [001B] (**) } [001B] (68) VAR_KEYPRESS = isScriptRunning(31) [001F] (A8) if (VAR_KEYPRESS) { [0024] (1A) Local[0] = 1; [0029] (11) animateCostume(31,255) [002C] (**) }

That's very strange, since there are two animateCostume calls with actor numbers which are way out of range (neither 86 nor 31 are valid actors (in FOA, _numActors = 13). There multiple possible explanations for this: 1) maybe in FOA, animateActor can take non-actor numbers with a special meaning (or maybe they have to be taken modulo something, etc.) 2) maybe opcode 0x11 is simply different in FOA (unlikely, as it seems to work fine everywhere else in FOA). 3) maybe this is simply a scripting bug, and the original engine ignored the illegal invocation of animateActor

comment:10 by fingolfin, 21 years ago

Owner: fingolfin removed

comment:11 by fingolfin, 21 years ago

I put a simple workaround into CVS which ignores the invalid actor IDs in this case. Still not sure if that is the "proper" solution, but it wouldn't be the first time we find script bugs which the original engine simply ignored.

comment:12 by fingolfin, 21 years ago

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