Early computers weren’t powerful enough to draw full-screen moving graphics, so they had to use clever tricks. Let’s explore how Nintendo’s techniques for creating tile-based games on the NES can be applied to modern hardware. Using these methods, I built a scrolling tilemap system for the Agon Light using C programming.
In the beginning, computer games were text-based, resembling interactive stories where you typed commands and received text responses. As computers became more powerful, games transitioned to visual formats, with early games like Galaga introducing the concept of a single-screen playfield.
However, the real evolution came with games like Zelda and Super Mario Bros., which featured larger worlds and scrolling screens. The NES, despite its limited hardware capabilities, managed to create a continuous world by treating the screen as a grid and using tiles to build the display.
The Agon Light doesn’t have a built-in tilemap system, so we need to program it from scratch. This project builds on a previous one where we loaded and drew bitmap graphics. Now, we’ll extend those techniques to create a scrolling tilemap system.
First, we need a set of tile graphics. I chose assets from the Kenney website due to their appealing art style. We convert these graphics into the RGBA2222 format, similar to our bitmap process.
A tilemap is essentially an array where each element represents a tile ID. We can draw these tiles on the screen using a nested for loop.
To implement scrolling, we need to draw the tiles off-screen and slide them into view. This technique ensures that only the necessary tiles are drawn, optimizing performance for our 8-bit machine.
Our initial implementation worked but wasn’t efficient. We realized that constantly redrawing the entire screen was slowing down the performance. To optimize, we applied a technique known as “dirty rectangles,” where only the parts of the screen that change are redrawn.
Creating a scrolling tilemap system for the Agon Light using C programming was a challenging yet rewarding project. By applying techniques from the NES, we were able to optimize the performance and achieve smooth scrolling on modern hardware.