Welcome to Data Crystal's new home! Data Crystal is now part of the TCRF family (sort of).
The wiki has recently moved; please report any issues in Discord. Pardon the dust.

Final Fantasy Tactics Advance/Strings

From Data Crystal
Jump to navigation Jump to search

This is a sub-page of Final Fantasy Tactics Advance.

Data format

A string consists of one or more characters. The characters are generally multibyte and can be any of the following:

  • 0x00: End of string/Padding
  • 0x01: Signal start of single-byte section (see below). Can only appear at beginning of string.
  • 0x10 0xXX: Unknown
Values:
  • 0x00: Only observed value
  • 0x20 0xXX: Unknown
Values:
  • 0x00: Only observed value
  • 0x32 0xXX 0xYYYYYYYY: Signal start of FFTA LZSS string. Can only appear at beginning of string.
Values for X:
  • 0x00: Only observed value (Changing appears to have no effect)
Y is a big-endian representation of the size of the decompressed string
  • 0x40 0xXX: Control character
Values:
  • 0x21 0xXX: Unknown
Values: Unknown
  • 0x25 0xXX: Look up party character's name[need verification]
Values:
  • 0x00: Marche
  • 0x3C 0xXX: Unknown
Values: Unknown
  • 0x3E 0xXX: Custom-width space
Values: Width of space, in pixels
  • 0x53 0xXY [string] [string]: Display choice
Values:
  • Upper nibble: Set to 1, other values have odd behavior
  • Lower nibble: 0 for first option selected by default, 1 for second option selected by default. Other values seem to be same as 0[need verification]
  • 0x61: Wait for button press. Only works when message box extended[need verification]
  • 0x63: Clear dialog box
  • 0x6E: Newline
  • 0x70: Display "Press button for next page" icon (and wait for input)
  • 0x72 0xXX: Look up character names (CRNs)
Values: See CRNs
  • 0x73: Space
  • 0x74 0xXX: Delay text for X/10 seconds
  • 0x75: Unknown
  • 0x77: Observed, purpose unknown
  • 0x78: Unknown
  • 0x79: Unknown
  • Other values will crash the game. However, it is unknown if this is always the case.
  • 0x44: Appears to exist, purpose unknown
  • 0x8X 0xXX: Printed character
Values (big-endian)
0 1 2 3 4 5 6 7 8 9 A B C D E F
800x
801x
802x
803x
804x
805x
806x
807x
808x
809x
80Ax 0 1 2 3 4 5 6 7 8 9
80Bx A B C D E F G H I J K L M N O P
80Cx Q R S T U V W X Y Z a b c d e f
80Dx g h i j k l m n o p q r s t u v
80Ex w x y z . ? ! , · : _
80Fx / ~ ( ) { } + - ±
810x × = < > % & * ▲* ▼* ◀*
811x ▶* ; 0** 1** 2** 3** 4** 5** 6** 7**
812x 8** 9** -** ***
  • *Approximation
  • **Fixed width (not fullwidth)
  • ***The rest of the table appears to be filled with kanji

Single-byte mode

Any string that begins with the byte 0x01 signals that the rest of the string consists of single-byte characters. The single-byte character table is identical to the 0x80XX table, except each letter is shifted by one. For example, 0x80CC ('c') becomes 0xCD. A single-byte character string is terminated by a null byte.

ROM data

CRNs

CRN data starts at 0x0855128C. CRNs are densely packed, stored as strings, and pointers must be adjusted if lengths change. See below for additional info on pointers.

Default CRN list

  • 0x00: CRN_NONE
  • 0x01: CRN_DEF
  • 0x02: Marche
  • 0x03: Mewt
  • 0x04: Ritz
  • 0x05: Remedi
  • 0x06: Cid
  • 0x07: Doned
  • 0x08: Montblanc
  • 0x09: Babus
  • 0x0A: Ezel
  • 0x0B: Nono
  • 0x0C: Shara
  • 0x0D: Llendar
  • 0x0E: Lyle
  • 0x0F: Guinness
  • 0x10: Colin
  • 0x11: Leslaie
  • 0x12: Mateus
  • 0x13: Adrammelech
  • 0x14: Ultima Crystal
  • 0x15: Exodus Fruit
  • 0x16: Famfrit
  • 0x17: Judge
  • 0x18: Mateus
  • 0x19: Adrammelech
  • 0x1A: Famfrit
  • 0x1B: Littlevili
  • 0x1C: CRN_RES6
  • 0x1D: CRN_RES7
  • 0x1E: Dabarosa
  • 0x1F: Dolce
  • 0x20: Warose
  • 0x21: Raven
  • 0x22: Hejaat
  • 0x23: Batalise
  • 0x24: Golitaire
  • 0x25: Bishon
  • 0x26: Steraiz
  • 0x27: Gukko
  • 0x28: Maliris
  • 0x29: Sandy
  • 0x2A: Cindy
  • 0x2B: Mindy
  • 0x2C: Kraken
  • 0x2D: Tiamat
  • 0x2E: Lich
  • 0x2F: Glasm
  • 0x30: Silverlock
  • 0x31: Gutskor
  • 0x32: Ogma
  • 0x33: Reaker
  • 0x34: Bladesman
  • 0x35: Carot
  • 0x36: Hanzou
  • 0x37: Dark Knight
  • 0x38: Buckles
  • 0x39: Gagat
  • 0x3A: Meow
  • 0x3B: Mystery Box
  • 0x3C: Odd Statue
  • 0x3D: Magic Device
  • 0x3E: Big Gabbana
  • 0x3F: Lil Gabbana
  • 0x40: Diaghilev
  • 0x41: Kanan
  • 0x42: Rayne
  • 0x43: Lodion
  • 0x44: Gerland
  • 0x45: Lord Ghost
  • 0x46: Gelato
  • 0x47: Auggie
  • 0x48: Belvay
  • 0x49: Delia Wyrms
  • 0x4A: Grissom
  • 0x4B: Mombomb
  • 0x4C: Celia
  • 0x4D: Redy
  • 0x4E: Queen Lamia
  • 0x4F: Adamantoise
  • 0x50: Ochu
  • 0x51: Neochu
  • 0x52: Dread Lord
  • 0x53: Apanda
  • 0x54: Archaedemon
  • 0x55: Mamaflan
  • 0x56: Fog
  • 0x57: Grang
  • 0x58: Vili
  • 0x59: Haweh
  • 0x5A: Ganderu
  • 0x5B: Weaver
  • 0x5C: Mintz
  • 0x5D: Eldena
  • 0x5E: Cheney
  • 0x5F: Pallanza
  • 0x60: Lini
  • 0x61: Quin
  • 0x62: Pam Le Fay
  • 0x63: Delusiah
  • 0x64: CRN_NAME071
  • 0x65: CRN_NAME072
  • 0x66: Don Brass
  • 0x67: Leanan
  • 0x68: Dredd
  • 0x69: Reinhold
  • 0x6A: Mike
  • Other values are invalid by default

Pointers to CRNs

The CRN pointers are located at 0x085516D0 and are consecutive. There appear to be empty slots for additional CRNs.

Names of Characters

Start at &H566A00, All Single Byte.

References

Based on work from these sources: