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

Strangerke noreply at scummvm.org
Thu Mar 26 00:45:24 UTC 2026


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

Summary:
e24b0ae0aa WAYNESWORLD: Implement handlePizzathon(), hook it in gameMapOpen as well as the check on r38_flags which was disabled
d18948b366 WAYNESWORLD: Implement handleHypnosisCutscene used in handlePizzathon()


Commit: e24b0ae0aaab5c132793ba6b38842e019c5b3652
    https://github.com/scummvm/scummvm/commit/e24b0ae0aaab5c132793ba6b38842e019c5b3652
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2026-03-26T00:52:03+01:00

Commit Message:
WAYNESWORLD: Implement handlePizzathon(), hook it in gameMapOpen as well as the check on r38_flags which was disabled

Changed paths:
    engines/waynesworld/gamelogic.cpp
    engines/waynesworld/gamelogic.h
    engines/waynesworld/gamemap.cpp


diff --git a/engines/waynesworld/gamelogic.cpp b/engines/waynesworld/gamelogic.cpp
index 20fd60a7dbd..fd05acac52a 100644
--- a/engines/waynesworld/gamelogic.cpp
+++ b/engines/waynesworld/gamelogic.cpp
@@ -8500,6 +8500,99 @@ void GameLogic::r38_atrap() {
 	_r38_flags |= 0x02;
 }
 
