sábado, 27 de julio de 2013

Release : Soywiz's Psp Emulator 2013-07-28 (r525)


New version of the emulator.


  • 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):

8 comentarios:

  1. That's great ! What is the benefits of the .Net 4.5 for an emulator ? I'm using it on a game engine and async programming is usefull but on an emulator where do you use these new features ?

  2. Using it boosts .NET platform upgrade. Also it provides new APIs not just related to async that are useful I was not using yet that will allow me to remove some code from the executable and make it faster. It has some language-level new features like getting information about the function that called the current function as plain args, multicode jit and force inlining in some cases.

  3. x64 only? Still no support for x86?

  4. The emulator is a single .net executable (no external dlls), that should work on every platform including x86/x64 windows/linux and soon mac. It doesn't work for you?

    If that's the case, you can report bugs here: https://github.com/soywiz/cspspemu/issues?state=open

  5. Ok, tested on win7. Now it did run. Net 4.5 cannot installed on Win XP. This also mean an end to Win XP support.

  6. On Xp you can install mono 3.x and run it with it in winxp

  7. I also tried mono 3.2.0 from Ubuntu Launchpad,the result is generally the same.

  8. Wait for the next version. Im working on a gtk+ version of the gui for linux and mac so it wont require winforms anymore on mono