From 62803b09ed7b8fe3ab9fc569d07050bb56412f7a Mon Sep 17 00:00:00 2001 From: NoobInCoding Date: Thu, 30 Apr 2026 00:47:24 +0330 Subject: [PATCH] GGUUID: Display and parse bytes in their on-disk order GGUUID is a struct of 16 sequential uint8 fields (Data0..Data15) stored in the binary file at offsets 0..15. RTTIUtils.uuidToString reversed Data0..3, Data4..5 and Data6..7 (Microsoft mixed-endian convention), so the displayed UUID did not match the bytes seen in a hex view of the .core file. The MurmurHashValue handler and the GGUUID HashMap-key CRC32C hasher already treat the same struct as raw bytes. Emit Data0..Data15 in order, and align GGUUIDValueEditor.fromString so a UUID typed into the editor is stored byte-for-byte (Data0 <- first hex pair). Note: existing localization JSON exports and DMF files that reference UUIDs by string key were written using the old swapped form and need to be re-exported with this build. --- .../com/shade/decima/model/rtti/RTTIUtils.java | 6 +++--- .../ui/data/editors/GGUUIDValueEditor.java | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/decima-model/src/main/java/com/shade/decima/model/rtti/RTTIUtils.java b/decima-model/src/main/java/com/shade/decima/model/rtti/RTTIUtils.java index cd6fc4a67..44f6974bf 100644 --- a/decima-model/src/main/java/com/shade/decima/model/rtti/RTTIUtils.java +++ b/decima-model/src/main/java/com/shade/decima/model/rtti/RTTIUtils.java @@ -11,9 +11,9 @@ private RTTIUtils() { @NotNull public static String uuidToString(@NotNull RTTIObject o) { return "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x".formatted( - o.i8("Data3"), o.i8("Data2"), o.i8("Data1"), o.i8("Data0"), - o.i8("Data5"), o.i8("Data4"), - o.i8("Data7"), o.i8("Data6"), + o.i8("Data0"), o.i8("Data1"), o.i8("Data2"), o.i8("Data3"), + o.i8("Data4"), o.i8("Data5"), + o.i8("Data6"), o.i8("Data7"), o.i8("Data8"), o.i8("Data9"), o.i8("Data10"), o.i8("Data11"), o.i8("Data12"), o.i8("Data13"), o.i8("Data14"), o.i8("Data15") ); diff --git a/decima-ui/src/main/java/com/shade/decima/ui/data/editors/GGUUIDValueEditor.java b/decima-ui/src/main/java/com/shade/decima/ui/data/editors/GGUUIDValueEditor.java index 29286e188..8ed33965d 100644 --- a/decima-ui/src/main/java/com/shade/decima/ui/data/editors/GGUUIDValueEditor.java +++ b/decima-ui/src/main/java/com/shade/decima/ui/data/editors/GGUUIDValueEditor.java @@ -82,14 +82,14 @@ public static RTTIObject fromString(@NotNull RTTIClass type, @NotNull String tex final long lsb = uuid.getLeastSignificantBits(); final RTTIObject object = type.instantiate(); - object.set("Data3", (byte) (msb >>> 56)); - object.set("Data2", (byte) (msb >>> 48)); - object.set("Data1", (byte) (msb >>> 40)); - object.set("Data0", (byte) (msb >>> 32)); - object.set("Data5", (byte) (msb >>> 24)); - object.set("Data4", (byte) (msb >>> 16)); - object.set("Data7", (byte) (msb >>> 8)); - object.set("Data6", (byte) (msb)); + object.set("Data0", (byte) (msb >>> 56)); + object.set("Data1", (byte) (msb >>> 48)); + object.set("Data2", (byte) (msb >>> 40)); + object.set("Data3", (byte) (msb >>> 32)); + object.set("Data4", (byte) (msb >>> 24)); + object.set("Data5", (byte) (msb >>> 16)); + object.set("Data6", (byte) (msb >>> 8)); + object.set("Data7", (byte) (msb)); object.set("Data8", (byte) (lsb >>> 56)); object.set("Data9", (byte) (lsb >>> 48)); object.set("Data10", (byte) (lsb >>> 40));