MSX1の色味をMSX2で再現する

 MSX規格は互換性を謳っており、後継機種に新機能が追加されても前機種との共通部分については基本的に同じハズです。しかし最近、MSXとMSX2では画面表示の色味がかなり異なるということを知りました。マジかよ。私がMSXユーザーになった頃は既にMSX2が主流となって久しく、いわゆるMSX1に触れる機会が無かったので全く知りませんでした。

 そこでデフォルト16色を表示する簡単なプログラムを書いて、みんな大好きWebMSXでMSX1とMSX2を切り替えて各々実行してみることに。

 おお、確かに結構違う!(左:MSX1/右:MSX2)

 MSX1は彩度低めでくすんだ感じ、逆にMSX2は彩度高めのどぎつい印象を受けます。このためMSX1用のゲームをMSX2でプレイすると画面の雰囲気がかなり変わる様です。これは一体どういうことだ。ベンゴシを呼べ。


【スポンサードリンク】

 調べてみるとMSX1に採用されているVDP(ビデオチップ)は16色固定のTMS9918。これはMSX専用という訳ではなく当時様々なゲーム機やパソコンに幅広く使われていたメジャーなビデオチップで、専門外なので詳しくは分かりませんがRGBではなくアナログTV放送の信号を再現する?方法で映像を生成しており各色の厳密なRGB値を示すことはできないとのこと。更に同じMSX1でも機種や接続するディスプレイなど環境によって色合いにバラツキがあったなんて話も聞きますが、とりあえず今回はMSXエミュレータとして一定の評価を得ているWebMSXでの表示色を基準にしました。

 一方MSX2に採用されているVDPは実質MSX2のために開発されたV9938でこちらはおなじみのRGB方式、もちろんTMS9918(=MSX1)の上位互換です。そのため規格としてデフォルト16色のRGB値が定められており、上記の様に彩度が異なるものの基本的にはTMS9918の固定16色に準じた色合いになっています。なるほど、アナログ放送を模して生成された微妙な色合いを各8階調の9bitRGBで再現しようとしたらそりゃあ無理が出るってもんだよな~、というのは素人の私でもなんとなく想像が付きます。

 とはゐゑ、もうちょっとなんとかならんの?とも思うので、MSX2側でパレット設定のRGB値を調整してみたところこれが意外となんとかなりました。

 結構よくない?よくなくなくない?(左:MSX1/右:MSX2[調整版])

 MSX2デフォルト設定との比較(左:MSX2[デフォルト色]/右:MSX2[調整版])

 流石に全く同じという訳にはいきませんが、少なくともデフォルト色よりはかなりMSX1に寄せることができたのではないかと思います。

 このMSX1とMSX2の色味の違いは界隈では以前から知られていて様々な解釈もあった様ですが、後年行われたV9938の開発者インタビューでは「TMS9918の開発元であるTI社はV9938の開発に関わっておらず、互換部分は公開情報を基に独自設計していてデフォルト色との差異も認識していなかった」なんて言われていてひっくり返りました。なんともまあ大らかな時代だったのでしょう。また、前述の通りTMS9918はアナログ放送を模して映像生成しているのでNTSCとPALでも色合いが違うよなんて話も聞きましたが、今回基準にしたWebMSXではNTSCとPALを切り替えてもその違いを確認できなかったのでスルーしています。

 最後に、今回調整したパレット設定のBASICリストを貼っておきます。コピペしてご自由にお使いください。

100 REM MSX1/TMS9918 approximate color
110 COLOR = (0,0,0,0)
120 COLOR = (1,0,0,0)
130 COLOR = (2,2,5,2)
140 COLOR = (3,3,6,3)
150 COLOR = (4,2,2,6)
160 COLOR = (5,4,3,7)
170 COLOR = (6,5,3,2)
180 COLOR = (7,3,6,7)
190 COLOR = (8,6,3,2)
200 COLOR = (9,7,4,3)
210 COLOR = (10,6,5,3)
220 COLOR = (11,6,6,4)
230 COLOR = (12,2,4,2)
240 COLOR = (13,5,3,5)
250 COLOR = (14,6,6,6)
260 COLOR = (15,7,7,7)

タイトルとURLをコピーしました