iNES
version 6.1
Contents
Disclaimers
- Nintendo Entertainment System (NES), Famicom, Famicom Disk System
and Dendy are all registered trademarks of Nintendo.
- GameGenie is a registered trademark of Galoob.
- The author is in no way affiliated with Nintendo.
- The author is in no way affiliated with any pirate group out there.
- The author cannot and will not provide you with
any NES or Famicom games.
- The author cannot be held responsible for anything this program
will do to your computer, brains, free time, housemates, pets, or
family members.
New in This Version
- Fixed audio randomly not working on iNES-Windows startup.
- Added "Video | Show Framerate" menu option to iNES-Windows.
- Most command line options should now work in iNES-Windows.
- Increased synchronization timer precision in iNES-Windows.
- Added
-fps
command line option.
Introduction
iNES is a portable emulator of the Nintendo Entertainment System
(aka Famicom in Korea and Japan, Dendy in Russia). It runs most NES/Famicom
games and supports such esoteric devices as GameGenie, Family BASIC
keyboard, Famicom Disk System, and VS-System coin-op arcade. The original
idea of iNES belongs to Alex Krasivsky, who found the first pieces
of information about NES hardware and wrote the initial code, although
nothing remains of that code today. You can always get latest iNES
news, binaries, and support files from
http://fms.komkon.org/iNES/
Following is a list of features iNES supports:
- General NES Hardware
- CPU (6502 without decimal math)
- 8kB Internal RAM
- Up to 32kB External RAM
- Two Joysticks
- Video Processor (aka PPU)
- Up to 16kB of VRAM
- Screen Mirroring
- Scrolling via $2005
- Screen Splits via $2006
- Several Choices of Palette
- Sprites with Priorities
- Sprite Hit Flag
- Sound Generator
- Three Channels of Melodic Sound
- White Noise Channel
- PCM Wave Channel
- DiskSystem Melodic Channel
- NES/Famicom Add-Ons
- Galoob GameGenie
- Famicom DiskSystem
- Nintendo VS-System
- FamilyBASIC 2 Keyboard
- FamilyBASIC 3 Keyboard
- Zapper Light Gun (Duck Hunt, etc.)
- Paddle (Arkanoid)
- PowerPad (Athletic World, etc.)
- Cartridges
- Battery Backed RAM
- CNROM Cartridges (#2)
- UNROM Cartridges (#3)
- GNROM Cartridges (#66)
- AOROM Cartridges (#7)
- CPROM Cartridges (#13)
- Specialized 32kB ROM Switch (#34)
- Nintendo MMC1 Chip (#1)
- Nintendo MMC2 Chip (#9)
- Nintendo MMC3 Chip (#4)
- Nintendo MMC4 Chip (#10)
- Nintendo MMC5 Chip (#5)
- Konami VRC4a Chip (#21)
- Konami VRC4b Chip (#25)
- Konami VRC2a Chip (#22)
- Konami VRC2b Chip (#23)
- Konami VRC6 Chip (#24, not quite done)
- FrontFarEast Copier F4xxx Games (#6)
- FrontFarEast Copier F3xxx Games (#8)
- FrontFarEast Copier F6xxx Games (#12, not quite done)
- FrontFarEast Copier F8xxx Games (#17)
- ColorDreams Cartridges (#11)
- AVE Nina-3 Cartridges (#79)
- AVE Nina-6 Cartridges (#81)
- Bandai Cartridges (#16)
- Jaleco SS8806 Chip (#18)
- Namco 106 Chip (#19)
- Irem G-101 Chip (#32)
- Irem H-3001 Chip (#65)
- Irem 74HC161/32-based Cartridges (#78)
- Taito TC0190/TC0350 Chips (#33)
- Tengen RAMBO-1 Chip (#64)
- SunSoft3 Chip (#67)
- SunSoft4 Chip (#68)
- SunSoft5 Chip aka FME-7 (#69)
- Bandai Chip (#70)
- Camerica Chip (#71)
- Pirate HK-SF3 Chip (#91)
- 100-in-1 Cartridge (#15)
- Other
- Saving and loading emulation state
- Automatic handling of GZIPped ROMs
- Recording soundtrack into MIDI files
- Built-in debugger
- Built-in configuration menu
- Loadable color palettes
- Simulated TV scanlines (Windows, MSDOS, Symbian ports)
- Video image interpolation (Windows, MSDOS, Symbian ports)
- Network multiplayer mode (Windows and Symbian ports)
- Resizable window (Windows and Unix ports)
- Full screen mode (Windows, MSDOS, Symbian ports)
- Screen snapshots (MSDOS port only)
- Configurable screen orientation (Symbian port only)
- Configurable backlight control (Symbian port only)
iNES Ports
Because iNES is a very portable program, it can run on many different
platforms: Windows, Android, Linux, Unix, MacOS, MSDOS, Symbian,
PocketPC, etc. The complete up-to-date list of iNES ports is available
at the iNES distribution site. Following are the major ports:
iNES-Android
-
The Android version of iNES is available from Google Play:
https://play.google.com/store/apps/details?id=com.fms.ng
Once you download a copy, you should be able to use it on as many Android
devices as you own, as long as they are all linked to the same Google Play
account. Make sure to enable automatic updates, as iNES-Android updates
often. The Android version comes with many additional features, such as
Cheatopedia with cheat codes for many popular games, State
Exchange letting iNES users exchange saved games, the Box
Art Downloader, improved Network Play functionality, and more.
iNES-Windows
-
The iNES-Windows is now free for everyone to use and share. It can be
downloaded from the iNES homepage:
http://fms.komkon.org/iNES/
For more information, take a look at my other products for Windows:
http://fms.komkon.org/EmuWindows/
As I have made iNES-Windows free, it is no longer being sold via eSellerate.
Existing users should go to the above site and download a fresh copy. If
you wish to support my work on iNES-Windows and other emulators,
please consider buying
iNES-Android.
iNES-Unix and iNES-Linux
-
iNES-Unix and iNES-Linux are available freely in binary form from the
iNES homepage:
http://fms.komkon.org/iNES/
I am always trying to compile it on as many different Unix and
Linux flavors as I have handy at the moment.
iNES-Maemo and iNES-Meego
-
The iNES-Maemo works on Nokia devices running Maemo or Meego OS. It is
specifically optimized for Maemo platform and available for free from
respective package repositories and iNES homepage. As both Maemo
and Meego platforms are dead, I am no longer developing for them though.
iNES-MSDOS
-
I am no longer developing and supporting iNES-MSDOS, as the MSDOS platform
is completely dead nowadays. Older iNES-MSDOS versions were sold as part of
the iNES-Windows package (now free), compiled with OpenWatcom C++, and used
DOS4GW 32bit DOS extender and VESA screen drivers.
iNES-Symbian
-
The iNES-Symbian port worked on phones running the 3rd Edition of the Nokia
S60 software. It is no longer being developed and supported, as Symbian and
all its development tools are dead. You can still access some of my Symbian
products at this address though:
http://fms.komkon.org/EmuSymbian/
iNES-PocketPC
-
The PocketPC version of iNES has long been developed by Aaron
Oneal. As PocketPC is long dead though, iNES-PocketPC is dead as well.
You can still get older PocketPC versions of iNES and my other
emulators from
http://fms.komkon.org/MorphGear/
Registered Users
If you've registered iNES-Windows, please do not give your copy to
anybody. And I do mean anybody. There were cases when registered
users gave iNES away to their friends, relatives, or just some shady
characters on the Net, and then I found it pirated, put onto the Web, and
even posted to USENET newsgroups. If I find your personalized copy
of iNES being spread around, your registration gets automatically cancelled
which means no support and no more updates.
I understand that the previous paragraph may sound threatening to some
people, but this kind of piracy really hurts my profits and feelings. I've
put a lot of effort into iNES, and can only continue working on it if
people do not try to cheat on me.
It may also be a good idea to buy a real cartridge for each NES ROM
image you use with the emulator. NES software is copyrighted, but as
long as you own the real cartridge, you should be protected by the law
allowing customers to backup bought software.
What is Included
Following files are included into the distribution:
ines - iNES executable file (Unix, ines -help for options)
ines.exe - iNES executable file (Windows)
ines-dos.exe - iNES executable file (MSDOS, ines-dos.exe -help for options)
iNES.html - This documentation
CART.NES - Sample ROM image
Old-iNES.pal - Palette file with standard (old) iNES colors.
Covell.pal - Palette file with NES colors as measured by Chris Covell.
FCEU.pal - Palette file used by the FCE Ultra emulator.
RP2C04-001.pal - VS System palette used in the RP2C04-001 chips.
RP2C04-002.pal - VS System palette used in the RP2C04-002 chips.
RP2C04-003.pal - VS System palette used in the RP2C04-003 chips.
RP2C05-004.pal - VS System palette used in the RP2C05-004 chips.
What is Not Included
Absolutely no ROM images of NES games are included. NES games
are still copyrighted by the companies who produced them, and therefore, I
can not distribute any of them. I'm also unable to tell you where to find
these games, so do not send me email asking for them. You will have to
look for them on your own.
Buttons
When using FamilyBASIC keyboard, press [CONTROL]+[KEY] to access a
special function of a [KEY] if it also performs a keyboard function.
[ALT] - Hold to switch to the second controller
[SPACE] - FIRE-A button (also: [SHIFT],A,S,D,F,G,H,J,K,L,Q,E,T,U,O)
[CONTROL] - FIRE-B button (also: Z,X,C,V,B,N,M,W,R,Y,I,P)
[TAB] - SELECT button
[ENTER] - START button
[BACKSPC] - Insert VS System coin
Flip DiskSystem floppy
[PGUP] - Fast-forward emulation (also: [F9])
[ESC] - Quit emulation (also: [F12])
[F2] - Toggle soundtrack log on/off
[F3] - Toggle FIRE-A autofire on/off
[F4] - Toggle FIRE-B autofire on/off
[F5] - Invoke builtin menu
[F6] - Load emulation state
[F7] - Save emulation state
[F8] - Replay recorded gameplay
[F9] - Fast-forward emulation (also: [PGUP])
[F11] - Reset NES
[F12] - Quit emulation (also: [ESC])
[Q,W,E,R,A,S,D,F,Z,X,C,V] - PowerPad buttons (upside)
[U,I,O,P,H,J,K,L,B,N,M,,] - PowerPad buttons (downside)
[ALT]+[PGUP] - Increase audio volume
[ALT]+[PGDOWN] - Decrease audio volume
When compiled with #define DEBUG:
[F1] - Go into built-in debugger
When compiled with #define WINDOWS:
[ALT]+[ENTER] - Switch between full screen and windowed modes.
When compiled with #define GIFLIB:
[F10] - Make a screen snapshot (SNAPxxxx.GIF)
Command Line Options
-verbose <level> - Select debugging messages [5]
0 - Silent 1 - Startup messages
2 - Illegal accesses 4 - Illegal CPU ops
8 - Bank switching 16 - DiskSystem
32 - PPU accesses
-skip <percent> - Percentage of frames to skip [25]
-help - Print this help page
-cheat <code> - Activate a GameGenie or Pro Action Replay cheat
-autoa/-noautoa - Autofire/No autofire for button A [-noautoa]
-autob/-noautob - Autofire/No autofire for button B [-noautob]
-pal/-ntsc - Show 240 or 224 lines [automatic]
-rkbd/-jkbd/-nokbd - FBASIC3R, FBASIC2J, or no keyboard [-nokbd]
-gun - Emulate light gun [off]
-ppad - Emulate PowerPad [off]
-paddle/-jpaddle - Emulate US/Japanese paddle [off]
-allspr - Show all sprites, ignore hardware limit [off]
-dip <hexbyte> - Set VS System DIP switches [$00]
-palette <filename> - Load default palette from a file [automatic]
-logsnd <filename> - Write soundtrack to a MIDI file [LOG.MID]
-sync <frequency> - Sync screen updates to <frequency> [60]
-nosync - Do not sync screen updates
-tv/-lcd/-raster - Simulate TV scanlines or LCD raster [off]
-linear - Scale display with linear interpolation [off]
-soft/-eagle - Scale display with 2xSaI or EAGLE [off]
-epx/-scale2x - Scale display with EPX or Scale2X [off]
-cmy/-rgb - Simulate CMY/RGB pixel raster [off]
-mono/-sepia - Simulate monochrome or sepia CRT [off]
-green/-amber - Simulate green or amber CRT [off]
-4x3 - Force 4:3 television screen ratio [off]
-fps - Show framerate counter [off]
-sound [<quality>] - Sound emulation quality (Hz) [22050]
-nosound - Disable sound emulation
When compiled with #define DEBUG:
-trap <address> - Trap execution when PC reaches address [FFFFh]
When a keyword 'now' is used in place of the
<address>, execution will trap immediately.
When compiled with #define UNIX or #define MAEMO:
-shm/-noshm - Use/don't use MIT SHM extensions for X [-shm]
-saver/-nosaver - Save/don't save CPU when inactive [-saver]
-scale <factor> - Scale window by <factor> [2]
When compiled with #define MSDOS:
-vsync - Sync screen updates to VGA VBlanks [-vsync]
-480/-200 - Use 640x480/320x200 VGA screen mode [-200]
Frequently Asked Questions
- I WANNA PLAY GAMES!!!! WHERE DO I GET GAMES???????
I do not know. I can't give you any due to both legal and moral reasons.
Please, do not mail me asking for games. I will delete your mail right
away, and you won't get an answer.
- How do I copy games from cartridges to a computer?
You can use a special device called cartridge copier.
- What is NES? How its hardware works?
Nintendo Entertainment System (NES), known as Famicom in Asia, is an
old videogame console produced by Nintendo that was very popular in
the eighties and nineties. It is built around a 6502 CPU. You can find
details on the NES architecture at
http://fms.komkon.org/EMUL8/
- There is no version of iNES for my Unix!
I am trying to compile Unix binaries for as many flavors of Unix as
possible, but as I do not have access to many machines, do not expect
immediate support for every Unix flavor out there. Don't mail me asking
for the source either: iNES source code is not publicly distrbutable,
as much as I regret to say this.
- My favorite game doesn't work on iNES. What do I do?
There may be several reasons why a game has problems running on
iNES or does not run at all.
- Your ROM image file may have an incorrect header or other problems.
Some of them can be detected by running it through the NESLIST
utility (included into EMUTools package).
- It is considered "cool" by many pirates to put their "signatures"
into unused bytes of .NES headers. Such image files are not
guaranteed to work, even if they worked on some older version of
iNES. Do not use pirated ROM images.
- You may be running a game written for European (PAL) NES in the NTSC
mode. iNES will try to determine the correct video mode from the
.NES file header, but many old .NES files default to NTSC mode. To
force iNES into PAL mode, use
-pal
command line option
or corresponding menu options.
- The game does not run with the FamilyBASIC keyboard. The keyboard
support is off by default, but if you have it on, turn it off. On the
other hand, some cartridges may require the keyboard. Use the
-rkbd/-jkbd
command line options or corresponding menu
options to turn on the keyboard support.
- The game may require some exotic piece of equipment, such as a
light gun. Not all NES hardware addons are supported by iNES.
- iNES might not currently run this game. Not all games are supported at
this moment. Don't expect 100% compatibility with the real hardware.
- What are .NES files? Do you have the format description?
.NES files are used to store ROM images of NES cartridges. As NES
carts may contain separate ROM, VROM, and other circuitry, it has
been necessary to make a special file format for them. The complete
description of the .NES file format can be obtained from the NES
Hardware Architecture document at
http://fms.komkon.org/EMUL8/
- What are .FDS files? Do you have the format description?
.FDS files are used to store Famicom DiskSystem disk images. Each
disk has two sides and each side stores 65000 bytes of data. An .FDS
file contains concatenated images of these sides, first for side A,
then for side B. It may contain images of multiple disks, stored
one after another. There are no headers or other information, just
65000-byte chunks of data.
- How do I use DiskSystem emulation in iNES?
First of all, you need to have a file called DISKSYS.ROM in your
current directory. This file should contain the DiskSystem BIOS of
8192 bytes in size.
To run a program from an .FDS file, open it as you would open any
normal .NES file. iNES will start with the disk "removed" from the
"drive". To insert the disk, press [BACKSPACE] and release it. The
boot-up sequence will start. Every time the program asks you to change
the disk side or put a next disk, press and release [BACKSPACE]:
this will simulate disk removal/insertion and also switch iNES to
the next chunk of data from the .FDS file. To skip to a certain disk
(or side), press [BACKSPACE] multiple times.
- What is NESLIST?
NESLIST is a small utility which will list, verify, and possibly fix
NES ROM images for you. It is highly recommended to all iNES users
and has been a part of the iNES distribution for a long time. It is now
distributed as a part of the EMUTools package.
- What is EMUTools package and where can I get it?
EMUTools is a set of utilities which may be useful for both emulator
authors and users. They allow to list and verify diferent ROM images,
convert music files, disassemble and compare ROMs. EMUTools can be
obtained from
http://fms.komkon.org/EMUL8/
- Do I need to unpack GZIPped ROM images to run them on iNES?
No, unless your copy of iNES has been compiled without ZLib library.
Most iNES ports are compiled with this library. ZLib allows iNES to
recognize and automatically unpack GZIPped and singular PKZIPped files.
To find out whether your copy of iNES supports this feature, run it with
the -help
option and see if its says anything about GZIP
support.
- When starting iNES-Unix, ld says that libz library isn't found.
Most iNES-Unix binaries are compiled with ZLib library to make
them recognize and unpack GZIPped files. This option requires ZLib
library which can be obtained from
http://www.zlib.net/
- When starting iNES-Unix, ld says that some library isn't found.
This may happen if the versions of your shared libraries are older than
the ones for which iNES has been compiled. A decent way to deal with this
is to upgrade your Unix. A quick and dirty way is to make a symbolic link
from the existing library to a name required by iNES.
- When starting iNES-Unix, I get X_ShmAttach error.
You are probably trying to run iNES-Unix on a remote Xterminal while it
attempts to use shared memory for interfacing with X. Use the
-noshm
option to tell it not to use shared memory.
- When starting iNES-Unix, I get X_PutImage error.
iNES-Unix version currently needs 8bit, 16bit, or 32bit X. Neither
2-color nor 16-color Xterminals will work. 24bit Xterminals may work,
but don't count on it.
- When starting iNES-Unix, the window stays black.
Some other X application took over all available colors so that the
emulation could not allocate any for itself. Check if you run XV,
Netscape, or something similar.
- The sound is distorted in the iNES-Windows. How do I fix it?
The wave-synthetized sound in iNES may become distorted on slow or
highly loaded machines (no graphics acceleration, for example). There are
several ways you can improve sound:
- Decrease the sampling frequency (in Audio menu). The sound may become
tinkier, but less distorted.
- Increase the latency (Audio menu). This may cause sound to fall
behind the screen action, but the sound quality will become better.
- Use MIDI sound instead. It has both advantages and disadvantages
though.
- Make iNES skip more frames (in Video menu). The screen action will
become less smooth, but the CPU load will decrease.
- Make iNES window smaller to decrease the load on the CPU. 1:1 is
the optimal size.
- How do I save and load emulation state during the game?
The machine state can be saved by pressing [F7]
button and
loaded using [F6]
. The resulting data file will have the same
name as your .NES file, but its extension is going to be .STA. This state
file will be loaded automatically next time you start iNES. The same state
file is not guaranteed to work for versions of iNES running on a different
hardware.
- What are those weird Fxxx and SMxxx files?
Those are most likely files produced by the Front Far East copier. Each
such file has a 512-byte header (which you need to get rid of), an
optional 512-byte trainer (which you probably want to retain), a ROM, and
an optional VROM, all stuck together into a single file. Simply cut off
the FFE header, add a .NES header, and modify it to reflect the correct
number of pages, mapper type, etc.
It is necessary to note that even those FFE ROM images which do not have
a trainer were very often modified to work with the FFE copier. Although
iNES has support for several types of FFE images, it is strongly
recommended that you only use clean, unhacked ROM images backed directly
from the cartridges you own, instead of FFE images.
- What are the interleaved NES ROM images?
Interleaved NES ROM image is a file which contains the ROM data in each
even byte, and the VROM data in each odd byte. You will have to write a
program to separate such file into ROM and VROM, and then glue them
together with a .NES header to produce the .NES file.
- What is that "Mirroring" flag?
In the real NES/Famicom cartridges, either A10 or A11 line of the
address bus can be connected to VRAM. Depending on it, video memory may
either contain two screens at addresses $2000/$2400 mirrored at $2800/$2C00
(Vertical Mirroring), or two screens at $2000/$2800 mirrored at $2400/$2C00
(Horizontal Mirroring).
The games which only use one screen do not care about the mirroring. The
games using two screens require an appropriate mirroring though. Be aware
that many bank switches allow to switch mirroring from the program. Other
cartridges contain additional VRAM and have both A10 and A11 lines connected.
Mirroring has no meaning for such cartridges.
- What is the "512-byte Trainer"?
The 512-byte trainer mentioned before is something implemented in the
Front Far East copier for the NES. When this trainer is present (its code
precedes the ROM contents in the .NES file), it is loaded into
$7000-$71FF, and then control is passed to it at some points of the
program execution.
History
New in iNES 6.0
- Added mapper #30 for homebrewn 512kB/256kB UNROM boards.
- Added mapper #111 for homebrewn Cheapocabra GTROM boards.
New in iNES 5.9
- Refactored scaling and special effects framework.
- Optimized scaling for large screens and windows.
- Added simple CPU-based linear scaling algorithm.
- Added file drag'n'drop support to iNES-Windows.
- Added
-linear
command line option to iNES-Linux.
- Added "Video | Interpolate Video | Linear Scaling" option to iNES-Windows.
- Enabled "Video | Stretch Full Screen" option with effects enabled.
- Enabled "Video | Force 4:3 Screen" option with effects enabled.
New in iNES 5.8
- Added "File | Clear Settings and Quit" option to iNES-Windows.
- Fixed small windows behavior in iNES-Windows.
- Fixed window position behavior in iNES-Windows.
- Saving physical joystick/gamepad selection in iNES-Windows.
New in iNES 5.7
- Refactored mapper #4 (MMC3) implementation, fixed multiple bugs.
- Gunnac title now shows without garbage.
- Fixed sprite rendering at the left edge of screen.
- Fixed vibrating sound during replay.
- Disabled percussion channel in MIDI recordings (too much noise).
- Fixed window title in iNES-Windows when started from command line.
- Fixed PulseAudio hangup on exit in iNES-Linux.
New in iNES 5.6
- Now also blanking sprites when the left edge is being blanked.
- NMI cannot be disabled or cancelled once VBlank starts.
- Double Dragon no longer hangs at subway scene, etc.
- Fixed mapper #65 (Irem H3001 chip).
New in iNES 5.5
- Changed MMC3 to start with 16kB page at $8000
- Plants Vs Zombies works now (assumes 16kB page at $8000).
- Changed VBlank-to-NMI distance to 7 clocks.
- Antarctic Adventure works (needs 7+ VBlank-to-NMI clocks).
- Ultimate Basketball works (needs 6+ VBlank-to-NMI clocks).
- Road Worker works (needs 6+ VBlank-to-NMI clocks).
- Brother Ball works (needs 6+ VBlank-to-NMI clocks).
New in iNES 5.4
- Added vertical scroll bug emulation (Tower Of Druaga works).
- Added left-side sprite masking emulation.
- Fixed background/sprites rendering order.
- Disabled sprite #0 hit detection at X=255.
- Disabled drawing sprites at scanline #0.
- Further optimized sprite drawing.
New in iNES 5.3
- Made replay save states approximately every 170ms.
- Added ability to browse through paused replay.
- During replay, the [UP] button to pause.
- Press [LEFT] and [RIGHT] to browse through paused replay.
- Press [UP] to resume replay, any other key to continue.
- Made
WaitJoystick()
exit when window closed.
New in iNES 5.2
- Added remaining time display during replay.
- Stopping replay when emulation reset or state loaded.
- Fixed replay rollover mechanism.
- Added shadow underneath the time display.
New in iNES 5.1
- Made iNES treat all ROMs with mapper #99 as VS-System ROMs.
- Added multiple monitor support to iNES-Windows.
- Fixed disappearing window in iNES-Windows.
- Fixed best full-screen mode detection in iNES-Windows.
- Fixed window flicker that appeared after recent Win10 updates.
- Fixed default window position to the middle of the screen in iNES-Windows.
- Fixed DirectInput joysticks support in iNES-Windows.
- Made directional pads work on XBox gamepads.
- Switched iNES-Linux to using PulseAudio sound.
- Updated old PulseAudio driver for 64bit Linux.
New in iNES 5.0
- Added support for DirectInput joysticks to iNES-Windows.
- Moved all input-related options to the "Input" menu in iNES-Windows.
- Fixed crash when changing audio sampling rate in iNES-Windows.
- Added "Draw 65% Frames" option to iNES-Windows.
- Fixed screen updates after changing scaling algorithm in iNES-Windows.
New in iNES 4.9
- Added waveforms to DiskSystem sound chip emulation.
- Added volume envelopes to DiskSystem sound chip emulation.
- Computing effective waveform power when simulating samples via MIDI.
- Fixed triangle channel volume when playing via MIDI.
- Fixed "Hit MIDI Drums" option in iNES-Windows.
- Added "Nearest Neighbor" option to disable linear interpolation.
- DiskSystem disks now get loaded starting with side A.
New in iNES 4.8
- Fixed DPCM sound channel (Journey To Silius, Castlevania 2, etc).
- Fixed sawtooth sound channel linear counter.
- Added support for binary .PAL files used by other emulators.
- Added "Force 4:3 Screen" option to iNES-Windows.
- Fixed 44kHz sound hiccups when 50Hz sync selected in iNES-Windows.
- Disabled Direct3D antialiasing when magnifying by x3 or more.
- iNES-Windows will use the last loaded .PAL file automatically.
- iNES-Windows will not overwrite last .NES file name with .PAL or .STA names.
- Keys [1]-[8] will toggle individual sound channels in iNES-Windows.
- Key [0] will toggle all sound channels in iNES-Windows.
- Added
-4x3
command line option to iNES-Unix.
New in iNES 4.7
- Completely rewrote sound chip emulation.
- Fixed sound in Super Mario Brothers, Duck Hunt, many other games.
- Properly implemented sound length counters and register $4015.
- Now silencing sound channel when sweep value exceeds $7FF.
- Fixed Famicom DiskSystem sound channel.
- Fixed mappers #21 (VRC4A/VRC4C) and #22 (VRC2A).
- Ganbare Goemon 2 and Wai Wai World 2 (mapper #21) work.
- Fixed mappers #23 and #25 to guess VRC4/VRC2.
- Status line in Japanese Tiny Toon Adventures (mapper #23) works.
- Status line in Boku Dracula Kun (mapper #23) works.
- Ganbare Goemon and Japanese Gradius 2 (mapper #25) work.
- Bio Miracle Bokutte (mapper #25) works.
- Fixed creating file associations on Windows 8+.
New in iNES 4.6
- Added Scale2X scaling algorithm.
- Added Monochrome, Green, Amber, and Sepia CRT emulation.
- Added
-scale2x
and -raster
command line options.
- Added
-mono
, -sepia
, -green
,
and -amber
command line options.
- EMULib-specific command line options now processed inside EMULib.
- Added "Play Sound When Inactive" option on Windows.
- Added "Scale2x Algorithm" option on Windows.
- Added "LCD Raster" option on Windows.
- Added "Debugger" option on Windows.
- Renamed "Color Raster" menu to "Color Filter" on Windows.
- Deprecated
-notv
and -nolcd
command line options.
New in iNES 4.5
- Added mapper #90 (Aladdin, Final Fight, etc).
- Added mapper #118 (Alien Syndrome, etc).
- Added mapper #209 (Samurai Spirits 2, etc).
- Added mapper #211 (Donkey Kong Country 4, etc).
- Fixed interrupts in mappers #17, #18, #168.
- Fixed mapper-specific I/O port reads.
- Amplified pixel color raster effects.
- Updated iNES-Windows "About" box.
- Updated this documentation.
New in iNES 4.4
- Added special effects simulating individual pixel components.
- Added EPX and EAGLE scaling algorithms.
- Fixed memory corruption bug in the instant replay recorder.
- Fixed instant replay not restoring successive states.
- Fixed instant replay not recording the first state.
- Merged scanline options into "Simulate Scanlines" in iNES-Windows.
- Merged scaling options into "Interpolate Video" in iNES-Windows.
- Added "Apply Color Raster" submenu to iNES-Windows.
- Added "RGB Raster" and "CMY Raster" options to iNES-Windows.
- Added
-rgb
and -cmy
command line options.
- Added
-epx
and -eagle
command line options.
New in iNES 4.3
- Fixed lightgun emulation (Duck Hunt, etc).
- Fixed sound channels not being restored properly.
- Removed waveform interpolation for more realistic sound.
- Switched iNES-Windows to Direct3D textures-based rendering.
- Added "Simulate LCD Scanlines" option to iNES-Windows.
- Added "Stretch Full Screen" option to iNES-Windows.
- Added
-lcd
and -nolcd
command line options.
- Enabled Cheat Hunter and Replay features in iNES-Linux.
- Fixed compilation warnings in iNES-Linux.
New in iNES 4.2
- Improved 6502 clock precision.
- Added support for 100+ undocumented 6502 instructions.
- Increased VBlank interrupt delay from 4 to 5 cycles (Kart Fighter).
- Now rendering sound in 1ms increments. Percussion effects became
much better.
- Now accurately emulating APU random noise generator.
- Fixed sound channels defaulting to melodic sound after reinitializing
sound.
- Fixed APU register $400F emulation.
- Optimized APU volume computation.
- Added light gun emulation (Duck Hunt, etc).
- Added support for Japanese Arkanoid paddle.
- Added support for PowerPad.
- Paddle fire button now returns 1 when pressed.
- iNES will now automatically load GameGenie cheats from *.CHT files.
- iNES will now automatically load patches from *.IPS files.
- iNES will now automatically load palettes from *.PAL files.
- Added support for Pro Action Replay cheats.
- Added the Cheat Hunter tool to find your own cheats.
- Added functions for load and save GameGenie cheats.
- Added support for "wrapped" DiskSystem files that come with a 16-byte
FDS header.
- Now resetting DiskSystem to floppy side A on startup.
- Added mapper #12 (Dragon Ball Z 5).
- Fixed mapper #19 (more Namcot games).
- Added mapper #26 (Konami VRC6 with A0/A1 bits flipped).
- Added mapper #36 (TXE/MicroGenius).
- Added mapper #37 (Super Mario Bros. + Tetris + Nintendo World Cup multicart).
- Added mapper #38 (Crime Busters).
- Added mapper #41 (Six-in-One multicart).
- Added mapper #42 (hacked FDS games).
- Added mapper #44 (7-in-1 multicart).
- Added mapper #46 (Rumblestation 15-in-1 multicart).
- Added mapper #47 (Super Spike V'Ball + Nintendo World Cup multicart).
- Added mapper #70, used by Bandai and Taito's Arkanoid 2.
- Fixed mapper #71 (more CodeMasters games).
- Added mapper #72 (Jaleco JF-17 chip).
- Added mapper #73 (Konami VRC3 used in Salamander).
- Added mapper #75 (Konami VRC1).
- Added mapper #87, used in Japanese Goonies version.
- Added mapper #88 (Quinty, Namcot Mahjong 3, Dragon Spirit).
- Added mapper #89 (Sunsoft-2 chip in Tenka no Goikenban: Mito Koumon).
- Added mapper #92 (Moero!! Pro Soccer, etc).
- Added mapper #93 (Sunsoft-2 chip in Japanese Shanghai, etc).
- Added mapper #97 (Kaiketsu Yanchamaru).
- Added mapper #99 (VS System games).
- Added mapper #101 (Urusei Yatsura - Lum no Wedding Bell).
- Added mapper #107 (Magic Dragon).
- Added mapper #112 (stripped down MMC3 used by Tengen and Namco).
- Added mapper #113 (American Video Entertainment Nina-03/06 boards).
- Added mapper #140 (Jaleco JF-11/JF-14 boards).
- Added mapper #144 (Death Race).
- Added mapper #152 (Taito's Arkanoid 2).
- Added mapper #163 (Final Fantasy VII, Pokemon Yellow).
- Added mapper #164 (Final Fantasy V).
- Added mapper #193 (TC-112 chip in Fighting Hero, War in the Gulf).
- Added mapper #206 (Tengen MIMIC-01, Namcot 118).
- Added mapper #210 (Family Circuit '91, Dream Master, other Namcot games).
- Added mapper #225 (52 Games, 58-in-1, 64-in-1 multicarts).
- Added mapper #226 (Super 42-in-1, 76-in-1 multicarts).
- Added mapper #228 (Action 52, Cheetamen II).
- Added mapper #232 (Quattro Adventure, Arcade, Sports by CodeMasters).
- Added mapper #240 (Jing Ke Xin Zhuan and Sheng Huo Lie Zhuan).
- Added mapper #241 (Fan Kong Jing Ying).
- Added mapper #242 (Wai Xing Zhan Shi).
- Added mapper #243 (Honey Peach and Poker III).
- Added mapper #246 (Fong Shen Bang - Zhu Lu Zhi Zhan).
- Partially implemented mapper #227 (1200-in-1).
New in iNES 3.6
- Ported iNES to Unix using the new EMULib framework. I will try to
compile the new iNES-Unix for as many Unix flavors as possible.
At the moment, only Ubuntu Linux binaries are available.
- Ported iNES to Maemo OS2008 used in N800 and N810 internet tablets
from Nokia. iNES-Maemo is specifically optimized for internet
tablets using assembler modules from iNES-Symbian.
- Optimized 6502 emulation by collapsing infinite empty loops.
- Introduced more accurate per-scanline cycle counting.
- Once again, extended time before VBlank flag going up by 2 scanlines.
This fixes F1 Race, Elite, etc.
- Moved mapper initialization after default initialization. This should
fix MMC5 screen corruption that occurred in iNES 3.1.
- Fixed MMC3 scanline counter to remove garbage scanlines in Crystalis,
GIJoe 2, Cartoon Workshop, etc.
- Finally fixed light gun ("zapper") emulation!
- Fixed FamiBASIC keyboard support on all platforms.
- Fixed FIRE-A autofire option in built-in menu.
- Fixed command line options for enabling/disabling sound.
- Added support, editing, and display for VS System DIP switches. Also
see
-dip
command line option.
- Added
-soft/-nosoft
command line option and made
softening, scanline simulation, and synchronization options work
on all relevant platforms (Unix, Maemo, MSDOS).
- Removed
-vperiod
and -hperiod
command
line options, as these values are now computed automatically and
do not need adjustment.
- Removed last occurances of #define SOUND. Sound support is always
compiled in anyway.
- Made
[F8]
toggle scanline simulation, while
[SHIFT]+[F8]
toggles softening.
- Added standard VS System palette files to the package.
- Now drawing light gun aim and DIP switches using NES palette to
avoid problems at different screen depths.
- Removed
-novsync
and -200
options from
iNES-MSDOS, and added a new -480
option for 640x480
VESA screen mode.
- Fixed iNES-MSDOS light gun aim in 640x480 screen mode.
- The UIQ version of iNES-Symbian now uses 6502 emulation optimized in
ARM assembler (this option has been left out in the last release).
- iNES-Symbian display routines rewritten in ARM assembler for speed.
This should mainly affect UIQ3 users but S60 users will also benefit.
- Split iNES-Symbian configuration menu into four tabs, making
"Video" and "Audio" settings separate.
- Added "Audio Latency", "Skip Frames", and "Sync Updates" settings
to iNES-Symbian.
New in iNES 3.5
- Added network play option to iNES-Windows and iNES-Symbian!
- Upgraded EMULib audio rendering API.
- Now clearing all memory in ResetNES() to keep both NetPlay sides
consistent.
- Added new, much better, scanline simulation and video softening
effects to iNES-Windows.
- iNES-Windows full-screen mode now runs in 640x480 resolution.
- Fixed input device selection in iNES-Windows and built-in menus.
- Fixed problem with gameplay being too fast in iNES-Symbian.
- Fixed premature termination of the emulation thread when exiting
iNES-Symbian, soundtrack recording and config saving work again.
New in iNES 3.4
- Added proper light gun emulation via mouse (
-gun
).
- Added Arkanoid paddle emulation via mouse (
-paddle
).
- Added PowerPad emulation (
-ppad
).
- Rehashed built-in menu to make space for more options.
- Added menu options to choose and write-enable DiskSystem floppies,
use light gun, paddle, and PowerPad.
- Added built-in menu options to log soundtrack and toggle MIDI drums.
- Finally fixed opendir() problem in iNES-Symbian. All built-in
menu file dialogs work now!
- Added FamiBASIC keyboard support to iNES-Symbian.
- Added display orientation settings to iNES-Symbian ("Landscape",
"Portrait", and "Auto").
- Added backlight settings to iNES-Symbian ("Always On" and "Default").
- Added virtual on-screen keyboard to iNES-Symbian, invoked by pressing
[EDIT]
or left [SHIFT]
key.
- Further extended and optimized Symbian screen rendering routines.
- Fixed and optimized TV scanline simulation in iNES-Symbian, made
scanline effect stronger.
- Fixed system warnings in when flipping Nokia E70 open/closed.
- Fixed possible crash when selecting an initial file in iNES-Symbian.
- Improved "About" box in iNES-Symbian.
- Moved iNES-Symbian file selection root to
E:\
.
New in iNES 3.3
- Added error messages to iNES-Windows and iNES-Symbian.
- Added button and key remapping configuration to iNES-Symbian.
- iNES-Symbian application menu is now split into three pages.
- iNES-Symbian 6502 CPU emulation rewritten in ARM assembler for
speed.
New in iNES 3.2
- Extended built-in configuration menu.
- Added option to draw all sprites (-allspr) rather than obey hardware
sprites-per-scanline limit.
- Fixed time counter in the sound chip emulation.
- Sound chip emulation now uses microsecond precision.
- Removed buffer size limit in CONFile().
- Fixed menu behaviour when selecting PAL/NTSC options.
- Automatic PAL/NTSC selection by header is now default.
- Fixed audio volume resetting after exiting config menu in iNES-Windows.
- Fixed automatic menu and window size changes in iNES-Windows.
- Reduced audio latency and jitter in iNES-Symbian.
- iNES-Symbian now saves settings on exit.
- Extended and corrected the documentation.
New in iNES 3.1
- Switched both iNES-Windows and iNES-MSDOS to the new EMULib framework.
- Added built-in configuration menu ([F5]) available on all platforms.
- Added new screen buffer based 6502 debugger ([F1]) available on all
platforms.
- Made display updates in iNES-Windows much faster.
- Fixed external joystick support in iNES-Windows.
- Improved audio quality in iNES-Windows.
- iNES-MSDOS now uses 15BPP display mode.
New in iNES 3.0
- Extended .NES file specification with a flag for PAL cartridges.
See my NES
Architecture Document for details. iNES now allows to
force PAL (
-pal
), NTSC (-ntsc
), or
select the mode automatically by the cartridge header.
- When you buy iNES-Windows, you now also get iNES-MSDOS.
- Added DirectDraw-based full screen mode to iNES-Windows.
Press [ALT]+[ENTER] to switch in and out of the full screen mode.
Use it with caution, as DirectDraw is notoriously unstable.
- Added support for mapper 13 (CPROM).
- Added support for mappers 79 (Nina-3) and 81 (Nina-6).
- Fixed mapper 25 (VRC4B) to allow writing to cartridge RAM.
- Fixed a minor bug (typo) in the screen driver, thanks to Aaron Oneal.
- Added fast-forwarding option ([F9], also [PGUP] in Windows and Unix).
- Fixed incorrect label on the "Sync to..." slider in iNES-Windows.
- Raised the maximal "Sync to..." frequency to 80Hz.
- Window size and position are now saved on exit in iNES-Windows.
New in iNES 2.3
- Switched to the latest version of the OpenWatcom C/C++ compiler.
- The infamous Windows problem with spaces in directory names seems
to be fixed by using a newer compiler.
- Joystick problems in iNES-Windows are fixed.
- Added joystick configuration to iNES-Windows setup panel.
- Added HSV palette configuration to iNES-Windows setup panel
(not functional yet).
- Fixed a Unix sound driver problem with non-atomic write, thanks to
Colin Howell.
New in iNES 2.3
- Added RAM page selection to MMC1.
- All screen refresh is now directed by the VRAM address register.
- Two lower bits of PPUCONT1 register immediately propagate to
VRAM address bits (Super Mario Borthers, Zelda).
- Fixed frequency sweep for sound channel 0 when increasing frequency
(Othello-Bit).
- Fixed vertical scroll rollover.
- Automatic HPeriod/VPeriod computation is now default.
- Now taking into account cycles taken by the sprite DMA.
- Now not generating NMI if VBlank flag was reset in the PPU status
register (Ikari Warriors 3, BWings).
- Reduced delay between VBlank and NMI to several cycles (Overlord,
Dragon Strike).
- Removed cycle counter roundups.
- Now saving raster effect option as global (not cartridge specific).
- Now cleanly removing the debugger console in iNES-Windows.
- Added keyboard support for FamilyBASIC and other programs using
the keyboard.
- Fixed Windows sound driver to avoid crashes in Windows 2000.
New in iNES 2.1
- New iNES-Windows demo is now available.
- Now setting B-flag to 1 when popping SR off the stack.
- Added wrap-around emulation to 6502's JMP ($xxxx) instruction.
- Added -DNO_DECIMAL to iNES-Windows and iNES-Unix makefiles
(NES 6502 has no decimal mode).
- Added VRAM mirroring between $2000-$2F00 and $3000-$3F00.
- Switched to a single latch for $2005 and $2006.
- Now setting EightSprites flag correctly.
- Now starting sprite DMA from the address set via $2003.
- Now not updating scroll and VAddr until both bytes transferred.
- Fixed a bug in the MMC4 implementation.
- Fixed a bug in the debugger when printing out sprite table.
- Added console debugger to iNES-Windows (press F1).
- Added TV raster effect to iNES-Windows.
- Removed MIDI volume control from the Windows sound driver.
New in iNES 2.0
- Number of 8kB RAM pages added to the .NES header!
- State file format has changed.
- Major overhaul of the screen update driver to get rid of
memcpy() calls in mapper handlers.
- Replaced the original iNES color palette with the one Chris Covell
obtained from the real NES. The original palette is still available
in the Old-iNES.pal file.
- Added support for loading/saving multiple (up to 4x8kB right now)
battery-backed RAM pages from a .SAV file.
- Fully implemented mappers 9 (MMC2 used in Punchout) and 10 (MMC4).
- Limited IRQ counter updates in MMC3 to situations when screen
refresh is on and ChrGen/SprGen use different tables.
- Added mapper 24 (Konami VRC6) but interrupts are still wrong.
- Added mapper 25 (Konami VRC4B).
- Added mappers 64 (Tengen RAMBO-1), 65 (Irem H-3001), 66 (GNROM),
67 (SunSoft3), 68 (SunSoft4), 69 (SunSoft5 FME-7), 71 (Camerica),
78 (Irem 74HC161/32), 91 (HK-SF3).
- Implemented a lot of special features of mapper 5 (MMC5) such as
extended graphics and sound.
- Fixed mapper 11 (Color Dreams games).
- Fixed mapper 19 (Namcot 106).
- Fixed mapper 16 (Bandai) although some timing problems still persist.
- Fixes to mappers 1 (MMC1), 21 (VRC4A), 22 (VRC2A), and 23 (VRC2B).
- Now generating VBlank NMI at line 244 (Galaxian, Toki, Goonies 2, etc.).
- Now retaining mirroring bits when MMC1 is reset (Jekyll And Hyde).
- Added "PPU interface mode" (Elite).
- Fixed vertical offset calculation inside sprites.
- Fixed horizontal scroll calculation from VRAM address.
- Changed HitFlag computation again.
- Changed sound length setting for the sound channel 2.
- Fixed frequency sweep for sound channels 0,1.
- Some general fixes to the sound chip emulation.
- Some improvements to the built-in debugger.
- Documentation has a new section describing iNES-Windows menus
and setup.
- Set background color in iNES-Windows to black.
- Added F6 and F7 to quickly load and save emulation state in
iNES-Windows.
- Added "JoyA", "JoyB", "JoySELECT", and "JoySTART" parameters to the
[iNES] section of the iNES.INI file to configure joystick button
assignments (no GUI yet).
- Obsoleted headers.tgz and headers.zip files.
New in iNES 1.3
- Save state (.STA) file format has changed.
- Added new modular sound chip emulation.
- Added PCM sound channel.
- Improved MIDI logging.
- Implemented correct sprite overlap (SuperMarioBrothers3). Thanks
to John Stiles who pointed out this problem.
- Fixed a bug in FDS sound emulation (Castlevania2, DokiDokiPanic),
also thanks to John Stiles.
- Major rewrite of the sound drivers and sound logging system.
- Fixed several problems with Windows waveOut sound drivers.
- iNES-Windows now runs in 16BPP HiColor mode.
- Added debugger to iNES-MSDOS (F1).
New in iNES 1.2
- Added capability to save and restore emulation state (.STA files).
- Keyboard assignments changed slightly to be consistent with VGB and MG.
- Now storing ROM and VROM in flat chunks of memory.
- Implemented DiskSystem timer.
- Implemented DiskSystem melodic sound (not finished).
- Fixed HitFlag bug.
- Fixed bug with sprites not updated when background is off.
- Made PCM sound start when the channel is switched on.
- Fixed mapper #16 (Dragon Ball Z series and other Bandai games).
- Fixed joystick support in iNES-Windows.
- Fixed current directory name in iNES-Windows.
- iNES-Unix runs in a resizable window now.
- iNES-Unix now has a proper application icon in WMaker.
- Fixed IPC key allocation bug in iNES-Unix.
- iNES-Windows now uses multimedia timer to sync screen refresh.
New in iNES 1.0
- Rewritten and extended documentation.
- Famicom DiskSystem emulation.
- VS System emulation.
- Majorly bugfixed PPU emulation.
- Completely rewritten mapper code.
- NES 6502 does not support decimal math.
- Direct saving of soundtrack to MIDI files.
- Default palette can be loaded from a file.
- Speed control in iNES-Windows.
- Window size/position snapshots in iNES-Windows.
- Keyboard assignments added to iNES-Windows.
- Added speed control to iNES-Unix.
- Removed description of the .SND format.
- Moved .NES format description to the hardware document.
- Many other small fixes and improvements.
New in iNES 0.7
- iNES-Windows can now be registered by phone or via WWW! Pay with
a credit card!
- Extended .NES cartridge format!
- Description of .SND file format!
- Split screens and scrolling are now much more stable.
- Added GameGenie support, thanks to Alex Krasivsky.
- Multiple exotic memory mappers added, thanks to Yang Fanwen.
- Multiple fixes to mapper #4 (MMC3) and mapper #1 (MMC1).
- Sound support completely rewritten, thanks to Kawase Tomohiro.
- Added keyboard setting for Japanese version of FamilyBASIC.
- Added two palette choices from NESticle 0.2 and 0.21.
- Started adding Nintendo DiskSystem support (not finished yet).
- Windows version got built-in support for GZIPped files.
- GUI rewritten and extended in the Windows version.
- MIDI sound implemented in the Windows version.
- Increased number of Windows wave synthesis buffers.
- Added sound logging to the Windows version.
- WinG no longer required for the Windows version.
© Copyright by
Marat Fayzullin
(marat [at] komkon /dot/ org)