Post on 06-Jul-2018
8/17/2019 Rock Nes
1/7
R o c k N E S A NES 8-bit videogame emulator (c)1998-2007 Fx3, version 5.00B3, January 3rd 2007 Freeware, for absolutely non-commercial use hotmail.com @fx3rnes (swap to fix)
http://www.geoshock.com/rocknesBB/
LICENSE AGREEMENT:
- This is free software for home use, meaning no commercial ways and no warranties, so you use it at your own risk. You cannot package commercial ROM images, never, as a sign of your mental sanity. Please, don't bother me if you messed up the things. - If you disagree with these terms, DELETE THIS SOFTWARE NOW.
HARDWARE REQUIREMENTS:
- RockNES features cycle precision timing emulation. - There's no test for a minimal hardware to get RockNES running at 60FPS, but a +1Ghz CPU might do the task. Notice it's not target to run on older
machines - that's the price for its accuracy. -------------------------------------------------------------------------- ----------------------------------------------------------------------
** NOTICE ** This is a beta version, might be unstable.
What's new for version 5.00 BETA 3 (01/03/2007) ----------------------------------------------- - Timer tweaked a bit, it's better.
- Fixed display messages and flickering. - Some internal changes and minor fixes.
[==========================================================================] Notes: * Read 'oldnews.txt' for complete history of updates. * Report any problems in a descriptive way at http://www.geoshock.com/rocknesBB [==========================================================================]
1. Description 2. Configurations and default controls 3. Using the GUI + Game Genie.
4. iNES file format description. 5. VS Unisystem games. 6. "What is a NES mapper?"
[==========================================================================]
1. Description -------------- > This software emulates the Nintendo Entertainment System videogame (NES). > RockNES is fully coded in C. It uses the great Allegro library.
* Emulated hardware *
- 2A03 CPU emulation (Motorola 6502 variant) using cycle precision. - 2C02 PPU emulation using a 'pixel-by-pixel' engine. - Joypads 1 & 2.
8/17/2019 Rock Nes
2/7
- Full pAPU emulation, including squares, triangle, noise and DMC/RAW channels. - Konami VRC6 sound emulation, used in 'Akumajou Densetsu' and 'Madara'. - Famicom DiskSystem and VS-Unisystem are partially emulated, still buggy. - Backed battery save to disk. - Supported iNES mappers: 0,1,2,3,4,7,9,10,11,13,15,16,18,19,20,21,22,23,24, 25,26,32,33,34,40,41,42,43,44,57,64,65,66,67,68,69,70,71,72,73,75,76,78,79,
83,85,88,90,91,92,94,97,99,100,101,110,113,117,118,119,151,160,180,184,187, 189,225,226,227,228,229,230,231,232,233,234,235,240,243,246 and 255.
NOTES: 1. Famicom DiskSystem emulation (as mapper #20) requires the BIOS file named 'disksys.rom'
2. RockNES uses a custom RGB palette taken from Rockman Complete Works, and a few 'holes' indexed with Chris Covell's palette. 3. I have no interest to emulate mapper #5 (MMC5, CastleVania 3).
> Other features available: --------------------------- - PPU color emphasis and monochrome masking.
- Accurate sprite #0 triggering and 8-sprites limitation. - Joypad data logging (replay). - Save states (emulation freezing). - NESticle savestates are supported (.STA files). - GUI and config file. - Game Genie codes (still buggy). - Exclusive ROM data patching. - Sound logging (WAVE file). - Built-in PRG-ROM data disassembler. - Optional fake-stereo sound output. - PPU image filtering on 640x480 as Pixelated, Scanlines or Stretched.
* Unemulated hardware *
- All illegal CPU opcodes. - European NES console (PAL 50Hz) and japanese Famicom. - Input devices such as LightGun (Zapper), microphone, PowerPad and others. - Joypads 3 and 4. - VS-Dualsystem. - Playchoice-10 upper monitor (z80 emulation). - Extension sound chips other than VRC6.
> NOTES: ******** - RockNES has ZIP file loading. - You can record your gameplay. The joypad states are saved to disk, so the gameplaycan be exactly reproduced. - Game Genie codes are supported. - When first run, RockNES creates a config file named 'rocknes.ini'. There's a lot of options, so open the file using an editor, like MS Notepad, and have fun. - NES memory dumping is supported, as listed below.
Legend: T = text file, B = binary file.
# Menu -> CPU -> Dump... -> "RAM", "Work-RAM"
"CPU $8000-$FFFF" "CPU registers" "PRG ROM data"
8/17/2019 Rock Nes
3/7
"CHR ROM data" "Palette RAM" "Pattern table" "Nametables" "Sprite RAM"
+---------------------+------------------+---------------+------+
| context | CPU memory range | filename | type | +---------------------+------------------+---------------+------+ | System RAM | 0000h-1FFFh | nes_ram.bin | B | | PRG ROM data | built-in | gamename.prg | B | | PRG RAM data | 8000h-FFFFh | gamename.p8f | B | | Work-RAM | 6000h-7FFFh | nes_wram.bin | B | +---------------------+------------------+---------------+------+
+---------------------+------------------+---------------+------+ | context | PPU memory range | filename | type | +---------------------+------------------+---------------+------+ | CHR RAM data * | 0000h-1FFFh | gamename.gfx | B |
| Nametables | 2000h-3EFFh | gamename.nam | B | | Palette RAM | 3F00h-3FFFh | pal_ram.bin | B | | Sprite RAM | built-in | sprites.ram | B | | CHR ROM data | built-in | gamename.chr | B | +---------------------+------------------+---------------+------+ * As known as Pattern table. # Menu -> File -> Game Information # Menu -> CPU -> Dump... -> CPU registers +---------------------+------------------+---------------+------+ | context | Information | filename | type | +---------------------+------------------+---------------+------+ | iNES header info | 16 bytes header | gamename.txt | T |
| CPU registers | Actual CPU state | cpu6502.txt | T | +---------------------+------------------+---------------+------+
[==========================================================================] * KNOWN EMULATION ISSUES (version 5.00):
- Better PPU support is required to run mapper 4 games, plus to get perfecttiming to fix some picky games (Battletoads), but I'd need to rewrite/tweak myPPU core in order to work like the NES PPU does the tile fetching thing... -_- - Famicom Disksystem driver is junked, as I don't plan a fix or update for now. - No mapper 4 games will work, as Super Mario Bros 3, due to mapper IRQs. - MMC2/MMC4 games are 1 tile glitched usually in the right side. - Mapper #90 Mortal Kombat Special uses a slightly different hardware, soexpect a few issues. - Some mappers might be still broken due to lack of proper testing. - Garbaged scanline(s) with games that require a perfect IRQ timing. - Battletoads might hang during stage 2 (Impact Crater). You could get thatmegawarp at the beginning, rushing directly to Turbo Tunnel... ^_^;; [==========================================================================]
2. Configuration and default setup ----------------------------------
> Default keys (by default) are:
[player 1] - device is KEYBOARD UP, DOWN, LEFT, RIGHT = keyboard arrows A = 'X' key
8/17/2019 Rock Nes
4/7
B = 'Z' key SELECT = 'Tab' key START = 'Enter' key
[player 2] - no device assigned (KEYBOARD) UP = 'U' key. DOWN = 'J' key.
LEFT = 'H' key. RIGHT = 'K' key. A = 'S' key. B = 'A' key. SELECT = 'Q' key. START = 'W' key.
> Joypads:
UP,DOWN,LEFT,RIGHT = D-pad A - button 1 B - button 2
SELECT - button 3 START - button 4 Quit Emulator - button 5 Fast Forward - button 6
> Other keys:
- Switch to GUI / back to gameplay.
- toggles Frames-Per-Second display on/off. - save state from selected slot - slot selector to save/load a state (0,1,2,3,4,5,6,7,8 or 9) - load state from selected slot
- NES soft reset (RAMs are not cleaned) - FDS disk side flip (A->B->C->D->A...) - FDS disk insert/eject - to insert coins (VS Unisystem)
- gameplay logging - gameplay player - unused? - take screenshot
- Quit to OS
[==========================================================================]
3. Using the GUI + Game Genie ----------------------------- (notice that some of the items might be outdated, perhaps I'm too lazy for updating them, heh)
[Main] - Load ROM...........: Lists files of extension .NES/.NEZ/.FDS/.BAK/.ZIP- Game information...: Displays iNES header information + CRCs.
- Screenshot.........: Takes a screenshot (BMP). - WAVE logging.......: Record WAV files.
- Quit...............: Close the emulator.
[CPU]
8/17/2019 Rock Nes
5/7
- Reset..............: Emulation reset. - Save state.........: To save your progress. - Load state.........: To load your progress. - Load NESticle state: Ability to load a NESticle progress. - Dump...............: NES memory dumping (lots of options).
[Misc]
- Video resolution...: You can change the video card/resolution. - Movies.............: Record, play, stop and status of a NES movie. - Palettes...........: Set the current palette (for VS Unisystem games). - ROM cheat..........: You can patch the loaded ROM data. - Game Genie.........: You can enter Game Genie codes (up to 10). - ROM Corruptor!.....: Corrupts a certain memory range.
[Help] - System.............: Disabled. - About..............: Software revision ID.
GAME GENIE
> GameGenie codes can be either 6 or 8 digits and use the letters: A P Z L G I T Y E O X U K S V N
// To test game genie 6 char code - SXIOPO Super Mario 1 Unlimited lives// To test game genie 8 char code - SXEZSKOZ Super Mario 3 Skywalker
> To input a GameGenie code, go to Misc->Game Genie. A small window will appear requesting a code, disregarding case (SXEZSKOZ, SxEzSKoz or szezskoz are acceptable). Any invalid letter is ignored. Click OK to finish or CLEAR to delete all inserted codes. > No way to enable/disable a code during gameplay. For 6 chars codes only,
you must reset the emulation to take effect.
Note for advanced users:
> A 6-char GG code will patch data at 8000h-FFFFh on reset only. If a game uses bankswitch, there are chances to get an useless code. The 8-char code has no problem - it keeps patching whatever appears there.
[==========================================================================]
4. iNES header format ---------------------
> RockNES supports only .NES files within the iNES header created by Marat Fayzullin years ago. Here's the description:
+--------+------+------------------------------------------+ | Offset | Size | Content(s) | +--------+------+------------------------------------------+ | 0 | 3 | 'NES' | | 3 | 1 | 1Ah | | 4 | 1 | 16K PRG-ROM page count (size=x*0x4000) | | 5 | 1 | 8K CHR-ROM page count (size=y*0x2000) | | 6 | 1 | ROM Control Byte #1 | | | | %mmmmvTsM |
| | | | ||||+- 0=Horizontal Mirroring | | | | | |||| 1=Vertical Mirroring | | | | | |||+-- 1=Backed battery |
8/17/2019 Rock Nes
6/7
| | | | ||+--- 1=Trainer data (512 bytes) | | | | | |+---- 1=Four-screen mirroring | | | | +--+----- Mapper # (lower 4-bits) | | 7 | 1 | ROM Control Byte #2 | | | | %MMMM00PU | | | | | | |+- 1=VS Unisystem arcade | | | | | | +-- 1=Playchoice-10 arcade |
| | | +--+----- Mapper # (upper 4-bits) | | 8-15 | 8 | 00h | +--------+------+------------------------------------------+
Legends: ======== a) PRG-ROM stands for PRoGram ROM, or actual 6502 CPU instructions. b) CHR-ROM stands for CHaRacter ROM, or the game graphics.
Notes: ====== 1. Needless to say that ROM stands for Read-Only Memory. Understand that
a RAM type allows writes too.
2. Next data is PRG-ROM (in linear order) and then CHR-ROM if exists. A certain game can use VideoROM (paged gfx data) or VideoRAM at ppu I/O 0000h-1FFFh space.
3. By default, if 4-screen mirroring flag is set, then it's *hardwired* and cannot be changed.
NOTICE: ======= > Dirty headers are still present around ROM images, causing bad header parsing, usually getting the mapper number as #66.
> Mappers 0-255 are valid numbers. However, some pirated/unlicensed games can bring unusual mappers being assigned over #255 - low 4 bits of byte 7 is used, sharing the byte for arcade hardware flags. RockNES has no support for these unusual mappers. > The header brings the game data size. If the real file size does not match the size specified in the header, the loading proccess is halted.
[==========================================================================]
5. VS Unisystem ---------------
> VS Unisystem are Nintendo arcade machines with titles such as Pinball, Super Mario Bros. and others (insert coin$). The color signal is different, hence the NES palette won't fit, so you must select a new palette in the GUI for your specific game. RockNES uses the iNES format too.
* DIP Switches are not supported.
[==========================================================================]
CREDITS (no special order) **************************
* Special thanks to Shay Green for his test ROMs, or else RockNES wouldn't
reach its current state. * Thanks to Brad Taylor for his superb NES documents; * Thanks to _Bnu for his 6502.TXT (6502 Microprocessor) document;
8/17/2019 Rock Nes
7/7
* NESdev (http://nesdev.parodius.com) and everyone over there!
DJGPP package http://www.delorie.com/djgpp/
Allegro's library by Shawn Hargreaves http://www.talula.demon.co.uk/allegro
http://alleg.sourceforge.net
Binary compressed using UPX The Ultimate Packer for eXecutables Copyright (c) 1996-2001 Markus Oberhumer & Laszlo Molnar http://wildsau.idv.uni-linz.ac.at/mfx/upx.html http://upx.sourceforge.net
Alastair Bridgewater - Darcnes http://www.dridus.com/~nyef/darcnes
Parodius Networking - website hosting
http://www.parodius.com
Super2xSaI and SuperEagle cores Copyright (c) Derek Liauw Kie Fa, 1999 Modifications for Allegro 3.9+ comptibility by Robert J Ohannessian. Original web site: http://members.xoom.com/derek_liauw/
unzip -- IO for uncompress .zip files using zlib Version 1.00, September 10th, 2003 Copyright (C) 1998-2003 Gilles Vollant
Blargg's Home
http://www.slack.net/~ant/
[=========================================================================] [=========================================================================]//eof