ファミリーコンピューター ROMカセット マッパー2、94


PRG 128KB 8バンク 16KB CHR   8KB S−RAM  
マッパー2(HVC−UNROM−nn) PRG ROMに128KB、CHR ROMは無く代わりに8KBのSRAMを使用 これによりキャラクタの設定を細かく出来るようになっています。
マッパー2のバンク切り替えとプロテクト HC161はカウンタ機能を使用せずデータセットのみになり HC161のA〜Dのデータ入力がそのままQA〜QDに出力されます PRG ROMのバンク切り替えはこのHC161が ROM領域の$8000−$FFFF(実際は$C000−$FFFF)に バンクキーデータを書き込む事によって切り替わるのですが /ROMSEL=0($8000−$FFFFをアクセス)になった瞬間 バンクキーデータとROMデータの2つのデータバスが衝突する様になっています。 これは本体の/ROMSELとR//Wの信号が連動されていない事を利用しています。 その為バンクキーデータと書き込んだアドレスのROMデータとデータ(d2−0)が同じでないといけません ROMデータとバンクキーデータと同じ場所が分からないと切り替えが出来ないようになっています    バンクキーデータ   d7:−   d6:−   d5:−   d4:−   d3:−   d2:バンク#D2   d1:バンク#D1   d0:バンク#D0 このバンクキーデータをROM領域の$8000−$FFFFに書き込む訳ですが、 そのアドレスにあるPRG ROMデータも同じでなければPRG ROMのバンク切り替えが行われないようになっています。 またA14が1($C000をアクセス)した場合はバンク#07を選択されます($C000−$FFFFはバンク#07に固定) したがってバンク切り替えは$8000−$BFFFの領域が変化します。 固定されている$C000−$FFFFにバンクする為のデータを用意して、 そのアドレスのデータとバンクキーデータと同じようにしているのが通例のようです   (例)魔界村の場合  C000:00 01 02 03 04 05 06 07    $C000−$C007に上記のようなバンクキーデータが置かれています  バンク#00を選択するには$C000に00を書き込めば$8000−$BFFFがバンク#00になります。  バンク#01を選択するには$C001に01を書き込めば$8000−$BFFFがバンク#01になります。      |  バンク#07を選択するには$C007に07を書き込めば$8000−$BFFFがバンク#07になります。  
マッパー94(HVC−UNIROM−nn) データバスがずれているだけのタイプです(戦場の狼で使用)    バンクキーデータ   d7:−   d6:−   d5:−   d4:バンク#D2   d3:バンク#D1   d2:バンク#D0   d1:−   d0:−   (例)戦場の狼の場合  FF00:00 04 08 0C 10 14 18 1C    $FF00−$FF07に上記のようなバンクキーデータが置かれています  バンク#00を選択するには$FF00に00を書き込めば$8000−$BFFFがバンク#00になります。  バンク#01を選択するには$FF01に04を書き込めば$8000−$BFFFがバンク#01になります。      |  バンク#07を選択するには$FF07に1Cを書き込めば$8000−$BFFFがバンク#07になります。     Home へ戻る