Skip to content

ClementDreptin/XexUtils

Repository files navigation

XexUtils

XexUtils is a library to make Xbox 360 applications and/or libraries.

Features

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

Installation

With pre-compiled binaries

  • Download the latest binaries and header files from the releases.
  • From Visual Studio, right click on your project, go to Properties and then:
    • Add \path\to\XexUtils\lib to Configuration Properties > Linker > General > Additional Libary Directories.
    • Add XexUtils.lib (or XexUtilsd.lib for the debug version) to Configuration Properties > Linker > Input > Additional Dependencies.
    • Add \path\to\XexUtils\include to Configuration Properties > C/C++ > General > Additional Include Directories.

Compiling from source

  • 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 select XexUtils.vcxproj in \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..., tick XexUtils and 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 select BearSSL.vcxproj in \path\to\XexUtils\deps\BearSSL.vcxproj.

Documentation

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.

Running the tests

The tests are an app that runs on the console and is deployed to the devkit:\XexUtilsTests directory (same as hdd:\DEVKIT\XexUtilsTests).

Visual Studio 2010

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).

Visual Studio 2022 (or any environment)

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.

Acknowledgements

  • BearSSL - The TLS implementation used in sockets.
  • XboxTLS - What inspired and showed how to integrate BearSSL in an Xbox 360 environment.

About

XexUtils is a library to make Xbox 360 applications and/or libraries.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors