[Scummvm-git-logs] scummvm master -> 13533f676ec1010087daae0ad445477524f0c99a

Strangerke noreply at scummvm.org
Sun Apr 12 05:47:20 UTC 2026


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

Summary:
13533f676e WAYNESWORLD: Move intro to a separate class and start working on interactive demo 1


Commit: 13533f676ec1010087daae0ad445477524f0c99a
    https://github.com/scummvm/scummvm/commit/13533f676ec1010087daae0ad445477524f0c99a
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2026-04-12T07:47:08+02:00

Commit Message:
WAYNESWORLD: Move intro to a separate class and start working on interactive demo 1

Changed paths:
  A engines/waynesworld/wwintro.cpp
  A engines/waynesworld/wwintro.h
  A engines/waynesworld/wwintro_demo1.cpp
  A engines/waynesworld/wwintro_full.cpp
  R engines/waynesworld/intro.cpp
    engines/waynesworld/module.mk
    engines/waynesworld/waynesworld.cpp
    engines/waynesworld/waynesworld.h


diff --git a/engines/waynesworld/module.mk b/engines/waynesworld/module.mk
index 5e1b64dd153..754a2822736 100644
--- a/engines/waynesworld/module.mk
+++ b/engines/waynesworld/module.mk
@@ -6,12 +6,15 @@ MODULE_OBJS := \
 	gamemap.o \
 	gxlarchive.o \
 	graphics.o \
-	intro.o \
 	metaengine.o \
 	pathfinding.o \
 	sound.o \
 	staticdata.o \
-	waynesworld.o
+	waynesworld.o \
+	wwintro.o \
+	wwintro_demo1.o \
+	wwintro_full.o
+	
 
 # This module can be built as a plugin
 ifeq ($(ENABLE_WAYNESWORLD), DYNAMIC_PLUGIN)
diff --git a/engines/waynesworld/waynesworld.cpp b/engines/waynesworld/waynesworld.cpp
index 27c0ed39800..313c6c3e95f 100644
--- a/engines/waynesworld/waynesworld.cpp
+++ b/engines/waynesworld/waynesworld.cpp
@@ -178,8 +178,15 @@ Common::Error WaynesWorldEngine::run() {
 	}
 
 	if (_loadSaveSlot < 0) {
-		runIntro();
+		if (_gameDescription->flags & ADGF_DEMO)
+			intro = new WWIntro_demo1(this);
+		else
+			intro = new WWIntro_full(this);
+		intro->runIntro();
+		delete intro;
+		intro = nullptr;
 	}
+
 	_introOngoing = false;
 	_fontWW = new GFTFont();
 	_fontWWInv = new GFTFont();
diff --git a/engines/waynesworld/waynesworld.h b/engines/waynesworld/waynesworld.h
index a9be35555e3..286e0531aba 100644
--- a/engines/waynesworld/waynesworld.h
+++ b/engines/waynesworld/waynesworld.h
@@ -33,6 +33,7 @@
 #include "image/pcx.h"
 
 #include "waynesworld/sound.h"
+#include "wwintro.h"
 
 #define kWWSavegameVersion 1
 #define kWWSavegameStrSize 14
@@ -141,53 +142,8 @@ public:
 private:
 	Graphics::PixelFormat _pixelFormat;
 
-	void wwEffect(int arg0, int arg1, bool flag);
-	void cleanPt3();
-
-	bool introPt1();
-	bool introPt2();
-	bool introPt3(bool flag);
-	bool introPt4();
-	void introPt5();
-	void introPt6();
-	void introPt7();
-
-	WWSurface *_introBackg1Image = nullptr;
-	WWSurface *_introWbodyImage[5] = {nullptr};
-	WWSurface *_introGbodyImage = nullptr;
-	WWSurface *_introWhead1[8] = {nullptr};
-	WWSurface *_introGhead1[11] = {nullptr};
-
-	int _old_arg_refreshBackgFl = -1;
-	int _old_arg_wBodyIndex = -1;
-	int _old_arg_gBodyIndex = -1;
-	int _old_argWHead1Index = -1;
-	int _old_argGHead1Index = -1;
-	int _startOawPos = 0;
-	int _startOagPos = 0;
-	int _startOaoPos = 0;
 	int _loadSaveSlot = -1;
 
-	void sub3009A(int textId);
-	void sub2FEFB(int arg_refreshBackgFl, int arg_wBodyIndex, int arg_gBodyIndex, int arg_wHead1Index, int arg_gHead1Index, int arg_TextId);
-
-	void introPt4_init();
-	bool introPt4_intro();
-	bool introPt4_displayCallInTime();
-	bool introPt4_caller1();
-	bool introPt4_caller2();
-	bool introPt4_caller3();
-	bool introPt4_caller4();
-	void introPt4_cleanup();
-	bool introPt4_playGuitar();
-
-	WWSurface *_demoPt2Surface = nullptr;
-	WWSurface *_backg2Surface = nullptr;
-	WWSurface *_logoSurface = nullptr;
-	WWSurface *_outlineSurface = nullptr;
-
-	GxlArchive *_oanGxl = nullptr;
-
 public:
 	Common::RandomSource *_random = nullptr;
 	GameLogic *_logic = nullptr;
@@ -301,7 +257,8 @@ public:
 	int _gameMapCtr = 0;
 	uint32 _gameMapLastTicks = 0;
 
-	void runIntro();
+	// Intro
+	WWIntro *intro = nullptr;
 
 	// Utils
 	int getRandom(int max);
