SSブログ

孤独へ向って突っ走れ (34) [  PC-98x1(補完計画)]

ちょっと気力が低下して疲れを感じた私は、今までのように最初から順に見てゆくことに退屈を感じた。それで、アドレスで最初のcall 441c(パレット実現)から調べるのでなく、試しに最後のcall 441cから始めてみた。

CS:BECCにある最後のcall 441cの、ほんの少し後でretしている。やはり、こんなアドレスにあるのはメインルーチンでなくサブルーチンだ。ではこのサブルーチンの始まりはどこだ。普通は、このサブルーチンの直前にも別のサブルーチンが記述されている。そのサブルーチンもretかiretで終わっている。私は直前のretを探した。そのすぐ次から、このサブルーチンは始まっている可能性が高い。

これで、いま私が見ているサブルーチンがどこからどこまでかがわかった。

次に私は、その中にあるcall 6fec(ファイル読み込み)とcall ef08(pic展開)を探した。ちょっと困ったことになった。パレット実現はあるのに、パレットファイル読み込みはなかった。pic展開はあるのに、展開元のデータを読み込む処理がなかった。

picもpalも、サブルーチンの呼び出し元で読み込んでいるに違いない。

私は自作プログラムでEXE内を検索した。call bdd8(このサブルーチンの呼び出し)は5か所で行われていた。(手前味噌になるが、このEXE内call検索用自作プログラムは解析に役立つ!)

CS:ABA5 call bdd8
CS:ACDA call bdd8
CS:AEA5 call bdd8
CS:BD10 call bdd8
CS:DCC2 call bdd8

私はこれらをひとつずつ調べることにした。

私がいま、とんでもなく膨大な量の作業にとりかかっていることがわかるように、やっていることの全体像をはっきりさせよう。EXE内のcall 441c(パレット実現)をひとつずつ調べ、その前後にpicファイルの読み込みを見つけ、どのpicにどのパレットが必要かを知るのが目的だ。で、EXE内の未調査のcall 441cがいくつあるかというと、17箇所ある。で、そのうちの1つめを現在調査中だ。調査したところcall 441cを含むサブルーチン内にはファイルの読み込みがなかったから、サブルーチンの呼び出し元5か所をこれから調べる。

つまり私はこれから5か所の呼び出し元をひとつひとつ調べ、それが終わったらようやく17箇所あるcall 441cの次の箇所にとりかかる。この時点で残り16箇所だ。残り16個でも、もしもサブルーチン内にpicやpalのファイル読み込みがなかったら、呼び出し元を調べる。一体いつになったら全部終わるのかは、謎だ。



とはいえ、呼び出し元調査を始めると、いくつかのpicに対応するpalがわかってきた。

2つめの呼び出し元を調べる前に、私は今回わかったpalをpicに適用してみた。自分のやっている作業が正しいと確かめてから次へ行くべきだからだ。その結果がこれだ。
tt29.gif

絵が黒くなった。あなたは、これが何かを間違った結果だと思うだろうか。調べなければわからないが、これで正しい可能性もある。いつかの記事に私が書いた、フェードイン前のパレットは黒いという、その可能性だ。黒いけれども何やらうっすらと絵が見える。ものすごく暗いが、決してサイケな色使いではなく、赤であるべき所は赤、緑であるべき所は緑、青であるべき所は青のように見える。でも全体的に明度と彩度がめっちゃ低い。果たして、これはフェードイン前の暗さなのだろうか。それとも私のミスなのだろうか。

そこで私は98エミュでゲームを起動して、このシーンを確認し、フェードインしているかを見た。フェードインしていなかった!

また私のミスによるバグなのか。それとも何か事情があって絵が暗いのか。私のプログラムのバグは今の所みつからない。

私はこの絵のパレット実現している所の先をさらに解析し、パレットをいじっているならそれを知り、いじっていないならいないことをはっきりさせ、そして何とかしてこの絵の色を正しくするべきだ。

そこまで出来て初めて、私は「17箇所あるcallの1つめの、それを含むサブルーチンの呼び出し元が5か所あるうちの『2つめ』」に取りかかってよい。



また、やることが増えた。
先が、長すぎる。

アセンブラコードの解析は、基本的には簡単だ。限られた種類の命令が連続しているだけだ。それにもかかわらず、アセンブラコードの解析は大変だ。誰でもできる作業じゃない。なぜか。やっても、やっても、まだやっても、とことんやっても、なかなか先へ進まないからだ。体力と気力と健康は確実に少しずつ奪われてゆくのに、やるべき作業はまるで大海原のように先の先まで続き、いつ終わるかわからない。これが、アセンブラの恐さだ。

コメント(0) 

コメント 0

コメントの受付は締め切りました