::新しい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だ。