aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2017-05-13SCI32: Make sure all save game validity checks are in kCheckSaveGame32Colin Snover
Save game metadata validity checks in SCI32 should all exist within kCheckSaveGame32 since this allows most games to recover successfully from an attempt to load an invalid save game. If gamestate_restore fails, the game will usually crash because the engine is left in an inconsistent state (game scripts have cleaned up objects in preparation for a game load that is no longer happening).
2017-05-13SCI32: Fix crash at end of TorinColin Snover
This "fix" is more of a hack, in the interest of making the game completable. The root cause is a combination of two problems in the game scripts: 1. Blink::init expects to receive either 0 or 2 arguments, but it assumes that if it received *any* arguments, it must have received 2 arguments. This assumption is wrong, though, because-- 2. soTorinWhoAreYou::changeState(0) calls poPecandEyes::setCycle(Blink) without including a second argument (the blink speed). This ends up with the second parameter being some garbage, and that garbage gets sent to kRandom which then complains about receiving garbage. The correct fix for this would be to fix soTorinWhoAreYou (in script 51400) to pass a second argument to setCycle, but there are not enough obvious spare bytes for a quick and easy patch, so this workaround will have to do for now. Fixes Trac#9779.
2017-05-10SCI: Fix reading of Rave data from compressed KQ6 audio volumesColin Snover
Refs Trac#9764.
2017-05-10I18N: Update translations templatesThierry Crozat
2017-05-10SCI: Add "patch" directory to search pathsColin Snover
Refs Trac#9776.
2017-05-10SCI: Add example of KQ6 game with incorrect patches directoryColin Snover
2017-05-10SCI: Remove unused Robot code from SCI16 audio codeColin Snover
2017-05-10SCI: Fix support for ScummVM compressed audio volumesColin Snover
The runtime code for this had previously relied on hot patching volume file offsets at the moment that a resource was loaded, instead of correcting file offsets when reading audio maps. The code added for sanity checking audio volumes started to report warnings because the offsets being received were for the original uncompressed audio volume, which (naturally) is larger than the compressed audio volume. This commit also deduplicates code between addResource and updateResource, and tweaks a validation-related error message for improved clarity. Fixes Trac#9764.
2017-05-09SHERLOCK: SS: Fix Italian fan detection entry languagePaul Gilbert
2017-05-09I18N: Update translation (Italian)Paolo Bossi
Currently translated at 100.0% (957 of 957 strings)
2017-05-09I18N: Update translation (Italian)Paolo Bossi
Currently translated at 99.7% (955 of 957 strings)
2017-05-09SCI: Add ifdef for SCI32 types in processPatchColin Snover
2017-05-09I18N: Update translation (Dutch)Ben Castricum
Currently translated at 100.0% (957 of 957 strings)
2017-05-09I18N: Update translation (Dutch)Ben Castricum
Currently translated at 99.6% (954 of 957 strings)
2017-05-08SCI: Fix SCI1.1 patch resourcesColin Snover
While earlier commits had fixed handling of audio resources in audio bundles to match SSCI, audio *patches* in SCI16 were still being treated like standard resource patches. They are now special-cased in the resource manager, just like SCI32. Incidentally, while fixing the problem with audio patches, I also noticed that the patch resource fixes for SQ5/German were very similar to the special-case operations for resources in SCI32, though using an odd heuristic. After investigating, it appears that Sierra SCI1.1 works mostly like SCI32, and not like what was there from SCI View. So, the old special-case code is deleted and the special-case code for SCI32 has been expanded to cover SCI1.1. (SSCI prior to 1.1 do not appear to do this special-casing.) Fixes Trac#9773.
2017-05-08SCI32: Add workaround for KQ7Colin Snover
Fixes Trac#9763.
2017-05-08I18N: Update translation (Finnish)Timo Mikkolainen
Currently translated at 100.0% (957 of 957 strings)
2017-05-08I18N: Update translations templatesThierry Crozat
2017-05-08SCI: Add missing files in POTFILESThierry Crozat
2017-05-08SCI: Fix unnecessary copy of Common::StringColin Snover
2017-05-08SCI: Fix Audio36 patch suffix matching against lowercase extensionsColin Snover
The Lighthouse glider demo comes with a file named SDirectX.dll which was failing to match the case-sensitive suffix search for .DLL.
2017-05-08SCI: Fix some issues with ChunkResourceSourceColin Snover
1. The chunk number was hard-coded to zero and inaccessible. 2. Running ResourceManager::getVolumeFile for a chunk resource would always return nullptr instead of a stream of the chunk, which made it impossible to generically validate that resources being added were within bounds of the container file (or, in this case, container chunk).
2017-05-08SCI: Translate messages passed to dialoguesColin Snover
2017-05-08SCI: Improve detection and reporting of resource errorsColin Snover
Simple assertions in the resource manager are not sufficient to track down resource corruption issues, and some error conditions that were being checked already were either ignored or only raised as warnings that casual users would be unlikely to see. Ideally, error handling in ResourceManager would be improved to the point where errors would correctly propagate out of it (so the warning dialogue could be displayed from outside), but right now error codes are dropped all over the place, and it would take more effort to fix that without much benefit for the current situation. If/until someone has the energy to fix that, the warning dialogue is simply shown from ResourceManager::scanNewSources. Refs Trac#9764.
2017-05-08OPENGL: Don't update the cursor's texture when the cursor is invisibleBastien Bouclet
Updating the cursor's texture is not necessary if it is not going to be drawn. Fixes glDrawArrays sometimes failing due to using a framebuffer with an incomplete color attachment. In SCI32 games, the framebuffer is incomplete because the engine does not define pixel data for the cursor.
2017-05-07SHERLOCK: Add detection entry for Italian fan translationPaul Gilbert
2017-05-06SCI32: Add workaround for KQ7Colin Snover
Fixes Trac#9759.
2017-05-06SCI32: Add missing ifdef for EngineState::_eventCounterColin Snover
2017-05-06SCI32: Add Spanish Windows KQ7 to detection tableColin Snover
(The DOS version was already listed.)
2017-05-06SCI32: Detect and handle tight loops around kGetEventColin Snover
In SSCI, mouse events are received through a hardware interrupt and the cursor is drawn directly to the graphics card by the interrupt handler. This allows game scripts to omit calls to kFrameOut without stopping the mouse cursor from being redrawn in response to mouse movement. ScummVM, in contrast, needs to poll for events and submit screen updates explicitly from the main thread. Submitting screen updates may block on vsync, which means that this call should really only be made once per frame, just after the game has finished updating its back buffer. The closest signal in SCI32 for having completed drawing a frame is the kFrameOut call, so this is where the update is submitted (by calling OSystem::updateScreen). The problem with the approach in ScummVM is that, even though the mouse position is being updated (by calls to kGetEvent) and drawn to the backend's back buffer (by GfxCursor32::drawToHardware), OSystem::updateScreen is never called during game loops that omit calls to kFrameOut. This commit introduces a workaround that looks at the number of times kGetEvent is called between calls to kFrameOut. If the number of kGetEvent calls is higher than usual (where "usual" seems to be 0 or 1), we assume that the game is running one of these tight event loops, and kGetEvent starts calling OSystem::updateScreen until the next kFrameOut call. We also then start throttling the calls to kGetEvent to keep CPU usage down. This fixes at least two such known loops: 1. When interacting with the menu bar at the top of the screen in LSL6hires; 2. When restoring a game in Phant2 and sitting on the "click mouse" screen. A similar workaround may also be needed for kGetTime, though loops around kGetTime should preferably be replaced using a script patch to call kWait instead.
2017-05-06SCI32: Update cursor even when position appears unchangedColin Snover
This may be masking another bug, but at least what happens in Phant1 is that the mouse does not get redrawn after being moved programmatically to the fast-forward button when deviceMoved returns early.
2017-05-06SCI32: Add some missing onFrame hooks for the debuggerColin Snover
2017-05-06SCI32: Disable VMD kPlayFlagBlackPalette flagColin Snover
Videos in GK2 use this flag (e.g. the chapter 6 intro). Now that GfxPalette32::updateHardware no longer calls OSystem::updateScreen (only GfxFrameout::frameOut does this now), every time a palette swap occurs during playback, there is a frame of blackness that should not exist. This is because the order of operation is: 1. Send black palette 2. Call frameOut (which updates the screen) 3. Send new, correct palette 4. No frameOut (so the screen is not updated with the correct palette) OSystem::updateScreen cannot be called multiple times for the same frame due to vsync, but also, there does not appear to be any reason to send a black palette, since it seems to be intended to avoid temporarily rendering video frames with the wrong palette on a hardware device that cannot guarantee simultaneous application of a new palette and new pixel data. ScummVM does not have such a problem, so this feature appears to be unnecessary for us. For the moment, this 'feature' remains hidden behind an ifdef, instead of being removed entirely, to avoid potential confusion when comparing VMD code from SSCI.
2017-05-06SCI32: Fix terrible rendering performance when vsync is enabledColin Snover
More than one call to OSystem::updateScreen per frame on systems with vsync ruins performance because the call is blocked until the next vsync interval. This also fixes bad rendering performance with the OpenGL backend.
2017-05-06SCI32: Fix missing/incorrect game features detectionColin Snover
2017-05-06SCI32: Centralize handling of pixel format switchesColin Snover
2017-05-06SCI32: Micro-optimize speedRoom comparisonColin Snover
2017-05-05SCI32: Set a savegame description if none was enteredTarek Soliman
This fixes the the SCI32 incarnation of Trac#5343 (defect#3061964): Savegames with no name can't be restored
2017-05-04SCI32: Disable game script video benchmarkingColin Snover
The approach to video benchmarking used by SCI engine does not translate very well to modern video devices -- it will either be so slow that the games think the system is not capable of showing normal visual effects, or so fast that the benchmarks overflow their counters. So, game scripts that perform video benchmarking are now patched to unconditionally return the highest speed value. A pleasant but subtle side-effect of this change is that the extra time sitting at a blank screen before the start of a game (while benchmarks ran) is now gone. Fixes Trac#9741.
2017-05-04SCI32: Fix comment about Phantasmagoria 2 changes between EN+DE/FRMartin Kiewitz
2017-05-03SCI32: Add Italian KQ7 detection entryColin Snover
Fixes Trac#9739.
2017-05-03SCI32: Fix Japanese Phantasmagoria 2 detection entryMartin Kiewitz
2017-05-03SCI32: Add Japanese Phantasmagoria 2 detection dataMartin Kiewitz
Also add a bit of info to the German detection entry of Phantasmagoria 2. Also add URL to censorship information on our wiki.
2017-05-03SCI32: Add detecton for KQ7 1.65c FrenchBastien Bouclet
2017-05-02SCI32: Add detection entry for French ShiversColin Snover
Fixes Trac#9742.
2017-05-03PLUMBERS: Add engine for Plumbers Don't Wear TiesRetro-Junk
2017-05-03BASE: Fix auto-detect command to detect and start gameThierry Crozat
There were several issues. The first one was introduced recently and caused the preferred target to be used as a game ID, which resulted in an error when this is not a valid game ID. Thus this fixes bug #9754. The other issues were here since the auto-detect command was added and caused other command line options, suh as the path, to be lost. This usually resulted in a failure to start the game as the data files could not be found (unless the ID happened to be the same name as a target previously added). This also caused a reappearance of the old bug
2017-05-02DIRECTOR: Fix code formattingEugene Sandulenko
2017-05-02DIRECTOR: Reduce header dependencyEugene Sandulenko
2017-05-02DIRECTOR: Fix #include pathsEugene Sandulenko