案例

sm64ex:基于反编译成果的 Super Mario 64 增强版 PC 移植

基于反编译源码构建原生 Super Mario 64 可执行文件,在 n64decomp 重建成果的 sm64-port 分支之上,增加渲染器、输入、视角、存档格式和外部数据等选项。游戏素材在构建时从使用者自备的 ROM 中提取。这是非一致性的增强移植,而不是逐字节一致的 ROM 重建。

使用条件与局限

  • 所审阅的 nightly 分支(最后推送于 2024-12-17)自述为 sm64-port/sm64-port 的分支,而 GitHub 将后者记录为 n64decomp/sm64 的分支;n64decomp/sm64 这一 ROM 重建项目另行收录。Makefile 只构建 PC 目标:它定义 NON_MATCHING 与 AVOID_UB,并强制将 COMPARE 设为 0,因此构建成功并不代表生成了一致的 ROM。
  • 每构建一个版本,都需自备对应的 Super Mario 64 原始 ROM,命名为 baserom.<version>.z64(默认 us,另可选 jp 或 eu);extract_assets.py 会先将其 SHA-1 与仓库附带的参考值比对,再提取素材。sh(Shindou)选项跳过提取,Makefile 标注为实验性,wiki 选项表则标注为无法使用;一份 2020 年的已知问题页面报告欧版文本有误且没有声音。
  • README 将构建说明交由 wiki 提供,相关页面涵盖 Linux(Python 3.6+、SDL2、GLEW、宿主 GCC 工具链)、通过 MSYS2 的 Windows、FreeBSD、Raspberry Pi 及 Emscripten/WebGL 目标;在 Linux 或 WSL 上交叉编译 Windows 版需要 MXE,OSX_BUILD 用于启用 macOS 修正。渲染器包括 OpenGL 2.1、OpenGL 1.3、Direct3D 11 和 Direct3D 12,其中 DirectX 渲染器仅限 Windows。
  • Jenkinsfile 构建 us、eu、jp 三个版本,并在应用每个增强补丁后重新构建 us 版,全部关闭比较;这只检查能否构建成功,不检查输出一致性或游戏行为等价。取消绘制距离、模拟摇杆视角、贴图修正和作弊等选项会有意改变行为,wiki 也指出取消绘制距离可能影响游戏玩法。本合集未构建或运行该移植。
  • GitHub 未检测到仓库许可证,所审阅的代码树根目录也没有许可证文件;附带工具各有许可,src/pc 中的声明转载了禁止以二进制形式再分发的 n64-fast3d-engine 许可。项目不提供任天堂原始内容,README 明确禁止上传受版权保护的素材。所审来源未确立 REA 或编码智能体的参与。

关于此条目

类型
案例
类别
独立重建案例
关联
独立重建项目
目标
游戏

来源复核于

说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。

一手来源

  1. README.md GitHub · sm64pc/sm64ex · 修订 d7ca2c0
  2. Makefile GitHub · sm64pc/sm64ex · 修订 d7ca2c0
  3. extract_assets.py GitHub · sm64pc/sm64ex · 修订 d7ca2c0
  4. Jenkinsfile GitHub · sm64pc/sm64ex · 修订 d7ca2c0
  5. src/pc/README-n64-fast32-engine.md GitHub · sm64pc/sm64ex · 修订 d7ca2c0
  6. https://github.com/sm64pc/sm64ex/wiki/Compiling-on-Linux/f2a7911133395886a2dce815f5cb5773e6c2ad8d
  7. https://github.com/sm64pc/sm64ex/wiki/Compiling-on-Windows/0e64ea14174606d83a7b75f20d14dce1b6e6e200
  8. https://github.com/sm64pc/sm64ex/wiki/Build-options/f9aff0b0db9cd4ec1c40ac7a2bc42af969edb42f
  9. https://github.com/sm64pc/sm64ex/wiki/Known-issues/94d262d19ea9e16990d955de28560df563dc5372
  10. README.md GitHub · sm64-port/sm64-port · 修订 2b17d08