Opened 16 years ago

Closed 16 years ago

Last modified 16 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
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 16 years ago.
SAVEGAME

Download all attachments as: .zip

Change History (13)

by SF/arundel, 16 years ago

Attachment: atlantis.s02 added

SAVEGAME

comment:1 by SF/arundel, 16 years ago

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

comment:2 by fingolfin, 16 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, 16 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, 16 years ago

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

comment:5 by fingolfin, 16 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, 16 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, 16 years ago

Still happens in latest CVS.

comment:8 by fingolfin, 16 years ago

Owner: set to fingolfin

comment:9 by fingolfin, 16 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, 16 years ago

Owner: fingolfin removed

comment:11 by fingolfin, 16 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, 16 years ago

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