XexUtils is a library to make Xbox 360 applications and/or libraries.
| Header file | Description | Examples |
|---|---|---|
| Assert | Trigger a breakpoint with an assertion message in debug builds. | Assert.md |
| Dashlaunch | Get/set Dashlaunch options and access its global data. | Dashlaunch.md |
| Detour | Hook a function. | Detour.md |
| Expected | Partial clone of std::expected from C++23. |
Expected.md |
| Filesystem | Functions to access storage devices and a class to represent a file path. | Filesystem.md |
| Formatter | Convert from narrow to wide strings and generate strings from printf formats. |
Formatter.md |
| General | General purpose helpers that don't really fit in any namespace. | General.md |
| Hypervisor | Read and write to hypervisor memory. | Hypervisor.md |
| Input | Detect single button presses and repeats more easily than using XInput directly. | Input.md |
| Kernel | Declarations of functions exported by xboxkrnl.exe and their associated structs and enums. |
|
| Log | Very barebones logger. | Log.md |
| Math | Utility math functions and classes to manipulate vectors. | Math.md |
| Memory | Read and write arbitrary data from and to arbritrary locations with safeguards. | Memory.md |
| Optional | Partial clone of std::optional from C++17. |
Optional.md |
| SMC | Interact with the power LED. | SMC.md |
| Socket | Open TCP connections with TLS support. | Socket.md |
| ValueOrPtr | Container class to manipulate a value or a pointer seemlessly. | ValueOrPtr.md |
| Xam | Functions to nteract with the system UI and declarations of functions exported by xam.xex. |
Xam.md |
- Download the latest binaries and header files from the releases.
- From Visual Studio, right click on your project, go to
Propertiesand then:- Add
\path\to\XexUtils\libtoConfiguration Properties > Linker > General > Additional Libary Directories. - Add
XexUtils.lib(orXexUtilsd.libfor the debug version) toConfiguration Properties > Linker > Input > Additional Dependencies. - Add
\path\to\XexUtils\includetoConfiguration Properties > C/C++ > General > Additional Include Directories.
- Add
- Clone the repository with its submodule. XexUtils depends on BearSSL.
git clone --recursive https://github.com/ClementDreptin/XexUtils.git - Add XexUtils as a project in Visual Studio:
Right click on the solution name in the solution explorer then
Add > Existing Project...and selectXexUtils.vcxprojin\path\to\XexUtils. - Add it as a reference to your main project:
Right click on your main project in the solution explorer then
Add > Reference..., tickXexUtilsand click OK. - Add BearSSL as a project in Visual Studio:
Right click on the solution name in the solution explorer then
Add > Existing Project...and selectBearSSL.vcxprojin\path\to\XexUtils\deps\BearSSL.vcxproj.
You can look at the examples directory, which will show you a basic usage of every public function. If you want a detailed API reference, you can look at the Doxygen comments in the source header files, which should display on hover in your editor if it's modern enough.
The tests are an app that runs on the console and is deployed to the devkit:\XexUtilsTests directory (same as hdd:\DEVKIT\XexUtilsTests).
Open test\Tests.sln in Visual Studio.
Note: Using Visual Studio 2010 is the only way to run the test app in a debugger (sadly).
You can't build with the 64-bit version of MSBuild so you'll need to run the 32-bit version manually. Open PowerShell (which can be done in View > Terminal in Visual Studio) and run the following command:
# Create an alias to the 32-bit version of MSBuild named msbuild
# The default installation path of VS2022 is C:\Program Files\Microsoft Visual Studio\2022\Community
Set-Alias msbuild "<path_vs2022>\MSBuild\Current\Bin\MSBuild.exe"Now run msbuild to compile the test app and deploy it to your console.