Awesome
MCUGotchi - A Tamagotchi P1 emulator for microcontrollers
Synopsis
MCUGotchi is a Tamagotchi P1 emulator for microcontrollers relying on the hardware agnostic Tamagotchi P1 emulation library TamaLIB.
For the time being, MCUGotchi supports the STM32F0 MCU from STMicroelectronics, more precisely the STM32F072 discovery board, and the OpenTama board based on a STM32L072, with either an SPI SSD1306 OLED screen or an SPI UC1701x LCD screen connected to it, but it can basically run on any STM32F0/STM32L0 based board almost out of the box, and on any STM32 MCU with some modifications.
For the STM32F072 discovery board, the expected connections are the following:
Name | PIN |
---|---|
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 |
Left Button | PB3/VDD |
Middle Button | PA0/VDD |
Right Button | PB2/VDD |
MCUGotchi is also a good example of an embedded implementation of TamaLIB's abstraction layer.
Build instructions
MCUGotchi depends on several components:
- the GNU ARM Embedded Toolchain, which can be downloaded there
- OpenOCD, if you want to use ST-Link to flash your board, which can be installed using the package manager of your operating system, or built using a release package provided there
- dfu-util, if you want to use the embedded DFU compliant bootloader of your board, which can be built following the instructions provided there
- the STM32Cube Libraries, which are provided as submodules
- TamaLIB, which is also provided as submodule
- a Tamagotchi P1 ROM, which can be downloaded from there for instance
- Optional: 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.
- Optional: Convert the ROM to rom_data.h and place it in mcugotchi/src (ROM_BUILT_IN should be enabled in mcugotchi/src/rom.c):
$ tamatool -r rom.bin -H > mcugotchi/src/rom.h
- Build MCUGotchi:
$ cd mcugotchi
$ make
- Connect your board and program it:
$ make flash
- Enable the USB Mode of MCUGotchi and transfer the ROM (it should be called rom0.bin).
- Try to keep your Tamagotchi alive !
License
MCUGotchi is distributed under the GPLv2 license. See the LICENSE file for more information.
Hardware 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) 2022 Jean-Christophe Rona