Ejemplo n.º 1
0
        public static void dbgme(string path, string acpath, divamodgen divamods)
        {
            foreach (string file in Directory.EnumerateFiles(path + "temp", "*p1_00.mot", SearchOption.AllDirectories))
            {
                int pvid = int.Parse(Path.GetFileNameWithoutExtension(file).Substring(2, 3));

                var check2 = divamods.Divamods.Where(c => c.pvid == pvid).FirstOrDefault();
                if (check2 == null)
                {
                    divamods.Divamods.Add(new pdaconversion.divamods(pvid));
                    Logs.WriteLine("motions: Created new PV at id " + pvid);
                    check2 = divamods.Divamods.Where(c => c.pvid == pvid).First();
                }
            }

            foreach (string file in Directory.EnumerateFiles(path + "temp", "*p2_00.mot", SearchOption.AllDirectories))
            {
                int pvid = int.Parse(Path.GetFileNameWithoutExtension(file).Substring(2, 3));

                var check2 = divamods.Divamods.Where(c => c.pvid == pvid).FirstOrDefault();
                if (check2 == null)
                {
                    divamods.Divamods.Add(new pdaconversion.divamods(pvid));
                    Logs.WriteLine("motions: Created new PV at id " + pvid);
                    check2 = divamods.Divamods.Where(c => c.pvid == pvid).First();
                }
                check2.duet = true;
            }
        }
Ejemplo n.º 2
0
        public static void ExtractA3D(string path, string acpath, a3ds a3db, divamodgen divamods = null)
        {
            Directory.CreateDirectory("a3d");
            //Directory.CreateDirectory("a3d\\common");

            foreach (string file in Directory.EnumerateFiles(path, "effstgpv*.farc", SearchOption.TopDirectoryOnly))
            {
                if (!file.Contains("ptc"))
                {
                    Tools.Extract(file, "a3d\\" + Path.GetFileNameWithoutExtension(file).Replace("effstgpv0", "EFFSTGPV8").ToUpper() + "\\");
                    var check = a3db.a3d_dbs.Any(c => c.rawrows.Any(d => d.Contains(Path.GetFileNameWithoutExtension(file).Replace("effstgpv", "EFFSTGPV").ToUpper())));
                    if (!check)
                    {
                        a3d newa3d = new a3d(0);
                        newa3d.id = a3db.a3d_dbs.Max(c => c.id) + 1;
                        newa3d.rawrows.Add(".value=" + Path.GetFileNameWithoutExtension(file).Replace("effstgpv", "EFFSTGPV").ToUpper());
                        a3db.a3d_dbs.Add(newa3d);
                    }
                }
            }

            foreach (string file in Directory.EnumerateFiles("a3d\\", "*.a3da", SearchOption.AllDirectories))
            {
                File.Move(file, Path.GetDirectoryName(file) + "\\" + Path.GetFileNameWithoutExtension(file).ToUpper().Replace("STGPV0", "STGPV8") + ".a3da");
            }

            foreach (string file in Directory.EnumerateFiles(path, "a3d_effpv*.farc", SearchOption.TopDirectoryOnly))
            {
                Tools.Extract(file, "a3d\\" + Path.GetFileNameWithoutExtension(file).Replace("a3d_effpv", "EFFSTGPV").ToUpper() + "\\");

                var check = a3db.a3d_dbs.Any(c => c.rawrows.Any(d => d.Contains(Path.GetFileNameWithoutExtension(file).Replace("effstgpv", "EFFSTGPV").ToUpper())));
                if (!check)
                {
                    a3d newa3d = new a3d(0);
                    newa3d.id = a3db.a3d_dbs.Max(c => c.id) + 1;
                    newa3d.rawrows.Add(".value=" + Path.GetFileNameWithoutExtension(file).Replace("a3d_effpv", "EFFSTGPV").ToUpper());
                    a3db.a3d_dbs.Add(newa3d);
                }
            }

            foreach (string file in Directory.EnumerateFiles(path, "CAMPV*.farc", SearchOption.TopDirectoryOnly))
            {
                Tools.Extract(file, "a3d\\" + Path.GetFileNameWithoutExtension(file).ToUpper() + "\\");
                var check = a3db.a3d_dbs.Any(c => c.rawrows.Any(d => d.Contains(Path.GetFileNameWithoutExtension(file).ToUpper())));
                if (!check)
                {
                    a3d newa3d = new a3d(0);
                    newa3d.id = a3db.a3d_dbs.Max(c => c.id) + 1;
                    newa3d.rawrows.Add(".value=" + Path.GetFileNameWithoutExtension(file).ToUpper());
                    a3db.a3d_dbs.Add(newa3d);
                }
            }

            foreach (string file in Directory.EnumerateFiles("a3d\\", "*.a3da", SearchOption.AllDirectories))
            {
                File.Move(file, Path.GetDirectoryName(file) + "\\" + Path.GetFileNameWithoutExtension(file).ToUpper().Replace("EFFPV", "STGPV") + ".a3da");
            }
        }
