WonderWitch用
スライド辞書法圧縮展開インダイレクトライブラリ

LZIL

2003/11/30 Ver.1.00
Programmed by EXCEED.



これは?

 スライド辞書法で圧縮したデータ(ファイル)を、
 WonderWitch アプリケーション上で使用(展開)するための
 IL(インダイレクトライブラリ)です。




注意事項

 ・本 IL には、圧縮したフォントデータを解凍し、定義する機能がありますが、
  16色カラー・パックトモードにのみ対応しています。
  なお、モノクロスワンでフォントデータ圧縮&展開をされたい場合は、後述の LZDT 形式で圧縮して、
  ワークエリア上に一括展開して、ご自身で定義していただくことで一応解決できます。

 ・本 IL のサービスコールは、現在、LSI C-86 for WonderSwan のみしか動作確認していません。
  (DMC や Turbo C とかでも多分大丈夫だと思います。)

 ・WonderWitch のリソース形式のファイルを圧縮する場合、
  各コンバータ(sndcnv.exe や bmpcnv.exe 等)で、
  -e スイッチ(FBFF ヘッダ付加)でコンバートした
  リソースファイルは絶対に使用しないでください。





インストール方法

 LZIL.IL を /rom0/ に転送してください。
 これでインストールは完了です。




専用圧縮ツール LZFR.EXE の使い方

 コマンドプロンプト(通称 DOS 窓)用のアプリです。
 16Bit環境(MS-DOS / Windows 3.1)では動作しません。
 ソースを付けましたので、16Bit環境で動かしたい方はお手数ですが、
 各自でコンパイルしてください。

 書式は、


    LZFR スイッチ[リソースID] 入力ファイル名 出力ファイル名    

 で、スイッチは以下の4つです。
 [リソースID]は省略可能です。省略時には0が指定されたものと見なされます。

  e : リソースヘッダを自動識別して、 LZDT か LZBM 形式で圧縮します。
  f : 強制的に LZDT 形式で圧縮します。
  c : FRBM リソース形式のヘッダを切り取り、データ部のみを LZDT 形式で圧縮します。
  d : 圧縮したファイルを復元します。LZBM 形式のファイルを復元するときのみ、[リソースID] の指定が可能です。


(記述例)

  LZFR f data.bin data.fr
  LZFR e5 font.fr fontlz.fr 

 SOUND.IL 用のリソースファイルや、テーブルデータやテキストデータなどの
 ファイルは、LZDT 形式で圧縮してください。
 FRBM 形式のデータのみ、LZDT 形式、および、LZBM 形式の
 両方で使用可能(圧縮可能)です。



LZIL 用データフォーマットについて

 LZIL で使用するデータフォーマットには、LZDTLZBM という2つの形式があります。
 これらは、WonderWitch のリソース形式に準拠した LZIL 用の圧縮フォーマットとなります。

LZDT
 圧縮元ファイルを単なるベタバイナリと見なしてそのまま圧縮してあるデータです。

+0 unsigned short magic 'FR' リソースファイル識別コード リソース共通ヘッダ
+2 unsigned short type 'LZ' LZIL データ識別コード
+4 short size16p ヘッダも含んだリソース全体のサイズ(16バイト単位)
+6 unsigned short id リソースID
+8 unsigned short type2 'DT' LZDT データ識別コード 独自追加部分
+A unsigned short size 展開後のデータサイズ
+C 以降 圧縮されたデータ

LZBM
 FRBM リソース形式を圧縮したデータです。
 FRBM 形式とほぼ同様のヘッダ情報を持っていますので、
 LZBM 形式のヘッダから、パレットやイメージサイズなどを取得することができます。

+0 unsigned short magic 'FR' リソースファイル識別コード リソース共通ヘッダ
+2 unsigned short type 'LZ' LZIL データ識別コード
+4 short size16p ヘッダも含んだリソース全体のサイズ(16バイト単位)
+6 unsigned short id リソースID
+8 unsigned short type2 'BM' LZBM データ識別コード 独自追加部分
+A unsigned short size 展開後のデータサイズ
+C unsigned char width 横のフォント個数
+D unsigned char height 縦のフォント個数
+E unsigned char format FRBM 形式と互換を保つためのダミー
+F unsigned char reserve 予約(未使用)
+10 unsigned char clrtable[4] FRBM 形式と互換を保つためのダミー
+14 unsigned short pal_table[16] パレット
+34 以降 圧縮されたデータ





アプリケーション上での LZIL.IL の初期化手順

まず、以下のグローバル定義を必ず行ってください。


  #include "lzil.h"    

  LZIL LzIL;

次に、LZIL をオープン(使用可能状態に)します。


  int result;

  result = ilibIL->_open("@lzil", (IL far *)&LzIL);    

  if (result != E_FS_SUCCESS) {
      /* LZIL 使用不可能なので、シェルに戻るなどの処理を記述する */    
  }




LZIL.IL のサービスコール解説


int far lz(void far *src, void far *dst, void far *work)  

<<機能>>

  LZDT 形式のデータを一括展開します。

<<引数>>

 void far *src
   LZDT データが格納されているアドレスを指定します。

 void fat *dst
   展開先のメモリアドレスを指定します。
  当然ですが、展開先のワークサイズは、
  展開後のデータサイズ以上確保しておく必要があります。
  不足していると、メモリエリアを破壊しますので、ご注意ください。

 void far *work
   展開用ワークエリアのアドレスを指定します。
  展開用ワークエリアのサイズは必ず 4096バイト以上必要です。
  4096バイト未満ですと、メモリエリアを破壊しますので、ご注意ください。

<<戻値>>

 0 : 展開失敗
 1 : 展開成功


unsigned short far lzFont(void far *src, void far *work, short spat)  

<<機能>>

  LZDT および LZBM 形式のデータを展開し、フォント定義します。

<<引数>>

 void far *src
   LZDT および LZBM データが格納されているアドレスを指定します。

 void far *work
   展開用ワークエリアのアドレスを指定します。
  展開用ワークエリアのサイズは必ず 4096バイト以上必要です。
  4096バイト未満ですと、メモリエリアを破壊しますので、ご注意ください。

 short spat
  定義を開始するフォント番号を指定します。
  値は 0 〜 1023 の範囲で指定してください。

<<戻値>>

    0   : 展開失敗
 0 以外 :「最後に定義したフォント番号+1」が値として戻ります。

<<補足>>

 厳密には、圧縮データを展開し、展開データが32バイトに達する毎に、
 1フォント定義することを繰り返します。
 また、本サービスコールは、16色カラー・パックトモード以外で動作させないでください。

詳しくは、サンプルを参照してください。



ライセンスについて

 LZFR.EXE / LZIL.IL 共々フリーウェアとします。
 商用、非商用問わず、作者(EXCEED.)に無許可で使用することができます。
 ただし、著作権(厳密には2次著作権)は、作者(EXCEED.)が保持します。
 改変も、もちろん可能ですが、悪意のある改変(ウィルス混入等)は禁止します。
 また、本ソフトウェアを使用したことによるユーザーの損害等は作者(EXCEED.)は関知いたしません。
 不明な点はメールにてご連絡ください。

 なお、スライド辞書圧縮コードは、奥村晴彦氏の「C言語による最新アルゴリズム事典」の
 ソースコードを使用させていただいております。




Copyright © 2003 EXCEED.