[Scummvm-git-logs] scummvm master -> be2944fd25a256074634016c4b315ac41de48984

Strangerke noreply at scummvm.org
Fri Apr 17 07:17:48 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:
be2944fd25 WAYNESWORLD: Implement the 2nd WW Effect, the display sign animation, the preview of room 00 and a first occurrence of t


Commit: be2944fd25a256074634016c4b315ac41de48984
    https://github.com/scummvm/scummvm/commit/be2944fd25a256074634016c4b315ac41de48984
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2026-04-17T09:17:27+02:00

Commit Message:
WAYNESWORLD: Implement the 2nd WW Effect, the display sign animation, the preview of room 00 and a first occurrence of the map in demo1

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


diff --git a/engines/waynesworld/wwintro.cpp b/engines/waynesworld/wwintro.cpp
index 3076a8a46ff..f5de671d932 100644
--- a/engines/waynesworld/wwintro.cpp
+++ b/engines/waynesworld/wwintro.cpp
@@ -43,6 +43,11 @@ bool WWIntro::initOanGxl() {
 	return true;
 }
 
+void WWIntro::cleanOanGxl() {
+	delete _oanGxl;
+	_oanGxl = nullptr;
+}
+
 void WWIntro::wwEffect(int arg0, int arg1, bool flag) {
 	int xmult = 0;
 	int ymult = 0;
diff --git a/engines/waynesworld/wwintro.h b/engines/waynesworld/wwintro.h
index 7ca658f4bed..1556947d035 100644
--- a/engines/waynesworld/wwintro.h
+++ b/engines/waynesworld/wwintro.h
@@ -73,6 +73,7 @@ protected:
 
 
 	bool initOanGxl();
+	void cleanOanGxl();
 	void wwEffect(int arg0, int arg1, bool flag = false);
 	void setColor236(int index);
 	void sub2FEFB(int arg_refreshBackgFl, int arg_wBodyIndex, int arg_gBodyIndex, int arg_wHead1Index, int arg_gHead1Index, int arg_TextId);
@@ -104,8 +105,7 @@ public:
 private:
 	bool introPt1();
 	bool introPt3(bool flag);
-	void cleanOanGxl();
-	void introPt6();
+	void introDisplaySign();
 	void introPt7();
 
 protected:
@@ -127,6 +127,10 @@ public:
 private:
 	bool introPt1();
 	bool introPt3();
+	bool introPt3Bis();
+	bool introDisplaySign();
+	bool introPreviewRoom00();
+	bool introMapStonebridge();
 
 protected:
 	bool introPt4_intro() override;
diff --git a/engines/waynesworld/wwintro_demo1.cpp b/engines/waynesworld/wwintro_demo1.cpp
index 560f8998c06..197ac90f459 100644
--- a/engines/waynesworld/wwintro_demo1.cpp
+++ b/engines/waynesworld/wwintro_demo1.cpp
@@ -48,6 +48,16 @@ void WWIntro_demo1::runIntro() {
 	if (continueFl)
 		continueFl = introPt4();
 
+	if (continueFl)
+		continueFl = introPt3Bis();
+
+	cleanOanGxl();
+
+	if (continueFl)
+		continueFl = introDisplaySign();
+
+	introPreviewRoom00();
+	introMapStonebridge();
 }
 
 bool WWIntro_demo1::introPt1() {
@@ -192,6 +202,29 @@ bool WWIntro_demo1::introPt3() {
 	return true;
 }
 
+bool WWIntro_demo1::introPt3Bis() {
+	// sub1 - Parameter is always 'true' so it has been removed and the code simplified
+	introPt3_init();
+	// End of sub1
+	_vm->stopMusic();
+	_vm->playSound("theme1.snd", false);
+
+	wwEffect(1, 0);
+	wwEffect(1, 1);
+	wwEffect(1, 2);
+	wwEffect(1, 3);
+
+	for (int i = 0; i < 20; ++i) {
+		setColor236(i % 19);
+		wwEffect((i % 8) + 1, 4);
+	}
+
+	introPt3_clean();
+	_vm->waitSeconds(9);
+
+	return true;
+}
+
 void WWIntro_demo1::introPt4_init() {
 	_vm->_fontWW = new GFTFont();
 	_vm->_fontWW->loadFromFile("ww.gft");
@@ -550,4 +583,105 @@ bool WWIntro_demo1::introPt4_caller4() {
 	return true;
 }
 
+bool WWIntro_demo1::introDisplaySign() {
+	WWSurface *introPt6Surface[5] = {nullptr};
+
+	GxlArchive *signGxl = new GxlArchive("sign");
+	while (_vm->_sound->isSFXPlaying())
+		_vm->waitMillis(10);
+
+	for (int i = 0; i < 5; ++i) {
+		introPt6Surface[i] = new WWSurface(320, 200);
+		Common::String filename = Common::String::format("sign%d.pcx", i);
+		_vm->drawImageToSurface(signGxl, filename.c_str(), introPt6Surface[i], 0, 0);
+	}
+
+	_vm->_sound->playSound("ex-clsp2.snd", false);
+
+	for (int i = 0; i < 5; ++i) {
+		_vm->_screen->drawSurface(introPt6Surface[i], 0, 0);
+		_vm->waitMillis(150);
+	}
+
+	WWSurface *signBottomSurface = new WWSurface(320, 94);
+	_vm->drawImageToSurface(signGxl, "signbot.pcx", signBottomSurface, 0, 0);
+
+	_vm->waitSeconds(4);
+	_vm->_musicIndex = 1;
+	_vm->changeMusic();
+
+	WWSurface *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));
+		_vm->_screen->drawSurface(scrollSurface, 0, 0);
+	}
+
+	delete scrollSurface;
+	delete signBottomSurface;
+	for (int i = 0; i < 5; ++i)
+		delete introPt6Surface[i];
+
+	delete signGxl;
+
+	return true;
+}
+
+bool WWIntro_demo1::introPreviewRoom00() {
+	GxlArchive *r00Gxl = new GxlArchive("r00");
+	GxlArchive *m00Gxl = new GxlArchive("m00");
+
+	_vm->paletteFadeOut(0, 256, 64);
+	_vm->_screen->clear(0);
+	_vm->loadPalette(r00Gxl, "backg.pcx");
+	_vm->paletteFadeOut(0, 256, 64);
+	_vm->_musicIndex = 0;
+	_vm->changeMusic();
+	_vm->drawImageToScreen(r00Gxl, "backg.pcx", 0, 0);
+	_vm->drawImageToScreen(m00Gxl, "ginter.pcx", 0, 151);
+	_vm->paletteFadeIn(0, 256, 3);
+	_vm->waitSeconds(3);
+
+	delete m00Gxl;
+	delete r00Gxl;
+
+	return true;
+}
+
+bool WWIntro_demo1::introMapStonebridge() {
+	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("stn_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, "stn_tag.pcx", 173, 90);
+	_vm->playSound("flash-bk.abt", false);
+	_vm->waitSeconds(1);
+
+	for (int i = 0; i < 12; ++i) {
+		_vm->_screen->drawSurface(zmPcx[i], 173, 13);
+		_vm->waitMillis(75);
+	}
+
+	_vm->drawImageToScreen(m02Gxl, "may_tag.pcx", 193, 40);
+	_vm->drawImageToScreen(m02Gxl, "eug_tag.pcx", 241, 82);
+	_vm->waitSeconds(4);
+
+	for (int i = 0; i < 12; ++i)
+		delete zmPcx[i];
+
+	delete m02Gxl;
+
+	return true;
+}
+
 } // End of namespace WaynesWorld
diff --git a/engines/waynesworld/wwintro_full.cpp b/engines/waynesworld/wwintro_full.cpp
index ff54ae89d7b..bc977db975b 100644
--- a/engines/waynesworld/wwintro_full.cpp
+++ b/engines/waynesworld/wwintro_full.cpp
@@ -53,7 +53,7 @@ void WWIntro_full::runIntro() {
 	cleanOanGxl();
 
 	if (continueFl)
-		introPt6();
+		introDisplaySign();
 
 	introPt7();
 }
@@ -247,18 +247,11 @@ bool WWIntro_full::introPt3(bool flag) {
 	return true;
 }
 
-void WWIntro_full::cleanOanGxl() {
-	delete _oanGxl;
-	_oanGxl = nullptr;
-}
-
-void WWIntro_full::introPt6() {
+void WWIntro_full::introDisplaySign() {
 	WWSurface *introPt6Surface[5] = {nullptr};
 	WWSurface *signBottomSurface = nullptr;
 	WWSurface *scrollSurface = nullptr;
 
-	_vm->_escPressed = false;
-
 	while (_vm->_sound->isSFXPlaying())
 		_vm->waitMillis(10);
 




More information about the Scummvm-git-logs mailing list