A Lua script for the Bizhawk/mGBA emulator compatible with Pokemon Fire Red, Leaf Green, Ruby, Sapphire, and Emerald that tracks relevant data for the IronMon challenge.
Emerald works a little differently due to how many "artificial" double battles can take place, and actually spends the bulk of its time in the BattleIntroRecordMonsToDex script. Previous address caused unreliable battle start times for some trainers since the script addresses from other games were only present for a few frames in Emerald.