Finally figured out where all the code responsible for the special trainee promotions are… now we can have autopromotions happening in the prep screen
0xCC6D4 - 0xCC900 contain the various checks for when this promotion can take place. It loops through your characters until it finds one that is in the trainee promotion table array (located at 0x207044), and makes sure that character is alive, has sufficient level, is the right class, and has a promotion option in the promotion branches table. If all those are true, then it does a bunch of stuff that causes the character to promote.
Note that autopromotion will not happen on chapters without a prep screen.
The offsets 0xCD7FC, 0xCD898, 0xCD8F8, 0xCD958, and 0xCD9B8 contain five pieces of very similar code, designed to load the five sentences (four, in the case of Ross) your character says before promoting. The text IDs for the sentences are located in a table at 0x20707C.