I've been wondering, how did game programmers make this: https://youtu.be/S6huq2G43Ls?t=4368 possible?

There seems to be some odd morphing of textures when you walk by objects, and the textures are much higher than should be possible for normal 3D on the GBA. I'm assuming that programmers were hired to create a completely new rendering platform like DX and OpenGL. but how were they able to make graphics look nearly as good as their console (ps2, Gamecube) counterparts?


2 Answers 2


It most likely is a raycast engine. Keep in mind the processor in a GBA is 25mhz ARM7 processor. Close to late 386 early 486 intel processors. Combined with the relative low resolution, enough power to software render a raycast scene.

Raycasting is a technique where each pixel is projected on a simple definition of a scene. Consider Wolfenstein3D and the first Doom games: they, like this game, existed before opengl was mainstream.

Google for raycast engine and you can find examples of this thechnique in less than 1000 lines of code.


Basically the GBA has no builtin support for 3D. This is unlike the DS (and modern GFX cards).

This is similar to comparable platforms, like the SEGA Mega Drive and Nintendo SNES which both have somewhat of the same specs/power as the GBA.

On such platforms you need to calculate the 3D graphics yourself, paint it to a buffer in RAM and then "blit" that buffer to the 2D format which the console actually does understand.

There's of course several libraries for this, so you don't have to know 3D math to the core. However, for performance reasons, these libraries are likely replaced by game-specific routines, that are optimized specifically for your own game. Often this code is written in ARM assembly, which is the GBA's "fast" mode.

If you're interested in the source code for such stuff, check out the demo scene for GBA, by google-searching "gba homebrew".

You mention PS2 and Gamecube. Both of these have builtin 3D support - Like the PS1 and N64 before them.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .