wesellis/genesis-rom-workshop

GitHub: wesellis/genesis-rom-workshop

一套用于分析、提取和可视化 Sega Genesis ROM 文件中调色板、图形与文本资源的 Python 工具集。

Stars: 0 | Forks: 0

# Genesis ROM Workshop 一个用于分析和提取 Sega Genesis/Mega Drive ROM 文件中资源的 Python 工具包。 [![Python](https://img.shields.io/badge/Python-3.8+-3776AB?style=flat-square&logo=python&logoColor=white)](https://python.org) [![License](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE) [![Stars](https://img.shields.io/github/stars/wesellis/genesis-rom-workshop?style=flat-square)](https://github.com/wesellis/genesis-rom-workshop/stargazers) [![Last Commit](https://img.shields.io/github/last-commit/wesellis/genesis-rom-workshop?style=flat-square)](https://github.com/wesellis/genesis-rom-workshop/commits) ## 概述 Genesis ROM Workshop (GRW) 是一个用于处理 Sega Genesis ROM 文件的工具集合。它可以提取调色板、文本字符串和其他资源,以进行分析或修改。本项目旨在用于教育目的、游戏保存研究以及翻译项目。 **✨ 全新!** 现已包含专业的图形渲染功能 - 将 Genesis 图块提取并查看为 PNG 图像! ## 功能 - **调色板提取**:从 ROM 文件中提取调色板 - **调色板预览图像**:✨ 全新!将调色板导出为可视化的 PNG 图像 - **图形渲染**:✨ 全新!渲染 Genesis 图块以生成可查看的 PNG 文件 - **图块表创建**:✨ 全新!创建专业的精灵图 - **文本提取**:查找并导出文本字符串 - **资源分析**:基础的 ROM 结构分析 - **Hex 编辑工具**:简单的十六进制查看器和编辑器 - **资源管理**:组织提取出的资源 - **批处理**:处理多个 ROM 文件 ## 要求 - Python 3.8 或更高版本 - 对 ROM 文件结构有基本了解 - 用于分析的 ROM 文件(不包含在内) ## 安装说明 ``` git clone https://github.com/wesellis/genesis-rom-workshop.git cd genesis-rom-workshop pip install -r requirements.txt ``` **图形渲染要求:** ``` # palette 预览和 tile 渲染所需 pip install Pillow ``` ## 图形渲染 ✨ 全新! 该工具包现已包含专业的图形渲染功能!提取 Genesis 图形并**将其作为实际的 PNG 图像查看**,而不是原始二进制数据。 ### 快速开始:图形演示 ``` # 运行完整的 graphics demo python examples/example_graphics_rendering.py your_rom.bin ``` 这将创建: - **调色板预览图像** - 查看实际颜色,而不是十六进制值 - **渲染的图块表** - 专业的精灵图,就像精灵提取工具一样 - **单独的图块** - 带有可选网格覆盖的像素级完美预览 ### 您将获得 **之前(旧版本):** - ❌ 原始的 `.bin` 文件(无法读取) - ❌ JSON 调色板文件(难以直观显示颜色) - ❌ 需要外部工具才能查看图形 **之后(当前版本):** - ✅ 您可以在任何图像查看器中打开的 PNG 图像 - ✅ 可视化的调色板颜色条 - ✅ 专业的图块表 - ✅ 用于分析的像素网格 - ✅ 一切都包含在内! 有关完整文档,请参阅 [GRAPHICS_FEATURES.md](docs/GRAPHICS_FEATURES.md)。 ## 用法 ### 基础分析 ``` # 分析 ROM 文件 python grw_pipeline.py analyze game.bin --output-dir ./analysis # 仅提取 palette python grw_pipeline.py extract-palettes game.bin --format png # 提取文本字符串 python grw_pipeline.py extract-text game.bin --output text.json ``` ### 使用工具 每个工具目录都包含专门的实用程序: - **palette_editor**:提取和修改调色板 - **text_extractor**:查找和导出文本字符串 - **hex_editor**:查看和编辑 ROM 字节 - **asset_extractor**:提取图形和资源 - **rom_analyzer**:分析 ROM 结构 ### 示例:带有可视预览的调色板提取 ``` from tools.palette_editor import PaletteEditor editor = PaletteEditor() palettes = editor.extract_palettes('sonic.bin') # 导出为 JSON editor.export_palettes(palettes, 'palettes/') # NEW! 导出为可视的 PNG 图像 editor.export_palette_as_image(palettes[0], 'palette_preview.png') editor.export_all_palettes_as_images(palettes, 'palettes/') ``` ### 示例:图形渲染 ``` from tools.palette_editor import PaletteEditor from tools.asset_extractor import AssetExtractor # 提取 palette editor = PaletteEditor() palettes = editor.extract_palettes('sonic.bin') # NEW! 提取并将 graphics 渲染为可查看的 PNG 图像 extractor = AssetExtractor() result = extractor.extract_and_render_graphics( 'sonic.bin', palettes[0], max_tiles=256 ) # 创建专业的 tile sheet PNG! print(f"Tile sheet created: {result['sheet_file']}") ``` ### 示例:文本提取 ``` from tools.text_extractor import TextExtractor extractor = TextExtractor() strings = extractor.find_text('game.bin') extractor.export_strings(strings, 'text.json') ``` ## 项目结构 ``` genesis-rom-workshop/ ├── grw_pipeline.py # Main CLI interface ├── requirements.txt # Python dependencies ├── LICENSE # MIT License ├── README.md # This file │ ├── tools/ # Core toolkit modules │ ├── palette_editor/ # Palette extraction tools │ ├── graphics_renderer.py # ✨ Graphics rendering engine │ ├── text_extractor/ # Text finding tools │ ├── hex_editor/ # Hex editing utilities │ ├── asset_extractor/ # Asset extraction with rendering │ ├── rom_analyzer/ # ROM analysis tools │ ├── asset_manager/ # Asset organization │ └── security_utils.py # Security validation │ ├── examples/ # Example scripts and demos │ ├── example_graphics_rendering.py # Graphics demo │ ├── example_palette_extraction.py │ ├── example_text_extraction.py │ └── example_hex_editing.py │ ├── tests/ # Test suites │ ├── test_graphics.py # Graphics rendering tests │ └── test_tools.py # Core tools tests │ ├── docs/ # Documentation │ ├── GRAPHICS_FEATURES.md # Graphics rendering guide │ ├── USAGE_GUIDE.md # Usage instructions │ ├── API_REFERENCE.md # API documentation │ ├── SECURITY_HARDENING.md # Security documentation │ └── ... │ └── workspace/ # Working directory ├── backups/ # ROM backups ├── exports/ # Extracted assets └── projects/ # Project files ``` ## 技术细节 ### 依赖项 - **Pillow (PIL)**:✨ 图形渲染和调色板图像导出所必需 - **NumPy**:二进制数据处理(可选) - **Python 标准库**:struct、pathlib、json、hashlib ### 图形格式支持 该工具包包含一个专业的 4 位平面图形解码器,用于 Genesis 图块: - **图块格式**:8x8 像素,每个图块 32 字节 - **颜色深度**:4 位(每个调色板 16 种颜色) - **编码**:平面位平面格式(Genesis 标准) - **输出**:具有可配置缩放比例(1 倍到 16 倍)的 PNG 图像 - **功能**:网格覆盖、图块表、调色板渲染 ### ROM 文件支持 - Sega Genesis/Mega Drive (.bin, .gen, .smd) - Sega Master System (.sms) - Game Gear (.gg) - Sega 32X (.32x) 注意:ROM 文件格式检测是基础性的,可能不适用于所有 ROM 变体。 ## 已知限制 - 不同游戏之间的 ROM 结构差异很大 - 文本检测可能会产生误报 - 调色板提取假定为标准的 VDP 格式 - 不支持压缩数据 - 关于 ROM 内部结构的文档有限 - 需要手动验证结果 ## 用例 - **ROM 修改**:提取和查看图形、修改调色板、创建精灵图 - **游戏保存**:为存档目的记录 ROM 结构和资源 - **翻译项目**:为本地化工作提取文本 - **精灵提取**:创建专业的精灵图和纹理包 - **研究**:研究游戏开发技术和像素艺术 - **教育**:学习 ROM 文件结构、图形编码和游戏设计 - **资源分析**:检查调色板、图块布局和图形技术 ## 法律声明 此工具仅供教育和研究目的使用。 **重要提示**: - 此工具不包含 ROM 文件 - 用户必须拥有其分析的任何 ROM 的合法副本 - 请遵守您所在司法管辖区的版权法 - 请勿分发受版权保护的 ROM 文件 - 此工具仅供分析,不得用于盗版 ROM 修改和分发在您所在的国家/地区可能是非法的。请负责任且合乎道德地使用。 ## 文档 ### 用户文档 - **[GRAPHICS_FEATURES.md](docs/GRAPHICS_FEATURES.md)**:✨ 全新!完整的图形渲染指南 - **[USAGE_GUIDE.md](docs/USAGE_GUIDE.md)**:详细的用法说明和示例 - **[API_REFERENCE.md](docs/API_REFERENCE.md)**:完整的 API 文档 ### 项目文档 - **[WEEK1_IMPROVEMENTS_COMPLETE.md](docs/WEEK1_IMPROVEMENTS_COMPLETE.md)**:图形渲染实现细节 - **[SECURITY_HARDENING.md](docs/SECURITY_HARDENING.md)**:安全功能和最佳实践 - **[CHANGELOG.md](docs/CHANGELOG.md)**:版本历史和更新 - **[CONTRIBUTING.md](docs/CONTRIBUTING.md)**:贡献指南 - **[ROADMAP.md](docs/ROADMAP.md)**:未来开发计划 - **[SECURITY.md](docs/SECURITY.md)**:安全政策 ## 许可证 MIT 许可证 - 有关详细信息,请参阅 LICENSE 文件。 ## 免责声明 这是一个个人的教育项目。提供的工具按“原样”提供,不保证准确性或可靠性。不同游戏之间的 ROM 文件结构差异很大,可能需要手动验证结果。 作者不纵容盗版或侵犯版权行为。此工具仅用于对合法获取的 ROM 文件进行研究、保存和教育目的。 ## 作者 Wesley Ellis ## 项目状态与路线图 ### 正常运行的功能 ✅ **核心功能:** - ✅ 调色板提取和修改(完整实现) - ✅ 将调色板导入/导出为 JSON 格式 - ✅ **全新!** 调色板预览图像(可视化 PNG 导出) - ✅ **全新!** 图形图块渲染(4 位平面解码) - ✅ **全新!** 图块表创建(专业的精灵图) - ✅ **全新!** 用于像素分析的网格覆盖 - ✅ 支持 ASCII 的文本提取 - ✅ 文本替换和翻译工作流 - ✅ 翻译文件的生成和应用 - ✅ 带有地址/Hex/ASCII 显示的十六进制查看 - ✅ 十六进制编辑和字节写入 - ✅ ROM 比较和补丁创建 - ✅ ROM 分析(头部验证、校验和) - ✅ 资源提取(图形、图块映射、精灵) - ✅ 资源组织和清单生成 - ✅ 交互式 CLI 界面 - ✅ 所有工具模块均已使用 __init__.py 正确打包 **工具模块 - 全部实现:** - ✅ **palette_editor/**:完整的调色板提取、修改、颜色交换和 PNG 导出 - ✅ **graphics_renderer/**:✨ 全新!4 位平面解码和图块渲染 - ✅ **text_extractor/**:文本查找、翻译导出和 ROM 修补 - ✅ **hex_editor/**:十六进制查看、编辑、搜索和 ROM 比较 - ✅ **asset_extractor/**:带有渲染支持的图形图块提取 - ✅ **rom_analyzer/**:头部分析、校验和验证、熵计算 - ✅ **asset_manager/**:精灵/音频提取、项目组织 ### 已知限制 **仍然缺失:** - ⚠️ **GUI**:仅限命令行(未实现图形界面) - ⚠️ **ROM 格式**:主要以 Genesis 为主,对 SMS/Game Gear/32X 的支持有限 - ⚠️ **压缩数据**:不支持压缩的 ROM 数据(Nemesis/Kosinski) - ⚠️ **自动化测试**:存在图形测试套件,需要完整的 pytest 覆盖率 - ⚠️ **精灵组装**:未实现自动多图块精灵合成 - ⚠️ **音频播放**:仅提取音频数据,无播放功能 **有待增强的领域:** - 为非 ASCII 文本(日文 ROM)提供更好的编码支持 - 更复杂的图形格式检测 - 自动调色板位置检测 - 压缩算法支持(Nemesis、Kosinski 等) - 完整的 .smd 格式支持改进 ### 最新添加(最新更新) **第 1 周图形渲染功能** ✨(最新): 1. ✅ **graphics_renderer.py** - 全新模块!4 位平面图块解码 2. ✅ **调色板预览图像** - 将调色板导出为可视化的 PNG 文件 3. ✅ **图块渲染** - 将 Genesis 图块渲染为可查看的 PNG 图像 4. ✅ **图块表创建** - 专业的精灵图生成 5. ✅ **网格覆盖** - 带有网格覆盖支持的像素分析 6. ✅ **AssetExtractor 集成** - 一步提取并渲染 7. ✅ **test_graphics.py** - 全面的测试套件(3/3 测试通过) 8. ✅ **GRAPHICS_FEATURES.md** - 完整的文档 有关详细的文档和示例,请参阅 [GRAPHICS_FEATURES.md](docs/GRAPHICS_FEATURES.md)。 **之前的更新 - 核心工具实现:** 1. ✅ **palette_editor.py** - 完整的调色板提取、修改、JSON 导入/导出 2. ✅ **text_extractor.py** - 全面的文本提取和翻译工作流 3. ✅ **asset_manager.py** - 带有启发式检测的精灵/音频提取 4. ✅ **hex_editor.py** - 完整的十六进制查看、编辑、搜索和修补 5. ✅ **rom_analyzer.py** - 头部解析、校验和验证、统计信息 6. ✅ **asset_extractor.py** - 图形图块、图块映射和精灵提取 7. ✅ **所有 __init__.py 文件** - 正确的 Python 包结构 8. ✅ **security_utils.py** - 全面的安全强化 ### 未来增强功能 未来开发的优先功能: 1. **压缩支持** - Nemesis、Kosinski、Enigma 解压缩(第 2-3 周) 2. **精灵组装** - 自动多图块精灵合成 3. **图块映射渲染** - 完整的场景/关卡渲染 4. **GUI 应用程序** - 用户友好的图形界面 5. **测试套件** - 所有模块的全面 pytest 覆盖 6. **音频播放器** - YM2612/PSG 播放功能 7. **多 ROM 格式** - 更好的 SMS/Game Gear/32X 支持 8. **高级文本编码** - Shift-JIS 和其他字符集 9. **调色板检测** - 自动调色板位置查找 ### 贡献 欢迎贡献!带有图形渲染的核心工具包已经完成,但仍有增强的空间: - 扩大所有模块的测试覆盖率 - 使用 tkinter 或 PyQt 实现 GUI - 添加压缩/解压缩支持(Nemesis、Kosinski) - 实现从多个图块组装精灵 - 添加图块映射渲染功能 - 添加音频播放功能(YM2612/PSG) - 通过更多示例增强文档 -添加对更多 ROM 格式的支持 **注意**:本项目旨在学习 ROM 文件结构和游戏保存。请始终遵守版权法并使用合法获取的 ROM 文件。README 中描述的许多功能已部分实现或已计划在未来的开发中实现。
标签:Python, 世嘉创世纪, 云资产清单, 无后门, 游戏ROM, 资产提取, 逆向工具, 逆向工程