SSブログ

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

EXEファイル内で特定のpicファイルが読み込まれる場所を探すのは大変だ。なにしろデータセグメント内の「読み込むファイルの情報を格納した領域」がファイル読み込み用サブルーチンに渡される時、アドレスが即値で渡されていないらしい。だから特定のpicファイルがどの時点で読み込まれるかをEXEファイルを検索して知るのが難しい。だから、その直前のパレット実現場所を見つけてそのパレットファイル読み込みを突き止め、パレットファイル名を取得するのはさらに難しい。

これは大変すぎるので後回しにする。先に、他の可能性をあたる。

私は思うのだが、たくさんある画像ファイルにどのパレットが適用されるべきかを記録し管理するのはソフト製作者さんにとって大変なことだったはず。だから、データのどこかにpicとパレットファイルの関連付けが記録されていても不思議ではない。その可能性があるのは4つの場所。

可能性その1。データセグメント内の「読み込むファイルの情報を格納した領域」にはひょっとして補足情報を格納する領域がないか。調べたがなかった。領域の先頭をデータセグメントのオフセットSIとすると、
WORD PTR[SI+0] ファイルを読み込むバッファのセグメント
WORD PTR[SI+2] ファイルを読み込むバッファのオフセット(実際には0000Hが格納される)
WORD PTR[SI+4] 読み込むバイト数(実際にはFFFFHが格納される)
WORD PTR[SI+6] ファイルが存在するフロッピーディスクドライブ
WORD PTR[SI+8] これ以降に、読み込むファイルの絶対パスがある(末尾は00H)
情報はここまでで、その次のアドレスからは別のファイルの情報が始まる。

可能性その2。picファイルの中に、適用すべきパレットファイルを意味する値が存在しないか。調べたところ、たったひとつ不明な領域がある。それはこれから調査する。picファイル先頭からのオフセットと各2バイトが意味するものは、
00H - 01H グラフィックの横バイト数
02H - 03H グラフィックの縦ライン数
04H - 05H 常に0000H
06H - 07H 何かの数値が入っているが内容不明
08H 1行目データ先頭アドレス(最初の1バイトはサブルーチンEF80H内で条件分岐に使う)
1行分のデータは縦ライン数分続き、それが4プレーン分続く。透明データは存在しない。
オフセット06Hからの2バイトだけが内容不明だ。これから調査しなければ。

可能性その3。フロッピーディスク内のどこかに別ファイルとして記録されている。これはないだろう。当時のソフトは、面倒なデータ圧縮をしていることからわかる通り、フロッピーという小容量メディアにギリギリ詰め込む努力をしていた。だから保守する人間だけが知っていればいい情報を製品内に別ファイルとして残さないだろう。残すとすれば、

可能性その4。製品内でなく、このソフトを作った会社のオフィスの机の引き出しまたはPCのハードディスク内にあった。これは私にはどうしようもない。

結論。私がこれからやることは、
1.まずpicファイル内の不明な2バイトが何かを突き止める。もしそれがパレットファイルを意味していないならば、
2.大変だけれどもEXEファイル内を探して、各picファイルに対応するパレットファイルを知る方法を考える。それが駄目ならば
3.数十個あるパレットファイルをpicファイルの一つ一つに適用してみて、いちばんそれらしい色を採用する。
でも最後の3は大変な手間がかかるのにプログラミングとかデータ解析という作業とは無縁だ。私はプログラマーだからこの作業をやっている。プログラミングにもデータ解析にも関係しない大変な作業は、私はやらないだろう。つまり2.が駄目ならその時点で私はやめるだろう。

コメント(0) 

コメント 0

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