QuickNES
From the Macscene Wiki
| |
| Author | Blargg |
| System | Nintendo |
| Latest Version | 1.1b3 |
| Released | July 16th, 2006 |
Contents |
About
QuickNES is a NES emulator for Mac OS X and Mac OS 9 that runs well even on slower machines. Its defining feature is a flexible movie recording and playback system that allows random seeking and re-recording. Emulation is generally cycle exact and it passes most NES test ROMs, though extreme accuracy is not a central goal. It does not use any kind of internal database or checksums to get particular games to run; it runs exactly what's in the iNES file, which might reveal problems that other emulators silently fix.
Features
- Flexible movie recording and playback with re-recording
- Instant rewind for correcting mistakes
- NTSC video filtering with many adjustable parameters
- Clean band-limited sound synthesis with adjustable stereo enhancement
- Adjustable emulation speed
- Low processor usage
- Mappers supported: UNROM, CNROM, MMC1, MMC3, AOROM, VRC6 (with sound), Namco 106 (with sound), FME-7 (with sound), GNROM, Color Dreams, Jaleco, Quattro, and a few game-specific ones (Deadly Towers, Castlevania III)
Movie Implementation
QuickNES movies are implemented by storing controller input for each video frame along with periodic "keyframes" of the full emulated NES state. This allows seeking to any frame in a movie by restoring the most recent keyframe before the desired frame and then replaying the controller input until that frame. This is very similar to the format of most video codecs, where the controller input corresponds to inter-frame differences. Keyframes are currently stored every 30 seconds, chosen based on the tradeoff between memory usage/file size and worst-case seek time. Keyframes can also be placed at specific places to speed seeking, for example to named time markers. Since keyframes use a significant amount of space, a movie file's data is compressed on disk using zlib and in memory using an extremely fast custom compression algorithm. When playing a movie, a two-minute cache of is kept of keyframes at a one-second interval. This allows faster seeking to recently-replayed footage and is essential for implementing the backwards playback mode.
History
Nes_Emu, the core NES emulator library used by QuickNES, began as a very simple NES emulator sometime in 2004. It was based on the 6502 CPU core and APU sound core used in the Game_Music_Emu sound engine. A post to the Nesdev forum about a "sands of time" real-time rewind feature was inspiration to add extensive movie support and greatly improve emulation accuracy and efficiency. The Mac front-end was started in May 2006 and a first version was posted a month later.
