Esempio n. 1
0
    public static void VIB_init(BinaryReader reader)
    {
        try
        {
            VIB_DEF value = default(VIB_DEF);
            value.magic       = (UInt16)reader.ReadInt16();
            value.fps         = (UInt16)reader.ReadInt16();
            value.trackCount  = (UInt16)reader.ReadInt16();
            value.trackOffset = (UInt16)reader.ReadInt16();
            Int32           trackCount = (Int32)value.trackCount;
            VIB_TRACK_DEF[] array      = new VIB_TRACK_DEF[trackCount];
            for (Int32 i = 0; i < trackCount; i++)
            {
                reader.BaseStream.Seek((Int64)((Int32)value.trackOffset + i * 12), SeekOrigin.Begin);
                array[i]                 = default(VIB_TRACK_DEF);
                array[i].sampleFlags     = new UInt16[2];
                array[i].sampleCount     = new UInt16[2];
                array[i].sampleOffset    = new UInt16[2];
                array[i].sampleFlags[0]  = (UInt16)reader.ReadInt16();
                array[i].sampleFlags[1]  = (UInt16)reader.ReadInt16();
                array[i].sampleCount[0]  = (UInt16)reader.ReadInt16();
                array[i].sampleCount[1]  = (UInt16)reader.ReadInt16();
                array[i].sampleOffset[0] = (UInt16)reader.ReadInt16();
                array[i].sampleOffset[1] = (UInt16)reader.ReadInt16();
            }
            Byte[][][] array2 = new Byte[trackCount][][];
            for (Int32 j = 0; j < trackCount; j++)
            {
                VIB_TRACK_DEF vib_TRACK_DEF = array[j];
                array2[j] = new Byte[2][];
                Int32 count = (Int32)vib_TRACK_DEF.sampleCount[(Int32)vib.VIB_SAMPLE_LO];
                Int32 num   = (Int32)vib_TRACK_DEF.sampleOffset[(Int32)vib.VIB_SAMPLE_LO];
                reader.BaseStream.Seek((Int64)num, SeekOrigin.Begin);
                array2[j][0] = reader.ReadBytes(count);
                count        = (Int32)vib_TRACK_DEF.sampleCount[(Int32)vib.VIB_SAMPLE_HI];
                num          = (Int32)vib_TRACK_DEF.sampleOffset[(Int32)vib.VIB_SAMPLE_HI];
                reader.BaseStream.Seek((Int64)num, SeekOrigin.Begin);
                array2[j][1] = reader.ReadBytes(count);
            }
            vib.Parms.vibPtr    = new VIB_DEF?(value);
            vib.Parms.tracks    = array;
            vib.Parms.frameData = array2;
        }
        catch (Exception message)
        {
            global::Debug.LogError(message);
        }
        finally
        {
            reader.Close();
        }
        vib.Parms.statusFlags = (UInt16)vib.VIB_STATUS_INIT;
        vib.Parms.frameRate   = 256;
        vib.Parms.frameNdx    = 0;
        vib.Parms.frameStart  = 0;
        UInt32 num2 = vib.VIB_computeFrameCount();

        vib.Parms.frameStop = (Int16)(num2 - 1u);
        vib.VIB_initSamples();
    }
Esempio n. 2
0
 public static VIB_TRACK_DEF VIB_TRACK_PTR(VIB_DEF vibPtr, Int32 ndx, BinaryReader reader = null)
 {
     if (reader != null)
     {
         reader.BaseStream.Seek((Int64)((Int32)vibPtr.trackOffset + ndx), SeekOrigin.Begin);
     }
     return(vib.Parms.tracks[ndx]);
 }
Esempio n. 3
0
 public static void VIB_TRACK_HEAD(VIB_DEF vibPtr, Int32 ndx, BinaryReader reader = null)
 {
     vib.VIB_TRACK_PTR(vibPtr, 0, reader);
 }
