アドレス | Read/Write | 内容 |
$2000 | W | PPUコントロールレジスタ1
bit7: VBlank時にNMIを実行(0:実行しない,1:実行する)
bit6: PPUマスター/スレーブセレクト(常に1にする)
bit5: スプライトサイズ(0:8x8,1:8x16)
bit4: BGパターンテーブルアドレス(0:$0000,1:$1000)
bit3: スプライトパターンテーブルアドレス(0:$0000,1:$1000)
bit2: PPUアドレスインクリメント(0:+1,1:+32)
bit1-0: 表示するネームテーブルアドレス番号
|
$2001 | W | PPUコントロールレジスタ2
bit7-5: bit0=1のとき背景色/bit0=1のとき色強調
000:なし
001:緑
010:青
100:赤
それ以外の数字は不可
bit4: スプライト表示(0:非表示,1:表示)
bit3: BG表示(0:非表示,1:表示)
bit2: スプライトクリップ(0:画面の左8ドットを表示しない,1:クリップなし)
bit1: BGクリップ(0:画面の左8ドットを表示しない,1:クリップなし)
bit0: ディスプレイタイプ(0:カラー,1:モノクロ)
|
$2002 | R | PPUステータスレジスタ
bit7: VBlank発生(1:VBlank中、ただしRead後0クリアされる)
bit6: スプライト#0ヒット(0:ヒットなし,1:ヒット)
bit5: スキャンラインスプライト数(0:8個以下,1:9個以上)
bit4: VRAM書きこみフラグ(0:書き込み成功,1:書き込み失敗)
|
$2003 | W | スプライトRAMアドレスレジスタ
$2004を使ってスプライトRAMに書きこむアドレスを指定する。 |
$2004 | W | スプライトI/Oレジスタ
$2003で指定したスプライトRAMにデータを書きこむ |
$2005 | W | VRAMアドレスレジスタ1
BGのスクロール値をセットする。
このレジスタは2度書きレジスタでXのスクロール値、Yのスクロール値の順でセットする。
$2002をReadするとセットの順番はリセットされ、X値をセットする番になっている。
|
$2006 | W | VRAMアドレスレジスタ2
$2007を使ってVRAMに書きこむアドレスを指定する。
このレジスタは2度書きレジスタで上位8bit、下位8bitの順でセットする。
$2002をReadするとセットの順番はリセットされ、上位8bitをセットする番になっている。
|
$2007 | R/W | $2006で指定したアドレスのVRAMデータを読み書きする。
読み書き後$2000のbit2の値により、VRAMアドレスが1または32足される。 |
$4000 | R/W | 矩形波チャンネル1制御レジスタ1
bit7-6: Dutyサイクル(positive/negative)
00: 2/14
01: 4/12
10: 8/ 8
11:12/ 4
bit5: エンベロープDecayループ/長さカウンタ無効(1:ループ/無効)
bit4: エンベロープDecay無効(1:無効,0:有効)
bit3-0: ボリューム/Decayレート
|
$4001 | R/W | 矩形波チャンネル1制御レジスタ2
bit7: スイープ有効(0:無効,1:有効)
bit6-4: スイープレート
bit3: スイープ方向(1:decrease,0:increase)
bit2-0: スイープ右シフト値
|
$4002 | R/W | 矩形波チャンネル1周波数レジスタ1
チャンネル1で使う周波数の下位8bitをセットする。
|
$4003 | R/W | 矩形波チャンネル1周波数レジスタ2
bit7-3: 音の長さ
bit2-0: 周波数の上位3bit
|
$4004 | R/W | 矩形波チャンネル2制御レジスタ1
bit7-6: Dutyサイクル(positive/negative)
00: 2/14
01: 4/12
10: 8/ 8
11:12/ 4
bit5: エンベロープDecayループ/長さカウンタ無効(1:ループ/無効)
bit4: エンベロープDecay無効(1:無効,0:有効)
bit3-0: ボリューム/Decayレート
|
$4005 | R/W | 矩形波チャンネル2制御レジスタ2
bit7: スイープ有効(0:無効,1:有効)
bit6-4: スイープレート
bit3: スイープ方向(1:decrease,0:increase)
bit2-0: スイープ右シフト値
|
$4006 | R/W | 矩形波チャンネル2周波数レジスタ1
チャンネル1で使う周波数の下位8bitをセットする。
|
$4007 | R/W | 矩形波チャンネル2周波数レジスタ2
bit7-3: 音の長さ
bit2-0: 周波数の上位3bit
|
$4008 | R/W | 三角波制御レジスタ1
bit7: リニアカウンタスタート
bit6-0: リニアカウンタ
|
$4009 | | 未使用 |
$400A | R/W | 三角波周波数レジスタ1
チャンネル1で使う周波数の下位8bitをセットする。
|
$400B | R/W | 三角波周波数レジスタ2
bit7-3: 音の長さ
bit2-0: 周波数の上位3bit
|
$400C | R/W | ノイズ制御レジスタ1
bit7-6: 未使用
bit5: エンベロープDecayループ/長さカウンタ無効(1:ループ/無効)
bit4: エンベロープDecay無効(1:無効,0:有効)
bit3-0: ボリューム/Decayレート
|
$400D | | 未使用 |
$400E | R/W | ノイズ周波数レジスタ1
bit7: 乱数タイプ選択(0:32Kmode,1:93bitmode)
bit6-4: 未使用
bit3-0: 波長選択
|
$400F | R/W | ノイズ周波数レジスタ2
bit7-3: 音の長さ
bit2-0: 未使用
|
$4010 | R/W | DMC制御レジスタ1 |
$4011 | R/W | DMC制御レジスタ2 |
$4012 | R/W | DMCアドレスレジスタ |
$4013 | R/W | DMCデータ長レジスタ |
$4014 | W | スプライトDMAレジスタ
メモリからスプライトRAMへDMA転送を行う
このレジスタに書きこんだ値をNをすると、
N×$100のアドレスから256バイトをスプライトRAMへ転送する。
|
$4015 | R/W | サウンドレジスタ
bit7: DMC(Delta Modulation Channel)のIRQステータス(Readのみ)
bit4: DMC(0:無効,1:有効)
bit3: ノイズチャンネル(0:無効,1:有効)
bit2: 三角波チャンネル(0:無効,1:有効)
bit1: 矩形波チャンネル2(0:無効,1:有効)
bit0: 矩形波チャンネル1(0:無効,1:有効)
|
$4016 | R/W | パッドI/O1
bit4: ガンコントリガー(0:ON,1:OFF)
bit3: ガンコンスプライト検出(0:検出なし,1:検出)
bit0: パッドデータ(0:OFF,1:ON)
|
$4017 | R/W | パッドI/O2
bit4: ガンコントリガー(0:ON,1:OFF)
bit3: ガンコンスプライト検出(0:検出なし,1:検出)
bit0: パッドデータ(0:OFF,1:ON)
|