アクセスフラグ : 書バ強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
x | - | - | - | b | b | b | b |
ブランク強制フラグはスキャンライン中にも無効にできる。 しかし、ブランク強制中は内部のレンダリングバッファが更新されないので、 そのスキャンラインの表示は乱れる。 今のところ、BG はタイルのいくつかが乱れ (PPU の処理がどれほどの時間続くのかによる)、 スプライトの表示はスキャンライン中ずっと乱れるものと考えられている。
V-Blank の最初の行でこのレジスタに書き込んだ時 (225 か 240。オーバースキャンフラグの設定による)、 ブランク強制はアクティブになり、OAM アドレスのリセットが起こる。
アクセスフラグ : 書バ強V?-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
s | s | s | n | n | b | b | b |
アクセスフラグ : 書下強V?-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
a | a | a | a | a | a | a | a |
アクセスフラグ : 書上強V?-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
p | - | - | - | - | - | - | b |
スキャンラインが描画中の場合、 内部 OAM アドレスは無効化される。 この無効化は決定的に起こる。 どのように決定されるかは不明。 ブランク強制期間でない場合、これら 0x2102, 0x2103 のレジスタに最後に書かれた値が V-Blank 開始時に内部 OAM アドレスにリロードされる。 これは "OAM リセット" と呼ばれている。 OAM リセットは、0x2100 に値を書き込んだ時にも起こる。
0x2102 か 0x2103 に値を書き込んだ場合、 全ての内部 OAM アドレスが、最後にこのレジスタに書き込まれた値にリセットされる。 例えば、 このレジスタから 0x104 を書き込んだ後 4 バイトの値を書き込み、 0x2103 に 1 をセットすると、OAM アドレスは 6 ワード目ではなく、 4 ワード目を指す。
アクセスフラグ : 書バ強V--
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
d | d | d | d | d | d | d | d |
OAM に対する書き込みは、変わった方法で行われる。 ワード値の上位バイトが書き込まれるまで、OAM の下位テーブルは影響を受けない。 (しかし、上位テーブルはすぐに内容が反映される。) アドレスをセットした後、書き込み/読み込みを交互に行った場合、 OAM は上位テーブルにのみ影響を受ける。
例えば、
と順番に実行すると、 想像通りに "01 02 xx 03" という内容にはならず、 実際には "01 02 01 03" となる。
技術的にはこのレジスタに対して H-Blank 中にも値が書き込めそうに見えるが、 "OAM アドレス無効化" が起こっており、OAM への書き込みは思うように反映されない。 しかしブランク強制期間中には書き込むことができ、 V-Blank の間か、もしくは(たぶん)強制ブランク中に 0x2102 ~ 0x2103 のリセットが行われたときに書き込むことができる。
アクセスフラグ : 書バ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
D | C | B | A | e | m | m | m |
モード | BG深度 | OPT | 優先度 | |||
1 | 2 | 3 | 4 | 前面 → 背面 | ||
0 | 2 | 2 | 2 | 2 | n | 3AB2ab1CD0cd |
1 | 4 | 4 | 2 | n | 3AB2ab1C 0c | |
C3AB2ab1 0c (e が 1 の時) | ||||||
2 | 4 | 4 | y | 3A 2B 1a 0b | ||
3 | 8 | 4 | n | 3A 2B 1a 0b | ||
4 | 8 | 2 | y | 3A 2B 1a 0b | ||
5 | 4 | 2 | n | 3A 2B 1a 0b | ||
6 | 4 | y | 3A 2 1a 0 | |||
7 | 8 | n | 3 2 1a 0 | |||
7拡張BG | 8 | 7 | n | 3 2B 1a 0b |
"OPT" は、タイル毎オフセットモード (Offset-per-tile mode) を意味する。 優先度の数字は、その数字の優先度が与えられたスプライトを指す。 アルファベットは BG を指し (A=1, B=2 ...)、大文字が優先度 1、 小文字が優先度 0 を表す。
モード 7 の拡張 BG モードは、 BG2 を有効にすることを指し、 BG2 は BG1 と同じタイルマップとキャラクタデータを使用するが、 ピクセルデータのビット 7 は優先度ビットとして使われる。 BG2 は、下記の BG毎のレジスタで変わった動作をする。 詳細は BG (背景) のモード 7 の項目を参照。
アクセスフラグ : 書バ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
x | x | x | x | D | C | B | A |
モザイクフィルターは、画面を 縦X, 横X のサイズの正方形で分割する。 正方形内の一番左上のピクセルで正方形が塗りつぶされる。 この正方形の一番上のラインを "開始ライン" とすると、 フレーム描画中にこのレジスタを設定する時、 "開始ライン" は、描画中のスキャンラインを指す。 フレーム描画中でない場合、"開始ライン" はフレームの 一番上のラインを指す。 例えば、偶数のラインが全て赤で、奇数のラインが全て青の場合、 フレーム処理中に xxxx = 1 を指定すると、 現在のスキャンラインの位置によって、画面が赤で塗りつぶされるか、 もしくは青で塗りつぶされることになる。
このレジスタに、同じ値を書き込んでも "開始ライン" はリセットされない。
モザイクはスクロール処理後、クリッピング・ウインドウ・ カラーウインドウ・計算の前に適用される。 縦X、 横X のブロックの1部分をクリッピングすることができ、 モザイクのかかっていないBGのように、計算を入れることもできる。 しかし、スクロール処理は1部分だけに入れるようなことはできない。
モード 5/6 はハーフサイズのピクセルを2倍に拡大しなければならない。 xxxx=0 を指定した時にも画面の変更が行われ、 偶数列のハーフサイズピクセル (通常サブスクリーンにある) は、 奇数列のハーフサイズピクセルを隠してしまう。 インターレスモードの時、同じことが垂直方向にも起こる。
モード 7 の場合には、モード 7 の変形処理が 縦X横X のブロックに 何も変化を与えないことから、BG1 のモザイク処理は通常通り行われる。 BG2 の場合、このレジスタのビット A は垂直モザイクを、 ビット B は水平モザイクを表す。 これにより、縦1横X, 縦X横1, 縦X横X ブロックを使うように設定が拡張される。 BG1 はビットAによりXサイズのブロックで表示され、 BG2 の高優先度に設定されているピクセルは 横1縦X に拡張されて BG1 の前に表示されるので、面白い画面処理を行うことができる。
アクセスフラグ : 書バ強V?-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
a | a | a | a | a | a | y | x |
全てのタイルマップは 32x32 のタイルで構成される。 x と y が両方 0 の場合、1 つのタイルマップアドレスのみが存在する。 x が 1 の場合、2 つ目のタイルマップが 1 つ目の後に続き、 2 番目は 1 番目の右側に配置される。 y が 1 の場合、2 つ目のタイルマップが 1 つ目の後に続き、 2 番目は 1 番目の下側に配置される。 両方が 1 の場合、2 つ目は右側に、3 つ目は下側、 4 つ目は右下に配置される。
アクセスフラグ : 書バ強V?-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
a | a | a | a | a | a | y | x |
アクセスフラグ : 書バ強V?-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
a | a | a | a | a | a | y | x |
アクセスフラグ : 書バ強V?-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
a | a | a | a | a | a | y | x |
アクセスフラグ : 書バ強V?-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
b | b | b | b | a | a | a | a |
アクセスフラグ : 書バ強V?-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
b | b | b | b | a | a | a | a |
アクセスフラグ : 書ワ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |
DF | DE | DD | DC | DB | DA | D9 | D8 | |
BG1HOFS | x | x | x | x | x | x | x | x |
- | - | - | - | - | - | x | x |
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |
DF | DE | DD | DC | DB | DA | D9 | D8 | |
M7HOFS | m | m | m | m | m | m | m | m |
- | - | - | m | m | m | m | m |
2 種類のレジスタが 1 つに収まっている。 (4 つが 2 つに収まっているとも言える?) 0x210d への書き込みは、0x210f ~ 0x2114 へと続くレジスタの、 BGnxOFS と同じようにも動くし、 0x211b ~ 0x2120 へと続く M7* レジスタの、 M7HOFS として一緒に動作させることもできる。
モード 0 ~ 6 では、BG1xOFS を使い、M7xOFS は無視される。 モード 7 では M7xOFS を使い、BG1xOFS は無視される。 BG1HOFS と M7HOFS では、レジスタに入れる内容が異なる。
アクセスフラグ : 書ワ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |
DF | DE | DD | DC | DB | DA | D9 | D8 | |
BG1VOFS | x | x | x | x | x | x | x | x |
- | - | - | - | - | - | x | x |
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |
DF | DE | DD | DC | DB | DA | D9 | D8 | |
M7VOFS | m | m | m | m | m | m | m | m |
- | - | - | m | m | m | m | m |
アクセスフラグ : 書ワ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
DF | DE | DD | DC | DB | DA | D9 | D8 |
x | x | x | x | x | x | x | x |
- | - | - | - | - | - | x | x |
アクセスフラグ : 書ワ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
DF | DE | DD | DC | DB | DA | D9 | D8 |
x | x | x | x | x | x | x | x |
- | - | - | - | - | - | x | x |
アクセスフラグ : 書ワ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
DF | DE | DD | DC | DB | DA | D9 | D8 |
x | x | x | x | x | x | x | x |
- | - | - | - | - | - | x | x |
アクセスフラグ : 書ワ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
DF | DE | DD | DC | DB | DA | D9 | D8 |
x | x | x | x | x | x | x | x |
- | - | - | - | - | - | x | x |
アクセスフラグ : 書ワ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
DF | DE | DD | DC | DB | DA | D9 | D8 |
x | x | x | x | x | x | x | x |
- | - | - | - | - | - | x | x |
アクセスフラグ : 書ワ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
DF | DE | DD | DC | DB | DA | D9 | D8 |
x | x | x | x | x | x | x | x |
- | - | - | - | - | - | x | x |
アクセスフラグ : 書バ強V?-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
i | - | - | - | m | m | i | i |
アクセスフラグ : 書下強V?-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
a | a | a | a | a | a | a | a |
アクセスフラグ : 書下強V?-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
a | a | a | a | a | a | a | a |
0x2118 ~ 0x2119 と 0x2139 ~ 0x213a 用のアドレスをセットする。 バイトアドレスではなく、ワードアドレスであることに注意。
アクセスフラグ : 書下強V--
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
x | x | x | x | x | x | x | x |
アクセスフラグ : 書下強V--
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
x | x | x | x | x | x | x | x |
VRAM にデータを書き込みます。 インクリメントが実行される前に、書き込んだ値がすぐに (?) 適用される。 アドレスは、2 バイト中のどちらか 1 バイトが書き込まれた時にインクリメントする。 どちらを書き込んだ時にインクリメントされるかは、 0x2115 のビット 7 の設定に関連している。 0x2115 のアドレス変換ビットも気に留めておくこと。
0x2139 ~ 0x213a とこのレジスタの相互作用については不明。
アクセスフラグ : 書バ強V?-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
r | c | - | - | - | - | y | x |
アクセスフラグ : 書ワ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
DF | DE | DD | DC | DB | DA | D9 | D8 |
a | a | a | a | a | a | a | a |
a | a | a | a | a | a | a | a |
0x2134 ~ 0x2136 と一緒に使う。
アクセスフラグ : 書ワ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
DF | DE | DD | DC | DB | DA | D9 | D8 |
a | a | a | a | a | a | a | a |
a | a | a | a | a | a | a | a |
0x2134 ~ 0x2136 と一緒に使う。
アクセスフラグ : 書ワ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
DF | DE | DD | DC | DB | DA | D9 | D8 |
a | a | a | a | a | a | a | a |
a | a | a | a | a | a | a | a |
アクセスフラグ : 書ワ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
DF | DE | DD | DC | DB | DA | D9 | D8 |
a | a | a | a | a | a | a | a |
a | a | a | a | a | a | a | a |
これらは 2 度書きレジスタで、下位バイトを先に書き込み、 上位バイトをその後書き込む。 これらのレジスタへの書き込みは、次のように動作すると考えられている。
Reg = (Current<<8) | Prev; Prev = Current;
Prev は 1 つしか存在せず、これらレジスタ全てで共有される。 Prev は BGnxOFS レジスタでは共有されないが、 M7xOFS レジスタでは共有される。
これらは、モード 7 の行列パラメータを指定する。 値は 8 ビットの固定小数点表現である。 つまり、セットされた値は 256.0 で割り算される。
0x2134 ~ 0x2136 レジスタから、 A * (B >> 8) の値が読み込まれる。 これには、それほど大きな遅延は発生しない。 モード 7 レンダリング中には動作しないだろう。
アクセスフラグ : 書ワ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
DF | DE | DD | DC | DB | Dx | D9 | D8 |
x | x | x | x | x | x | x | x |
x | x | x | x | x | x | x | x |
アクセスフラグ : 書ワ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
DF | DE | DD | DC | DB | Dx | D9 | D8 |
x | x | x | x | x | x | x | x |
x | x | x | x | x | x | x | x |
これらは、 M7A ~ M7D と同じように 2 度書きレジスタで、 値は 2 の補数表現になる。
行列変換の式 :
[ X ] [ A B ] [ SX + M7HOFS - CX ] [ CX ] [ ] = [ ] * [ ] + [ ] [ Y ] [ C D ] [ SY + M7VOFS - CY ] [ CY ]
SX/SY はスクリーンの座標。 X/Y はプレイ中の画面から得られるピクセルの座標。 0x211a のビット 7 がクリアされている場合、 結果は 0<=X<=1023 と 0<=Y<=1023 の範囲に制限される。 0x211a のビット 6 と 7 が両方セットされていて、 X か Y が 0 より小さいか、 1023 より大きい場合、 それぞれの下位 3 ビットはキャラクタ 0 からピクセルが選択される。
ビット精度を考慮した式 :
#define CLIP(a) (((a)&0x2000)?((a)|~0x3ff):((a)&0x3ff)) X[0,y] = ((A*CLIP(HOFS-CX))&~63) + ((B*y)&~63) + ((B*CLIP(VOFS-CY))&~63) + (CX<<8) Y[0,y] = ((C*CLIP(HOFS-CX))&~63) + ((D*y)&~63) + ((D*CLIP(VOFS-CY))&~63) + (CY<<8) X[x,y] = X[x-1,y] + A Y[x,y] = Y[x-1,y] + C
(全ての場合で、X[], Y[] は 8 ビットの固定小数点表現)
アクセスフラグ : 書バ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
c | c | c | c | c | c | c | c |
ワードアドレス (色) をセットする。 指定されたアドレスにデータを書き込む時には 0x2122 を通して、 読み込む時には 0x213b を通して行う。
アクセスフラグ : 書ワ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
DF | DE | DD | DC | DB | Dx | D9 | D8 |
g | g | g | r | r | r | r | r |
- | b | b | b | b | b | g | g |
CGRAM にデータを書き込む。 このレジスタに書き込んだ値は、パレットの色に設定される。
CGRAM へのアクセス処理は、OAM の下位テーブルのようにして行う。 詳細は 0x2104 参照。
色の値は、 BGR の順で扱われる。
アクセスフラグ : 書バ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
A | B | C | D | a | b | c | d |
アクセスフラグ : 書バ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
A | B | C | D | a | b | c | d |
アクセスフラグ : 書バ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
A | B | C | D | a | b | c | d |
注 : OBJ = スプライト Color = カラーウインドウ
アクセスフラグ : 書バ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
x | x | x | x | x | x | x | x |
ウインドウ 1 の左端の座標を設定する。 注 : 左端が右端より大きい場合、ウインドウは設定されない。
アクセスフラグ : 書バ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
x | x | x | x | x | x | x | x |
ウインドウ 1 の右端の座標を設定する。 注 : 左端が右端より大きい場合、ウインドウは設定されない。
アクセスフラグ : 書バ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
x | x | x | x | x | x | x | x |
ウインドウ 2 の左端の座標を設定する。 注 : 左端が右端より大きい場合、ウインドウは設定されない。
アクセスフラグ : 書バ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
x | x | x | x | x | x | x | x |
ウインドウ 2 の右端の座標を設定する。 注 : 左端が右端より大きい場合、ウインドウは設定されない。
アクセスフラグ : 書バ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
4 | 4 | 3 | 3 | 2 | 2 | 1 | 1 |
アクセスフラグ : 書バ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
- | - | - | - | c | c | o | o |
Consider two variables, W1 and W2, which are true for pixels between the appropriate left and right bounds as set in $2126-$2129 and false otherwise. Then, you have the following possibilities: (replace "W#" with "~W#", depending on the Inversion settings of $2123-$2125) Neither window enabled => nothing masked. One window enabled => Either W1 or W2, as appropriate. Both windows enabled => W1 op W2, where "op" is as above. Where the function is true, the BG will be masked.
See the section "WINDOWS" below for more details.
アクセスフラグ : 書バ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
- | - | - | o | 4 | 3 | 2 | 1 |
アクセスフラグ : 書バ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
- | - | - | o | 4 | 3 | 2 | 1 |
アクセスフラグ : 書バ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
- | - | - | o | 4 | 3 | 2 | 1 |
アクセスフラグ : 書バ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
- | - | - | o | 4 | 3 | 2 | 1 |
アクセスフラグ : 書バ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
c | c | m | m | - | - | s | d |
アクセスフラグ : 書バ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
s | h | b | o | 4 | 3 | 2 | 1 |
アクセスフラグ : 書バ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
b | g | r | c | c | c | c | c |
画面をオレンジで塗りつぶす時 LDA #$3f STA $2132 LDA #$4f STA $2132 LDA #$80 STA $2132
アクセスフラグ : 書バ強VH-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
s | e | - | - | p | o | I | i |
様々なところで、このビットがビット 7 にも関連している 可能性があると報告されています。 例えば、「外部LSIからのデータ供給有効」というようなものです。 これはもちろん勘違いだと思います。
オーバースキャンフラグについての注意: 通常の NMI トリガーポイントの前に、これを 0xE0 (224) 行に変更した場合、 フレーム中ずっとこれを設定したような意味になってしまいます。 これは NMI トリガーポイントとHDMA の停止に影響します。 (訳注:NMIトリガーについて調べた後、もっかいきちんと読んで修正します。)
一番初めの方のスキャンライン "X" (0xE1 <= X <= 0xF0) でオーバースキャンを 0 にすると、 NMI が X 行で発生し、最後の HDMA 転送が X-1 行で起こります。 表示領域は普通のオーバースキャンでないモードと同じ 0xE1 ~ 0xEC の位置に残り、 0xED の1ピクセルだけ上の位置に移動します。 そして、0xEF ~ 0xF4 で 垂直同期を失います。
行 0xE1 (225) でフラグをオンにした場合、 NMI が 0xE2 (226) 行で発生し、 0xE0 行で起こった最後のHDMAがまだ発生している。 いつでもフラグをオフにした時には他に何かが起こるが、 スキャンラインの開始から十分時間が経過した後では 何も起こらない。
何も画面変化が起こらない場合でも、 オーバースキャンの設定はVRAMの書き込みに影響を及ぼす。 0xE1(225) ~ 0xF0(240) の間に、 以下のようなコードを実行すると、
LDA #'-' STA $2118 LDA r2133 STA $2133 LDA #'+' STA $2118
オーバースキャンフラグが 0 か、 1 かによって、 VRAMには + のみ、または - のみが書き込まれる。
アクセスフラグ : 読下強VH?
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
x | x | x | x | x | x | x | x |
アクセスフラグ : 読中強VH?
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
x | x | x | x | x | x | x | x |
アクセスフラグ : 読上強VH?
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
x | x | x | x | x | x | x | x |
これらは、0x211b に書き込まれた 2 つの 16 ビット値の積と、 0x211c に最後に書き込まれた 8 ビットの値が入る。 さほど大きな遅延は発生しない。 モード 7 のレンダリング中にはたぶん使えない。
アクセスフラグ : バ強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
- | - | - | - | - | - | - | - |
読み込み時、0x4201 のビット 7 がセットされている時、 H/V カウンタ (0x213c と 0x213d) が現在の X, Y 座標でラッチされる。 読み込みデータは、オープンバスの値を返す。
アクセスフラグ : 読ワ強V?-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
x | x | x | x | x | x | x | x |
0x2102 ~ 0x2103 で現在のアドレスを選択する。 アドレス値は、読み込み時にインクリメントされる。 0x2104 へ書き込んだ値を返す。 0x2104 と スプライト 参照。
OAMアドレス無効化は、このレジスタ操作によるアドレス読み込みでも 発生するかもしれない。
アクセスフラグ : 読下強V?-
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
x | x | x | x | x | x | x | x |
アクセスフラグ : 読上強V?-
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
x | x | x | x | x | x | x | x |
これらは、単純にVRAMのデータを読み込む時に使用する。 0x2115 のビット 7 に関連するアドレス値は、 0x2139 か 0x213a のどちらかを読み込む時にインクリメントされる。
実際には読み込み動作はもう少し複雑で、 これらのレジスタを読み込んだ時、バイト値はワードサイズのバッファから得られる。 このワードバッファは、VRAMアドレスがインクリメントされる前に、 VRAMからロードされる。 データを読み込んだ時のインクリメント量は、0x2115 の下位 4 ビットで設定する。 この変更は、0x2116 ~ 0x2117 を変更した後、 ダミー読み込みを入れると適用され、実際にデータを読み込む前に実行する必要がある。
これらのレジスタと0x2118、0x2119 の 相互作用の詳細については不明。
アクセスフラグ : 読ワ強V?-
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
DF | DE | DD | DC | DB | Dx | D9 | D8 |
g | g | g | r | r | r | r | r |
- | b | b | b | b | b | g | g |
CGRAM の読み込みは OAM の読み込みと似ている。 詳細は 0x2138 参照。
色データは BGR の順に並んでいる。 '-' は PPU2 のオープンバスを表している。
アクセスフラグ : 読ワ強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
DF | DE | DD | DC | DB | DA | D9 | D8 |
x | x | x | x | x | x | x | x |
- | - | - | - | - | - | - | x |
アクセスフラグ : 読ワ強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
DF | DE | DD | DC | DB | DA | D9 | D8 |
x | x | x | x | x | x | x | x |
- | - | - | - | - | - | - | x |
これらの値は、0x4201 のビット 7 がセットされている時に 0x2137 を読み込み、 または、0x4201 への書き込みによって 0x4201 のビット 7 をクリアまたはセット、 もしくはコントローラポート 2 のピン 6 を1から0に変更することによってラッチされる。
読み込む値は 9 ビットのみが使用される。 上位バイトの 1 ~ 7 ビットは PPU2 のオープンバス状態になっている。 それぞれのレジスタは、別々に下位/上位バイトのセレクタを保存している。 0x213f が読み込まれる時に、下位/上位セレクタはリセットされる。 (カウンタがラッチされている時にはリセットされない)
Hカウンタは 0 ~ 339 の範囲の値を取り、22 ~ 277 が画面に表示される。 Vカウンタは、NTSC モードでは 0 ~ 261 の範囲の値を取り (他の全てのフレームがインターレスの時、262にもなる)、 PAL モードでは 0 ~ 311 (インターレス時312?) の値を取る。 1 ~ 224 の範囲が画面に表示される。 (オーバースキャンが有効の時は 1 ~ 239(?))
アクセスフラグ : 読バ強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
t | r | m | - | v | v | v | v |
'-' になっている部分は、PPU1 のオープンバス状態を表す
アクセスフラグ : 読バ強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
f | l | - | p | v | v | v | v |
'-' になっている部分は、PPU2 のオープンバス状態を表す
注 : このレジスタ読み込み時の副作用として、 0x213c ~ 0x213d の上位/下位バイトセレクタが下位にリセットされる。
アクセスフラグ : 読書バ強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
x | x | x | x | x | x | x | x |
アクセスフラグ : 読書バ強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
x | x | x | x | x | x | x | x |
アクセスフラグ : 読書バ強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
x | x | x | x | x | x | x | x |
アクセスフラグ : 読書バ強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
x | x | x | x | x | x | x | x |
これらのレジスタは、SPC700 との通信用に使われる。 ここに書き込んだ値は、そのまま読み込み時にも同じ値が 返ってくるわけではない。 書き込んだ値は、SPC700 の 0xF4 ~ 0xF7 レジスタに入り、 読み込み時には SPC700 が操作した値が読み込まれる。
読み込み中に SPC700 が値を書き込んだ場合、 古いものと新しいものを論理 OR した結果が読み込まれる。 実際の読み込みサイクルにどのくらいの時間がかかるのかは分からないが、 6サイクルのメモリアクセス中、最後の3マスターサイクルに 当たるだろうと推測できる。
これらのレジスタは、0x2140 ~ 0x217F の間、 ミラーリングされる。
アクセスフラグ : 読書バ強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
x | x | x | x | x | x | x | x |
0x2181 ~ 0x2183 でセットされた WRAM アドレスに対して 書き込み/読み込みを行います。 操作ごとにアドレスはインクリメントされます。 読み込み書き込みを組み合わせた場合、動作は不定になりますが、 論理的に動作すると思われます。
DMA で、WRAM からこのレジスタにアクセスすることはできず、 WRAM への書き込み操作は実行されません。 同様に、このレジスタから WRAM にアクセスすることはできず、 書き込まれる値は、オープンバスの値になります。 双方共に、0x2181 ~ 0x2183 はインクリメントされません。
アクセスフラグ : 読書下強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
x | x | x | x | x | x | x | x |
アクセスフラグ : 読書中強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
x | x | x | x | x | x | x | x |
アクセスフラグ : 読書上強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
x | x | x | x | x | x | x | x |
ここには、0x2180 からアクセスされるアドレスを入れます。 WRAM は SNES メモリスペースの $7E:0000 ~ $7F:FFFF と、 バンク 0x00 ~ 0x3F, 0x80 ~ 0xBF の 0x0000 から 0x1FFF にもマップされています。
いくつかのドキュメントで、これら 0x2181 ~ 0x2183 のレジスタは 書き込みだけでなく、読み込みもできるように書かれていますが、それは誤りです。 読み込み時にはオープンバスの値が返ります。
DMA で、WRAM からこれらのレジスタに対してアクセスはできませんが、 他の場合は DMA の書き込み動作が通常通り行われます。 これは、DMA で 0x2180 を通して ROM内 の 1 つのテーブルから RAM の連続した領域に書き込むことができるということです。
このレジスタの値は、インクリメント時にページ境界をまたぐことはありません。
アクセスフラグ : 読書バ強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
- | - | - | - | - | - | c | a |
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
- | - | - | - | - | - | - | l |
アクセスフラグ : 読?バ強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
- | - | - | 1 | 1 | 1 | d | b |
これらのレジスタは、本体前面のコントローラポートに直接繋がっている。
注 : 0x4017 の 1になっているところは Gnd に繋がっており、常に1になる。
普通のジョイパッドは次の順番でデータを返す。 B, Y, Select, Start, Up, Down, Left, Right, A, X, L, R, 0, 0, 0, 0 ラッチされると順番はクリアされる?
参照
Wikipediaより
アクセスフラグ : 書バ強VH?
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
n | - | y | x | - | - | - | a |
いくつかのゲームはここから値を読み込もうとしますが、 オープンバス値が読み込まれているものと考えられます。
このレジスタは、電源 ON 時、リセット時に 0x00 に初期化されます。
アクセスフラグ : 書バ強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
a | b | x | x | x | x | x | x |
基本的にこれは 8 ビットの I/O ポートですが、 'b' はコントローラポート 1 の 6 ピンに接続されていて、 'a' はコントローラポート 2 の 6 ピンと、PPU のラッチラインに接続されています。 'a' が 1 の時に 0 を書き込むと、0x2137 読み込み時のように、 H・Vカウンタがラッチされます (0 に遷移する時にラッチが起こる)。 'a' が 0 の時は、ラッチは起こりません。
このレジスタの他の変化は不明です。 0x4213 は、この I/O ポートの対になる入力用ポートです。
IO ポートは電源 ON 時に全て 1 が入っているかのように初期化されます。 リセット時はたぶん変化ありません。
アクセスフラグ : 書バ強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
m | m | m | m | m | m | m | m |
アクセスフラグ : 書バ強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
m | m | m | m | m | m | m | m |
0x4202 に書き込みした後、 0x4203 に書き込む。 0x4203 に書き込んだ 8 "マシンサイクル" (およそ 48 マスターサイクル) 後に、 乗算した結果を 0x4216 ~ 0x4217 から読み込むことができる。 この動作で 0x4202 は変化することはなく、 そのままリセットせずに 0x4203 に違う値を書き込むと、 新しい結果が得られる。
乗算は unsigned の値で行われる。
電源ON時に 0x4202 は 0xff で初期化され、 リセット時には変化しない。
アクセスフラグ : 書下強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
d | d | d | d | d | d | d | d |
アクセスフラグ : 書上強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
d | d | d | d | d | d | d | d |
アクセスフラグ : 書バ強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
b | b | b | b | b | b | b | b |
0x4204, 0x4205 に書き込んでから 0x4206 に書き込みます。 0x4206 に書き込んだ 16 "マシンサイクル" (およそ 96 マスターサイクル) 後に、 除算結果の商を 0x4214 ~ 0x4215 から、 余りを 0x4216 ~ 0x4217 から読み込むことができます。 0x4202 と同様に、たぶん 0x4204, 0x4205 もリセットされません。
除算は unsigned の値で行われます。 0 を除数に割り算した時 (Division by 0) は、商が 0xFFFF になり、 余りが 0x4204, 0x4205 の値になります。
電源ON時に、0x4204, 0x4205 は 0xffff で初期化されます。 リセット時には変化しません。
アクセスフラグ : 書下強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
h | h | h | h | h | h | h | h |
アクセスフラグ : 書上強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
- | - | - | - | - | - | - | h |
0x4200 のビット 4 がセット、ビット 5 がクリアになっていて、 H カウンタがこのレジスタに設定された値に達した時、 スキャンライン毎に IRQ が発生します。 ビット 4, 5 が両方ともセットされている時は、 V カウンタが 0x4209 ~ 0x420a にセットされた値と同じ時だけ IRQ が発生します。
H カウンタは 0 ~ 339 の範囲で変化します。 これより大きい値がセットされた時には、IRQ は発生しません。
電源ON時に、HTIME は 0x1ff で初期化されます。 リセット時には変化しません。
アクセスフラグ : 書下強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
v | v | v | v | v | v | v | v |
アクセスフラグ : 書上強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
- | - | - | - | - | - | - | v |
0x4200 のビット 5 がセット、ビット 4 がクリアになっていて、 V カウンタがこのレジスタに設定された値に達した時に IRQ が発生します。 ビット 4, 5 が両方ともセットされている時は、 V カウンタがこのレジスタにセットされた値と同じ、 かつ H カウンタが 0x4207 ~ 0x4208 で設定した値に 達した時に IRQ が発生します。
テレビの方式が NTSC の時、V カウンタは 0 ~ 261 の値を取ります。 (他の全てのフレームでインターレスモードが有効の時、262 にもなる) PAL の時は 0 ~ 311 の値を取ります (インターレス時 312?)。 これらより大きい値を設定した時、IRQ は発生しません。
電源ON時に、VTIME は 0x1ff で初期化されます。 リセット時には変化しません。
アクセスフラグ : 書バ強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
詳細は 0x43x0 ~ 0x43xA を参照してください。
DMA転送中にHDMAの初期化または転送が発生した場合、 DMAはその間停止されます。 現在使用中のDMAチャネルと同じチャネルでHDMAが発生した場合は、 DMAはすぐさま停止され、その時使われていたレジスタの値を使って HDMAは転送を継続します。他のDMAチャネルは影響を受けません。
電源ON時、リセット時にこのレジスタは 0x00 で初期化されます。
アクセスフラグ : 書バ強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
詳細は 0x43x0 ~ 0x43xA を参照してください。
DMA転送中にHDMAの初期化または転送が発生した場合、 DMAはその間停止されます。 現在使用中のDMAチャネルと同じチャネルでHDMAが発生した場合は、 DMAはすぐさま停止され、その時使われていたレジスタの値を使って HDMAは転送を継続します。他のDMAチャネルは影響を受けません。
フレーム処理中にHDMAチャネルが有効になった場合、 そのチャネルは次のHDMAポイントで開始されます。 HDMAレジスタの初期化処理は、スキャンライン 0 の HDMAポイントの 前でのみ発生するので、HDMA を有効にする前に これらのレジスタを手動で初期化する必要があります。 フレーム中にすでに停止されているチャネルは、 この方法によって再度開始することはできません。
チャネル指定ビットに 0 を書き込むとき、現行の HDMA チャネルは停止されます。 この転送は、1 を書き込むことで再開することができます。
電源ON時、リセット時にこのレジスタは 0x00 で初期化されます。
アクセスフラグ : 書バ強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
- | - | - | - | - | - | - | f |
電源ON時(リセット時も?)に、このレジスタは 0x00 で初期化されます。 詳細は memmap.txt を参照してください。
アクセスフラグ : 読バ強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
n | - | - | - | v | v | v | v |
電源ON時またはリセット時に、NMI はクリアされる。
'-' になっているビットはオープンバス。
アクセスフラグ : 読バ強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
i | - | - | - | - | - | - | - |
説明はないが、他のドキュメントでは このレジスタが読み込み/書き込み可能と書かれている。
電源ON時、リセット時に IRQ はクリアされる。
'-' のビットはオープンバス。
アクセスフラグ : 読バ強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
v | h | - | - | - | - | - | a |
説明はないが、他のドキュメントでは このレジスタが読み込み/書き込み可能と書かれている。
アクセスフラグ : 読バ強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
a | b | x | x | x | x | x | x |
このレジスタは、I/O ポートからデータを読み込む時に使う。 0x4201 から 0 をセットした時、このレジスタから 0 が読み込まれる。 0x4201 から 1 をセットした時は、このレジスタから 0 または 1 が読み込まれる。 これは、I/Oポートに接続されたデバイスがこのビットに 0 をセットするかどうかに 関連している。
'b' はコントローラポート 1 の 6 ピンに接続されていて、 'a' はコントローラポート 2 の 6 ピンと、PPU のラッチラインに接続されています。
0x4201 は、この I/O ポートの対になる出力用ポートです。
アクセスフラグ : 読下強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
q | q | q | q | q | q | q | q |
アクセスフラグ : 読上強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
q | q | q | q | q | q | q | q |
0x4204,0x4205 に書き込んだ後に 0x4206 に書き込んだ時、 0x4206 への書き込みから 16 マシンサイクル (およそ 96 マスターサイクル) 後に このレジスタから除算結果の商を読み込むことができる。 剰余は 0x4216,0x4217 から読み込む。
除算は、unsigned で行われる。
アクセスフラグ : 読下強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
x | x | x | x | x | x | x | x |
アクセスフラグ : 読上強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
x | x | x | x | x | x | x | x |
0x4202 に書き込んだ後に 0x4203 に書き込んだ時、 0x4203 への書き込みから 8 マシンサイクル (およそ 48 マスターサイクル) 後に このレジスタから乗算結果 (積) を読み込むことができる。
0x4204,0x4205 に書き込んだ後に 0x4206 に書き込んだ時、 0x4206 への書き込みから 16 マシンサイクル (およそ 96 マスターサイクル) 後に このレジスタから除算結果の余り (剰余) を読み込むことができる。
乗算、除算ともに unsigned で行われる。
アクセスフラグ : 読下強VH常
アクセスフラグ : 読上強VH常
アクセスフラグ : 読下強VH常
アクセスフラグ : 読上強VH常
アクセスフラグ : 読下強VH常
アクセスフラグ : 読上強VH常
アクセスフラグ : 読下強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
a | x | l | r | 0 | 0 | 0 | 0 |
アクセスフラグ : 読上強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
b | y | e | t | U | D | L | R |
上の表は、ジョイパッドの時のみ当てはまる (ジョイパッド以外のものを接続した時には当てはまらない)。 自動ジョイパッド読み込みは、0x4016,0x4017 を 16 回読み込み、 0x4218 ~ 0x421F に値をセットする。
0x4200 のビット 0 の、自動ジョイパッド読み込みフラグが 有効になっている時のみこれらのレジスタの値が更新される。 更新中は、0x4212 のビット 0 の、 自動ジョイパッド読み込みステータスがセットされる。 この間に読み込み操作を行うと、不正な値が返る。
詳しくは コントローラ の項目を参照してください。
アドレスと名前の中の 'x' には、DMAのチャネル番号が入る。 DMA・HDMA共に 0 ~ 7 の 8 個のチャネルがある。
アクセスフラグ : 読書バ強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
d | a | - | i | f | t | t | t |
値 | モード | 内容 |
000 | 1レジスタ1書き込み | 1 バイト: p |
001 | 2レジスタ1書き込み | 2 バイト: p, p+1 |
010 | 1レジスタ2書き込み | 2 バイト: p, p |
011 | 2レジスタ2書き込み(それぞれ) | 4 バイト: p, p, p+1, p+1 |
100 | 4レジスタ1書き込み | 4 バイト: p, p+1, p+2, p+3 |
101 | 2レジスタ2書き込み(交互) | 4 バイト: p, p+1, p, p+1 |
110 | 1レジスタ2書き込み | 2 バイト: p, p |
111 | 2レジスタ2書き込み(それぞれ) | 4 バイト: p, p, p+1, p+1 |
HDMA転送中にこのレジスタに書き込みを行うと、未知の動作をするか、 あるいは次の転送時に変更が適用される。 このレジスタは、電源オン時に0xffにセットされる。リセット時は変更されない。
参照 : DMAとHDMA
アクセスフラグ : 読書バ強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
p | p | p | p | p | p | p | p |
このレジスタは、アクセスするBバスアドレスを、 $00:2100 ~ $00:21ff の間で指定する。 2~4個のレジスタを操作するモードでは、0x21ff → 0x2100 に ラップされる。0x2200 にアクセスされるわけではない。
HDMA転送中にこのレジスタに書き込みを行うと、未知の動作をするか、 あるいは次の転送時に変更が適用される。 このレジスタは、電源オン時に0xffにセットされる。リセット時は変更されない。
参照 : DMAとHDMA
アクセスフラグ : 読書下強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
l | l | l | l | l | l | l | l |
A1TxL・A1TxH・A1Bxはセットで使用する。
アクセスフラグ : 読書上強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
h | h | h | h | h | h | h | h |
A1TxL・A1TxH・A1Bxはセットで使用する。
アクセスフラグ : 読書バ強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
b | b | b | b | b | b | b | b |
A1TxL・A1TxH・A1Bxはセットで使用する。 これらは、DMA転送用の「アドレス」開始位置に バスAアドレスを指定するか、もしくは HDMA転送用にHDMAテーブルの開始位置を指定する。 バスAはバスBレジスタにアクセスしない。 このアドレスに$00:2100を指定した場合、オープンバスの値が返る。
HDMA転送中にこのレジスタに書き込みを行うと、未知の動作をする。 今のところ、0x43x4のみが転送に影響するだろうと考えられている。 値の変更は、次のHDMA初期化時に適用される。
DMA転送中は、0x43x4 の設定でアドレスが固定されていない場合、 0x43x0 に設定された方向で 0x43x2/3 の値が インクリメントまたはデクリメントされる。 これらのレジスタはHDMAには影響しない。
このレジスタは、電源オン時に 0xFF にセットされる。リセット時は変更されない。
参照 : DMAとHDMA
アクセスフラグ : 読書下強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
l | l | l | l | l | l | l | l |
DASxL・DASxH・DASBxはセットで使用する。
アクセスフラグ : 読書上強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
h | h | h | h | h | h | h | h |
DASxL・DASxH・DASBxはセットで使用する。
アクセスフラグ : 読書バ強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
b | b | b | b | b | b | b | b |
DASxL・DASxH・DASBxはセットで使用する。
DMAの時、0x43x5/6 は転送バイト数を指す。 1が指定された場合、転送モードで2か4のレジスタの転送が 指定されている時でも、1バイトのみ転送される。 (5が指定された場合、最初の転送で4つのレジスタが転送され、 2回目は1つだけが転送される。) 0x0000が指定された場合は、0x10000バイトの転送を指す。 0回ではないので注意。
DMA転送中は 0x43x5/6 がデクリメントされ、 完了時にはいつも0になる。
HDMAの時、0x43x7には間接アドレッシングモードのバンクバイトを指定する。 間接アドレスは 0x43x5/6 にコピーされ、インクリメントされる。 直接HDMAの時には、これらのレジスタは使用されない。
間接HDMAの最中に 0x43x7 に値が書き込まれた時、変更は次の転送時に適用される。 0x43x5/6 に書き込まれた場合も、同じように次の転送時に適用されるように動作するが、 こちらの場合は、繰り返しモードが指定された時にのみ適用される。 (普通のモードの場合、間接アドレスは転送開始前にテーブルから読み込まれる) 直接HDMAモードでは何も起こらないだろう。
このレジスタは、電源オン時に0xffにセットされる。リセット時は変更されない。
参照 : DMAとHDMA
アクセスフラグ : 読書下強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
a | a | a | a | a | a | a | a |
A2AxL・A2AxHはセットで使用する。
アクセスフラグ : 読書上強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
a | a | a | a | a | a | a | a |
A2AxL・A2AxHはセットで使用する。 フレーム開始時、0x43x2 ~ 0x43x3 の値は全てのアクティブなHDMAチャネルにコピーされ、 テーブルの値が読み込まれてこのレジスタの値は更新される。 HDMAをフレーム処理中に開始しようとした場合 (もしくはテーブルをフレーム処理中に変更した場合)、 このレジスタに値が書き込まれている必要がある。 フレーム処理中にこのレジスタに書き込まれた内容は、 次のスキャンラインで適用される。
このレジスタはDMAでは使われない。
このレジスタは、電源オン時に0xffにセットされる。リセット時は変更されない。
参照 : DMAとHDMA
アクセスフラグ : 読書バ強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
r | c | c | c | c | c | c | c |
注(奇妙な動作) : このレジスタは、r の状態と c が 0 になっているかをチェックする前に デクリメントされる。 なので、0x80 をこのレジスタにセットすると、"0行を繰り返し有り" で 実行するのではなく、"128行を繰り返し無し" で実行してしまう。 同様に、0x00 の指定は "チャネルの停止" を意味せず、 "128行を繰り返し有り" で実行してしまう。
このレジスタは、V-Blank 終了時にアクティブな全てのHDMAチャネルで初期化される。 フレーム処理中にHDMAを開始しようとした場合、このレジスタを初期化しなければならない。 HDMA転送処理中に行カウント値か繰り返しフラグを変更した時は、 次のスキャンラインで変更が適用される。 繰り返しフラグは、次の転送期間の終了まで変更が適用されないので注意すること。
このレジスタは、電源オン時に0xffにセットされる。リセット時は変更されない。
参照 : DMAとHDMA
アクセスフラグ : 読書バ強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
? | ? | ? | ? | ? | ? | ? | ? |
0x43xB と 0x43xF は同じレジスタを指す。
このレジスタは、電源オン時に0xffにセットされる。リセット時は変更されない。
アクセスフラグ : 読書バ強VH常
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
? | ? | ? | ? | ? | ? | ? | ? |
0x43xB と 0x43xF は同じレジスタを指す。
このレジスタは、電源オン時に0xffにセットされる。リセット時は変更されない。