Games can be played for lengths of 2 to 5 minutes in full minute increments.
The top 10 scores are maintained for each combination of scoring method used and game length.
The format of the dict.pdb file is fairly straightforward. Record 0 is an index record containing all the 3 letter prefixes for all words in the dictionary. For example, the first entry in record 0 is aar, for aardvark. The index position of each 3 letter prefix (i.e. the actual offset in the record divided by 3) corresponds to one less than the record number of that section of the dictionary. So all words starting with aar are located in record 1 of the dictionary.
Records 1 through the end of the pdb comprise the dictionary itself. Each record follows a rather bizarre encoding scheme that I designed to optimally efficient for the on-the-fly decompression needed by the word lookups. Firstly, each letter is lower case but is not stored as ASCII but by the the ASCII code minus 'a' to make the codes 0 based. This means each letter only occupies 5 bits in a byte. The upper 3 bits of each first byte in a word indicate the compression length used from the previous word in the dictionary. This is best illustrated by example:
(All numbers given are hex) aardvark = 0,0,11,03,15,00,11,0a
aardvarks = d2
The upper 3 bits of the first byte in a word are the number of chars to copy from the previous word minus 2. Values of 0 and 7 are reserved, 0 indicating that the byte is simply a letter in the word and 7 indicating that this word copies no letters from the previous word. That leaves a copy range of from 3 to 8 letters, which yield values of 1 to 6 in the upper 3 bits. This technique allows the beginning of a word to be recognized by the fact that the upper 3 bits will have a non-zero value, while all remaining letters in a word will have a 0 value in the upper 3 bits. Each record (not word) is terminated by a ff.
I know this compression technique can be improved upon but it yields a compression ratio of about 3.1 to 1, and with the help of record 0 the lookups are very fast.