[Scummvm-git-logs] scummvm master -> 4e5a2432968fe91d1a854ccbc22bd325d08a3b29

Strangerke noreply at scummvm.org
Sun Apr 19 06:15:05 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:
4e5a243296 WAYNESWORLD: Finish the implementation of demo 1


Commit: 4e5a2432968fe91d1a854ccbc22bd325d08a3b29
    https://github.com/scummvm/scummvm/commit/4e5a2432968fe91d1a854ccbc22bd325d08a3b29
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2026-04-19T08:14:46+02:00

Commit Message:
WAYNESWORLD: Finish the implementation of demo 1

Changed paths:
    engines/waynesworld/wwintro.h
    engines/waynesworld/wwintro_demo1.cpp


diff --git a/engines/waynesworld/wwintro.h b/engines/waynesworld/wwintro.h
index 06d96b676cb..67fb8f2e5e8 100644
--- a/engines/waynesworld/wwintro.h
+++ b/engines/waynesworld/wwintro.h
@@ -140,6 +140,8 @@ private:
 	bool introPreviewRoom03and23();
 	bool introMapSouthEastArea();
 	bool introPreviewRoom13and18();
+	bool introMapWestAurora();
+	bool introPreviewRoom01();
 
 protected:
 	bool introPt4_intro() override;
