[aquaria] Aquaria port for OS4 PPC

Andrew Church achurch+aquaria at achurch.org
Thu Jun 17 04:38:51 EDT 2010


>Maybe I'm wrong about the memory requirements. To be sure, we're using 
>way more memory than the original FMOD version of the game, since we 
>fully decode all the .ogg files upfront instead of streaming them (well, 
>upfront as we need them, it doesn't decode all the audio in the game at 
>startup).

If it's feasible to use SDL threads on arbitrary platforms, you could
probably start up a decode thread for each sound played and pull PCM
data from that.  (Assuming OpenAL has a way to retrieve audio from a
function instead of a fixed buffer, that is.  In the worst case, you
could always set up a PCM ringbuffer for OpenAL and push the PCM into
there instead.)

This is the approach I take with the PSP, albeit with MP3 instead of
Ogg to take advantage of hardware support, and I haven't noticed any
sound delays while playing.

>This is worth fixing, both to reduce memory usage, and also to avoid the 
>brief hitch you experience when a new piece of dialog is about to 
>play...but I don't know that it will be a significant reduction in 
>memory use. I just haven't profiled memory allocations at all.

I did a Valgrind pass on Linux, and the decoded audio was by far the
largest memory user, at about 187MB when I closed the window.

For reference, the next one down is the Game class, which uses
2*(2222*2222*sizeof(smallInt)) for the grid[] and baseGrid[] arrays.
smallInt is typedef'd to __int8_t on Windows (and I made it uint8_t for
PSP -- belatedly, I wonder if that needs to be signed), but defaults to
a full int on other platforms, resulting in a 39MB structure.  Is there
any reason it can't default to [signed/unsigned] char instead?

  --Andrew Church
    achurch at achurch.org
    http://achurch.org/


More information about the aquaria mailing list