Exemple #1
0
 public void CloseForm()
 {
     this.Close();
     if (Form1.IsBW)
     {
         if (Directory.Exists(Form1.workingFolder + @"data\a\2\3\inBld\header"))
         {
             Directory.Delete(Form1.workingFolder + @"data\a\2\3\inBld\header", true);
             Directory.Delete(Form1.workingFolder + @"data\a\2\3\inBld\model", true);
         }
         Directory.Delete(Form1.workingFolder + @"data\a\2\2\exBld\header", true);
         Directory.Delete(Form1.workingFolder + @"data\a\2\2\exBld\model", true);
         Narc.FromFolder(Form1.workingFolder + @"data\a\2\2\exBld").Save(Form1.workingFolder + @"data\a\2\2\9");
         Narc.FromFolder(Form1.workingFolder + @"data\a\2\3\inBld").Save(Form1.workingFolder + @"data\a\2\3\0");
         Directory.Delete(Form1.workingFolder + @"data\a\2\2\exBld", true);
         Directory.Delete(Form1.workingFolder + @"data\a\2\3\inBld", true);
     }
     else
     {
         if (Directory.Exists(Form1.workingFolder + @"data\a\2\2\inBld\header"))
         {
             Directory.Delete(Form1.workingFolder + @"data\a\2\2\inBld\header", true);
             Directory.Delete(Form1.workingFolder + @"data\a\2\2\inBld\model", true);
         }
         Directory.Delete(Form1.workingFolder + @"data\a\2\2\exBld\header", true);
         Directory.Delete(Form1.workingFolder + @"data\a\2\2\exBld\model", true);
         Narc.FromFolder(Form1.workingFolder + @"data\a\2\2\exBld").Save(Form1.workingFolder + @"data\a\2\2\5");
         Narc.FromFolder(Form1.workingFolder + @"data\a\2\2\inBld").Save(Form1.workingFolder + @"data\a\2\2\6");
         Directory.Delete(Form1.workingFolder + @"data\a\2\2\exBld", true);
         Directory.Delete(Form1.workingFolder + @"data\a\2\2\inBld", true);
     }
 }
        public static void ForceUnpackNarc(int id)
        {
            string[] narcPaths         = RomInfo.narcPaths;
            string[] extractedNarcDirs = RomInfo.extractedNarcDirs;

            (string pathToPacked, string pathToExtracted) = (narcPaths[id], extractedNarcDirs[id]);
            Narc.Open(RomInfo.workDir + pathToPacked).ExtractToFolder(pathToExtracted);
        }
        public static void ForceUnpackNarc(int id)
        {
            string[] narcPaths         = RomInfo.narcPaths;
            string[] extractedNarcDirs = RomInfo.extractedNarcDirs;

            var tuple = Tuple.Create(narcPaths[id], extractedNarcDirs[id]);

            Narc.Open(workDir + tuple.Item1).ExtractToFolder(tuple.Item2);
        }
 private void Form3_2_Trainer_Class_Editor_FormClosed(object sender, FormClosedEventArgs e)
 {
     if (Form1.gameID == 0x45414441 || Form1.gameID == 0x45415041 || Form1.gameID == 0x53414441 || Form1.gameID == 0x53415041 || Form1.gameID == 0x46414441 || Form1.gameID == 0x46415041 || Form1.gameID == 0x49414441 || Form1.gameID == 0x49415041 || Form1.gameID == 0x44414441 || Form1.gameID == 0x44415041 || Form1.gameID == 0x4A414441 || Form1.gameID == 0x4A415041 || Form1.gameID == 0x4B414441 || Form1.gameID == 0x4B415041 || Form1.gameID == 0x45555043 || Form1.gameID == 0x53555043 || Form1.gameID == 0x46555043 || Form1.gameID == 0x49555043 || Form1.gameID == 0x44555043 || Form1.gameID == 0x4A555043 || Form1.gameID == 0x4B555043)
     {
         Narc.FromFolder(Form1.workingFolder + @"data\poketool\trgra\trfgra").Save(Form1.workingFolder + @"data\poketool\trgra\trfgra.narc");
         Directory.Delete(Form1.workingFolder + @"data\poketool\trgra\trfgra", true);
     }
     if (Form1.gameID == 0x454B5049 || Form1.gameID == 0x45475049 || Form1.gameID == 0x534B5049 || Form1.gameID == 0x53475049 || Form1.gameID == 0x464B5049 || Form1.gameID == 0x46475049 || Form1.gameID == 0x494B5049 || Form1.gameID == 0x49475049 || Form1.gameID == 0x444B5049 || Form1.gameID == 0x44475049 || Form1.gameID == 0x4A4B5049 || Form1.gameID == 0x4A475049 || Form1.gameID == 0x4B4B5049 || Form1.gameID == 0x4B475049)
     {
         Narc.FromFolder(Form1.workingFolder + @"data\a\0\5\trfgra").Save(Form1.workingFolder + @"data\a\0\5\8");
         Directory.Delete(Form1.workingFolder + @"data\a\0\5\trfgra", true);
     }
 }
        public static void UnpackNarc(int id)
        {
            string[] narcPaths         = RomInfo.narcPaths;
            string[] extractedNarcDirs = RomInfo.extractedNarcDirs;

            (string pathToPacked, string pathToExtracted)tuple = (narcPaths[id], extractedNarcDirs[id]);
            DirectoryInfo di = new DirectoryInfo(tuple.Item2);

            if (!di.Exists || di.GetFiles().Length == 0)
            {
                Narc.Open(RomInfo.workDir + tuple.pathToPacked).ExtractToFolder(tuple.pathToExtracted);
            }
        }
        public static void ForceUnpackNarcs(List <int> IDs, ToolStripProgressBar progress)
        {
            string[] narcPaths         = RomInfo.narcPaths;
            string[] extractedNarcDirs = RomInfo.extractedNarcDirs;

            foreach (int id in IDs)
            {
                var tuple = Tuple.Create(narcPaths[id], extractedNarcDirs[id]);
                Narc.Open(workDir + tuple.Item1).ExtractToFolder(tuple.Item2);

                if (progress != null)
                {
                    try {
                        progress.Value++;
                    } catch (ArgumentOutOfRangeException) { }
                }
            }
        }
        public static void ForceUnpackNarcs(List <int> IDs, ToolStripProgressBar progress)
        {
            string[] narcPaths         = RomInfo.narcPaths;
            string[] extractedNarcDirs = RomInfo.extractedNarcDirs;

            foreach (int id in IDs)
            {
                (string pathToPacked, string pathToExtracted) = (narcPaths[id], extractedNarcDirs[id]);
                Narc.Open(RomInfo.workDir + pathToPacked).ExtractToFolder(pathToExtracted);

                if (progress != null)
                {
                    try {
                        progress.Value++;
                    } catch (ArgumentOutOfRangeException) { }
                }
            }
        }
