Hi guys!
I am wondering what are the easiest mappers to program for ie when I figure that the mapper 0 features are not enough which mapper I must aim for? Mapper 3 maybe?
And there is any doc that tells how to interact with such mapper? I haven't find any tutorials about programming NES with a specific mapper in mind...
Thanks in advance!
It depends on which features are needed. Mapper #3 (CNROM) probably would be the easiest to program for, since it's simple CHR switching. The only thing to keep in mind this mapper are the bus conflicts, there's some example code in this thread:
http://nesdev.com/bbs/viewtopic.php?t=270
The larger PRG with others mappers means you need a way to assemble more than 32kB, and possibly a little bit of code to handle jumps between banks.
mapper #2 (UNROM) is pretty easy to use too, that's a good mapper when you want CHR-RAM and simple PRG banking. The same rule with bus conflicts applies to this mapper also.
Try the MMC3 mapper. It lets you use IRQs for things like split-screen scrolling. You also get easy initialization and bank switching.
Okay, thanks for the replies. If you don't mind, I have another question, just to clarify things.
In normal circumstances (not needing any fancy hardware to do some fancy thing) the two reasons to use a mapper are the need of more PRG space or the need of more CHR space.
Am I correct, or there is another thing to take into account?
Thanks again!
Previous reply is mine
I forgot to login before posting, sorry
Getting more memory is the main thing.
Other advantages of various mappers:
1. flexible memory mapping, so you can have multiple pages that are switched independantly. That's especially good for chr-rom.
2. IRQ support, on MMC3 or other advanced mappers. most can count scanlines, some can count CPU cycles.
3. selectable nametable mirroring. normally you'd select either H or V permanently.
But yeah, there's even more features than that, probably mostly the more specialized stuff (hardware multiplier, SRAM/NVRAM expansions, etc.).