CsPspEmu: r525


  • Updated to .NET 4.5 / Mono 3.x.x
  • Reimplemented how the CPU dynarec works:
    • Now generates an AST
    • Perform some generic optimizations and others related to lwl/lwr that weren’t possible before without the AST.
    • Adds a new window that allows you to see generated functions as C#, IL, XML or MIPS/disassembler.
    • Branch as local optimization
    • Native calling/jumping/tail calling with dynamic static fields
    • Optimized jalr in fors, caching repeated calls
    • syscalls rewritting to normal calls
    • direct memory access
  • VFPU completely reimplemented (now most of the instructions are implemented right)
  • Faster CSO decoding using the native DeflateStream from .NET 4.5
  • Huge Speedup related to GPU rendering:
    • Avoid to write video memory into RAM and then read to the display (now it copies the framebuffer into the display window without transferring data)
  • Support for scaling the render target (better quality of 3d games and games with bigger 2d textures)
  • Supports full screen (alt+enter)
  • Removed the requirement of wavoutput.dll and all that stuff, now it uses MaiAt3PlusDecoder
  • Added initial support for pmf/h264 videos. It is buggy and doesn’t play sound yet. But it is a beggining.
  • Much more accurate vsync
  • Lots and lots and zillions of major and minor improvements

Linux notes:

In order to run it in linux, you will need mono >= 3.0 with libgdiplus:
First you have to install a previous version of mono. For example in ubuntu:
apt-get install mono-complete
Then you have to build mono 3.0 and libgdiplus from source:
# libgdiplus 3
apt-get install libcairo-dev libpng12-dev libtiff-dev libgif-dev libjpeg-dev libglib2.0-dev
wget https://github.com/mono/libgdiplus/archive/master.tar.gz
mv master.tar.gz libgdiplus-3.0.tar.gz
tar xzf libgdiplus-3.0.tar.gz
cd libgdiplus-master
./autogen.sh && ./configure && make && sudo make install
# mono 3.2
wget http://download.mono-project.com/sources/mono/mono-3.2.0.tar.bz2
tar -xjf mono-3.2.0.tar.bz2
cd mono-3.2.0
./configure && make && sudo make install

More screenshots:

Example of render target scaling (1x and 2x):