[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