いまだにちゃんと動かないソフト/ハードの解析情報

CNROM

概要

CNROM は任天堂製基板の名前です。ファミコンのバンク切り替えとしては初期に見られる手法で、 PPU の Charcter 領域を区分けすることなく、最大 4 つの page を持つ簡単な仕組みです。CPU 側のバンク切り替えはありません。

汎用ロジック IC 74161 だけで構成できて単純なので、他社生産品でも使われています。他社製では当然ながら CNROM の名前はありませんので互換品です。

あまり目立たないのですが、 CNROM にはダイオード2つをつける場所があります。

security diode

74161 には CPU D5:4, D1:0 が接続されており bit5:4 のほうがダイオードに影響します。このダイオードの方向はソフトによって個別に設定でき、CPU から write bit 5:4 とダイオードの出力が一致していないと Charcter ROM の上位アドレスが不定になってデータが正しく出てこない、という仕組みのようです。

これらのゲームは CNROM が登場した初期のタイトルで用いられていますが、プロテクトしては弱いのでダイオードの設置はすぐにやめてしまったそうです。


CNROM 初期のドラゴンクエスト(初代, 1986/05/27発売)はダイオードが 1->2, 3->4 となっている。



CNROM 初期のマイティボンジャック(1986/04/18発売)は 1<-2, 3->4 となっている。



CNROM としてはかなり遅めに出たエジプト(1991/05/31発売)にはダイオードがないが、設置場所は残っている。

UNROM

概要

UNROM は CNROM から1か月ぐらいおくれて市場に出てきた基板で、初期のバンク切り替え手法を持ちます。Charcter が RAM になったので、ソフト側での自由度が高くなったのかもしれません。

74161 に加え 7432 が増えましたが、構造は単純で CPU 側の ROM 領域を半分に別けて1つを可変バンクにしただけです。CNROM 同様他社製互換品があります。

7432 を 7408 にしてしまう


クレイジークライマーでは同じ UNROM でも 7432 (quad-or-gate)の部分に、同じピン配置の 7408 (quad-and-gate) をつけています。基板にも U4 (74)LS32 と書いてあるのに、HC08 を載せています。

ソフトウェア的には可変バンクと固定バンクの位置が逆になり、普通の UNROM のソフトとは互換性がなくなります。74161 の電源投入直後の値は不定ですから、 ROM の全てのページの末尾にベクタテーブルを書いておく必要があります。

おそらくこれもプロテクトの目的で作ったと見られますが、これ1本だけです。7432 とピン配置が同じ 2入力1出力4ゲート IC は他にもたくさんありますので、実用はされなかったものの攪乱することは可能だと思われます。

管理された基板の名前だけで仕様が完全にわかるわけではない

このように部品を少し変えると言うことも可能で、わずかなソフトがこういう手法も使ってきます。基板名だけでわからないものに H/V のジャンパがあります。これは他の基板にもあり、重要度はかなり高いので nes header の仕様にとりこまれています。

かなり極端な例として挙げましたが、こういう例外はごく一部でして、MMC1 や MMC3 を使う場合は基板の名前を書くことの方がわかりやすいなど、規格や名称にも一長一短があります。わかりやすいものを選ぶというのが現状となっています。

参考文献

  • nesdev wiki - CNROM http://wiki.nesdev.com/w/index.php/CNROM
  • nescartdb のリンクを貼った各ページ. バードウイークはダイオードがないのに mapper 185, バナナはダイオードがあって方向が変なのに mapper 3 はたぶん間違いです。

メンバーのみ編集できます