pop↑ push↓

☆ (ゝω・)v

プログラムを改造する(4)

EU4のパッチに関する技術情報です。

前回

パッチです。 popush.hatenablog.com

幅関連?

概略

これは覚えていないです。メモには幅を修正した1と書かれてました。バックアップの日付(8/21)からは下記あたりだと思います。

popush.hatenablog.com

f:id:saito-matanki:20170930165436p:plain

修正

f:id:saito-matanki:20170930171450p:plain

幅関連?

概略

これも覚えていないです。メモには幅を修正した2と書かれてました。バックアップの日付(8/22)からは下記あたりだと思います。

popush.hatenablog.com

f:id:saito-matanki:20170930171635p:plain

修正

このコードは厄介でした。いつも通り、エスケープ文字を見て、カウンタを2つ進めると、その中で使っている箇所は良いのですが、実は文字列をコピーしている箇所があり、エスケープ文字しかコピーされないということが起こりました。

したがって修正はトリッキーになります。まず絶対アドレスの指定が連続して2つありますね。これが元の文字列と対象の文字列の絶対アドレスです。これを動かす、つまりrelocテーブルを書き換えるのは面倒だったため、2回leaしてアドレスをedxに取ってます。一つ消えてしまいますが、よく見ると、0x100だけずれているので、使う時はedxから0x100引いてやれば大丈夫です。

f:id:saito-matanki:20170930172840p:plain

さらに、使う直前になって1バイトにするという処理があるのでnopします。 f:id:saito-matanki:20170930180900p:plain

f:id:saito-matanki:20170930180924p:plain

まとめるとこうです。 f:id:saito-matanki:20170930183807p:plain

以上2つの処理で表示が改善します(フランスの国名がぐちゃぐちゃなのはわざとそうしています)。

f:id:saito-matanki:20170930183057p:plain

f:id:saito-matanki:20170930183030p:plain

プログラムを改造する(5)へ続く