Opened 11 years ago

Closed 17 months 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
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)

crash.jpg (73.3 KB ) - added by SF/dorianpa 9 years ago.
spy_fox_german_hair_dressert_room.png (205.3 KB ) - added by svenmeier 17 months ago.
LED ticker marked with red dots

Download all attachments as: .zip

Change History (31)

comment:1 by sev-, 11 years ago

Could you, please, provide the error message? Our FAQ describes how to do that, you need to run ScummVM from the command line.

comment:2 by SF/dorianpa, 11 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 sev-, 11 years ago

Owner: set to Kirben

comment:4 by sev-, 11 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 Kirben, 11 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:6 by sev-, 10 years ago

Dorian, could you, please, retest it for us?

comment:7 by SF/dorianpa, 9 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 SF/dorianpa, 9 years ago

Attachment: crash.jpg added

comment:8 by SF/dorianpa, 9 years ago

Priority: normalblocker

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

Priority: blockernormal

comment:11 by SF/dorianpa, 9 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 SF/dorianpa, 9 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:13 by SF/dorianpa, 9 years ago

Oh and the game is not reconized by the iPhone verson of ScummVM....

comment:14 by sev-, 9 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 SF/dorianpa, 9 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 SF/dorianpa, 9 years ago

Resolution: wontfix
Status: newclosed

comment:17 by sev-, 9 years ago

Resolution: wontfix
Status: closednew

comment:18 by SF/svenmeier, 9 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 SF/svenmeier, 9 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:20 by SF/svenmeier, 9 years ago

Maybe missing akos code (similar to bug #1367793, changeset #19719)?

comment:21 by fingolfin, 9 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 SF/svenmeier, 9 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 SF/svenmeier, 9 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 Kirben, 9 years ago

Component: Engine: SCUMM
Game: Spy Fox 3

comment:25 by BenCastricum, 2 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.

Last edited 2 years ago by BenCastricum (previous) (diff)

comment:26 by svenmeier, 17 months 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.

Last edited 17 months ago by svenmeier (previous) (diff)

by svenmeier, 17 months ago

LED ticker marked with red dots

comment:28 by bonki, 17 months ago

Better late than never, thanks a lot @svenmeier! I landed the workaround in commit 64c54591c356f41abe8df7de7afbd291279a99a5.

comment:29 by bonki, 17 months ago

Keywords: has-pull-request added
Owner: changed from Kirben to bonki
Resolution: fixed
Status: newclosed
Summary: SPYFOX3 GERMAN: Crashes when entering ''hair-style'' roomSCUMM: Crash when entering wig maker room in German SPYFOX3
Note: See TracTickets for help on using tickets.