FrontPage  Index  Search  Changes  Login

専用ICなのに7400を追加すべき基板

スクリプトを書いて、 erase も動いているようにみえるけど途中で停まる場合に役に立つかもしれない対策です。

バンク切り替え暴発か調べる

ここでは画面表示が0x02010付近で停まる場合として説明します。 途中まで書き込んでいるのに停まる場合は、処理を中断してデータを読み込んで NES ファイルを作ってください。

書き込み済みのデータが 0x00000-0x01fff までちゃんと書き込まれているか

書き込みが正常な場合はデータが順番にきれいに書き込まれています。しかし、0xff が多く時々 0xff 以外のデータが書かれている場合は次に進んでください。

参考画像 → vrc1_bohatsu.JPG

書き込んでいないはずのデータも確認する

書き込みが正常で 0x02010 で中断した場合、その領域は 0xff で埋まっているはずです。それに対して暴発時は 0x00000-0x01fff 同様に 0xff 以外のデータが点在しています。

このような症状はマッパーIC (74161 も含む) がバンク切り替えの書き込み (cpu_write) と flash へのデータ書き込み (cpu_program) が区別できていません。

バンク切り替え暴発することが判明している IC

  • LZ93D50 (FCG-3 / FCG-1, 同-2も可能性大)
  • VRC (1, 初代)

7400 を追加する

FCG-3 の記事を参考にして、7400 を追加します。

  • マッパーIC とエッジコネクタの CPU R/W の線を切断する
  • 7400 を追加し、CPU R/W と CPU φ2 を組み合わせた信号を作成する
  • マッパーIC の切断した CPU R/W の代わりに 7400 からの信号を作成する

これによって flash memory の全てのデータ領域へ書き込むことが期待できます。

Bus conflict

この問題は flash memory は別にしても、実プログラムでもちょっとした問題になります。この問題を持つ基板はある程度 nesdev の wiki に記されています。汎用ICだけで単純かつ低コストに構成している場合か、設計が古い専用 IC にでてくる傾向にあります。

この改善によって bus confict がなくなりますので元の基板と完全な互換性を持たなくなります。ただし、元のプログラムではこれを回避するようにプログラミングされていますからバグを利用する以外は正常に動作します。

http://wiki.nesdev.com/w/index.php/Bus_conflict (英語)

Last modified:2012/12/24 20:24:39
Keyword(s):
References:[FrontPage]