Family Feud Question Format

From ModdingWiki
Jump to navigation Jump to search
Family Feud Question Format
Format typeText
Text purposeStory
Line endingsCRLF
Character setASCII
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!)