64bit version now works. Temp hack in for WSA x64 crash.

This commit is contained in:
Justin Marshall
2020-06-22 13:22:35 -07:00
parent e3c998fb16
commit 9edbf56043
22 changed files with 33 additions and 29 deletions
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
View File
+1 -1
View File
@@ -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")
+4 -4
View File
@@ -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": []
}
]
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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);
+2 -2
View File
@@ -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)
+1 -1
View File
@@ -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));
}
+2 -2
View File
@@ -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
+4 -4
View File
@@ -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);
+1 -1
View File
@@ -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));
}
+2 -2
View File
@@ -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;
+13 -9
View File
@@ -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.
+1 -1
View File
@@ -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;
}
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB