|| 「踊る金狼亭」TOPメモ箱>バリアントと拡張DLL

対応】 CardWirth Extender 1.4.0以降、1.7.0まで
大江戸バリアントや学園バリアントにCardWirth Extender(以下、「拡張DLL」と表記します)を導入しようとして、つまづいた方もいらっしゃるのでは、という事で。

バリアントエンジンへの拡張DLL導入方法は、
  1. エンジン本体にパッチを当てる。
  2. 拡張を構成する各ファイルのうち、CardWirth.exe以外を指定された場所にコピー。
という手順になりますが、場合によっては、あともうひと手間必要になります。
セーブデータを見る際、拡張DLL側で「Yado」フォルダを呼んでいるため、セーブデータの保存フォルダ名が「Yado」でない場合にエラーが出るからです。

これを解決するには、拡張DLLの修正が必要です。
TwitterでCardWirth Extenderの作者さんにお尋ねしたところ、DLL内のセーブデータの場所を個人で書き換えても良いという事でしたので、修正場所を書いておきます。
なお、CardWirth Extenderの更新チェックは、既にサポートが終了しているようです。 ONにすると、エンジン起動時に毎回更新チェック失敗の表示が出ます。
初回エンジン起動時に行われる更新チェックの使用確認は、「いいえ」を選ぶと良いと思います。
設定済みの方は、cwex.iniの「CheckEnabled」の値を0にするとOFFになります。

※※※
拡張DLLを自力で書き換えた場合、原則バグ報告の受け付け対象外となります。ご注意ください。
詳しくはCardWirth Extender FAQをご覧ください。

Case1:バリアントの種類毎にインストールフォルダを分けている場合

パッチとファイルのコピーを終えたら、extender.dllをバイナリエディタで開きます。
DLLの中身を「yado\」で文字列検索してください。2箇所あるはずです。

「yado」×2箇所を、そのバリアントのセーブデータ保存フォルダ名に書き換えれば、エラーは出なくなります。
例えば大江戸バリアントなら「yado」→「naga」、学園バリアントなら「yado」→「heya」といった具合です。

[▲上へ]

Case2:複数バリアントやノーマルエンジンを同じフォルダ内に共存させている場合

エンジンの種類毎(正確にはセーブの保存場所毎)に拡張DLLを準備する必要があります。
  1. まず、パッチとCardWirth.exe、extender.dll以外のファイルのコピーを済ませてください。
  2. 次に、共存なしの場合を参考に、それぞれのバリアントに対してセーブデータの場所を適当に書き換えた拡張DLLを準備します。
  3. 準備した拡張DLLをお互いかぶらないように変名し、エンジンと同じ場所に置きます。
    このとき、変名前後でファイル名の文字数は同じにしてください(拡張子まで含めて12文字)。
  4. バイナリエディタで各バリアントのエンジン本体を開きます。
  5. 文字列「extender.dll」を検索で探し、そのバリアント用の拡張DLLの名称に変更します。 この修正を、変名DLLを準備した全てのバリアントエンジンに対して行います。
共存方法は、以上です。
この際、バリアントの種類毎にインストール場所を分けた方が早いかもしれません。

↓共存例/[ ]付きはフォルダ
[CardWirth]
├[D_E1] …□大江戸バリアント データフォルダ
├[D_M1] …◎現代I型バリアント データフォルダ
├[D_S1] …◇学園バリアント データフォルダ
├[Data] …●ノーマルエンジン データフォルダ
├[heya] …◇学園バリアント セーブフォルダ
├[Naga] …□大江戸バリアント セーブフォルダ
├[Ohanashi] …□大江戸バリアント シナリオフォルダ
├[Rumormil] …◇学園バリアント シナリオフォルダ
├[Scenario] …●ノーマル/◎現代I型 シナリオフォルダ
├[Scheme]
├[source]
├[Yado] …●ノーマル/◎現代I型 セーブフォルダ

├CardWirth.exe …●ノーマルエンジン(内容変更なし)
├CardWirthEditor.exe
├ModernWirth.exe …◎現代I型バリアントエンジン(内容変更なし)
├OedoWirth.exe …□大江戸バリアントエンジン(変更:「extender.dll」→「ext_oedo.dll」)
├OedoWirthEditor.exe
├S_C_Wirth.exe …◇学園バリアントエンジン(変更:「extender.dll」→「ext_gaku.dll」)
├SchoolWirthEditor.exe
├JPTXMaker.exe
├JPYMaker.exe

├cwconv.dll(v.1.6.0.0)
├ext_oedo.dll …□大江戸バリアント用拡張(変更:「yado」→「naga」×2箇所)
├ext_gaku.dll …◇学園バリアント用拡張(変更:「yado」→「heya」×2箇所)
├extender.dll …●ノーマル/◎現代I型共用拡張(内容変更なし)
├*.chm
├*.txt
├cwex.ini
└jptxTag.ini

[▲上へ]

バリアントエンジン用のパッチ(expatch.exe)の入手

作者の方のサイトからダウンロードできます。
↑のリンク先から入手できなくなっているときは、パッチの代わりにエンジンを手動で書き換えれば動くようになります。
ただし、エンジンを自己都合で改変した場合は当然ながらサポート対象外となりますので、何か起きても救済措置は望めません。自己責任でお願いします。

以下、パッチで書き換わる箇所(5か所)。
置換される部分のみ抜き出して書いています。
(1)00000763〜00000768(6バイト分)
     00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
---------+-----------------------------------------------
00000760       68 EE C2 4C 00 6A
   ↓ 
00000760       6A 00 68 EE C2 4C

(2&3)000007A1(1バイト分)/000007A5〜000007BA(22バイト分)
     00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
---------+-----------------------------------------------
000007A0   17       6A 01 8D 4D C4 51 E8 CC A0 0C 00
000007B0 A3 F4 30 50 00 66 C7 45 E4 08 00
   ↓ 
000007A0   0A       E8 28 A2 0C 00 89 45 D0 68 FF C2
000007B0 4C 00 50 E8 A2 A1 0C 00 FF D0 90

(4)00000866〜0000086F(10バイト分)
     00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
---------+-----------------------------------------------
00000860             35 F4 30 50 00 E8 A4 A1 0C 00
   ↓ 
00000860             75 D0 E8 5D A0 0C 00 90 90 90

(5)000CB4EE〜000CB515(40バイト分)
     00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
---------+-----------------------------------------------
000CB4E0                             83 4C
000CB4F0 83 83 83 76 83 56 83 87 83 93 83 6F 81 5B 82 C9
000CB500 95 5C 8E A6 82 B3 82 EA 82 C4 82 A2 82 E9 83 5E
000CB510 83 43 83 67 83 8B
   ↓ 
000CB4E0                             54 4D
000CB4F0 61 69 6E 57 69 6E 64 6F 77 00 00 00 00 00 00 49
000CB500 6E 69 74 69 61 6C 69 7A 65 00 65 78 74 65 6E 64
000CB510 65 72 2E 64 6C 6C
ご自身で確認したい方は、CW1.28(11)とCW1.29の両方をバイナリエディタで開き、相違点を探してください。
両者で異なる点のうち、前の方から5つ目までが、バリアントエンジンにCardWirth Extenderを導入するにあたって変更すべき箇所です。

[▲上へ]

CardWirth Extender本体の入手

作者の方のサイトからダウンロードできます。
↑のリンク先から入手できなくなっているときは、カードワース愛護協会のサイトで入手できるCW1.29やCW1.30に含まれるファイルが利用できます。
以下の7ファイルを、バリアントエンジンのフォルダにコピーしてください。
[▲上へ]