I disassembled a few bytes of the code, in Banks 5 and 7, and I don't see anything really complicated here. For example, the first dialog of the game is located at 0x1715A. All lines end with FF. The length and offset of the entire dialog are hard-coded like this:
1710A: A9 11 LDA #$11 ; A = 11
1710C: 8D 5C07 STA $075C ; Lines in dialog
1710F: A9 B1 LDA #$B1 ; A = B1
17111: 85 13 STA $13
17113: A9 5A LDA #$5A ; A = 5A
17115: 85 12 STA $12
Addresses $12 and $13 contain the location of the lines of text. Data is processed in order, by incrementing the address every character. The dialog ends when a specific number of lines have been processed, stored into RAM at $075C. In this case, it is arbitrarily set to 11, which is the length of the first dialog...
As for the line skipping, I can see a more complicated issue, because there is the initial drawing of the tiles, but the text also scrolls down. So there are a few more looping variables that must be tweaked accordingly...