Quake on the Game Boy Advance [video]
youtube.com
youtube.com
"DOOM on SNES happened thanks to the genius and determination of a single man: Randy Linden. The man had an admiration for the game and decided to port it to a mass-market machine so more players could enjoy it. Randy never had access to the source code or the assets from either the PC or the console version. He started from nothing."
Strangely enough for the majority of the time we were working with him, none of us knew he was a programming legend. I think eventually someone was Googling team member names and realized who we had in our midst!
> (and slightly depressing know I'll never be any where near that level).
Randy is very persistent. That Quake demo was 2 years in the making, and that was after he'd already spent over a decade writing low level code.
Highly optimized code is a matter of time, time, and more time. It is a thousand little improvements that get you towards your goal.
If you want to learn to write that type of low level code, and it is very rewarding, Pick up an embedded board like an ESP32 and go have at it.
Absolute madlad
Which sounds like a bit of a golf too for a ~quake compatible engine!
Similarly, the recent re-release of Doom doesn't use the original Doom engine, it uses Unity, but it's still Doom.
https://doomwiki.org/wiki/Doom_Classic_Unity_port#Architectu...
But once I started writing my own code and working in the industry, I realized that you guys were insanely talented people working under ridiculously punishing deadlines and (as you said) zero access to the original source code, assets, etc.
Not familiar with your work in particular but in general, what a heroic and underappreciated game dev niche. Much respect for all that the unheralded port programmers managed to accomplish against the odds.
Additionally, it's GPU is very much derived from the NES->SNES family of PPUs. VRAM can be used as a LFB, but it's generally not the best use of the system.
I'd argue it's about halfway between a stock SNES/Genesis and an SNES/Genesis with a cart addon chip like an SVP or Super FX.
24 ;)
The most famous may be SNES Doom, https://doom.fandom.com/wiki/Super_NES
https://archive.fosdem.org/2021/schedule/speaker/randal_lind...
I remember that impressive opti on Mario64 and it's using C / GCC: https://www.youtube.com/watch?v=t_rzYnXEQlE
Plain old C/C++ is really well supported for hobbyist development though: https://github.com/gbadev-org/awesome-gbadev
But this engine was desperate to squeeze absolute maximum performance (including hacky hacks to get extra registers), and you can't get that from C.
GBA has some quirks, like the CPU with SRAM that isn't a cache, but an explicitly addressable small bit of memory. If you want functions "cached", you have to do it yourself. It's doable in C with some hacks, but it's an area where code size matters. Getting C code to be small and maximally fast is a https://en.wikipedia.org/wiki/Full-employment_theorem
You can totally write GBA games in just C though. In fact I learned C writing GBA homebrew in my teens.
There's been a resurgence of homebrew commercial releases for the console, and I believe the vast majority of them use SGDK. They seem to perform quite well.
https://github.com/Stephane-D/sgdk
I'm not sure if this is a matter of GCC itself being smart enough in general to generate performant 68000 code. There may be a lot of custom work within SGDK itself to ensure that the generated code is performance competitive.
As far as I've ever been able to tell, there are no polygons.
- Player and enemy ships + missiles etc are flat 2D scaled sprites - Some backgrounds are pure FMV (I think some warping is applied as the player ship moves, to give a more 3D feel) - Some backgrounds are "SNES Mode 7" style ceilings and floors
Probably the definitive example of "faking 3D without using any polygons" IMO. Even more impressive than Sega's super-scaler games like Space Harrier, Galaxy Force, etc.
I'm seeing a pre-rendered background loop with a little skewing applied as the player moves from one side to the other, with a lot of scaled sprites on top of it. Nicely done.
The big tell on the background loop for me is that the repeating background stuff never changes during a level.
Not sure about Iridion 2 but some levels in Iridion 3D are not purely prerendered background loops - this level is a Mode7ish flat "floor" (the ocean) with a perspective-warping sky BG
It's not super advanced technically, maybe, but it's very well done IMO
Of course, for many of the "it runs Doom" the reality is that whatever the device is (fridge, toaster, printer) it has a much MORE powerful computer than a 1990s 386.
He has a "[Game Engine] Black Book" series where he touches old games, its full development history and so on. The Doom one is pretty good.
I assume most did not believe Nintendo's statement on the matter.
https://www.gamespot.com/articles/nintendo-ds-not-game-boy-a...
It didn’t really work and Nintendo pivoted—possibly also to compete with the PSP—but I see the Gameboy Micro as evidence of their strategy. Compare an original model DS and the Gameboy Micro side-by-side—the size difference isn’t entirely unlike that of an iPhone versus an iPad Mini.
It’s not the first time Nintendo tried to create a third category between console and handheld—see also the Virtual Boy.
The DS being able to play GBA games was a huge selling point, as people forget how "radical" the dual screens were and how uncertain it was that people would adapt, so having the GBA fallback was nice.
Also, the DS was a better GBA than the GBA.
IMO a backlit SP is the best stock GBA you can get.
The one annoyance of the GBA at its release and original lifetime was the screen. It wasn't backlit and was very difficult to see without perfect bright lighting in your room. They eventually fixed this with the backlit GBA SP some years later, but gaming on the original GBA was rough. It's easy to forget just how bad things were without backlit screens, we've been spoiled by decades of amazing smartphone screens in the years since.