MSX の画面について
基本技術を説明し終わったところで、MSX の話です。
MSX 、と書いているけど、TMS9918の話です。SG-1000 も入りますよ。
そして、MSX2 は説明しません。話がややこしくなりすぎるから。
ファミコン・MSX・SG-1000 は共に 1983年に発売されましたが、TMS9918 自体の発売は 1981年です。
たった2年の違いですが、コンピューター業界での2年は大きいです。
そのため、機能的にも TMS9918 の方がはるかに単純です。
ファミコンより前に、こちらの機能を紹介しましょう。
目次
80年代の画面表示技術(別ページ)
ファミコンの画面について(別ページ)
50年代の画面表示技術(別ページ)
表示色
使える色は16色です。
テレビ画面は、赤・青・緑の3原色で作られます。それぞれが「ある」「なし」の組み合わせだと、8色。
16色と言うのは少なく思えますが、当時としてはむしろ多い方でした。
TMS9918の16色は微妙な中間色が多いのが特徴です。
アナログテレビのアンテナ線に接続して画像出力するのを前提としており、RGB で生成しているのではないためです。
0 透明 |
1 #000000 |
2 #3EB849 |
3 #74D07D |
4 #5955E0 |
5 #8076F1 |
6 #B95E51 |
7 #65DBEF |
8 DB6559 |
9 #FF897D |
A #CCC35E |
B #DED087 |
C #3AA241 |
D #B766B5 |
E #CCCCCC |
F #FFFFFF |
0番の色の「透明」は、スプライト用です。
テキスト画面で使用した場合は、背景色として設定した色と同じ意味になります。
ここで示した RGB 値は参考であり、MSX がこの値を出力したわけではありません。
(前述のとおり、アナログテレビ放送と同等の信号を直接出力していました)
上記RGB表記は、NTSC信号を一番近いと思われる色に変換したものですが、「近い色」は主観も入るため、英語版 Wikipedia に掲載された色を使用しています。
2013.08.26 表記変更について
記事公開当初、カラーパレットとして以下のものを掲載していました。
0 透明 |
1 #000000 |
2 #22DD22 |
3 #66FF66 |
4 #2222FF |
5 #4466FF |
6 #AA2222 |
7 #44DDFF |
8 #FF2222 |
9 #FF6666 |
A #DDDD22 |
B #DDDD88 |
C #228822 |
D #DD44AA |
E #AAAAAA |
F #FFFFFF |
これは、MSX2 で使用されていた「公式」の RGB 値を、WEB で使用できる RGB 値に変換したものです。
先に書いたように、NTSC で出力する MSX の色を RGB で表記することはできません。そのため、エミュレータ間でも色に関しては微妙な差異があります。
しかし、MSX2 では RGB 出力になり、互換性のために「MSX1 相当」のRGB 値を公式に定めていました。
微妙な差異があるパレットを使うよりも、公式があるならそちらを使おう、と考えたために、当初は MSX2 相当のパレットを掲載していました。
その後「微妙な中間色が出た、と言う話を出すなら、MSX2 のパレットは不適切ではないか」という指摘をいただきました。
言われてみれば全くその通りで、MSX2 では RGB 各 3bit しか使えなかったため、各 8bit の現在の RGB値よりも微妙な色が出しにくいのです。MSX2 はRGB だが公式に値を定めていた、と言う知識にとらわれ過ぎ、もっとも大事な事を見落としていました。
こうやって並べてみてみると…結構違いますね。指摘してくださった @bakuchikujuu さんに感謝します。
キャラクタデータ
MSX ではテキスト画面のキャラクターと、スプライトキャラクターは明確に別のものです。
テキスト画面は、8x8 ドットのキャラクターとして作成します。一方、スプライトは 16x16ドットで作成します。
テキスト画面に関しては、いくつかの画面モードがありました。
全てを説明すると煩雑になりますので、ここではゲームなどで一番使われた画面モード、GRAPHIC 2だけを説明します。