Example #1
0
        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);
        }
Example #2
0
 public static void ClassInit(TestContext context)
 {
     PspConfig          = new PspConfig();
     PspEmulatorContext = new PspEmulatorContext(PspConfig);
     PspEmulatorContext.SetInstanceType <PspMemory, LazyPspMemory>();
     Memory = PspEmulatorContext.GetInstance <PspMemory>();
 }
Example #3
0
        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);
        }
Example #4
0
 /// <summary>
 ///
 /// </summary>
 public override void InitializeComponent()
 {
     this.Config       = PspEmulatorContext.PspConfig;
     this.Memory       = PspEmulatorContext.GetInstance <PspMemory>();
     this.TextureCache = PspEmulatorContext.GetInstance <TextureCache>();
     this.VertexReader = new VertexReader();
 }
Example #5
0
        public override void InitializeComponent()
        {
            this.IsRunning     = true;
            this.CpuProcessor  = PspEmulatorContext.GetInstance <CpuProcessor>();
            this.GpuProcessor  = PspEmulatorContext.GetInstance <GpuProcessor>();
            this.PspAudio      = PspEmulatorContext.GetInstance <PspAudio>();
            this.PspConfig     = PspEmulatorContext.PspConfig;
            this.PspRtc        = PspEmulatorContext.GetInstance <PspRtc>();
            this.PspDisplay    = PspEmulatorContext.GetInstance <PspDisplay>();
            this.PspController = PspEmulatorContext.GetInstance <PspController>();

            this.MipsEmiter = new MipsEmiter();
            this.Kirk       = new Kirk();
            this.Kirk.kirk_init();

            this.HleOutputHandler = PspEmulatorContext.GetInstance <HleOutputHandler>();

            // @TODO FIX! New Instances!?
            this.ThreadManager       = PspEmulatorContext.GetInstance <HleThreadManager>();
            this.SemaphoreManager    = PspEmulatorContext.GetInstance <HleSemaphoreManager>();
            this.EventFlagManager    = PspEmulatorContext.GetInstance <HleEventFlagManager>();
            this.MemoryManager       = new HleMemoryManager(this.CpuProcessor.Memory);
            this.ModuleManager       = PspEmulatorContext.GetInstance <HleModuleManager>();
            this.CallbackManager     = PspEmulatorContext.GetInstance <HleCallbackManager>();
            this.HleIoManager        = PspEmulatorContext.GetInstance <HleIoManager>();
            this.HleRegistryManager  = PspEmulatorContext.GetInstance <HleRegistryManager>();
            this.HleInterruptManager = PspEmulatorContext.GetInstance <HleInterruptManager>();
        }
Example #6
0
 public static void ClassInit(TestContext context)
 {
     PspConfig = new PspConfig();
     PspEmulatorContext = new PspEmulatorContext(PspConfig);
     PspEmulatorContext.SetInstanceType<PspMemory, LazyPspMemory>();
     Memory = PspEmulatorContext.GetInstance<PspMemory>();
 }
Example #7
0
		/// <summary>
		/// 
		/// </summary>
		public override void InitializeComponent()
		{
			base.InitializeComponent();
			this.Config = PspEmulatorContext.PspConfig;
			this.TextureCache = new TextureCacheOpengl(this.Memory, this);
			this.VertexReader = new VertexReader();
			this.TextureCache = new TextureCacheOpengl(Memory, this);
		}
		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>()));
        }
Example #10
0
 public override void InitializeComponent()
 {
     this.PspConfig = PspEmulatorContext.PspConfig;
     if (this.PspConfig.UseCoRoutines)
     {
         this.CoroutinePool = new CoroutinePool();
     }
     else
     {
     }
     Reset();
 }
Example #11
0
 public override void InitializeComponent()
 {
     this.PspConfig = PspEmulatorContext.PspConfig;
     if (this.PspConfig.UseCoRoutines)
     {
         this.CoroutinePool = new CoroutinePool();
     }
     else
     {
     }
     NativeBreakpoints = new HashSet<uint>();
     RegisteredNativeSyscalls = new Dictionary<int, Action<CpuThreadState, int>>();
     IsRunning = true;
 }
Example #12
0
		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));
		}
Example #13
0
 static public void Init()
 {
     PspConfig = new PspConfig();
     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;
         }
     }
 }
Example #14
0
 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]);
 }