Exemple #8
0
        private Stream getARM9(int type)
        {
            Stream ARM9 = new ClosableMemoryStream();

            if (type == 0 || type == 1)
            {
                ARM9 = main.actualNds.getARM9();
            }
            else if (type == 2)
            {
                ARM9 = File.OpenRead("Textures/arm9.bin");
            }
            else if (type == 3)
            {
                var tableNarc = new Narc();
                tableNarc.LoadNarc(new BinaryReader(main.actualNds.getFat().getFileStreamAt((short)main.Sys.Nodes[0].Nodes[0].Nodes[0].Nodes[1].Nodes[2].Tag)));
                ARM9 = tableNarc.figm.fileData[0];
            }
            return(ARM9);
        }
Exemple #9
0
        private void Form6_Building_List_Load(object sender, EventArgs e)
        {
            Form2 bldEditor = new Form2();

            bldEditor.Show(this);
            if (Form1.IsBW)
            {
                Narc.Open(Form1.workingFolder + @"data\a\2\2\9").ExtractToFolder(Form1.workingFolder + @"data\a\2\2\exBld");
                Narc.Open(Form1.workingFolder + @"data\a\2\3\0").ExtractToFolder(Form1.workingFolder + @"data\a\2\3\inBld");
            }
            else
            {
                Narc.Open(Form1.workingFolder + @"data\a\2\2\5").ExtractToFolder(Form1.workingFolder + @"data\a\2\2\exBld");
                Narc.Open(Form1.workingFolder + @"data\a\2\2\6").ExtractToFolder(Form1.workingFolder + @"data\a\2\2\inBld");
            }
            bldPath = Form1.workingFolder + @"data\a\2\2\exBld";
            for (int i = 0; i < Directory.GetFiles(bldPath).Length; i++)
            {
                comboBox1.Items.Add(rm.GetString("buildingPackList") + i);
            }
            comboBox1.SelectedIndex = 0;
        }
        public static void UnpackNarcs(List <int> IDs, ToolStripProgressBar progress)
        {
            string[] narcPaths         = RomInfo.narcPaths;
            string[] extractedNarcDirs = RomInfo.extractedNarcDirs;

            foreach (int id in IDs)
            {
                (string pathToPacked, string pathToExtracted) = (narcPaths[id], extractedNarcDirs[id]);

                DirectoryInfo di = new DirectoryInfo(pathToExtracted);
                if (!di.Exists || di.GetFiles().Length == 0)
                {
                    Narc.Open(RomInfo.workDir + pathToPacked).ExtractToFolder(pathToExtracted);
                }

                if (progress != null)
                {
                    try {
                        progress.Value++;
                    } catch (ArgumentOutOfRangeException) { }
                }
            }
        }
