PSP Emulator done in Kotlin Common Platform with Korge targeting JVM and JS for now
JVM: ./gradlew runApp
JS: ./gradlew compileKotlin2Js && http-server kpspemu/js/web
Or open build.gradle
with intelliJ and open kpspemu/common/src/com/soywiz/kpspemu/Main.kt
and execute the fun main
method
./gradlew check
- https://kpspemu.github.io/kpspemu-demo/0.3.1/ (interpreted)
- https://kpspemu.github.io/kpspemu-demo/0.3.1/#samples/cube.cso (interpreted)
- https://kpspemu.github.io/kpspemu-demo/0.3.1/#samples/TrigWars.zip (interpreted)
- https://kpspemu.github.io/kpspemu-demo/0.3.1/#samples/cavestory.zip (interpreted)
- More coming soon...
- https://github.com/soywiz/pspemu (PSP Emulator done in D programming language. Interpreted.)
- https://github.com/cspspemu/cspspemu (PSP Emulator done in C# programming language. Dynarec.)
- https://github.com/jspspemu/jspspemu (PSP Emulator done in typescript programming language. Dynarec.)
- Vertex Decoder [Part 1] [Part 2]
- Fix Ortho Sample (madd ins + sceCtrl)
- 2017-12-12: Splitting ThreadManForUser in intelliJ
Right now it is capable to run some homebrew in interpreted mode and starts to run some early simple commercial games.
The aim is to create a portable emulator that can run fast in JVM (generating bytecode), JS (generating JavaScript), Android (generating dex or in interpreted mode), C++ targets (using libjit or in interpreted mode).
To achieve this, I have created a library called dynarek
that will provide an IR that
will generate JS code, JVM bytecode and relevant native code for each supported platform.
The rest of the code is kotlin common and uses korge and all the korlibs libraries to do accelerated portable rendering, input, audio, ui, timers, logging, zlib...