diff --git a/engines/waynesworld/wwintro.cpp b/engines/waynesworld/wwintro.cpp
new file mode 100644
index 00000000000..c7f330cbd9f
--- /dev/null
+++ b/engines/waynesworld/wwintro.cpp
@@ -0,0 +1,94 @@
+/* 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "waynesworld/wwintro.h"
+#include "waynesworld/waynesworld.h"
+#include "waynesworld/graphics.h"
+#include "waynesworld/gxlarchive.h"
+
+#include "audio/audiostream.h"
+#include "graphics/paletteman.h"
+
+namespace WaynesWorld {
+
+WWIntro::WWIntro(WaynesWorldEngine *vm) : _vm(vm) {
+}
+
+void WWIntro::wwEffect(int arg0, int arg1, bool flag) {
+	int xmult = 0;
+	int ymult = 0;
+
+	switch (arg0) {
+	case 1:
+		xmult = 10;
+		ymult = 7;
+		break;
+	case 2:
+		xmult = 0;
+		ymult = 7;
+		break;
+	case 3:
+		xmult = -10;
+		ymult = 7;
+		break;
+	case 4:
+		xmult = -10;
+		ymult = 0;
+		break;
+	case 5:
+		xmult = -10;
+		ymult = -7;
+		break;
+	case 6:
+		xmult = 0;
+		ymult = -7;
+		break;
+	case 7:
+		xmult = 10;
+		ymult = -7;
+		break;
+	case 8:
+		xmult = 10;
+		ymult = 0;
+		break;
+	default:
+		break;
+	}
+
+	_demoPt2Surface->clear(0);
+	if (flag) {
+		_demoPt2Surface->drawSurface(_backg2Surface, 0, 15);
+	}
+
+	for (int i = 4; i > 0; --i) {
+		if (i <= arg1) {
+			_demoPt2Surface->drawSurfaceTransparent(_outlineSurface, (i * xmult) + 47, (i * ymult) + 25);
+		}
+	}
+
+	_demoPt2Surface->drawSurfaceTransparent(_logoSurface, 47, 25);
+	_vm->_screen->drawSurface(_demoPt2Surface, 0, 0);
+
+	// Added for better results
+	_vm->waitMillis(200);
+}
+
+} // End of namespace WaynesWorld
diff --git a/engines/waynesworld/wwintro.h b/engines/waynesworld/wwintro.h
new file mode 100644
index 00000000000..24387db3f1a
--- /dev/null
+++ b/engines/waynesworld/wwintro.h
@@ -0,0 +1,115 @@
+/* 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef WAYNESWORLD_WWINTRO_H
+#define WAYNESWORLD_WWINTRO_H
+
+#include "common/scummsys.h"
+
+#define MAX_SOUNDS 20
+
+namespace WaynesWorld {
+
+class WaynesWorldEngine;
+class GxlArchive;
+class WWSurface;
+
+class WWIntro {
+protected:
+	WaynesWorldEngine *_vm;
+
+	WWSurface *_outlineSurface = nullptr;
+	WWSurface *_logoSurface = nullptr;
+	WWSurface *_backg2Surface = nullptr;
+
+public:
+	WWIntro(WaynesWorldEngine *vm);
+	virtual ~WWIntro() {}
+
+	virtual void runIntro() = 0;
+	WWSurface *_demoPt2Surface = nullptr;
+
+protected:
+	void wwEffect(int arg0, int arg1, bool flag);
+};
+
+class WWIntro_full : public WWIntro {
+public:
+	WWIntro_full(WaynesWorldEngine *vm);
+	~WWIntro_full() override;
+
+	void runIntro() override;
+
+private:
+	GxlArchive *_oanGxl = nullptr;
+
+	int _startOawPos = 0;
+	int _startOagPos = 0;
+	int _startOaoPos = 0;
+
+	int _old_arg_refreshBackgFl = -1;
+	int _old_arg_wBodyIndex = -1;
+	int _old_arg_gBodyIndex = -1;
+	int _old_argWHead1Index = -1;
+	int _old_argGHead1Index = -1;
+
+	bool introPt1();
+	bool introPt2();
+	bool introPt3(bool flag);
+	bool introPt4();
+	void introPt5();
+	void introPt6();
+	void introPt7();
+
+	void sub3009A(int textId);
+	void sub2FEFB(int arg_refreshBackgFl, int arg_wBodyIndex, int arg_gBodyIndex, int arg_wHead1Index, int arg_gHead1Index, int arg_TextId);
+
+	void cleanPt3();
+	void introPt4_init();
+	bool introPt4_intro();
+	bool introPt4_displayCallInTime();
+	bool introPt4_caller1();
+	bool introPt4_caller2();
+	bool introPt4_caller3();
+	bool introPt4_caller4();
+	void introPt4_cleanup();
+	bool introPt4_playGuitar();
+
+	WWSurface *_introBackg1Image = nullptr;
+	WWSurface *_introWbodyImage[5] = {nullptr};
+	WWSurface *_introGbodyImage = nullptr;
+	WWSurface *_introWhead1[8] = {nullptr};
+	WWSurface *_introGhead1[11] = {nullptr};
+};
+
+class WWIntro_demo1 : public WWIntro {
+public:
+	WWIntro_demo1(WaynesWorldEngine *vm);
+	~WWIntro_demo1() override;
+
+	void runIntro() override;
+
+private:
+	bool introPt1();
+};
+} // End of namespace WaynesWorld
+
+#endif /* WAYNESWORLD_WWINTRO_H*/
diff --git a/engines/waynesworld/wwintro_demo1.cpp b/engines/waynesworld/wwintro_demo1.cpp
new file mode 100644
index 00000000000..b4be8265e24
--- /dev/null
+++ b/engines/waynesworld/wwintro_demo1.cpp
@@ -0,0 +1,42 @@
+/* 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 3 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, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "waynesworld/wwintro.h"
+#include "waynesworld/waynesworld.h"
+#include "waynesworld/graphics.h"
+#include "waynesworld/gxlarchive.h"
+
+#include "audio/audiostream.h"
+#include "graphics/paletteman.h"
+
+namespace WaynesWorld {
+
+WWIntro_demo1::WWIntro_demo1(WaynesWorldEngine *vm) : WWIntro(vm) {
+}
+
+WWIntro_demo1::~WWIntro_demo1() {
+}
+
+void WWIntro_demo1::runIntro() {
+	bool continueFl = introPt1();
+}
+
+} // End of namespace WaynesWorld
diff --git a/engines/waynesworld/intro.cpp b/engines/waynesworld/wwintro_full.cpp
similarity index 54%
rename from engines/waynesworld/intro.cpp
rename to engines/waynesworld/wwintro_full.cpp
index 71eaff48949..67e79d0fd55 100644
--- a/engines/waynesworld/intro.cpp
+++ b/engines/waynesworld/wwintro_full.cpp
@@ -19,6 +19,7 @@
  *
  */
 
+#include "waynesworld/wwintro.h"
 #include "waynesworld/waynesworld.h"
 #include "waynesworld/graphics.h"
 #include "waynesworld/gxlarchive.h"
