I admit it- from the start, when Brian dreamed it up, even *I* thought this was weird. I thought it could never work. Though I'm a positive and daring person, this project actually seemed too over the top! Well, Brian wanted to try it anyway ("I need these sounds!" he emailed me) and offered me dinner at the Elephant Walk if we got it working, so how could I refuse a "Will Hack For Food" offer?
Basically, he started with the idea that if people could use a Game Boy from Nintendo to read serial data at 9600 bps (which they were doing), then perhaps we could expand that idea to make the Game Boy listen to data at 31250 bps (the MIDI serial rate). The main caveat was that there is no UART on the Game Boy. Even more challenging is that there is no interrupt service on the link port. That is why I didn't think this idea could work.
So, the only way left was to write carefully-timed microprocessor code. It polled the serial data bit for a start bit, waited, recorded a bit, shifted, repeat, etc. I worked with Brian to get this timing reliable. That required lots of patience and cycle counting! Next, we interpreted the MIDI messages, translated them, and wrote them to the sound chip registers. At first, we simply turned the controller messages into register values, then Brian took it a step further, and converted MIDI Note and Velocity values into the proper register writes!
Remember, we had to handle the controller data very quickly! This is because new messages could arrive over MIDI within a single bit time! We really only had the time during the STOP BIT of each transmitted byte to do lookup on note values and write them to Game Boy sound chip registers! We were a picture of furious activity when we were getting MIDI pitch change messages to work - up all night with pizza and coke, then sleeping on the couch in a one-room Manhattan apartment.
Eventually, we could reliably transmit data from a Palm Pilot to the Game Boy reliably at MIDI rate and turn it into sound! However, the hardware interface was still working at RS-232 electrical levels. So we needed some hardware to translate MIDI physical layer signals into something the Game Boy could receive. Not a problem, you might think... Just look up the spec for the Game Boy and make a level shifter. Well, we couldn't GET the spec! So, I took one half of the PAIA MIDI interface (thank you for publishing the schematic!) and one half of the Game Boy ASCII interface and connected them back to back. I also added a Thru for the MIDI port, because I never design MIDI interfaces without Thru.