#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)
Change History (13)
by , 21 years ago
Attachment: | atlantis.s02 added |
---|
comment:1 by , 21 years ago
Summary: | Talk to Sophia -> Atlantis/Great Machine → ATLANTIS:Talk to Sophia -> Atlantis/Great Machine = crash |
---|
comment:2 by , 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 , 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 , 21 years ago
Summary: | ATLANTIS:Talk to Sophia -> Atlantis/Great Machine = crash → FOA: Talk to Sophia -> Atlantis/Great Machine = crash |
---|
comment:5 by , 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 , 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:8 by , 21 years ago
Owner: | set to |
---|
comment:9 by , 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 , 21 years ago
Owner: | removed |
---|
comment:11 by , 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 , 21 years ago
Owner: | set to |
---|---|
Resolution: | → fixed |
Status: | new → closed |
SAVEGAME