コード例 #1
0
 public void Write(FileOutput o)
 {
     o.writeInt((int)TagType.RemoveObject);
     o.writeInt(2);
     o.writeInt(Unk1);
     o.writeShort(Depth);
     o.writeShort(Unk2);
 }
コード例 #2
0
        public void ExportBNTX(string filename)
        {
            FileOutput o = new FileOutput();

            o.Endian = Endianness.Little;

            o.save(filename);
        }
コード例 #3
0
            public void Write(FileOutput o)
            {
                Console.WriteLine($"unk_{(int)Type:X4} (size=0x{Size * 4:X4}) // offset=0x{o.size():X2}\n");

                o.writeInt((int)Type);
                o.writeInt(Size);
                o.writeBytes(Data);
            }
コード例 #4
0
 public void Write(FileOutput o)
 {
     o.writeInt((int)TagType.FrameLabel);
     o.writeInt(3);
     o.writeInt(NameId);
     o.writeInt(StartFrame);
     o.writeInt(Unk1);
 }
コード例 #5
0
ファイル: FileOutput.cs プロジェクト: aelanx/Smash-Forge
 public void WriteOffset(int i, FileOutput fo)
 {
     Offsets.Add(new RelocOffset()
     {
         Value = i, output = fo, Position = data.Count
     });
     writeInt(i);
 }
コード例 #6
0
        public void save(FileOutput f)
        {
            base.save(f);

            f.writeByte(1);
            f.writeFloat(x);
            f.writeFloat(y);
        }
コード例 #7
0
        public override void Save()
        {
            FileOutput o = new FileOutput();

            byte[] n = Lumen.Rebuild();
            o.writeBytes(n);
            o.save(Lumen.Filename);
        }
コード例 #8
0
        public DRP(string fname)
        {
            Text = Path.GetFileNameWithoutExtension(fname);
            var o = new FileOutput();

            o.writeBytes(Decrypt(new FileData(fname)));
            o.save(fname + "_dec");
            Read(new FileData(Decrypt(new FileData(fname))));
        }
コード例 #9
0
ファイル: LVD.cs プロジェクト: Blazingflare/Smash-Forge
        public void save(FileOutput f)
        {
            base.save(f);

            f.writeByte(1);
            f.writeFloat(left);
            f.writeFloat(right);
            f.writeFloat(top);
            f.writeFloat(bottom);
        }
コード例 #10
0
 public void Write(FileOutput file)
 {
     file.writeInt((int)hash);
     file.writeShort(type);
     file.writeShort(frame);
     file.writeShort(unk1);
     file.writeShort(unk2);
     file.writeShort(unk3);
     file.writeShort(unk4);
 }
コード例 #11
0
ファイル: LVD.cs プロジェクト: Blazingflare/Smash-Forge
        public void save(FileOutput f)
        {
            base.save(f);

            f.writeByte(1);
            f.writeFloat(pos.x);
            f.writeFloat(pos.y);
            f.writeFloat(angle.x);
            f.writeFloat(angle.y);
        }
コード例 #12
0
ファイル: Texlist.cs プロジェクト: y4my4my4m/Smash-Forge
        public override byte[] Rebuild()
        {
            FileOutput buf = new FileOutput();

            buf.Endian = Endianness.Little;

            var flagsOffset   = 0x10;
            var entriesOffset = flagsOffset + (atlases.Count * 4);
            var stringsOffset = entriesOffset + (textures.Count * 0x20);

            buf.writeInt(0x544C5354); // TLST
            buf.writeShort(0);        // idk
            buf.writeShort((short)atlases.Count);
            buf.writeShort((short)textures.Count);
            buf.writeShort((short)flagsOffset);
            buf.writeShort((short)entriesOffset);
            buf.writeShort((short)stringsOffset);

            // flags
            foreach (var flag in atlases)
            {
                buf.writeInt((int)flag);
            }

            // entries
            int namePtr = 0;

            foreach (var texture in textures)
            {
                buf.writeInt(namePtr);
                buf.writeInt(namePtr);
                namePtr += texture.name.Length + 1;

                buf.writeFloat(texture.topLeft.X);
                buf.writeFloat(texture.topLeft.Y);
                buf.writeFloat(texture.botRight.X);
                buf.writeFloat(texture.botRight.Y);

                buf.writeShort(texture.width);
                buf.writeShort(texture.height);
                buf.writeShort(texture.atlasId);
                buf.writeShort(0); // pad
            }

            //strings
            foreach (var texture in textures)
            {
                buf.writeString(texture.name);
                buf.writeByte(0);
            }

            buf.writeByte(0);

            return(buf.getBytes());
        }
