[Scummvm-git-logs] scummvm master -> bd2bb0aa1503472c5aa39073b0af7b7fa444e4b4
sev-
noreply at scummvm.org
Sun Mar 22 19:38:26 UTC 2026
This automated email contains information about 9 new commits which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
afd9e96d11 WAYNESWORLD: Janitorial - Remove trailing spaces
e02e7636f2 WAYNESWORLD: Janitorial - Add a description to detection entry, reorder items in gamelogic.h and some other small detail
635b79a28c WAYNESWORLD: Add detection to 2 non interactive demos
48985b8ac9 WAYNESWORLD: Fix "save" behavior using ScummVM menus
f4d4400da2 WAYNESWORLD: Removed the extra description "CD Version" after robertmegone showed the content was the same as the 5.25 f
5adae56d34 WAYNESWORLD: Fix ghost lines in some discussions (lilke when buying the scratch'n'win ticket with Garth)
30cc1eb57d WAYNESWORLD: Fix crash when buying gum - The original is failing to display frame 3 and skipping frame 5 which doesn't e
b317fa8dc3 WAYNESWORLD: Make it possible to have an unused ticket in the inventory by moving the mouse cursor out of the ticket are
bd2bb0aa15 WAYNESWORLD: implement r5_handleCassandra
Commit: afd9e96d11e2a4a72ee227a22887d768a5b14b3d
https://github.com/scummvm/scummvm/commit/afd9e96d11e2a4a72ee227a22887d768a5b14b3d
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2026-03-22T20:38:15+01:00
Commit Message:
WAYNESWORLD: Janitorial - Remove trailing spaces
Changed paths:
engines/waynesworld/gamelogic.cpp
engines/waynesworld/graphics.cpp
engines/waynesworld/gxlarchive.cpp
engines/waynesworld/intro.cpp
engines/waynesworld/metaengine.cpp
engines/waynesworld/pathfinding.cpp
engines/waynesworld/sound.cpp
engines/waynesworld/waynesworld.cpp
engines/waynesworld/waynesworld.h
diff --git a/engines/waynesworld/gamelogic.cpp b/engines/waynesworld/gamelogic.cpp
index 0844eb295cf..b59c0d25335 100644
--- a/engines/waynesworld/gamelogic.cpp
+++ b/engines/waynesworld/gamelogic.cpp
@@ -1394,7 +1394,7 @@ void GameLogic::r0_handleRoomEvent1() {
_vm->drawImageToSurface(m04Gxl, "menu.pcx", _menuSurface, 113, 20);
_menuOffSprite = m04Gxl->loadSurface("ff.pcx");
_menuOnSprite = m04Gxl->loadSurface("n.pcx");
-
+
menuDrawSoundEnabled();
menuDrawMusicEnabled();
// sysMouseDriver(1);
@@ -6159,7 +6159,7 @@ void GameLogic::r24_climbLadder(int wayneX, int wayneLadderX, int wayneLadderY,
WWSurface *gclimbSprites[4];
WWSurface *getladSprites[3];
GxlArchive *roomLib = _vm->_roomGxl;
-
+
for (int index = 0; index < 4; index++) {
tempFilename = Common::String::format("wclimb%d", index);
wclimbSprites[index] = roomLib->loadRoomSurface(tempFilename.c_str());
@@ -6258,7 +6258,7 @@ void GameLogic::r24_handleRoomEvent(int wayneLadderX, int wayneX, int wayneLadde
WWSurface *gclimbSprites[4];
WWSurface *getladSprites[3];
GxlArchive *roomLib = _vm->_roomGxl;
-
+
for (int index = 0; index < 4; index++) {
tempFilename = Common::String::format("wclimb%d", index);
wclimbSprites[index] = roomLib->loadRoomSurface(tempFilename.c_str());
@@ -7025,7 +7025,7 @@ void GameLogic::r31_handleRoomEvent4() {
r31_correctAnswerSelected();
}
}
-
+
r31_runBabeoff();
}
@@ -7631,7 +7631,7 @@ int GameLogic::r35_handleVerbUse() {
default:
actionTextIndex = 0;
break;
- }
+ }
return actionTextIndex;
}
@@ -7951,7 +7951,7 @@ void GameLogic::r37_climbExitLadderUp() {
tempFilename = Common::String::format("wgetldr%d", index);
getldrSprites[index] = roomLib->loadRoomSurface(tempFilename.c_str());
}
-
+
WWSurface *workBackground = new WWSurface(320, 150);
for (int index = 0; index < 3; index++) {
@@ -7965,7 +7965,7 @@ void GameLogic::r37_climbExitLadderUp() {
for (int index = 0; index < 3; index++) {
delete getldrSprites[index];
}
-
+
for (int index = 0; index < 4; index++) {
tempFilename = Common::String::format("gclimb%d", index);
gclimbSprites[index] = roomLib->loadRoomSurface(tempFilename.c_str());
@@ -8046,7 +8046,7 @@ void GameLogic::r37_climbLadderDown() {
int wayneLadderY = 26;
int climbCtr = 0, garthLadderY = wayneLadderY;
-
+
while (garthLadderY < 92) {
if (climbCtr % 2 == 0) {
wayneLadderY += 7;
@@ -8061,7 +8061,7 @@ void GameLogic::r37_climbLadderDown() {
workBackground->drawSurfaceTransparent(ggetldlSprites[climbCtr - 12], 168, 26);
} else {
workBackground->drawSurfaceTransparent(gclimbSprites[climbCtr % 4], 187, garthLadderY);
- }
+ }
if (climbCtr < 20) {
workBackground->drawSurfaceTransparent(wclimbSprites[climbCtr % 4], 187, wayneLadderY);
} else if (climbCtr <= 22) {
@@ -8185,7 +8185,7 @@ void GameLogic::r37_climbLadderUp() {
workBackground->drawSurfaceTransparent(ggetldlSprites[index], 168, 28);
workBackground->drawSurfaceTransparent(_vm->_wayneSprites[0], 155, 26);
_vm->_screen->drawSurface(workBackground, 0, 0);
- _vm->waitMillis(200);
+ _vm->waitMillis(200);
}
for (int index = 0; index < 4; index++) {
@@ -8339,7 +8339,7 @@ void GameLogic::r37_climbEnterLadderDown() {
}
delete workBackground;
-
+
_vm->setWaynePosition(163, 70);
_vm->setGarthPosition(138, 75);
_vm->refreshActors();
@@ -8509,7 +8509,7 @@ int GameLogic::r39_handleVerbUse() {
return actionTextIndex;
}
-int GameLogic::r39_handleVerbOpen() {
+int GameLogic::r39_handleVerbOpen() {
int actionTextIndex = -1;
switch (_vm->_objectNumber) {
case kObjectIdDoor39:
@@ -8619,7 +8619,7 @@ void GameLogic::closeSaveLoadMenu() {
void GameLogic::menuSaveLoadMenu(bool isLoad) {
_menuIsSaveLoad = isLoad ? 2 : 1;
-
+
GxlArchive *m04Gxl = new GxlArchive("m04");
// sysMouseDriver(2);
_vm->setMouseBounds(71, 248, 35, 141);
@@ -8722,7 +8722,7 @@ bool GameLogic::saveSavegame(int slot, const Common::String *desc) {
header.saveName = *desc;
else
header.saveName = Common::String::format("Unnamed savegame %2d", slot);
-
+
header.version = kWWSavegameVersion;
_vm->writeSavegameHeader(saveFile, header);
delete saveFile;
@@ -8733,7 +8733,7 @@ bool GameLogic::saveSavegame(int slot, const Common::String *desc) {
bool GameLogic::loadSavegame(int slot, bool rstSave) {
Common::InSaveFile *saveFile;
byte *buffer = nullptr;
-
+
if (rstSave) {
Common::File fd;
if (!fd.open(Common::Path("ww.rst")))
@@ -8824,7 +8824,7 @@ void GameLogic::handleGameMenu() {
menuExit();
}
refresh = false;
- } else {
+ } else {
switch ((_vm->_mouseClickY - 24) / 16) {
case 0:
toggleMusicEnabled();
@@ -8862,7 +8862,7 @@ void GameLogic::handleGameMenu() {
// menuExit() must absolutely called after r0_flags is set otherwise it reset the menu mode.
menuExit();
- // in the original this code is in a separate function r0_startPizzathonDialog
+ // in the original this code is in a separate function r0_startPizzathonDialog
_vm->displayText("c11", 0, 0, -1, -1, 0);
_vm->setDialogChoices(29, 30, 31, 32, 33);
_vm->waitSeconds(2);
diff --git a/engines/waynesworld/graphics.cpp b/engines/waynesworld/graphics.cpp
index be0be409261..96d6707c7b0 100644
--- a/engines/waynesworld/graphics.cpp
+++ b/engines/waynesworld/graphics.cpp
@@ -289,7 +289,7 @@ void Screen::drawSurface(const Graphics::Surface *surface, int x, int y) {
warning("drawSurface - Trying to draw on a null surface!");
return;
}
-
+
beginUpdate();
drawSurfaceIntern(_vgaSurface, surface, x, y, false);
endUpdate();
diff --git a/engines/waynesworld/gxlarchive.cpp b/engines/waynesworld/gxlarchive.cpp
index e3bba910f05..262e0f01791 100644
--- a/engines/waynesworld/gxlarchive.cpp
+++ b/engines/waynesworld/gxlarchive.cpp
@@ -48,10 +48,10 @@ GxlArchive::GxlArchive(const Common::String name) : _gxlFile(new Common::File())
// signature (2) + copyright (50) + version (2) + garbage(40)
_gxlFile->seek(94);
const uint16 count = _gxlFile->readUint16LE();
-
+
GxlHeader header;
_gxlFile->seek(128);
-
+
for (uint i = 0; i < count; i++) {
_gxlFile->readByte(); // Packing Type
char baseName[9] = {0};
@@ -62,10 +62,10 @@ GxlArchive::GxlArchive(const Common::String name) : _gxlFile(new Common::File())
fullName.trim();
fullName += Common::String(extension);
fullName.trim();
-
+
strncpy(header.filename, fullName.c_str(), 12);
header.filename[12] = 0;
-
+
header.offset = _gxlFile->readUint32LE();
header.size = _gxlFile->readUint32LE();
diff --git a/engines/waynesworld/intro.cpp b/engines/waynesworld/intro.cpp
index cc1e99e7786..26b60715f90 100644
--- a/engines/waynesworld/intro.cpp
+++ b/engines/waynesworld/intro.cpp
@@ -33,10 +33,10 @@ void WaynesWorldEngine::runIntro() {
if (continueFl)
continueFl = introPt2();
-
+
if (continueFl)
continueFl = introPt3(false);
-
+
if (continueFl)
continueFl = introPt4();
@@ -70,7 +70,7 @@ bool WaynesWorldEngine::introPt1() {
delete oa2Gxl;
return false;
}
-
+
WWSurface *paramaSprite = new WWSurface(190, 112);
// "And" animation
drawImageToSurface(oa2Gxl, "parama.pcx", paramaSprite, 0, 0);
@@ -323,8 +323,8 @@ bool WaynesWorldEngine::introPt3(bool flag) {
_sound->playSound("sv16.snd", false);
waitSeconds(1);
- paletteFadeOut(0, 256, 4);
-
+ paletteFadeOut(0, 256, 4);
+
cleanPt3();
if (_escPressed) {
@@ -354,7 +354,7 @@ bool WaynesWorldEngine::introPt4() {
retVal = introPt4_playGuitar();
introPt4_cleanup();
-
+
return retVal;
}
@@ -367,9 +367,9 @@ void WaynesWorldEngine::introPt6() {
WWSurface *introPt6Surface[5] = {nullptr};
WWSurface *signBottomSurface = nullptr;
WWSurface *scrollSurface = nullptr;
-
+
_escPressed = false;
-
+
while (_sound->isSFXPlaying())
waitMillis(10);
@@ -435,7 +435,7 @@ void WaynesWorldEngine::sub3009A(int textId) {
int textColor;
int textType = 0;
Common::String filename;
-
+
switch (textId) {
case 0:
filename = "oaw";
@@ -497,7 +497,7 @@ void WaynesWorldEngine::sub2FEFB(int arg_refreshBackgFl, int arg_wBodyIndex, int
if (arg_TextId != -1) {
sub3009A(arg_TextId);
}
-
+
_screen->drawSurface(_demoPt2Surface, 0, 0);
waitMillis(170);
}
@@ -508,7 +508,7 @@ void WaynesWorldEngine::introPt4_init() {
while(_sound->isSFXPlaying())
waitMillis(30);
-
+
_musicIndex = 2;
changeMusic();
@@ -552,7 +552,7 @@ bool WaynesWorldEngine::introPt4_intro() {
while (_sound->isSFXPlaying())
waitMillis(30);
-
+
_sound->playSound("sv25.snd", false);
for (int i = 0; i < 8; ++i) {
@@ -586,7 +586,7 @@ bool WaynesWorldEngine::introPt4_intro() {
if (_escPressed) {
return false;
}
-
+
return true;
}
bool WaynesWorldEngine::introPt4_displayCallInTime() {
@@ -776,7 +776,7 @@ bool WaynesWorldEngine::introPt4_caller2() {
}
++_startOagPos;
}
-
+
for (int i = 0; i < 4; ++i) {
sub2FEFB(1, 0, 1, getRandom(3), getRandom(11), 2);
waitSeconds(2);
@@ -856,7 +856,7 @@ bool WaynesWorldEngine::introPt4_caller2() {
}
++_startOawPos;
}
-
+
if (_escPressed) {
return false;
}
@@ -966,7 +966,7 @@ bool WaynesWorldEngine::introPt4_caller4() {
}
}
++_startOawPos;
-
+
for (int j = 0; j < 2; ++j) {
for (int i = 0; i < 15; ++i) {
sub2FEFB(1, 0, 1, 0, getRandom(11), 1);
@@ -1034,7 +1034,7 @@ bool WaynesWorldEngine::introPt4_caller4() {
return false;
}
}
- ++_startOawPos;
+ ++_startOawPos;
}
for (int i = 0; i < 8; ++i) {
@@ -1064,7 +1064,7 @@ bool WaynesWorldEngine::introPt4_caller4() {
}
_sound->playSound("sv45.snd", true);
-
+
for (int j = 0; j < 3; ++j) {
for (int i = 0; i < 8; ++i) {
sub2FEFB(1, 0, 1, getRandom(3), 9, 0);
@@ -1114,7 +1114,7 @@ bool WaynesWorldEngine::introPt4_playGuitar() {
sub2FEFB(1, 2, 1, 0, 9, -1);
sub2FEFB(1, 3, 1, 0, 9, -1);
sub2FEFB(1, 4, 1, 0, 9, -1);
-
+
_midi->stopSong();
if (_escPressed) {
diff --git a/engines/waynesworld/metaengine.cpp b/engines/waynesworld/metaengine.cpp
index 74b5d195b1c..9b2b146edf7 100644
--- a/engines/waynesworld/metaengine.cpp
+++ b/engines/waynesworld/metaengine.cpp
@@ -107,7 +107,7 @@ SaveStateList WaynesWorldMetaEngine::listSaves(const char *target) const {
saveList.push_back(SaveStateDescriptor(this, slotNum, header.saveName));
}
} else {
- // Unexpected savegame format?
+ // Unexpected savegame format?
}
}
delete file;
diff --git a/engines/waynesworld/pathfinding.cpp b/engines/waynesworld/pathfinding.cpp
index a290ee8c322..276a561c2f2 100644
--- a/engines/waynesworld/pathfinding.cpp
+++ b/engines/waynesworld/pathfinding.cpp
@@ -125,7 +125,7 @@ void WaynesWorldEngine::walkCalcOtherActorDest(int flag, int &x, int &y) {
case 7:
y += actorDistance;
break;
-
+
default:
break;
}
@@ -447,7 +447,7 @@ bool WaynesWorldEngine::walkTo(int actor1_destX, int actor1_destY, int direction
if (flag1 == 0) {
scale = drawActors(actor1Points[pointIndex].direction, 0, 1, (walkIncr % 8) / 2, _wayneWalkPoints[pointIndex].x - _scrollPosition, _wayneWalkPoints[pointIndex].y, _garthSpriteX, _garthSpriteY);
} else {
- scale = drawActors(actor1Points[pointIndex].direction, 1, 0, (walkIncr % 8) / 2, _wayneSpriteX, _wayneSpriteY, _garthWalkPoints[pointIndex].x - _scrollPosition, _garthWalkPoints[pointIndex].y);
+ scale = drawActors(actor1Points[pointIndex].direction, 1, 0, (walkIncr % 8) / 2, _wayneSpriteX, _wayneSpriteY, _garthWalkPoints[pointIndex].x - _scrollPosition, _garthWalkPoints[pointIndex].y);
}
} else {
if (flag2 == 0) {
diff --git a/engines/waynesworld/sound.cpp b/engines/waynesworld/sound.cpp
index 674f1775b69..a199f00d57c 100644
--- a/engines/waynesworld/sound.cpp
+++ b/engines/waynesworld/sound.cpp
@@ -48,7 +48,7 @@ void SoundManager::playSound(const char *filename, int flag) {
_vm->waitMillis(10);
_filename = Common::String(filename);
-
+
Common::File fd;
if (!fd.open(Common::Path(filename))) {
error("playSound : Enable to open %s", filename);
@@ -61,7 +61,7 @@ void SoundManager::playSound(const char *filename, int flag) {
Common::SeekableReadStream *rawStream = new Common::MemoryReadStream(buffer, size, DisposeAfterUse::YES);
Audio::RewindableAudioStream *audioStream = Audio::makeRawStream(rawStream, 9000, Audio::FLAG_UNSIGNED);
-/*
+/*
if (loop)
Audio::LoopingAudioStream *loopingStream = new Audio::LoopingAudioStream(audioStream, 0, DisposeAfterUse::NO));
*/
diff --git a/engines/waynesworld/waynesworld.cpp b/engines/waynesworld/waynesworld.cpp
index e0c8020ba4d..01b86497dd0 100644
--- a/engines/waynesworld/waynesworld.cpp
+++ b/engines/waynesworld/waynesworld.cpp
@@ -114,7 +114,7 @@ Common::Error WaynesWorldEngine::saveGameState(int slot, const Common::String &d
Common::Error result = Common::kNoError;
if (!_logic->saveSavegame(slot, &desc))
result = Common::kUnknownError;
-
+
return result;
}
@@ -161,8 +161,8 @@ void WaynesWorldEngine::writeSavegameHeader(Common::OutSaveFile *out, SavegameHe
}
Common::Error WaynesWorldEngine::run() {
- _isSaveAllowed = false;
-
+ _isSaveAllowed = false;
+
for (uint i = 0; i < kRoomAnimationsCount; i++)
_roomAnimations[i] = nullptr;
@@ -249,7 +249,7 @@ Common::Error WaynesWorldEngine::run() {
CursorMan.showMouse(true);
drawInterface(2);
-
+
_gameState = 0; // DEBUG Initial _gameState 0 is set by room event in room 0
_currentRoomNumber = 0;
if (_loadSaveSlot >= 0) {
@@ -258,7 +258,7 @@ Common::Error WaynesWorldEngine::run() {
changeRoom(_currentRoomNumber);
changeMusic();
_isSaveAllowed = true;
-
+
while (!shouldQuit()) {
_mouseClickButtons = 0;
// _keyInput = 0;
@@ -291,7 +291,7 @@ Common::Error WaynesWorldEngine::run() {
delete _m02Gxl;
delete _m01Gxl;
delete _m00Gxl;
-
+
delete _fontWW;
delete _fontWWInv;
delete _fontBit5x7;
@@ -317,7 +317,7 @@ bool WaynesWorldEngine::hasFeature(EngineFeature f) const {
void WaynesWorldEngine::updateEvents() {
Common::Event event;
Common::Point clickPt;
-
+
while (_eventMan->pollEvent(event)) {
switch (event.type) {
case Common::EVENT_KEYDOWN:
@@ -393,14 +393,14 @@ void WaynesWorldEngine::initMouseCursor() {
const uint kCursorHotspotX = 4;
const uint kCursorHotspotY = 4;
static const byte kCursorData[kCursorWidth * kCursorHeight] = {
- 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00
};
CursorMan.replaceCursor(kCursorData, kCursorWidth, kCursorHeight, kCursorHotspotX, kCursorHotspotY, 0);
@@ -539,7 +539,7 @@ void WaynesWorldEngine::handleMouseLeftClick() {
case 5:
extremeCloseUpHandleMouseClick();
break;
-
+
default:
warning("handleMouseLeftClick - Unhandled game state %d", _gameState);
break;
@@ -786,7 +786,7 @@ void WaynesWorldEngine::changeMusic() {
return;
_midi->stopSong();
-
+
switch (_musicIndex) {
case 0:
_midi->playMusic("pop-a.xmi");
@@ -1002,7 +1002,7 @@ void WaynesWorldEngine::loadMainActorSprites() {
for (int direction = 0; direction < 8; direction++) {
_wayneSprites[direction] = _m01Gxl->loadSurface(Common::String::format("wstand%d.pcx", direction).c_str());
_garthSprites[direction] = _m01Gxl->loadSurface(Common::String::format("gstand%d.pcx", direction).c_str());
- for (int frameNum = 0; frameNum < 4; frameNum++) {
+ for (int frameNum = 0; frameNum < 4; frameNum++) {
_wayneWalkSprites[direction][frameNum] = _m01Gxl->loadSurface(Common::String::format("wwalk%d%d.pcx", direction, frameNum).c_str());
_garthWalkSprites[direction][frameNum] = _m01Gxl->loadSurface(Common::String::format("gwalk%d%d.pcx", direction, frameNum).c_str());
}
@@ -1263,7 +1263,7 @@ void WaynesWorldEngine::openRoomLibrary(int roomNum) {
void WaynesWorldEngine::loadRoomBackground() {
loadPalette(_roomGxl, "backg.pcx");
g_system->getPaletteManager()->setPalette(_palette2, 0, 256);
-
+
drawRoomImageToSurface("backg.pcx", _backgroundSurface, 0, 0);
refreshRoomBackground(_currentRoomNumber);
refreshActors();
@@ -2176,7 +2176,7 @@ void WaynesWorldEngine::lookAtUnusedTicket() {
// sysMouseDriver(2);
_gameState = 3;
_logic->_didScratchTicket = false;
- stopRoomAnimations();
+ stopRoomAnimations();
if (!(_logic->_r10_flags & 0x80)) {
_roomAnimations[19] = _r10Gxl->loadSurface("win.pcx");
} else {
diff --git a/engines/waynesworld/waynesworld.h b/engines/waynesworld/waynesworld.h
index ccdcf4ca0c0..4e997d0ff7d 100644
--- a/engines/waynesworld/waynesworld.h
+++ b/engines/waynesworld/waynesworld.h
@@ -170,7 +170,7 @@ private:
int _startOagPos = 0;
int _startOaoPos = 0;
int _loadSaveSlot = -1;
-
+
void sub3009A(int textId);
void sub2FEFB(int arg_refreshBackgFl, int arg_wBodyIndex, int arg_gBodyIndex, int arg_wHead1Index, int arg_gHead1Index, int arg_TextId);
Commit: e02e7636f2a0e065d7ed1ff3f4a63ccc85c7dce1
https://github.com/scummvm/scummvm/commit/e02e7636f2a0e065d7ed1ff3f4a63ccc85c7dce1
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2026-03-22T20:38:15+01:00
Commit Message:
WAYNESWORLD: Janitorial - Add a description to detection entry, reorder items in gamelogic.h and some other small details
Changed paths:
engines/waynesworld/detection.cpp
engines/waynesworld/detection_tables.h
engines/waynesworld/gamelogic.h
engines/waynesworld/gamemap.cpp
engines/waynesworld/graphics.h
engines/waynesworld/pathfinding.cpp
diff --git a/engines/waynesworld/detection.cpp b/engines/waynesworld/detection.cpp
index cbe1fca1517..91508543f6c 100644
--- a/engines/waynesworld/detection.cpp
+++ b/engines/waynesworld/detection.cpp
@@ -32,10 +32,11 @@ static const PlainGameDescriptor waynesworldGames[] = {
#include "waynesworld/detection.h"
static const DebugChannelDef debugFlagList[] = {
- {WaynesWorld::kDebugScripts, "scripts", "Script debug level"},
- {WaynesWorld::kDebugMessages, "messages", "Messages debug level"},
- {WaynesWorld::kDebugCore, "core", "Core debug level"},
- DEBUG_CHANNEL_END};
+ { WaynesWorld::kDebugScripts, "scripts", "Script debug level" },
+ { WaynesWorld::kDebugMessages, "messages", "Messages debug level" },
+ { WaynesWorld::kDebugCore, "core", "Core debug level" },
+ DEBUG_CHANNEL_END
+};
static const char *const DIRECTORY_GLOBS[] = { "vnm", "m01", nullptr };
diff --git a/engines/waynesworld/detection_tables.h b/engines/waynesworld/detection_tables.h
index a6357fe6537..2f9fa947a3a 100644
--- a/engines/waynesworld/detection_tables.h
+++ b/engines/waynesworld/detection_tables.h
@@ -24,7 +24,7 @@ namespace WaynesWorld {
static const ADGameDescription gameDescriptions[] = {
{
"waynesworld",
- nullptr,
+ "CD Version",
AD_ENTRY2s("R00.GXL", "197ae9fb74a79a6dad4e3336f94c7545", 36272,
"e00.txt", "78769d60d48aea314ed6be2f725c8c2f", 1293),
Common::EN_ANY,
diff --git a/engines/waynesworld/gamelogic.h b/engines/waynesworld/gamelogic.h
index 7c8594e4fd8..a0ce019de0a 100644
--- a/engines/waynesworld/gamelogic.h
+++ b/engines/waynesworld/gamelogic.h
@@ -50,64 +50,64 @@ public:
void setPizzathonStatus(int flagNum);
void r38_atrap();
public:
- int _r0_pizzathonIdeasCtr;
+ byte _r0_flags;
int _r0_pizzathonChoiceCtr;
bool _r0_pizzathonChoicesUsed[15];
- int _r37_safeCombinationLockIndex;
- int _r37_safeCombinationDirection;
- int _r37_safeCombinationIndex;
- int _r37_safeCombinationCurrentNumber;
- int _r12_talkObjectNumber;
- byte _pizzathonListFlags1;
- byte _pizzathonListFlags2;
- byte _r31_flags;
- byte _r0_flags;
- byte _r4_flags;
- byte _r5_flags;
- byte _r7_flags;
- byte _r11_flags;
- byte _r32_flags;
+ int _r0_pizzathonIdeasCtr;
byte _r1_flags1;
byte _r1_flags2;
+ bool _r1_tongueTrickActive;
+ int _r1_tongueTrickCtr;
byte _r2_flags;
+ byte _r2_backgroundValue1;
+ byte _r2_backgroundValue2;
+ byte _r4_flags;
+ byte _r5_flags;
byte _r6_flags;
+ byte _r7_flags;
+ byte _r8_flags;
+ byte _r9_flags;
+ byte _r9_dialogFlag;
byte _r10_flags;
+ int _r10_selectedItemToBuy;
+ byte _r11_flags;
byte _r12_flags;
- byte _r19_flags;
- byte _r9_flags;
- byte _r8_flags;
+ int _r12_talkObjectNumber;
byte _r13_flags;
- byte _r20_flags;
- byte _r29_flags;
- byte _r30_flags;
- byte _r34_flags;
- byte _r35_flags;
- byte _r37_flags;
- byte _r36_flags;
- byte _r38_flags;
- byte _r39_flags;
- int _r10_selectedItemToBuy;
- byte _r9_dialogFlag;
- bool _r1_tongueTrickActive;
- int _r1_tongueTrickCtr;
byte _r17_dialogCtr;
byte _r17_eventFlag;
- byte _r2_backgroundValue1;
- byte _r2_backgroundValue2;
- int _r19_wayneSpriteX;
+ byte _r19_flags;
int _r19_garthSpriteX;
- int _r24_mazeRoomNumber;
+ int _r19_wayneSpriteX;
+ byte _r20_flags;
int _r24_mazeHoleNumber;
+ int _r24_mazeRoomNumber;
int _r25_holeIndex;
- int _r31_questionsAsked;
- int _r31_correctAnswerChoice;
+ byte _r29_flags;
+ byte _r30_flags;
+ byte _r31_flags;
+ bool _r31_askedQuestions[25];
int _r31_categoryIndex;
- int _r31_questionIndex;
bool _r31_categorySelected;
+ int _r31_correctAnswerChoice;
int _r31_currentPlayer;
+ int _r31_questionIndex;
+ int _r31_questionsAsked;
int _r31_scores[3];
- bool _r31_askedQuestions[25];
+ byte _r32_flags;
+ byte _r34_flags;
+ byte _r35_flags;
+ byte _r36_flags;
+ byte _r37_flags;
+ int _r37_safeCombinationCurrentNumber;
+ int _r37_safeCombinationDirection;
+ int _r37_safeCombinationIndex;
+ int _r37_safeCombinationLockIndex;
+ byte _r38_flags;
+ byte _r39_flags;
bool _didScratchTicket;
+ byte _pizzathonListFlags1;
+ byte _pizzathonListFlags2;
int _menuGameState = 0;
WWSurface *_menuOffSprite = nullptr;
diff --git a/engines/waynesworld/gamemap.cpp b/engines/waynesworld/gamemap.cpp
index 3a6e93363d7..9ae7ad19ee7 100644
--- a/engines/waynesworld/gamemap.cpp
+++ b/engines/waynesworld/gamemap.cpp
@@ -190,7 +190,6 @@ void WaynesWorldEngine::gameMapHandleMouseMove(int objectNumber) {
_currentMapItemIndex = _hoverObjectNumber;
drawImageToScreen(lib, tagFilename.c_str(), tagX, tagY);
}
-
}
void WaynesWorldEngine::gameMapHandleMouseClick() {
@@ -225,7 +224,6 @@ void WaynesWorldEngine::gameMapHandleMouseClick() {
gameMapFinish();
loadPalette(_m01Gxl, "wstand0.pcx");
}
-
}
void WaynesWorldEngine::gameMapSelectItem(const char *prefix, int animX, int animY) {
diff --git a/engines/waynesworld/graphics.h b/engines/waynesworld/graphics.h
index 91d6ba3a739..b13dfac587c 100644
--- a/engines/waynesworld/graphics.h
+++ b/engines/waynesworld/graphics.h
@@ -32,6 +32,7 @@ public:
WWSurface(int width, int height);
WWSurface(const Graphics::Surface *sourceSurface);
~WWSurface();
+
void drawSurface(const Graphics::Surface *surface, int x, int y);
void drawSurfaceTransparent(const Graphics::Surface *surface, int x, int y);
void scaleSurface(const Graphics::Surface *surface);
@@ -45,6 +46,7 @@ class GFTFont {
public:
GFTFont();
~GFTFont();
+
void loadFromFile(const char *filename);
void drawText(Graphics::Surface *surface, const char *text, int x, int y, byte color);
void drawWrappedText(Graphics::Surface *surface, const char *text, int x, int y, int maxWidth, byte color);
@@ -65,6 +67,7 @@ public:
Screen();
~Screen();
+
void beginUpdate();
void endUpdate();
void drawSurface(const Graphics::Surface *surface, int x, int y);
@@ -85,6 +88,7 @@ protected:
class ScreenEffect {
public:
ScreenEffect(WaynesWorldEngine *vm, Graphics::Surface *surface, int x, int y, int grainWidth, int grainHeight);
+
void drawSpiralEffect();
void drawRandomEffect();
protected:
diff --git a/engines/waynesworld/pathfinding.cpp b/engines/waynesworld/pathfinding.cpp
index 276a561c2f2..f30b7a64102 100644
--- a/engines/waynesworld/pathfinding.cpp
+++ b/engines/waynesworld/pathfinding.cpp
@@ -187,7 +187,7 @@ bool WaynesWorldEngine::walkFindPoint(int flag, int &sourceX, int &sourceY, int
int scan1Sign = -1;
while (scan1Sign < 2 && !walkable) {
if (ABS(slopeX) >= 1.0f) {
- float slopeY = 1.0f / slopeX;
+ const float slopeY = 1.0f / slopeX;
scan1Y = sourceY + scan1Incr * scan1Sign;
scan1X = sourceX + (scan1Y - sourceY) * slopeY;
} else {
@@ -463,7 +463,7 @@ bool WaynesWorldEngine::walkTo(int actor1_destX, int actor1_destY, int direction
waitMillis(100); // TODO Fix this
if (_scrollRemaining > 0) {
warning("STUB - Missing scrolling in WalkTo");
- // TOOD
+ // TODO
// if (updateGame()) {
// return true;
// }
Commit: 635b79a28cdff80e7253b664ea53ddb374b8b5a2
https://github.com/scummvm/scummvm/commit/635b79a28cdff80e7253b664ea53ddb374b8b5a2
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2026-03-22T20:38:15+01:00
Commit Message:
WAYNESWORLD: Add detection to 2 non interactive demos
Changed paths:
engines/waynesworld/detection_tables.h
diff --git a/engines/waynesworld/detection_tables.h b/engines/waynesworld/detection_tables.h
index 2f9fa947a3a..4992fc236ec 100644
--- a/engines/waynesworld/detection_tables.h
+++ b/engines/waynesworld/detection_tables.h
@@ -29,11 +29,32 @@ static const ADGameDescription gameDescriptions[] = {
"e00.txt", "78769d60d48aea314ed6be2f725c8c2f", 1293),
Common::EN_ANY,
Common::kPlatformDOS,
- ADGF_NO_FLAGS,
+ ADGF_TESTING,
GUIO1(GUIO_NOASPECT)
},
- AD_TABLE_END_MARKER
-};
+ {
+ "waynesworld",
+ "Demo",
+ AD_ENTRY2s("R00.GXL", "6a05df806dedb69f1333cb9d81b6821c", 34392,
+ "CAPSPIN.GXL", "b9d2cd46b4ebe49fcf634b221f11f8df", 281089),
+ Common::EN_ANY,
+ Common::kPlatformDOS,
+ ADGF_UNSTABLE,
+ GUIO1(GUIO_NOASPECT)
+ },
+
+ {
+ "waynesworld",
+ "Selectware Demo",
+ AD_ENTRY2s("R00.GXL", "6a05df806dedb69f1333cb9d81b6821c", 34392,
+ "CAP.GXL", "4823b4ae534716b8ea115ab34b7eac6b", 87864),
+ Common::EN_ANY,
+ Common::kPlatformDOS,
+ ADGF_UNSTABLE,
+ GUIO1(GUIO_NOASPECT)
+ },
+
+ AD_TABLE_END_MARKER};
} // End of namespace WaynesWorld
Commit: 48985b8ac9a664e2183ece34c49a2a44aacae9e6
https://github.com/scummvm/scummvm/commit/48985b8ac9a664e2183ece34c49a2a44aacae9e6
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2026-03-22T20:38:15+01:00
Commit Message:
WAYNESWORLD: Fix "save" behavior using ScummVM menus
Changed paths:
engines/waynesworld/metaengine.cpp
diff --git a/engines/waynesworld/metaengine.cpp b/engines/waynesworld/metaengine.cpp
index 9b2b146edf7..70ce0e92761 100644
--- a/engines/waynesworld/metaengine.cpp
+++ b/engines/waynesworld/metaengine.cpp
@@ -60,6 +60,7 @@ public:
bool hasFeature(MetaEngineFeature f) const override;
SaveStateList listSaves(const char *target) const override;
SaveStateDescriptor querySaveMetaInfos(const char *target, int slot) const override;
+ int getMaximumSaveSlot() const override { return 99; }
};
bool WaynesWorldMetaEngine::hasFeature(MetaEngineFeature f) const {
Commit: f4d4400da263177b42b7d37c4654bbac139ea411
https://github.com/scummvm/scummvm/commit/f4d4400da263177b42b7d37c4654bbac139ea411
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2026-03-22T20:38:15+01:00
Commit Message:
WAYNESWORLD: Removed the extra description "CD Version" after robertmegone showed the content was the same as the 5.25 floppy version
Changed paths:
engines/waynesworld/detection_tables.h
diff --git a/engines/waynesworld/detection_tables.h b/engines/waynesworld/detection_tables.h
index 4992fc236ec..a6872422f52 100644
--- a/engines/waynesworld/detection_tables.h
+++ b/engines/waynesworld/detection_tables.h
@@ -24,7 +24,7 @@ namespace WaynesWorld {
static const ADGameDescription gameDescriptions[] = {
{
"waynesworld",
- "CD Version",
+ "",
AD_ENTRY2s("R00.GXL", "197ae9fb74a79a6dad4e3336f94c7545", 36272,
"e00.txt", "78769d60d48aea314ed6be2f725c8c2f", 1293),
Common::EN_ANY,
Commit: 5adae56d34f0a6ce1d01470f02ba9417c52cdbe5
https://github.com/scummvm/scummvm/commit/5adae56d34f0a6ce1d01470f02ba9417c52cdbe5
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2026-03-22T20:38:15+01:00
Commit Message:
WAYNESWORLD: Fix ghost lines in some discussions (lilke when buying the scratch'n'win ticket with Garth)
Changed paths:
engines/waynesworld/waynesworld.cpp
diff --git a/engines/waynesworld/waynesworld.cpp b/engines/waynesworld/waynesworld.cpp
index 01b86497dd0..ab716f79bc1 100644
--- a/engines/waynesworld/waynesworld.cpp
+++ b/engines/waynesworld/waynesworld.cpp
@@ -1764,7 +1764,7 @@ void WaynesWorldEngine::handleDialogMouseClick() {
if (_gameState == 0) {
drawInterface(_verbNumber);
- } else if (continueDialog != 0) {
+ } else if (continueDialog != 0 || replyTextIndex1 != -1) {
drawDialogChoices(-9);
}
}
Commit: 30cc1eb57d129a233b911acb281d39603da87474
https://github.com/scummvm/scummvm/commit/30cc1eb57d129a233b911acb281d39603da87474
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2026-03-22T20:38:15+01:00
Commit Message:
WAYNESWORLD: Fix crash when buying gum - The original is failing to display frame 3 and skipping frame 5 which doesn't exist (getmon5.pcx)
Changed paths:
engines/waynesworld/gamelogic.cpp
diff --git a/engines/waynesworld/gamelogic.cpp b/engines/waynesworld/gamelogic.cpp
index b59c0d25335..9de8b9fc9be 100644
--- a/engines/waynesworld/gamelogic.cpp
+++ b/engines/waynesworld/gamelogic.cpp
@@ -4392,7 +4392,7 @@ void GameLogic::r10_buyItem() {
_vm->playAnimation("getmon", 0, 3, 98, 7, 0, 100);
_vm->displayText("c04r", 8, 0, 320, 115, 0);
_vm->playAnimation("gest", 0, 7, 127, 7, 0, 200);
- _vm->playAnimation("getmon", 4, 2, 98, 7, 0, 100);
+ _vm->playAnimation("getmon", 3, 2, 98, 7, 0, 100);
if (_r10_selectedItemToBuy == 1) {
_r10_flags |= 0x08;
} else {
Commit: b317fa8dc3d0ce8b48dabaa2a1677471c275de32
https://github.com/scummvm/scummvm/commit/b317fa8dc3d0ce8b48dabaa2a1677471c275de32
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2026-03-22T20:38:15+01:00
Commit Message:
WAYNESWORLD: Make it possible to have an unused ticket in the inventory by moving the mouse cursor out of the ticket area when looking at it
Changed paths:
engines/waynesworld/waynesworld.cpp
diff --git a/engines/waynesworld/waynesworld.cpp b/engines/waynesworld/waynesworld.cpp
index ab716f79bc1..27837afc6d9 100644
--- a/engines/waynesworld/waynesworld.cpp
+++ b/engines/waynesworld/waynesworld.cpp
@@ -2173,6 +2173,10 @@ void WaynesWorldEngine::handleVerbClose() {
}
void WaynesWorldEngine::lookAtUnusedTicket() {
+ // Move the mouse cursor out of the ticket so it's not directly turned into a used ticket
+ _mouseX = _mouseY = 10;
+ g_system->warpMouse(_mouseX, _mouseY);
+
// sysMouseDriver(2);
_gameState = 3;
_logic->_didScratchTicket = false;
Commit: bd2bb0aa1503472c5aa39073b0af7b7fa444e4b4
https://github.com/scummvm/scummvm/commit/bd2bb0aa1503472c5aa39073b0af7b7fa444e4b4
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2026-03-22T20:38:15+01:00
Commit Message:
WAYNESWORLD: implement r5_handleCassandra
Changed paths:
engines/waynesworld/gamelogic.cpp
engines/waynesworld/gamelogic.h
diff --git a/engines/waynesworld/gamelogic.cpp b/engines/waynesworld/gamelogic.cpp
index 9de8b9fc9be..b61a6e49556 100644
--- a/engines/waynesworld/gamelogic.cpp
+++ b/engines/waynesworld/gamelogic.cpp
@@ -2933,12 +2933,73 @@ void GameLogic::r5_refreshRoomBackground() {
}
}
+void GameLogic::r5_handleCassandra(const char *filename, int startFrame, int maxFrame, int startX, int startY, int targetX, int targetY, int width, int height, int totalSpeed, bool refreshBackground) {
+ const int stepX = (targetX > startX) ? 1 : -1;
+ const int stepY = (targetY > startY) ? 1 : -1;
+ const int deltaX = abs(targetX - startX);
+ const int deltaY = abs(targetY - startY);
+
+ int velX, velY;
+
+ if (deltaX == 0) {
+ velX = 0;
+ velY = totalSpeed * stepY;
+ } else if (deltaY == 0) {
+ velY = 0;
+ velX = totalSpeed * stepX;
+ } else if (deltaX > deltaY) {
+ velX = totalSpeed * stepX;
+ velY = ((totalSpeed * deltaY) / deltaX) * stepY;
+ } else {
+ velY = totalSpeed * stepY;
+ velX = ((totalSpeed * deltaX) / deltaY) * stepX;
+ }
+
+ const int stepNumb = abs(deltaX / velX);
+ WWSurface *workBackground = new WWSurface(320, 150);
+ workBackground->drawSurface(_vm->_backgroundSurface, 0, 0);
+ // sysMouseDriver(2)
+
+ int curX = startX;
+ int curY = startY;
+
+ // The original has a lot of scaling code and a bunch of code to handle how to position Garth and Wayne as if Cassandra was walking by them
+ // As she stop before them, and as the scaling computed was 1:1, the code has been significantly simplified
+
+ WWSurface *cassSurface = new WWSurface(width, height);
+ for (int i = 0; i < stepNumb; ++i) {
+ updateRoomAnimations();
+ if (i > 0) {
+ _vm->_backgroundSurface->copyRectToSurface((Graphics::Surface)*workBackground, curX - velX, curY - velY - height, Common::Rect(curX - velX, curY - velY - height, curX - velX + width, curY - velY));
+ }
+ const int key = (i % maxFrame) + startFrame;
+ Common::String curFile = Common::String::format("%s%d.pcx", filename, key);
+ _vm->drawImageToSurface(_vm->_roomGxl, curFile.c_str(), cassSurface, 0, 0);
+
+ _vm->_backgroundSurface->drawSurfaceTransparent(cassSurface, curX, curY - height);
+ _vm->refreshActors();
+ curX += velX;
+ curY += velY;
+
+ // Add delay for better visual result
+ _vm->waitMillis(45);
+ }
+
+ delete cassSurface;
+ delete workBackground;
+
+ // sysMouseDriver(1);
+ // if (refreshBackground) {
+ // _vm->drawRoomImageToBackground("backg.pcx", 0, 0);
+ // r5_refreshRoomBackground();
+ // }
+}
+
void GameLogic::r5_handleRoomEvent() {
_r5_flags |= 0x01;
_vm->walkTo(195, 102, -1, 209, 96);
- // TODO sub_185C0("wcass2", 0, 4, 0, 104, 170, 104, 26, 46, 8, 1);
- // TODO sub_185C0("scass", 2, 1, 170, 104, 171, 104, 15, 46, 2, 0);
- warning("STUB - r5_handleRoomEvent - sub_185C0?");
+ r5_handleCassandra("wcass2", 0, 4, 0, 104, 170, 104, 26, 46, 8, true);
+ r5_handleCassandra("scass", 2, 1, 170, 104, 171, 104, 15, 46, 2, false);
_vm->displayTextLines("c04r", 87, 150, 30, 1);
_vm->setDialogChoices(170, 171, 172, 173, 174);
_vm->startDialog();
diff --git a/engines/waynesworld/gamelogic.h b/engines/waynesworld/gamelogic.h
index a0ce019de0a..311a56ee868 100644
--- a/engines/waynesworld/gamelogic.h
+++ b/engines/waynesworld/gamelogic.h
@@ -196,6 +196,7 @@ public://DEBUG So logic functions can be called from the engine class for testin
int r5_handleVerbOpen();
bool r5_handleDialogSelect(int &replyTextX, int &replyTextY, int &replyTextIndex1, int &replyTextIndex2, int &replyTextIndex3);
void r5_refreshRoomBackground();
+ void r5_handleCassandra(const char *filename, int startFrame, int maxFrame, int startX, int startY, int targetX, int targetY, int width, int height, int totalSpeed, bool refreshBackground);
void r5_handleRoomEvent();
int r6_handleVerbPickUp();
More information about the Scummvm-git-logs
mailing list