プログラムを改造する(4)
EU4のパッチに関する技術情報です。
前回
パッチです。 popush.hatenablog.com
幅関連?
概略
これは覚えていないです。メモには幅を修正した1と書かれてました。バックアップの日付(8/21)からは下記あたりだと思います。
修正
幅関連?
概略
これも覚えていないです。メモには幅を修正した2と書かれてました。バックアップの日付(8/22)からは下記あたりだと思います。
修正
このコードは厄介でした。いつも通り、エスケープ文字を見て、カウンタを2つ進めると、その中で使っている箇所は良いのですが、実は文字列をコピーしている箇所があり、エスケープ文字しかコピーされないということが起こりました。
したがって修正はトリッキーになります。まず絶対アドレスの指定が連続して2つありますね。これが元の文字列と対象の文字列の絶対アドレスです。これを動かす、つまりrelocテーブルを書き換えるのは面倒だったため、2回leaしてアドレスをedxに取ってます。一つ消えてしまいますが、よく見ると、0x100だけずれているので、使う時はedxから0x100引いてやれば大丈夫です。
さらに、使う直前になって1バイトにするという処理があるのでnopします。
まとめるとこうです。
以上2つの処理で表示が改善します(フランスの国名がぐちゃぐちゃなのはわざとそうしています)。
プログラムを改造する(5)へ続く