A lightweight gba cartridge burner, with limited functionality
The web GBA preview accepts any non-empty raw SAV length independently of the ROM's native SRAM, Flash, or EEPROM window. It imports the addressable prefix and preserves the full image, including trailing bytes, through checkpoints, RAM writeback, export, and reload. See the web client README and ROM regression guide.
- 单片机的usb虚拟了一个串口,vid: 0x0483 pid: 0x0721
- 发送dtr置位复位信号可以重置单片机内的命令buffer(其实发rts信号也行,但windows自带
的串口驱动的rts不是实时的,不建议)。 - 以下所有的crc都是没用的,不论填什么都不会影响功能。毕竟usb自带校验,每个包再算一次
还浪费性能,干脆无视。 - 都是小端模式
- 发送
| 字节数 | 2 | 1 | 2 |
|---|---|---|---|
| 定义 | 包大小(5) | 0xf0 | CRC |
- 返回
| 字节数 | 2 | 8 |
|---|---|---|
| 定义 | CRC | ID Autoselect 第0、1、15、16字 |
- 发送
| 字节数 | 2 | 1 | 2 |
|---|---|---|---|
| 定义 | 包大小(5) | 0xf1 | CRC |
- 返回 (只是执行擦除命令,擦完没有另行判断)
| 字节数 | 1 |
|---|---|
| 定义 | 0xaa(成功) 其它(失败) |
- 发送
| 字节数 | 2 | 1 | 4 | 2 |
|---|---|---|---|---|
| 定义 | 包大小(9) | 0xf3 | 扇区地址 | CRC |
- 返回 (擦完才返回)
| 字节数 | 1 |
|---|---|
| 定义 | 0xaa(成功) 其它(失败) |
- 发送
| 字节数 | 2 | 1 | 4 | 2 | n | 2 |
|---|---|---|---|---|---|---|
| 定义 | 包大小(2+1+4+2+n+2) | 0xf4 | 起始地址(字节) | rom buffer大小 0表示只能单字节编程 |
数据 | CRC |
- 返回
| 字节数 | 1 |
|---|---|
| 定义 | 0xaa(成功) 其它(失败) |
- 发送
| 字节数 | 2 | 1 | 4 | n | 2 |
|---|---|---|---|---|---|
| 定义 | 包大小(2+1+4+n+2) | 0xf5 | 地址(字) | 数据 2-5000 n=2的倍数 |
CRC |
- 返回
| 字节数 | 1 |
|---|---|
| 定义 | 0xaa(成功) 其它(失败) |
- 发送
| 字节数 | 2 | 1 | 4 | 2 | 2 |
|---|---|---|---|---|---|
| 定义 | 包大小(11) | 0xf6 | 起始地址(字节) | 读取n个字节 2-5000 n=2的倍数 |
CRC |
- 返回
| 字节数 | 2 | n |
|---|---|---|
| 定义 | CRC | 数据 |
切bank通过上位机完成
- 发送
| 字节数 | 2 | 1 | 4 | n | 2 |
|---|---|---|---|---|---|
| 定义 | 包大小(2+1+4+n+2) | 0xf7 | 起始地址(字节) | 数据 n=1-5000 |
CRC |
- 返回
| 字节数 | 1 |
|---|---|
| 定义 | 0xaa(成功) 其它(失败) |
切bank通过上位机完成
- 发送
| 字节数 | 2 | 1 | 4 | 2 | 2 |
|---|---|---|---|---|---|
| 定义 | 包大小(11) | 0xf8 | 起始地址(字节) | 读取n个字节 n=1-5000 |
CRC |
- 返回
| 字节数 | 2 | n |
|---|---|---|
| 定义 | CRC | 数据 |
切bank通过上位机完成
- 发送
| 字节数 | 2 | 1 | 4 | 1 | n | 2 |
|---|---|---|---|---|---|---|
| 定义 | 包大小(2+1+4+1+n+2) | 0xe7 | 起始地址(字节) | 延迟周期 | 数据 n=1-5000 |
CRC |
- 返回
| 字节数 | 1 |
|---|---|
| 定义 | 0xaa(成功) 其它(失败) |
切bank通过上位机完成
- 发送
| 字节数 | 2 | 1 | 4 | 2 | 1 | 2 |
|---|---|---|---|---|---|---|
| 定义 | 包大小(12) | 0xe8 | 起始地址(字节) | 读取n个字节 n=1-5000 |
延迟周期 | CRC |
- 返回
| 字节数 | 2 | n |
|---|---|---|
| 定义 | CRC | 数据 |
切bank通过上位机完成
- 发送
| 字节数 | 2 | 1 | 4 | n | 2 |
|---|---|---|---|---|---|
| 定义 | 包大小(2+1+4+n+2) | 0xf9 | 起始地址(字节) | 数据 n=1-5000 |
CRC |
- 返回
| 字节数 | 1 |
|---|---|
| 定义 | 0xaa(成功) 其它(失败) |
- 发送
| 字节数 | 2 | 1 | 4 | n | 2 |
|---|---|---|---|---|---|
| 定义 | 包大小(2+1+4+n+2) | 0xfa | 起始地址(字节) | 数据 1-5000 |
CRC |
- 返回
| 字节数 | 1 |
|---|---|
| 定义 | 0xaa(成功) 其它(失败) |
切bank通过上位机完成
- 发送
| 字节数 | 2 | 1 | 4 | 2 | 2 |
|---|---|---|---|---|---|
| 定义 | 包大小(11) | 0xfb | 起始地址(字节) | 读取n个字节 n=1-5000 |
CRC |
- 返回
| 字节数 | 2 | n |
|---|---|---|
| 定义 | CRC | 数据 |
- 发送
| 字节数 | 2 | 1 | 4 | 2 | n | 2 |
|---|---|---|---|---|---|---|
| 定义 | 包大小(2+1+4+2+n+2) | 0xfc | 起始地址(字节) | rom buffer大小 0表示只能单字节编程 |
数据 | CRC |
- 返回
| 字节数 | 1 |
|---|---|
| 定义 | 0xaa(成功) 其它(失败) |
- 发送
| 字节数 | 2 | 1 | 4 | 1 | n | 2 |
|---|---|---|---|---|---|---|
| 定义 | 包大小(2+1+4+1+n+2) | 0xea | 起始地址(字节) | 延迟周期 | 数据 1-5000 |
CRC |
- 返回
| 字节数 | 1 |
|---|---|
| 定义 | 0xaa(成功) 其它(失败) |
切bank通过上位机完成
- 发送
| 字节数 | 2 | 1 | 4 | 2 | 1 | 2 |
|---|---|---|---|---|---|---|
| 定义 | 包大小(12) | 0xeb | 起始地址(字节) | 读取n个字节 n=1-5000 |
延迟周期 | CRC |
- 返回
| 字节数 | 2 | n |
|---|---|---|
| 定义 | CRC | 数据 |