Hacker News 3小时前 · 2026-07-28 10:47:29 · 1 阅读
Libsm64:将《超级马里奥64》作为库嵌入外部游戏引擎
这个项目的目的是为从 SM64 反编译项目(SM64 decompilation project)逆向工程中提取的移动和渲染代码提供一个干净的接口,让马里奥可以轻松嵌入到现有游戏引擎或其他系统中。该项目生成一个共享库文件,主要包含反编译项目的代码,并在运行时加载官方 SM64 ROM 以获取马里奥的纹理和动画数据,因此任何使用该库的项目都必须要求用户提供 ROM 来提取资产。
共享库的所有对外 API 都在 libsm64.h 中。任何使用该库的客户端项目只需包含该头文件并加载库即可。test 目录下还有一个最小示例项目,演示了库的使用方法。
绑定和插件
- Rust 绑定
- Odin 绑定
- Unity 插件
- Blender 插件
- Godot 插件
- Game Maker 8 扩展
- Unity MelonLoader 模组
- Unity BepInEx 插件
- C# 绑定
在 Mac 和 Linux 上构建
- 确保已安装 python3。
- 如果要构建测试程序,确保已安装 SDL2 和 GLEW 库(在 Ubuntu 上:libsdl2-dev、libglew-dev)。
- 运行
make构建。如果想链接 musl libc 而不是 glibc,请运行LIBSM64_MUSL=1 make。 - 要运行测试程序,需要在仓库根目录下有一个名为
baserom.us.z64的 SM64 US ROM。
在 Windows 上构建
- 按照此处步骤1-4设置MSYS2 MinGW 64,但将仓库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
- 64位:
- 运行
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