Ejemplo n.º 1
0
 public sunSpcBinary(Stream output)
 {
     mWriter       = new aBinaryWriter(output, Endianness.Big, Encoding.GetEncoding(932));
     mText         = new sunSpcBinarySection();
     mData         = new sunSpcBinarySection();
     mDataString   = new sunSpcBinarySection();
     mSymbol       = new sunSpcBinarySection();
     mSymbolString = new sunSpcBinarySection();
     mWriter.PushAnchor();
 }
Ejemplo n.º 2
0
        void WriteWaveBank()
        {
            var winfSize   = CalculateControlSize(mWaveBank.Count);
            var wbctSize   = CalculateControlGroupSize(mWaveBank.Count);
            var baseOffset = (32 + winfSize + wbctSize);

            mWriter.PushAnchor();

            mWriter.Write32(WSYS);
            mWriter.WriteS32(0);             // TODO: size
            mWriter.WriteS32(0);             // unused
            mWriter.WriteS32(0);             // unused
            mWriter.WriteS32(32);
            mWriter.WriteS32(32 + winfSize);
            mWriter.WritePadding(32, 0);

            mWriter.Write32(WINF);
            mWriter.WriteS32(mWaveBank.Count);

            var winfOffset = baseOffset;

            foreach (var waveGroup in mWaveBank)
            {
                mWriter.WriteS32(winfOffset);
                winfOffset += CalculateWaveGroupSize(waveGroup);
            }

            mWriter.WritePadding(32, 0);

            mWriter.Write32(WBCT);
            mWriter.WriteS32(0);             // unused
            mWriter.WriteS32(mWaveBank.Count);

            var wbctOffset = baseOffset;

            foreach (var waveGroup in mWaveBank)
            {
                mWriter.WriteS32(wbctOffset + CalculateArchiveInfoSize(waveGroup.Count) + CalculateWaveSize(waveGroup.Count) + CalculateControlSize(waveGroup.Count) + 64);
                wbctOffset += CalculateWaveGroupSize(waveGroup);
            }

            mWriter.WritePadding(32, 0);

            foreach (var waveGroup in mWaveBank)
            {
                WriteWaveGroup(waveGroup);
            }

            mWriter.PopAnchor();
        }
Ejemplo n.º 3
0
        void WriteWaveBank()
        {
            mWriter.PushAnchor();

            mWriter.WriteString("RIFF");
            mWriter.WriteS32(CalculateInfoSize() + 8 + CalculateSmplSize() + 20 + CalculatePdtaSize() + 8 + 4);
            mWriter.WriteString("sfbk");

            WriteInfo();

            WriteSdta();

            WritePdta();

            mWriter.PopAnchor();
        }