Serial Boy transforms a GameBoy into an usefull Tool.
It displays incoming serial data on the screen, sends key presses, allows to play sounds and handle sprites and tiles.
The project is based on the STM32F7 Microcontroller. Its job is to emulate a GameBoy cartridge and to run a serial interface. Content of the emulated cartridge is a GameBoy Game, which handles key presses, and incoming serial data.
GameBoy ----> Serial port
The GameBoy constantly sends button information via Serial. There are two different kind of states which I call Action and Cyclic. Action related symbols are capital letters, cyclic related symbols are smal letters. Action letters are send if the state changes, Cyclic letters are send every 255ms.
N,n ----- no button pressed
A,a ----- A
B,b ----- B
S,s ----- Start
U,u ----- up
D,d ----- down
L,l ----- left
R,r ----- right
Select opens the menue
Serial port ----> GameBoy
If serial data is send towards the SerialBoy Microcontroller, it will be processed by its DMA (direct memory access) unit and put into a ring buffer. The GameBoy program checks constantly for new data in the ring buffer and processes it.
If readable symbols are received, they will be just displayed. Carryage return and line feed are also implemented.
The GameBoy runs on a Z80 like Microprocessor. Its memory bus is directly connected to the cartridge pins. After boot up, it executes the code found on the memory bus starting from address 0x100, for a deep dive into the GameBoy I recommend this fantastic video on Youtube.
I picked one aspect of the cartridge to dig a bit deeper, because otherwise I would end up writing a thesis.
I build a drivable platform using a hoverboard. SerialBoy allows it to be remotely controlled.
To use a GameBoy as remote for my TV i build an Arduino Nano device. It receives Serial Button press information from SerialBoy and sends corresponding infrared data to the TV.
Crypto currency price display on GameBoy screen
Develope party games with more GameBoys. Four player Pong and Newtonwars.