From 3b4cc483dd9099db02fe80178b2e065fef7aa026 Mon Sep 17 00:00:00 2001 From: Purplesmaug96 Date: Mon, 31 Aug 2026 20:16:09 +0800 Subject: [PATCH 1/2] Fix gms2026.1 parsing --- src/data_win.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/data_win.c b/src/data_win.c index b2eac6740..bc1c39385 100644 --- a/src/data_win.c +++ b/src/data_win.c @@ -1450,8 +1450,8 @@ static void parseOBJT(BinaryReader* reader, DataWin* dw) { if (count == 0) { free(ptrs); o->objects = nullptr; return; } - // Detect GMS 2022.5+ by probing the first game object's event list structure. - if (DataWin_isVersionAtLeast(dw, 2, 3, 0, 0) && !DataWin_isVersionAtLeast(dw, 2022, 5, 0, 0)) { + // Detect GMS 2022.5 to 2026.1 managed field by probing the first game object's event list structure. + if (DataWin_isVersionAtLeast(dw, 2, 3, 0, 0) && (!DataWin_isVersionAtLeast(dw, 2022, 5, 0, 0) || DataWin_isVersionAtLeast(dw, 2024, 13, 0, 0))) { uint32_t probePtr = 0; repeat(count, i) { if (ptrs[i] != 0) { probePtr = ptrs[i]; break; } } if (probePtr != 0) { @@ -1476,7 +1476,12 @@ static void parseOBJT(BinaryReader* reader, DataWin* dw) { } } if (!isOldFormat) { - DataWin_bumpVersionTo(dw, 2022, 5, 0, 0); + if (!DataWin_isVersionAtLeast(dw, 2022, 5, 0, 0)) { + DataWin_bumpVersionTo(dw, 2022, 5, 0, 0); + } + } + else if (DataWin_isVersionAtLeast(dw, 2024, 13, 0, 0)) { + DataWin_bumpVersionTo(dw, 2026, 1, 0, 0); } } } @@ -1491,7 +1496,7 @@ static void parseOBJT(BinaryReader* reader, DataWin* dw) { obj->name = readStringPtr(reader, dw); obj->spriteId = BinaryReader_readInt32(reader); obj->visible = BinaryReader_readBool32(reader); - if (DataWin_isVersionAtLeast(dw, 2022, 5, 0, 0)) { + if (DataWin_isVersionAtLeast(dw, 2022, 5, 0, 0) && !DataWin_isVersionAtLeast(dw, 2026, 1, 0, 0)) { obj->managed = BinaryReader_readBool32(reader); } else { obj->managed = false; From 181cee0f709be88293f5e4666443d5655f4120f9 Mon Sep 17 00:00:00 2001 From: Purplesmaug96 Date: Tue, 1 Sep 2026 11:19:13 +0800 Subject: [PATCH 2/2] remove redundant thign --- src/data_win.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/data_win.c b/src/data_win.c index bc1c39385..05323d85d 100644 --- a/src/data_win.c +++ b/src/data_win.c @@ -1476,9 +1476,7 @@ static void parseOBJT(BinaryReader* reader, DataWin* dw) { } } if (!isOldFormat) { - if (!DataWin_isVersionAtLeast(dw, 2022, 5, 0, 0)) { - DataWin_bumpVersionTo(dw, 2022, 5, 0, 0); - } + DataWin_bumpVersionTo(dw, 2022, 5, 0, 0); } else if (DataWin_isVersionAtLeast(dw, 2024, 13, 0, 0)) { DataWin_bumpVersionTo(dw, 2026, 1, 0, 0);