DEV Community

Cover image for I built a free, open-source tool that reads your Pokémon team live from mGBA and analyses its type coverage
Roberto Ringoli
Roberto Ringoli

Posted on

I built a free, open-source tool that reads your Pokémon team live from mGBA and analyses its type coverage

An open-source desktop app that reads a Pokémon party out of an emulator's RAM as you play and analyses it. Sharing it because a few of the design problems turned out more interesting than I expected.

  • The emulator script interprets nothing. A Lua script inside mGBA ships raw bytes and a game identity over TCP; all decoding happens on the C# side. Adding an emulator costs a script and zero lines of domain logic.

  • are keyed by game, not by generation. 42 of the 386 Gen 3 species learn a move at a different level in Ruby/Sapphire/Emerald than in FireRed/LeafGreen, so the usual merged dataset reports a level that is wrong for the game actually running.

  • No opaque scores. The team strength number is a list of attributed factors, each carrying the fact behind it and the Pokémon responsible.

  • Apple Silicon refuses unsigned binaries — the kernel kills them and Finder calls the app "damaged", which is not the Gatekeeper prompt it looks like. Cross-publishing macOS builds from a Linux runner cannot work.

.NET 10, Avalonia, PKHeX.Core for the binary format. 122 tests, some driven from bytes captured off real hardware. There's a decision log in the repo if you want the reasoning behind any of it.

link repo

Top comments (0)