Fr33dan / GPSaveConverter

Utility to transfer save files between the games installed from the Xbox app and other storefronts. https://ko-fi.com/fr33dan
297 stars 33 forks source link

A Plague Tale Requiem error #24

Open MaluNoPeleke opened 1 year ago

MaluNoPeleke commented 1 year ago

When I want to move my savegame from Game Pass to Steam for the game "A Plague Tale Requiem" I always get this error: image This is how the window looks like: image Here is a TRACE log: GPSaveConverter.log How to fix it? @Fr33dan @Virakal

Fr33dan commented 1 year ago

Someone needs to create a file translation for this game. The issues tab here is full of requests for them but I haven't had the time to do so. They are documented at here. This game it would not be too hard to adapt the example from Guardians of the Galaxy.

MaluNoPeleke commented 1 year ago

Thanks, I have read the documentation about it but it is unclear for what to do now. Should I create a file with different regex expressions and import it and what kind of format should it have?

Fr33dan commented 1 year ago

You've made me realized I've left a basic out of the documentation. You should use the view menu to show the file translations panel. Then you can type the various values in there and experiment to make sure when you select the file in one box, the corresponding file in the other is selected.

Having this files already will make it easier for users who have the game to work and create these translations than it is for me. I have to install the game create a fake directory structure with dummy files with the same names for the non-xbox version to test it and it's a big pain.

I've got an idea for an update to smooth the process, but haven't had time to implement it.

MaluNoPeleke commented 1 year ago

Okay, and by using that panel I can also move the files once I found out the right values? Or do I need to report them and wait for an update of your application?

Fr33dan commented 1 year ago

You will be able to copy them once the values in that panel are correct. All the database does is populate that panel, the contents of the panel determine what the software will (attempt to) do. This means you could break a good configuration accidentally which is why I hid it by default. If you report the working values here I can add it to the database so it will work for future users without them having to worry about it.

MaluNoPeleke commented 1 year ago

By only changing the Xbox Blob Id it works nearly but the files get ^ added to the beginning and $ to the end: image How to avoid that?

Fr33dan commented 1 year ago

I think the blob ID should just be fixed as "data" without and groups. You got that as I was typing :-)

Your non-Xbox files alls start with "\" which means they won't match. You need to add the slash to the non-xbox location so that it won't be in the file listing. And I am going to create an issue to fix later to do it automatically as part of input validation.

MaluNoPeleke commented 1 year ago

The game complains that all the files are corrupted and cannot be used. Is that a game specific issue or a tool specific one? When I now start the tool again it greets me with this error message: image

