改造例 > 武将数を増やす

※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

武将数を増やす

  • 現状は241名で255名まで増やすことができる

1.武将データを作る

 追加だけではなく既存武将も変更する場合は大掛かりになるのでExcelなどで表を作ったほうが良い。
 武将データ、人徳データ、武将名データ、顔行列データは別々にバイナリデータにしておくのが良い。

2.人徳データを移す領域を決める

 武将データ241名分は2B54h~32DBhで追加14名分(112バイト)の領域を追加しなければならない。
 ちょうど武将データ領域直後(32DCh)から人徳データ(241バイト)が詰まっているので255人分(255バイト)の空き領域を見つける。※空き領域:FFが連続している箇所
 FFの連続しているところならばどこでもいいという訳ではありません。
 とりあえず近場で言うと3E69h~400Fまでが空き領域なので3F10h~400Ehに人徳データを移す。

3.人徳データ先頭アドレスを変更する

 2018hに人徳データの先頭アドレスが格納されているのでそれを移したアドレスに変更する
R@Mアドレス
変更前 $92CC 32DCh
変更後 9F00h 3F10h
 ここでのR@Mアドレスからメモリアドレスを求める計算は3F10+5FF0=9F00h

4.人徳データ(退却時用)を移す領域を決める

 1083Bh~1092Bhにある人徳データを2.と同様255バイトの連続空き領域に移す領域を探す
 115CEh~11A8Fhが空き領域なのでここのどこかに移す
 例)117B0h~118AEhに移す

5.人徳データ(退却時用)先頭アドレスを変更する

 12C68hに人徳データ(退却時用)の先頭アドレスが格納されているのでそれを移したアドレスに変更する
R@Mアドレス
変更前 $882B 1083Bh
変更後 &97A0 117B0h
 ここでのR@Mアドレスからメモリアドレスを求める計算は117B0-8010=97A0h

6.顔データの列番号データを移す

 顔データの行番号と列番号は連続しているのでそれぞれ14バイトずつ計28バイトを追加することになる
 列番号の直後にあるデータ群57バイト(未解析のため何に使用しているか分からない)を(空き領域に)移動し、顔データ行番号の追加と顔データ列番号を移動させる
未解析のデータ群の参照アドレスは1F518h
R@Mアドレス
変更前 $F71D 1F72Dh
変更後 &9E90 19EA0h
 ここでのR@Mアドレスからメモリアドレスを求める計算は19EA0-10010=9E90h

7.顔データの列番号データの先頭アドレスを変更する

 1F4C8hにある顔データ列番号先頭データアドレスを変更する
R@Mアドレス
変更前 $F62C 1F61Ch
変更後 &F639 1F649h
 ここでのR@Mアドレスからメモリアドレスを求める計算は1F649-10010=F639h

8.追加・変更した武将名データのアドレスを変更する

 武将名データは2204h~262Bhの1064バイトの領域がありその直後は都市名データが格納されている。追加や変更に伴いこの領域では足りないであろう。
 ここでも後半にあるデータを移すかというとそうではない。武将名は一人ずつ名前のアドレスが設定されているので空き領域に武将名データを作ればよい。
 人徳データを移動しているのでそこに241バイト、3E69h~400Fにも空き領域は残っているので任意の場所にデータを作りそこを参照すればよい。
 足りなくなることはほぼ無いと思うがチョウコウやチョウショウなど同名の武将を追加した場合は参照先を同じアドレスにすればよい。
 他にも
アドレス 2204 2205 2206 2207 2208 2209 240A 240B 240C 240D
C6 FE FB C2 C6 6D E2 C2 C5 47
文字
 というデータがあれば、ギュウキンは2204h、ウキンは2207h、モウカクは240Ah、カクは240Chのアドレスを指定すれば領域を節約できます。

9.武将データ、人徳データ、武将名データ、顔行列データを変更する

 1.で作成したデータを貼り付ける。
 ※Excelやテキストエディタで作成した16進数はそのままではバイナリエディタ上で貼り付けはできません。貼り付けると文字コード(SHIFT-JISの)が貼り付けられてしますので注意!
 必ずバイナリに変換したデータを貼り付けてください。