using System.Text; namespace SharpCreditsCrediter { public partial class MainForm : Form { private ROMFile? curROM; private string? curROMPath; public MainForm() { InitializeComponent(); } private void bLoadROM_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog() { Filter = "GBA ROMs (*.gba)|*.gba", Title = "Open the ROM" }; if (ofd.ShowDialog() == DialogResult.OK) { try { if (curROM != null) { curROM.changeFile(ofd.FileName); } else { curROM = new ROMFile(ofd.FileName); } curROMPath = ofd.FileName; bExtract.Enabled = bImport.Enabled = curROM.isLoaded(); rIsZM.Checked = curROM.getisZM(); rIsFusion.Checked = !curROM.getisZM(); MessageBox.Show("ROM loaded successfully.\nProbed game: " + (curROM.getisZM() ? "Zero Mission" : "Fusion"), "SCC", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { MessageBox.Show("Cannot load ROM: " + ex.Message); } } } private void bExtract_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog() { Filter = "Credits text (*.txt)|*.txt", Title = "Open the text file", CheckFileExists = false }; if (ofd.ShowDialog() == DialogResult.OK) { try { this.UseWaitCursor = true; FileStream creditsFile = new FileStream(ofd.FileName, FileMode.Create); #pragma warning disable CS8602 // if this button is enabled, curROM is already != null creditsFile.Write(Encoding.ASCII.GetBytes(curROM.getCredits())); #pragma warning restore CS8602 creditsFile.Dispose(); this.UseWaitCursor = false; MessageBox.Show("Credits exported successfully.", "SCC", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { this.UseWaitCursor = false; MessageBox.Show("Could not open file: " + ex.Message, "SCC", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } private void bImport_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog() { Filter = "Credits text (*.txt)|*.txt", Title = "Open the text file" }; if (ofd.ShowDialog() == DialogResult.OK) { try { StreamReader creditsFile = new StreamReader(ofd.FileName); OpenFileDialog ofdOutput = new OpenFileDialog() { Filter = "GBA ROMs (*.gba)|*.gba", Title = "Open the output ROM", CheckFileExists = false }; if (ofdOutput.ShowDialog() == DialogResult.OK) { this.UseWaitCursor = true; #pragma warning disable CS8602 // if this button is enabled, curROM #pragma warning disable CS8604 // and curROMPath are already != null curROM.Dispose(); File.Copy(curROMPath, ofdOutput.FileName, true); curROM.changeFile(ofdOutput.FileName); #pragma warning restore CS8604 if (curROM.writeCredits(creditsFile)) { this.UseWaitCursor = false; MessageBox.Show("Credits imported successfully.", "SCC", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { this.UseWaitCursor = false; MessageBox.Show("Failed to import the credits.", "SCC", MessageBoxButtons.OK, MessageBoxIcon.Error); } #pragma warning restore CS8602 curROM.changeFile(curROMPath); creditsFile.Dispose(); } } catch (Exception ex) { this.UseWaitCursor = false; MessageBox.Show("Could not open file: " + ex.Message, "SCC", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } } }