[Scummvm-cvs-logs] scummvm master -> 1f5736a9020796e6986a15ea4d3b627b81233241

RichieSams adastley at gmail.com
Tue Dec 30 08:20:44 CET 2014


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
1f5736a902 ZVISION: Update function documentation to represent the changes to the internal pixel format


Commit: 1f5736a9020796e6986a15ea4d3b627b81233241
    https://github.com/scummvm/scummvm/commit/1f5736a9020796e6986a15ea4d3b627b81233241
Author: RichieSams (adastley at gmail.com)
Date: 2014-12-30T01:19:54-06:00

Commit Message:
ZVISION: Update function documentation to represent the changes to the internal pixel format

Aka: We keep everything as 555, and only convert to 565 before we send everything to the backend

Changed paths:
    engines/zvision/graphics/render_manager.h
    engines/zvision/zvision.cpp



diff --git a/engines/zvision/graphics/render_manager.h b/engines/zvision/graphics/render_manager.h
index 9002d66..c22f9a7 100644
--- a/engines/zvision/graphics/render_manager.h
+++ b/engines/zvision/graphics/render_manager.h
@@ -277,8 +277,7 @@ public:
 	void prepareBackground();
 
 	/**
-	 * Reads an image file pixel data into a Surface buffer. In the process
-	 * it converts the pixel data from RGB 555 to RGB 565. Also, if the image
+	 * Reads an image file pixel data into a Surface buffer. Also, if the image
 	 * is transposed, it will un-transpose the pixel data. The function will
 	 * call destination::create() if the dimensions of destination do not match
 	 * up with the dimensions of the image.
@@ -289,8 +288,7 @@ public:
 	void readImageToSurface(const Common::String &fileName, Graphics::Surface &destination);
 
 	/**
-	 * Reads an image file pixel data into a Surface buffer. In the process
-	 * it converts the pixel data from RGB 555 to RGB 565. Also, if the image
+	 * Reads an image file pixel data into a Surface buffer. Also, if the image
 	 * is transposed, it will un-transpose the pixel data. The function will
 	 * call destination::create() if the dimensions of destination do not match
 	 * up with the dimensions of the image.
diff --git a/engines/zvision/zvision.cpp b/engines/zvision/zvision.cpp
index 10e0aae..a70f9d8 100644
--- a/engines/zvision/zvision.cpp
+++ b/engines/zvision/zvision.cpp
@@ -1,361 +1,361 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "common/scummsys.h"
-
-#include "zvision/zvision.h"
-#include "zvision/core/console.h"
-#include "zvision/scripting/script_manager.h"
-#include "zvision/graphics/render_manager.h"
-#include "zvision/graphics/cursors/cursor_manager.h"
-#include "zvision/file/save_manager.h"
-#include "zvision/text/string_manager.h"
-#include "zvision/detection.h"
-#include "zvision/scripting/menu.h"
-#include "zvision/file/search_manager.h"
-#include "zvision/text/text.h"
-#include "zvision/text/truetype_font.h"
-#include "zvision/sound/midi.h"
-#include "zvision/file/zfs_archive.h"
-
-#include "common/config-manager.h"
-#include "common/str.h"
-#include "common/debug.h"
-#include "common/debug-channels.h"
-#include "common/textconsole.h"
-#include "common/error.h"
-#include "common/system.h"
-#include "common/file.h"
-
-#include "gui/message.h"
-#include "engines/util.h"
-#include "audio/mixer.h"
-
-namespace ZVision {
-
-#define ZVISION_SETTINGS_KEYS_COUNT 11
-
-struct zvisionIniSettings {
-	const char *name;
-	int16 slot;
-	int16 defaultValue;	// -1: use the bool value
-	bool defaultBoolValue;
-	bool allowEditing;
-} settingsKeys[ZVISION_SETTINGS_KEYS_COUNT] = {
-	// Hardcoded settings
-	{"countrycode", StateKey_CountryCode, 0, false, false},	// always 0 = US, subtitles are shown for codes 0 - 4, unused
-	{"lineskipvideo", StateKey_VideoLineSkip, 0, false, false},	// video line skip, 0 = default, 1 = always, 2 = pixel double when possible, unused
-	{"installlevel", StateKey_InstallLevel, 0, false, false},	// 0 = full, checked by universe.scr
-	{"highquality", StateKey_HighQuality, -1, true, false},	// high panorama quality, unused
-	{"qsoundenabled", StateKey_Qsound, -1, true, false},	// 1 = enable QSound - TODO: not supported yet
-	{"debugcheats", StateKey_DebugCheats, -1, true, false},	// always start with the GOxxxx cheat enabled
-	// Editable settings
-	{"keyboardturnspeed", StateKey_KbdRotateSpeed, 5, false, true},
-	{"panarotatespeed", StateKey_RotateSpeed, 540, false, true},	// checked by universe.scr
-	{"noanimwhileturning", StateKey_NoTurnAnim, -1, false, true},	// toggle playing animations during pana rotation
-	{"venusenabled", StateKey_VenusEnable, -1, true, true},
-	{"subtitles", StateKey_Subtitles, -1, true, true}
-};
-
-ZVision::ZVision(OSystem *syst, const ZVisionGameDescription *gameDesc)
-	: Engine(syst),
-	  _gameDescription(gameDesc),
-	  _resourcePixelFormat(2, 5, 5, 5, 0, 10, 5, 0, 0), /* RGB 555 */
-	  _screenPixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0), /* RGB 565 */
-	  _desiredFrameTime(33), /* ~30 fps */
-	  _clock(_system),
-	  _scriptManager(nullptr),
-	  _renderManager(nullptr),
-	  _saveManager(nullptr),
-	  _stringManager(nullptr),
-	  _cursorManager(nullptr),
-	  _midiManager(nullptr),
-	  _rnd(nullptr),
-	  _console(nullptr),
-	  _menu(nullptr),
-	  _searchManager(nullptr),
-	  _textRenderer(nullptr),
-	  _doubleFPS(false),
-	  _audioId(0),
-	  _frameRenderDelay(2),
-	  _keyboardVelocity(0),
-	  _mouseVelocity(0),
-	  _videoIsPlaying(false),
-	  _renderedFrameCount(0),
-	  _fps(0) {
-
-	debug(1, "ZVision::ZVision");
-
-	uint16 workingWindowWidth  = (gameDesc->gameId == GID_NEMESIS) ? ZNM_WORKING_WINDOW_WIDTH  : ZGI_WORKING_WINDOW_WIDTH;
-	uint16 workingWindowHeight = (gameDesc->gameId == GID_NEMESIS) ? ZNM_WORKING_WINDOW_HEIGHT : ZGI_WORKING_WINDOW_HEIGHT;
-	_workingWindow = Common::Rect(
-						 (WINDOW_WIDTH  -  workingWindowWidth) / 2,
-						 (WINDOW_HEIGHT - workingWindowHeight) / 2,
-						((WINDOW_WIDTH  -  workingWindowWidth) / 2) + workingWindowWidth,
-						((WINDOW_HEIGHT - workingWindowHeight) / 2) + workingWindowHeight
-					 );
-
-	memset(_cheatBuffer, 0, sizeof(_cheatBuffer));
-}
-
-ZVision::~ZVision() {
-	debug(1, "ZVision::~ZVision");
-
-	// Dispose of resources
-	delete _console;
-	delete _cursorManager;
-	delete _stringManager;
-	delete _saveManager;
-	delete _scriptManager;
-	delete _renderManager;	// should be deleted after the script manager
-	delete _rnd;
-	delete _midiManager;
-
-	getTimerManager()->removeTimerProc(&fpsTimerCallback);
-
-	// Remove all of our debug levels
-	DebugMan.clearAllDebugChannels();
-}
-
-void ZVision::registerDefaultSettings() {
-	for (int i = 0; i < ZVISION_SETTINGS_KEYS_COUNT; i++) {
-		if (settingsKeys[i].allowEditing) {
-			if (settingsKeys[i].defaultValue >= 0)
-				ConfMan.registerDefault(settingsKeys[i].name, settingsKeys[i].defaultValue);
-			else
-				ConfMan.registerDefault(settingsKeys[i].name, settingsKeys[i].defaultBoolValue);
-		}
-	}
-
-	ConfMan.registerDefault("originalsaveload", false);
-	ConfMan.registerDefault("doublefps", false);
-}
-
-void ZVision::loadSettings() {
-	int16 value = 0;
-	bool boolValue = false;
-
-	for (int i = 0; i < ZVISION_SETTINGS_KEYS_COUNT; i++) {
-		if (settingsKeys[i].defaultValue >= 0) {
-			value = (settingsKeys[i].allowEditing) ? ConfMan.getInt(settingsKeys[i].name) : settingsKeys[i].defaultValue;
-		} else {
-			boolValue = (settingsKeys[i].allowEditing) ? ConfMan.getBool(settingsKeys[i].name) : settingsKeys[i].defaultBoolValue;
-			value = (boolValue) ? 1 : 0;
-		}
-
-		_scriptManager->setStateValue(settingsKeys[i].slot, value);
-	}
-
-	if (getGameId() == GID_NEMESIS)
-		_scriptManager->setStateValue(StateKey_ExecScopeStyle, 1);
-	else
-		_scriptManager->setStateValue(StateKey_ExecScopeStyle, 0);
-}
-
-void ZVision::saveSettings() {
-	for (int i = 0; i < ZVISION_SETTINGS_KEYS_COUNT; i++) {
-		if (settingsKeys[i].allowEditing) {
-			if (settingsKeys[i].defaultValue >= 0)
-				ConfMan.setInt(settingsKeys[i].name, _scriptManager->getStateValue(settingsKeys[i].slot));
-			else
-				ConfMan.setBool(settingsKeys[i].name, (_scriptManager->getStateValue(settingsKeys[i].slot) == 1));
-		}
-	}
-
-	ConfMan.flushToDisk();
-}
-
-void ZVision::initialize() {
-	const Common::FSNode gameDataDir(ConfMan.get("path"));
-
-	_searchManager = new SearchManager(ConfMan.get("path"), 6);
-
-	_searchManager->addDir("FONTS");
-	_searchManager->addDir("addon");
-
-	if (_gameDescription->gameId == GID_GRANDINQUISITOR) {
-		_searchManager->loadZix("INQUIS.ZIX");
-		_searchManager->addPatch("C000H01Q.RAW", "C000H01Q.SRC");
-		_searchManager->addPatch("CM00H01Q.RAW", "CM00H01Q.SRC");
-		_searchManager->addPatch("DM00H01Q.RAW", "DM00H01Q.SRC");
-		_searchManager->addPatch("E000H01Q.RAW", "E000H01Q.SRC");
-		_searchManager->addPatch("EM00H50Q.RAW", "EM00H50Q.SRC");
-		_searchManager->addPatch("GJNPH65P.RAW", "GJNPH65P.SRC");
-		_searchManager->addPatch("GJNPH72P.RAW", "GJNPH72P.SRC");
-		_searchManager->addPatch("H000H01Q.RAW", "H000H01Q.SRC");
-		_searchManager->addPatch("M000H01Q.RAW", "M000H01Q.SRC");
-		_searchManager->addPatch("P000H01Q.RAW", "P000H01Q.SRC");
-		_searchManager->addPatch("Q000H01Q.RAW", "Q000H01Q.SRC");
-		_searchManager->addPatch("SW00H01Q.RAW", "SW00H01Q.SRC");
-		_searchManager->addPatch("T000H01Q.RAW", "T000H01Q.SRC");
-		_searchManager->addPatch("U000H01Q.RAW", "U000H01Q.SRC");
-	} else if (_gameDescription->gameId == GID_NEMESIS)
-		_searchManager->loadZix("NEMESIS.ZIX");
-
-	initGraphics(WINDOW_WIDTH, WINDOW_HEIGHT, true, &_screenPixelFormat);
-
-	// Register random source
-	_rnd = new Common::RandomSource("zvision");
-
-	// Create managers
-	_scriptManager = new ScriptManager(this);
-	_renderManager = new RenderManager(this, WINDOW_WIDTH, WINDOW_HEIGHT, _workingWindow, _resourcePixelFormat, _doubleFPS);
-	_saveManager = new SaveManager(this);
-	_stringManager = new StringManager(this);
-	_cursorManager = new CursorManager(this, _resourcePixelFormat);
-	_textRenderer = new TextRenderer(this);
-	_midiManager = new MidiManager();
-
-	if (_gameDescription->gameId == GID_GRANDINQUISITOR)
-		_menu = new MenuZGI(this);
-	else
-		_menu = new MenuNemesis(this);
-
-	// Initialize the managers
-	_cursorManager->initialize();
-	_scriptManager->initialize();
-	_stringManager->initialize(_gameDescription->gameId);
-
-	registerDefaultSettings();
-
-	loadSettings();
-
-	// Create debugger console. It requires GFX to be initialized
-	_console = new Console(this);
-	_doubleFPS = ConfMan.getBool("doublefps");
-
-	// Initialize FPS timer callback
-	getTimerManager()->installTimerProc(&fpsTimerCallback, 1000000, this, "zvisionFPS");
-}
-
-Common::Error ZVision::run() {
-	initialize();
-
-	// Check if a saved game is to be loaded from the launcher
-	if (ConfMan.hasKey("save_slot"))
-		_saveManager->loadGame(ConfMan.getInt("save_slot"));
-
-	// Before starting, make absolutely sure that the user has copied the needed fonts
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "common/scummsys.h"
+
+#include "zvision/zvision.h"
+#include "zvision/core/console.h"
+#include "zvision/scripting/script_manager.h"
+#include "zvision/graphics/render_manager.h"
+#include "zvision/graphics/cursors/cursor_manager.h"
+#include "zvision/file/save_manager.h"
+#include "zvision/text/string_manager.h"
+#include "zvision/detection.h"
+#include "zvision/scripting/menu.h"
+#include "zvision/file/search_manager.h"
+#include "zvision/text/text.h"
+#include "zvision/text/truetype_font.h"
+#include "zvision/sound/midi.h"
+#include "zvision/file/zfs_archive.h"
+
+#include "common/config-manager.h"
+#include "common/str.h"
+#include "common/debug.h"
+#include "common/debug-channels.h"
+#include "common/textconsole.h"
+#include "common/error.h"
+#include "common/system.h"
+#include "common/file.h"
+
+#include "gui/message.h"
+#include "engines/util.h"
+#include "audio/mixer.h"
+
+namespace ZVision {
+
+#define ZVISION_SETTINGS_KEYS_COUNT 11
+
+struct zvisionIniSettings {
+	const char *name;
+	int16 slot;
+	int16 defaultValue;	// -1: use the bool value
+	bool defaultBoolValue;
+	bool allowEditing;
+} settingsKeys[ZVISION_SETTINGS_KEYS_COUNT] = {
+	// Hardcoded settings
+	{"countrycode", StateKey_CountryCode, 0, false, false},	// always 0 = US, subtitles are shown for codes 0 - 4, unused
+	{"lineskipvideo", StateKey_VideoLineSkip, 0, false, false},	// video line skip, 0 = default, 1 = always, 2 = pixel double when possible, unused
+	{"installlevel", StateKey_InstallLevel, 0, false, false},	// 0 = full, checked by universe.scr
+	{"highquality", StateKey_HighQuality, -1, true, false},	// high panorama quality, unused
+	{"qsoundenabled", StateKey_Qsound, -1, true, false},	// 1 = enable QSound - TODO: not supported yet
+	{"debugcheats", StateKey_DebugCheats, -1, true, false},	// always start with the GOxxxx cheat enabled
+	// Editable settings
+	{"keyboardturnspeed", StateKey_KbdRotateSpeed, 5, false, true},
+	{"panarotatespeed", StateKey_RotateSpeed, 540, false, true},	// checked by universe.scr
+	{"noanimwhileturning", StateKey_NoTurnAnim, -1, false, true},	// toggle playing animations during pana rotation
+	{"venusenabled", StateKey_VenusEnable, -1, true, true},
+	{"subtitles", StateKey_Subtitles, -1, true, true}
+};
+
+ZVision::ZVision(OSystem *syst, const ZVisionGameDescription *gameDesc)
+	: Engine(syst),
+	  _gameDescription(gameDesc),
+	  _resourcePixelFormat(2, 5, 5, 5, 0, 10, 5, 0, 0), /* RGB 555 */
+	  _screenPixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0), /* RGB 565 */
+	  _desiredFrameTime(33), /* ~30 fps */
+	  _clock(_system),
+	  _scriptManager(nullptr),
+	  _renderManager(nullptr),
+	  _saveManager(nullptr),
+	  _stringManager(nullptr),
+	  _cursorManager(nullptr),
+	  _midiManager(nullptr),
+	  _rnd(nullptr),
+	  _console(nullptr),
+	  _menu(nullptr),
+	  _searchManager(nullptr),
+	  _textRenderer(nullptr),
+	  _doubleFPS(false),
+	  _audioId(0),
+	  _frameRenderDelay(2),
+	  _keyboardVelocity(0),
+	  _mouseVelocity(0),
+	  _videoIsPlaying(false),
+	  _renderedFrameCount(0),
+	  _fps(0) {
+
+	debug(1, "ZVision::ZVision");
+
+	uint16 workingWindowWidth  = (gameDesc->gameId == GID_NEMESIS) ? ZNM_WORKING_WINDOW_WIDTH  : ZGI_WORKING_WINDOW_WIDTH;
+	uint16 workingWindowHeight = (gameDesc->gameId == GID_NEMESIS) ? ZNM_WORKING_WINDOW_HEIGHT : ZGI_WORKING_WINDOW_HEIGHT;
+	_workingWindow = Common::Rect(
+						 (WINDOW_WIDTH  -  workingWindowWidth) / 2,
+						 (WINDOW_HEIGHT - workingWindowHeight) / 2,
+						((WINDOW_WIDTH  -  workingWindowWidth) / 2) + workingWindowWidth,
+						((WINDOW_HEIGHT - workingWindowHeight) / 2) + workingWindowHeight
+					 );
+
+	memset(_cheatBuffer, 0, sizeof(_cheatBuffer));
+}
+
+ZVision::~ZVision() {
+	debug(1, "ZVision::~ZVision");
+
+	// Dispose of resources
+	delete _console;
+	delete _cursorManager;
+	delete _stringManager;
+	delete _saveManager;
+	delete _scriptManager;
+	delete _renderManager;	// should be deleted after the script manager
+	delete _rnd;
+	delete _midiManager;
+
+	getTimerManager()->removeTimerProc(&fpsTimerCallback);
+
+	// Remove all of our debug levels
+	DebugMan.clearAllDebugChannels();
+}
+
+void ZVision::registerDefaultSettings() {
+	for (int i = 0; i < ZVISION_SETTINGS_KEYS_COUNT; i++) {
+		if (settingsKeys[i].allowEditing) {
+			if (settingsKeys[i].defaultValue >= 0)
+				ConfMan.registerDefault(settingsKeys[i].name, settingsKeys[i].defaultValue);
+			else
+				ConfMan.registerDefault(settingsKeys[i].name, settingsKeys[i].defaultBoolValue);
+		}
+	}
+
+	ConfMan.registerDefault("originalsaveload", false);
+	ConfMan.registerDefault("doublefps", false);
+}
+
+void ZVision::loadSettings() {
+	int16 value = 0;
+	bool boolValue = false;
+
+	for (int i = 0; i < ZVISION_SETTINGS_KEYS_COUNT; i++) {
+		if (settingsKeys[i].defaultValue >= 0) {
+			value = (settingsKeys[i].allowEditing) ? ConfMan.getInt(settingsKeys[i].name) : settingsKeys[i].defaultValue;
+		} else {
+			boolValue = (settingsKeys[i].allowEditing) ? ConfMan.getBool(settingsKeys[i].name) : settingsKeys[i].defaultBoolValue;
+			value = (boolValue) ? 1 : 0;
+		}
+
+		_scriptManager->setStateValue(settingsKeys[i].slot, value);
+	}
+
+	if (getGameId() == GID_NEMESIS)
+		_scriptManager->setStateValue(StateKey_ExecScopeStyle, 1);
+	else
+		_scriptManager->setStateValue(StateKey_ExecScopeStyle, 0);
+}
+
+void ZVision::saveSettings() {
+	for (int i = 0; i < ZVISION_SETTINGS_KEYS_COUNT; i++) {
+		if (settingsKeys[i].allowEditing) {
+			if (settingsKeys[i].defaultValue >= 0)
+				ConfMan.setInt(settingsKeys[i].name, _scriptManager->getStateValue(settingsKeys[i].slot));
+			else
+				ConfMan.setBool(settingsKeys[i].name, (_scriptManager->getStateValue(settingsKeys[i].slot) == 1));
+		}
+	}
+
+	ConfMan.flushToDisk();
+}
+
+void ZVision::initialize() {
+	const Common::FSNode gameDataDir(ConfMan.get("path"));
+
+	_searchManager = new SearchManager(ConfMan.get("path"), 6);
+
+	_searchManager->addDir("FONTS");
+	_searchManager->addDir("addon");
+
+	if (_gameDescription->gameId == GID_GRANDINQUISITOR) {
+		_searchManager->loadZix("INQUIS.ZIX");
+		_searchManager->addPatch("C000H01Q.RAW", "C000H01Q.SRC");
+		_searchManager->addPatch("CM00H01Q.RAW", "CM00H01Q.SRC");
+		_searchManager->addPatch("DM00H01Q.RAW", "DM00H01Q.SRC");
+		_searchManager->addPatch("E000H01Q.RAW", "E000H01Q.SRC");
+		_searchManager->addPatch("EM00H50Q.RAW", "EM00H50Q.SRC");
+		_searchManager->addPatch("GJNPH65P.RAW", "GJNPH65P.SRC");
+		_searchManager->addPatch("GJNPH72P.RAW", "GJNPH72P.SRC");
+		_searchManager->addPatch("H000H01Q.RAW", "H000H01Q.SRC");
+		_searchManager->addPatch("M000H01Q.RAW", "M000H01Q.SRC");
+		_searchManager->addPatch("P000H01Q.RAW", "P000H01Q.SRC");
+		_searchManager->addPatch("Q000H01Q.RAW", "Q000H01Q.SRC");
+		_searchManager->addPatch("SW00H01Q.RAW", "SW00H01Q.SRC");
+		_searchManager->addPatch("T000H01Q.RAW", "T000H01Q.SRC");
+		_searchManager->addPatch("U000H01Q.RAW", "U000H01Q.SRC");
+	} else if (_gameDescription->gameId == GID_NEMESIS)
+		_searchManager->loadZix("NEMESIS.ZIX");
+
+	initGraphics(WINDOW_WIDTH, WINDOW_HEIGHT, true, &_screenPixelFormat);
+
+	// Register random source
+	_rnd = new Common::RandomSource("zvision");
+
+	// Create managers
+	_scriptManager = new ScriptManager(this);
+	_renderManager = new RenderManager(this, WINDOW_WIDTH, WINDOW_HEIGHT, _workingWindow, _resourcePixelFormat, _doubleFPS);
+	_saveManager = new SaveManager(this);
+	_stringManager = new StringManager(this);
+	_cursorManager = new CursorManager(this, _resourcePixelFormat);
+	_textRenderer = new TextRenderer(this);
+	_midiManager = new MidiManager();
+
+	if (_gameDescription->gameId == GID_GRANDINQUISITOR)
+		_menu = new MenuZGI(this);
+	else
+		_menu = new MenuNemesis(this);
+
+	// Initialize the managers
+	_cursorManager->initialize();
+	_scriptManager->initialize();
+	_stringManager->initialize(_gameDescription->gameId);
+
+	registerDefaultSettings();
+
+	loadSettings();
+
+	// Create debugger console. It requires GFX to be initialized
+	_console = new Console(this);
+	_doubleFPS = ConfMan.getBool("doublefps");
+
+	// Initialize FPS timer callback
+	getTimerManager()->installTimerProc(&fpsTimerCallback, 1000000, this, "zvisionFPS");
+}
+
+Common::Error ZVision::run() {
+	initialize();
+
+	// Check if a saved game is to be loaded from the launcher
+	if (ConfMan.hasKey("save_slot"))
+		_saveManager->loadGame(ConfMan.getInt("save_slot"));
+
+	// Before starting, make absolutely sure that the user has copied the needed fonts
 	if (!Common::File::exists("arial.ttf") && !Common::File::exists("FreeSans.ttf") && !_searchManager->hasFile("arial.ttf")  && !_searchManager->hasFile("FreeSans.ttf") ) {
-		GUI::MessageDialog dialog(
-				"Before playing this game, you'll need to copy the required "
-				"fonts into ScummVM's extras directory, or into the game directory. "
-				"On Windows, you'll need the following font files from the Windows "
-				"font directory: Times New Roman, Century Schoolbook, Garamond, "
-				"Courier New and Arial. Alternatively, you can download the GNU "
-				"FreeFont package. You'll need all the fonts from that package, "
-				"i.e., FreeMono, FreeSans and FreeSerif."
-		);
-		dialog.runModal();
-		quitGame();
-		return Common::kUnknownError;
-	}
-
-	// Main loop
-	while (!shouldQuit()) {
-		_clock.update();
-		uint32 currentTime = _clock.getLastMeasuredTime();
-		uint32 deltaTime = _clock.getDeltaTime();
-
-		_cursorManager->setItemID(_scriptManager->getStateValue(StateKey_InventoryItem));
-
-		processEvents();
-		_renderManager->updateRotation();
-
-		_scriptManager->update(deltaTime);
-		_menu->process(deltaTime);
-
-		// Render the backBuffer to the screen
-		_renderManager->prepareBackground();
-		_renderManager->renderMenuToScreen();
-		_renderManager->processSubs(deltaTime);
-		_renderManager->renderSceneToScreen();
-
-		// Update the screen
-		if (canRender()) {
-			_system->updateScreen();
-			_renderedFrameCount++;
-		} else {
-			_frameRenderDelay--;
-		}
-
-		// Calculate the frame delay based off a desired frame time
-		int delay = _desiredFrameTime - int32(_system->getMillis() - currentTime);
-		// Ensure non-negative
-		delay = delay < 0 ? 0 : delay;
-
-		if (_doubleFPS) {
-			delay >>= 1;
-		}
-
-		if (canSaveGameStateCurrently() && shouldPerformAutoSave(_saveManager->getLastSaveTime())) {
-			_saveManager->autoSave();
-		}
-
-		_system->delayMillis(delay);
-	}
-
-	return Common::kNoError;
-}
-
-void ZVision::pauseEngineIntern(bool pause) {
-	_mixer->pauseAll(pause);
-
-	if (pause) {
-		_clock.stop();
-	} else {
-		_clock.start();
-	}
-}
-
-Common::String ZVision::generateSaveFileName(uint slot) {
-	return Common::String::format("%s.%03u", _targetName.c_str(), slot);
-}
-
-void ZVision::setRenderDelay(uint delay) {
-	_frameRenderDelay = delay;
-}
-
-bool ZVision::canRender() {
-	return _frameRenderDelay <= 0;
-}
-
-GUI::Debugger *ZVision::getDebugger() {
-	return _console;
-}
-
-void ZVision::syncSoundSettings() {
-	Engine::syncSoundSettings();
-
-	_scriptManager->setStateValue(StateKey_Subtitles, ConfMan.getBool("subtitles") ? 1 : 0);
-}
-
-void ZVision::fpsTimerCallback(void *refCon) {
-	((ZVision *)refCon)->fpsTimer();
-}
-
-void ZVision::fpsTimer() {
-	_fps = _renderedFrameCount;
-	_renderedFrameCount = 0;
-}
-
-} // End of namespace ZVision
+		GUI::MessageDialog dialog(
+				"Before playing this game, you'll need to copy the required "
+				"fonts into ScummVM's extras directory, or into the game directory. "
+				"On Windows, you'll need the following font files from the Windows "
+				"font directory: Times New Roman, Century Schoolbook, Garamond, "
+				"Courier New and Arial. Alternatively, you can download the GNU "
+				"FreeFont package. You'll need all the fonts from that package, "
+				"i.e., FreeMono, FreeSans and FreeSerif."
+		);
+		dialog.runModal();
+		quitGame();
+		return Common::kUnknownError;
+	}
+
+	// Main loop
+	while (!shouldQuit()) {
+		_clock.update();
+		uint32 currentTime = _clock.getLastMeasuredTime();
+		uint32 deltaTime = _clock.getDeltaTime();
+
+		_cursorManager->setItemID(_scriptManager->getStateValue(StateKey_InventoryItem));
+
+		processEvents();
+		_renderManager->updateRotation();
+
+		_scriptManager->update(deltaTime);
+		_menu->process(deltaTime);
+
+		// Render the backBuffer to the screen
+		_renderManager->prepareBackground();
+		_renderManager->renderMenuToScreen();
+		_renderManager->processSubs(deltaTime);
+		_renderManager->renderSceneToScreen();
+
+		// Update the screen
+		if (canRender()) {
+			_system->updateScreen();
+			_renderedFrameCount++;
+		} else {
+			_frameRenderDelay--;
+		}
+
+		// Calculate the frame delay based off a desired frame time
+		int delay = _desiredFrameTime - int32(_system->getMillis() - currentTime);
+		// Ensure non-negative
+		delay = delay < 0 ? 0 : delay;
+
+		if (_doubleFPS) {
+			delay >>= 1;
+		}
+
+		if (canSaveGameStateCurrently() && shouldPerformAutoSave(_saveManager->getLastSaveTime())) {
+			_saveManager->autoSave();
+		}
+
+		_system->delayMillis(delay);
+	}
+
+	return Common::kNoError;
+}
+
+void ZVision::pauseEngineIntern(bool pause) {
+	_mixer->pauseAll(pause);
+
+	if (pause) {
+		_clock.stop();
+	} else {
+		_clock.start();
+	}
+}
+
+Common::String ZVision::generateSaveFileName(uint slot) {
+	return Common::String::format("%s.%03u", _targetName.c_str(), slot);
+}
+
+void ZVision::setRenderDelay(uint delay) {
+	_frameRenderDelay = delay;
+}
+
+bool ZVision::canRender() {
+	return _frameRenderDelay <= 0;
+}
+
+GUI::Debugger *ZVision::getDebugger() {
+	return _console;
+}
+
+void ZVision::syncSoundSettings() {
+	Engine::syncSoundSettings();
+
+	_scriptManager->setStateValue(StateKey_Subtitles, ConfMan.getBool("subtitles") ? 1 : 0);
+}
+
+void ZVision::fpsTimerCallback(void *refCon) {
+	((ZVision *)refCon)->fpsTimer();
+}
+
+void ZVision::fpsTimer() {
+	_fps = _renderedFrameCount;
+	_renderedFrameCount = 0;
+}
+
+} // End of namespace ZVision






More information about the Scummvm-git-logs mailing list