Re: The different mappers
Posted: Thu Aug 13, 2015 6:07 pm
(You meant 1-screen, not 4-screen)
For me it's the serial interface that kills it.rainwarrior wrote:MMC1 isn't the most straightforward to use
The CHR banking is not particularly useful though, since the smallest bank size is 4KB. You can mix and match background tile sets and sprite sets, but doing animations (one of the biggest advantages of CHR-ROM) would result in a monumental amount of repeated tiles. CHR-RAM is way more versatile than this.MMC1 - PRG banking, CHR banking, PRG RAM, H/V software controlled mirroring.
Every mapper can do 4-screen mirroring, you just have to put the memory in the cartridge and bypass the mapper mirroring. Also, if the MMC3 is connected differently, you can halve the amount of accessible CHR-ROM (to the same 128KB of the MMC1) and have complete control over mirroring (horizontal, vertical, diagonal, 1-screen...).FrankWDoom wrote:MMC1 also does 4 screen mirroring, which MMC3 doesn't.
This is sort of true. The iNES format lets you specify 4-screen mirroring in the header, which should in theory allow 4-screen mirroring with most mappers. In practice, though I think emulator support for that is a bit spotty (mostly because very few games used it). YMMV; depends where you want your game to be run.tokumaru wrote:Every mapper can do 4-screen mirroring
I did mean 1 screen, thankslidnariq wrote:(You meant 1-screen, not 4-screen)
OK, but the MMC3 can also do 1-screen mirroring if you wire it as in mapper 118.FrankWDoom wrote:I did mean 1 screen, thanks
Yeah, but you're asking to implement a whole new mapper just to save like 10 lines of uncomplicated code? Sure, the serial interface is an unpleasant compromise with the hardware makers of the time, but it does the job just fine in hundreds of games, and it's already supported by every NES emulator.MottZilla wrote:you could make a MMC-1 variant that actually eliminates the serial interface so that only 1 write is needed per register
Another possibility in this case is if the compressed data is in CHR ROM but the lookup table is in PRG ROM; however this has its own disadvantages such as cannot be used during rendering, and cannot be used as easily if it doesn't do both PRG and CHR bankswitching. However, it has the advantages that it can be used even if the mapper does not bank multiple PRG ROM banks in at once, and that address increment is automatically done for you. This seems simple enough with MMC1 (hopefully). But it might not be what you require.tepples wrote:If decompressing data in one bank relies on a lookup table in another bank, that's a lot more practical in UNROM than in MMC1 unless you can A. somehow fit a copy of the lookup table in RAM, or B. store the half-decompressed data in RAM, switch, and make a second pass over that data. An example is an e-book reader where the list of unique words is in one bank and the actual text is stored as word numbers in another.