Beispiel #1
0
        EmArray GetArray(int offset)
        {
            int data_offset = m_data[offset] - 10;
            var array       = new EmArray {
                Count      = GetInteger(offset, 0xC),
                ElemSize   = m_data[offset + data_offset - 1] - 12,
                DataOffset = offset + data_offset,
            };

            array.ArraySize = array.Count * array.ElemSize + data_offset;
            return(array);
        }
Beispiel #2
0
        int GetArrayElem(EmArray a1, int index)
        {
            int offset = index * a1.ElemSize;

            switch (a1.ElemSize)
            {
            case 1:
                return(m_data[a1.DataOffset + offset]);

            case 2:
                return(LittleEndian.ToUInt16(m_data, a1.DataOffset + offset));

            case 3:
                return(LittleEndian.ToUInt16(m_data, a1.DataOffset + offset) | m_data[a1.DataOffset + offset + 2] << 16);

            case 4:
                return(LittleEndian.ToInt32(m_data, a1.DataOffset + offset));

            default:
                throw new InvalidFormatException("Invalid PSB array structure");
            }
        }