darkNESs v0.24 A NES emulator for the Amiga (C)1997-98 Mark Van Hal Introduction : darkNESs is a Nintendo Entertainment System emulator for the Amiga. To use it you will need any Amiga with a 68020+ and OS 2.0+, you will also need ROM image files for the games that you wish to play. These files must be in .NES format as is used by iNES, NESticle, and other NES emulators on the PC and Amiga. Starting with version 0.20 darkNESs is written in 100% asm, and is much faster then previous versions. Although darkNESs is not the fastest NES emulator for the Amiga, it is the most compatible, and is the only one that handles NES games that use bank switching during the display and properly updates the display with games that don't use VROM. It is also the only NES emulator that works properly with ECS/OCS and Gfx cards. Using darkNESs : To use the GUI : From WorkBench : Double click on the darkNESs icon. From the CLI type : darkNESs with no options. The GUI is simple enough that not much of an explanation is required. Options that are disabled are either not yet implimented or are unavailable at the current time, these will become enabled when it is appropreate. (for example the Start gadget is disabled until a valid .NES file is loaded) The Screen Mode gadget requires version 39 or better of the asl.library. When you Quit from the GUI, the settings are stored in the darkNESs.prefs file in the same directory as the program. Version 0.20 of darkNESs added a line based screen refresh mode to the tile based mode in earlier versions. This mode works best with games that make changes to the display on every line (like F1-Race) but is about 10% slower then the tile based mode. It is best to experiment to see which mode works best for each game (and you can change the mode during the emulation by pressing F3) Also new in version 0.20 is Double Buffering, which eliminates screen flicker. Screen updates are also faster with Double Buffering on. Note : In version 0.24 Double Buffering now works with any screenmode on the native Amiga display (no Gfx cards) that supports at least 32 colours. If you turn Double Buffering off darkNESs will work on Gfx cards. If you don't want to use the GUI then, from the CLI type : darkNESs file.nes [-(P|O)] [-F] [-D] Replace file.nes with the name of the .nes format ROM image file. If the cartridge uses battery backed memory, then a file with the same name but with an extension of .SAV instead of .NES will be created the first time that you use it, and will be used to save the contents of the battery backed RAM. The -P or -O options are only of use to NTSC users. Since the NES has a resolution of 256 x 224, and a standard NTSC LORES screen is 320 x 200, 24 lines of the NES screen would not normally be visible on the screen. So, by using the -P option, you can run darkNESs in a PAL LORES screen which has a resolution of 320 x 256, or you can use the -O option which will use an NTSC LORES screen with overscan to allow you to display the full NES screen. Note : If you use the -P option, make sure that the PAL monitor driver is in Devs:Monitors. The -F option tells the emulator to set the initial frame-skip to 3 (draw every third frame). This speeds things up a bit, but some games don't look as good when doing this. The frame-skip can be adjusted with + and - while the emulator is running. The -D option turns double buffering on. darkNESs uses the settings from the darkNESs.prefs file unless the command line options are specified. Controls : Once the emulation is running, you can use the following controls : Cursor Keys - Joypad LShift or A - Button A LAlt or Z - Button B Return or ] - Start RShift or [ - Select F1 - Select Controller 1 F2 - Select Controller 2 F3 - Toggle between Tile and Line Refresh Methods F4 - Toggle IRQ interrupts ON/OFF (Mapper 4 only) F5 - Toggle scroll fix ON/OFF + - Increase Frame-skip Value - - Decrease Frame-skip Value F10 - Reset (you may have to press F10 twice to reset) Ctrl - Toggle Mirroring (Horizontal/Vertical) Esc - Exit Problems : Unable to open Screen - Not enough chip memory or the default screenmode in your darkNESs.prefs file is not available or you have selected double buffering and the selected screenmode is not an NTSC or PAL one. If using the command line options, if you are using the -P option and the PAL monitor driver is not loaded you will get this message. Not Enough Memory to Load File - There is not enough memory to load the ROM image. File Not Found error message - The ROM image file you specified cannot be found. Bad .NES File - The ROM image that you specified is not a valid .NES file. Unsupported Mapper Type - The ROM image that was loaded uses a MMC (memory mapper) that is not supported by darkNESs. Currently darkNESs supports the following MMC's : 0,2,3 - 100% working 1 - 95% working 4 - 90% working 7 - 100% working 9 - works, but not yet perfect 11 - 80% working 16 - not tested No other MMC's are currently supported. Graphics appear wrong - With ROM images with MMC types 0,2,3 the type of mirroring that the games uses is stored in the .NES header. If this is set incorrectly, the graphics may appear wrong. Press Ctrl to change the type of mirroring, and press F10 to reset the game. If this does not fix the problem, then it may be that the game is not compatible with darkNESs. With some games the graphics may be fixed by turning on the scroll fix (press F5) this may solve the problem, or it may do nothing, or it may make it worse... Note : MMC types 1 and 4 automatically set the mirroring to whatever the game needs, so do not use Ctrl to try to fix these games as it will not work. Sprites don't appear - This should not happen anymore, but some games still may have problems with sprites. I only know of one, and it is caused by timing problems that I am working on fixing. Game doesn't work, or doesn't work correctly - darkNESs v0.24 is still an early version, and many games still do not work (most of these are due to unsupported MMC's), and some games do not work correctly (these are often caused by timing problems or by games using parts of the NES hardware that are not yet implimented (or not implemented correctly). I am working on making darkNESs as compatible as possible, but it will take time, so if a game doesn't work, wait until the next version comes out, and try it again. Support darkNESs : I have decided to make darkNESs giftware. This means that if you use darkNESs and like it (or even if you use it and don't like it) that you should send me a gift. You are under no obligation to send me anything, but the more gifts that I recieve, the more incentive I will have to work on new versions, and the less incentive I will have to make darkNESs shareware (as the other NES emulators for the Amiga are). Some suggested gifts are : Money (Canadian or U.S. dollars only) - Money is always good... Software/Hardware - If you have any old Amiga software or hardware that you no longer use,send it to me. Registered Shareware - If you are the author of any Shareware for the Amiga, send me a registered copy. PD/Freeware - If you have written any good PD or Freeware programs send me a copy on disk. Postcard - A cheap and easy gift. E-Mail - If a postcard is out of your price range, then send me an E-Mail message. My address is : Mark Van Hal 80 Delroy Dr. Etobicoke, Ont. Canada M8Y-1N2 My e-mail address is : e0fkgkfo@mail.erin.utoronto.ca NOTE : My ISP went out of business, so my old e-mail address (mongo@octonline.com) is no longer valid, also the darkNESs homepage no longer exists (a new one will be up at a new address shortly). The Future : I plan on fixing bugs and adding new features to make darkNESs the best NES emulator available for any computer. Note : If anyone has any technical documentation on the NES (other than the ones by Marat Fayzullin and Y0SHI) please contact me by E-Mail. Note : Do NOT send me E-Mail asking for ROM images or complaining that a game doesn't work, you will not get any ROM images from me, and I know about most games that don't work. Also don't send me e-mail asking me to send you the latest version of darkNESs, the latest version is always available on AmiNet. Credits : Marat Fayzullin - For the NES documentation and the 6502 emulation that was used in versions before 0.20 Without which darkNESs would have taken much longer to develope. Paul Robson - For releasing the source to NESA, his NES emulator for the PC, from which I borrowed (stole) the palette. Craig Howard - For creating the icon for darkNESs. Y0SHI - For his NESTECH.DOC which is a great source of info on the NES. Mark Knibbs - For providing me with lots of useful bug reports and suggestions. ...and several other people that have names that I can't remember. "Yet when I hoped for good, evil came; when I looked for light, then came darkNESs." - JOB 30:26