One of the most impressive feats of programming happened in 1982 with the release of 1K ZX Chess for the ZX81 home computer. As its name suggests it's a full chess program running on just 1KB of RAM, which includes an AI opponent. In actuality it was even less at around 700 bytes. That's 700 bytes for rudimentary graphics, rule set and all the AI routines to play the game.
@@pacomatic9833you just know some development meeting would’ve dissolved into laughter after, perfectly innocently, someone described implementing something as “a quick Hand job”. I think naming it “Thumb” was probably the right way to go.
Thumb is an _extension_ of arm. Now that I think about it, that’s probably why they named it thumb 🤔 I know ARM originally meant Acorn Risc Machine, but they are Brits after all, they love a cheeky joke.
@@_..-.._..-.._ being familiar with not only 80s/90s British computer culture in general but Acorn specifically, I can _guarantee_ it was named that way as a joke.
How odd. He put two years into this game, using every trick in the programmer's book to make it function on ill-equipped hardware, and it never got used in an official capacity. Nobody else even knew it existed until eighteen years later.
very odd, but for people with talents that coincide with their interests, its not unusual to imagine those folks have a compulsion to see if they can "figure it out" one way or another, regardless if they ever share it. He seems the type with that profile
Could be that little people cared or heard about it despite his forum posts etc. Sometimes things just go unnoticed. I would totally have been all over this game
I'm obviously not even half as smart as him, but I have 100+ projects that have never seen the light of day. I can relate. Either I lose interest and forget about it, or I think it's not good enough and then forget about it.
the sheer patience of this man to program GAMES using ASSEMBLY language from SCRATCH, I don't think most people understand the excruciating work that entails.
Yes that's insane. Games were often made in assembly in the old times (as all Genesis and SNES games for example) but they were nowhere as big and complex as Quake !
I love how Nintendo's two philosophies contradict eachother. Extremely protective of their property including hardware but using parts so old and off-the-shelf that people can still develop for and hack.
I wrote lots of optimized assembly routines for the ARM7TDMI and had literally no idea about that register bank switching trick to get around the small number of available registers. Fascinating stuff.
@@randallinden Holy shit! You're an artist. Do you think that devs are leaving a lot on the table in terms of optimisation on consoles now? How much more do you think you could get out of the Switch, or early revision Xbox Ones or PS4? What is stopping devs from getting to the metal now? Are there any who are doing it? Would you answer these questions in a long format interview with MVG?
@@kva7922046 I generally believe that there's always more ways to push hardware, as long as you work hard at it. I'd be happy to do a long-form (or even a short one) interview with MVG!
I've attempted software rendering on Virtual Boy using carefully hand-crafted assembly, but the CPU-VRAM interface is the performance bottleneck and it can't work with any reasonable frame rate. Even running just a triangle rasterizer from the cache and managing all variables in the CPU registers, I was only able to fill about half the image area before running into overtime.
that is a thing I never understood with PC graphics cards either. The CPU can just fire and forget the data. Even if the PPU only uses every 4th cycle to write to memory, this should be still faster than a loop on a CPU. If we happen to write two bytes into the same word, the PPU can just collect the two. Maybe you tried to read from VRAM? You don't need to do this in the middle of a span. Sadly ARM TDMI has no out of order operation. Would really help if you could write 8 bit pixel pairs where 0 is defined as transparent and the PPU does the read modify write cycle internally. Yeah, but Nintendo only wanted 2d on that system.
The only studios that come close squeezing out as much power out of a modern console are, insomniac, Naughty Dog, and Santa Monica Studios. They program as close to metal as possible.
It would increase development times and raise costs to the point that it wouldn't work out unless you had a team of master programmers and engineers. On paper though, it would be pretty sick.
@@kusayfarhan9943 id Tech is also a contender with their modern doom engines. The games look amazing, run on switch and put out 300-500 fps on ultra with the best hardware
GBA sold over 81 million units, making it the 10th most sold system of all-time. it outsold the PSP & is right behind the Xbox 360 & PS3. It's far from underrated.
@@Mr.Atari2600 Gameboy Advance was the first time we had proper and I mean proper 20hour+ games on a handheld. Which was also common with the GBA, not just a few lone games but a prevalent theme.
FYI, the problem with branching code is pipelining, where the next instruction is loaded into the CPU before the result of the previous is know. This means that you need to halt to processor with every branch, because we don't know what the next instruction is going to be. In modern processors this can be mitigated by prediction, but as the recently discovered Apple M1 vulnerability packman attack has show, this comes with its own risks.
I remember I did the self modifying code. I was working on a dos based graphics engine. Mostly 2d, but it had 3d as well. At one point I made it a graphing calculator as well. And it had battleship and a card game. I wanted to make it into an RTS as well, but that never happened. It was using templates and GCC in that era didn't have any debugging support for templates. If I knew that I never would have used them, but it depended on them so much I couldn't justify removing them. Anyway.........I had dozens of functions for drawing bitmaps. solid color 8 bit on 8 bit. Solid color 16 bit on 8 bit. Solid color 24/32 bit on 8 bit. Solid color 16 bit on 16 bit (you get the idea) as well as masked, uniform transparent, and 8 bit alpha channel transparent options. I had a dummy function header to call draw each image depth type, it would then get assigned by the resolution type eliminating at least a few branches. It did help with performance, but it was very minor and you had to draw a lot of small images to even get a 1 FPS difference. Not really worth it for that, but it made organizing them a lot easier.
Programming the ARM in the mid-90s, I tended to count a branch as ‘3 instructions’ in terms of timing, and memory load/store as 2; the pipeline was 3 instructions in total back them, and unrolling loops etc made a huge difference! Delving into x86 later in the 90s, I managed to build a software renderer that did 16-20fps at 640x480, fully texture mapped, all degrees of freedom, on a 486. Those were simpler times (also quite fun working around the lack of registers on a 486, disabling interrupts for portions of each scanline to hijack certain registers!)
Being a developer, I can only say: wow. Just wow. This is a truly a work of art. Master developers like Linden are an extremely rare breed. Very few modern devs are able to write code like this nowadays. Where you have to make use of every CPU cycle, register and bit of memory. Sadly, it was a bit too late for this port. Compare that to many modern programs, often written using gargantuan multi-layered frameworks which have absolutely zero respect for resource usage. Often the only thing developers of those programs care about is to write their programs faster, not better. And that's not really their fault, because that's pretty much how most software development works nowadays. Companies aren't willing to spend money on developer time for code optimization and most users don't care either as modern hardware can often compensate the performance impact of bloated code.
Your right. No company is willing to spend the amount of time it takes to optimize down to the metal. It's a money game. Only smart people doing this on their own time with no time pressures can pull this stuff off these days.
watching this type of video makes me feel that we live in a parallel universe and MVG is fetching this unreleased ports from a worm hole portal, and we got stucked with 2D run to the mill GBA games on our childhood
Lol the 2D game are way better look better and are way more fun than a shitty port of quake Still impressive but the real question is why even bother doing this
@@HiDefHDMusic I'm a retro gamer, and Randy Linden's work is one of the reasons I modded my GBA to have an IPS screen and continue to play games in it. Between the GBA ports of Doom/Doom 2, Max Payne and experimental stuff like this and the Tomb Raider port, makes it worth it to be a retro gamer. No need to deal with stupid microtransactions/season passes too.
@@DogsRNice why are you responding if it's a garbage comment clown This demo is a waste of time it impressive for a GBA game but it look like shit and surely play the same And 2d game still look good today and play well can't say the same for early 3d game Now go play with yourself elsewhere clown
That's some clever coding, optimising code like that to really make use of the hardware is an overlooked skill these days with game engines and faster processors. I'm impressed by the textures and lighting in there, the GBA wasn't designed to do that.
Hopefully someone gets to pick up all the code and stuff from Linden and actually makes an entire port of QUAKE for GBA. This is too good to leave alone.
Programmers like Randy Linden are freakin' rock stars in our eyes! The unsung masters that chill behind the curtain. Wordsmiths and mathematicians... Crafting and abstracting beautiful works of art... We salute you!
Modern games are made by artists not programmers, so there's that. Also in modern systems, programmers no longer have direct access to the hardware. So we wouldn't see these kinds of hardware level optimisation in recent years.
Exactly, it literally cannot happen. Similar to the advent of operating systems for PCs, consoles too gained operating systems. In both situations it obfuscated the hardware from the end user, allowing for simpler use (in the case of PCs) and less talented developer requirements. Additionally, hardware specs increased so rapidly that unless you were doing an ambitious port (like Witcher 3 to the Switch) and weren’t a completely incompetent moron then it was a safe bet your software ported over without much change. Really the last time I can think of that hardware played a genuine role in game dev was the PS3, which was an insanely powerful console that no one knew how utilize.
@@nine1690 modern "obfuscation," or abstraction to be more precise, is not done to make things simpler. It is to better have seperation of concerns among internal systems. This is needed in modern OS because they need to have better resource sharing management and security requirements. Old ways of direct hardware no longer suitable for modern development because of this. No abstraction means that a resource can only be used by exactly one program. Not to mention people nowadays are very sensitive in terms of device security. Running a software that have full access to your hardware is a security nightmare. The simpler part is just a by product of this since now you can hide more complicated routines under an API. This will in turn call another API that usually abstracting another routine and so on. Edit: other thing to note is that modern hardwares are very complex. Having developer to manually manage all of this complexity is just too much. There are no comparison in terms of complexity between GameBoy hardware and current modern console/PC hardware. Even the boot up process is far more complex than entire GBA hardware.
These are my favorite videos you’ve been doing, particularly since I’ve been porting my own 3d engine to the pico system lately. I’m no where near Randy’s level of optimization and the rp2040 is a more powerful chip, but it’s inspiring to see these accomplishments.
Back when a dev couldn't rely on hardware to pick up the slack in programming efficiency. Stuff like this and Roller coaster tycoon will always be impressive 👍
As I said above, you shouldn't exploit programming tricks or rely on timing on today's consoles. All consoles after the PS3 and Xbox 360 aren't static hardware (for example they have "pro" versions) and future hardware and OS versions will not be able to replicate every quirk perfectly, let alone timings.
@@Δημήτρης-θ7θ Sure, but simple self-optimization is still ignored way too often and some games are made worse for absolutely stupid reasons.(Such as making mobile games half as fast on intended hardware by including bloated anti-emulator code.) It is still a valid thing to look up to people who actually know what they are doing in their version of the given field.
@@Δημήτρης-θ7θ Not all optimizations are unsafe like that, there are plenty that are just good design like Quake's BSP for collisions and PVS for working out what the player can see at one time. The majority of modern software prioritizes getting something to the level of "working" without actually making it spend CPU and GPU cycles effectively
Been binge watching some of your videos recently and I'm really enjoying them. I love how you combine the historical aspect with fairly in-depth explanations of what was happening behind the curtains in the code and hardware. Most other retro game youtubers are like, "here's an unopened game I got from ebay. It has a cool manual and stuff. Thanks for watching and see you next time."
I've never watched your videos before but this was randomly suggested to me and I have to say, great content. It was really interesting and you broke it down in a way that me, who has no knowledge of how hardware or even software works, could understand. Great video I look forward to more of these impossible ports
Loved the episode. I always enjoy these deep dives that talk a bit about the architecture of the system and the strange use cases of that architecture for optimization. Really inspiring for a current CS student.
Imagine an alternate reality where people with programming talent like this were hired as optimization specialists across the gaming industry, like wizards called in to finalize game engines. Imagine the performance; imagine how much more we could be doing with what we already have.
really cool! Thanks MVG for taking the time to share these amazing stories with us. Watching your video over breakfast before I start work. Great start to my day
Thanks for the kind words and compliments -- Technically, I didn't do it all by myself -- Aardappel made the levels, Karsten Koch and another guy did the music and I had modelers create the 3D models.
What an incredible port, holy heck! It would have been awesome if you could have included some of your conversation with Randy in this video, or even made a separate video (for Patreon maybe?) showing the full interview. I would love to hear the two of you discussing the intricacies of the process; given your high level of knowledge and ability to ask pertinent questions, and Randy's deep knowledge of the engine and the insane techniques he used to make this happen, I'm sure it would have been an extremely illuminating discussion.
This is not only a technical achievement, but a form of art. A triumph of human mind. Too bad NDS and PSP could easily handle Quake or Quake 2 ports but never got official releases.
Thank you MVG. All these behind the scene stories you make gives us nerds a great insight on how games were developed. Awesome job and much love from Australia. We want more XD
As a CS student, I can only dream to be as good of a coder as Randy Linden. I don't do a lot of coding in my free time due to other hobbies and I'm increasingly interested in theoretical CS, but he def inspires me to improve my coding skills!
You def want to do it as a hobby, traditional education isn't enough and gives you the core concepts as it's meant to, it's really having a passion for this stuff that takes you to the level of Randy.
A potential to cover in a future impossible port? Quake 2 on the atari falcon 030, a whole play list of development progress here ua-cam.com/play/PLNs6Jw4V4vlvafSs0H3Ww_M5nMm10m0UM.html I know the falcon isn’t too well known but still fascinating to see how far the hardware can be pushed with proper platform specific coding
MVG and I spoke for over an hour going over the technical tricks and techniques I used in the prototype -- it was a great conversation that I wish he had recorded!
Sublime stuff Don't forget to check out Cyboid, which uses many quirks of Randy's Quake engine. Runs incredibly well even on shitty 10 y/o ARM hardware.
Thanks for the compliments and kind words -- I appreciate it and, yes, Cyboid is available on Amazon's AppStore if you're curious to see how the game finally turned out.
If it ever finished and released to retail back then, this would, undoubtedly, be the most graphically intensive official game on the GBA. Though, I wonder if a homebrew group would try to port Quake to the GBA again. I mean, considering freaking Tomb Raider got a GBA port, it would be amazing to see.
For _many_ years, I argued against 3D games or sections on GBA as merely being trickery; you can't actually do 3D, you can only do force perspective psuedo 3D that only looks good when not in motion. Seeing stuff like this back then would have totally changed my mind.
If you think about it, 3D videogames themselves are just mere trickery. They're basically fooling your eyes into thinking you're in a 3D environment when all you're really doing is just staring at pixels on a screen lol.
@@FamousWolfe What do you think the brain is doing? The cones and rods in your eyes are laid flat in the retina. Your own brain is just staring at a 2D image of the world and infers depth through neural processing.
This stuff always excites me, old hardware is still blowing my mind on untapped performance. I suppose it's easier for people nowadays to create software for old hardware because the software is being created on hardware many many times more powerful than the hardware it's being created for, but I love it! Old hardware never really truly dies, it can surprise you that old dogs can still learn new tricks! I'm usually skeptical on footage claiming the software is running on certain hardware but watching you're content has taught me that you are real & I can literally hang on every word you say. Thankyou for another piece of quality content.
Great video! That engine is amazing! Im not the best programmer but ive been battling with a slow engine on nes to push the graphics and elements as much as possible, Im learning using look up tables to bypass math like multiplication is always great, and finding other tricks to lower the amount of a huge function running multiple times in a frame really helps too.
Guess it goes to show that over time as more management got involved and more deadlines got thrown at programmers the more bloated the code gets, given enough time and only the pressure of just wanting to make it work look how lean the code gets to create this. Maybe we'll see this more and more given how much more powerful hardware is getting
So Linden made the port demo and then sent it to id Software? That must have been one hell of a "full circle" moment for John Carmack and the boys considering that's exactly how they started back when they were working for Softdisk. Before they developed Commander Keen they recreated Super Mario Bro's 3 on the PC and then sent it to Nintendo to be like "hey, we can bring Mario to computers", a feat that at that time seemed completely impossible. So it had to have been pretty cool for them to have someone approach them doing the same thing that they themselves did years earlier.
The problem with modern games is that they are designed to run on a specific engine such as Unity or Unreal, and rewriting the entire game to be optimized for the weaker hardware of the Switch would cost way too much money for not much in return. Older games like Doom and Quake were a lot simpler, to where it is feasible for an individual or small team to rebuild the engine from scratch, optimized for the hardware specific to that console, taking advantage of the custom video and sound hardware offered by the system. That isn't to say that there isn't anywhere a Switch port could be optimized (I'm sure if developers wanted to they could find plenty of ways to optimize fairly easily), but the fact is the Switch is flat out less powerful than the PS4/Xbox One, and the money that it would take to optimize the game to run on a custom engine (especially written in assembly, if Nintendo even lets you use it nowadays) won't be made back in sales, especially if the port is released years after the original release, ESPECIALLY when compared to the next-gen platforms.
@@thetechconspiracy2 Sad but true, it would basically be a hobby project and nothing more. Still, I can't help but wonder how much more the Switch would be capable of if the homebrew scene were really able to take advantage of the Switch's hardware without Nintendo summoning their Litigious Lawyers to the field in attack mode lol. Guess we'll find out once Nintendo moves on and the Switch is officially EOL'd.
Honestly, I'd like to see someone push similar limits of the Wiiu. It's a pretty similar beast to the Switch powerwise and actually has more potential features to integrate(With basically every major gamefeature of the Switch being reproducable on it too. Wii-motes can substitute for the Joycons to a certain degree). It would be nice to finally smash the stereotype of "Wiiu fundamentally sucks so bad" when the only real downside it has is that it doesn't have handheld-mode.
The madlad still isn't done. He's porting the complete Ultimate DOOM to SNES again for Bethesda, using a mysterious "Super FX 3" Chip. In 2024. What a guy.
I wonder what documentation Linden read to achieve this. I don't think a normal human being would be reasonably able to create a robust engine like this without previous knowledge of how this could be achieved in a simple hardware like the GBA.
The official ARM Corporation manual for the CPU and a basic scientific method to discover things such as timings of the non-SoC components and instruction cycle costs. It's by no means a small feat but it's not incomprehensible either, the guy simply had a huge amount of patience and persistence, which is usually all that's needed to achieve anything in life. A lot of the niche information was also available already in the hombrew community, mostly from romhacking groups, it simply wasn't all collected in one friendly wiki, but the knowledge was out there for anyone willing to sit down and grind through pages and pages of obscure forum posts.
@@luzten It still exists, but it isn't valued anymore and hence less visible. Back then, hardware was expensive and developers were cheap. Today, it's the other way around so it simply doesn't make sense to have a developer sit down for two years to optimise the ever living crap out of their code when "good enough" actually gets projects finished. There's also another factor - online capabilities. Back in the 90s, console games were shipping as-is - no after the fact updates, bug fixes, or performance improvements. So code would *have* to be as good and as bug free as possible. Today, you can ship a beta version just to make the deadline and have a 50gb day-1 patch and no one even bats an eye anymore (which I find sad).
@@totalermist Back in the day, most game development companies weren't publicly traded either and didn't have shareholders to appease. This meant that game developers could really pour their hearts & souls into a game and make it really shine, rather than be forced to work on yet another fucking sequel of a game series that's been milked into oblivion because it represents less risk than trying something new. Not to mention the fact that hardware limitations really forced game devs to get creative, which I find is sorely lacking these days. Also yeah, 50gb day-1 patches really piss me off, that's why I don't preorder games and I usually wait at least 6 months until after a game's been released before I buy because that's when I consider the game "truly finished" lol.
It’s just amazing that a handheld like the GBA manages to make ports of FPS games. Looking at Quake on the GBA is indeed one amazing achievement here. Even Doom,Wolfenstein and Serious Sam came into this. The GBA is amazing.
At the end of the video you say that you had fun making this and I reckon it shows. The whole way through you seemed really enthused to be telling this story. And what a story! It's like something out of cyberpunk with programmers, giant corporations, hardware being pushed to its limits... assembly to interface the human with the machine!
With insane stuff like this, sometimes I wonder what could've been if the GBA lasted a couple more years before it was replaced by the NDS, but I guess Nintendo had no other choice to stay competitive, especially considering that the PSP was also looming over the horizon at the time.
Lmao I love that the original forest of illusion upload had a comment predicting that you'd make this exact video, really interested to see how it was accomplished
Sweet that this was made at the time. Kind of sad it never saw the light of day but also kind of fun that we're finding out about it now at least. Also cool video.
Linde is a god! His example is what I keep saying: We need better software. We have plenty of hardware power now, and I feel that software is not optimized anymore. The use of generic code is the norm.
@@goob8945 So true. And even the look and feel is the same. The art work is getting generic with photometry and character creation tools like meta humans.
To be fair, this isn't the olden days where handwritten assembly can beat a good compiler (and even if it can, the amount of work it would take to beat a compiler by an appreciable amount would be GARGANTUAN). A lot of tricks like this only work when the hardware is absolutely uniform across all units. Good luck doing this with a PC game where there are hundreds of different combinations of CPUs/GPUs that could be used with your games, some of which have yet to even be designed. Generic code is the norm nowadays for a reason.
Agreed. High level languages are absolutely necessary for lots of things, but most of those languages are built upon one massive sandwich of abstraction layers. I can only imagine what modern hardware could do if they utilized practices like those described in the video.
Idk why I was unsubbed but we're back and I'm glad to have caught this episode. I like learning peoples names who were the masters of their art. They deserve the credit that usually goes unpaid.
@@roocrew86 Thanks, Brett -- I appreciate your sentiment and almost worked on the Saturn! As things turned out, my only experience with Sega hardware was on the Dreamcast.
Even though I have never programmed ARM, the descriptions took me back to my Z80, 6502 & 68000 days. Randy is the Harry Potter of programmers. Thanks for the video, MVG.
Well just look at the ZX Spectrum. Sir Clive absolutely did NOT have games in mind when he developed it, yet it has one of the largest gaming libraries of any home computer ever made.
I'd love if you did a video like this on Asterix and Obelix XXL for GBA which was a full 3D platformer on the GBA! I'd love to see how it was able to pull of PS1 level graphics on the GBA. Great video!
Great rundown on Randy's accomplishments, I knew the work but didn't know the guy. ;) Shame about the timing but that happens, more than a few awesome projects coming late to the party. The GBA hardware is a very friendly engaging programming environment from what many have said about it. Oh yeah, self modifying code sounds both fascinating and grueling to manage heh.
If I'll ever hear the news about Doom Eternal being successfully ported to Nintendo DS, I'm gonna be 99.9% sure that was Randy Linden who did it.
Well, someone is making Mario Galaxy to DS, a incredible feat by itself. But Doom Eternal would be fantastic.
One of the most impressive feats of programming happened in 1982 with the release of 1K ZX Chess for the ZX81 home computer. As its name suggests it's a full chess program running on just 1KB of RAM, which includes an AI opponent. In actuality it was even less at around 700 bytes. That's 700 bytes for rudimentary graphics, rule set and all the AI routines to play the game.
Doom 3 is a safer bet.
On the ps vita
Too kind -- thank you for the confidence and kind words!
"'Thumb"' is a subset of 'ARM'."
Hmm, yes, this makes sense.
Now that I think about it, they should've called it "hand"
@@pacomatic9833you just know some development meeting would’ve dissolved into laughter after, perfectly innocently, someone described implementing something as “a quick Hand job”. I think naming it “Thumb” was probably the right way to go.
Thumb is an _extension_ of arm. Now that I think about it, that’s probably why they named it thumb 🤔 I know ARM originally meant Acorn Risc Machine, but they are Brits after all, they love a cheeky joke.
😂 Smoking a corncob pipe in a meeting: _“Thumb is a subset of ARM” “Mmm, yes yes, quite right, do continue!”_
@@_..-.._..-.._ being familiar with not only 80s/90s British computer culture in general but Acorn specifically, I can _guarantee_ it was named that way as a joke.
How odd. He put two years into this game, using every trick in the programmer's book to make it function on ill-equipped hardware, and it never got used in an official capacity. Nobody else even knew it existed until eighteen years later.
very odd, but for people with talents that coincide with their interests, its not unusual to imagine those folks have a compulsion to see if they can "figure it out" one way or another, regardless if they ever share it. He seems the type with that profile
"A Man May Do an Immense Deal of Good, If He Does Not Care Who Gets the Credit"
Could be that little people cared or heard about it despite his forum posts etc. Sometimes things just go unnoticed. I would totally have been all over this game
Not my field of work but when something's too "tailored" for a specific job and uses a lot of tricks to work, it's hardly reusable nor maintainable.
I'm obviously not even half as smart as him, but I have 100+ projects that have never seen the light of day. I can relate.
Either I lose interest and forget about it, or I think it's not good enough and then forget about it.
I really love these 'impossible port' stories
As someone who programs 3D the GBA, this is truly amazing!
I love your vids
the sheer patience of this man to program GAMES using ASSEMBLY language from SCRATCH, I don't think most people understand the excruciating work that entails.
Yes that's insane. Games were often made in assembly in the old times (as all Genesis and SNES games for example) but they were nowhere as big and complex as Quake !
Him and Chris Saywer are legends.
@@SurriSama Let's not forget Rebecca Heineman!
I love how Nintendo's two philosophies contradict eachother. Extremely protective of their property including hardware but using parts so old and off-the-shelf that people can still develop for and hack.
I wrote lots of optimized assembly routines for the ARM7TDMI and had literally no idea about that register bank switching trick to get around the small number of available registers. Fascinating stuff.
I thought quake on Saturn was the impossible port, this is just insane.
Thanks for the compliment -- I appreciate it!
@@randallinden 🍻💪
@@randallinden Holy shit! You're an artist. Do you think that devs are leaving a lot on the table in terms of optimisation on consoles now? How much more do you think you could get out of the Switch, or early revision Xbox Ones or PS4? What is stopping devs from getting to the metal now? Are there any who are doing it? Would you answer these questions in a long format interview with MVG?
@@kva7922046 I generally believe that there's always more ways to push hardware, as long as you work hard at it.
I'd be happy to do a long-form (or even a short one) interview with MVG!
@@randallinden You da man
I've attempted software rendering on Virtual Boy using carefully hand-crafted assembly, but the CPU-VRAM interface is the performance bottleneck and it can't work with any reasonable frame rate. Even running just a triangle rasterizer from the cache and managing all variables in the CPU registers, I was only able to fill about half the image area before running into overtime.
Virtual Boy 🤮
that is a thing I never understood with PC graphics cards either. The CPU can just fire and forget the data. Even if the PPU only uses every 4th cycle to write to memory, this should be still faster than a loop on a CPU. If we happen to write two bytes into the same word, the PPU can just collect the two. Maybe you tried to read from VRAM? You don't need to do this in the middle of a span. Sadly ARM TDMI has no out of order operation. Would really help if you could write 8 bit pixel pairs where 0 is defined as transparent and the PPU does the read modify write cycle internally. Yeah, but Nintendo only wanted 2d on that system.
Think about how crazy modern games could be if they were developed to run as efficient as possible
The only studios that come close squeezing out as much power out of a modern console are, insomniac, Naughty Dog, and Santa Monica Studios. They program as close to metal as possible.
if all programmers were like this we would be playing Doom Eternal on a Pentium 4 with 1gb of ram and a 256mb graphics card.
It would increase development times and raise costs to the point that it wouldn't work out unless you had a team of master programmers and engineers. On paper though, it would be pretty sick.
@@kusayfarhan9943 id Tech is also a contender with their modern doom engines. The games look amazing, run on switch and put out 300-500 fps on ultra with the best hardware
@@ryno4ever433 i know that it wouldn't be realistic. But it's interesting to think about what todays hardware is actually capable of
Just wanna say thanks for making some of the best content on this site, your videos have gotten me into retro games again.
GBA is underrated. So many hidden gems on it like RoboCop prototype was released and great ports
GBA sold over 81 million units, making it the 10th most sold system of all-time. it outsold the PSP & is right behind the Xbox 360 & PS3.
It's far from underrated.
PS2 is underrated
@@Mr.Atari2600 Gameboy Advance was the first time we had proper and I mean proper 20hour+ games on a handheld. Which was also common with the GBA, not just a few lone games but a prevalent theme.
People use the word "underrated" without thinking about what it actually means...
@@cormano64 the word “underrated” is overrated.
I remember years ago a dude made Quake on GBA using his own "Yeti" engine that was super impressive.
FYI, the problem with branching code is pipelining, where the next instruction is loaded into the CPU before the result of the previous is know. This means that you need to halt to processor with every branch, because we don't know what the next instruction is going to be. In modern processors this can be mitigated by prediction, but as the recently discovered Apple M1 vulnerability packman attack has show, this comes with its own risks.
I remember I did the self modifying code. I was working on a dos based graphics engine. Mostly 2d, but it had 3d as well. At one point I made it a graphing calculator as well. And it had battleship and a card game. I wanted to make it into an RTS as well, but that never happened. It was using templates and GCC in that era didn't have any debugging support for templates. If I knew that I never would have used them, but it depended on them so much I couldn't justify removing them. Anyway.........I had dozens of functions for drawing bitmaps. solid color 8 bit on 8 bit. Solid color 16 bit on 8 bit. Solid color 24/32 bit on 8 bit. Solid color 16 bit on 16 bit (you get the idea) as well as masked, uniform transparent, and 8 bit alpha channel transparent options. I had a dummy function header to call draw each image depth type, it would then get assigned by the resolution type eliminating at least a few branches. It did help with performance, but it was very minor and you had to draw a lot of small images to even get a 1 FPS difference. Not really worth it for that, but it made organizing them a lot easier.
I also paid attention to that bit about branching code, since I doubt this old ARM CPU has a long enough pipeline to make it a problem.
Prediction is exsctly what made Quake run better with high end CPUs of its time
Programming the ARM in the mid-90s, I tended to count a branch as ‘3 instructions’ in terms of timing, and memory load/store as 2; the pipeline was 3 instructions in total back them, and unrolling loops etc made a huge difference! Delving into x86 later in the 90s, I managed to build a software renderer that did 16-20fps at 640x480, fully texture mapped, all degrees of freedom, on a 486. Those were simpler times (also quite fun working around the lack of registers on a 486, disabling interrupts for portions of each scanline to hijack certain registers!)
@@awilliams1701 weirdo...
Being a developer, I can only say: wow. Just wow. This is a truly a work of art. Master developers like Linden are an extremely rare breed. Very few modern devs are able to write code like this nowadays. Where you have to make use of every CPU cycle, register and bit of memory. Sadly, it was a bit too late for this port.
Compare that to many modern programs, often written using gargantuan multi-layered frameworks which have absolutely zero respect for resource usage. Often the only thing developers of those programs care about is to write their programs faster, not better. And that's not really their fault, because that's pretty much how most software development works nowadays. Companies aren't willing to spend money on developer time for code optimization and most users don't care either as modern hardware can often compensate the performance impact of bloated code.
Your right. No company is willing to spend the amount of time it takes to optimize down to the metal. It's a money game. Only smart people doing this on their own time with no time pressures can pull this stuff off these days.
Randal Linden is a genius, and also seems like a humble chap and all round good guy. Some very interesting interviews with him on UA-cam.
Thanks for the very kind words -- I appreciate it!
@@randallinden That account was created the same day this video was updated.
@@randallinden You are most welcome Randal!
Didn’t know anything about this port existing, but as soon as I heard “Randy Linden” I knew it’d be interesting and a technical marvel.
Too kind!!! Thank you for the compliments and kind words!
@@randallinden your stuff is always super impressive!
@@randallinden Your account was created literally today, june thirteenth.
@@seamistseamist MVG is that influential!
@@josephscottadams39 I'm trying to say that it's probably fake.
Fascinating as always! Thanks for covering this! 😊
I think we would have seen more attempts at 3D games on GBA if the DS hadn't dropped a mere three years into its lifespan.
Imagine if he ported it to DS.
Wow, was it really such a short gap? The GBA's lifespan feels like an eternity to me due to my age at that point.
@@eyeball226 2001 to 2004 yeah... it felt longer back then
It was a shame that the GBA didn't have as long a lifespan as I had hoped it would -- oh, well. Such is life sometimes.
@@randallinden you bet on the wrong horse! should have done an N-gage port 😜
Going back to 96 and seeing Quake running on a $99 handheld from five years later would blow my literal mind.
watching this type of video makes me feel that we live in a parallel universe and MVG is fetching this unreleased ports from a worm hole portal, and we got stucked with 2D run to the mill GBA games on our childhood
Lol the 2D game are way better look better and are way more fun than a shitty port of quake
Still impressive but the real question is why even bother doing this
@@legros731 to prove you can, duh
@@HiDefHDMusic I'm a retro gamer, and Randy Linden's work is one of the reasons I modded my GBA to have an IPS screen and continue to play games in it. Between the GBA ports of Doom/Doom 2, Max Payne and experimental stuff like this and the Tomb Raider port, makes it worth it to be a retro gamer.
No need to deal with stupid microtransactions/season passes too.
@@legros731 why bother making a garbage comment
@@DogsRNice why are you responding if it's a garbage comment clown
This demo is a waste of time
it impressive for a GBA game but it look like shit and surely play the same
And 2d game still look good today and play well can't say the same for early 3d game
Now go play with yourself elsewhere clown
That's some clever coding, optimising code like that to really make use of the hardware is an overlooked skill these days with game engines and faster processors. I'm impressed by the textures and lighting in there, the GBA wasn't designed to do that.
Such an interesting port. Randy Linden is really great for porting Quake to the GBA.
Crazy how you can get used to news like this. Always have to remember all the work behind the scenes...
Hopefully someone gets to pick up all the code and stuff from Linden and actually makes an entire port of QUAKE for GBA. This is too good to leave alone.
Programmers like Randy Linden are freakin' rock stars in our eyes! The unsung masters that chill behind the curtain. Wordsmiths and mathematicians... Crafting and abstracting beautiful works of art... We salute you!
Thanks so much -- I appreciate your very kind words and thoughts!
@@randallinden We love your work, sir! What you've done for software, video game preservation, and emulation is simply staggering!
@@TwinOpinion Again, thank you for the kudos and appreciation -- I'm honoured to have had an impact on technology throughout my career.
@@randallinden Account created today, most likely a fake.
These are the kinds of stories I enjoy hearing about. Keeps me motivated when i get stuck on something.
Every time I see a video like this, it makes me wonder what modern hardware would be capable of with this level of optimization.
Well, I would say mostly: Platform exclusives, late in the system’s life cycle.
Modern games are made by artists not programmers, so there's that. Also in modern systems, programmers no longer have direct access to the hardware. So we wouldn't see these kinds of hardware level optimisation in recent years.
Exactly, it literally cannot happen. Similar to the advent of operating systems for PCs, consoles too gained operating systems. In both situations it obfuscated the hardware from the end user, allowing for simpler use (in the case of PCs) and less talented developer requirements. Additionally, hardware specs increased so rapidly that unless you were doing an ambitious port (like Witcher 3 to the Switch) and weren’t a completely incompetent moron then it was a safe bet your software ported over without much change. Really the last time I can think of that hardware played a genuine role in game dev was the PS3, which was an insanely powerful console that no one knew how utilize.
@@nine1690 modern "obfuscation," or abstraction to be more precise, is not done to make things simpler. It is to better have seperation of concerns among internal systems. This is needed in modern OS because they need to have better resource sharing management and security requirements. Old ways of direct hardware no longer suitable for modern development because of this.
No abstraction means that a resource can only be used by exactly one program. Not to mention people nowadays are very sensitive in terms of device security. Running a software that have full access to your hardware is a security nightmare.
The simpler part is just a by product of this since now you can hide more complicated routines under an API. This will in turn call another API that usually abstracting another routine and so on.
Edit: other thing to note is that modern hardwares are very complex. Having developer to manually manage all of this complexity is just too much. There are no comparison in terms of complexity between GameBoy hardware and current modern console/PC hardware. Even the boot up process is far more complex than entire GBA hardware.
These are my favorite videos you’ve been doing, particularly since I’ve been porting my own 3d engine to the pico system lately. I’m no where near Randy’s level of optimization and the rp2040 is a more powerful chip, but it’s inspiring to see these accomplishments.
I've learned in the last 15 years that homebrew communities can really pull some amazing stuff. This is incredible work.
The amount of depth you do for these videos MVG. My fucking man.
You got Randy’s notes and everything
Back when a dev couldn't rely on hardware to pick up the slack in programming efficiency. Stuff like this and Roller coaster tycoon will always be impressive 👍
As I said above, you shouldn't exploit programming tricks or rely on timing on today's consoles. All consoles after the PS3 and Xbox 360 aren't static hardware (for example they have "pro" versions) and future hardware and OS versions will not be able to replicate every quirk perfectly, let alone timings.
Back then game developers were programmers. Nowadays 80% of the team are artist.
@@bltzcstrnx Especially with most devs using established engines.
@@Δημήτρης-θ7θ Sure, but simple self-optimization is still ignored way too often and some games are made worse for absolutely stupid reasons.(Such as making mobile games half as fast on intended hardware by including bloated anti-emulator code.) It is still a valid thing to look up to people who actually know what they are doing in their version of the given field.
@@Δημήτρης-θ7θ Not all optimizations are unsafe like that, there are plenty that are just good design like Quake's BSP for collisions and PVS for working out what the player can see at one time. The majority of modern software prioritizes getting something to the level of "working" without actually making it spend CPU and GPU cycles effectively
Been binge watching some of your videos recently and I'm really enjoying them.
I love how you combine the historical aspect with fairly in-depth explanations of what was happening behind the curtains in the code and hardware.
Most other retro game youtubers are like, "here's an unopened game I got from ebay. It has a cool manual and stuff. Thanks for watching and see you next time."
The Saturn version was already impresseive, but this one surely rocks !! Great video dude :D
I've never watched your videos before but this was randomly suggested to me and I have to say, great content. It was really interesting and you broke it down in a way that me, who has no knowledge of how hardware or even software works, could understand. Great video I look forward to more of these impossible ports
An impressive port engineered by an impressive mind.
Loved the episode. I always enjoy these deep dives that talk a bit about the architecture of the system and the strange use cases of that architecture for optimization. Really inspiring for a current CS student.
Imagine an alternate reality where people with programming talent like this were hired as optimization specialists across the gaming industry, like wizards called in to finalize game engines. Imagine the performance; imagine how much more we could be doing with what we already have.
But instead we chose HR departments and diversity quotas
@@josedorsaith5261 And unnecessary new shading techniques when core gameplay and physics haven't been polished.
@@josedorsaith5261 certified gamer moment
@@josedorsaith5261 HR departments are incredibly important. For instance, they're a place employees who've been harassed can turn to for help.
@@josedorsaith5261 what?
really cool! Thanks MVG for taking the time to share these amazing stories with us. Watching your video over breakfast before I start work. Great start to my day
Amazing that this was a one man project that wasn't ever finished, I love these crazy ambitious ports.
Thanks for the kind words and compliments -- Technically, I didn't do it all by myself -- Aardappel made the levels, Karsten Koch and another guy did the music and I had modelers create the 3D models.
That was nice of Randy to give you all of this info. These impossible port videos are my favorite series of yours.
Randy Linden did the impossible several times. Randy is one of a kind and a legend.
You are too kind -- thank you so much!
@@randallinden Account created today, most likely a fake.
@@seamistseamist Stop already, goddamnit. I'm tired of seeing you call him a fake
@@mortenera2294 I already apologized in multiple comments, now in this one, sorry.
What an incredible port, holy heck!
It would have been awesome if you could have included some of your conversation with Randy in this video, or even made a separate video (for Patreon maybe?) showing the full interview. I would love to hear the two of you discussing the intricacies of the process; given your high level of knowledge and ability to ask pertinent questions, and Randy's deep knowledge of the engine and the insane techniques he used to make this happen, I'm sure it would have been an extremely illuminating discussion.
Maybe one day MVG will do an interview -- I'd be happy to talk his ear off for hours if he'd let me!
@@randallinden Account created today, most likely a fake.
This is not only a technical achievement, but a form of art. A triumph of human mind.
Too bad NDS and PSP could easily handle Quake or Quake 2 ports but never got official releases.
Thank you MVG. All these behind the scene stories you make gives us nerds a great insight on how games were developed. Awesome job and much love from Australia. We want more XD
As a CS student, I can only dream to be as good of a coder as Randy Linden. I don't do a lot of coding in my free time due to other hobbies and I'm increasingly interested in theoretical CS, but he def inspires me to improve my coding skills!
You def want to do it as a hobby, traditional education isn't enough and gives you the core concepts as it's meant to, it's really having a passion for this stuff that takes you to the level of Randy.
I was waiting for a video as soon as I seen this. Good job!
A potential to cover in a future impossible port? Quake 2 on the atari falcon 030, a whole play list of development progress here ua-cam.com/play/PLNs6Jw4V4vlvafSs0H3Ww_M5nMm10m0UM.html
I know the falcon isn’t too well known but still fascinating to see how far the hardware can be pushed with proper platform specific coding
Good job with the in-depth technical explanation for how this was accomplished, great video!
MVG and I spoke for over an hour going over the technical tricks and techniques I used in the prototype -- it was a great conversation that I wish he had recorded!
@@randallinden Account created today, most likely a fake.
oh my gods it's been years since I've heard the name LikSang
Why do you make me feel so old
I love these looks into technical achievements in gaming history. Great work from Lyndon.
Thanks MVG for telling this story.
An extra thanks to MVG for pointing me to Forest of Illusion who released the prototype -- without both of them no one would know about the project!
@@randallinden Account created today, most likely a fake.
Sublime stuff
Don't forget to check out Cyboid, which uses many quirks of Randy's Quake engine. Runs incredibly well even on shitty 10 y/o ARM hardware.
Thanks for the compliments and kind words -- I appreciate it and, yes, Cyboid is available on Amazon's AppStore if you're curious to see how the game finally turned out.
@@randallinden Your account was created today, refer to my other reply to you on Grongy's comment.
I think you mean 20-year-old ARM hardware. Shitty 10-year-old ARM hardware is like an iPhone 4S
The account is real actually, false alarm.
Randy! wf0 #Elitegamer / #Bleem from the olden days - Glad to see you're still rocking!
Gdlk skillz
Shoutout to #bleem and #elitegamer! I miss those days very much!
@@randallinden Account created today, most likely a fake.
Appreciation for carefully crafted assembly language is always welcome to learn about, and Linden deserves that appreciation for his coding.
The opening seconds of that lovely music of your video is so NICE!
Awesome video, very cool port/explanation
I'm not a fan of consoles, but I love the geeky exploration of the good old times. I wish there was a similar channel dedicated to PC games.
If it ever finished and released to retail back then, this would, undoubtedly, be the most graphically intensive official game on the GBA.
Though, I wonder if a homebrew group would try to port Quake to the GBA again.
I mean, considering freaking Tomb Raider got a GBA port, it would be amazing to see.
Hey, let's not exaggerate now. It's only two levels + Lara's mansion
Could watch videos on Quake ports all day. Always an interesting subject
For _many_ years, I argued against 3D games or sections on GBA as merely being trickery; you can't actually do 3D, you can only do force perspective psuedo 3D that only looks good when not in motion. Seeing stuff like this back then would have totally changed my mind.
If you think about it, 3D videogames themselves are just mere trickery. They're basically fooling your eyes into thinking you're in a 3D environment when all you're really doing is just staring at pixels on a screen lol.
@@FamousWolfe What do you think the brain is doing? The cones and rods in your eyes are laid flat in the retina. Your own brain is just staring at a 2D image of the world and infers depth through neural processing.
This stuff always excites me, old hardware is still blowing my mind on untapped performance. I suppose it's easier for people nowadays to create software for old hardware because the software is being created on hardware many many times more powerful than the hardware it's being created for, but I love it! Old hardware never really truly dies, it can surprise you that old dogs can still learn new tricks! I'm usually skeptical on footage claiming the software is running on certain hardware but watching you're content has taught me that you are real & I can literally hang on every word you say.
Thankyou for another piece of quality content.
Great video! That engine is amazing! Im not the best programmer but ive been battling with a slow engine on nes to push the graphics and elements as much as possible, Im learning using look up tables to bypass math like multiplication is always great, and finding other tricks to lower the amount of a huge function running multiple times in a frame really helps too.
Amazing the work you put into these videos. Great you give credit to someone almost none of us know, but now we do, thanks to you. Great Video.
Guess it goes to show that over time as more management got involved and more deadlines got thrown at programmers the more bloated the code gets, given enough time and only the pressure of just wanting to make it work look how lean the code gets to create this. Maybe we'll see this more and more given how much more powerful hardware is getting
So Linden made the port demo and then sent it to id Software? That must have been one hell of a "full circle" moment for John Carmack and the boys considering that's exactly how they started back when they were working for Softdisk. Before they developed Commander Keen they recreated Super Mario Bro's 3 on the PC and then sent it to Nintendo to be like "hey, we can bring Mario to computers", a feat that at that time seemed completely impossible. So it had to have been pretty cool for them to have someone approach them doing the same thing that they themselves did years earlier.
He should develop ports for switch, this guy really knows how to make ports. That’s very impressive, too bad it was never released
The problem with modern games is that they are designed to run on a specific engine such as Unity or Unreal, and rewriting the entire game to be optimized for the weaker hardware of the Switch would cost way too much money for not much in return.
Older games like Doom and Quake were a lot simpler, to where it is feasible for an individual or small team to rebuild the engine from scratch, optimized for the hardware specific to that console, taking advantage of the custom video and sound hardware offered by the system.
That isn't to say that there isn't anywhere a Switch port could be optimized (I'm sure if developers wanted to they could find plenty of ways to optimize fairly easily), but the fact is the Switch is flat out less powerful than the PS4/Xbox One, and the money that it would take to optimize the game to run on a custom engine (especially written in assembly, if Nintendo even lets you use it nowadays) won't be made back in sales, especially if the port is released years after the original release, ESPECIALLY when compared to the next-gen platforms.
@@thetechconspiracy2 Sad but true, it would basically be a hobby project and nothing more. Still, I can't help but wonder how much more the Switch would be capable of if the homebrew scene were really able to take advantage of the Switch's hardware without Nintendo summoning their Litigious Lawyers to the field in attack mode lol. Guess we'll find out once Nintendo moves on and the Switch is officially EOL'd.
Honestly, I'd like to see someone push similar limits of the Wiiu. It's a pretty similar beast to the Switch powerwise and actually has more potential features to integrate(With basically every major gamefeature of the Switch being reproducable on it too. Wii-motes can substitute for the Joycons to a certain degree).
It would be nice to finally smash the stereotype of "Wiiu fundamentally sucks so bad" when the only real downside it has is that it doesn't have handheld-mode.
mindblowing stuff. there's mad genius people out there doing amazing work, props to MVG as well for shining a light on them
This looks insane, looks like something that should be on a DS or PSP
The madlad still isn't done. He's porting the complete Ultimate DOOM to SNES again for Bethesda, using a mysterious "Super FX 3" Chip. In 2024. What a guy.
I wonder what documentation Linden read to achieve this. I don't think a normal human being would be reasonably able to create a robust engine like this without previous knowledge of how this could be achieved in a simple hardware like the GBA.
The official ARM Corporation manual for the CPU and a basic scientific method to discover things such as timings of the non-SoC components and instruction cycle costs. It's by no means a small feat but it's not incomprehensible either, the guy simply had a huge amount of patience and persistence, which is usually all that's needed to achieve anything in life.
A lot of the niche information was also available already in the hombrew community, mostly from romhacking groups, it simply wasn't all collected in one friendly wiki, but the knowledge was out there for anyone willing to sit down and grind through pages and pages of obscure forum posts.
In the 80's, 90's and early 2000's programmers were very creative, smart and skillful, something nowadays is more hard to find.
@@luzten It still exists, but it isn't valued anymore and hence less visible.
Back then, hardware was expensive and developers were cheap. Today, it's the other way around so it simply doesn't make sense to have a developer sit down for two years to optimise the ever living crap out of their code when "good enough" actually gets projects finished.
There's also another factor - online capabilities. Back in the 90s, console games were shipping as-is - no after the fact updates, bug fixes, or performance improvements. So code would *have* to be as good and as bug free as possible. Today, you can ship a beta version just to make the deadline and have a 50gb day-1 patch and no one even bats an eye anymore (which I find sad).
@@totalermist Back in the day, most game development companies weren't publicly traded either and didn't have shareholders to appease. This meant that game developers could really pour their hearts & souls into a game and make it really shine, rather than be forced to work on yet another fucking sequel of a game series that's been milked into oblivion because it represents less risk than trying something new. Not to mention the fact that hardware limitations really forced game devs to get creative, which I find is sorely lacking these days. Also yeah, 50gb day-1 patches really piss me off, that's why I don't preorder games and I usually wait at least 6 months until after a game's been released before I buy because that's when I consider the game "truly finished" lol.
It’s just amazing that a handheld like the GBA manages to make ports of FPS games. Looking at Quake on the GBA is indeed one amazing achievement here. Even Doom,Wolfenstein and Serious Sam came into this. The GBA is amazing.
one thing I don't understand, why is the armor amount constantly changing ? is it some kind of debug value ?
yes, it's frames per second with one decimal displayed.
Incredible! Congrats for this amazing video… i love to see theese insane acomplishments
aw man. really nice video but I was hoping to get a short interview with the dude - the maniac - the god - who did this
I'm certainly up for an official interview if MVG wants to do one someday!
@@randallinden Account created today, most likely a fake.
That is absolutely nuts and Linden is a programing wizard. An Einstein of coding.
Randy Linden is seriously waaay up there in terms of programming legends.
Great video man, i love the fact that big brains mix gaming and experiment in such fashion!
That Linden kid knows his onions.
Not everyone can understand a master programmer’s mind. Thanks for walking us through Randy’s ports, it’s great to watch.
Love these. Great stories.
At the end of the video you say that you had fun making this and I reckon it shows. The whole way through you seemed really enthused to be telling this story. And what a story! It's like something out of cyberpunk with programmers, giant corporations, hardware being pushed to its limits... assembly to interface the human with the machine!
With insane stuff like this, sometimes I wonder what could've been if the GBA lasted a couple more years before it was replaced by the NDS, but I guess Nintendo had no other choice to stay competitive, especially considering that the PSP was also looming over the horizon at the time.
Lmao I love that the original forest of illusion upload had a comment predicting that you'd make this exact video, really interested to see how it was accomplished
Wow....and I thought Saturn quake by lobotomy was insane!
Sweet that this was made at the time. Kind of sad it never saw the light of day but also kind of fun that we're finding out about it now at least. Also cool video.
Linde is a god! His example is what I keep saying: We need better software. We have plenty of hardware power now, and I feel that software is not optimized anymore. The use of generic code is the norm.
This is why the mass adoption of unreal engine 5 makes me slightly sad, we won’t get as much bespoke project-specific wonder-code 😵💫😂
@@goob8945 So true. And even the look and feel is the same. The art work is getting generic with photometry and character creation tools like meta humans.
To be fair, this isn't the olden days where handwritten assembly can beat a good compiler (and even if it can, the amount of work it would take to beat a compiler by an appreciable amount would be GARGANTUAN). A lot of tricks like this only work when the hardware is absolutely uniform across all units. Good luck doing this with a PC game where there are hundreds of different combinations of CPUs/GPUs that could be used with your games, some of which have yet to even be designed. Generic code is the norm nowadays for a reason.
@@aliengenie8896 I was referring to consoles. And fixed hardware platform.
Agreed. High level languages are absolutely necessary for lots of things, but most of those languages are built upon one massive sandwich of abstraction layers. I can only imagine what modern hardware could do if they utilized practices like those described in the video.
Idk why I was unsubbed but we're back and I'm glad to have caught this episode. I like learning peoples names who were the masters of their art. They deserve the credit that usually goes unpaid.
Unbelievable
Randy must be one of the best coders in the world
Thank you for the kind words -- I appreciate it!
@@randallinden thank you for your games. I wish you worked on my fav system the sega saturn. I think you could have got the best out of it
@@roocrew86 Thanks, Brett -- I appreciate your sentiment and almost worked on the Saturn! As things turned out, my only experience with Sega hardware was on the Dreamcast.
@@randallinden your bleemcast emulator is also amazing and I still use it today! 😃
@@roocrew86 Thanks for the support -- I appreciate it and I'm glad you're enjoying bleemcast!
And I thought Lobotomy Software's release of Quake on the Sega Saturn was the impossible port. This takes it to a new level!
Carmack would even respect this
Even though I have never programmed ARM, the descriptions took me back to my Z80, 6502 & 68000 days. Randy is the Harry Potter of programmers. Thanks for the video, MVG.
For a system Nintendo swore wasn't made for 3D, the GBA certainly did get a lot of 3D polygonal games.
Well just look at the ZX Spectrum. Sir Clive absolutely did NOT have games in mind when he developed it, yet it has one of the largest gaming libraries of any home computer ever made.
Nice! I was hoping someone would cover this :D Great vid!
what is the rapidly fluctuating number, thats usually around 130 or so for? it cane be FPS, so maybe polygon count?
I have a feeling it's the ups meter, basically how fast he's moving.
Great video. This is just incredibly cool. I don't know if you have ever interviewed Randy Linden on the channel, but that would be amazing.
There are programmers at Nintendo that couldnt even begin to do what this guy did.. Talk about a Magnum Opus
You are fast, saw it on reddit/twitter and knew it was something for you lol
I'd love if you did a video like this on Asterix and Obelix XXL for GBA which was a full 3D platformer on the GBA!
I'd love to see how it was able to pull of PS1 level graphics on the GBA. Great video!
It makes me want to know what those guys could do with actual PS1 hardware
Great rundown on Randy's accomplishments, I knew the work but didn't know the guy. ;) Shame about the timing but that happens, more than a few awesome projects coming late to the party.
The GBA hardware is a very friendly engaging programming environment from what many have said about it. Oh yeah, self modifying code sounds both fascinating and grueling to manage heh.