Exemplo n.º 1
0
        public static void Processor(bool JSON)
        {
            Console.Title = "A3DA Converter";
            Main.Choose(1, "a3da", out string[] FileNames);
            if (FileNames.Length < 1)
            {
                return;
            }
            string filepath = "";
            string ext      = "";

            bool MP = false;

            foreach (string file in FileNames)
            {
                if (file.EndsWith(".mp"))
                {
                    MP = true; break;
                }
                else if (file.EndsWith(".json"))
                {
                    MP = true; break;
                }
                else if (file.EndsWith(".farc"))
                {
                    MP = true; break;
                }
            }

            Main.Format Format = Main.Format.NULL;
            string      format = "";

            if (MP)
            {
                Console.Clear();
                Main.ConsoleDesign(true);
                Main.ConsoleDesign("          Choose type of format to export:");
                Main.ConsoleDesign(false);
                Main.ConsoleDesign("1. A3DA [DT/AC/F]");
                Main.ConsoleDesign("2. A3DC [DT/AC/F]");
                Main.ConsoleDesign("3. A3DA [AFT/FT] ");
                Main.ConsoleDesign("4. A3DC [AFT/FT] ");
                Main.ConsoleDesign("5. A3DC [F2]     ");
                Main.ConsoleDesign("6. A3DC [MGF]    ");
                Main.ConsoleDesign("7. A3DC [X]      ");
                Main.ConsoleDesign(false);
                Main.ConsoleDesign(true);
                Console.WriteLine();
                format = Console.ReadLine();
                if (format == "1")
                {
                    Format = Main.Format.DT;
                }
                else if (format == "2")
                {
                    Format = Main.Format.F;
                }
                else if (format == "3")
                {
                    Format = Main.Format.FT;
                }
                else if (format == "4")
                {
                    Format = Main.Format.FT;
                }
                else if (format == "5")
                {
                    Format = Main.Format.F2LE;
                }
                else if (format == "6")
                {
                    Format = Main.Format.MGF;
                }
                else if (format == "7")
                {
                    Format = Main.Format.X;
                }
                else
                {
                    return;
                }
            }

            KKdA3DA A;
            int     state;

            foreach (string file in FileNames)
            {
                A        = new KKdA3DA();
                ext      = Path.GetExtension(file);
                filepath = file.Replace(ext, "");
                ext      = ext.ToLower();

                Console.Title = "A3DA Converter: " + Path.GetFileNameWithoutExtension(file);
                if (ext == ".farc")
                {
                    KKdFARC FARC = new KKdFARC(file);
                    if (!FARC.HeaderReader())
                    {
                        continue;
                    }
                    if (!FARC.HasFiles)
                    {
                        continue;
                    }

                    MsgPack A3DA = MsgPack.Null;
                    byte[]  data = null;
                    for (int i = 0; i < FARC.Files.Length; i++)
                    {
                        data  = FARC.FileReader(i);
                        state = A.A3DAReader(data);
                        if (state == 1)
                        {
                            A3DA = A.MsgPackWriter();
                            A    = new KKdA3DA();
                            A.MsgPackReader(A3DA);
                            A.IO = File.OpenWriter();
                            A.Data._.CompressF16 = Format > Main.Format.FT ?
                                                   Format == Main.Format.MGF ? 2 : 1 : 0;
                            A.Data.Format      = Format;
                            FARC.Files[i].Data = (format != "1" &&
                                                  format != "3") ? A.A3DCWriter() : A.A3DAWriter();
                        }
                    }
                    FARC.Save();
                }
                else if (ext == ".a3da")
                {
                    state = A.A3DAReader(filepath);
                    if (state == 1)
                    {
                        A.MsgPackWriter(filepath, JSON);
                    }
                }
                else if (ext == ".mp" || ext == ".json")
                {
                    A.MsgPackReader(filepath, ext == ".json");
                    A.Data._.CompressF16 = Format > Main.Format.FT ?
                                           Format == Main.Format.MGF ? 2 : 1 : 0;
                    A.Data.Format = Format;

                    File.WriteAllBytes(filepath + ".a3da", (format != "1" &&
                                                            format != "3") ? A.A3DCWriter() : A.A3DAWriter());
                }
                A = null;
            }
        }
