fc2ブログ

三角端。

Δ-sphere管理人三角区也による絵日記/ゲーム開発日記。コメントは右側のweb拍手からどぞー。

バイナリファイルのお作法

今日はバイナリファイルのお話です。

以前作っていたフォント用ファイルが今見てみると大変扱いにくいファイルフォーマットだったので作り直していました。
あとテキストテーブルがなかったことに気付いたので新規に。

テキストテーブルというのは専用のIDと文字列が紐付けされたテーブルです。
たとえば
ID:text_000 text:オープニング・・・魔王が攻めてきてうんたらかんたら・・・
そんな感じ。
ツクールをやっている人からしたら直接イベントに書き込んでしまえばいいじゃん、って思うかもしれませんが、
テキストの変更をしたいときに変更箇所を探すのが大変になってしまいます。
それが複数箇所で使われていたりするともう何箇所変更すればよいのやら・・・
(あとは、まあ、翻訳することがあればすごく楽になるんじゃないかなあ・・・)


自分はバイナリフォーマットを作るときに、
[ヘッダ]
[データ1]
[データ2]
・・・
という形をとります。
ヘッダにはバージョンと各データ先頭までのオフセット値を入れてます。
そうするとバージョンアップしたときに対応しやすくなります。

今回のテキストテーブルは
[ヘッダ]
[データヘッダ列]
[テキスト列]
[ハッシュ列]
という形をとりました。

データヘッダは[テキストIDのオフセット][テキスト本文のオフセット]となっていて
それぞれがテキスト列のどの位置かを指し示すようにしました。
文字列はデータサイズが一定ではないのでちょっと面倒ですね・・・


これでデータを探すときは
1.ハッシュ列に対して大体どのあたりにデータがあるかを探す
2.1の値をもとにデータヘッダを探索
3.2で見つけたデータヘッダの指し示すテキスト本文を取得
という流れになりました。

それでこの解析器を独立したモジュールにしたのでもう安心です。
過去の自分は何を血迷ったか、データヘッダにデータの構造体しか書いていなくて
どういったファイル構造なのかまったくわからない状態になっていました。
まさか、過去の自分が書いたコードをリバースエンジニアリングする羽目になろうとは・・・
スポンサーサイト



引越しが趣味です

2年に1回は引越しをしている気がします。

というわけでリアル引越しをしました。

引越ししてネットがすぐつながるぞ、と意気揚々としてPCをつけたら画面がつかないという現象が。
まあ、引越し作業で揺れてパーツが外れてしまっているというのは間々ある話なのですが、
今回は少々厄介でした。

PCのスイッチを押すと、Windowsロゴが出ますね。
そのあとログイン画面が出るはずが・・・真っ暗。
モニターにNoSignalとか出てきてどうしよう。
セーフモードで起動して、ディスプレイドライバを無効化すると動くようで、ソフト側の問題っぽいと判断。
引越し直前にWindowsUpdateがあったのでそれをロールバックしてみたんですが、直らず。
ディスプレイドライバの最新版を入れても直らず・・・

もうこれ、グラフィックボードが壊れたんじゃね?
と大きなため息とともに、最後の可能性。

引越しの衝撃によるパーツの緩み。

挿しなおしてみたらなんと、正常に動きました!
思わず小躍りをしてしまいたいくらいでしたw

最初から何も付かないんなら一番に疑うべき原因なんですけどねえ・・・
今回はドライバを有効にしないと問題が出ないばっかりに・・・

アレか、W7はOSが最低限のドライバを持っているからグラボからの出力ができてしまうのか・・・
よくわかりません。