It is currently Wed Mar 29, 2017 3:54 pm

All times are UTC - 7 hours





Post new topic Reply to topic  [ 9 posts ] 
Author Message
 Post subject: Mappers by frequency
PostPosted: Thu Mar 09, 2017 11:17 pm 
Offline
User avatar

Joined: Tue Mar 07, 2017 4:25 pm
Posts: 28
Location: Ohio, USA
For deciding which mappers to support in my emulator, I wrote a simple script to examine the TuxNES mapper list and arrange mapper numbers by number of games in which they appear. Dunno if it will be of any use to anyone, but here were the results:

Code:
Mapper   1: 448
Mapper   4: 437
Mapper   2: 203
Mapper   0: 149
Mapper   3: 122
Mapper   7:  43
Mapper  16:  18
Mapper  19:  16
Mapper  11:  15
Mapper  71:  12
Mapper   5:  11
Mapper  18:   9
Mapper  17:   8
Mapper  79:   7
Mapper  66:   7
Mapper   6:   7
Mapper  69:   6
Mapper  34:   6
Mapper  33:   6
Mapper  23:   5
Mapper 119:   4
Mapper  82:   4
Mapper  32:   4
Mapper  99:   3
Mapper  68:   3
Mapper  15:   3
Mapper   9:   3
Mapper 225:   2
Mapper  90:   2
Mapper  70:   2
Mapper  65:   2
Mapper  64:   2
Mapper  25:   2
Mapper  21:   2
Mapper  10:   2
Mapper   8:   2
Mapper 228:   1
Mapper 227:   1
Mapper  97:   1
Mapper  95:   1
Mapper  91:   1
Mapper  88:   1
Mapper  85:   1
Mapper  83:   1
Mapper  80:   1
Mapper  78:   1
Mapper  48:   1
Mapper  26:   1
Mapper  24:   1
Mapper  22:   1


Top
 Profile  
 
 Post subject: Re: Mappers by frequency
PostPosted: Thu Mar 09, 2017 11:21 pm 
Offline
User avatar

Joined: Tue Mar 07, 2017 4:25 pm
Posts: 28
Location: Ohio, USA
And the python script if anyone is interested.
Run like:
python mapper.py nesmapper.txt

Code:
import sys, re

n = re.compile("\((\d+)\)")
m_freq = [[0, i] for i in xrange(256)]

f = open(sys.argv[1], "r")
lines = f.readlines()
f.close()

for line in lines:
    m = n.search(line)
    if m is None: continue
    mapper_num = m.group(1)
    num = int(mapper_num)
    m_freq[int(mapper_num)][0] += 1

m_freq = sorted(m_freq)
m_freq.reverse()

for m in m_freq:
    if m[0] == 0: continue
    print("Mapper {0}:{1}".format(str(m[1]).rjust(3), str(m[0]).rjust(3)))


Top
 Profile  
 
 Post subject: Re: Mappers by frequency
PostPosted: Thu Mar 09, 2017 11:26 pm 
Offline
User avatar

Joined: Sun Jan 22, 2012 12:03 pm
Posts: 4919
Location: Canada
Bootgod's database similarly has some stats on this.
http://bootgod.dyndns.org:7777/stats.php?page=6


Top
 Profile  
 
 Post subject: Re: Mappers by frequency
PostPosted: Sat Mar 11, 2017 9:09 am 
Offline
User avatar

Joined: Fri Nov 19, 2004 7:35 pm
Posts: 3795
I notice the absence of mappers like Mapper 185, which is basically NROM with simple protection (select the correct CHR bank).

_________________
Here come the fortune cookies! Here come the fortune cookies! They're wearing paper hats!


Top
 Profile  
 
 Post subject: Re: Mappers by frequency
PostPosted: Sat Mar 11, 2017 10:00 am 
Online

Joined: Sun Sep 19, 2004 11:12 pm
Posts: 18002
Location: NE Indiana, USA (NTSC)
Bird Week is CNROM (185) but listed as CNROM (3) in the TuxNES list. Perhaps the dump that works with TuxNES is an overdump that would have been created by reading the "wrong" banks.


Top
 Profile  
 
 Post subject: Re: Mappers by frequency
PostPosted: Sat Mar 11, 2017 10:23 am 
Offline
User avatar

