
                            -= RockNES 0.60b =-
                         =========================
                            December, 30th 1998

-> The RockNES team:

 Fx3  : gyfay@convex.com.br   ( General and main coder )
 Kritz: val@xcelco.on.ca      ( Coding assistant )
 Nyef : nyef@softmail.net     ( Sound coder/assistant )

=======
 NOTES
=======

-> The RockNES sound core is the DOS port of the DarcNES sound core by Nyef,
with some changes. Any comment, help or bug report must to be send to Nyef
(nyef@softmail.net).

*---------------------------------------------------------------------------*

#include <st_credit.h>

-> RockNES is Copyright 1997-1998-1999 RockNES team.
-> DarcNES is Copyright 1998 by Alastair Bridgewater (a.k.a. Nyef).

-> Nintendo is trademark of Nintendo.
-> Neither Gyfay Software nor the author are affiliated with Nintendo
   nor advocate the piracy of Nintendo games.
-> RockNES is freeware. You can to distribute it freely, as long as it is
   non-modified. Commercial ROMs *NEVER* can be packaged with this emu.
-> When you use this software you do so at your own risk. The author is
   not responsible for any loss or damage resulting from the use or misuse
   of this software.

-> If you do not agree with these terms, delete this software now.

Many games don't work correctly (or at all).
Don't mail me case your favorite ROM doesn't work.

*---------------------------------------------------------------------------*

Index of \rocknes.txt

   I. Intro
  II. History / Know problems
 III. What RockNES does 
  IV. ZIP file index
   V. Hardware required
  VI. Sintax / HOW TO USE ROCKNES
 VII. ROM file format supported
VIII. Greetings
  IX. http

*---------------------------------------------------------------------------*

==========
 I. Intro
==========

-> xNes is/was a NES 8-bit emulator, now it calls RockNES. It was firstly
wrote for DOS, but ported later to Linux and MacOS. Six months after the last
release by Nicolas Hamel, I decided to resumed the DOS port only, that will
be updated for now, unless someone wants to port the emulator.

-> No ports are being resumed.

-> The compatibility of RockNES grows version after version. The goal of
RockNES is to be a great emu: fast, compatible and FREE.

-> It was entirely write in C and compiled with DJGPP/Allegro 3.0.
Versions >0.5x was compiled with PGCC (Pentium version of gcc).

*---------------------------------------------------------------------------*

=============
 II. History
=============

---------------
 Version 0.60b
---------------
        - Added option "-revmirr" for a reverse mirroring (Mapper 4 only).
This will fix some games (like TopGun2), but too bad with others.
        - Fixed a bug in the IRQ code. Now, SMB3 works :)

--------------
 Version 0.60
--------------
        - Partial NES sound emulation output (4 channels);
        - Better memory mapping system;
        - Better mapper support;
        - Better gfx engine, many bugs out (sprite/background);
        - All scanlines are rendered to prevent errors (displaying 8-231);
        - New latch control system (for some mappers);
        - *Full* support for Mappers #9 and #10 (working perfectly);
        - Added partial Mapper #64 support (Tengen - Shinobi and others);
        - Added Mappers #65 (untested) and #66 (not working);
        - Mapper #4 fix (you can see the SMB3 intro);
        - Fixed some bugs in the Mapper #18 (not good however);
        - Some Mapper #68 fix, but very buggy;
        - *Very* preliminary Mapper #25 support (Gradius 2);
        - New frame rate control;
        - Fixed problems with NES VBlank;
        - Some bugs fixed across 6502 functions (Read/Write/Loop);
        - Fixed problems parsing command line arguments;
        - Added a nice font. Thanks Zoop! :)

--------------
 Version 0.58a
--------------
        - Fixed a bug that was causing incorrect speed (cart.nes) and half
score scrolling (CastleVania 1). I don't know if this will affect other games.
You can send an e-mail to me if a game isn't working good now.

--------------
 Version 0.58
--------------  
        - Fixed battery save/load feature. Now, it works fine;
        - Mappers #33 and #34 fixed and working with no problems;
        - Mapper #23 working (some games aren't working);
        - Added Mapper #15 (working 100%);
        - Added Mapper #16, but no games work;
        - Added Mapper #18, a bit buggy;
        - Added Mapper #21 (working 100%);
        - Preliminary real time save/load added;
        - Fixed a bug saving screenshots;
        - Fixed a bug in the joypads;
        - PPU Status register working good. This can fix tons of games;
        - You can't press up+down or left+right for now;
        - You can specify how many cycles per scanline by command line;
        - You can specify how many scanlines per frame by command line.

--------------
 Version 0.57
