Famicom cartridge technical information

Namco 製 IC 163 と 175 のレジスタ

register 一覧

address       129,163     175,340     比較
$4800-$4fff | **** **** | .... .... | >>>> >>>>
$5000-$57ff | **** **** | .... .... | >>>> >>>>
$5800-$5fff | **** **** | .... .... | >>>> >>>>
$8000-$87ff | **** **** | ?*** **** | xx@@ @@@@
$8800-$8fff | **** **** | ?*** **** | xx@@ @@@@
$9000-$97ff | **** **** | ?*** **** | xx@@ @@@@
$9800-$9fff | **** **** | ?*** **** | xx@@ @@@@
$a000-$a7ff | **** **** | ?*** **** | xx@@ @@@@
$a800-$afff | **** **** | ?*** **** | xx@@ @@@@
$b000-$b7ff | **** **** | ?*** **** | xx@@ @@@@
$b800-$bfff | **** **** | ?*** **** | xx@@ @@@@
$c000-$c7ff | **** **** | .... ...* | >>>> >>>x
$c800-$cfff | **** **** | .... .... | >>>> >>>>
$d000-$d7ff | **** **** | .... .... | >>>> >>>>
$d800-$dfff | **** **** | .... .... | >>>> >>>>
$e000-$e7ff | .*** **** | ??** **** | <x@@ @@@@
$e800-$efff | ??** **** | **** **** | xx@@ @@@@
$f000-$f7ff | ..** **** | ..** **** | ..@@ @@@@
$f800-$ffff | **** **** | .... .... | >>>> >>>>
[凡例]
*: 有効
.: 無効
>: 129,163 では有効で、175,340 では無効
<: 175,340 では有効で、129,163 では無効
@: 役割が同じ
x: 役割が異なるので注意するレジスタ
  • data bit7:4 bit3:0 で区切る。
  • 129,163 の $4800-$4fff は read も有効、それ以外は write only

機能が同じレジスタ

  • Program ROM bank
  • Charcter ROM bank (一部異なる)

163 → 175 で削除された機能

  • IRQ counter, generator
  • internal RAM, interface
  • sound generator
  • nametable area ROM/RAM bank register
nametable は V 固定。思い切った削減。

163 → 175 で変更された機能

  • external RAM control register (register address, bit assignments)

175 → 340 で追加された機能

  • nametable area mirroring control register
340 に external RAM control register は存在しているかは不明

N106 の仕様

163, 175, 340 の機能を組み合わせているため、各レジスタに初期値を持っている(実機ではすべて不定値として、プログラム上で初期化している)。また、辻褄が合わない場合は ROM の checksum を見て個別対応ができる。
  • nametable に関する仕様
    • 基本的に nes header の H/V フラグを見て VRAM mirroring の値を初期化する
    • $c000-$dfff のレジスタが書かれた場合には変更する
    • 175 系のソフトで都合が悪ければ VRAM mirroing の書き込みは無視できるようにする
  • external RAM に関する仕様
    • $6000-$7fff には RAM が常に存在すると見なす
    • $6000-$7fff への書き込みは常に有効にする
    • .sav ファイルがないときは初期値としてデータを 0x00 で埋める
  • internal RAM に関する仕様
    • セーブデータ向け RAM と音源パラメータは別に管理する
    • セーブデータが書かれて音源が誤動作する場合は出ないように細工する
    • .sav ファイル(または相当するもの)がないときは初期値としてデータを 0x00 で埋める
  • IRQ に関する仕様
    • IRQ レジスタが初期化されない場合は、IRQ は必ず発生しないように初期値を設定する