Joined: Sat Feb 12, 2005 9:43 pm
Posts: 9426
Location: Rio de Janeiro - Brazil
It always surprises me that there are more MMC1 games than MMC3 ones, seeing as the MMC1 is barely more capable than simple discrete mappers. I mean, the appeal of the MMC3 over everything that came before was obvious, but the MMC1 wasn't particularly advanced compared to the discrete mappers that came before it, and it also had that annoying serial interface. I guess it was the support for WRAM (and possibly the switchable mirroring) that made it desirable.


Top
 Profile  
 
 Post subject: Re: Mappers by frequency
PostPosted: Sat Mar 11, 2017 11:06 am 
Online

Joined: Sun Sep 19, 2004 11:12 pm
Posts: 18002
Location: NE Indiana, USA (NTSC)
You're right that one advantage of SGROM (MMC1, 8K CHR RAM, no WRAM) over UOROM is switchable nametable mirroring. Another is the option of using different PRG ROM mapping modes (32K, UNROM 2, UNROM 180) in a single program, but I'm not sure how often that was used. Who has trace logs of $8000 writes from MMC1 games to show what PRG mapping mode each used or how often each switched mirroring?

MMC1 boards also exceeded UOROM's 2 Mbit limit, with SLROM/SKROM offering 2 Mbit PRG ROM and 1 Mbit CHR ROM, and SUROM offering 4 Mbit PRG ROM. In addition, SLROM/SKROM games could use separate CHR ROM banks for the status bar and playfield.

I don't know how much Nintendo charged for each mapper. Being one IC to place as opposed to two, MMC1 may eventually have proven cheaper than UNROM/UOROM at some point. Case in point: Pro Wrestling is the only* first-party NES-UNROM game. But cost is probably why UOROM was never extended to 4 Mbit, as in the homebrew "UNROM 512" board, because an additional 7432 to generate A18 for the fixed bank would have raised the IC count to three, further inflating the assembly cost.


* Excluding a Japan-only port of Enix's Rayieza and Nintendo's role as publisher in Europe for Compile's The Guardian Legend, which Broderbund published in North America.


Top
 Profile  
 
 Post subject: Re: Mappers by frequency
PostPosted: Sat Mar 11, 2017 8:02 pm 
Offline
User avatar

Joined: Sat Jul 12, 2014 3:04 pm
Posts: 693
also wrong:
Quote:
Mapper 48: 1


Top
 Profile  
 
 Post subject: Re: Mappers by frequency
PostPosted: Mon Mar 13, 2017 12:08 am 
Offline
User avatar

Joined: Fri Nov 12, 2004 2:49 pm
Posts: 6959
Location: Jongny, VD, Switzerland
Quote:
It always surprises me that there are more MMC1 games than MMC3 ones, seeing as the MMC1 is barely more capable than simple discrete mappers.

I agree. However you have to consider all games that wanted to have saves and battery backup between 1986 and 1989 had to use MMC1 (at least in the west) - including many ports of FDS games which used disk saves. Also it was the only way to have switchable mirroring (again something the FDS had). You'll notice that discrete mappers combined together are still more common than MMC1.

tepples wrote:
Another is the option of using different PRG ROM mapping modes (32K, UNROM 2, UNROM 180) in a single program, but I'm not sure how often that was used. Who has trace logs of $8000 writes from MMC1 games to show what PRG mapping mode each used or how often each switched mirroring?

I wonder this aswell. I could be wrong, but my educated guess is: aprox. 90% of games uses UNROM-style PRG switching, 10% of games uses 32k banks, and a negligible amount switch between modes or uses the Crazy Climber style switching. I'm still very interested about the issue though, it would be great to gather data statistic on that as well (not just mappers, but how they're used).
Quote:
In addition, SLROM/SKROM games could use separate CHR ROM banks for the status bar and playfield.
So can CNROM and GNROM games, Gradius for instance.
Quote:
I don't know how much Nintendo charged for each mapper. Being one IC to place as opposed to two, MMC1 may eventually have proven cheaper than UNROM/UOROM at some point.
Definitely. If you wanted 256kb PRG-ROM and CHR-RAM my guess is that MMC1 was used by default, UOROM was only used in a couple of particular cases.


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 9 posts ] 

All times are UTC - 7 hours


Who is online

Users browsing this forum: AWJ, Bing [Bot] and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group