MapStudioProject / CTR-Studio

An editor for 3DS formats including BCH and BCRES.
MIT License
89 stars 9 forks source link

Support for earlier versions of the BCH formats #51

Open RhythmThief2012 opened 8 months ago

RhythmThief2012 commented 8 months ago

Hi! While attempting to document every model used in Rhythm Thief and the Emperor's Treasure, I came across some files that were unable to be opened. These files do not open in SPICA, Ohana 3DS, or Ohana Rebirth. I was wondering if support would be able to be added. I've attached a link to all the files. The file types in the ZIP are: BCMDL, BCSKLA, BCCAM, BCENV, BCMATA, BCLGT, CRES. https://drive.google.com/file/d/1OOc51kGKuXCZb_oJnkU_0990ZtN34ha1/view

RhythmThief2012 commented 1 month ago

Just in case the file is inaccessible, I've uploaded a copy here. Hope this helps! Leftover Debug Files.zip

RhythmThief2012 commented 1 month ago

Here's the errors generated for each file type:

BCMDL: Object of type 'SPICA.Formats.CtrGfx.Texture.GfxTextureImage' cannot be converted to type 'SPICA.Formats.CtrGfx.Model.GfxModel'. at System.RuntimeType.TryChangeType(Object value, Binder binder, CultureInfo culture, Boolean needsSpecialCast) at System.RuntimeType.CheckValue(Object value, Binder binder, CultureInfo culture, BindingFlags invokeAttr) at System.Reflection.RtFieldInfo.SetValue(Object obj, Object value, BindingFlags invokeAttr, Binder binder, CultureInfo culture) at SPICA.Serialization.BinaryDeserializer.ReadObject(Type ObjectType, Boolean IsRef) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 276 at SPICA.Serialization.BinaryDeserializer.ReadValue(Type Type, Boolean IsRef) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 95 at SPICA.Serialization.BinaryDeserializer.Deserialize[T]() in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 33 at SPICA.Formats.CtrGfx.GfxDictionary1.SPICA.Serialization.ICustomSerialization.Deserialize(BinaryDeserializer Deserializer) in C:\projects\ctr-studio\SPICA\SPICA\Formats\CtrGfx\GfxDictionary.cs:line 48 at SPICA.Serialization.BinaryDeserializer.ReadObject(Type ObjectType, Boolean IsRef) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 287 at SPICA.Serialization.BinaryDeserializer.ReadValue(Type Type, Boolean IsRef) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 95 at SPICA.Serialization.BinaryDeserializer.ReadReference(Type Type, FieldInfo Info) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 336 at SPICA.Serialization.BinaryDeserializer.ReadObject(Type ObjectType, Boolean IsRef) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 273 at SPICA.Serialization.BinaryDeserializer.ReadValue(Type Type, Boolean IsRef) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 95 at SPICA.Serialization.BinaryDeserializer.ReadObject(Type ObjectType, Boolean IsRef) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 262 at SPICA.Serialization.BinaryDeserializer.ReadValue(Type Type, Boolean IsRef) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 95 at SPICA.Serialization.BinaryDeserializer.Deserialize[T]() in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 33 at SPICA.Formats.CtrGfx.Gfx.Open(Stream Input) in C:\projects\ctr-studio\SPICA\SPICA\Formats\CtrGfx\Gfx.cs:line 100 at CtrLibrary.Bcres.BCRES.Load(Stream stream) in C:\projects\ctr-studio\Plugins\CtrLibrary\Files\BCRES\BCRES.cs:line 125 at Toolbox.Core.IO.STFileLoader.SetFileFormat(IFileFormat fileFormat, String FileName, Stream stream, Settings settings) in C:\projects\ctr-studio\Toolbox.Core\src\IO\STFileLoader.cs:line 170 at Toolbox.Core.IO.STFileLoader.OpenFileFormat(String FileName, Settings settings) in C:\projects\ctr-studio\Toolbox.Core\src\IO\STFileLoader.cs:line 85 at MapStudio.UI.Workspace.LoadFileFormat(String filePath, Boolean isProject) in C:\projects\ctr-studio\MapStudio.UI\src\Workspace\Workspace.cs:line 349
BCLGT: `Object of type 'SPICA.Formats.CtrGfx.Light.GfxFragmentLight' cannot be converted to type 'SPICA.Formats.CtrGfx.Camera.GfxCamera'. at System.RuntimeType.TryChangeType(Object value, Binder binder, CultureInfo culture, Boolean needsSpecialCast) at System.Reflection.RtFieldInfo.SetValue(Object obj, Object value, BindingFlags invokeAttr, Binder binder, CultureInfo culture) at SPICA.Serialization.BinaryDeserializer.ReadObject(Type ObjectType, Boolean IsRef) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 276 at SPICA.Serialization.BinaryDeserializer.Deserialize[T]() in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 33 at SPICA.Formats.CtrGfx.GfxDictionary1.SPICA.Serialization.ICustomSerialization.Deserialize(BinaryDeserializer Deserializer) in C:\projects\ctr-studio\SPICA\SPICA\Formats\CtrGfx\GfxDictionary.cs:line 48 at SPICA.Serialization.BinaryDeserializer.ReadObject(Type ObjectType, Boolean IsRef) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 287 at SPICA.Serialization.BinaryDeserializer.ReadReference(Type Type, FieldInfo Info) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 344 at SPICA.Serialization.BinaryDeserializer.ReadObject(Type ObjectType, Boolean IsRef) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 273 at SPICA.Serialization.BinaryDeserializer.ReadObject(Type ObjectType, Boolean IsRef) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 262 at SPICA.Serialization.BinaryDeserializer.Deserialize[T]() in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 33 at SPICA.Formats.CtrGfx.Gfx.Open(Stream Input) in C:\projects\ctr-studio\SPICA\SPICA\Formats\CtrGfx\Gfx.cs:line 100 at CtrLibrary.Bcres.BCRES.Load(Stream stream) in C:\projects\ctr-studio\Plugins\CtrLibrary\Files\BCRES\BCRES.cs:line 125 at Toolbox.Core.IO.STFileLoader.SetFileFormat(IFileFormat fileFormat, String FileName, Stream stream, Settings settings) in C:\projects\ctr-studio\Toolbox.Core\src\IO\STFileLoader.cs:line 170 at Toolbox.Core.IO.STFileLoader.OpenFileFormat(String FileName, Settings settings) in C:\projects\ctr-studio\Toolbox.Core\src\IO\STFileLoader.cs:line 85 at MapStudio.UI.Workspace.LoadFileFormat(String filePath, Boolean isProject) in C:\projects\ctr-studio\MapStudio.UI\src\Workspace\Workspace.cs:line 349`
BVENV: `Object of type 'SPICA.Formats.CtrGfx.Light.GfxFragmentLight' cannot be converted to type 'SPICA.Formats.CtrGfx.Camera.GfxCamera'. at System.RuntimeType.TryChangeType(Object value, Binder binder, CultureInfo culture, Boolean needsSpecialCast) at System.Reflection.RtFieldInfo.SetValue(Object obj, Object value, BindingFlags invokeAttr, Binder binder, CultureInfo culture) at SPICA.Serialization.BinaryDeserializer.ReadObject(Type ObjectType, Boolean IsRef) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 276 at SPICA.Serialization.BinaryDeserializer.Deserialize[T]() in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 33 at SPICA.Formats.CtrGfx.GfxDictionary1.SPICA.Serialization.ICustomSerialization.Deserialize(BinaryDeserializer Deserializer) in C:\projects\ctr-studio\SPICA\SPICA\Formats\CtrGfx\GfxDictionary.cs:line 48 at SPICA.Serialization.BinaryDeserializer.ReadObject(Type ObjectType, Boolean IsRef) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 287 at SPICA.Serialization.BinaryDeserializer.ReadReference(Type Type, FieldInfo Info) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 344 at SPICA.Serialization.BinaryDeserializer.ReadObject(Type ObjectType, Boolean IsRef) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 273 at SPICA.Serialization.BinaryDeserializer.ReadObject(Type ObjectType, Boolean IsRef) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 262 at SPICA.Serialization.BinaryDeserializer.Deserialize[T]() in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 33 at SPICA.Formats.CtrGfx.Gfx.Open(Stream Input) in C:\projects\ctr-studio\SPICA\SPICA\Formats\CtrGfx\Gfx.cs:line 100 at CtrLibrary.Bcres.BCRES.Load(Stream stream) in C:\projects\ctr-studio\Plugins\CtrLibrary\Files\BCRES\BCRES.cs:line 125 at Toolbox.Core.IO.STFileLoader.SetFileFormat(IFileFormat fileFormat, String FileName, Stream stream, Settings settings) in C:\projects\ctr-studio\Toolbox.Core\src\IO\STFileLoader.cs:line 170 at Toolbox.Core.IO.STFileLoader.OpenFileFormat(String FileName, Settings settings) in C:\projects\ctr-studio\Toolbox.Core\src\IO\STFileLoader.cs:line 85 at MapStudio.UI.Workspace.LoadFileFormat(String filePath, Boolean isProject) in C:\projects\ctr-studio\MapStudio.UI\src\Workspace\Workspace.cs:line 349`
BCSKLA: `Unable to read beyond the end of the stream. at System.IO.BinaryReader.InternalRead(Int32 numBytes) at System.IO.BinaryReader.ReadUInt32() at SPICA.Formats.CtrGfx.GfxDictionary1.SPICA.Serialization.ICustomSerialization.Deserialize(BinaryDeserializer Deserializer) in C:\projects\ctr-studio\SPICA\SPICA\Formats\CtrGfx\GfxDictionary.cs:line 40 at SPICA.Serialization.BinaryDeserializer.ReadObject(Type ObjectType, Boolean IsRef) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 287 at SPICA.Serialization.BinaryDeserializer.ReadReference(Type Type, FieldInfo Info) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 344 at SPICA.Serialization.BinaryDeserializer.ReadObject(Type ObjectType, Boolean IsRef) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 273 at SPICA.Serialization.BinaryDeserializer.ReadObject(Type ObjectType, Boolean IsRef) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 262 at SPICA.Serialization.BinaryDeserializer.ReadReference(Type Type, FieldInfo Info) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 344 at SPICA.Serialization.BinaryDeserializer.ReadObject(Type ObjectType, Boolean IsRef) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 273 at SPICA.Serialization.BinaryDeserializer.Deserialize[T]() in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 33 at SPICA.Formats.CtrGfx.GfxDictionary1.SPICA.Serialization.ICustomSerialization.Deserialize(BinaryDeserializer Deserializer) in C:\projects\ctr-studio\SPICA\SPICA\Formats\CtrGfx\GfxDictionary.cs:line 48 at SPICA.Serialization.BinaryDeserializer.ReadObject(Type ObjectType, Boolean IsRef) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 287 at SPICA.Serialization.BinaryDeserializer.ReadReference(Type Type, FieldInfo Info) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 344 at SPICA.Serialization.BinaryDeserializer.ReadObject(Type ObjectType, Boolean IsRef) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 273 at SPICA.Serialization.BinaryDeserializer.ReadObject(Type ObjectType, Boolean IsRef) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 262 at SPICA.Serialization.BinaryDeserializer.Deserialize[T]() in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 33 at SPICA.Formats.CtrGfx.Gfx.Open(Stream Input) in C:\projects\ctr-studio\SPICA\SPICA\Formats\CtrGfx\Gfx.cs:line 100 at CtrLibrary.Bcres.BCRES.Load(Stream stream) in C:\projects\ctr-studio\Plugins\CtrLibrary\Files\BCRES\BCRES.cs:line 125 at Toolbox.Core.IO.STFileLoader.SetFileFormat(IFileFormat fileFormat, String FileName, Stream stream, Settings settings) in C:\projects\ctr-studio\Toolbox.Core\src\IO\STFileLoader.cs:line 170 at Toolbox.Core.IO.STFileLoader.OpenFileFormat(String FileName, Settings settings) in C:\projects\ctr-studio\Toolbox.Core\src\IO\STFileLoader.cs:line 85 at MapStudio.UI.Workspace.LoadFileFormat(String filePath, Boolean isProject) in C:\projects\ctr-studio\MapStudio.UI\src\Workspace\Workspace.cs:line 349`
BCMATA: `Object of type 'SPICA.Formats.CtrGfx.GfxDictionary1[SPICA.Formats.CtrGfx.Animation.GfxAnimationElement]' cannot be converted to type 'SPICA.Formats.CtrGfx.Animation.GfxAnimation'. at System.RuntimeType.TryChangeType(Object value, Binder binder, CultureInfo culture, Boolean needsSpecialCast) at System.Reflection.RtFieldInfo.SetValue(Object obj, Object value, BindingFlags invokeAttr, Binder binder, CultureInfo culture) at SPICA.Serialization.BinaryDeserializer.ReadObject(Type ObjectType, Boolean IsRef) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 276 at SPICA.Serialization.BinaryDeserializer.Deserialize[T]() in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 33 at SPICA.Formats.CtrGfx.GfxDictionary1.SPICA.Serialization.ICustomSerialization.Deserialize(BinaryDeserializer Deserializer) in C:\projects\ctr-studio\SPICA\SPICA\Formats\CtrGfx\GfxDictionary.cs:line 48 at SPICA.Serialization.BinaryDeserializer.ReadObject(Type ObjectType, Boolean IsRef) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 287 at SPICA.Serialization.BinaryDeserializer.ReadReference(Type Type, FieldInfo Info) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 344 at SPICA.Serialization.BinaryDeserializer.ReadObject(Type ObjectType, Boolean IsRef) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 273 at SPICA.Serialization.BinaryDeserializer.ReadObject(Type ObjectType, Boolean IsRef) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 262 at SPICA.Serialization.BinaryDeserializer.Deserialize[T]() in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 33 at SPICA.Formats.CtrGfx.Gfx.Open(Stream Input) in C:\projects\ctr-studio\SPICA\SPICA\Formats\CtrGfx\Gfx.cs:line 100 at CtrLibrary.Bcres.BCRES.Load(Stream stream) in C:\projects\ctr-studio\Plugins\CtrLibrary\Files\BCRES\BCRES.cs:line 125 at Toolbox.Core.IO.STFileLoader.SetFileFormat(IFileFormat fileFormat, String FileName, Stream stream, Settings settings) in C:\projects\ctr-studio\Toolbox.Core\src\IO\STFileLoader.cs:line 170 at Toolbox.Core.IO.STFileLoader.OpenFileFormat(String FileName, Settings settings) in C:\projects\ctr-studio\Toolbox.Core\src\IO\STFileLoader.cs:line 85 at MapStudio.UI.Workspace.LoadFileFormat(String filePath, Boolean isProject) in C:\projects\ctr-studio\MapStudio.UI\src\Workspace\Workspace.cs:line 349`
BCCAM: `Object of type 'SPICA.Formats.CtrGfx.Camera.GfxCamera' cannot be converted to type 'SPICA.Formats.CtrGfx.Shader.GfxShader'. at System.RuntimeType.TryChangeType(Object value, Binder binder, CultureInfo culture, Boolean needsSpecialCast) at System.Reflection.RtFieldInfo.SetValue(Object obj, Object value, BindingFlags invokeAttr, Binder binder, CultureInfo culture) at SPICA.Serialization.BinaryDeserializer.ReadObject(Type ObjectType, Boolean IsRef) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 276 at SPICA.Serialization.BinaryDeserializer.Deserialize[T]() in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 33 at SPICA.Formats.CtrGfx.GfxDictionary1.SPICA.Serialization.ICustomSerialization.Deserialize(BinaryDeserializer Deserializer) in C:\projects\ctr-studio\SPICA\SPICA\Formats\CtrGfx\GfxDictionary.cs:line 48 at SPICA.Serialization.BinaryDeserializer.ReadObject(Type ObjectType, Boolean IsRef) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 287 at SPICA.Serialization.BinaryDeserializer.ReadReference(Type Type, FieldInfo Info) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 344 at SPICA.Serialization.BinaryDeserializer.ReadObject(Type ObjectType, Boolean IsRef) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 273 at SPICA.Serialization.BinaryDeserializer.ReadObject(Type ObjectType, Boolean IsRef) in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 262 at SPICA.Serialization.BinaryDeserializer.Deserialize[T]() in C:\projects\ctr-studio\SPICA\SPICA\Serialization\BinaryDeserializer.cs:line 33 at SPICA.Formats.CtrGfx.Gfx.Open(Stream Input) in C:\projects\ctr-studio\SPICA\SPICA\Formats\CtrGfx\Gfx.cs:line 100 at CtrLibrary.Bcres.BCRES.Load(Stream stream) in C:\projects\ctr-studio\Plugins\CtrLibrary\Files\BCRES\BCRES.cs:line 125 at Toolbox.Core.IO.STFileLoader.SetFileFormat(IFileFormat fileFormat, String FileName, Stream stream, Settings settings) in C:\projects\ctr-studio\Toolbox.Core\src\IO\STFileLoader.cs:line 170 at Toolbox.Core.IO.STFileLoader.OpenFileFormat(String FileName, Settings settings) in C:\projects\ctr-studio\Toolbox.Core\src\IO\STFileLoader.cs:line 85 at MapStudio.UI.Workspace.LoadFileFormat(String filePath, Boolean isProject) in C:\projects\ctr-studio\MapStudio.UI\src\Workspace\Workspace.cs:line 349`