コード例 #13
0
        public void SaveAs(object sender, EventArgs args)
        {
            if (Runtime.TargetVBN == null)
            {
                MessageBox.Show("You must have a bone-set (VBN) selected to save animations.");
                return;
            }
            using (var sfd = new SaveFileDialog())
            {
                sfd.Filter = "Supported Files (.omo, .anim, .smd)|*.omo;*.anim;*.smd|" +
                             "Maya Anim (.anim)|*.anim|" +
                             "Object Motion (.omo)|*.omo|" +
                             "Source Animation (.smd)|*.smd|" +
                             "All Files (*.*)|*.*";

                sfd.DefaultExt = "smd"; //Set a default extension to prevent crashing if not specified by user
                if (sfd.ShowDialog() == DialogResult.OK)
                {
                    sfd.FileName = sfd.FileName;

                    if (sfd.FileName.EndsWith(".anim"))
                    {
                        if (Tag is AnimTrack)
                        {
                            ((AnimTrack)Tag).createANIM(sfd.FileName, Runtime.TargetVBN);
                        }
                        else
                        {
                            ANIM.CreateANIM(sfd.FileName, this, Runtime.TargetVBN);
                        }
                    }

                    if (sfd.FileName.EndsWith(".omo"))
                    {
                        if (Tag is FileData)
                        {
                            FileOutput o = new FileOutput();
                            o.writeBytes(((FileData)Tag).getSection(0,
                                                                    ((FileData)Tag).size()));
                            o.save(sfd.FileName);
                        }
                        else
                        {
                            File.WriteAllBytes(sfd.FileName, OMOOld.CreateOMOFromAnimation(this, Runtime.TargetVBN));
                        }
                    }


                    if (sfd.FileName.EndsWith(".smd"))
                    {
                        SMD.Save(this, Runtime.TargetVBN, sfd.FileName);
                    }
                }
            }
        }
コード例 #14
0
        public void SaveAs(object sender, EventArgs args)
        {
            if (Runtime.TargetVBN == null)
            {
                MessageBox.Show("You must have a bone set (VBN) open before saving animations");
                return;
            }
            using (var sfd = new SaveFileDialog())
            {
                sfd.Filter = "Supported Files (.omo, .anim, .smd)|*.omo;*.anim;*.smd|" +
                             "Maya Anim (.anim)|*.anim|" +
                             "Object Motion (.omo)|*.omo|" +
                             "Source Animation (.smd)|*.smd|" +
                             "All Files (*.*)|*.*";

                if (sfd.ShowDialog() == DialogResult.OK)
                {
                    sfd.FileName = sfd.FileName;

                    if (sfd.FileName.EndsWith(".anim"))
                    {
                        if (Tag is AnimTrack)
                        {
                            ((AnimTrack)Tag).createANIM(sfd.FileName, Runtime.TargetVBN);
                        }
                        else
                        {
                            ANIM.CreateANIM(sfd.FileName, this, Runtime.TargetVBN);
                        }
                    }

                    if (sfd.FileName.EndsWith(".omo"))
                    {
                        if (Tag is FileData)
                        {
                            FileOutput o = new FileOutput();
                            o.writeBytes(((FileData)Tag).getSection(0,
                                                                    ((FileData)Tag).size()));
                            o.save(sfd.FileName);
                        }
                        else
                        {
                            OMOOld.CreateOMOFromAnimation(this, Runtime.TargetVBN);
                        }
                    }


                    if (sfd.FileName.EndsWith(".smd"))
                    {
                        SMD.Save(this, Runtime.TargetVBN, sfd.FileName);
                    }
                }
            }
        }