System.ArgumentException: Ambiguous Xbox container results bei GPSaveConverter.Library.GameInfo.getXboxFileVersion(XboxContainerIndex index, NonXboxFileInfo file, Boolean createOrUpdate) bei GPSaveConverter.SaveFileConverterForm.nonXboxFilesTable_SelectionChanged(Object sender, EventArgs e) bei System.Windows.Forms.DataGridView.OnSelectionChanged(EventArgs e) bei System.Windows.Forms.DataGridView.FlushSelectionChanged() bei System.Windows.Forms.DataGridView.ClearSelection(Int32 columnIndexException, Int32 rowIndexException, Boolean selectExceptionElement) bei System.Windows.Forms.DataGridView.SetAndSelectCurrentCellAddress(Int32 columnIndex, Int32 rowIndex, Boolean setAnchorCellAddress, Boolean validateCurrentCell, Boolean throughMouseClick, Boolean clearSelection, Boolean forceCurrentCellSelection) bei System.Windows.Forms.DataGridView.MakeFirstDisplayedCellCurrentCell(Boolean includeNewRow) bei System.Windows.Forms.DataGridView.OnRowCollectionChanged_PostNotification(Boolean recreateNewRow, Boolean allowSettingCurrentCell, CollectionChangeAction cca, DataGridViewRow dataGridViewRow, Int32 rowIndex) bei System.Windows.Forms.DataGridViewRowCollection.OnCollectionChanged_PostNotification(CollectionChangeAction cca, Int32 rowIndex, Int32 rowCount, DataGridViewRow dataGridViewRow, Boolean changeIsDeletion, Boolean changeIsInsertion, Boolean recreateNewRow, Point newCurrentCell) bei System.Windows.Forms.DataGridViewRowCollection.OnCollectionChanged(CollectionChangeEventArgs e, Int32 rowIndex, Int32 rowCount, Boolean changeIsDeletion, Boolean changeIsInsertion, Boolean recreateNewRow, Point newCurrentCell) bei System.Windows.Forms.DataGridViewRowCollection.InsertInternal(Int32 rowIndex, DataGridViewRow dataGridViewRow, Boolean force) bei System.Windows.Forms.DataGridView.DataGridViewDataConnection.ProcessListChanged(ListChangedEventArgs e) bei System.Windows.Forms.DataGridView.DataGridViewDataConnection.currencyManager_ListChanged(Object sender, ListChangedEventArgs e) bei System.Windows.Forms.CurrencyManager.OnListChanged(ListChangedEventArgs e) bei System.Windows.Forms.CurrencyManager.List_ListChanged(Object sender, ListChangedEventArgs e) bei System.ComponentModel.BindingList1.OnListChanged(ListChangedEventArgs e) bei System.ComponentModel.BindingList1.FireListChanged(ListChangedType type, Int32 index) bei System.ComponentModel.BindingList1.InsertItem(Int32 index, T item) bei System.Collections.ObjectModel.Collection1.Add(T item) bei GPSaveConverter.Library.GameInfo.d46.MoveNext() --- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde --- bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) bei GPSaveConverter.Library.GameInfo.d45.MoveNext() --- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde --- bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) bei GPSaveConverter.SaveFileConverterForm.d__10.MoveNext() --- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde --- bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) bei GPSaveConverter.SaveFileConverterForm.d29.MoveNext() --- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde --- bei System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.b6_0(Object state)

** Geladene Assemblys ** mscorlib Assembly-Version: 4.0.0.0. Win32-Version: 4.8.9105.0 built by: NET481REL1LAST_C. CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll.

GPSaveConverter Assembly-Version: 0.4.0.0. Win32-Version: 0.4.5.4. CodeBase: file:///C:/Program%20Files%20(x86)/Steam/userdata/8695/1182900/remote/GPSaveConverter.exe.

System.Windows.Forms Assembly-Version: 4.0.0.0. Win32-Version: 4.8.9075.0 built by: NET481REL1LAST_C. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll.

System Assembly-Version: 4.0.0.0. Win32-Version: 4.8.9065.0 built by: NET481REL1LAST_C. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll.

System.Drawing Assembly-Version: 4.0.0.0. Win32-Version: 4.8.9032.0 built by: NET481REL1. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll.

System.Configuration Assembly-Version: 4.0.0.0. Win32-Version: 4.8.9032.0 built by: NET481REL1. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll.

System.Core Assembly-Version: 4.0.0.0. Win32-Version: 4.8.9105.0 built by: NET481REL1LAST_C. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll.

System.Xml Assembly-Version: 4.0.0.0. Win32-Version: 4.8.9032.0 built by: NET481REL1. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll.

System.Windows.Forms.resources Assembly-Version: 4.0.0.0. Win32-Version: 4.8.9032.0 built by: NET481REL1. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_de_b77a5c561934e089/System.Windows.Forms.resources.dll.

NLog Assembly-Version: 5.0.0.0. Win32-Version: 0.4.5.4. CodeBase: file:///C:/Program%20Files%20(x86)/Steam/userdata/8695/1182900/remote/GPSaveConverter.exe.

NLog.Windows.Forms Assembly-Version: 4.0.0.0. Win32-Version: 0.4.5.4. CodeBase: file:///C:/Program%20Files%20(x86)/Steam/userdata/8695/1182900/remote/GPSaveConverter.exe.

