Arduino based multiboot cable for Game Boy Advance

[Steve] wanted to do some ARM development and set his sights on the Game Boy Advance as a development package. In order to get his code onto the device he build an Arduino-based communications cable. It is necessary to have a microcontroller involved because the GBA uses a peculiar 16-bit serial communications protocol. This cable is an adaptation from the 8051-based cable developed by [Matt Evans] several years ago. [Steve’s] got it working by porting the 8051 assembler over for the Arduino, but we’d recommend adding a level converter to his hardware setup to step down from the Arduino’s 5v logic to the 3.3v logic the GBA expects.

He didn’t make up a wiring diagram, but in the code comments [Steve’s] laid out the connections as follows:

Arduino 8 to GBA SO
Arduino 9 to GBA SI
Arduino 10 to GBA SD
Arduino 11 to GBA SC

That’s it, follow the README in his source code package and you’re on your way to some ARM development.

24 thoughts on “Arduino based multiboot cable for Game Boy Advance

  1. Awesome! If the GBA cable is the same as the old GB color cable (I know the GBA ones had a connector in the middle, but the plugs are the same I’m pretty sure) then I have half of one (it was a parallel-to-GB cord for no apparent reason, cut the parallel port off for another project). The GBA would make a good ARM dev-board because it has a screen, input devices (buttons), audio, etc. Even if the screen were just used for console output it’d be nice. I’ll have to get my old GBA out and build one of these things!

  2. This is slightly epic… :)

    I just prefer using my DS flash cart to program my GBA cartridge. Much faster, and a lot more convenient. Still, this would be awesome to have, or to port to a different microcontroller.

  3. @group
    Almost anything.
    And as it happens I did pick up bundle for the GB/GBA from a store in NYC, that naturally had no idea what heck they were. And that includes the cable used to connect two GBA devices together.

  4. What’s wrong with a normal xboo cable (GBA serial connector, a diode..) + usb to parallel adaptor? If you get one of the flash carts that uses the GBA as a writer you already have such a cable.


    **ARM dev-board**

    If you’re learning ARM assembler yeah,.. but in the real world ARM based micro’s differ a great deal as it’s up to the vendor (NXP, AD etc) as to what they jam into their chips. I’m not sure how much of the stuff you would learn on the GBA would apply to any other machine than the DS.

    Not to say that the hardware on the GBA isn’t interesting and fun to work with. As you say, you get a screen, buttons, sound etc and thanks to DebkitARM you don’t have to write your own linker scripts, startup code and other shit if you want to use free tools. But if you eventually intend to use one vendors ARM solutions just buy one of the Olimex boards with that vendors chip on board.

    Why everyone likes “ARM” so much I dunno.

  5. @mrgoogfan

    >i wonder what this can be used for?

    The serial port is there for two GBAs to talk for mutliplayer games.. There is a protocol called multiboot that is meant to be used to boot a slave GBA without a game cart from a master GBA with a game cart for a limited 2 GBA multiplayer setup.

    It just so happens that you can take advantage of multiboot to upload your own code and execute it ala homebrew. As the first poster said, you are limited to 256K though.. so it’s not like you can upload commercial games although some programmable carts do use a similar cable + multiboot program to write rom images from a computer. I wrote a multiboot prog that dumps the rom + eeprom/sram from the cart in the slot over the serial port Back in the Day ™…

    Oh, having this sort of cable is also useful for sending debug messages too.. especially if you still haven’t work out how the display modes etc work.

  6. cantido: USB-to-parallel adapters aren’t worth the plastic they’re made out of. They can only be used for printing, nothing else. All the various projects that have used the parallel port for this sort of thing require the ability to toggle individual pins in a carefully timed manner.

  7. Just to be clear here, you’re now using a chip with more processing power than the GB itself to act as a cable interface?

    C’mon people. Stop with the Arduino abuse.

  8. @M4CGYV3R
    I’m currently working on porting this to an ATTiny2313 which is a more sane choice of IC I’m just waiting for parts to arrive to test it.

    The AVR chips can run at up to 20MHZ (and 20 MIPS) (which is admittedly faster than the gba) but thats not necessarily a good measure of usefulness as the GBA has more ram, a 15bpp screen, DMA hardware, audio output, a 16 bit processor (should be much faster at 16 bit maths than the AVR chips).

    So the better choice for a project really depends what you want to do with the hardware.
    low level timing critical pin IO then go with the AVR
    display double buffered graphics go with the GBA

    Also for £10 (including the GBA and all of the parts for an upload cable) you get a lot of peripherals for your money.

  9. @rj

    People are doing JTAG with a single FTDI USB->Parallel chip.. thats sort of what I was getting at… hell if you really want to use an AVR why not use the VUSB stuff and make it a single chip solution?


    Well,.. the parallel port is going to be more useful because you can use all the existing xboo stuff with it. Is the arduino really cheaper? Really?? Whats the cheapest Arduino out there?

    In the long run you’ll want to get your hands on all the address space the cart slot has anyhow.. 256K isn’t a lot of space if you need to store tiles etc.

  10. “Just to be clear here, you’re now using a chip with more processing power than the GB itself to act as a cable interface?”

    its funny, every time you open your mouth you sound abit dumber

    yes, an 8 bit avr running at 16mhz is much MUCH faster than a 32 bit arm 7 running at the same clock speed

    and your mom was right, your both handsome and special too

  11. how feasible would it be to install a wireless module in the GBA’s cart slot, to use the console as a simple remote for home automation?

    would that be pointless/overkill considering i could just rip the innards out and replace em with an arduino+xbee?

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.