Skip to content

About

A lightweight gba cartridge burner with limited functionality

Resources

Stars

6 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

415 Commits

Folders and files

Repository files navigation

beggar_socket

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.

pcb和原理图

sch_pcb

协议&命令

  • 单片机的usb虚拟了一个串口,vid: 0x0483 pid: 0x0721
  • 发送dtr置位复位信号可以重置单片机内的命令buffer(其实发rts信号也行,但windows自带
    的串口驱动的rts不是实时的,不建议)。
  • 以下所有的crc都是没用的,不论填什么都不会影响功能。毕竟usb自带校验,每个包再算一次
    还浪费性能,干脆无视。
  • 都是小端模式

GBA命令

获取rom id

  • 发送
字节数 2 1 2
定义 包大小(5) 0xf0 CRC
  • 返回
字节数 2 8
定义 CRC ID
Autoselect 第0、1、15、16字

rom 全片抹除

  • 发送
字节数 2 1 2
定义 包大小(5) 0xf1 CRC
  • 返回 (只是执行擦除命令,擦完没有另行判断)
字节数 1
定义 0xaa(成功)
其它(失败)

rom 扇区擦除(64KB)

  • 发送
字节数 2 1 4 2
定义 包大小(9) 0xf3 扇区地址 CRC
  • 返回 (擦完才返回)
字节数 1
定义 0xaa(成功)
其它(失败)

rom 编程

  • 发送
字节数 2 1 4 2 n 2
定义 包大小(2+1+4+2+n+2) 0xf4 起始地址(字节) rom buffer大小
0表示只能单字节编程
数据 CRC
  • 返回
字节数 1
定义 0xaa(成功)
其它(失败)

rom 直接写(透传)

  • 发送
字节数 2 1 4 n 2
定义 包大小(2+1+4+n+2) 0xf5 地址(字) 数据
2-5000
n=2的倍数
CRC
  • 返回
字节数 1
定义 0xaa(成功)
其它(失败)

rom 读取

  • 发送
字节数 2 1 4 2 2
定义 包大小(11) 0xf6 起始地址(字节) 读取n个字节
2-5000
n=2的倍数
CRC
  • 返回
字节数 2 n
定义 CRC 数据

ram 写入

切bank通过上位机完成

  • 发送
字节数 2 1 4 n 2
定义 包大小(2+1+4+n+2) 0xf7 起始地址(字节) 数据
n=1-5000
CRC
  • 返回
字节数 1
定义 0xaa(成功)
其它(失败)

ram 读取

切bank通过上位机完成

  • 发送
字节数 2 1 4 2 2
定义 包大小(11) 0xf8 起始地址(字节) 读取n个字节
n=1-5000
CRC
  • 返回
字节数 2 n
定义 CRC 数据

fram 写入 (因为fm20比较慢,所以加了这条命令)

切bank通过上位机完成

  • 发送
字节数 2 1 4 1 n 2
定义 包大小(2+1+4+1+n+2) 0xe7 起始地址(字节) 延迟周期 数据
n=1-5000
CRC
  • 返回
字节数 1
定义 0xaa(成功)
其它(失败)

fram 读取 (因为fm20比较慢,所以加了这条命令)

切bank通过上位机完成

  • 发送
字节数 2 1 4 2 1 2
定义 包大小(12) 0xe8 起始地址(字节) 读取n个字节
n=1-5000
延迟周期 CRC
  • 返回
字节数 2 n
定义 CRC 数据

ram 写入FLASH

切bank通过上位机完成

  • 发送
字节数 2 1 4 n 2
定义 包大小(2+1+4+n+2) 0xf9 起始地址(字节) 数据
n=1-5000
CRC
  • 返回
字节数 1
定义 0xaa(成功)
其它(失败)

GBC命令

gbc 直接写(透传)

  • 发送
字节数 2 1 4 n 2
定义 包大小(2+1+4+n+2) 0xfa 起始地址(字节) 数据
1-5000
CRC
  • 返回
字节数 1
定义 0xaa(成功)
其它(失败)

gbc 读取

切bank通过上位机完成

  • 发送
字节数 2 1 4 2 2
定义 包大小(11) 0xfb 起始地址(字节) 读取n个字节
n=1-5000
CRC
  • 返回
字节数 2 n
定义 CRC 数据

gbc rom 编程

  • 发送
字节数 2 1 4 2 n 2
定义 包大小(2+1+4+2+n+2) 0xfc 起始地址(字节) rom buffer大小
0表示只能单字节编程
数据 CRC
  • 返回
字节数 1
定义 0xaa(成功)
其它(失败)

gbc 写入fram (因为fm20比较慢,所以加了这条命令)

  • 发送
字节数 2 1 4 1 n 2
定义 包大小(2+1+4+1+n+2) 0xea 起始地址(字节) 延迟周期 数据
1-5000
CRC
  • 返回
字节数 1
定义 0xaa(成功)
其它(失败)

gbc 读取fram (因为fm20比较慢,所以加了这条命令)

切bank通过上位机完成

  • 发送
字节数 2 1 4 2 1 2
定义 包大小(12) 0xeb 起始地址(字节) 读取n个字节
n=1-5000
延迟周期 CRC
  • 返回
字节数 2 n
定义 CRC 数据

About

A lightweight gba cartridge burner with limited functionality

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages