NES Plugin Development
At this time, there is no plugin, not even a test version. Please do not ask the rockbox developers about the inclusion of this plugin or direct questions to them. The place for discussion is on this forum topic
Please do not post questions in the forum asking about progress! This is
where you will find the latest progress.
Do not contact us about ROMs or where to get them, as we will ignore such requests.
- NOTE: I have been stalled while in school, but have been making some progress on porting FCEU. Hopefully will have some results by summer.
This project is no longer at a stage of research.
Early development is currently taking place.
For those interested in assisting us, a few things should be noted. We are sticking to the absolute basics of functionality at the research and developement stages of the plugin. That means only a handful of games will be focused on and only after figuring out how to get it running on Rockbox.
Technical research would be appreciated on any level and discussion of that research in the forum topic
. Please read below to see what we have found and what we have rejected so that no one has to waste precious, and greatly respected, time. Thank you, AaronHuggins
: 6502 code - Both FCEU and nofrendo have very attractive cpu cores. Will have trouble deciding which to implement.
FCEU mapper implementation should probably be ported. Correct me if I'm wrong.
Tux NES needs better sound implementation. Perhaps there is something special we could do for Rockbox?
Old - Portable 6502 code by Marat (closed-src) - http://fms.komkon.org/EMUL8/M6502-010807.zip. FCEU mapper and cpu src will be very useful. Marat gives detailed information on both FDS and NES, need to find sound architecture/information, or pull code from FCEU.
: I have found a good comprehensive listing of most of the iNES mapper formats that are known at the FCE Ultra Documentation page: http://fceultra.sourceforge.net/docs.php
Another site of interest (and with lots of juicy information!) would have to be the NesDevWiki page
We may be able to garner a little information about the sound architecture/information by researching the NSF sound format, since NSF files are nothing more
than an NES ROM with all graphic/map/program data stripped away and only the audio engine and data left in and a small header added to the data.
NES Hardware Specifications
- CPU - Ricoh 2A03 CPU (NTSC) or 2A07 (PAL), both of which are the MOS 6502 without a decimal mode.
- Clock speed of 1.79 MHz for NTSC regions, and 1.66 MHz for PAL regions
- Memory - 2 KB located at $0000-$8000 on the CPU memory map
- Ricoh 2C02 PPU (Picture Processing Unit)
- Resolution - 256 x 240 pixels
- Colors - 48
- Palette - 5 grays
- Tiles - 8 x 8 pixels tiled background
- Sprites - Up to 64 8x8-pixel or 8x16 pixel sprites
- Sound - Implemented into the 2A03/2A07, with registers mapped to $4000-$4017.
- 2 Pulse wave channels
- 1 Triangle wave channel
- 1 Noise channel
- 1 DPCM channel*
FDS Emulation is too much work to implement. Emulation of FDS may be unattainable for a Rockbox target.
Game Genie support is also too much work. It would require a Game Genie ROM, plus a way to have the Game Genie start up to enter codes before
starting the game. Another solution MAY be looked at, but for now, it's rather pointless.
Since there would be absolutely no logical way to implement them on a DAP, certain special controllers like the Zapper and Power Pad will not be supported.
Relevant Emulation Resources
FCE Ultra pages - Sourceforge Project
Tux NES pages - Sourceforge Project
NES Architecture Documentation by Marat Fayzullin - http://fms.komkon.org/EMUL8/NES.html
Wikibook on NES assembly programming - http://en.wikibooks.org/wiki/NES_Programming
Zophar's Domain NES Technical category - http://www.zophar.net/tech/nes.html
Wikipedia entry - http://en.wikipedia.org/wiki/NES
Wikipedia entry on the MMC - http://en.wikipedia.org/wiki/Multi-Memory_Controller
Emulators on ARM based platforms - ArchOpen
which is a port of Little John's NES emulator for the GP32
Copyright © by the contributing authors.