From the original post: Here's another program, though it's more of a work in progress.
Both files need to be in the same directory.
evdextract.rb (filename.evd) produces a text file from that evd.
If no argument is supplied, it processes all .evd files in the directory.
The output from this program contains more header information, and tries to assign names to each line. (Which is what names_list.txt is for, though at the moment it's far from complete.)
Portrait_id is probably not something anyone will want to mess around with, so I don't think it needs to stay in the production version. (Though I think I've seen one place where it looks like the wrong image is used. But it's a rare enough problem that it can be done manually just as easily.) Same for "Portrait_type".
I'm not clear on what "Position" does, since it doesn't seem to correlate with where text apppears on the screen. (That seems to be a function of Portrait_id.)
TerraBreaker's note on Position:
Morgan, just a small update on my earlier post to take into consideration when you update the script tools - the "Position" data that your program extracts is definitely affecting the tip of the message box. I've identified the following values as they may be useful if there are any mistakes in the game that need correcting.
Position: 9 -> Tip of message box points to far Left/Right of screen, dependant on speaker.
Position: 0 -> Tip of message box points down to character sprite
Position: 5 -> Do not show the tip.
Position: 2 -> When in scenes featuring sprites and character cut-ins, positions the tip on the top left/top right corner of the message box, depending on where the speaker is located.
Position: 2 ->When in Visual Novel style late-night talks (different style of text box is used) it does nothing / maybe prevents small portrait displaying?
There may be other valid values for Position as well. Pretty safe to say theres no reason anybody will need to change this unless there are instances where it's wrong.