-------------------------------------------------------------------------------
【  名  称  】 General Archive Decoder
【ファイル名】 kbunarc.kpi
【バージョン】 0.19
【対応拡張子】 lzh/lha/zip/neo/mdz/s3z/xmz/itz/cab/rar/rgm/rsn/tar/tgz/7z
【 Platform 】 x86(32bit)/x64(64bit)
【 公 開 日 】 2024/04/27
【 動作環境 】 KbMedia Player 本体同梱の kbzlib.dll が必要
               KbMedia Player 以外のソフトから使う場合に注意が必要
               KbMedia Player から使う分には何もする必要はありません
-------------------------------------------------------------------------------

【概要】

  アーカイブ形式全般を扱うためのプラグインです。対応拡張子のうち、通常あまり見
られない拡張子は以下の通りです。

  lha: lzh と同じです。MOD 系でこの拡張子が使われることがあります。
  neo: zip 形式でアーカイブされた NeoWRD 関連ファイル群です。
  rgm: rar 形式でアーカイブされた GYM ファイル群です。
  rsn: rar 形式でアーカイブされた SPC ファイル群です。
  mdz/s3z/xmz/itz: それぞれ mod/s3m/xm/it を zip 形式でアーカイブしたものです。
                   MOD 系でこれらの拡張子が使われることがあります。


【展開処理】

  lzh/zip/tar/tgz 形式では、一時ファイルを作成することなくリアルタイムに展開処
理を行います。ただし、tgz や lzh/zip(の無圧縮以外)はランダムシークが出来ないた
め、ファイル末尾付近へのシークを行うと実質全てを展開するのとほぼ同じ処理時間が
かかってしまいます。tar や lzh/zip の無圧縮(-lh0-, stored)についてはランダムシ
ークが可能です。

  cab/rar/7z 形式では全てメモリ上に展開します。そのため、展開後のデータが大き
いと大量のメモリを消費します。

  kbunarc.kpi 自体では一時ファイルを作成することはありませんが、再生に使うデ
コーダ/演奏プラグインによっては一時ファイルを作成することがあります。


【サイズの制限】

  KbMedia Player におけるアーカイブの対応はあくまでも音楽の再生を目的としてい
ます。サイズが大き過ぎると展開処理に時間がかかり、形式によってはメモリも大量に
消費するため、デフォルトではサイズに制限を設けています。

  制限を緩和したい場合は「プラグイン設定」ダイアログで設定することが出来ます。
制限をなくすことも出来ます。

  制限をなくすと形式によっては大量のメモリを消費します。64bit 版を使えば大容量
の搭載メモリを有効に活用することが出来ますが、サイズが大きければその分だけ処理
時間が余計にかかります。


【著作権等】

  kbunarc.kpi の rar 展開ルーチンには Alexander L. Roshal 氏制作の unrar.dll の
ソースコードが組み込まれています。

    RARLAB: http://www.rarlab.com/

にある UnRAR source です。ライセンスについては license.txt を参照して下さい。

  7z 展開ルーチンには Igor Pavlov 氏の LZMA SDK が組み込まれています。

    LZMA SDK: http://www.7-zip.org/sdk.html

公式サイト及び LZMA SDK に同梱の 7zC.txt によるとライセンスは Public Domain の
ようです。

  LICENSE
  -------

  7z ANSI-C Decoder is part of the LZMA SDK.
  LZMA SDK is written and placed in the public domain by Igor Pavlov.


  zip 及び tgz 展開ルーチンには Mark Adler 氏の zlib を使用しています。

     zlib: http://www.zlib.net/

  kbunarc.kpi には zlib は組み込まれていません。プレイヤー本体同梱の kbzlib.dll
に zlib が組み込まれており、kbunarc.kpi はそれを呼び出す形となります。

  kbzlib.dll は音楽再生に不要ないくつかの API(主に圧縮用)を除いただけで、中身は
zlib そのものです。


-------------------------------------------------------------------------------

【更新履歴】

Version 0.19(2024/04/27)

・unrarsrc を 7.0.8(2024/04/25) に更新

/*---------------------------------------------------------------------------*/

Version 0.18(2024/03/16)

・unrarsrc を 7.0.7(2024/02/26) に更新
・LZMA SDK を 23.01(2023/06/20) に更新

/*---------------------------------------------------------------------------*/

Version 0.17(2022/10/03)

・TGZ を扱うと kbzlib.dll 内部でメモリリークするのを修正

/*---------------------------------------------------------------------------*/

Version 0.16(2022/09/16)

・unrarsrc を 6.1.7(2022/05/05) に更新
・LZMA SDK を 22.01(2022/07/15) に更新

/*---------------------------------------------------------------------------*/

Version 0.15a(2021/06/25)

・unrarsrc を 6.0.7(2021/06/11) に更新

/*---------------------------------------------------------------------------*/

Version 0.15(2021/04/18)

・unrarsrc を 6.0.5(2021/04/07) に更新

