MiSTer FPGA Update Overhauls Autofire With Frame-Perfect Precision
A new update to the MiSTer Main binary introduces frame-synchronized autofire and per-button customization, saving both your thumbs and your high scores.
The MiSTer FPGA project has released a substantial update to its main input handling system, introducing a complete overhaul of how autofire functionality works across all cores. According to the official changelog, the update implements frame-synchronized rapid fire, per-button rate controls, and new configuration options via the system's initialization file.
For the uninitiated, the MiSTer project is an open-source hardware platform that uses a DE10-Nano FPGA board to simulate classic consoles and computers at a circuit level. While software emulators running on a PC or Raspberry Pi approximate the behavior of a system, the MiSTer attempts to replicate the actual hardware logic. This results in extremely low latency and high accuracy, making it the preferred choice for enthusiasts who take their 16-bit jump timing seriously.
Frame-Perfect Firing
The headline feature of this update is the shift to frame-synchronized autofire. In previous iterations or lesser emulation solutions, autofire often functions as a simple timer that toggles a button on and off at a set interval (like every 50 milliseconds). While functional, this method ignores the internal clock of the game console being simulated. If the autofire pulse drifts out of sync with the game's frame rate, inputs can be dropped or processed erratically.
The new implementation uses the "core frame counter" to drive the autofire timing. This means the rapid-fire pulses are locked to the video signal and logic of the core itself. For fans of shoot-'em-ups (shmups) like DoDonPachi or run-and-gun titles like Metal Slug, this is a significant improvement. Many classic arcade games impose a limit on how many player projectiles can be on screen at once. If you fire too fast, the game ignores the input. If you fire too slow, you lose damage per second. Frame-synchronized autofire allows players to dial in the exact rhythm required to maximize firepower without jamming the weapon logic.
Granular Control
The update also introduces per-button rates. Previously, enabling autofire often meant applying a global speed to any button with the feature active. Now, users can configure different rates for different buttons. This is particularly useful in games where you might want a machine-gun rapid fire on the 'A' button but a slower, more deliberate repeat rate on a secondary weapon button to conserve ammo or charge meters.
Power users can now tweak these settings directly in the mister.ini configuration file. This allows for persistent custom rates that don't need to be re-adjusted every time you boot up the system. The commit notes also mention a fallback to "timerfd" for cores that might not support the frame counter method, ensuring backward compatibility across the MiSTer's vast library of supported systems.
Under the Hood
Beyond the user-facing features, the update addresses some internal housekeeping regarding how the system tracks inputs. The developer notes an improvement to "button reference counting," which was previously limited to two. In plain English, this refers to how the system tracks a physical button being mapped to multiple logical functions. If you are the type of player who maps "Jump" and "Fire" to a single macro button for frame-perfect platforming tricks, this change ensures the system won't get confused about when the button is actually being held down.
While autofire was once looked down upon in the 1980s as a tool for cheaters, the retro gaming community has largely embraced it as an accessibility feature and a joint-saver. As hardware ages, so do the players, and preserving the physical switches on rare original controllers (and the cartilage in our wrists) is a priority. This update ensures that when we do choose to let the machine do the mashing, it does so with mathematical precision.
Comments ()