A Gen-1 Pokémon Tamagotchi for Android WearOS smartwatches AND Android Mobile Phones — built entirely in Flutter/Dart. Raise any of the 151, evolve it, train it, and complete the Pokédex (shinies included).
This is a Flutter reimplementation of TamaPoke by socquique, which was originally built for a custom ESP32 round AMOLED hardware device. All game mechanics, numbers, and Pokédex data are ported faithfully 1:1 from the original firmware.
Personal, non-commercial fan project. Code is MIT; sprites are from PMD SpriteCollab (CC BY-NC, Pokémon © Nintendo/Game Freak). See License and CREDITS.md.
👤 David Kalil Braga — @davidkalil10
| Project | Description | Links |
|---|---|---|
| 📺 IPTV Smart Cast | A premium multi-platform IPTV player (Meta Quest, Android, Android TV, WearOS, Samsung TV, Windows, Steam) with a standout exclusive feature: cross-platform Watch Together — watch live channels, VODs and Series in real time with friends remotely, synced frame-by-frame across any device. | Website |
| 🎮 Retro Smart Cast | The ultimate GBA, GBC & GB emulator for Android, built in Flutter with a Dart FFI bridge to a native C++ engine. 60 FPS performance, haptic virtual buttons, real-time library search and multi-language support. | Website |
| 🎸 Cifraria | Professional song library and guitar chord manager built in Flutter. Smart folders, setlist management, animated QR offline sharing, instant transposition, Google Drive sync, and Meta Quest VR support. | Website |
| 🏢 Simulação Sem Ilusão | A financial X-ray app for anyone buying off-plan real estate in Brazil. Simulates INCC impact, Caixa vs. bank financing, construction evolution, FGTS weight, and custom payment schedules — with clean charts and PDF export. | Website |
| 🎯 PointerPro | A serverless presentation and air mouse app for Android that connects directly to any PC via Bluetooth HID. Features gyroscope-powered cursor control, software-specific shortcut profiles, smart haptic timers, and Wear OS smartwatch support. | Google Play |
A quick reference to how the game really works — values are straight from the code.
- 1 real minute = 1 in-game minute. Your Pokémon gains +1 level every hour of real time. Leveling is purely time-based — caring well doesn't speed it up, but neglect delays evolution.
Needs: FOOD, JOY, ENE (energy), HYG (hygiene). Start 80 / 80 / 80 / 100. While awake, per minute:
| Stat | Drain/min | Notes |
|---|---|---|
| FOOD | −2 | |
| ENE | −1 | −1 extra if overweight (weight > 50 → sluggish) |
| HYG | −1 | −4 more per poop on screen (max 3 poops) |
| JOY | −1 | −2 extra if FOOD < 30, −2 extra if HYG < 30 |
- ~15 %/min chance to poop (only if FOOD > 40). Poops tank hygiene fast.
- Care slip-up = letting any stat hit ≤ 10 (30-min cooldown so it counts once). Each slip-up delays evolution by 1 level and cools the bond.
- 🍎 Berry (3 flavors): +25 FOOD. Each species has a hidden favorite flavor → +35 FOOD, +10 JOY, ♥, bond, and it gets revealed.
- 🍬 Candy: +10 FOOD, +12 JOY, but +12 weight (fattening).
- ⚽ Play / minigame: +JOY, −ENE; the Pokéball minigame trains SPEED and burns weight.
- 🥊 Training bag: trains STRENGTH (~4 hits = 1 pt, cap +18/session), tires it.
- 🫧 Bath: clears poops, HYG → 100.
- 👆 Pet it: +5 JOY + bond.
- 🌙 Sleep: rest — ENE +6/min, needs drain ~4× slower with floors (FOOD 30 / JOY 35 / HYG 45).
- First ever pet: you pick a starter — Bulbasaur / Charmander / Squirtle.
- Hatch the egg: tap it 3× (or wait — it hatches on its own).
- Every later egg rolls a rarity tier:
| Tier | Base chance | After a proper goodbye | # species |
|---|---|---|---|
| ✨ Legendary | ~3 %* | ~10 % | 5 |
| 🔵 Rare | ~27 % | ~45 % | 27 |
| ⚪ Common | the rest | the rest | 47 |
* Legendaries only start appearing once you've registered ≥ 25 Pokémon.
- A daily streak and high bond push rare/legendary odds higher.
- Shiny: base 1 / 48 (→ 1 / 24 right after a goodbye), improved by streak/bond down to a best of 1 / 8. Tracked separately in the Pokédex.
- Triggers when level ≥ its evolution level (16 for most base forms) and every stat ≥ 40.
- Never automatic — a button appears and you tap to witness it.
- You can decline ("keep form"); it re-offers at the next level.
- Eevee branches toward whichever evolution you're still missing.
- 💛 Farewell — when it's a final form that has lived 3 days (72 hours). Note: The 72h requirement is dynamically reduced by 2 hours for each point of
careBonus(down to a minimum of 48h)! Blesses your next egg. - 💔 Run-away — if you let all four stats sit at 0 for a full hour. Curses the next egg.
- 👋 Release — long-press the creature to let it go on your terms (neutral).
After any ending, a new egg appears.
In addition to the original mechanics, this version introduces a persistent PC Box!
- When a Pokémon completes its lifecycle through a Farewell, it earns Veteran status and is permanently saved to your PC Box with all its final stats, medals, and bond.
- Easter Egg: You can recall your saved Veterans at any time by long-pressing their sprite in the Pokédex.
- If you currently have an active Veteran and invoke another from the PC, the current one will be safely saved back to the PC.
- If you invoke a PC Pokémon while raising a non-veteran (a pet that hasn't earned its Farewell yet), the current pet will be permanently released into the wild to make room.
This version includes an exclusive Cloud Save system powered by Google Drive! Never lose your companion again if you switch or reset your watch.
- Your data is stored safely in a hidden
appDataFolderon your Google Drive, meaning the app cannot read any of your personal files, and you won't accidentally delete your save. - 🟢 [BKP UP]: Uploads your current pet state to the cloud.
- 🟠 [DL SAVE]: Downloads and seamlessly restores the cloud save directly into your smartwatch, syncing time automatically.
- 🔴 [DEL BKP]: Deletes the cloud backup permanently.
- 🔘 [OUT]: Logs out of your Google account.
Note for Developers: If you fork this project, you must set up your own OAuth 2.0 Client ID in the Google Cloud Console (Application type: Android) and configure your own SHA-1 fingerprint for the Google Sign-In and Drive API to work.
- Streak (player-wide): first care each real day. Milestones at 3 / 7 / 30 / 100 days.
- Bond (per pet): grows with affection (cap +8/day), cools on neglect.
- Care Bonus: A hidden multiplier calculated as
(Streak / 7) + (Bond / 10). It drastically improves the odds of hatching Rare, Legendary, and Shiny Pokémon, and dynamically reduces the time required for a Farewell. - 8 medals (Lv10/25/50, favorite berry found, 7-day streak, max bond, final form, "fit").
- Pokédex: raising a species registers it; 151 + shinies to complete.
ATK / DEF / SPD = real Gen-1 base × genes + level + training.
On first run you choose a starter. After that you start with an egg — tap it 3 times or wait and it hatches.
Buttons (bottom arc, icons):
- 🍎 Feed → food menu.
- ⚽ Play → Pokéball minigame (trains SPEED). Tap the floating Pokéball — it gets faster as you hit it. 5 misses and you're out!
- 🌙 Light → sleep/wake.
- 🫧 Bath → clean your companion.
Touch Gestures:
- Tap the creature = pet it.
- Swipe left = open the Pokédex.
- Swipe up = open the Stat Card (tap the name to rename).
- Swipe down = Settings (set time, language, sound).
- Long press on the creature = release dialog.
- Flutter SDK ≥ 3.x
- A physical WearOS smartwatch, Android mobile phone, or an emulator
- Python 3.8+ with Pillow (
pip install Pillow)
git clone https://github.com/davidkalil10/TamaPokeWear.git
cd TamaPokeWear
⚠️ Sprites are NOT included for copyright reasons. They are downloaded from PMD SpriteCollab (CC BY-NC 4.0).
pip install Pillow
python3 tools/download_sprites.pyThis downloads all 151 Pokémon (normal + shiny) and saves them as GIFs + thumbnails under assets/sprites/. The first run downloads ~40 MB and caches it in tools/.pmd_cache/.
# Download specific Pokémon only
python3 tools/download_sprites.py 4 25 # Charmander + Pikachu
python3 tools/download_sprites.py normal # Normal only (no shinies)
⚠️ Sounds are NOT included (generated locally via synthesis).
python3 tools/generate_sounds.pyThis creates 10 Game-Boy-style WAV sound effects in assets/sounds/. No external libraries required — pure Python only.
⚠️ Music is NOT included for copyright reasons.
python3 tools/download_bgm.pyThis script downloads classic Pokémon background music tracks (MP3) directly from Archive.org into assets/bgm/.
# To run on Wear OS (default flavor):
flutter run --flavor wear
# To run on Mobile Phone:
flutter run --flavor mobilelib/
models/ # PetState (game data, Hive persistence)
services/ # GameEngine (game loop), AudioService
screens/ # HomeScreen, PokedexScreen, StatCardScreen, etc.
widgets/ # ActionButtons, StatBars, BiomeBackground, etc.
data/ # Pokedex data (species, stats, evolution lines)
i18n/ # Strings for EN, PT, ES, FR, DE, IT
assets/
sprites/ # ← NOT IN REPO (run tools/download_sprites.py)
sounds/ # ← NOT IN REPO (run tools/generate_sounds.py)
tools/
download_sprites.py # Downloads + converts PMD sprites to GIF
generate_sounds.py # Generates square-wave WAV sound effects
download_bgm.py # Downloads classic BGM tracks from Archive.org
| Package | Use |
|---|---|
hive + hive_flutter |
Local persistence (game save) |
just_audio |
Sound effects & Background Music |
wear_plus |
WearOS integration |
flutter_local_notifications |
Care reminders |
google_fonts |
Typography |
path_provider |
File paths |
All sprites: PMD SpriteCollab (community, CC BY-NC). Base stats: PokéAPI. Pokémon is a ™ of Nintendo / Game Freak / The Pokémon Company. Non-commercial, personal-use project. Full credits in CREDITS.md.
Original Arduino/ESP32 firmware by socquique — this project is a Flutter reimplementation of that work.
- Source code (Flutter app + tooling): MIT.
- Sprites & names: © Nintendo / Game Freak / The Pokémon Company; pixel art from PMD SpriteCollab (CC BY-NC 4.0). Non-commercial use only.
This is an unofficial fan project, not affiliated with or endorsed by Nintendo.