Butano: Modern C++ high level GameBoy Advance engine
github.com
github.com
The SNES (early 90s) and the GBA (early 2000s), despite roughly similar graphical capabilities, are vastly different machines. The SNES uses a 65816-based architecture running at ~3MHz that's extremely hard to compile C down to while still getting acceptable performance/code size - almost all games for it were coded in assembly language.
By comparison, the GBA uses an ARM7-based architecture running at ~33MHz. GCC was available for it literally before it came out. Even though I'd experimented a bit with QBASIC when I was younger, plugging away on the GBA when I was around 14 was how I learned C, how computers really work at a low-level, and roughly speaking, how to "really" code.
So this isn't a GBA C++ compiler - that's existed for ages. This is a "just" game engine. It's super cool that people are still working on stuff like this - the GBA is a very fun platform to develop a game on, at a nice sweet spot between straightforward enough to get started on, powerful enough to make something cool, not so powerful that you need a team of dozens to make something impressive (for the platform).
https://www.coranac.com/tonc/text/bitmaps.htm
However, you’re limited to the CPU’s (relatively) mediocre processing power. This is exactly how some of the raycasted game engines were built, though:
https://m.youtube.com/watch?v=eD1RRESSF6Y
And, if you look at open source raycaster engines, they’ll use either Mode 3 or Mode 4, usually with a background enabled:
https://github.com/jduranmaster/GBA-caster/blob/dd62073a4371...