User Tools

Site Tools


Final Year Project

With the idea of using my Game Boy Advance as a Peronsal Digital Assistance (PDA) I took on the task of adding modern connectivity to the GBA system.

For this I chose USB, it is the de-facto standard and very widely supported (Windows, Linux, MacOS and others have native, good, support for the standard). USB is easy to use as it does not require the end-user to configure the device once it has been attached, it is truly plug & play.

Project Complete!

Though these pages don't reflect it well, the project is complete (and was successful). There will be very few updated to this section, unless I decide to move all my code here for other reasons that completeness/tidyness. All my code is already in the Project Report Disc Content, which is available for download below.

I have been awarded a 2:1 and am now done with my CompSci degree at Warwick Uni, so I can place my project report and it's accompanying disc's contents online in the hope it will be useful to others. Since creating this site about 18 months ago, I have been contacted by about a dozen individuals who are doing similar projects; and my weblogs show that the report was downloaded over 700 times in September 2005 (Update: It was downloaded 495 times in Sept 2006). Also, I'm really honoured to find I'm linked to by, I bought their USB Complete book and found it immensly useful.



This project aimed to enable a Nintendo Game Boy Advance (GBA) to be used as a personal digital assistant by creating a USB communication interface between a Windows PC and a GBA, which would require no hardware-specific drivers or user-configuration.

USB v1.1 is implemented on a Microchip PIC16F877 micro-controller (using the CCS compiler add-on) and a Philips Semiconductor PDIUSBD12 low-level USB chip which handles interactions with the USB bus.

An interface with GBA is achieved via UART and then use the USB implementation by means of the (USB-IF defined) Human Interface Device (HID) class to transfer user-data.


USB, Embedded System, PIC, Game Boy Advance, Hardware, PDIUSBD12, PIC16F877


  1. Project Report Disc Content (ZIP), 58MB - Contains all source code1), tools and copies of web pages referred to in the Project Report.

Incidently, my project (and hence report) was awarded 73%.

If you have any problems using this site, or queries related to this project, I'd be happy to hear from you and see if I can help.

Project areas

Areas which may be of interest to you:

  • USB Section — Links to code snapshots taken at various milestones 2) as well as a HID reverse-engineering lookup table which I found very useful when trying to copy existing devices for testing purposes.
  • Game Boy Advance Section — Details on the GBA link port and code needed to use General Purpose IO / USART mods.
  • Journal — Unorganised and messy, but packed full of information which might save you time, this was a project diary. I recommend you search it if you need to find resources for information about this and that, or see if I encountered your problem once before.
  • Presentation — The presentation I gave to accompany my written report. Probably of limited interest.

  • Reference — Links to references I used frequently to get answers during the project.
  • Tools — Hardware / Software solutions that aided getting the project going, such as the settings I needed to read debugging information with HyperTerminal and the like.

Project Specification

Nintendo Game Boy Advance USB Interface: Implementaion & Demonstration

Taken directly from the project specification.


Powerful Personal Digital Assistants (PDAs) and smart-phones are becoming common place and are increasingly used to entertain their users with games. This is fine for those that predominately want an organiser and think of games as a bonus, but what about those that prefer the games, but would still like some organisational capability? Portable games consoles are powerful enough to run simple PDA-like applications but they lack the connectivity that PDAs and smart-phones have in abundance.


To create an interface between a PC and a Nintendo Gameboy Advance (GBA) system which is as easy to use as any existing PDA and to create some proof-of-concept software that shows the use of this interface to communicate between the two.

What this means

Effectivly the aim of my project is to implement the USB standard using some hardware, and then utilise this to as a communication channel between a GBA and a PC. The main focus is the USB implementation, which is quite complex — as anyone who has skimmed the USB 2.0 (Basic)3) Specification will know.

Including useful small tests / utilities create during development / testing
E.G. “GoodLink LED lights” or “Windows recognised USB device”
This is the new name for USB 1.1, presumably so consumers didn't discriminate against 'old technology'
project.txt · Last modified: 2010/02/16 11:52 by robm