
RockNES
History of past updates
-----------------------

Version 0.98

- Added a ID header to saved states (to prevent crashing when not compatible);
- Mapper #19 improved (still buggy);
- Mapper #23 fixed (Kid Dracula works ok);
- Mapper #24 fixed (CV3j works ok);
- Mapper #25 fixed (Gradius ][ works ok);
- Mapper #26 fixed (Madara works ok);
- NES NameTable mirroring fixed (CastleVania 3j mirroring is perfect);
- Fixed ROM information display (mirroring);
- Fixed an old sprite priority problem;
- Fixed screen clearing (normal and intensity);
- Fixed `-b' option (battery file, working again);
- Fixed a mapper #0 loading bug;
- Removed a sound hacking added in 0.97 (some notes were too short);
- Loopy's palette updated (-pal 2);
- Minor optmizations (less math) and cosmetic changes;
- Compiled with Allegro 3.9.26 (WIP), hence support for Grip/Grip4 inputs;
- Binary compressed with UPX 0.84;
- Documentation (+FAQ) slightly updated.

 Version 0.97

 - Appended datafile (yeah, bye rocknes.dat);
 - Fixed a CPU and a minor scrolling bug;
 - Minor fix in the sound core;
 - Added Mapper #8 support (such as Doraemon);
 - Minor Mapper #17 fix (Parodius looks better);
 - Mapper #18 rewritten, IRQs fixed (at least Bases Loaded works fine);
 - Mapper #26 (game Madara) fixed (still buggy);
 - Fixed a free memory problem;
 - Fixed a strange bug that causes random snapshot saving (???);
 - Better VS Platoon color support;
 - Second major code rewrite done (cleaned & bug fixed).

 Version 0.96a

 - Disabled writes to WRAM if a mapper writes to $6000-7fff;
 - Fixed Mapper #69 (now Batman Return of the Joker WORKS FINE!);
 - Fixed VROM switching bug on Mapper #79 and some others (no more garbage);
 - Added iNES Format (.NES) description to this doc;
 - FAQ updated.

 Version 0.96

 - Fixed Mapper #1 ROM/VROM switching and minor bug fixes;
 - Fixed Mapper #3 (oops! Working again);
 - Fixed a minor IRQ bug for Mapper #4;
 - Minor optimizations for VROM switching (less math);
 - Preliminary support for IRQs with 16-bit registers;
 - Fixed Mapper #16 IRQs and mirroring (Dragon Ball games works fine);
 - Mapper #17 fixed and finally working! (Parodius, still buggy);
 - Added 16-bit IRQ lenght counter (0xffff) to Mapper #23, buggy;
 - Mapper #24 rewritten (still buggy yet (IRQs), but mirroring seems ok);
 - Mapper #26 added (such as Madara, still buggy (IRQs));
 - Mapper #34 VROM switch fixed, Impossible Mission 2 works;
 - Mapper #65 enabled (untested);
 - Some fix for Mapper #69 IRQs (Batman Return of Joker, buggy yet);
 - Mapper #79 added (such as Krazy Kreatures);
 - Mapper #225 added (58/110in1 carts, and some others);
 - Mapper #227 added (1200in1, preliminary, not playable);
 - Mapper #228 added (Active Enterprises games, such as Action52);
 - Mapper #231 added (such as Wally Bear and the NO! Gang);
 - Mapper #232 added (Quattro Games by Codemasters/Camerica, doesn't work);
 - Removed some debug junk (F6 key);
 - Added some missing gcc flags to makefile (optimizations);
 - Fixed a problem of "can't play movie file" if slot key is pressed during
movie recording (this key (F2) is disabled while recording/playing movies);
 - Changed VBlank start scanline (hence 21 lines/VBlank);
 - First read of palette data ok (should fix some games);
 - Fixed a crashing problem setting a VESA mode (at least under Win9x);
 - Fixed reading ROM header (very optimized);
 - ROM information now displays if a game is VS Unisystem or PlayChoice-10;
 - Defaut frameskip changed to 0 (all frames rendered);
 - Stupid noise hacking to get Metalman's stage sounds ok (MM2);
 - Documentation rewritten/updated + FAQ.

 Version 0.95

 - Added a new blitter (enabled by default). Games should work at full speed
in a P166 with frameskip 1, with *VESA enabled* only. To use the old one, use
`-oldblit' option;
 - Minor fix for PPU scrolling (sync fixed, Karateka works fine!);
 - Fixed NES movies (file format, recording and playing);
 - Added mapper #151 loading for iNes format;
 - Fixed mapper #15 loading, and a minor bug out;
 - Fixed mapper #99 loading (VS Unisystem iNes format);
 - For VS Unisystem images in iNes format, VS SMB palette will be used,