+void GameLogic::handlePizzathon() {
+	_vm->openAlternateRoomLibrary("e00");
+	_vm->_screen->clear(0);
+
+	// The list is complete, let's start the pizzathon
+	_vm->drawRoomImageToScreen("text.pcx", 44, 77);
+	_vm->paletteFadeIn(0, 256, 8);
+	_vm->waitSeconds(5);
+
+	_vm->paletteFadeOut(0, 256, 8);
+	_vm->drawRoomImageToScreen("backgb.pcx", 0, 0);
+
+	_vm->_musicIndex = 1;
+	_vm->changeMusic();
+	_vm->paletteFadeIn(0, 256, 4);
+
+	WWSurface *backSprite = new WWSurface(156, 96);
+
+	// show phone center + phone animation on upper left
+	_vm->drawImageToSurface(_vm->_roomGxl, "backul.pcx", backSprite, 0, 0);
+	_vm->drawSpiralEffect(backSprite, 2, 2, 2, 2);
+	delete backSprite;
+
+	_vm->playAnimation("phone", 1, 12, 2, 14, 0, 125);
+
+	// show bike delivery + bike animation on lower right
+	backSprite = new WWSurface(156, 96);
+	_vm->drawImageToSurface(_vm->_roomGxl, "backlr.pcx", backSprite, 0, 0);
+	_vm->drawSpiralEffect(backSprite, 162, 102, 2, 2);
+	delete backSprite;
+
+	for (int i = 1; i < 3; ++i) {
+		_vm->playAnimation("bike", 1, 4, 211, 104, 0, 100);
+	}
+
+	// show board + animation on lower left
+	backSprite = new WWSurface(156, 96);
+	_vm->drawImageToSurface(_vm->_roomGxl, "backll.pcx", backSprite, 0, 0);
+	_vm->drawSpiralEffect(backSprite, 2, 102, 2, 2);
+	delete backSprite;
+
+	_vm->playAnimation("board", 1, 4, 13, 127, 0, 100);
+	_vm->waitSeconds(1);
+
+	// show band + animation on upper right
+	backSprite = new WWSurface(156, 96);
+	_vm->drawImageToSurface(_vm->_roomGxl, "backur.pcx", backSprite, 0, 0);
+	_vm->drawSpiralEffect(backSprite, 162, 2, 2, 2);
+	delete backSprite;
+
+	for (int i = 1; i < 3; ++i)
+		_vm->playAnimation("band", 1, 4, 162, 44, 0, 125);
+
+	_vm->playAnimation("board", 5, 2, 13, 127, 0, 150);
+	_vm->playAnimation("phone", 1, 12, 2, 14, 0, 125);
+	_vm->playAnimation("board", 7, 2, 13, 127, 0, 150);
+
+	for (int i = 1; i < 3; ++i)
+		_vm->playAnimation("bike", 1, 4, 211, 104, 0, 100);
+
+	for (int i = 1; i < 3; ++i)
+		_vm->playAnimation("band", 1, 4, 162, 44, 0, 125);
+
+	_vm->playAnimation("board", 9, 2, 13, 127, 0, 150);
+
+	for (int i = 1; i < 3; ++i)
+		_vm->playAnimation("bike", 1, 4, 211, 104, 0, 100);
+
+	_vm->playAnimation("board", 11, 2, 13, 127, 0, 150);
+	_vm->playSound("ss41.snd", false);
+
+	for (int i = 1; i < 10; ++i)
+		_vm->playAnimation("board", 12, 2, 13, 127, 0, 150);
+
+	_vm->playAnimation("board", 13, 1, 13, 127, 0, 150);
+	_vm->waitSeconds(2);
+
+	warning("TODO sub_51875();");
+
+	_vm->paletteFadeOut(0, 256, 4);
+	_vm->_screen->clear(0);
+
+	 // set 8, reset 4
+	_pizzathonListFlags2 |= 8;
+	_pizzathonListFlags2 &= 0xFB;
+
+	_vm->setWaynePosition(113, 120);
+	_vm->setGarthPosition(131, 112);
+	_vm->_isTextVisible = false;
+
+	_vm->changeRoom(13);	
+}
+
 void GameLogic::r38_useCassandra() {
 	_vm->moveObjectToNowhere(kObjectIdCassandra);
 	_vm->setStaticRoomObjectPosition(38, 1, 1, -1, 72);
diff --git a/engines/waynesworld/gamelogic.h b/engines/waynesworld/gamelogic.h
index 311a56ee868..99341739190 100644
--- a/engines/waynesworld/gamelogic.h
+++ b/engines/waynesworld/gamelogic.h
@@ -49,6 +49,8 @@ public:
 	int getActorScaleFromY(int actorY);
 	void setPizzathonStatus(int flagNum);
 	void r38_atrap();
+	void handlePizzathon();
+
 public:
 	byte _r0_flags;
 	int _r0_pizzathonChoiceCtr;
diff --git a/engines/waynesworld/gamemap.cpp b/engines/waynesworld/gamemap.cpp
index 9ae7ad19ee7..43f8ca9ab14 100644
--- a/engines/waynesworld/gamemap.cpp
+++ b/engines/waynesworld/gamemap.cpp
@@ -19,6 +19,7 @@
  *
  */
 
+#include "gamelogic.h"
 #include "waynesworld/waynesworld.h"
 #include "waynesworld/graphics.h"
 
@@ -100,26 +101,26 @@ void WaynesWorldEngine::gameMapOpen() {
     _garthSpriteX = -1;
     _currentMapItemIndex = -1;
     _isTextVisible = false;
-    /* TODO
-    if (_byte_3070D & 0x08) {
+
+	if (_logic->_r38_flags & 0x08) {
         setWaynePosition(243, 103);
         setGarthPosition(239, 95);
         changeRoom(8);
         return;
     }
-    */
-    // sysMouseDriver(2);
+
+	// sysMouseDriver(2);
     paletteFadeOut(0, 256, 16);
-    /* TODO
-    if ((_byte_306F4 & 0x04) && !(_byte_306F4 & 0x08)) {
-        // TODO sub_305E0();
+
+	if ((_logic->_pizzathonListFlags2 & 0x04) && !(_logic->_pizzathonListFlags2 & 0x08)) {
+		_logic->handlePizzathon();
         _gameState = 0;
         // sysMouseDriver(1);
         drawInterface(_verbNumber);
         paletteFadeIn(0, 256, 4);
         return;
     }
-    */
+
     _musicIndex = 2;
     changeMusic();
     _screen->clear(0);


Commit: d18948b3669846ec81f71bf6c04bfe168fa738ac
    https://github.com/scummvm/scummvm/commit/d18948b3669846ec81f71bf6c04bfe168fa738ac
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2026-03-26T01:45:02+01:00

Commit Message:
WAYNESWORLD: Implement handleHypnosisCutscene used in handlePizzathon()

Changed paths:
    engines/waynesworld/gamelogic.cpp
    engines/waynesworld/gamelogic.h


diff --git a/engines/waynesworld/gamelogic.cpp b/engines/waynesworld/gamelogic.cpp
index fd05acac52a..a07713e75ff 100644
--- a/engines/waynesworld/gamelogic.cpp
+++ b/engines/waynesworld/gamelogic.cpp
@@ -8577,7 +8577,7 @@ void GameLogic::handlePizzathon() {
 	_vm->playAnimation("board", 13, 1, 13, 127, 0, 150);
 	_vm->waitSeconds(2);
 
-	warning("TODO sub_51875();");
+	handleHypnosisCutscene();
 
 	_vm->paletteFadeOut(0, 256, 4);
 	_vm->_screen->clear(0);
@@ -8593,6 +8593,28 @@ void GameLogic::handlePizzathon() {
 	_vm->changeRoom(13);	
 }
 
+void GameLogic::handleHypnosisCutscene() {
+	WWSurface *sprite = new WWSurface(320, 200);
+	_vm->drawImageToSurface(_vm->_roomGxl, "spstart.pcx", sprite, 0, 0);
+	_vm->drawRandomEffect(sprite, 0, 0, 4, 4);
+	delete sprite;
+
+	for (int i = 0; i < 17; ++i) {
+		_vm->_screen->fillRect(0, 0, 319, 37, 0);
+		_vm->displayText("e00", i, 0, 156, 0, 0);
+		_vm->playAnimation("spiral", 0, 14, 77, 38, 0, 200);
+	}
+
+	for (int i = 0; i < 3; ++i) {
+		_vm->_screen->fillRect(0, 0, 319, 37, 0);
+		_vm->drawCurrentText(164, 170, nullptr);
+		_vm->playAnimation("spiral", 0, 15, 77, 38, 0, 100);
+		_vm->_screen->fillRect(0, 140, 319, 199, 0);
+		_vm->drawCurrentText(164, 0, nullptr);
+		_vm->playAnimation("spiral", 0, 15, 77, 38, 0, 100);
+	}
+}
+
 void GameLogic::r38_useCassandra() {
 	_vm->moveObjectToNowhere(kObjectIdCassandra);
 	_vm->setStaticRoomObjectPosition(38, 1, 1, -1, 72);
diff --git a/engines/waynesworld/gamelogic.h b/engines/waynesworld/gamelogic.h
index 99341739190..8c8dc31f945 100644
--- a/engines/waynesworld/gamelogic.h
+++ b/engines/waynesworld/gamelogic.h
@@ -50,6 +50,7 @@ public:
 	void setPizzathonStatus(int flagNum);
 	void r38_atrap();
 	void handlePizzathon();
+	void handleHypnosisCutscene();
 
 public:
 	byte _r0_flags;




More information about the Scummvm-git-logs mailing list