Sure. The pointer system looks the same in DQ5. I hear that the actual dialogue in DQ6 uses some sort of encryption - Huffman, I think people say? So I have no idea how to deal with that. Its spell section is clear text though from looking at it, so I'll probably convert those spells somewhere down the road for my own enjoyment of the game, if not necessarily for a public project. Heh.
I'm self taught and have no programming background, so a lot of this might use sketchy terms. Anyway, the text is split up into sections. One might be a certain town at night's dialogue, or the list of items, etc. I looked at the monster and spell sections first because they're pretty short text, and easier to understand.
Above the list of spells section in DQ5 (starting with Frizz) there is a big list of pointers. The pointers are pretty noticeable because in your editor, you'll see large vertical lines of 00's in the hex. If you read through it, you'll start to notice patterns.
If I read from address 047D3E20,
the hex is - 00 00 08 00 00 00
then it's - 01 00 0A 00 02 00
then it's - 02 00 0C 00 05 00
Those 00's on every other number are where overflow goes if the numbers in the pointer are larger than FF. So if I remove those, since they don't matter currently,
those same pointers are:
00 08 00
01 0A 02
02 0C 05
the first number is an index number (it rises by 1 each entry)
the second number is the length of the text.
the third number is a relative position from the beginning. each number represents 4 bytes, so an entry of 02 means something is 8 bytes from the beginning.
So these apply to the first three spells in the list below, after all the pointers.
Frizz, Frizzle, and Kafrizzle.
if you look at it in the ASCII text, it's @4Frizz@ = 08 characters long, matching that first pointer. The positional pointer is 00 because it's at the beginning.
The next is @4Frizzle@ = 10 long, or 0A in hex.
Before the next spell, there's a couple of "þ" looking characters (FE in hex) They are just filler.
The next is @4Kafrizzle@ = 12 long, or OC in hex.
So if I wanted to change Frizzle to Blazemore (and I certainly did), then I just added 2 to the length (middle section) of the pointer, making the whole thing
01 00 0C 00 02 00
Of course that bumps Kafrizzle's text ahead as well. By two bytes.
I could eliminate the FE ('þ') characters between the two spells, and the Kafrizzle pointer would still be valid. But it's handy to have a bit of buffer between the entries to work with, though, so instead I would add 2 more þ's (or anything, actually) and then it would be the correct 4 bytes ahead of where it was, and I could increase the relative position pointer for Kafrizzle by 1.
The other thing, overflow. If say, the relative position section of the pointer gets to be larger than FF, it starts over again at 00. And there is now an 01 where there was an 00 to the right of it. I guess it's Little Endian, as they say? You can see this happening in the monster table's pointers.
Finally, if you miscalculate your changes to the pointer and go to test it, Dragon Quest V will spit out a message like "Error:MID 104" which means your pointer is totally off. If the starting point is right but the length is wrong, you'll get something close to the right text with some fluctuating random characters in the middle. I found it handy to know that.
As far as the pointers for dialogue text... each section is obviously way longer than a spell name, so there is much more overflow, and they are harder to understand, but they do seem to somewhat fit the same pointer format. For some reason the index numbers aren't always sequential in the dialogue pointers.
I had some success in changing dialogue pointers for DQ4, but it was painstaking. I found there were issues with the next line bleeding into the last if you shortened it by a lot. Probably a bunch more effort and I could figure out more. I decided that the length of the script was basically prohibitive to do that much work for each line of dialogue, so I'm using different solutions.
Each pointered dialogue section starts with something roughly like (in ASCII) @c0@@a@b, where if it's a named character talking, their name can be between the @a and the @b. So "@c0@@aBianca@bLine of dialogue." If it has line breaks, there is a hex character 0A between them. If you're editing dialogue, the 0A is moveable, and what comes after it is all still part of the same pointer.
Hope that mess is of some help to you. I'm a bit curious what you're working on! Basically, the main thing to know is the pointer being index#, text length, relative position.