--------------
        - Gfx engine speed up, thanks to Zoop for help;
        - Sprite priority working 100%, thanks to everybody that helped me;
        - Fixed a bug (the last?) getting ROM Mapper number;
        - Added Mappers #22 (Konami - TwinBee 3), #32 (Irem - Image Fight),
 #33, #34 (both not tested), #68 (SunSoft - AfterBurner 2, missing background
 with unknown reason for now), #71, #78 (both not tested), #91 (not working); 
        - Partial Mapper #9 support;
        - Mapper #10 working with minor problems;
        - Mapper #11 working (stupid error removed);
        - Mapper #22 working (TwinBee3, minor score problem);
        - Fixed problem with Mapper #7 (working again, but very buggy);
        - Fixed a bug saving/displaying screen (Bitmap left-clip [PPU flag]);
        - Fixed bugs in both frameskip systems (auto and normal); 
        - Fixed problem with Sprite #0 hit (games like Zelda 2, DuckTales 1&2
 and Super Mario Bros.1 have correct speed again, fixing "half score" scroll
 in CastleVania 1, Zelda 2 and others;
        - Fixed a bug in Mapper #2 (Zelda 2 working ok);
        - Removed option to get 50FPS ("PAL" mode).

------------------------
 Version 0.56 Release 2
------------------------

        - Some changes in the gfx engine (+speed);
        - Fixed a bug in the save screenshot function;
        - Screen is correctly centered again.

--------------
 Version 0.56
--------------

        - Added a new graphic engine (scanline based, buggy), now, more games
works fine, like Super Mario Bros. 1, DuckTales etc;
        - Bankswitch using pointers, so the address don't need to be
re-calculated for each read, slightly faster (thanks to Zoop);
        - Re-added autoframeskip system to be used with the new gfx engine;
        - Fixed a bug in the autoframeskip system (delay time control, for
fast PCs, now, works fine);
        - Many bugs fixed in 6502 functions (Rd/Wr/Loop/PPU);
        - The joystick is checked more easily;
        - Correct free memory when you quit to DOS;
        - Fixed snapshot so that it works in any video mode;
        - Fixed a bug in sprite displaying;
        - Fixed bugs in the mappers #1, #7 and #11 (#7 not working);
        - Working screen clearing (just play Ghosts'n Goblins);
        - Added One-Screen Mirroring to the new scanline engine;
        - Added command line options to change video card type/resolution;
        - Added ability to save more than one snapshot/ROM (limit=999);
        - Sprite visibility (top/bottom) works fine.

*---------------------------------------------------------------------------*

 KNOW PROBLEMS:

-> If a game doesn't work, try to set the sound sampling rate to other value.
-> No frameskip will cause a horrible speed and sound output. Use 1 if your
PC has a powerfull processor.
-> Split screen problems (like in TopGun 2).
-> Slow/partial sound emulation.
-> Bad real time save/load feature.
-> Loading ROMs from a CD-ROM unit, RockNES won't be able to save anything.

 GOOD NEWS :)

-> Sound emulation (2 squares waves, 1 triangle wave and some noise);
-> Screen clearing works fine (just play Ghosts'n Goblins!).
-> Multi-background scrolling (Mega Man 3 and 6!).
-> Many games with score ok (Robocop, Double Dragon and Adv.Island games).
-> Config file!
-> Multi video resolutions (from Allegro's stuff).
-> You can select your video board (or AUTODETECT, from Allegro too).
-> Inputs (Keyboard, Joystick and GamePad) totally configurable.
-> Multiple screenshots by game loaded.
-> Better palette.
-> TONS of games are now playable!!! :-)
-> Real time save/load feature!

*---------------------------------------------------------------------------*

========================
 III. What RockNES does 
========================

 Currently:

- The 6502, provided by Marat (some fix by Nyef);
- Scanline GFX engine;
- Sprites 8x8 and 8x16, with priority working 100% good;
- Trainer;
- IO Ports (joypads);
- Sprite flipping & mirroring;
- Fake color palette (not from a real NES);
- Backed Battery;
- Scrollings;
- Mappers 0-4, 7, 9-11, 15-18, 21-23, 25, 32-34, 64-66, 68, 71, 78, 91.
- Partial NES sound emulation (Square waves, Triangle wave and some noise).

 In the future:

- Unknown.

*---------------------------------------------------------------------------*

====================
 IV. ZIP file index
====================

rocknes.txt => This file.
rocknes.exe => The executable.
rocknes.dat => Our nice font.
cart.nes    => Not a game :)

*---------------------------------------------------------------------------*

======================
 V. Hardware required
======================

* STRONGLY RECOMMENDED:
- Intel Pentium/AMD 266Mhz or better;
- A sound card for sound emulation;
- MS-DOS 6.xx (Win9x recommended);
- 16 MB of video RAM memory;
- VESA 2.x support if possible (get Display Doctor at www.scitechsoft.com).

