mieki256's diary



2018/06/18(月) [n年前の日記]

#1 [game] メガドラは一体何色同時表示ができるのだろう

昔のゲームの動画を検索して眺めているうちに、「メガドライブ 960色」という一文を目にして「どういうことだ…」と気になった。ググってみたら、個人的には面白いと感じる話を見かけたので、一応メモ。

前提となる知識。 :

メガドライブ(以下MD)は、フツーに使うと64色しか同時表示できない。
  • 1パレットにつき、512色の中から16色を設定できる。
  • 4パレット持ってる。
16色×4パレット、なので、64色。

この64色と言うのはちょっと大雑把な値で。正確に言うと、61色を同時表示できる。
  • 各パレットの0番目の色は透明色として扱われるので、1パレットにつき画面に表示できる色は15色。
  • 画面全体の背景色を1色、指定できる。
15色×4パレット+背景色、だから、61色。

ということで、MDは、フツーに使うと61色しか同時表示できないハードウェア。…だったはずなのだけど。

「TOY STORY」がスゴイ。 :

MDのゲームタイトルについて、実際に表示されている色数を実測した動画があるようで。

_Sega Genesis Color Analysis: Can it show more than 64 colors? - YouTube

目にしてビックリ。「TOY STORY」というタイトルが、 _171色を同時表示 している…。

仕組みについて解説してる動画もあった。

_How TOY STORY displayed IMPOSSIBLE IMAGES on the SEGA Genesis (MegaDrive) - YouTube

英語はよく分からんので間違ってるかもしれんけど。どうやらシャドウ/ハイライトモードを駆使して実現してるらしい。

MDには、シャドウ/ハイライトモードという画面表示機能があって、通常はスプライトとBGの優先順位を指定するビットを流用して、色を明るくしたり暗くしたりする機能がある。以下のページの下のほうの解説図も分かりやすいだろうか。

_VDP - MegaDrive Wiki

「TOY STORY」は、このモードを使って、「ノーマル色」+「シャドウ色」+「ハイライト色」の3枚を重ね合わせて表示することで最高171色の同時表示をしている…らしい。スゴイ。頓智の世界だ。なんとなくだけど、色数を増やすために何枚もそこに置くというのは、 _ファミコン版メタルスレイダー・グローリー を思い出したりもして。

もっとも、「TOY STORY」の場合、色数が多い映画版のスクリーンショットという画像が先にあって、それをMD上で表示しなくちゃいけないからこういう頓智が使われたのだろうなと…。最初からMDのオリジナルタイトルとして作られていたら、他のタイトルと同様に、16色や32色でもそれらしく見えるドット絵を描いて対応してたのではあるまいか。

それにしても、このシャドウ/ハイライトモード…。なんでこんな不思議な機能を入れたのか、理由がさっぱり想像できない。元々は何に使おうとしていたんだろう…。

「エクスランザー」は怪しい。 :

当時、「エクスランザー」というタイトルが「128色同時表示」を宣伝文句として謳ってたのだけど。コレについても実測動画があるようで。

_Color Analysis: Ranger X (Sega Genesis) Ex Ranza Sega Mega Drive - YouTube

実測してみたら最高でも65色しか表示してなかったらしい…。誇大広告も甚だしい。いや、61色に比べたら4色多いぞ、一体どうやってんだ、という気もするけれど。

おそらくだけど、アレも洞窟面でシャドウ/ハイライトモードを使って洞窟に差し込む光を表現していたので、「単純に考えたらコレって128色になってるよね」という話だったのかもしれない。上記の実測動画では肝心のその場所を映していないので、もしかするとその場所を実測したらもうちょっと色数が増える可能性もありそうだなと。

ただ、 _「TOY STORY」の仕組みを解説してる動画 内でも説明してるけど、件のモードを使ったからと言って、ユニークな色が単純に倍に増えるわけではなく。いくつかの色はノーマル色と重複してしまうので、実測するとそんなに色数は増えないのだろうなと。それでも、件の動画内では、「理論上は 3375色中から148色を同時表示できる」と計算してるようで。…アレ? どうして「TOY STORY」は171色出てるんだ? 実測の誤差か、それとも計算が間違っているのか。そこはちょっと分からない。

