private static void RUNTest(string inFile, bool dumpHex = false)
        {
            Directory.CreateDirectory("Dump");
            diagDataList = ASBTools.getDialogueText(inFile);
            Console.WriteLine("Parsing " + inFile);

            if (!dumpHex)
            {
                List <ASBTools.ScriptData> ops = AKB148GASBLib.ASBTools.getScript(inFile);
                using (BinaryWriter b = new BinaryWriter(File.Open("Dump/" + Path.GetFileName(inFile) + ".txt", FileMode.Create)))
                {
                    foreach (ASBTools.ScriptData opc in ops)
                    {
                        b.Write(Encoding.UTF8.GetBytes(opcodeMeaning(opc, inFile)));
                        b.Write(Encoding.UTF8.GetBytes(Environment.NewLine));
                    }
                }
            }
            else
            {
                byte[] data = ASBTools.getScriptRaw(inFile);
                using (BinaryWriter b = new BinaryWriter(File.Open(Path.GetFileName(inFile) + ".HEX.txt", FileMode.Create)))
                {
                    foreach (byte by in data)
                    {
                        b.Write(Encoding.UTF8.GetBytes(by.ToString("X2") + " "));
                    }
                    b.Write(Encoding.UTF8.GetBytes(Environment.NewLine));
                }
            }
        }
示例#2
0
        private void button1_Click(object sender, EventArgs e)
        {
            if (
                MessageBox.Show("Are you sure you want to overwrite:\n'" + currentFile + "'?", "WARNING!!",
                                MessageBoxButtons.OKCancel) == DialogResult.OK)
            {
                var dlist = new List <dialog>();
                foreach (DataGridViewRow dr in dataGridView1.Rows)
                {
                    var item = new dialog();
                    item.offset = (long)dr.Cells["offset"].Value;
                    item.size   = (int)dr.Cells["size"].Value;
                    item.text   = dr.Cells["text"].Value.ToString();
                    item.text   = item.text.Replace("<LINEEND>", Encoding.UTF8.GetString(new byte[] { 0x0A }));
                    item.text   = item.text.Replace("<END>", Encoding.UTF8.GetString(new byte[] { 0x00 }));
                    dlist.Add(item);
                }

                if (!ASBTools.injectDialogList(currentFile, dlist))
                {
                    MessageBox.Show("An error occurred while inserting!", "ERROR", MessageBoxButtons.OK);
                }
            }
            MessageBox.Show("Done.", "Done.", MessageBoxButtons.OK);
        }
示例#3
0
        private void loadASB()
        {
            Script = new List <scriptFileData>();
            string filenm = dataGridView1.Rows[selectedRowIndex].Cells[0].Value.ToString();
            List <ASBTools.ScriptData> sd = ASBTools.getScript(filenm);

            for (int i = 0; i < sd.Count; i++)
            {
                if (sd[i].OPCode.ToString("X4") == "4B29" && sd[i].paramNum == 3)
                {
                    scriptFileData sfd = new scriptFileData();
                    sfd.audioFilename = DefaultDir + ASBTools.getDialogFromOffset(filenm, sd[i].paramList[2], true) + ".at3";
                    sfd.Text          = ASBTools.getDialogFromOffset(filenm, sd[i + 1].paramList[0], true);
                    sfd.Text          = sfd.Text.Replace("<LINEEND>", Environment.NewLine);
                    Script.Add(sfd);
                }
            }

            if (Script.Count == 0)
            {
                label1.Text = "No Dialogue to display.";
            }
            else
            {
                label1.Text = Script[indexer].Text;
            }
            button2.Enabled = true;
        }
示例#4
0
        private static void Insert(string cmdFile, string inFile)
        {
            List <dialog> dList = new List <dialog>();

            using (StreamReader file = new StreamReader(cmdFile))
            {
                while (!file.EndOfStream)
                {
                    dialog d1 = new dialog();

                    string   s     = file.ReadLine();
                    string[] split = s.Split(';');
                    d1.offset = Convert.ToInt64(split[0]);
                    d1.size   = Convert.ToInt32(split[1]);
                    d1.text   = split[2];
                    d1.text   = d1.text.Replace("<LINEEND>", Encoding.UTF8.GetString(new byte[] { 0x0A }));
                    d1.text   = d1.text.Replace("<END>", Encoding.UTF8.GetString(new byte[] { 0x00 }));
                    dList.Add(d1);
                }
            }
            Console.WriteLine("Writing to {0}", inFile);
            if (!ASBTools.injectDialogList(inFile, dList))
            {
                Console.WriteLine("ERROR!!!!!! - Inject failed...\n");
            }
        }
