[Scummvm-git-logs] scummvm master -> 91efac699c4306e6c27f54921ccfe8bf524db26d
dreammaster
noreply at scummvm.org
Sat Apr 25 08:54:19 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:
91efac699c MADS: PHANTOM: Properly implement original save/restore dialogs
Commit: 91efac699c4306e6c27f54921ccfe8bf524db26d
https://github.com/scummvm/scummvm/commit/91efac699c4306e6c27f54921ccfe8bf524db26d
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2026-04-25T18:54:11+10:00
Commit Message:
MADS: PHANTOM: Properly implement original save/restore dialogs
Changed paths:
engines/mads/madsv2/core/game.cpp
engines/mads/madsv2/core/popup.cpp
engines/mads/madsv2/engine.cpp
engines/mads/madsv2/phantom/menus.cpp
diff --git a/engines/mads/madsv2/core/game.cpp b/engines/mads/madsv2/core/game.cpp
index a946aa0a545..5843138316d 100644
--- a/engines/mads/madsv2/core/game.cpp
+++ b/engines/mads/madsv2/core/game.cpp
@@ -2352,8 +2352,10 @@ static void game_read_save_directory() {
memset(game_save_directory, 0, GAME_MAX_SAVE_SLOTS * (GAME_MAX_SAVE_LENGTH + 1));
for (auto it = list.begin(); it != list.end(); ++it) {
- char *slot = game_save_directory + it->getSaveSlot() * (GAME_MAX_SAVE_LENGTH + 1);
- Common::strcpy_s(slot, GAME_MAX_SAVE_LENGTH + 1, it->getDescription().c_str());
+ if (it->getSaveSlot() > 0) {
+ char *slot = game_save_directory + (it->getSaveSlot() - 1) * (GAME_MAX_SAVE_LENGTH + 1);
+ Common::strcpy_s(slot, GAME_MAX_SAVE_LENGTH + 1, it->getDescription().c_str());
+ }
}
}
diff --git a/engines/mads/madsv2/core/popup.cpp b/engines/mads/madsv2/core/popup.cpp
index 7eeb7c43dd5..aa01fa3816f 100644
--- a/engines/mads/madsv2/core/popup.cpp
+++ b/engines/mads/madsv2/core/popup.cpp
@@ -2427,7 +2427,7 @@ static void popup_savelist_element_draw(PopupItem *item, int element) {
Common::strcpy_s(temp_buf, item->buffer->data);
} else {
text_locator = popup_savelist_string(item, element);
- Common::strcpy_s(temp_buf, text_locator);
+ Common::strcpy_s(temp_buf, text_locator ? text_locator : "");
if (!strlen(temp_buf) && (item->prompt != NULL) && (element != list->picked_element)) {
Common::strcpy_s(temp_buf, item->prompt);
}
diff --git a/engines/mads/madsv2/engine.cpp b/engines/mads/madsv2/engine.cpp
index b2aafec582a..f90faeb8055 100644
--- a/engines/mads/madsv2/engine.cpp
+++ b/engines/mads/madsv2/engine.cpp
@@ -233,7 +233,7 @@ int MADSV2Engine::getKey() {
if (!_keyEvents.empty()) {
Common::KeyState ks = _keyEvents.pop();
- return (ks.ascii && !ks.flags) ? ks.ascii : (ks.flags << 16) | ks.keycode;
+ return ks.ascii ? ks.ascii : (ks.flags << 16) | ks.keycode;
}
return 0;
diff --git a/engines/mads/madsv2/phantom/menus.cpp b/engines/mads/madsv2/phantom/menus.cpp
index 2ca61f762bc..6b7e9c40d3a 100644
--- a/engines/mads/madsv2/phantom/menus.cpp
+++ b/engines/mads/madsv2/phantom/menus.cpp
@@ -65,12 +65,12 @@ int global_menu_force_restart;
char *menu_quotes = NULL;
-static int global_save(int id) {
+static int global_save(int id, const char *save_game_name) {
int status;
game_save_name(id + 1);
- if (g_engine->saveGameState(id, save_game_buf).getCode() == Common::kNoError)
+ if (g_engine->saveGameState(id + 1, save_game_name).getCode() == Common::kNoError)
status = SAVE_SUCCESSFUL;
else
status = SAVE_FAILED;
@@ -81,7 +81,7 @@ static int global_save(int id) {
static int global_restore(int id) {
int status;
- if (g_engine->loadGameState(id).getCode() == Common::kNoError)
+ if (g_engine->loadGameState(id + 1).getCode() == Common::kNoError)
status = RESTORE_SUCCESSFUL;
else
status = RESTORE_FAILED;
@@ -250,7 +250,7 @@ static void global_menu_save_restore(int save) {
}
popup_blank(4);
- save_list = popup_savelist(nullptr, menu_quote(quote_menu_empty),
+ save_list = popup_savelist(game_save_directory, menu_quote(quote_menu_empty),
GAME_MAX_SAVE_SLOTS,
GAME_MAX_SAVE_LENGTH + 1,
GAME_MAX_SAVE_LENGTH,
@@ -325,7 +325,7 @@ static void global_menu_save_restore(int save) {
if (!strlen(save_game_name)) {
Common::strcpy_s(save_game_name, GAME_MAX_SAVE_LENGTH, menu_quote(quote_menu_unnamed));
}
- status = global_save(selection);
+ status = global_save(selection, save_game_name);
} else {
status = global_restore(selection);
More information about the Scummvm-git-logs
mailing list