Well, I isolated a value in memory that's the source of the delay getting the stream started. So now I can start the stream immediately by fiddling one byte in memory. It's in a rather strange block of code that seems to be following a linked list of objects. If it encounters a "62" anywhere in the list, it stops and doesn't send the data. That 62 is set early on, in an equally strange section of code.
So far, there's no indication that it's actually trying to read anything from the port. It doesn't set the flag to be notified when data comes in, and I don't see anything trying to read the channel status outside of the transmit handler.
So the good news is I can now provide a solution that gets us the LED data we're after, even if it's not a perfect simulation of the hardware, That location in memory is almost certainly ROM-version specific though, so it would likely need to be updated for each specific game code. I'm still going to try and figure out what it's trying to do, to avoid the hack.
I also need to figure out how to make this data available to VP. This is a full byte per LED, probably different intensity levels and/or colors. I can stuff it into the regular LED matrix (80+) as on/off values, but we would be missing out on the full light show.
*Edit* Interestingly, Star trek LE doesn't need this hack. It just starts sending data right away!