Between mmc1 and mmc3, which one is more convenient for manufacturing an actual cartridge?

Discuss technical or other issues relating to programming the Nintendo Entertainment System, Famicom, or compatible systems. See the NESdev wiki for more information.

Moderator: Moderators

Post Reply
User avatar
DarkKodKod
Posts: 18
Joined: Wed Sep 19, 2018 8:21 am
Location: Germany
Contact:

Between mmc1 and mmc3, which one is more convenient for manufacturing an actual cartridge?

Post by DarkKodKod »

Hi all,

I made already a NROM game as my very first game. I had a blast and I learned a lot. The game is going to be released physically if everything goes well by the end of this year.

I want to go to the next level and do something more complex with a mapper. With the NROM I liked that I had limited space to do as much as possible with so little, so I am not afraid of the limits of some mappers.

My question is about, which of the mappers is more convenient for manufacturing the actual cartridge, like price and availability. I would not like to, for example if I finish a game with mmc1 and then not be able to find hardware to release it and realize that I should have used mmc3 because nobody is making mmc1 hardware now a days.
tepples
Posts: 22708
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: Between mmc1 and mmc3, which one is more convenient for manufacturing an actual cartridge?

Post by tepples »

What mapper features does your project need? PRG RAM? Battery? Animation of many tiles in a scene (like the spinning coins and ? blocks of Super Mario Bros. 3)? Sprite animation rapidly switching among many cels (like the player characters in Monster in My Pocket)? Switchable nametable mirroring? Timer for split-screen scrolling?

Because of MMC1's inconvenient serial interface, I tend to recommend against MMC1 for new development unless you are specifically targeting emulators that are not receiving updates for new mappers (such as the NES emulator in Animal Crossing or some mobile emulators). It should prove easier to use either UNROM/UOROM or the Action 53 board depending on what you need it to do, such as 1-screen mirroring. Though MMC3 is larger and thus has historically been more expensive, its unique selling points (fine-grained CHR bank switching and scanline timer) make certain things practical that are far less practical on discrete mappers or MMC1.

In any case, during this chip shortage, the cheapest mappers are the discrete ones: BNROM, UNROM (and one common extension), and GTROM.
User avatar
DarkKodKod
Posts: 18
Joined: Wed Sep 19, 2018 8:21 am
Location: Germany
Contact:

Re: Between mmc1 and mmc3, which one is more convenient for manufacturing an actual cartridge?

Post by DarkKodKod »

tepples wrote: Sat Sep 10, 2022 2:27 pm What mapper features does your project need? PRG RAM? Battery? Animation of many tiles in a scene (like the spinning coins and ? blocks of Super Mario Bros. 3)? Sprite animation rapidly switching among many cels (like the player characters in Monster in My Pocket)? Switchable nametable mirroring? Timer for split-screen scrolling?
I am just thinking right now in switchable nametable mirroring. Like Bionic Commando. I kind of want to make New Rally-x for the NES to see if I am able to do such game. I know there is an unofficial Rally-x for the NES already but I just want to try to reproduce it.

I suck at making new game ideas out of thin air, so I'm better off porting an existing game. And New Rally-x it is just to try to replicate the functionality. I'm not planning to sell it btw.
User avatar
rainwarrior
Posts: 8734
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: Between mmc1 and mmc3, which one is more convenient for manufacturing an actual cartridge?

Post by rainwarrior »

If you want to be able to build a cart with off-the-shelf parts (aside from the PCB), normally that means what we call a Discrete Logic Mapper on the Wiki, because they're generally made with a collection of common logic parts. Tepples mentioned some of the common good ones, but I'll give my own short list: NROM, UxROM, AxROM, BxROM, GTROM, Color Dreams.

I find UxROM and BxROM particularly good to use, and also because in modern times 32k of CHR-RAM is generally the same cost as 8k CHR-RAM, you can basically get 4-screen nametables "for free". Most discrete mappers lack a mirroring switch (AxROM has single-screen), but 4-screen might be a good or better alternative, depending on what you need.


MMC1 and MMC3 have both been recently duplicated in CPLD form by a few homebrew/repro manufacturers, but they cost more and there have been droughts of availability. MMC1 is particularly cranky to work with, from a coding perspective. Even MMC3 is a bit irritating... but both of them are very well supported by emulators, which is a nice advantage.

If you do decide to go with a more complicated mapper that requires a CPLD, I'd suggest either MMC3 or MMC5, but take a subset of the features if you can. If you don't need something, don't use it, and you might have an easier time fitting the subset mapper into a cheaper/more-available CPLD.

MMC5 in particular has a lot nicer interface than MMC3, especially being able to do banking with a single write to a specific address, rather than having to write a separate selection register first each time. Just keep the number of features you need down. Don't use IRQ if you don't need it. Use only one banking mode, and the CPLD won't need to implement all the others. Don't use vertical split, extended graphics, etc. and take only what you need.
User avatar
DarkKodKod
Posts: 18
Joined: Wed Sep 19, 2018 8:21 am
Location: Germany
Contact:

Re: Between mmc1 and mmc3, which one is more convenient for manufacturing an actual cartridge?

Post by DarkKodKod »

