JonSharp.net:70:projects:gameboy_ethernet | |
======================================== | |
# 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 | |
- 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 was once available on | |
Ken’s page -- not sure if it still is. | |
Source - commboy.asm | |
Full project zip | |
## 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. | |
Source - GBClient.java | |
## 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. | |
Source - GBServer.java | |
## 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 | |
Start with the Gameboy Color | |
Build a circuit around MAX232CPE | |
Put it in an attractive project box | |
Get your TINI... | |
And put it all together |