続・PCエンジン版R-TYPEの話

遥か遠い昔、PCエンジン版R-TYPEのコトという記事を書いたのだけど、最近、これについてTwitterで聞かれて「どうしてオーバークロックになるのか?」という説明がうまく出来なくて、ずっと考えていたのだけど、どうしてこれがオーバークロックになるのか、うまい(と思う)説明を思いついたので、説明してみたい。
まず縦1ドット、横Nドットの紐のように細い横長の画面があると考えて欲しい。
当時のゲームマシンは今のように複数画面分のフレームバッファを持たず(持てるわけもないメモリ事情だった)、この1ドットの横長の線を水平帰線期間毎に、1ドットずつ下に下りながら、だいたい250回ほど描くことで画面を作っていた。
この1ドットの線をラインバッファと呼ぶ。ここで1本のラインバッファを作るのではなく、スプライト用のラインバッファバックグラウンド(背景画面)用のラインバッファがあり、この2つを水平帰線期間毎に描画して、合成して画面を作っている…と想像して欲しい(この説明は正確には違うのは百も承知だ)。

ブラウン管テレビの原理や垂直帰線期間・水平帰線期間といったコトについての説明は勘弁していただきたい。
ココとかココとか、なんか比較的わかりやすいと思う。

そしてPCエンジンが横256ドットモードで動いているとする。
バックグラウンド(背景画面)のラインバッファは当たり前だけど256ドット。
次にスプライトはというとPCエンジンのスプライトは最大横が32ドットになるので、32ドット*16個が最大になり、512ドット分ということになる。
つまりPCエンジンの256ドットモードでは、256+512=768で、水平帰線期間毎ごとに最大768ドット分の絵を描くことになる。
では、これが320ドットモードになるとどうなるのか?
バックグラウンドが320ドットになるので320+512=832ドット。
832ドット分の絵を描くことになり、256ドットモードより、64ドット増えることになる。
ところが水平帰線期間は一定の長さで変わらない。
だから追加の64ドット分を描くために、832/768=1.08で、8%ほど速いスピードで描画することが要求される。すなわち8%ほど速いスピードでVRAMやイロイロなところにアクセスすることになる。
そして、8%ほどいろんなところに速くアクセスする(可能性がある)のは、当時使われていたRAMの保証の範囲を超えていた。
だからNECに「使っちゃダメ!」と、怒られたわけだ。
ここでスプライトの幅が32ドット最大だったことを思い出して欲しい。増えた64ドットはスプライト2つ分。なので横に並ぶスプライトの数を最大14個に設定すると…768ドット分の描画になり、256ドットモードと同じ描画量で済むことになる。
かくして、PCエンジンの320ドットモードではスプライトは14個しか並ばなかったわけである。

LinkedIn にシェア
Pocket