scummvm/scummvm — pull request #267 by somaen (2012-08-14 16:49:46+00:00)
Title: Wintermute (Lite)-Engine

Wintermute (Lite)-Engine
===================

This is a port of the Wintermute-Lite engine that I have done for this years GSoC. As such it does lack some features that the full Wintermute engine has, but that were removed in Lite (the main one being support for 3D Characters).

##### Quoting the in-engine-readme:
This port of the Wintermute Engine (WME) is based on WME Lite, which lacks the following functionality
originally found in WME: (from http://res.dead-code.org/doku.php/wmelite:start)

##### The following features of WME 1.x are NOT supported by WME Lite:
* 3D characters. WME Lite only supports 2D games.
* Sprite frame mirroring.
* Sprite rotations.
* Sprite blending modes.
* Video playback.
* Plugins.
* Calling external functions from DLL libraries from scripts.
* Game Explorer support.
* 'Directory' script object.

##### This port does reimplement a few of these features, currently:
* Sprite frame mirroring - WORKS.
* Video playback - Theora PARTIALLY WORKING. (Slow, and doesn't support seeking)

##### In addition, this port removes a few additional features that were never/rarely used:
* 'File' script object - ScummVM doesn't have any easy way to write/read arbitrary files.
* Debugger/Compiler - weren't properly accessible in WME Lite anyhow.
* CD-numbering support in .dcp-files - was never used.
* 'SaveDirectory'-property of 'Game' will not return anything usefull to the game-scripts (saving is handled through SaveFileMan)

Additional limitations:
----------------------------
* Only .OGG and RAW-.WAV sounds are supported at this point
* TTF-fonts might behave a bit differently, owing to both the change to FreeType in WME Lite
and the change in dpi in this port of WME.
* The window-caption-setting in-game will be ignored, for the sake of concistency with ScummVM.
* Most VKey-combinations might still be missing (as they already were in WME Lite)
* Since we don't use FreeImage, some games might use odd files that weren't expected when the
image-decoders in ScummVM were written. One example here is interlaced-PNGs.
* UTF8-support is not ported, which means only games with western charsets will work for now.
* Games that select language by moving .dcp-files around still need a bit more handling on detection/load
adding support for those languages on a language-by-language basis.
* Most games assume the availability of the Windows-fonts (particularly arial.ttf)
at this point no fallback has been put in place for using FreeFonts as replacements,
simply for lack of having them easily accessible to the engines at this point. So, at least
arial.ttf should be put in either the game-folder or made available through the extras-folder
for now, otherwise kGUIBigFont will be used as a replacement.

Advanced engine-features:
------------------------------------
At this point the engine implements the following "advanced engine features":
* RTL ("Return to Launcher") support
* Global options dialog support
* Listing savestates via command line or Launcher
* Loading savestates via command line or Launcher
* Deleting savestates via the Launcher and GMM
* Savestate metadata support
* Loading/Saving during run time

and NOT the following:
* Enhanced debug/error messages

Games targeted by the engine:
-----------------------------------------
This engine targets more games than it is feasible to list here, a semi-full list for WME exists at:
http://res.dead-code.org/doku.php/games:start

The games I have completed during the development are:
* Dirty Split (dirtysplit) - still might have an issue with one single background.
* the white chamber (twc)
* Chivalry is NOT dead (chivalry)
* Rosemary (rosemary)
* The Box (thebox)
* J.U.L.I.A. (Demo) (julia)
* Pigeons in the park (pigeons)

Before opening this pull request I retested Chivalry is NOT dead, to verify that it's completable, sadly that game has quite a lot of endings, so I didn't have time to test them all, but the game follows a rather similar pattern in all of them so most scenes atleast should work fine.

Known issues:
-------------------
* The rendering is still quite a bit on the slow side (especially on 16 bit backends)
* The engine requires the user to supply fonts like arial.ttf in the game-folders for now
* In some cases text that would otherwise be invisible (by being cut of) is still displayed. (Dirty Split uses these on it's coin-interface)
* UTF8/Wide-Char support is not implemented, and thus any languages requiring it will not display properly
* ANSI-conversion is not implemented properly (mainly for lack of a game that uses it consistently), thus characters like ' might display wrongly.
* The dirty-rect-rendering is disabled for now, as it still has issues, thus all scenes are fully redrawn every frame.
* The theora-decoder uses the same solution as Sword25, and copies it's decoder into the engine, this means that the engine currently includes an external library, this can be resolved by disabling theora altogether, or by moving the theora-decoder to video/decoders.
* Interlaced PNGs, Non v1.1-JPEGs and 32bpp BMPs pose a problem for some of the games. (Separate pull-requests fixing PNGs and BMPs have been opened)
* There might be other font-related differencies, as WME originally didn't use FreeType, while WME2 did.