Closed abc159835 closed 3 months ago
Thanks for reporting this.
Unfortunately, data about which save file requires DLCs is stored in SysSave
.
But there is a workaround.
Also some notes:
This is because DLCs are just files that the game checks for before granting you the DLC bonuses.
I don't know what will happen if you load a save file on the Safety difficulty when you don't have its DLC. It might act the same, but it might not. It shouldn't be an issue if your save file was not on that difficulty.
While I did find some differences between DLC and non-DLC save files, the only thing that matters is the info in SysSave
.
In conclusion, the workaround I mentioned should work. I'll try to find a way to decrypt and edit the SysSave
file.
Update: The decrypt
, encrypt
and update_hash
commands work on SysSave
.
Finding where DLC ownership info is stored might not be as hard as I thought.
Turns out I'm wrong, but analyzing SysSave
still gave me valuable insight.
You can now remove a DLC flag from a save file by running: kadishutu edit $FILE dlc remove "2 Sacred Treasures Set"
.
If you want to do this yourself, do the following:
Decrypt the save file with kadishutu decrypt $FILE $TEMP_FILE
.
You previously played with all DLCs, which gives us 0b11111110
or 0xfe
.
Since the other version of the game doesn't have the "2 Sacred Treasures Set" DLC, we're subtracting 0x10000000
or 0x40
.
Maths time!
0b11111110 - 0b10000000 = 0b01111110
or 0xfe - 0x40 = 0x7e
Change the byte at 0x529
from 0xfe
to 0x7e
.
Run kadishutu encrypt --update-hash True $TEMP_FILE $FILE
to re-encrypt the save file.
As mentioned in my previous comment, you'll keep the items. However, I don't know what will happen if you add that DLC back.
IMO: Wost case is you'll have two of those items.
Thank you very much for your help, it has given me a better understanding of the archive structure.
Maybe because I'm a fool, I tried many times but didn't succeed. I can assure you that I successfully ran kadishutu edit xxxx\GameSave01.sav dlc remove "2 Sacred Treasures Set"
. The output of the program was fine, and after checking through the GUI commands, "2 Sacred Treasures Set" was indeed not selected. However, the game still prompts that the save file contains unlocked DLC, even though I used kadishutu to remove all DLC.
Kadishutu works well for modifying demons, the changes were successful and displayed in the game. The Kadishutu GUI cannot open player info; it errors out when trying to fetch my player name.
You reminded me: For SMT5V, the game contains all the DLCs, no additional downloads are needed. So, since modifying the save data didn't work, I tried to trick the game into thinking I had the "2 Sacred Treasures Set" (as it was a pre-order bonus, it cannot be purchased now).
I used SmokeAPI (https://github.com/acidicoala/SmokeAPI) and successfully unlocked the "2 Sacred Treasures Set" DLC. At the same time, I noticed that a DLC named "Japanese Voice Pack" was also unlocked.
That's strange, isn't the Japanese voice pack supposed to come with the game?!
Here is the relevant information from SmokeAPI when unlocking the DLC:
🟩│ 15:14:06.946 │ 85:steam_apps.cpp ┃ ISteamApps_BIsDlcInstalled -> App ID: 1875830, DLC ID: 2107724, Unlocked: true
🟩│ 15:14:06.946 │ 85:steam_apps.cpp ┃ ISteamApps_BIsDlcInstalled -> App ID: 1875830, DLC ID: 2107723, Unlocked: true
🟩│ 15:14:06.946 │ 85:steam_apps.cpp ┃ ISteamApps_BIsDlcInstalled -> App ID: 1875830, DLC ID: 2107722, Unlocked: true
🟩│ 15:14:06.946 │ 85:steam_apps.cpp ┃ ISteamApps_BIsDlcInstalled -> App ID: 1875830, DLC ID: 2107721, Unlocked: true
🟩│ 15:14:06.946 │ 85:steam_apps.cpp ┃ ISteamApps_BIsDlcInstalled -> App ID: 1875830, DLC ID: 2106500, Unlocked: true
🟩│ 15:14:06.946 │ 85:steam_apps.cpp ┃ ISteamApps_BIsDlcInstalled -> App ID: 1875830, DLC ID: 2107720, Unlocked: true
🟩│ 15:14:06.946 │ 85:steam_apps.cpp ┃ ISteamApps_BIsDlcInstalled -> App ID: 1875830, DLC ID: 2107725, Unlocked: true
🟩│ 15:14:06.946 │ 85:steam_apps.cpp ┃ ISteamApps_BIsDlcInstalled -> App ID: 1875830, DLC ID: 9999999, Unlocked: true
🟩│ 15:14:06.946 │ 85:steam_apps.cpp ┃ ISteamApps_BIsDlcInstalled -> App ID: 1875830, DLC ID: 9999999, Unlocked: true
Thanks again for your help, without your kindness, I wouldn't have been able to successfully transfer the game save. :)
I'm glad it worked out in the end.
Editing the player's name is broken, so the GUI doesn't write it to the file.
Could you give me the value at 0x529
?
The 0th bit of this value is always unset for me, but I think it might be related to the Japanese Voice Pack DLC. I think Atlus may have wanted to make it a separate DLC, but decided not to and just included the data in the game. SmokeAPI detects that the game checks for a non-existent DLC but still unlocks it.
the value is 0xFE
Oh. I guess I was wrong. Thanks anyway.
I have just created a new save file, and without using SmokeAPI, the "2 Sacred Treasures Set" is indeed locked; the value changed from 0xFE
to 0x7E
.
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F
00000520 00 7E 00 00 00 00 00 00
Comparing it to the state where all DLCs are unlocked:
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F
00000520 00 FE 03 00 00 00 00 00
I noticed a change in the value at offset 0x52A
. After synchronizing the modification at offset 0x52A
, it worked, and the save file loaded successfully without SmokeAPI being enabled.
By the way, after re-unlocking the "2 Sacred Treasures Set," I didn't receive duplicate items. :)
Thanks!
I'm excited to find a Save editor for SMT5V, as I'm having problems with the Savefile transfer. Since the other version does not contain the DLC - 2 Sacred Treasure Sets and my Savefile contains the data for this DLC. Therefore the game cannot Load this Save. I am asking for help if I can remove the relevant data for compatibility. Thank you!