Esempio n. 4
0
    public static void VIB_service()
    {
        if ((vib.Parms.statusFlags & (UInt16)vib.VIB_STATUS_INIT) == 0)
        {
            return;
        }
        if (PersistenSingleton <UIManager> .Instance.IsPause)
        {
            return;
        }
        VIB_DEF?vibPtr = vib.Parms.vibPtr;

        if (vibPtr == null)
        {
            return;
        }
        if ((vib.Parms.statusFlags & (UInt16)vib.VIB_STATUS_ACTIVE) != 0 && (vib.Parms.statusFlags & (UInt16)(vib.VIB_STATUS_LOOP | vib.VIB_STATUS_PLAY_SET)) != 0)
        {
            VIB_DEF value = vib.Parms.vibPtr.Value;
            Int32   num   = 0;
            Int32   num2  = 0;
            Int32   num3  = vib.Parms.frameNdx >> 8;
            for (Int32 i = 0; i < (Int32)value.trackCount; i++)
            {
                VIB_TRACK_DEF vib_TRACK_DEF = vib.Parms.tracks[i];
                if ((vib_TRACK_DEF.sampleFlags[(Int32)vib.VIB_SAMPLE_LO] & (UInt16)vib.VIB_SAMPLE_ACTIVE) != 0 && num3 < (Int32)vib_TRACK_DEF.sampleCount[(Int32)vib.VIB_SAMPLE_LO])
                {
                    num += (Int32)vib.Parms.frameData[i][(Int32)vib.VIB_SAMPLE_LO][num3];
                }
                if ((vib_TRACK_DEF.sampleFlags[(Int32)vib.VIB_SAMPLE_HI] & (UInt16)vib.VIB_SAMPLE_ACTIVE) != 0 && num3 < (Int32)vib_TRACK_DEF.sampleCount[(Int32)vib.VIB_SAMPLE_HI])
                {
                    num2 += (Int32)vib.Parms.frameData[i][(Int32)vib.VIB_SAMPLE_HI][num3];
                }
            }
            if (num > 255)
            {
                num = 255;
            }
            if (num2 > 127)
            {
                num2 = 1;
            }
            if ((FF9StateSystem.Settings.cfg.vibe == (UInt64)FF9CFG.FF9CFG_VIBE_ON || PersistenSingleton <FF9StateSystem> .Instance.mode == 5) && (num > 0 || num2 > 0))
            {
                vib.VIB_actuatorSet(0, (Single)num2 / 255f, (Single)num / 255f);
                if (PersistenSingleton <FF9StateSystem> .Instance.mode == 2)
                {
                    vib.VIB_actuatorSet(1, (Single)num2 / 255f, (Single)num / 255f);
                }
            }
            vib.Parms.frameNdx = vib.Parms.frameNdx + (Int32)vib.Parms.frameRate;
            if (vib.Parms.frameNdx >> 8 > (Int32)vib.Parms.frameStop)
            {
                if ((vib.Parms.statusFlags & (UInt16)vib.VIB_STATUS_WRAP) != 0)
                {
                    vib.Parms.frameNdx = (Int32)vib.Parms.frameStop << 8;
                    vib.VIB_setFrameRate((Int16)(-vib.Parms.frameRate));
                }
                else
                {
                    vib.Parms.frameNdx = (Int32)vib.Parms.frameStart << 8;
                }
                vib.Parms.statusFlags = (UInt16)(vib.Parms.statusFlags & (UInt16)(~(UInt16)vib.VIB_STATUS_PLAY_SET));
                if ((vib.Parms.statusFlags & (UInt16)vib.VIB_STATUS_LOOP) == 0)
                {
                    vib.VIB_actuatorReset(0);
                    vib.VIB_actuatorReset(1);
                    vib.Parms.statusFlags = (UInt16)(vib.Parms.statusFlags & (UInt16)(~(UInt16)vib.VIB_STATUS_ACTIVE));
                }
            }
            if (vib.Parms.frameNdx >> 8 < (Int32)vib.Parms.frameStart)
            {
                if ((vib.Parms.statusFlags & (UInt16)vib.VIB_STATUS_WRAP) != 0)
                {
                    vib.Parms.frameNdx = (Int32)vib.Parms.frameStart << 8;
                    vib.VIB_setFrameRate((Int16)(-vib.Parms.frameRate));
                }
                else
                {
                    vib.Parms.frameNdx = (Int32)vib.Parms.frameStop << 8;
                }
                vib.Parms.statusFlags = (UInt16)(vib.Parms.statusFlags & (UInt16)(~(UInt16)vib.VIB_STATUS_PLAY_SET));
                if ((vib.Parms.statusFlags & (UInt16)vib.VIB_STATUS_LOOP) == 0)
                {
                    vib.VIB_actuatorReset(0);
                    vib.VIB_actuatorReset(1);
                    vib.Parms.statusFlags = (UInt16)(vib.Parms.statusFlags & (UInt16)(~(UInt16)vib.VIB_STATUS_ACTIVE));
                }
            }
        }
    }