* MINIMUM (for decent speed):
- Intel Pentium 166Mhz
- 8 MB of video RAM memory. I didn't tried it on 4 mb so...

*---------------------------------------------------------------------------*

=> RockNES uses by default a VGA mode 320x200 pixels to be more compatible 
with all videocards/monitors, but it's clipped. You can use a standard VGA
graphics, ModeX, VESA, AUTODETECT etc. The best resolution is 320x240 VESA2
Linear (use -videocard 5). RockNES can autodetect your videoboard. VESA seems
faster than any other video mode.

=> The RockNES >0.50 was (and'll be) compiled with PGCC (GCC Pentium version)
to increase speed. At moment, I don't notice speed increase.

*---------------------------------------------------------------------------*

=================================
 VI. Sintax / HOW TO USE ROCKNES
=================================

[USE RockNES AT YOUR OWN RISK !!]

rocknes <filename.nes> [-flags] OR...
rocknes <filename> [-flags]

 -f x     : Sets frame rate to x (default: 2) and disable AUTOFRAMESKIP.
 -b x     : Forces the use of x as battery file.
 -p1 x    : Forces input1: 1-KEYBOARD1, 2-JOYSTICK1, 3-GAMEPAD.
 -p2 x    : Forces input2: 1-KEYBOARD2, 2-JOYSTICK2, 3-GAMEPAD.
 -vc x    : Video card (see rocknes.cfg).
 -vr x y  : Video resolution (x,y).
 -cps x   : Sets the number of cycles per scanline (default=114).
 -spf x   : Sets the number of scanlines per frame (default=262).
 -nosound : No sound emulation/output.
 -rate x  : Sound sampling rate - 1:22050 , 2:44100.
 -revmirr : Reverse mirroring (only for Mapper 4).

 RockNES will autodetect your soundcard.
 See ROCKNES.CFG for other configuration options.

*---------------------------------------------------------------------------*

Keys:

'Z'     = A
'X'     = B
'ENTER' = Start
'Tab'   = Select

<ESC> - POWER OFF (quit to DOS)

<F3> - SAVE STATE (CartName.RNS)
<F4> - LOAD STATE (CartName.RNS)

* NOTE: You're able to save only *ONE* (1) state/game loaded. The extension
RNS means '(R)ock(N)es (S)tate'. The support is preliminary, but working
good with a lot of games. Don't bug me about this feature.

<F5>  - HARD RESET (like POWER OFF and ON)
<F12> - Screenshot to CARTN001.pcx (limit=999)

'+' to increase Frame Rate (max=10);
'-' to decrease Frame Rate (min=0).
* NOTE: While a key is pressed, the emulator will stay paused.

*---------------------------------------------------------------------------*

Some notes:

-> For MMC3, 0-horizontal mirroring and 1-vertical. By default, RockNES uses
the reverse to run correctly almost all MMC3 games. However, some games like
TopGun2 requires the "normal" mirroring system. Use the option "-revmirr" to
reverse the current mirroring (0-vertical, 1-horizontal).

-> The sound emulation core is "controlling" the NES timing. You will not
have fast speed on powerfull machines.

-> If the emulation is slow on your machine, increase the frame rate for a
value which gives you normal speed. I haven't a FPS counter yet...

-> If the game has a backed battery, it will be automatically saved/loaded.

-> You can adjust the number of cycles_per_scanline/scanlines_per_frame to
get some games working/looking better.

*---------------------------------------------------------------------------*

================================
 VII. ROM file format supported 
================================

- iNES for now (check the NES extension, or string in the ROM header).

*NOTE: Some games can be found with the .NEZ extension. Just rename them
to .NES and good play... :-P

*---------------------------------------------------------------------------*

=================
 VIII. Greetings  
=================

- Marat for his 6502 emulator (m6502.c);
- All the person behind DJGPP;
- Shawn for Allegro 3.0;
- Y0SHI for his nestech.txt;
- LoneWolf of Dragones, for his help with MMC 1 and 8x16 sprite.

Special thanks :

- Nyef for him sound emulation core;
- [nesdev] Thanks for everybody!
- \FireBug\ for him mappers.nfo (will you release a new version?);
- Loopy, Brad Oliver, Matt Conte and Roberto Rosario for their general help;
- Zoop for help with bankswitch, optimizations, nice font and webpage hosting;
- {ZeroAge} from IRC BrasNet #GameROM that helped me with English :)
- Nicolas Hamel and David M. for the original source;
- All the old (and new) xNes (RockNES) team.

*---------------------------------------------------------------------------*

===========
 IX. http  
===========

 Fx3's official RockNES Webpage at
  http://www.emucamp.com/rocknes/

 Kritz's RockNES page at
  http://www.xcelco.on.ca/~val/

*---------------------------------------------------------------------------*
eof
