Final Fantasy Tactics Advance/Strings: Difference between revisions

From Data Crystal
Jump to navigation Jump to search
No edit summary
m (Xkeeper moved page Final Fantasy Tactics Advance:Strings to Final Fantasy Tactics Advance/Strings: normalize subpages and titles)
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{subpage|game=Final Fantasy Tactics Advance}}
=Data format=
=Data format=
A string consists of one or more characters. The characters are ''generally'' multibyte and can be any of the following:
A string consists of one or more characters. The characters are ''generally'' multibyte and can be any of the following:
Line 45: Line 46:
: Values (big-endian)
: Values (big-endian)


{| style="border: 1px solid; border-collapse: collapse; text-align: center;" cellspacing="0" cellpadding="3" border="1"
{| style="border: 1px solid #aaaaaa; border-collapse: collapse; text-align: center;" cellspacing="0" cellpadding="3" border="1"
  |- style="background: #eeeeee;"
  |- style="background: #ccccff;"
  !style="background: #7f7f7f;" |
  !style="background: #8888cc;" |
  !0
  !0
  !1
  !1
Line 65: Line 66:
  !F
  !F
  |-
  |-
  !style="background: #eeeeee;" | 800x
  !style="background: #ccccff;" | 800x
  |ぁ
  |ぁ
  |あ
  |あ
Line 83: Line 84:
  |ぐ
  |ぐ
  |-
  |-
  !style="background: #eeeeee;" | 801x
  !style="background: #ccccff;" | 801x
  |け
  |け
  |げ
  |げ
Line 101: Line 102:
  |だ
  |だ
  |-
  |-
  !style="background: #eeeeee;" | 802x
  !style="background: #ccccff;" | 802x
  |ち
  |ち
  |ぢ
  |ぢ
Line 119: Line 120:
  |ば
  |ば
  |-
  |-
  !style="background: #eeeeee;" | 803x
  !style="background: #ccccff;" | 803x
  |ぱ
  |ぱ
  |ひ
  |ひ
Line 137: Line 138:
  |む
  |む
  |-
  |-
  !style="background: #eeeeee;" | 804x
  !style="background: #ccccff;" | 804x
  |め
  |め
  |も
  |も
Line 155: Line 156:
  |を
  |を
  |-
  |-
  !style="background: #eeeeee;" | 805x
  !style="background: #ccccff;" | 805x
  |ん
  |ん
  |ァ
  |ァ
Line 173: Line 174:
  |ク
  |ク
  |-
  |-
  !style="background: #eeeeee;" | 806x
  !style="background: #ccccff;" | 806x
  |グ
  |グ
  |ケ
  |ケ
Line 191: Line 192:
  |タ
  |タ
  |-
  |-
  !style="background: #eeeeee;" | 807x
  !style="background: #ccccff;" | 807x
  |ダ
  |ダ
  |チ
  |チ
Line 209: Line 210:
  |ハ
  |ハ
  |-
  |-
  !style="background: #eeeeee;" | 808x
  !style="background: #ccccff;" | 808x
  |バ
  |バ
  |パ
  |パ
Line 227: Line 228:
  |ミ
  |ミ
  |-
  |-
  !style="background: #eeeeee;" | 809x
  !style="background: #ccccff;" | 809x
  |ム
  |ム
  |メ
  |メ
Line 245: Line 246:
  |ワ
  |ワ
  |-
  |-
  !style="background: #eeeeee;" | 80Ax
  !style="background: #ccccff;" | 80Ax
  |ヲ
  |ヲ
  |ン
  |ン
Line 263: Line 264:
  |9
  |9
  |-
  |-
  !style="background: #eeeeee;" | 80Bx
  !style="background: #ccccff;" | 80Bx
  | A
  | A
  | B
  | B
Line 281: Line 282:
  | P
  | P
  |-
  |-
  !style="background: #eeeeee;" | 80Cx
  !style="background: #ccccff;" | 80Cx
  | Q
  | Q
  | R
  | R
Line 299: Line 300:
  | f
  | f
  |-
  |-
  !style="background: #eeeeee;" | 80Dx
  !style="background: #ccccff;" | 80Dx
  | g
  | g
  | h
  | h
Line 317: Line 318:
  | v
  | v
  |-
  |-
  !style="background: #eeeeee;" | 80Ex
  !style="background: #ccccff;" | 80Ex
  | w
  | w
  | x
  | x
Line 335: Line 336:
  | _
  | _
  |-
  |-
  !style="background: #eeeeee;" | 80Fx
  !style="background: #ccccff;" | 80Fx
  | 々
  | 々
  | /
  | /
Line 353: Line 354:
  | ±
  | ±
  |-
  |-
  !style="background: #eeeeee;" | 810x
  !style="background: #ccccff;" | 810x
  | ×
  | ×
  | =
  | =
Line 371: Line 372:
  | ◀*
  | ◀*
  |-
  |-
  !style="background: #eeeeee;" | 811x
  !style="background: #ccccff;" | 811x
  | ▶*
  | ▶*
  | ○
  | ○
Line 389: Line 390:
  | 7**
  | 7**
  |-
  |-
  !style="background: #eeeeee;" | 812x
  !style="background: #ccccff;" | 812x
  | 8**
  | 8**
  | 9**
  | 9**

Latest revision as of 02:41, 24 January 2024

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: