> Thanks for all your help. I just have one last
> question: Would it be any different to add MTE instead (more
> than two chars)?
Yeah. With a DTE hack, there is a byte that gets set to 1 after the first of the two characters is read, and set back to 0 after the second of two characters is read. This value of this byte is used by the hack to do two things:
1) It tells the hack to read the first or second byte out of the DTE table value.
2) It tells the hack to tell the game whether or not to advance to the next byte in the script.
So basically, the game's script hits a DTE value, the hack kicks in and processes the DTE value. Since the byte is set to 0, it will read the first byte out of the table, set the byte to 1, and tell the game not advance the script. The game's script will then hit the same DTE value, the hack will kick in again and this time read the second byte out of the table since the byte is set to 1. It'll then set the byte back to 0 and the script resumes as usual.
If you want to use MTE instead, you'll have to change the way this byte works.
If you go with some other fixed length (like, each value in the table will be four bytes instead of two bytes, etc) you can just change the hack so that it doesn't advance the script until the byte equals 4 or 5 or whatever length you use.
The other, more likely option, would be to not use a fixed length. This way would require a bit more ingenuity on your part. There are lots of ways that you could do it, but I would try to do it this way. I would have two tables instead of just one. The first one would be a pointer table. The DTE values in the game's script would be used to lookup a pointer in this table. The pointer from the table would then be used to lookup the actual value that's assigned to the DTE value (located in the second table). Each value in the second table would be ended with some kind of control byte so that you could tell when it ended. Every time the hack gets called, it would check for the value of the next byte in the second table. If that value is equal to the control byte, it would tell the game to advance the script, otherwise it wouldn't (so that the hack will keep getting called until the word in the second table is done). In this case, the 0 or 1 byte from the DTE hack would only be used to keep track of which byte in the word to display (in other words, it would be incremented with each call of the hack, used as an offset, and reset to 0 when the word is finished).
That's how I would do it, but there are certainly plenty of other ways to go about it.