System.ComponentModel.DataAnnotations Assembly-Version: 4.0.0.0. Win32-Version: 4.8.9032.0. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.ComponentModel.DataAnnotations/v4.0_4.0.0.0__31bf3856ad364e35/System.ComponentModel.DataAnnotations.dll.

System.Text.Json Assembly-Version: 6.0.0.5. Win32-Version: 0.4.5.4. CodeBase: file:///C:/Program%20Files%20(x86)/Steam/userdata/8695/1182900/remote/GPSaveConverter.exe.

System.Memory Assembly-Version: 4.0.1.1. Win32-Version: 0.4.5.4. CodeBase: file:///C:/Program%20Files%20(x86)/Steam/userdata/8695/1182900/remote/GPSaveConverter.exe.

System.Runtime.CompilerServices.Unsafe Assembly-Version: 6.0.0.0. Win32-Version: 0.4.5.4. CodeBase: file:///C:/Program%20Files%20(x86)/Steam/userdata/8695/1182900/remote/GPSaveConverter.exe.

System.ValueTuple Assembly-Version: 4.0.0.0. Win32-Version: 4.8.9032.0. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.ValueTuple/v4.0_4.0.0.0__cc7b13ffcd2ddd51/System.ValueTuple.dll.

Microsoft.Bcl.AsyncInterfaces Assembly-Version: 6.0.0.0. Win32-Version: 0.4.5.4. CodeBase: file:///C:/Program%20Files%20(x86)/Steam/userdata/8695/1182900/remote/GPSaveConverter.exe.

System.Text.Encodings.Web Assembly-Version: 6.0.0.0. Win32-Version: 0.4.5.4. CodeBase: file:///C:/Program%20Files%20(x86)/Steam/userdata/8695/1182900/remote/GPSaveConverter.exe.

System.Buffers Assembly-Version: 4.0.3.0. Win32-Version: 0.4.5.4. CodeBase: file:///C:/Program%20Files%20(x86)/Steam/userdata/8695/1182900/remote/GPSaveConverter.exe.

System.Numerics.Vectors Assembly-Version: 4.1.4.0. Win32-Version: 0.4.5.4. CodeBase: file:///C:/Program%20Files%20(x86)/Steam/userdata/8695/1182900/remote/GPSaveConverter.exe.

System.Management.Automation Assembly-Version: 3.0.0.0. Win32-Version: 10.0.22621.436. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Management.Automation/v4.0_3.0.0.0__31bf3856ad364e35/System.Management.Automation.dll.

Microsoft.PowerShell.Commands.Diagnostics Assembly-Version: 3.0.0.0. Win32-Version: 10.0.22621.1. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Microsoft.PowerShell.Commands.Diagnostics/v4.0_3.0.0.0__31bf3856ad364e35/Microsoft.PowerShell.Commands.Diagnostics.dll.

System.Management.Automation.resources Assembly-Version: 3.0.0.0. Win32-Version: 10.0.22621.436. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Management.Automation.resources/v4.0_3.0.0.0_de_31bf3856ad364e35/System.Management.Automation.resources.dll.

System.Configuration.Install Assembly-Version: 4.0.0.0. Win32-Version: 4.8.9032.0 built by: NET481REL1. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration.Install/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.Install.dll.

Microsoft.PowerShell.ConsoleHost Assembly-Version: 3.0.0.0. Win32-Version: 10.0.22621.1. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Microsoft.PowerShell.ConsoleHost/v4.0_3.0.0.0__31bf3856ad364e35/Microsoft.PowerShell.ConsoleHost.dll.

Microsoft.PowerShell.Commands.Utility Assembly-Version: 3.0.0.0. Win32-Version: 10.0.22621.1. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Microsoft.PowerShell.Commands.Utility/v4.0_3.0.0.0__31bf3856ad364e35/Microsoft.PowerShell.Commands.Utility.dll.

