drDOOM69GAMING/ConkerRecomp
GitHub: drDOOM69GAMING/ConkerRecomp
通过 N64Recomp 加 RT64 渲染器对《Conker's Bad Fur Day》进行 N64 到 PC 的重新编译移植,目前处于早期开发阶段。
Stars: 0 | Forks: 0
# ConkerRecomp
[](LICENSE)
[](https://github.com/drDOOM69GAMING/ConkerRecomp/actions/workflows/build.yml)
通过重新编译(N64Recomp + RT64)实现的《Conker's Bad Fur Day》PC 移植版。

## 进度
| 组件 | 状态 | 备注 |
|-----------|--------|-------|
| 启动 / 初始化 | 100% | 游戏启动,所有线程已创建,OS 服务已初始化 |
| 线程调度 | 85% | 所有线程均运行。线程 20 在处理约 16 条消息后退出(RSP 任务注入仅成功一次)。显示流水线中存在约 29 秒的卡顿。 |
| 显示流水线 | 90% | 在 RT64 窗口中可见彩虹帧缓冲区。在 0x800BEA10 处以 60Hz 的频率接收 VI 消息。显示桩程序填充并交换缓冲区。在卡顿前约有 23 次显示调用。 |
| RDP 图形 | 90% | LLE 解释器处理 G_SETCIMG、G_SETFILLCOLOR、G_FILLRECT、G_RDPFULLSYNC。Fill-rect 在 RDRAM 中生成正确的白色像素。 |
| PI DMA | 100% | 同步 DMA + 直接消息传递。完成时间均为 0ms。 |
| 状态机 | 100% | State=5 → State=0 转换正常工作。State=0 分发循环运行中。 |
| 音频 | 40% | 无崩溃(驱动程序已预初始化)。事件在空队列上被静默丢弃。 |
| 输入 | 100% | 控制器桩程序已就位。 |
| 稳定性 | 80% | 在 30 秒测试中无崩溃。剩余的 29 秒卡顿意味着显示在首次突发后冻结。 |
### 存在的问题
- **29 秒显示卡顿**:在约 23 次显示调用后,线程 3 停止清空 VI 消息队列(0x800BEA10)。消息堆积且未被读取并溢出。根本原因:`func_150186D0` 的重试循环退出,且主分发循环未重新进入显示处理程序。
- **线程 20 卡顿**:为进行 RDP 注入处理一次 `osSpTaskStartGo`,随后永久阻塞在 `osRecvMesg` 上。未清空其消息队列。
- **音频处理**:两个音频初始化函数均被跳过(它们阻塞在未初始化的队列上)。音频驱动程序被预清零以防止崩溃,但没有音频输出。
- **Display list 链表 (`func_15019130`)**:被跳过,因为线程 4 从未接收到其消息(D_8003B230 被重定向到线程 3)。位于 0x800380B4 的链表在重新进入时会损坏。
- **帧率**:远未达到 60 FPS。显示短暂运行后即冻结。
## 分支与构建
### 1. Fork 本仓库
点击本页面顶部在 GitHub 上的 **Fork** 按钮。
### 2. Clone 你的 fork
```
git clone https://github.com/YOUR_USERNAME/ConkerRecomp.git
cd ConkerRecomp
```
### 3. 安装依赖
**Ubuntu/Debian:**
```
sudo apt-get install cmake libsdl2-dev libvulkan-dev libgtk-3-dev \
libx11-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev \
glslang-tools
```
**Arch Linux:**
```
sudo pacman -S cmake sdl2 vulkan-devel gtk3 glslang
```
**Fedora:**
```
sudo dnf install cmake SDL2-devel vulkan-devel gtk3-devel \
libX11-devel libXrandr-devel libXinerama-devel libXcursor-devel libXi-devel \
glslang
```
### 4. 构建
```
cmake -B build .
cmake --build build -j$(nproc)
```
二进制文件将位于 `build/ConkerRecomp`。
### 5. 运行
将你的 `conker_us.z64` ROM 放在 `build/` 目录中并运行:
```
./build/ConkerRecomp
```
## 环境要求
- CMake 3.20+
- C++20 编译器
- SDL2
- Vulkan SDK
- glslangValidator (glslang-tools)
- 《Conker's Bad Fur Day》ROM (USA)
**免责声明:** 你必须提供自己的 ROM。我不分发或包含游戏 ROM 数据。
## 报告 Bug
请在 [github.com/drDOOM69GAMING/ConkerRecomp/issues](https://github.com/drDOOM69GAMING/ConkerRecomp/issues) 开启一个 issue 并包含以下内容:
- 发生了什么
- 你期望发生什么
- 终端输出(stderr)
- 你的操作系统和编译器版本
## 许可证
[MIT](LICENSE)
## 致谢
- [N64Recomp](https://github.com/N64Recomp/N64Recomp) 作者 Wiseguy — 重新编译工具
- [RT64](https://github.com/rt64/rt64) — 渲染器
- [ultramodern](https://github.com/N64Recomp/ultramodern) — 运行时
标签:Bash脚本, N64, 图形渲染, 游戏, 游戏移植, 静态重编译