示例#5
0
        private static void Dump(string inFile, string outFile, bool eventOnly = false, bool raw = false)
        {
            List <dialog> dlist;

            if (eventOnly)
            {
                dlist = ASBTools.getDialogList(inFile, true, true);
            }
            else
            {
                if (raw)
                {
                    dlist = ASBTools.getDialogListRAW(inFile, true);
                }
                else
                {
                    dlist = ASBTools.getDialogList(inFile, true);
                }
            }
            using (BinaryWriter writer = new BinaryWriter(File.Open(outFile, FileMode.Create)))
            {
                foreach (dialog dl in dlist)
                {
                    writer.Write(Encoding.UTF8.GetBytes(dl.offset.ToString()));
                    writer.Write(Encoding.UTF8.GetBytes(";"));
                    writer.Write(Encoding.UTF8.GetBytes(dl.size.ToString()));
                    writer.Write(Encoding.UTF8.GetBytes(";"));
                    writer.Write(Encoding.UTF8.GetBytes(dl.text));
                    writer.Write(Encoding.UTF8.GetBytes(Environment.NewLine));
                }
            }
        }
示例#6
0
        private static void FolderDump(string asbFolder, string outFolder, bool eventOnly = false, bool raw = false)
        {
            string[] asbFiles = Directory.GetFiles(asbFolder);
            int      total    = asbFiles.Count();
            int      current  = 1;

            Parallel.ForEach(asbFiles, asbfileName =>
            {
                try
                {
                    List <dialog> dlist;
                    if (eventOnly)
                    {
                        dlist = ASBTools.getDialogList(asbfileName, true, true);
                    }
                    else
                    {
                        if (raw)
                        {
                            dlist = ASBTools.getDialogListRAW(asbfileName, true);
                        }
                        else
                        {
                            dlist = ASBTools.getDialogList(asbfileName, true);
                        }
                    }
                    string outfile = outFolder + "\\" + Path.GetFileNameWithoutExtension(asbfileName) + ".txt";
                    using (BinaryWriter writer = new BinaryWriter(File.Open(outfile, FileMode.Create)))
                    {
                        foreach (dialog dl in dlist)
                        {
                            writer.Write(Encoding.UTF8.GetBytes(dl.offset.ToString()));
                            writer.Write(Encoding.UTF8.GetBytes(";"));
                            writer.Write(Encoding.UTF8.GetBytes(dl.size.ToString()));
                            writer.Write(Encoding.UTF8.GetBytes(";"));
                            writer.Write(Encoding.UTF8.GetBytes(dl.text));
                            writer.Write(Encoding.UTF8.GetBytes(Environment.NewLine));
                        }
                    }
                }
                finally
                {
                    Interlocked.Increment(ref current);
                    lock (fLock)
                    {
                        Console.SetCursorPosition(0, 0);
                        Console.CursorTop       = 0;
                        Console.ForegroundColor = ConsoleColor.White;
                        Console.Write("FILE: {0}\r", asbfileName);
                        DrawProgressBar(current, total, 36, '■');
                    }
                }
            });
        }
示例#7
0
        private static void FolderInsert(string cmdFolder, string asbFolder)
        {
            string[] cmdFiles = Directory.GetFiles(cmdFolder);
            int      total    = cmdFiles.Count();
            int      current  = 0;

            Parallel.ForEach(cmdFiles, cmdfileName =>
            {
                try
                {
                    List <dialog> dList = new List <dialog>();
                    using (StreamReader file = new StreamReader(cmdfileName))
                    {
                        while (!file.EndOfStream)
                        {
                            dialog d1 = new dialog();

                            string s       = file.ReadLine();
                            string[] split = s.Split(';');
                            d1.offset      = Convert.ToInt64(split[0]);
                            d1.size        = Convert.ToInt32(split[1]);
                            d1.text        = split[2];
                            d1.text        = d1.text.Replace("<LINEEND>", Encoding.UTF8.GetString(new byte[] { 0x0A }));
                            d1.text        = d1.text.Replace("<END>", Encoding.UTF8.GetString(new byte[] { 0x00 }));
                            dList.Add(d1);
                        }
                    }
                    string outfile = asbFolder + "\\" + Path.GetFileNameWithoutExtension(cmdfileName) + ".asb";
                    Console.WriteLine("Writing to {0}", outfile);

                    if (!ASBTools.injectDialogList(outfile, dList))
                    {
                        Console.WriteLine("ERROR!!!!!! - Inject failed...\n");
                    }
                }
                finally
                {
                    Interlocked.Increment(ref current);
                    Console.SetCursorPosition(0, 0);
                    Console.CursorTop       = 0;
                    Console.ForegroundColor = ConsoleColor.White;
                    Console.Write("FILE: {0}\r", cmdfileName);
                    DrawProgressBar(current, total, 36, '■');
                }
            });
        }
示例#8
0
        private void loadDialog()
        {
            // Create an instance of the open file dialog box.
            var openFileDialog1 = new OpenFileDialog();

            // Set filter options and filter index.
            openFileDialog1.Filter      = "AKB 1/48 Guam ASB File (.asb)|*.asb";
            openFileDialog1.FilterIndex = 1;

            // Process input if the user clicked OK.
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                currentFile = openFileDialog1.FileName;
                var dlist = ASBTools.getDialogList(openFileDialog1.FileName, true, checkBox1.Checked);
                dataGridView1.ReadOnly   = true;
                dataGridView1.DataSource = dlist;
                dataGridView1.AutoResizeColumns();
            }
        }