Exemplo n.º 2
0
        public static void Processor(bool JSON)
        {
            Console.Title = "DEX Converter";
            KKdDEX DEX;

            Main.Choose(1, "dex", out string[] FileNames);
            if (FileNames.Length < 1)
            {
                return;
            }
            string filepath = "";
            string ext      = "";

            bool MP = true;

            foreach (string file in FileNames)
            {
                if (file.EndsWith(".mp"))
                {
                    MP = false; break;
                }
            }

            Console.Clear();
            string format = "";

            Main.ConsoleDesign(true);
            Main.ConsoleDesign("        Choose type of exporting file:");
            Main.ConsoleDesign(false);
            Main.ConsoleDesign("1. F/FT PS3/PS4/PSVita");
            Main.ConsoleDesign("2. F2nd PS3/PSVita");
            Main.ConsoleDesign("3. X    PS4/PSVita");
            if (MP)
            {
                Main.ConsoleDesign("9. MessagePack");
            }
            Main.ConsoleDesign(false);
            Main.ConsoleDesign(true);
            Console.WriteLine();
            format = Console.ReadLine();

            Main.Format Format = Main.Format.NULL;
            if (format == "1")
            {
                Format = Main.Format.F;
            }
            else if (format == "2")
            {
                Format = Main.Format.F2LE;
            }
            else if (format == "3")
            {
                Format = Main.Format.X;
            }
            else if (format == "9" && MP)
            {
                Format = Main.Format.NULL;
            }
            else
            {
                return;
            }

            foreach (string file in FileNames)
            {
                DEX      = new KKdDEX();
                ext      = Path.GetExtension(file).ToLower();
                filepath = file.Replace(Path.GetExtension(file), "");

                if (ext == ".bin" || ext == ".dex")
                {
                    DEX.DEXReader(filepath, ext);
                }
                else
                {
                    DEX.MsgPackReader(filepath, JSON);
                }

                if (Format > Main.Format.NULL)
                {
                    DEX.DEXWriter(filepath, Format);
                }
                else
                {
                    DEX.MsgPackWriter(filepath, JSON);
                }
            }
        }
Exemplo n.º 3
0
        public static void Processor(bool JSON)
        {
            Console.Title = "A3DA Converter";
            Main.Choose(1, "a3da", out string[] FileNames);
            if (FileNames.Length < 1)
            {
                return;
            }
            string filepath = "";
            string ext      = "";

            bool MP = true;

            foreach (string file in FileNames)
            {
                if (file.EndsWith(".mp"))
                {
                    MP = false; break;
                }
                else if (file.EndsWith(".json"))
                {
                    MP = false; break;
                }
            }

            Main.Format Format = Main.Format.NULL;
            if (!MP)
            {
                Console.Clear();
                Main.ConsoleDesign(true);
                Main.ConsoleDesign("          Choose type of format to export:");
                Main.ConsoleDesign(false);
                Main.ConsoleDesign("1. DT   PS3");
                Main.ConsoleDesign("2. F    PS3/PSV");
                Main.ConsoleDesign("3. FT   PS4");
                Main.ConsoleDesign("4. F2nd PS3/PSV");
                Main.ConsoleDesign("5. MGF      PSV");
                Main.ConsoleDesign("6. X    PS4/PSV");
                Main.ConsoleDesign(false);
                Main.ConsoleDesign(true);
                Console.WriteLine();
                string format = Console.ReadLine();
                if (format == "1")
                {
                    Format = Main.Format.DT;
                }
                else if (format == "2")
                {
                    Format = Main.Format.F;
                }
                else if (format == "3")
                {
                    Format = Main.Format.FT;
                }
                else if (format == "4")
                {
                    Format = Main.Format.F2LE;
                }
                else if (format == "5")
                {
                    Format = Main.Format.MGF;
                }
                else if (format == "6")
                {
                    Format = Main.Format.X;
                }
                else
                {
                    return;
                }
            }

            KKdA3DA A;

            foreach (string file in FileNames)
            {
                A        = new KKdA3DA();
                ext      = Path.GetExtension(file);
                filepath = file.Replace(ext, "");
                ext      = ext.ToLower();

                Console.Title = "A3DA Converter: " + Path.GetFileNameWithoutExtension(file);
                if (ext == ".a3da")
                {
                    A.A3DAReader(filepath);
                    A.MsgPackWriter(filepath, JSON);
                }
                else if (ext == ".mp" || ext == ".json")
                {
                    A.MsgPackReader(filepath, ext == ".json");
                    A.IO = File.OpenWriter(filepath + ".a3da", true);
                    if (A.Data.Header.Format >= Main.Format.F2LE)
                    {
                        A.Data._.CompressF16 = Format == Main.Format.MGF ? 2 : 1;
                    }
                    A.Data.Header.Format = Format;

                    if (A.Data.Header.Format > Main.Format.DT && A.Data.Header.Format != Main.Format.FT)
                    {
                        A.A3DCWriter(filepath);
                    }
                    else
                    {
                        A.A3DAWriter();
                    }
                }
                A = null;
            }
        }