instead of default NES palette;
 - Key [`] (coins) always enabled to work with VS Unisystem in iNes format;
 - Fixed a long standing problem of missing tiles with some games, like MMC1
and Mapper #15 (like Mapper#1 instead of #0 in the header);
 - Fixed mapper #0 loading;
 - Fixed mapper #1 (now using 1 register, instead of 4);
 - Joypad 1 engine is using 0.93 way again;
 - Fixed problem of soundcard setup when sound would be disabled (-nosound);
 - Added a new palette (iNes style, use -pal 5 to try);
 - Fixed missing credits on startup;
 - Help/version display fixed (oops!);
 - Removed SDD warnings (now it's true :-));
 - Using Allegro 3.9.25 WIP;
 - Documentation updated (+FAQ).

 Version 0.94a

 - Border color enabled to prevent possible crash on startup;
 - Frameskip back to value 2 as default;
 - Video resolution set to 320x240 autodetect;
 - Config file included in the ZIP pack.

 Version 0.94

 - Added NES movies support;
 - Added joystick calibration (to get things working properly);
 - Mapper #70 fixed (still bug yet, but Arkanoid 2 is playable);
 - The bug that hangs RockNES if the soundcard wasn't initialized had been
returned on 0.9x versions. Fixed;
 - Fixed VS loading for games with no CHR pages;
 - Fixed VS games palettes (oops!);
 - Fixed messages colors using others palettes;
 - Added pAPU status register on $4015 reads;
 - Minor fix for waveforms amplitude;
 - Changed way to set joypad1 data (seems more accurate);
 - Little help was displaying VGA as default video mode (it's AUTO), fixed;
 - Removed SDD EAGLE warnings.

 Version 0.93

 - Minor fix for noise channel (sounds better);
 - Removed some general junk;
 - Fixed problem with keyboard when a joystick isn't found;
 - Fixed maximum frame rate (10) by command line switch;
 - Fixed no sound problem on rate 1 (22050Mhz);
 - Removed Win9x EAGLE warnings;
 - Compiled with Allegro 3.9.23 (WIP) - 19990718;
 - Removed code to shutdown RockNES on Allegro's crash due the newer version;
 - Updated configuration file (keyboard scancodes table);
 - Joypad code updated;
 - Some changes displaying messages.

 Version 0.92

 - Added EAGLE effects (use `-eagle' option to enable it);
 - Fixed VS loading (oops!);
 - Fixed Mapper #4 IRQ counter (MegaMan games should work fine);
 - Added support for Mapper #16 writes at $6000-7fff (bad IRQ);
 - Added support for Mapper #19 (bad IRQ);
 - Added preliminary support for Mapper #13 (Videomation);
 - Added preliminary support for Mapper #70 (Arkanoid 2);
 - Added preliminary(?) support for Mapper #114 (untested);
 - Minor IRQ adjust for Mappers #23 (Kid Dracula) and #25 (Gradius ][);
 - Fixed VBlank bit control (Somari works fine again);
 - Fixed VS Dr.Mario mapper number (oops);
 - Fixed snapshots saving;
 - Fixed screen clearing (no more black snapshots);
 - Fixed some palette colors;
 - Updated Allegro's graphics modes avaliable   (see rocknes.cfg);
 - Updated Allegro's joystick drivers avaliable (see rocknes.cfg);
 - Configuration file rewritten/updated;
 - Joypad code rewritten/optimised;
 - Added code to shutdown RockNES on Allegro's crash;
 - A lot of internal changes.

 Version 0.91:

 - More gfx optimisations;
 - Background render rewritten (little speed up);
 - Added a new PPU scroll/control method (should fix games scores);
 - Screen layout fixed/changed;
 - Some IRQ fix for mapper #24 (horizontal scrolling is ok);
 - Removed screen border color;
 - Fixed problem with the key [~] (coins);
 - Fixed problem with violet color instead of blue color;
 - Fixed some startup/shutdown problems;
 - Fixed a minor problem saving snapshots;
 - Fixed/added palettes for many VS system games;
 - Fixed mapper #7 (Wheel of Fortune Junior now works);
 - Fixed mapper #151 mirroring;
 - Fixed problem with soundcard detection (finally!);
 - Fixed squares waves duty cycles (using 25, 25, 50, 87.5 sounds better);
 - Fixed messages display (color) with VS games;
 - Fixed bitmap garbage on startup/reset;
 - Changed VBlank lines/frame to 30;
 - Added left-sprite clipping (same way used for left-background clipping);
 - Added CHR pages masking for Mapper #4 (MMC3);
 - Added VS R.B.I Baseball support (unplayable);
 - ESC key aborts the emulator startup;
 - Added 3 new palettes (use -pal x to select);
 - ROM loading stuff rewritten;
 - Detected problems with VBlank lines/frame (see "Know problems");
 - Famicom Disksystem support disabled.

 Version 0.90:

        - Even more gfx optimisations;
        - Famicom DiskSystem support (.FDS);
        - VS Unisystem support (both arcade and .NES formats);
        - New palettes for VS games (some should be preliminary);
        - Partial PlayChoice-10 game boards support;
        - Mapper #69 (Batman: Return of The Joker) should work 90%;
        - Changes for the save state feature;
        - Fixed squares waves duty cycles;
        - Some fixes for triangle wave channel (try Mega Man 2);
        - Screen clearing fixed;
        - Added preliminary Mapper #151 emulation (VS Goonies);
        - Preliminary Mapper #90 support (MK4 & Tekken2);
        - Fixed a bug in the Mapper #64;
        - Some general PPU/gfx fixes (SMB3 title screen);
        - Changed the way to clip the left 8 pixels;
        - Added a function pointer array for writing the sound regs;
        - If missing rocknes.dat file, the default font will be used;
        - Added a direct GFX_AUTODETECT for set_gfx_mode();
        - Option `-info' now displays the mapper number and name if avaliable;
        - Fixed a bug parsing ROM directory;
        - Changed the EXE compressor from DJP to UPX.

--------------
 Version 0.81a
--------------

        - Just redownload it.

-------------
 Version 0.81
--------------

        - Removed the new soundcard detection code (*can* destroy your HD!!!);
        - Fixed Mapper #69 mirroring;
        - F.A.Q. updated.

--------------
 Version 0.80
--------------

        - Fixed *major* PPU emulation problems. Many games are working now,
like some Mapper #3 titles (Ghostbusters, Back to the Future). It should fix
score/garbage problems (R.C. Pro AM 1 and 2) and glitches (Mapper #7 games),
with a more accurate emulation;
        - Fixed (*again*) virtual NES RAM size;
        - Fixed trainer support;
        - Frame rate default set to 2;
        - Better (not full yet) sound support (sounds like a *real* NES);
        - Fixed the sound card detection problem (when not initialised);
        - Added Sunsoft Mapper #69 (Batman: Return of The Joker, press START
to go to the main title);
        - Mapper #1: fixed mirroring bug, thanks to Loopy;
        - Mapper #3: it should work ok, *many* more games are working;
        - Mapper #4: Major rewrite: IRQ bug fixed, no more SMB3 score garbage,
Alien 3 is working with no problems, due the new VRAM switch system;
        - Mapper #7: it should work ok. Use 256 scanlines per frame (-spf 256)
for Battletoads games;
        - Mapper #21 rewritten;
        - Mapper #23: added partial IRQ support (Kid Dracula works);
        - Mapper #25: added/fixed, working (Gradius ][);
        - Mapper #64: fixed 2 bugs (VRAM switch related);
        - Fixed `-f' option (frame rate), working again;
        - Minor changes for the save/load state feature;
        - Added 10 slots to save your game (press <F2> to select one);
        - **New palette** (near a *real* NES color!);
        - Fixed screen left clipping;
        - F.A.Q. updated.

*============================================================================*
7x
--------------
 Version 0.74
--------------

        - Fixed NES RAM, SPR-RAM (Sprite RAM) and SRAM (Save RAM, battery)
sizes and features;
        - Found the CPU bug which was breaking/hanging some games (Battetoads \
games, Karateka and others);
        - NES background render partially rewritten/optimised;
        - Fixed `-info' option (mirroring was being displayed incorrectly);
        - *Preliminary? incomplete?* Mapper #24 support (CastleVania 3 Jap.);
        - Joypad 2 working with no problems;
        - Better IRQ emulation support (no more the same for every mapper);
        - Major fix for save/load state feature!
        - On Reset, the native ROM mirroring is being restored;
        - Fixed Mappers #4/#64 reset! (Super Mario Bros.3 is ok);
        - Fixed some OS quit problems (memory related);
        - Fixed a minor mid-hblank problem;
        - Fixed 8-sprites/line detection;
        - Better way to access MapperX_Write() functions (w/ pointers);
        - Minor fixes across CPU/PPU functions;
        - Compiled with Allegro 3.11.

--------------
 Version 0.73
--------------

        - Removed detection if there are +than 8 sprites at current scanline,
which was breaking Rambo and others (Zelda2 has perfect title screen again);
        - Re-adjusted the NES RAM size (Zelda was hanging);
        - Fixed joypad bugs and some others.

--------------
 Version 0.72
--------------

        - Fixed an internal problem. All RockNES features are working again.
        - Compiled with a newer Make.

--------------
 Version 0.71
--------------

        - Compiled with the new Allegro 3.1, which was compiled with pgcc;
        - Fixed NES RAM size (too big);
        - Fixed a couple of minor bugs, like unused variables.

--------------
 Version 0.70
--------------

        - Mid-HBlank writes fixed (or almost perfect);
        - PPU Name Table setting fixed;
        - Some changes in the NES interrupt code for a better PPU support;
        - Major changes in the CPU/PPU functions (Read/Write);
        - Fixed scrolling problems (works ok);
        - IRQ emulation fixed, now you can see raster effects, for example;
        - Detection if there are more than 8 sprites at current scanline;
        - Fixed a palette color bug (Darkwing Duck now works fine);
        - Added Mapper #78 (untested, but probably it works);
        - Mapper #68 fixed (AfterBurner 2 works fine, thanks Nyef);
        - Mapper #66 fixed and working;
        - Mappers #21 and #25 merged (partial support, bad for now);
        - Fixed some bugs in the Mapper #16 (not working yet);
        - Fixed a minor Mapper #7 bug;
        - Fixed a problem with Mapper #1 (MMC1);
        - Auto search for a valid gfx mode if the selected isn't supported;
        - Added Game Genie codes support;
        - Fixed RockNES shutdown (when you quit to DOS prompt);
        - Fixed problem with '-nosound' option (no more crash when you quit);
        - RockNES startup messages changed;
        - Added '-info' command line option to show information about the ROM;
        - Removed '-revmirr' command line option (bah);
        - Fixed a stupid problem with gamepad/joysticks (working again);
        - 6502 working with non-decimal mode;
        - Fixed minor bugs in the 6502 emulation core;
        - Changed the source around a lot making a GUI now possible;
        - Working Super Mario Bros.3 *perfectly* :-P

*============================================================================*
6x
---------------
 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! :)
5x
--------------
 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.

--------------
 Version 0.55
--------------

        - Fixed Mapper #1, now more games works fine (like Metroid,
Mega Man 2, CastleVania 2 etc);
        - Fixed Mapper #4, now more games works (Mega Man 6, Sword Master);
        - Implemented a new way of swapping ROM banks. This doesn't speed up
the emulator or make it run any more games, however, it does make it a lot
easier to work with and understand;
        - Added Mappers #10 and #23 (no games seems to run for now);
        - Added autoframeskip system;
        - Added the old frame rate system;
        - Compatibility increased;
        - Minor changes across mappers/6502 functions;
        - Fixed a bug in the graphic engine (current PPU name table);
        - Fixed a bug in the 6502 from Marat (now, with correct timing,
the emulator has the correct speed);
        - Fixed a bug in the sprite code that can fix some games;
        - Fixed the NES ROM header read function (partially);
        - Fixed stupid bugs in the startup messages;
        - Removed video mode options by command line (just use rocknes.cfg);
        - Config file generator adapted with the new changes.

---------------
 Version 0.54b
---------------

        - Fixed a bug in the Mapper #1. Now, Rockman 2 works (and fine!).
Other games should work.

--------------
 Version 0.54
--------------

        - ClearScreen() code fix added - now there is no 'Error in ClearScreen()';
        - Sprite priority fixed - some sprites can go behind things now
            (For example, in Zelda when you walk up/down stairs);
        - Fixed mapper #2 bug - Only a few more ROMS work, some still don't;
        - Fixed mapper #3 bug - All mapper #3 ROMS should work now;
        - Changed the palette to the one Nesticle uses because it works/looks better;
        - Made it so that a border isn't shown around the screen;
        - Added support for extended mappers #16+, no mappers implemented yet.;
        - Added a configuration file;
        - Added 2 player support w/ redefinition of keys/buttons;
        - Added information displayer (green text that pops up)
        - Some small optimizations, barely noticeable.

-------------------------
 Version 0.53 Release 3b
-------------------------

        - Whops! Fixed a bug in the PPU (just play to see). Now, Ghosts'n
Goblins works fine;
        - While keys '+' or '-' are pressed, the frameskip isn't changed.
          Just press a key one time to increase/decrease. Same to F5 (reset).

-------------------------
 Version 0.53 Release 3
-------------------------

        - Some changes in the sprite/BG code;
        - The screen is correctly centered;
        - Maybe more games are working (like Power Blade 2) or with a bit
less glitches (like Tetris by Tengen).

------------------------
 Version 0.53 Release 2
------------------------

        - Fixed a bug in the sprite code (sorry);
        - Some changes when writting to the PPU;
        - Some little changes in the main code.

--------------
 Version 0.53
--------------

        - Removed tons of unused variables;
        - Big clean of source code;
        - Fixed a bug in the PPU (background color, now Rockman 1 is okay);
        - Frameskip range set to 0-6 (default=2);
        - Fixed some bugs in the 6502 functions (Rd/Wr/loop);
        - Fixed a bug in the Mapper 7 (incorrect name table);
        - Fixed a bug in the Reset_Nes();
        - Fixed the shutdown function (TrashMachine);
        - Fixed a bit the current graphic engine;
        - Screen is always centered in any video mode;
        - You can hide the .NES extension (ex: RockNES gamename OR gamename.NES);
        - 5-15% more faster (really?).

--------------
 Version 0.52
--------------

        - Compiled with PGCC (for Pentium processors);
        - Fixed bugs parsing command line switches;
        - More video resolutions, with all modes merged to -gfx switch.

------------------------------------
 Version 0.51 - INITIAL Fx3 RELEASE
------------------------------------

        - Encapsulated xnes.dat (palette);
        - Added joystick support (4-buttons, player 1 only);
        - The emulator doesn't crash more when unable to initialise graphics modes;
        - Primitive GUI removed to be improved;
        - New resolutions, with auto detection improved (a bit faster);
        - Some changes in the messages.

----------------------------------------------------------------------------------------
4x
Version 0.45 :
        - Speed up into the 6502 emulation core of Marat
        - fixed bug into the PPU memory
        - MMC 4 partially supported ( Mario2 is playable )

Version 0.40 :
        - Very more compatible !
        - ModeX added
        - 8x16 Sprite fixed
        - Some fix in the xNes code
        - Big fix in the MMC 1
        - Sprite Priority
        - Some fix in the MMC 9
        - Some stupid bug in the xNes code removed
        - New Graphic engine reworked

3x
Version 0.30 :
        - Better Graphics
        - New graphic engine
        - MMC 9 added / VERY BUGGY !
        - MMC 1 fixed
        - Fixed the 6502
        - other things that I dont remember.

2x unknown???
1x unknown???
*---------------------------------------------------------------------------*
