aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
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
2017-05-02DIRECTOR: Use CachedMacText for renderingTobia Tesan
2017-05-02DIRECTOR: Add CachedMacText to TextCastTobia Tesan
2017-05-02DIRECTOR: Add CachedMacTextTobia Tesan
2017-05-02DIRECTOR: Add TextCast::importStxtTobia Tesan
2017-05-02DIRECTOR: Remove now-useless textId parameter from renderButtonTobia Tesan
2017-05-02DIRECTOR: Use text from textCastsTobia Tesan
2017-05-02DIRECTOR: Init textCasts with Stxts in ScoreTobia Tesan
2017-05-02DIRECTOR: Equip textCast with _ftextTobia Tesan
2017-05-02GRAPHICS: Pass interlinear as constructor argument to MacTextTobia Tesan
2017-05-02DIRECTOR: Add stxt.cppTobia Tesan
2017-05-02DIRECTOR: Delete Stxts in ~ScoreTobia Tesan
2017-05-02DIRECTOR: Use preloaded Stxt for renderingTobia Tesan
2017-05-02DIRECTOR: Preload Stxts in ScoreTobia Tesan
2017-05-02DIRECTOR: Add _loadedStxts member to ScoreTobia Tesan
2017-05-02DIRECTOR: Add Stxt.hTobia Tesan
2017-05-02SCI32: Fix incorrect arguments to readPixel in kCelInfoColin Snover
Fixes Trac#9750.
2017-05-01Revert "SCI32: Add debugging calls to GfxCursor32"Colin Snover
This reverts commit c02f2674ad3533aebd6c5dbcaf47f3e1d20904a4. Two minutes after committing this, the author of the ticket resolved the problem, which was caused by missing VMDs.
2017-05-01SCI32: Add debugging calls to GfxCursor32Colin Snover
Refs Trac#9740.
2017-05-01SCI32: Add support for Shivers interactive demoColin Snover
Closes Trac#9745.
2017-05-01SCI32: Add detection for KQ7 German 1.65cColin Snover
Closes Trac#9738.
2017-05-01I18N: Regenerate translations data fileThierry Crozat
2017-04-30SCI: Clean up ugly syncBaseObject callColin Snover
2017-04-30SCI: Hold script data as mutable internallyColin Snover
Script buffer data is modified after a script is loaded by savegame operations, and, in SCI16, by string operations. Casting away const to allow these mutations to happen is not a very good design, so this patch just changes the privately held reference to data to be mutable. (Public accessors still return immutable data.)
2017-04-30SCI32: add detection for GK2 GermanMartin Kiewitz
2017-04-30DIRECTOR: clean up renderText: separate reading & actual renderingTobia Tesan
2017-04-30DIRECTOR: remove redundant/ineffective assignments to widthTobia Tesan
2017-04-30DIRECTOR: clean up renderText: move warning block downTobia Tesan
This changes slightly the semantics of the method; however, I assume we want to print (or not) the warning based on the width/height values that will in fact be used *in* the method.
2017-04-30DIRECTOR: consolidate font, width instructions in renderTextTobia Tesan
2017-04-30GRAPHICS: Delete MacFont in MacTextTobia Tesan