コード例 #15
0
        public void Write(FileOutput file)
        {
            file.writeShort(unk1);
            file.writeShort(events.Count);
            file.writeShort(unk2);
            file.writeShort(unk3);

            for (int i = 0; i < events.Count; ++i)
            {
                events[i].Write(file);
            }
        }
コード例 #16
0
ファイル: MBN.cs プロジェクト: thuskey/Smash-Forge
            public void WriteDescription(FileOutput f)
            {
                // TODO: Calculate Length
                f.writeInt(type.Length);

                for (int i = 0; i < type.Length; i++)
                {
                    f.writeInt(type[i]);
                    f.writeInt(format[i]);
                    f.writeFloat(scale[i]);
                }
            }
コード例 #17
0
ファイル: LVD.cs プロジェクト: struz/Smash-Forge
 public override void save(FileOutput f)
 {
     f.writeHex("010401017735BB750000000201");
     f.writeChars(name.PadRight(0x38).ToCharArray());
     f.writeByte(1);
     f.writeChars(subname.PadRight(0x40).ToCharArray());
     f.writeHex("0100000000000000000000000000010000000001000000000000000000000000FFFFFFFF010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001014C800203");
     f.writeInt(type);
     f.writeFloat(x);
     f.writeFloat(y);
     f.writeHex("0000000000000000010100000000");
 }
コード例 #18
0
ファイル: LVD.cs プロジェクト: Blazingflare/Smash-Forge
        public void save(FileOutput f)
        {
            base.save(f);

            f.writeByte(1);
            f.writeInt(type);

            f.writeFloat(x);
            f.writeFloat(y);
            f.writeFloat(z);
            f.writeHex("00000000000000000000000000000000");
        }
コード例 #19
0
        public override byte[] Rebuild()
        {
            FileOutput o = new FileOutput();

            o.Endian = Endianness.Little;

            o.writeString(" BWS");
            o.writeShort(0x05);
            o.writeShort(0x01);
            o.writeInt(bones.Count);

            foreach (SBEntry s in bones)
            {
                o.writeInt((int)s.hash);
                o.writeFloat(s.param1_1);
                o.writeInt(s.param1_2);
                o.writeInt(s.param1_3);
                o.writeFloat(s.param2_1);
                o.writeFloat(s.param2_2);
                o.writeInt(s.param2_3);
                o.writeFloat(s.rx1);
                o.writeFloat(s.rx2);
                o.writeFloat(s.ry1);
                o.writeFloat(s.ry2);
                o.writeFloat(s.rz1);
                o.writeFloat(s.rz2);

                for (int j = 0; j < 8; j++)
                {
                    o.writeInt((int)s.boneHashes[j]);
                }

                for (int j = 0; j < 4; j++)
                {
                    o.writeFloat(s.unks1[j]);
                }

                for (int j = 0; j < 6; j++)
                {
                    o.writeFloat(s.unks2[j]);
                }

                o.writeFloat(s.factor);

                for (int j = 0; j < 3; j++)
                {
                    o.writeInt(s.ints[j]);
                }
            }

            return(o.getBytes());
        }
コード例 #20
0
        public void save(FileOutput f)
        {
            f.writeHex("0103");

            f.writeInt(type);
            f.writeFloat(x);
            f.writeFloat(y);
            f.writeFloat(z);
            f.writeFloat(unk);

            f.writeHex("0101");
            f.writeInt(0);
        }
