Here at Time Extension, we've been following James Lambert's work for a while now, paying particular attention to his outstanding Portal 64 demake. But recently, the programmer blew our minds once again by showing off another one of his other projects: a small game jam demo that he put together that manages to pull off Gamecube-quality graphics on original N64 hardware.
Lambert created the demo for the last N64Brew Summer game jam, enlisting the help of the artist Caitlin G Cooke to create the art for the stained glass windows and Jeff Nichter to produce the music.
As Lambert explains in a video he uploaded to his channel last Saturday (September 16th), the demo uses 40 MB of texture information but only runs on 4 MB of RAM thanks to taking advantage of a technique similar to ID Software's MegaTextures (a method of texture rendering developed for the 2011 game RAGE that allowed for textures up to 32,000 x 32,000 pixels). The N64 version of the technique only allows for 1024 x 1024 pixels, which is pretty common by today's standards, he admits, but is far larger than anything we'd typically expect to see on the Nintendo console.
In the video, Lambert goes on to explain the concept of the texture image space, the limitations of the N64's tile cache, and the two techniques he used to achieve these incredible results in the demo.
The first technique is called mipmapping and is basically the process of creating multiple lower-resolution versions of the same image to solve potential performance issues as you don't have to load the most detailed textures every time. Meanwhile, the second technique involves reusing tiles from frame to frame and only streaming those that are absolutely necessary from the N64 cartridge in order to complete the image.
The video then ends with a question that you're probably wondering: "Could you make a game out of this?" Well, the answer to that is a little complicated and would require a bit more problem-solving, according to Lambert.
As he explains in the video:
"You probably could, but there are some trade offs. There’s a lot of texture information and about 40mb in this small scene here and the limit is about 60mb. So you have to find ways to either use textures across levels and scenes, make a game that’s fun in just a small number of rooms, or potentially just use smaller textures. I don’t think you need to have the texture quality I have in this demo."
If you want to try this demo out and take a look at it yourself, you can download it now from Lambert's GitHub page.