Gigamix Online

懐かしの8bitおもちゃPC「MSX」を骨までしゃぶり尽くそう。MSXの最新ニュース、ブログ。自作ソフトの配布などは公式サイトへ→ https://gigamix.jp/

巷の24bitカラー(RGB888)をMSXの色(RGB333・332)へ変換するのに最適な輝度は何なのか

【2026.01.07更新】MSX Graphic Viewerの情報を追加
【2025.12.31更新】加筆修正
【2022.08.24更新】初版公開

 執筆中。とりあえず記事化する。

事の発端

以下の画像はMSXのSCREEN5と同じ解像度(256×212px)なのだが右1pxごとに輝度が1ずつ増えるグラデーションとなっているRGB888の画像です。左端が0で右端が255。これを各種変換ツールにかけると、RGB888のどこの輝度がRGB333やRGB332での境目になるのか? — ニューファンキー小林 (@nf_ban) 2022年08月01日 21:50

 MSXで使用する画像を実機で作成するぶんにはこの記事は関係ないのですが、最近はWindowsなどのPC上で画像を作成し、各種画像変換ツールを用いてMSXの画像データを作成するシーンも増えてきました。そんななか、変換後の色がツールの特性によって変わることがあります。それぞれのツール作者による変換アルゴリズムが違うためにそのような現象が起きます。そこで、どのツールを使うとどの色に変換されるのかという調査を行いました。

 なお、筆者(nf_ban)は変換アルゴリズムの違いについては「作者の味付け」と考えているため、変換アルゴリズムや変換後の色が統一されるべきといった主張はしません。また、どのツールが良いとか悪いとかの優劣も付けません。

皆さんもレッツチャレンジ!!

 調査に用いたグラデーション画像です。各種ツールでMSXのBSAVE画像として出力するために寸法は256×212px・色はRGとBとで分離しています。RGのほうは15色(赤7色緑7色+黒1色)で変換されるのが理想です。

https://p.gigamix.jp/devmsx/cg/rgb888-rgb333_RG.png

https://p.gigamix.jp/devmsx/cg/rgb888-rgb333_B.png

RGB888→RGB333(512色中16色)

 MSX2のVDP・V9938にて実装された「512色中16色のパレット」は、RGBの輝度がそれぞれ0~7の3bit(8階調)の組み合わせで色を作成します。MSX BASICでは「COLOR=(15,7,7,7)」のように色を定義します。

 R(赤)3bit・G(緑)3bit・B(青)3bitなので「RGB333」と表します。

 ちなみに最近のハードウェアはRGBそれぞれの輝度が8bit(256階調)で「24bitカラー」「RGB888」と表したりします。しかも24bitカラーはもはや「最低限の映像表現」とも言われています。凄い時代ですね。

BMP to MSX

BMP2MSXのRGB333変換結果が出ました。輝度0と7が狭いということは一番暗い色と一番明るい色へ変換されにくいということになります。それと細かいけど、B(青)の輝度0と1がRG(赤緑)と1違う。 — ニューファンキー小林 (@nf_ban) 2022年08月01日 23:02

TINY Bitmap Converter

TINY Bitmap ConverterのRGB333(デフォルト設定)。BMP2MSXと違った仕上がりになります。色補正が柔軟にできるので今回の変換結果はあくまでサンプルの一つということで… — ニューファンキー小林 (@nf_ban) 2022年08月02日 00:57

MSX Screen Converter

MSX Screen ConverterのRGB333。0と7が狭い。 — ニューファンキー小林 (@nf_ban) 2022年08月29日 00:27

piroPAINT 9918(Pixel Converterツール)

piroPAINT 9918のRGB333(デフォルト設定)。単純足切りだけどカラーバランス(色調整)が充実しているのでどうにでもなる。 — ニューファンキー小林 (@nf_ban) 2022年08月29日 00:39

RGB888→RGB332(SCREEN 8)

 MSX2のVDP・V9938の「GRAPHIC7モード(SCREEN8)」にて実装された、256色の固定色です。輝度は赤と緑が0~7の3bit(8階調)に対し、青だけ0~3の2bit(4階調)となっています。

 R(赤)3bit・G(緑)3bit・B(青)2bitだから「RGB332」。3+3+2=8bit、つまり1つの色の点を8bit=1バイトで管理するのです。SCREEN8は固定色なのでパレットの概念がありません。

