現在,たまーに,ですが,ポケモン一匹一匹のデータを解析中です.どうも色々と暗号化みたいなものがかかっている様で,なかなかうまくいきません.復号化†1ルーチンから攻めようかと思ったのですが,かなり複雑で行き詰まり(ぉ,今度は暗号化ルーチンから攻めようかと思ったら実行時間が1フレームを超えるほど処理が長く(苦笑),なかなか苦戦しています・・・.
かと言って某ポケモンエディタを解析するんじゃなんか負けな気もするので,がんばります・・・.暗号化,復号化,どっちから攻めようかなぁ・・・.
まずは「ダメタマゴ」にならないためにチェックサムの計算から解析する事にしました.すこしポケモンのステータス(技等)を書き換えて絞り込んだ結果,チェックサムは一匹目は030042acより2バイトっぽい事が分かりました.で,データから計算したチェックサムとここに書かれているデータを比較してるわけですが,まずはそのチェックを外してみました.そのためには以下のようにプログラムを書き換えてください.R/S専用です.
「ダメタマゴ」チェックサムのチェックをはずす(R/S専用)
0803a026:e00a(halfword)
※VBAはプログラムを書き換えられないのでメモリビューアで自力で書き換えてください.
逆アセンブルしてみれば分かりますが,単なるジャンプ命令に変えてるだけです.
これで適当に1バイトずついじって,どのデータが何処にあるか分かるかも・・・と思いきや,一箇所のデータがほかの場所にも相互に作用しているらしく,バグって落ちます・・・_| ̄|○
また,チェックサムより前のデータをいじくると「ダメタマゴ」ではないけど,タマゴになったケースもありました.チェックサムはここだけなんですが,これは・・・本当にタマゴになった†2,という可能性もアリですね.
なお,肝心のチェックサム計算方法ですが・・・復号化するときに使ったのと同じルーチンを多様して求めている,までしか今のところ分かりません^^;
「まずは復号化ルーチンを解析してからにしろや^^」,という事でしょうか・・・.
なお,コードは私への連絡先を示す,という条件付きで転載許可します.まあ誰も転載しないと思うけどねぇ.一応ね,一応.