MCUGotchi - A Tamagotchi P1 emulator for microcontrollers
MCUGotchi is a Tamagotchi P1 emulator for microcontrollers relying on the hardware agnostic Tamagotchi P1 emulation library TamaLIB.
For the time being, MCUGotchi only supports the STM32F0 MCU from STMicroelectronics, more precisely the STM32F072 discovery board, with an SPI SSD1306 OLED screen connected to it, but it can basically run on any STM32F0 based board almost out of the box, and on any STM32 MCU with minor modifications.
The expected connections are the following:
|SSD1306 CLK PIN||PA5|
|SSD1306 DIN PIN||PA7|
|SSD1306 DC PIN||PA1|
|SSD1306 CE PIN||PA2|
|SSD1306 RES PIN||PA6|
|SSD1306 VCC PIN||VDD|
|SSD1306 GND PIN||GND|
MCUGotchi is also a good example of an embedded implementation of TamaLIB's abstraction layer.
MCUGotchi depends on several components:
- the GNU ARM Embedded Toolchain, which can be downloaded there
- OpenOCD, which can be installed using the package manager of your operating system, or built using a release package provided there
- the STM32Cube Library, which is provided as submodule
- TamaLIB, which is also provided as submodule
- a Tamagotchi P1 ROM, which can be downloaded from there for instance
- TamaTool to convert the binary ROM into a .h file, which can be downloaded or built from there
- Clone MCUGotchi and its submodules:
$ git clone --recursive https://github.com/jcrona/mcugotchi.git
- Download/build/install the toolchain, OpenOCD and TamaTool. OpenOCD and the toolchain are expected to be in the parent folder of MCUGotchi, but you can place them wherever you want and adjust the first lines of mcugotchi/Makefile accordingly.
- Convert the ROM to rom.h and place it in mcugotchi/src:
$ tamatool -r rom.bin -H > mcugotchi/src/rom.h
- Build MCUGotchi:
$ cd mcugotchi $ make
- Connect you board and program it:
$ make flash
- Try to keep your Tamagotchi alive !
TamaTool is distributed under the GPLv2 license. See the LICENSE file for more information.
The Tamagotchi P1 is based on an E0C6S46 Epson MCU, and runs at 32,768 kHz. Its LCD is 32x16 B/W pixels, with 8 icons. To my knowledge, the ROM available online has been extracted from a high-res picture of a die. The ROM mask was clear enough to be optically read. The pictures can be seen there (thx asterick for the link !).
I would love to see the same work done on a P2 and add support for it in TamaLIB/MCUGotchi !
Copyright (C) 2021 Jean-Christophe Rona