YoshKoz/ez-flash-ii-usb-flasher

GitHub: YoshKoz/ez-flash-ii-usb-flasher

用 Rust 编写的现代跨平台 EZ-Flash II GBA 烧录卡 USB 工具,替代旧版 Windows XP 驱动,支持 ROM 导出与存档备份恢复。

Stars: 1 | Forks: 0

# EZ-Flash II USB 烧录器 EZ-Writer II / EZ-Flash II USB GBA 烧录卡的现代开源工具。 从 Windows 10/11、Linux 或 macOS 上导出 Game Boy Advance ROM,备份存档,检查卡带头信息并恢复存档, 无需原始的 Windows XP 内核驱动。 **无需自定义内核驱动。使用 WinUSB + libusb。** [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](LICENSE) [![Rust](https://img.shields.io/badge/Rust-2024%20edition-orange)](https://www.rust-lang.org/) [![Platforms](https://img.shields.io/badge/Platforms-Windows%2010%2F11%20%7C%20Linux%20%7C%20macOS-lightgrey)]()
## 这是什么 原版的 EZ-Writer II 软件只能在旧的 Windows XP 时代的环境中轻松运行。 本项目使用 Rust 编写的 CLI 和 GUI 替换了旧的 USB 驱动程序路径,通过 libusb 与硬件进行通信。 它支持初始状态为 `0547:2131` 的 EZ-Writer II 设备,并在上传固件后,重新枚举为 `0548:1005`。 ## 当前状态 | 功能 | 状态 | |---------|--------| | 设备检测 | 正常工作 | | 上传固件至 AN2131 RAM | 正常工作 | | 读取卡带头信息 | 正常工作 | | ROM 导出 | 正常工作 | | 读取存档 | 正常工作 | | 写入存档 | 正常工作,请务必备份 | | GUI | 正常工作 | | 写入 / 擦除 ROM | 实验性,高风险 | 只读操作是最安全的,也是计划公开发布的路径。写入功能仅用于测试和恢复工作,但您应该先进行备份并阅读 [SAFETY.md](SAFETY.md)。 ## 快速开始 ### 前置条件 - **Rust** — 如果 `cargo` 不可用,请从 安装。 - **USB 驱动程序(仅限 Windows)** — 使用 [Zadig](https://zadig.akeo.ie/): 1. 以管理员身份运行 Zadig。 2. `Options → List All Devices`。 3. 选择 `EZ-Writer II`(`0547:2131` 或 `0548:1005`)。 4. 选择 `WinUSB`,点击 `Install Driver`。 - **Linux** — 可能需要 udev 规则或 root 权限才能直接访问 USB。 - **macOS** — 无需驱动程序,但请在出现提示时授予 USB 权限。 ### 构建 CLI ``` cd src/ezwriter-cli cargo build --release ``` ### 检测 → 初始化 → 导出 ``` # 从 src/ezwriter-cli/ 目录: # 1. 检测 ./target/release/ezwriter-cli list # 2. 加载固件 (如果在 bootloader 模式 0547:2131 下) ./target/release/ezwriter-cli firmware-download tusbez.bin # 3. 识别 cartridge ./target/release/ezwriter-cli cart-info # 4. 转储 ROM + 保存 ./target/release/ezwriter-cli dump mygame.gba ./target/release/ezwriter-cli save-read 0 2048 --output mygame.sav ``` (Windows:将 `./target/release/ezwriter-cli` 替换为 `.\target\release\ezwriter-cli.exe`) `tusbez.bin` 是加载到 Cypress AN2131 RAM 中的原始 8051 固件。 拔出设备会重置芯片,因此每次连接时都必须上传固件。 ## GUI 从 `src/ezwriter-gui` 构建: ``` cd src/ezwriter-gui cargo build --release ``` 在同一目录下运行(loader 文件位于 `src/ezwriter-gui`): ``` ./target/release/ezwriter-gui # Linux/macOS target\release\ezwriter-gui.exe # Windows ``` 如果将可执行文件移动到其他位置,请先将 `loader_table1.bin` 和 `loader_table2.bin` 复制到其旁边。 GUI 有五个选项卡: | 选项卡 | 用途 | |-----|---------| | Status | 检测烧录器并初始化固件 | | Cart Info | 读取标题、游戏代码、存档类型和 ROM 大小 | | Read ROM | 将卡带 ROM 导出为 `.gba` | | Read Save | 将存档数据导出为 `.sav` | | Write Save | 在备份后恢复存档数据 | ## 安全规则 - 在写入任何内容之前先导出 ROM。 - 在写入任何内容之前先导出存档。 - 使用短且可靠的 USB 线缆。 - 不要中断写入操作。 - 将 `write-rom` 和 `erase` 视为实验性且高风险的操作。 查看 [SAFETY.md](SAFETY.md) 了解完整的检查清单。 ## 工作原理 ``` flowchart LR PC["PC
ezwriter-cli / ezwriter-gui"] USB["USB
libusb + WinUSB"] MCU["Cypress AN2131Q
8051 @ 48 MHz"] CART["EZ-Flash II
GBA cartridge"] PC <--> USB USB <-->|"EP0 control
EP4 bulk OUT
EP2 bulk IN"| MCU MCU <-->|"parallel cart bus"| CART ``` 引导序列: ``` sequenceDiagram participant H as Host PC participant D as EZ-Writer II participant C as GBA cart H->>D: Plug in, bootloader mode 0547:2131 H->>D: Vendor 0xA0: hold CPU reset H->>D: Vendor 0xA0: upload tusbez.bin H->>D: Vendor 0xA0: start CPU D-->>H: Re-enumerates as 0548:1005 H->>D: Bulk commands D->>C: Cartridge bus operations C-->>D: ROM / save data D-->>H: Bulk responses ``` 完整的协议说明:[docs/protocol_notes.md](docs/protocol_notes.md) ## 项目结构 ``` . |-- src/ezwriter-cli/ Rust CLI |-- src/ezwriter-gui/ Rust GUI |-- docs/ Protocol notes and original driver analysis |-- driver/winusb-inf/ Optional WinUSB INF files |-- SAFETY.md Write-operation safety guide `-- RELEASE.md Public release checklist and Reddit post draft ``` ## 法律声明 本工具仅用于自制程序、游戏保存、个人备份、备份您自己拥有的卡带存档以及 GBA 开发。请勿用于盗版。 ## 参考 - [libusb](https://libusb.info/) - [WinUSB](https://learn.microsoft.com/en-us/windows-hardware/drivers/usbcon/introduction-to-winusb-for-developers) - [Zadig](https://zadig.akeo.ie/) - [egui](https://github.com/emilk/egui) - [Cypress EZ-USB AN2131 TRM](https://www.infineon.com/assets/row/public/documents/24/44/infineon-an2131-trm-usermanual-en.pdf)
标签:可视化界面