Anonymous

Changes

From Final Fantasy Inside

FF7/Text encoding

1,133 bytes added, 05:20, 23 May 2019
m
23 revisions imported
FF Text is a format that Squaresoft used to encrypt store strings in the English version of Final Fantasy VII. Below you can find Large subsets of the character (e.g. A-Z, a table that will help you decrypt strings in game. ''Note: to get letters-z, numbers and some special chars you only need to shift all character 0-9) set are coded as simply their ASCII values offset by +20h''0x20.
{| border="1" cellspacing="1" cellpadding="3" align="center" style="border: 1px solid black; border-collapse: collapse; font-family: Tahoma; font-size: 10px;"
| align="center" | {SPACE}
| align="center" | !
| align="center" | ""
| align="center" | #
| align="center" | $
| align="center" | %
| align="center" | &
| align="center" | '
| align="center" | (
| align="center" | :
| align="center" | ;
| align="center" | <&lt;
| align="center" | =
| align="center" | >&gt;
| align="center" | ?
|-
|-
! style="background:rgb(204,204,204)" | 60
| align="center" | Ä&Auml;| align="center" | Á&Aacute;| align="center" | Ç&Ccedil;| align="center" | É&Eacute;| align="center" | Ñ&Ntilde;| align="center" | Ö&Ouml;| align="center" | Ü&Uuml;| align="center" | á&aacute;| align="center" | à&agrave;| align="center" | â&acirc;| align="center" | ä&auml;| align="center" | ã&atilde;| align="center" | å&aring;| align="center" | ç&ccedil;| align="center" | é&eacute;| align="center" | è&egrave;
|-
! style="background:rgb(204,204,204)" | 70
| align="center" | ê&ecirc;| align="center" | ë&euml;| align="center" | í&iacute;| align="center" | ì&igrave;| align="center" | î&icirc;| align="center" | ï&iuml;| align="center" | ñ&ntilde;| align="center" | ó&oacute;| align="center" | ò&ograve;| align="center" | ô&ocirc;| align="center" | ö&ouml;| align="center" | õ&otilde;| align="center" | ú&uacute;| align="center" | ù&ugrave;| align="center" | û&ucirc;| align="center" | ü&uuml;
|-
! style="background:rgb(204,204,204)" | 80
| align="center" | ⌘&#8984;| align="center" | °&deg;| align="center" | ¢&cent;| align="center" | £&pound;| align="center" | Ù&Ugrave;| align="center" | Û&Ucirc;| align="center" | ¶&para;| align="center" | ß&szlig;| align="center" | ®&reg;| align="center" | ©&copy;| align="center" | ™| align="center" | ´&acute;| align="center" | ¨&uml;| align="center" | ≠&#8800;| align="center" | Æ&AElig;| align="center" | Ø&Oslash;
|-
! style="background:rgb(204,204,204)" | 90
| align="center" | ∞&#8734;| align="center" | ±&plusmn;| align="center" | ≤&#8804;| align="center" | ≥&#8805;| align="center" | ¥&yen;| align="center" | µ&micro;| align="center" | ∂&#8706;| align="center" | Σ&#931;| align="center" | Π&#928;| align="center" | π&#960;| align="center" | ⌡&#8993;| align="center" | <u>ª&ordf;</u>| align="center" | <u>º&ordm;</u>| align="center" | Ω&#937;| align="center" | æ&aelig;| align="center" | ø&oslash;
|-
! style="background:rgb(204,204,204)" | A0
| align="center" | ¿&iquest;| align="center" | ¡&iexcl;| align="center" | ¬&not;| align="center" | √&#8730;| align="center" | Æ’ƒ| align="center" | ≈&#8776;| align="center" | ∆&#8710;| align="center" | «&laquo;| align="center" | »&raquo;| align="center" | …| align="center" | À| align="center" | Ã| align="center" | Õ| align="center" | Å’| align="center" | Å“
| align="center" | {NOTHING}
| align="center" | &Agrave;
| align="center" | &Atilde;
| align="center" | &Otilde;
| align="center" | Œ
| align="center" | œ
|-
! style="background:rgb(204,204,204)" | B0
| align="center" | –| align="center" | —| align="center" | “| align="center" | ”| align="center" | ‘| align="center" | ’| align="center" | ÷&divide;| align="center" | â—Š&#9674;| align="center" | ÿ&yuml;| align="center" | ŸŸ| align="center" | ⁄&#8260;| align="center" | ¤&curren;| align="center" | ‹| align="center" | ›| align="center" | fi&#64257;| align="center" | fl&#64258;
|-
! style="background:rgb(204,204,204)" | C0
| align="center" | ■&#9632; | align="center" | ▪&#9642;| align="center" | ‚| align="center" | „| align="center" | ‰| align="center" | Â&Acirc;| align="center" | Ê&Ecirc;| align="center" | Á&Euml;| align="center" | Ë&Aacute;| align="center" | È&Egrave;| align="center" | í&iacute;| align="center" | î&icirc;| align="center" | ï&iuml;| align="center" | ì&igrave;| align="center" | Ó&Oacute;| align="center" | Ô&Ocirc;
|-
! style="background:rgb(204,204,204)" | D0
| align="center" | {SPACE}
| align="center" | Ò&Ograve;| align="center" | Ù&Ugrave;| align="center" | Û&Ucirc;
|
|
| align="center" | {Party&nbsp;#2}
| align="center" | {Party&nbsp;#3}
| 〇align="center" | &#12295;| △align="center" | &#9651;| ☐align="center" | &#9744;| ✕align="center" | &#10005;
|
=== Battle Text within the KERNEL.BIN ===
Sections 10-17 and 26 of the [[FF7/Kernel/Kernel.bin|KERNEL.BIN]] are encoded differently than the rest of the text data. An Several other values have additional functions: '''EA - F0''': These are variable position markers used in the Battle Text section (25) of KERNEL.BIN. These will only appear in specific texts and should only be used in those texts. These tell the battle engine that when a title needs to be displayed that certain values need to be inserted into the string. These are always followed by two NULL pointers (FFFFh). EA: Name of a CharacterEB: Name of an ItemEC: NumberED: Name of the TargetEF: Name of AttackFO: Target's Letter (for enemies) Example S t o l e X ! 33 54 4F 4C 45 00 EB FF FF 01 FF The battle engine will replace the "EB FF FF" with the name of the item at the index passed to it. '''F8''': This appears at the beginning of a text. It tells the battle engine that the next byte serves as will determine the color of the box the text is to be displayed in. 02h is the only one used and it displays a function:red box associated with Limit Breaks.
'''F9''': This is an encoding technique designed to make the raw data smaller. It is based on the LZS compression method, but optimized for smaller files with fewer large similar blocks. A byte following this value will tell the game's memory the location of, and how much, text to read. The byte is set up like this:
In binary:
YYXXXXXX