ファミリーコンピューター ROMカセット マッパー3、66、185


PRG 32KB CHR 32KB 4バンク 8KB
グラディウスやゲゲゲの鬼太郎で使用 PRG ROMは32KB、 CHR ROMが通常32KBで4バンクするROMカートリッジになります。 CHR ROM(CGデータ)は8KBまでなので マッパー3タイプのCHR ROMは最大4バンク(8KB×4)の構成になります。   マッパー3のバンク切り替えとプロテクト  HC161はカウンタ機能を使用せずデータセットのみになり  HC161のA〜Dのデータ入力がそのままQA〜QDに出力されます    $80000−$FFFFの範囲   Bit7:−   Bit6:−   Bit5:1(QC=1にする、0だとPA12=0に固定)   Bit4:1(QD=1にする、0だとPA10=0に固定)   Bit3:−   Bit2:−   Bit1:バンク#D1   Bit0:バンク#D0    CHR ROMのバンク切り替えはこのPRG ROM$8000−$FFFFにバンクキーデータを書き込む事によって切り替わるのですが  書き込んだバンクキーデータとPRG ROMデータの2つのデータバスが競合する様になっています   1.バンクキーデータをPRG ROM領域にデータを書き込む(/ROMSEL=0、HC161の/LD=0、CK=0、データ=バンクキー)   2./ROMSEL=0なのでPRG ROMからもHC161へデータが出力される   3.次のプログラム(命令)でPRG ROMリードになるので     R//W=1(HC161のCK=1)でCHR ROMのバンク(QA−QD)が出力されてしまう    つまり正常にバンク切換えを行うには2つの条件があります   1.バンクキーデータは$30−$33にする     Bit5と4を1にしないとPA12とPA10が0に固定されCHR ROMの一部分しか読めなくなります   2.書き込むPRG ROMアドレスに切り替えたいバンクキーデータにする     データが競合するので同じデータにする必要があります    例えばPRG ROM 8000:30 FF...とします  $8000に$30と書き込むとCHR ROMはバンク#0に切り替わります (バンクキーデータ$30、PRG ROM$30)  $8001に$30と書き込むとCHR ROMはバンク#0に切り替わりません(バンクキーデータ$30、PRG ROM$FF)  ただしPRG ROMのデータとバンクキーデータが同じといっても全てのデータバスを見ている訳では無いので  データのBit5=1、Bit4=1とBit1、0が同じなら切り替わります  この場合バンクキーデータが$F0でもバンク#0として切り替わります   グラディウス 8ACE:30 32 31 33 ;バンクキーデータ(順番に並んでいません)    バンク#00を選択するには$8ACEに$30を書き込めばCHR データ$0000−$1FFFがバンク#00になります    バンク#01を選択するには$8AD0に$31を書き込めばCHR データ$0000−$1FFFがバンク#01になります    バンク#02を選択するには$8ACFに$32を書き込めばCHR データ$0000−$1FFFがバンク#02になります    バンク#03を選択するには$8AD1に$33を書き込めばCHR データ$0000−$1FFFがバンク#03になります  
マッパー66 CHR ROMとPRG ROMの両方を一度にバンク切換えできるタイプです 別々に切換えは出来ないのとCHR ROM 8KB、PRG ROM 32KBのまるごとの切換えになります その為バンクキーデータは4ビット分の組み合わせ計16バイトになります PRG ROMは32KB($8000−$FFFF)ごとの切換えになるので ベクタはいつリセットが掛かっても大丈夫なようにする必要があります   ドラゴンボール 神龍の謎  リセットはどのバンクでも$FF88へ飛ぶようになっており  どのバンクでも同じルーチンでバンク切換え(初期設定)をします    FFCC:00 01 02 03 ;PRG $00000−$07FFF選択、CHR ROMバンク  FFD0:10 11 12 13 ;PRG $08000−$0FFFF選択、CHR ROMバンク  FFD4:20 21 22 23 ;PRG $10000−$17FFF選択、CHR ROMバンク  FFD8:30 31 32 33 ;PRG $18000−$1F000選択、CHR ROMバンク   Zガンダム ホットスクランブル
マッパー185(HVC−CNROM−256K−01) 実際にはマッパー3のダイオードの有無または方向が違うだけです(Bit5−4) エミュレータではあまり細かくエミュレートされておらず気にする事は無いのですが 吸い出しする場合には、このダイオード部分が重要になります   CHR ROMは256KBit、128KBit、64KBitのROMによって Bit0−1の意味合いが変わります 特に64KBitマスクロムのLH2367nnの27ピン、26ピンの動作は特殊なようです   マッパー185では一応CHR ROMのオン/オフ用として別け ダビング機対策の為のプロテクトのエミュレートとして使用しているようです   プロテクトのチェックはバンク切換え(正確にはCHR ROMオフ)にして CHR ROMのデータをチェックして変化(オフ出来ない)がなければ無限ループになるのが大半になります     Bit7:−   Bit6:−   Bit5:−   Bit4:−   Bit3:−   Bit2:−   Bit1:CHR ROMの27ピン   Bit0:CHR ROMの26ピン   バードウィークのプロテクト  C020:F0 CHR ROMオフ  C021:0F CHR ROMオン   クォース(基板CN−04B)  FF70:30 31 32 33 ;バンクキーデータ     Bit7:−   Bit6:−   Bit5:0   Bit4:1(QD=1にする、0だとPA10=0に固定)   Bit3:−   Bit2:−   Bit1:CHR ROMの27ピン   Bit0:CHR ROMの26ピン   マイティ・ボンジャックのプロテクト  8071:00 CHR ROMオフ  8072:11 CHR ROMオン   バナナ ROMの型番がLHでなくRPとなっている ROMの27ピンは/PGM、26ピンはA13  FF9F:10 11 ;/PGM=0(CHR ROMオフ)  FFA1:12 13 ;/PGM=1(CHR ROMオン)     Bit7:−   Bit6:−   Bit5:1(QC=1にする、0だとPA12=0に固定)   Bit4:0   Bit3:−   Bit2:−   Bit1:CHR ROMの27ピン   Bit0:CHR ROMの26ピン   スパイVSスパイのプロテクト  8090:13 CHR ROMオフ  8091:21 CHR ROMオン   セクロスのプロテクト  80DF:21 CHR ROMオフ  80DE:20 CHR ROMオン   オセロのプロテクト(基板CN−02?)  805C:20 CHR ROMオフ  805D:22 CHR ROMオン   けいさんゲーム算数4年  805C:22 20       ;バンクキーデータ(チェック用)  805E:20 21 22 23 ;バンクキーデータ     Bit7:−   Bit6:−   Bit5:1(QC=1にする、0だとPA12=0に固定)   Bit4:1(QD=1にする、0だとPA10=0に固定)   Bit3:−   Bit2:−   Bit1:CHR ROMの27ピン   Bit0:CHR ROMの26ピン   B−WINGのプロテクト  B69F:00 CHR ROMオフ  B69E:33 CHR ROMオン  
Home へ戻る