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(); }