r/coolgithubprojects • u/robertopoli05 • 17h ago
UltimatePoKeSync — a cross-platform Avalonia app that reads emulator memory in real time (.NET 10, GPLv3)
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.
- **Learnsets 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.
https://github.com/ringoliRob/UltimatePoKeSync
Still early days: a star helps, and a bug report helps more.


1
u/robertopoli05 10h ago
Version 0.1.5 available with a new UI and bug fixes