Gameboy Ethernet Project

Overview

The goal of this project was to allow a Nintendo Gameboy Color to function as a remote reporting tool via a standard Ethernet connection. This was accomplished using various hardware. Using a custom built RS232 convertor circuit, the Gameboy connects to the serial port of a special Java embedded device named TINI. The TINI hardware also includes an Ethernet interface, making the TINI essentially an Ethernet-to-Serial adapter. The TINI establishes a socket connection with our Java server which sends useful information back to the TINI which sends the output directly to the Gameboy’s LCD screen. Read the following sections for the details of each component.

Hardware

  • Nintendo Gameboy Color
  • Dallas Semiconductor’s TINI
  • Homemade RS232 signal convertor circuit

GB Software

The Gameboy software was written in assembly language (The Gameboy has a Z80 workalike CPU.) and assembled using Rednex Gameboy Development System. RGBDS The assembled ROM image was then flashed to a 4Mb Bung flash cartridge via Bung’s GB Xchanger. The original design and code are Ken Kaarvik’s. Many thanks go to Ken for the inspiration for this project, his code and permission to expand on his very excellent idea. The original code is available on Ken’s page. Click below for the modified code used in this project.

Java Client

The Java client code runs on the TINI providing the Gameboy with the connection to the Java server running on our Linux workstation. The client code begins by creating a serial port object and opening it. Then it opens a socket connection to the Java server. When the server sends the information to client, the client then outputs directly to Gameboy over the serial port. This is a simple application providing the Gameboy an Ethernet interface.

Java Server

The Java server is on a Linux system and remains open to connections while running. The server waits until a client connects and then sends out system information such as uptime and cpu temperature. We hope to eventually allow two way communication between the Gameboy and the server so that the server’s host can be controlled by the Gameboy.

Project Notes

Many things were required to pull this project off. First, we had to learn assembly for which McKee Library proved helpful. Then we had to learn about the Gameboy’s hardware. The Internet is full of great resources for that. The MAX232CPE circuit was constructed in under 3 hours. The TINI we used is running TINI Firmware 1.01. In order to allow our Java client software to execute without invoking it manually, (telnet over the Ethernet device) we had to add a line to Slush’s (TINI’s shell) /etc/.startup file. All coding was done using VIM.

Special thanks to Dr. Halterman for his help in this project! Here are some of the project costs:

  • TINI w/ board - $75
  • Gameboy Color - $70
  • Bung Flash cart and Xchanger - $90
  • Parts for RS232 circuit - ~$15
  • Hours of mad coding - priceless

Pictures

Gameboy Color Start with the Gameboy Color

RS232 Converter Build a circuit around Maxim’s MAX232CPE 16-pin DIP

Project Box Put it in an attractive project box

The TINI Get your TINI…

All together and put it all together!

Summary

This was a great project that was a lot of fun. We feel that we’ve done so much that no one has ever done or even thought to do before. It was a great learning experience for us. We had to learn how to implement the various things we’ve learned about in CPTR 328 as code that was useful. We hope to someday improve upon this project with newer features and functionality, but until then we can appreciate our accomplishments.