diff --git a/CMakeLists.txt b/CMakeLists.txt index 1646f0651..8f6aada7f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -156,8 +156,9 @@ elseif(BACKEND STREQUAL "Cross64") ) target_include_directories(MinecraftClientCross64 PRIVATE - "${CROSS64_DIR}" "${CROSS64_DIR}/Cross64Extras/" + + "${CROSS64_DIR}" "${CROSS64_DIR}/4JLibs/inc" "${CROSS64_DIR}/Glad/include" @@ -188,21 +189,25 @@ elseif(BACKEND STREQUAL "Cross64") target_link_libraries(MinecraftClientCross64 PRIVATE MinecraftWorld glfw + glm::glm + OpenGL:GL ) + find_package(OpenGL REQUIRED) + if(APPLE) target_link_libraries(MinecraftClientCross64 PRIVATE - "-framework OpenGL" + "-framework Cocoa" + "-framework IOKit" + "-framework CoreVideo" ) elseif(UNIX) - find_package(OpenGL REQUIRED) target_link_libraries(MinecraftClientCross64 PRIVATE - OpenGL::GL glm::glm pthread dl + pthread dl ) elseif(WIN32) - find_package(OpenGL REQUIRED) target_link_libraries(MinecraftClientCross64 PRIVATE - OpenGL::GL glm::glm wsock32 + wsock32 ) endif() diff --git a/Minecraft.Client/Cross64/Cross64Extras/Cross64Maths.h b/Minecraft.Client/Cross64/Cross64Extras/Cross64Maths.h new file mode 100644 index 000000000..50815b15f --- /dev/null +++ b/Minecraft.Client/Cross64/Cross64Extras/Cross64Maths.h @@ -0,0 +1,20 @@ +#pragma once + +#include + +typedef glm::vec4 XMVECTOR; +typedef glm::mat4 XMMATRIX; +typedef glm::vec4 XMFLOAT4; + +inline XMMATRIX XMMatrixMultiply(XMMATRIX a, XMMATRIX b) { + return a * b; +} + +inline XMVECTOR XMMatrixDeterminant(XMMATRIX a) { + return XMVECTOR(glm::determinant(a)); +} + +inline XMMATRIX XMMatrixInverse(XMVECTOR* a, XMMATRIX b) { + if (a) *a = XMMatrixDeterminant(b); + return glm::inverse(b); +} \ No newline at end of file diff --git a/Minecraft.Client/Cross64/Cross64Extras/Cross64Stubs.h b/Minecraft.Client/Cross64/Cross64Extras/Cross64Stubs.h new file mode 100644 index 000000000..e69de29bb diff --git a/Minecraft.Client/Cross64/Cross64Extras/TLSStorage.h b/Minecraft.Client/Cross64/Cross64Extras/TLSStorage.h new file mode 100644 index 000000000..45b600c2f --- /dev/null +++ b/Minecraft.Client/Cross64/Cross64Extras/TLSStorage.h @@ -0,0 +1,19 @@ +#pragma once + +class TLSStorageCross64 { + static TLSStorageCross64 *m_pInstance; + + static const int sc_maxSlots = 64; + static BOOL m_activeList[sc_maxSlots]; + __thread static LPVOID m_values[sc_maxSlots]; + +public: + TLSStorageCross64(); + + // Retrieve singleton instance. + static TLSStorageCross64 *Instance(); + int Alloc(); + BOOL Free(DWORD _index); + BOOL SetValue(DWORD _index, LPVOID _val); + LPVOID GetValue(DWORD _index); +}; \ No newline at end of file diff --git a/Minecraft.Client/Cross64/Cross64_Minecraft.cpp b/Minecraft.Client/Cross64/Cross64_Minecraft.cpp index e69de29bb..1577c4e3b 100644 --- a/Minecraft.Client/Cross64/Cross64_Minecraft.cpp +++ b/Minecraft.Client/Cross64/Cross64_Minecraft.cpp @@ -0,0 +1 @@ +#include "stdafx.h" \ No newline at end of file diff --git a/Minecraft.Client/stdafx.h b/Minecraft.Client/stdafx.h index fc8e5a2d2..4c8bf5d69 100644 --- a/Minecraft.Client/stdafx.h +++ b/Minecraft.Client/stdafx.h @@ -20,16 +20,6 @@ // #endif // #endif -#ifdef _CROSS64 -#define AUTO_VAR(_var, _val) auto _var = _val -#include -#include -#include -#include -#include -#include "Cross64Types.h" -#endif - #ifdef __PS3__ #include "Ps3Types.h" @@ -64,6 +54,16 @@ #include "PSVitaTypes.h" #include "PSVitaStubs.h" #include "PSVitaMaths.h" +#elif defined _CROSS64 +#define AUTO_VAR(_var, _val) auto _var = _val +#include +#include +#include +#include +#include +#include "Cross64Types.h" +#include "Cross64Stubs.h" +#include "Cross64Maths.h" #else #define AUTO_VAR(_var, _val) auto _var = _val #include diff --git a/Minecraft.World/stdafx.h b/Minecraft.World/stdafx.h index b889bbc9e..cacc43ed5 100644 --- a/Minecraft.World/stdafx.h +++ b/Minecraft.World/stdafx.h @@ -59,10 +59,6 @@ typedef XNKID SessionID; typedef XUID GameSessionUID; #endif -#ifdef _CROSS64 -#include "Cross64Types.h" -#endif - #ifdef __PS3__ #include #include @@ -73,12 +69,9 @@ typedef XUID GameSessionUID; #include #include #include - - #include "Ps3Types.h" #include "Ps3Stubs.h" #include "PS3Maths.h" - #elif defined __ORBIS__ #include #include @@ -94,10 +87,19 @@ typedef XUID GameSessionUID; #include "PSVitaTypes.h" #include "PSVitaStubs.h" #include "PSVitaMaths.h" +#elif defined _CROSS64 +#include +#include +#include +#include "Cross64Types.h" +#include "Cross64Stubs.h" +#include "Cross64Maths.h" #else #include #include +#if ( defined _XBOX || defined _WINDOWS64 || defined _DURANGO ) #include +#endif #include #endif //__PS3__ diff --git a/Minecraft.World/x64headers/extraX64.h b/Minecraft.World/x64headers/extraX64.h index b89998ace..b19f308a6 100644 --- a/Minecraft.World/x64headers/extraX64.h +++ b/Minecraft.World/x64headers/extraX64.h @@ -4,7 +4,7 @@ #include #include -#include "..\..\Minecraft.Client\SkinBox.h" +#include "../../Minecraft.Client/SkinBox.h" #include