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.

Comments

  1. CodeAsm says:

    Arduino’s …. Let the GBA program them :D

    Like the idea, I just happen to have a multi-boot cable already. more RAM inside the gba or at least more program space would be nice. 256K bytes external WRAM isnt much…

    Can one make mbc5 with ttl logic ? or older mbc ? http://tinyurl.com/gbambc

  2. fartface says:

    Ahh ardunio programming on a gameboy….

    ABAABABABLRUDAABABAUDUUDUDURLRLURDRUULRLUDStart

    Oh yeah ,that’s better than a QWERTY keyboard anyday!

  3. CalcProgrammer1 says:

    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!

  4. Paul Potter says:

    Great bit of work.

  5. PidGin128 says:

    @CalcProgrammer1 : I suspect, if the cable you have wasn’t already for dev/debug, that it was likely used as a virtual gameboy printer, to interact with a GB camera, or other software.

    http://en.wikipedia.org/w/index.php?title=Game_Boy_Printer&oldid=349455029&printable=yes

  6. mrgoogfan says:

    i wonder what this can be used for?

  7. Vaati says:

    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.

  8. GCL says:

    @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.

  9. cantido says:

    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.

    @CalcProgrammer1

    **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.

  10. cantido says:

    @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.

  11. rj says:

    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.

  12. CodeAsm says:

    @rj they do exist, but are really expensive and I cant find the website. I believe someone in germany made them. but …

    @cantido please use the Arduino method for “usb-parallel”. Here is why this hacks comes in. Cheaper and much easier if you don’t have an parallel port.

    or,
    PCI http://www.dealextreme.com/details.dx/sku.4638

    PCMCIA

    http://www.dealextreme.com/details.dx/sku.6187

  13. M4CGYV3R says:

    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.

  14. Eaterofpies says:

    @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.

  15. cantido says:

    @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?

    @CodeAsm

    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.

  16. osgeld says:

    “Really?? Whats the cheapest Arduino out there?”

    like 5 bucks, 10 if you want a board and everything in a kit

  17. osgeld says:

    “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

  18. Illlion says:

    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?

  19. CodeAsm says:

    Well… http://www.seeedstudio.com/depot/atmega16820pu-28pin-dip-w-arduino-bootloader-p-55.html?cPath=14

    but I like the parallel port more… Can program my Eproms and my older CNC machiene doasnt like a usb-printer cable… its just not true parallel thingy.

    can someone hack a real parallel port into usb for us ? XD

  20. IC BS says:

    there is nothing about the title that I didn’t like

  21. ParkerT says:

    The link to the blog post is not working for me. Is there somewhere else I can find this source package?

  22. athreef says:

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 96,687 other followers