FF3us/FF6j Dialog pointers, written by Lord J lord_j@hotmail.com, http://www.angelfire.com/pq/jumparound/index.html Base: 0xCE800 Lenght: 2 bytes (1 word) each pointer Number of items: 2 indexes + 3083 used pointers (FF3us) / 3326 possible pointers 2 indexes + 3113 used pointers (FF6j ) / 3326 possible pointers Structrure of an item: A pointer is a 16-bit relative address, following Intel convention (inverted bytes). What does one pointer represent? An address, relative to start of DTE dialog (.smc offset 0xD0200), wich represent the start of a paragraph. What is a paragraph? A short part of text, a quote from a caracter. A paragraph ends with the code 0x00 (user press 'A'), or the extended code 0xFF12 (automatic scroll). By decoding the DTE text, we can separate these paragraph by detecting the two codes. Adding a counter value that increase with each new paragraph will puts an index value, a reference number to each paragraph. Details: * The first and second words aren't pointers. The first word indicate the reference number (or index) of the paragraph that start the second bank of DTE. The second word suggest that it is the reference number of the paragraph that start the first bank of DTE. * The pointer of the start of the second bank can be found with this: (base address + 2) + 2 * value of word#1 = For FF3us: 0xCE802 + 2 * 0x0626 = 0xCF44E * The pointers are adjusted to be *exacly* at the start of a paragraph * The pointers seems to be orderly fashioned