xsys3 再び
また、xsys3 を動かしてみます。
http://www.02.246.ne.jp/~torutk/cxx/x11/string.html を見て、日本語表示を試してみました。xft を使った日本語表示のみ、日本語で表示できました。
そこで、xft を使って xsys3 でテキストの表示を試してみることにしました。ところが、xft では表示されませんでした。試しに euc-jp ロケールを追加し、ロケールに euc を指定してサンプルをコンパイルしてみたら、国際化対応関数で日本語の表示ができました。
xsys3 でも、euc に文字列を変換して、表示することができました。なかなか表示されず、トレースしていったら、最終的に一箇所、#if 1 で切り分けられていた箇所を #if 0 にしたら、文字が表示されました。
元の XDrawImageString16 関数では日本語が豆腐になってしまいますが、XbmDrawImageString 関数では、ちゃんと表示されました。他の関数も一部 Xmb の関数に変更しました。
夢幻泡影を動かしてみましたが、一部実装されていない命令があるようです。選択肢の選択の枠とかが描画されなかったりします。それ以外では、特に問題はないようです。もっとも、音が一切でないのですが。
他のソフトも試してみました。DPS 全部はうまく動かないようです。Rance4.1、Rance4.2 は動きました。Ambivalents 二律背反は文字が重なってしまいました。
よく調べると、何度も同じ文章を描画しています。また、カラーマップを書き換えているようです。カラーマップは画像を表示するとき、画像のカラーマップを使っていますが、文字の描画では使っていません。
カラーマップを使って文字を描画するようにしないと駄目なようです。ディスプレイに色を登録する処理は、XStoreColor と、XStoreColors を #define で無効にしてありますが、登録しようとしている色を利用して、テーブルを書き換えることにしました(pixels配列)。
結果、二律背反は文字をフェードアウトさせていました。また、選択の枠も表示されるようになりました。
DPS 全部は、ゲーム選択画面の文字が表示されません。なぜでしょう。適当にクリックしていくとゲームが始まりますが、ゲーム中の選択肢の文字が表示されなくなりました。
ゲーム中の選択肢の文字色は #eeeeee ですが、これだと表示されず、強制的に #ffffff にすると表示されます。文字色が #eeeeee の時は #ffffff にするようにしたところ、ゲーム中の選択肢が表示されるようになりました。それでも、ゲーム選択画面では、吹き出しの中のメッセージが表示されません。
更に調べました。今度は、#if 0 で処理が切り分けられていた場所を、#if 1 にしたところ、吹き出しも、選択肢も表示されるようになりました。
とりあえず動かしてみたゲーム。
- ALICEの館3
- D.P.S 全部
- Rance 4.1 〜お薬工場を救え〜
- Rance 4.2 〜エンジェル組〜
- Ambivalenz -二律背反-
- あゆみちゃん物語
- ぷろ すちゅーでんとG
- 宇宙快盗 ファニーBee
- 夢幻泡影
試しに国際化対応関数からもとの関数に戻し font 指定をいろいろ変えてやったら、日本語が普通に表示されました。さらに、 #if 0 とか #if 1 を戻しても正しく日本語が表示されました。何だ。結局日本語表示の問題は、カラーマップをきちんと処理していなかったせいのようです。
これで音以外はなんとかなったと思います。音がないとさびしいけど、FM 音源を実装するのは無理でしょ。
修正を整理し、必要のない修正はもとに戻し、さらに、DEPTH_24 の定義でコンパイルを分けるのはやめました。display の色深度をみて、8 ビットカラーと 24 ビットカラーの両方で動くようにしました。もっとも、8 ビットカラーはもとの処理をするだけで、動くかどうかチェックはしていません。
パッチのみですが、作ったパッチはラズパイでエロゲのXsys3からどうぞ。
ディスカッション
コメント一覧
まだ、コメントがありません