[...], so long as I didn't split an individual string between banks I was good
I think what Gideon is saying is, that he doesn't split between banks, so the problem will never occur.
Well, I *did*, but just at logical places, typically right between one end-of-string and the next declared pointer label.
Yeah, I see what you're doing. I never ran into that issue because I made sure that I kept a decent buffer of empty space in each (manually) defined block that I was inserting to. Typically a bank boundary, but not always; I used whatever free space I could find. Including the kanji graphics!
I honestly thought that $F6XX was just a standard "wait for XX clicks" code. The hard jumps were *always* preceeded by $FF in the code, so I just never bothered to look at the bytes preceding them.
Here's an example from my script. It's not the same sample string though, because bank C7 is *entirely* event code and I never rewired any of the pointers to it
This is the cat on the Bloodhook runs you through the coin flip puzzle:
Ho! You're pretty good!!<$line>
You've got a sharp mind! Let me give you a<$line>
<hero> got an Ice Claw!<$end>
It's an Atlas script. Each EMBSET directive sets aside three bytes (in this case, it's defined earlier in the file) for a 24-bit pointer to be written later. Then, when the inserter finds an EMBWRITE directive with the same identifier number, it goes back to the corresponding EMBSET and fills it in with the current pointer value. It's messy, but it works!