Got it.

Thank you so much for your answers.

I don't have a game idea yet, nor what features I would like to use but I wanted to have this clear before starting something new. Like I will invest X amount of hours learning and using a mapper that I cannot use in the future is not so funny. I don't have the time I want when it comes to making any project alongside with my current job.
User avatar
Dwedit
Posts: 4924
Joined: Fri Nov 19, 2004 7:35 pm
Contact:

Re: Between mmc1 and mmc3, which one is more convenient for manufacturing an actual cartridge?

Post by Dwedit »

Simplest mappers are CNROM (mapper 3), BNROM (mapper 34), GNROM (mapper 66), AxROM (mapper 7). They only need the latch chip and nothing else. (Besides the CIC. You still need that.)

UxROM (mapper 2) also needs a NAND chip to make the fixed bank happen.

Note that higher mapper number does not indicate more complicated, it's just an arbitrary number from when they were documented. GNROM (66) was actually the first mapper to ship in the US.


I don't know if anyone has combined the functions of GNROM and AxROM together to have 32K PRG switching, 8K CHR switching, and Nametable switching.
Here come the fortune cookies! Here come the fortune cookies! They're wearing paper hats!
lidnariq
Posts: 11432
Joined: Sun Apr 13, 2008 11:12 am

Re: Between mmc1 and mmc3, which one is more convenient for manufacturing an actual cartridge?

Post by lidnariq »

A bunch of the multicart mappers could be repurposed as "GNROM with H/V mirroring switch", such as mapper 261.
calima
Posts: 1745
Joined: Tue Oct 06, 2015 10:16 am

Re: Between mmc1 and mmc3, which one is more convenient for manufacturing an actual cartridge?

Post by calima »

MMC3 is far nicer to program than MMC1, pricewise they're quite close. I don't have any info on if the chip shortage affects one more than the other, but I would assume they're similar on that front.
User avatar
Dwedit
Posts: 4924
Joined: Fri Nov 19, 2004 7:35 pm
Contact:

Re: Between mmc1 and mmc3, which one is more convenient for manufacturing an actual cartridge?

Post by Dwedit »

Just giving the PPU 16K of RAM provides this:
8K of CHR-RAM
4K of Nametable Memory (four screens)
3.75K of PPU scratch memory, only readable or writable during vblank or forced blanking time (does this actually work?)
256 bytes of inaccessible memory because it overlaps the palette

Giving the PPU 32K of RAM, and using one bankswitch bit provides the ability to instantly switch to a second set of CHR RAM and four-screen nametables.
Here come the fortune cookies! Here come the fortune cookies! They're wearing paper hats!
lidnariq
Posts: 11432
Joined: Sun Apr 13, 2008 11:12 am

Re: Between mmc1 and mmc3, which one is more convenient for manufacturing an actual cartridge?

Post by lidnariq »

I mean, that's GTROM for you.

The PPU-concealed scratch memory does work, but not in FCEUX, where $3000-$3FFF is forced by the architecture to be a mirror of $2000-$2FFF.
User avatar
aquasnake
Posts: 515
Joined: Fri Sep 13, 2019 11:22 pm

Re: Between mmc1 and mmc3, which one is more convenient for manufacturing an actual cartridge?

Post by aquasnake »

Dwedit wrote: Sat Sep 10, 2022 8:31 pm Simplest mappers are CNROM (mapper 3), BNROM (mapper 34), GNROM (mapper 66), AxROM (mapper 7). They only need the latch chip and nothing else. (Besides the CIC. You still need that.)

UxROM (mapper 2) also needs a NAND chip to make the fixed bank happen.

Note that higher mapper number does not indicate more complicated, it's just an arbitrary number from when they were documented. GNROM (66) was actually the first mapper to ship in the US.


I don't know if anyone has combined the functions of GNROM and AxROM together to have 32K PRG switching, 8K CHR switching, and Nametable switching.
yes, mapper #299 was found

should be the superset of GxROM.

the more complecated mapper could be #57, #58, #59, #62, #225, #228, #174 ...
Last edited by aquasnake on Mon Sep 12, 2022 9:58 pm, edited 1 time in total.
User avatar
aquasnake
Posts: 515
Joined: Fri Sep 13, 2019 11:22 pm

Re: Between mmc1 and mmc3, which one is more convenient for manufacturing an actual cartridge?

Post by aquasnake »

Dwedit wrote: Sat Sep 10, 2022 11:24 pm Just giving the PPU 16K of RAM provides this:
8K of CHR-RAM
4K of Nametable Memory (four screens)
3.75K of PPU scratch memory, only readable or writable during vblank or forced blanking time (does this actually work?)
256 bytes of inaccessible memory because it overlaps the palette

Giving the PPU 32K of RAM, and using one bankswitch bit provides the ability to instantly switch to a second set of CHR RAM and four-screen nametables.
8K of CHR-RAM - necessary
4K of Nametable Memory (four screens) - barely used
3.75K of PPU scratch memory, only readable or writable during vblank or forced blanking time (does this actually work?) - nothing used but theoretically possible
256 bytes of inaccessible memory because it overlaps the palette - how can u disable the internal palette vram space?
Post Reply