Konami在FC时代就已经如日中天,优秀作品层出不穷,更厉害的是各种类型都很擅长,也因此留下了众多的传世神作。但是在当年盗版黄卡横行的而正版难得一见的情形下除了经典的老四强之外,很多经典的Konami我们都没机会玩到。

原因就是Konami在其卡带上使用了自己研发的VRC系列芯片来提升游戏的画面和音效。比如,日版的魂斗罗是有剧情过场和关卡进度画面的,并且第一关的背景树叶会动,第六关会下雪等等。由于任天堂当时的政策,美版NES游戏都是任天堂的公版卡带设计,只能使用任天堂官方的MMC芯片,所以很多使用了特殊芯片的大作要么没有美版要么就在效果上做了阉割。当年老四强黄卡里采用的都是美版,就是因为日版的VRC芯片无法仿制,而美版UNROM则用的都是通用芯片没有盗版的难度,这也就是为什么玩黄卡长大的孩子们从来没见过树叶会动的魂斗罗的原因。

日版魂斗罗是Mapper23,基于VRC-2芯片。不过网上早就有了被hack成了mmc3的日版英化版,保留了所有vrc2下的特效(参考这个链接:https://www.romhacking.net/translations/1551/)。

这次我要制作的是同样是Mapper23和VRC2芯片的柯拉米世界1,以及Mapper21和VRC4芯片的柯拉米世界2。

image

Konami的卡带有大卡和小卡两种封装,上面这两个游戏都是密码记录进度,所以都是小卡。但是二手市场上和这两个游戏同样芯片的小卡封装要么很少要么很贵,综合下来最合适的就是下面这两张大卡封装的五右卫门外传1和2。。

image

Konami的大卡封装非常奇葩,一共有5个卡扣,顶部有一个,侧面上下分别有两组,如下所示:

image

这就给拆卸带来了很大难度,特别是靠上方的一组卡扣,用通常的螺丝刀撬的办法基本是百分百会断。于是我开始琢磨无损拆解的方法,然后就在youtube上找到了下面这个视频:

open_cart

在x宝里搜索“木工夹”,按照视频里的式样选一个类似的。

image

image

有了这个工具,按照视频里的方法,夹住卡带上盖靠近卡扣的位置,稍稍用力挤压使外壳弯曲,再用螺丝刀轻轻一撬,卡扣就松脱了。这样就能确保5个卡扣的无损拆解。

VRC2和VRC4几乎是完全一样的芯片,区别只是VRC4比VRC2多了一个中断。所以NESdev的wiki中把这两个芯片综合在一个页面里(http://wiki.nesdev.com/w/index.php/VRC2_and_VRC4)。

Game Variant iNES mapper
Ganbare Pennant Race VRC2a 22
TwinBee 3 VRC2a 22
Wai Wai World VRC2b 23
Ganbare Goemon Gaiden VRC2c 25
Wai Wai World 2 VRC4a 21
Bio Miracle Bokutte Upa VRC4b 25
Gradius 2 (J) VRC4b 25
Ganbare Goemon Gaiden 2 VRC4c 21
Teenage Mutant Ninja Turtles (J) VRC4d 25
Boku Dracula-kun VRC4e 23
Tiny Toon Adventures (J) VRC4e 23

如上面表格中列出的,一个芯片会对应一个以上的mapper编号,无论VRC2还是VRC4只要变换一下针脚的接法就成了另一种mapper。所以,接下来的改造过程中不仅需要处理flash芯片,还需要对VRC芯片做跳线。

改造过程还有如下文章可以参考:
http://unagi.sourceforge.jp/cgi-bin/hiki/hiki.cgi?VRC4
http://bakutendo.blog87.fc2.com/blog-entry-198.html
http://blog.naver.com/PostView.nhn?blogId=xsnake&logNo=220266981002&beginTime=0&jumpingVid=&from=search&redirect=Log&widgetTypeCall=true

改造VRC2

image

image

因为一开始精力放在如何拆卡带上,借助前述的工具成功拆开之后一兴奋居然忘了拍原版卡带的PCB照片了。上图是已经改好了的样子。

Konami的卡带有两个优点使得改造变得比其他卡带容易很多。

  • 一是,所有的芯片针脚焊盘都是单面的,从上面的图可以看得很明显。给MASK ROM拆焊的时候,双面焊盘上焊锡会在正反面流动,而单面焊盘则不会,所以可以把焊锡吸得很干净,所以拆焊之前不用先剪开针脚,过程简化很多,而且芯片是原封不动地被拆下来。

  • 二是,MASK ROM的针脚布局是标准的,不用跳很多线。

image

PRG只需要跳WE#和CE#,而CHR只需要跳WE#,两个芯片一共跳三根线就搞定,极其简单。

image

我们用来改造的五右卫门外传是VRC2c, mapper 25。而柯拉米世界是VRC2b, mapper 23。这两个区别只是vrc2芯片的3和4针的接法,按照上图的说明只需要把两根针脚互换一下即可。

image

得益于Konami卡带单面焊盘的优点,不用担心有芯片的一侧会短路,把针脚焊锡吸掉后针脚自然就悬空了,所以我们没必要破坏VRC芯片的针脚,直接在针脚上飞线就行了。按上图的接法焊好,再用万用表检查下如果没有短路,改造就完成了。

因为芯片针脚跳线变了,所以需要修改下烧录脚本,如下:

/*
VRC2B; R0=A0, R1=A1
じゃんン子チエ のみ d12 で dump すること。
vrc2b: Wai Wai World (TESTED)
*/
board <- {
	mappernum = 23,
	cpu_rom = {
		size_base = 2 * mega, size_max = 2 * mega,
		banksize = 0x2000
	},
	ppu_rom = {
		size_base = 2 * mega, size_max = 2 * mega,
		banksize = 0x2000 / 8
	},
	ppu_ramfind = false, vram_mirrorfind = false
};

dofile("vrc4.ai");

function cpu_dump(d, pagesize, banksize)
{
	vrc4_cpu_dump(d, pagesize, banksize, 0, 1);
}

function ppu_dump(d, pagesize, banksize)
{
	vrc4_ppu_dump(d, pagesize, banksize, 0, 1);
}

function program_initalize(d, cpu_banksize, ppu_banksize)
{
	vrc4_program_initialize(d, cpu_banksize, ppu_banksize, 0, 1)
}

function ppu_transfer(d, start, end, ppu_banksize)
{
	vrc4_ppu_transfer(d, start, end, ppu_banksize, 0, 1);
}

改造VRC4

image

image

如图中所示,中间的PC857J00P是PRG,下方靠右的RC857J00C是CHR。跳线方法和VRC2完全一致。

image

我们用来改造的五右卫门外传2是VRC4c, mapper 21。而柯拉米世界2是VRC4a, mapper 21。这又是Konami的奇葩之处,同一个mapper居然有两种接法。原本卡带上vrc4芯片的3和4针分别对应CPU的A7和A6,现在需要分别跳线到CPU和A2和A1,也就是卡带金手指的11和12脚。

焊好跳线,再用万用表测量一下确保没有短路,这样VRC4也改造好了。

同样也需要修改下烧录脚本:

board <- {
	mappernum = 21, ppu_ramfind = false, vram_mirrorfind = false,
	cpu_rom = {
		size_base = 2 * mega, size_max = 2 * mega,
		banksize = 0x2000
	},
	ppu_rom = {
		size_base = 1 * mega, size_max = 2 * mega,
		banksize = 0x2000 / 8,
	}
};

dofile("vrc4.ai");

function cpu_dump(d, pagesize, banksize)
{
	vrc4_cpu_dump(d, pagesize, banksize, 1, 2);
}

function ppu_dump(d, pagesize, banksize)
{
	vrc4_ppu_dump(d, pagesize, banksize, 1, 2);
}

//RC857 cartridge does not use workram register control
function cpu_ram_access(d, pagesize, banksize)
{
	cpu_ramrw(d, 0x6000, banksize);
}

function program_initalize(d, cpu_banksize, ppu_banksize)
{
	vrc4_program_initialize(d, cpu_banksize, ppu_banksize, 1, 2)
}

function ppu_transfer(d, start, end, ppu_banksize)
{
	vrc4_ppu_transfer(d, start, end, ppu_banksize, 1, 2);
}

最后贴上做好的贴纸:

image

以下是改造手册,用UltraEdit打开可以全屏不用翻页:VRC2&4.txt

烧录脚本:
https://github.com/maximaas/Famicom-DIY/blob/master/repro/kazzo_scripts/vrc2b.ag
https://github.com/maximaas/Famicom-DIY/blob/master/repro/kazzo_scripts/vrc4a.ag

卡带的图片贴纸文件:
https://github.com/maximaas/Famicom-DIY/tree/master/sticker/wai wai world
https://github.com/maximaas/Famicom-DIY/tree/master/sticker/wai wai world 2

- End -