The assignment for Console Development 2 was split into two halves.
The first half was to write our own, efficient vector and matrix maths functions (something I’d already done twice before), and implement a simple benchmark of the CPU which transformed and rendered a large number of quads. Although this half of the assignment bore a few challenges, and I even went to the trouble of implementing both vfpu and none-vfpu modes for comparison, the result is uninteresting, and so I have no videos or photographs to show you.
The second half was to write a billboarded particle system, heavily optimised for the PSP. I really went to town on this assignment, optimising not only the particle system itself, but also the model and texture loading, drawing, video memory allocation, and raising the original 60 fps particle cap by more than four times. I also implemented mp3 streaming – something I wanted to do in the first semester – and a demo which I’m really rather proud of.
Since I already wrote a fairly detailed account of this project for the assignment, I’ll leave it to you to download that if you wish to know more, rather than repeat myself here. Instead, I’ll leave you with a little information about the demo, and a nice video.
For this demo I decided to recreate a scene from Super Mario Brothers 2 on the NES using modern hardware and 3D graphics. I would use the particle system I had implemented for a fountain of water coming from a whale’s blow hole, waves breaking against his bow, and snow, falling from the sky. I even added user data space in the particle struct, and made good use of function pointers to allow customisable particle behaviour, such as the snow following a sine wave, and the fountain lifting Princess Peach into the air.
Dpad controls allow Princess Peach to be moved from side to side, and the cross button jumps (though she cannot hover as she can in the original game). The analogue stick can be used to move the camera around her, shoulder buttons to zoom in and out, and the square button toggles between point and textured quad drawing for particles.