diff --git a/DevIL.dll b/DevIL.dll index 1bd3822..51b3450 100644 Binary files a/DevIL.dll and b/DevIL.dll differ diff --git a/ILU.dll b/ILU.dll index 2966069..5959615 100644 Binary files a/ILU.dll and b/ILU.dll differ diff --git a/OpenAL32.dll b/OpenAL32.dll index 8da7b5f..5977f7f 100644 Binary files a/OpenAL32.dll and b/OpenAL32.dll differ diff --git a/SDL2.dll b/SDL2.dll index d0849bf..3131862 100644 Binary files a/SDL2.dll and b/SDL2.dll differ diff --git a/cache/empty.txt b/cache/empty.txt deleted file mode 100644 index e69de29..0000000 diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index d89d1ba..9dedecd 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -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") \ No newline at end of file diff --git a/code/CMakeSettings.json b/code/CMakeSettings.json index a54a82d..5b07d06 100644 --- a/code/CMakeSettings.json +++ b/code/CMakeSettings.json @@ -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": [] } ] diff --git a/code/REDALERT/CONQUER.CPP b/code/REDALERT/CONQUER.CPP index 99527e8..68fc5b1 100644 --- a/code/REDALERT/CONQUER.CPP +++ b/code/REDALERT/CONQUER.CPP @@ -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 diff --git a/code/REDALERT/FUNCTION.H b/code/REDALERT/FUNCTION.H index 8ba3b12..dc10fba 100644 --- a/code/REDALERT/FUNCTION.H +++ b/code/REDALERT/FUNCTION.H @@ -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); diff --git a/code/REDALERT/Shape.cpp b/code/REDALERT/Shape.cpp index e516583..14dbc28 100644 --- a/code/REDALERT/Shape.cpp +++ b/code/REDALERT/Shape.cpp @@ -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) diff --git a/code/REDALERT/VECTOR.H b/code/REDALERT/VECTOR.H index fb8e5a8..135db04 100644 --- a/code/REDALERT/VECTOR.H +++ b/code/REDALERT/VECTOR.H @@ -854,7 +854,7 @@ int VectorClass::operator == (VectorClass const & vector) const template inline int VectorClass::ID(T const * ptr) { - return(((unsigned long)ptr - (unsigned long)&(*this)[0]) / sizeof(T)); + return(((INT_PTR)ptr - (INT_PTR)&(*this)[0]) / sizeof(T)); } diff --git a/code/REDALERT/WIN32LIB/GBUFFER.CPP b/code/REDALERT/WIN32LIB/GBUFFER.CPP index 19d7cf8..88b9ac7 100644 --- a/code/REDALERT/WIN32LIB/GBUFFER.CPP +++ b/code/REDALERT/WIN32LIB/GBUFFER.CPP @@ -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 diff --git a/code/REDALERT/WIN32LIB/GBUFFER.H b/code/REDALERT/WIN32LIB/GBUFFER.H index ec7fb5d..069ab35 100644 --- a/code/REDALERT/WIN32LIB/GBUFFER.H +++ b/code/REDALERT/WIN32LIB/GBUFFER.H @@ -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); diff --git a/code/REDALERT/WIN32LIB/MEMFLAG.H b/code/REDALERT/WIN32LIB/MEMFLAG.H index dbd93ab..d387d61 100644 --- a/code/REDALERT/WIN32LIB/MEMFLAG.H +++ b/code/REDALERT/WIN32LIB/MEMFLAG.H @@ -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)); } diff --git a/code/REDALERT/WIN32LIB/TIMERINI.CPP b/code/REDALERT/WIN32LIB/TIMERINI.CPP index f453fc8..31d0f3c 100644 --- a/code/REDALERT/WIN32LIB/TIMERINI.CPP +++ b/code/REDALERT/WIN32LIB/TIMERINI.CPP @@ -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; diff --git a/code/REDALERT/WIN32LIB/WSA.CPP b/code/REDALERT/WIN32LIB/WSA.CPP index 1f67ca9..b0fb389 100644 --- a/code/REDALERT/WIN32LIB/WSA.CPP +++ b/code/REDALERT/WIN32LIB/WSA.CPP @@ -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. diff --git a/code/TIBERIANDAWN/WIN32LIB/GBUFFER.CPP b/code/TIBERIANDAWN/WIN32LIB/GBUFFER.CPP index 3f1365a..e4e8edf 100644 --- a/code/TIBERIANDAWN/WIN32LIB/GBUFFER.CPP +++ b/code/TIBERIANDAWN/WIN32LIB/GBUFFER.CPP @@ -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; } diff --git a/code/external/devil/DevIL.dll b/code/external/devil/DevIL.dll index 1bd3822..51b3450 100644 Binary files a/code/external/devil/DevIL.dll and b/code/external/devil/DevIL.dll differ diff --git a/code/external/devil/DevIL.lib b/code/external/devil/DevIL.lib index cb7de1e..504d364 100644 Binary files a/code/external/devil/DevIL.lib and b/code/external/devil/DevIL.lib differ diff --git a/code/external/devil/ILU.lib b/code/external/devil/ILU.lib index 5ea04cb..bc44ef7 100644 Binary files a/code/external/devil/ILU.lib and b/code/external/devil/ILU.lib differ diff --git a/code/external/openal/out/build/x64-Release/OpenAL32.lib b/code/external/openal/out/build/x64-Release/OpenAL32.lib new file mode 100644 index 0000000..77b829c Binary files /dev/null and b/code/external/openal/out/build/x64-Release/OpenAL32.lib differ diff --git a/ui/mouse/mouse-00000.png b/ui/mouse/mouse-00000.png index 1a0a1dd..d2a3cbb 100644 Binary files a/ui/mouse/mouse-00000.png and b/ui/mouse/mouse-00000.png differ