MiSTer SNES Core Update Targets Critical Sprite Memory Bug

A new update for the MiSTer FPGA SNES core addresses low-level PPU access to Object Attribute Memory, ensuring more accurate sprite rendering.

MiSTer SNES Core Update Targets Critical Sprite Memory Bug
MiSTer SNES Core

The MiSTer FPGA project has released a technical update to its Super Nintendo Entertainment System core that specifically addresses how the Picture Processing Unit accesses Object Attribute Memory. Released on January 16, 2026, the commit titled PPU: fix access to OAM modifies the core's logic to ensure the emulated video hardware reads sprite data correctly during specific timing cycles.

For those who just want to play Super Mario World, this might sound like gibberish. However, for the preservationists and engineers keeping the MiSTer project alive, this is the kind of microscopic detail that separates a good emulator from a hardware-accurate recreation. The update is available immediately for users who run their update scripts.

The OAM Bottleneck

To understand why this fix matters, you have to understand the headache that is the SNES Picture Processing Unit (PPU). In the 16-bit era, the PPU was effectively the graphics card of the console. It handled background layers, transparency effects, and most importantly, sprites.

Object Attribute Memory (OAM) is a small, dedicated chunk of memory that tells the PPU where sprites are, which tile to use, and how to flip them. The SNES has a strict limit on how much OAM can be accessed per scanline. If the PPU tries to read this memory at the wrong time, or if the access logic doesn't perfectly match the original silicon, you get visual artifacts. These usually manifest as flickering sprites, characters disappearing entirely, or garbage data appearing on the screen where a Goomba should be.

The commit specifically notes a fix to "access to OAM," suggesting that previous versions of the core may have allowed the PPU to fetch data in a way the original hardware would not permit, or perhaps failed to fetch it when the original hardware would have. In the world of FPGA development, timing is everything. Being "too fast" is just as inaccurate as being too slow.

The Complexity of 1990s Silicon

The Super Nintendo, launched in 1990, is deceptively difficult to emulate perfectly. While software emulators like ZSNES had games running on Pentium IIs decades ago, they did so using high-level hacks and approximations. They guessed what the hardware was doing. The MiSTer project, conversely, attempts to replicate the logic gates of the original chips.

The SNES PPU is actually two separate chips (PPU1 and PPU2) working in tandem. They handle complex tasks like Mode 7 rotation and scaling, color math for transparency, and window masking. When you consider that games like Super Metroid or Chrono Trigger pushed this hardware to its absolute limit, the margin for error in emulation becomes microscopic.

This complexity is why the SNES core is still receiving updates in 2026. As developers uncover more about edge cases—often through the use of specialized test ROMs or by analyzing how homebrew software interacts with the hardware—they find discrepancies between the FPGA code and the original Ricoh 5A22 CPU and PPU pairing.

Why Accuracy Matters

Updates like this highlight the difference between "playable" and "preserved." A casual player might not notice if a sprite flickers on the wrong frame during a busy boss fight in Contra III: The Alien Wars. But for the MiSTer project, the goal is to ensure that the hardware behavior is documented and replicated so faithfully that it is indistinguishable from a console manufactured in 1991.

This dedication to the PPU's internal logic ensures that even the weirdest, most poorly programmed games in the library will run exactly as they did on a CRT television thirty years ago. It is a noble, if slightly obsessive, pursuit.

Users can pull the latest changes by running the standard update_all script on their MiSTer device. As always, while this change is targeted at accuracy, regressions are possible in the short term, so keeping a backup of your previous core version is never a bad idea.