I know this thread is centuries old but I am going to post what I found anyways...
0x08622028: The table controls the data for
CHECK inside the
MATCH CALL. The size of the table is 0x4E0 bytes containing 0x10 bytes (four .word-s) per slot. There are 78 Match Call entries have CHECK function although there are 82 Match Call slots so only 4 don't have CHECK functions (they are Mr. Stone, Prof. Birch, Mom, and Scott) however I haven't found how they control these exceptions. Note that common trainers comes first before the boss trainers.
Code:
.word STRATEGY
.word TRAINERS_POKEMON
.word SELF_INTRO_LINE1
.word SELF_INTRO_LINE2
0x085500A4: The table controls the rematch data for both common and special Trainers. The size of the table is 0x4E0 bytes containing 0x10 bytes (four .word-s) per slot. Same that it only have 78 entries and I haven't found out how again these are controlled.
Code:
.hword TRAINER_INDEX
.hword TRAINER_INDEX
.hword TRAINER_INDEX
.hword TRAINER_INDEX
.hword TRAINER_INDEX
.hword 0x0000 (outerior Trainers) or 0x0018 (interior Trainers)
.word MAP_NAME_ID
These are only I can give for now. Although I'm more interested to find out how Trainer data are loaded for PokeNav and Trainer sprites as well.