From 6b903ab29b4551e2d523f5a6473c59443773527a Mon Sep 17 00:00:00 2001 From: Octavian Dima <3403191+WopsS@users.noreply.github.com> Date: Thu, 20 Apr 2023 19:51:33 +0200 Subject: [PATCH 1/4] Update addresses and PDB's GUID for patch 1.62 hotfix 1 --- src/Image.cpp | 3 ++- src/reverse/Addresses.h | 58 ++++++++++++++++++++--------------------- vendor/RED4ext.SDK | 2 +- 3 files changed, 32 insertions(+), 31 deletions(-) diff --git a/src/Image.cpp b/src/Image.cpp index 2090025e..33c57795 100644 --- a/src/Image.cpp +++ b/src/Image.cpp @@ -42,7 +42,8 @@ void Image::Initialize() {{0x4E, 0xE9, 0x22, 0x2A, 0x9D, 0xB5, 0xC6, 0x40, 0xA7, 0xD4, 0xAB, 0x3B, 0xCA, 0x7C, 0x30, 0x06}, MakeVersion(1, 60)}, {{0x75, 0xF0, 0x99, 0xC1, 0x83, 0x84, 0xF9, 0x43, 0x95, 0x00, 0x4E, 0x7D, 0x93, 0x73, 0x84, 0xDF}, MakeVersion(1, 61)}, {{0x5D, 0x30, 0xA1, 0x30, 0x0F, 0x7F, 0x5E, 0x4C, 0xA9, 0xBA, 0xD8, 0x43, 0xD9, 0xAE, 0x85, 0x50}, MakeVersion(1, 61)}, - {{0xD6, 0xFF, 0xA3, 0xE9, 0xCA, 0x20, 0x9A, 0x4F, 0xA6, 0x2A, 0x7B, 0x8B, 0x33, 0xF7, 0x9D, 0x02}, MakeVersion(1, 62)}}; + {{0xD6, 0xFF, 0xA3, 0xE9, 0xCA, 0x20, 0x9A, 0x4F, 0xA6, 0x2A, 0x7B, 0x8B, 0x33, 0xF7, 0x9D, 0x02}, MakeVersion(1, 62)}, + {{0x1C, 0xF0, 0xFC, 0x79, 0x23, 0x64, 0x67, 0x49, 0xBC, 0x54, 0xBA, 0x1E, 0xAC, 0xBC, 0xEB, 0xDA}, MakeVersion(1, 62)}}; mem::module mainModule = mem::module::main(); diff --git a/src/reverse/Addresses.h b/src/reverse/Addresses.h index 512424b5..8a548c96 100644 --- a/src/reverse/Addresses.h +++ b/src/reverse/Addresses.h @@ -14,80 +14,80 @@ namespace CyberEngineTweaks::Addresses constexpr uintptr_t ImageBase = 0x140000000; #pragma region CBaseInitializationState -constexpr uintptr_t CBaseInitializationState_OnTick = 0x140A81D30 - ImageBase; // 48 83 EC 28 48 8B 05 ? ? ? ? 4C 8B C2 48 85 C0 75 12 8D 50 03 49 8B C8 E8 ? ? ? ?, expected: 1, index: 0 +constexpr uintptr_t CBaseInitializationState_OnTick = 0x140A81E40 - ImageBase; // 48 83 EC 28 48 8B 05 ? ? ? ? 4C 8B C2 48 85 C0 75 12 8D 50 03 49 8B C8 E8 ? ? ? ?, expected: 1, index: 0 #pragma endregion #pragma region CGame -constexpr uintptr_t CGame_Main = 0x140A84280 - ImageBase; // 40 57 48 83 EC 70 48 8B F9 0F 29 7C 24 50 48 8D 4C 24 38, expected: 1, index: 0 +constexpr uintptr_t CGame_Main = 0x140A84390 - ImageBase; // 40 57 48 83 EC 70 48 8B F9 0F 29 7C 24 50 48 8D 4C 24 38, expected: 1, index: 0 #pragma endregion #pragma region CGameApplication -constexpr uintptr_t CGameApplication_Run = 0x140A80460 - ImageBase; // 48 89 5C 24 08 57 48 83 EC 20 48 8B D9 33 FF 90 E8 ? ? ? ? 84 C0, expected: 1, index: 0 +constexpr uintptr_t CGameApplication_Run = 0x140A80570 - ImageBase; // 48 89 5C 24 08 57 48 83 EC 20 48 8B D9 33 FF 90 E8 ? ? ? ? 84 C0, expected: 1, index: 0 #pragma endregion #pragma region CInitializationState -constexpr uintptr_t CInitializationState_OnTick = 0x140A82030 - ImageBase; // 48 83 EC 28 48 8B 05 ? ? ? ? 4C 8B C2 8B 88 F8 00 00 00 85 C9 74 3D 83 E9 02 74 25 83 E9 01, expected: 1, index: 0 +constexpr uintptr_t CInitializationState_OnTick = 0x140A82140 - ImageBase; // 48 83 EC 28 48 8B 05 ? ? ? ? 4C 8B C2 8B 88 F8 00 00 00 85 C9 74 3D 83 E9 02 74 25 83 E9 01, expected: 1, index: 0 #pragma endregion #pragma region CPatches -constexpr uintptr_t CPatches_BoundaryTeleport = 0x141B3E360 - ImageBase; // 48 8B C4 55 53 41 54 48 8D A8 ? ? ? ? 48 81 EC ? ? ? ? 48 89 70 10 48 8D 59 48, expected: 1, index: 0 +constexpr uintptr_t CPatches_BoundaryTeleport = 0x141B3E470 - ImageBase; // 48 8B C4 55 53 41 54 48 8D A8 ? ? ? ? 48 81 EC ? ? ? ? 48 89 70 10 48 8D 59 48, expected: 1, index: 0 constexpr uintptr_t CPatches_IntroMovie = 0x140209000 - ImageBase; // 48 89 5C 24 08 57 48 83 EC 20 48 8B 44 24 50 48 8B D9 48 89 41 08, expected: 1, index: 0 -constexpr uintptr_t CPatches_Vignette = 0x14118E330 - ImageBase; // 48 8B 41 30 48 83 78 68 00 74, expected: 1, index: 0 -constexpr uintptr_t CPatches_MinimapFlicker = 0x1425BD0BD - ImageBase; // 83 79 2C 00 48 8B F2 4C, expected: 1, index: 0 -constexpr uintptr_t CPatches_OptionsInit = 0x142C29680 - ImageBase; // 40 53 48 83 EC 40 48 8B D9 48 8D 4C 24 20 E8 ? ? ? ? E8 ? ? ? ? 4C 8B 43 08, expected: 1, index: 0 -constexpr uintptr_t CPatches_SkipStartScreen = 0x142A5E990 - ImageBase; // 74 5F E8 ? ? ? ? 48 8D 4C 24 20 8B D8 E8 ? ? ? ? 48 8B C8 8B D3 E8, expected: 2, index: 1 -constexpr uintptr_t CPatches_AmdSMT = 0x142BD230B - ImageBase; // 75 2D 33 C9 B8 01 00 00 00 0F A2 8B C8 C1 F9 08, expected: 1, index: 0 +constexpr uintptr_t CPatches_Vignette = 0x14118E440 - ImageBase; // 48 8B 41 30 48 83 78 68 00 74, expected: 1, index: 0 +constexpr uintptr_t CPatches_MinimapFlicker = 0x1425BD25D - ImageBase; // 83 79 2C 00 48 8B F2 4C, expected: 1, index: 0 +constexpr uintptr_t CPatches_OptionsInit = 0x142C299F0 - ImageBase; // 40 53 48 83 EC 40 48 8B D9 48 8D 4C 24 20 E8 ? ? ? ? E8 ? ? ? ? 4C 8B 43 08, expected: 1, index: 0 +constexpr uintptr_t CPatches_SkipStartScreen = 0x142A5ED00 - ImageBase; // 74 5F E8 ? ? ? ? 48 8D 4C 24 20 8B D8 E8 ? ? ? ? 48 8B C8 8B D3 E8, expected: 2, index: 1 +constexpr uintptr_t CPatches_AmdSMT = 0x142BD267B - ImageBase; // 75 2D 33 C9 B8 01 00 00 00 0F A2 8B C8 C1 F9 08, expected: 1, index: 0 #pragma endregion #pragma region CPhotoMode -constexpr uintptr_t CPhotoMode_SetRecordID = 0x142DFD400 - ImageBase; // 48 8B C4 55 57 48 8D 68 A1 48 81 EC 98 00 00 00 48 89 58 08 48 8B D9 48 89 70 18 48 8D 4D 27 48, expected: 1, index: 0 +constexpr uintptr_t CPhotoMode_SetRecordID = 0x142DFD760 - ImageBase; // 48 8B C4 55 57 48 8D 68 A1 48 81 EC 98 00 00 00 48 89 58 08 48 8B D9 48 89 70 18 48 8D 4D 27 48, expected: 1, index: 0 #pragma endregion #pragma region CRenderGlobal -constexpr uintptr_t CRenderGlobal_InstanceOffset = 0x144E0AE80 - ImageBase; // 48 89 5C 24 08 48 89 6C 24 18 48 89 74 24 20 57 41 56 41 57 48 83 EC 30 8B 01 4C 8B F9 48, expected: 1, index: 0, offset: 41 -constexpr uintptr_t CRenderGlobal__DoNotUse_RenderQueueOffset = 0x151FA54C9 - ImageBase; // 49 39 29 0F 84 ? ? ? ? 41 39 69 24 0F 84 ? ? ? ? 49 8B 95, expected: 1, index: 0, offset: 0 -constexpr uintptr_t CRenderGlobal_Resize = 0x142D19DE0 - ImageBase; // 44 88 4C 24 20 44 89 44 24 18 89 54 24 10 89 4C, expected: 1, index: 0 -constexpr uintptr_t CRenderGlobal_Shutdown = 0x142D03870 - ImageBase; // 48 89 6C 24 20 41 56 48 83 EC 20 48 8D 05, expected: 1, index: 0 +constexpr uintptr_t CRenderGlobal_InstanceOffset = 0x144E0B6E0 - ImageBase; // 48 89 5C 24 08 48 89 6C 24 18 48 89 74 24 20 57 41 56 41 57 48 83 EC 30 8B 01 4C 8B F9 48, expected: 1, index: 0, offset: 41 +constexpr uintptr_t CRenderGlobal__DoNotUse_RenderQueueOffset = 0x151F9C349 - ImageBase; // 49 39 29 0F 84 ? ? ? ? 41 39 69 24 0F 84 ? ? ? ? 49 8B 95, expected: 1, index: 0, offset: 0 +constexpr uintptr_t CRenderGlobal_Resize = 0x142D10C60 - ImageBase; // 44 88 4C 24 20 44 89 44 24 18 89 54 24 10 89 4C, expected: 1, index: 0 +constexpr uintptr_t CRenderGlobal_Shutdown = 0x142CFA6F0 - ImageBase; // 48 89 6C 24 20 41 56 48 83 EC 20 48 8D 05, expected: 1, index: 0 #pragma endregion #pragma region CRenderNode_Present -constexpr uintptr_t CRenderNode_Present_DoInternal = 0x142D1C3A0 - ImageBase; // 48 89 5C 24 08 48 89 6C 24 18 48 89 74 24 20 57 41 56 41 57 48 83 EC 30 8B 01 4C 8B F9 48, expected: 1, index: 0 +constexpr uintptr_t CRenderNode_Present_DoInternal = 0x142D13220 - ImageBase; // 48 89 5C 24 08 48 89 6C 24 18 48 89 74 24 20 57 41 56 41 57 48 83 EC 30 8B 01 4C 8B F9 48, expected: 1, index: 0 #pragma endregion #pragma region CRunningState -constexpr uintptr_t CRunningState_OnTick = 0x140A82170 - ImageBase; // 40 53 48 83 EC 20 48 8B 0D ? ? ? ? 48 8B DA E8 ? ? ? ? 84 C0, expected: 1, index: 0 +constexpr uintptr_t CRunningState_OnTick = 0x140A82280 - ImageBase; // 40 53 48 83 EC 20 48 8B 0D ? ? ? ? 48 8B DA E8 ? ? ? ? 84 C0, expected: 1, index: 0 #pragma endregion #pragma region CScript constexpr uintptr_t CScript_RunPureScript = 0x140215940 - ImageBase; // 40 55 48 81 EC D0 00 00 00 48 8D 6C 24 40 8B, expected: 1, index: 0 constexpr uintptr_t CScript_AllocateFunction = 0x1401B6070 - ImageBase; // BA B8 00 00 00 48 8D 4D D7 E8, expected: 3, index: 0 constexpr uintptr_t CScript_Log = 0x1401F7BC0 - ImageBase; // 40 53 48 83 EC ? 48 8D 4C 24 20 48 8B DA E8 ? ? ? ? 33 D2 48 8D 4C 24 40 E8, expected: 1, index: 0 -constexpr uintptr_t CScript_ToStringDEBUG = 0x140BE7000 - ImageBase; // 48 89 5C 24 08 57 48 83 EC 20 FE 42 62 4C 8D 15 ? ? ? ? 33 C9 33 C0, expected: 4, index: 2 +constexpr uintptr_t CScript_ToStringDEBUG = 0x140BE7110 - ImageBase; // 48 89 5C 24 08 57 48 83 EC 20 FE 42 62 4C 8D 15 ? ? ? ? 33 C9 33 C0, expected: 4, index: 2 constexpr uintptr_t CScript_LogChannel = 0x1401F7C60 - ImageBase; // 4C 8B DC 49 89 5B 08 49 89 73 18 57 48 83 EC 70 48 8B 02 ? ? ? ? ? ? ? FE 42 62 4D 8D 43 10 33 FF 45 33 C9 49 89 7B 10 48 8B DA 48 89 7A, expected: 1, index: 0 -constexpr uintptr_t CScript_TDBIDConstructorDerive = 0x142C226F0 - ImageBase; // 40 53 48 83 EC 30 33 C0 4C 89 44 24 20 48 8B DA, expected: 1, index: 0 +constexpr uintptr_t CScript_TDBIDConstructorDerive = 0x142C22A60 - ImageBase; // 40 53 48 83 EC 30 33 C0 4C 89 44 24 20 48 8B DA, expected: 1, index: 0 constexpr uintptr_t CScript_TranslateBytecode = 0x140284F80 - ImageBase; // 4C 8B DC 55 53 57 41 55 49 8D 6B A1 48 81 EC 98 00 00 00 48 8B 1A 4C 8B E9 8B 42 0C 48 8D 3C C3, expected: 1, index: 0 -constexpr uintptr_t CScript_TweakDBLoad = 0x140BE5330 - ImageBase; // 48 89 5C 24 18 55 57 41 56 48 8B EC 48 83 EC 70 48 8B D9 45 33 F6 48 8D, expected: 1, index: 0 +constexpr uintptr_t CScript_TweakDBLoad = 0x140BE5440 - ImageBase; // 48 89 5C 24 18 55 57 41 56 48 8B EC 48 83 EC 70 48 8B D9 45 33 F6 48 8D, expected: 1, index: 0 constexpr uintptr_t CScript_RegisterMemberFunction = 0x140214C30 - ImageBase; // 48 89 5C 24 08 57 48 83 EC 20 49 8B C1 4D 8B D0 44 8B 4C 24 58 48 8B DA 41 83 C9 03, expected: 1, index: 0 #pragma endregion #pragma region CShutdownState -constexpr uintptr_t CShutdownState_OnTick = 0x140A82280 - ImageBase; // 48 89 6C 24 18 56 48 83 EC 30 48 8B 0D ? ? ? ?, expected: 1, index: 0 +constexpr uintptr_t CShutdownState_OnTick = 0x140A82390 - ImageBase; // 48 89 6C 24 18 56 48 83 EC 30 48 8B 0D ? ? ? ?, expected: 1, index: 0 #pragma endregion #pragma region CWinapi -constexpr uintptr_t CWinapi_ClipToCenter = 0x14079B150 - ImageBase; // 48 89 5C 24 08 57 48 83 EC 30 48 8B 99 ? 01 00 00 48 8B F9 FF, expected: 1, index: 0 +constexpr uintptr_t CWinapi_ClipToCenter = 0x14079B260 - ImageBase; // 48 89 5C 24 08 57 48 83 EC 30 48 8B 99 ? 01 00 00 48 8B F9 FF, expected: 1, index: 0 #pragma endregion #pragma region gameIGameSystem -constexpr uintptr_t gameIGameSystem_Constructor = 0x140B07756 - ImageBase; // 48 8B D9 E8 ? ? ? ? 48 8D 05 ? ? ? ? 48 C7 43 40 00 00 00 00, expected: 2, index: 0 -constexpr uintptr_t gameIGameSystem_Initialize = 0x142DFEE20 - ImageBase; // 48 89 5C 24 18 48 89 6C 24 20 57 48 83 EC 30 48 8B 42 78, expected: 1, index: 0 -constexpr uintptr_t gameIGameSystem_UnInitialize = 0x142DFDA90 - ImageBase; // 40 53 48 83 EC 20 48 8B D9 E8 ? ? ? ? 33 C0 48 89 43 50 48 89 43 48, expected: 1, index: 0 -constexpr uintptr_t gameIGameSystem_Spawn = 0x142E00020 - ImageBase; // 48 89 5C 24 18 55 56 41 54 41 56 41 57 48 8D 6C 24 90 48 81 EC 70 01 00 00 48 83 79 50 00 49 8B, expected: 1, index: 0 -constexpr uintptr_t gameIGameSystem_Despawn = 0x142DFDAC0 - ImageBase; // 48 89 5C 24 10 48 89 6C 24 18 56 57 41 54 41 56 41 57 48 83 EC 50 4C 8B F9 0F 57 C0 48 83 C1 41, expected: 1, index: 0 -constexpr uintptr_t gameIGameSystem_SpawnCallback = 0x141103D20 - ImageBase; // 48 89 5C 24 18 48 89 6C 24 20 56 57 41 56 48 83 EC 70 48 8B F1 48 8B EA 48 83 C1 48 E8, expected: 1, index: 0 +constexpr uintptr_t gameIGameSystem_Constructor = 0x140B07866 - ImageBase; // 48 8B D9 E8 ? ? ? ? 48 8D 05 ? ? ? ? 48 C7 43 40 00 00 00 00, expected: 2, index: 0 +constexpr uintptr_t gameIGameSystem_Initialize = 0x142DFF180 - ImageBase; // 48 89 5C 24 18 48 89 6C 24 20 57 48 83 EC 30 48 8B 42 78, expected: 1, index: 0 +constexpr uintptr_t gameIGameSystem_UnInitialize = 0x142DFDDF0 - ImageBase; // 40 53 48 83 EC 20 48 8B D9 E8 ? ? ? ? 33 C0 48 89 43 50 48 89 43 48, expected: 1, index: 0 +constexpr uintptr_t gameIGameSystem_Spawn = 0x142E00380 - ImageBase; // 48 89 5C 24 18 55 56 41 54 41 56 41 57 48 8D 6C 24 90 48 81 EC 70 01 00 00 48 83 79 50 00 49 8B, expected: 1, index: 0 +constexpr uintptr_t gameIGameSystem_Despawn = 0x142DFDE20 - ImageBase; // 48 89 5C 24 10 48 89 6C 24 18 56 57 41 54 41 56 41 57 48 83 EC 50 4C 8B F9 0F 57 C0 48 83 C1 41, expected: 1, index: 0 +constexpr uintptr_t gameIGameSystem_SpawnCallback = 0x141103E30 - ImageBase; // 48 89 5C 24 18 48 89 6C 24 20 56 57 41 56 48 83 EC 70 48 8B F1 48 8B EA 48 83 C1 48 E8, expected: 1, index: 0 #pragma endregion #pragma region PlayerSystem -constexpr uintptr_t PlayerSystem_OnPlayerSpawned = 0x142730170 - ImageBase; // 48 8B C4 4C 89 48 20 55 56 57 48 8B EC 48 81 EC 80 00 00 00, expected: 1, index: 0 +constexpr uintptr_t PlayerSystem_OnPlayerSpawned = 0x142730310 - ImageBase; // 48 8B C4 4C 89 48 20 55 56 57 48 8B EC 48 81 EC 80 00 00 00, expected: 1, index: 0 #pragma endregion } // namespace CyberEngineTweaks::Addresses diff --git a/vendor/RED4ext.SDK b/vendor/RED4ext.SDK index 2f267a70..cacacb49 160000 --- a/vendor/RED4ext.SDK +++ b/vendor/RED4ext.SDK @@ -1 +1 @@ -Subproject commit 2f267a7040d2972fbe76b3e44cbef4a0d326f8ad +Subproject commit cacacb49b0395edde544a0523fad60211945b40f From 5d781d9517b6619ca1e3a5d8cc6be4a4bc386681 Mon Sep 17 00:00:00 2001 From: Octavian Dima <3403191+WopsS@users.noreply.github.com> Date: Thu, 20 Apr 2023 20:11:38 +0200 Subject: [PATCH 2/4] Fix compilation issues regarding gamedataTweakDBRecord --- src/reverse/TweakDB/TweakDB.h | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/reverse/TweakDB/TweakDB.h b/src/reverse/TweakDB/TweakDB.h index 11814946..39ac548e 100644 --- a/src/reverse/TweakDB/TweakDB.h +++ b/src/reverse/TweakDB/TweakDB.h @@ -3,10 +3,7 @@ #include #include -namespace RED4ext -{ -struct gamedataTweakDBRecord; -} +#include struct TweakDB { From b6c510af6531341f21db83d479114d2e594d4c0f Mon Sep 17 00:00:00 2001 From: Maxime <672982+maximegmd@users.noreply.github.com> Date: Thu, 20 Apr 2023 23:08:57 +0200 Subject: [PATCH 3/4] Update Image.cpp --- src/Image.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Image.cpp b/src/Image.cpp index 33c57795..38904908 100644 --- a/src/Image.cpp +++ b/src/Image.cpp @@ -42,8 +42,8 @@ void Image::Initialize() {{0x4E, 0xE9, 0x22, 0x2A, 0x9D, 0xB5, 0xC6, 0x40, 0xA7, 0xD4, 0xAB, 0x3B, 0xCA, 0x7C, 0x30, 0x06}, MakeVersion(1, 60)}, {{0x75, 0xF0, 0x99, 0xC1, 0x83, 0x84, 0xF9, 0x43, 0x95, 0x00, 0x4E, 0x7D, 0x93, 0x73, 0x84, 0xDF}, MakeVersion(1, 61)}, {{0x5D, 0x30, 0xA1, 0x30, 0x0F, 0x7F, 0x5E, 0x4C, 0xA9, 0xBA, 0xD8, 0x43, 0xD9, 0xAE, 0x85, 0x50}, MakeVersion(1, 61)}, - {{0xD6, 0xFF, 0xA3, 0xE9, 0xCA, 0x20, 0x9A, 0x4F, 0xA6, 0x2A, 0x7B, 0x8B, 0x33, 0xF7, 0x9D, 0x02}, MakeVersion(1, 62)}, - {{0x1C, 0xF0, 0xFC, 0x79, 0x23, 0x64, 0x67, 0x49, 0xBC, 0x54, 0xBA, 0x1E, 0xAC, 0xBC, 0xEB, 0xDA}, MakeVersion(1, 62)}}; + {{0xD6, 0xFF, 0xA3, 0xE9, 0xCA, 0x20, 0x9A, 0x4F, 0xA6, 0x2A, 0x7B, 0x8B, 0x33, 0xF7, 0x9D, 0x02}, MakeVersion(1, 6201)}, + {{0x1C, 0xF0, 0xFC, 0x79, 0x23, 0x64, 0x67, 0x49, 0xBC, 0x54, 0xBA, 0x1E, 0xAC, 0xBC, 0xEB, 0xDA}, MakeVersion(1, 6202)}}; mem::module mainModule = mem::module::main(); From 18ed865fbd4c4ce66928587c59eb9ba05355574f Mon Sep 17 00:00:00 2001 From: Maxime <672982+maximegmd@users.noreply.github.com> Date: Thu, 20 Apr 2023 23:09:25 +0200 Subject: [PATCH 4/4] Update Image.h --- src/Image.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Image.h b/src/Image.h index b6d2faad..bdef3c98 100644 --- a/src/Image.h +++ b/src/Image.h @@ -4,7 +4,7 @@ struct Image { void Initialize(); - static std::tuple GetSupportedVersion() noexcept { return std::make_tuple(1, 62); } + static std::tuple GetSupportedVersion() noexcept { return std::make_tuple(1, 6202); } static uint64_t MakeVersion(const uint32_t acMajor, const uint16_t acMinor) noexcept { return static_cast(acMajor) << 32 | static_cast(acMinor) << 16; }