Type chart data structure in Generation III

Specs
The type chart in the Generation III Pokémon games are stored in a 336 byte data structure. The data structure consists of 112 3-byte entries, all of which use the following format:

Types
Types are enumerated like this:

Effectiveness
Normally effective attacks, such as Bug on Normal are not listed in the table.

Foresight and Odor Sleuth
Near the end of the data structure, there are three bytes that signal the end of the normal part of the table - FE FE 00. There are only two entries after this, and they are Fighting and Normal on Ghost, respectively.

However, this area of the table is unique in that all entries in it are ignored after or  is used, simply reverting to normal damage.

The end of the table is marked with FF FF 00.

Fingerprint
00 05 05 // Normal -> Rock     (Not very effective) 00 08 05 // Normal -> Steel    (Not very effective) 0A 0A 05 // Fire   -> Fire     (Not very effective) 0A 0B 05 // Fire   -> Water    (Not very effective) 0A 0C 14 // Fire   -> Grass    (Super effective) 0A 0F 14 // Fire   -> Ice      (Super effective) 0A 06 14 // Fire   -> Bug      (Super effective) 0A 05 05 // Fire   -> Rock     (Not very effective) 0A 10 05 // Fire   -> Dragon   (Not very effective) 0A 08 14 // Fire   -> Steel    (Super effective) 0B 0A 14 // Water  -> Fire     (Super effective)