========================================
 Jnes - Nes Emulator for Win9x by Jabo
"What a horrible night to have a curse."
========================================

=======
Preface
=======

I wrote his emulator as a personal project which got further than I ever thought, I didn't write it because I thought any specific way about other emulators. I felt this was a good project to learn from, and play around with my favorite system. Jnes dates back to sometime in March of 1999, when development got underway.

Jnes is currently an emulator for Win9x, it uses DirectX for video, audio, and input. Jnes is freeware, it is not to be distributed with games images and it is not to be modified or sold. 

======================
Emulation and Features
======================

 CPU
 ===
 - All 6502 opcodes
 - Emulated bugs in the 6502
 - IRQ/NMI
 - Battery backed RAM
 - Written in x86 assembly

 PPU
 ===
 - 8x16 and 8x8 sprites
 - Sprite priority
 - Decent palette(s)
 - Vertical/Horizontal scrolling
 - VROM/VRAM
 - Mirroring methods

 APU
 ===
 - Pulse channels with Frequency sweeps and Decay
 - Triangle
 - Noise
 - Complete PCM
 - Konami VRC6 Sound chip

 Mappers
 =======
 - Nintendo; MMC1, MMC2, MMC3, MMC4, MMC5 (partial)
 - iNES 0, 2, 3, 6, 7, 8, 11, 21, 23, 24, 25, 34, 66, 69

 Peripherals
 ===========
 - Controller #1 and #2
 - Nintendo Zapper

 Extras
 ======
 - GameGenie support
 - Fullscreen/Windowed mode
 - Screen capture (BMP)
 - Record audio output (WAV)
 - Save/Load nes state from file (11 slots)
 - Configurable buttons
 - Sound output graphs

===================
System Requirements
===================

Windows 95/98
Pentium 133 MHz
Video Card, 2 megs (4 megs for windowed)
DirectX 5.0 with drivers

Video and Sound card drivers are extremely important, download the latest drivers.

Most computers that were made with processors below P166 do not include video cards
capable of 2D hardware acceleration, so if you haven't upgraded your video adapter
and you own one that doesn't include features for DirectDraw you will experience 
severe performance issues.

If you have any questions about your 2D hardware consult the driver info dialog box. If
you video hardware doesn't support stretching to a window Direct Draw will emulate this 
function via software, lowering performance in windowed mode severely.

Full screen video mode performance is better if you have very old video hardware, or
lack large amount of video ram.

Hardware Compatibility
----------------------

Generally speaking, if you have good luck running most direct draw, and direct sound applications, Jnes will be no different.  However, if you happen to own a really old sound card that is no longer supported, or your video card hasn't seen updated drivers in a few years (read: some old S3 and ATI cards) than your risking compatibility, I can't make any guarantee that it will work.

Look in Help/About for more DirectDraw info on your card, all the features are important, the more you lack, the more time direct draw stuff takes which takes time away from Jnes.

As far as actual MHZ and Pentium class that Jnes needs to run, I could say that before this version Jnes could run on a really low end Pentium (provided the first statement was true about hardware compat).  However now that I have a faster system and have rewritten alot of the emulation cores (accuracy is slow), making sure it ran on really low end systems didn't happen, so I'm hoping the system requirement isn't any greater than a Pentium 200Mhz, but who knows.

Jnes supports the following color formats:
	RGB 8/24/32
	RGB 565 and 555

RGB 8 is only used in full screen mode.

=====================
Overview of interface
=====================

Input Controls
--------------

The directional keys on the keyboard and the d-pad on a gamepad are used for emulating the nes controller's. The buttons are fully configurable via the input dialog for both keyboard and gamepad input.

Key Shortcuts
-------------

- ESC back to windowed mode in full screen (important eh?)

- F1 Resets
- F2 Toggles pause
- F3 Capture the screen
- F4 Recording sound

- F5 Save a state to file
- F7 Load a state from file

There are a total of 11 save states available. They are selectable via the keys 0 -> 9,
and the "`" which is to the left of "1" on the keyboard. The "`" key represents the
default ".jst" state.

Example: Hit "0" on your keyboard to save to "game".js0, the default slot is "game".jst
The slot is set back to default at the load of a game. 

"Display FPS" will display the number of your frames per second you are getting only for
windowed mode.

Command Line
------------

Load File, "Jnes filename.nes" OR "Jnes filename.nsf" for audio files

-  You may tell Jnes to load a rom on startup by executing Jnes with the filename as
   the parameter. Example: "Jnes zelda.nes", would load zelda.nes on load.

Directory Structure
-------------------

Cheats are stored in, 			\cheats
Save states and sram are stored in,	\saves

This is important, if you don't store the files in these subdirectories Jnes won't see them, and Jnes automatically creates these directories on first-time saves so you don't have to do it. But if you are importing a SRAM file from another emulator (should work?) keep this in mind.

About NSF Support
-----------------

This is simply put, a *novelty* feature, if a particular song doesn't work, doesn't sound 
correct, etc, I do not really need to know about it, I didn't implement it for that reason.

I hope everyone enjoys the NSF support in Jnes, I think it plays a great deal of NSF's rather well, supporting Revision 1.0

Many thanks to TNSe for his great amount of support with adding NSF playback.

Everything else..
-----------------

The recent menu added is a nice enhancement, but right now it doesn't time-stamp.

