In version 13.2 I introduced the "Memory Mods", which have since been renamed to "Runtime Modifications". This allows RCP to modify a game as it's running, allowing you to change level, set values such as your health and more. This works for both native Win32 games, like Rayman 2 PC, and emulated games, like Rayman 1 PS1. The problem is that many emulators nowadays are 64-bit, and in order for RCP to be able to modify the memory of these emulators it also needs to be 64-bit (a 32-bit process can't access a 64-bit process!). So in order for this to work I had to change RCP to be 64-bit.
Now RCP is compiled as a .NET C# app, which means there's not actually any native code in the .exe file (it's IL which gets compiled to native machine code by the JIT by the runtime). So it doesn't actually really change how it's compiled when you switch between 32-bit or 64-bit modes (mostly just a flag in the header). Because of this there's an option called "AnyCPU" where you can compile an app to run as 32-bit app on 32-bit machines and 64-bit on 64-bit machines. This would ideally have been the solution and would have allowed RCP to still support 32-bit machines while also working with 64-bit emulators on 64-bit machines. But there's one issue. The image parsing library I use, ImageMagick, relies on native .dll files! This .dll is completely different for 32-bit and 64-bit versions because this is actually native machine code. Now I could include both .dll files, and then it would pick the correct one as needed, but I decided against it since it would increase the .exe file for RCP by quite a bit, and I figured barely anyone is using a 32-bit machine nowadays.
There are also other annoying differences between a 32-bit and 64-process, such as how some Windows APIs work. For example enumerating the "Program Files" folders on your C drive is a bit different, and then there's the wow6432node in the Registry... Since I don't own a 32-bit computer myself I wouldn't be able to test and make sure all of this works correctly. So that's another reason it was easier to just go all in with 64-bit and drop 32-bit support.
So TLDR:
- RCP needs to run as a 64-bit process on a 64-bit machine in order to work with 64-bit emulators
- I could support 32-bit machines too, but then the .exe file size would increase for RCP and I decided against it
- I don't have a 32-bit computer and can't test to make sure everything works