Lilith to uLilith FaceConverter ReadMe

Lilith のフェイスを、uLilith で使用できるようにコンバートするプログラムです。
面倒なのでコマンドラインプログラムになっています。

uLilith で廃止された機能や、仕様変更により意味のなくなった機能がいくつかありますので、
すべてのフェイスを完全再現できるものではありません。
現在判明している分では、以下のような互換性の問題があります。


・通常切替のボタンが変換されない
uLilith にはこのモードはありませんので、変換しません。

・量子化ビット数の表示がほぼ必ずはみ出る
uLilith では、型情報 (Int or Float) を追加表示するようになったためです。

・文字のサイズが変わる / 表示がずれる / スクロールしてしまう
uLilith で、文字のレンダリングに使う API に変更があったためです。
また、アンチエイリアスがデフォルトになった影響もあります。
文字のサイズについては、高さが Lilith での表示高さ以下になるように、
自動的にサイズを小さくします。Lilith より若干小さくなってしまうことが多いようです。
表示幅については、uLilith の DynamicImage に変換されるものだけ、
Lilith 形式での表示幅以下になるように、さらにフォントサイズを調整しています。
DynamicString / StaticString に変換されるものについては、
表示幅のチェックは行いません (表示される内容が予想できないので)
このため、uLilith で表示すると、Lilith ではスクロールしない表示内容でも、
スクロールしてしまう場合があります。

・文字のスクロール禁止オプションが変換されない
uLilith では、文字のスクロールを禁止するオプションはありません。

・DEFAULTSIZE フラグは無視されます
Width / Height が指定されていない場合、
常に定義されているものとして動作します。

・EXTRABOLD フラグは、BOLD に変換されます
uLilith には、EXTRABOLD に相当するフォント装飾がないため、Bold に変換されます

・COLORKEY フラグがないときには、ColorKey キーを読み込みません
Lilith ではどうも読み込んでしまうようですが、
読み込まないのが正しい動作です。

・FADE フラグは、CROSSFACE に変換されます
uLilith では、フェードインだけの視覚効果はありません

・SCROLL / FORCESCROLL フラグは無視されます
uLilith では、常に SCROLL フラグが指定されているときと同じ動作をします。
すなわち、表示がはみ出るようならスクロールです。
Lilith では、どちらも指定しなければ、はみ出てもスクロールしませんでしたが、
読めない状態というのは好ましくないので、
uLilith ではスクロール禁止を廃止しています。
(実際には、スクロール量を 0 pixel にすることで、変換できますが、
前述のように好ましくないのでそのようには変換しません)

・ACCUMULATION / ACCUMULATIONEX フラグは無視されます
uLilith のスペアナには、ACCUMULATIONEX 相当の処理しかありません。
このため、ACCUMULATION や、どちらも指定しない場合には、
ACCUMULATIONEX に変換されます。

・TRANSPARENT フラグのついたアイテムは、表示領域にあわせたイメージが作成されます
[Window] フィールドで指定されたイメージの、該当座標を切り取り、
そこに Image で指定されたイメージや、Caption で指定された文字列を書き込み、
レンダリング済みイメージ化して、通常のボタンにします。
uLilith には、TRANSPARENT ボタンに相当する機能がないためです。
なお、TRANSPARENT ボタンは、αチャネルやカラーキーを有効にするためのフラグではありません。
一部のフェイスで間違えて使用されていることがあります。

・IMAGE も CAPTION も指定されていないユーザアイテムは、変換されません
uLilith では、Image でも String でもないアイテムは許可されていません
見えないボタンを作りたいなどの要望がありましたら、
uLilith の方でも Image でも String でもないカテゴリを実装しますので、
特設 BBS までご要望ください。

・αチャネルつきのスペアナの表示が違う
スペアナに使用する画像にαチャネルがついていた場合、
Lilith ではαチャネルは無視されて描画されますが、
uLilith では、αチャネルを適用して描画します。
このため、透明または半透明領域が設定されている場合、
見た目が変化してしまう場合があります。

・αチャネルとカラーキーの両方が設定されたウィンドウイメージは、正しく変換されない可能性があります
Lilith での動作がよくわかりませんが、
αチャネルつきの画像とカラーキーが指定されていた場合、
αが 255 でないピクセル (すなわち少しでも透過するピクセル)がある場合には、
カラーキーは使用されません。
たぶん、Lilith でもこの動作のはずです。

・複数のフェイス定義ファイルで共用されている画像ファイルで、ファイル名の衝突で正しく表示されないフェイスができる可能性がある
Width / Height の指定を変えて [Window] フィールドの画像を使いまわしている場合や、
TRANSPARENT が指定された透明ボタンなどです。


