Fix TXE decoding with bad image sizes
This commit is contained in:
parent
79d78f64ad
commit
855037d21c
@ -77,7 +77,7 @@ namespace FirstPlugin
|
|||||||
//Lets set our method of decoding
|
//Lets set our method of decoding
|
||||||
PlatformSwizzle = PlatformSwizzle.Platform_Gamecube;
|
PlatformSwizzle = PlatformSwizzle.Platform_Gamecube;
|
||||||
|
|
||||||
int imageDataSize = reader.ReadInt32();
|
int imageDataSize = (int)reader.BaseStream.Length - 32;
|
||||||
|
|
||||||
reader.SeekBegin(32);
|
reader.SeekBegin(32);
|
||||||
|
|
||||||
|
43
Switch_Toolbox_Library/StaticDynamic.cs
Normal file
43
Switch_Toolbox_Library/StaticDynamic.cs
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Dynamic;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
namespace Toolbox.Library
|
||||||
|
{
|
||||||
|
public class StaticDynamic : DynamicObject
|
||||||
|
{
|
||||||
|
private Type _type;
|
||||||
|
public StaticDynamic(Type type) { _type = type; }
|
||||||
|
|
||||||
|
// Handle static properties
|
||||||
|
public override bool TryGetMember(GetMemberBinder binder, out object result)
|
||||||
|
{
|
||||||
|
PropertyInfo prop = _type.GetProperty(binder.Name, BindingFlags.FlattenHierarchy | BindingFlags.Static | BindingFlags.Public);
|
||||||
|
if (prop == null)
|
||||||
|
{
|
||||||
|
result = null;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
result = prop.GetValue(null, null);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle static methods
|
||||||
|
public override bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result)
|
||||||
|
{
|
||||||
|
MethodInfo method = _type.GetMethod(binder.Name, BindingFlags.FlattenHierarchy | BindingFlags.Static | BindingFlags.Public);
|
||||||
|
if (method == null)
|
||||||
|
{
|
||||||
|
result = null;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
result = method.Invoke(null, args);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -744,7 +744,7 @@ namespace Toolbox.Library
|
|||||||
|
|
||||||
private static byte[] DecodeRgb5A3(FileReader stream, uint width, uint height)
|
private static byte[] DecodeRgb5A3(FileReader stream, uint width, uint height)
|
||||||
{
|
{
|
||||||
uint numBlocksW = width / 4; //4 byte block width
|
uint numBlocksW = width / 4; //4 byte block width
|
||||||
uint numBlocksH = height / 4; //4 byte block height
|
uint numBlocksH = height / 4; //4 byte block height
|
||||||
|
|
||||||
byte[] decodedData = new byte[width * height * 4];
|
byte[] decodedData = new byte[width * height * 4];
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -295,6 +295,7 @@
|
|||||||
<Compile Include="Rendering\GenericModelRenderer\GenericRenderedObject.cs" />
|
<Compile Include="Rendering\GenericModelRenderer\GenericRenderedObject.cs" />
|
||||||
<Compile Include="Security\Cryptography\crc32.cs" />
|
<Compile Include="Security\Cryptography\crc32.cs" />
|
||||||
<Compile Include="DrawableContainer.cs" />
|
<Compile Include="DrawableContainer.cs" />
|
||||||
|
<Compile Include="StaticDynamic.cs" />
|
||||||
<Compile Include="Texture Decoding\3DS\ETC1.cs" />
|
<Compile Include="Texture Decoding\3DS\ETC1.cs" />
|
||||||
<Compile Include="FileFormats\Animation\SMD.cs" />
|
<Compile Include="FileFormats\Animation\SMD.cs" />
|
||||||
<Compile Include="FileFormats\APNG\APNG.cs" />
|
<Compile Include="FileFormats\APNG\APNG.cs" />
|
||||||
|
@ -29,8 +29,9 @@ namespace Toolbox
|
|||||||
{
|
{
|
||||||
listViewCustom1.Items.Clear();
|
listViewCustom1.Items.Clear();
|
||||||
|
|
||||||
foreach (var item in FileManager.GetFileFormats())
|
foreach (Type t in FileManager.GetFileFormats())
|
||||||
{
|
{
|
||||||
|
dynamic item = new StaticDynamic(t);
|
||||||
for (int i = 0; i < item.Extension.Length; i++)
|
for (int i = 0; i < item.Extension.Length; i++)
|
||||||
{
|
{
|
||||||
string Extension;
|
string Extension;
|
||||||
|
@ -25,8 +25,8 @@ namespace Toolbox
|
|||||||
private static MainForm _instance;
|
private static MainForm _instance;
|
||||||
public static MainForm Instance { get { return _instance == null ? _instance = new MainForm() : _instance; } }
|
public static MainForm Instance { get { return _instance == null ? _instance = new MainForm() : _instance; } }
|
||||||
|
|
||||||
IFileFormat[] SupportedFormats;
|
IFileFormat[] SupportedFormats { get { return FileManager.GetFileFormats(); } }
|
||||||
IFileMenuExtension[] FileMenuExtensions;
|
IFileMenuExtension[] FileMenuExtensions { get { return FileManager.GetMenuExtensions(); } }
|
||||||
|
|
||||||
public void AddChildContainer(Form form)
|
public void AddChildContainer(Form form)
|
||||||
{
|
{
|
||||||
@ -64,12 +64,6 @@ namespace Toolbox
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Reload()
|
|
||||||
{
|
|
||||||
SupportedFormats = FileManager.GetFileFormats();
|
|
||||||
FileMenuExtensions = FileManager.GetMenuExtensions();
|
|
||||||
}
|
|
||||||
|
|
||||||
//Use for files opened with program
|
//Use for files opened with program
|
||||||
public List<string> openedFiles = new List<string>();
|
public List<string> openedFiles = new List<string>();
|
||||||
|
|
||||||
@ -122,7 +116,6 @@ namespace Toolbox
|
|||||||
|
|
||||||
LoadPLugins();
|
LoadPLugins();
|
||||||
UpdateToolbar(HasVersionFile);
|
UpdateToolbar(HasVersionFile);
|
||||||
Reload();
|
|
||||||
LoadConfig();
|
LoadConfig();
|
||||||
LoadMDITheme();
|
LoadMDITheme();
|
||||||
LoadRecentList();
|
LoadRecentList();
|
||||||
@ -247,8 +240,6 @@ namespace Toolbox
|
|||||||
|
|
||||||
public void OpenFile(string FileName, bool InActiveEditor = false)
|
public void OpenFile(string FileName, bool InActiveEditor = false)
|
||||||
{
|
{
|
||||||
Reload();
|
|
||||||
|
|
||||||
if (File.Exists(FileName))
|
if (File.Exists(FileName))
|
||||||
SaveRecentFile(FileName);
|
SaveRecentFile(FileName);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user