Microsoft.PowerShell.Commands.Management Assembly-Version: 3.0.0.0. Win32-Version: 10.0.22621.436. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Microsoft.PowerShell.Commands.Management/v4.0_3.0.0.0__31bf3856ad364e35/Microsoft.PowerShell.Commands.Management.dll.

Microsoft.Management.Infrastructure Assembly-Version: 1.0.0.0. Win32-Version: 10.0.22621.1. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Microsoft.Management.Infrastructure/v4.0_1.0.0.0__31bf3856ad364e35/Microsoft.Management.Infrastructure.dll.

Microsoft.PowerShell.Security Assembly-Version: 3.0.0.0. Win32-Version: 10.0.22621.1. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Microsoft.PowerShell.Security/v4.0_3.0.0.0__31bf3856ad364e35/Microsoft.PowerShell.Security.dll.

Microsoft.WSMan.Management Assembly-Version: 3.0.0.0. Win32-Version: 10.0.22621.1. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Microsoft.WSMan.Management/v4.0_3.0.0.0__31bf3856ad364e35/Microsoft.WSMan.Management.dll.

mscorlib.resources Assembly-Version: 4.0.0.0. Win32-Version: 4.8.9032.0 built by: NET481REL1. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_de_b77a5c561934e089/mscorlib.resources.dll.

System.Data Assembly-Version: 4.0.0.0. Win32-Version: 4.8.9110.0 built by: NET481REL1LAST_B. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_32/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll.

System.Management Assembly-Version: 4.0.0.0. Win32-Version: 4.8.9032.0 built by: NET481REL1. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Management/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Management.dll.

System.DirectoryServices Assembly-Version: 4.0.0.0. Win32-Version: 4.8.9032.0 built by: NET481REL1. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.DirectoryServices/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.DirectoryServices.dll.

Anonymously Hosted DynamicMethods Assembly Assembly-Version: 0.0.0.0. Win32-Version: 4.8.9105.0 built by: NET481REL1LAST_C. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_32/mscorlib/v4.0_4.0.0.0__b77a5c561934e089/mscorlib.dll.

System.Numerics Assembly-Version: 4.0.0.0. Win32-Version: 4.8.9032.0 built by: NET481REL1. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll.

System.Transactions Assembly-Version: 4.0.0.0. Win32-Version: 4.8.9032.0 built by: NET481REL1. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_32/System.Transactions/v4.0_4.0.0.0__b77a5c561934e089/System.Transactions.dll.

Microsoft.PowerShell.Security.resources Assembly-Version: 3.0.0.0. Win32-Version: 10.0.22621.1. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Microsoft.PowerShell.Security.resources/v4.0_3.0.0.0_de_31bf3856ad364e35/Microsoft.PowerShell.Security.resources.dll.

Microsoft.WSMan.Management.resources Assembly-Version: 3.0.0.0. Win32-Version: 10.0.22621.1. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Microsoft.WSMan.Management.resources/v4.0_3.0.0.0_de_31bf3856ad364e35/Microsoft.WSMan.Management.resources.dll.

Microsoft.PowerShell.Commands.Utility.resources Assembly-Version: 3.0.0.0. Win32-Version: 10.0.22621.1. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Microsoft.PowerShell.Commands.Utility.resources/v4.0_3.0.0.0_de_31bf3856ad364e35/Microsoft.PowerShell.Commands.Utility.resources.dll.

Microsoft.Windows.Appx.PackageManager.Commands Assembly-Version: 10.0.0.0. Win32-Version: 10.0.22621.1. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Microsoft.Windows.Appx.PackageManager.Commands/v4.0_10.0.0.0__31bf3856ad364e35/Microsoft.Windows.Appx.PackageManager.Commands.dll.

Windows.Management Assembly-Version: 255.255.255.255. Win32-Version: 10.0.10011.16384. CodeBase: file:///C:/WINDOWS/SysNative/WinMetadata/Windows.Management.winmd.

