diff --git a/src/Common/Game/IW4/IW4_Assets.h b/src/Common/Game/IW4/IW4_Assets.h index 3fbefa24..5c61fb0e 100644 --- a/src/Common/Game/IW4/IW4_Assets.h +++ b/src/Common/Game/IW4/IW4_Assets.h @@ -3,24 +3,7 @@ #ifndef __IW4_ASSETS_H #define __IW4_ASSETS_H -#ifdef type_align -#undef type_align -#endif -#ifdef tdef_align -#undef tdef_align -#endif -#ifdef __zonecodegenerator -#define type_align alignas -#define tdef_align alignas -#else -#ifdef _MSVC_LANG -#define type_align(x) __declspec(align(x)) -#define tdef_align(x) __declspec(align(x)) -#else -#define type_align(x) __attribute__((__aligned__(x))) -#define tdef_align(x) /*__attribute__((__aligned__(x)))*/ -#endif -#endif +#include "../../Utils/TypeAlignment.h" #ifndef __zonecodegenerator namespace IW4 diff --git a/src/Common/Game/T6/T6_Assets.h b/src/Common/Game/T6/T6_Assets.h index 5445c6a2..e96c13cb 100644 --- a/src/Common/Game/T6/T6_Assets.h +++ b/src/Common/Game/T6/T6_Assets.h @@ -3,24 +3,7 @@ #ifndef __T6_ASSETS_H #define __T6_ASSETS_H -#ifdef type_align -#undef type_align -#endif -#ifdef tdef_align -#undef tdef_align -#endif -#ifdef __zonecodegenerator -#define type_align alignas -#define tdef_align alignas -#else -#ifdef _MSVC_LANG -#define type_align(x) __declspec(align(x)) -#define tdef_align(x) __declspec(align(x)) -#else -#define type_align(x) __attribute__((__aligned__(x))) -#define tdef_align(x) /*__attribute__((__aligned__(x)))*/ -#endif -#endif +#include "../../Utils/TypeAlignment.h" #ifndef __zonecodegenerator namespace T6 @@ -790,7 +773,6 @@ namespace T6 unsigned int hash; }; - struct SndAssetBankHeader { unsigned int magic; @@ -801,9 +783,9 @@ namespace T6 unsigned int entryCount; unsigned int dependencyCount; unsigned int pad32; - int64_t fileSize; - int64_t entryOffset; - int64_t checksumOffset; + gcc_align(8) int64_t fileSize; + gcc_align(8) int64_t entryOffset; + gcc_align(8) int64_t checksumOffset; char checksumChecksum[16]; char dependencies[512]; char padding[1464]; diff --git a/src/Common/Utils/TypeAlignment.h b/src/Common/Utils/TypeAlignment.h new file mode 100644 index 00000000..8b9b7b91 --- /dev/null +++ b/src/Common/Utils/TypeAlignment.h @@ -0,0 +1,31 @@ +#pragma once + +// Undefine any previously defined utilities +#ifdef type_align +#undef type_align +#endif +#ifdef tdef_align +#undef tdef_align +#endif +#ifdef memb_align +#undef memb_align +#endif + +#ifdef __zonecodegenerator +#define type_align(x) alignas(x) +#define tdef_align(x) alignas(x) +#define memb_align(x) alignas(x) +#define gcc_align(x) +#else +#ifdef _MSVC_LANG +#define type_align(x) __declspec(align(x)) +#define tdef_align(x) __declspec(align(x)) +#define memb_align(x) __declspec(align(x)) +#define gcc_align(x) +#else +#define type_align(x) __attribute__((__aligned__(x))) +#define tdef_align(x) __attribute__((__aligned__(x))) +#define memb_align(x) __attribute__((__aligned__(x))) +#define gcc_align(x) __attribute__((__aligned__(x))) +#endif +#endif \ No newline at end of file