Skip to content

GBA Link Cable Communication

no381 edited this page Apr 20, 2024 · 4 revisions
  • GBA Communication is done via UART
  • Note that MOSI = SDO/SO/TX , MISO = SDI/SI/RX
 _______
/ 1 3 5 \
| 2 4 6 |	(looking at GBA cable link-port, so not GBA itself)
'-------'
1	VCC xxx
2	SO  TX  red
3	SI  RX  orange
4	SD  RTS brown
5	SC  CTS green
6	GND GND blue

image

  • RTS - Request to Send
  • CTS - Clear to Send

UART over Arduino

GBA UART Demo

Battle Chip Gate

Reference: https://shonumi.github.io/articles/art16.html

Battle Chip Gate Protocols below taken from Edge of Emulation, all credit to them https://shonumi.github.io/dandocs.html#bcg

  • BattleChip Gate (Advanced) - 0xFFC6
  • Progress Gate - 0xFFC7
  • Beast Gates - 0xFFC4

Note: Gate IDs do not change based on shell type (Netto gate, Gregar/Falzar gates, different Advanced gates)

Gate Startup

Repeat Gate Value until receives GBA Start Signal e.g.

0xFFC6

GBA Returned Start Signal

0x0000
0xA---
0xA---
0xA---
0x8FFF
0xA---
0x0000
Game Value
MMBN4 0xA3D0
MMZ3 0xA380
MMBN4.5 0xA3D0
MMBN5 0xA6C0
MMBN6 0xA6C0

Gate Send Information Phase

Repeating 9 transfers

Order Value Meaning
1 0xFFC- Chip Gate ID
2 0xFFFF
3 0xFFFF
4 0x--00 ^ Seed adding to 255 with 5
5 0xFF-- ^ Seed adding to 255 with 4
6 Ox---- Battle Chip ID
7 0x0000
8 0x0000
9 0x0000

^ - The two seeds increment and decrement respectively on each transfer, and together add up to 255. It appears all compatible game software simply ignore this data.

Example

GoodTofuFriday's Arduino Gate https://twitter.com/GoodTofuFriday/status/1638906303866175493

Clone this wiki locally