mirror of
				https://github.com/hedge-dev/XenonRecomp.git
				synced 2025-10-30 07:11:38 +00:00 
			
		
		
		
	Compare commits
	
		
			3 commits
		
	
	
		
			f58e84a4a5
			...
			f67d54d4d4
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | f67d54d4d4 | ||
|   | ddd128bcca | ||
|   | a264d9586c | 
					 1 changed files with 28 additions and 2 deletions
				
			
		
							
								
								
									
										30
									
								
								README.md
									
										
									
									
									
								
							
							
						
						
									
										30
									
								
								README.md
									
										
									
									
									
								
							|  | @ -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. | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue