native-gb/tetris

GitHub: native-gb/tetris

该项目是 1989 年 Game Boy 版《俄罗斯方块》的非官方 C++20 原生重实现,独立运行游戏逻辑并从用户提供的兼容 ROM 中提取素材,无需模拟器即可游玩。

Stars: 0 | Forks: 0

# native-gb-tetris 这是一个非官方的原生 C++20 重新实现,针对的是 1989 年在 Game Boy 上发行的 《俄罗斯方块》。它原生运行游戏逻辑,通过 Gubsy 使用 SDL 3,并从用户提供的兼容 ROM 中提取所需的图形和音频数据。 本代码库不包含 ROM、提取的游戏资源或模拟器。它不隶属于 The Tetris Company、Nintendo、Bullet-Proof Software 或任何其他版权所有者,也未获得他们的认可。 ## 状态 目前已实现单人游戏、菜单、计分、最高分、演示、结局、原始音频、键盘输入、控制器输入、整数缩放以及可选的原生增强功能。多人游戏模式在代码库中已有所体现,但尚未像单人游戏那样经过严格的验证测试。 受支持的输入是 32 KiB World revision 1.1 ROM: ``` SHA-1 74591cc9501af93873f9a5d3eb12da12c0723bbc ``` 程序在使用 ROM 之前会对其进行检查,并拒绝不兼容的版本。 ## 构建与运行 环境要求包括 CMake 3.21+、C++20 编译器、Ninja、Git 以及常用的 SDL 构建依赖项。当本地没有检出时,Gubsy 及其依赖项会按固定的版本获取。 ``` cmake --preset dev cmake --build --preset dev ./build-debug/native-gb-tetris --rom /path/to/compatible.gb ``` 在 VS Code 中按 F5 即可进行常规的调试构建和启动。程序还会查找 `roms/Tetris (JUE) (V1.1) [!].gb`;除其 README 外,`roms/` 目录将被忽略。 控制方式: - 方向键、WASD 或控制器方向键:移动和选择 - Z / 控制器南向键:A 按钮 - X / 控制器东向键:B 按钮 - Enter / 控制器开始键:Start - F1:开发 UI - F11:无边框全屏 - Escape:退出全屏或退出程序 窗口、缩放、显示、控制器和增强设置可通过游戏内的 ImGui 菜单进行访问。游戏表现和视觉增强是可选的,并与兼容性相关行为分开存储。 ## 开发布局 这是该移植项目唯一活跃的 C++ 工作区。它无需私密研究数据即可构建和运行。 维护者可以在其旁边放置两个同级工作区: ``` GBRE/ generic analysis and comparison tools native-gb-tetris-re/ private maps, scenarios, oracle data, and reports native-gb-tetris/ this native port ``` 当这些目录存在时,开发 UI 和依赖于场景的测试就可以使用它们。它们是可选的,并非运行时依赖项。 ## 测试 ``` ctest --preset dev ``` 需要 ROM 或私有场景库的测试仅在这些输入存在时才会注册。逻辑测试在干净的代码检出中仍然可用。 ## 发布 请勿在此处提交 ROM、提取的资源、参考捕获记录、反汇编代码或私有场景证据。在发布构建版本或接收资源之前,请参阅[法律与发布](docs/legal-and-distribution.md)和[NOTICE](NOTICE.md)。 项目名称使用“Tetris”仅是为了标识本非官方兼容性项目与之互操作的对象软件。官方名称、徽标、美术、音乐和游戏数据仍归其各自所有者所有。 ## 许可证 本代码库中的原始源代码基于 GPL-3.0-only 许可证提供。该许可证不授予任何与第三方游戏内容或商标相关的权利。
标签:Bash脚本, C++, C++20, SDL, 俄罗斯方块, 数据擦除, 游戏引擎, 网络安全研究, 重制版