ファミリーコンピューター 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に出力されます
$8000〜$FFFFの範囲
d7:−
d6:−
d5:1(QC=1にする、0だとPA12=0に固定)
d4:1(QD=1にする、0だとPA10=0に固定)
d3:−
d2:−
d1:バンク#D1
d0:バンク#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にする
d5と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のデータとバンクキーデータが同じといっても全てのデータバスを見ている訳では無いので
データのd5=1、d4=1とd1、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のダイオードの有無または方向が違うだけです(d5−4)
エミュレータではあまり細かくエミュレートされておらず気にする事は無いのですが
吸い出しする場合には、このダイオード部分が重要になります
CHR ROMは256KBit、128KBit、64KBitのROMによって
d0−1の意味合いが変わります
特に64KBitマスクロムのLH2367nnの27ピン、26ピンの動作は特殊なようです
マッパー185では一応CHR ROMのオン/オフ用として別け
ダビング機対策の為のプロテクトのエミュレートとして使用しているようです
プロテクトのチェックはバンク切換え(正確にはCHR ROMオフ)にして
CHR ROMのデータをチェックして変化(オフ出来ない)がなければ無限ループになるのが大半になります
d7:−
d6:−
d5:−
d4:−
d3:−
d2:−
d1:CHR ROMの27ピン
d0:CHR ROMの26ピン
バードウィークのプロテクト
C020:F0 CHR ROMオフ
C021:0F CHR ROMオン
クォース(基板CN−04B)
FF70:30 31 32 33 ;バンクキーデータ
d7:−
d6:−
d5:0
d4:1(QD=1にする、0だとPA10=0に固定)
d3:−
d2:−
d1:CHR ROMの27ピン
d0: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オン)
d7:−
d6:−
d5:1(QC=1にする、0だとPA12=0に固定)
d4:0
d3:−
d2:−
d1:CHR ROMの27ピン
d0: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 ;バンクキーデータ
d7:−
d6:−
d5:1(QC=1にする、0だとPA12=0に固定)
d4:1(QD=1にする、0だとPA10=0に固定)
d3:−
d2:−
d1:CHR ROMの27ピン
d0:CHR ROMの26ピン
B−WINGのプロテクト
B69F:00 CHR ROMオフ
B69E:33 CHR ROMオン
Home へ戻る