2010年4月16日金曜日

ファミコンの「Nin1」カセットを作る

先日書いた、マッパー0でNin1カセットを作った続き・・になるのかな。

まずはじめに能書きを。

27C256などのメモリデバイスはアドレスバスの数によってメモリ容量が異なります。

アドレスバスの数をEP-ROMの型番で例を書くと、

27C64 - 12本

27C128 - 13本

27C256 - 14本

・・・(中略)

27C4001 - 18本

といった感じで、アドレスバスが1本増えるごとに容量が倍になってるのがわかりますね。

となると、アドレスバス1本減らせば容量が半分になる、というのは容易に判断できますし、現在ファミコンのフラッシュカートリッジ作ってる人たちはこの手法を当たり前のように使ってます(笑

で、このアドレスバスを減らすにはどうするか?ですが、これはVccへ入れる(プルアップ)か、GNDへ落とす(プルダウン)事で可能になります。

んが、フラッシュカートリッジなどを作っていると、

・書き込んでも動かないぞ?

・プルダウン(orプルアップ)しないと動かないぞ?

・デバイスの後半に書き込まないと動かないぞ?

・残りの容量が無駄だなぁ・・・(←貧乏人の悲しい性orz)

といったような問題に遭遇します。

動かない問題は、マッパーに依存していた部分が多く、同じマッパーなら同じ書き込み方をすれば問題はなかった。(←当時の考えね

でも、何かしっくりこなかったんだよね。

何でマッパーによってこんなに動作がかわるのかなぁ、と。

そんなことで今まで不完全燃焼のまま弄ってたわけですが、先日、その謎が明らかになりました!

と同時に、一つのカセットで複数のゲームが入れられる事もわかり、実践したのが先日書いたマリオ⇔チャレンジャーの2in1カセットです。

率直に書きますと、ファミコンカセットにはいろんなタイプの基板がありますが、ずばり、基板は全く関係ありませんっ!

全てメモリデバイスの扱い方に問題があったんです(^-^;

どういうことかというと、プルアップとプルダウン、これです、ここがキーなのです。

この何気にプルダウンとプルアップしていた行為そのものが、自然とバンク切り替えの動作をしていたんですねぇ(笑

と、言葉ではわかり辛いので27C256を例にした概念図を見てみましょう。

256block

メモリデバイス触った事ある人はこれで理解できますよねw

要するに、VccとGNDの組み合わせによってジャンパスイッチの役割を果たし、書き込み&読み込み時にバンクが変わる仕組みになってる、と。

上の256を2分割で使うならA13をアドレスバスに入れてA14をアップorダウンすれば良いだけ。

これはメモリデバイス独自の特性なので、ファミコンに限らず、スーファミだろうがメガドラだろうがXBOXのBIOSだろうがPCのBIOSだろうが、同じ原理で動かすことが可能ですw

この原理さえ理解していれば、どのマッパー基板でも正常に動かすことができるでしょう(笑

・・・他の配線さえ間違ってなければねw

ってなわけで、先日の動画では切り替え部分が映ってなかったので、今度はテストクリップを使った動画をどうぞ(^-^)


動画作成にちょっと手間取りまして、結果画質が荒くなっちゃった(汗

何となくわかると思うのでお許しを(^-^;

PICT4878

一応説明すると、まずマッパー2+27C4001を使い、上のゲーム(全て128K)をそれぞれのブロックに書き込んで順番に起動してます。

PICT4879

次にマッパー1+AM29F040Bを使い、イース(256K)と128K×2個、3分割で書き込んで起動してます。

あ、関係ないけど上のゼルダは新品ですw

もう一個中古があるけど、思い出したので新品を出してきて記念に。

PICT4886

テスト風景はこんな感じ。

CHR-ROMモノもやろうと思ったんだけど、テストクリップの配線交換するのが大変なので今回は止め(笑

先回のマッパー0でもやってるしね。

んでんで、このNin1化改造で一番の問題がスイッチです。

PRG-ROMの2分割だけなら1回路2接点のスイッチで良いのですが・・例えば4Mデバイス使って分割無し、2分割、3分割、4分割を全て補おうとすると、アドレス1本に対し1回路3接点のスイッチが必要になり、PRG-ROMだけで2個、CHR-ROM(4Mは必要ないか)まで考慮すると一つのカセットで4個必要になります。

さらにSRAM切り替えまで考えたら1回路2接点スイッチをもう一個追加、と(笑

あ、因みに、アドレスバス繋げた状態でプルアップかプルダウンしても動かなくはないですが、ノイズが乗ったり誤動作の原因になるので止めた方が良いと思われます。

PICT4891

1回路2接点、2回路2接点は秋月で4個100円のが売ってるので、安いのでお勧めです。

1回路3接点、2回路3接点は、私はRSで調達しました。

小型のもので3接点のスイッチはそんなに出回ってないのかなぁ・・・ちょっと探しただけではRS以外見つけられなかった。

スイッチじゃなくてもピンヘッダ使うのもいいかもね。

ってな事で、このメモリデバイスの特性をなんで今まで気がつかなかったか不思議ですが、とりあえず解決できて良かった、うん。

Nin1は別にしても、プルアップ&プルダウンの概念は覚えておくと後々便利なので覚えておきましょ~

・・・今思えば、マスクROM取らなくても小亀でデバイス付けて切り替えればオリジナル含めて5in1が簡単に作れるのか・・・ブツブツ

0 件のコメント: