0% found this document useful (0 votes)
460 views7 pages

Rock Nes

Fx3rnes is a freeware, for absolutely non-commercial use. - This is free software for home use, meaning no commercial ways and no warranties, so you use it at your own risk. - There's no test for a minimal hardware to get RockNES running at 60FPS, but a +1Ghz CPU might do the task. - Timer tweaked a bit, it's better. - Fixed display messages and flickering. - Some internal

Uploaded by

avaldezgarza
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
460 views7 pages

Rock Nes

Fx3rnes is a freeware, for absolutely non-commercial use. - This is free software for home use, meaning no commercial ways and no warranties, so you use it at your own risk. - There's no test for a minimal hardware to get RockNES running at 60FPS, but a +1Ghz CPU might do the task. - Timer tweaked a bit, it's better. - Fixed display messages and flickering. - Some internal

Uploaded by

avaldezgarza
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

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
[Link] @fx3rnes (swap to fix)
[Link]
<<======================================================================>>
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 '[Link]' for complete history of updates.
* Report any problems in a descriptive way at
[Link]
[==========================================================================]
1.
2.
3.
4.
5.
6.

Description
Configurations and default controls
Using the GUI + Game Genie.
iNES file format description.
VS Unisystem games.
"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.

- Full pAPU emulation, including squares, triangle, noise and DMC/RAW channel
s.
- 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 '[Link]'
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 ga
meplay
can be exactly reproduced.
- Game Genie codes are supported.
- When first run, RockNES creates a config file named '[Link]'. 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"

"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
| [Link] | 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
| [Link] | B |
| Nametables
| 2000h-3EFFh
| [Link] | B |
| Palette RAM
| 3F00h-3FFFh
| pal_ram.bin | B |
| Sprite RAM
| built-in
| [Link] | B |
| CHR ROM data
| built-in
| [Link] | 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 | [Link] | T |
| CPU registers
| Actual CPU state | [Link] | T |
+---------------------+------------------+---------------+------+
[==========================================================================]
* KNOWN EMULATION ISSUES (version 5.00):
- Better PPU support is required to run mapper 4 games, plus to get perfect
timing to fix some picky games (Battletoads), but I'd need to rewrite/tweak my
PPU 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, so
expect 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 that
megawarp 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

B
= 'Z' key
SELECT = 'Tab' key
START = 'Enter' key
[player 2] UP
= 'U'
DOWN = 'J'
LEFT = 'H'
RIGHT = 'K'
A
= 'S'
B
= 'A'
SELECT = 'Q'
START = 'W'

no device assigned (KEYBOARD)


key.
key.
key.
key.
key.
key.
key.
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:
<ESC> - Switch to GUI / back to gameplay.
<F1>
<F2>
<F3>
<F4>

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

<F5>
<F6>
<F7>
<F8>

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)

<F9>
<F10>
<F11>
<F12>

gameplay logging
gameplay player
unused?
take screenshot

<KEY_Q> - 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...........:
- Game information...:
- Screenshot.........:
- WAVE logging.......:
- Quit...............:
[CPU]

Lists files of extension .NES/.NEZ/.FDS/.BAK/.ZIP


Displays iNES header information + CRCs.
Takes a screenshot (BMP).
Record WAV files.
Close the emulator.

Reset..............:
Save state.........:
Load state.........:
Load NESticle state:
Dump...............:

[Misc]
- Video resolution...:
- Movies.............:
- Palettes...........:
- ROM cheat..........:
- Game Genie.........:
- ROM Corruptor!.....:

Emulation reset.
To save your progress.
To load your progress.
Ability to load a NESticle progress.
NES memory dumping (lots of options).
You can change the video card/resolution.
Record, play, stop and status of a NES movie.
Set the current palette (for VS Unisystem games).
You can patch the loaded ROM data.
You can enter Game Genie codes (up to 10).
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
|

|
|
|
| ||+--- 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
reach its current
* Thanks to Brad
* Thanks to _Bnu

to Shay Green for his test ROMs, or else RockNES wouldn't


state.
Taylor for his superb NES documents;
for his [Link] (6502 Microprocessor) document;

