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; } }
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); } } }
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; } }
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(); }
public void BONWriter(string file, Main.Format Format) { IO = File.OpenWriter(file + ".bon", true); IO.Close(); }
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(); }