For instance, if you entered a letter like "g" and then erased it, there
would still be traces of it on screen. I've made the assumption that
subtracting 1 from the font height is wrong everywhere.
In some cases (e.g. when Lestrade greets you at the scene of the murder)
the talk window wasn't erased properly. This was a regression from a
recent fix for the inventory not being updated when certain objects were
added, e.g. when examining the pendant. See bug #10841.
Turns out that the fog horn sound at Lord Brumwell's mansion has the
same problem as the doorbell one. The file says 1100 Hz, but the
original clearly didn't play it at that. 11000 Hz seems to match the 3DO
version, so let's go with that.
When moving from one location to another, the Holmes icon should be
removed from the old location when travel begins. I've added a missing
restoreIcon() call, which seems to fix that.
Before, the game would sometimes register the mouse release event right
as the mouse pointer passed over the Exit button, causing e.g the
conversation window to close right away. This was probably also what
caused it to sometimes select conversation topics seemingly at random
for me.
This seems to match the speed of the original better, and makes the
power bars move at the same speed for both you and your opponent. It
does make the game more frustrating, I guess, but playing darts is
optional anyway.
Not every event has mouse position information. This was causing
problems on the city map, because whenever I moved the mouse cursor
outside the ScummVM window it would scroll to the upper left corner.
The user interface windows should generally end one pixel short of the
bottom of the screen, not two. This was most noticeable when saving to
the last visible slot, because the blinking cursor would erase part of
the background.
I honestly don't know if I got all of them, but it should be a bit
better than before at least.
When examining a room object with a description that spans multiple
pages, only the first page was shown if the inventory was open at the
same time. This bug happens in the original too. Hopefully fixing it
does not cause any unwanted side effects.
Instead of using _backBuffer1 directly, we should draw the inventory
icons to the current back buffer. This makes a difference in cases where
the engine has activated back buffer 2. Referring to _backBuffer2
directly should still be ok. This fixes inventory redrawing after
examining a room object.
The exact position is still guesswork, apparently, but at least now the
movie should be correctly positioned inside its decorative frame, both
in high and low resolution mode.
If The Case of the Serrated Scalpel can't run in 640x400 pixels, the
portrait movies have to be downscaled on a temporary surface. Use the
same pixel format on this surface as the video decoder uses for the
full-size frame.
In The Case of the Rose Tattoo, certain rooms have a hard-coded haze.
Ensure that this gets loaded even when going directly from the overhead
map to such a room. I could be wrong, but I believe Cleopatra's Needle
is the only such room that can be accessed directly from the map, but do
it for all rooms just in case.
The sound of the doorbell at Lord Brumwell's mansion is played at 1100
Hz. That has to be an error in the game data. The other sound effects I
checked were usually 11000 Hz, and sometimes 22000 Hz. It's hard to tell
by ear which one is correct here, but 11000 Hz seems to match the 3DO
version quite well.
This bug is present in the original DOS version, though less noticeably
so. Perhaps the original audio driver clamps the sample rate to a
reasonable interval? It still gets it wrong, but not as badly?
This fixes bug #10838.
When the map was displayed, there would often be a noticeable glitch
where the map jumped from the upper left corner to the saved position.
This removes that initial map display and relies on scrolling to always
move it to the correct position.
This fixes#10850
We were comparing the wrong object name in the Rose Tattoo-specific
code, so the speaker was never found. It's not clear to me if this only
affected Watson, or if other NPCs were affected as well.
And while it may not make any difference, make sure that the "portrait"
string we compare against is also no more than four characters long,
since that's what the original engine did.
The autosave refactoring that was done in
7adad5aaf5 used g_engine for identifying the
autosave slot. This worked for in-game save/load, but doesn't fit when
called from the launcher.
Fix by passing MetaEngine to SaveStateDescriptor ctor and using it for this
query.
Amends 7adad5aaf5.
This employs a "lazy" approach: the "format" for the credits stays
exactly as it was, i.e., perl code. Of course one may want to change
this to another format (e.g. YAML, JSON, XML; or also shell script or
AWK, like `configure.engine` uses). But I deliberately kept it simple,
to get a minimal change that is easy to verify. Any further changes to
e.g. the format can be layered atop this.
OSystem now just returns a nullptr if there is no text to speech manager instance
(because none is compiled into the binary, or the system doesn't provide support
for it). This removed the need for the engine authors to add scummvm osystem compile
time options checks into their engine code