scummvm/engines/wintermute
Johannes Schickel df80820184 Revert "WINTERMUTE: Fix compilation when vorbis isn't available"
This reverts commit 4cfd906cec.

We now have vorbis as a hard requirement for Wintermute. Also somaen said this
commit causes issues, so we agreed on reverting this hack.
2012-09-04 20:38:22 +02:00
..
ad WINTERMUTE: Fix various comments. 2012-09-01 14:04:23 +02:00
base Revert "WINTERMUTE: Fix compilation when vorbis isn't available" 2012-09-04 20:38:22 +02:00
graphics WINTERMUTE: Fix g++ warnings listed by LordHoto 2012-08-31 14:01:18 +02:00
math WINTERMUTE: General cleanup 2012-08-31 20:00:40 +02:00
system WINTERMUTE: WinterMute -> Wintermute 2012-08-13 03:42:30 +02:00
ui WINTERMUTE: Replace col_templ's getSize with Common::Array::size() 2012-08-31 19:23:41 +02:00
utils WINTERMUTE: Use tabs in enums 2012-08-31 21:03:29 +02:00
video WINTERMUTE: Use tabs in enums 2012-08-31 21:03:29 +02:00
coll_templ.h WINTERMUTE: Use ++it instead of it++ 2012-08-31 20:00:41 +02:00
dcgf.h WINTERMUTE: Cleanup the header-guards. 2012-08-31 20:00:32 +02:00
dctypes.h WINTERMUTE: Use tabs instead of spaces for indenting dctypes.h 2012-08-31 17:10:01 +02:00
detection_tables.h WINTERMUTE: Add detection for Italian, English and Russian Dead City. 2012-08-13 04:59:17 +02:00
detection.cpp WINTERMUTE: Add detection for Italian, English and Russian Dead City. 2012-08-13 04:59:17 +02:00
module.mk WINTERMUTE: Update to use new TGA-decoder and new Video-system 2012-08-31 13:49:38 +02:00
persistent.cpp WINTERMUTE: WinterMute -> Wintermute 2012-08-13 03:42:30 +02:00
persistent.h WINTERMUTE: Cleanup the header-guards. 2012-08-31 20:00:32 +02:00
platform_osystem.cpp WINTERMUTE: WinterMute -> Wintermute 2012-08-13 03:42:30 +02:00
platform_osystem.h WINTERMUTE: WinterMute -> Wintermute 2012-08-13 03:42:30 +02:00
readme.txt WINTERMUTE: Add a readme.txt for the engine. 2012-07-31 01:07:19 +02:00
wintermute.cpp WINTERMUTE: Add language-filtering for Czech, Italian, Polish and Russian. 2012-08-13 04:37:07 +02:00
wintermute.h WINTERMUTE: Use tabs in enums 2012-08-31 21:03:29 +02:00
wintypes.h WINTERMUTE: Cleanup the header-guards. 2012-08-31 20:00:32 +02:00

Wintermute Engine - Copyright (c) 2011 Jan Nedoma
ScummVM port by Einar Johan Trøan Sømåen (somaen)

***************************
*** General information ***
***************************
The Wintermute Engine is a game engine mainly aimed at creating adventure
games, it supports both 3D, 2.5D, 2D and First-Person games, and has numerous
games both free, open-source and commercial created with it. This port was
created by somaen as part of Google Summer of Code 2012.

****************
*** Features ***
****************
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

*****************
*** Detection ***
*****************
Since Wintermute has authoring tools available, there will at any point in
time be atleast a few games that are works-in-progress, and as the authors
of these games might want to test their games in ScummVM, the engine has
to be able to detect arbitrary Wintermute-games, to this end the detector
code in this engine will check any folder containing "data.dcp", and try to
read "startup.settings" and "default.game" (or optionally any other .game-file
defined in startup.settings), the Name/Caption fields in the .game-file will
be used as gameid/title (prefixing the gameid with "wmefan-" to avoid confusion
with any other WME game that might happen to have taken that id.

All COMPLETED games should have their md5s and gameid's properly added, IFF
they don't require 3D. 

3D games may also be added, for the purpose of giving the user feedback
as to why their game won't run, but at this point, any such MD5 should
be added as a comment only, to avoid confusion, as no mechanism for giving
the user feedback about 3D-games not being supported is currently added.

*************************************
*** Games targeted by the engine: ***
*************************************
This engine potentially targets a very large amount of games:
http://res.dead-code.org/doku.php/games:start

Since the feature-set of WME Lite differs from that of the full Wintermute Engine,
games will need to be targeted on a case-by-case, feature-by-feature basis, this is
a list of the games that are currently known to work (although perhaps with minor
issues) through to completion:

* Dirty Split (dirtysplit)
* 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)

Untested, but starts:
* East Side Story (Demo) (eastside)
* Actual Destination (actualdest)
* Ghost in the sheet (ghostsheet)

********************************
*** Games with known issues: ***
********************************
Certain games will work mostly fine with this engine, but can still
be impossible to complete for various reasons, this is a list of games
that technically qualify (as in they do not require the 3D-parts of the engine)
but have issues that make them problematic or not completable:

Won't start:
* Five Lethal Demons (5ld) - Requires support for interlaced PNGs
* Five Magical Amulets (5ma) - Requires support for interlaced PNGs
* Kulivoeko - Requires support for interlaced PNGs
* Reversion (reversion) - Requires support for Non-V1.1 JPEGs and interlaced PNGs
* Mirage (mirage) - Tries to seek in a vorbis-stream inside a ZipStream
* Hamlet or the last game without MMORPS features, shaders and product placement (hamlet)
    - Requires support for interlaced PNGs

Gameplay broken:
* J.U.L.I.A. (Full game) (julia) - Requires sprite-rotation for a puzzle.

Non-critical:
* Ghost in the sheet (ghostsheet) - uses Non-V1.1-JPEGs
* East Side Story (eastside) - wants "framd.ttf"

*****************************
*** General known issues: ***
*****************************

Mostly a TODO-section, to not forget fixing outstanding general issues:
* Save/Load-screens are not shown during save/load
    this is probably a result of reducing the amount of redrawing done
	during save/load, and I'm not sure it should be put back, if that means
	making saves slower again.
* Font-sizes are wrong enough to allow Dirty Split to draw text that is hidden in
    the original game (most visible on the coin-interface)
* Alpha-masks for Theora-videos are broken on big-endian platforms