[Scummvm-git-logs] scummvm master -> dc176b4426d1e951dff1f4ce4fb40e7d256eabe5
Strangerke
noreply at scummvm.org
Thu Apr 2 07:27:52 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:
371820457c WAYNESWORLD: Add German detection provided in ticker #16627
dc176b4426 WAYNESWORLD: Fix Restart (original bug in the way savegames are handled), fix Cassandra standing in her loft
Commit: 371820457c8627f8ac3d1569d821e2001ac34b27
https://github.com/scummvm/scummvm/commit/371820457c8627f8ac3d1569d821e2001ac34b27
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2026-04-02T09:26:57+02:00
Commit Message:
WAYNESWORLD: Add German detection provided in ticker #16627
Changed paths:
engines/waynesworld/detection_tables.h
diff --git a/engines/waynesworld/detection_tables.h b/engines/waynesworld/detection_tables.h
index f249e14d611..fbd2bb85093 100644
--- a/engines/waynesworld/detection_tables.h
+++ b/engines/waynesworld/detection_tables.h
@@ -33,6 +33,18 @@ static const ADGameDescription gameDescriptions[] = {
GUIO1(GUIO_NOASPECT)
},
+ // Provided by gabberhead, ticket #16627
+ {
+ "waynesworld",
+ "",
+ AD_ENTRY2s("R00.GXL", "197ae9fb74a79a6dad4e3336f94c7545", 36272,
+ "e00.txt", "b5042542d0df2fcd8c8e617ee0900ce8", 1447),
+ Common::DE_DEU,
+ Common::kPlatformDOS,
+ ADGF_UNSTABLE,
+ GUIO1(GUIO_NOASPECT)
+ },
+
{
"waynesworld",
"Demo",
@@ -54,7 +66,8 @@ static const ADGameDescription gameDescriptions[] = {
ADGF_UNSTABLE,
GUIO1(GUIO_NOASPECT)
},
-
- AD_TABLE_END_MARKER};
+
+ AD_TABLE_END_MARKER
+};
} // End of namespace WaynesWorld
Commit: dc176b4426d1e951dff1f4ce4fb40e7d256eabe5
https://github.com/scummvm/scummvm/commit/dc176b4426d1e951dff1f4ce4fb40e7d256eabe5
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2026-04-02T09:26:58+02:00
Commit Message:
WAYNESWORLD: Fix Restart (original bug in the way savegames are handled), fix Cassandra standing in her loft
Changed paths:
engines/waynesworld/gamelogic.cpp
diff --git a/engines/waynesworld/gamelogic.cpp b/engines/waynesworld/gamelogic.cpp
index bd9f71cf302..fcee379e93e 100644
--- a/engines/waynesworld/gamelogic.cpp
+++ b/engines/waynesworld/gamelogic.cpp
@@ -2940,7 +2940,6 @@ void GameLogic::r5_handleCassandra(const char *filename, int startFrame, int max
const int deltaY = abs(targetY - startY);
int velX, velY;
-
if (deltaX == 0) {
velX = 0;
velY = totalSpeed * stepY;
@@ -2955,7 +2954,11 @@ void GameLogic::r5_handleCassandra(const char *filename, int startFrame, int max
velX = ((totalSpeed * deltaX) / deltaY) * stepX;
}
- const int stepNumb = abs(deltaX / velX);
+ if (velX == 0 && velY == 0)
+ error("Unexpected lack of velocity");
+
+ const int stepNumb = (velX == 0) ? abs(deltaY / velY) : abs(deltaX / velX);
+
WWSurface *workBackground = new WWSurface(320, 150);
workBackground->drawSurface(_vm->_backgroundSurface, 0, 0);
// sysMouseDriver(2)
@@ -2964,16 +2967,18 @@ void GameLogic::r5_handleCassandra(const char *filename, int startFrame, int max
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
+ // As she stops 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) {
+ for (int i = 0; i <= stepNumb; ++i) {
updateRoomAnimations();
- if (i > 0) {
+ if (curX - velX >= 0) {
+ // Restore previous surface
_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);
+ // Draw new sprite
_vm->drawImageToSurface(_vm->_roomGxl, curFile.c_str(), cassSurface, 0, 0);
_vm->_backgroundSurface->drawSurfaceTransparent(cassSurface, curX, curY - height);
@@ -2984,15 +2989,17 @@ void GameLogic::r5_handleCassandra(const char *filename, int startFrame, int max
// Add delay for better visual result
_vm->waitMillis(45);
}
-
+
+ if (refreshBackground) {
+ _vm->drawRoomImageToBackground("backg.pcx", 0, 0);
+ r5_refreshRoomBackground();
+ }
+
+
delete cassSurface;
delete workBackground;
// sysMouseDriver(1);
- // if (refreshBackground) {
- // _vm->drawRoomImageToBackground("backg.pcx", 0, 0);
- // r5_refreshRoomBackground();
- // }
}
void GameLogic::r5_handleRoomEvent() {
@@ -8893,7 +8900,8 @@ void GameLogic::synchronize(Common::Serializer &s) {
s.syncAsSint16LE(_r24_mazeRoomNumber);
s.syncAsSint16LE(_r24_mazeHoleNumber);
byte byte_306C8 = 0;
- s.syncAsByte(byte_306C8); // set but not used in pizzathon
+ // In the original, this byte is set but not used in setPizzathonStatus() to count the number of items found
+ s.syncAsByte(byte_306C8);
for (int i = 0; i < 5; ++i)
s.syncAsSint16LE(_vm->_dialogChoices[i]);
@@ -8904,9 +8912,12 @@ void GameLogic::synchronize(Common::Serializer &s) {
s.syncAsSint16LE(_vm->_garthInventory[i]);
}
- for (int i = 0; i < 404; ++i)
- s.syncAsSint16LE(_vm->_roomObjects[i].roomNumber);
-
+ byte dummy = 0;
+ for (int i = 0; i < 404; ++i) {
+ s.syncAsByte(_vm->_roomObjects[i].roomNumber);
+ // For some mysterious reason, the original reads the first letter of the object name as well and overwrite it... 404 bytes wasted per savegame :/
+ s.syncAsByte(dummy);
+ }
s.syncAsByte(_pizzathonListFlags1);
s.syncAsByte(_pizzathonListFlags2);
s.syncAsByte(_r31_flags);
@@ -8938,7 +8949,6 @@ void GameLogic::synchronize(Common::Serializer &s) {
}
bool GameLogic::saveSavegame(int slot, const Common::String *desc) {
- // TODO: we could put the extra ScummVM info after the 1135 bytes of a standard savegame or modify loadSavegame to skip it when it's not a RST file
Common::OutSaveFile *saveFile = g_system->getSavefileManager()->openForSaving(Common::String::format("ww%02d.sav", slot), true);
if (saveFile == nullptr) {
More information about the Scummvm-git-logs
mailing list