adding check, if view is scaleable
also just copying nsRect now instead of recalculating - fixes lb2 regression at the docks (calling taxi hangs the game, bug #3982289) - i noticed this difference before but copying nsRect didnt work back then (i guess because of other bugs), that's why i recalculated it
should get backported, but only after some more testing - maybe someone should play through lb2 again
svn-id: r53045
- Now the cursor buffer is initialized outside the mouse movement code, thus saving
a memcpy there
- Plugged some memory leaks
- Removed an obsolete check
svn-id: r53028
These are special cursors which zoom parts of a view dynamically. Examples
are Freddy Pharkas, when reading the prescription with the whiskey and LB2,
when using the magnifying glass on the Rosetta Stone
svn-id: r53003
Forward-ported from branch. Let's do this the easy way for now, even
if I'm not sure why the save dialog shows the autosave slot anyway.
svn-id: r52997
In SCI01 and up, each typed word may be interpreted as multiple
class,group pairs. This patch adds support to the vocabulary and
parser. It uses the matcher support added in r52985.
This fixes parser issues in German LSL3, but needs testing.
svn-id: r52989
This is to prepare for multilingual SCI versions. In those a single typed word
may be parsed to multiple class,group pairs, any of which may match
the said specs. The actual parsing is not yet implemented.
svn-id: r52985
8 bit mode makes no sense for these games since colors will be too messed up.
SCUMM 3 games (Indy 3, Loom, Zak) are still supported in 8bit mode.
svn-id: r52977
This commit should fix at least the following bugs/feature requests: #1032859, #1252088, #1055391, #1315968, #1315938, #1742106, #812891.
The FM-Towns version of Scumm games use a mixed graphics mode with 2 layers (one with 32767 colors and one with 16 colors). Among other things I have added a screen output class which emulates this dual layer approach which allows specific hardware effects like enabling and disabling layers (e.g. in the voodoo priestess scene in MI1).
Old savegames (saved before this update) will load, but you’ll encounter palette glitches in the verb/inventory screen, since the 16 color palette for layer 2 is not contained in your savegame. This will be true at least for version 5 games. Certain scene change actions (which require the verb/inventory part to be redrawn) might correct this (e.g. try looking at the treasure map in MI1 and closing it). Version 3 games should be okay, since they use a static text palette which is never changed and which will be reset after loading a savegame.
This update requires a USE_RGB_COLORS setting for proper operation. 8 bit users will get a warning that they’ll have to expect palette glitches . Apart from that the engine in 8 bit mode should not only still work okay, but also benefit from some of the other (non palette related) improvements (e.g. bug #1032859 should be fixed even in 8 bit mode).
Japanese font drawing hasn’t been improved much yet. This will be a separate task.
svn-id: r52966
This will be the new class managing all drawing, providing
depth-agnostic methods for all drawing operations, including 2
iterator-like classes, Pixel and ConstPixel.
svn-id: r52946
(Possibly related to bug #3076822 - ITE: Dialog repeats in intro.)
The p2_a.voc patch file wasn't played. This was because the engine
first loaded p2_a.voc as a replacement for voice resource 4. Then it
tried to load p2_a.iaf and, when it failed, removed the patch data
for the very same resource. Now it only tries to read a patch if it
hasn't already found a patch for the resource. (There may have been a
similar bug in the end credits as well.)
svn-id: r52928
now also draws "IV" in KQ4 correctly. This wasn't the case before because we reused the regular drawing code, which would see the 0xA ("IV") as linebreak
save for backport
svn-id: r52913
fixes lsl5 english graphic corruption during taj mahal wakeup, should also fix sq5 1.03 graphic corruption right after scrubbing (bug #3041069)
save for backporting
svn-id: r52911
We have to update cursor position, not just terminate the input
buffer. This makes Ctrl-C work as intended, which fixes one half of
bug #3054184 ("SQ1 AGI: keyboard special keys are not functioning
properly"). I'm not sure if the second half actually is a bug.
svn-id: r52899
kAddToPic doesnt do loop/cel fixups, it also doesnt support global scaling and will only set nsRect on scaled Cels, not reusing fill() of kAnimate anymore, but doing those things separately
fixes kq6 - 2nd window shown instead of peppermint bush (bug #3070465)
should be save to backport
svn-id: r52887
The initial screen color needs to be 0 and not 0xf for these. Winnie C64/Apple II should be completable now, with some graphical glitches and palette problems.
svn-id: r52881
The workaround is no longer needed since we provide the previously
missing track. It shouldn't break the game if you play from the CD
either, as the timing appears to be hardwired rather than keyed to
the music.
svn-id: r52866
If response() loads an image into backSurface, we need to restore the
conversation charset to it once we're done. This may very well fix a
few other similar bugs, but I haven't verified that.
svn-id: r52845
When clicking outside of all inventory objects, the whichObject()
function would return 43, which is an invalid inventoryObjects[]
index. I think that's what caused it to crash for me. There are a
few other inventoryObjects[]-related changes as well.
svn-id: r52843
(After a brief discussion with sev.) AdLib is now the old Sarien sound,
PCjr is the new PCjr emulation. PCjr is still the default; we don't
need to ask getMusicType() how to get there.
svn-id: r52838
it's set. Currently game-specific for Hoyle4; fixes bug #3038424. But
other SCI1.1 games should be tested with a general version of this to
see whether it fixes relevant bugs.
svn-id: r52818
This happened to me when playing the floppy version of Gobliins 2. I
don't know if it's a fix or a workaround, but the function can clearly
return NULL so let's guard against it.
svn-id: r52813
I think the code uses this in this particular instance to have the comments on
top of the various tables aligned with the actualy entries, so I decided not
to make this conform to our guidelines, but rather to the rest of the style
used in this file.
svn-id: r52766
This should improve r52751, since String does automatic memory handling, thus
no more buffer overflows should by possible by having a too large translated
string.
svn-id: r52758
Because chanGen() gets called very early, and sometimes it crashes
ScummVM as soon as the game starts. Actually, it's probably enough to
initialise a couple of fields in _tchannel[], but I figured it
couldn't hurt to clear all of _channel[] and _tchannel[].
svn-id: r52741
This fixes bug #3067148 "DRACI: Volume range not respected". It seems Draci's
MIDI files do not setup the channel volume properly before using the channels,
but rely on having the maxed out. Since formerly the channel volume was
initialized to 255, it caused the channel volume to be zero in case the user
used 128 for his volume settings (128*255/255=128, and MIDI volume goes from
0-127).
svn-id: r52738
This is currently done in the engine code. I adapted AGI, AGOS, DRACI,
GROOVIE, LURE, MADE, QUEEN, SAGA, SKY, TINSEL and TOUCHE to send a reset
device on startup. The sound output still works fine (started up a game
from every engine), so this should hopefully not introduce any regressions.
As far as I can tell it seems that SCUMM does send a proper device reset, so
I did not touch it. KYRA only sends a proper reset for MT-32 currently. I am
not sure about SCI though.
This fixes bug #3066826 "SIMON: MIDI notes off when using RTL after SCI".
svn-id: r52736
Formerly the AGI MIDI code did not setup the channel mask properly, in case
"native_mt32" was set. This resulted in one missing channel (i.e. channel 0),
since the MT-32 only responds to data for channels 1-9.
svn-id: r52718
the new commands were meant for castle/brain hangman puzzle patch, but the patch didn't work well, so I removed it. Still the commands could/should come in handy
svn-id: r52695
We can't just set the lockers of script 0 to 1, as at that point
the objects associated with the script are marked to be deleted,
thus we need to reload the script
svn-id: r52693
Add a workaround to avoid a crash when failing the protection check
This only applies for the 2nd protection screen in the Hebrew version
which is used when the intro is not skipped
svn-id: r52672
- Renamed the debug command "resource_size" to "resource_info", as it now provides
the location of where a specified resource is found (i.e. the resource.xxx file, or
the file name itself, if the resource is a patch)
- "duskdump" shows the original location of dumped resources
- loadResource() now shows the location of files that couldn't be loaded
svn-id: r52667
and map kOnMe for SCI2 to kIsOnMe, remove commented out hacks. fix signatures for those 2 functions, added TODO - someone should fix the SCI32 signatures
svn-id: r52664
- Added the kernel names for all unimplemented kernel debug functions, and mapped
them all to kDummy, so that the kernel tables are correct and all kernel
functions are mapped (useful for debugging)
- Added a stub for kWinHelp (normally opens an external Windows help file), with
an appropriate dialog
- Added a stub for kWinDLL, which currently errors out on purpose (this needs to
be investigated, as it loads and uses external Windows DLLs)
- Readded kListIndexOf in kList (the signature was wrong when the previous commit
was made)
svn-id: r52660
- Mark several SCI2/2.1 kernel functions used for debugging as dummy
- Added an empty function for kSetWindowsOption, used for settings specific to
Windows versions (e.g. showing/hiding the title bar)
- Added a stub for kGetWindowsOption (currently returning 0 to a Windows related
option for Phantasmagoria)
svn-id: r52652
Sounds that set the third argument of the playSound opcode to 1 (wherever they may be) will now block. The volume parameter of playSound is also now honored. Merge the Myst sound blocking code with this too.
svn-id: r52643
Merge the Riven sound file code with the main Riven resource code and remove the mainSoundFile parameter from Sound::playSound(). Reasoning: The sound id's do not collide with the sound id's in the main data files. The sound archives only exist because the original CD version had the ability to choose between low and high quality audio.
svn-id: r52631
scripts disable icon 7+8 when entering the room. When taking the cannister they will disable all remaining icons, resulting in the disable-code running endlessly, also happend in sierra sci - fixes bug #3046367
svn-id: r52587
The fix is partial, as the game will crash when losing and attempting to
restart (for a different reason - there's an issue when uninstantiating a script)
svn-id: r52581
The actual names for the bug reports are:
#3035650 "PEPPER non-interactive demo: Crash"
#3039566 "LAURABOW2: Crash during introduction"
Those crashes were caused by an invalid memory dereference in kClone. This
in turn was happening, because the parent object pointer might have been
invalidated in cases where the parent object is also a clone.
svn-id: r52561
lb2floppy: scripts get confused in the rat scene, when scaleX/Y are set with applied global scaling. This results in kInitBresen to get called almost endlessly, which results in ego slowing down to a crawl and not being able to reach the upper right exit - fixes bug #3050606
svn-id: r52559
- Split the main Riven event loop into a separate function for readability and for use in the sunner external functions eventually
- Some minor function signature changes (const!)
- Rename matchVarToString() to getVar() (I have no idea where that original name came from, considering it takes a string and returns a variable
- Use solely Common::String in getVar()
svn-id: r52538
There is at least one example of a bad hotspot in Riven (tspit
371 (377 in the DVD version), hotspot 4). This particular hotspot is a zip hotspot which looks like it has its left and right coordinates reversed. However, the zip hotspot would only take the player to the same card as the non zip hotspot so it seems they removed this hotspot with a hack. This fixes a regression from r52487.
svn-id: r52532
including change to compare dest and current position directly, otherwise we would trigger ::moveDone one cycle too late in case the current move completed - fixes lsl5 patti upside down bug #3059336 and lb2cd (cd only!) laura bow getting transformed into a boiler-flame (bug #3050602) - lsl5 was not a real regression, the timing of previous kDoBresen way just off, so it didn't happen in that scene, but happened in lb2cd
svn-id: r52531
getAngle()-code is missing though. Still fixes lsl2early hang on airport (bug #3037036), fixes kq4early unicorn doing moonwalk (kq4late still works as well)
svn-id: r52512