private void LoadROMInternal(string path) { var ext = Path.GetExtension(path).ToLower(); if (ext == ".rom") { byte[] rom = File.ReadAllBytes(path); _trainer.WriteMemory(ET3400.Trainer.Trainer.RomAddress, rom, rom.Length); } else if (ext == ".hex") { using (var stream = new FileStream(path, FileMode.Open, FileAccess.Read)) { var romLoader = new RomReader(stream); var data = romLoader.Read(); _trainer.WriteMemory(ET3400.Trainer.Trainer.RomAddress, data, data.Length); } } //var datPath = Path.Combine(Path.GetDirectoryName(path), Path.GetFileNameWithoutExtension(path) + ".dat"); //if (File.Exists(datPath)) //{ // using (var datfile = new FileStream(datPath, FileMode.Open, FileAccess.Read)) // { // var dat = new XmlSerializer(typeof(MemoryMap), new XmlRootAttribute("memorymap")); // var map = (MemoryMap)dat.Deserialize(datfile); // memoryMaps.Add(map); // } //} }
/// <summary> /// Main entry point /// </summary> /// <param name="args">Command line parameters</param> static public void Main(string[] args) { try { if (args?.Length != 1) { throw new ArgumentException("Usage: spaceinvaders <rom path>"); } Console.CursorVisible = false; using (Stream rom = RomReader.Read(args[0])) { Processor processor = Processor.Create(); Debugger.Instance.Mode = DebugMode.DisplayState | DebugMode.EnableLogging; processor.Execute(rom); } } catch (Exception ex) { Console.WriteLine(ex.Message); Console.ReadKey(); } }