Skip to content

Binaries and Modules

Binaries

The program links the first seven libraries through the rex::sdk CMake target. rex::Init loads the others by name at runtime, and loads rexxam, rexxbdm and rexkernel as modules. See Introduction for how they fit together.

Binary Purpose
rexbase Provides settings, logging, rex::Init, ImGui and the platform layer.
rexppc Provides what recompiled code needs at runtime: the routing of the MMIO blocks, the registry of recompiled code, exception handling, and the guest stack and detour frames.
rexxenos Holds the register, format and texture layout definitions of the Xenos GPU. It is a static library.
rexkernel Provides TitleRuntime, the kernel exports, guest memory, and guest audio with XMA decoding.
rexxam Implements the XAM exports.
rexxbdm Implements the XBDM exports.
rexapp Provides App, TitleApp, the command line and the entry macros.
rexfilesystem Provides the filesystem. rex::Init loads it by name.
rexhid, rexapu, rexui, rexgpu Provide the input, audio, UI and graphics systems. rex::Init loads each by name.
Driver modules Provide the drivers. rex::Init loads the ones that the settings select.
rexglue Creates projects and recompiles the XEX. It is a separate program and never loads into the program it builds.

Driver Modules

See Modules and Interfaces for how a system selects a driver.

Module Driver Purpose
rexui-sdl3 sdl3 Creates the window and the UI through SDL3.
rexhid-sdl3 sdl3 Reads input devices through SDL3, on every platform.
rexhid-xinput xinput Reads controllers through XInput. Windows only.
rexapu-sdl3 sdl3 Plays audio through SDL3.
rexgpu-xenos-d3d12 d3d12, family xenos Renders graphics through Direct3D 12. Windows only.
rexgpu-xenos-vulkan vulkan, family xenos Renders graphics through Vulkan.
rexgpu-xenos-null null, family xenos Processes the GPU commands of the title and draws nothing, so a title runs without a host GPU.

Graphics Driver Values

See Graphics for the gpu.driver setting.

gpu.driver Driver
any Selects d3d12 on Windows and vulkan elsewhere. This is the default.
d3d12 Selects Direct3D 12, on Windows only.
vulkan Selects Vulkan.
null Selects the null Xenos driver.
none Starts no driver. A TitleApp then fails in Init.

System Libraries

The eight libraries that an App loads, in load order. A module can only connect when the SDK or an earlier module serves every interface it requires. See Modules and Interfaces for the load order.

Library Serves Requires
rexfilesystem IFileSystemFactory ILogger
rexhid IInputSystem IDriverContext, IAppInfo, ISettingsRegistry, ILogger
rexapu IAudioSystem IDriverContext, IAppInfo, ISettingsRegistry, ILogger
rexui IUISystem, IUIControl IDriverContext, IAppInfo, ISettingsRegistry, ILogger
rexgpu IGraphicsSystem, IGraphicsControl IDriverContext, IAppInfo, ISettingsRegistry, ILogger
rexxam IXAMTitleLifecycle, IXAMTitleServices, IXAMLanguage, IXAMExports ISettingsRegistry, ILogger
rexxbdm IXBDMExports none
rexkernel IKernelControl, IObjectTable, IThreadRegistry, IModuleRegistry, INotificationBroadcaster, IOverlappedDispatcher ISettingsRegistry, ILogger, IFileSystemFactory, IUISystem

IUIControl, IGraphicsControl, IXAMExports, IXBDMExports and IKernelControl are private interfaces that only the app and the kernel can find. The app serves IAppInfo from a code module of its own.