public NES(NesROM nesRom) { _nesRom = nesRom; CPU = new CPU(); InstructionSet = new InstructionSet(CPU); CPU.Reset(); PPU = new PPU(CPU); var mainWindowThread = new Thread(() => { var mainWindow = new MainWindow(CPU.Memory); mainWindow.ShowDialog(); }); mainWindowThread.Start(); var debuggerThread = new Thread(() => { Debugger = new Debugger(this); Debugger.Run(); }); debuggerThread.Start(); LoadDataToMemory(CPU.Memory, _nesRom.PRGROM, 0x8000); if (_nesRom.PRGROMSize == 0x4000) { LoadDataToMemory(CPU.Memory, _nesRom.PRGROM, 0xC000); } Execution = new AutoResetEvent(false); }
static void Main(string[] args) { NesROM nesRom = null; using (var openFileDialog = new OpenFileDialog()) { if (openFileDialog.ShowDialog() == DialogResult.OK) { nesRom = new NesROM(openFileDialog.FileName); } } if (nesRom != null) { var nes = new NES.NES(nesRom); nes.MainLoop(); } Console.ReadKey(); }