GitHub - HermeticCode/showdown-current: Revised repo to reflect changes from deprecated repo · GitHub
Skip to content

HermeticCode/showdown-current

Folders and files

Repository files navigation

Pokemon Yellow+ for Flipper Zero

An enhanced Pokemon battle game for the Flipper Zero, featuring authentic Pokemon data integrated from the pokeyellow disassembly project.

🎮 Features

Authentic Pokemon Experience

  • 151 Original Pokemon with accurate base stats from Pokemon Yellow
  • Authentic Type System with proper effectiveness calculations
  • Turn-based Battles with speed-based move order
  • Status Conditions - Sleep, poison, burn, freeze, paralysis
  • Individual Values (IVs) for stat variation between Pokemon
  • PP System - Moves have limited uses like the original games

Enhanced Gameplay

  • Team Management - Build and manage teams of up to 6 Pokemon
  • Wild Battles - Encounter random Pokemon in the wild
  • Trainer Battles - Fight against trainer Pokemon
  • Critical Hits and STAB bonuses (Same Type Attack Bonus)
  • Authentic Damage Calculations matching original Game Boy formulas

Technical Features

  • Memory Optimized - Efficient use of Flipper Zero's 256KB RAM
  • Battery Friendly - Low CPU usage for extended play
  • Modular Design - Easy to extend and customize
  • Proper Error Handling - Robust memory management

🏗️ Building

Prerequisites

  • Flipper Zero SDK with ufbt or fbt
  • Python 3 (for data extraction)

Quick Build

# Using the build script (recommended)
./build.sh

# Or using make
make all

# Or directly with ufbt
ufbt build

Installation

# Install to connected Flipper Zero
ufbt install

# Or launch directly
ufbt launch

🎯 How to Play

  1. Navigate to Apps → Games → Pokemon Yellow+ on your Flipper Zero
  2. Select from the main menu:
    • Wild Battle - Fight random Pokemon
    • Trainer Battle - Fight trainer Pokemon
    • View Team - See your Pokemon team
    • Heal Team - Restore HP and PP
    • Pokedex - Browse available Pokemon

Battle Controls

  • Up/Down - Navigate moves
  • OK - Select move
  • Back - Return to menu

📁 Project Structure

Core Files

  • pokemon_main_enhanced.c - Main application entry point
  • pokemon_enhanced.h/c - Enhanced Pokemon system with authentic data
  • pokemon_integration.h/c - Game state management and integration layer
  • enhanced_battle_screen.h/c - Turn-based battle interface

Data Files

  • pokemon_yellow_data.c - Extracted Pokemon data from pokeyellow
  • moves_data_manual.c - Authentic move database
  • sprites/ - Pokemon sprite files in XBM format

Build System

  • application.fam - Flipper Zero app configuration
  • Makefile - Build automation with ufbt/fbt support
  • build.sh - Simple build script
  • FLIPPER_BUILD_GUIDE.md - Detailed build instructions

Legacy Files (Original Showdown)

  • pokemon.c/h - Original Pokemon system
  • battle.c/h - Original battle system
  • menu.c/h - Original menu system
  • select_screen.c/h - Original selection interface

🔧 Technical Details

Memory Usage

  • RAM: ~10-15KB total usage
  • Flash: ~50KB for full Pokemon data
  • Stack: 4KB for enhanced features

Performance

  • Battle calculations: O(1) per turn
  • Type effectiveness: Pre-calculated lookup table
  • Sprite rendering: Optimized for 128x64 display

Architecture

pokeyellow/*.asm → Python extractors → C data arrays → Flipper Zero structs

🎨 Customization

Adding New Pokemon

  1. Edit pokemon_data_extractor.py to include more Pokemon
  2. Run python3 pokemon_data_extractor.py
  3. Rebuild the application

Modifying Battle Mechanics

  • Damage formulas: Edit enhanced_pokemon_calculate_damage()
  • Type effectiveness: Modify type_chart[][] array
  • Status effects: Update enhanced_pokemon_can_move()

UI Customization

  • Battle screen: Modify enhanced_battle_draw_callback()
  • Main menu: Edit pokemon_main_enhanced.c
  • Add new screens: Follow existing screen patterns

📊 Integration Stats

  • 151 Pokemon with authentic stats
  • 50+ Moves with accurate data
  • 18x18 Type Chart for effectiveness
  • Memory Efficient - <15KB RAM usage
  • Build Success - Compiles to 18KB FAP
  • Flipper Compatible - Follows SDK patterns

🚀 What's New in Pokemon Yellow+

Major Enhancements from Original Showdown

  • Authentic Pokemon Data - Real stats from Pokemon Yellow disassembly
  • Enhanced Battle System - Type effectiveness, status conditions, critical hits
  • Team Management - Multiple Pokemon teams instead of single battles
  • Memory Optimization - Better performance on Flipper Zero
  • Modular Architecture - Easier to extend and customize
  • Comprehensive Documentation - Build guides and integration docs

Original Showdown Features (Still Available)

  • Complete Gen 1 Roster
  • Turn-based Combat
  • Selection Screen
  • Multiple Moves
  • 128x64 Monochrome display optimization

🤝 Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Test on actual Flipper Zero hardware
  5. Submit a pull request

📜 License

This project integrates data from:

  • pokeyellow disassembly - pret team
  • Original showdown game - HermeticCode
  • Enhanced integration - Community contribution

🙏 Credits & Acknowledgements

Original Showdown Credits (HermeticCode)

  • Nintendo/Game Freak - Original Pokemon designs
  • Rogue Master/Malik - Community support
  • Flipper Zero Team - Amazing hardware platform
  • Esteban Fuentealba/Kris Bahnsen - Inspiration and foundation
  • Talking Sasquatch - Educational content
  • Derek Jamison - Technical tutorials
  • The Flipper community - Documentation and support

Pokemon Yellow+ Integration Credits

  • pret team - pokeyellow disassembly project
  • HermeticCode - Original showdown foundation
  • Flipper Zero community - SDK and development tools

🐛 Troubleshooting

Build Issues

# Clean and rebuild
ufbt clean
ufbt build

Runtime Issues

# Check logs
ufbt cli
# Then type: log

Memory Issues

  • Reduce team size if needed
  • Check for memory leaks in custom code

🚀 Future Plans

  • More Pokemon sprites integration
  • Sound effects from pokeyellow audio data
  • World map system
  • Persistent save system
  • Online battle capabilities via IR/SubGhz
  • Pokemon Center functionality
  • Multiplayer battles using Flipper Zero's native capabilities

📋 Known Issues

  • Some sprite references temporarily disabled during integration
  • Original battle system coexists with enhanced system
  • Memory usage could be further optimized

🎯 Roadmap

Short Term

  • Re-enable all Pokemon sprites
  • Add sound effects
  • Improve UI animations
  • Add more status effects

Long Term

  • Full world map integration
  • Persistent save system
  • Multiplayer via IR/SubGhz/NFC
  • Pokemon trading system
  • Achievement system

Disclaimer

This is a fan-made project for educational purposes. Pokemon is a trademark of Nintendo/Game Freak. This project is not affiliated with or endorsed by Nintendo.

Enjoy authentic Pokemon battles on your Flipper Zero! 🎮⚡

About

Revised repo to reflect changes from deprecated repo

Resources

Stars

Watchers

Forks

Packages

Contributors