2014-06-14 Sat [ 昔のこと::古の技術 ]
遥か遠い昔、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個しか並ばなかったわけである。
まず縦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個しか並ばなかったわけである。
2013-07-11 Thu [ 昔のこと::古の技術 ]
たまたま見つけたサイト http://gikofami.fc2web.com が面白懐かしくて読んでしまったのだけど、この中にラスタースクロールのことが載っていた。
それで以下、サイトより引用。
上のように書かれていて「ああ昔は遠くなりにけり」だなあと思ってしまった。
まず、仮想の241ライン目ではない。
ファミコンが接続されていたNTSCのテレビはスキャンライン=ラスターは525ラインある。
そして本来のNTSC信号では525ラインをインターレース描画で上から下に2回描くことで秒30フレームの画像を作るのだけど、ファミコンなどのテレビゲームマシンはテレビを騙して1フィールド(と表現する)の240ラインを(2回)使うことで、1/60秒毎に絵を作っていた。
では525÷2は? 答え=262.5。
お分かりだろうが、仮想の262ライン目ではなく、NTSCで規定された走査線数までラスターを描画して、フィールドを終了していたわけだ。
こんなものはプログレッシブ当たり前、dot by dot当たり前な、この時代にはなんも意味が無いことだから、わからないのも当たり前なのだけど、いやはや昔は遠くなりにけりだよと笑ってしまったのだった。
※追記。
「仮想」のスキャンラインどころではなく、実在してたのは、昔のアナログテレビを見ていた人ならわかる。
電波が弱かったり、意図的に垂直同期をズラして、ゆっくりとスキャン位置がズレるようにすると、本来ならテレビに映らないVBLANKの領域まで実際に見ることが出来たのである。
それで以下、サイトより引用。
ちなみにVBlank割り込みは240ラインまで描き終えて画面外の仮想の241ライン目を描くタイミングで発生します。 そして仮想の262ラインまで描いてから0に戻ります。(私が調べた限り262までのようですが、なぜ262なのかは、わかりません)
上のように書かれていて「ああ昔は遠くなりにけり」だなあと思ってしまった。
まず、仮想の241ライン目ではない。
ファミコンが接続されていたNTSCのテレビはスキャンライン=ラスターは525ラインある。
そして本来のNTSC信号では525ラインをインターレース描画で上から下に2回描くことで秒30フレームの画像を作るのだけど、ファミコンなどのテレビゲームマシンはテレビを騙して1フィールド(と表現する)の240ラインを(2回)使うことで、1/60秒毎に絵を作っていた。
では525÷2は? 答え=262.5。
お分かりだろうが、仮想の262ライン目ではなく、NTSCで規定された走査線数までラスターを描画して、フィールドを終了していたわけだ。
こんなものはプログレッシブ当たり前、dot by dot当たり前な、この時代にはなんも意味が無いことだから、わからないのも当たり前なのだけど、いやはや昔は遠くなりにけりだよと笑ってしまったのだった。
※追記。
「仮想」のスキャンラインどころではなく、実在してたのは、昔のアナログテレビを見ていた人ならわかる。
電波が弱かったり、意図的に垂直同期をズラして、ゆっくりとスキャン位置がズレるようにすると、本来ならテレビに映らないVBLANKの領域まで実際に見ることが出来たのである。
2013-03-27 Wed [ 昔のこと::古の技術 ]
twitterで、X1やSMC-777などのVRAMがI/Oポートの先にある設計をおかしいハードだと書かれていたので「あー、今の目で見るとわからんか」と思うと同時に、それがゼンゼンおかしいどころでなく、とてもリーズナブルな設計の一つであったのだ、という話をここに書いておこうと、突然思ったので書く。
まず、当時のパソコンでとても主流だったグラフィックスを解説すると640x200。
RGB1ビットずつのデジタル8色。縦横8で割るとわかるが80x25。つまり当時のキャラクタ画面のドットに1:1対応するグラフィクスだ。
これRGB、それぞれのプレーンのサイズをKBで表すと16KB。
今から見ればカスのようなサイズだけど、アドレスバスが16ビットしかない8ビットマシンでは大問題になる。
続きを読む▽
まず、当時のパソコンでとても主流だったグラフィックスを解説すると640x200。
RGB1ビットずつのデジタル8色。縦横8で割るとわかるが80x25。つまり当時のキャラクタ画面のドットに1:1対応するグラフィクスだ。
これRGB、それぞれのプレーンのサイズをKBで表すと16KB。
今から見ればカスのようなサイズだけど、アドレスバスが16ビットしかない8ビットマシンでは大問題になる。
続きを読む▽
2011-06-25 Sat [ 昔のこと::古の技術 ]
質問に答えをコメントしてたんだけど、それだと読みづらいし、書きたいことも書ききれないので、一つの記事になると思うものをまとめておくことにした。
20年も前のゲームマシンの開発環境のこと書いて、思い出すのに一生懸命になるとは想像もしてなかったw
なお、コメントされた方の名前は今回は省略させていただくことにした(見られるのでw)。
まず、なにより一番大きな補足がTwitterで教えてもらったこと。
この『ハドソン全科』は小学館の月刊PCエンジン、90年5月号の付録だそうだ。
飛田さんが作ってくださったPDFには奥付らしきものが全くなかったために、推測でしかなかったのだけど、一応裏づけが取れた格好だ。
続きを読む▽
20年も前のゲームマシンの開発環境のこと書いて、思い出すのに一生懸命になるとは想像もしてなかったw
なお、コメントされた方の名前は今回は省略させていただくことにした(見られるのでw)。
まず、なにより一番大きな補足がTwitterで教えてもらったこと。
この『ハドソン全科』は小学館の月刊PCエンジン、90年5月号の付録だそうだ。
飛田さんが作ってくださったPDFには奥付らしきものが全くなかったために、推測でしかなかったのだけど、一応裏づけが取れた格好だ。
続きを読む▽
2011-06-21 Tue [ 昔のこと::古の技術 ]
というわけで、前のアーティクルで書いたとおり、今回はDFの話。
ところで、ちょっと聞かれたのでここに載せておくけれど、ハドソン全科の小冊子の表紙はこれ。
どこにも月刊PCエンジンとは書いていないのだけど、どうして小学館と思ったかというとレイアウトが徳間のPCエンジンファンでも角川のマル勝PCエンジンでもないから。結構、それぞれの出版社で個性があって、これは間違いなく小学館だと思う。
■関連記事
■PCエンジンの開発環境(ROM)
■PCエンジンの開発環境(CDROM)
■PCエンジンの開発環境(補足)
■PCエンジンの開発環境(写真)
続きを読む▽
ところで、ちょっと聞かれたのでここに載せておくけれど、ハドソン全科の小冊子の表紙はこれ。
どこにも月刊PCエンジンとは書いていないのだけど、どうして小学館と思ったかというとレイアウトが徳間のPCエンジンファンでも角川のマル勝PCエンジンでもないから。結構、それぞれの出版社で個性があって、これは間違いなく小学館だと思う。
■関連記事
■PCエンジンの開発環境(ROM)
■PCエンジンの開発環境(CDROM)
■PCエンジンの開発環境(補足)
■PCエンジンの開発環境(写真)
続きを読む▽