Ralf's PS3 stuff

This page is basically a quick overview of my current PS3 projects (mostly focussed on the python-ps3 game library) and some of the older things such as the Julia Set explorer.

Don't forget - if you find any of this code useful, please consider making your PS3 source code available so that more people can learn from your work too. Let's help make the PS3 homebrew scene take off!


I am currently working on an OpenGL/ES implementation for the PS3 running on SPU rather than requiring RSX access. A skeletal website is at spugl.org


I announced a new version of pubble on ps3news.com on Tuesday morning and an amazing 446 people downloaded it in the first 48 hours! Quite a result... :) The latest pubble release is: pubble 0.2.9b. There is also a kboot image for those already running Linux who don't want to overwrite their otheros.bld: vmlinux-pubble-0.2.9b.zip.


You can now download the pubble installation package that contains everything you need to install pubble onto a PS3.

I have written a lengthier description about this release over at ps2dev forums.

There is a half hearted attempt at a pubble website, and there are installation instructions available too. Apologies in advance for the ugliness of these pages. They are just placeholders for now...


There's been little news here for a while, mostly because I was doing stupid amounts of overtime at work for about 2 months. That's calmed down a bit, and I've been putting my hand to writing a decent game using python-ps3 instead of that breakout thing... Well, a pair of screenshots should say everything that needs to be said...



Well, maybe not quite everything... I'm gonna add multiplayer internet games as soon as I possibly can, and already up to 5 players can play locally, although I need t design some slightly better layouts as the 5 player view is designed for multiplayer.

There's no official release at present (although all the code is in SVN) as I'm working on releasing this as a bootable CD image...

I'm not entirely sure myself what all the faux-Japanese stuff is about... When making the samples, I decided to start with Yatta! (I did it!) when collecting a big set of bubbles, and somehow it went out of control from there! But it kind of adds something!


Finally! I've found a newish kernel that builds and runs! I've been trying to get a >2.6.20 kernel for some time to fix the reboot bug, and the current 2.6.22-rc5 on git://git.kernel.org/pub/scm/linux/kernel/git/geoff/ps3-linux.git works like a charm! The standard ps3 configuration (make ps3_defconfig) doesn't include joystck support, but it does actually boot and reboot unlike the previous time I tried about a month ago.

I've also managed to apply the hidd patch to get my wireless controllers operational, although there does also seem to be a ton of stuff being dumped into my syslog, so it's obviously still not perfect yet. Ideally, I'd like to try hacking the BT joystick support into the kernel rather than using the hidd stuff.

In other news, work on python-ps3 has been a bit slow recently. I'm hoping to do a bit more work on it this weekend, althoug I'm also contemplating approaching the whole blitting problem from more of a sprites angle and letting the SPUs direct the drawing with the PPU just maintaining a list of what to draw...


It occurred to me that I haven't updated this page for a long while. The primary reason is that I've moved the python-ps3 project to sourceforge some months ago and kind of forgot about this page!

The project is now up to release 0.1.5 and has a number of substantial speed improvements and even support sounds. Here's a screenshot of the demo breakout game...


There's still plenty of work to do on the library, but I should probably keep my own home page up to date so it doesn't look like I've just abandoned it!


Python on the PS3

As you may know, I've been writing my PS3 stuff with a view to building up a library suitable for writing games and as I thought about it more the idea of using a scripting language for the game seemed the most logical way forward. I plumped on python as I'd used it before for a couple of small jobs and it seemed like a nice language with a lot of support. Plus, it has the advantage of being pre-installed on most Linux distributions and very easy to extend, and so the PS3 library for python was born...

Brief bullet points of the current build:

Just to whet your interest, here's an example of how easy the code can be (taken directly from the test.py file):

image = Blittable(Image.open("miglu.jpg"))
for count in xrange(screen.height-image.height):
        screen.blit(image, (count,count) )

Read more on the Python on the PS3 page...


I was a little bit bored and thinking back to the days of the old Amiga demos, and so I knocked up this plasma demo.

The digital pads select different per pixel increments and the shape buttons select different per frame increments, with the cross button allowing the per frame increments to be fiddled with using the analogue sticks (the most fun mode!). The trigger buttons adjust the colour palette slightly. Pressing the PS button causes the demo to quit.

As with the julia demo, run make test to see the demo...


I've just been doing some experimenting after reading the IBM article on SBE performance and managed to almost double the achieved frame rate!

Also added some rudimentary user control, the right stick pans around the image, the left stick changes the julia set constant and the right triggers zoom in and out. The circle buttons exits.

Unfortunately, allowing the user to zoom in quickly shows up the limitations of an IEEE single precision float. Next plan is to rewrite using fixed precision (which is bad as the SBE only has 16x16->32 bit mutliply) or IEEE double precision (which is also bad as everything I've read in SBE literature suggests they're really slow).


On the forum, Arwin asked for a screenshot. Well, these don't really do the program justice, but it does show my development environment nicely!


My first experiment in PS3 development - an optimised julia set renderer that uses 6 SPU threads to perform the calculations and blitting to the screen.

Useful make targets are make test to see a nice demo and make time to run a time test in an area that mostly avoids bits of black.