他人の空似自作物置場

thxxbgmTh145Patch.zip/Readme.txt

プログラム名:THxxBGM Th145Patch

用途:
東方心綺楼と東方深秘録をTHxxBGMで読み込めるようにします。

使い方:
・winmm.dllをTHxxBGM.exeと同じディレクトリに置く
・THxxBGM.exeを起動する
・あとはTHxxBGM.exeの通常通りに使うだけ

ファイル解説:
winmm.dll             プログラム本体
Readme.txt            今読んでいるこれ
History.txt           更新履歴
Th145PatchOnly        東方深秘録のみ版です、心綺楼が邪魔な人はどうぞ
thxxbgmTh145Patch.sln コンパイル用ソリューションファイル
thxxbgmTh145Patch     ソースコード


免責事項:
これに同梱されたプログラムその他が原因で発生したいかなる損害も当方は一切関知しません。
また、全てのプログラムがウイルスではないという証明も、ウイルスに感染していないという証明もありません。
自己責任でお使いください。


Q&A:
  Q:心綺楼の曲開けないんだけど
  A:製品版、かつv1.34bまでパッチが当たっている必要があります。
  それより古くても開けるかもしれませんが、ループ位置がずれるなど問題が発生する可能性があります。

  Q:深秘録の曲開けないんだけど
  A:東方深秘録製品版にのみ対応しています。
  コミケ体験版やWeb体験版対応は紛らわしいので撤去されました。

  Q:曲名はどこから持ってきたの?
  A:基本的に心綺楼や深秘録内部の定義から引っ張ってきています。
  ただし、人気爆発の曲はキャラ曲と同名だったため(大神神話伝など)
  サウンドトラックに合わせて「人気爆発/#{キャラ名}」という名前にしてあります。

  Q:ループ情報はどこから持ってきたの?
  A:同じく内部データから持ってきています。
  ただ、THxxBGMはディレクトリパス指定前にループ情報の読み込みが終わってしまうため、
  対象の心綺楼のバージョンによりループ情報を変えることができず、
  v1.34b決め打ちの定義になってしまっています。
  深秘録もパッチがリリースされるに従い同じ問題が発生する可能性があります。

  Q:その他バグをみつけた or 動作しない or 要望がある
  A:確認次第対応可能であれば対応します。
  公開しても問題が無いメールアドレスにて
  下部に記載されたアドレスまでメールをどうぞ。


メールアドレス:sweetie(あっと)click3.org


ライセンス:
本プログラムはBSDライセンスされたプログラムOggVorbisを使用しています。
{{{
Copyright (c) 2002-2008 Xiph.org Foundation

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:

- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.

- Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.

- Neither the name of the Xiph.org Foundation nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
}}}

自作部分のライセンス:
・本ライセンスにおいて、全ての条項は「変更の有無を問わず、明示暗示を問わず、商業慈善を問わず、
	個人法人を問わず、保持使用を問わず、有料無料を問わず、全体一部を問わず、コピー派生を問わず
	実行ファイルソースファイルを問わず、故意錯誤を問わず」と装飾されている物として扱う。
・著作権者は本ソフトウェアに関する一切の保障義務をもたない。
・上記条項唯一の例外として、本ライセンスに違反した場合を除いて著作権者から
	本ソフトウェアに関する一切の法的措置を受ける事が無い事のみ保証される。
・著作権者やその他保持者がこのライセンスの範囲で行う活動に支障が無い範囲であれば何を行っても構わない。
・上記条項の”何を行っても構わない”には本ソフトウェアの製作者を偽っての再配布も含まれる。
・全ての権利の行使において、著作権者への連絡、著作権者やライセンス条項の記載、
	適用ライセンスなどの制限は一切存在しない。
著作権者名:sweetie


面倒な人向けライセンス解説:
OggVorbisのライセンスをどこかに書いておけば再配布出来ます。
自作部分のライセンスについては記載義務すらありません。
上記だけ説明書に放り込んでおくといいでしょう。


技術情報(と、どうでもいい話):
仕組みとしては、ImportAddressTableを書き換えていくつかのWin32APIを自前の関数に向けるように書き換え、
THxxBGMに元から備わっているlistディレクトリに.txtを置くと読み込んでくれる機能を使って曲定義を追加。
さらにreadFileなどの読み込み指示も同様に自前関数に向け、.pakから読むようにして再生させている。
実際に書き換えているWin32APIは以下の通り。
* FindFirstFileW
* FindNextFileW
* FindClose
* CreateFileW
* CloseHandle
* ReadFile
* SetFilePointer
* WriteFile
* GetFileType
* PathFileExistsW
IAT書き換えのみで、機械語へのパッチは一切当てていない、なのでTHxxBGMが更新されようとも動くはず。
.oggをそのまま突っ込んでも読んでくれなかったので自前でデコードして突っ込んでいる。
.pakの読み込みは速度を出すためにチューニングはしているが、ほぼtouhouSEそのまんま。