The PCSP team has updated their PlayStation Portable emulator for Windows, written in C/C++, to version 0.4.0.
* Fixed a bug in PSF reading.
* Fixed refer ms free size command in sceIoDevctl and implemented a basic Memory Stick manager
* OSK implementation
* sceMsgDialog implementation
* Total rewrite on save system. Now it supports save modes 1,2,3,4,5,8,12,13,14,15,16,17,18,22. List Save and List Load dialogs are working too as well.
* Loader now loads ms0 device in UMD mode
* IoFileMgrForUser getStat now scans for files and dirs as well before return an error
* memstick statfile can now fill scePSPDateTime struct with proper values
* Memory: pcsp was crashing when accessing the end of psp vram
* NREV implementation was missing for OpenGL version w/ shader
* GE - vertex shader : attempted to get a more accurate shade mapping
* Fixed lighting in many games
* sceDisplay/sceAudio: a new vsync thread which allows to limit fps to 60. No more need for the hacky opengl vsync anymore.
* Implemented most of sceAudio functions.
* Implemented partial scelibSasCore. Some games now have sound effects some others get bad sound
* Implemented sound output using portaudio API.
Ok, Evangelion doesn't run anymore. I guess the addition of Audio and the changes in threadman are probably for something. In fact, I suspect some games were able to run in a very hacky way because the thread scheduler wasn't playing its role properly and so some waiting threads were awaked even if their waiting condition wasn't met. And it could also explain why this game was so slow.
A new vsync limiter was coded using a time critical thread to wakeup any psp threads waiting for a VSYNC event. It is a cleaner way to limit FPS to 60. A change in threadman was necessary to make it work.
An audio implementation based on PortAudio with its own time critical threads to play audio samples also needed a change in threadman.
As a result, you may really need a multi-core to keep a smooth running pcsp.
Beware, this version is very experimental : if you have some games which ran fine and have a freeze ingame with this release, try to disable vsync limiter and relaunch pcsp to check if it occurs again. There are probably issues with inter-thread synchronisations and they are very hard to spot. A new minor release will be out as soon as a fix is found.