What is now missing is the delay time between phrases.
Some of the code will be refactored, since this was
hacked in for mantaining compatibility with stuff outside
of MI1:SE.
- Injected the audio code in the correct place (displayDialog), from
disasm provided by @AndyWinXP (thanks!)
- Added support for multiple speech files for the same message
- Added game flag to MI1SE, for using remastered audio
This adds optional EPX scaling and 640x480 resolution for
LucasArts Macintosh games other than Indy3 and Loom.
This includes:
* Monkey Island 1
* Monkey Island 2
* Indy4
* Day of the Tentacle
* Sam&Max
* Full Throttle
* The Dig
In doing this, I reverted the ugly code which previously offset
the game screen 20 pixels below (to create an internal 320x240
buffer, instead of 320x200). Instead of just offsetting mouse
coordinates and the final screen texture, I used to offset the
in-engine graphics elements. Ew.
This ensures flawless savegame compatibility between old and
new, without touching anything.
One of the tunnels in the catacombs has no object description at all, in some
Indy3 releases. This was fixed in the Japanese FM-TOWNS release, but not in
the English FM-TOWNS release (this, among other differences between the two
releases, makes me think that the Japanese release actually benefited from
some late fixes).
This is a very minor issue, but since it's trivial to fix it, and since LEC
decided that it was worth a bugfix themselves, let's do it too.
- Fix an off-by-one in resStrLen() return value, and apply its workaround
for Trac#2715 too.
- Merge the two convertMessageToString() workarounds into a single one,
and fix another off-by-one in the Trac#1675 case.
- Restrict both workarounds to the German release of Indy3 (DOS release
checked against my own copy, Amiga release tested by gabberhead).
- Restrict both workarounds to the two rooms using the wrong byte for the
German Eszett character -- but don't limit it to a particular script
number, because the faulty lines can be triggered by some global scripts
too (e.g. highlighting a dialogue option).
This should fix the following problems:
- the use-case in Trac#2715 still triggering a fatal "string escape
sequence 32 unknown" error in convertMessagetoString(), when one
highlights the "Woher weiß ich, daß SIE kein Spion sind?" line.
- the missing full stop at the end of the "…irgendwo hier im
Schloß." line from the drunk guard.
This closes and fixes#11971:
"SCUMM: MANIAC/ZAK C64: GUI & dialog text are incorrectly
positioned on screen, and cursor is improperly layered"
The ticket also mentions improperly layered cursor:
"the pointer cursors pass *behind* the various character sprites
on screen", but there's really nothing we can do about it,
our cursor handling is way too different to function like the original
(and anyway, it looks like a severe C64 hardware limitation quirk...)
(bug no. 15030)
I have verified that neither the FM-Towns versions nor
INDY3 VGA have that mode. I don't know about Indy 3 EGA
(I presume not, but it would be worth checking).
I have verified (as can be seen in the ticket) that the original
seems to glitch on that new shadow mode in varying ways.
I haven't found the cause of it yet (current state of guessing:
glitchy text mask). And I am not sure if we need to replicate
the glitch, anyway...
This is the first, and so far only, widget that doesn't correspond
directly to a single dialog item. Instead, it combines two picture
widgets (which are made invisible to keep them out of the way), neatly
solving my problem with keeping track of the background under the slider
handle.
Also rewrote the Mac dialog event loop for better accuracy (it is now
possible to click and hold down the mouse over a widget, move the mouse
out of it, and then move it back it again), and - hopefully - improved
flexibility.
Plus some other minor cleanups along the way.
My intuition for MI1 Jap was correct, but the code had to be moved elsewhere.
This as a bonus finally yields pixel perfect positioning for text for INDY4 as well.
This fixes some nasty text rendering issues in MI1 SegaCD and
INDY4 DOS/Mac Japanese versions, in which 2-byte characters
treated as separate one byte characters, and therefore any '@'
character would be treated as an escape char.
Albeit not 100% necessary for rewriting the HE sound engine,
I decided to make this change in order to:
- Give proper meaning to magic numbers and variables
which were given temporary names 20 years ago;
- Avoid going insane when making comparison with HE code
and ours, when rewriting the sound code.
...this was painful to research. Check the comment on string.cpp for a detailed
explaination on how text centering supposedly works on this particular version.
This fixes the biggest issue of #10447, but there are still things left to do about it.