From ebed4aec23b144cb601f12eff757953eb588d08f Mon Sep 17 00:00:00 2001 From: colinator27 <17358554+colinator27@users.noreply.github.com> Date: Sat, 20 Jul 2024 18:14:38 -0400 Subject: [PATCH 1/2] Move 2.0.6 detection to object counting stage --- UndertaleModLib/UndertaleChunks.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/UndertaleModLib/UndertaleChunks.cs b/UndertaleModLib/UndertaleChunks.cs index 18dc943f0..fb0095da9 100644 --- a/UndertaleModLib/UndertaleChunks.cs +++ b/UndertaleModLib/UndertaleChunks.cs @@ -1576,11 +1576,15 @@ internal override void SerializeChunk(UndertaleWriter writer) // GMS 2.0.6.96 is the oldest available runtime version, // so this actually could be some other version between GMS 2.0 - 2.0.6. // (the oldest copy of "Zeus-Runtime.rss" on web.archive.org has this version as first one) + private static bool checkedFor2_0_6; private void CheckForGMS2_0_6(UndertaleReader reader) { bool atLeastGMS2_0 = reader.undertaleData.IsGameMaker2(); if (!atLeastGMS2_0 || reader.undertaleData.IsVersionAtLeast(2, 0, 6)) + { + checkedFor2_0_6 = true; return; + } long returnPos = reader.Position; bool noGeneratedMips = false; @@ -1617,6 +1621,7 @@ private void CheckForGMS2_0_6(UndertaleReader reader) reader.undertaleData.SetGMS2Version(2, 0, 6); reader.Position = returnPos; + checkedFor2_0_6 = true; } internal override void UnserializeChunk(UndertaleReader reader) @@ -1624,7 +1629,8 @@ internal override void UnserializeChunk(UndertaleReader reader) if (!checkedFor2022_3) CheckFor2022_3And5(reader); - CheckForGMS2_0_6(reader); + if (!checkedFor2_0_6) + CheckForGMS2_0_6(reader); base.UnserializeChunk(reader); reader.SwitchReaderType(false); @@ -1648,8 +1654,10 @@ internal override void UnserializeChunk(UndertaleReader reader) internal override uint UnserializeObjectCount(UndertaleReader reader) { checkedFor2022_3 = false; + checkedFor2_0_6 = false; CheckFor2022_3And5(reader); + CheckForGMS2_0_6(reader); // Texture blobs are already included in the count return base.UnserializeObjectCount(reader); From fd745b9a936ae0b8720f3c4123891788042d86f7 Mon Sep 17 00:00:00 2001 From: colinator27 <17358554+colinator27@users.noreply.github.com> Date: Sun, 21 Jul 2024 10:53:16 -0400 Subject: [PATCH 2/2] Address review --- UndertaleModLib/UndertaleChunks.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/UndertaleModLib/UndertaleChunks.cs b/UndertaleModLib/UndertaleChunks.cs index fb0095da9..d1f8e8d1a 100644 --- a/UndertaleModLib/UndertaleChunks.cs +++ b/UndertaleModLib/UndertaleChunks.cs @@ -1459,6 +1459,8 @@ public class UndertaleChunkTXTR : UndertaleListChunk public override string Name => "TXTR"; private static bool checkedFor2022_3; + private static bool checkedFor2_0_6; + private void CheckFor2022_3And5(UndertaleReader reader) { // Detect GM2022.3 @@ -1576,7 +1578,6 @@ internal override void SerializeChunk(UndertaleWriter writer) // GMS 2.0.6.96 is the oldest available runtime version, // so this actually could be some other version between GMS 2.0 - 2.0.6. // (the oldest copy of "Zeus-Runtime.rss" on web.archive.org has this version as first one) - private static bool checkedFor2_0_6; private void CheckForGMS2_0_6(UndertaleReader reader) { bool atLeastGMS2_0 = reader.undertaleData.IsGameMaker2();