GameBoy Projects pages

GameBoy Development Overview


[go directly to my CartIO page] [[GB development FAQs] [GB Development Links]


Introduction
The GameBoy, Nintendo's handheld gaming console is a nice 8 bit microcomputer system at low cost. It has a cpu core similar to a Z80, a graphical LC display and a little amount of ram (8kBytes) and it has a normal Z80 peripheral bus, which is accessible for external hardware via the cartridge connector.
The GameBoy has no internal program memory  (besides the little boot rom which is switched off of the address map as soon as an appropriate cartridge is recognized). So a cart containing the program memory must be connected.

Software Development
To do your own programming you need the information about the peculiarities of the hardware and the registers by which it may be controlled. This information is collected in the so called Pan document, which may be found together with other useful docs at Marc Rawer's GameBoy site.
There exist some freeware tools for software development for the GameBoy: RGBDS, an assembler/linker by Carsten Sørensen (his site is here), maintained now by Otaku No Zoku (RGBDS). GBDK, a C compiler by Pascal Felber, now maintained by Michael Hope,
some tools for tile design and such, and several emulators, which enable you to develop software without the need of having a programmable cartridge. The emulators to recommend are NO$GMB by NoCash and VGB by Marat Fayzullin.

How to Get the Code into a Cartridge
The normal game cartridges contain mask programmed roms. Therefore it is not possible to load your own code into them. But if your electronics skills are not too bad, you might be able to replace the mask rom af a game cart by an eprom socket or even better by a flash rom.
If you decide to make a modified game cart with flash rom, you will need to build a programming device for it. On Reiner Ziegler's Readplus page you can find detailed instructions on how to modify a cart. Also explained there are the various possibilities to build a programming device. Furthermore it is the home of the Readplus software by which most of existing cart programmers may be controlled.
As programming device there exist my own version of CartIO which is based on a single sided PCB for easy self making.

If you don't want to modify a game cart, you can buy a programmable cart 'Doctor GB cart' and the matching programming device 'GB Xchanger' from Bung Enterprises, Hongkong. Bung has given up their business (probably because of Nintendo's intervention). But there are other possibilities: look at Reiner Ziegler's.

Hardware Development
Because of the fact that the cart connector exhibits the processor bus, it is possible to design carts not only containing program memory but also specialized peripheral IO. One example of such a cart you can find at Marc Rawers GB site.

Me myself am trying to design a cart, where the Nintendo's custom memory bank controller 'mbc' chip is replaced by a programmable logic chip. This would give the possibility to reserve some address space for IO or for a big battery backed ram for data acquisition purposes.
My results so far can be found here. I have a design for a EPROM-only and a Flash/RAM/Battery cart. BUT these are only first ideas not tested designs!

More Information
There is a very detailed FAQ by "GeeBee".
Have a look at Jeff Frohwein's GB devrs.com and look at the FAQs there.
There are a lot of websites with demo code in assembler and C, home brown games and tools. Jeff's devrs.com site is the starting point.
A collection of the most important documents about GameBoy programming can be found at Marc Rawer's site.
There exists also a mailing list dedicated to GameBoy development. See at GBDEV subscribing page
(This is the successor of vip.co.za maintained by the same person).

Thanks to
Jeff Frohwein, Pascal Felber, Carsten Sørensen, Reiner Ziegler, Martin Korth, Michael Mc Cormack and to others for their excellent work and for making it publicly available. And to Kalle Pihlajasaari for hosting the mailing list.


Visitors since 1999-12-11: counter

last updated: 2001-11-28
This site maintained by:
lukas.zimmermann@unibas.ch
HOME
Valid HTML 4.0!