agg23 / fpga-tamagotchi

Tamagotchi P1 for Analogue Pocket and MiSTer
MIT License
110 stars 1 forks source link

Tamagotchi P1 for FPGAs

Promo Image

This core is an original creation by @agg23 over the course of 3 months. It is based strongly on the original documentation for the Tamagotchi CPU (see Documentation Overview), but also takes some learnings from tamatool, and is inspired by @Mazamars312, Andrew Wilson, and Robert Piep, who gave me helpful advice along the way. The amazing backgrounds were recreated from source material by @bmarvo, and the Pocket platform icon was created by me. See Licensing for more information.

Currently supported platforms are the Analogue Pocket and MiSTer.

Installation Instructions

See Platform Installation Instructions for platform-specific instructions on how to install the core. It also contains information on what ROMs you need.

Manual

If you've forgotten how to use the Tamagotchi in the nearly 30 years since it's release, check out the official manual.

Features

Savestates/Sleep + Wake

Known as "Memories" on the Pocket and "savestates" elsewhere this core supports the creation and loading of savestates, and by extension, the core also supports the Pocket Sleep + Wake functionality. Tapping the power button while playing will suspend the game, ready to be resumed when powering the Pocket back on.

On MiSTer, you must remap your controls in order to bind one of the to the Savestate control. Once done, holding that button and D-pad left/right will allow you to choose your savestate slot, and holding that button in addition to start (if they are different) and D-pad up/down will allow you to load and create savestates in that slot.

Automatic Restoration

Tamagotchi will automatically restore where you left off, as a suppliment to the savestate functionality. Quitting the core on Pocket, or opening the OSD on MiSTer, will cause the core to take a savestate (separate from your 4 slots on MiSTer) that will be automatically restored on core launch.

Turbo

Tamagotchi supports several incremental levels of turbo. These are displayed in the menus and turbo OSD as: 1x, 2x, 4x, 50x, and Max. At the moment, Max represents a 1,800x turbo, with the intention of allowing you to quickly evolve your Tamagotchi, or simulate days passing.

By default, the current turbo speed can be adjusted by using the shoulder buttons; left trigger decreases the turbo, right trigger increases it.

Additionally, there are several settings that configure the turbo behavior, including stopping turbo on the next "event".

Custom Backgrounds

This core supports custom backgrounds, and even ships with a Tamagotchi P2 background as an example. See the Installation Instructions and the Image Generation Tools pages for more information.

Settings

Sound Settings

Turbo Settings

Display Settings

Core Docs

I've tried to be thorough with my design decisions and provide/update various supporting documents through the process. See the /docs folder, or start looking at the overview. There's documentation on the tools I built, how the microcode works, how to run tests, and more.

FAQ

Issue Solution
I see a corrupted screen, often blank or all pixels on Open the core settings and choose Reset. If you attempted to boot the core without the correct ROM, or you accidentially chose a different file as the ROM, this is expected. Otherwise, please file an issue.

Licensing

There are a lot of components to this project, and the licensing on them depends on where they came from and potentially how they're used.

Contents License
The main repo, all Tamagotchi core code, all tools and tests, and the documentation (other than the docs owned by Epson) MIT
All Pocket platform code, Pocket core_top.sv, and any Pocket specific components (unless otherwise noted) MIT
All MiMiC/MiSTer platform code, MiSTer core_top.sv, and any MiSTer specific components (unless otherwise noted) GPLv3
All "sprite" activity icons and backgrounds CC0