コード例 #1
0
        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);
        }
コード例 #2
0
        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();
        }