BMP to MSX

BMP2MSXのRGB332(SCREEN8)変換結果が出ました。R(赤)とG(緑)はRGB333と全く一緒。B(青)はだいぶ違ってて、輝度2が出やすくなる傾向がありそうです。 — ニューファンキー小林 (@nf_ban) 2022年08月01日 23:24

TINY Bitmap Converter

TINY Bitmap ConverterのRGB332(デフォルト設定)。均等でシンプル。SCREEN8とそれ以外ではアルゴリズムが違うのね。色補正機能で分布をいくらでも変えられます。 — ニューファンキー小林 (@nf_ban) 2022年08月02日 23:23
TINYBMPCNVですが、フルカラーの画像を8色や16色で表現する場合、どの色とどの色でディザリングするかでだいぶイメージが変わるので、色空間や減色アルゴリズムの調整機能は盛り盛りにしました。逆にSCREEN8など多くの色が使えるモードは(元画像を調整したほうが早いので)シンプルに変換しています。 — TINY野郎 (@tiny_yarou) 2022年08月04日 19:39

MSX Screen Converter

MSX Screen ConverterのRGB332。単純足切り。RGB333とRGB332でRGのアルゴリズムが違うのなんでだろう… — ニューファンキー小林 (@nf_ban) 2022年08月29日 00:29

piroPAINT 9918(Pixel Converterツール)

piroPAINT 9918のRGB332(デフォルト設定)。アルゴリズムはRGB333とRGB332で全く同じ、単純足切り。カラーバランス(色調整)でどうにでもなるのも同じ。 — ニューファンキー小林 (@nf_ban) 2022年08月29日 00:40

エミュレータの「MSX実機の色」は、RGB888の何色なのか

 エミュレータ上で再現する「MSXの色」はWindows PC上ではどんな輝度で表示されているのか、という調査です。RGB333・RGB332からRGB888への逆変換、というわけです。

MSXPLAYerMSXマガジン永久保存版3 同梱版)

ここから逆パターンいきます。MSXPLAYerのエミュレータの色(RGB333)はPC(RGB888)ではどんな輝度なのか。こんな感じでした。 — ニューファンキー小林 (@nf_ban) 2022年08月29日 22:49
MSXPLAYerのSCREEN8(RGB332)はPC(RGB888)ではどんな輝度なのか。青成分に法則が見えますね。つまり青成分が若干暗くなるわけですな。 — ニューファンキー小林 (@nf_ban) 2022年08月29日 22:51

openMSX

openMSXのエミュレータの色(RGB333)はPC(RGB888)ではどんな輝度なのか。輝度1~6が他のエミュレータより若干明るめに表示される。  openMSXは2pxの下に輝度が1低い1pxが置かれる。同じ色に見えるがデータ上は違う。なんでそうなるの。今回の計測では色面積が広いほうの輝度を採択しています。 — ニューファンキー小林 (@nf_ban) 2022年08月29日 23:42
openMSXのSCREEN8(RGB332)はPC(RGB888)では輝度なのか。青成分のアルゴリズムはWebMSXと同じだが、WebMSXより若干明るく表示される。 — ニューファンキー小林 (@nf_ban) 2022年08月29日 23:44

WebMSX

WebMSXのエミュレータの色(RGB333)はPC(RGB888)ではどんな輝度なのか。なんとMSXPLAYerと全く同じ数値でした。 — ニューファンキー小林 (@nf_ban) 2022年08月29日 22:53
WebMSXのSCREEN8(RGB332)はPC(RGB888)ではどんな輝度なのか。こちらもMSXPLAYerと一つを除いて全て同じ。WebMSXでは青成分の輝度3が255になってる。 — ニューファンキー小林 (@nf_ban) 2022年08月29日 22:55

MSX Graphic Viewer

 調査中

@nf_ban さん、 MSX Graphic Viewerでは、MSX2の標準カラーパレットを以下の値で表現しています。  1: 000000 2: 25da25 3: 6dff6d 4: 2525ff 5: 496dff 6: b62525 7: 49daff 8: ff2525 9: ff6d6d 10: dada25 11: dada92 12: 259225 13: da49b6 14: b6b6b6 15: ffffff — みなしん (@shingo_minagi) 2026年01月05日 21:28

 デフォルトカラーパレットについては以上の情報提供がありました。ありがとうございます。🫡

Susie Plug-in

 調査中