本页目录

Whatajong:Roguelike 麻将接龙(Mahjong Solitaire)游戏

whatajong · masylum/whatajong

Whatajong 是一款用 TypeScript 编写的 Roguelike 风格麻将接龙(Mahjong Solitaire)游戏,据 README 说明线上版本为 whatajong.com。游戏代码位于仓库 /src/renderer 目录,可用 pnpm run dev 本地运行、pnpm run test 执行测试。仓库...

动作游戏 平台跳跃 自研引擎 C 角色控制 跳跃与重力 碰撞检测 敌人 AI 专家
★ Stars 18 Forks 11 License MIT 更新 2026-11-08

国内开发环境适配

Windows
官方声明支持
Linux
官方声明支持
macOS
官方声明支持
引擎 / 框架:自研引擎 暂无中文教程标记 未标记站长实测
国内克隆 GitHub 可能需代理或镜像;Ubuntu/Debian 需安装 binutils-mips-linux-gnu、build-essential、pkgconf、python3 等依赖;需自备对应版本原版 ROM 作为 baserom.<版本>.z64 提取素材;仓库路径长度不要超过 255 字符。

中文项目介绍

这是一个把任天堂 N64 主机游戏《超级马里奥64》的原始机器码逐段逆向还原为可读源码的“反编译(decompilation)”工程。与常见的复刻、重制或同人引擎不同,它的目标不是重新设计玩法,而是让编译产物与原版 ROM 的 sha1 完全一致——也就是说,仓库里的 C 源码、汇编片段、关卡脚本与数据表经过构建后,能够生成与当年商业发行卡带字节级相同的镜像。这种“可复现构建”是整个项目的核心验收标准,README 中列出的五个 sha1 就是各版本必须命中的目标值。

工程同时覆盖五个发行版本:日本版(jp)、北美版(us)、欧洲版(eu)、振動パック対応的 Shindou 版(sh)以及神游机 iQue Player 版(cn)。构建系统通过 make 变量 VERSION 切换目标版本,默认构建北美版。不同版本之间存在代码布局、资源与本地化文本的差异,因此仓库为每个版本保留了各自的符号与匹配细节;README 也提示源码命名与数据结构文档仍在持续完善中,阅读时需要对 N64 时代的编程习惯有一定容忍度。

核心功能

核心特性

在技术实现层面,这个仓库本身就是一份 N64 游戏架构的完整样本。目录结构把引擎与内容做了清晰切分:actors 存放对象行为、几何布局与显示列表;levels 存放关卡脚本与关卡级显示列表;src 下再细分为 audio、buffers(栈、堆与任务缓冲)、engine(脚本处理引擎与工具)、game(行为逻辑与主体玩法)、goddard(马里奥开场画面)、menu(标题画面与存档、关卡、调试选择菜单);lib 是 SDK 库代码,rsp 保存音频与 Fast3D 微码的汇编实现,asm 目录里还专门有 non_matchings 子目录,用来存放那些尚未能用 C 精确复现、只能以手写汇编形式保留的片段。assets、sound、textures、text、data 则分别对应动画与演示数据、音序与音色库、天空盒与通用贴图、对话与关卡名文本、行为脚本等。

构建参数体现了这套工具链的灵活度:除 VERSION 外,还可以用 GRUCODE 在 f3d_old、f3d_new、f3dex、f3dex2、f3dzex 之间选择图形微码变体,用 COMPARE 决定是否校验生成 ROM 的哈希,用 NON_MATCHING 启用功能等价但未必字节一致的 C 实现(同时规避未定义行为),用 CROSS 指定交叉编译器前缀。工具链依赖主要是 MIPS 交叉 binutils(如 binutils-mips-linux-gnu、mips64-elf-binutils,或 mips64-linux-gnu-)、pkgconf 与 Python 3.6 以上版本,其余构建工具在 tools 目录内自备。

技术架构分析

技术要点

平台支持方面,README 给出了完整的官方指引:Linux 下按 Debian/Ubuntu、Arch(含 AUR 的 mips64-elf-binutils)与其他发行版分类给出安装命令;Windows 推荐安装 WSL 并在其中使用 Debian 或 Ubuntu 18.04 发行版,再按 Linux 步骤操作;macOS 通过 Homebrew 安装 coreutils、make、pkg-config 与 mips64-elf-binutils,并强调必须使用 GNU make(gmake),因为系统自带的 make 版本过旧。三种桌面平台都额外提供了 Docker 方案:先 docker build 生成镜像,再把工作目录挂载进容器执行 make,Linux 宿主机上还需通过 --user 指定输出文件属主。开箱即用并不成立——仓库刻意不包含编译所需的全部素材,必须先自备一份对应版本的原版 ROM,命名为 baserom.<版本>.z64 放在项目根目录,构建时由工具从中提取资源;此外 README 特别提醒仓库路径总长度不得超过 255 个字符,过长的路径会直接导致构建失败。

对于想学习 N64 时代游戏架构的开发者,这个仓库的价值在于它是一份“带答案的完整工程”:从角色状态机、镜头与关卡脚本,到 Fast3D 显示列表的组织方式、音频微码与音序播放,再到堆栈与任务缓冲的管理,都能在源码中找到对应实现;enhancements 目录还提供了源码级修改示例,方便在不破坏原版行为的前提下做实验。贡献流程要求先就较大改动开 issue 讨论,并对代码运行 clang-format 以符合项目规范,官方交流渠道是 README 中给出的 Discord 服务器。需要注意的门槛是:这不是一个可以直接 clone 就能跑起来的示例项目,需要交叉编译环境、原版 ROM 以及一定的 MIPS 汇编与逆向阅读能力;同时由于反编译工程的法律与版权敏感性,素材的分发责任完全落在使用者一侧,仓库只提供代码与构建脚本。

开源许可证与版权说明

许可证标识:MIT。源码、资源与依赖许可可能不同,请以官方仓库为准。本站仅做索引,不托管源码。

相似项目