1.6.230222 / 17-03-2022
ANES (Agile Nes) is a Nintendo Entertainment System / Family Computer emulator which is quite accurate and fast. It's written in C uses SDL2 for rendering video, audio and for input handling. That said, it's a command-line program, thus it needs command-lines to be configured and to run a game which can be found here.
While is strives for pixel accurate representation, it does use Resolution Blocks Upscaler to render at high resolutions.
CPU 6502: All CPU 6502 instructions implemented including the so called illegal opcodes. Exact interrupt timings like interrupt check before the last instruction behavior.
APU: all Nes 5 sound channels, MMC5 and VRC6 external sound channels. Emulates the APU-CPU write/read behaviors (exact apu clock timing) Emulate the audio mixer that in real nes hardware (i.e. dac mixer which can be switched between built-in mixer and lookup table, low-pass and high-pass filters).
PPU: Picture Processor Unit with exact timing as it is in nes real hardware (as close as possible). PPU vram-bus and io-bus are implemented as well.
Colors: decode nes colors as close as possible to the real nes hardware, including gray scale and emphasize. ANES does not use palette indexes.
TV Formats: NTSC.
Video Output: Resolution can be upscaled from res 256 x 240 nes basic till 1920 x 1080 Full HD and even higher resolutions.
Sound Playback: playback frequency can be changed using command lines, set to 44100 Hz by default.Bit rate fixed to 16 bit, channels can be set to Mono or Stereo. Audio playback is set to Stereo by default.Supports Stereo Nes Mode which is a hack of nes that allows audio channels to outputed in stereo with pan adjusted.
Boards/mappers: Please see SupportedMappers.txt/SupportedMappers file for more details.
Controllers: 2 players joypads, each joypad is playable through Keyboard or XBox360 Game Controller (XInput).
Game file format: INES (with .nes extension).
Any platform that can run SDL2 (i.e. Windows, Mac OS X, Linux, iOS, and Android).
CPU: 2 GHz+
For linux/other platforms users, SDL2 need to be installed first.
Most Recent Changes
Improved Audio Downsampler.
Improved Audio generally.
Improved performance by converting audio samples from integers into bytes.
Audio now is output in unsigned 8 bit instead of signed 16 bit, it is correct for nes.
Improved SDL2 Audio renderer, it sounds now better and stable.
It may sound error sometimes with some games, but it is correct. Since nes sound output is about 179 MHz and
Audio Channels might sound up to 444000 Hz, so downsampling from 444000 Hz into 44100 Hz will result a loss of resolution.
Applying fixes like taking averages of samples proved to be wrong, so in My Nes, the downsampler now just do downsampling
without any fix. This is correct but might sound error, this is normal due to the loss of resolution.
Nes when outputing audio samples and mixed together, they are range from 0 into 1 in amplitude. If we try to convert
that to 8 bit samples or signed 16 bits will result errors and corruption in sound. The correct convert is from 0-1 apm into
0-127 value or 0 - 0x7F. My Nes now output sound in 8bits with range of 0 - 127, applying a simple fix as well that makes sure
no sample is 0 (DB Fix, see https://github.com/alaahadid/Docs/blob/main/Audio%20And%20DB.txt) to make the sound 100 % correct.
Performance is improved by using 8 bit audio samples instead of 16 bit samples, also renderer now control speed correctly to
make sure audio samples are played correctly in time. This affect performance and accuracy of fps.
Added Stereo Nes mode
Stereo nes is hack of nes that allows audio channels to outputed in stereo with pan adjusted. To enable stereo nes, use command line '-astereones'.
Channels pan level are fixed to: sq1 is 50 into right, sq2 is 50 into left. trl, nos and dmc are in the middle.
Added ability to render audio in Stereo
Added command-lines allows to switch Audio Channels between Mono and Stereo
Updated Copyright information
Added Composite Video Colors Generator.
Improved audio mixer.
Added new command-lines allows to change audio buffer size, might help in case of audio distortion and/or latency.
Fixed bug distorded sound sometimes when running a game at boot.
Fixed sound latency on linux platform.
Added new sound mixer.
Added new command line -alt which allows to force to use lookup-table as a sound mixer.
Fixed issue in memory caused some games to show glitches.
Fixed bug in mapper 23.
Added support for mapper 9, 10, 11, 13, 15, 18, 21, 22, 23, 24, 25 and 26.
Added support for MMC5 and VRC6 sound channels.
Fixed mapper 5, now it support about 60-70 % of mapper 5 games.
Changed default settings: high-res upscale is turned off, window size is set to 1, keep-aspect is off.
The beginning if its journey..!