mirror of
https://github.com/jmarshall23/CnC_Remastered_Collection.git
synced 2026-08-12 08:00:55 +02:00
64bit version now works. Temp hack in for WSA x64 crash.
This commit is contained in:
+1
-1
@@ -724,5 +724,5 @@ add_executable(RedAlert ${src_io} ${src_win32lib} ${src_redalert} ${src_external
|
||||
|
||||
set_target_properties(RedAlert PROPERTIES OUTPUT_NAME "RedAlert" LINK_FLAGS "/PDB:\"RedAlert.pdb\" /SUBSYSTEM:WINDOWS" RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/../" )
|
||||
target_include_directories(RedAlert PRIVATE ./external/xml/;./external/devil/;./external/;./redalert/win32lib;./external/lua/;./external/imgui;./external/dxsdk/Include;./external/ffmpeg-win32/include;./external/sdl2/include;./win32lib;./external/openal/include)
|
||||
target_link_libraries(RedAlert "opengl32.lib" "winmm.lib" "Ws2_32.lib" "${CMAKE_SOURCE_DIR}/external/devil/ilu.lib" "${CMAKE_SOURCE_DIR}/external/devil/DevIL.lib" "${CMAKE_SOURCE_DIR}/external/sdl2/lib/x86/SDL2.lib" "${CMAKE_SOURCE_DIR}/external/openal/out/build/x86-Release/OpenAL32.lib")
|
||||
target_link_libraries(RedAlert "opengl32.lib" "winmm.lib" "Ws2_32.lib" "${CMAKE_SOURCE_DIR}/external/devil/ilu.lib" "${CMAKE_SOURCE_DIR}/external/devil/DevIL.lib" "${CMAKE_SOURCE_DIR}/external/sdl2/lib/x64/SDL2.lib" "${CMAKE_SOURCE_DIR}/external/openal/out/build/x64-Release/OpenAL32.lib")
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"configurations": [
|
||||
{
|
||||
"name": "x86-Debug",
|
||||
"name": "x64-Debug",
|
||||
"generator": "Ninja",
|
||||
"configurationType": "Debug",
|
||||
"buildRoot": "${projectDir}\\out\\build\\${name}",
|
||||
@@ -9,11 +9,11 @@
|
||||
"cmakeCommandArgs": "",
|
||||
"buildCommandArgs": "",
|
||||
"ctestCommandArgs": "",
|
||||
"inheritEnvironments": [ "msvc_x86" ],
|
||||
"inheritEnvironments": [ "msvc_x64_x64" ],
|
||||
"variables": []
|
||||
},
|
||||
{
|
||||
"name": "x86-Release",
|
||||
"name": "x64-Release",
|
||||
"generator": "Ninja",
|
||||
"configurationType": "RelWithDebInfo",
|
||||
"buildRoot": "${projectDir}\\out\\build\\${name}",
|
||||
@@ -21,7 +21,7 @@
|
||||
"cmakeCommandArgs": "",
|
||||
"buildCommandArgs": "",
|
||||
"ctestCommandArgs": "",
|
||||
"inheritEnvironments": [ "msvc_x86" ],
|
||||
"inheritEnvironments": [ "msvc_x64_x64" ],
|
||||
"variables": []
|
||||
}
|
||||
]
|
||||
|
||||
@@ -3656,7 +3656,7 @@ void CC_Draw_Shape(void const * shapefile, int shapenum, int x, int y, WindowNum
|
||||
{
|
||||
int predoffset;
|
||||
#ifdef WIN32
|
||||
unsigned long shape_pointer;
|
||||
INT_PTR shape_pointer;
|
||||
#endif //WIN32
|
||||
|
||||
|
||||
|
||||
@@ -715,7 +715,7 @@ long __cdecl Buffer_Frame_To_Page(int shapeNum, int x, int y, int w, int h, Imag
|
||||
/*
|
||||
** KEYFRAME.CPP
|
||||
*/
|
||||
unsigned long Build_Frame(void const *dataptr, unsigned short framenumber, void *buffptr);
|
||||
INT_PTR Build_Frame(void const *dataptr, unsigned short framenumber, void *buffptr);
|
||||
unsigned short Get_Build_Frame_Count(void const *dataptr);
|
||||
unsigned short Get_Build_Frame_X(void const *dataptr);
|
||||
unsigned short Get_Build_Frame_Y(void const *dataptr);
|
||||
|
||||
@@ -1260,9 +1260,9 @@ void* Build_Frame2(void* shape, uint16_t frame, void* buffer)
|
||||
return buffer;
|
||||
}
|
||||
|
||||
unsigned long Build_Frame(void const* dataptr, unsigned short framenumber, void* buffptr) {
|
||||
INT_PTR Build_Frame(void const* dataptr, unsigned short framenumber, void* buffptr) {
|
||||
UseBigShapeBuffer = false;
|
||||
return (unsigned long)Build_Frame2((void *)dataptr, framenumber, buffptr); // 32 bit to 64 bit issue
|
||||
return (INT_PTR)Build_Frame2((void *)dataptr, framenumber, buffptr); // 32 bit to 64 bit issue
|
||||
}
|
||||
|
||||
unsigned short Get_Build_Frame_Count(void* shape)
|
||||
|
||||
@@ -854,7 +854,7 @@ int VectorClass<T>::operator == (VectorClass<T> const & vector) const
|
||||
template<class T>
|
||||
inline int VectorClass<T>::ID(T const * ptr)
|
||||
{
|
||||
return(((unsigned long)ptr - (unsigned long)&(*this)[0]) / sizeof(T));
|
||||
return(((INT_PTR)ptr - (INT_PTR)&(*this)[0]) / sizeof(T));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -284,7 +284,7 @@ void GraphicBufferClass::Init(int w, int h, void *buffer, long size, GBC_Enum fl
|
||||
Buffer = new BYTE[Size]; // otherwise allocate it and
|
||||
Allocated = TRUE; // mark it system alloced
|
||||
}
|
||||
Offset = (long)Buffer; // Get offset to the buffer
|
||||
Offset = (INT_PTR)Buffer; // Get offset to the buffer
|
||||
IsDirectDraw = FALSE;
|
||||
}
|
||||
|
||||
@@ -502,7 +502,7 @@ BOOL GraphicBufferClass::Lock(void)
|
||||
return(TRUE);
|
||||
}
|
||||
|
||||
Offset = (unsigned long)backbuffer_data_raw; // 32bit to 64bit issue here.
|
||||
Offset = (INT_PTR)backbuffer_data_raw;
|
||||
//Pitch = Width;
|
||||
|
||||
LockCount++; // increment count so we can track if
|
||||
|
||||
@@ -261,7 +261,7 @@ class GraphicViewPortClass {
|
||||
/*===================================================================*/
|
||||
/* define functions to get at the private data members */
|
||||
/*===================================================================*/
|
||||
long Get_Offset(void);
|
||||
INT_PTR Get_Offset(void);
|
||||
int Get_Height(void);
|
||||
int Get_Width(void);
|
||||
int Get_XAdd(void);
|
||||
@@ -351,7 +351,7 @@ class GraphicViewPortClass {
|
||||
/*===================================================================*/
|
||||
/* Define the data used by a GraphicViewPortClass */
|
||||
/*===================================================================*/
|
||||
long Offset; // offset to graphic page
|
||||
INT_PTR Offset; // offset to graphic page
|
||||
int Width; // width of graphic page
|
||||
int Height; // height of graphic page
|
||||
int XAdd; // xadd for graphic page (0)
|
||||
@@ -506,10 +506,10 @@ inline BOOL GraphicViewPortClass::Unlock(void)
|
||||
* HISTORY: *
|
||||
* 06/07/1994 PWG : Created. *
|
||||
*=========================================================================*/
|
||||
inline long GraphicViewPortClass::Get_Offset(void)
|
||||
inline INT_PTR GraphicViewPortClass::Get_Offset(void)
|
||||
{
|
||||
if(Offset == 0) {
|
||||
return (long)Get_Graphic_Buffer()->GetMemoryBuffer();
|
||||
return (INT_PTR)Get_Graphic_Buffer()->GetMemoryBuffer();
|
||||
}
|
||||
|
||||
return(Offset);
|
||||
|
||||
@@ -91,7 +91,7 @@ extern "C" {
|
||||
}
|
||||
|
||||
|
||||
inline void *Add_Long_To_Pointer(void const *ptr, long size)
|
||||
inline void *Add_Long_To_Pointer(void const *ptr, INT_PTR size)
|
||||
{
|
||||
return ((void *) ( (char const *) ptr + size));
|
||||
}
|
||||
|
||||
@@ -119,7 +119,7 @@ WinTimerClass::WinTimerClass (UINT freq, BOOL partial)
|
||||
//
|
||||
//TimerHandle = timeSetEvent ( 1000/freq , 1 , Timer_Callback , 0 , TIME_PERIODIC);
|
||||
// Add TIME_KILL_SYNCHRONOUS flag. ST - 2/13/2019 5:07PM
|
||||
TimerHandle = timeSetEvent ( 1000/freq , 1 , Timer_Callback , 0 , TIME_PERIODIC | TIME_KILL_SYNCHRONOUS);
|
||||
TimerHandle = timeSetEvent ( 1000/freq , 1 , (LPTIMECALLBACK)Timer_Callback , 0 , TIME_PERIODIC | TIME_KILL_SYNCHRONOUS);
|
||||
TimerSystemOn = success = ( TimerHandle !=0 );
|
||||
|
||||
if (success) {
|
||||
@@ -185,7 +185,7 @@ WinTimerClass::~WinTimerClass( void )
|
||||
*=============================================================================================*/
|
||||
|
||||
|
||||
void CALLBACK Timer_Callback (UINT , UINT , DWORD , DWORD , DWORD)
|
||||
void CALLBACK Timer_Callback (UINT , UINT , DWORD , DWORD, DWORD)
|
||||
{
|
||||
//CONTEXT context;
|
||||
|
||||
|
||||
@@ -144,7 +144,7 @@ typedef struct {
|
||||
/* The following PRIVATE functions are in this file: */
|
||||
/*=========================================================================*/
|
||||
|
||||
PRIVATE unsigned long Get_Resident_Frame_Offset( char *file_buffer, int frame );
|
||||
PRIVATE INT_PTR Get_Resident_Frame_Offset( char *file_buffer, int frame );
|
||||
PRIVATE unsigned long Get_File_Frame_Offset( int file_handle, int frame, int palette_adjust);
|
||||
PRIVATE BOOL Apply_Delta(SysAnimHeaderType *sys_header, int curr_frame, char *dest_ptr, int dest_w);
|
||||
/*= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =*/
|
||||
@@ -1029,13 +1029,13 @@ unsigned long __cdecl Get_Animation_Size(void const *handle)
|
||||
* HISTORY: *
|
||||
* 11/26/1991 SB : Created. *
|
||||
*=========================================================================*/
|
||||
PRIVATE unsigned long Get_Resident_Frame_Offset( char *file_buffer, int frame )
|
||||
PRIVATE INT_PTR Get_Resident_Frame_Offset( char *file_buffer, int frame )
|
||||
{
|
||||
unsigned long frame0_size;
|
||||
unsigned long *lptr;
|
||||
INT_PTR frame0_size;
|
||||
unsigned int *lptr;
|
||||
|
||||
// If there is a frame 0, the calculate its size.
|
||||
lptr = (unsigned long *) file_buffer;
|
||||
lptr = (unsigned int *) file_buffer;
|
||||
|
||||
if (*lptr) {
|
||||
frame0_size = lptr[1] - *lptr;
|
||||
@@ -1096,7 +1096,7 @@ PRIVATE BOOL Apply_Delta(SysAnimHeaderType *sys_header, int curr_frame, char *de
|
||||
{
|
||||
char *data_ptr, *delta_back;
|
||||
int file_handle, palette_adjust;
|
||||
unsigned long frame_data_size, frame_offset;
|
||||
INT_PTR frame_data_size, frame_offset;
|
||||
|
||||
|
||||
palette_adjust = ((sys_header->flags & WSA_PALETTE_PRESENT) ? 768 : 0);
|
||||
@@ -1110,14 +1110,18 @@ PRIVATE BOOL Apply_Delta(SysAnimHeaderType *sys_header, int curr_frame, char *de
|
||||
// copy it into buffer
|
||||
|
||||
frame_offset = Get_Resident_Frame_Offset(sys_header->file_buffer, curr_frame);
|
||||
// jmarshall - hack for crash!
|
||||
if (frame_offset < 0)
|
||||
return 0;
|
||||
frame_data_size = Get_Resident_Frame_Offset(sys_header->file_buffer, curr_frame + 1) - frame_offset;
|
||||
|
||||
data_ptr = (char *)Add_Long_To_Pointer(sys_header->file_buffer, frame_offset);
|
||||
delta_back = (char *)Add_Long_To_Pointer(delta_back,
|
||||
sys_header->largest_frame_size - frame_data_size);
|
||||
|
||||
Mem_Copy( data_ptr, delta_back, frame_data_size );
|
||||
|
||||
// jmarshall - 64bit
|
||||
//Mem_Copy( data_ptr, delta_back, frame_data_size );
|
||||
memcpy(delta_back, data_ptr, frame_data_size);
|
||||
// jmarshall end1
|
||||
} else if (sys_header -> flags & WSA_FILE) {
|
||||
|
||||
// Open up file because not file not in RAM.
|
||||
|
||||
@@ -323,7 +323,7 @@ void GraphicBufferClass::Init(int w, int h, void *buffer, long size, GBC_Enum fl
|
||||
Buffer = new BYTE[Size]; // otherwise allocate it and
|
||||
Allocated = TRUE; // mark it system alloced
|
||||
}
|
||||
Offset = (long)Buffer; // Get offset to the buffer
|
||||
Offset = (INT_PTR)Buffer; // Get offset to the buffer
|
||||
IsDirectDraw = FALSE;
|
||||
}
|
||||
|
||||
|
||||
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user