LIP File Format

A description of the LIP File Format v2 used in Fallout 2.

About
This document will describe the internals of the .LIP format (version 2) used in the Fallout 2 engine. This information was obtained through the analysis of the corresponding functions found in Fallout2.exe

1. FRM files: The Talking Heads
The name of the files used for graphical conversation takes the following form.

RootSuffix1Suffix2[Sufix3].frm

Where:

Root - Root file name eg. “ELDER” (5 characters)

Suffix1 - 1st suffix, indicates disposition (1 character)

Suffix2 - 2nd suffix, indicates file contents (1 character)

Suffix3 - 3rd suffix, indicates index number for fidget files (usually 1 character but theoretically could be more if you had over 9 fidget files)

The first suffix indicates that the graphics in this .FRM file have a certain disposition. G is good, B is bad, N is neutral. The second suffix indicates what type of animation is contained in the file, transition, fidgeting or phonemes. Transition animations show a person moving from one disposition to another. Fidgeting animations show the character blinking or nodding or something. Phoneme animations contain 9 possible positions for the characters mouth to be in. These are the ones that are used within the .LIP file format.

The possible values and their meanings for the suffixes are given in table 1.1

Table 1.1 – Values of suffix1, suffix2, suffix3 and their purpose.

Example
NOTE: The maximum values for the fidget file numbers (suffix3) are determined in the “heads.lst” file (in /data/art/heads). This file is formatted as such: ROOT X, Y, Z Where ROOT is the root filename, X is the number of “good” fidget files, Y is the number of “neutral” fidget files and Z is the number of “bad” fidget files.

Example Root file name: myron.


 * Phoneme files (with suffix3 == ‘p’) must have at least 9 frames. There can be more, but the engine will only use the first 9.
 * The game engine will play a random fidget file at the end of each speech segment which corresponds to the current disposition.

2. LIP File Format ver. 2
NOTE 1: MARKER-TYPE-0 must have value 0x00000001, and MARKER-SAMPLE-0 must have 0x00000000.

NOTE 2: The offset code can be calculated by taking the time stamp that a phoneme appears in the audio   file and multiplying it by 4X the sample rate (22,100Hz). Example: If a 'B' sound appears at 2.13s into an audio recording, this would come out to 2.13 x 4 x 22100 = 203,320. In hex, this is 0x00031A38, which would be the value of the MARKER-SAMPLE for that phoneme.

NOTE 3: The MARKER-TYPE fields are used for noting if the given phoneme in the sequence is either A) silence (like at the beginning and end of the file) or B) the start of the word. Where both A and B would be encoded with 0x00000001. If the phoneme appears in the middle of a word, it is just 0x00000000. These values don't appear to be meaningful in the talking head playback.

Table 2.1 – Phoneme codes
** Rarely / Unused phoneme codes yet to be documented.

External

 * Author: Anchorite, Black_Electric
 * The author wishes to thank Abel for his input about the ACM file format.
 * English Translation: phro