.......................   
 Welcome to year 2000!     RockNES 1.01 - Released on February, 27th 2000.
.......................    Copyright (c)1998,1999,2000 - Fabiano Lopes (Fx3)
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

   Disclaimer:

   - I am not affiliated with Nintendo or any other company, not advocates
the piracy of Nintendo games.
   - This software is freeware, absolutely non commercial.
   - You can to distribute it freely, as long as it is non-modified.
   - Commercial games cannot be packaged with this emulator, never.
   - When you use this software you do so at your own risk. The author cannot
be responsible for any loss or damage resulting from the use or misuse of
this software.
   - If you don't agree with these terms, DELETE THIS SOFTWARE NOW.

[===========================================================================]
   \Warnings/ before you e-mail me...

 1. Many games do not work correctly (or at all). There are tons of bad dumps,
 mostly with junk in the header. Use a good tool to fix.
 2. Do not ask me 'how-to-use' RockNES (read this doc).
 3. Do not request anything, including commercial games (yes, ROMs).
 4. Do not send anything (emulators, games and any other kind of junk).
 5. Be sure you have a VESA mode avaliable, else the emulation speed should
 be very slow! Look for SciTech Display Doctor (http://www.scitechsoft.com).
 6. I _cannot_ add netplay, so stop asking for support. However, if you have
 interest to write a driver, it should be welcome.
 7. If you do not like RockNES, so try other emulator such as LoopyNES.
 8. Do not expect to get it working good in your machine "automatically".

Notice: The binary is _pentium_ optimized. I don't know how good it works in
non-pentium machines (_if_ it works).

[===========================================================================]
WHAT'S NEW:

Version 1.01

- Fixed a CPU bug (from 1.0, IRQ related), and some others;
- Fixed mapper #40 IRQ timing (SMB2j works correctly);
- Fixed machine 'reboot' problem caused by some mapper #4/#64 games (argh!);
- Fixed a problem with mapper #7 (PRG page select, from 1.0);
- Fixed some problems with mapper #64;
- Fixed mapper #85 (major problem, Lagrange Point works);
- Fixed some problems with mapper #225 (58/110-in-1, working again, woohoo!);
- Fixed some problems with mapper #231 (Wally Bear and the No! Gang works!);
- Fixed a config problem (joypad type were ignored if >11);
- Fixed a major bug with battery support ($6000);
- Changed (again) VBlank/NMI scanline hit (more games work, others not yet);
- Added NES sound envelope volume control (the output is _too_ much better);
- Added IRQ control to mapper #65;
- Added mapper #91 (preliminary, bad IRQ support, but the pirate game
Street Fighter III is playable).
- Started MMC5 support (does not work yet);
- There's mapper #233 (42-in-1) support since 1.0 (oh my memory!);
- More fixes and minor changes;
- Please, send me your feedback! It's important! Thank you.

Note: if you want to check out past changes, feel free to edit 'oldnews.txt'.

[===========================================================================]
   Index

 0. How to use
 1. The emulator and its features
 2. Configuration file and default controls
 3. Using the GUI
 4. iNES file format description.
 5. VS Unisystem palettes (a must read). 
 6. "What is a NES mapper??"          
[===========================================================================]

 0. How to use
 =============

 -Unzip the rnes***.zip file in a free folder (let's say c:\rocknes), where
 the '***' is the version number id (example: 100 == 1.00);

 -Run 'rocknes.exe'. You will go to the GUI, easy to use. 

 -You can type 'rocknes gamename.nes' directly from command line (prompt).

 note: the config file (rnsetup.cfg) is generated when you run rocknes by
 first time .OR. when the file is not found.

 NOTICE: if a backed battery is present, it saved at current game folder
 with the same name of game loaded (filename), with the .SAV extension.

[===========================================================================]

 1. The emulator and its features
 ================================

    This is a Nintendo Entertainment System (NES 8 bit) videogame emulator
for DOS. I wrote this piece of soft 'cause NES is/was my pretty videogame.
Notice that the NES 8-bit is +- 18 years old! :-)
    RockNES 0.99 is a full rewrite of original RockNES. It was designed to
be very compatible and faster. Currently, the following features are added:

- 6502 CPU emulation, using a changed version of Marat's 6502 core.
- Full PPU emulation with scanline gfx engine.
- NES I/O (such as joypads), partial sound emulation (5 channels);
- Palette (very closed to real NES);
- Backed battery (if present in a game).
- Mappers 0,1,2,3,4,5,7,8,9,10,11,13,15,16,17,18,19,21,22,23,24,25,26,32,33,
34,40,64,65,66,68,69,70,71,78,79,85,88,90,91,99,113,151,225,228,231,233.
Most of these 47 mappers are partial.

