-------------------------------------------------------------------------------
【  名  称  】 VGM Decoder
【ファイル名】 kbvgm.kpi
【バージョン】 0.14
【対応拡張子】 .vgm/.vgz/.s98/.gym/.dro/.cym/.mym/.x1f
【 Platform 】 x86(32bit)/x64(64bit)
【 公 開 日 】 2024/03/24
【 動作環境 】 KbMedia Player 本体同梱の kbzlib.dll が必要
               KbMedia Player 以外のソフトから使う場合に注意が必要
               KbMedia Player から使う分には何もする必要はありません
-------------------------------------------------------------------------------

【概要】

VGM 再生プラグインです。対応拡張子は vgm/vgz/s98/gym/dro/cym/mym/x1f です。
kbs98.kpi よりも高い再現度で VGM を再生出来るようになります。

ValleyBell 氏制作の libvgm 0.51.1 をベースにしています。

https://github.com/ValleyBell

v0.10 より、プレイヤー本体に標準で同梱することにしました。

kbs98.kpi と kbgym.kpi で再生可能な形式と競合します。本プラグインの方が使用優先
度が高いので、これらのプラグインを使いたいときは本プラグインを無効化して下さい。
ただし、これらのプラグインはエミュレーションコアが古い為お勧めはしません。

libvgm は cym/mym/x1f に対応していませんが、本プラグインでは kbs98.kpi のコード
を流用して対応しました。ただし x1f は手元にデータがない為、動作未確認です。

【使用上の注意】

拡張子 .s98/.vgm/.vgz/.cym/.mym/.x1f は標準同梱の kbs98.kpi と競合しています。
kbs98.kpi を使用する利点はほぼありませんが、使用したい場合は本プラグインを無効
化する必要があります。

拡張子 .gym は標準同梱の kbgym.kpi と競合しています。
kbgym.kpi を使用する利点はほぼありませんが、使用したい場合は本プラグインを無効
化する必要があります。

【設定】

プラグイン設定画面がヘルプを兼ねていますので参照して下さい。
説明文は VGMPlay.ini からの引用です。

設定がどこまで機能しているか十分に確認出来ていません。

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

【更新履歴】

Version 0.14(2024/03/24)

・未初期化の変数にアクセスして落ちる可能性があったのを修正
　・vgmplayer_cmdhandler.cpp::VGMPlayer::Cmd_AY_Stereo()内の clDev
　・実際に不具合を確認した訳ではない

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

Version 0.13(2024/03/20)

・libvgm を v0.51.1(2024/01/03)に更新
　・"Mikey"チップに対応(データが見つけられなくて動作未確認)
　・EmulationCore の設定にも対応(動作未確認)

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

Version 0.12(2022/10/08)

・ファイルを閉じるときに本体が落ちるのを修正
　・なぜか本体がデバッグ版のときにしか発生しなかったがリリース版で発生しないの
　　が不思議

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

Version 0.11(2022/10/03)

・emu2413 を v1.5.9 に更新
・タグ取得に対応
　・基本的に本体のタグ取得ルーチンを使わないようにした
　　・ヘッダが不正(?)で libvgm では取得出来ないデータに対してのみ使う
　・使用する音源チップ(YM2612等)、フォーマットのバージョン(VGM 1.51等)
　　の取得に対応
　・Media エクスプローラによる一覧表示は低速になった
・エミュレーションコア(以下、単にコア)で選択した番号と実際に使うコアの対応関係
　が誤っているものがあったのを修正(YM2612等)
　・ソースコードにハードコーディングしないでライブラリの機能を使うようにした
・コアの選択/無効化の設定で GA20 が表示されないのを修正
・コアの設定の組み合わせをプリセットに保存できるようにした(3つまで)
・同じ音源チップを2つ使う場合にコアの選択/無効化を Chip #1 と Chip #2 のどちら
　に対して適用するか設定できるようにした(ChipInstance)
　・両方適用、Chip #1 のみ(Chip #2 は無効化)、Chip #2 のみ(Chip #1 は無効化)
　　のいずれか
　・Chip #2 を使用する曲データは非常に少ない
　・別々にコアを指定することは出来ない(そこまで必要?)
　・v0.10 では Chip #1 のみに適用、Chip #2 は既定のコア
・サイズが大きいデータを再生時のメモリ使用量を削減(cym/mym/x1f を除く)
・GZ 圧縮されたデータの展開後のサイズが 32MB を超えると最後まで再生されない
　のを修正
・GZ 圧縮された yrw801.rom に対応
　・必要ないと思うが in_vgm.dll/VGMPlay は対応しているので念の為
・一部の曲データ(VGM)を開くとフリーズするのを修正
・zlib を内蔵するのをやめて本体と同じ場所にある kbzlib.dll を使うようにした
　・プラグインのファイルサイズが小さくなった

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

Version 0.10(2022/09/26)

・プレイヤー本体に標準同梱することにした
・バージョン番号を kbs98.kpi/kbgym.kpi より使用優先度が高くなるようにした
　・両プラグインの後継版としての意味もあるので
・ベースとなるライブラリを libvgm v0.51.0 に更新(2022/08/03 のもの)
・新たに拡張子 s98/gym/cym/mym/x1f に対応
・拡張子 cmf を対応拡張子から除外
・yrw801.rom のパスを設定出来るようにした
　・サウンドチップに YMF278B を使用する曲で必要になることがある

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

Version 0.01(2021/04/20)

・初版(ベースは in_vgm.dll/VGMPlay v0.40.9)

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