Exemple #11
0
        private static void SaveAll(string prefix, Entry entry)
        {
            var name = string.IsNullOrEmpty(entry.Name) ? prefix : Path.Combine(prefix, entry.Name);

            if (entry.IsFile)
            {
                Console.WriteLine($"saving {name}");
                Directory.CreateDirectory(prefix);
                var f    = new FileStream(name, FileMode.Create);
                var data = (Slice <byte>)entry.Data;
                f.Write(data.Array, data.Offset, data.Count);
                f.Flush();
                f.Close();
                if (entry.Magic == "NARC")
                {
                    var narcPath = name + "_narc";
                    var narcData = entry.Data.Value;
                    narcData.BigEndian = false;
                    try
                    {
                        var narc = new Narc(new Segment(narcData));
                        SaveAll(narcPath, narc.FileTable.Root);
                    }
                    catch (Exception e)
                    {
                        log.Error($"failed to parse NARC {name}");
                        log.Error(e);
                    }
                }
            }

            foreach (var e in entry.Entries)
            {
                SaveAll(name, e);
            }
        }
 private void Form3_2_Trainer_Class_Editor_Load(object sender, EventArgs e)
 {
     if (Form1.gameID == 0x45414441 || Form1.gameID == 0x45415041 || Form1.gameID == 0x53414441 || Form1.gameID == 0x53415041 || Form1.gameID == 0x46414441 || Form1.gameID == 0x46415041 || Form1.gameID == 0x49414441 || Form1.gameID == 0x49415041 || Form1.gameID == 0x44414441 || Form1.gameID == 0x44415041 || Form1.gameID == 0x4A414441 || Form1.gameID == 0x4A415041 || Form1.gameID == 0x4B414441 || Form1.gameID == 0x4B415041)
     {
         path = Form1.workingFolder + @"data\msgdata\msg\0560";
         Narc.Open(Form1.workingFolder + @"data\poketool\trgra\trfgra.narc").ExtractToFolder(Form1.workingFolder + @"data\poketool\trgra\trfgra");
         spritePath = Form1.workingFolder + @"data\poketool\trgra\trfgra";
     }
     if (Form1.gameID == 0x45555043 || Form1.gameID == 0x53555043 || Form1.gameID == 0x46555043 || Form1.gameID == 0x49555043 || Form1.gameID == 0x44555043 || Form1.gameID == 0x4A555043 || Form1.gameID == 0x4B555043)
     {
         path = Form1.workingFolder + @"data\msgdata\pl_msg\0619";
         Narc.Open(Form1.workingFolder + @"data\poketool\trgra\trfgra.narc").ExtractToFolder(Form1.workingFolder + @"data\poketool\trgra\trfgra");
         spritePath = Form1.workingFolder + @"data\poketool\trgra\trfgra";
     }
     if (Form1.gameID == 0x454B5049 || Form1.gameID == 0x45475049 || Form1.gameID == 0x534B5049 || Form1.gameID == 0x53475049 || Form1.gameID == 0x464B5049 || Form1.gameID == 0x46475049 || Form1.gameID == 0x494B5049 || Form1.gameID == 0x49475049 || Form1.gameID == 0x444B5049 || Form1.gameID == 0x44475049)
     {
         path = Form1.workingFolder + @"data\a\0\2\text\0730";
         Narc.Open(Form1.workingFolder + @"data\a\0\5\8").ExtractToFolder(Form1.workingFolder + @"data\a\0\5\trfgra");
         spritePath = Form1.workingFolder + @"data\a\0\5\trfgra";
     }
     if (Form1.gameID == 0x4A4B5049 || Form1.gameID == 0x4A475049 || Form1.gameID == 0x4B4B5049 || Form1.gameID == 0x4B475049)
     {
         path = Form1.workingFolder + @"data\a\0\2\text\0720";
         Narc.Open(Form1.workingFolder + @"data\a\0\5\8").ExtractToFolder(Form1.workingFolder + @"data\a\0\5\trfgra");
         spritePath = Form1.workingFolder + @"data\a\0\5\trfgra";
     }
     #region Read Trainer Class Names
     BinaryReader readText = new BinaryReader(File.OpenRead(path));
     readText.BaseStream.Position = 0x0;
     stringClassCount             = (int)readText.ReadUInt16();
     initialKey = (int)readText.ReadUInt16();
     int   key1          = (initialKey * 0x2FD) & 0xFFFF;
     int   key2          = 0;
     int   realKey       = 0;
     bool  specialCharON = false;
     int[] currentOffset = new int[stringClassCount];
     int[] currentSize   = new int[stringClassCount];
     int   car           = 0;
     for (int i = 0; i < stringClassCount; i++) // Reads and stores string offsets and sizes
     {
         key2             = (key1 * (i + 1) & 0xFFFF);
         realKey          = key2 | (key2 << 16);
         currentOffset[i] = ((int)readText.ReadUInt32()) ^ realKey;
         currentSize[i]   = ((int)readText.ReadUInt32()) ^ realKey;
     }
     for (int i = 0; i < stringClassCount; i++) // Adds new string
     {
         key1 = (0x91BD3 * (i + 1)) & 0xFFFF;
         readText.BaseStream.Position = currentOffset[i];
         string pokemonText = "";
         for (int j = 0; j < currentSize[i]; j++) // Adds new characters to string
         {
             car = ((int)readText.ReadUInt16()) ^ key1;
             #region Special Characters
             if (car == 0xE000 || car == 0x25BC || car == 0x25BD || car == 0xFFFE || car == 0xFFFF)
             {
                 if (car == 0xE000)
                 {
                     pokemonText += @"\n";
                 }
                 if (car == 0x25BC)
                 {
                     pokemonText += @"\r";
                 }
                 if (car == 0x25BD)
                 {
                     pokemonText += @"\f";
                 }
                 if (car == 0xFFFE)
                 {
                     pokemonText  += @"\v";
                     specialCharON = true;
                 }
                 if (car == 0xFFFF)
                 {
                     pokemonText += "";
                 }
             }
             #endregion
             else
             {
                 if (specialCharON == true)
                 {
                     pokemonText  += car.ToString("X4");
                     specialCharON = false;
                 }
                 else
                 {
                     string character = getChar.GetString(car.ToString("X4"));
                     pokemonText += character;
                     if (character == null)
                     {
                         pokemonText += @"\x" + car.ToString("X4");
                     }
                 }
             }
             key1 += 0x493D;
             key1 &= 0xFFFF;
         }
         classNames.Add(pokemonText);
     }
     readText.Close();
     for (int i = 0; i < stringClassCount; i++)
     {
         comboBox1.Items.Add(i + ": " + classNames[i]);
     }
     #endregion
     comboBox1.SelectedIndex = 0;
 }