If you are unfortunate enough to run in 8BPP you have no choice about resolution, Jnes will automatically use 320x240 8BPP Full Screen, this is basically hard-coded into Jnes.

====================
Answers to Questions
====================

(!Q: How can I speed Jnes up, I have a slow sytem, any frame skipping option?
(!A: Frameskipping is not implemented as I don't believe in this method to achieve speed.. you can try turning sound off entirely, or individual channels, this might help since I use a decent amount of floating point code, and sound is a process that takes up time.. Game Genie also takes up emulation time, only if you turn some codes on, and some video cards really hate it when the window gets bigger!

(!Q: I meet the system requirements but for some reason Jnes slows down so much that 
running mapper 9 (MMC2) games is impossible why is this?
(!A: MMC2/4 games actually raise the system requirement because this mapper uses a very sophisticated technique to enhance graphics.

(!Q: I can't get sound working, Jnes gives me an error on trying to enable it.
(!A: Try downloading DirectX 6.1 from Microsoft and the latest drivers from your vendor, if that does not work ensure the drivers are certified etc.. Jnes uses 16-bit mono audio as well.

(!Q: I can't get video working, Jnes gives me an error on on load, or when i try to get into full screen mode.
(!A: Try downloading DirectX 6.1 from Microsoft and the latest drivers from your vendor, if that does not work ensure the drivers are certified and support the given resolutions. Also make sure you have the correct information file for your Monitor, this is important.

(!Q: Which is faster, keyboard reading or joypad reading?
(!A: Keyboard reading is faster, joypad polling slows down the emulation ~8 fps.

(!Q: <Insert game> doesn't work, it doesn't load correctly, the graphics looked really messed up, its unplayable, the sound has some problems, or something else wrong. What should I do ?
(!A: If a rom doesn't work and it looks totally screwed up, check the rom's header; often times they will include wrong mapper number, an invalid mirroring bit, or it will say that the rom uses 4-window VRAM, when in reality it doesn't!

Download a header utility, I recommend using Duper by AshSoft available from somewhere. A final note on this topic, the rom image you obtained may also be a bad dump, during the extraction process a mistake was made and its invalid.

Due to obvious reasons its impossible for me to verify that every nes game ever made works in Jnes. Jnes does have a very large compatibility rate, but I'm not interested in knowing about all the games that have problems, please use the message board and I'll try to see what's up, especially if the rom worked in a previous version.

(!Q: What's that black 8 pixel wide line going down the left of the screen ?
(!A: The nes has a "clipping" feature that clips the left 8 pixels on each scanline, if it bothers you turn it off.

(!Q: I own a microsoft sidewinder and experience lots of problems using this software, is there anything that can help?
(!A: I am very aware of this issue. I myself have tested the microsoft sidewinder gamepad on Jnes and it worked fine. I make no guarantee of course that it will work, but I've been told by people having problems that properly installing and configuring your software and drivers should solve it. Jnes supports DirectInput by Microsoft, contact them for help.

(!Q: I have some issues using Jnes on Windows NT with Direct X 3.0 installed, what can I do?
(!A: I make no guarantee this software will run under NT, this software designed with Win9x in mind. As it sits now DirectX builds are no longer being made for NT? so I can't possibly provide compatibility for it, ask Microsoft for DirectX updates.

(!Q: I am having problems with game genie support, I obtained a code for a game and when 
I use it there are some problems with the game or the code doesn't work. What can I do ?
(!A: Some game genie codes are made by hackers and may not be done properly, use them at your own risk. Sometimes as seen they cause really strange behavior, I can't fix that.. Also people come across codes sometimes that simply do not work, the biggest problem here to get some of the codes to work is to reset the game after entering the code, some codes do not work when you enter them as the game is playing, just like on a real nes you can't do that, makes sense.

(!Q: I meet the system requirements but Jnes is still too slow, any suggestions?
(!A: Upgrade your video adapter if its old, or turn sound off.

=======
Credits
=======

Thanks!:
--------

The following people assisted to the developement of Jnes, some of them I have actually never talked to before, but their documentation has proven to be very valuable.

Kevin Horton
Jeremy Chadwick
Crono
Xodnizel
Tennessee Carmel-Veilleux
Matthew Conte
Firebug
Nyef
Loopy
Goroh
CyberKefka
TNSe

Greets!:
--------

To all the dev people I've met, or know..

_Bnu, Fx3, Quietust, Akilla, Delta & Pr0xY, CricketNE, EFX, MickOz, Azimer, zilmar, _Demo_, F|ReS, Icepir8, Duddie, slacka, rcp, hWnd, Phrodide, schibo, Lemmy, LaC etc.

And the rest I forgot..

=======
Contact
=======

Jnes will probably not be ported to another OS, time just hasn't permitted this part of the project to take place, and I really am not interested at this time in branching off to another OS, so please, no requests, thanks.

Please read the FAQ section above most questions are answered there, no need to waste anyone's time with questions that have answers easily found, especially by readintg the message board.

Please use the message board on the website for feedback and comments! It's much more convenient for everyone.

Web site:	http://jabo.vintagegaming.com/	
Via email:	jabo@emulation64.com

==========
Disclaimer
==========

Jnes - Copyright 2001 JaboSoft
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 probably, and does not encourage the piracy of NES games, nes games a dirt cheap buy them...

Jnes is freeware and can be distributed freely as long as it is not modified or distributed with ROM images.

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, simple.

[EOF]