1. What are sync and Tango_Sync for?
Synchronizing two strings or a string and a script. The demo has an example of each. The first one to reach a sync point stops and waits for the other to reach the corresponding sync point. They're a lot like sync nodes in SpaceChem, if that helps.
You could do it before by setting a variable, the way the Link and Zelda example used to work. This way's just more convenient.
2. What's the "Persistent string style flag" and how do I use it?
Shoot, I completely forgot to document it. Sorry.
With the persistent flag, a string won't disappear and won't prompt you to press A when it's finished. It's a style flag, TANGO_FLAG_PERSISTENT; just OR it together with the others.
3. What's the difference between string control code \25 and the old char(25)?
The string control code only works in ZC messages, not ZScript strings. Aside from that, the only difference is a technical one.
Character 26 (previously 25) is interpreted as a line break. In the case of the control code, the code is actually stored as character 26. @char(26) is a function that inserts the character into the string when it runs.
I meant for \25 to work all along... I just forgot before that ZC stores control codes one higher than their values.
4. Do you have an example for drawing text in the frame?
I didn't include one, but the format is TANGO_DRAW_TEXT, string, font, CSet, color, x, y. The font is a Tango font, and the string pointer has to be valid as long as the string is displayed.
Added into Zelda's backdrop from the demo (in the ugliest possible color):
int zeldaStr[]="Zelda";
int zeldaFrame[]= {
TANGO_DRAW_RECT_TRANS,
0, 11, // CSet, color
4, 5, // X, Y (pixels)
216, 70, // Width, height (pixels)
TANGO_DRAW_TILE,
1420, // Tile
9, // CSet
8, 8, // X, Y (pixels)
4, 4, // Width, height (tiles)
TANGO_DRAW_TILE,
1300,
1,
0, 0,
14, 5,
TANGO_DRAW_TEXT,
zeldaStr, // String pointer
FONT_ORACLE_EXTENDED, // Font
11, 14, // CSet, color
27, 56, // X, Y
TANGO_DRAW_END
};