Example #15
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="PspConfig"></param>
        /// <param name="Memory"></param>
        public override void InitializeComponent()
        {
            if (sizeof(GpuStateStruct) > sizeof(uint) * 512)
            {
                throw (new InvalidProgramException("GpuStateStruct too big. Maybe x64? . Size: " + sizeof(GpuStateStruct)));
            }

            this.PspConfig            = PspEmulatorContext.PspConfig;
            this.Memory               = PspEmulatorContext.GetInstance <PspMemory>();
            this.GpuImpl              = PspEmulatorContext.GetInstance <GpuImpl>();
            this.DisplayListQueue     = new LinkedList <GpuDisplayList>();
            this.DisplayListFreeQueue = new Queue <GpuDisplayList>();
            for (int n = 0; n < DisplayLists.Length; n++)
            {
                var DisplayList = new GpuDisplayList(Memory, this, n);
                this.DisplayLists[n] = DisplayList;
                //this.DisplayListFreeQueue.Enqueue(DisplayLists[n]);
                EnqueueFreeDisplayList(DisplayLists[n]);
            }
        }
Example #16
0
        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]);
        }
Example #17
0
 /// <summary>
 /// 
 /// </summary>
 public override void InitializeComponent()
 {
     this.Config = PspEmulatorContext.PspConfig;
     this.TextureCache.OpenglGpuImpl = this;
     this.VertexReader = new VertexReader();
 }
Example #18
0
 public override void InitializeComponent()
 {
     this.PspConfig = PspEmulatorContext.PspConfig;
     this.Memory = PspEmulatorContext.GetInstance<PspMemory>();
     Reset();
 }
Example #19
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="PspConfig"></param>
        /// <param name="Memory"></param>
        public override void InitializeComponent()
        {
            if (sizeof(GpuStateStruct) > sizeof(uint) * 512)
            {
                ConsoleUtils.SaveRestoreConsoleColor(ConsoleColor.Red, () =>
                {
                    Console.WriteLine("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                    Console.WriteLine("GpuStateStruct too big. Maybe x64? . Size: " + sizeof(GpuStateStruct));
                    Console.WriteLine("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                });

            }

            this.PspConfig = PspEmulatorContext.PspConfig;
            this.DisplayListQueue = new LinkedList<GpuDisplayList>();
            this.DisplayListFreeQueue = new Queue<GpuDisplayList>();
            for (int n = 0; n < DisplayLists.Length; n++)
            {
                var DisplayList = new GpuDisplayList(Memory, this, n);
                this.DisplayLists[n] = DisplayList;
                //this.DisplayListFreeQueue.Enqueue(DisplayLists[n]);
                EnqueueFreeDisplayList(DisplayLists[n]);
            }
        }
Example #20
0
 /// <summary>
 /// 
 /// </summary>
 public override void InitializeComponent()
 {
     this.Config = PspEmulatorContext.PspConfig;
     this.Memory = PspEmulatorContext.GetInstance<PspMemory>();
     this.TextureCache = PspEmulatorContext.GetInstance<TextureCache>();
     this.VertexReader = new VertexReader();
 }
Example #21
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="PspConfig"></param>
        /// <param name="Memory"></param>
        public override void InitializeComponent()
        {
            if (sizeof(GpuStateStruct) > sizeof(uint) * 512)
            {
                throw (new InvalidProgramException("GpuStateStruct too big. Maybe x64? . Size: " + sizeof(GpuStateStruct)));
            }

            this.PspConfig = PspEmulatorContext.PspConfig;
            this.Memory = PspEmulatorContext.GetInstance<PspMemory>();
            this.GpuImpl = PspEmulatorContext.GetInstance<GpuImpl>();
            this.DisplayListQueue = new LinkedList<GpuDisplayList>();
            this.DisplayListFreeQueue = new Queue<GpuDisplayList>();
            for (int n = 0; n < DisplayLists.Length; n++)
            {
                var DisplayList = new GpuDisplayList(Memory, this, n);
                this.DisplayLists[n] = DisplayList;
                //this.DisplayListFreeQueue.Enqueue(DisplayLists[n]);
                EnqueueFreeDisplayList(DisplayLists[n]);
            }
        }
Example #22
0
 public override void InitializeComponent()
 {
     this.PspConfig = PspEmulatorContext.PspConfig;
     this.Memory    = PspEmulatorContext.GetInstance <PspMemory>();
     Reset();
 }
Example #23
0
 /// <summary>
 /// Constructor.
 /// </summary>
 public PspEmulator()
 {
     PspConfig = new PspConfig();
 }