aboutsummaryrefslogtreecommitdiff
path: root/engines/wintermute/base
AgeCommit message (Collapse)Author
2020-01-11WINTERMUTE: Key code mapping refactoringlolbot-iichan
I discovered, that difference in key mappings between FoxTail and usual games is not due to FoxTail's engine differences from WME Lite, but were made in WME Lite itself! WME 1.x is using "Virtual-Key Codes" mapping and WME Lite and FoxTail are using "SDL_Keycode" mapping. So, here is total refactoring of keycode handling. Why nobody noticed this earlier? Because there are only 4 currently known series that are based on WME Lite (J.U.L.I.A. series, Reversion series, FoxTail and Securanote) and because most WME games, both 1.x-based and Lite-based are using Keyboard class only for handling Enter and Escape keys, which are the same in both mappings (Backspace, Space and Tab are also the same).
2020-01-11WINTERMUTE: Rename custo* variables as custom*lolbot-iichan
2020-01-11WINTERMUTE: Removed pointless checkslolbot-iichan
2020-01-11WINTERMUTE: Suppress FoxTail runtimeError on game loadlolbot-iichan
FoxTail reloads in-hand items and cursor during AfterLoad by calling wrapped Game.LoadItems() method. This does not work in WME, as WME explicitly disables methods call at "AfterLoad" event. Somehow, everything seems to work fine without it. Let's supress this error by now... TODO: inspect actor.TakeItem and SetItemCursor for possible effects TODO: make a fake game that calls some methods on AfterLoad, test with FoxTail engine
2020-01-11WINTERMUTE: Add FoxTail saveload indicator hacklolbot-iichan
Wintermute games usually display save/load progress bar as a rectangle drawn above an image. FoxTail's progress bar is drawn below semitransparent image instead. TODO: I have no idea how to make this work with "dirty_rect=true" mode.
2020-01-11WINTERMUTE: Add FoxTail color token for bitmap fontslolbot-iichan
Some FoxTail versions have bitmap fonts with white letters and COLOR properties. Alpha value of subframe can be used to recolor white letters to desired color.
2020-01-11WINTERMUTE: Add FoxTail text spacing hacklolbot-iichan
FoxTail fork of WME seems to have hard-coded modifications for getting inter-line and inter-character spaces smaller.
2020-01-11WINTERMUTE: Add FoxTail key codes mappinglolbot-iichan
FoxTail code is hacked to use key codes from different from usual WME. Got correct mapping using script decompiling, verified with sample game.
2020-01-11WINTERMUTE: Add FoxTail registry flush methodlolbot-iichan
FoxTail requires Game.RegistryFlush() method to force saving of persistent settings
2020-01-11WINTERMUTE: Add FoxTail screen methodslolbot-iichan
FoxTail use 2x, 3x, 4x, etc so-called "screen modes", that are switched between in Options menu. Current implementation makes FoxTail no choice but to think that 640x360 is the only option avaliable, since we don't want game engine to mess with ScummVM's render filter settings.
2020-01-11WINTERMUTE: Add FoxTail saveslot timestamp getterlolbot-iichan
FoxTail requires Game.GetSaveSlotDescriptionTimestamp for getting information about saved games. Engine 1.2.362 and below returns object with Description and Timestamp fields. Engine 1.2.527 and above returns array[2] with Description and Timestamp as items.
2020-01-11WINTERMUTE: GetSaveSlotDescription refactoringlolbot-iichan
2020-01-11WINTERMUTE: Add FoxTail arrays methodslolbot-iichan
Game.Split(str,sep) is added to split string into array of substrings with separator array.Delete(index) is added to delete an array item by index
2020-01-11WINTERMUTE: Add FoxTail dynamic light methodslolbot-iichan
FoxTail requires access to SubFrame's pixels to set actor.AlphaColor with lighting map pixel value at x,y of actor's position.
2020-01-11WINTERMUTE: Add FoxTail game&engine version propertieslolbot-iichan
FoxTail requires Game to have 2 string options with engine build and game package version. BuildVersion is provided with detection tables GameVersion is extracted from data.dcp and stored in a hashmap
2020-01-11WINTERMUTE: Add FoxTail language propertylolbot-iichan
FoxTail gets a Steam API language code on 1st start from Game.SystemLanguage property FoxTail currently uses 5 languages: English, German, Polish, Russian, Ukrainian Even more languages are promised on release, so let's support all possible languages here There are 22 languages listed both in common/language.h and Steam API, supported them all See https://partner.steamgames.com/doc/store/localization for current API language codes
2020-01-11WINTERMUTE: Add FoxTail engine versions to WMETargetExecutable enumlolbot-iichan
FoxTail engine is a WME Light engine fork with closed sources. Some features have different behaviour in different versions of FoxTail engine. That's why we need to detect engine version. Note that FOXTAIL_OLDEST_VERSION > LATEST_VERSION. Most features are just new methods for Game, Actor, Array, etc. and are not guarded. Some hacks are common for all FoxTail versions, and are guarded with isFoxTail(). Some changes are specific to versions from v1 to v2, isFoxTail(v1,v2) is checked then.
2019-12-27WINTERMUTE: Solve 'Chinese' language conflicts. Add more game entries (#1969)aviloria
2019-12-19WINTERMUTE: Handle isCurrentPrintable property for WME 1.x and WME Litelolbot-iichan
1. Moved KEYCODE_SPACE to "alphanumeric or punctuation" group. 2. Splited "else" into before and after WME_LITE.
2019-12-02WINTERMUTE: Add Simplified and Traditional Chinese flavoursaviloria
Latest Steam updates for Reversion titles include Simplified and Traditional Chinese languages that were not properly identified
2019-12-02WINTERMUTE: restored commented out stack->pop()lolbot-iichan
Unused variables were cleaned up at 47811167d5ddd9cbf64099ad36f2da5ae413fc86, commenting out a bit too much code, since stack->pop() has a side effect (popping a value from data stack).
2019-11-14WINTERMUTE: Fix Missing Default Switch CasesD G Turner
These are flagged by GCC if -Wswitch-default is enabled.
2019-10-05WINTERMUTE: Fix Possible Uninitialized Variable Compiler WarningsD G Turner
2019-07-24WINTERMUTE: Fix GCC Compilation WarningsD G Turner
Have commented out rather than removed the lines causing unused variable warnings as they might be used again in future.
2019-07-22WINTERMUTE: Fix language selection regression bug for Reversionlolbot-iichan
Ooops. Latest refactoring of those if/else blocks was wrong, as a result Reversion 1&2 ignored all the xlanguage packages. Fixed.
2019-07-21WINTERMUTE: More detection records (#1758)lolbot-iichan
* WINTERMUTE: Add detection and package filtering for Alpha Polaris Source: https://steamdb.info/app/405780/depots/ NOTE: This is a 2.5D game that is out of ScummVM scope * WINTERMUTE: Set exact engine version for Project Joe Download: http://public.ag.ru/vd/3f983a3b5daf485f6559e7ca1380e47b/demos/14118/joesetup.exe This also fixes slider issue at Settings menu, since LATEST_VERSION has sliders broken * WINTERMUTE: Add detection for Everyday Grey Fixes https://bugs.scummvm.org/ticket/6563 NOTE: This game seems to be mistakenly marked as 2.5D at Wintermute wiki Download: https://web.archive.org/web/20140824221311if_/http://www.krumbukt.com/UnityGames/Everyday_Grey_setup.rar * WINTERMUTE: Add detection for Apeiron game Download: https://www.moddb.com/games/apeiron * WINTERMUTE: Add detection for Palladion demo Download: http://www.adventuresplanet.it/contenuti/demo/palladion_demo.exe * WINTERMUTE: Add detection for Art of Murder: FBI Confidential Adds checksums from https://bugs.scummvm.org/ticket/6532 NOTE: This is a 2.5D game that is out of ScummVM scope Buy: https://store.steampowered.com/app/809000 * WINTERMUTE: Add detection for Mental Repairs Inc This fixes https://bugs.scummvm.org/ticket/6528 Download: https://games.softpedia.com/get/Freeware-Games/Mental-Repairs-Inc.shtml NOTE: This is a 2.5D game that is out of ScummVM scope * WINTERMUTE: Add detection for On the Tracks of Dinosaurs NOTE: This is a 2.5D game that is out of ScummVM scope Download: http://reptilesquest.000webhostapp.com/?page=5 * WINTERMUTE: Set engine version for J.U.L.I.A. Fun fact: J.U.L.I.A. is using 3D features, however this game was reported as completable with VFX low Download demo: http://www.adventuresplanet.it/contenuti/demo/julia_demo_setup.exe * WINTERMUTE: Add detection for some versions of J.U.L.I.A.: Among the Stars NOTE: This is a 2.5D game that is out of ScummVM scope * WINTERMUTE: Add detection for J.U.L.I.A.: Untold "J.U.L.I.A.: Untold" is a DLC game for "J.U.L.I.A.: Among the Stars" Buy: https://store.steampowered.com/app/360340/JULIAAmong_the_Stars__Soundtrack_Hintbook_Untold/
2019-07-16WINTERMUTE: Suppress warning on Directory.Create() for Hamletlolbot-iichan
2019-07-16WINTERMUTE: Fix File.WriteText methodlolbot-iichan
Removed unnecessary '\0' byte written after a string. Reasons to remove: 1. Hamlet game does not write 0 after string when running this code: var SomeFile = new File((Game.SaveDirectory + "\gamelet.save")); SomeFile.OpenAsText(2); SomeFile.WriteText(LVL_N); SomeFile.Close(); 2. Original WME does not have this: https://github.com/retrowork/Wintermute-Engine/blob/master/src/engine_core/wme_base/SXFile.cpp#L303
2019-07-16WINTERMUTE: Implement loading files using SavefileManagerlolbot-iichan
2019-07-16WINTERMUTE: Implement saving files using SavefileManagerlolbot-iichan
2019-07-16WINTERMUTE: Fix assertion in Hamlet gamelolbot-iichan
Assertion was caused by providing "saves/" prefixed string to WindowsFilesystemNode::getChild() function, that asserts on '/' characters. Wintermute game code: if(!(Game.FileExists((Game.SaveDirectory + "\gamelet.save")))) { Directory.Create(Game.SaveDirectory); } ... Assertion stack: from C:\WINDOWS\System32\KernelBase.dll from C:\WINDOWS\System32\msvcrt.dll (this=0xcfdf710, n=...) at backends/fs/windows/windows-fs.cpp:158 n=...) at common/fs.cpp:68 (filename=...) at engines/wintermute/base/file/base_disk_file.cpp:76 at engines/wintermute/base/file/base_disk_file.cpp:105 this=0x50795e0, filename=...) at engines/wintermute/base/base_file_manager.cpp:326 (this=0xcea72f0, script=0xcf657d0, stack=0xcf6a2e0, thisStack=0xcf69ee0, name=0xcfd8870 "FileExists") at engines/wintermute/base/base_game.cpp:1523 ...
2019-07-16WINTERMUTE: Add dummy implementation of Directory global objectlolbot-iichan
Source: http://docs.dead-code.org/wme/generated/scripting_ref_directory.html
2019-07-14WINTERMUTE: Huge update of detection tables (#1748)lolbot-iichan
* WINTERMUTE: Add all changelog engine versions to enum Source: http://docs.dead-code.org/wme/history.html * WINTERMUTE: Fixed name and update detection for Satan and sons Download: http://www.freegamearchive.com/play/download/game/satan_and_sons.zip * WINTERMUTE: Update detection for Five Lethal Demons Download: http://web.archive.org/web/20070705114336if_/http://dead-code.org/5ld/5ld_setup.exe * WINTERMUTE: Update detection for Five Magical Amulets Download: http://web.archive.org/web/20070505233127if_/http://www.nacht-und-nebel.org/download/fma.exe Download: http://www.flint.cba.pl/fusion_7/downloads.php?cat_id=1&download_id=1 Download: http://dead-code.org/5ma/5ma_deutsch.exe * WINTERMUTE: Update detection for Actual Destination Download: http://web.archive.org/web/20111121174804/http://mrburns.tks.bth.se/ds/ds08/magv08/Actual%20Destination.rar * WINTERMUTE: Update detection for Boredom of Agustin Cordes Download: http://www.cbe-software.com/Games/Boredom/setup_boredom.exe * WINTERMUTE: Update detection for Alimardan's Mischief Buy: https://store.steampowered.com/app/694420/Alimardans_Mischief/ * WINTERMUTE: Update detection for Alimardan Meets Merlin Buy: https://store.steampowered.com/app/694430/Alimardan_Meets_Merlin/ * WINTERMUTE: Update detection for Beyond the Threshold Download: http://www.nacht-und-nebel.org/pcg/BeyondTheTreshold.zip NOTE: This game's executable has a very strange version 1.7.94 not listed in changelog. * WINTERMUTE: Update detection for Basis Octavus Download: http://kraaca.cz/wp-content/files/basis-octavus.zip * WINTERMUTE: Update detection for Bickadoodle Download: https://www.moddb.com/games/bickadoodle/downloads * WINTERMUTE: Update detection for Book of Gron: Part One Download: http://questzone.ru/download/gr/BookOfGron.rar * WINTERMUTE: Update detection for Chivalry is Not Dead Download: https://games.squinky.me/downloads/chivalry/chivalry.zip * WINTERMUTE: Update detection for Carol Reed series I assume that Carol Reed 4 EN use the same engine as Carol Reed 4 RU. For other versions I assume that Demo and Full versions are sharing the same engine version. Demos: http://www.mdna-games.com/ Buy: http://www.mdna-games.com/ * WINTERMUTE: Update detection for Corrosion Buy: https://store.steampowered.com/app/349140/Corrosion_Cold_Winter_Waiting_Enhanced_Edition/ * WINTERMUTE: Update detection for Dead City Download: http://dead-code.org/download/games/deadcity.zip * WINTERMUTE: Add detection for Dark Fall: Lost Souls This is a 2.5D game that is out of ScummVM scope * WINTERMUTE: Update detection for Dirty Split Download: https://dreamagination.itch.io/dirty-split * WINTERMUTE: Update detection for Dreamscape Download: http://web.archive.org/web/20111121174150if_/http://mrburns.tks.bth.se/ds/ds08/vida08/Dreamland.rar * WINTERMUTE: Update detection for Dreamcat Download: https://jennibee.itch.io/dreamcat * WINTERMUTE: Update detection for Des Reves Elastiques Avec Mille Insectes Nommes Georges Download: https://games.squinky.me/downloads/dreaming/dreaming.zip * WINTERMUTE: Update detection for DFAF Adventure Download: https://jennibee.itch.io/dfaf-adventure * WINTERMUTE: Add detection for Dr. Bohus Author: Local Studio Description: Saving the world from outbreak of a mysterious disease Language: Czech Licence: Freeware Download: http://www.freegame.cz/hry-ke-stazeni/zdarma/adventury/dr-bohus/13266 * WINTERMUTE: Update detection for Escape from the Mansion Download: https://escapefromthemansion.com/files/EscapeFromTheMansion_v1.3.zip * WINTERMUTE: Add detection for Finding Hope Finding Hope is a hidden object game made with Wintermute engine by Golden Bough Games. Try & Buy: https://www.bigfishgames.com/games/5960/finding-hope/ * WINTERMUTE: Add detection for The Death of Erin Myers Buy links and details: http://www.viperante.com/short.htm * WINTERMUTE: Update detection for Four Download: http://mentalscraps.com/Four.zip * WINTERMUTE: Add detection for Face Noir This is a 2.5D game that is out of ScummVM scope * WINTERMUTE: Update detection for Hamlet Buy: https://store.steampowered.com/app/222160 * WINTERMUTE: Update detection for Framed Download: http://web.archive.org/web/20111121173916if_/http://mrburns.tks.bth.se/ds/ds08/maqk08/Framed.rar * WINTERMUTE: Update detection for James Peris Download: http://www.jamesperis.com/jamesperisweb-a.htm * WINTERMUTE: Update detection for Project Lonely Robot Download: http://web.archive.org/web/20111121173634if_/http://mrburns.tks.bth.se/ds/ds07/stgo07/Projectlonelyrobot.rar * WINTERMUTE: Update detection for Helga Deep In Trouble Download: http://helgagame.com/download/helgainstall.exe * WINTERMUTE: Update detection for Ghost in the Sheet Demo: https://ag.ru/games/ghost-in-the-sheet/demos/24978 * WINTERMUTE: Add detection for K'NOSSOS Demo: http://svarunentertainment.com/ * WINTERMUTE: Update detection for Open Quest Download: https://github.com/JenniBee/openquest/releases/tag/v1.0 * WINTERMUTE: Update detection for Night Train Download: https://www.moddb.com/games/night-train/downloads * WINTERMUTE: Update detection for Mirage Download: http://web.archive.org/web/20111121173733if_/http://mrburns.tks.bth.se/ds/ds08/sasl08/Mirage.rar * WINTERMUTE: Update detection for kulivocko Download: https://ulozto.net/!Ge2FUW8q/kulivocko1-zip * WINTERMUTE: Update detection for Looky Demo: https://mac-bs.de/homepage/downloads/Looky_Demo_Setup.exe Download: https://bullshit-softworx.itch.io/looky-adventure * WINTERMUTE: Add detection for One Demo: http://rcorp.wz.cz/one/one%20DEMO.rar * WINTERMUTE: Update detection for Pizza Morgana Download: http://pizza-morgana.com/download/episode1 * WINTERMUTE: Update detection for One Helluva Day Demo: https://store.steampowered.com/app/603680/One_helluva_day/ * WINTERMUTE: Update detection for reversion1&2 Buy: https://steamcommunity.com/app/270570 , https://store.steampowered.com/app/281060 Source for old versions: https://bugs.scummvm.org/ticket/11009 , https://bugs.scummvm.org/ticket/11011 * WINTERMUTE: Update detection for Project: Doom Download: http://web.archive.org/web/20111121180654if_/http://mrburns.tks.bth.se/ds/ds08/vida08/ProjectDoom.rar * WINTERMUTE: Update detection for Silent Footsteps Demo: http://frostlindgames.com/demo.html Buy: https://store.steampowered.com/app/780740/Silent_Footsteps/ * WINTERMUTE: Update detection for Paintaria Download: https://gamejolt.com/games/paintaria/17652 * WINTERMUTE: Update detection for Pigeons in the Park Download: https://games.squinky.me/downloads/pigeons/pigeons.zip * WINTERMUTE: Update detection for reversion1&2 (Linux & Mac) * WINTERMUTE: Update detection for Rosemary Download: http://gambit.mit.edu/loadgame/rosemary_eula.php * WINTERMUTE: Update detection for Shaban Try & Buy (English): https://www.bigfishgames.com/games/7157/shaban/?pc Try & Buy (German): https://www.bigfishgames.de/spiele/7157/shaban/?pc Try & Buy (Spanish): https://www.bigfishgames.es/juegos/7157/shaban/?pc Try & Buy (French): https://www.bigfishgames.fr/jeux/7157/shaban/?pc Try & Buy (Japanese): https://www.bigfishgames.jp/games/7157/shaban/?pc Try & Buy (Dutch): https://www.bigfishgames.nl/spellen/7157/shaban/?pc Try & Buy (Italian): https://www.bigfishgames.it/giochi/7157/shaban/?pc Try & Buy (Portuguese): https://www.bigfishgames.com.br/jogos/7157/shaban/?pc * WINTERMUTE: Update detection for Rhiannon Demos: https://ag.ru/games/rhiannon-curse-of-the-four-branches/demos Demo: http://download.fileplanet.com/ftp1/122008/Rhiannon_Demo_C5_setup.exe Buy: https://store.steampowered.com/app/298140 * WINTERMUTE: Update detection for Space Invaders demo Download: https://docs.google.com/file/d/0B1Y5w30FUPM7bk1UQ1BGR2ZVZ2s * WINTERMUTE: Update detection for Sofia's Debt Download: http://www.artisticsoft.com/flyers/deudadesofia/La%20Deuda%20de%20Sofia.zip Download: http://www.artisticsoft.com/flyers/deudadesofia/Sofias%20Debt.zip * WINTERMUTE: Update detection for The Kite Download: https://anatolii.itch.io/the-kite * WINTERMUTE: Update detection for The Box Download: http://web.archive.org/web/20111121180051if_/http://mrburns.tks.bth.se/ds/ds08/maqk08/packages.rar * WINTERMUTE: Update detection for The Driller Incident Download: http://questzone.ru/enzi/files/1645 * WINTERMUTE: Update detection for The Ancient Mark Download: https://www.moddb.com/games/the-ancient-mark-episode-1/downloads * WINTERMUTE: Update detection for Tanya Grotter dilogy Buy: https://www.soft-moscow.ru/goods/tanya_grotter_i_magicheskiy_kontrabas.htm Buy: https://www.soft-moscow.ru/goods/tanya_grotter_i_ischezayushchiy_etag.htm * WINTERMUTE: Update detection for Space Madness Demos: http://web.archive.org/web/20150520160556/http://www.spreadcamp.com/downloads/SM-DEMO_English_and_German.exe * WINTERMUTE: Update detection for The Shine of a Star NOTE: http://questzone.ru/enzi/game/2502 states that this game is freeware since 29.07.2013 Download: http://forgottenkey.se/TSoaS/TSOAS.msi Archive: https://web.archive.org/web/20190116104138if_/http://forgottenkey.se/TSoaS/TSOAS.msi * WINTERMUTE: Update detection for The White Chamber Download: http://www.studiotrophis.com/downloads/thewhitechamber1.7SETUP%20-%20Definitive%20Edition.exe Download: http://www.indiedb.com/games/the-white-chamber/downloads/the-white-chamber-17 * WINTERMUTE: Update detection for Trader of Stories Download demo: http://www.rudowscy.com/download/theTraderofStories.zip Full version is not made with Wintermute: http://www.rudowscy.com/tos1/ * WINTERMUTE: Update detection for Zbang! The Game Download: http://www.corbomitegames.com/zbang/download.php * WINTERMUTE: Update detection for Vsevolod Download: http://public.ag.ru/vd/c16b434cc9656d4ca5856150c8fc9b18/demos/23267/Vsevolod-Prologue.exe * WINTERMUTE: Update some comments * WINTERMUTE: Update detection for Toshechka and Boshechka * WINTERMUTE: Update detection for Wilma Tetris Download: http://web.archive.org/web/20160330072540if_/http://dead-code.org/misc/wtetris.zip * WINTERMUTE: Add detection for WME Technology Demo 1.2 Download: http://www.dead-code.org/download/wme_demo.zip * WINTERMUTE: Update detection for reversion1 (bug 11011) This fixes https://bugs.scummvm.org/ticket/11011
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