内容
外部ファイルの展開
外部ファイルの展開
他とは少し違った展開方法となったので、その方法を紹介します。
まず実行ファイルですが、コードを作る際はほぼ使わず、大体はMAIN.BINで処理されている様です。
本当は根性でバイトコピーを使用してアドレスを合わせ、展開アドレスを特定したのですが、
こちらの方が早いです。掲示板で外部ファイルについて質問を受けた際には
まだ気付いていなく、説明できなかった為ここで説明します。
まずはMAIN.BINをps2disで展開します。その際ファイルのアドレス(使用する部分の最初のアドレス)と
メモリアドレス(展開先アドレス)を入力する事になりますが、ここは双方共に00000000にします
自然さんの解析講座で展開先アドレスは$00000008のデータ部に記述されている場合が多いとなっているので
確認すると、$00100000となっています。
これは実行ファイルの展開先アドレスですので、この場合上の方法ではなく他の方法で
特定しなければなりません。
画像の$00000018と$0000001cのデータ部を見て下さい。
今回はこれを使用します。
次にMAIN.BINをバイナリエディタで開き、一番最後の部分へ行くと
となっており、何も記述されず0になっているアドレスを確認すると
$000429984(4バイト単位で見るので$000429983ではない)となっています。
$0000001cのデータ部$00591804-$000429984=$00167e80これが展開先アドレスとなります。
理由は上の画像で
00000018:00591760
0000001c:00591804
となっているのでバイナリでの0004298E0を00591760、000429984を00591804に合わせ、
この様になるようにするという理由からです。うまく説明できていませんね。
バイナリで開いた場合最後のデータとなるテーブルを合わせるということなんですが、
他のソフトの展開先アドレスが$00000008のデータ部に記述されている外部ファイルもこの方法で
合わせられるので確認してみるといいかもしれません。
何がいいたいのかなんとなくわかると思います。
しかしyuyさんが作成したps2sstの現バージョンでは自動的にアドレスを合わせてくれるので
この方法が必要ないといえば必要ないです。
龍が如くでは他にも外部ファイルがあり、baccara.bin,battingcenter.bin,blackjack.bin,cabaret.bin,
carchase.bin,health.bin,game.bin,oddoreven.bin,pachislot.bin,roulette.bin,ufocatcher.binがありますが
これは自然さんで紹介されている方法で展開先アドレスが特定できます。
このファイルはディスクのデータをisoイメージにしたうえで最初の画像の$00000000のデータ部に
記述されている$336f574dをバイナリエディタで見付けられますのでそこを先頭として必要な部分のみ保存して下さい。