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, 俄罗斯方块, 数据擦除, 游戏引擎, 网络安全研究, 重制版