Jnes Nintendo Entertainment System Emulator for Windows Coded by Jabo
INTRODUCTION
Jnes is a personal project to explore a love of the NES and learn more about programming. Development of Jnes started many years ago, around 1999, it was a very exciting to
engage in a thriving community of reverse engineers and emulator developers. Today Jnes is a more mature piece of software that is capable of playing most
games and as best it can, emulating the original NES.
Important Jnes is freeware, it is not to be distributed with games, it is not to be modified, sold, or repackaged in any way. See the disclaimer for further information.
FEATURES
Hardware Features
All CPU, PPU, and APU features of the original NES
Game Genie and Pro Action Replay cheat support with search
Fullscreen and Windowed mode with graphics filters
Record gameplay to video, image, or audio file
Save and Load nes state from file (11 slots)
Configurable input
Sound visualization
Rom browser
Realtime patching of ROMS using the IPS format
ZIP file loading
Nintendo Sound Format (NSF) playback
Netplay via Kaillera
SYSTEM REQUIREMENTS
Windows Vista, 7, 8, 8.1, 10
Direct3D 9.0 capable 2D acceleration
Jnes is a Unicode application targetting Windows XP and higher. NES emulation by todays standards requires only a modest amount of computing power. The emulation core in Jnes leans towards performance than accuracy in most cases.
Helpful Graphics filters require significantly more processing time.
USING JNES
In this section you will find more detailed information about various topics that are either commonly asked or worth documenting.
While Jnes is very easy to pick up and learn to use, this document is not intended as an end user guide. If you are not familiar
with emulation it may be a good idea to familiarize yourself with the basics before embarking on trying to use this.
Zapper
Zapper emulation is available by using the mouse to simulate both aiming and the trigger via left mouse click. To enable zapper emulation
navigate to: Menu ▶ Options ▶ Input ▶ Player 2
Patches
IPS files are patches that alter a game for purposes such as language translation or to create a new game experience.
Jnes has the ability to apply IPS files if they are in the same folder as the rom image automatically.
Consider the following file names for example:
Game file
Patch file
Megaman 2 (U).nes
Megaman 2 (U).ips
If you prefer to not have Jnes ask before applying an IPS patch you can change this in the settings dialog. A resource for downloading
patches may be found at romhacking.net
Keyboard Shortcuts
There are many keyboard shortcuts available in Jnes for convenience, below a list of some of the more common ones to learn:
Keys
Action
Alt + Enter
Toggle fullscreen
Esc
Return to windowed
F1
Reset
F2
Pause or Resume
F3
Capture screen image
F4
Record sound
F5
Save state
F7
Load state
Tilde, 0-9
Quick change save slot
Import and Export Saves
Save files are stored in a sub folder relative to Jnes called 'saves'.
In order to import or export files from this location you may simply move files in and out of this directory.
Helpful Files are named according to
the game that is played, when importing saves take special care to ensure that save file names match the game file or Jnes will be unable to find your saves.
There are two types of save files in Jnes:
File Extension
Type of save
.JST, .JS0-9
Captures entire system state and restores to a point in time
.SAV
Memory that resides on the cartridge for saving game progress, battery backed
If you intend on using the cartridge save data it is worth familiarizing yourself with a game's save system prior to playing it.
For example, most games require you to explicitly save your progress and will not do so automatically.
Cartridge saves are automatically stored to disk when emulation ends if present.
Safely close a Kaillera session
Due to limitations with the kaillera API, it's not possible for Jnes to know when the chat window is closed. To safely end your gameplay use the
following steps:
Menu ▶ File ▶ Close
Select cancel in Kaillera chat window
Close Kaillera chat window
Close Kaillera server selection dialog
Command line
Jnes.exe ?-switches? "game"
Switches are as follows:
Switch
Description
-relaunchmce
when Jnes exits it will bring Windows Media Center (ehome.exe) back to the foreground
-exitonclose
when emulation ends the application closes instead of bringing you back to a rom browser
-disablestatekeys
disables the save state shortcut keys
VERSIONS
Version 1.2.1 1/15/2017
fixed pov inputs
fixed windows xp
Version 1.2 12/25/2016
bugfix: mouse is no longer required
bugfix: konami vrc2 games
bugfix: puzznic, bases loaded 2
bugfix: large IPS files
better support for mmc5 graphics
improved emulation accuracy
cheat search workspace auto-saves in case of crash
upgraded to Direct3D 9.0 and DirectInput 8.0
added konami mappers 75 (vrc1), 85 (vrc7)
replaced audio channel menu with volume mixer
updated app icon
Version 1.1.1 6/8/2013
bugfix: editing par codes
bugfix: saving settings on exit
bugfix: proper handling of 6502 B-flag
bugfix: megaman audio artifacts
bugfix: zelda intro scrolling
bugfix: ninja gaiden 2 train level
bugfix: tmnt1 technodrome crash
bugfix: apu envelope resets correctly now
bugfix: vrc6 phase was broken
improved ppu sprite0 emulation
dpcm and triangle channels should decay better
added mapper vrc6b
Version 1.1 2/20/2012
bugfix: window sizing was slightly wrong on windows 7
bugfix: window icon would disappear when coming out of fullscreen on windows 7
bugfix: rom browser mode changes didn't update the window properly
bugfix: multiple monitors should work now
bugfix: input Z-axis was be read incorrectly
bugfix: california games bmx event fixed
bugfix: NSF works again properly
bugfix: stereo audio splits channels again
all save and open dialogs now default to the user documents folder
rom browser is now faster when used with a network share
kaillera should be significantly more reliable to use
improved timing and removed extended vblank
rewrote artwork rom browser mode into tile view
cheat memory search
replaced 2xSaI with HQ filters
Version 1.0.2 2/6/2010
bugfix: full screen filters were broken
bugfix: video dialog would accidently clear the filter while changing resolutions
bugfix: rewrote mapper 23 (vrc2) vrom handling to fix Crisis Force
Version 1.0.1 9/6/2008
bugfix: PAR cheats value selection>
bugfix: mapper 69 irq default value
bugfix: solar jetman sound issue
bugfix: bank masking issue
rewrote fullscreen network chat to be faster
added command line option -disablestatehotkeys
custom palettes subfolder with drop down list
Version 1.0 12/25/2007
bugfix: command line arguments, added switches -relaunchmce -exitonclose
bugfix: fixed multiple rom browser sorting issues
bugfix: fixed input POV-hat diagonals
bugfix: fixed palette dialog
bugfix: PAL raw audio timing
bugfix: vsync no longer lags
upgraded to a static zlib 1.2.3
options are now stored in Jnes.ini instead of registry
added software filter to 4x windowed and fullscreen
added windowed mode vsync (experimental)
added fullscreen status messages for states, kaillera, low battery
added setup and autoconfig buttons to input dialog
added a limit fps option
added mapper #225,#235
new browser artwork display mode available in settings dialog
rom browser now caches things quietly for quicker startup
support for capturing movies and rendering them to an AVI
new kaillera dialog to streamline using it
support for external languages in utf-8 format
redid rom info dialog into a nicer table
new system information dialog
added warning for netplay regarding extended vblank
extended kaillera packets with mini state information
kaillera chat via Ctrl+T in fullscreen
new palette options
added blargg's nes_ntsc filter
Version 0.6 2/5/2005
zapper now changes cursor to crosshair in game
rom browser part of main window, auto selects last rom, recent dir list
fixed mutex for video dialog
major cheats rewrite and database update, support for PAR codes
automatic region setting (uses GoodRom name convention)
added some simple mappers: 32,71,79,113
fixed sleep in background issues introduced in last release
support for ppu monochrome mode
input now supports Z,Rx,Ry,Rz axis
turbo buttons are mappable separately
slot menu now has the timestamp of the state
Version 0.5.3 6/5/2004
fixed browser with zip files
netplay now caches rom list, useful if you have thousands of roms
fixed auto full screen preference saving bug from 0.5.2
fixed audio graph performance on XP
fixed NSF playback timing
palette open default current dir, and saving fixed
added support for PAL 50fps
updated dinput from 6.0 to 7.0
fixed windows 98 compatibility bug from 0.5.2
updated documentation slightly
modified audio timing slightly to reduce lag
Version 0.5.2 11/5/2003
Added 48x48 icon for Windows XP view
Now supports play/stop on some multimedia keyboards
Fixed windows message queue handling problem
Rom Browser separates path now
Full screen resolutions can use Super 2x SaI
A stretched version of Super 2x SaI added to 3x and 4x
Version 0.5.1 02/28/2003
Fixed multiple audio thread creation (woops)
Centered full screen non-stretched screen updates
Joypad reads now have correct upper 4 bit bus data
Fixed joypad configuaration bug
Added turbo fire for buttons A & B option
Kaillera rom directory is now global, and supports .ZIP files
Fixed some MMC5 things, still doesnt work great tho
Updated direct draw to newer interface
Version 0.50 01/17/2003
Audio thread now runs all the time, stopping emulation is faster
Full screen clears all buffers for triple buffering, and correctly saves window position
Fixed some minor user interface bugs
Fixed NSF screen and made look nicer
Implemented more input axes such as POV and slider
more cheats, dbase also works better on win9x
changed dpcm frequencies slightly, older style
Version 0.50 Beta 2 07/20/2002
Fixed recent menu saving to registry
Fixed status bar when rom is opened
Windowed blitter now has choice adds Super2xSai and Scanlines
Fixed mask generation, more roms should work
Main window and rom browser positions saved on exit
Cheats window moved around, multi-line cheats in dbase supported
Packed more into each 24bpp xlation write, hopefully improves speed
Fixed 15 bit color mode
Cheats file has seen some enhancements
Version 0.50 Beta 1 07/10/2002
Fixed Deady Towers, Mapper 34
Fixed an issue with palettes that affected Archon
Added code toggling to the game genie interface (usually works without reset)
Cheats are now a single file, and some popular ones are included
Game genie usage in MMC3 games is now fixed
Tweaked noise a little bit, more like 0.30a which was better
Added a NES stereo sound option, usually pretty nice!
Better menu handling while files are not active
Recent menu is a little nicer, stamping is better, also deletes invalid entries
Fixed bitmap capturing in triple buffer full screen
Rewrote Direct Draw locking logic
Direct Sound library used is same as other projects
Using accelerators now, keyboard shortcuts improved and more reliable
PPU rendering rewritten for palette based rendering (slower, more accurate..)
Added network play support via the Kaillera 0.90
Added a video timing option to allow and extra line of vblank (fixes graphics glitches in bubble bobble 2, blades of steel, etc)
Window position remembered when returning to windowed mode from full screen
Put back 24-bit rendering (works?) and removed 8-bit from full screen
Rom Browser added, sort by name, mapper, and battery saves
j6502 was ported back to C from X86 assembly (hopefully no difference... maybe slower on old computers)
New settings dialog: file association (thanks zilmar), IPS patching functionality, directory paths
Direct Input library has improved error detection for disconnected joypads on load, and tabbed dialog
New video dialog, replaces the old series of menus, also adds enumeration of full screen display modes
Brand new help file (thanks to smiff for the inspiration)
ZIP file support using ZLIB 1.1.4 DLL, only for NES roms
Almost every other aspect has seen rewrites and cleanups over time..
Version 0.40 beta 2 01/21/2001
Put a cap on direct input error handling during game play
Rewrote some window handling routines for full screen
Fixed a bug in the window size menu-check handling
Initialized the task variable to zero correctly, hopefully this fixes problems people experienced with save states doing odd stuff!
Version 0.40 beta 1 01/06/2001
Implemented audio updates 4 times per frame via queue, might slow down performance so I waited this long to do something drastic like this, sounds great tho
16-bit audio and mixing
Raw PCM emulated nicer now..
Noise and Pulse volume enveloping corrected I hope
Tri counters fixed? (Thanks to Matt Conte for the doc on nesdev a while back)
Pulse freq sweeps rewritten finally, put this off a long time
DPCM rewritten from scratch, big difference in beat style
Vertical scroll problem fixed in TMNT
Changed the scanlines back to 262, this makes a game I know not work right but I feel having correct timing is the right way to go
Another NSF loading problem fixed
Sunsoft Mapper fixes and speedups
Implemented an accurate real-time zapper read handler, didnt realize necessary..
Small transparency fix for some games (Windowed only)
Added ability to load external palettes or keep default, 3-byte RGB triplets
Integrated NSF support into the j6502 main cpu core, via small hack
Rewrote sign flag, and IP handling in j6502, speedup
Window 3X mode added
Added an option for NES 8-pixel clipping emulation
Sprite0 hits tweaked a little
Rewritten Game Genie from scratch, max codes is 64 per game
Rewritten PPU Rendering, which removed MMX/ASM speedups, still fast tho
Rewrote direct draw frame locking technique, dangerous when jnes crashes..
Removed 24bpp rendering support, useless, slow etc, use 16/32
Rewritten entire banking system for cpu and ppu, speed boost
Added a recent menu into the interface, quite nice
Rewrote every mapper, less memory used, faster speed, save state friendly
Rewrote sound graph, more friendly to direct draw these days
Rewrote bitmap capture code from scratch, faster and nicer.
Finally released the partial MMC5 support, not the most accurate emulation, but it is good enough to play Castlevania III US well, which is good enough..
Tweaked save states to save the new structures as well
Rewrote ppu mapper tile handling, works right now, no hack
Started allocating and releasing large chunks of memory nicely
Direct Input 2-Player code rewritten, smaller, easier to maintain, as well as the option to completely? tweak the devices
Changed quick-save to F7 key, F6 was too close to F5 really, you could hit it accidently
Added save slots selection to the Cpu menu, it might of been confusing because it was previously only accessible on the keyboard
Version 0.30a 01/04/2000
PCM exception problem solved
NSF Banking fixed
Version 0.30 12/25/1999
Internal NSF Player
Added nsf files to command line load
Added NINA-1 Emulation (iNES #34)
Fullscreen Triple Buffering
Improvements to PCM decoding
Solved an mmc3 IRQ problem
Fixed sprite priorities a little more
Fixed zapper in 24/32 bpp
Screen captures work in 8bpp
Performance enhancements
Keyboard reading now includes the numkeys for d-pad.
DirectX dialog more informative
Fixed the CPUID problem on Cyrix CPU's
Removed surface fills at the beginning of frame, this reduces DirectDraw overhead for old hardware
Version 0.26c 10/26/1999
Corrected registry alignment issues
Saves last directory to registry
Version 0.26b 10/23/1999
PCM channel improvements
Higher quality audio generation
Direct Input interface fixes
Version 0.26a 10/20/1999
Direct Input enumerator supports multiple gamepads that are under the same name.
Corrected the new dpcm buffering for games that use large buffers with low frequencies.
Implemented zapper into the via the mouse, preliminary but works in a few games
Version 0.26 10/09/1999
Added Konami VRC4 Emulation (iNES #21)
Added Konami VRC2b Emulation (iNES #23)
Added Konami VRC4b Emulation (iNES #25)
Added Konami VRC6 Sound Emulation, Thanks to Kevin Horton for his docs
Improved PCM channel emulation
Minor MMC1/MMC3 mirroring change
Tweaked MMC3 IRQ
Fixed 4-window vram
Support for Controller #2
Put back correct palette reading
Fixed game genie length detection
Major 6502 core optimizations
MMX enhanced PPU emulation
DirectSound is now used again
Dialog for input devices with button config
Background Sleep is now an option
Sound output graph
Version 0.21 08/25/1999
Added MMC4 Emulation (iNES #10)
Added Sunsoft Mapper #4 (iNES #68)
Tweaked MMC3 IRQ Slightly
MMC1 Bankswitching changed
PPU moved into seperate assembly files
Fixed a long time Vertical scroll bug
Minor GameGenie save fix
Modified the Direct Input Axis mode
Documentation updated for Sidewinders
Fixed small windowing problem.
Removed DirectSound, switched to a hopefully more reliable audio method
Vsync removed as a result of timing.
FPS meter disabled in full screen
Lots of other options were taken out
Keyboard reading works on NT4 SP4 (DX3)
Version 0.20 08/20/1999
Fixed triangle frequencies and hold note
Fixed flag sets when RTI,NMI,BRK happens
Well, RCR/RCL doesn't set ZF
Added MMC1 512/1024 kb ROM support
Added Konami VRC6 (iNES #24)
Added Nintendo MMC2 (iNES #9)
Better MMC3 IRQ
Improved Sprite priorities and hits
Improved Frequency Sweeping
Preliminary RAW PCM sound emulation
Noise channel enveloping fixes
DPCM Irq's Disabled
Changed save state format to save all audio data, added padding for future modifications
Game Genie Emulation is now alot better
Support for trained roms
Sprite priority in 24-bit are better
Small speed-up in 16-bit rendering
Windows 98 SE compatible
Rewritten interface, structured better
Record wave save dialog box
Read-only files open now
Frames per second counter available for full screen mode only if Vsync is turned on.
New Stretch mode added to full screen
Fixed bitmap writing in RGB555 mode
Wait for Vsync only affects full screen video mode
Timing uses new higher performance method
All threading and program halt problems are fixed
Version 0.10 08/05/1999
Initial release
THANKS
Jnes would not be possible without the work or assistance of the following people:
TNSe, Nyef, Xodnizel, FireBug, Loopy, Goroh
Jeremy Chadwick, Matthew Conte, Kevin Horton
Many others from the nesdev community
Gent for creating the cheats database and invaluable feedback through the years that has made Jnes even more special
Everyone who was kind to me through the years on IRC/Efnet and EmuTalk.net
The NES is a registered trademark of Nintendo.
Game Genie is a registered trademark of Galoob.
The author is not affiliated with Nintendo of America, or any other company mentioned in this documentation.
This software is freeware and may never be sold or repackaged in any way. You use this software at your own risk,
the author is not responsible for any loss or damage resulting from the use of this software. If you do not agree
with these terms do not use this software.