In the decades since the release of the original NES, various groups released a number of emulators both focused on providing the most accurate gaming experience possible (truly accurate emulation can be quite expensive. , compared to the age of the emulated platform) and, in some cases, on improving the visuals of the games in question. But Daniel Prilik, a third-year software engineering student, found a unique way to enhance the visuals of the NES by expanding what you can see on screen at all times.
The viewport on standard NES titles is 256 × 240. It doesn’t matter whether you’re playing on an iPhone SE or an 80-inch TV, 256 × 240 is the number of pixels you’ll see spread across your screen. But with largeNES, the window can be enlarged to include additional visual information normally hidden.
You can see several GIFs about how wideNES works on the Prilik website (unfortunately bandwidth restrictions prevent me from uploading them as images here). The cool thing about wideNES is that you can’t just play the game that way by default. Instead, the emulator maps the data presented to the player in real time, allowing the window to be larger in subsequent levels. The reason this is not handled by simply flushing the level data from the NES ROMs themselves is that there is no standard format for how this information is stored in the ROM file, each developer games tended to do things their own way, so each title is unique. Building the map based on what the player has seen is a much simpler (and practically possible) solution, although it does come with a limitation. The NES PPU (Picture Processing Unit) has two rendering layers – a sprite layer and a background layer. The NES uses hardware scrolling to change the display window, which means the PPU always tracks which area of the game is visible and what it should display.
What wideNES does is simple. Instead of painting over each old frame with an entirely new frame, it paints the new frames as overlapping the current frame offset by the current scrolling position of the screen. This widens the playing field. The downside to this approach is that it only covers the background image (remember, the sprites and the background are on two layers of made distinct). This means that enemies will “return” to the frame when they enter the original 256 × 240 viewport and disappear again when they leave it.
This is all largely a work in progress, but it’s part of what makes the project cool. Prilik documented all of his work, including showing GIFs showing how the emulator didn’t work at different points in the process. He also wrote his own emulator, ANESE, to show how wideNES works and what it can do. Both, he says, are “far from production ready,” but it’s an intriguing look at how we can use modern graphics power to extend games in ways that their creators didn’t. ‘just didn’t have access back then – and, for those of you who find that sort of thing interesting, a glimpse of how games were built when the hardware they ran on offered a fraction of modern performance. , with an incredibly small amount of RAM. To put this in perspective, the NES had 2KB of working RAM. The L1 cache of the processor you’re reading this story with is probably 8x – 16x bigger than that.
Featured image by Daniel Prilik.
Now read: Nintendo Sues To Shut Down ROM Sites, EmuParadise Shuts Down As Nintendo Hits The Way Of War And NES Classic Edition Mods Unlock Its Power As A Universal Game Emulator