Exemplo n.º 4
0
        public void DEXWriter(string filepath, Main.Format Format)
        {
            Header = new PDHead()
            {
                Format = Format
            };
            IO        = File.OpenWriter(filepath + (Header.Format > Main.Format.F ? ".Dex" : ".bin"), true);
            IO.Format = Header.Format;

            if (IO.Format > Main.Format.F)
            {
                Header.Lenght      = 0x20;
                Header.DataSize    = 0x00;
                Header.Signature   = 0x43505845;
                Header.SectionSize = 0x00;
                IO.Write(Header);
            }

            IO.Write(0x64);
            IO.Write(Dex.Length);

            if (Header.IsX)
            {
                IO.Write((long)0x28);
            }
            else
            {
                IO.Write(0x20);
            }
            if (Header.IsX)
            {
                IO.Write((long)0x00);
            }
            else
            {
                IO.Write(0x00);
            }

            int Position0 = IO.Position;

            IO.Write((long)0x00);
            IO.Write((long)0x00);

            for (int i = 0; i < Dex.Length * 3; i++)
            {
                if (Header.IsX)
                {
                    IO.Write((long)0x00);
                }
                else
                {
                    IO.Write(0x00);
                }
            }

            IO.Align(0x20, true);

            for (int i0 = 0; i0 < Dex.Length; i0++)
            {
                Dex[i0].MainOffset = IO.Position - Header.Lenght;
                for (int i1 = 0; i1 < Dex[i0].Main.Count; i1++)
                {
                    IO.Write(Dex[i0].Main[i1].Frame);
                    IO.Write(Dex[i0].Main[i1].Both);
                    IO.Write(Dex[i0].Main[i1].ID);
                    IO.Write(Dex[i0].Main[i1].Value);
                    IO.Write(Dex[i0].Main[i1].Trans);
                }
                IO.Align(0x20, true);

                Dex[i0].EyesOffset = IO.Position - Header.Lenght;
                for (int i1 = 0; i1 < Dex[i0].Eyes.Count; i1++)
                {
                    IO.Write(Dex[i0].Eyes[i1].Frame);
                    IO.Write(Dex[i0].Eyes[i1].Both);
                    IO.Write(Dex[i0].Eyes[i1].ID);
                    IO.Write(Dex[i0].Eyes[i1].Value);
                    IO.Write(Dex[i0].Eyes[i1].Trans);
                }
                IO.Align(0x20, true);
            }
            for (int i0 = 0; i0 < Dex.Length; i0++)
            {
                Dex[i0].NameOffset = IO.Position - Header.Lenght;
                IO.Write(Dex[i0].Name + "\0");
            }
            IO.Align(0x10, true);

            if (Header.IsX)
            {
                IO.Seek(Header.Lenght + 0x28, 0);
            }
            else
            {
                IO.Seek(Header.Lenght + 0x20, 0);
            }
            for (int i0 = 0; i0 < Dex.Length; i0++)
            {
                IO.Write(Dex[i0].MainOffset);
                if (Header.IsX)
                {
                    IO.Write(0x00);
                }
                IO.Write(Dex[i0].EyesOffset);
                if (Header.IsX)
                {
                    IO.Write(0x00);
                }
            }
            int Position1 = IO.Position - Header.Lenght;

            for (int i0 = 0; i0 < Dex.Length; i0++)
            {
                IO.Write(Dex[i0].NameOffset);
                if (Header.IsX)
                {
                    IO.Write(0x00);
                }
            }

            if (Header.IsX)
            {
                IO.Seek(Position0 - 8, 0);
            }
            else
            {
                IO.Seek(Position0 - 4, 0);
            }
            IO.Write(Position1);

            if (IO.Format > Main.Format.F)
            {
                Offset = IO.Length - Header.Lenght;
                IO.Seek(IO.Length, 0);
                IO.WriteEOFC(0);
                IO.Seek(0, 0);
                Header.DataSize    = Offset;
                Header.SectionSize = Offset;
                IO.Write(Header);
            }
            IO.Close();
        }
