Age | Commit message (Collapse) | Author |
|
at runtime since the standard RG350 OS does not include it. This repairs
music playback on all games that rely on .mp3 playback (of note, the CD-ROM
version of Monkey Island 1)
|
|
disable debug logging without re-packing (or recompiling) scumm for gcw0
|
|
I'm leaving fluidsynth in the build because the quality is higher and it
does technically work and feel good on several games. Added back in MAD support
for MP3 playback for CD-based music tracks on games like Monkey Island 1 - the
auto-detection seems to not work correctly for gcw0. Default mixer sampling rate
to 48000 due to device driver limitations (this should lower CPU cost since anything
other than 48k gets re-sampled)
|
|
|
|
|
|
|
|
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.
|
|
|
|
Griffon.s03 map
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
of on the stack
Also adapted WinCursorGroup and MacMenu to reflect this.
|
|
"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? ^_~
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Fixes bug #10156
|
|
Ignores a detected volume version of SCI3 when the map version is less
than SCI2, as that indicates detectVolVersion's heuristics failed.
SQ1VGA Russian has volume files with a few junk bytes in between
resource entries, which causes detectVolVersion to return SCI3
instead of the expected result of Invalid and then use the
correctly detected map version. The detection algorithm tries each
version until it finds one that fits, and the SCI3 pattern happens
to fit because it's necessarily the most permissive due to the
wCompression bytes containing meaningless values.
Fixes bug #10156
|