[Scummvm-tracker] [ScummVM :: Bugs] #14435: SHERLOCK: ROSETATTOO: Unable to proceed in Case of the Rose Tattoo, Wiggins do not present correct alt.
ScummVM :: Bugs
trac at scummvm.org
Sat Jul 15 10:37:54 UTC 2023
#14435: SHERLOCK: ROSETATTOO: Unable to proceed in Case of the Rose Tattoo, Wiggins
do not present correct alt.
-------------------------------------+-------------------------------------
Reporter: VonKossa | Owner: (none)
Type: defect | Status: new
Priority: normal | Component: Engine: Sherlock
Version: | Resolution:
Keywords: Sherlock Wiggins case, | Game: Sherlock Holmes: Case
Rose Tattoo | of the Rose Tattoo
-------------------------------------+-------------------------------------
Comment (by PushmePullyu):
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.
--
Ticket URL: <https://bugs.scummvm.org/ticket/14435#comment:6>
ScummVM :: Bugs <https://bugs.scummvm.org>
ScummVM
More information about the Scummvm-tracker
mailing list