Building Play! ps2 emulator for VisionFive2

I’ve been porting Play! ps2 emulator to VisionFive2. So far its too slow/unreliable to run anything big but i have some sample apps from ps2dev/ps2sdk working.

The build instructions are here:

It seems to work best with an OpenGL ES 2 build of Qt running on Gnome Xorg.

I have been looking through the forum for info about using the GPU, is there a way to get better performance in wayland?


Very cool that you got Play! working! I don’t know if there is a way to get better performance immediately. We are kinda waiting for the GPU driver to land in mesa and the kernel. It hopefully won’t take much longer.


Thanks for the info, i will be watching out for the that new driver. Would be cool to try with vulkan

1 Like

This is going to be some fun for the future.
On ARM you need a Raspberry Pi 5 or Rockchip RK3588 for decent performance (with AetherSX2).

I don’t know how many cores can be used, but it might be interesting if anyone with a Milk-V Pioneer can test.

I can give it a try on a Lichee Console, but that is probably also too slow.

Who knows if the upcoming Milk-V Oasis is fast enough.


Cool machines those, now i want to get a Milk-V Oasis :laughing: I want add support for using the vector instructions on the Lichee 4A. Apparently its RVV 0.7.1? That might make things a bit easier. I still hope i can improve a lot the non vector version for VisionFive2. It would be cool to support some simple games at least!

1 Like

Yes, the Lichee 4A has RVV 0.7.1.
It will be very cool to play PS2 games on RISC-V.

1 Like

I tried to compile Qt5 from the StarFive repo on my Lichee Console.
It looks like it errors out compiling one of the self-tests.
Going to have a look if I can skip that, and see if it gets to the end.

1 Like

Thanks for trying it on the Lichee Console! I have been taking a little break from this after that initial work. But i got access to a Lichee Pi 4a and hope to have it working there soon! :slight_smile:

A little background on my investigation:

I had to replace some instructions with similar T-head extension instructions.

To count the leading zeros of a value. On VisionFive2 the CLZ instruction from Zbb extension seems to work. On Lichee we can use the FF1 from T-head XTheadBb extension.

I still need to find a way to pick which instructions to use for the device its running on. I’m not sure the best way to detect extensions/instructions available? I don’t think the VisionFive2 even officially supports Zbb?

I managed to get it compiled on the VF2. Looks like it doesn’t like ISO images, but it does start with a BIN file (but nothing seems to happen?). I also had to start it with elevated rights.
But now I have to get back to an older Debian image, as x11 doesn’t work with the current image.
Do I need to install Docker for PS2SDK? Or can you supply a link for that cube demo?

Thanks again for testing this! I just added a build on lichee pi (also including a build of the cube demo) here.
Added qt visionfive2 egl build as well

Im going to review the build instructions and try and get something that works for both lichee pi and visionfive.

Also managed to get here:

1 Like

I just updated the build instruction adding the pre built qt option

Just fixed a big issue with branching to big offsets. A lot more stuff seems to be working and I’m now able to get into game play with the demo I’ve been testing on both VisionFive2 and Lichee Pi 4a.

I also added builds for both VisionFive2 and Lichee Pi 4a to the project page here

Next step with be RVV 0.7.1 support for the Lichee Pi


Thanks for the packages.
The Lichee Pi build is also working for me.
I was also able to configure a PS4 controller connected on a USB port.

I have the feeling that I get a lot of graphical glitches, because of the limited OpenGL support. I hope we do get an updated driver for the GPU.

It’s impressive to see we are making progress on RISC-V. I hope we do get improved performance with RVV. Now it’s almost like watching a slideshow. But it’s still an interesting slideshow. :wink: