Compare commits

...

3 commits

Author SHA1 Message Date
gaitas13
f67d54d4d4
Merge a264d9586c into ddd128bcca 2025-08-20 02:07:08 -04:00
Skyth (Asilkan)
ddd128bcca
Update outdated info in README. (#159) 2025-08-04 16:56:26 +03:00
gaitas13
a264d9586c
added easy build instructions for windows 2025-03-05 16:44:06 +01:00

View file

@ -1,6 +1,6 @@
# XenonRecomp
XenonRecomp is a tool that converts Xbox 360 executables into C++ code, which can then be recompiled for any platform. Currently, it only supports x86 platforms due to the use of x86 intrinsics.
XenonRecomp is a tool that converts Xbox 360 executables into C++ code, which can then be recompiled for any platform.
This project was heavily inspired by [N64: Recompiled](https://github.com/N64Recomp/N64Recomp), a similar tool for N64 executables.
@ -20,7 +20,7 @@ Vector registers' endianness handling is more complicated. Instead of swapping i
The FPU expects denormalized numbers to remain unmodified, while VMX instructions always flush them. This is managed by storing the current floating-point state in the CPU state struct and enabling or disabling denormal flushing as necessary before executing each instruction.
Most VMX instructions are implemented using x86 intrinsics. Luckily, the number of AVX intrinsics used is relatively low, so adding support for other architectures using libraries like [SIMD Everywhere](https://github.com/simd-everywhere/simde) might be possible.
Most VMX instructions are implemented using x86 intrinsics. Support for ARM64 is implemented using [SIMD Everywhere](https://github.com/simd-everywhere/simde).
### MMIO
@ -255,6 +255,32 @@ Compilers other than Clang have not been tested and are not recommended, includi
On Windows, you can use the clang-cl toolset and open the project in Visual Studio's CMake integration.
### Building on windows using MSYS2
clone the repo with submodules
```
git clone --recurse-submodules https://github.com/hedge-dev/XenonRecomp.git
```
download msys2 from the official website and install it
run msys2 ucrt64
install clang and cmake on msys2
```
pacman -S mingw-w64-ucrt-x86_64-clang
pacman -S mingw-w64-ucrt-x86_64-cmake
```
go into the folder
set env vars temporarily so that cmake uses clang instead of gcc, this has to be done every time
```
export CC=clang
export CXX=clang++
```
build the project
```
cmake -S . -B build -D CMAKE_BUILD_TYPE=Debug
cmake --build build
```
## Special Thanks
This project could not have been possible without the [Xenia](https://github.com/xenia-project/xenia) emulator, as many parts of the CPU code conversion process has been implemented by heavily referencing its PPC code translator. The project also uses code from [Xenia Canary](https://github.com/xenia-canary/xenia-canary) to patch XEX binaries.