Tuesday 7 April 2009

Almost time for holidays.

It's been almost 3 months I've been working in a Thai/French speaking office, so being the only English guy here with no other language experience has been a tough experience which has forced me to learn to communicate a LOT better. I've developed more patience, I talk more clearly, and I can explain myself much better too. The skills I've picked up are defiantly going to help me when I get back to Mere Mortals. Sadly, I've not done as much work as planned on my own projects.

Most of my programming efforts have been putting together a simple DS engine. All the time I've spent working on the DS over here has made me appreciate working on platform with less memory, less CPU, and less capabilities in general than most games programmers are used to working on. One of the things which has annoyed me very much whilst working on the DS over here is the engine I'm using doesn't do much for you. It loads everything in for you, and there you go. You've got to choose where it all goes. I don't like that one bit - which is why I decided to have a go at my own engine.

Basically, my engine, PsybrusDS of course, has a bulky tool behind it to convert graphics, including any sizes sprites into something usable by the DS. All it does is swizzles it all into the correct 8x8 block format you can go read about on any of the GBA/DS homebrew sites - nothing spectacular. Engine side, you load a sprite - and it doesn't go into graphics memory until it is needed, and when it hasn't been used in a while, it is unloaded from graphics memory, giving me plenty of room to breathe when it comes to number of sprites. Next step is to treat ROM as a level of cache too - so the sprite isn't even loaded into main memory until it's needed! The loading time is reasonably fast, and there is no seek time, so this is probably a doable approach. Background layers - I don't want to fidget with where in memory they need to go - so my engine has a simple approach - give it the backgrounds, and say "upload these for me will you?" and it works out where to place them in memory for you. A sigh of relief. Progress has been slow on it, but it is just a small project to keep me occupied when I'm bored!

Another project I've been working on (well...just started) is PyAL. It's actually just a wrapper around OpenAL to make it work better in C++, and then SIP bindings. I'm bolting a couple of extra into it such as sound layers to allow you to specify multiple sound files for different gains and pitches, file loading (via libsndfile), and eventually some utility stuff for the EAX extensions. I plan to use it to develop some sound tools for games in Python, so I can have a decent GUI to play with instead of hard coding.

As I said in the title of this update - almost time for holidays. I leave on Saturday coming up to go to Australia to see family and basically relax for my long flight back to the UK, and back to work!