You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on May 9, 2024. It is now read-only.
Copy file name to clipboardExpand all lines: README.markdown
+16-14
Original file line number
Diff line number
Diff line change
@@ -1,8 +1,10 @@
1
+
# CSharp Psp Emulator
2
+
1
3
A PSP Emulator for >= .NET 4.0 made in C# by soywiz - Carlos Ballesteros Velasco
2
4
3
5
Work In Progress emulator
4
6
5
-
EMULATOR STATUS:
7
+
## EMULATOR STATUS:
6
8
7
9
* Cpu and Fpu is almost fully implemented
8
10
* VFpu still has lots of functions without implementation
@@ -13,36 +15,36 @@ EMULATOR STATUS:
13
15
* There are a small number of commercial games running
14
16
15
17
16
-
KEY FEATURES:
18
+
## KEY FEATURES:
17
19
18
-
# Fully Managed and Disengaged
20
+
###Fully Managed and Disengaged
19
21
20
22
Being fully managed (thought it will need unsafe access) will allow to port to lots of platforms in the future: AKA: Linux, Mac, Xbox360, Android, future devices...
21
23
22
-
# Very Fast Dynamic Recompilation
24
+
###Very Fast Dynamic Recompilation
23
25
24
26
The quality of the generated code is fantastic.
25
27
Lots of MIPs instructions encodes in a single X86 instruction.
26
28
The registers are inlined in the CpuThreadState class, so access
27
29
to a register is as fast as accessing a non-virtual field.
28
30
29
-
# Fast As Hell Memory Access (Currently on Windows/Linux only)
31
+
###Fast As Hell Memory Access (Currently on Windows/Linux only)
30
32
31
33
Using VirtualAlloc/mmap, allows all the PSP Memory Segments to be in a virtual space that fits the PSP Memory.
32
34
And since there is no DMA access on a HLE emulation, we can get a pointer just making an ADD operation between the base and the PSP address.
The idea is to create a full set of tests, testing the emulator interface, code generation, and HLE APIs.
113
115
UnitTests are integrated in the code, and HLE APIs are external integration tests in form of PSP executables than can be executed on any emulator to test APIs.
114
116
115
-
# Fully Open Source
117
+
###Fully Open Source
116
118
117
119
Project is on GitHub, so anyone can branch the project and perform Pull Requests helping to improve the code.
118
120
119
-
# Created after 4 tries
121
+
###Created after 4 tries
120
122
121
123
I'm the creator of the D PSP Emulator. That emulator had 4 versions, every one was created almost from the scratch with different approaches and trying
122
124
to improve the quality of the code in each iteration.
123
125
The lack of a good IDE, the complicated structure of the D language, the horrible compilation times, caused that it taked too much time for everything,
124
126
and made it impossible to refactoring the code without days or weeks of work.
125
127
In this time I have learned lot of things, and since the .NET platform is fast enough, have "mono", and solves all my problems with D, it will be my final choice.
126
128
127
-
# Final Words
129
+
###Final Words
128
130
129
131
The first emulator made by Noxa was a C# emulator too. It was for .NET 2.0. .NET and C# have evolved a lot since that 2.0 version. And now it is probably the best
130
132
platform/language out there. It has the right balance between ease, power and speed. Of course it lacks some stuff, but it is the language where less programming features I have missed.
0 commit comments