
This is just a simple raycaster that I slapped together for fun, based on the
excellent tutorial at http://www.permadi.com/tutorial/raycast/index.html. I
originally wrote the raycaster as a Linux/SDL app in pure C until I got things
working nicely, and then transferred things over to the GBA. The initial
version managed about 1 frame per second - with a few optimisations, including
a little asm, it's now up to about 20fps in VisualBoyAdvance. It runs fine on
real hardware too, but a little more slowly.

When I say simple, I mean simple - think Wolf3D without any objects at all.
It's just walls for the moment, but I'm working on a sprite system to go with
the walls. Hopefully the code will make some sense - if not, then reading the
tutorial will probably make it a bit more clear. It's a fairly straightforward
implementation of the basic techniques presented in the tutorial, with
fixed-point math and table-based trig functions giving it speed. The only
assembler is in the rasteriser, but even the C version (once re-implemented
to remove a division from the inner loop) was pretty quick. The GBA never
ceases to amaze me :)

Improvements on the agenda include:
- Some kind of sprite handling system
- Added prettyness (shading? floor/ceiling textures?)
- More speed :)

I might also look at improving the engine's capabilities ie: adding
variable-height walls, jumping, etc., but these things are more long-term. My
aim for the moment is to get some characters into the engine and get some kind
of game happening.

This code is licensed under the GNU Lesser General Public License, or LGPL,
which in essence means that you can do whatever you like with the code,
including using it in commercial software, as long as you release the source 
code for any modifications you make to my code.

If you'd like to contribute, please by all means do so. I'm fairly new to the
GBA, so I've probably got a lot to learn. I'm also not too crash-hot with
graphics, so any help with textures/sprites would be greatly appreciated

- Leigh
lsd@linuxgamers.net