Note: if you want to get emulated a non-listed mapper, send me docs.

    The following extra features are added:

- Konami's VRCVI extra sound chip emulation;
- VS Unisystem arcade machines (missing linked-system) in .NES format;
- NES Movies (*.RMx, x=0..9).
- Save states (*.RNx, x=0..9). Please, check 'rnstate.txt' for information.
- PlayChoice-10 arcade machines (missing "How-to-Play" panel, not necessary);
- GUI;
- EAGLE effects.

    The following extra features are missing due the rewrite:

- VS Unisystem arcade machines (missing linked-system) using ROM sets;
- Game Genie codes.

    About the speed and requirements:
    ---------------------------------

- You should have, at least, a P166Mhz with 8Mb of RAM (I didn't try on 4Mb).
- VESA support enabled.

Note: No VESA support <=> emulation will be *VERY* slow.

Note: if the speed is slow, try to increase the frameskip (use [+] or [-]
keys). Check the video card (GUI->Help->System): if NOT VESA or VBE (for
example, Mode-X used), so try to switch to a VESA mode (GUI->Misc->Resolution)
and see if the speed is ok. The last try is sound off (edit the config file
using Notepad or MS-Edit, aka edit.com, and set sound_rate flag to 0).

    About the NES Movies:
    ---------------------

    You can record your gameplay. This mean you can record your gameplay! :P
Now, both joypads are logged. Data is written as follows:

-block 1- saved state (check rnstate.txt doc for full info).
-block 2- byte 1 is joypad 1 data, byte 2 is joypad 2 data ("word"), repeat
until eof.

[===========================================================================]

 2. Configuration file and default controls
 ==========================================

    When you run RockNES by first time, a config file (rnsetup.cfg) is
generated at current directory. This file is very commented, so, please,
edit it and set up video, sound, inputs and more. During the emulation,
keys work as following:

 <ESC> - Quit to OS prompt / leave GUI and back to game.
 <F1>  - Swap to GUI (emulation stops).
 <F2>  - Save state (*.RNx, x=0..9).
 <F3>  - Slot selector (0..9).
 <F4>  - Load state.

 <F5>  - Soft Reset.
 <F9>  - Movie record (again to stop).
 <F10> - Movie play (again to stop).
 <F12> - Save a screenshot (.PCX).

 KEY PLUS  PAD (+) - Increase frameskip (default=0, limit=9).
 KEY MINUS PAD (-) - Decrease frameskip.

Note: RockNES is much faster with sound disabled (no speed control btw).

    [player 1] - input is KEYBOARD1 (setup 1)
    UP, DOWN, LEFT, RIGHT = keyboard arrow keys.
    A = 'X' key.
    B = 'Z' key.
    SELECT = 'Tab' key.
    START  = 'Enter' key.

    [player 2] - input is KEYBOARD2 (setup 2)
    UP     = 'U' key.
    DOWN   = 'J' key.
    LEFT   = 'H' key.
    RIGHT  = 'K' key.
    A      = 'S' key.
    B      = 'A' key.
    SELECT = 'Q' key.
    START  = 'W' key.

[===========================================================================]

 3. Using the GUI
 ================
   
    After a long time, here's the GUI. It's easy to use. Tell me if you can't.
A lot of items must to be finished/added with the time.
    GUI items are:

 [Game]
  - Load ROM.........: It loads .NES files from a directory.
  - Load VS game.....: (DISABLED FOR A WHILE).
  - Free ROM.........: Free a ROM loaded (not recommended).
  - ROM header.......: (DISABLED FOR A WHILE).
  - Write VROM.......: If there is video ROM, it can be dumped.
  - Save screenshot..: Saves a screen pcx.

 [CPU]
  - Reset............: It works like you press RESET buttom in the console.
  - Hard reset.......: The same, but works like power OFF and ON.
  - NES timing.......: (DISABLED FOR A WHILE).
  - Game Genie.......: (DISABLED FOR A WHILE).
  - Advanced.........: (DISABLED FOR A WHILE).
  - Palettes.........: Changes the current palette (for VS Unisystem games).

 [Misc]
  - Inputs...........: (DISABLED FOR A WHILE).
  - Directories......: Paths for ROM and VS Unisystem games.
  - Resolution.......: You can change video card and video resolution.
  - NES movie........: Record, play, stop and status of a NES movie.
  - Save state.......: The current game state will be saved in a slot.
  - Load state.......: Back to game to get the state restored.
  - ROM information..: Information about mapper, mirroring... from header.

 [Help]
  - Help.............: A little help.
  - System...........: Shows the current display driver and sound card.
  - About............: About the emulator.

Note: Directories can't be saved to disk if changed by GUI (for a while).

  That's all.

[===========================================================================]

4.iNES Format (.NES)
  ------------------
    +--------+------+------------------------------------------+
    | Offset | Size | Content(s)                               |
    +--------+------+------------------------------------------+
    |   0    |  3   | 'NES'                                    |
    |   3    |  1   | $1A                                      |
    |   4    |  1   | 16K PRG-ROM page count                   |
    |   5    |  1   | 8K CHR-ROM page count                    |
    |   6    |  1   | ROM Control Byte #1                      |
    |        |      |   %####vTsM                              |
    |        |      |    |  ||||+- 0=Horizontal Mirroring      |
    |        |      |    |  ||||   1=Vertical Mirroring        |
    |        |      |    |  |||+-- 1=SRAM enabled              |
    |        |      |    |  ||+--- 1=512-byte trainer present  |
    |        |      |    |  |+---- 1=Four-screen VRAM layout   |
    |        |      |    |  |                                  |
    |        |      |    +--+----- Mapper # (lower 4-bits)     |
    |   7    |  1   | ROM Control Byte #2                      |
    |        |      |   %####00PU                              |
    |        |      |    |  |  |+- VS Unisystem arcade         |
    |        |      |    |  |  +-- Playchoice-10 arcade        |
    |        |      |    +--+----- Mapper # (upper 4-bits)     |
    |  8-15  |  8   | $00                                      |
    | 16-..  |      | Actual 16K PRG-ROM pages (in linear      |
    |  ...   |      | order). If a trainer exists, it precedes |
    |  ...   |      | the first PRG-ROM bank.                  |
    | ..-EOF |      | CHR-ROM pages (in ascending order).      |
    +--------+------+------------------------------------------+

[===========================================================================]
 5. VS Unisystem palettes (a must read).
 ---------------------------------------

 VS Unisystem is/was arcade machines with Nintendo games, such as Pinball,
 Super Mario Bros. and more. They work with coins and use different PPUs,
 so you need to switch to other palette to see correct graphics and colors.
 Floating games should be in .NES format, but there are original ROM sets.

 In the GUI, you can select a correct palette for a VS Unisystem game.
 These are the choices you can do in the menu:

  (1) Main NES palette
  (2) VS CastleVania
  (3) VS Excitebike
  (4) VS Super Mario Bros
  (5) VS Goonies
  (6) VS Ice Climber
  (7) VS Gradius
  (8) VS Hogan's Alley
  (9) VS Sky Kid
 (10) VS Dr. Mario

 Some of games should use a same palette. Check the list below:

 [GAME]................[PALETTE]
 VS Golf/LadyGolf       Use VS CastleVania, not perfect.
 VS Mach Rider          Use VS CastleVania, not perfect.
 VS Pinball             Use VS Gradius (7), perfect.
 VS Soccer              Use VS Goonies (5).
 VS Platoon             Use VS Gradius (7), not perfect, but the best.

 For others games, try by yourself. :P

[===========================================================================]
 6. "What is a NES mapper??"

 I've found around emulation world this question (from emulators users).
 Here's a shorty description:

 1. Mapper is a chip present in cartridges. It does extra functions to suit
 the game, such as video ROM switching (the character data, graphics), PRG
 pages (data which should be a game music, stage data or own 6502 program),
 IRQs (mostly to display scores, like Super Mario Bros. 3 score, or some
 cool wave effects, such as Rockman 6 title screen), extra sound channels
 (such as Akumajo Densetsu, the japanese CastleVania 3) and more.

 2. When a game uses a mapper (notice that Super Mario Bros. or any other
 simple game DOES NOT USE), the CPU writes to some memory areas, mostly to
 $8000-$FFFF. Each address does something, or a range by itself.

 3. You *must* to emulate these chips to get these games working. There are
 not much docs avaliable, and with no information, no way to do your pretty
 game get working in an emulator.

 4. We write functions to emulate a mapper, which has an identification, such
 as a number, chip ID, board etc. when some info comes up floating.

 That's all.

[===========================================================================]
WEB: RockNES website (now under Emuviews)
http://rocknes.emuviews.com
fx3rnes@hotmail.com
[===========================================================================]
//eof