@@ -28,7 +29,13 @@
 
 namespace WaynesWorld {
 
-void WaynesWorldEngine::runIntro() {
+WWIntro_full::WWIntro_full(WaynesWorldEngine *vm) : WWIntro(vm) {
+}
+
+WWIntro_full::~WWIntro_full() {
+}
+
+void WWIntro_full::runIntro() {
 	bool continueFl = introPt1();
 
 	if (continueFl)
@@ -51,44 +58,44 @@ void WaynesWorldEngine::runIntro() {
 	introPt7();
 }
 
-bool WaynesWorldEngine::introPt1() {
+bool WWIntro_full::introPt1() {
 	static const int16 array1[] = {179, 179, 181, 183, 186, 189, 192, 198, 208, 212, 217, 223, 234, 233, 236, 240, 241, 238, 238, 238, 225, 218, 218, 192, 164, 133, 103, 87};
 	static const int16 array2[] = {97, 97, 98, 98, 97, 96, 94, 91, 88, 85, 84, 82, 81, 78, 76, 76, 75, 74, 72, 72, 71, 69, 68, 68, 67, 67, 66, 68};
 	static const int16 array3[] = {80, 80, 69, 37, 0, 0, 0, 0};
 	static const int16 array4[] = {67, 67, 64, 54, 41, 27, 27, 27};
 
 	GxlArchive *oa2Gxl = new GxlArchive("oa2");
-	loadPalette(oa2Gxl, "paramnt.pcx");
+	_vm->loadPalette(oa2Gxl, "paramnt.pcx");
 
-	_musicIndex = 0;
-	changeMusic();
+	_vm->_musicIndex = 0;
+	_vm->changeMusic();
 
 	// "Paramount" background
-	drawImageToScreen(oa2Gxl, "paramnt.pcx", 0, 0);
-	waitSeconds(1);
-	if (_escPressed) {
+	_vm->drawImageToScreen(oa2Gxl, "paramnt.pcx", 0, 0);
+	_vm->waitSeconds(1);
+	if (_vm->_escPressed) {
 		delete oa2Gxl;
 		return false;
 	}
 
 	WWSurface *paramaSprite = new WWSurface(190, 112);
 	// "And" animation
-	drawImageToSurface(oa2Gxl, "parama.pcx", paramaSprite, 0, 0);
-	drawRandomEffect(paramaSprite, 66, 30, 2, 2);
+	_vm->drawImageToSurface(oa2Gxl, "parama.pcx", paramaSprite, 0, 0);
+	_vm->drawRandomEffect(paramaSprite, 66, 30, 2, 2);
 	delete paramaSprite;
 
-	waitSeconds(2);
-	if (_escPressed) {
+	_vm->waitSeconds(2);
+	if (_vm->_escPressed) {
 		delete oa2Gxl;
 		return false;
 	}
 
-	paletteFadeOut(0, 256, 6);
+	_vm->paletteFadeOut(0, 256, 6);
 
-	loadPalette(oa2Gxl, "backg.pcx");
-	drawImageToScreen(oa2Gxl, "backg.pcx", 0, 0);
+	_vm->loadPalette(oa2Gxl, "backg.pcx");
+	_vm->drawImageToScreen(oa2Gxl, "backg.pcx", 0, 0);
 
-	if (_escPressed) {
+	if (_vm->_escPressed) {
 		delete oa2Gxl;
 		return false;
 	}
@@ -96,11 +103,11 @@ bool WaynesWorldEngine::introPt1() {
 	// "Capstone logo" animation
 	for (int i = 1; i < 29; ++i) {
 		Common::String filename = Common::String::format("cap%02d.pcx", i);
-		drawImageToScreen(oa2Gxl, filename.c_str(), array1[i - 1], array2[i - 1]);
-		waitMillis(30);
+		_vm->drawImageToScreen(oa2Gxl, filename.c_str(), array1[i - 1], array2[i - 1]);
+		_vm->waitMillis(30);
 	}
-	waitSeconds(1);
-	if (_escPressed) {
+	_vm->waitSeconds(1);
+	if (_vm->_escPressed) {
 		delete oa2Gxl;
 		return false;
 	}
@@ -108,11 +115,11 @@ bool WaynesWorldEngine::introPt1() {
 	// "The pinnacle of entertainment software" animation
 	for (int i = 1; i < 10; ++i) {
 		Common::String filename = Common::String::format("txt%02d.pcx", i);
-		drawImageToScreen(oa2Gxl, filename.c_str(), 0, 138);
-		waitMillis(30);
+		_vm->drawImageToScreen(oa2Gxl, filename.c_str(), 0, 138);
+		_vm->waitMillis(30);
 	}
-	waitSeconds(1);
-	if (_escPressed) {
+	_vm->waitSeconds(1);
+	if (_vm->_escPressed) {
 		delete oa2Gxl;
 		return false;
 	}
@@ -120,11 +127,11 @@ bool WaynesWorldEngine::introPt1() {
 	// Shining "Capstone" animation
 	for (int i = 1; i < 12; ++i) {
 		Common::String filename = Common::String::format("captxt%02d.pcx", i);
-		drawImageToScreen(oa2Gxl, filename.c_str(), 113, 89);
-		waitMillis(30);
+		_vm->drawImageToScreen(oa2Gxl, filename.c_str(), 113, 89);
+		_vm->waitMillis(30);
 	}
-	waitSeconds(1);
-	if (_escPressed) {
+	_vm->waitSeconds(1);
+	if (_vm->_escPressed) {
 		delete oa2Gxl;
 		return false;
 	}
@@ -132,158 +139,99 @@ bool WaynesWorldEngine::introPt1() {
 	// Removing "The pinnacle of entertainment software" animation
 	for (int i = 9; i > 0; --i) {
 		Common::String filename = Common::String::format("txt%02d.pcx", i);
-		drawImageToScreen(oa2Gxl, filename.c_str(), 0, 138);
-		waitMillis(30);
+		_vm->drawImageToScreen(oa2Gxl, filename.c_str(), 0, 138);
+		_vm->waitMillis(30);
 	}
-	if (_escPressed) {
+	if (_vm->_escPressed) {
 		delete oa2Gxl;
 		return false;
 	}
 
-	drawImageToScreen(oa2Gxl, "txtbkg.pcx", 0, 138);
-	waitMillis(30);
-	waitSeconds(1);
-	if (_escPressed) {
+	_vm->drawImageToScreen(oa2Gxl, "txtbkg.pcx", 0, 138);
+	_vm->waitMillis(30);
+	_vm->waitSeconds(1);
+	if (_vm->_escPressed) {
 		delete oa2Gxl;
 		return false;
 	}
 
 	for (int i = 1; i < 7; ++i) {
 		Common::String filename = Common::String::format("capsp%02d.pcx", i);
-		drawImageToScreen(oa2Gxl, filename.c_str(), 76, 66);
-		waitMillis(30);
+		_vm->drawImageToScreen(oa2Gxl, filename.c_str(), 76, 66);
+		_vm->waitMillis(30);
 	}
-	if (_escPressed) {
+	if (_vm->_escPressed) {
 		delete oa2Gxl;
 		return false;
 	}
 
 	for (int i = 1; i < 12; ++i) {
 		Common::String filename = Common::String::format("presnt%02d.pcx", i);
-		drawImageToScreen(oa2Gxl, filename.c_str(), 117, 112);
-		waitMillis(60);
+		_vm->drawImageToScreen(oa2Gxl, filename.c_str(), 117, 112);
+		_vm->waitMillis(60);
 	}
-	if (_escPressed) {
+	if (_vm->_escPressed) {
 		delete oa2Gxl;
 		return false;
 	}
 
 	for (int i = 1; i < 9; ++i) {
 		Common::String filename = Common::String::format("capawy%02d.pcx", i);
-		drawImageToScreen(oa2Gxl, filename.c_str(), array3[i - 1], array4[i - 1]);
-		waitMillis(30);
+		_vm->drawImageToScreen(oa2Gxl, filename.c_str(), array3[i - 1], array4[i - 1]);
+		_vm->waitMillis(30);
 	}
 
 	delete oa2Gxl;
-	if (_escPressed) {
+	if (_vm->_escPressed) {
 		return false;
 	}
 
 	return true;
 }
 
-bool WaynesWorldEngine::introPt2() {
-	paletteFadeOut(0, 256, 64);
+bool WWIntro_full::introPt2() {
+	_vm->paletteFadeOut(0, 256, 64);
 
 	_oanGxl = new GxlArchive("oan");
-	loadPalette(_oanGxl, "backg2.pcx");
+	_vm->loadPalette(_oanGxl, "backg2.pcx");
 	_demoPt2Surface = new WWSurface(320, 200);
-	_midi->stopSong();
+	_vm->_midi->stopSong();
 
 	return true;
 }
 
-void WaynesWorldEngine::wwEffect(int arg0, int arg1, bool flag) {
-	int xmult = 0;
-	int ymult = 0;
-
-	switch (arg0) {
-	case 1:
-		xmult = 10;
-		ymult = 7;
-		break;
-	case 2:
-		xmult = 0;
-		ymult = 7;
-		break;
-	case 3:
-		xmult = -10;
-		ymult = 7;
-		break;
-	case 4:
-		xmult = -10;
-		ymult = 0;
-		break;
-	case 5:
-		xmult = -10;
-		ymult = -7;
-		break;
-	case 6:
-		xmult = 0;
-		ymult = -7;
-		break;
-	case 7:
-		xmult = 10;
-		ymult = -7;
-		break;
-	case 8:
-		xmult = 10;
-		ymult = 0;
-		break;
-	default:
-		break;
-	}
-
-	_demoPt2Surface->clear(0);
-	if (flag) {
-		_demoPt2Surface->drawSurface(_backg2Surface, 0, 15);
-	}
-
-	for (int i = 4; i > 0; --i) {
-		if (i <= arg1) {
-			_demoPt2Surface->drawSurfaceTransparent(_outlineSurface, (i * xmult) + 47, (i * ymult) + 25);
-		}
-	}
-
-	_demoPt2Surface->drawSurfaceTransparent(_logoSurface, 47, 25);
-	_screen->drawSurface(_demoPt2Surface, 0, 0);
-
-	// Added for better results
-	waitMillis(200);
-}
-
-void WaynesWorldEngine::cleanPt3() {
+void WWIntro_full::cleanPt3() {
 	delete _outlineSurface;
 	delete _logoSurface;
 	delete _backg2Surface;
 }
 
-bool WaynesWorldEngine::introPt3(bool flag) {
+bool WWIntro_full::introPt3(bool flag) {
 	// sub1
 	_backg2Surface = new WWSurface(320, 170);
 	_logoSurface = new WWSurface(226, 134);
 	_outlineSurface = new WWSurface(226, 134);
 
-	drawImageToSurface(_oanGxl, "backg2.pcx", _backg2Surface, 0, 0);
-	drawImageToSurface(_oanGxl, "logo.pcx", _logoSurface, 0, 0);
-	drawImageToSurface(_oanGxl, "outline.pcx", _outlineSurface, 0, 0);
+	_vm->drawImageToSurface(_oanGxl, "backg2.pcx", _backg2Surface, 0, 0);
+	_vm->drawImageToSurface(_oanGxl, "logo.pcx", _logoSurface, 0, 0);
+	_vm->drawImageToSurface(_oanGxl, "outline.pcx", _outlineSurface, 0, 0);
 	// End of sub1
 
 	wwEffect(1, 0, flag);
 
 	if (flag)
-		waitSeconds(1);
+		_vm->waitSeconds(1);
 
-	if (_escPressed) {
+	if (_vm->_escPressed) {
 		cleanPt3();
 		return false;
 	}
 
-	_sound->playSound("sv42.snd", false);
+	_vm->_sound->playSound("sv42.snd", false);
 	wwEffect(1, 1, flag);
 	wwEffect(1, 2, flag);
 	wwEffect(1, 3, flag);
-	if (_escPressed) {
+	if (_vm->_escPressed) {
 		cleanPt3();
 		return false;
 	}
@@ -302,7 +250,7 @@ bool WaynesWorldEngine::introPt3(bool flag) {
 		g_system->getPaletteManager()->setPalette((const byte *)&newColor, 236, 1);
 		wwEffect((i % 8) + 1, 4, flag);
 
-		if (_escPressed) {
+		if (_vm->_escPressed) {
 			cleanPt3();
 			return false;
 		}
@@ -312,29 +260,29 @@ bool WaynesWorldEngine::introPt3(bool flag) {
 	wwEffect(1, 2, flag);
 	wwEffect(1, 1, flag);
 	wwEffect(1, 0, flag);
-	if (_escPressed) {
+	if (_vm->_escPressed) {
 		cleanPt3();
 		return false;
 	}
 
-	while (_sound->isSFXPlaying())
-		waitMillis(30);
+	while (_vm->_sound->isSFXPlaying())
+		_vm->waitMillis(30);
 
-	_sound->playSound("sv16.snd", false);
+	_vm->_sound->playSound("sv16.snd", false);
 
-	waitSeconds(1);
-	paletteFadeOut(0, 256, 4);
+	_vm->waitSeconds(1);
+	_vm->paletteFadeOut(0, 256, 4);
 
 	cleanPt3();
 
-	if (_escPressed) {
+	if (_vm->_escPressed) {
 		return false;
 	}
 
 	return true;
 }
 
-bool WaynesWorldEngine::introPt4() {
+bool WWIntro_full::introPt4() {
 	bool retVal = true;
 	introPt4_init();
 
@@ -358,59 +306,59 @@ bool WaynesWorldEngine::introPt4() {
 	return retVal;
 }
 
-void WaynesWorldEngine::introPt5() {
+void WWIntro_full::introPt5() {
 	delete _oanGxl;
 	_oanGxl = nullptr;
 }
 
-void WaynesWorldEngine::introPt6() {
+void WWIntro_full::introPt6() {
 	WWSurface *introPt6Surface[5] = {nullptr};
 	WWSurface *signBottomSurface = nullptr;
 	WWSurface *scrollSurface = nullptr;
 
-	_escPressed = false;
+	_vm->_escPressed = false;
 
-	while (_sound->isSFXPlaying())
-		waitMillis(10);
+	while (_vm->_sound->isSFXPlaying())
+		_vm->waitMillis(10);
 
-	if (_escPressed)
+	if (_vm->_escPressed)
 		return;
 
 	GxlArchive *oa3Gxl = new GxlArchive("oa3");
 	for (int i = 0; i < 5; ++i) {
 		introPt6Surface[i] = new WWSurface(320, 200);
 		Common::String filename = Common::String::format("sign%d.pcx", i);
-		drawImageToSurface(oa3Gxl, filename.c_str(), introPt6Surface[i], 0, 0);
+		_vm->drawImageToSurface(oa3Gxl, filename.c_str(), introPt6Surface[i], 0, 0);
 	}
 
-	_sound->playSound("sv14.snd", false);
+	_vm->_sound->playSound("sv14.snd", false);
 
 	for (int i = 0; i < 5; ++i) {
-		_screen->drawSurface(introPt6Surface[i], 0, 0);
-		waitMillis(100);
-		if (_escPressed) {
+		_vm->_screen->drawSurface(introPt6Surface[i], 0, 0);
+		_vm->waitMillis(100);
+		if (_vm->_escPressed) {
 			break;
 		}
 	}
 
-	if (!_escPressed) {
+	if (!_vm->_escPressed) {
 		signBottomSurface = new WWSurface(320, 94);
-		drawImageToSurface(oa3Gxl, "signbot.pcx", signBottomSurface, 0, 0);
+		_vm->drawImageToSurface(oa3Gxl, "signbot.pcx", signBottomSurface, 0, 0);
 	}
 
-	if (!_escPressed) {
-		_musicIndex = 1;
-		changeMusic();
-		waitSeconds(4);
+	if (!_vm->_escPressed) {
+		_vm->_musicIndex = 1;
+		_vm->changeMusic();
+		_vm->waitSeconds(4);
 	}
 
-	if (!_escPressed) {
+	if (!_vm->_escPressed) {
 		scrollSurface = new WWSurface(320, 200);
 
 		for (int i = 199; i > 106; --i) {
 			scrollSurface->copyRectToSurface((Graphics::Surface)*introPt6Surface[4], 0, 0, Common::Rect(0, 200 - i, 319, 200));
 			scrollSurface->copyRectToSurface((Graphics::Surface)*signBottomSurface, 0, i, Common::Rect(0, 0, 319, 200 - i));
-			_screen->drawSurface(scrollSurface, 0, 0);
+			_vm->_screen->drawSurface(scrollSurface, 0, 0);
 		}
 	}
 
@@ -421,13 +369,13 @@ void WaynesWorldEngine::introPt6() {
 		delete introPt6Surface[i];
 }
 
-void WaynesWorldEngine::introPt7() {
-	_midi->stopSong();
-	paletteFadeOut(0, 256, 4);
-	_screen->clear(0);
+void WWIntro_full::introPt7() {
+	_vm->_midi->stopSong();
+	_vm->paletteFadeOut(0, 256, 4);
+	_vm->_screen->clear(0);
 }
 
-void WaynesWorldEngine::sub3009A(int textId) {
+void WWIntro_full::sub3009A(int textId) {
 	int startPos;
 	int textColor;
 	int textType = 0;
@@ -453,15 +401,15 @@ void WaynesWorldEngine::sub3009A(int textId) {
 		break;
 	}
 
-	Common::String displayTxt = loadString(filename.c_str(), startPos, 0);
+	Common::String displayTxt = _vm->loadString(filename.c_str(), startPos, 0);
 
 	if (textType)
-		_fontWW->drawText(_demoPt2Surface, displayTxt.c_str(), 0, 187, textColor);
+		_vm->_fontWW->drawText(_demoPt2Surface, displayTxt.c_str(), 0, 187, textColor);
 	else
-		_fontWW->drawText(_demoPt2Surface, displayTxt.c_str(), 0, 2, textColor);
+		_vm->_fontWW->drawText(_demoPt2Surface, displayTxt.c_str(), 0, 2, textColor);
 }
 
-void WaynesWorldEngine::sub2FEFB(int arg_refreshBackgFl, int arg_wBodyIndex, int arg_gBodyIndex, int arg_wHead1Index, int arg_gHead1Index, int arg_TextId) {
+void WWIntro_full::sub2FEFB(int arg_refreshBackgFl, int arg_wBodyIndex, int arg_gBodyIndex, int arg_wHead1Index, int arg_gHead1Index, int arg_TextId) {
 	_demoPt2Surface->fillRect(0, 0, 319, 14, 0);
 	_demoPt2Surface->fillRect(0, 185, 319, 199, 0);
 
@@ -495,113 +443,113 @@ void WaynesWorldEngine::sub2FEFB(int arg_refreshBackgFl, int arg_wBodyIndex, int
 		sub3009A(arg_TextId);
 	}
 
-	_screen->drawSurface(_demoPt2Surface, 0, 0);
-	waitMillis(170);
+	_vm->_screen->drawSurface(_demoPt2Surface, 0, 0);
+	_vm->waitMillis(170);
 }
 
-void WaynesWorldEngine::introPt4_init() {
-	_fontWW = new GFTFont();
-	_fontWW->loadFromFile("ww.gft");
+void WWIntro_full::introPt4_init() {
+	_vm->_fontWW = new GFTFont();
+	_vm->_fontWW->loadFromFile("ww.gft");
 
-	while(_sound->isSFXPlaying())
-		waitMillis(30);
+	while (_vm->_sound->isSFXPlaying())
+		_vm->waitMillis(30);
 
-	_musicIndex = 2;
-	changeMusic();
+	_vm->_musicIndex = 2;
+	_vm->changeMusic();
 
 	_introBackg1Image = new WWSurface(320, 170);
-	drawImageToSurface(_oanGxl, "backg1.pcx", _introBackg1Image, 0, 0);
+	_vm->drawImageToSurface(_oanGxl, "backg1.pcx", _introBackg1Image, 0, 0);
 	for (int i = 0; i < 5; ++i) {
 		_introWbodyImage[i] = new WWSurface(145, 118);
 		Common::String filename = Common::String::format("wbody%d.pcx", i == 0 ? 0 : i + 8);
-		drawImageToSurface(_oanGxl, filename.c_str(), _introWbodyImage[i], 0, 0);
+		_vm->drawImageToSurface(_oanGxl, filename.c_str(), _introWbodyImage[i], 0, 0);
 	}
 	_introGbodyImage = new WWSurface(160, 149);
-	drawImageToSurface(_oanGxl, "gbody0.pcx", _introGbodyImage, 0, 0);
+	_vm->drawImageToSurface(_oanGxl, "gbody0.pcx", _introGbodyImage, 0, 0);
 
 	for (int i = 0; i < 8; ++i) {
 		_introWhead1[i] = new WWSurface(98, 71);
 		Common::String filename = Common::String::format("whead1%d.pcx", i);
-		drawImageToSurface(_oanGxl, filename.c_str(), _introWhead1[i], 0, 0);
+		_vm->drawImageToSurface(_oanGxl, filename.c_str(), _introWhead1[i], 0, 0);
 	}
 
 	for (int i = 0; i < 11; ++i) {
 		_introGhead1[i] = new WWSurface(138, 80);
 		Common::String filename = Common::String::format("ghead1%d.pcx", i);
-		drawImageToSurface(_oanGxl, filename.c_str(), _introGhead1[i], 0, 0);
+		_vm->drawImageToSurface(_oanGxl, filename.c_str(), _introGhead1[i], 0, 0);
 	}
 
-	drawImageToScreen(_oanGxl, "backg1.pcx", 0, 15);
-	paletteFadeIn(0, 256, 2);
+	_vm->drawImageToScreen(_oanGxl, "backg1.pcx", 0, 15);
+	_vm->paletteFadeIn(0, 256, 2);
 }
 
-bool WaynesWorldEngine::introPt4_intro() {
-	_sound->playSound("sv27.snd", false);
+bool WWIntro_full::introPt4_intro() {
+	_vm->_sound->playSound("sv27.snd", false);
 
 	for (int i = 0; i < 12; ++i) {
-		sub2FEFB(1, 0, 1, getRandom(3), 9, 0);
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
 	}
 
-	if (_escPressed) {
+	if (_vm->_escPressed) {
 		return false;
 	}
 	++_startOawPos;
 
-	while (_sound->isSFXPlaying())
-		waitMillis(30);
+	while (_vm->_sound->isSFXPlaying())
+		_vm->waitMillis(30);
 
-	_sound->playSound("sv25.snd", false);
+	_vm->_sound->playSound("sv25.snd", false);
 
 	for (int i = 0; i < 8; ++i) {
-		sub2FEFB(1, 0, 1, getRandom(3), 9, 0);
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
 	}
 	++_startOawPos;
 
-	if (_escPressed) {
+	if (_vm->_escPressed) {
 		return false;
 	}
 
-	while (_sound->isSFXPlaying())
-		waitMillis(30);
+	while (_vm->_sound->isSFXPlaying())
+		_vm->waitMillis(30);
 
-	_sound->playSound("sv20.snd", false);
+	_vm->_sound->playSound("sv20.snd", false);
 
 	for (int i = 0; i < 5; ++i) {
-		sub2FEFB(1, 0, 1, 0, getRandom(11), 1);
+		sub2FEFB(1, 0, 1, 0, _vm->getRandom(11), 1);
 	}
 	++_startOagPos;
 
-	if (_escPressed) {
+	if (_vm->_escPressed) {
 		return false;
 	}
 
 	for (int i = 0; i < 15; ++i) {
-		sub2FEFB(1, 0, 1, getRandom(3), 9, 0);
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
 	}
 	++_startOawPos;
 
-	if (_escPressed) {
+	if (_vm->_escPressed) {
 		return false;
 	}
 
 	return true;
 }
 
-bool WaynesWorldEngine::introPt4_displayCallInTime() {
+bool WWIntro_full::introPt4_displayCallInTime() {
 	WWSurface *pt4Sub3Surface1 = new WWSurface(178, 21);
 	WWSurface *pt4Sub3Surface2 = new WWSurface(178, 21);
 	pt4Sub3Surface2->clear(0);
-	drawImageToSurface(_oanGxl, "callin.pcx", pt4Sub3Surface1, 0, 0);
+	_vm->drawImageToSurface(_oanGxl, "callin.pcx", pt4Sub3Surface1, 0, 0);
 
 	for (int i = 0; i < 5; ++i) {
-		drawImageToScreen(_oanGxl, "backg1.pcx", 0, 15);
-		waitMillis(500);
-		if (_escPressed) {
+		_vm->drawImageToScreen(_oanGxl, "backg1.pcx", 0, 15);
+		_vm->waitMillis(500);
+		if (_vm->_escPressed) {
 			break;
 		}
-		_screen->drawSurfaceTransparent(pt4Sub3Surface1, 66, 157);
-		waitMillis(500);
-		if (_escPressed) {
+		_vm->_screen->drawSurfaceTransparent(pt4Sub3Surface1, 66, 157);
+		_vm->waitMillis(500);
+		if (_vm->_escPressed) {
 			break;
 		}
 	}
@@ -609,18 +557,18 @@ bool WaynesWorldEngine::introPt4_displayCallInTime() {
 	delete pt4Sub3Surface1;
 	delete pt4Sub3Surface2;
 
-	if (_escPressed) {
+	if (_vm->_escPressed) {
 		return false;
 	}
 
 	return true;
 }
 
-bool WaynesWorldEngine::introPt4_caller1() {
+bool WWIntro_full::introPt4_caller1() {
 	for (int i = 0; i < 3; ++i) {
 		for (int j = 0; j < 15; ++j) {
-			sub2FEFB(1, 0, 1, getRandom(3), 9, 0);
-			if (_escPressed) {
+			sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
+			if (_vm->_escPressed) {
 				return false;
 			}
 		}
@@ -629,105 +577,105 @@ bool WaynesWorldEngine::introPt4_caller1() {
 
 	for (int i = 0; i < 3; ++i) {
 		for (int j = 0; j < 5; ++j) {
-			sub2FEFB(1, 0, 1, 0, getRandom(11), 1);
-			if (_escPressed) {
+			sub2FEFB(1, 0, 1, 0, _vm->getRandom(11), 1);
+			if (_vm->_escPressed) {
 				return false;
 			}
 		}
 		++_startOagPos;
 		for (int j = 0; j < 10; ++j) {
-			sub2FEFB(1, 0, 1, getRandom(3), 9, 0);
-			if (_escPressed) {
+			sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
+			if (_vm->_escPressed) {
 				return false;
 			}
 		}
 		++_startOawPos;
 	}
 
-	_sound->playSound("sv33.snd", 0);
+	_vm->_sound->playSound("sv33.snd", 0);
 	for (int j = 0; j < 10; ++j) {
-		sub2FEFB(1, 0, 1, getRandom(3), 9, 0);
-		if (_escPressed) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
+		if (_vm->_escPressed) {
 			return false;
 		}
 	}
 	++_startOawPos;
 
 	for (int i = 0; i < 2; ++i) {
-		sub2FEFB(1, 0, 1, getRandom(3), getRandom(11), 2);
-		waitSeconds(2);
-		if (_escPressed) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 2);
+		_vm->waitSeconds(2);
+		if (_vm->_escPressed) {
 			return false;
 		}
 	}
 
-	_sound->playSound("sv38.snd", 0);
+	_vm->_sound->playSound("sv38.snd", 0);
 
 	for (int j = 0; j < 10; ++j) {
-		sub2FEFB(1, 0, 1, getRandom(3), 9, 0);
-		if (_escPressed) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
+		if (_vm->_escPressed) {
 			return false;
 		}
 	}
 	++_startOawPos;
 
 	for (int i = 0; i < 3; ++i) {
-		sub2FEFB(1, 0, 1, getRandom(3), getRandom(11), 2);
-		waitSeconds(2);
-		if (_escPressed) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 2);
+		_vm->waitSeconds(2);
+		if (_vm->_escPressed) {
 			return false;
 		}
 	}
 
 	for (int j = 0; j < 15; ++j) {
-		sub2FEFB(1, 0, 1, 0, getRandom(11), 1);
-		if (_escPressed) {
+		sub2FEFB(1, 0, 1, 0, _vm->getRandom(11), 1);
+		if (_vm->_escPressed) {
 			return false;
 		}
 	}
 	++_startOagPos;
-	_sound->playSound("sv31.snd", 0);
+	_vm->_sound->playSound("sv31.snd", 0);
 
 	for (int i = 0; i < 3; ++i) {
-		sub2FEFB(1, 0, 1, getRandom(3), getRandom(11), 2);
-		waitSeconds(2);
-		if (_escPressed) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 2);
+		_vm->waitSeconds(2);
+		if (_vm->_escPressed) {
 			return false;
 		}
 	}
 
 	for (int i = 0; i < 2; ++i) {
 		for (int j = 0; j < 10; ++j) {
-			sub2FEFB(1, 0, 1, getRandom(3), 9, 0);
-			if (_escPressed) {
+			sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
+			if (_vm->_escPressed) {
 				return false;
 			}
 		}
 		++_startOawPos;
 	}
-	_sound->playSound("sv28.snd", 0);
+	_vm->_sound->playSound("sv28.snd", 0);
 
 	for (int j = 0; j < 5; ++j) {
-		sub2FEFB(1, 0, 1, getRandom(3), 9, 0);
-		if (_escPressed) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
+		if (_vm->_escPressed) {
 			return false;
 		}
 	}
 	++_startOawPos;
-	_sound->playSound("sv21.snd", 0);
+	_vm->_sound->playSound("sv21.snd", 0);
 
 	for (int i = 0; i < 3; ++i) {
-		sub2FEFB(1, 0, 1, getRandom(3), getRandom(11), 2);
-		waitSeconds(2);
-		if (_escPressed) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 2);
+		_vm->waitSeconds(2);
+		if (_vm->_escPressed) {
 			return false;
 		}
 	}
 
 	for (int i = 0; i < 3; ++i) {
 		for (int j = 0; j < 15; ++j) {
-			sub2FEFB(1, 0, 1, getRandom(3), 9, 0);
-			if (_escPressed) {
+			sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
+			if (_vm->_escPressed) {
 				return false;
 			}
 		}
@@ -735,42 +683,42 @@ bool WaynesWorldEngine::introPt4_caller1() {
 	}
 
 	for (int i = 0; i < 5; ++i) {
-		sub2FEFB(1, 0, 1, getRandom(3), getRandom(11), 2);
-		waitSeconds(2);
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 2);
+		_vm->waitSeconds(2);
 	}
-	_sound->playSound("sv29.snd", false);
+	_vm->_sound->playSound("sv29.snd", false);
 
 	for (int i = 0; i < 3; ++i) {
 		for (int j = 0; j < 10; ++j) {
-			sub2FEFB(1, 0, 1, getRandom(3), 9, 0);
-			if (_escPressed) {
+			sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
+			if (_vm->_escPressed) {
 				return false;
 			}
 		}
 		++_startOawPos;
 	}
 
-	if (_escPressed) {
+	if (_vm->_escPressed) {
 		return false;
 	}
 	return true;
 }
 
-bool WaynesWorldEngine::introPt4_caller2() {
+bool WWIntro_full::introPt4_caller2() {
 	for (int i = 0; i < 4; ++i) {
-		sub2FEFB(1, 0, 1, getRandom(3), getRandom(11), 2);
-		waitSeconds(2);
-		if (_escPressed) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 2);
+		_vm->waitSeconds(2);
+		if (_vm->_escPressed) {
 			return false;
 		}
 		if (i == 2)
-			_sound->playSound("sv19.snd", false);
+			_vm->_sound->playSound("sv19.snd", false);
 	}
 
 	for (int i = 0; i < 4; ++i) {
 		for (int j = 0; j < 10; ++j) {
-			sub2FEFB(1, 0, 1, 0, getRandom(11), 1);
-			if (_escPressed) {
+			sub2FEFB(1, 0, 1, 0, _vm->getRandom(11), 1);
+			if (_vm->_escPressed) {
 				return false;
 			}
 		}
@@ -778,133 +726,133 @@ bool WaynesWorldEngine::introPt4_caller2() {
 	}
 
 	for (int i = 0; i < 4; ++i) {
-		sub2FEFB(1, 0, 1, getRandom(3), getRandom(11), 2);
-		waitSeconds(2);
-		if (_escPressed) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 2);
+		_vm->waitSeconds(2);
+		if (_vm->_escPressed) {
 			return false;
 		}
 	}
 
 	for (int j = 0; j < 10; ++j) {
-		sub2FEFB(1, 0, 1, getRandom(3), 9, 0);
-		if (_escPressed) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
+		if (_vm->_escPressed) {
 			return false;
 		}
 	}
 	++_startOawPos;
 
-	sub2FEFB(1, 0, 1, getRandom(3), getRandom(11), 2);
-	waitSeconds(2);
-	if (_escPressed) {
+	sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 2);
+	_vm->waitSeconds(2);
+	if (_vm->_escPressed) {
 		return false;
 	}
 
 	for (int i = 0; i < 3; ++i) {
 		for (int j = 0; j < 10; ++j) {
-			sub2FEFB(1, 0, 1, 0, getRandom(11), 1);
-			if (_escPressed) {
+			sub2FEFB(1, 0, 1, 0, _vm->getRandom(11), 1);
+			if (_vm->_escPressed) {
 				return false;
 			}
 		}
 		++_startOagPos;
 	}
-	_sound->playSound("sv21.snd", false);
+	_vm->_sound->playSound("sv21.snd", false);
 
 	for (int i = 0; i < 2; ++i) {
-		sub2FEFB(1, 0, 1, getRandom(3), getRandom(11), 2);
-		waitSeconds(2);
-		if (_escPressed) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 2);
+		_vm->waitSeconds(2);
+		if (_vm->_escPressed) {
 			return false;
 		}
 	}
-	_sound->playSound("sv15.snd", false);
+	_vm->_sound->playSound("sv15.snd", false);
 
 	for (int j = 0; j < 10; ++j) {
-		sub2FEFB(1, 0, 1, getRandom(3), 9, 0);
-		if (_escPressed) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
+		if (_vm->_escPressed) {
 			return false;
 		}
 	}
 	++_startOawPos;
 
 	for (int i = 0; i < 4; ++i) {
-		sub2FEFB(1, 0, 1, getRandom(3), getRandom(11), 2);
-		waitSeconds(2);
-		if (_escPressed) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 2);
+		_vm->waitSeconds(2);
+		if (_vm->_escPressed) {
 			return false;
 		}
 	}
-	_sound->playSound("sv30.snd", false);
+	_vm->_sound->playSound("sv30.snd", false);
 
 	for (int i = 0; i < 3; ++i) {
 		for (int j = 0; j < 10; ++j) {
-			sub2FEFB(1, 0, 1, 0, getRandom(11), 1);
-			if (_escPressed) {
+			sub2FEFB(1, 0, 1, 0, _vm->getRandom(11), 1);
+			if (_vm->_escPressed) {
 				return false;
 			}
 		}
 		++_startOagPos;
 	}
-	_sound->playSound("sv22.snd", false);
+	_vm->_sound->playSound("sv22.snd", false);
 
 	for (int i = 0; i < 2; ++i) {
 		for (int j = 0; j < 10; ++j) {
-			sub2FEFB(1, 0, 1, getRandom(3), 9, 0);
-			if (_escPressed) {
+			sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
+			if (_vm->_escPressed) {
 				return false;
 			}
 		}
 		++_startOawPos;
 	}
 
-	if (_escPressed) {
+	if (_vm->_escPressed) {
 		return false;
 	}
 	return true;
 }
 
-bool WaynesWorldEngine::introPt4_caller3() {
+bool WWIntro_full::introPt4_caller3() {
 	for (int i = 0; i < 5; ++i) {
-		sub2FEFB(1, 0, 1, getRandom(3), getRandom(11), 2);
-		waitSeconds(3);
-		if (_escPressed) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 2);
+		_vm->waitSeconds(3);
+		if (_vm->_escPressed) {
 			return false;
 		}
 	}
 
 	for (int i = 0; i < 10; ++i) {
-		sub2FEFB(1, 0, 1, getRandom(3), 9, 0);
-		if (_escPressed) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
+		if (_vm->_escPressed) {
 			return false;
 		}
 	}
 	++_startOawPos;
 
 	for (int i = 0; i < 5; ++i) {
-		sub2FEFB(1, 0, 1, getRandom(3), getRandom(11), 0);
-		if (_escPressed) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 0);
+		if (_vm->_escPressed) {
 			return false;
 		}
 	}
 	++_startOawPos;
 	++_startOagPos;
-	_sound->playSound("sv46.snd", true);
+	_vm->_sound->playSound("sv46.snd", true);
 
 	for (int j = 0; j < 2; ++j) {
 		for (int i = 0; i < 15; ++i) {
-			sub2FEFB(1, 0, 1, getRandom(3), 9, 0);
-			if (_escPressed) {
+			sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
+			if (_vm->_escPressed) {
 				return false;
 			}
 		}
 		++_startOawPos;
 	}
 
-	_sound->playSound("sv31.snd", false);
+	_vm->_sound->playSound("sv31.snd", false);
 
 	for (int i = 0; i < 5; ++i) {
-		sub2FEFB(1, 0, 1, getRandom(3), getRandom(11), 0);
-		if (_escPressed) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 0);
+		if (_vm->_escPressed) {
 			return false;
 		}
 	}
@@ -913,27 +861,27 @@ bool WaynesWorldEngine::introPt4_caller3() {
 	++_startOagPos;
 
 	for (int i = 0; i < 2; ++i) {
-		sub2FEFB(1, 0, 1, getRandom(3), getRandom(11), 2);
-		waitSeconds(2);
-		if (_escPressed) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 2);
+		_vm->waitSeconds(2);
+		if (_vm->_escPressed) {
 			return false;
 		}
 	}
 
 	for (int j = 0; j < 4; ++j) {
 		for (int i = 0; i < 15; ++i) {
-			sub2FEFB(1, 0, 1, getRandom(3), 9, 0);
-			if (_escPressed) {
+			sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
+			if (_vm->_escPressed) {
 				return false;
 			}
 		}
 		++_startOawPos;
 	}
-	_sound->playSound("sv39.snd", false);
+	_vm->_sound->playSound("sv39.snd", false);
 
 	for (int i = 0; i < 8; ++i) {
-		sub2FEFB(1, 0, 1, getRandom(3), getRandom(11), 0);
-		if (_escPressed) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 0);
+		if (_vm->_escPressed) {
 			return false;
 		}
 	}
@@ -943,26 +891,26 @@ bool WaynesWorldEngine::introPt4_caller3() {
 	return true;
 }
 
-bool WaynesWorldEngine::introPt4_caller4() {
+bool WWIntro_full::introPt4_caller4() {
 	for (int j = 0; j < 2; ++j) {
 		for (int i = 0; i < 15; ++i) {
-			sub2FEFB(1, 0, 1, getRandom(3), 9, 0);
-			if (_escPressed) {
+			sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
+			if (_vm->_escPressed) {
 				return false;
 			}
 		}
 		++_startOawPos;
 	}
 
-	sub2FEFB(1, 0, 1, getRandom(3), getRandom(11), 2);
-	waitSeconds(2);
-	if (_escPressed) {
+	sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 2);
+	_vm->waitSeconds(2);
+	if (_vm->_escPressed) {
 		return false;
 	}
 
 	for (int i = 0; i < 15; ++i) {
-		sub2FEFB(1, 0, 1, getRandom(3), 9, 0);
-		if (_escPressed) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
+		if (_vm->_escPressed) {
 			return false;
 		}
 	}
@@ -970,68 +918,68 @@ bool WaynesWorldEngine::introPt4_caller4() {
 
 	for (int j = 0; j < 2; ++j) {
 		for (int i = 0; i < 15; ++i) {
-			sub2FEFB(1, 0, 1, 0, getRandom(11), 1);
-			if (_escPressed) {
+			sub2FEFB(1, 0, 1, 0, _vm->getRandom(11), 1);
+			if (_vm->_escPressed) {
 				return false;
 			}
 		}
 		++_startOagPos;
 	}
 
-	_sound->playSound("sv37.snd", true);
-	_sound->playSound("sv24.snd", true);
+	_vm->_sound->playSound("sv37.snd", true);
+	_vm->_sound->playSound("sv24.snd", true);
 
 	for (int i = 0; i < 15; ++i) {
-		sub2FEFB(1, 0, 1, getRandom(3), 9, 0);
-		if (_escPressed) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
+		if (_vm->_escPressed) {
 			return false;
 		}
 	}
 	++_startOawPos;
 
-	sub2FEFB(1, 0, 1, getRandom(3), getRandom(11), 2);
-	waitSeconds(2);
-	if (_escPressed) {
+	sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 2);
+	_vm->waitSeconds(2);
+	if (_vm->_escPressed) {
 		return false;
 	}
 
-	_sound->playSound("sv06.snd", false);
+	_vm->_sound->playSound("sv06.snd", false);
 
 	for (int i = 0; i < 3; ++i) {
-		sub2FEFB(1, 0, 1, getRandom(3), 9, 0);
-		if (_escPressed) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
+		if (_vm->_escPressed) {
 			return false;
 		}
 	}
 	++_startOawPos;
 
 	for (int i = 0; i < 2; ++i) {
-		sub2FEFB(1, 0, 1, getRandom(3), getRandom(11), 2);
-		waitSeconds(2);
-		if (_escPressed) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 2);
+		_vm->waitSeconds(2);
+		if (_vm->_escPressed) {
 			return false;
 		}
 	}
-	_sound->playSound("sv32.snd", false);
+	_vm->_sound->playSound("sv32.snd", false);
 
 	for (int i = 0; i < 5; ++i) {
-		sub2FEFB(1, 0, 1, 0, getRandom(11), 1);
-		if (_escPressed) {
+		sub2FEFB(1, 0, 1, 0, _vm->getRandom(11), 1);
+		if (_vm->_escPressed) {
 			return false;
 		}
 	}
 	++_startOagPos;
 
-	sub2FEFB(1, 0, 1, getRandom(3), getRandom(11), 2);
-	waitSeconds(1);
-	if (_escPressed) {
+	sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 2);
+	_vm->waitSeconds(1);
+	if (_vm->_escPressed) {
 		return false;
 	}
 
 	for (int j = 0; j < 3; ++j) {
 		for (int i = 0; i < 8; ++i) {
-			sub2FEFB(1, 0, 1, getRandom(3), 9, 0);
-			if (_escPressed) {
+			sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
+			if (_vm->_escPressed) {
 				return false;
 			}
 		}
@@ -1039,48 +987,48 @@ bool WaynesWorldEngine::introPt4_caller4() {
 	}
 
 	for (int i = 0; i < 8; ++i) {
-		sub2FEFB(1, 0, 1, getRandom(3), getRandom(11), 2);
-		waitSeconds(2);
-		if (_escPressed) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 2);
+		_vm->waitSeconds(2);
+		if (_vm->_escPressed) {
 			return false;
 		}
 	}
 
-	_sound->playSound("sv18.snd", false);
+	_vm->_sound->playSound("sv18.snd", false);
 
 	for (int i = 0; i < 8; ++i) {
-		sub2FEFB(1, 0, 1, getRandom(3), 9, 0);
-		if (_escPressed) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
+		if (_vm->_escPressed) {
 			return false;
 		}
 	}
 	++_startOawPos;
 
 	for (int i = 0; i < 6; ++i) {
-		sub2FEFB(1, 0, 1, getRandom(3), getRandom(11), 2);
-		waitSeconds(2);
-		if (_escPressed) {
+		sub2FEFB(1, 0, 1, _vm->getRandom(3), _vm->getRandom(11), 2);
+		_vm->waitSeconds(2);
+		if (_vm->_escPressed) {
 			return false;
 		}
 	}
 
-	_sound->playSound("sv45.snd", true);
+	_vm->_sound->playSound("sv45.snd", true);
 
 	for (int j = 0; j < 3; ++j) {
 		for (int i = 0; i < 8; ++i) {
-			sub2FEFB(1, 0, 1, getRandom(3), 9, 0);
-			if (_escPressed) {
+			sub2FEFB(1, 0, 1, _vm->getRandom(3), 9, 0);
+			if (_vm->_escPressed) {
 				return false;
 			}
 		}
 		++_startOawPos;
 	}
 
-	_sound->playSound("sv34.snd", false);
+	_vm->_sound->playSound("sv34.snd", false);
 
 	for (int i = 0; i < 5; ++i) {
-		sub2FEFB(1, 0, 1, 0, getRandom(11), 1);
-		if (_escPressed) {
+		sub2FEFB(1, 0, 1, 0, _vm->getRandom(11), 1);
+		if (_vm->_escPressed) {
 			return false;
 		}
 	}
@@ -1089,9 +1037,9 @@ bool WaynesWorldEngine::introPt4_caller4() {
 	return true;
 }
 
-void WaynesWorldEngine::introPt4_cleanup() {
-	delete _fontWW;
-	_fontWW = nullptr;
+void WWIntro_full::introPt4_cleanup() {
+	delete _vm->_fontWW;
+	_vm->_fontWW = nullptr;
 	delete _introBackg1Image;
 	_introBackg1Image = nullptr;
 	for (int i = 0; i < 5; ++i) {
@@ -1110,15 +1058,15 @@ void WaynesWorldEngine::introPt4_cleanup() {
 	}
 }
 
-bool WaynesWorldEngine::introPt4_playGuitar() {
+bool WWIntro_full::introPt4_playGuitar() {
 	sub2FEFB(1, 1, 1, 0, 9, -1);
 	sub2FEFB(1, 2, 1, 0, 9, -1);
 	sub2FEFB(1, 3, 1, 0, 9, -1);
 	sub2FEFB(1, 4, 1, 0, 9, -1);
 
-	_midi->stopSong();
+	_vm->_midi->stopSong();
 
-	if (_escPressed) {
+	if (_vm->_escPressed) {
 		return false;
 	}
 




More information about the Scummvm-git-logs mailing list