Hi all, I’ve documented a source-backed reverse-engineering of how Pokémon Black 2 and White 2 construct and resolve NPC-vs-NPC Pokémon World Tournament matches.
Key result:
In the normal NPC simulation path, trainer records are reduced to a small set of fields: a priority, a type-chart category, and a trainer-type flag.
Standard Champion records (Blue, Lance, Steven, Wallace, Cynthia, Alder, and Red) all decode to the same relevant values: priority 4, trainer type 0, and category 17. The result routine does not read the trainer name or ID.
Therefore, a Champion-vs-Champion tie is exactly 50/50 in the source routine: both have equal priority and neutral category-17 affinity, so the code calls GFL_STD_Rand(context, 2).
A priority-4 Champion beats a standard priority-3 Gym Leader before the tie/random branch, so the standard Champion-vs-Leader result is deterministic in favor of the Champion.
Leader-vs-Leader matches depend on their matchup categories. If neither Leader has an advantage, the winner is chosen 50/50. If one Leader has the advantage, that Leader wins about 70% of the time, while the other can still win about 30%.
Built-in cup constructors, menu IDs, unlock conditions, Champion/Leader rosters, and downloadable .pwt bracket data are documented separately.
The development-build analysis is cross-checked against USA/Europe retail data.
Full evidence, scripts, tables, and reproducibility notes:
https://github.com/DavidAGInnovation/bw2-pwt-research