Which mapper layout do you find most useful?

Discuss technical or other issues relating to programming the Nintendo Entertainment System, Famicom, or compatible systems.

Moderator: Moderators

Oziphantom
Posts: 913
Joined: Tue Feb 07, 2017 2:03 am

Which mapper layout do you find most useful?

Post by Oziphantom » Mon Aug 03, 2020 7:19 am

Basically as the subject says. However I'm only interested in the way it maps the banks rather than "it adds a IRQ timer, 4 audio channels and a battery". Or if it doesn't exist what would you like?

User avatar
tokumaru
Posts: 11858
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Re: Which mapper layout do you find most useful?

Post by tokumaru » Mon Aug 03, 2020 8:58 am

It depends on the project. I like to keep things simple and stick with discrete logic mappers unless I absolutely need a feature that none of them have.

Versatile memory banking is cool and all, but with careful planning you can usually find a way to make any kind of game work even with the simplest memory layouts. Even the monolithic 32KB banks that a lot of people dread can be used without much stress if you just simulate a small fixed bank at the end of each one.

So yeah, a single switchable 32KB slot or one switchable 16KB slot + one hardwired 16KB slot, plus 8KB of CHR-RAM, is normally enough for me. If I absolutely need IRQs or finer CHR switching, I normally go with the MMC3 due to its abundance.

calima
Posts: 1186
Joined: Tue Oct 06, 2015 10:16 am

Re: Which mapper layout do you find most useful?

Post by calima » Mon Aug 03, 2020 10:10 am

On MMC3 projects I usually pick 24 fixed + 8 switch or 16 fixed + 8 switch + 8 switch.

User avatar
tokumaru
Posts: 11858
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Re: Which mapper layout do you find most useful?

Post by tokumaru » Mon Aug 03, 2020 11:13 am

When using 32KB banks, the most annoying part is reading large amounts of data from different banks. My solution for avoiding too much back and forth and/or data copying is to include copies of the subroutines that use a specific type of data in all banks that include data of that type.

For example, a bank containing meta-sprite definitions would also contain the subroutine that renders meta-sprites for an object and generates the final OAM entries, allowing objects to complete this task with a single round trip to that bank. As long as these subroutines aren't particularly large, the impact on the overall size of the ROM isn't so significant.

On MMC3 I like to use one of the switchable 8KB banks for code and the other for data.

User avatar
Controllerhead
Posts: 148
Joined: Tue Nov 13, 2018 4:58 am
Location: $4016
Contact:

Re: Which mapper layout do you find most useful?

Post by Controllerhead » Mon Aug 03, 2020 11:23 am

I don't have alot of experience, but, MMC3 seems like a clear winner as far as feature set and compatibility.

I assume most every clone console and hacked together emulator can run Super Mario Bros 3 without many issues.
Image

Pokun
Posts: 1511
Joined: Tue May 28, 2013 5:49 am
Location: Hokkaido, Japan

Re: Which mapper layout do you find most useful?

Post by Pokun » Mon Aug 03, 2020 12:42 pm

I've only really worked with the discrete mappers, MMC1 and FDS, and together with MMC3 they are probably the most useful ones.
I also like to have a fixed bank somewhere in $C000, a swappable bank and possibly CHR-RAM in the way UNROM and SNROM offers it.

MMC1 and MMC3 are great, but they are custom ASICs and there are no donor-less 60-pin alternatives for them as far as I know. Newly released games like Astro Ninja Man seems to use MMC clones.
If I need battery-backed SRAM I go with MMC1, since I don't know any 60-pin alternative for SRAM with discrete mappers anyway, and about any emulator and flashcart supports MMC1 with SRAM.

It would be fun to try an expansion audio mapper (other than FDS) some time. VRC6, Sunsoft 5B and possibly VRC7 are all interesting.

User avatar
Bregalad
Posts: 7951
Joined: Fri Nov 12, 2004 2:49 pm
Location: Chexbres, VD, Switzerland

Re: Which mapper layout do you find most useful?

Post by Bregalad » Mon Aug 03, 2020 1:13 pm

tokumaru wrote:
Mon Aug 03, 2020 11:13 am
When using 32KB banks, the most annoying part is reading large amounts of data from different banks. My solution for avoiding too much back and forth and/or data copying is to include copies of the subroutines that use a specific type of data in all banks that include data of that type.
My $2 : Another advantage of 32kb PRG-ROM switching is that the probability that everything first in a single bank is much higher than with finer switching. For example, you could have a game with all levels compressed in a 32 kb bank, all music, effects, the sound engine in a 32kb bank, etc...
With 16kb banks you'd need some more complex code to handle the same amount of data.

User avatar
tokumaru
Posts: 11858
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Re: Which mapper layout do you find most useful?

Post by tokumaru » Mon Aug 03, 2020 1:39 pm

Bregalad wrote:
Mon Aug 03, 2020 1:13 pm
Another advantage of 32kb PRG-ROM switching is that the probability that everything first in a single bank is much higher than with finer switching.
True! I think some things have higher chances of needing more than one bank, such as levels and graphics, but a lot of things could indeed fit in a single bank. And you can also fit small things, such as palettes, in the little boys of left over space.
With 16kb banks you'd need some more complex code to handle the same amount of data.
Yeah, I personally feel more comfortable with 32KB banks than 16KB ones.

