ファミリーコンピューター 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データとデータ(Bit2−0)が同じでないといけません ROMデータとバンクキーデータと同じ場所が分からないと切り替えが出来ないようになっています  バンクキーデータ   Bit7:−   Bit6:−   Bit5:−   Bit4:−   Bit3:−   Bit2:バンク#D2   Bit1:バンク#D1   Bit0:バンク#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) データバスがずれているだけのタイプです(戦場の狼で使用)    バンクキーデータ   Bit7:−   Bit6:−   Bit5:−   Bit4:バンク#D2   Bit3:バンク#D1   Bit2:バンク#D0   Bit1:−   Bit0:−   (例)戦場の狼の場合  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 へ戻る