0x2133 - SETINI (スクリーンモード/ビデオ設定)
アクセスフラグ : 書バ強VH-
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
s
|
e
|
-
|
-
|
p
|
o
|
I
|
i
|
-
s : 外部同期
"sfx" グラフィックスのスーパーインポーズに使用します。
通常は 0 です。このビットについて他に分かることはありません。
SPPU1 チップには "EXTSYNC" (または not-EXTSYNC) というピンがあり、
これは Vcc に繋げられています。
-
e : モード 7 拡張BG
このビットがセットされている時、モード 7 の BG2 が有効になります。
BG2は、BG1と同じタイルとキャラクタデータを使用しますが、
色データの上位ビットは、ピクセルの優先順位として解釈されます。
様々なところで、このビットがビット 7 にも関連している
可能性があると報告されています。
例えば、「外部LSIからのデータ供給有効」というようなものです。
これはもちろん勘違いだと思います。
-
p : 擬似ハイレゾモード有効
サブスクリーンから(ゼロベースで)偶数番号のピクセルを、
メインスクリーンから奇数番号のピクセルを取得することで
水平方向に512ピクセルの解像度を作ります。
カラーマスはモード5/6の時と同じように動作します。
インターレスビットは影響を受けません。
モザイクは通常通り動作します(モード5/6のようにではなく)。
ウインドウによってサブスクリーンはクリッピングされ、
メインスクリーンの左側もクリッピングされます。
右側は想像通りにはクリッピングされません。
ピクセル列 0 はどうなるのか分かりません。
モード 5/6 の時にこのビットをセットしても変更はありません。
-
o : オーバースキャンモード
1の時、通常の 224 行に代わって、239 行が画面に表示されます。
これは、V-Blank の開始が遅れることと、期間が短くなることを意味します。
スクリーンに追加された行はTVに表示されますが、
8ピクセル分上に移動します。
-
I : OBJ インターレス
1の時、BGモードに関係なく、OBJがインターレスモードになり、
半分の高さで表示されます。(ビット 0 参照)
これは、OBJが通常通り描画されるかそうでないかだけを設定します。
TVに対するインターレス信号の出力は下記のビット 0 で指定します。
-
i : スクリーンインターレス
1の時、モード 5 (多分6も) の BG の
スクリーンが 224 (または 239) ではなく、 448 (または 478) ピクセルになります。
他のモードでこのフラグをセットすると、1 ピクセルずつ飛び飛びに表示されます。
タイルマップのそれぞれの項目は、位置を変えることで
高くなったスクリーンを表現します。
(擬似ハイレゾモードのような動作)
また、ハードウェアの方は、 SNES の画面を
普通のインターレス信号で出力するようになります。
オーバースキャンフラグについての注意:
通常の 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には + のみ、または - のみが書き込まれる。
最終更新:2017年02月20日 19:14