diff --git a/engines/waynesworld/wwintro_demo1.cpp b/engines/waynesworld/wwintro_demo1.cpp
index f40ef208ba5..6099db7c310 100644
--- a/engines/waynesworld/wwintro_demo1.cpp
+++ b/engines/waynesworld/wwintro_demo1.cpp
@@ -37,7 +37,6 @@ WWIntro_demo1::~WWIntro_demo1() {
 void WWIntro_demo1::runIntro() {
 	// continueFl is used like in the full version, but for the moment it's not possible to skip (demo is not interactive)
 	bool continueFl = initOanGxl();
-	// continueFl = false; // For debug purposes
 
 	if (continueFl)
 		continueFl = introPt1();
@@ -52,9 +51,8 @@ void WWIntro_demo1::runIntro() {
 
 	if (continueFl)
 		continueFl = introDisplaySign();
-
-	introPreviewRoom00();
-
+	if (continueFl)
+		continueFl = introPreviewRoom00();
 	if (continueFl)
 		continueFl = introMapStonebridge();
 	if (continueFl)
@@ -68,12 +66,35 @@ void WWIntro_demo1::runIntro() {
 	if (continueFl)
 		continueFl = introPreviewRoom10();
 	if (continueFl)
-			continueFl = introMapNorthAurora();
+		continueFl = introMapNorthAurora();
 	if (continueFl)
 		continueFl = introPreviewRoom03and23();
+	if (continueFl)
+		continueFl = introMapSouthEastArea();
+	if (continueFl)
+		continueFl = introPreviewRoom13and18();
+	if (continueFl)
+		continueFl = introMapWestAurora();
+
+	if (continueFl)
+		continueFl = introPreviewRoom01();
+
+	if (continueFl) {
+		_oanGxl = new GxlArchive("oan");
+		_vm->loadPalette(_oanGxl, "backg2.pcx");
+		while (_vm->_sound->isSFXPlaying())
+			_vm->waitMillis(30);
+		_vm->stopMusic();
+
+		introPt3();
 
-	introMapSouthEastArea();
-	introPreviewRoom13and18();
+		_vm->paletteFadeOut(0, 256, 4);
+		_vm->_screen->clear(0);
+		while (_vm->_sound->isSFXPlaying())
+			_vm->waitMillis(30);
+
+		delete _oanGxl;
+	}
 }
 
 bool WWIntro_demo1::introPt1() {
@@ -1064,4 +1085,98 @@ bool WWIntro_demo1::introPreviewRoom13and18() {
 	return true;
 }
 
+bool WWIntro_demo1::introMapWestAurora() {
+	GxlArchive *m02Gxl = new GxlArchive("m02");
+
+	WWSurface *zmPcx[12] = {nullptr};
+	for (int i = 0; i < 12; ++i) {
+		zmPcx[i] = new WWSurface(137, 109);
+		Common::String filename = Common::String::format("wa_zm%d.pcx", i);
+		_vm->drawImageToSurface(m02Gxl, filename.c_str(), zmPcx[i], 0, 0);
+	}
+
+	_vm->paletteFadeOut(0, 256, 4);
+	_vm->_screen->clear(0);
+	_vm->drawImageToScreen(m02Gxl, "main_map.pcx", 0, 0);
+	_vm->paletteFadeIn(0, 256, 4);
+	_vm->drawImageToScreen(m02Gxl, "wa_tag.pcx", 56, 87);
+	_vm->waitSeconds(1);
+	while (_vm->_sound->isSFXPlaying())
+		_vm->waitMillis(10);
+	_vm->playSound("flash-bk.abt", false);
+
+	for (int i = 1; i < 12; ++i) {
+		_vm->_screen->drawSurface(zmPcx[i], 34, 32);
+		_vm->waitMillis(75);
+	}
+
+	_vm->drawImageToScreen(m02Gxl, "inv_tag.pcx", 49, 52);
+	_vm->drawImageToScreen(m02Gxl, "don_tag.pcx", 120, 47);
+	_vm->drawImageToScreen(m02Gxl, "way_tag.pcx", 73, 86);
+	_vm->waitSeconds(4);
+
+	for (int i = 0; i < 12; ++i)
+		delete zmPcx[i];
+
+	delete m02Gxl;
+
+	return true;
+}
+
+bool WWIntro_demo1::introPreviewRoom01() {
+	GxlArchive *r01Gxl = new GxlArchive("r01");
+	GxlArchive *m00Gxl = new GxlArchive("m00");
+
+	WWSurface *r01Term[10] = {nullptr};
+	for (int i = 0; i < 10; ++i) { // The demo has a bug, it stops the initialization at 8 instead of 9, so the last frame is thrown uninitialized
+		r01Term[i] = new WWSurface(42, 25);
+		Common::String filename = Common::String::format("term%d.pcx", i);
+		_vm->drawImageToSurface(r01Gxl, filename.c_str(), r01Term[i], 0, 0);
+	}
+
+	WWSurface *r01Screen[6] = {nullptr};
+	for (int i = 0; i < 6; ++i) {
+		r01Screen[i] = new WWSurface(41, 49);
+		Common::String filename = Common::String::format("screen%d.pcx", i);
+		_vm->drawImageToSurface(r01Gxl, filename.c_str(), r01Screen[i], 0, 0);
+	}
+
+	_vm->paletteFadeOut(0, 256, 4);
+	_vm->_screen->clear(0);
+	_vm->drawImageToScreen(r01Gxl, "backg.pcx", 0, 0);
+	_vm->drawImageToScreen(m00Gxl, "ginter.pcx", 0, 151);
+	_vm->paletteFadeIn(0, 256, 3);
+	while (_vm->_sound->isSFXPlaying())
+		_vm->waitMillis(10);
+	_vm->playSound("hello.abt", false);
+
+	for (int i = 0; i < 5; ++i) {
+		for (int j = 0; j < 10; ++j) {
+			_vm->_screen->drawSurface(r01Term[j], 270, 47);
+			_vm->waitMillis(75);
+		}
+	}
+
+	for (int i = 0; i < 6; ++i) {
+		_vm->_screen->drawSurface(r01Screen[i], 118, 53);
+		_vm->waitMillis(75);
+	}
+
+	for (int i = 0; i < 6; ++i)
+		delete r01Screen[i];
+	for (int i = 0; i < 9; ++i)
+		delete r01Term[i];
+
+	_vm->waitSeconds(3);
+	_vm->playSound("goodnite.abt", false);
+
+	_vm->paletteFadeOut(0, 256, 4);
+	_vm->_screen->clear(0);
+
+	delete m00Gxl;
+	delete r01Gxl;
+
+	return true;
+}
+
 } // End of namespace WaynesWorld




More information about the Scummvm-git-logs mailing list