The vertex/normal indices are not swapped.
There are some models that include matrix indices in their vertex attribute definitions. These one-byte indices come before the vertex and matrix attributes so the vertex index etc. simply come later in the display list entries.
In MP1/2 the attribute definition value comes after the the texture index array in the Material Groups. You have probably seen the value of the form: 0x00003F0F.
In MP3 the attribute definition value comes at offset 0x0C in the Material Group data.
They work mostly the same, but there is a slight difference with MP2/MP3.
For MP1 all 4 bytes are actually separate 2-bit "presence" indicators specifying which elements have indices in the vertex attribute definitions. They come in the standard order that values for vertex attributes are defined:
position, normal, color0, color1, Tex0-7, etc.
The value is either 3 or 0 to indicate included or excluded in the vertex attribute definition respectively.
MP2/MP3 are the same as MP1, but only for the first 3 bytes, and they are now actual attribute data type specifiers: 3 - uint16 index, 2 - uint8 index, or not present.
The 4th byte is treated as (8) 1-bit indicators. Have not determined the order for these yet, but they are the reason some of the meshes do not show with the former code. These one-byte indices appear first in the vertex attribute entries in the display lists.