Age | Commit message (Collapse) | Author |
|
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).
|
|
|
|
|
|
FoxTail require SCENE's ENTITY to support additional HINT_X and HINT_Y properties.
Those properties are accessed by scripts to display hints: node_object.HintX.
|
|
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
|
|
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.
|
|
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.
|
|
FoxTail fork of WME seems to have hard-coded modifications for dialogue UI.
Buttons are ignoring hover-font and pressed-font settings.
Buttons also have hard-coded-path scripts attached to them.
|
|
FoxTail fork of WME seems to have hard-coded modifications for getting inter-line and inter-character spaces smaller.
|
|
FoxTail code is hacked to use key codes from different from usual WME.
Got correct mapping using script decompiling, verified with sample game.
|
|
FoxTail requires Game.RegistryFlush() method to force saving of persistent settings
|
|
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.
|
|
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.
|
|
|
|
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
|
|
FoxTail have flexible cursor settings system that require things like toggling visability of inventory items.
|
|
There are two new methods: immidiate stop and changing walking speed
For stopping, I'm reusing turnTo() code to finalize moving.
I talked to FoxTail devs about what SetSpeedWalkAnim actually does and answer was to set animation delays with given number of milliseconds.
|
|
FoxTail requires access to SubFrame's pixels to set actor.AlphaColor
with lighting map pixel value at x,y of actor's position.
|
|
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
|
|
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
|
|
Game is not playable with standard Wintermute, so we should stop player
from even trying to run it if ENABLE_FOXTAIL is off.
|
|
FoxTail is still in "Early Access" status, so this list is not final
All game builds have 1 multilanguage "data.dcp" package
Common::PL_POL is supported since 1.2.527.3377
Steam allows to download 14 public versions of FoxTail's depot:
1.2.527.3391 - 2019 Mar 22; silent bugfix
1.2.527.3389 - 2019 Jan 22; listed in Changelog on GOG and in News on Steam
1.2.527.3377 - 2019 Jan 17; listed in Changelog on GOG and in News on Steam
1.2.362.2047 - 2018 May 31; listed in Changelog on GOG and in News on Steam
1.2.362.2039 - 2018 May 30; listed in Changelog on GOG and in News on Steam
1.2.304.1571 - 2018 Mar 20; listed in Changelog on GOG and in News on Steam
1.2.230.1322 - 2018 Mar 03; silent bugfix
1.2.230.1321 - 2018 Mar 03; silent bugfix; required for GOG 1321->1571 updater
1.2.230.1318 - 2018 Mar 03; silent bugfix
1.2.230.1316 - 2018 Mar 03; silent bugfix
1.2.230.1315 - 2018 Mar 02; silent bugfix
1.2.230.1313 - 2018 Mar 02; listed in Changelog on GOG and in News on Steam
1.2.230.1303 - 2018 Mar 01; silent bugfix
1.2.230.1291 - 2018 Feb 26; listed in News on Steam; first public release
Two more versions seems to be released for nonpublic alpha-testing only:
1.2.227.916 - 2018 Feb 16; listed in News on Steam; not public release
1.2.227.880 - 2018 Feb 06; listed in News on Steam; not public release
|
|
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.
|
|
FoxTail is a point-and-click adventure game by Gingertips Game Studio, featuring extended and hacked WinterMute engine fork.
Most features are added by introducing new API methods and properties, but some are just hardcoded to be different from normal WME stuff.
|
|
"Hor" is a small ("5 minutes"), complete and really nice game by Roman
Koksharov.
It has no in-game text except the game title, so I marked is at
Common::UNK_LANG.
Source: https://gamejolt.com/games/hor/258037
Source: https://www.indiedb.com/games/hor
v1.0 and v1.3 are actually almost the same, difference is only in
"ALLOW_WINDOWED_MODE" game property and settings binary.
P.S. Have you found a secret ending? ^_~
|
|
|
|
Now the singleId property has been removed, the gameIds returned by the
MetaEngines when detecting games must be accepted by the `findGame`
method. Wintermute was generating gameIds based on datafiles in the
fallback detector. With this change, the gameId for fallback detected
games is always `wintermute`, the target name is generated based on the
`extra` value that contains the game caption.
The `(unknown)` mention that was previously added to the game title has
been removed. The unknown game dialog now makes it very clear that the
game version is not known to ScummVM.
Fixes #11288.
|
|
This fixes https://bugs.scummvm.org/ticket/11033
Removed checking printable property for system keys.
Refactored whole function to make it a bit more readable.
Reference implementations:
https://github.com/retrowork/wmelite/blob/master/src/UIEdit.cpp#L724
https://github.com/retrowork/Wintermute-Engine/blob/master/src/engine_core/wme_base/UIEdit.cpp#L708
|
|
1. Moved KEYCODE_SPACE to "alphanumeric or punctuation" group.
2. Splited "else" into before and after WME_LITE.
|
|
Matched game IDs for the Wintermute engine: facenoir-win
{"data.dcp", 0, "50a7a01b97cd3658fc84f2bec7c1212b", 555533359},
This is a version from one of the many times Face Noir has been bundled.
|
|
Added Steam "Shadows of the Vatican 1 & II" NG versions
|
|
Fix WME version for some games
|
|
Added more game entries from Steam
|
|
Just a C&P mistake...
|
|
In a previous commit, I forgot to add two new games to the PlainGameDescriptor structure
|
|
The MD5 hash for this game was wrong (hasing the whole file, not only the first 5000bytes)
|
|
Added some missing reversion2 localizations and latests reversion1
|
|
Latest Steam updates for Reversion titles include Simplified and Traditional Chinese languages that were not properly identified
|
|
Added 2 german demos for "Art of Murder: FBI Confidential"
|
|
Add public demos for several wintermute games
|
|
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).
|
|
Add new Steam flavours for Reversion: The Meeting
|
|
These are flagged by GCC if -Wswitch-default is enabled.
|
|
|
|
|
|
|
|
|
|
This is due to the _lastLine variable being unsigned, but having
-1 assigned to it as a default / invalid value. This could probably
be assigned 0 with no issues, but since this is exposed, this warning
is fixed instead by assigning the unsigned equivalent of -1 so no
dependent code will see a change.
|
|
WINTERMUTE: Fix detection for Chinese reversion2
Current "data.dcp" infromation is from reversion1 and not from reversion2 game... surely a C&P mistake
|
|
Have commented out rather than removed the lines causing unused variable
warnings as they might be used again in future.
|