Family Feud Question Format
Format type | Text |
---|---|
Text purpose | Story |
Line endings | CRLF |
Character set | ASCII |
Games |
The questions and answers are stored in a primarily text-based file with a few binary values. Files use a *.FF extension and are numbered. Each file is prefixed with "QS" for face-off questions and "FQ" for fast money questions used in the final round. Line are separated by carriage return and line feed. Each line is encrypted with ROT-33, but the CRLF are never encrypted.
The game uses a special syntax for answers. Lowercase letters act as wildcards for potential misspellings, tildes allow groups of answers to work for a single answer, and the plus sign allows for multiple words or word forms per answer.
File format
Each file has exactly 10 questions. There will be 1-12 answers per question.
Data type | Description |
---|---|
char[...] Question | The question. Terminates with 0x0D 0x0A. |
UINT8 Prefix | The prefix of the question (see below). |
UINT8 Number of answers | The number of answers for this question. Each answer is prefixed with a percentage. |
UINT8 Percentage | The percentage of people who gave this answer (1-99). |
char[...] Answer | An answer. Terminates with 0x0D 0x0A. |
Prefixes are applied when the game runs. They are:
Value | Text |
---|---|
0 | No prefix |
1 | NAME THE |
2 | NAME SOMETHING |
3 | NAME A |
4 | NAME AN |
5 | TELL ME |
Encryption
In order to prevent tampering, the Q&A files are encoded with a variation of ROT13 (AKA the Caesar Cypher). The ASCII value of the plaintext is increased by 33 to get the ciphertext, except for the carriage return line feed separators. To decrypt the text, subtract 33 from the ASCII value, to encrypt, add 33 to the ASCII value.
Source Code
Decryption
This C# code will deccrypt any string extracted from an *.FF file.
public string Decode(string encodedText)
{
string decodedText = "";
for (int i = 0; i < encodedText.Length; i++)
{
byte character = (byte)encodedText[i];
character -= 33;
decodedText += ((char)character).ToString();
}
return decodedText;
}
Credits
This file format was documented by TheAlmightyGuru and CTPAX-X Team. If you find this information helpful in a project you're working on, please give credit where credit is due. (A link back to this wiki would be nice too!)