/*---------------------------------------------------------------------------*/
Version 0.14(2020/01/03)

・unrarsrc を 5.8.5 に更新

/*---------------------------------------------------------------------------*/

Version 0.13(2019/10/03)

・unrarsrc を 5.8.2 に更新

/*---------------------------------------------------------------------------*/

Version 0.12(2019/05/05)

・unrarsrc を 5.7.5 に差し替え

/*---------------------------------------------------------------------------*/

Version 0.11(2019/04/19)

・unrarsrc を 5.7.4 に差し替え

/*---------------------------------------------------------------------------*/

Version 0.10(2019/03/29)

・ファイル名が UTF-8 で格納された CAB を開くと落ちるのを修正

/*---------------------------------------------------------------------------*/

Version 0.09(2019/02/27)

・unrarsrc を 5.7.3 に差し替え

/*---------------------------------------------------------------------------*/

Version 0.08(2019/02/24)

・unrarsrc を 5.7.2 に差し替え
・LZMA SDK を 19.00 に差し替え
・7-zip に関する以下の修正
　・ストリームから開けるようになった(アーカイブ内の7zで実ファイルが不要)
　・圧縮メソッド(Copy, LZMA, LZMA2, PPMD 等)を正しく取得出来るようになった
　　(今までは全て LZMA としていた)
　・PPMD を展開出来るようになった
　　・PPMD を展開するかの設定項目を追加
　　・非常に低速なため、デフォルトでは展開「しない」
　・実行時のシステムの空きメモリに応じて一時ファイルを作成することがあったの
　　を、常にメモリ上に展開するように仕様変更(後述のRARも同じ)
　・メモリの使用量を大幅に軽減
・TGZ を正しく処理出来なくなっていたのを修正
　・zlib の inflateCopy 内部の仕様変更によるもの(結構はまった)
・TAR の格納ファイル名に全角文字を使用してると文字化けすることがあるのを修正
　(UTF-8 かどうか自動判別)
・RAR/7Z について、実行時のシステムの空きメモリに応じて一時ファイルを作成する
　ことがあったのを、常に全てメモリ上に展開するように仕様変更
　・プラグインによっては一時ファイルを作成する(旧仕様プラグイン等)
・CAB/RAR/7Z の全展開後のサイズ制限の設定を追加
　・制限を超える場合、一覧の取得は出来るが展開には失敗する
　・個別には小さなファイルがあっても、合計が制限を超えると全て失敗する
・サイズに関する制限を対応形式ごとに設定するのを廃止
　・General セクションにまとめた
　・旧バージョンからの設定は引き継がれないので設定し直す必要がある
　・kbungca.kpi の設定とは共有されない

/*---------------------------------------------------------------------------*/

Version 0.07(2017/05/18)

・RAR 解凍ルーチンを unrarsrc 5.5.3 に差し替え

/*---------------------------------------------------------------------------*/

Version 0.06(2017/04/09)

・コンパイラを VS2017 に変更

/*---------------------------------------------------------------------------*/

Version 0.05(2017/02/26)

・v3.02beta のアーカイブプラグイン仕様に対応
　・展開時に作成した一時ファイルの削除を本体に任せるようにした
　・実ファイル展開時/メモリ展開時に本体のルーチンを使用するようにした
・cab のアーカイブファイル名に Unicode でしか表現出来ない文字を使用していて、
　格納ファイル名が utf-8 で格納されていない場合に解凍出来ないのを修正

/*---------------------------------------------------------------------------*/

Version 0.04(2017/01/09)

・正式版公開に向けての細かい修正(ドキュメント/ソースコードの整理等)

/*---------------------------------------------------------------------------*/

Version 0.03(2016/11/14)

・7Z 解凍ルーチンを LZMA SDK 16.04 に差し替え

/*---------------------------------------------------------------------------*/

Version 0.02(2016/08/31)

・RAR 解凍ルーチンを unrarsrc 5.4.5 に差し替え
・一部の ZIP ファイルを正しく扱えなかったのを修正
　(Data descriptor フラグが有効なもの)
・IKpiFile::GetFileName で返すファイル名が仕様と異なることがあったのを修正
　"aaa/bbb.xxx" を "bbb.xxx" のように返さなければいけないのを "aaa/bbb.xxx"
　と返していた

/*---------------------------------------------------------------------------*/

Version 0.01(2016/08/08)

・アーカイブプラグイン化後の初版
・プラグイン化に伴いファイル名を kbunarc.kpi に変更
・64bit 版で CAB を開けない or 開くと落ちることがあるのを修正
・32bit 版で kbungca.dll を呼び出していたのを呼び出さないように修正
　(kbungca.dll をプラグイン化)
・サイズの制限を設定出来るようにした(アーカイブ自体のサイズのみ)

-------------------------------------------------------------------------------
Kobarin(hidkob@pb.highway.ne.jp)
https://kobarin.sakura.ne.jp/
