Do you like my hacking? If so, please consider leaving something in the
Fediverse (Mastodon etc): @Sprite_tm@social. spritesmods.com
The multiboot feature used to be solely a method to boot a GBA from another GBA. Later, after it was reverse-engineered, it could also be used to boot a GBA from a PC. Ever since I read about the multiboot feature, I had the idea that it must also be possible to use multiboot to boot the GBA from a microcontroller. Recently, I've actually seen a project doing exactly this with a PIC. A setup like that would be ideal for a MIDI-cable: just connect a microcontroller to the GBA link port which would first send the GBA the synthesizer code and then convert incoming midi messages into something the GBA understands.
So, I whipped up a simple schematic that should do everything the hardware needs to
do:
As you can see, there's not much to it. The schematic contains an ATMega168 to upload
code to the GBA. After the GBA is properly initialized, the AVRs only job is to translate
the incoming MIDI-commands over the GBAs link port. The AVR is powered by the GBA itself,
so it doesn't need an external power supply. The data connection to the GBA happens over
a few standard GPIO pins; the protocol itself is implemented completely in software.
The MIDI-in is realized by a PC-900 optocoupler and some resistors for galvanic
isolation, which feed into the RxD of the AVRs UART.
My first attempt at implementing the hardware was on a bit of prototyping pcb:
It actually worked just fine, but wasn't too aestetically pleasing. I decided to
up the ante a bit and make the second one integrated in the cable.
These are the components needed. I'm using an SMD AVR and SMD resistors here.
The GBA cable I bought unfortunately was missing the power pin.
It did have an extra wire for the chassis of the GBA plug. I didn't use that, so I
re-used the wire for the power connection.
And this is the other side of the cable after some judicious soldering. The wires from
the GBA link cable are connected to a small bit of PCB; the rest of the components are
glued on top of that.
From top to bottom: the PCB with next to it the crystal, the AVR and the PC900
optocoupler.
And this is the end result: a nice midi-to-GBA-link-cable. Plug into a midi device and
any old GBA and play, no cartridge needed!