private void bgmGenAddButton_Click(object sender, EventArgs e) { // Add a new element BgmEntry bgmEntry = new BgmEntry(); FormBgmEntry newEntry = new FormBgmEntry(bgmEntry); bgmFormEntries.Insert(currentBgmIndex + 1, newEntry); bgmGenBgmListBox.SetSelected(currentBgmIndex + 1, true); }
private void addBgmDlcExcelDataForEntry(int bgmDlcSlot, FormBgmEntry formEntry, ExcelWorksheet bgmDlcWorksheet, int bgmExcelRow) { bgmDlcWorksheet.Cells["A" + bgmExcelRow].Value = formEntry.bgmTitle; bgmDlcWorksheet.Cells["B" + bgmExcelRow].Value = bgmDlcSlot; bgmDlcWorksheet.Cells["C" + bgmExcelRow].Value = formEntry.entry.id.ToString("X4"); bgmDlcWorksheet.Cells["D" + bgmExcelRow].Value = Hasher.hash(String.Format("bgm/{0}", formEntry.entry.internalFileName)) + ".edat"; bgmDlcWorksheet.Cells["E" + bgmExcelRow].Value = Hasher.hash( String.Format("dlc/bgm/dlc_{0}.bin", bgmDlcSlot.ToString("D3"))) + ".edat"; bgmDlcWorksheet.Cells["F" + bgmExcelRow].Value = Hasher.hash( String.Format("text/jp/dlc/bgm_{0}t.bin", bgmDlcSlot.ToString("D3"))) + ".edat"; }
private void button10_Click(object sender, EventArgs e) { // Restart data currentBgmIndex = -1; // Get Controller String controllerFilePath = FormUtils.openGenericFileDialog(); if (controllerFilePath != null) { String controllerFileName = System.IO.Path.GetFileName(controllerFilePath); // Needed to locate original BGM DLC data String controllerFolder = Directory.GetParent(controllerFilePath).FullName; try { // Getting data from BgmTable BgmTable bgmTable = new BgmTable(controllerFilePath); // Attempt to crack BGM DLC Slot from filename int dlcSlotNumber = 0; ArrayList bgmTitles = new ArrayList(); foreach (int i in Enumerable.Range(1, 999)) { if (controllerFileName.Contains(Hasher.hash(String.Format("dlc/bgm/dlc_{0}.bin", i.ToString("D3"))))) { dlcSlotNumber = i; break; } } if (dlcSlotNumber != 0) { // Try getting strings from text file in DLC slot String textHashedFileName = Hasher.hash(String.Format("text/jp/dlc/bgm_{0}t.bin", dlcSlotNumber.ToString("D3"))) + ".edat"; String textHashedFilePath = System.IO.Path.Combine(controllerFolder, textHashedFileName); if (File.Exists(textHashedFilePath)) { bgmTitles = MessFileReader.decodeDLCText(@textHashedFilePath); } } // Getting Form BGM entries BindingList<FormBgmEntry> formEntries = new BindingList<FormBgmEntry>(); foreach (int i in Enumerable.Range(0, bgmTable.entries.Count)) { BgmEntry entry = bgmTable.entries[i]; FormBgmEntry formEntry = new FormBgmEntry(entry); String hashedInternalFileName = Hasher.hash(String.Format("bgm/{0}", entry.internalFileName)) + ".edat"; String hashedInternalFilePath = System.IO.Path.Combine(controllerFolder, hashedInternalFileName); if (File.Exists(hashedInternalFilePath)) { formEntry.filePath = hashedInternalFilePath; } if (bgmTitles.Count > 0 && bgmTitles.Count > i) { formEntry.bgmTitle = (String)bgmTitles[i]; } formEntries.Add(formEntry); } // Set DLC slot if any bgmGenDlcSlotComboBox.SelectedIndex = (dlcSlotNumber != -1) ? dlcSlotNumber - 1 : 0; // Bind data bindDataAndEnableForm(formEntries); } catch (Exception ex) { Logger.Log("MainFormBgmGenUserControl", ex); MessageBoxEx.Show(this, "There was a problem while processing the BGM table. Make sure that you selected the right file"); } } }
private void bgmGenNewButton_Click(object sender, EventArgs e) { BindingList<FormBgmEntry> newBgmFormEntries = new BindingList<FormBgmEntry>(); // Setup slot to 1 by default bgmGenDlcSlotComboBox.SelectedIndex = 0; // Add new dummy entry and select it BgmEntry bgmEntry = new BgmEntry(); FormBgmEntry newEntry = new FormBgmEntry(bgmEntry); newBgmFormEntries.Add(newEntry); bindDataAndEnableForm(newBgmFormEntries); }
private string getBgmDlcTextDataForEntry(int bgmDlcSlot, FormBgmEntry formEntry) { StringBuilder builder = new StringBuilder(); builder.AppendLine("BGM Title: " + formEntry.bgmTitle); builder.AppendLine("BGM Slot: " + bgmDlcSlot); builder.AppendLine("BGM ID: " + formEntry.entry.id.ToString("X4")); builder.AppendLine("BGM File: " + Hasher.hash(String.Format("bgm/{0}", formEntry.entry.internalFileName)) + ".edat"); builder.AppendLine("BGM Slot File: " + Hasher.hash(String.Format("dlc/bgm/dlc_{0}.bin", bgmDlcSlot.ToString("D3"))) + ".edat"); builder.AppendLine("BGM Slot Text File: " + Hasher.hash(String.Format("text/jp/dlc/bgm_{0}t.bin", bgmDlcSlot.ToString("D3"))) + ".edat"); builder.AppendLine("--------------------------------------"); return builder.ToString(); }
private void reportSelectedFolder(String folder) { // First check: check if there are files in the folder, and check if the folder exists, just in case DirectoryInfo dirInfo = new DirectoryInfo(folder); if (!dirInfo.Exists) { MessageBoxEx.Show(this, "The selected folder does not exist"); return; } else if (dirInfo.GetFiles().Length == 0) { MessageBoxEx.Show(this, "The selected folder hasn't got any files"); return; } // Clean TextBox reporterDataTextBox.Text = ""; // Get a worksheet to write excel values initExcelWorkbook(); int characterExcelRow = 2; int bgmExcelRow = 2; // Character DLC checking // Iterate through all possible DLC Object Table names try { foreach (int i in Enumerable.Range(1, 999)) { String objectTableHashFileName = Hasher.hash("dlc/obj/dlc_" + i.ToString("d3") + "oe.bin") + ".edat"; String pathToSearch = System.IO.Path.Combine(folder, objectTableHashFileName); if (File.Exists(pathToSearch)) { // We have found an object table inside the folder; scan it ObjectTable hashedFileObjectTable = new ObjectTable(pathToSearch); foreach (ObjectEntry entry in hashedFileObjectTable.entries) { // Print results in TextBox String textData = getCharacterDlcTextDataForEntry(folder, i, objectTableHashFileName, entry); reporterDataTextBox.AppendText(textData); // And add them to Excel sheet addCharacterDlcExcelDataForEntry(folder, i, objectTableHashFileName, entry, characterDlcWorksheet, characterExcelRow); characterDlcWorksheet.Cells[characterDlcWorksheet.Dimension.Address].AutoFitColumns(); characterExcelRow++; } } } } catch (Exception e) { MessageBoxEx.Show(this, "There was a problem with one or some of the files in the selected folder"); Logger.Log(TAG, e); return; } // BGM DLC Checking try { foreach (int i in Enumerable.Range(1, 999)) { String bgmTableHashFileName = Hasher.hash(String.Format("dlc/bgm/dlc_{0}.bin", i.ToString("D3"))) + ".edat"; String pathToSearch = System.IO.Path.Combine(folder, bgmTableHashFileName); if (File.Exists(pathToSearch)) { // We have found a Bgm table inside the folder; try to find the corresponding // strings from text file in DLC slot ArrayList bgmTitles = new ArrayList(); String textHashedFileName = Hasher.hash(String.Format("text/jp/dlc/bgm_{0}t.bin", i.ToString("D3"))) + ".edat"; String textHashedFilePath = System.IO.Path.Combine(folder, textHashedFileName); if (File.Exists(textHashedFilePath)) { bgmTitles = MessFileReader.decodeDLCText(@textHashedFilePath); } BgmTable bgmTable = new BgmTable(pathToSearch); // Getting Form BGM entries List<FormBgmEntry> formEntries = new List<FormBgmEntry>(); foreach (int j in Enumerable.Range(0, bgmTable.entries.Count)) { BgmEntry entry = bgmTable.entries[j]; FormBgmEntry formEntry = new FormBgmEntry(entry); if (bgmTitles.Count > j) { formEntry.bgmTitle = (String)bgmTitles[j]; } formEntries.Add(formEntry); } foreach (FormBgmEntry entry in formEntries) { // Print results in TextBox String textData = getBgmDlcTextDataForEntry(i, entry); reporterDataTextBox.AppendText(textData); // And add them to Excel sheet addBgmDlcExcelDataForEntry(i, entry, bgmDlcWorksheet, bgmExcelRow); bgmDlcWorksheet.Cells[bgmDlcWorksheet.Dimension.Address].AutoFitColumns(); bgmExcelRow++; } } } } catch (Exception e) { MessageBoxEx.Show(this, "There was a problem with one or some of the files in the selected folder"); Logger.Log(TAG, e); return; } // If the reporter text box has any data, then that means that there's data in the folder if (!reporterDataTextBox.Text.Trim().Equals("")) { reporterSaveToExcelButton.Enabled = true; reporterFolderLabel.Text = folder; MessageBoxEx.Show(this, "DLC read OK!!"); } else { MessageBoxEx.Show(this, "Couldn't find DLC in this folder"); } }