Windows.Foundation Assembly-Version: 255.255.255.255. Win32-Version: 10.0.10011.16384. CodeBase: file:///C:/WINDOWS/SysNative/WinMetadata/Windows.Foundation.winmd.

System.Runtime Assembly-Version: 4.0.0.0. Win32-Version: 4.8.9032.0. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Runtime/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Runtime.dll.

Windows.ApplicationModel Assembly-Version: 255.255.255.255. Win32-Version: 10.0.10011.16384. CodeBase: file:///C:/WINDOWS/SysNative/WinMetadata/Windows.ApplicationModel.winmd.

System.Runtime.WindowsRuntime Assembly-Version: 4.0.0.0. Win32-Version: 4.8.9032.0 built by: NET481REL1. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.WindowsRuntime/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.WindowsRuntime.dll.

Windows.System Assembly-Version: 255.255.255.255. Win32-Version: 10.0.10011.16384. CodeBase: file:///C:/WINDOWS/SysNative/WinMetadata/Windows.System.winmd.

Windows.Storage Assembly-Version: 255.255.255.255. Win32-Version: 10.0.10011.16384. CodeBase: file:///C:/WINDOWS/SysNative/WinMetadata/Windows.Storage.winmd.

WindowsBase Assembly-Version: 4.0.0.0. Win32-Version: 4.8.9105.0 built by: NET481REL1LAST_C. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/WindowsBase/v4.0_4.0.0.0__31bf3856ad364e35/WindowsBase.dll.

** JIT-Debuggen ** Um das JIT-Debuggen (Just-In-Time) zu aktivieren, muss in der Konfigurationsdatei der Anwendung oder des Computers (machine.config) der jitDebugging-Wert im Abschnitt system.windows.forms festgelegt werden. Die Anwendung muss mit aktiviertem Debuggen kompiliert werden.

Zum Beispiel:

Fr33dan commented 1 year ago

So which direction are you trying to go? non-Xbox -> Xbox or the other way? Unless I've forgotten something that error occurs when you are trying to move a non-Xbox file -> Xbox, but there are more than one possible match on the containers regex. Your screenshots show non-Xbox file created which would mean you did a Xbox -> non-Xbox move.

I would try clearing out your WGS folder, running the game to let Xbox re-build it from the cloud then try again moving only the slot00 file. Check the edit date before and after you copy and to make sure the right file has been copied. If you are sure copied the right file then it is some thing in the game they are doing different between the versions.

MaluNoPeleke commented 1 year ago

Yes, I copied from Xbox to non Xbox and the file size differs quite a bit (few kb Steam default save game vs. nearly 10mb Xbox my late game save). I renamed it correctly as I didn't know where exactly I should change something in your tool regarding the slash /

BTW: Virakal has added some nice features which you might integrate as well: https://github.com/Virakal/GPSaveConverter

Fr33dan commented 1 year ago

I am refering to "File > Edit non-Xbox file location". If you didn't use that function how did your non-xbox save file get populated? In my testing using the "Select non-Xbox location" includes this slash. Well they are different, but if after you're done the slot00 is the large file then you know you got the right one because the settings and input wouldn't get larger over time. Sorry but all this work and I think we confirmed it won't work :-(

I had not seen that fork it looks like he fixed a feature I wrote but hadn't fully tested and thus wasn't part of the release version (and if based on a quick look at his changes it may have been bugged). That and some bug fixes that fix issues I haven't experienced or seen reported, but are good changes. Well except removing some whitespace that I think improved readability but that's more preference than anything else. I may merge them next time I get a chance to actually work on this beyond making some comments here.

Things are settling down now that I'm finishing up a transition into a new job so there may be some movement finally before too long.

MaluNoPeleke commented 1 year ago

I just run GPSaveConverter.exe from the Steam "A Plague Tale" save game directory because whenever I open the "Select non-Xbox Location" dialog I only can choose the Desktop as destination: image

I now added the backslash manually but still get the same issue: image