Exemplo n.º 5
0
 public void BONWriter(string file, Main.Format Format)
 {
     IO = File.OpenWriter(file + ".bon", true);
     IO.Close();
 }
Exemplo n.º 6
0
        public void DEXWriter(string filepath, Main.Format Format)
        {
            Header        = new Header();
            IO            = File.OpenWriter(filepath + (Format > Main.Format.F ? ".dex" : ".bin"), true);
            Header.Format = IO.Format = Format;

            IO.Offset = Format > Main.Format.F ? 0x20 : 0;
            IO.Write(0x64);
            IO.Write(Dex.Length);

            IO.WriteX(Header.IsX ? 0x28 : 0x20);
            IO.WriteX(0x00);

            int Position0 = IO.Position;

            IO.Write(0x00L);
            IO.Write(0x00L);

            for (int i = 0; i < Dex.Length * 3; i++)
            {
                IO.WriteX(0x00);
            }

            IO.Align(0x20, true);

            for (int i0 = 0; i0 < Dex.Length; i0++)
            {
                Dex[i0].MainOffset = IO.Position;
                for (int i1 = 0; i1 < Dex[i0].Main.Count; i1++)
                {
                    IO.Write(Dex[i0].Main[i1].Frame);
                    IO.Write(Dex[i0].Main[i1].Both);
                    IO.Write(Dex[i0].Main[i1].ID);
                    IO.Write(Dex[i0].Main[i1].Value);
                    IO.Write(Dex[i0].Main[i1].Trans);
                }
                IO.Align(0x20, true);

                Dex[i0].EyesOffset = IO.Position;
                for (int i1 = 0; i1 < Dex[i0].Eyes.Count; i1++)
                {
                    IO.Write(Dex[i0].Eyes[i1].Frame);
                    IO.Write(Dex[i0].Eyes[i1].Both);
                    IO.Write(Dex[i0].Eyes[i1].ID);
                    IO.Write(Dex[i0].Eyes[i1].Value);
                    IO.Write(Dex[i0].Eyes[i1].Trans);
                }
                IO.Align(0x20, true);
            }
            for (int i0 = 0; i0 < Dex.Length; i0++)
            {
                Dex[i0].NameOffset = IO.Position;
                IO.Write(Dex[i0].Name + "\0");
            }
            IO.Align(0x10, true);

            IO.Position = Header.IsX ? 0x28 : 0x20;
            for (int i0 = 0; i0 < Dex.Length; i0++)
            {
                IO.WriteX(Dex[i0].MainOffset);
                IO.WriteX(Dex[i0].EyesOffset);
            }
            int Position1 = IO.Position;

            for (int i0 = 0; i0 < Dex.Length; i0++)
            {
                IO.WriteX(Dex[i0].NameOffset);
            }

            IO.Position = Position0 - (Header.IsX ? 8 : 4);
            IO.Write(Position1);

            if (Format > Main.Format.F)
            {
                Offset      = IO.Length;
                IO.Offset   = 0;
                IO.Position = IO.Length;
                IO.WriteEOFC(0);
                IO.Position        = 0;
                Header.DataSize    = Offset;
                Header.SectionSize = Offset;
                Header.Signature   = 0x43505845;
                IO.Write(Header, true);
            }
            IO.Close();
        }