REDRIVER2 icon indicating copy to clipboard operation
REDRIVER2 copied to clipboard

Adapt to 64 bit platforms

Open SoapyMan opened this issue 2 years ago • 2 comments

In order to build and run a 64 bit version of the game, following steps needs to be done:

  • Make MODEL offsets data relocation 64bit friendly (or get rid of it using macros)
  • Fix MS_TARGET, needs to be strictly 64 bytes (maybe get rid of union and use cast to compatible structures instead)
  • Fix other possible bugs
  • Optional Optimize PsyX primitive headers to use 48 bit addresses and still have pgxp_index, or migrate pgxp_index to different data structure
  • Replace long with int or try to build with -mx32 if it works

SoapyMan avatar Mar 16 '23 17:03 SoapyMan

What's the point of this though? We don't even have proper 60FPS support and the game runs perfectly well in 32-bit mode.

As for handling pointer size differences, it would suffice to convert the 32-bit versions and resolve them into 64-bit ones. Basically think of _OUT structures (stored on disc) that get converted to internal ones (in memory). This would probably require splitting some structures up into several pieces so we don't have to maintain 2 identical structs in 64-bit mode; 32-bit mode would basically just be typedef MS_TARGET MS_TARGET_OUT, otherwise the _OUT structure needs to be defined as well.

Fireboyd78 avatar Mar 18 '23 21:03 Fireboyd78

What's the point of this though? We don't even have proper 60FPS support and the game runs perfectly well in 32-bit mode.

The main point here is a bit better portability for future ports. For example, XBox UWP, (also Android in some cases) require apps to be compiled as 64 bit only. Also for x64 Linux it would be better to have it instead of carrying i386 versions packages (as there could be lack of them).

SoapyMan avatar Mar 19 '23 10:03 SoapyMan