xsys3(2)

xsys3 をなんとかしてみる。

 Xkanon は十分動くようになりましたし、ONScripter も avi 再生できるようにしました。まあ、Xkanon を alsa でスムーズに動くようにすることも必要かもしれませんが aoss で動いているのでモチベーションは低いです。rlvm の全画面表示は手に余ります。

 やることがなくなってきたのでやっと xsys3 に手をつけることにします。

 カラーマップを使わないようにすることと、日本語のフォント設定を修正する必要があるとおもいます。

 どちらも面倒そうなのでまだ全く見ていません。やってみます。

 まず、カラーマップを潰していきます。スクリーンのカラーマップを宣言しない様にして、どこでコンパイルエラーが出るかを見て修正していきます。ただし、全てのカラーマップではなく、画像のカラーマップは残さないと正しい色で表示できなくなるので区別します。

 また、透明色を使用しているものにも注意する必要があるでしょう。マスクを使わなければならないと思います。

 見ていくと、このプログラムは、スクリーンのカラーマップと画像のカラーマップを併用している感じです。なるべくディスプレイ全体の色をおかしくしないようにスクリーンのカラーマップを使っていくのでしょう。当時はありがたいことだったでしょうが、修正するとなると複雑さが増します。ちょっとめげてきました。

 できるだけもとのソースは手をつけずに修正したいと考えています。難しいです。

 ifdef でコンパイルを分けることにします。DEPTH_24 を定義したときに対応させることにします。

 まず、カラーマップを設定する関数を define で無効にしました。画像のカラーマップを利用する様に一部を修正したところ、一瞬画像が表示されるようになりました。

 compress がないとメッセージが出て終了します。そんな古いコマンドもう無いよー。標準入出力で圧縮・展開できればいいようなので、gzip で代用することにしました。

 次に文字表示でコケたので修正していきます。ただし、最初にフォントのロードに失敗しているのでこちらを先に修正します。X11 のビットマップフォントを入れていくきます。

$ sudo apt-get xfonts-intl-japanese fonts-ipafont-nonfree-jisx0208

デフォルトは、"kanji16″ となっているようなので

$ xlsfonts | grep jis
-adobe&cbs&yasuoka-fixed-medium-r-normal–0-0-75-75-c-0-jisx0212.1990-0
-adobe&cbs&yasuoka-fixed-medium-r-normal–24-234-75-75-c-240-jisx0212.1990-0
-misc-fixed-bold-r-normal–0-0-75-75-c-0-jisx0201.1976-0
-misc-fixed-bold-r-normal–18-170-75-75-c-90-jisx0201.1976-0
-misc-fixed-medium-i-normal–0-0-75-75-c-0-jisx0201.1976-0
-misc-fixed-medium-i-normal–18-170-75-75-c-90-jisx0201.1976-0
-misc-fixed-medium-r-normal–0-0-75-75-c-0-jisc6226.1978-0
-misc-fixed-medium-r-normal–0-0-75-75-c-0-jisx0201.1976-0
-misc-fixed-medium-r-normal–0-0-75-75-c-0-jisx0208.1990-0
-misc-fixed-medium-r-normal–0-0-75-75-c-0-jisx0212.1990-0
-misc-fixed-medium-r-normal–16-150-75-75-c-160-jisc6226.1978-0
-misc-fixed-medium-r-normal–16-150-75-75-c-160-jisx0208.1990-0
-misc-fixed-medium-r-normal–16-150-75-75-c-160-jisx0212.1990-0
-misc-fixed-medium-r-normal–18-170-75-75-c-90-jisx0201.1976-0

 xfontsel で
-fixed-medium-r--16--jisc6226.1978-*
あたりがいいと思ったので、
-misc-fixed-medium-r-normal–16-150-75-75-c-160-jisc6226.1978-0
に決めます。

 これで font のエラーはなくなったので、文字列表示を修正していきます。

 文字列表示のエラーは一旦コメントにして、画像の表示を確認したら画像が崩れていました。確認したところ、1 pixel あたり 4 byte で処理する必要がありそうです。24 bit カラーなので 3 byte でイメージデータを作り上げていました。4 byte で処理したところ、正しく表示されました。

 次に、マスク付きの画像の表示がおかしいです。マスクの判定が逆になっていました。マスクデータを作成しているところを修正しました。これで重ね合わせも大丈夫になりました。

 やはり、文字の処理が問題になります。フォントは読み込めていると思われますが、文字が一切表示されません。文字コードに問題があるのか、XDrawImageString16 で今は表示できないのか。

 それと、音が出ません。

 readme.txt を読んだら、音は実装していないようです。(最初によめ!)

 終了。画像はちゃんと表示されたんだけどなー。残念
 移植キット引っ張り出すかな。

xsys3

Posted by sirius