::新しいDA作った!

昨日から、新しいDAを、作り始めたのだが、完成した。

その名も「HexBrowserDA」だ。10kバイトなり。

根本的な機能は、Hex形式で、レコード、リソースの中身や、Prefs内の情報を、見ることで、自作のファイラーから呼び出して使うものなのだが、単独で起動した時も使えるように、

・Ftrの一覧
・Prefsの一覧

機能も、持たせた。

作った理由は、Filezや、PalmInsiderProや、Bird等、Hex形式で、表示/編集できるものは、数あれど、ワンハンドで、軽快に操作できる物が無い事。

HEX形式は、見られても、UInt32だったら、値はいくつ?UInt16だったら?バイナリ−だったら?というように、16進のコードと、キャラ表示だけでは、よくわからない。そこで、電卓で、10進に変換する必要があったりする。

さらに、アライメントが、揃っていればいいが、DmWrite等を、使って、アライメントが、崩れたデータは、見難いものだ。

これらを、解消するために作ったのだ。

通常に起動すると、Ftrの一覧が、表示される。

「P」ボタンで、Prefsの一覧も表示できる。
Prefsには、SavedとUnsavedの2種類があるが、キーボードの「U」「S」を、押せば切り替えられる。

Prefsの中身がみたければ、Prefsを選んで、「V」で、Hexモードにきりかわる。
自作のファイラーから呼び出した場合は、この画面が表示される。

Prefsも、Ftrも、Hex表示も、同じリストを、使って切り替えている。DAに、複数画面は、似合わないからね。

5ウェイで、行を変え、見たい行で、「Center」ボタンを押せば、変換モードになる。

ハイライトしている部分を、基点に、Int32,Int16、Int8、バイナリ−変換した結果が、上部に表示される。切り替えは、「T」キーだ。Int32->Int16->Int8->バイナリ−と、切り替わる。


バイナリ−以外は、SignedとUnsignedの2つの結果を表示する。
バイナリ−表示を、加えたのは、Attributeなどの情報は、Bitに、意味がある場合があるからだ。

5ウェイの左右で、基点を、ずらして、見る事も可能だ。アライメントの狂いも、自分で調整できる。

「B」キーで、ビックエンディアンと、リトルエンディアンも、切り替えられる。
ARMコードで、作られたか、68kコードで、作られたデータなのか、判らないからね。

リストオブジェクトの行数の最大は、多分、65500行くらいだから、掛ける8で、200kバイトまでの、リソースを、表示することが、可能なのだが。

200kバイトまで、という制限も、あまり意味が無い。通常のリソースや、レコードの最大サイズは、64kバイトだからだ。(もちろん例外はある)

そこで、今回は、無難に64kバイト以内のリソース、レコードのみに、限定した。だって、DAだよ。他のアプリが動いている時に、じっくり16進コードなど眺めないよね。

大きいコード等は、Birdでも使って、ゆっくりとやっつければいい。

<<補足>>

Ftrでも、UInt32*(MemPtr)として、使っている場合があるので、保管されてる値がアドレスのようだったら、読み込んで、Hex形式表示できるようにした。

表示しているのが、PrefsかFtrか、判るようにOffset表示場所に、区別と、CreatorIDを、表示するように変更した。

アドレスかどうかの判断は、非常に難しく、0x64000000付近以外を、選ぶと爆発する場合がある。

上の画像は、自作TreoHelperのFtr。
モリーチャンクに吐き出した、Hackルーチンの保管場所と、エントリーポイントが、わかるね。0x012F0C08だ。