There are lots of great shells available for $10-15 USD on Ebay, and a few on Amazon. Seller TheGodOfGaming seems to have the best selection, and you can get a glass display cover with it as well.
https://www.ebay.com/itm/GBA-Nintendo-G ... 2060123859
Not all buttons are the same size. Specifically, the SNES controller buttons are about 10.4 mm while the GBA buttons are about 8.8 mm. Gameboy Pocket buttons should fit as well.
https://retropie.org.uk/forum/topic/484 ... ild-wip/55
Needed info: Gameboy 3DS button size
XY Button Placement
One of the particular challenges to the GBA is managing the addition of the X and Y buttons. The right shoulder button travel appears to interfere with the natural placement of X and Y. Additionally, most people working on this project are using original GBA mobos as the basis for their buttons, and don't want to try to fit a full button pad on the board / remove everything that goes behind it.
If you look at the Freeplay Zero, they've tried to deal with this problem by placing clicky buttons on their AIO board with small button caps.
https://www.freeplaytech.com/product/fr ... o-diy-kit/
The approach taken by the aforementioned Retropie builder was to remove the button housing entirely and replace it with a button housing from a broken DS Lite.
https://retropie.org.uk/forum/topic/484 ... ld-wip/224
I don't really care for either of these solutions. I don't have the hardware with me, but looking at the work of other builders, it seems like the core problem here is the space required by the spring switches under the shoulder buttons. I'm hoping I can fit two full size pads for the X and Y buttons above the existing A and B buttons by using the switches from the iBuffalo SNES controller rather than the spring switches in the style of the original GBA. Here is a video demonstrating the button travel on the iBuffalo controller:
Compare that to the switch size on the original GBA:
I'm hoping that by cutting down the PCB supporting the shoulder buttons, and by cutting down the post that would normally be putting unnecessary distance between the shoulder button and the PCB, I can move the shoulder buttons up and still have space to fit a second set of buttons above it. The PCB only needs to be as big as the pad underneath it, so I am hoping it will fit well.
I'd like to use the buttons from my iBuffalo controller as well, as they are the standard famicom colors, but I think I'll probably end up sourcing some smaller buttons. I'm concerned I won't be able to give the full size ones adequate space to prevent accidental button presses.
PCB / Backing
I originally hoped to use the PCB from my iBuffalo controller, but it looks like the spacing is just too wide for that to work correctly. I may wind up teaching myself Eagle to print a very small PCB to custom match the GBA's 4-button needs, and potentially one for the d-pad as well. I've never designed a PCB before, but based on the layout of my iBuffalo, it shouldn't be too hard- you have two lines that you are connecting when you press the button down. Not bad at all.
Rather than using a teensy or similar, I'm hoping I can just wire everything up directly to the iBuffalo board and use the USB controller that is built into it for managing buttons. Of course there are lots of things that could prevent this, so we'll see what happens down the line.
At this point it looks like a composite display from this list would be the best choice. TFT displays are great for some, but I very much want automatic HDMI switchover and resolution change.
Brett82 was able to fit a composite display in his build, though I don't know how much modification was required.
https://www.sudomod.com/community-spotl ... ero-build/
Obviously some case modification is required to fit a 3.5 inch display. Unfortunately it seems like composite displays don't come much smaller than that. Ultimately I think I'll go for combination of case cutting and overscan, as was done over on retropie:
https://retropie.org.uk/forum/topic/484 ... ild-wip/49
Batteries, charging, and safe shutdown are handled pretty much the same way as in any other portable pi project.
- Safe shutdown - http://market.sudomod.com/safe-shutdown ... t-version/
Powerboost 1000 (for charging, power management, etc) - https://learn.adafruit.com/adafruit-pow ... t/overview
Battery - https://www.adafruit.com/product/328
I would very much like to have a full size USB-A port, a full size HDMI port, and a micro USB port exposed on the top of the GBA. This way you could plug the GBA into a TV (without any hassle with adapters), then plug an additional SNES controller to the GBA, and you would be set for two player gaming. Getting the USB host should be pretty easy, but the HDMI adapter will likely restrict where the pi can be plased in the housing pretty significantly. I'll keep updating this section after I have more details.
There is a lot of talk about how to manage sound on these devices. I've ordered a usb sound card, and am hoping I can use it at the very least with a headphone jack. I haven't done enough research to sort out how to properly manage the amp and speaker needs for one of these devices, but I do know it should be powered via the USB bus, not the pi:
https://retropie.org.uk/forum/topic/484 ... ld-wip/178
This is the sound card I ordered:
I'm hoping I can use the volume buttons on the soundcard somehow rather than a typical wheel. I'd rather not mess around with a potentiometer or any wiring that would be needed to support that.
The only thing I know for sure is that I definitely want a headphone jack. If I can add a speaker and amp I will.
I'll keep this updated as I learn more and make changes to my design. Please let me know if you have any suggestions or spot any oversights in my build plan. Thanks!