[Scummvm-git-logs] scummvm master -> 607ad5bab5d670e5d6d9aefa99edc0266f732a14

Strangerke noreply at scummvm.org
Mon Apr 20 10:44:40 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:
607ad5bab5 WAYNESWORLD: Implement 2nd demo (selectware)


Commit: 607ad5bab5d670e5d6d9aefa99edc0266f732a14
    https://github.com/scummvm/scummvm/commit/607ad5bab5d670e5d6d9aefa99edc0266f732a14
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2026-04-20T12:39:02+02:00

Commit Message:
WAYNESWORLD: Implement 2nd demo (selectware)

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


diff --git a/engines/waynesworld/waynesworld.cpp b/engines/waynesworld/waynesworld.cpp
index 313c6c3e95f..6fa82f049ed 100644
--- a/engines/waynesworld/waynesworld.cpp
+++ b/engines/waynesworld/waynesworld.cpp
@@ -185,6 +185,9 @@ Common::Error WaynesWorldEngine::run() {
 		intro->runIntro();
 		delete intro;
 		intro = nullptr;
+
+		if (_gameDescription->flags & ADGF_DEMO)
+			return Common::kNoError;
 	}
 
 	_introOngoing = false;
diff --git a/engines/waynesworld/wwintro.h b/engines/waynesworld/wwintro.h
index 67fb8f2e5e8..ab707611d67 100644
--- a/engines/waynesworld/wwintro.h
+++ b/engines/waynesworld/wwintro.h
@@ -126,6 +126,7 @@ public:
 
 private:
 	bool introPt1();
+	bool introPt1_selectware();
 	bool introPt3();
 	bool introPt3Bis();
 	bool introDisplaySign();
diff --git a/engines/waynesworld/wwintro_demo1.cpp b/engines/waynesworld/wwintro_demo1.cpp
index 6099db7c310..94a55d8a76a 100644
--- a/engines/waynesworld/wwintro_demo1.cpp
+++ b/engines/waynesworld/wwintro_demo1.cpp
@@ -38,8 +38,14 @@ 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();
 
-	if (continueFl)
-		continueFl = introPt1();
+	if (continueFl) {
+		Common::File f;
+
+		if (f.exists("capspin.gxl"))
+			continueFl = introPt1();
+		else
+			continueFl = introPt1_selectware();
+	}
 	if (continueFl)
 		continueFl = introPt3();
 	if (continueFl)
@@ -198,6 +204,55 @@ bool WWIntro_demo1::introPt1() {
 	return true;
 }
 
+bool WWIntro_demo1::introPt1_selectware() {
+	GxlArchive *capGxl = new GxlArchive("cap");
+	_vm->paletteFadeOut(0, 256, 64);
+	_vm->_screen->clear(0);
+	_vm->loadPalette(capGxl, "paramnt.pcx");
+	_vm->paletteFadeOut(0, 256, 64);
+	_vm->_screen->clear(0);
+	_vm->drawImageToScreen(capGxl, "paramnt.pcx", 0, 0);
+	_vm->paletteFadeIn(0, 256, 3);
+	_vm->waitSeconds(1);
+
+	_vm->paletteFadeOut(0, 256, 3);
+	_vm->_screen->clear(0);
+	_vm->loadPalette(capGxl, "pyramid.pcx");
+	_vm->paletteFadeOut(0, 256, 64);
+	_vm->_screen->clear(0);
+	_vm->drawImageToScreen(capGxl, "pyramid.pcx", 58, 21);
+	_vm->paletteFadeIn(0, 256, 3);
+
+	// The original has all the frames hardcoded one after the other, I used a loop instead.
+	Frame animation[] = {
+		{"prestxt1.pcx", 40, 125, 60},
+		{"prestxt2.pcx", 40, 125, 60},
+		{"prestxt3.pcx", 40, 125, 60},
+		{"prestxt4.pcx", 40, 125, 60},
+		{"prestxt5.pcx", 40, 125, 60},
+		{"prestxt6.pcx", 40, 125, 60},
+		{"present1.pcx", 115, 156, 60},
+		{"present2.pcx", 115, 156, 60},
+		{"present3.pcx", 115, 156, 60},
+		{"present4.pcx", 115, 156, 60},
+		{"present5.pcx", 115, 156, 60},
+		{"present6.pcx", 115, 156, 60},
+		{"star1.pcx", 146, 17, 150},
+		{"star2.pcx", 146, 17, 150},
+		{"star3.pcx", 146, 17, 150},
+		{"star4.pcx", 146, 17, 150},
+		{"pyramid.pcx", 58, 21, 4250}
+	};
+
+	for (const Frame &frame : animation) {
+		_vm->drawImageToScreen(capGxl, frame.filename, frame.x, frame.y);
+		_vm->waitMillis(frame.delay);
+	}
+
+	delete capGxl;
+	return true;
+}
+
 bool WWIntro_demo1::introPt3() {
 	// sub1 - Parameter is always 'true' so it has been removed and the code simplified
 	_vm->paletteFadeOut(0, 256, 64);




More information about the Scummvm-git-logs mailing list