User avatar
tokumaru
Posts: 11858
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Re: Which mapper layout do you find most useful?

Post by tokumaru » Mon Aug 03, 2020 1:49 pm

The only popular mapper that I hate with a passion is the MMC1, because of its clunky 1-bit serial interface. Sure you can abstract it away using subroutines and/or macros, but the slowness of the mapper writes remains, and could add up to significant amounts depending on how much work you're doing at any given time.

User avatar
Dwedit
Posts: 4351
Joined: Fri Nov 19, 2004 7:35 pm
Contact:

Re: Which mapper layout do you find most useful?

Post by Dwedit » Mon Aug 03, 2020 2:24 pm

The point of MMC1 was to try to be low on pin count (24 pins), and be able to have cartridge WRAM, PRG and CHR bankswitching, mirroring switching, etc.

DxROM (28 pins) was a much better mapper than MMC1, as long as you didn't need the features that MMC1 provided that DxROM did not, such as cartridge WRAM, switchable mirroring, or 32K ROM bankswitching mode.
DxROM was also limited to cartridge sizes under 192K. Mapper 88 (same chip) did not have any such limit, as long as left pattern tables used first 64k, and right pattern tables used last 64k.

If Chip & Dale Rescue Rangers was designed to use the same mapper as Dragon Spirit (J) instead of MMC1, it could have had 14 more 2k graphics banks devoted to sprites, that could have been 14 more varieties of enemies.

But Nintendo didn't make the chips for DxROM, so it wasn't really an option for most developers.

MMC3 was a whopping 44 pins.
Last edited by Dwedit on Mon Aug 03, 2020 2:45 pm, edited 1 time in total.
Here come the fortune cookies! Here come the fortune cookies! They're wearing paper hats!

lidnariq
Posts: 9659
Joined: Sun Apr 13, 2008 11:12 am
Location: Seattle

Re: Which mapper layout do you find most useful?

Post by lidnariq » Mon Aug 03, 2020 2:42 pm

I suppose another way of phrasing what Bregalad said: Larger banks make it easier to build a game out of 32KB submodules. Smaller banks make it easier to just abstract everything as "far" pointers with multiple simultaneous access windows.

A game that want lots of DPCM requires a design that provides a switchable bank above $C000, which basically means an ASIC mapper.

For a design without precedent but fitting into the existing map, perhaps 32+4+8F would be reasonable. Or 7.9F+32+4+4F.

It's easy to come up with an explanation for 4 switchable banks: code, source data, transforming data, DPCM.

The TG16's 8 banks of 8KB each seems like overkill, as does the Genesis mapper's 8 banks of 512KB each.

User avatar
dougeff
Posts: 2735
Joined: Fri May 08, 2015 7:17 pm
Location: DIGDUG
Contact:

Re: Which mapper layout do you find most useful?

Post by dougeff » Mon Aug 03, 2020 2:48 pm

No one has mentioned UNROM 512, the NESmaker mapper, or GT-ROM.

Both 512k PRG ROM. Both with CHR RAM.

If you don't need a scanline counter, but you do need lots of ROM space, these are good choices.

The upcoming Rainbow mapper is interesting too, with VRC6 audio. 32KB of WRAM. Scanline IRQ. Wifi connection. 512k PRG ROM. CHR RAM.

That's the future, right there.
nesdoug.com -- blog/tutorial on programming for the NES

User avatar
Dwedit
Posts: 4351
Joined: Fri Nov 19, 2004 7:35 pm
Contact:

Re: Which mapper layout do you find most useful?

Post by Dwedit » Mon Aug 03, 2020 8:34 pm

I still like the idea of automatic CHR bank selection driven by which tile it is fetching. It would switch for the Top Left tile, Top Right tile, Bottom Left tile, and Bottom Right tile. Basically expand your pattern table to 1024 tiles, only needs 16K of CHR-RAM.

Then you can combine that with switching to another 8K of CHR-RAM when sprites are being displayed.
Here come the fortune cookies! Here come the fortune cookies! They're wearing paper hats!

calima
Posts: 1186
Joined: Tue Oct 06, 2015 10:16 am

Re: Which mapper layout do you find most useful?

Post by calima » Tue Aug 04, 2020 12:20 am

Pokun wrote:
Mon Aug 03, 2020 12:42 pm
MMC1 and MMC3 are great, but they are custom ASICs and there are no donor-less 60-pin alternatives for them as far as I know.
I'm sure Retrostage would sell you Famicom boards with his chips as long as you order a reasonable MOQ to cover his costs (e.g. a few hundred boards).

Pokun
Posts: 1511
Joined: Tue May 28, 2013 5:49 am
Location: Hokkaido, Japan

Re: Which mapper layout do you find most useful?

Post by Pokun » Tue Aug 04, 2020 7:51 am

That might work if you are selling homebrew, but not very attractive for prototyping.

Muramasa Entertainment finally has 60-pin boards and nice looking MMC5-style cases in many colours, which I plan to try out in a near future. But those are still only discrete mappers and none with batteries or RAM. His NES boards also uses NIB MMC clones for now.


That Rainbow mapper seems interesting (though a 60-pin version would really be needed), especially since it has VRC6, scanline counters, large memory and such features. It does sound a bit expensive if you don't need all those features for a title though (like wifi), unless they are optional.

Post Reply