I noticed that the "I am Choas" typo in VGA Loom was no longer patched,
and I'm guessing the other workarounds may have been broken too. This
was a regression from when the missing Lemonhead lines in Monkey Island
1 were reinstated.
This was a regression that was apparently introduced when the animation
flag was cleared for the Mac cursor. The animation made the cursor show
up when loading older save games, but not new ones. That's why it went
unnoticed until now.
The same glitch that happens with the flower girl also happens with the
housekeeper: Walking nearby triggers a conversation, but doesn't abort
the current action. This can cause the UI to get corrupted.
At least for the housekeeper, this does not happen with the original
interpreter. I have no idea why.
This would happen when examining certain room objects (ones where
printing the description was part of a custom animation) while the
inventory was open. This was a bug in the original interpreter as well.
This was a regression from fixing bug #13101. The resource stream was
created for every frame that was decoded, and apparently each frame of
the intro is made up of lots of little frame.
Normally this wasn't much of a problem, but when using the smaller
installation offered by some versions, each such decoded frame caused
the entire resource file to be decompressed. This slowed things down a
lot.
Now the stream is kept alive throughout, so that the file is only
decompressed once. Note that this is only necessary when creating the
ImageFile object from a filename. When it's created from a stream,
frames are still decoded in advance the old way, so there is no need for
the class to have its own stream. At least that's how it works now.
This would happen when either clicking on an empty slot or when using
the Delete key. It was caused by using the screen coordinates, rather
than the surface coordinates, when specifying the rightmost edge of the
area to clear.
The corners are drawn correct, we just want to ensure that the same
screen area is cleared or tindted before drawing the dialog, whether the
dialog is transparent or not. Otherwise, the corners will be tinted too,
instead of fully transparent.
When talking to another character, his animation would usually freeze.
Most of the time this is just a cosmetic problem, but it does make
solving the puzzle with the billiard players more annoying than it
should be, since you had to leave and re-enter the room. See bug #10931.
Each character in a font can have an X and Y offset. This was not
considered when calculating the width and height of the font. One way
this could be noticed was in Serrated Scalpel, when talking to a
character with a lot of conversation options. Scrolling down would
highlight the "Up" button. Selecting a conversation option would then
dim the button, but the bottommost pixel of the "p" was still
highlighted.
Hopefully this does not negatively affect anything else.
Fixes QFG1 Japanese message display when messages are set to
Japanese and subtitles are enabled
Huge thanks to DarkSoul for verifying original PC-98 behavior
Many PQ2 Japanese strings contain escaped newlines ("\n") which we have
not been handling. We have been handling these in getSciLanguageString()
when returning Japanese text but that's not where SSCI does this work.
PQ2's Print procedure in script 255 parses Japanese text itself and our
getSciLanguageString() is never involved.
Now Japanese newline handling is done in the core text measuring and
drawing functions, which is closer to where SSCI did it, but without the
hack of having GetLongest() patch out Japanese newlines like in SSCI.
Fixes bug #13154
I think this one would happen if an NPC initiated conversaion with you,
while you had a window (e.g. the inventory) open. The game would be put
in talk mode, then close the inventory (putting the game in standard
mode), then print the conversation options.
That's because a loop was terminated prematurely (with a break), thus
bypassing the bit that would set it back into talk mode again.
I encountered this when finally meeting up with Lord Brumwell.
The event loop when entering save game description in Rose Tattoo runs
at the speed of the background animations, which is much slower than
ScummVM's keyboard repeat.
It was very easy to saturate the _pendingKeys queue, particularly when
erasing an old savegame description. Then you might have to wait for a
few seconds while it processed dozens of pending backspaces.
Now all pending keys are processed as quickly as possible.
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.
We want first-in-first-out, not first-in-last-out. I thought I saw
Serrated Scalpel occasionally swap the order of two keypresses for me
while entering the name of a save game, but didn't think much about it.
Where it got really noticeable was when saving in Rose Tattoo. When
erasing an old save name, once I started entering the new name it would
process the new keystrokes first, then immediately process the next
pending backspace.
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.
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.
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.
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.