fholger / RocksmithToTab

Exports Rocksmith 2014 songs to Guitar Pro tabs
http://www.rocksmithtotab.de
BSD 2-Clause "Simplified" License
211 stars 36 forks source link

Exception raised on W11 #48

Open kgfeuerherm opened 1 year ago

kgfeuerherm commented 1 year ago

I used to use this tool without trouble, but lately it bombs part way through. I have removed any CDLC just in case it was caused by badly coded psarc, but that does not seem to be the case...

I've pasted the output from the relevant point below as I don't see a log file...

New info: the culprit is the RS1 compatibility file.Too large to upload here, so here's a link to it in my NAS: https://os5.mycloud.com/action/share/a31664ea-aa43-4701-bb3b-d0b2028e536c.

Converting song pumpedupkicks ... Opening arrangement bass for song id pumpedupkicks... Opening arrangement combo for song id pumpedupkicks...

Unhandled Exception: Newtonsoft.Json.JsonSerializationException: Error converting value {null} to type 'System.Int32'. Path 'Entries.C7A72C01B0BF25D683906F6BF171040A.Attributes.LeaderboardChallengeRating', line 602, position 41. ---> System.InvalidCastException: Null object cannot be converted to a value type. at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EnsureType(JsonReader reader, Object value, CultureInfo culture, JsonContract contract, Type targetType) --- End of inner exception stack trace --- at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EnsureType(JsonReader reader, Object value, CultureInfo culture, JsonContract contract, Type targetType) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty property, JsonConverter propertyConverter, JsonContainerContract containerContract, JsonProperty containerProperty, JsonReader reader, Object target) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateDictionary(IDictionary dictionary, JsonReader reader, JsonDictionaryContract contract, JsonProperty containerProperty, String id) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateDictionary(IDictionary dictionary, JsonReader reader, JsonDictionaryContract contract, JsonProperty containerProperty, String id) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ResolvePropertyAndCreatorValues(JsonObjectContract contract, JsonProperty containerProperty, JsonReader reader, Type objectType, IDictionary2& extensionData) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObjectUsingCreatorWithParameters(JsonReader reader, JsonObjectContract contract, JsonProperty containerProperty, ObjectConstructor1 creator, String id) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateNewObject(JsonReader reader, JsonObjectContract objectContract, JsonProperty containerMember, JsonProperty containerProperty, String id, Boolean& createdFromNonDefaultCreator) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent) at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType) at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings) at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings) at RocksmithToTabLib.PsarcBrowser.GetArrangement(String identifier, String arrangement) at RocksmithToTab.Program.ExportPsarc(String psarcFile, CmdOptions options) at RocksmithToTab.Program.Main(String[] args)

ameyp commented 1 year ago

Getting the same error for pumpedupkicks

krack2222 commented 5 months ago

Hello, same issue here, it's pumpedupkicks that raises the exception. 37 dlc files from RS1 are not generated. I tried to extract from the dlc pckage with rstoolkit but it seems to fail at the same exact line. it's a pity not to have all the rush tabs. I hope someone finds a solution.

krack2222 commented 5 months ago

hi, me again.

I've found a workaround to get almost all the missing files: using the command line to target the songs in the package.

You can create a .bat file or use the windows command line to execute something like that: RocksmithToTab rs1compatibilitydlc_p.psarc -s subdivisions,superfreak,surrender,symofdest,synchronicityii,thereaper,thethrillisgone,thislove,tightenup,timeslike,tomsawyer -f gpx

A reminder '-l' will give you the name of the songs for the command line.

With this method I've found out that there are actually 2 songs that rises an error during export:

I've not found a way to extract them as of yet.

GreatNewHope commented 5 months ago

This problem has already been solved. The fix is here https://github.com/fholger/RocksmithToTab/pull/49#issuecomment-2132250082

kgfeuerherm commented 5 months ago

@GreatNewHope Thanks for pointing us to that solution!