diff --git a/AssetStudio.GUI/MainForm.Designer.cs b/AssetStudio.GUI/MainForm.Designer.cs index 7305781..fec8284 100644 --- a/AssetStudio.GUI/MainForm.Designer.cs +++ b/AssetStudio.GUI/MainForm.Designer.cs @@ -117,6 +117,7 @@ namespace AssetStudio.GUI assetMapTypeMenuItem = new System.Windows.Forms.ToolStripMenuItem(); toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator(); loadAIToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + loadCABMapToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); assetBrowserToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); assetHelpersToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); MapToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -172,7 +173,6 @@ namespace AssetStudio.GUI exportAnimatorwithselectedAnimationClipMenuItem = new System.Windows.Forms.ToolStripMenuItem(); goToSceneHierarchyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); showOriginalFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - loadCABMapToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); menuStrip1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)splitContainer1).BeginInit(); splitContainer1.Panel1.SuspendLayout(); @@ -659,7 +659,7 @@ namespace AssetStudio.GUI allToolStripMenuItem.CheckOnClick = true; allToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked; allToolStripMenuItem.Name = "allToolStripMenuItem"; - allToolStripMenuItem.Size = new System.Drawing.Size(88, 22); + allToolStripMenuItem.Size = new System.Drawing.Size(180, 22); allToolStripMenuItem.Text = "All"; allToolStripMenuItem.Click += typeToolStripMenuItem_Click; // @@ -794,6 +794,13 @@ namespace AssetStudio.GUI loadAIToolStripMenuItem.Text = "Load AI"; loadAIToolStripMenuItem.Click += loadAIToolStripMenuItem_Click; // + // loadCABMapToolStripMenuItem + // + loadCABMapToolStripMenuItem.Name = "loadCABMapToolStripMenuItem"; + loadCABMapToolStripMenuItem.Size = new System.Drawing.Size(181, 22); + loadCABMapToolStripMenuItem.Text = "Load CABMap"; + loadCABMapToolStripMenuItem.Click += loadCABMapToolStripMenuItem_Click; + // // assetBrowserToolStripMenuItem // assetBrowserToolStripMenuItem.Name = "assetBrowserToolStripMenuItem"; @@ -1345,13 +1352,6 @@ namespace AssetStudio.GUI showOriginalFileToolStripMenuItem.Visible = false; showOriginalFileToolStripMenuItem.Click += showOriginalFileToolStripMenuItem_Click; // - // loadCABMapToolStripMenuItem - // - loadCABMapToolStripMenuItem.Name = "loadCABMapToolStripMenuItem"; - loadCABMapToolStripMenuItem.Size = new System.Drawing.Size(181, 22); - loadCABMapToolStripMenuItem.Text = "Load CABMap"; - loadCABMapToolStripMenuItem.Click += loadCABMapToolStripMenuItem_Click; - // // MainForm // AllowDrop = true; diff --git a/AssetStudio/BundleFile.cs b/AssetStudio/BundleFile.cs index f7f7d1a..9ad68c4 100644 --- a/AssetStudio/BundleFile.cs +++ b/AssetStudio/BundleFile.cs @@ -161,31 +161,28 @@ namespace AssetStudio switch (header.signature) { case "UnityFS": - if (Game.Type.IsBH3Group()) + if (Game.Type.IsBH3Group() || Game.Type.IsBH3PrePre()) { - var version = Game.Type.IsBH3PrePre() ? 12 : reader.ReadUInt32(); - if (version > 11) + if (Game.Type.IsBH3Group()) { - if (Game.Type.IsBH3PrePre()) + var key = reader.ReadUInt32(); + if (key <= 11) { - Logger.Verbose($"Encrypted bundle header with key {reader.Length}"); - XORShift128.InitSeed((uint)reader.Length); - } - else - { - Logger.Verbose($"Encrypted bundle header with key {version}"); - XORShift128.InitSeed(version); + reader.Position -= 4; + goto default; } + Logger.Verbose($"Encrypted bundle header with key {key}"); + XORShift128.InitSeed(key); + } + else if (Game.Type.IsBH3PrePre()) + { + Logger.Verbose($"Encrypted bundle header with key {reader.Length}"); + XORShift128.InitSeed((uint)reader.Length); + } - header.version = 6; - header.unityVersion = "5.x.x"; - header.unityRevision = "2017.4.18f1"; - } - else - { - reader.Position -= 4; - goto default; - } + header.version = 6; + header.unityVersion = "5.x.x"; + header.unityRevision = "2017.4.18f1"; } else { @@ -333,7 +330,7 @@ namespace AssetStudio private void ReadHeader(FileReader reader) { - if (Game.Type.IsBH3Group() && XORShift128.Init) + if (XORShift128.Init) { if (Game.Type.IsBH3PrePre()) { diff --git a/AssetStudio/GameManager.cs b/AssetStudio/GameManager.cs index dba013e..2376f6b 100644 --- a/AssetStudio/GameManager.cs +++ b/AssetStudio/GameManager.cs @@ -194,7 +194,7 @@ namespace AssetStudio public static bool IsBH3Group(this GameType type) => type switch { - GameType.BH3 or GameType.BH3Pre or GameType.BH3PrePre => true, + GameType.BH3 or GameType.BH3Pre => true, _ => false, }; @@ -206,7 +206,7 @@ namespace AssetStudio public static bool IsBlockFile(this GameType type) => type switch { - GameType.BH3 or GameType.BH3Pre or GameType.BH3PrePre or GameType.SR or GameType.GI_Pack or GameType.TOT or GameType.ArknightsEndfield => true, + GameType.BH3 or GameType.BH3Pre or GameType.SR or GameType.GI_Pack or GameType.TOT or GameType.ArknightsEndfield => true, _ => false, }; diff --git a/AssetStudio/SerializedFile.cs b/AssetStudio/SerializedFile.cs index 9401ef9..dbd492d 100644 --- a/AssetStudio/SerializedFile.cs +++ b/AssetStudio/SerializedFile.cs @@ -92,7 +92,7 @@ namespace AssetStudio Logger.Verbose($"Parsed target format {m_TargetPlatform} doesn't match any of supported formats, defaulting to {BuildTarget.UnknownPlatform}"); m_TargetPlatform = BuildTarget.UnknownPlatform; } - else if (game.Type.IsMhyGroup()) + else if (m_TargetPlatform == BuildTarget.NoTarget && game.Type.IsMhyGroup()) { Logger.Verbose($"Selected game {game.Name} is a mhy game, forcing target format {BuildTarget.StandaloneWindows64}"); m_TargetPlatform = BuildTarget.StandaloneWindows64;