Comments (20)
@gjano Can you explain how you were able to convert SFS to WGS.
from xgp-save-extractor.
Would it be possible to implement the other way around? I.e. converting Steam save into XGP
from xgp-save-extractor.
Yes I have also been unable to understand how to do it only from the comments here... Sorry if it's a stupid question
from xgp-save-extractor.
I could look into it, but I only have the Steam version.
If you have the MS Store / Game Pass version and don't mind sharing your save with me, could you check %LocalAppData%\Packages
and see if there's anything related to Starfield. If so, could you share the contents of SystemAppData\wgs
inside the Starfield-related folder?
You can send me an email if you don't want to share the save file publicly.
from xgp-save-extractor.
from xgp-save-extractor.
Can you please test the PR (if you also have the Steam version), as I didn't want to risk my current Starfield save 😄
from xgp-save-extractor.
Oh and the Steam version SFS save files live in C:\Users\username\Documents\My Games\Starfield\Saves
from xgp-save-extractor.
The saves were out of order in game list but they loded just fine on the steam version of the game thank you
from xgp-save-extractor.
Great, thanks for testing!
from xgp-save-extractor.
Maybe, but the WGS container index (the containers.index
file) has some fields that I don't know the meaning of, so I don't really know how to reconstruct those. Maybe the information floats somewhere on the internet or maybe the values are not really used.
Either way it would require some extra research, which I might do some day. No promises here currently.
from xgp-save-extractor.
For other, simpler, games where 1 data file in WGS corresponds to 1 file in non-WGS I have just copied data from the non-WGS save into the containerized file (keeping the WGS header) and it worked (the save even works in XCloud then) so I guess at least containers.index
does not contain checksums or even sizes (or it did not for those games). My guess is just being able to convert a SFS file into a container (i.e. a container.2
file + bunch of data files) should do it, then you'd just need to replace an existing container with the exported one. However I am missing the logic to split the original SFS file. Reconstructing is easier since you just need to append all of them in the right order but I have noticed they are not the same size so I guess there is a logic behind it. Maybe a container with a single data file would work... will try when I have the opportunity.
from xgp-save-extractor.
All "chunks" seem to begin with 78 5e
. I have checked my own non-WGS save and in fact if I search for aligned occurrences of 78 5e
most of the times they are preceded by some padding. However in some cases they are not, so it is unclear whether the previous block just randomly happened to have the right size or the block is actually a false positive. I guess the size is stored somewhere in that block header but I couldn't figure it out yet (also not sure what size to look for, the full block, the block minus the header for which I don't know the length...)
from xgp-save-extractor.
The chunks are padded to the next 16-byte boundary with the repeating string padding\0
, where \0
is NUL. If the chunk size is a multiple of 16, there's no padding.
from xgp-save-extractor.
I know, what I mean is if a block happens to have a size which is a exact multiple of 16 (so it does not need any padding) it is hard to tell if it is indeed a block or not. E.g. this one is the beginning of a block for sure:
But this one could be a block or maybe a random 78 5e
just happened to be aligned:
Like I said I guess somewhere after 78 5e
you have the size of the block (or part of it) so you could be 100% sure.
from xgp-save-extractor.
These 785E blocks are compressed using Zlib. So when a block fails to decompress, that means it's incomplete, so I append the next one. By doing this I think I have managed to convert a SFS file into a container. At least all the individual files except for the one corresponding to the beginning of the SFS file (BCPS header) can be decompressed using Zlib and they seem to contain meaningful information. Will try actually injecting them into the game when it launches on XGP.
from xgp-save-extractor.
Anyone test out Steam -> XGP save file conversion yet?
from xgp-save-extractor.
I can confirm the method I described above works for this purpose.
from xgp-save-extractor.
Yea, I'd love to be able to go from SFS to WGS as well!
from xgp-save-extractor.
Same!
from xgp-save-extractor.
Tracking the Steam -> XGP conversion in #11, so I'm locking this issue.
Thanks @gjano for figuring out the details!
from xgp-save-extractor.
Related Issues (20)
- add Middle earth shadow of war save please HOT 1
- Support for My Time At Sandrock
- Elden Ring HOT 5
- Support for [shadow of war]
- Support for [Palworld]
- Support for [shadow of war] HOT 2
- Support for Like a Dragon: Ishin HOT 4
- PALWORLD BUG
- Support for [Fuga: Melodies of Steel] HOT 2
- Support for [Citizen Sleeper]
- Support for [Dungeons of Hinterberg]
- Support for [Neon White] HOT 3
- Support for [Shadow Warrior 3: Enhanced Edition]
- Support for [Slayers X - Terminal Aftermath - Vengance of the Slayer]
- Support for The Walking Dead: Season Two HOT 2
- Unable to convert without the game installed HOT 9
- Support for [Tunic] HOT 1
- Support for Halo: Infinite (Campaign) HOT 2
- Support for [Yakuza 4 Remastered]
- Support for Dungeons of Hinterberg HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from xgp-save-extractor.