Esempio n. 1
0
        public void Set(int size, int channels)
        {
            RuintList *list;
            VoidPtr    offset     = _entries.Address;
            int        dataOffset = 0x60 + (channels * 8);

            _tag  = Tag;
            _size = size;

            //Set entry offsets
            _entries.Entries[0] = 0x18;
            _entries.Entries[1] = 0x4C;
            _entries.Entries[2] = 0x5C;

            //Audio info
            //HEADPart1* part1 = Part1;

            //Set single channel info
            list = Part2;
            list->_numEntries._data = 1; //Number is little-endian
            list->Entries[0]        = 0x58;
            *(AudioFormatInfo *)list->Get(offset, 0) = new AudioFormatInfo(2, 0, 1, 0);

            //Set adpcm infos
            list = Part3;
            list->_numEntries._data = channels; //little-endian
            for (int i = 0; i < channels; i++)
            {
                //Set initial pointer
                list->Entries[i] = dataOffset;

                //Set embedded pointer
                *(ruint *)(offset + dataOffset) = dataOffset + 8;
                dataOffset += 8;

                //Set info
                //*(ADPCMInfo*)(offset + dataOffset) = info[i];
                dataOffset += ADPCMInfo.Size;

                //Set padding
                //*(short*)(offset + dataOffset) = 0;
                //dataOffset += 2;
            }

            //Fill remaining
            int *p = (int *)(offset + dataOffset);

            for (dataOffset += 8; dataOffset < size; dataOffset += 4)
            {
                *p++ = 0;
            }
        }
Esempio n. 2
0
 public void Set(int length)
 {
     _tag    = Tag;
     _length = length;
     _pad1   = _pad2 = 0;
 }