Modifying Gameboy Advance

Some time ago I modified Gameboy Advance SP, now it is time to go back in time and modify also the regular GBA. It combines aftermarket IPS display, Bluetooth module and 1600mAh Li-ion rechargeable battery.

I bought an aftermarket backlit LCD , a Bluetooth transmitter and a battery. Note that the IPS display needs a slight cutting in the shell, which is not described here.

The PCB is here:

Order from OSH Park

There is also an additional small PCB, which works as a touch sensor:

Order from OSH Park

I recomend to choose option 2 oz copper, 0.8mm thickness !

The schematic is here:

The microcontroler is Microchip PIC16F1824 and the program you need to flash in (via e.g. PicKit 3) is here:


DesignatorDescriptionValue (Type)
C1Capacitor 06034.7uF
C2Capacitor 080522uF
C3Capacitor 120622uF
C4Capacitor 0603100nF
C5 (optional)Capacitor 060333uF
D2LED 0603Green
D3,D6Shottky diode1N5819HW
D4LED 0603Blue
D5LED 0603White
Q1,Q2MOSFET P ChannelAO3401
Q3,Q4,Q5MOSFET N ChannelAO3400
F1Resetable polyfuse 08051A
R4Resistor 060391k (in schematic 330k, but 91k should be better)
R12Resistor 0603330k
R5,R10Resistor 06033k3
R6,R7,R13Resistor 0603910k
R8,R11Resistor 06039k1
R9Resistor 060310R
U18-bit MicrocontrollerPIC16F1824-I/SN
U23.3V LDO regulatorAP2112K-3.3 or TLV75733PDBVR
U3Charging regulatorMCP73831T-2ACI/OT
U4Touch pad detector ICTTP223-BA6
J1Micro USB connectorC40946 or FD098

First, you need to install the LCD which I will not described here, there are enough guides on YouTube. I also replaced the potentiometer wheel, shell and buttons.

Desolder battery pads, cut out the small separator in the battery compartment which separates batteries from each other.

Solder wires to Bluetooth module +5V, PGND, LED, CON, IN_L, IN_R, put doubleside sticky tape on the module and stick in on the chip of GBA. I also blacked out with a black marker the LED (not shown on the pictures), because it was too bright for me in this GBA shell.

Solder L & R wires from BT module to the appropriate GBA audio Jack pin. Solder additional wire also to “headphones present” pin. (Later it will be referenced as GBA-HDPH). From this pin there is a trace on the GBA mainboard PCB, which needs to be cut and on the part which continues further scrape the insulation layer carefully and solder additional wire.(Later referenced as GBA-SW)

Make sure with multimeter that this wire from jack pin and the board soldered wire are not connected. Then, for better mechanical stability I put a drop of glue on the wire on PCB.

Then solder wires to GBA mainboard to test pads VDD3 and LOWBAT.

Solder a wire to the small touch sense PCB

Then place it into the shell. You can also place it flipped, closer to the connector.

After that, the board should look like this. Mark the wires somehow, so you know which is which. I used colour markers.

You can now screw the GBA mainboard to the shell. Pay attention, that the wires will not be pinched somewhere.

Solder wires to GBA battery pads.

Put the back shell and thread the wires throught the openings.

Use doubleside sticky tape to hold the battery in the compartment.

Now solder all the wires to the appropriate holes in the PCB.

Make a hole for the USB in the battery cover.

Use hot glue to stick the PCB to the cover and close the cover.

That’s it.

The internal switch on the PCB is for disconnecting the battery, I used it for testing and also to disconnect the battery for long periods of time, because the IC’s draw a very small amount of current. Is significant but still…

You can play and charge at the same time. While charging the green LED blinks. When the battery is charged it stays lit.

With a short approx. 3 sec. touch of the sensor you can toggle the bluetooth on and off. With longer touch approx. 5-6 sec. while the bluetooth is on, you reset the device pairing.

Note: If you use the max. display brightness, It can flicker or even turn off. This is probably due to the LDO which was used previously, the AP2112K (600mA), I strongly recommend to use TLV757 (1A), which should eliminate this issue, though I have not tested it yet.