The GFF file format didn't have a whole lot to say about the Field Indice Array, they simply put it this way.
3.7. Field Indices
A Field Index is a DWORD containing the index of the associated Field within the Field array.
The Field Indices Array is an array of such DWORDs.
This means that when the structure has a FieldCount >1, we are looking for an array of dword indices located at:
FieldIndiceArray = Header.FieldIndicesOffset + Struct[n].Data with Struct[n].FieldCount number of entries.
The Offest to FieldindiceArray[n] would be Header.FieldIndicesOffset + Struct[n].Data +(n *4)
In the .bic file we have been looking we have
FieldIndicesOffset = 0x0000_11E9
and
Struct[0].Data = 0x0000_0000 byte offset into the Field Indices array
Struct[0].FieldCount= 0x0000_0042 Number of fields in this Struct.
This Will place our array with 0x042 bytes starting at an offset of 0x11E9 bytes from the begining of the file.
Here it is in xvi32 with an alternating highlight on the DWORDs
The values of the first three indices are.
FieldindiceArray[0] = 0x0000_0000
FieldindiceArray[1] = 0x0000_0001
FieldindiceArray[2] = 0x0000_0002
now we look at the Field array. You may be happy to know that it finally leads to some real data. Well sometimes.
now to look at it in our bic file. we want to find field indice 1,2 and three. From the discription above we know that that every field contains three dwords. This means that our field indices will be 0x0C bytes apart.
so the offset for field[n] is Header.FieldOffset + (n*0x0C)
So we have
Field[0] = 0x0458 offset.
Field[1] = 0x0464 offset
...
Field[2] = 0x047C offset.
Field[0].Type = 0x0C or 12 CExoLocString
Field[0].Lable = 0x00 indice into the lable array
Field[0].Data = 0x00 since the CExoLocString is complex this is an offset into the data block
Field[1].Type = 0x0C or 12 CExoLocString
Field[1].Lable = 0x01 indice into the lable array
Field[1].Data = 0x18 since the CExoLocString is complex this is an offset into the data block
...
Field[3].Type = 0x04 or 4 dword
Field[3].Lable = 0x03 indice into the lable array
Field[3].Data = 0x14 a Dword is not complex so this is the data
.... To be continued...