hrydgard/ppsspp

[Android][OpenGL&Vulkan][Save issue] Assassin's Creed : Bloodlines (ULJM05571)

nassau-tk opened this issue · 17 comments

What happens?

The game can't save correctly. (Over write ??)

Step1: Start the game and create the savedata.(First time start up)
Step2: Play the game.
Step3: Auto save data working when check point coming.
Step4: Then appear a save error.(MemoryStick Change warning)

[Screen Shot Japanese]
MS_change_cant_save_jp

[Screen Shot English]
save_issue_english
I borrowed a English picture from different issue.

If you copied the savedata from real PSP.
You can load the savedata correctly.
But,You can't save (over write) this too.

What should happen?

Save game correctly.

What hardware, operating system, and PPSSPP version? On desktop, GPU matters for graphical issues.

PPSSPP Ver. : 1.9.3-559
OS: Android 9.0
DeviceName: SONY SO-02K / Xperia XZ1 Compact (Japan)
CPU: Snapdragon835 (Octa-core)
GPU: Adreno 540
Resolution: 720×1280
RAM: 4GB
ROM:32GB
ExternalStrage: microSDXC 512GB

I serched about save issue in github.
But,I couldn't find it.
If duplicated this issue then It's so sorry!!
#1525 (Closed)

I will attached 2 savedata.
Create on PPSSPP & Create on RealPSP
ULJM05571_PPSSPP.zip
ULJM05571_RealPSP.zip

And iso files CRC32 = F4ED0A50
Referring ==> http://redump.org/disc/66541/

Related to #12753

Similar #7244?

I think #12753 not related.
(Text appearing issue? May be?)

Umm...
#7244 is near?
But, I'm not talking about ”statesave”.

Pure ”Save” by the game system.

Did this stop happening?

-[Unknown]

Did this stop happening?

-[Unknown]

Assassin's Creed Bloodlines can't be saved even i don't use savestates.

Gonna reopen then I guess.

Oh!
Should it be considered?

This also happens on linux version of ppsspp.
latest tested: v1.7.5-403-g128c0ad

os: gentoo
latest dev binary used. would seem to be a state change or copy protection being involved.

We had an issue like that which I could reproduce back when starting to play this game, however could not later when trying to reproduce it and it was eventually closed as it could be a savestate time travel issue where player loads a savestate made before last savedata, thus disabling game's ability to recognize memstick.

I also fixed this with a hack back when starting to play this game by doing the exact thing I would with games that have time travel issue that is made a check for savedata always match, so the game could recognize savedata it didn't matched to.

Now, when I was testing it after completing a game I had that hack disabled and savedata still worked, in fact I can still load my savedata today without the hack, pick any mission from animus or just continue before last boss, it saves and can be loaded without issues so if affected people never used savestates, it could mean other things, for example that:

  • some initial save points in the game are broken,
  • game has memory allocation problems and early in the game calculates savedata hash from a memory which does not have savedata,
  • maybe it tries to calculate savedata hash before initially creating savedata due to some threading or timing issues,
  • something else?

Either way if you see a message a game cannot detect memory stick used at the start of the game, it has detected a hash missmatch between savedata it stores in it's memory(after loading or initially creating it) and the savedata stored on the memstick.
This is no copy protection or anything alike, quite a few games do check for savedata hash or savedata iteration to disallow saving over different savedata if memstick was changed after game was booted.

I am mostly sure the answer is no, but does this game ever call sceIoChstat()? I saw a log once that made me think a game was clearing the FAT archive bit, and then using that to check if Windows or similar has modified it (Windows will always set the bit whenever modifying a file.)

We always indicate the archive bit is cleared, but if this game ever does anything similar or if we sometimes don't set a field most games don't check, that might explain why this doesn't always happen.

If this happens, are you able to delete the save data and continue saving? Or are you stuck unable to save unless you can somehow match its mistaken hash?

-[Unknown]

@unknownbrackets
@LunaMoo

Here is report

If this happens, are you able to delete the save data and continue saving?>

I tested this case.
Result : Can not save
Error type : Same

Step1:Start the game.
Step2:Delete the ULJM05571(Savedata)
Step3:Clear the 1st Stage and coming save point.
Step4:Appear the Error screen.

And,Not create savedata after the error.

@unknownbrackets
@LunaMoo

Here is report

If this happens, are you able to delete the save data and continue saving?>

I tested this case.
Result : Can not save
Error type : Same

Step1:Start the game.
Step2:Delete the ULJM05571(Savedata)
Step3:Clear the 1st Stage and coming save point.
Step4:Appear the Error screen.

And,Not create savedata after the error.

Exactly. This happens upon a New game on the initial saving is done and you play until the first save point. I could delve deeper and get terminal logs / assembly / testing if needed for you.

Never used a save state.. It is beginning of games first save once playing as @nassau-tk has said.

Um...
Windows10(64-bit) is not happen the issue.

May be this issue is very difficult.
But,I wonder it why don't attached the label(Tag)??

I tested v1.10.3-833.
Because,#13365 solved by this build.

I started by "continue".
The loaded file was moved from Real PSP.
It could saved correctly only the 1 time.
"Just 1 time".
And, next time couldn't save.
Appeared the same error dialog.

I deleted the Save Data and play "NewGame".
But,It could't save correctly.

I had never success to save on Android.
I think that I also succeeded in only once may be related to this build.
Because,This game using Autosave system.

I don't have any knowledge.
This is amateur's impressions.
For reference.

Wao!
Awesome!!
My amatures impression was not related.
But,I will become so happy by this PR!!

Yes!
I tested on Android device.
It's solved!
Thank you!!