Opened 16 years ago
Closed 6 years ago
#3813 closed defect (fixed)
SCUMM: Crash when entering wig maker room in German SPYFOX3
Reported by: | SF/dorianpa | Owned by: | bonki |
---|---|---|---|
Priority: | normal | Component: | Engine: SCUMM |
Version: | Keywords: | has-pull-request | |
Cc: | Game: | Spy Fox 3 |
Description
This is a very important bug report: I don't know if that happens in the US version, but in the GERMAN verion of Spy Fox 3 (Operation Ozone), ScummVM crashes and exit when you enter the hair-style room in the game.-
Ticket imported from: #2018300. Ticket imported from: bugs/3813.
Attachments (2)
Change History (31)
comment:1 by , 16 years ago
comment:2 by , 16 years ago
Heres the exact error message which I get when entering the hairstyle room: Assertion failed: (code2 & 0xC000) != 0xC000 || code2 == AKC_ComplexChan || code2 == AKC_Return || code2 == AKC_EndSeq || code2 == AKC_C08E || code2 == AKC_ComplexChan2 || code2 == AKC_C021 || code2 == AKC_C022, file engines/scumm/akos.cpp, line 1719
This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information.
Hope this helps :-) regards, dorianpa
comment:3 by , 16 years ago
Owner: | set to |
---|
comment:4 by , 16 years ago
Travis, what about creating a special build which will report the missing costume code, so we will be able to add it to the switch?
comment:5 by , 16 years ago
I changed that particular assert, to an exact error message. Try the next daily snapshot of ScummVM, where the error message, should state the exact code.
comment:7 by , 14 years ago
Hi there! I retested it and it still crashes when entering the room, but I added a picture witch shows the crash.
by , 14 years ago
comment:8 by , 14 years ago
Priority: | normal → blocker |
---|
comment:9 by , 14 years ago
Please do not play with priorities here unless you are going to fix the bug by yourself.
The main problem is that nobody in our team has this version, so the real way how you can help is to send someone copy of the game or at least provide a working link where it could be purchased.
comment:10 by , 14 years ago
Priority: | blocker → normal |
---|
comment:11 by , 14 years ago
Sorry :o) Well I know the german version is very rare, its not available for purchase anymore and also noone at ebay offers it. So is it ok wen I upload the file and provide the link?
comment:12 by , 14 years ago
Save and Load does not work either. It hangs wehn clicking Save or Load in the games own save/load feature :( I dont think you can call it a 90% working game in the compatiblity list.
comment:14 by , 14 years ago
As I've mentioned, we do not have German version. Compatibility is for English version, or those we have access to.
And no, it will not be acceptable to have game uploaded, we need it on original media.
comment:15 by , 14 years ago
Well ok, then you can close this Bug report, too bad, but I think you'll never get the original media unless its not even available in Germany anymore. Well thats what I call support. Anyways then I can close this bug.
comment:16 by , 14 years ago
Resolution: | → wontfix |
---|---|
Status: | new → closed |
comment:17 by , 14 years ago
Resolution: | wontfix |
---|---|
Status: | closed → new |
comment:18 by , 14 years ago
Hi,
I'm experiencing the same problem with my German version of this game on Ubuntu 10.04. I could provide more information if required and I own the original media (CD). Please contact me if I can help to resolve this issue.
Sven
comment:19 by , 14 years ago
For convenience I'm pasting in the error message from the attached picture:
ERROR: Ending with undefined uSweat token FF47!
(Comes from akos.cpp line #1758)
comment:21 by , 14 years ago
Sven, thanks for help. Regarding the theory that this is a missing AKOS opcde, that seems unlikely to me: AKOS codes are of the form 0xC0?? and 0xFF47 just does not fit in there.
Another theory would be that some opcode changed meaning, or is not being parsed quite correctly right now. This would then result in bytes that are data / params to other opcodes, being interpreted as an opcode. It's really difficult to say from a distant, without having the actual data files in hand.
@dorian: I am sorry you can't play the game, and that you are upset about this; however, please consider that we cannot work miracles. Remote debugging of a problem like this is exceedingly difficult, and for legal reasons we just *cannot* accept game copies being uploaded somewhere. So either we go through this long and tedious remote debugging process, or somebody is able to find a copy of the game which can be sent to a dev capable of debugging this. Also note that the tracker item priorities are for internal use, and changing them won't help you anyway, just like putting a sticker saying "priority repair!" on your broken computer won't magically fix it.
comment:22 by , 14 years ago
I've taken a look at the source code this afternoon and indeed the 0XFF47 doesn't fit. Is there a way to trace opcodes? I have a savegame immediately before the crash. Maybe I could send you the last parsed opcodes?
If there's no other way, I'd be willing to send my original game CD to a developer (preferrably in Germany).
comment:23 by , 14 years ago
In case anybody want's to work on this issue, this is the final script after entering the room and before the crash:
(21:2067:0x11210): Script 2067, offset 0x11210: [73] o6_jump() (21:2067:0x11206): Script 2067, offset 0x11206: [3] o6_pushWordVar() (21:2067:0x11209): Script 2067, offset 0x11209: [0] o6_pushByte() (21:2067:0x1120B): Script 2067, offset 0x1120b: [D2] o6_getAnimateVariable() (21:2067:0x1120C): Script 2067, offset 0x1120c: [5C] o6_if() (21:2067:0x1120F): Script 2067, offset 0x1120f: [6C] o6_breakHere() (21:2067:0x11210): Script 2067, offset 0x11210: [73] o6_jump() (21:2067:0x11206): Script 2067, offset 0x11206: [3] o6_pushWordVar() (21:2067:0x11209): Script 2067, offset 0x11209: [0] o6_pushByte() (21:2067:0x1120B): Script 2067, offset 0x1120b: [D2] o6_getAnimateVariable() (21:2067:0x1120C): Script 2067, offset 0x1120c: [5C] o6_if() (21:2067:0x1120F): Script 2067, offset 0x1120f: [6C] o6_breakHere() (21:2067:0x11210): Script 2067, offset 0x11210: [73] o6_jump() (21:2067:0x11206): Script 2067, offset 0x11206: [3] o6_pushWordVar() (21:2067:0x11209): Script 2067, offset 0x11209: [0] o6_pushByte() (21:2067:0x1120B): Script 2067, offset 0x1120b: [D2] o6_getAnimateVariable() (21:2067:0x1120C): Script 2067, offset 0x1120c: [5C] o6_if() (21:2067:0x1120F): Script 2067, offset 0x1120f: [6C] o6_breakHere() Ending with undefined uSweat token FF47!
comment:24 by , 14 years ago
Component: | → Engine: SCUMM |
---|---|
Game: | → Spy Fox 3 |
comment:25 by , 7 years ago
FWIW, the German SPY Fox 3 available on Steam suffers from this bug too. Availability of this game's data files shouldn't be a problem anymore.
comment:26 by , 6 years ago
The problem is caused by a defective costume animation in the German version of the game:
The hair-dresser room features an LED ticker with the German text "Perücke anfertigen".
The corresponding custume animation ends with an AKC_Jump to location 846 - the value FF47 present there is no valid control instruction, thus aḱos.cpp line 1751 ends the game with an error:
Ending with undefined uSweat token FF47!
It seems the original interpreter from LucasArts was more lenient for such cases, or the SpyFox engine contained a workaround.
IMHO the easiest solution for this problem is to reset the animation to the start position of the costume, whenever such an "undefined uSweat token" is encountered.
This doesn't need patching of the original game files, nor does it require to add any game-specific workaround to scummvm.
I was able to continue the game; the LED ticker just starts over again, which seems to be exactly what was intended.
I'll create a pull request.
by , 6 years ago
Attachment: | spy_fox_german_hair_dressert_room.png added |
---|
LED ticker marked with red dots
comment:28 by , 6 years ago
Better late than never, thanks a lot @svenmeier! I landed the workaround in commit 64c54591c356f41abe8df7de7afbd291279a99a5.
comment:29 by , 6 years ago
Keywords: | has-pull-request added |
---|---|
Owner: | changed from | to
Resolution: | → fixed |
Status: | new → closed |
Summary: | SPYFOX3 GERMAN: Crashes when entering ''hair-style'' room → SCUMM: Crash when entering wig maker room in German SPYFOX3 |
Could you, please, provide the error message? Our FAQ describes how to do that, you need to run ScummVM from the command line.