● いくつか変換されないコマンドがあります。

・40021 (ヘルプを表示) 
uLilith にはヘルプがありませんので、変換されません

・40035 (時間表示モードを変更) 
uLilith では、再生時間/残り時間 のどちらを表示するかの内部状態がありません。
フェイスコマンドで実現できるようになっています。
[PlayTime] [RemainTime] のフィールドがある場合には、
それらはフェイスコマンドによるエミュレートにより、
表示の切替が行われるように変換されますが、
40035 は表示中なら非表示、非表示なら表示のトグルコマンドであるため、
現在どちらが表示されているか判断が出来ないと、処理が行えません。
このため、このコマンドは変換が行われません。

・40067 (選択アイテムを再生)
uLilith に該当するコマンドがありません。

・40084 (プレイリストの未読タグ取得)
uLilith では、リストへの積み込み時か、積み込み後のバックグラウンド処理で
タグが取得されるため、未読タグが残っている状態というのはありません。
このため、意味のなくなったコマンドです。

・40090 (曲間切替モード変更)
uLilith に該当するコマンドがありません。

・40091 (スペクトラムアナライザ切替)
40035 (時間表示モードを変更) と同じく、uLilith ではスペアナの表示/非表示を
本体側で管理することがなくなった＆トグルコマンドであるため、変換が行えません。
[AnalyzerOn] [AnalyzerOff] フィールドについては、
フェイスコマンドのエミュレートにより、表示の切替が再現されています。

・40093 (フェイスリオープン)
uLilith に該当するコマンドがありません。
特定の人の要望で追加し、ほとんど使われていないだろうコマンドのため、廃止されました。

・40097 (プレイリスト再読み込み)
uLilith に該当するコマンドがありません。
これも、特定の人の要望で追加し、ほとんど使われていないだろうコマンドのため、廃止されました。

・40098 (Eject CD Drive0 (VOS 専用))
・40099 (Mount CD Drive0 (VOS 専用))
どちらも 40100 (Eject/Mount CD Drive 0) に変換されます。

・400122 (新規にプレイリストを作成)
uLilith に該当するコマンドがありません。
PlayListClear がほぼ同等のコマンドのため、廃止されました。

・400123 (既存のプレイリストを呼び出し)
uLilith に該当するコマンドがありません。
AddFile とほとんど動作が変わらないため、廃止されました。
(初期表示の拡張子フィルタが違うだけ)

・40129 (Lilith をアクティブ化)
uLilith に該当するコマンドがありません。
また、フェイス上においても意味のないコマンドです。
(ボタンをクリックした時点で、アクティブ化されるため)
ホットキーからの利用のみに限られていたコマンドですが、
ホットキー自体に uLilith をアクティブ化する機能があるので、
適当に意味のないコマンドを設定して、アクティブ化を許可することで、
代用できます。

・40130 (オンラインアップデート)
uLilith に該当するコマンドがありません。
オンラインアップデート機能自体は、将来的に実装される可能性はありますが、
フェイス上にこのコマンドを設定したボタンを配置することはまずないでしょう。

・40134 (プレイリストの項目の切り取り)
uLilith に該当するコマンドがありません。
uLilith では、D&D 操作が実装されたため、廃止されました。

・40135 (プレイリストの項目のコピー)
uLilith に該当するコマンドがありません。
uLilith では、D&D 操作が実装されたため、廃止されました。

・40136 (プレイリストの項目の貼り付け)
uLilith に該当するコマンドがありません。
uLilith では、D&D 操作が実装されたため、廃止されました。

・40137 (プレイリストの項目をすべて選択)
uLilith に該当するコマンドがありません。
要望があれば実装しますので、そのときは、特設 BBS まで。

・40138 (プレイリストの項目をの選択の反転)
uLilith に該当するコマンドがありません。
要望があれば実装しますので、そのときは、特設 BBS まで。


■最後に

このプログラムは、Project9k の許可なく再頒布できません。
ソースコードの一部または全部の再利用は、
このプログラムの本来の目的を外れない範囲
(すなわち、Lilith のフェイスを uLilith で使えるようにする)
でのみ行えます。
改変/引用したソースコードおよび、生成したバイナリは、
このサンプルプログラムのコードを再利用していることを明記した上で、
再頒布を行うことが出来ます。
GUI バージョンを作成する場合、
フェイスエディタなどに組み込む場合には、
Northern Verse までご連絡ください。

