← 文章 / 开源项目
Hacker News 3小时前 · 2026-07-28 10:47:29 · 1 阅读

Libsm64:将《超级马里奥64》作为库嵌入外部游戏引擎

这个项目的目的是为从 SM64 反编译项目(SM64 decompilation project)逆向工程中提取的移动和渲染代码提供一个干净的接口,让马里奥可以轻松嵌入到现有游戏引擎或其他系统中。该项目生成一个共享库文件,主要包含反编译项目的代码,并在运行时加载官方 SM64 ROM 以获取马里奥的纹理和动画数据,因此任何使用该库的项目都必须要求用户提供 ROM 来提取资产。

共享库的所有对外 API 都在 libsm64.h 中。任何使用该库的客户端项目只需包含该头文件并加载库即可。test 目录下还有一个最小示例项目,演示了库的使用方法。

绑定和插件

在 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
  • 运行 make 进行编译
  • 运行测试程序需要将SM64美版ROM放在仓库根目录,命名为 baserom.us.z64

为Emscripten(Web)编译(开发中)

运行 emmake make CC=emcc

如果希望将libsm64作为独立库供JS调用(可能不太实用?),之后再运行 emcc dist/libsm64.so -o libsm64.js 生成 libsm64.wasmlibsm64.js

否则,dist/libsm64.so 是一个编译好的WebAssembly对象,可链接到你的C项目中。

Make目标(所有平台)

  • make lib:(默认)生成 dist 目录,包含共享对象(或DLL)和公共头文件。
  • make test:编译库的 dist 目录以及测试程序。
  • make run:编译并运行基于SDL+OpenGL的测试程序。
原始来源: Hacker News

评论 (0)