Ejemplo n.º 3
0
        public static void ConvertA3D(string path, string acpath, a3ds a3db, divamodgen divamods = null)
        {
            maxWorker = Environment.ProcessorCount - 2;

            foreach (string file in Directory.EnumerateFiles("a3d\\", "*.a3da", SearchOption.AllDirectories))
            {
                while (currentWorker > maxWorker)
                {
                    Thread.Sleep(33);
                }
                new Thread(() =>
                {
                    string ext      = Path.GetExtension(file);
                    string filepath = file.Replace(ext, "");

                    KKtMain.Format Format = KKtMain.Format.FT;
                    KKtA3DA A             = new KKtA3DA();
                    A.A3DAReader(filepath);
                    bool MP = false;

                    if (!MP || Format > KKtMain.Format.NULL)
                    {
                        A.IO = KKtLib.IO.OpenWriter(filepath + ".a3da", true);
                    }
                    if (Format > KKtMain.Format.NULL)
                    {
                        if (A.Data.Header.Format < KKtMain.Format.F2LE)
                        {
                            A.Data._.CompressF16 = Format == KKtMain.Format.MGF ? 2 : 1;
                        }
                        A.Data.Header.Format = Format;
                    }
                    if (!MP && A.Data.Header.Format > KKtMain.Format.DT && A.Data.Header.Format != KKtMain.Format.FT)
                    {
                        A.A3DCWriter(filepath);
                    }
                    else if (!MP || Format > KKtMain.Format.NULL)
                    {
                        A.A3DC = false;
                        A.A3DAWriter(filepath);
                    }
                    else
                    {
                        A.MsgPackWriter(filepath);
                    }
                    Interlocked.Decrement(ref currentWorker);
                }).Start();
                Interlocked.Increment(ref currentWorker);
            }

            while (currentWorker != 0)
            {
                Thread.Sleep(33);
            }
        }
Ejemplo n.º 4
0
        public static void ConvertDSC(string path, string acpath, divamodgen divamods)
        {
            foreach (string file in Directory.EnumerateFiles(path, "pv_*_common.farc", SearchOption.TopDirectoryOnly))
            {
                Tools.Extract(file, "dsc\\common\\");
            }

            foreach (string file in Directory.EnumerateFiles(path, "*.dsc", SearchOption.TopDirectoryOnly))
            {
                File.Copy(file, "dsc\\" + Path.GetFileName(file), true);
            }

            foreach (string file in Directory.EnumerateFiles("dsc\\", "*.*", SearchOption.TopDirectoryOnly))
            {
                PD_Tool.DIVAFILE.Decrypt(0, file);
            }

            Console.Title = "LYB DIVA X";

            foreach (string file in Directory.EnumerateFiles(path, "*.dsc", SearchOption.TopDirectoryOnly))
            {
                List <string> args = new List <string>();
                args.Add("-i:x");
                args.Add(file);
                args.Add("-o:a");
                args.Add(acpath + "\\rom\\script\\" + Path.GetFileName(file));

                int pvid = int.Parse(Path.GetFileNameWithoutExtension(file).Substring(3, 3));

                string dexfile = path + "exp_pv" + string.Format("{0:000}", pvid) + ".dex";

                if (File.Exists(dexfile))
                {
                    args.Add("-e");
                    args.Add(dexfile);
                    Logs.WriteLine("PD_TOOL: DexReader: " + Path.GetFileName(dexfile));
                }

                var check = divamods.Divamods.Where(c => c.pvid == pvid).FirstOrDefault();
                if (check == null)
                {
                    divamods.Divamods.Add(new pdaconversion.divamods(pvid));
                    Logs.WriteLine("DSC: Created new PV at id " + (pvid));
                    check = divamods.Divamods.Where(c => c.pvid == pvid).First();
                }

                if (Path.GetFileName(file).Contains("easy"))
                {
                    check.easy = true;
                }
                if (Path.GetFileName(file).Contains("normal"))
                {
                    check.normal = true;
                }
                if (Path.GetFileName(file).Contains("hard"))
                {
                    check.hard = true;
                }
                if (Path.GetFileName(file).Contains("extreme"))
                {
                    check.extreme = true;
                }

                bool duet = false;

                {
                    if (check.duet)
                    {
                        duet = true;
                        Logs.WriteLine("DSC: " + pvid + " FORCEDUET");
                    }
                }

                DSC.duet = duet;
                DSC.Convert(args.ToArray());
            }
        }
