Hacker News 2026/7/28 · 2026-07-28 10:47:29 · 41 阅读
Libsm64:将《超级马里奥64》作为库嵌入外部游戏引擎
本项目的目的是为SM64 反编译项目逆向出的角色移动与渲染代码提供一个干净的接口,使马里奥能够以最少的工作量被嵌入到现有的游戏引擎或其他系统中。项目生成一个共享库文件,其中主要包含来自反编译项目的代码,在运行时加载官方 SM64 ROM 以获取马里奥的贴图和动画数据,因此任何使用本库的项目都必须要求用户提供 ROM 来提取资源。
共享库的整个对外 API 都可以在 libsm64.h 中找到。使用本库的任何客户端项目只需要包含该头文件并加载库即可。test 目录下还有一个最小化的示例,演示了该库的使用方法。
绑定与插件
- Rust 绑定
- Odin 绑定
- Unity 插件
- Blender 插件
- Godot 插件
- Game Maker 8 扩展
- Unity MelonLoader mod
- Unity BepInEx 插件
- C# 绑定
在 Mac 和 Linux 上构建
- 确保已安装 python3。
- 如果要编译测试程序,请确保已安装 SDL2 和 GLEW 库(在 Ubuntu 上:libsdl2-dev、libglew-dev)。
- 运行
make进行构建。如果想链接 musl libc 而非 glibc,请改用LIBSM64_MUSL=1 make。 - 要运行测试程序,需要在仓库根目录下放置一个 SM64 美版 ROM,文件名必须为
baserom.us.z64。
在 Windows 上构建
- 按照此处设置 MSYS2 MinGW 64 的步骤 1-4 操作,但将仓库 URL 替换为
https://github.com/libsm64/libsm64.git
- 如果你要编译测试程序,请确保已安装 SDL2 和 GLEW 库。
- 64 位:
pacman -S mingw-w64-x86_64-SDL2 mingw-w64-x86_64-glew。 - 32 位:
pacman -S mingw-w64-i686-SDL2 mingw-w64-i686-glew。
make 进行编译
- 要运行测试程序,你需要在仓库根目录放置一个 SM64 美版 ROM 文件,命名为 baserom.us.z64。
## 编译 Emscripten(Web)版本(开发中)
运行 emmake make CC=emcc。
如果你想让 libsm64 作为独立库被 JS 调用(可能没什么用?),之后可以运行 emcc dist/libsm64.so -o libsm64.js 来生成 libsm64.wasm 和 libsm64.js。
否则,dist/libsm64.so 就是一个编译好的 WebAssembly 对象,可以直接链接到你自己的 C 项目中使用。
## Make 目标(适用于所有平台)
- make lib:(默认)编译生成 dist 目录,其中包含共享库或 DLL 以及对外公开的头文件。
- make test:编译生成 dist 目录以及测试程序。
- make run:编译并运行基于 SDL+OpenGL 的测试程序。原始来源: Hacker News