全画面3階調表示ツール

更新履歴

2006/06/17
ふーせん様よりご報告を受け、注意書きを追加。
2005/08/02
クリップボードにセットするclipsetという命令に必要なhspext.dllを同梱していなかったミスがあったので、正しく直しました。
2005/07/31
Ver. 1.0b2にバージョンアップ
行番号を付加するか否かを設定できるようになりました。
「偽5階調表示」を追加。これは3階調で5階調を無理やり表現しています。
クリップボードにコピーする機能を追加しました。
2005/07/30
ベータ版の公開

概要

PC-G850系用のWindowsソフトウェアです。
このソフトはポケコンの画面いっぱいに、任意の画像を表示させるためのツールです。
BMPファイルかGIFファイル、JPGファイルを144*48サイズのカラー画像をポケコン用画像に変換します。
ポケコン用画像はアセンブリ言語として出力しますので、これをアセンブルして実行すると表示されます。

ダウンロード

PC-G850系用グラフィックコンバータ Ver. 1.0b2
(ZIPで圧縮していますので、適当な解凍ソフトが必要です。)

手順

144*48サイズのBMP,GIF,JPGファイルのいづれかの画像を用意してください。(サイズが違うとはみ出て表示される場合がありますが、動作には問題ありません。)濃さと灰色ゾーンの説明

次に、2階調または3階調を選びます。3階調にすると灰色が表示できます。

そして「Load image」ボタンを押し、用意した画像を指定してください。
すると、変換後の行番号付きアセンブリソースコードと画像が出てきます。
2階調の場合は、画像はポケコンに表示される1枚だけです。
3階調の場合は、薄い画像と濃い画像と表示される画像が出てきます。これについては後ほど。

偽5階調の一例偽5階調 は、新聞や雑誌などに見られる「網の目」を利用した階調表現です。これを選ぶと、白・白灰・灰・灰黒・黒の全部で5段階の色になります。白灰と灰黒はそれぞれの色の網目状になります。

「濃さ」の数値を大きくすると濃くなり、小さくすると薄くなります。(0~1)
「灰色ゾーン」は3階調ときのの灰色の範囲です。数値を大きくすると灰色の幅が広がり、小さくすると狭くなります。(これも0~1)
この2つの数値を変化させた後は「Convert」ボタンを押すともう再描画され、ソースコードも新しくなります。

そして、出力されたソースコードをPCG-LINKなどのソフトウェアでポケコンに転送してください。馬鹿でかい要領なので、十分なスペースをあけて置いてください。
行番号を付加しない設定をすれば、パソコンでのクロスアセンブル環境などでも使えます。
アセンブリソースコードではなく、HEX形式のデータをPCG-LINKポケコンに送信するときは、まず拡張子DATのHEXファイルを開きます。メニューの[通信]-[データ送信]をクリックすると開始します。

転送用ケーブルの自作方法と転送方法については簡易型レベルダウンコンバータの製作(外部リンク:くりこうさんのウェブページ)にわかりやすく書かれているのでご参考ください。
注意:製作には自己責任でお願いします。また、リンク先の注意書きをよく読んでください。製作についてシャープ社に問い合わせなどはしないでください。また、こちらもその問いには答えかねますのでご了承ください。
くりこうさんのトップページはこちら(くりこうのホームページ)になります。

そして、ポケコンにソースコードを転送したらアセンブルしてください。その前に機械語モニタで

USER 900

とメモリ確保をして置いてください。そうしないとアセンブルでエラーが出ます。

そして、実行してください。実行方法は

CALL &H100

です。これで画像が表示されたはずです。
PC-G850Vをお使いで、ここで中間色が黒く表示されてしまう(2色しか見えない)場合は、コントラストを薄くしてください。コントラストを薄くすると中間色が表示されます。

表示を終えたいときは「BREAK」キーを押してください。

3階調画像の仕組み

PC-G850は液晶ディスプレイには本来白と黒の2階調表示しか出来ません。
でも、灰色が表示できる方法が存在したのです。

PC-G850,PC-G850Sの液晶は反応が悪く、表示命令の後すぐには反映されません。(微々たる物なので視覚的にはほとんどわかりませんが。)ただし、PC-G850Vは液晶が格段によくなっているため、うまく表示されないことがあります。
反映されるまでの間は白から徐々に黒になっていきます。その間は「灰色」なわけです。
そこで、その「反映されるまで」をずっと続ける方法は無いのか・・・と考えればすぐに思いつくものがあります。
それは、「点滅」です。液晶ディスプレイを点滅させるとずっと灰色のままになるはず。それに、目の錯覚も利用できます。

そこで、2枚の絵をBASICで交互にポケコンに表示させました。濃い画像と薄い画像の2枚の絵を重ねて、どちらも黒の場所は黒、どちらも白の場所は白、違う場合は灰色になるはずなのですが・・・・?
ただの点滅にしか見えませんでした。BASICの速度が遅すぎたようです。

機械語の出番がやってきました。機械語なら高速に表示させることが可能です。

こうして3階調画像が可能になりました。

制作理由とその後

このソフトウェアは、以前作っていたものの一からの作り直しです。
以前は高3の時の課題研究として作りました。

課題研究は「ポケコンのマシン語でゲームを作る」だったので、そのゲームに使う画像の作成を自動化するために作りました。その制作中に全画面にリアルな写真を表示さたい!という欲が出て、メインが画像表示になってしまいました。

全画面に3階調が表示されたときは今での興奮ものです。今度は4階調・5階調と増やしたいと思うのですが、メモリ上の問題で、無理かもしれません。なぜなら、現在の方法ではポケコン上でアセンブルするためにアセンブリソースコードを出力にしています。これはアスキーコードなので文字数分のバイトが必要になります。3階調では1行あたり70バイト以上もあります。全部で5000バイトほどです。さらに、アセンブルしますので+2000バイト。全部で7000バイトも使います。これはポケコンが使えるメモリの25%ほどになります。そして、ソースコードを保存すると1枚につき+5000バイトの消費・・・。1枚ずつなら何とかなりそうですが、ポケコンに何枚か入れておくのはほぼ無理と考えれます。
これを4階調にすると1枚で3枚の絵が必要になるので、メモリ消費量は3階調の1.5倍。5階調だと2倍です。
現状ではメモリのせいでなかなか手が出せない状態です。

解決策としては圧縮です。このポケコン画像だったら結構圧縮できそうな気がします。

それから、これはHSPで作ったんですが、いまさらですがC言語で作ったほうがよかったなんて思います。

Copyright(C) tosik
E-Mail:
Weblog: Tosikの雑記