ファミコンのプログラム4 (563レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

266
(5): 名前は開発中のものです。 [sage] 2014/06/08(日) 02:10:46.27 ID:CkZRo6BG(1/4) AAS
>>260

> VBlankのタイミングと書き換えは理解しずらいのですが、ファミコンのPPUの仕様なんですかね。

VBlankの意味を理解していない節があるので、まずは、ブラウン管の話からします。
機知の情報かも知れませんが聞いてください。

ブラウン管の裏から電子銃で電子を飛ばし、ブラウン管表の蛍光面を発光します。
真っ直ぐ飛ばしただけでは、ただの点なので、磁界をかけて電子が飛ぶ方向を変えて
左上から右へ水平方向に線を書くように発光させ、再び左端に戻ってさっきより
ちょっと下の位置で同じように水平方向の線を発光させます。
これを画面下まで繰り返して、再び左上に戻ります。
これをすばやく繰り返すことで、ブラウン管の蛍光面全体に画像を表示します。(ラスタスキャン方式)
電子の飛ばし先が右端から左端に戻る期間を水平帰線消去期間(HBlank期間)、
下端から上端に戻る期間を垂直帰線消去期間(VBlank期間)と呼びます。
267
(1): 名前は開発中のものです。 [sage] 2014/06/08(日) 02:12:41.17 ID:CkZRo6BG(2/4) AAS
>>266

続き

VBlank期間は、一瞬で戻るのではなく、NTSC(日本のアナログ放送の信号規格)の場合
20本分の横線を描くぐらいの時間があります。この間、電子銃から電子は飛びません。

非VBlank期間は、ファミコンのPPUは画像の信号を作るため、
CHR-ROMからパターンを読み込んだり、VRAMからネームテーブルや
属性情報を読み込んでいて、PPUの信号線(PPUバス)を占有しています。

VBlank期間は、PPUが画像の信号を作らないので、PPUバスは開放されており
CPUはPPUを介してPPUバスにつながっているVRAMにアクセスできます。

「VBlank待ちの直後にVRAMの書き換えを行え」というのは、PPUが映像信号を
作るのに邪魔にならないタイミングでVRAMにアクセスしなさいということです。
268
(1): 名前は開発中のものです。 [sage] 2014/06/08(日) 02:53:09.19 ID:CkZRo6BG(3/4) AAS
>>267

続き

非VBlank期間中にCPUがVRAMにアクセスできる方法があります。
PPUレジスタ $2001 のbit3とbit4を0にして、BGとスプライトを非表示にすることです。
画像の信号を作るためのPPUのCHR-ROMやVRAMへのアクセスが止まるので
PPUバスが開放され、CPUはPPUを介してVRAMにアクセスできます。

代わりに、画面に何も表示されない箇所が現れることになります。
BGとスプライトを非表示にするタイミングにばらつきがあると、
画面がちらつく現象となります。

> VBlankのタイミングと書き換えは理解しずらいのですが、ファミコンのPPUの仕様なんですかね。

ファミコンの設計による制限であるため、仕様と言えば、その通りです。
269
(1): 名前は開発中のものです。 [sage] 2014/06/08(日) 02:54:30.27 ID:CkZRo6BG(4/4) AAS
>>268

続き

同世代の他のパソコンとかでは、表示中にもCPUからVRAMにアクセスできるものが
あるのに、ファミコンで出来ないのはなぜ?

→画面表示用の信号線とCPUからVRAMにアクセスする信号線が別になっているためです。
 VRAMもデュアルポートメモリという、アクセスの口が2つある特別なRAMを使っています。
 ファミコンのWRAMやVRAMに使われているのは、アクセスの口が1つのシングルポートメモリです。
→信号線も増えるため、基板上の配線が複雑化し、基板のサイズや層が増えてコスト増になる可能性があります。

ファミコンのVRAMにデュアルポートメモリを使わなかったのはなぜ?

→コスト削減のためです。
 一般的にアクセスポートが余分にあるデュアルポートメモリの方がシングルポートメモリより部品代が高くなります。
 また、WRAMとVRAMに同じ部品を使うことで、大量に発注し部品メーカーに単価の引き下げを交渉できます。

とりあえず、わかりやすく説明したつもりですが、間違いなどがありましたら
フォローお願いします。>All
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.016s