From 0b7892665e2ce803f23e60fdfd5bdb523f7838fd Mon Sep 17 00:00:00 2001 From: Falco Date: Tue, 15 Jul 2025 16:55:44 -0500 Subject: [PATCH] Fixed builds for DreamSDK4. - Both Miami and Liberty fixed. - FUNDAMENTAL issues with data types not being configured correctly for 64-bit Windows - More issues with and other files not being included properly for _WIN64 - Successfully baked and tested both liberty and miami CDIs in Flycast --- src/liberty/skel/crossplatform.h | 4 +++- src/miami/skel/crossplatform.h | 2 +- vendor/koshle/dc_hle_types.h | 23 ++++++++++++++++++++++- vendor/librw/src/dc/rwdc.cpp | 4 ++++ 4 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/liberty/skel/crossplatform.h b/src/liberty/skel/crossplatform.h index ca04fe05..1502150f 100644 --- a/src/liberty/skel/crossplatform.h +++ b/src/liberty/skel/crossplatform.h @@ -13,7 +13,9 @@ enum eWinVersion OS_WINXP, }; -#ifdef _WIN32 +#ifdef _WIN64 +#include +#elif defined(_WIN32) // As long as WITHWINDOWS isn't defined / isn't included, we only need type definitions so let's include . // NOTE: It's perfectly fine to include here, but it can increase build size and time in *some* conditions, and maybe substantially in future if we'll use crossplatform.h more. diff --git a/src/miami/skel/crossplatform.h b/src/miami/skel/crossplatform.h index 1ceb8ceb..84f8b9d0 100644 --- a/src/miami/skel/crossplatform.h +++ b/src/miami/skel/crossplatform.h @@ -17,7 +17,7 @@ enum eWinVersion char *_strdate(char *buf); #endif -#ifdef _WIN32 +#if defined(_WIN32) || defined(_WIN64) // As long as WITHWINDOWS isn't defined / isn't included, we only need type definitions so let's include . // NOTE: It's perfectly fine to include here, but it can increase build size and time in *some* conditions, and maybe substantially in future if we'll use crossplatform.h more. diff --git a/vendor/koshle/dc_hle_types.h b/vendor/koshle/dc_hle_types.h index a5c2f114..1159c1b4 100644 --- a/vendor/koshle/dc_hle_types.h +++ b/vendor/koshle/dc_hle_types.h @@ -1,6 +1,27 @@ #pragma once -#if ( (__LONG_MAX__ *2UL+1UL) == 18446744073709551615ULL) && ((__INT_MAX__ *2U +1U) == 4294967295ULL) +#if defined(_WIN64) && _WIN64 == 1 + typedef unsigned long long uint64; /**< \brief 64-bit unsigned integer */ + typedef unsigned int uint32; /**< \brief 32-bit unsigned integer */ + typedef unsigned short uint16; /**< \brief 16-bit unsigned integer */ + typedef unsigned char uint8; /**< \brief 8-bit unsigned integer */ + typedef long long int64; /**< \brief 64-bit signed integer */ + typedef int int32; /**< \brief 32-bit signed integer */ + typedef short int16; /**< \brief 16-bit signed integer */ + typedef char int8; /**< \brief 8-bit signed integer */ + + typedef volatile unsigned long long vuint64; /**< \brief 64-bit unsigned integer */ + typedef volatile unsigned int vuint32; /**< \brief 32-bit unsigned integer */ + typedef volatile unsigned short vuint16; /**< \brief 16-bit unsigned integer */ + typedef volatile unsigned char vuint8; /**< \brief 8-bit unsigned integer */ + typedef volatile long long vint64; /**< \brief 64-bit signed integer */ + typedef volatile int vint32; /**< \brief 32-bit signed integer */ + typedef volatile short vint16; /**< \brief 16-bit signed integer */ + typedef volatile char vint8; /**< \brief 8-bit signed integer */ + +typedef uint64 ptr_t; +#define INT32_IS_INT +#elif (( (__LONG_MAX__ *2UL+1UL) == 18446744073709551615ULL) && ((__INT_MAX__ *2U +1U) == 4294967295ULL)) typedef unsigned long uint64; /**< \brief 64-bit unsigned integer */ typedef unsigned int uint32; /**< \brief 32-bit unsigned integer */ typedef unsigned short uint16; /**< \brief 16-bit unsigned integer */ diff --git a/vendor/librw/src/dc/rwdc.cpp b/vendor/librw/src/dc/rwdc.cpp index 2849461f..c421df17 100644 --- a/vendor/librw/src/dc/rwdc.cpp +++ b/vendor/librw/src/dc/rwdc.cpp @@ -4527,6 +4527,10 @@ imageFindRasterFormat(Image *img, int32 type, #if defined(_WIN32) || defined(_WIN64) #include // For QueryPerformanceCounter and GetCurrentThreadId +#ifdef _WIN64 +#include +#include +#endif #elif defined(__APPLE__) #include // For mach_absolute_time #include