diff --git a/.vs/Switch_Toolbox/v15/.suo b/.vs/Switch_Toolbox/v15/.suo index 8e460ea6..20d3c53e 100644 Binary files a/.vs/Switch_Toolbox/v15/.suo and b/.vs/Switch_Toolbox/v15/.suo differ diff --git a/.vs/Switch_Toolbox/v15/Server/sqlite3/storage.ide b/.vs/Switch_Toolbox/v15/Server/sqlite3/storage.ide index d486906c..21013d32 100644 Binary files a/.vs/Switch_Toolbox/v15/Server/sqlite3/storage.ide and b/.vs/Switch_Toolbox/v15/Server/sqlite3/storage.ide differ diff --git a/.vs/Switch_Toolbox/v15/Server/sqlite3/storage.ide-wal b/.vs/Switch_Toolbox/v15/Server/sqlite3/storage.ide-wal index c6578c77..63689af4 100644 Binary files a/.vs/Switch_Toolbox/v15/Server/sqlite3/storage.ide-wal and b/.vs/Switch_Toolbox/v15/Server/sqlite3/storage.ide-wal differ diff --git a/Switch_FileFormatsMain/GUI/TextureUI/Importers/CreateGx2Texture.cs b/Switch_FileFormatsMain/GUI/TextureUI/Importers/CreateGx2Texture.cs index 137e5fdc..cb731792 100644 --- a/Switch_FileFormatsMain/GUI/TextureUI/Importers/CreateGx2Texture.cs +++ b/Switch_FileFormatsMain/GUI/TextureUI/Importers/CreateGx2Texture.cs @@ -31,19 +31,8 @@ namespace FirstPlugin if (surfOut.depth != 1) throw new Exception($"Unsupported Depth {surfOut.depth}!"); - uint s = 0; - switch (tileMode) - { - case 1: - case 2: - case 3: - case 16: - s = 0; - break; - default: - s = 0xd0000 | setting.swizzle << 8; - break; - } + uint s = (uint)(setting.swizzle << 8); + uint blkWidth, blkHeight; if (GTX.IsFormatBCN(Format)) { @@ -55,6 +44,13 @@ namespace FirstPlugin blkWidth = 1; blkHeight = 1; } + + if (tileMode == 0) + tileMode = GTX.getDefaultGX2TileMode(1, setting.TexWidth, setting.TexHeight, 1,(uint)setting.Format, 0, 1); + + int tiling1dLevel = 0; + bool tiling1dLevelSet = false; + List mipOffsets = new List(); List Swizzled = new List(); @@ -100,8 +96,22 @@ namespace FirstPlugin surfOut.pitch, surfOut.bpp, data_, DepthLevel); Swizzled.Add(dataAlignBytes.Concat(SwizzledData).ToArray()); + + if (surfOut.tileMode == 1 || surfOut.tileMode == 2 || + surfOut.tileMode == 3 || surfOut.tileMode == 16) + { + tiling1dLevelSet = true; + } + + if (tiling1dLevelSet == false) + tiling1dLevel += 1; } + if (tiling1dLevelSet) + s |= (uint)(tiling1dLevel << 16); + else + s |= (uint)(13 << 16); + GTX.GX2Surface surf = new GTX.GX2Surface(); surf.depth = setting.Depth; surf.width = setting.TexWidth; diff --git a/Switch_FileFormatsMain/obj/Release/DesignTimeResolveAssemblyReferences.cache b/Switch_FileFormatsMain/obj/Release/DesignTimeResolveAssemblyReferences.cache index 874c5e18..9674d0bc 100644 Binary files a/Switch_FileFormatsMain/obj/Release/DesignTimeResolveAssemblyReferences.cache and b/Switch_FileFormatsMain/obj/Release/DesignTimeResolveAssemblyReferences.cache differ diff --git a/Switch_Toolbox_Library/Swizzling/GTX.cs b/Switch_Toolbox_Library/Swizzling/GTX.cs index 7dd30041..2fedac34 100644 --- a/Switch_Toolbox_Library/Swizzling/GTX.cs +++ b/Switch_Toolbox_Library/Swizzling/GTX.cs @@ -500,13 +500,6 @@ namespace Switch_Toolbox.Library int dataOffset = 0; int mipDataOffset = 0; int TotalImageSize = tex.data.Length; - int _swizzle = (int)tex.swizzle << 8; - - if (tex.tileMode == 0) - tex.tileMode = getDefaultGX2TileMode(1, tex.width, tex.height, 1, tex.format, 0, 1); - - int tiling1dLevel = 0; - bool tiling1dLevelSet = false; List> result = new List>(); for (int arrayLevel = 0; arrayLevel < tex.depth; arrayLevel++) @@ -549,26 +542,10 @@ namespace Switch_Toolbox.Library result.Add(mips); - if (surfInfo.tileMode == 1 || surfInfo.tileMode == 2 || - surfInfo.tileMode == 3 || surfInfo.tileMode == 16) - { - tiling1dLevelSet = true; - } - - if (tiling1dLevelSet == false) - { - tiling1dLevel += 1; - } - dataOffset += ArrayImageize; mipDataOffset += ArrayMipImageize; } - if (tiling1dLevelSet) - _swizzle |= tiling1dLevel << 16; - else - _swizzle |= 13 << 16; - return result; } private static byte[] SubArray(byte[] data, int offset, int length) @@ -740,7 +717,7 @@ namespace Switch_Toolbox.Library return newDim; } - private static uint getDefaultGX2TileMode(uint dim, uint width, uint height, uint depth, uint format_, uint aa, uint use) + public static uint getDefaultGX2TileMode(uint dim, uint width, uint height, uint depth, uint format_, uint aa, uint use) { uint tileMode = 1; bool IsDepthBuffer = (use & 4) != 0; @@ -767,6 +744,9 @@ namespace Switch_Toolbox.Library private static uint GX2TileModeToAddrTileMode(uint tileMode) { + if (tileMode == 0) + throw new Exception("Use tileMode from getDefaultGX2TileMode()."); + if (tileMode == 16) return 0;