コード例 #21
0
ファイル: VBN.cs プロジェクト: Super4ng/Smash-Forge
        public override byte[] Rebuild()
        {
            FileOutput file = new FileOutput();
            if (file != null)
            {
                
                if (Endian == Endianness.Little) {
                    file.Endian = Endianness.Little;
                    file.writeString(" NBV");
                }
                if (Endian == Endianness.Big) {
                    file.Endian = Endianness.Big;
                    file.writeString("VBN ");
                }

                file.writeShort(0x01);
                file.writeShort(0x02);
                file.writeInt(bones.Count);
                if (boneCountPerType[0] == 0)
                    boneCountPerType[0] = (uint)bones.Count;
                for (int i = 0; i < 4; i++)
                    file.writeInt((int)boneCountPerType[i]);

                for (int i = 0; i < bones.Count; i++)
                {
                    file.writeString(new string(bones[i].boneName));
                    for (int j = 0; j < 64 - bones[i].boneName.Length; j++)
                        file.writeByte(0);
                    file.writeInt((int)bones[i].boneType);
                    if(bones[i].parentIndex == -1)
                        file.writeInt(0x0FFFFFFF);
                    else
                        file.writeInt(bones[i].parentIndex);
                    file.writeInt((int)bones[i].boneId);
                }

                for (int i = 0; i < bones.Count; i++)
                {
                    file.writeFloat(bones[i].position[0]);
                    file.writeFloat(bones[i].position[1]);
                    file.writeFloat(bones[i].position[2]);
                    file.writeFloat(bones[i].rotation[0]);
                    file.writeFloat(bones[i].rotation[1]);
                    file.writeFloat(bones[i].rotation[2]);
                    file.writeFloat(bones[i].scale[0]);
                    file.writeFloat(bones[i].scale[1]);
                    file.writeFloat(bones[i].scale[2]);
                }
            }
            return file.getBytes();
        }
コード例 #22
0
ファイル: NUS3BANK.cs プロジェクト: struz/Smash-Forge
                public int Rebuild(FileOutput o)
                {
                    int size = o.size();

                    o.writeInt(hash);
                    o.writeInt(unk1);

                    o.writeByte(name.Length + 1);
                    o.writeString(name);
                    o.writeByte(0);
                    o.align(4);

                    o.writeInt(0);
                    o.writeInt(8);

                    o.writeInt(offset);
                    o.writeInt(this.size);

                    // write data
                    foreach (float f in param)
                    {
                        o.writeFloat(f);
                    }

                    o.writeInt(offsets.Length);
                    foreach (int f in offsets)
                    {
                        o.writeInt(f);
                    }

                    o.writeInt(unkvalues.Length);
                    int v = 0;

                    foreach (float f in unkvalues)
                    {
                        o.writeInt(v++);
                        o.writeFloat(f);
                    }

                    foreach (int f in unkending)
                    {
                        o.writeInt(f);
                    }

                    foreach (int f in end)
                    {
                        o.writeInt(f);
                    }

                    return(o.size() - size);
                }
コード例 #23
0
        public static byte[] FromIDSP(byte[] idsp)
        {
            File.WriteAllBytes("temp.idsp", idsp);
            IntPtr vgm = VGMStreamNative.InitVGMStream("temp.idsp");

            if (vgm == IntPtr.Zero)
            {
                throw new Exception("Error loading idsp");
            }

            int channelCount = VGMStreamNative.GetVGMStreamChannelCount(vgm);
            int bitsPerFrame = VGMStreamNative.GetVGMStreamFrameSize(vgm);
            int size         = VGMStreamNative.GetVGMStreamTotalSamples(vgm);
            int samplerate   = VGMStreamNative.GetVGMStreamSampleRate(vgm);

            int total = (int)((samplerate * bitsPerFrame * channelCount * (size / 24576000f)) / 8 * 1024);

            short[] buffer = new short[total];
            VGMStreamNative.RenderVGMStream(buffer, buffer.Length / 2, vgm);

            FileOutput o = new FileOutput();

            o.Endian = Endianness.Little;

            o.writeString("RIFF");
            o.writeInt(0);
            o.writeString("WAVEfmt ");

            o.writeInt(0x10);
            o.writeShort(1);
            o.writeShort(channelCount);
            o.writeInt(samplerate);
            o.writeInt(size);
            o.writeShort(2);
            o.writeShort(0x10);

            o.writeString("data");
            o.writeInt(buffer.Length);

            for (int i = 0; i < buffer.Length / 2; i++)
            {
                o.writeShort(buffer[i]);
            }

            o.writeIntAt(o.size() - 8, 4);

            VGMStreamNative.CloseVGMStream(vgm);
            File.Delete("temp.idsp");
            return(o.getBytes());
        }
