Opened 10 months ago

Closed 7 months ago

Last modified 7 months ago

#14435 closed defect (fixed)

SHERLOCK: ROSETATTOO: Unable to proceed in Case of the Rose Tattoo, Wiggins do not present correct alt.

Reported by: VonKossa Owned by: PushmePullyu
Priority: normal Component: Engine: Sherlock
Version: Keywords: Sherlock Wiggins case, Rose Tattoo
Cc: Game: Sherlock Holmes: Case of the Rose Tattoo



In Case of the Rose Tattoo, after visiting the Keiser in Kensington you should proceed to 221B Baker street and speak with Wiggins according to all guides, but Wiggins do not present the questions you need to ask him to go look for the suspect, in fact you cannot ask him anything new.
I have checked every guide i can find and youtube walkthroughs and have come to the conclusion that i have done everything before this that is expected of the player.
According to the guides you should be able to ask him:

  1. Have you seen the man depicted in this likeness, Wiggins?
  2. I have information about our foreign quarry. Wiggins- Heś a foreigner.

Scummvm: ScummVM 2.8.0git (Apr 23 2023 19:58:32)
Lang: English
Version: CD
OS: Linux
Attached save game outside 221B Baker Street.

Attachments (4)

rosetattoo.003 (26.9 KB ) - added by VonKossa 10 months ago.
rosetattoo.002 (26.8 KB ) - added by ccorbacho 8 months ago.
holmes2_md5.txt (18.9 KB ) - added by ccorbacho 8 months ago.
rosetattoo.009 (14.6 KB ) - added by PushmePullyu 7 months ago.

Download all attachments as: .zip

Change History (14)

by VonKossa, 10 months ago

Attachment: rosetattoo.003 added

comment:1 by antoniou79, 10 months ago

Summary: Unable to proceed in Case of the Rose Tattoo, Wiggins do not present correct alt.SHERLOCK: ROSETATTOO: Unable to proceed in Case of the Rose Tattoo, Wiggins do not present correct alt.

by ccorbacho, 8 months ago

Attachment: rosetattoo.002 added

comment:2 by ccorbacho, 8 months ago

I've hit the same issue was well on my playthrough - this is with ScummmVM 2.7.0 (save game attached).

I have not been able to trigger either of the dialog options with Wiggins to search for Moellendorf - either the first line, after you have spoken with Needham, or the second line when Virgil is with him.

From having played the game before, and reviewing the walkthroughs, I cannot see that I've missed anything to trigger this - I've even tried going back to speak to the Kaiser multiple times, but still doesn't trigger this.

comment:3 by PushmePullyu, 8 months ago

Setting flag 425 seems to make it possible to continue with either of the attached saves.
(CTRL+ALT+D to open the debug console, then type: flag 425 set).

I am not familiar with this engine at all, but here are some observations:

In both saves this statement is marked as having been said before:
Wiggins, statement 16: "Wiggins, could this be the man you followed up the Strand?"

If this is correct, flags 425 and 2004 should have been set, but they are not. So either they were unset later, the talkHistory entry is wrong, or setting them somehow failed.

Do you have saves from before showing the mugshot to the Kaiser and/or from before talking to Needhem?

Also, was this playthrough initially started with a save from an older version of ScummVM?

Lastly, to rule out data corruption, could you provide md5 hashes of your Rose Tattoo game files?

by ccorbacho, 8 months ago

Attachment: holmes2_md5.txt added

comment:4 by ccorbacho, 8 months ago

Unfortunately, I don't have an earlier save game.

This was all played on the same version and build of ScummVM - 0.7.0 - over the period of a week.

(I'm fairly certain I've managed to complete the game before with ScummVM, but I can't say on exactly what version - my last save game is from 2019, so something pretty old, which doesn't really help with deciding if this is a bug introduced since then, or a problem with a particular playthrough).

md5 hashes of all data files attached.

comment:5 by ccorbacho, 8 months ago


comment:6 by PushmePullyu, 7 months ago

Thanks for the MD5s, they match my files.

Also, about the talkHistory entry:

The talk history is held in

Common::Array<Sherlock::TalkHistoryEntry> Sherlock::Talk::_talkHistory

Every TalkHistoryEntry holds 16 bools, each corresponding to a statement:

struct TalkHistoryEntry {
	bool _data[16];

For the conversation with Wiggins (Resource index: 984, WIGG01B.TLK) the entry for statements[16] is stored in _talkHistory[984]._data[16].
However, this is out of bounds for _data. The memory addressed is that of _data[0] in the next TalkHistoryEntry (_talkHistory[985]), which is used for SPIT36D.TLK (The description shown when entering Spitalfields).
So entering Spitalfields also marks statements[16] for Wiggins as spoken before.

This out-of-bounds access happens for all conversations with more than 16 statements.

TLDR: The history entry for statements[16] was basically a red herring.

I will be busy the next 2-3 weeks, but will investigate more after that.

by PushmePullyu, 7 months ago

Attachment: rosetattoo.009 added

comment:7 by PushmePullyu, 7 months ago

I did some more testing and found something that might have caused the problem:
It seems that triggers created via TattooTalk::cmdSetSceneEntryFlag() can be lost when loading a save.
These are stored in Common::Array<Sherlock::Tattoo::SceneTripEntry> Sherlock::Tattoo::TattooScene::_sceneTripCounters and are neither synced nor reset when restoring.

Testing was done with master deb8317c206b8742a17736a1a1652557779b39c0.

To reproduce:

  1. Load attached save (created just after finishing the Needhem scene at Cleopatra's Needle)
  2. Verify flag 897 is clear in debug console (CTRL+ALT+D then type: flag 897)
  3. Exit the scene to the city map (exit is in the top left)
  4. Go to 221B Baker Street (this will create a SceneTripEntry)
  5. Save the game in a new slot
  6. Verify flag 897 is still clear
  7. Exit the scene to the city map
  8. Go to 221B Baker Street again
  9. Verify flag 897 is now set (due to the SceneTripEntry)
  10. Load the save created in step 5
  11. Exit 221B Baker street to the city map
  12. Go to 221B Baker street again
  13. Check flag 897

The flag should be clear now, since the _sceneTripCounters array was not synced.

I have a fix for this almost ready (it will require a save version bump unfortunately) and will open a PR soon.

comment:9 by dreammaster, 7 months ago

Owner: set to dreammaster
Resolution: fixed
Status: newclosed

comment:10 by dreammaster, 7 months ago

Owner: changed from dreammaster to PushmePullyu
Note: See TracTickets for help on using tickets.