960色同時表示できる可能性もあるらしい。 :

以下の動画が気になった。

_How a SEGA GLITCH created stunning images - YouTube
_I wish I'd perfected this for SONIC 3D. Could have looked AMAZING! - YouTube

英語はまったく分からんので、仕組みが今一つ分からんけど…。どうも、「MDで960色を同時表示できるぞ」と言ってるように見える。違うのかな。

あくまで想像だけど、走査線が画面を描いている最中に背景色の値をゴリゴリと書き換えることで512色同時表示できる、という話なのかもしれない。英語分からんから違うのかもしれないけど。

それに加えて、インターレースモードを使って、1フレーム目と2フレーム目で表示するドットパターンを変えれば、疑似表示ではあるけど前後の中間の色がそこにあるように見えるから960色までイケる、という話なのかも。本当にそういう話なのかは分からんけど。

_「MZ-700に不可能はない」 ならぬ、「メガドラに不可能はない」みたいな話になってきた…。

時間軸で色数を増やすソレ。 :

念のためにちょっと説明。時間軸を使って色の分解能?を増やす方法は、一見するとインチキ臭いけど、液晶ディスプレイでも使われている(場合もある)方法で。

液晶パネルはざっくり大別して、TN、VA、IPSといった種類があるのだけど。VAやIPSに比べると、TNは表示可能な色数が少ないから、そのままだとRGB各8ビットの色数は出せない。けれど、書き換え速度・応答性は、VAやIPSより高速なので…。表示できない色を使ったドットが出てきたら、そこだけ高速にちらつかせて中間色が出てるように疑似表示する、という仕組みの製品が存在していて。

_同じ色数でも画質が違うヒミツ――液晶ディスプレイの「最大表示色/LUT」に迫る (1/2) - ITmedia PC USER

液晶ディスプレイのスペック表を見ると、「約1677万色」「約1620万色」の2種類があったりするけど、後者は疑似表示で出してますよ、という情報なわけで。まあ、昨今は嘘のスペック載せてる製品もたまに出てそうな御時勢だけど…。

_4Kディスプレイのスペック「誤表記」で「2000円」の補償 UPQの見解は? - ITmedia NEWS

何にせよ、足りない分は時間軸を駆使してどうにか、というやり方も、意外と身の回りにあったりするのです、ということで。

画面を描いてる最中にゴリゴリ書き換えるソレ。 :

走査線が画面を描いてる最中にゴリゴリ書き換えるというソレは、MZ-700の野球拳2000を思い出したり。

_Yakyu-ken 2000 for MZ-700

グラフィック画面が無い・文字しか表示できないMZ-700で、どうやってグラフィック画面っぽいものを表示するのか…。表示したいドットパターンとよく似たドットパターンを持っている文字を探し出して、画面を描いてる最中に、CPUが全力でゴリゴリと表示してる文字を書き換える、みたいな。よくもまあ、そんな方法思いつくよなあ…。

まあ、MDの場合、件の動画ではDMAが云々と言ってるようだから、CPUじゃなくてDMAが奮闘してるのかもしれないけど。

パレットを書き換えちゃうソレ。 :

画面を描いてる最中に書き換えるソレと言えば、水面の位置でパレット値を書き換える方法もあったなと…。色んなタイトルでやってるけど、一番有名なのは、やっぱりソニックだろうか。

_Sonic The Hedgehog SEGA Mega Drive Labyrinth Zone Part 1 - YouTube

水面の上と下で色が違ってるけど、水面の位置でパレット値を書き換えて表現してるわけで。このやり方でも、128色以上出せる可能性があるよなと…。

ただ、実機でコレをやると、そこにノイズが出ちゃう。そのノイズを誤魔化すために、ソニックは横一列にスプライトを並べて、表示をチラつかせてノイズがパッと見では分からないように工夫していたりするのだけど。

何にせよ、ソニックのようなメジャーなタイトルでも、64色以上同時表示できる頓智が使われていたのだなあ、ということで。

以上、1 日分です。

過去ログ表示

Prev - 2018/06 - Next
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project