static protected string RunExecutableAndGetOutput(string PspAutoTestsFolder, string FileName) { var OutputString = ""; GC.Collect(); var PspEmulatorContext = new PspEmulatorContext(PspConfig); ConsoleUtils.CaptureOutput(() => { PspEmulatorContext.SetInstanceType <PspMemory, NormalPspMemory>(); PspEmulatorContext.SetInstanceType <GpuImpl, GpuImplMock>(); PspEmulatorContext.SetInstanceType <PspAudioImpl, AudioImplMock>(); PspEmulatorContext.SetInstanceType <HleOutputHandler, HleOutputHandlerMock>(); var Start = DateTime.Now; PspEmulatorContext.GetInstance <HleModuleManager>(); var End = DateTime.Now; Console.WriteLine(End - Start); var GpuImpl = PspEmulatorContext.GetInstance <GpuImpl>(); GpuImpl.InitSynchronizedOnce(); var PspRunner = PspEmulatorContext.GetInstance <PspRunner>(); PspRunner.StartSynchronized(); { try { //PspRunner.CpuComponentThread.SetIso(PspAutoTestsFolder + "/../input/test.cso"); PspRunner.CpuComponentThread.SetIso(PspAutoTestsFolder + "/../input/cube.cso"); PspRunner.CpuComponentThread._LoadFile(FileName); if (!PspRunner.CpuComponentThread.StoppedEndedEvent.WaitOne(TimeSpan.FromSeconds(5))) { Console.Error.WriteLine("Timeout!"); } } catch (Exception Exception) { Console.Error.WriteLine(Exception); } } PspRunner.StopSynchronized(); }, //Capture: false Capture: true ); var HleOutputHandlerMock = (HleOutputHandlerMock)PspEmulatorContext.GetInstance <HleOutputHandler>(); OutputString = HleOutputHandlerMock.OutputString; return(OutputString); }
public void SetUp() { PspConfig = new PspConfig(); PspConfig.HleModulesDll = Assembly.GetExecutingAssembly(); PspEmulatorContext = new PspEmulatorContext(PspConfig); PspEmulatorContext.SetInstanceType<PspMemory, LazyPspMemory>(); PspEmulatorContext.SetInstanceType<GpuImpl, GpuImplNull>(); PspEmulatorContext.SetInstanceType<PspAudioImpl, AudioImplNull>(); Memory = PspEmulatorContext.GetInstance<PspMemory>(); ThreadManager = PspEmulatorContext.GetInstance<HleThreadManager>(); Processor = PspEmulatorContext.GetInstance<CpuProcessor>(); MipsAssembler = new MipsAssembler(new PspMemoryStream(Memory)); }
public static void ClassInit(TestContext context) { PspConfig = new PspConfig(); PspEmulatorContext = new PspEmulatorContext(PspConfig); PspEmulatorContext.SetInstanceType<PspMemory, LazyPspMemory>(); Memory = PspEmulatorContext.GetInstance<PspMemory>(); }
public void ElfLoaderConstructorTest() { var PspConfig = new PspConfig(); var PspEmulatorContext = new PspEmulatorContext(PspConfig); PspEmulatorContext.SetInstanceType <PspMemory, LazyPspMemory>(); var Memory = PspEmulatorContext.GetInstance <PspMemory>(); var MemoryStream = new PspMemoryStream(Memory); var MemoryPartition = new MemoryPartition(PspMemory.MainOffset, PspMemory.MainOffset + PspMemory.MainSize); var ElfLoader = new ElfLoader(); ElfLoader.Load(File.OpenRead("../../../TestInput/minifire.elf")); ElfLoader.AllocateAndWrite(MemoryStream, MemoryPartition); Assert.AreEqual(1, ElfLoader.ProgramHeaders.Length); Assert.AreEqual(3, ElfLoader.SectionHeaders.Length); Assert.AreEqual( "['','.rodata.sceModuleInfo']".Replace('\'', '"'), ElfLoader.SectionHeadersByName.Keys.ToJson() ); //ElfLoader.LoadAllocateMemory(MemoryPartition); //ElfLoader.LoadWriteToMemory(MemoryStream); //var ModuleInfo = ElfLoader.ModuleInfo; var PC = ElfLoader.Header.EntryPoint; //var GP = ModuleInfo.GP; Assert.AreEqual(0x08900008, (int)PC); //Assert.AreEqual(0x00004821, (int)GP); }
public void TestMethod1() { var Config = new PspConfig(); var PspEmulatorContext = new PspEmulatorContext(Config); PspEmulatorContext.SetInstanceType<PspMemory, LazyPspMemory>(); var PspMemory = PspEmulatorContext.GetInstance<PspMemory>(); var PspMemoryStream = new PspMemoryStream(PspMemory); var MipsAssembler = new MipsAssembler(PspMemoryStream); var DynarecFunctionCompilerTask = PspEmulatorContext.GetInstance<DynarecFunctionCompilerTask>(); var CpuProcessor = PspEmulatorContext.GetInstance<CpuProcessor>(); var CpuThreadState = new CpuThreadState(CpuProcessor); MipsAssembler.Assemble(@" .code 0x08000000 addi r1, r1, 1 jr r31 nop "); var DynarecFunction = DynarecFunctionCompilerTask.GetFunctionForAddress(PspMemory.MainSegment.Low); Assert.AreEqual(0, CpuThreadState.GPR[1]); DynarecFunction.Delegate(CpuThreadState); Assert.AreEqual(1, CpuThreadState.GPR[1]); }
public void ElfLoaderConstructorTest() { var PspConfig = new PspConfig(); var PspEmulatorContext = new PspEmulatorContext(PspConfig); PspEmulatorContext.SetInstanceType<PspMemory, LazyPspMemory>(); var Memory = PspEmulatorContext.GetInstance<PspMemory>(); var MemoryStream = new PspMemoryStream(Memory); var MemoryPartition = new MemoryPartition(PspMemory.MainOffset, PspMemory.MainOffset + PspMemory.MainSize); var ElfLoader = new ElfLoader(); ElfLoader.Load(File.OpenRead("../../../TestInput/minifire.elf")); ElfLoader.AllocateAndWrite(MemoryStream, MemoryPartition); Assert.AreEqual(1, ElfLoader.ProgramHeaders.Length); Assert.AreEqual(3, ElfLoader.SectionHeaders.Length); Assert.AreEqual( "['','.rodata.sceModuleInfo']".Replace('\'', '"'), ElfLoader.SectionHeadersByName.Keys.ToJson() ); //ElfLoader.LoadAllocateMemory(MemoryPartition); //ElfLoader.LoadWriteToMemory(MemoryStream); //var ModuleInfo = ElfLoader.ModuleInfo; var PC = ElfLoader.Header.EntryPoint; //var GP = ModuleInfo.GP; Assert.AreEqual(0x08900008, (int)PC); //Assert.AreEqual(0x00004821, (int)GP); }
public static void ClassInit(TestContext context) { PspConfig = new PspConfig(); PspEmulatorContext = new PspEmulatorContext(PspConfig); PspEmulatorContext.SetInstanceType <PspMemory, LazyPspMemory>(); Memory = PspEmulatorContext.GetInstance <PspMemory>(); }
public void SetUp() { PspConfig = new PspConfig(); PspEmulatorContext = new PspEmulatorContext(PspConfig); PspEmulatorContext.SetInstanceType<PspMemory, LazyPspMemory>(); Processor = PspEmulatorContext.GetInstance<CpuProcessor>(); MipsAssembler = new MipsAssembler(new PspMemoryStream(PspEmulatorContext.GetInstance<PspMemory>())); }
public void SetUp() { PspConfig = new PspConfig(); PspEmulatorContext = new PspEmulatorContext(PspConfig); PspEmulatorContext.SetInstanceType <PspMemory, LazyPspMemory>(); Processor = PspEmulatorContext.GetInstance <CpuProcessor>(); MipsAssembler = new MipsAssembler(new PspMemoryStream(PspEmulatorContext.GetInstance <PspMemory>())); }
public void SetUp() { var PspEmulatorContext = new PspEmulatorContext(new PspConfig()); PspEmulatorContext.SetInstanceType<PspMemory, LazyPspMemory>(); SetMocks(PspEmulatorContext); PspEmulatorContext.InjectDependencesTo(this); Initialize(); }
public void CreateDelegateTest() { var PspConfig = new PspConfig(); var PspEmulatorContext = new PspEmulatorContext(PspConfig); PspEmulatorContext.SetInstanceType<PspMemory, LazyPspMemory>(); var Memory = PspEmulatorContext.GetInstance<PspMemory>(); var Processor = PspEmulatorContext.GetInstance<CpuProcessor>(); var CpuThreadState = new CpuThreadState(Processor); var MipsEmiter = new MipsMethodEmiter(new MipsEmiter(), Processor, 0); CpuThreadState.GPR[1] = 1; CpuThreadState.GPR[2] = 2; CpuThreadState.GPR[3] = 3; MipsEmiter.OP_3REG_Unsigned(1, 2, 2, () => { MipsEmiter.SafeILGenerator.BinaryOperation(SafeBinaryOperator.AdditionSigned); }); MipsEmiter.OP_3REG_Unsigned(0, 2, 2, () => { MipsEmiter.SafeILGenerator.BinaryOperation(SafeBinaryOperator.AdditionSigned); }); MipsEmiter.OP_2REG_IMM_Signed(10, 0, 1000, () => { MipsEmiter.SafeILGenerator.BinaryOperation(SafeBinaryOperator.AdditionSigned); }); MipsEmiter.CreateDelegate()(CpuThreadState); Assert.AreEqual(4, CpuThreadState.GPR[1]); Assert.AreEqual(0, CpuThreadState.GPR[0]); Assert.AreEqual(1000, CpuThreadState.GPR[10]); }
public void CreateDelegateTest() { var PspConfig = new PspConfig(); var PspEmulatorContext = new PspEmulatorContext(PspConfig); PspEmulatorContext.SetInstanceType <PspMemory, LazyPspMemory>(); var Memory = PspEmulatorContext.GetInstance <PspMemory>(); var Processor = PspEmulatorContext.GetInstance <CpuProcessor>(); var CpuThreadState = new CpuThreadState(Processor); var MipsEmiter = new MipsMethodEmiter(new MipsEmiter(), Processor); CpuThreadState.GPR[1] = 1; CpuThreadState.GPR[2] = 2; CpuThreadState.GPR[3] = 3; MipsEmiter.OP_3REG_Unsigned(1, 2, 2, OpCodes.Add); MipsEmiter.OP_3REG_Unsigned(0, 2, 2, OpCodes.Add); MipsEmiter.OP_2REG_IMM_Signed(10, 0, 1000, OpCodes.Add); MipsEmiter.CreateDelegate()(CpuThreadState); Assert.AreEqual(4, CpuThreadState.GPR[1]); Assert.AreEqual(0, CpuThreadState.GPR[0]); Assert.AreEqual(1000, CpuThreadState.GPR[10]); }
public void TestMethod1() { var Config = new PspConfig(); var PspEmulatorContext = new PspEmulatorContext(Config); PspEmulatorContext.SetInstanceType<PspMemory, LazyPspMemory>(); var DynarecFunctionCompiler = PspEmulatorContext.GetInstance<DynarecFunctionCompiler>(); var CpuProcessor = PspEmulatorContext.GetInstance<CpuProcessor>(); var CpuThreadState = new CpuThreadState(CpuProcessor); var DynarecFunction = DynarecFunctionCompiler.CreateFunction( new InstructionArrayReader(MipsAssembler.StaticAssembleInstructions(@" addi r1, r1, 1 jr r31 nop ")), 0 ); Assert.AreEqual(0, CpuThreadState.GPR[1]); DynarecFunction.Delegate(CpuThreadState); Assert.AreEqual(1, CpuThreadState.GPR[1]); }
void CreateNewContextAndRemoveOldOne() { ContextInitializedFlag = false; ContextInitialized.Reset(); { // Stops the current context if it has one already. if (PspRunner != null) { PspRunner.StopSynchronized(); PspEmulatorContext.GetInstance <PspMemory>().Dispose(); PspEmulatorContext.GetInstance <GpuImpl>().StopSynchronized(); PspEmulatorContext.GetInstance <PspAudioImpl>().StopSynchronized(); PspRunner = null; PspEmulatorContext = null; GC.Collect(); } foreach (var FileName in new [] { Path.GetDirectoryName(typeof(Program).Assembly.Location) + @"\CSPspEmu.Hle.Modules.dll", Application.ExecutablePath, }) { if (File.Exists(FileName)) { PspConfig.HleModulesDll = Assembly.LoadFile(FileName); break; } } // PspEmulatorContext = new PspEmulatorContext(PspConfig); { PspEmulatorContext.SetInstanceType <GpuImpl, OpenglGpuImpl>(); PspEmulatorContext.SetInstanceType <PspAudioImpl, PspAudioOpenalImpl>(); #if RELEASE PspEmulatorContext.SetInstanceType <PspMemory, FastPspMemory>(); #else PspEmulatorContext.SetInstanceType <PspMemory, NormalPspMemory>(); #endif /* * if (PspConfig.UseFastAndUnsaferMemory) * { * PspEmulatorContext.SetInstanceType<PspMemory, FastPspMemory>(); * } * else * { * PspEmulatorContext.SetInstanceType<PspMemory, NormalPspMemory>(); * } */ } PspRunner = PspEmulatorContext.GetInstance <PspRunner>(); PspRunner.StartSynchronized(); var GpuImpl = PspEmulatorContext.GetInstance <GpuImpl>(); GpuImpl.InitSynchronizedOnce(); } ContextInitializedFlag = true; ContextInitialized.Set(); }
protected static string RunExecutableAndGetOutput(string PspAutoTestsFolder, string FileName, out string CapturedOutput, string FileNameBase) { var OutputString = ""; IHleIoDriver HostDriver = null; using (var PspEmulatorContext = new PspEmulatorContext(PspConfig)) { CapturedOutput = ConsoleUtils.CaptureOutput(() => { //Console.Error.WriteLine("[0]"); //PspEmulatorContext.SetInstanceType<PspMemory, NormalPspMemory>(); PspEmulatorContext.SetInstanceType<PspMemory, FastPspMemory>(); //PspEmulatorContext.SetInstanceType<GpuImpl, GpuImplMock>(); PspEmulatorContext.SetInstanceType<GpuImpl, OpenglGpuImpl>(); PspEmulatorContext.SetInstanceType<PspAudioImpl, AudioImplNull>(); PspEmulatorContext.SetInstanceType<HleOutputHandler, HleOutputHandlerMock>(); //Console.Error.WriteLine("[1]"); PspConfig.FileNameBase = FileNameBase; var Start = DateTime.UtcNow; PspEmulatorContext.GetInstance<HleModuleManager>(); var End = DateTime.UtcNow; Console.WriteLine(End - Start); //Console.Error.WriteLine("[a]"); // GPU -> NULL //PspEmulatorContext.SetInstanceType<GpuImpl>(typeof(GpuImplOpenglEs)); PspEmulatorContext.SetInstanceType<GpuImpl>(typeof(GpuImplNull)); var GpuImpl = PspEmulatorContext.GetInstance<GpuImpl>(); //GpuImpl.InitSynchronizedOnce(); //Console.Error.WriteLine("[b]"); var PspRunner = PspEmulatorContext.GetInstance<PspRunner>(); PspRunner.StartSynchronized(); //Console.Error.WriteLine("[c]"); { try { //PspRunner.CpuComponentThread.SetIso(PspAutoTestsFolder + "/../input/test.cso"); PspRunner.CpuComponentThread.SetIso(PspAutoTestsFolder + "/../input/cube.cso"); //Console.Error.WriteLine("[2]"); var HleIoManager = PspEmulatorContext.GetInstance<HleIoManager>(); HostDriver = HleIoManager.GetDriver("host:"); try { HostDriver.IoRemove(null, "/__testoutput.txt"); } catch { } try { HostDriver.IoRemove(null, "/__testerror.txt"); } catch { } PspRunner.CpuComponentThread._LoadFile(FileName); //Console.Error.WriteLine("[3]"); if (!PspRunner.CpuComponentThread.StoppedEndedEvent.WaitOne(TimeSpan.FromSeconds(10))) { Console.Error.WriteLine("Timeout!"); } } catch (Exception Exception) { Console.Error.WriteLine(Exception); } } PspRunner.StopSynchronized(); GC.Collect(); using (var test_output = HostDriver.OpenRead("/__testoutput.txt")) { OutputString = test_output.ReadAllContentsAsString(); } }, //Capture: false Capture: true ); //var HleOutputHandlerMock = (HleOutputHandlerMock)PspEmulatorContext.GetInstance<HleOutputHandler>(); //OutputString = HleOutputHandlerMock.OutputString; } return OutputString; }
void CreateNewContextAndRemoveOldOne() { ContextInitializedFlag = false; ContextInitialized.Reset(); { // Stops the current context if it has one already. if (PspRunner != null) { PspRunner.StopSynchronized(); PspEmulatorContext.GetInstance<PspMemory>().Dispose(); PspEmulatorContext.GetInstance<GpuImpl>().StopSynchronized(); PspEmulatorContext.GetInstance<PspAudioImpl>().StopSynchronized(); PspRunner = null; PspEmulatorContext = null; GC.Collect(); } PspConfig.HleModulesDll = typeof(HleModulesRoot).Assembly; /* foreach (var FileName in new [] { Path.GetDirectoryName(typeof(Program).Assembly.Location) + @"\CSPspEmu.Hle.Modules.dll", Application.ExecutablePath, }) { if (File.Exists(FileName)) { PspConfig.HleModulesDll = Assembly.LoadFile(FileName); break; } } */ // PspEmulatorContext = new PspEmulatorContext(PspConfig); { // GPU PspPluginImpl.SelectWorkingPlugin<GpuImpl>(PspEmulatorContext, typeof(OpenglGpuImpl), typeof(GpuImplSoft), typeof(GpuImplNull) ); // AUDIO PspPluginImpl.SelectWorkingPlugin<PspAudioImpl>(PspEmulatorContext, typeof(PspAudioOpenalImpl), typeof(PspAudioWaveOutImpl), typeof(AudioAlsaImpl), typeof(AudioImplNull) ); // Memory if (PspConfig.StoredConfig.UseFastMemory) { PspEmulatorContext.SetInstanceType<PspMemory, FastPspMemory>(); } else { PspEmulatorContext.SetInstanceType<PspMemory, NormalPspMemory>(); } } PspEmulatorContext.GetInstance<PspDisplay>().VBlankEventCall += new Action(PspEmulator_VBlankEventCall); PspRunner = PspEmulatorContext.GetInstance<PspRunner>(); PspRunner.StartSynchronized(); var GpuImpl = PspEmulatorContext.GetInstance<GpuImpl>(); GpuImpl.InitSynchronizedOnce(); } ContextInitializedFlag = true; ContextInitialized.Set(); }
protected override void SetMocks(PspEmulatorContext PspEmulatorContext) { PspEmulatorContext.SetInstanceType<PspRtc, PspRtcMock>(); (PspEmulatorContext.GetInstance<PspRtc>() as PspRtcMock).sceRtcTest = this; }
protected static string RunExecutableAndGetOutput(string PspAutoTestsFolder, string FileName) { var OutputString = ""; GC.Collect(); var PspEmulatorContext = new PspEmulatorContext(PspConfig); ConsoleUtils.CaptureOutput(() => { PspEmulatorContext.SetInstanceType<PspMemory, NormalPspMemory>(); PspEmulatorContext.SetInstanceType<GpuImpl, GpuImplMock>(); PspEmulatorContext.SetInstanceType<PspAudioImpl, AudioImplMock>(); PspEmulatorContext.SetInstanceType<HleOutputHandler, HleOutputHandlerMock>(); var Start = DateTime.Now; PspEmulatorContext.GetInstance<HleModuleManager>(); var End = DateTime.Now; Console.WriteLine(End - Start); var GpuImpl = PspEmulatorContext.GetInstance<GpuImpl>(); GpuImpl.InitSynchronizedOnce(); var PspRunner = PspEmulatorContext.GetInstance<PspRunner>(); PspRunner.StartSynchronized(); { try { //PspRunner.CpuComponentThread.SetIso(PspAutoTestsFolder + "/../input/test.cso"); PspRunner.CpuComponentThread.SetIso(PspAutoTestsFolder + "/../input/cube.cso"); PspRunner.CpuComponentThread._LoadFile(FileName); if (!PspRunner.CpuComponentThread.StoppedEndedEvent.WaitOne(TimeSpan.FromSeconds(5))) { Console.Error.WriteLine("Timeout!"); } } catch (Exception Exception) { Console.Error.WriteLine(Exception); } } PspRunner.StopSynchronized(); }, //Capture: false Capture: true ); var HleOutputHandlerMock = (HleOutputHandlerMock)PspEmulatorContext.GetInstance<HleOutputHandler>(); OutputString = HleOutputHandlerMock.OutputString; return OutputString; }
protected override void SetMocks(PspEmulatorContext PspEmulatorContext) { PspEmulatorContext.SetInstanceType<PspRtc, PspRtcMock>(); }
void CreateNewContextAndRemoveOldOne() { ContextInitializedFlag = false; ContextInitialized.Reset(); { // Stops the current context if it has one already. if (PspRunner != null) { PspRunner.StopSynchronized(); PspEmulatorContext.GetInstance<PspMemory>().Dispose(); PspEmulatorContext.GetInstance<GpuImpl>().StopSynchronized(); PspEmulatorContext.GetInstance<PspAudioImpl>().StopSynchronized(); PspRunner = null; PspEmulatorContext = null; GC.Collect(); } foreach (var FileName in new [] { Path.GetDirectoryName(typeof(Program).Assembly.Location) + @"\CSPspEmu.Hle.Modules.dll", Application.ExecutablePath, }) { if (File.Exists(FileName)) { PspConfig.HleModulesDll = Assembly.LoadFile(FileName); break; } } // PspEmulatorContext = new PspEmulatorContext(PspConfig); { PspEmulatorContext.SetInstanceType<GpuImpl, OpenglGpuImpl>(); PspEmulatorContext.SetInstanceType<PspAudioImpl, PspAudioOpenalImpl>(); #if RELEASE PspEmulatorContext.SetInstanceType<PspMemory, FastPspMemory>(); #else PspEmulatorContext.SetInstanceType<PspMemory, NormalPspMemory>(); #endif /* if (PspConfig.UseFastAndUnsaferMemory) { PspEmulatorContext.SetInstanceType<PspMemory, FastPspMemory>(); } else { PspEmulatorContext.SetInstanceType<PspMemory, NormalPspMemory>(); } */ } PspRunner = PspEmulatorContext.GetInstance<PspRunner>(); PspRunner.StartSynchronized(); var GpuImpl = PspEmulatorContext.GetInstance<GpuImpl>(); GpuImpl.InitSynchronizedOnce(); } ContextInitializedFlag = true; ContextInitialized.Set(); }