private void BuildChr(string projectFolder, AsmProject project, NesCartridge cartridge) { var outputDirectory = Path.Combine(projectFolder, cartridge.ChrBuildPath); if (!Directory.Exists(outputDirectory)) { Directory.CreateDirectory(outputDirectory); } var chrFilePath = string.Format(@"{0}\{1}", outputDirectory, cartridge.ChrFile); using (var chrFile = File.Create(chrFilePath)) { foreach (var bank in cartridge.ChrBanks) { foreach (var source in bank.Sources) { if (!(source.Pipeline is ChrPipeline)) { continue; } using (var read = File.OpenRead(((ChrPipeline)source.Pipeline).ChrOutput)) { var bufferSize = (int)read.Length; var chrData = new byte[bufferSize]; read.Read(chrData, 0, bufferSize); chrFile.Write(chrData, 0, bufferSize); } } // TODO: Confirm bank size (8KB) } chrFile.Close(); } }
bool timer_zero_pulse; //the single pulse timer #endregion Fields #region Constructors public Mapper(NesEngine theEngine, ref NesCartridge theCartridge) { myEngine = theEngine; mapperCartridge = theCartridge; current_prg_rom_page = new uint[8]; current_chr_rom_page = new uint[8]; timer_irq_enabled = false; }
public ConfigurationSettings(NesCartridge configuration, AsmProject project) { InitializeComponent(); Project = project; ConfigurationName.Text = configuration.Name; OutputFile.Text = configuration.Filename; GenerateMapFile.Checked = configuration.MapFile != null; ConfigurationFile.Text = configuration.LinkerConfigFile; CalculateSnesChecksum.Checked = configuration.CalculateChecksum; Symbols.Text = string.Join(Environment.NewLine, configuration.Symbols); }
private void okButton_Click(object sender, EventArgs e) { var configurationName = ConfigurationSettings.ConfigurationName.Text; if (ConfigurationSettings.Project.BuildConfigurations.Any(c => c.Name == configurationName)) { MessageBox.Show(string.Format("A build configuration with the name '{0}' already exists.", configurationName)); return; } Configuration = new NesCartridge(); if (ConfigurationSettings.SetConfigurationSettings(Configuration)) { DialogResult = DialogResult.OK; Close(); } }
private void btnLoadRom_Click(object sender, EventArgs e) { if (openFileDialog.ShowDialog() != DialogResult.OK) { return; } using (var stream = openFileDialog.OpenFile()) using (var memoryStream = new MemoryStream()) { stream.CopyTo(memoryStream); var bytes = memoryStream.ToArray(); _nesCartridge = new NesCartridge(bytes); chrRomControl.NesCartridge = _nesCartridge; txtRomTitle.Text = openFileDialog.SafeFileName; _nes.SetCartridge(_nesCartridge); } _nes.Reset(); cpuControl.Enabled = true; cpuControl.Disassemble(); cpuControl.UpdateState(); }
public bool SetConfigurationSettings(NesCartridge configuration) { if (!IsValid()) { return(false); } var outputFile = OutputFile.Text.Replace('\\', '/'); var buildPath = Path.GetDirectoryName(outputFile); if (string.IsNullOrEmpty(buildPath)) { buildPath = ""; } else { buildPath = buildPath.Replace('\\', '/') + "/"; } configuration.Name = ConfigurationName.Text; configuration.Filename = outputFile; configuration.DebugFile = buildPath + Path.GetFileNameWithoutExtension(outputFile) + ".dbg"; configuration.LinkerConfigFile = ConfigurationFile.Text; configuration.BuildPath = buildPath + "obj"; configuration.MapFile = GenerateMapFile.Checked ? buildPath + Path.GetFileNameWithoutExtension(outputFile) + ".map.txt" : null; configuration.Symbols = GetSymbols().ToList(); configuration.ChrBuildPath = null; configuration.ChrFile = null; configuration.PrgFile = null; configuration.PrgBuildPath = null; configuration.CalculateChecksum = CalculateSnesChecksum.Checked; return(true); }
public ConfigurationSelection(NesCartridge configuration) { Configuration = configuration; }