IBM-PC風

本サイト配布のプログラムは、できる限り汎用性のあるものを作りたいという願いを持って制作されています。

Rogueはターミナル上(もしくはコマンドプロンプト上)で動作します。汎用性の観点から、総てのターミナルで表示可能なモードのみを用いているプログラムであることが望ましいわけです。

Rogueのカラー版製作にあたり、流石にカラー表示不能なターミナルは置いておくとして、最低限度のターミナルでも表示可能なモードは何か、再検討しました。その結果出てきたのが次の16色モードです。カラー表示可能なターミナルで、この16色が表示できないものは無さそうですしね(PowerShellは例外です。詳細は章末に記載します)。

16色とは言っていますが、デジタル8色×濃淡2階調=16色って言うことですね。色の帯の上に書かれている6桁の16進数は、左から2桁ずつ、Red-Green-Blue(RGB)の値です。

Rogueのカラー版っていうと、PCでは、IBM-PC版とNEC PC-9801版(8801版も。MS-DOS版ってのもあるそうだけど、見たことない)があります。どんな配色になっているかというと、次の通りです。

一番左にあるのが、Rogueのマップ上出てくるオブジェクト、それがIBM-PCとPC-9801、PC-8801でどんな色で表示されているかを表にしています。

PC-9801、PC-8801は、出てくる16進数値がFFか00しかないのがお解りでしょうか。これらの機種のテキスト画面は、単なるデジタル8色のみの表示しかできないってことです(グラフィック画面は別です。機種にもよりますが、4096色中16色、もしくは8色の表示が可能です)。これらの色は総て、前述の16色ターミナルで完全に再現可能です。

IBM-PCでの使用色を見ると、出てくる16進数値が00/55/AA/FFの4階調、それがRGB3色で4の3乗=64色表示可能なモードを使っていることが分かります。これを先の16色ターミナルで表現するには工夫が要ります。色々考えながら先の表の代替案の部分を埋めていってみます。

16進数は分かりにくいでしょうから、ちょっと換算をしてみましょう。16進数→10進数→%表示を書いてみます。

16色だと、00→0→0%、80→128→50%、(C0→192→75%)、FF→255→100%。

64色では、00→0→0%、55→85→33%、AA→170→67%、FF→255→100%。

64色→16色をする場合、基本的に00→00、55/AA→80、(AA→C0)、FF→FFで良いようです。

良いようですとは言いますが、それがそんな単純には行かないところもあるのです。考えた末に16色への減色案を掲げてみます。2つ候補があるところもありますが、それについては後述。

まず「:」の「AA0000」です。これは単純には「暗赤800000」に持っていけば良いようですが、イマイチ暗すぎて見難いと考えられますので、明るめの「明赤FF0000」も候補に上げてあります。同じことが6つ目「^」の「AA00AA」にも当てはまります。単純には「暗紫800080」で良いでしょうが、暗すぎると考えれば「明紫FF00FF」も有りです。

2つ目「+ー|」の「AA5500」です。機械的には「暗黄808000」で良いですが、悩むのはこの「AA5500」が「赤67%、緑33%で、暗めの橙色」であるということです。「808000」だと「赤50%、緑50%で、暗めの黄色」で、オリジナルの暗い橙色とは異なってしまいますが、これで雰囲気は良いのでしょうか。「明橙FF8000」であればちょうど「明赤FF0000」と「明黄FFFF00」の間ですし、「赤67%、緑33%」(AA5500)の緑を赤に回して「赤100%」(明赤FF0000)にするのも有りだと思うのです。「暗黄808000」と「明赤FF0000」のどちらを選ぶべきでしょうか。

ここで参考にしたのが、PC-9801版の配色です。PC-9801版はIBM-PC版を元にASCII社で移植したものですが、8色しか使えない98でいかにIBM版の感じを出すか検討が重ねられたはずです。その結果が「明黄FFFF00」でした。IBMの「暗橙AA5500」に対して、16色ターミナルなら「暗黄808000」と「明赤FF0000」の二択ですが、8色の98では「明黄FFFF00」と「明赤FF0000」の二択になってしまいます。この場合、元の「暗橙AA5500」に対して「明黄FFFF00」は色合いはともかく明るすぎるといえます。「明赤FF0000」は明るさの点で問題ないでしょう。それでも98移植チームは輝度的に近い「明赤FF0000」ではなく、明るすぎると思われても仕方のない「明黄FFFF00」を選ばれました。

以上より、2つ目「+ー|」の「AA5500」に対しては、暗橙は赤ではなく黄色にすべきという98版での選択を受けて、「暗黄808000」を採用することとします。

3つ目「%」の「00AA00」は、反転表示で用いられます。単純に「暗緑008000」で良いと思われます。暗すぎることもないですし、ましてや反転表示のため結構見やすいです。謎なのは88版で、なぜか「明黄FFFF00」になっています。しかも反転無し。この1点を除いて98と88に差異はないのですが、結局謎は解けませんでした(ちなみに、88のテキスト画面にも反転機能はちゃんとあるんですよ)。

