Loads of hardware (2)

The amazing list of weird hardware continues...

Gameboy Advance

I bought this wonderful piece of hardware because it was easy to run programs on. Using a programmable flash cart, a dedicated flash cart programmer, and some tools, it was quite easy to write programs and transfer them to the cart. Everything was possible from GNU/Linux systems.

All my GBA code was written in ARM7TDMI assembler, which is amazingly fun to program. All the code was demo stuff, such as a 160-byte starfield with thousands of stars, a 128-byte fire effect, and a 3D engine with flat shading, Z-sorting of polygons and clipping. I was able to display rotating objects with more than 2000 polygons in a single VBL.

One of the best programming tools I used was the VisualBoyAdvance program, which included a full-featured debugger. What best to directly debug code on the PC ?

Sony PlayStation Portable

I started some projects on the PSP. Somehow, I finally never liked PSP programming, maybe because most of programmers use C language, and all available libraries were only available in C. Not a good thing for an assembler programmer, and for somebody who could not find the time to develop an asm programming environment.

I programmed small projects in the Lua programming language. This scripting language is quite close to Javascript, and there is a very good Lua programming environment available for the PSP. I started the Lua conversion of the Frozen Bubble open source game. Unfortunately the amount of work appeared to be too much important for me, and I abandoned the project.

Sony PlayStation 3

I spent (and I still am!) a lot of time programming the PS3. It is possible to natively run a Linux-based system on it, which runs in some kind of virtualization environment, preventing from accessing the graphics processor. Programming graphics requires to do everything by software, which is a great challenge, and a good reason for investigating about programming the PS3's Cell processor, and pushing it to its limits.

It is recommended to program the PS3 using a C or C++ compiler, because optimally ordering assembler instructions can become a nightmare, and any modification in the code can lead to drastic performance loss. However the programmer has close control of most of the processor's features while using C, so very good things can be done using C.

The PS3 is a really amazing machine, and I certainly will present some projects I have worked on in a future article.

PC's

Yep, I also programmed (and still do) on PC's. My first PC was a Pentium 75 laptop, and my current one is a Pentium M 1.6 GHz laptop. This is mostly for work purposes, but PC's are also useful to quickly run code which is not specifically dedicated to one machine or another.

At work, I essentially write optimization software on PC's. So I can say I am also a PC programmer.

I recently experienced vector programming on PC with SSE extensions. This invloves a funny coding style, and provides amazing results in terms of speedup, compared to standard scalar programming. Vector programming really requires programs to be re-engineered, and raises additional problems. Quite a good challenge for programmers ! I may also talk a bit more about this later.

Conclusion

This self-presentation is the starting poing of a series of articles, presenting my different projects on different hardware. I will also provide some programming tricks I like best. Stay tuned.