* NESdev ([Link] and everyone over there!


DJGPP package
[Link]
Allegro's library by Shawn Hargreaves
[Link]
[Link]
Binary compressed using UPX
The Ultimate Packer for eXecutables
Copyright (c) 1996-2001 Markus Oberhumer & Laszlo Molnar
[Link]
[Link]
Alastair Bridgewater - Darcnes
[Link]
Parodius Networking - website hosting
[Link]
Super2xSaI and SuperEagle cores
Copyright (c) Derek Liauw Kie Fa, 1999
Modifications for Allegro 3.9+ comptibility by Robert J Ohannessian.
Original web site: [Link]
unzip -- IO for uncompress .zip files using zlib
Version 1.00, September 10th, 2003
Copyright (C) 1998-2003 Gilles Vollant
Blargg's Home
[Link]
[=========================================================================]
[=========================================================================]
//eof

Common questions

Powered by AI

RockNES supports the iNES file format, widely used for NES ROM images, ensuring broad compatibility with many NES games. The format includes headers that define crucial data like PRG-ROM and CHR-ROM sizes, allowing RockNES to accurately allocate memory and handle game graphics and logic. However, limitations arise when encountering ROMs with dirty or incorrect headers, leading to loading failures or incorrect mapper identifications. RockNES does not support unusual mappers higher than #255, affecting compatibility with certain pirated or unlicensed games. Despite these limitations, adherence to the iNES format facilitates its robustness with most standard NES games .

RockNES supports Game Genie codes, allowing users to enter cheat codes that modify game behavior or attributes, enhancing gameplay versatility and user experience. Users can input up to 10 Game Genie codes, which are either 6 or 8 characters long, into the GUI. However, enabling or disabling code effects requires restarting the emulation for 6-character codes, which may disrupt gameplay. Moreover, only memory areas between 8000h-FFFFh can be patched with 6-character codes, while 8-character codes continuously patch the memory, making them more versatile. These limitations require users to be mindful of how and when to apply cheats .

The lack of support for the VS-Dualsystem and Playchoice-10 limits RockNES's ability to emulate specific NES and arcade games accurately. These systems often use unique hardware configurations and timing, which are not emulated in RockNES. As a result, games designed for these systems may not display or function correctly, reducing the emulator's capability to provide the full NES gaming experience. Additionally, this limitation affects compatibility with certain arcade titles, impacting enthusiasts who wish to explore a complete range of NES and arcade game history .

An NES mapper is a component that handles the memory configuration and expansion in Nintendo Entertainment System cartridges. It allows access to various game data by switching memory banks in and out of the CPU and PPU address spaces, which is essential for games that exceed the console's native hardware limits. The RockNES emulator supports a wide range of iNES mappers, allowing it to run many different NES games, as each game may use a specific mapper to manage its unique data handling needs. The emulation of specific mappers is crucial for reproducing game behavior faithfully. Mappers like MMC5 and certain pirated game mappers over #255 are not supported, affecting compatibility with those specific games .

RockNES's features for memory dumping and recording gameplay significantly enhance its utility for both developers and casual users. For developers, the ability to dump NES memory, including RAM, ROM data, and CPU registers, provides valuable diagnostic capabilities, allowing detailed examination of game behavior and assisting in debugging and creating NES homebrew content. For casual users, the gameplay recording feature allows precise playback of gaming sessions, enabling review of play tactics or sharing gameplay experiences. These tools collectively make RockNES a powerful platform for educational and entertainment purposes .

In version 5.00 BETA 3 of RockNES, several improvements were made, including timer tweaks for better performance, fixed display messages, and reduced flickering, which collectively enhance the user's visual experience and gameplay stability. Despite these improvements, this version remains a beta, indicating potential instability. These changes enhance the emulator's reliability by addressing previous performance issues, but users should still anticipate potential bugs due to its beta status .

The licensing agreement for RockNES explicitly states that the software is freeware intended for home use only and prohibits commercial use. This limitation prevents any form of financial gain from its distribution or integration with commercial products. Additionally, packaging the software with commercial ROM images is considered a violation of the agreement, which reinforces the emulator's purpose as a non-commercial, personal entertainment tool. Such restrictions ensure that RockNES remains a community-driven project rather than a commercial one .

RockNES allows users to configure key bindings for emulating NES joypads. The default configuration for player 1 on the keyboard is the arrow keys for directional controls, 'X' for button A, 'Z' for button B, 'Tab' for Select, and 'Enter' for Start. Player 2 defaults to using alphabetic keys: 'U', 'J', 'H', 'K' for directionals, 'S' for button A, 'A' for button B, 'Q' for Select, and 'W' for Start. These configurable key mappings ensure that users can tailor the emulation experience to their hardware setup and personal preferences .

RockNES offers comprehensive sound emulation, including support for the NES's squares, triangle, noise, and DMC/RAW channels, as well as Konami VRC6 sound. However, it lacks support for other extension sound chips, limiting the audio experience for some games. For video output, RockNES supports PPU color emphasis and monochrome masking, sprite triggering, and 8-sprites limitation. Users can choose from image filtering options such as Pixelated, Scanlines, or Stretched for a display resolution at 640x480. Despite these capabilities, European NES console (PAL 50Hz) and Japanese Famicom are not supported, affecting video output for games on these platforms .

The RockNES emulator does not support certain hardware features due to limitations in its emulation framework. Notably, it does not emulate illegal CPU opcodes, the European NES console (PAL 50Hz), or the Japanese Famicom, which means that games specific to these platforms may not run correctly. Additionally, input devices like the LightGun (Zapper), microphone, and PowerPad, as well as Joypads 3 and 4, are not supported. The VS-Dualsystem and Playchoice-10 upper monitor (z80 emulation) are also not emulated, limiting its compatibility with certain NES and arcade games. The lack of extension sound chips support, other than VRC6, further restricts audio capabilities for some games .

You might also like