Qt for PSP emulator (PPSSPP)

It has been a while since my last update so I am sharing with you some of my latest work.
In my spare time, I have been working on a PSP emulator (PPSSPP). I have ported it to Qt and made adaptations for Symbian, Blackberry and other platforms as well as working significantly on the core code.

Ridge Racer 2, running on a mobile phone

This has been quite an experience for me. In particular, I will share my story of porting PPSSPP to Symbian.

Despite Symbian devices having weak processors, I noticed that this would not affect PSP. Instead, the GPU is the most important hardware factor from my experience. The VideoCore GPUs are quite respectable on that front and so I had no doubt I could get many games running full speed on this hardware.

Knowing that Symbian would be able to handle this emulator and realising a certain lack in Symbian emulators, I started off on my adventure.

The first issue I had to contend with was that Symbian did not conform to POSIX or other standards that are generally taken for granted when porting code. There was a lot of work to do in actually getting it to compile in the first place. The most important step was getting the dynamic recompiler working by utilising Symbian’s RChunk allocator rather than ‘mmap’ which every other platform used.

After this, I set my sights to performance. Many games were only running at 5-10 FPS and the dynamic recompiler didn’t seem to help all that much. After working out a solution for Fast Memory, however, there was a significant boost to speed. Combined with advances in ARMv6-compatible instructions for the dynamic recompiler, many games were now hitting 10-20 FPS. This was not enough, however, and I later worked at implementing more of the recompiler for ARMv6 and accelerating ARMv6 memory loads by using a ‘Literal Pool’.

Fast forward to today and I am about to release v0.6.7 of PPSSPP for Symbian and Blackberry. A preview of the next version, based on the latest available code in the source repository. Now even the low-end Nokia N8 with its 680MHz ARMv6 processor can play some 3D games at full speed (40-60 FPS). While its bigger brother, the Nokia 808, with its 1300MHz ARMv6 processor is able to play many 3D PSP games at full speed. And I’m not done yet ;)

I will keep you guys updated with my progress on this blog. I may even post some videos of my Nokia N8’s aging 680MHz processor pushing out emulated 3D games that look better than anything available on Nokia Store.