コード例 #1
0
ファイル: App.xaml.cs プロジェクト: RonnChyran/Soft64-Bryan
        public static void Main()
        {
            using (var file = File.Open("Config.json", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read))
            {
                /* Create an instance of the emulator machine */
                Machine machine = new Machine();

                /* Load configuration */
                try
                {
                    machine.ImportConfig(JsonConvert.DeserializeObject<ExpandoObject>(new StreamReader(file).ReadToEnd()));
                }
                catch
                {
                    logger.Trace("Config.json was not valid, skipped configuration merge");
                }
                finally
                {
                    /* Clear the configuration file */
                    file.SetLength(0);
                    file.Flush();
                }

                /* WPF Start */
                App app = new App();
                app.InitializeComponent();
                app.Run();

                /* Save configuration */
                var writer = new StreamWriter(file);
                writer.Write(JsonConvert.SerializeObject(machine.ExportConfig(), Formatting.Indented));
                writer.Flush();

                machine.Dispose();
            }
        }
コード例 #2
0
ファイル: BootTests.cs プロジェクト: RonnChyran/Soft64-Bryan
        private void TestBootSequence(Cartridge cart)
        {
            Machine machine = new Machine();
            machine.SystemBootMode = BootMode.HLE_IPL_OLD;
            machine.DeviceRCP.DevicePI.MountCartridge(cart);
            Debugger debugger = new Debugger();
            debugger.BreakOnBootMode = DebuggerBootEvent.PostBoot;
            debugger.DebugOnBreak = true;
            var mockedCPUEngine = new Mock<ExecutionEngine>();
            var mockedRCPEngine = new Mock<ExecutionEngine>();
            machine.DeviceCPU.Engine = mockedCPUEngine.Object;
            machine.DeviceRCP.Engine = mockedRCPEngine.Object;
            machine.Initialize();
            machine.Run();

            ExecutionState state = machine.DeviceCPU.State;

            /* CP0 Testing */
            Assert.Equal(0x0000001FUL, state.CP0Regs[CP0RegName.Random]);
            Assert.Equal(0x00005000UL, state.CP0Regs[CP0RegName.Count]);
            Assert.Equal(0x0000005CUL, state.CP0Regs[CP0RegName.Cause]);
            Assert.Equal(0x007FFFF0UL, state.CP0Regs[CP0RegName.Context]);
            Assert.Equal(0xFFFFFFFFUL, state.CP0Regs[CP0RegName.EPC]);
            Assert.Equal(0xFFFFFFFFUL, state.CP0Regs[CP0RegName.BadVAddr]);
            Assert.Equal(0xFFFFFFFFUL, state.CP0Regs[CP0RegName.ErrorEPC]);
            Assert.Equal(0x0006E463UL, state.CP0Regs[CP0RegName.Config]);
            Assert.Equal(0x34000000UL, state.CP0Regs[CP0RegName.SR]);

            /* PIF Testing */
            AssertPIFCodes(
                Cartridge.Current.RomImage.Region,
                Cartridge.Current.RomImage.BootRomInformation.CIC,
                state);

            debugger.Continue();
            machine.Stop();
            machine.Dispose();
        }