- 信長の野望 天翔記 改造綜合スレ5 [転載禁止]©2ch.net
543 :.jp[sage]:2015/12/01(火) 00:00:28.61 ID:ZqO0tlOB - ・VS2015となります。
・verion.dll → 根っこをフックしているコア。 多数あるdllのどれをフックしても良かったのだけれど、HD ver なので、ひっかけてversion.dllを使ってみたw このdllは、天翔記だけが使うわけではなく、もしも他の人がツールとか作って、天翔記HDと同じ場所に置くと 読み込まれ、利用される可能性があるので、天翔記HD以外のプログラムから読み込まれた場合、 汎用のversion.dllと全く同じ振る舞いにしています。 ・HD.version.dll → TSModに相当するもの。但し現状だと、TSMod(TSMod/BGMmm/SNDmm)の2%ほどの機能しかない。 (しかし、それでも中核部のメモリフックは概ね全て済ませてある状態) ・GameDataStruct.cpp 「メモリと構造体変数等を結びつける行為」はこのファイルで全て行われている。 他のファイルには一切書かれていない。 張りたいメモリ位置から天翔記ゲームが始まった時の実行部のベースアドレスを引く、それが繰り返されているだけ。 ・GameDataStruct***.h 各種ゲーム構造 TSModの中からコアのコアと呼べる部分を概ねは移植済。 95版/TSModとは異なり、HD版は、(リソース以外の)データ系はパック化されていないので、「ファイル名」を重要視している。 例えば、「シナリオ」にしても「TSMod/ScenarioMod」では「何番のシナリオ」という考え方であったが、 HD.Modでは「何というファイルのシナリオ」という形にしている。 ・On*****.h/ On****.cpp HD版のexeの中から、とあるアドレスから突然ジャンプさせている。 エピローグやプロローグのアセンブラを消すことでこのような真似が可能となる。 ベースアドレスが変化するので、ジャンプ元・ジャンプ先・関数呼び出し先・メモリアクセス先・戻り先・なども 全て最初に計算される。 続く
|
- 信長の野望 天翔記 改造綜合スレ5 [転載禁止]©2ch.net
544 :.jp[sage]:2015/12/01(火) 00:13:11.48 ID:ZqO0tlOB - ・WriteAsmJumperAndReturn.cpp
先のジャンパー制御を行っている関数。 ・天翔記基本クラス.cpp ScenarioModに相当する。 ・ref class ユーザークラス。 天翔記基本クラスを継承している。 HD.version 内部に書いてあるが、実際には、ここが内部ではなく、外部マネージドDLLになる予定のもの。 HD.version自体を参照マネージドアセンブリDLLとして、最後の残りの部分だけを外部DLLにすることで、 C++/CLIでもC#でもVB.netでもIronPythonでも、あるいはまだ見ぬMicrosoftの新言語でも、 「なんでも好きな言語で書けばいいじゃない!」に出来る。 あげく、入力補完も完璧となる…ハズ。 概ね以上な感じ。 ・ScenarioMod層の簡易なのが欲しい人は、今回の投稿は気にしなくて良いです。 (上記で書いてある、「継承してマネージドで〜C#でも〜」とか書いてる部分だけが、ScenarioModに相当するものなので、 座して待て)
|
- 信長の野望 天翔記 改造綜合スレ5 [転載禁止]©2ch.net
545 :.jp[sage]:2015/12/01(火) 00:57:31.14 ID:ZqO0tlOB - 忘れてた。。。
.scの>>546さんへ。 一応「OR条件::鉄砲不可」前後で判定していないで飛んでる問題は修正出来たと思います。 (判定も入れて、下位ビットだけ見るようにしたので、それなりに安全には動作する気がします。) 「環境構築に苦労」と投稿にあったので、 「もしかしてVS2015でコンパイルエラー出まくり」で「アチコチ修正」したのかな? と思い、VS2015版でもコンパイル通るようにTSMod修正して、アップローダーに挙げておきました。
|