kidoz/cxbx
GitHub: kidoz/cxbx
CXBX 是一款面向 32 位 Windows 平台的初代 Xbox HLE 模拟器,通过 API 桥接而非 CPU 全量解释来实现原版游戏的运行与调试。
Stars: 2 | Forks: 1
## 当前状态
本仓库用于开发和模拟器的推进。它不是一个完善的
最终用户发布版本。
- 构建系统:仅限 Meson。
- 主要目标:32 位 Windows (`i686-pc-windows-msvc`),使用 clang/lld 工具链。
- 模拟模型:HLE 加载器/API 桥接;客户机 x86 代码直接在宿主机 CPU 上运行。
- 图形:Direct3D HLE 外加部分寄存器级的 NV2A 模型,用于 MMIO/RAMIN/PFIFO/PGRAPH 方法路径。这不是完整的 NV2A 光栅化。
- 调试:结构化的 `Emu`、`KTRACE|`、`NV2A|` 和一致性跟踪路径。
- 一致性:树内探测套件目前跟踪 CPU、内存、文件 I/O、内核、图形和 NV2A 的行为。
已知正在进行的活跃工作包括源码可移植性、x86 内联汇编/工具链
兼容性、内核导出覆盖率、连续内存行为和图形
推进。
## CXBX 的工作原理
CXBX 是一个 HLE 模拟器:
1. 它加载一个 Xbox 可执行文件 (`.xbe`)。
2. 它映射客户机镜像并准备内核 thunk 表。
3. 它使用 OOVPA 签名识别 XDK 库函数。
4. 它将定位到的客户机函数 patch 为跳转到宿主机的实现。
5. 客户机 x86 代码在宿主机 CPU 上原生运行。
这使得大多数故障都是 API 边界故障,而不是 CPU 解释器
故障。典型的调试目标是缺失的 XDK 签名、错误的 HLE
实现、未实现的内核序号、FS 段状态以及 GPU MMIO
状态。
## 快速上手
### 前置条件
- **clang/LLVM** (clang、lld、llvm-lib、llvm-dlltool) — 主要的工具链。
在 Windows 上,通过 `scoop install llvm` 安装或从 llvm.org 下载。
- **Meson ≥ 0.56** 和 **Ninja** — `pip install meson ninja` 或
`scoop install meson ninja`。
- **Python 3.13+** 配合 **uv** 用于一致性套件和 OOVPA 工具:
`pip install uv`。
- **just** (命令运行器) — 可选,但推荐:
`scoop install just`。
- **Xbox XDK** (仅在针对
原始 SDK 库构建一致性探测时需要)。使用合法获取并在本地配置的
SDK 安装。
### 一次性设置
模拟器是 32 位 x86 的,必须使用提供的交叉
文件进行配置。`build-min` 是由 `justfile`、
一致性运行器和文档使用的规范构建目录:
```
just init # uv sync --dev (Python tooling)
meson setup build-min --cross-file cross/i686-windows-clang.ini
```
### 构建
```
just build # meson compile -C build-min
```
构建选项(在设置时通过 `-D标签:C, C++, HLE, Xbox, 数据擦除, 游戏, 逆向工具, 预握手