Opened 6 years ago
Closed 3 years ago
#10836 closed defect (fixed)
SHERLOCK: Scalpel - inventory glitch
Reported by: | eriktorbjorn | Owned by: | dreammaster |
---|---|---|---|
Priority: | normal | Component: | Engine: Sherlock |
Version: | Keywords: | ||
Cc: | Game: | Sherlock Holmes: Case of the Serrated Scalpel |
Description
This one is easy to reproduce, at least for me, in the current development version of ScummVM and an English version of the game.
- Start the game. Skip the intro.
- Open the inventory.
- With the inventory still open, look at an object in the room. (Don't look at an object in the inventory. That won't trigger the glitch.)
- Click to dismiss the object description.
All inventory icons are now blank.
This happen regardless of if you use the "Windows Appear" or the "Windows Slide" setting.
Change History (7)
comment:1 by , 6 years ago
Game: | → Sherlock Holmes: Case of the Serrated Scalpel |
---|
comment:2 by , 4 years ago
Summary: | SHERLOCK: Serrated Scalpel inventory glitch → SHERLOCK: Scalpel - inventory glitch |
---|
comment:4 by , 3 years ago
The glitch does not happen when I run the original game in DOSBox, by the way.
comment:5 by , 3 years ago
When looking at an inventory object, it will call putInv(2) (SLAM_SECONDARY_BUFFER) before banishWindow(). If I understand it correctly, this means it will redraw the inventory to the buffer it uses to display the inventory as the other window slides away.
When looking at a room object, it will call putInv(0) (SLAM_DONT_DISPLAY) instead before banishWindow().
But I keep going in circles when trying to figure out what to do about it.
comment:6 by , 3 years ago
I think I may have found the problem: In putInv() we explicitly refer to _backBuffer1 where we should probably refer to the current back buffer instead. I'll submit a pull request soon, I just want to investigate a bit further first.
comment:7 by , 3 years ago
Owner: | set to |
---|---|
Resolution: | → fixed |
Status: | new → closed |
It seems to have something to do with the engine calling drawInventory(INVENTORY_DONT_DISPLAY), so that only the inventory graphics, not the objects, are redrawn.
I can work around it with this:
But I don't know enough about the engine to say if that's even close to a real solution. It probably isn't.