diff --git a/CMakeLists.txt b/CMakeLists.txt index e18f34e78..1646f0651 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,7 +14,7 @@ if(NOT DEFINED CACHE{BACKEND}) endif() endif() -message(STATUS "Building ${BACKEND}.") +message(STATUS "[MinecraftConsoles] -- Building ${BACKEND}.") if(BACKEND STREQUAL "Windows64") enable_language(C CXX ASM_MASM) @@ -40,8 +40,9 @@ target_include_directories(MinecraftWorld PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.World/x64headers" ) target_compile_definitions(MinecraftWorld PRIVATE - $<$:_LARGE_WORLDS;_DEBUG_MENUS_ENABLED;_DEBUG;_LIB;_CRT_NON_CONFORMING_SWPRINTFS;_CRT_SECURE_NO_WARNINGS;_WINDOWS64> - $<$>:_LARGE_WORLDS;_DEBUG_MENUS_ENABLED;_LIB;_CRT_NON_CONFORMING_SWPRINTFS;_CRT_SECURE_NO_WARNINGS;_WINDOWS64> + $<$:_LARGE_WORLDS;_DEBUG_MENUS_ENABLED;_DEBUG;_LIB;_CRT_NON_CONFORMING_SWPRINTFS;_CRT_SECURE_NO_WARNINGS;> + $<$>:_LARGE_WORLDS;_DEBUG_MENUS_ENABLED;_LIB;_CRT_NON_CONFORMING_SWPRINTFS;_CRT_SECURE_NO_WARNINGS;> + $<$:_WINDOWS64> ) if(MSVC) target_compile_options(MinecraftWorld PRIVATE @@ -136,6 +137,9 @@ if(BACKEND STREQUAL "Windows64") elseif(BACKEND STREQUAL "Cross64") include(FetchContent) + FetchContent_Declare(glm GIT_REPOSITORY https://github.com/g-truc/glm.git GIT_TAG 1.0.3) + FetchContent_MakeAvailable(glm) + FetchContent_Declare(glfw GIT_REPOSITORY https://github.com/glfw/glfw.git GIT_TAG 3.4) set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE) set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE) @@ -153,6 +157,7 @@ elseif(BACKEND STREQUAL "Cross64") target_include_directories(MinecraftClientCross64 PRIVATE "${CROSS64_DIR}" + "${CROSS64_DIR}/Cross64Extras/" "${CROSS64_DIR}/4JLibs/inc" "${CROSS64_DIR}/Glad/include" @@ -160,6 +165,11 @@ elseif(BACKEND STREQUAL "Cross64") "${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.World/x64headers" ) + target_compile_definitions(MinecraftClientCross64 PRIVATE + $<$:_LARGE_WORLDS;_DEBUG_MENUS_ENABLED;_DEBUG;_CRT_NON_CONFORMING_SWPRINTFS;_CRT_SECURE_NO_WARNINGS;_CROSS64> + $<$>:_LARGE_WORLDS;_DEBUG_MENUS_ENABLED;_CRT_NON_CONFORMING_SWPRINTFS;_CRT_SECURE_NO_WARNINGS;_CROSS64> + ) + if(MSVC) target_compile_options(MinecraftClientCross64 PRIVATE $<$:/W3 /MP> @@ -187,12 +197,12 @@ elseif(BACKEND STREQUAL "Cross64") elseif(UNIX) find_package(OpenGL REQUIRED) target_link_libraries(MinecraftClientCross64 PRIVATE - OpenGL::GL pthread dl + OpenGL::GL glm::glm pthread dl ) elseif(WIN32) find_package(OpenGL REQUIRED) target_link_libraries(MinecraftClientCross64 PRIVATE - OpenGL::GL wsock32 + OpenGL::GL glm::glm wsock32 ) endif() diff --git a/Minecraft.Client/Cross64/Cross64Extras/Cross64Types.h b/Minecraft.Client/Cross64/Cross64Extras/Cross64Types.h new file mode 100644 index 000000000..e279d7730 --- /dev/null +++ b/Minecraft.Client/Cross64/Cross64Extras/Cross64Types.h @@ -0,0 +1,176 @@ +#pragma once + +#include +#include +#include +#include +#include + +#define S_OK 0 + +typedef unsigned long DWORD; +typedef int BOOL; +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef float FLOAT; + +typedef int __int32; + +typedef FLOAT *PFLOAT; +typedef BOOL *PBOOL; +typedef BOOL *LPBOOL; +typedef BYTE *PBYTE; +typedef BYTE *LPBYTE; +typedef int *PINT; +typedef int *LPINT; +typedef WORD *PWORD; +typedef WORD *LPWORD; +typedef long *PLONG; +typedef long *LPLONG; +typedef DWORD *PDWORD; +typedef DWORD *LPDWORD; +typedef void *LPVOID; +typedef const void *LPCVOID; +typedef void *PVOID; +typedef unsigned long ULONG; + +typedef unsigned char boolean; + +typedef int INT; +typedef unsigned int UINT; +typedef unsigned int *PUINT; + +typedef unsigned char byte; +typedef long long __int64; +typedef unsigned long long __uint64; +typedef unsigned long DWORD; +typedef int INT; +typedef unsigned long ULONG_PTR, *PULONG_PTR; +typedef ULONG_PTR SIZE_T, *PSIZE_T; + +typedef __int64 LONG64, *PLONG64; + +#define VOID void +typedef char CHAR; +typedef short SHORT; +typedef long LONG; +typedef __int64 LONGLONG; +typedef __uint64 ULONGLONG; + +#define CONST const +typedef wchar_t WCHAR; // wc, 16-bit UNICODE character +typedef WCHAR *PWCHAR; +typedef WCHAR *LPWCH, *PWCH; +typedef CONST WCHAR *LPCWCH, *PCWCH; +typedef WCHAR *NWPSTR; +typedef WCHAR *LPWSTR, *PWSTR; +typedef CONST WCHAR *LPCWSTR, *PCWSTR; + +// +// ANSI (Multi-byte Character) types +// +typedef CHAR *PCHAR; +typedef CHAR *LPCH, *PCH; +typedef CONST CHAR *LPCCH, *PCCH; +typedef CHAR *NPSTR; +typedef CHAR *LPSTR, *PSTR; +typedef CONST CHAR *LPCSTR, *PCSTR; + +#ifndef FALSE +#define FALSE 0 +#endif + +#ifndef TRUE +#define TRUE 1 +#endif + +typedef void *HANDLE; +typedef void *HMODULE; +typedef void *HINSTANCE; +typedef void *HWND; +typedef int errno_t; + +typedef struct _FILETIME { +#ifdef _M_PPCBE + DWORD dwHighDateTime; + DWORD dwLowDateTime; +#else + DWORD dwLowDateTime; + DWORD dwHighDateTime; +#endif +} FILETIME, *PFILETIME, *LPFILETIME; + +#if defined(MIDL_PASS) +typedef struct _LARGE_INTEGER { +#else // MIDL_PASS +typedef union _LARGE_INTEGER { + struct { +#if defined(_M_PPCBE) + LONG HighPart; + DWORD LowPart; +#else + DWORD LowPart; + LONG HighPart; +#endif + }; + struct { +#if defined(_M_PPCBE) + LONG HighPart; + DWORD LowPart; +#else + DWORD LowPart; + LONG HighPart; +#endif + } u; +#endif // MIDL_PASS + LONGLONG QuadPart; +} LARGE_INTEGER; + +typedef LARGE_INTEGER *PLARGE_INTEGER; + +#if defined(MIDL_PASS) +typedef struct _ULARGE_INTEGER { +#else // MIDL_PASS +typedef union _ULARGE_INTEGER { + struct { +#if defined(_M_PPCBE) + DWORD HighPart; + DWORD LowPart; +#else + DWORD LowPart; + DWORD HighPart; +#endif + }; + struct { +#if defined(_M_PPCBE) + DWORD HighPart; + DWORD LowPart; +#else + DWORD LowPart; + DWORD HighPart; +#endif + } u; +#endif // MIDL_PASS + ULONGLONG QuadPart; +} ULARGE_INTEGER; + +typedef ULARGE_INTEGER *PULARGE_INTEGER; + +#define DECLARE_HANDLE(name) typedef HANDLE name +DECLARE_HANDLE(HINSTANCE); + +typedef HINSTANCE HMODULE; /* HMODULEs can be used in place of HINSTANCEs */ + +typedef struct _OVERLAPPED { + ULONG_PTR Internal; + ULONG_PTR InternalHigh; + DWORD Offset; + DWORD OffsetHigh; + HANDLE hEvent; +} OVERLAPPED, *LPOVERLAPPED; + +typedef LPVOID PSECURITY_ATTRIBUTES; +typedef LPVOID LPSECURITY_ATTRIBUTES; + +#define __in_ecount(a) +#define __in_bcount(a) \ No newline at end of file diff --git a/Minecraft.Client/stdafx.h b/Minecraft.Client/stdafx.h index 25d935722..fc8e5a2d2 100644 --- a/Minecraft.Client/stdafx.h +++ b/Minecraft.Client/stdafx.h @@ -20,6 +20,16 @@ // #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" diff --git a/Minecraft.World/stdafx.h b/Minecraft.World/stdafx.h index 48e52544d..b889bbc9e 100644 --- a/Minecraft.World/stdafx.h +++ b/Minecraft.World/stdafx.h @@ -59,6 +59,10 @@ typedef XNKID SessionID; typedef XUID GameSessionUID; #endif +#ifdef _CROSS64 +#include "Cross64Types.h" +#endif + #ifdef __PS3__ #include #include