#13834 closed defect (fixed)
TRECISION: Nightlong: Union City Conspiracy - Unable to save
| Reported by: | ameurenand | Owned by: | eriktorbjorn |
|---|---|---|---|
| Priority: | high | Component: | Engine: Trecision |
| Version: | Keywords: | ||
| Cc: | ameurenand | Game: | Nightlong: Union City Conspiracy |
Description
I use ScummVM version 2.6.0 on my Android 8.0 device.
I added the game "Nightlong: Union City Conspiracy" but I can't save my game.
After selecting a slot and entering a save name , nothing happens.
Then when I try to reload a game, I have no saved game.
I tested the "original save/load screens" option but it still failed.
I tested the same ScummVM version on my Windows PC and the save button is working well.
ScummVM version : 2.6.0 (Android ARMv7a package)
Android version : 8.0
Change History (6)
comment:1 by , 4 years ago
| Component: | --Unset-- → Port: Android |
|---|---|
| Summary: | Nightlong: Union City Conspiracy - Unable to save on Android → ANDROID: TRECISION: Nightlong: Union City Conspiracy - Unable to save on Android |
comment:2 by , 2 years ago
comment:3 by , 2 years ago
| Component: | Port: Android → Engine: Trecision |
|---|---|
| Priority: | normal → high |
| Summary: | ANDROID: TRECISION: Nightlong: Union City Conspiracy - Unable to save on Android → TRECISION: Nightlong: Union City Conspiracy - Unable to save |
comment:4 by , 2 years ago
The problem seems to be that when you save from the ScummVM menu, it never calls createThumbnailFromScreen(), so when it tries to save it fails with a "WARNING: trying to save thumbnail with bpp 0!"
When you bring up the game's own main menu, it does create the thumbnail.
comment:5 by , 2 years ago
I think it creates the thumbnail in advance for the built-in save dialog so that it won't get a thumbnail of its control panel. Perhaps something like this would be a solution:
diff --git a/engines/trecision/logic.cpp b/engines/trecision/logic.cpp
index 062c11b208a..77c9e284552 100644
--- a/engines/trecision/logic.cpp
+++ b/engines/trecision/logic.cpp
@@ -3988,7 +3988,9 @@ void LogicManager::handleClickControlPanel(uint16 curObj) {
if (_vm->_oldRoom == kRoomControlPanel)
break;
_vm->_curRoom = _vm->_obj[o00EXIT]._goRoom;
+ _vm->_controlPanelSave = true;
_vm->dataSave();
+ _vm->_controlPanelSave = false;
_vm->showInventoryName(NO_OBJECTS, false);
_vm->showIconName();
_vm->changeRoom(_vm->_obj[o00EXIT]._goRoom);
diff --git a/engines/trecision/metaengine.cpp b/engines/trecision/metaengine.cpp
index dcf356e9765..674a0a628d4 100644
--- a/engines/trecision/metaengine.cpp
+++ b/engines/trecision/metaengine.cpp
@@ -68,7 +68,10 @@ void TrecisionMetaEngine::getSavegameThumbnail(Graphics::Surface &thumb) {
// We are referencing g_engine here, but this should be safe, as this
// method is only used while the engine is running.
// TODO: Is there a better way to do this?
- thumb.copyFrom(((Trecision::TrecisionEngine *)g_engine)->_thumbnail);
+ if (((Trecision::TrecisionEngine *)g_engine)->_controlPanelSave)
+ thumb.copyFrom(((Trecision::TrecisionEngine *)g_engine)->_thumbnail);
+ else
+ MetaEngine::getSavegameThumbnail(thumb);
}
SaveStateDescriptor TrecisionMetaEngine::querySaveMetaInfos(const char *target, int slot) const {
diff --git a/engines/trecision/trecision.h b/engines/trecision/trecision.h
index 82cf0b1f929..139545cc086 100644
--- a/engines/trecision/trecision.h
+++ b/engines/trecision/trecision.h
@@ -243,6 +243,7 @@ public:
const ADGameDescription *_gameDescription;
Graphics::Surface _thumbnail;
+ bool _controlPanelSave = false;
uint16 _curRoom;
uint16 _oldRoom;
That way, it only uses the pre-made thumbnail if the save is triggered from the control panel. For other saves, it creates a new thumbnail.
But I'm not familiar with the engine, and I don't know if there's a better way.
comment:6 by , 2 years ago
| Owner: | set to |
|---|---|
| Resolution: | → fixed |
| Status: | new → closed |
Fixed in the following PR:
https://github.com/scummvm/scummvm/pull/5484
Closing

This is not an Android bug it also happens on Windows, and it's a bit weird.
Basically saving from the GMM (using CTRL-F5) does not work until you open the game menu (hitting ESC) at least once.