aboutsummaryrefslogtreecommitdiff
path: root/engines/wintermute/base
AgeCommit message (Collapse)Author
2019-07-02WINTERMUTE: Fix slider bugs in several gameslolbot-iichan
There is a bug introduced in WME Lite. Testcase: 1. Download https://github.com/lolbot-iichan/wme_testsuite/tree/master/slider_test/packages 2. Download https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/wmelite/wmelite_10_win.zip 3a. Run game.exe -> Slider moves with the mouse while it is pressed and released when mouse is released 3b. Run wmelite.exe -> Slider is never released 3c. Run ScummVM -> Slider is never released Related bugs: https://bugs.scummvm.org/ticket/6567 https://bugs.scummvm.org/ticket/9861 Reason: slider is a button object that changes it's X until "LeftRelease" event is revieved and breaks the endless loop. Sample code: https://github.com/lolbot-iichan/wme_testsuite/blob/master/slider_test/data/interface/system/speechvolume.script However, WME Lite does not send "LeftRelease" events to any objects, if Game object can handle such event, even is game is frozen and UI is shown. Original code: https://github.com/lolbot-iichan/Wintermute-Engine/blob/master/src/engine_core/wme_ad/AdGame.cpp#L2218 Changed in WME Lite: https://github.com/lolbot-iichan/wmelite/blob/master/src/AdGame.cpp#L2120 This behaviour was introduced in SVN period of wmelite, I believe it was made on purpose for handling some iOS scenarios at commit #37 mentioned on page https://code.google.com/archive/p/wmelite/source/default/commits My proposal is to mark iOS apps as WME_LITE and fill exact WME_1_X_X/WME_LITE versions for all known games. WME_1_X_X can be seen by right-clicking on main executable and seems to be non-empty for almost all existing WME games.
2019-06-30COMMON & WINTERMUTE: Use non-1252 for 125X games (PR 1698)lolbot-iichan
* WINTERMUTE: Add detection for "The Driller Incident" "The Driller Incident" is a small freeware game for Wintermute, avaliable in English and Russian: http://questzone.ru/enzi/files/1645 * WINTERMUTE: Add detection table for "One Helluva Day" demo "One Helluva Day" is a point-and-click adventure demo in English / Czech / Russian. Free download: https://store.steampowered.com/app/603680/One_helluva_day/ * WINTERMUTE: Support CHARSET property for TT fonts "// we don't need this anymore" was a mistake =) Surely, most Wintermute games are either designed for 1252 language (DE_DEU, EN_ANY, ES_ESP, FR_FRA, IT_ITA, PT_BRA), or don't use TrueType fonts (5ma, deadcity, grotter1, grotter2, thekite, tib), or use CHARSET=1 with UTF strings (dirtysplit, reversion1, reversion2, twc), which meen this conversion is not needed for those games. However, there are some games that explicitly states CHARSET=10 (driller (RU_RUS), oknytt (RU_RUS), onehelluvaday (UNK_LANG when playing as Russian)) and there are some games with CHARSET=1 with non-1252 in mind (bookofgron (RU_RUS excepts 1251), carolreed4 (RU_RUS excepts 1251), kulivocko (CZ_CZE excepts 1250)). This fixes text in some games: bookofgron, carolreed4, driller, kulivocko, oknytt, onehelluvaday. * WINTERMUTE: Break savegame compatibility sizeof(BaseFontTT) was changed, so let's break savegame compatibility * COMMON: Add conversion tables for win1253 and win1257 * COMMON: Add string conversion from U32String back to Common::String convertUtf32ToUtf8 code is based on Wintermute::ConvertUTF32toUTF8 convertFromU32String use convertUtf32ToUtf8 for UTF8 or lookup through conversion table for single-byte encodings * WINTERMUTE: Use Common::convert functions for non-UTF charsets * WINTERMUTE: Fix whitespaces at detection tables * WINTERMUTE: Add TODO comments
2019-06-27WINTERMUTE: Do not optimize out alpha blits on rotationlolbot-iichan
This fixes defect #10684: 1-pixel width sprite becomes a big rectangle if rotation is applied. Case was originally reproduced with FoxTail game for WME, then reduced to testcase https://github.com/tobiatesan/wme_testsuite/tree/master/time_test/packages
2019-06-26WINTERMUTE: Implement Game.OpenDocument() methodlolbot-iichan
Game.OpenDocument() is used to open links for developer's site or social account in games like hellavuday, 5ld, etc.
2019-06-25WINTERMUTE: Add lots of entries to detection table and refactor handling of ↵lolbot-iichan
localization packages * WINTERMUTE: Add detection for unsupported "Basis Octavus" game This game is not supported by ScummVM, because it's 2.5D. However, there are already other 2.5D games in detection table and the intent is to add all known games, and support 2.5D in ResidualVM later. * WINTERMUTE: Add detection for Alimardan dilogy "Alimardan's Mischief" and "Alimardan Meets Merlin" are games by Iranian developer Resana Shokooh Kavir (http://rskgd.com/) It seems that Persian versions also exist, I'll surely look at it later: https://www.digikala.com/product/dkp-75901 There were 2 steam releases for alimardan1: https://steamdb.info/depot/694421/manifests/ There was only one steam release of alimardan2: https://steamdb.info/depot/694431/manifests/ * WINTERMUTE: Add detection for Oknytt 1.12 Oknytt had 2 steam releases (1.12 and 1.13): https://steamdb.info/depot/286321/manifests/ I have downloaded 1.12 and added detection. * WINTERMUTE: Add empty strings between detection table lines * WINTERMUTE: Add detection for Steam versions of reversion1 for Windows Source: https://steamdb.info/depot/270572/manifests/ * WINTERMUTE: Add detection for Steam version of reversion1 for Linux Source: https://steamdb.info/depot/270571/manifests/ * WINTERMUTE: Fix localization loading for Mac and Linux Mac and Linux builds of reversion1 & reversion2 does not have any "languages" folders. So, we need to filter those files according to filenames too. Once there is such filtering, there is no need for this overspecific hack for revision1's xlanguage_pt.dcp. * WINTERMUTE: Add detection for Steam versions of reversion2 for Windows Source: https://steamdb.info/depot/281061/manifests/ * WINTERMUTE: Language packages priority for Linux & Mac * WINTERMUTE: Add detection for Steam versions of reversion2 for Linux Source: https://steamdb.info/depot/281062/manifests/ * WINTERMUTE: Add detection for Steam versions of reversion2 for Mac Source: https://steamdb.info/depot/281063/manifests/ * WINTERMUTE: Add detection for Steam versions of reversion1 for Mac Source: https://steamdb.info/depot/270573/manifests/ * WINTERMUTE: Add detection for old Desura versions of reversion2 Source: https://bugs.scummvm.org/ticket/6564 * WINTERMUTE: Add detection for Spanish versions of reversion1&2 As was shown by windlepoons, xlanguage_* contains additional translation package, while data.dcp contains original translation (which is Spanish). So, even without owning those old releases of reversion1&2, I can wrote detection tables for them by not looking for any "xlanguage_*.dcp" file. However, we shouldn't use WME_ENTRY1s for Spanish, because advanced detector say "new best match, removing all previous candidates" once it hit a WME_ENTRY2s. Instead, let's just look for data.dcp twice to give user a choice of several WME_ENTRY2s. Lor Linux, it's WME_ENTRY3s. * WINTERMUTE: Filter language packages ignoring folder name There are 4 types of multilang games: 1. Each installation contain a data.dcp package (same for all languages) + an additional language package. Other localization packages are not installed. Those games are: "Helga Deep In Trouble", "Dirty Split", "Looky". 2. Each installation contain a data.dcp package (same for all languages) + a folder with all localization packages + a single "selected" language package copied to main folder. "xlanguage_" prefix is usual for reversion series. Other games usually use "english.dcp", "spanich.dcp", "czech.dcp", etc. Those are: "Five Lethal Demons", "Five Magical Amulets", "Dead City", "Oknytt", "Reversion: The Escape", "Reversion: The Meeting". 3. All localizations are inside data.dcp all-together. Those are: "One Hellavu Day", "The White Chamber" and "James Peris: No License Nor Control". 4. Different data.dcp build for each language. All other known games are here. This code covers all known filenames for localization packages and provide several guessworks for ignoring all irrelevant localization packages. * WINTERMUTE: Add localization detection for Five Lethal Demons * WINTERMUTE: Tweak detection for Dead City (Czech) "english.dcp" is not required to play Dead City in Czech language, so we don't need to detect it * WINTERMUTE: Add detection table for Looky in English I got English version here: https://bullshit-softworx.itch.io/looky-adventure * WINTERMUTE: Add detection for Czech versions of Helga "english.dcp" happen to be optional
2019-06-25WINTERMUTE: Add workaround for sprite glitch at Rosemary gamelolbot-iichan
This kind of fixes https://bugs.scummvm.org/ticket/6572 WME: Rosemary - Sprite flaw on going upwards Some Rosemary sprites have non-fully transparent background pixels, sprites of walking up has LOTS of them. Testing Rosemary walking character in a test WME game demonstrates some glitches with original WME as well. However, character sprite is downscaled most of time, and with original WME it isn't that seen when sprite is downscaled. This pull request provides a workaround for this case instead of changing downscaling algorithms: * if game ID is "rosemary" * if loaded sprite is from "actors" folder * if bytesPerPixel is 4 * if some pixel's alpha is between 1 and 15 * set this pixel's alpha to 0
2019-06-25WINTERMUTE: Add comments + warning() for IsKeyDown() methodlolbot-iichan
2019-06-25WINTERMUTE: Add more details in openDiskFile() commentlolbot-iichan
2019-06-25WINTERMUTE: Add debugN + comment for getNumScripts()lolbot-iichan
2019-06-25WINTERMUTE: Support even more keycodes at IsKeyDown()lolbot-iichan
2019-06-25WINTERMUTE: Handle enum in GetNumScriptslolbot-iichan
This code is used only in debug mode and only to display some script counters. States are handled in the very same way in WME Lite, so there is no reason to log tons of warning here.
2019-06-25WINTERMUTE: Fix IsKeyDown to work with ASCIIlolbot-iichan
Tanya Grotter series has a cheat, that is triggered with (Keyboard.IsKeyDown("A") && Keyboard.IsControl && Keyboard.IsAlt && Game.DebugMode) condition. vKeyToKeyCode(97) would produce a warning message, fixed this.
2019-06-25WINTERMUTE: Hardcode known path prefix for tanya2lolbot-iichan
Missing path is "d:\engine\ТГ2\tg_ie_080128_1005\data\interface\pixel\pixel.png" from scenes\code\episode_01\scene_comics_1\scene_comics_1.scene
2019-06-18WINTERMUTE: Fix Split() method of ext_stringlolbot-iichan
It's hard to believe, but this fixes bug "#10432" WME Carol Reed Mysteries hint system not working. Carol Reed hint system happen to heavily use line.Split(";") results, which were wrong by 1 byte (delimeter was appended to result while it shouldn't be). I started with decompiling Carol Reed source code, reproducing issue with a stand-alone test project (which worked with WME and showed [null] with ScummVM). then minimized it to a minimal testcase: var line = new String("New Goal;Visit Christina at the Art Museum;1;0;S;;"); var ar = line.Split(";"); if((ar[0] == "New Goal")) { var g = ar[1]; }
2019-06-06WINTERMUTE: Show warning on running 2.5D gameslolbot-iichan
This is shown for the 2 games added in 0d8834b5616aa8fc936c750ed92ef4423610d641, as both of them use ACTOR3DX entities, i.e. 3D models, which are not supported in ScummVM
2019-05-18WINTERMUTE: Fix fill rect area on endSaveLoad()lolbot-iichan
2018-12-25WINTERMUTE: Attempt to load fallback fonts from fonts.datCameron Cawley
2018-09-16WINTERMUTE: Flush ConfMan to disk on every change (#1314)lolbot-iichan
* WINTERMUTE: Flush ConfMan to disk
2018-08-23WINTERMUTE: Check keyboard state array indexlolbot-iichan
vKeyToKeyCode() method was unsafe if vkey >= KEYSTATES_ARRAY_SIZE was provided, fixed
2018-08-23WINTERMUTE: Support more key codes for mappinglolbot-iichan
some keypresses were producing warnings because key codes were not listed in mappings, added more key codes
2018-08-23WINTERMUTE: Fix printable flag for keyboard statelolbot-iichan
_currentPrintable was set depending on _currentCharCode, which is 112 for both F1 and 'p' keys, fixed after detailed research on which keys should be considered printable
2018-07-03WINTERMUTE: Use degree conversion common math funcsDavid Fioramonti
2018-05-20WINTERMUTE: Update deg2rad usageDavid Fioramonti
2018-05-19WINTERMUTE: Properly fix handling of Ogg Vorbis resourcesAdrian Frühwirth
2018-05-19WINTERMUTE: Fix loading Vorbis filesCameron Cawley
Fixes Trac#10533
2018-05-17WINTERMUTE: Add flag for games using low-spec resources.JenniBee
2018-05-01WINTERMUTE: Push down the AD includesBastien Bouclet
2018-04-19JANITORIAL: Fix whitespaceAdrian Frühwirth
2018-04-15JANITORIAL: Indent GFXTransaction code blocksAdrian Frühwirth
2017-07-10Revert "COMMON: Change way the Singleton instances are instantiated"Eugene Sandulenko
This reverts commit eefa72afa1978a9dea10f5b1833fcc8f58a3468e. With this patch ConfigManager is broken.
2017-07-10COMMON: Change way the Singleton instances are instantiatedThierry Crozat
This fixes tons of warnings with clang from a recent xcode version on macOS (and possibly other systems) complaining that an instantiation of _singleton is required but no definition is available.
2016-12-26WINTERMUTE: Fix references to TransparentSurface templatesEugene Sandulenko
2016-12-26Merge pull request #874 from tobiatesan/fix_getfilename_cr5Eugene Sandulenko
WINTERMUTE: Fix PathUtils and add workaround for mixed separators
2016-12-26WINTERMUTE: Use PathUtil::normalizeFileName in correctSlashesTobia Tesan
2016-12-26WINTERMUTE: Don't mix different path separators.Ryper_Zsolt
Fixes #7068
2016-12-26WINTERMUTE: Call BILINEAR/NEAREST rotoscale and scale according to game optionTobia Tesan
2016-12-26WINTERMUTE: Add _bilinearFiltering attribute to BaseGameTobia Tesan
2016-11-12Merge pull request #732 from tobiatesan/fix_6594Eugene Sandulenko
WINTERMUTE: Log warning if addSound is called with empty filename
2016-10-07WINTERMUTE: Change in-engine thumbnail-defaults.Einar Johan Trøan Sømåen
Instead of the engine-based 0, we now default to kThumbnailWidth/kThumbnailHeight2, as values of 0 here disable thumbnails in the engine. TODO: Perhaps consider looking into always running the thumbnail-generation even if the sizes are 0?
2016-08-22WINTERMUTE: Fix compilation with MSVCFilippos Karapetis
Change the way that EXTENDED_DEBUGGER_ENABLED is checked. The way it was used, it triggered a fatal error C1017
2016-07-24WINTERMUTE: Fix compilationEugene Sandulenko
2016-07-24Merge pull request #687 from tobiatesan/wme_debugger_rewriteEugene Sandulenko
WME: Debugger for WME, 2016 rewrite
2016-05-08WINTERMUTE: Add missing parameterEugene Sandulenko
2016-04-23Merge pull request #728 from tobiatesan/fix_oggEinar Johan Trøan Sømåen
WINTERMUTE: Correctly find .ogg version of .wav files
2016-04-01WINTERMUTE: Log warning if addSound is called with empty filenameTobia Tesan
2016-03-30WINTERMUTE: Correctly find .ogg version of .wav filesTobia Tesan
As it was, it didn't reliably work across platforms because it turned some\\windows\\path.wav into some/system/pathogg Note no "." before "ogg"; also since we use the new filename to search for the file inside DCPs, which use Windows naming, we don't want system-specific path format. Fixes #7088
2016-03-24WINTERMUTE: Make wintermute games show the right save dateMartin Kennedy
2016-03-06Merge pull request #696 from tobiatesan/fix_7067_broken_absEugene Sandulenko
WINTERMUTE: Rewrite absolute prefix workarounds block with loop
2016-03-06WINTERMUTE: Actually use new BasePersistenceManager constructorWillem Jan Palenstijn
2016-03-06Merge pull request #691 from tobiatesan/common_string_targetEugene Sandulenko
WINTERMUTE: Return Common::String in getGameTargetName()