Exemple #13
0
        public static void ApplicationExit(object sender, EventArgs e)
        {
            if (gameID == 0x45414441 || gameID == 0x45415041 || gameID == 0x53414441 || gameID == 0x53415041 || gameID == 0x46414441 || gameID == 0x46415041 || gameID == 0x49414441 || gameID == 0x49415041 || gameID == 0x44414441 || gameID == 0x44415041 || gameID == 0x4B414441 || gameID == 0x4B415041)
            {
                Narc.FromFolder(workingFolder + @"data\fielddata\mapmatrix\map_matrix\").Save(workingFolder + @"data\fielddata\mapmatrix\map_matrix.narc");
                Narc.FromFolder(workingFolder + @"data\fielddata\land_data\land_data_release").Save(workingFolder + @"data\fielddata\land_data\land_data_release.narc");
                Narc.FromFolder(workingFolder + @"data\fielddata\build_model\build_model").Save(workingFolder + @"data\fielddata\build_model\build_model.narc");
                Narc.FromFolder(workingFolder + @"data\fielddata\areadata\area_map_tex\map_tex_set").Save(workingFolder + @"data\fielddata\areadata\area_map_tex\map_tex_set.narc");
                Narc.FromFolder(workingFolder + @"data\fielddata\areadata\area_build_model\areabm_texset").Save(workingFolder + @"data\fielddata\areadata\area_build_model\areabm_texset.narc");
                Narc.FromFolder(workingFolder + @"data\msgdata\msg\").Save(workingFolder + @"data\msgdata\msg.narc");
                Narc.FromFolder(workingFolder + @"data\fielddata\script\scr_seq_release").Save(workingFolder + @"data\fielddata\script\scr_seq_release.narc");
                Narc.FromFolder(workingFolder + @"data\fielddata\eventdata\zone_event_release").Save(workingFolder + @"data\fielddata\eventdata\zone_event_release.narc");
                Narc.FromFolder(workingFolder + @"data\fielddata\areadata\area_data").Save(workingFolder + @"data\fielddata\areadata\area_data.narc");
                Narc.FromFolder(workingFolder + @"data\fielddata\areadata\area_build_model\area_build").Save(workingFolder + @"data\fielddata\areadata\area_build_model\area_build.narc");
                Directory.Delete(workingFolder + @"data\fielddata\mapmatrix\map_matrix", true);
                Directory.Delete(workingFolder + @"data\fielddata\land_data\land_data_release", true);
                Directory.Delete(workingFolder + @"data\fielddata\build_model\build_model", true);
                Directory.Delete(workingFolder + @"data\fielddata\areadata\area_map_tex\map_tex_set", true);
                Directory.Delete(workingFolder + @"data\fielddata\areadata\area_build_model\areabm_texset", true);
                Directory.Delete(workingFolder + @"data\msgdata\msg", true);
                Directory.Delete(workingFolder + @"data\fielddata\script\scr_seq_release", true);
                Directory.Delete(workingFolder + @"data\fielddata\eventdata\zone_event_release", true);
                Directory.Delete(workingFolder + @"data\fielddata\areadata\area_data", true);
                Directory.Delete(workingFolder + @"data\fielddata\areadata\area_build_model\area_build", true);
            }
            if (gameID == 0x4A414441 || gameID == 0x4A415041)
            {
                Narc.FromFolder(workingFolder + @"data\fielddata\mapmatrix\map_matrix\").Save(workingFolder + @"data\fielddata\mapmatrix\map_matrix.narc");
                Narc.FromFolder(workingFolder + @"data\fielddata\build_model\build_model").Save(workingFolder + @"data\fielddata\build_model\build_model.narc");
                Narc.FromFolder(workingFolder + @"data\fielddata\areadata\area_map_tex\map_tex_set").Save(workingFolder + @"data\fielddata\areadata\area_map_tex\map_tex_set.narc");
                Narc.FromFolder(workingFolder + @"data\fielddata\areadata\area_build_model\areabm_texset").Save(workingFolder + @"data\fielddata\areadata\area_build_model\areabm_texset.narc");
                Narc.FromFolder(workingFolder + @"data\msgdata\msg\").Save(workingFolder + @"data\msgdata\msg.narc");
                Narc.FromFolder(workingFolder + @"data\fielddata\land_data\land_data").Save(workingFolder + @"data\fielddata\land_data\land_data.narc");
                Narc.FromFolder(workingFolder + @"data\fielddata\script\scr_seq").Save(workingFolder + @"data\fielddata\script\scr_seq.narc");
                Narc.FromFolder(workingFolder + @"data\fielddata\eventdata\zone_event").Save(workingFolder + @"data\fielddata\eventdata\zone_event.narc");
                Narc.FromFolder(workingFolder + @"data\fielddata\areadata\area_data").Save(workingFolder + @"data\fielddata\areadata\area_data.narc");
                Narc.FromFolder(workingFolder + @"data\fielddata\areadata\area_build_model\area_build").Save(workingFolder + @"data\fielddata\areadata\area_build_model\area_build.narc");
                Directory.Delete(workingFolder + @"data\fielddata\mapmatrix\map_matrix\", true);
                Directory.Delete(workingFolder + @"data\fielddata\build_model\build_model", true);
                Directory.Delete(workingFolder + @"data\fielddata\areadata\area_map_tex\map_tex_set", true);
                Directory.Delete(workingFolder + @"data\fielddata\areadata\area_build_model\areabm_texset", true);
                Directory.Delete(workingFolder + @"data\msgdata\msg", true);
                Directory.Delete(workingFolder + @"data\fielddata\land_data\land_data", true);
                Directory.Delete(workingFolder + @"data\fielddata\script\scr_seq", true);
                Directory.Delete(workingFolder + @"data\fielddata\eventdata\zone_event", true);
                Directory.Delete(workingFolder + @"data\fielddata\areadata\area_data", true);
                Directory.Delete(workingFolder + @"data\fielddata\areadata\area_build_model\area_build", true);
            }

            if (gameID == 0x45555043 || gameID == 0x53555043 || gameID == 0x46555043 || gameID == 0x49555043 || gameID == 0x44555043 || gameID == 0x4A555043 || gameID == 0x4B555043)
            {
                Narc.FromFolder(workingFolder + @"data\fielddata\mapmatrix\map_matrix\").Save(workingFolder + @"data\fielddata\mapmatrix\map_matrix.narc");
                Narc.FromFolder(workingFolder + @"data\fielddata\land_data\land_data").Save(workingFolder + @"data\fielddata\land_data\land_data.narc");
                Narc.FromFolder(workingFolder + @"data\fielddata\build_model\build_model").Save(workingFolder + @"data\fielddata\build_model\build_model.narc");
                Narc.FromFolder(workingFolder + @"data\fielddata\areadata\area_build_model\areabm_texset").Save(workingFolder + @"data\fielddata\areadata\area_build_model\areabm_texset.narc");
                Narc.FromFolder(workingFolder + @"data\fielddata\areadata\area_map_tex\map_tex_set").Save(workingFolder + @"data\fielddata\areadata\area_map_tex\map_tex_set.narc");
                Narc.FromFolder(workingFolder + @"data\msgdata\pl_msg\").Save(workingFolder + @"data\msgdata\pl_msg.narc");
                Narc.FromFolder(workingFolder + @"data\fielddata\script\scr_seq").Save(workingFolder + @"data\fielddata\script\scr_seq.narc");
                Narc.FromFolder(workingFolder + @"data\fielddata\eventdata\zone_event").Save(workingFolder + @"data\fielddata\eventdata\zone_event.narc");
                Narc.FromFolder(workingFolder + @"data\fielddata\areadata\area_data").Save(workingFolder + @"data\fielddata\areadata\area_data.narc");
                Narc.FromFolder(workingFolder + @"data\fielddata\areadata\area_build_model\area_build").Save(workingFolder + @"data\fielddata\areadata\area_build_model\area_build.narc");
                Directory.Delete(workingFolder + @"data\fielddata\mapmatrix\map_matrix\", true);
                Directory.Delete(workingFolder + @"data\fielddata\land_data\land_data", true);
                Directory.Delete(workingFolder + @"data\fielddata\build_model\build_model", true);
                Directory.Delete(workingFolder + @"data\fielddata\areadata\area_map_tex\map_tex_set", true);
                Directory.Delete(workingFolder + @"data\fielddata\areadata\area_build_model\areabm_texset", true);
                Directory.Delete(workingFolder + @"data\msgdata\pl_msg", true);
                Directory.Delete(workingFolder + @"data\fielddata\script\scr_seq", true);
                Directory.Delete(workingFolder + @"data\fielddata\eventdata\zone_event", true);
                Directory.Delete(workingFolder + @"data\fielddata\areadata\area_data", true);
                Directory.Delete(workingFolder + @"data\fielddata\areadata\area_build_model\area_build", true);
            }
            if (gameID == 0x454B5049 || gameID == 0x45475049 || gameID == 0x534B5049 || gameID == 0x53475049 || gameID == 0x464B5049 || gameID == 0x46475049 || gameID == 0x494B5049 || gameID == 0x49475049 || gameID == 0x444B5049 || gameID == 0x44475049 || gameID == 0x4A4B5049 || gameID == 0x4A475049 || gameID == 0x4B4B5049 || gameID == 0x4B475049)
            {
                Narc.FromFolder(workingFolder + @"data\a\0\4\matrix\").Save(workingFolder + @"data\a\0\4\1");
                Narc.FromFolder(workingFolder + @"data\a\0\6\map\").Save(workingFolder + @"data\a\0\6\5");
                Narc.FromFolder(workingFolder + @"data\a\0\4\building\").Save(workingFolder + @"data\a\0\4\0");
                Narc.FromFolder(workingFolder + @"data\a\0\4\texture\").Save(workingFolder + @"data\a\0\4\4");
                Narc.FromFolder(workingFolder + @"data\a\0\7\textureBld\").Save(workingFolder + @"data\a\0\7\0");
                Narc.FromFolder(workingFolder + @"data\a\0\2\text\").Save(workingFolder + @"data\a\0\2\7");
                Narc.FromFolder(workingFolder + @"data\a\0\1\script\").Save(workingFolder + @"data\a\0\1\2");
                Narc.FromFolder(workingFolder + @"data\a\0\3\event\").Save(workingFolder + @"data\a\0\3\2");
                Directory.Delete(workingFolder + @"data\a\0\4\matrix\", true);
                Directory.Delete(workingFolder + @"data\a\0\6\map\", true);
                Directory.Delete(workingFolder + @"data\a\0\4\building\", true);
                Directory.Delete(workingFolder + @"data\a\0\4\texture\", true);
                Directory.Delete(workingFolder + @"data\a\0\7\textureBld\", true);
                Directory.Delete(workingFolder + @"data\a\0\2\text\", true);
                Directory.Delete(workingFolder + @"data\a\0\1\script\", true);
                Directory.Delete(workingFolder + @"data\a\0\3\event\", true);
            }
            if (isBW == true)
            {
                Narc.FromFolder(workingFolder + @"data\a\0\0\maps\").Save(workingFolder + @"data\a\0\0\8");
                Narc.FromFolder(workingFolder + @"data\a\0\1\headers\").Save(workingFolder + @"data\a\0\1\2");
                Narc.FromFolder(workingFolder + @"data\a\0\0\matrix\").Save(workingFolder + @"data\a\0\0\9");
                Narc.FromFolder(workingFolder + @"data\a\0\1\tilesets\").Save(workingFolder + @"data\a\0\1\4");
                Narc.FromFolder(workingFolder + @"data\a\1\7\bldtilesets").Save(workingFolder + @"data\a\1\7\6");
                Narc.FromFolder(workingFolder + @"data\a\1\7\bld2tilesets").Save(workingFolder + @"data\a\1\7\7");
                Narc.FromFolder(workingFolder + @"data\a\0\0\texts\").Save(workingFolder + @"data\a\0\0\2");
                Narc.FromFolder(workingFolder + @"data\a\0\0\texts2\").Save(workingFolder + @"data\a\0\0\3");
                Narc.FromFolder(workingFolder + @"data\a\0\5\scripts\").Save(workingFolder + @"data\a\0\5\7");
                Directory.Delete(workingFolder + @"data\a\0\0\maps\", true);
                Directory.Delete(workingFolder + @"data\a\0\1\headers\", true);
                Directory.Delete(workingFolder + @"data\a\0\0\matrix\", true);
                Directory.Delete(workingFolder + @"data\a\0\1\tilesets\", true);
                Directory.Delete(workingFolder + @"data\a\1\7\bldtilesets", true);
                Directory.Delete(workingFolder + @"data\a\1\7\bld2tilesets", true);
                Directory.Delete(workingFolder + @"data\a\0\0\texts\", true);
                Directory.Delete(workingFolder + @"data\a\0\0\texts2\", true);
                Directory.Delete(workingFolder + @"data\a\0\5\scripts\", true);
            }
            if (isB2W2 == true)
            {
                Narc.FromFolder(workingFolder + @"data\a\0\0\maps\").Save(workingFolder + @"data\a\0\0\8");
                Narc.FromFolder(workingFolder + @"data\a\0\1\headers\").Save(workingFolder + @"data\a\0\1\2");
                Narc.FromFolder(workingFolder + @"data\a\0\0\matrix\").Save(workingFolder + @"data\a\0\0\9");
                Narc.FromFolder(workingFolder + @"data\a\0\1\tilesets\").Save(workingFolder + @"data\a\0\1\4");
                Narc.FromFolder(workingFolder + @"data\a\1\7\bldtilesets").Save(workingFolder + @"data\a\1\7\4");
                Narc.FromFolder(workingFolder + @"data\a\1\7\bld2tilesets").Save(workingFolder + @"data\a\1\7\5");
                Narc.FromFolder(workingFolder + @"data\a\0\0\texts\").Save(workingFolder + @"data\a\0\0\2");
                Narc.FromFolder(workingFolder + @"data\a\0\0\texts2\").Save(workingFolder + @"data\a\0\0\3");
                Narc.FromFolder(workingFolder + @"data\a\0\5\scripts\").Save(workingFolder + @"data\a\0\5\6");
                Directory.Delete(workingFolder + @"data\a\0\0\maps\", true);
                Directory.Delete(workingFolder + @"data\a\0\1\headers\", true);
                Directory.Delete(workingFolder + @"data\a\0\0\matrix\", true);
                Directory.Delete(workingFolder + @"data\a\0\1\tilesets\", true);
                Directory.Delete(workingFolder + @"data\a\1\7\bldtilesets", true);
                Directory.Delete(workingFolder + @"data\a\1\7\bld2tilesets", true);
                Directory.Delete(workingFolder + @"data\a\0\0\texts\", true);
                Directory.Delete(workingFolder + @"data\a\0\0\texts2\", true);
                Directory.Delete(workingFolder + @"data\a\0\5\scripts\", true);
            }
        }