Rai, you still at it? That's a good sign. Persistence is key

But yes, you can avoid pointers by adding in a DTE or MTE routine. Here's the catch though, you'll need to know how to actually code in order to do this let alone finding some free space in the currently mapped code area to put this new code.
DTE is easy because the length is fixed (usually at 2, hence "dual"). MTE requires either a table (LUT) or a pattern reserving length for certain ranges of a byte.
I know there are plenty of docs, but I'll give a quick run down on how DTE works:
Lets say they in your game you have ascii characters from $20-$7f. Anything below $20 is a control code and anything above $7f was used for more kana/kanji chars. Since you don't need the upper half of the byte anymore, you can use those values for DTE control code.
(keeping the explanation really simple in design...)
You need to locate the original "put character" subroutine and replace the subroutine call with your own code location. In your subroutine, you test to see if the byte is upper half or lower half. If it's the lower half, then you call the original subroutine that puts the char onscreen, then return back from your "hook". If the byte is upper half, AND it by $7F, multiply it by 2 and transfer it to an index reg. Use index addressing to grab the two bytes from the LUT. Grab each byte one at a time and call the game's "put character" subroutine.
This is the simplest form. The downside to this is that it prints two chars on screen per "tick" for DTE pairs and one per tick on non DTE single characters. If you want to print one character per tick from a DTE call, you'll need a bit more code and control over the games text pointer and possible other internal variables.