首先,整理一下并搞懂Mapper、chip(mmc芯片)和PCB之间的关系。

Mapper是FC主机用于管理和读取卡带上数据的机制,这样的机制通过一种硬件来实现,就是chip(我一直说的mapper芯片),它规定了诸如bank大小,窗口个数,切换的寻址等等。硬件是被软件操作的,在游戏的运行时,游戏中的代码会向chip中的寄存器发送指令,来完成bank的切换。

PCB是将chip和rom以及其他必要的回路联合在一起的电路板,因此卡带的架构决定了PCB的布局。

通常卡带的架构为PRG ROM+CHR ROM+chip的形式;
如果是文字卡可能用到电池记忆功能,那么就会变成PRG ROM+CHR ROM+WRAM+chip的形式;
也有的卡带没有其图形数据是存储在PRG里的,其布局又变成PRG ROM+CHR RAM+chip的形式。

任天堂自己的MMC无论从mapper、chip到PCB都很规范,mapper和chip都是一一对应的关系,同时每一种mapper按照上述卡带布局不同会对应多个PCB。

在chip的设计上,任天堂在FC时代给了日本本土的第三方厂商较大的自由度,各厂商可以自行设计chip,来满足自身所开发的游戏的需要。有时候某些厂商把chip设计的功能非常强大(复杂?),在这样的芯片上管理和读取卡带上数据的机制可能并不止一种,造成了一个芯片对应多个mapper和多种PCB的情况。

典型的厂商就是Konami,其VRC2有a/b/c三种对应mapper22/23/25,VRC4则有a/b/c/d四种分别对应mapper21/25。而mapper的区别实际就是chip某几个针脚变换一下。这样就给改造过程增加了一些难度。

之前我已经改造了一盘MMC1的卡带,是SLROM。而这次我想改造的是MMC1的SNROM卡带,SNROM没有CHR ROM,所以只需要拆换PRG ROM,工作会简单很多。但是我还想在这些基础上更进一步,做出一个合卡,并且利用FC主机的reset来进行切换,就像小时候玩的老四强合卡一样。

下面开始,实现展示下这次的牺牲品,勇者斗恶龙III。

doner_cart

image

MMC1支持最大512KB的PRG和128KB的CHR。

拆开卡带,看到PCB本体,只需要替换右下角的PRG ROM就可以了。

image

我们只要对PRG动手,拆焊芯片和飞线的工作变得简单了很多。PRG的pin定义和飞线线序和SLROM是一致的。SNROM的PRG最大支持256KB(还有一种HVC-SUROM和SNROM基本一致,区别就是支持512KB,仅仅在PRG的2pin的定义不同)。

在这里我们用一片512KB的flash芯片,计划烧录两个256KB容量的游戏,分别是:

  • Destiny of an Emperor (吞食天地1美版)
  • Faxanadu (沙那多)

image

按照上图所示的,这次只需要把flash芯片的A18单独拿出来控制,接到74HC393AP芯片的Q0脚。

做好的效果如下:

image

image

image

请注意看二极管的极性,和做SLROM合卡时是反过来的。这是因为SNROM的M2信号在开机时是2.8v,而在reset按钮被按下是电压却变成了5v而不是0v,所以把二极管发过来接计数器才可以正常计数。并且在用kazzo进行烧录时也不会报错了,可以用kazzo的reset正常切换存储空间进行分别烧录,不用在使用拨码开关了。

这次,我用双面胶把74芯片粘在了卡带PCB背面,走线变得简洁了很多。上机测试一切正常。

screenshot

最后贴上做好的贴纸。

sticker

以下是改造手册,用UltraEdit打开可以全屏不用翻页。

MMC1 - SNROM - MultiCart.txt

卡带的图片贴纸文件:

https://github.com/maximaas/Famicom-DIY/tree/master/sticker/multicart

- End -