0% found this document useful (0 votes)
291 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)
291 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
You are on page 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.
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 '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 ga
meplay
can 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"

"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 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 6502.TXT (6502 Microprocessor) document;

* 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

You might also like