コード例 #24
0
        public override void Save()
        {
            if (String.IsNullOrEmpty(FilePath))
            {
                SaveAs();
                return;
            }
            FileOutput o = new FileOutput();

            byte[] n = swag.Rebuild();
            o.writeBytes(n);
            o.save(FilePath);
            Edited = false;
        }
コード例 #25
0
ファイル: FSKLTree.cs プロジェクト: y4my4my4m/Smash-Forge
        public override void Save()
        {
            if (FilePath.Equals(""))
            {
                SaveAs();
                return;
            }
            FileOutput o = new FileOutput();

            byte[] n = VBN.Rebuild();
            o.writeBytes(n);
            o.save(FilePath);
            Edited = false;
        }
コード例 #26
0
ファイル: NUS3BANK.cs プロジェクト: struz/Smash-Forge
        public override byte[] Rebuild()
        {
            FileOutput o = new FileOutput();

            o.Endian = Endianness.Little;

            FileOutput d = new FileOutput();

            d.Endian = Endianness.Little;

            o.writeString("NUS3");
            o.writeInt(0);

            o.writeString("BANKTOC ");
            o.writeInt(0x3C);
            o.writeInt(0x07);

            // write each section
            o.writeString("PROP");
            o.writeInt(prop.Rebuild(d));

            o.writeString("BINF");
            o.writeInt(binf.Rebuild(d));

            o.writeString("GRP ");
            o.writeInt(grp.Rebuild(d));

            o.writeString("DTON");
            o.writeInt(dton.Rebuild(d));

            o.writeString("TONE");
            o.writeInt(tone.Rebuild(d));

            o.writeString("JUNK");
            o.writeInt(4);
            //d.writeString("JUNK");
            d.writeInt(4);
            d.writeInt(0);

            o.writeString("PACK");
            o.writeInt(0);

            o.writeOutput(d);

            o.writeIntAt(o.size(), 4);

            // something extra with bgm??

            return(o.getBytes());
        }
コード例 #27
0
ファイル: LVD.cs プロジェクト: Blazingflare/Smash-Forge
        public void save(FileOutput f)
        {
            base.save(f);

            f.writeByte(1);
            f.writeHex("0984000101");

            f.writeByte(1);
            f.writeInt(sections.Count);
            foreach (Section s in sections)
            {
                s.save(f);
            }
        }
コード例 #28
0
ファイル: LVD.cs プロジェクト: Blazingflare/Smash-Forge
        public void save(FileOutput f)
        {
            f.writeByte(1);
            f.writeHex("03000000040000000000000000000000000000000001");

            f.writeByte(1);
            f.writeInt(points.Count);
            foreach (Vector2D v in points)
            {
                f.writeByte(1);
                f.writeFloat(v.x);
                f.writeFloat(v.y);
            }
        }
コード例 #29
0
        public override void Save()
        {
            if (FilePath.Equals(""))
            {
                SaveAs();
                return;
            }
            FileOutput fileOutput = new FileOutput();

            byte[] n = currentNut.Rebuild();

            fileOutput.writeBytes(n);
            fileOutput.save(FilePath);
            Edited = false;
        }
コード例 #30
0
        public override void Save()
        {
            if (FilePath.Equals(""))
            {
                SaveAs();
                return;
            }
            FileOutput o = new FileOutput();

            mta.Compile(new List <string>(richTextBox1.Text.Split('\n')));
            byte[] n = mta.Rebuild();
            o.writeBytes(n);
            o.save(FilePath);
            Edited = false;
        }