drDOOM69GAMING/ConkerRecomp

GitHub: drDOOM69GAMING/ConkerRecomp

通过 N64Recomp 加 RT64 渲染器对《Conker's Bad Fur Day》进行 N64 到 PC 的重新编译移植,目前处于早期开发阶段。

Stars: 0 | Forks: 0

# ConkerRecomp [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Build](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/7d3938702a092455.svg)](https://github.com/drDOOM69GAMING/ConkerRecomp/actions/workflows/build.yml) 通过重新编译(N64Recomp + RT64)实现的《Conker's Bad Fur Day》PC 移植版。 ![截图](https://raw.githubusercontent.com/drDOOM69GAMING/ConkerRecomp/master/screenshot.jpeg) ## 进度 | 组件 | 状态 | 备注 | |-----------|--------|-------| | 启动 / 初始化 | 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, 图形渲染, 游戏, 游戏移植, 静态重编译