Ejemplo n.º 5
0
        public static a3ds CreateDBEntries(string acpath, a3ds a3db, divamodgen divamods)
        {
            foreach (string file in Directory.EnumerateFiles("a3d\\", "*.a3da", SearchOption.AllDirectories))
            {
                string[] a3da_lines = File.ReadAllLines(file);

                StreamWriter outp = new StreamWriter(file, false, Encoding.ASCII);
                outp.NewLine = "\n";

                foreach (var i in a3da_lines)
                {
                    var u = i.Replace("EFFPV", "STGPV").Replace("STGPV0", "STGPV8");
                    outp.WriteLine(u);
                }
                outp.Close();


                if ((divamods != null) && (file.Contains("STGPV")))
                {
                    int pvid = int.Parse(Path.GetFileName(file).Substring(5, 3));

                    if (pvid < 200)
                    {
                        pvid = pvid + 800;
                    }

                    {
                        var check2 = divamods.Divamods.Where(c => c.pvid == pvid).FirstOrDefault();
                        if (check2 == null)
                        {
                            divamods.Divamods.Add(new pdaconversion.divamods(pvid));
                            Logs.WriteLine("a3da: Created new PV at id " + (pvid));
                            check2 = divamods.Divamods.Where(c => c.pvid == pvid).First();
                        }
                        check2.a3da.Add(Path.GetFileNameWithoutExtension(file));
                        Logs.WriteLine("a3da: Added a3d for PV at id " + pvid + "," + Path.GetFileNameWithoutExtension(file));
                    }

                    if (pvid >= 800)
                    {
                        if (!Path.GetFileNameWithoutExtension(file).Contains("effpv"))
                        {
                            var check2 = divamods.Divamods.Where(c => c.pvid == (pvid)).FirstOrDefault();
                            if (check2 == null)
                            {
                                divamods.Divamods.Add(new pdaconversion.divamods(pvid - 100));
                                Logs.WriteLine("a3da: Created new PV at id " + (pvid - 100));
                                check2 = divamods.Divamods.Where(c => c.pvid == (pvid - 100)).First();
                            }
                            Logs.WriteLine("a3da: Added a3d for PV at id " + (pvid - 100) + "," + Path.GetFileNameWithoutExtension(file));
                            check2.a3da.Add(Path.GetFileNameWithoutExtension(file));
                        }
                    }
                }

                a3dfixer a3Dfixer = new a3dfixer();
                a3d      newa3d   = new a3d(0);
                newa3d.id = a3db.a3d_dbs_uid.Max(c => c.id) + 1;
                var lepath = Path.GetDirectoryName(file).Split('\\');
                {
                    newa3d.rawrows.Add(".category=" + lepath[lepath.Count() - 1]);
                    newa3d.rawrows.Add(".size=" + a3Dfixer.getSize(file));
                    newa3d.rawrows.Add(".value=A " + Path.GetFileNameWithoutExtension(file).ToUpper());
                    a3db.a3d_dbs_uid.Add(newa3d);
                }
            }

            Logs.WriteLine("Packing farcs...");
            Tools.MassPackFolders("a3d", acpath + @"\rom\auth_3d\");

            return(a3db);
        }
Ejemplo n.º 6
0
        public static void Convert(string path, string acpath, string mot_db, divamodgen divamods)
        {
            if (Directory.Exists(path + "temp"))
            {
                Directory.Delete(path + "temp", true);
            }
            if (Directory.Exists(path + "temp2"))
            {
                Directory.Delete(path + "temp2", true);
            }
            if (Directory.Exists(acpath + "\\rom\\rob_temp"))
            {
                Directory.Delete(acpath + "\\rom\\rob_temp", true);
            }

            Directory.CreateDirectory(path + "temp");
            Directory.CreateDirectory(path + "temp2");
            Directory.CreateDirectory(acpath + "\\rom\\rob_temp");

            MotionDatabase acmot  = new MotionDatabase();
            BoneDatabase   acbone = new BoneDatabase();

            acbone.Load(acpath + "\\rom\\bone_data.bin");
            var skeletonEntry = acbone.Skeletons[0];

            using (var farcArchive = BinaryFile.Load <FarcArchive>(mot_db))
                using (var entryStream = farcArchive.Open(farcArchive.Entries.First(), EntryStreamMode.MemoryStream))
                    acmot.Load(entryStream);

            foreach (string file in Directory.EnumerateFiles(path, "mot_pv*.farc", SearchOption.TopDirectoryOnly))
            {
                Tools.Extract(file, path + "temp\\");
                //Console.WriteLine("Extracted " + Path.GetFileName(file));
            }

            var maxid  = acmot.MotionSets.Max(c => c.Id);
            var maxid2 = -1;

            foreach (var i in acmot.MotionSets)
            {
                if (i.Id > maxid2)
                {
                    maxid2 = i.Id;
                }
            }

            foreach (string file in Directory.EnumerateFiles(path + "temp", "*p1_00.mot", SearchOption.AllDirectories))
            {
                Directory.CreateDirectory(path + "temp2\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3));
                var       moti   = CombineBone(path, file, path + "temp2\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "_p1.mot");
                MotionSet motion = new MotionSet();
                if (File.Exists(acpath + "\\rom\\rob_temp\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + ".bin"))
                {
                    motion.Load(acpath + "\\rom\\rob_temp\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + ".bin");
                }
                motion.Motions.Add(moti);
                if (!Directory.Exists(acpath + "\\rom\\rob_temp\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3)))
                {
                    Directory.CreateDirectory(acpath + "\\rom\\rob_temp\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3));
                }
                motion.Save(acpath + "\\rom\\rob_temp\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + ".bin", skeletonEntry, acmot);

                maxid++;
                maxid2++;

                var check = acmot.MotionSets.Where(c => c.Name == "PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3)).FirstOrDefault();
                if (check == null)
                {
                    var motset = new MotionSetEntry();
                    motset.Name = "PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3);
                    motset.Id   = maxid + 1;
                    acmot.MotionSets.Add(motset);
                    check = acmot.MotionSets.Where(c => c.Name == "PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3)).First();
                }

                var motentry = new MotionEntry();
                motentry.Id   = maxid2 + 1;
                motentry.Name = "PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "_P1";
                check.Motions.Add(motentry);

                int pvid = int.Parse(Path.GetFileNameWithoutExtension(file).Substring(2, 3));

                var check2 = divamods.Divamods.Where(c => c.pvid == pvid).FirstOrDefault();
                if (check2 == null)
                {
                    divamods.Divamods.Add(new pdaconversion.divamods(pvid));
                    Logs.WriteLine("Motion: Created new PV at id " + (pvid));
                    check2 = divamods.Divamods.Where(c => c.pvid == pvid).First();
                }

                Console.WriteLine("Converted " + Path.GetFileName(file));
                GC.Collect();
                GC.WaitForPendingFinalizers();
            }

            foreach (string file in Directory.EnumerateFiles(path + "temp", "*p2_00.mot", SearchOption.AllDirectories))
            {
                Directory.CreateDirectory(path + "temp2\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3));
                var       moti   = CombineBone(path, file, path + "temp2\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "_p2.mot");
                MotionSet motion = new MotionSet();
                if (File.Exists(acpath + "\\rom\\rob_temp\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + ".bin"))
                {
                    motion.Load(acpath + "\\rom\\rob_temp\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + ".bin");
                }
                motion.Motions.Add(moti);
                if (!Directory.Exists(acpath + "\\rom\\rob_temp\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3)))
                {
                    Directory.CreateDirectory(acpath + "\\rom\\rob_temp\\" + Path.GetFileNameWithoutExtension(file).Substring(2, 3));
                }
                motion.Save(acpath + "\\rom\\rob_temp\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + ".bin", skeletonEntry, acmot);
                Console.WriteLine("Converted " + Path.GetFileName(file));

                maxid++;
                maxid2++;

                var check = acmot.MotionSets.Where(c => c.Name == "PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3)).FirstOrDefault();
                if (check == null)
                {
                    var motset = new MotionSetEntry();
                    motset.Name = "PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3);
                    motset.Id   = maxid;
                    acmot.MotionSets.Add(motset);
                    check = acmot.MotionSets.Where(c => c.Name == "PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3)).First();
                }

                var motentry = new MotionEntry();
                motentry.Id   = maxid2;
                motentry.Name = "PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "_P2";
                check.Motions.Add(motentry);

                int pvid = int.Parse(Path.GetFileNameWithoutExtension(file).Substring(2, 3));

                var check2 = divamods.Divamods.Where(c => c.pvid == pvid).FirstOrDefault();
                if (check2 == null)
                {
                    divamods.Divamods.Add(new pdaconversion.divamods(pvid));
                    Logs.WriteLine("Motion: Created new PV at id " + (pvid));
                    check2 = divamods.Divamods.Where(c => c.pvid == pvid).First();
                    //check2.duet = true;
                }

                check2.duet = true;
                GC.Collect();
                GC.WaitForPendingFinalizers();
            }

            foreach (string file in Directory.EnumerateFiles(path + "temp", "*p3_00.mot", SearchOption.AllDirectories))
            {
                Directory.CreateDirectory(path + "temp2\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3));
                var       moti   = CombineBone(path, file, path + "temp2\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "_p3.mot");
                MotionSet motion = new MotionSet();
                if (File.Exists(acpath + "\\rom\\rob_temp\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + ".bin"))
                {
                    motion.Load(acpath + "\\rom\\rob_temp\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + ".bin");
                }
                motion.Motions.Add(moti);
                if (!Directory.Exists(acpath + "\\rom\\rob_temp\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3)))
                {
                    Directory.CreateDirectory(acpath + "\\rom\\rob_temp\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3));
                }
                motion.Save(acpath + "\\rom\\rob_temp\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + ".bin", skeletonEntry, acmot);
                Console.WriteLine("Converted " + Path.GetFileName(file));

                maxid++;
                maxid2++;

                var check = acmot.MotionSets.Where(c => c.Name == "PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3)).FirstOrDefault();
                if (check == null)
                {
                    var motset = new MotionSetEntry();
                    motset.Name = "PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3);
                    motset.Id   = maxid;
                    acmot.MotionSets.Add(motset);
                    check = acmot.MotionSets.Where(c => c.Name == "PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3)).First();
                }

                var motentry = new MotionEntry();
                motentry.Id   = maxid2;
                motentry.Name = "PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "_P3";
                check.Motions.Add(motentry);
                GC.Collect();
                GC.WaitForPendingFinalizers();
            }

            Directory.CreateDirectory(acpath + "\\rom\\rob_temp\\mot_db");
            acmot.Save(acpath + "\\rom\\rob_temp\\mot_db\\mot_db.bin");

            Console.WriteLine("Packing farcs...");
            Tools.MassPackFolders(acpath + "\\rom\\rob_temp", acpath + "\\rom\\rob\\");
            GC.Collect();
            GC.WaitForPendingFinalizers();
        }
Ejemplo n.º 7
0
        public void GenerateObjSet(string filePath, Model stgpv, ObjectDatabase objdb, TextureDatabase texturedb, StageDatabase staged, string acpath, divamodgen divamods, bool doProcess = true, bool debug = false)
        {
            /*
             * var stgpv = new Model();
             * var textures = new MikuMikuLibrary.Textures.TextureSet();
             * var texdb = new TextureDatabase();
             *
             * using (var farcArchive = BinaryFile.Load<FarcArchive>(filePath))
             * using (var entryStream = farcArchive.Open(farcArchive.Entries.Where(c => c.Contains("txi")).First(), EntryStreamMode.MemoryStream))
             *  texdb.Load(entryStream);
             *
             * if (debug)
             * {
             *  string farcpath = acpath + "\\rom\\objset\\" + Path.GetFileNameWithoutExtension(filePath).Replace("stgpv0", "stgpv8") + ".farc";
             *
             *  using (var farcArchive = BinaryFile.Load<FarcArchive>(farcpath))
             *  using (var entryStream = farcArchive.Open(farcArchive.Entries.Where(c => c.Contains("tex")).First(), EntryStreamMode.MemoryStream))
             *      textures.Load(entryStream);
             *
             * }
             * else
             * {
             *  using (var farcArchive = BinaryFile.Load<FarcArchive>(filePath))
             *  using (var entryStream = farcArchive.Open(farcArchive.Entries.Where(c => c.Contains("txd")).First(), EntryStreamMode.MemoryStream))
             *      textures.Load(entryStream);
             *
             *  using (var farcArchive = BinaryFile.Load<FarcArchive>(filePath))
             *  using (var entryStream = farcArchive.Open(farcArchive.Entries.First(), EntryStreamMode.MemoryStream))
             *      stgpv.Load(entryStream, textures, texdb);
             * }
             *
             */

            if (Path.GetFileNameWithoutExtension(filePath).Contains("effpv"))
            {
                filePath = Path.GetDirectoryName(filePath) + "\\" + Path.GetFileNameWithoutExtension(filePath).Replace("effpv", "stgpv") + "hrc2.farc";
            }

            var texdb = new TextureDatabase();

            //using (var farcArchive = BinaryFile.Load<FarcArchive>(filePath))
            //using (var entryStream = farcArchive.Open(farcArchive.Entries.Where(c => c.Contains("txi")).First(), EntryStreamMode.MemoryStream))
            //   texdb.Load(entryStream);

            var objentry = new ObjectEntry();

            objentry.ArchiveFileName = Path.GetFileName(filePath).Replace("stgpv0", "stgpv8");
            objentry.FileName        = Path.GetFileNameWithoutExtension(filePath).Replace("stgpv0", "stgpv8") + "_obj.bin";
            objentry.Id              = FindUnusedID(objdb);
            objentry.Name            = Path.GetFileNameWithoutExtension(filePath).Replace("stgpv0", "stgpv8").ToUpper();
            objentry.TextureFileName = Path.GetFileNameWithoutExtension(filePath).Replace("stgpv0", "stgpv8") + "_tex.bin";

            int ground_id = -1;

            ushort counter = 1;

            foreach (var meshes in stgpv.Meshes)
            {
                meshes.SubMeshes.RemoveAll(x => x.Vertices == null || x.Vertices.Length == 0);
                meshes.Name = meshes.Name.Replace("STGPV0", "STGPV8");
                meshes.Name = meshes.Name.Replace("EFFPV", "STGPV");

                if (Path.GetFileName(filePath).Contains("hrc"))
                {
                    int pvid = int.Parse(Path.GetFileName(filePath).Substring(5, 3));

                    if (pvid < 200)
                    {
                        pvid = pvid + 800;
                    }

                    {
                        var check2 = divamods.Divamods.Where(c => c.pvid == pvid).FirstOrDefault();
                        if (check2 == null)
                        {
                            divamods.Divamods.Add(new pdaconversion.divamods(pvid));
                            Logs.WriteLine("objset: Created new PV at id " + pvid);
                            check2 = divamods.Divamods.Where(c => c.pvid == pvid).First();
                        }
                        check2.item_pv.Add(meshes.Name);
                        Logs.WriteLine("objset: Added item_pv for PV at id " + pvid + "," + meshes.Name);
                    }

                    if (pvid >= 800)
                    {
                        var check2 = divamods.Divamods.Where(c => c.pvid == (pvid - 100)).FirstOrDefault();
                        if (check2 == null)
                        {
                            divamods.Divamods.Add(new pdaconversion.divamods(pvid - 100));
                            Logs.WriteLine("objset: Created new PV at id " + (pvid - 100));
                            check2 = divamods.Divamods.Where(c => c.pvid == (pvid - 100)).First();
                        }
                        check2.item_pv.Add(meshes.Name);
                        Logs.WriteLine("objset: Added item_pv for PV at id " + (pvid - 100) + "," + meshes.Name);
                    }
                }

                var meshentry = new MeshEntry();
                meshes.Id      = counter;
                meshentry.Id   = (ushort)meshes.Id;
                meshentry.Name = meshes.Name;

                if (meshes.Name.Contains("GND"))
                {
                    ground_id = meshes.Id;
                }

                objentry.Meshes.Add(meshentry);

                if (doProcess)
                {
                    if (!debug)
                    {
                        /*
                         * foreach (var submeshes in meshes.SubMeshes)
                         * {
                         *  foreach (var indexTable in submeshes.IndexTables)
                         *  {
                         *      ushort[] triangleStrip = Stripifier.Stripify(indexTable.Indices);
                         *      if (triangleStrip != null)
                         *      {
                         *          indexTable.PrimitiveType = PrimitiveType.TriangleStrip;
                         *          indexTable.Indices = triangleStrip;
                         *      }
                         *  }
                         * }
                         */
                    }

                    //foreach (var textures in M)

                    foreach (var material in meshes.Materials)
                    {
                        if ((Path.GetFileName(filePath).Contains("hrc2")) || (Path.GetFileName(filePath).Contains("hrc")))
                        {
                            material.Shader         = "ITEM";
                            material.IsAlphaEnabled = false;
                            //material.Field00 = 0x00000001;
                            //material.Field02 = 0x00000A80;

                            //material.Diffuse.Field00 = 0x00000000;
                            //material.Diffuse.Field01 = 0x016400E1;
                            //material.Diffuse.Field02 = 0x000000F1;

                            MikuMikuLibrary.Misc.Color asdf = new MikuMikuLibrary.Misc.Color(0, 0, 0, 0);

                            material.SpecularColor = asdf;

                            //material.AmbientColor = asdf;
                            //material.EmissionColor = asdf;
                            //material.SpecularColor = asdf;

                            //material.Shininess = 1;

                            //material.Diffuse.Field00 = 0x00000000;
                            //material.Diffuse.Field01 = 0x002400E0;
                            //material.Diffuse.Field02 = 0x000000F1;

                            if (material.Ambient.TextureId == 1509989155)
                            {
                                material.Ambient.TextureId = -1;
                            }
                            if (material.Normal.TextureId == 1509989155)
                            {
                                material.Normal.TextureId = -1;
                            }
                            if (material.Specular.TextureId == 1509989155)
                            {
                                material.Specular.TextureId = -1;
                                material.SpecularColor      = asdf;
                            }
                            //else { material.Field00 = 0x0000002D; }

                            /*
                             *
                             * // this blacken the screen on STAGE SHADER
                             * material.Specular.Field01 = 0x002418C3;
                             * material.Specular.Field02 = 0x000000F3;
                             * material.Specular.Field05 = 1;
                             * material.Specular.Field06 = 1;
                             * material.Specular.Field11 = 1;
                             * material.Specular.Field16 = 1;
                             * material.Specular.Field21 = 1;
                             *
                             *
                             * material.Specular.TextureId = -1;
                             * material.Specular.Field01 = 0x00000000;
                             * material.Specular.Field02 = 0x000000F0;
                             * material.Specular.Field05 = 1;
                             * material.Specular.Field06 = 0;
                             * material.Specular.Field11 = 0;
                             * material.Specular.Field16 = 0;
                             * material.Specular.Field21 = 0;
                             *
                             * material.Reflection.TextureId = -1;
                             * material.Reflection.Field01 = 0x00000000;
                             * material.Reflection.Field02 = 0x000000F0;
                             * material.Reflection.Field05 = 1;
                             * material.Reflection.Field06 = 0;
                             * material.Reflection.Field11 = 0;
                             * material.Reflection.Field16 = 0;
                             * material.Reflection.Field21 = 0;
                             */

                            if (material.Reflection.TextureId == 1509989155)
                            {
                                material.Reflection.TextureId = -1;
                            }
                            if (material.ToonCurve.TextureId == 1509989155)
                            {
                                material.ToonCurve.TextureId = -1;
                            }
                            if (material.SpecularPower.TextureId == 1509989155)
                            {
                                material.SpecularPower.TextureId = -1;
                            }
                            if (material.Texture08.TextureId == 1509989155)
                            {
                                material.Texture08.TextureId = -1;
                            }
                        }
                        else
                        {
                            material.Shader = "BLINN";
                            //material.Field00 = 0x0000000D;
                            //material.Field02 = 0x00000A80;

                            MikuMikuLibrary.Misc.Color asdf = new MikuMikuLibrary.Misc.Color(0, 0, 0, 0);

                            //material.AmbientColor = asdf;
                            //material.EmissionColor = asdf;
                            //material.Shininess = 1;
                            //material.Diffuse.Field00 = 0x00000230;
                            //material.Diffuse.Field02 = 0x002418C3;

                            if (material.Ambient.TextureId == 1509989155)
                            {
                                material.Ambient.TextureId = -1;
                            }
                            if (material.Normal.TextureId == 1509989155)
                            {
                                material.Normal.TextureId = -1;
                            }
                            if (material.Specular.TextureId == 1509989155)
                            {
                                material.Specular.TextureId = -1;
                                material.SpecularColor      = asdf;
                            }
                            //else { material.Field00 = 0x0000002D; }

                            /*
                             *
                             * // this blacken the screen on STAGE SHADER
                             * material.Specular.Field01 = 0x002418C3;
                             * material.Specular.Field02 = 0x000000F3;
                             * material.Specular.Field05 = 1;
                             * material.Specular.Field06 = 1;
                             * material.Specular.Field11 = 1;
                             * material.Specular.Field16 = 1;
                             * material.Specular.Field21 = 1;
                             *
                             */

                            /*
                             * material.Specular.TextureId = -1;
                             * material.Specular.Field01 = 0x00000000;
                             * material.Specular.Field02 = 0x000000F0;
                             * material.Specular.Field05 = 5;
                             * material.Specular.Field06 = 0;
                             * material.Specular.Field11 = 0;
                             * material.Specular.Field16 = 0;
                             * material.Specular.Field21 = 0;
                             *
                             *
                             * material.Normal.Field01 = 0x00000000;
                             * material.Normal.Field02 = 0x000000F0;
                             * material.Normal.Field05 = 5;
                             * material.Normal.Field06 = 0;
                             * material.Normal.Field11 = 0;
                             * material.Normal.Field16 = 0;
                             * material.Normal.Field21 = 0;
                             *
                             *
                             * material.ToonCurve.TextureId = -1;
                             * material.ToonCurve.Field01 = 0x00000000;
                             * material.ToonCurve.Field02 = 0x000000F0;
                             * material.ToonCurve.Field05 = 5;
                             * material.ToonCurve.Field06 = 0;
                             * material.ToonCurve.Field11 = 0;
                             * material.ToonCurve.Field16 = 0;
                             * material.ToonCurve.Field21 = 0;
                             */

                            if (material.Reflection.TextureId == 1509989155)
                            {
                                material.Reflection.TextureId = -1;
                            }
                            if (material.ToonCurve.TextureId == 1509989155)
                            {
                                material.ToonCurve.TextureId = -1;
                            }
                            if (material.SpecularPower.TextureId == 1509989155)
                            {
                                material.SpecularPower.TextureId = -1;
                            }
                            if (material.Texture08.TextureId == 1509989155)
                            {
                                material.Texture08.TextureId = -1;
                            }
                        }
                    }
                }
                counter++;
            }

            stgpv.TextureSet.Format = BinaryFormat.DT;
            stgpv.Format            = BinaryFormat.DT;



            if (doProcess)
            {
                stgpv.Save("temp\\" + Path.GetFileNameWithoutExtension(filePath) + "_obj.bin", null, texturedb, null);
            }
            objdb.Objects.Add(objentry);

            if (Path.GetFileNameWithoutExtension(filePath).Count() == 8)
            {
                StageEntry stage = new StageEntry();
                stage.Id                  = FindUnusedID(staged);
                stage.Name                = Path.GetFileNameWithoutExtension(filePath).Replace("stgpv0", "stgpv8").ToUpper();
                stage.ObjectGroundId      = (short)ground_id;
                stage.ObjectGroundIdFlag  = (short)objentry.Id;
                stage.ObjectId3           = -1;
                stage.ObjectIdFlag3       = -1;
                stage.ObjectId5           = -1;
                stage.ObjectIdFlag5       = -1;
                stage.ObjectId7           = -1;
                stage.ObjectIdFlag7       = -1;
                stage.RingRectangleX      = -8;
                stage.RingRectangleY      = -8;
                stage.RingRectangleWidth  = 16;
                stage.RingRectangleHeight = 16;
                stage.RingRingHeight      = 0;
                stage.RingOutHeight       = -1000;
                stage.Field00             = 1;
                stage.Field11             = -1;
                stage.Field02             = -1;

                stage.LensFlareScaleX = -1;
                stage.LensFlareScaleY = -1;
                stage.LensFlareScaleZ = -1;

                stage.ObjectSkyId         = -1;
                stage.ObjectSkyIdFlag     = -1;
                stage.ObjectReflectId     = -1;
                stage.ObjectReflectIdFlag = -1;

                stage.CollisionFilePath = @"rom/STGTST_COLI.000.bin";

                stage.ObjectId1    = (short)objentry.Id;
                stage.StageEffect1 = StageEntry.StageEffect.Empty;
                stage.Auth3dName   = "EFF" + stage.Name;
                staged.Stages.Add(stage);
            }

            if (doProcess)
            {
                var newfarc = new FarcArchive();
                newfarc.Add(Path.GetFileNameWithoutExtension(filePath).Replace("stgpv0", "stgpv8") + "_obj.bin", "temp\\" + Path.GetFileNameWithoutExtension(filePath) + "_obj.bin");
                newfarc.Add(Path.GetFileNameWithoutExtension(filePath).Replace("stgpv0", "stgpv8") + "_tex.bin", "temp\\" + Path.GetFileNameWithoutExtension(filePath) + "_tex.bin");
                newfarc.Alignment    = 16;
                newfarc.IsCompressed = false;
                newfarc.Save(acpath + "\\rom\\objset\\" + Path.GetFileNameWithoutExtension(filePath).Replace("stgpv0", "stgpv8") + ".farc");
            }
        }