4つ目「.」は「55FF55」です。かなり明るい白っぽい緑です。これも普通に「明緑00FF00」で良いでしょう。と言うより、これ以外に選択肢も無いでしょうし。

5つ目「@*」の「FFFF55」はかなり明るい白っぽい黄色です。4つ目の「.」同様、「明黄FFFF00」で良いというより他に選べるものもないと思います。

7つ目「#$+ [A-Z]」の「AAAAAA」は、色が付かずに明るい灰色で表示されている文字のことです。これに一番近いのが、暗白「C0C0C0」でしょう。

一番下「,?)]/!=」の「5555FF」は、「明青0000FF」よりも明るい青です。4つ目「.」や5つ目「@*」のように他に選びようがないとも言えそうなのですが、秘策があります。明るい水色「明水00FFFF」です。色合いが違うと言えば違うでしょうが、「水色≒明るい青」という図式にそう無理があるようにも思えないので、候補に入れておきます。ちなみに、前述の98移植チームは、この「5555FF」の代替色として実際に「明水00FFFF」を用いています。

複数候補の上がっている部分もありますので、次の画像を見ていただきましょう。

今までの画像は色合いを見やすいように背景色に割り当てていましたが、実際のゲーム内では黒背景にその文字色で表示されることとなります。

3ヶ所ある複数候補部分は、どちらが良いとお感じですか? これらを実際のゲーム上のキャラクタ(文字)で表示したものが次の画像になります。

ここまで小さな記号になると、どれも明るい方が見やすいように感じませんでしょうか。少なくとも私はそう思いました。

以上で、すべての色が決定しました。代替案の欄(複数あるものについてはいずれも左側)の通りというのが妥当だと思います。

Windows PowerShellについて

Windows PowerShellは、新世代シェル・スクリプトプログラミング言語として、コマンドプロンプト(cmd.exe)を置き換えることもできるものです。

とはいえ、MicrosoftシニアプログラムマネジャーとしてWindows Consoleチームに所属するRich Turner氏自ら「30年近く使い続けられてきたコマンドプロンプトは、(互換性の問題から)簡単に改善や改良を加えることはできない(中略)。他方で2016年10月に10周年を迎えたPowerShellは、複雑&冗長なスクリプトレットを簡単に実行するエイリアスを組み合わせることで強力なシェルだ。」と述べていらっしゃる通り、コマンドプロンプト(cmd.exe)がなくなるという訳でもないようです。

で、そのPowerShellですが、妙な所でコマンドプロンプトとの非互換性が出ています。下図はコマンドプロンプトとPowerShellのプロパティ画面ですが、選択できる色が一部異なるのがお判りでしょうか。

 

左側のコマンドプロンプトは、正方形の色が左から、黒・暗青・暗緑・暗水・暗赤・暗紫・暗黄・明灰・暗灰……と来ているところ、右側のPowerShellでは、黒・暗青・暗緑・暗水・暗赤・暗青緑・白に近い明灰・明灰・暗灰……となっています。

ここに出ている16色がPowerShellのデフォルト16色となっているため、暗紫・暗黄を表示させようとしている部分(エスケープシーケンスによる色表示も同じです)が色バケを起こしてしまいます。

これを回避する最も簡単な方法が、「コマンドプロンプトを立ち上げて、そこからPowerShellを立ち上げる」というものです。具体的には、適当なディレクトリの中に「powershell」という1行だけ書いたバッチファイルを作成(ファイル名を「ps.bat」等とする)し、ダブルクリックすればOkです。これだけで、そのディレクトリをカレントにした状態で、コマンドプロンプトのデフォルト設定を引き継いだPowerShellが立ち上がり、問題なくPowerShellが使えます。

応用として、適当なディレクトリに「cmd」という1行だけを書いたバッチファイルを作成(ファイル名を「cmmd.bat」等とする)し、ダブルクリックすると、そのディレクトリをカレントにした状態でコマンドプロンプトが立ち上がります。

ちなみに、Rogue等に同梱している「cmd_us.bat」も、これによく似たことをしています。内容は次の4行で、「@echo off/CHCP 437/mode con lines=25/cmd」です。英語モードにして、画面の行数を25行にした上で、「cmd.exe」を立ち上げている訳ですが、基本は前述のcmmd.batと同様です。

Rogueの場合、単にPowerShellを用いずにコマンドプロンプト上で起動すればいいだけのことなんですが、どうしてもPowerShell上で起動したいのでしたら、前述のバッチファイル経由での起動をおすすめします。ただ、Rogueの色設定でPowerShellの非互換部分を使うのは、IBM-PC版互換カラーの暗黄部分(部屋の壁など)のみですので、PowerShellの背景色を黒に設定した上でRogueをPC-9801版互換カラーモードで起動すれば一切問題ないと思います。


Powered by Y.Oz Vox
inserted by FC2 system