ざつだん。
(99/03/01〜99/03/31)
・ログを分離しました。
・「Windows
Undocumented ファイルフォーマット」
バグなのか、誤訳なのか、筆者の解析が甘いのか?こんなん参考にしてたんじゃSHGエディタなんて作れないって。
・SHG(Segmented Hyper Graphic)ファイルフォーマット
DEKOの解析結果を交えて解説する。私の奴よりまともなSHGエディタを作ろうと思っているヒトはぜひとも参考にして頂きたい。ただし、メタファイルやマクロについての解説は今回は除いてある。
※Delphi4でコーディングする際にはフィールドタイプに注意すること(int=SmallInt等)。
[構造]
SHGファイルはMRB(マルチレゾリューションビットマップ)ファイルを拡張したフォーマットになっている。
SHGFILEHEADER
|
[SHGFILEHEADER]
フィールド名 | タイプ | 注釈 | 備考 |
sfType[2] | char | 'lp'(0x706c) | 但しデータがLZ77圧縮されている場合には'lP'(0x506c)となる。 |
sfNumObjects | int | ファイル中のイメージの数 | |
sfObjectOff[] | DWORD | SHGIMAGEHEADERまでのオフセット | SizeOf(SHGFILEHEADER) |
[SHGIMAGEHEADER]
フィールド名 | タイプ | 注釈 | 備考 |
siImageType | BYTE | 0x06=BMP 0x08=WMF |
|
siCompression | BYTE | 0x00=非圧縮 0x01=RLE圧縮 0x02=LZ77圧縮 |
|
siDPI | BYTE or WORD |
DPI×2 | 通常のBitmapは96DPI |
[SHGBITMAPHEADER]
フィールド名 | タイプ | 注釈 | 備考 |
sbIsZero | BYTE | 常に0x00 | |
sbDPI | BYTE or WORD |
DPI×2 | 通常のBitmapは96DPI |
sbTwoHund | WORD | 常に0x0200 | |
sbNumBits | BYTE or WORD |
BPP×2 | =BitmapInfoHeader.biBitCount×2 |
sbWidth | WORD or DWORD |
Bitmapの幅×2 | =BitmapInfoHeader.biWidth×2 |
sbHeight | WORD or DWORD |
Bitmapの高さ×2 | =BitmapInfoHeader.biHeight×2 |
sbNumQuads | WORD or DWORD |
RGBQUADSの数×2 | =BitmapInfoHeader.biClrUsed×2 |
sbNumImp | WORD or DWORD |
重要なRGBQUADSの数×2 | 0で構わない |
sbCDataSize | WORD or DWORD |
BITMAPのサイズ×2 | BITMAPFILEHEADERやBITMAPINFOHEADER、RGBQUADSを含まない。BITMAPが圧縮されているのならば圧縮後のサイズ。 |
sbSizeHS | WORD or DWORD |
HotSpotデータのサイズ×2 | (HOTSPOTHEADER + HOTSPOTRECORD + マクロ文字列 + コンテキストIDとコンテキスト文字列)×2 |
sbUnk1 | DWORD | 未知 | (SHGIMAGEHEADER + SHGBITMAPHEADER + RGBQUADS) ×2ではない事に注意。 |
sbSizeImage | DWORD | sbCDataSize(2倍する前の値) + sbUnk1 | ×2ではない事に注意。 |
[HOTSPOTHEADER]
フィールド名 | タイプ | 注釈 | 備考 |
hhVersion | BYTE | 常に0x01 | |
hhNumHS | WORD | ホットスポットの数 | |
hhConTextOffset | DWORD | コンテキストIDとコンテキスト文字列までのオフセット | マクロデータのサイズ。 |
[HOTSPOTRECORD]
フィールド名 | タイプ | 注釈 | 備考 |
hrType | WORD | 0x00E2=可視ポップアップ 0x00E3=可視ジャンプ 0x00C8=可視マクロ 0x04E6=不可視ポップアップ 0x04E7=不可視ジャンプ 0x04CC=不可視マクロ |
コンテキスト文字列に'>'か'@'が含まれるとマクロ扱いとなり、第4ビットがセットされる。 |
hrZero | BYTE | ホットスポットの数 | |
hrBox | RECT | ホットスポットの領域 | Left,Top,Width,Height(BMP) Left,Top,Right,Bottom(WMF) |
hrMacOffset | DWORD | マクロデータへのオフセット | hrTypeの第4ビットがセットされていなければコンテキスト文字列のHash。 |
[マクロ文字列(オプション)]
Null終端でマクロ文字列が繰り返される。
[コンテキストIDとコンテキスト文字列]
Null終端で(コンテキストIDとコンテキスト文字列)が繰り返される。
ついでにBitmapの構造も示しておく。この構造さえ知っていればSHGビュワーはなんなく作れる。
[構造]
いわゆるDIB(デバイス独立ビットマップ)の構造は以下のようになる。必ずしもRGBQUADSが存在する訳ではない事に注意。
BITMAPFILEHEADER |
BITMAPINFOHEADER |
RGBQUADS |
BITMAP (ピクセルデータ) |
[BITMAPFILEHEADER]
※Delphi4ではTBitmapFileHeaderとして定義されています。
フィールド名 | タイプ | 注釈 | 備考 |
byType | WORD | 'BM'(0x4D42) | |
bfSize | DWORD | ファイルサイズ | |
bfReserved1 | WORD | 予約。常に0x00 | |
bfReserved2 | WORD | 予約。常に0x00 | |
bfOffBits | DWORD | BITMAP(ピクセルデータ)までのオフセット |
[BITMAPINFOHEADER]
※Delphi4ではTBitmapInfoHeaderとして定義されています。
フィールド名 | タイプ | 注釈 | 備考 |
biSize | DWORD | BitmapInfoHeaderのサイズ | SizeOf(BitmapInfoHeader) |
biWidth | DWORD | Bitmapの幅 | =SHGBitmapHeader.sbWidth |
biHeight | DWORD | Bitmapの高さ | =SHGBitmapHeader.sbHeight |
biBitCount | WORD | 1ピクセルあたりのカラービットの数 | =SHGBitmapHeader.sbNumBits |
biCompression | WORD | BI_RGB=非圧縮 BI_RLE8=1Pixel 8Bit RLE BI_RLE4=1Pixel 4Bit RLE |
通常はBI_RGBを指定。 |
biSizeImage | DWORD | イメージの全バイト数 | |
biXPelsPerMeter | DWORD | 水平解像度 | 通常は0 |
biYPelsPerMeter | DWORD | 垂直解像度 | 通常は0 |
biClrUsed | DWORD | 使用するRGBQUADSの数 | 通常は0(すべて) |
biClrImportant | DWORD | 重要なRGBQUADSの数 | 通常は0(すべて) |
[RGBQUAD]
※Delphi4ではTRGBQUADとして定義されています。
フィールド名 | タイプ | 注釈 | 備考 |
rgbBlue | BYTE | 青の輝度 | |
rgbGreen | BYTE | 緑の輝度 | |
rgbRed | BYTE | 赤の輝度 | |
rgbReserved | BYTE | 予約。常に0x00 |
・「SHG Editor」
とりあえず完成。仕様は以下の通り。
1.RLE圧縮/LZ77圧縮されたSHGファイルに対応。
2.読込/書込共にSHGのサブセットを使用。
3.保存時にはRLE圧縮(圧縮した方がファイルサイズが小さくなる場合のみ)。
どの辺が「サブセット」なのかと申しますと...
1.MRBに対応していない(複数のイメージがあっても最初の一つしか読み書きしません)。
2.マクロに対応していない。
3.WMFに対応していない。
まぁ、普通に使う分には問題ないんですけどね。これで作ったSHGファイルはもちろんSHED.EXEでも読めますよ(^^;
・Next Jobs
VBの前にACCESSがあるらしい。どっちでも同じだが('嫌'という事)。
・今月はしょっぱなから重い話題だなぁ(SHGフォーマット解説といい...)。
そろそろ普通の話に戻さなきゃ。でもこんなん書いてもすぐ変な話題になっちゃうんだよなぁ。
・>私の奴よりまともなSHGエディタを作ろうと思っているヒトは...
いないだろうなぁ(^^;
・松本孝弘のソロシングル(「The Change」)
既にCMで流れているが、以前ツアーで演った曲のようだ。確かVIDEO「"BUZZ!!"
THE MOVIE」でも確認できたと思う。03/25発売予定。
・お見舞い
大学の時の先輩の嫁さんで、某コンビニのバイトの時に一緒だった某嬢のお見舞いに行った。お見舞いとは言っても出産なんだけどね。とりあえず元気そうでなにより。
・書き忘れ
最近日記を更新していないやなちゃんがPSを改造した。件のFF8対策で切り替えSWを付けた(加工をちょっとお手伝いした)。
・SHG Editor ver0.20
HotSpot領域のカット&ペーストに対応。これはKoji27氏の要望(?)でもあった。プログラムの構造上カット&ペーストはちょっと難儀したが、なんとかなったようだ。
・あ。
Help書いてないや。Koji27氏の話題出しときながら...(^^;
・今日は
楽しい「ひなまつり」。
・SHG Editor
yashima氏よりMailを頂く。
>SHGファイルとして保存しようとしたところ
>3回中3回アプリケーションが落ちました。
>何か保存のところでしてたりするのでしょうか?
>でもまだ出来立てなので
>このぐらいは仕方がないとは思うのですが・・・
>でもせっかく作った後に固まるのは・・・
氏には「RLE圧縮やってるからで'固まる'訳ではない」と弁明しましたが、ちょっと次のバージョンで修正を加えたいと思っています。
1.保存時にRLE圧縮する/しないを選択できるようにする。
2.RLE圧縮時には進行状況ゲージを付ける(できるものなら)。
確かに「256色Bitmap,HotSpot8個」だと保存時に時間がかかりますものね。
>ホットスポットの編集をするときに、
>すべての項目が書き終わってEnterキーを押すと
>編集完了となると使いやすいです。
これは既にver0.20で実装してあります。ちなみにESCキーだとキャンセルできます。
そうそう、'固まる'で思い出しましたが、「保存(or上書)中」にさらに「保存(or上書)」を行うと「~TMP_001.BMPが作成できません」(または「開けません」)とエラーが表示される事があります。これは次のバージョンで直しておきます。
・SHG Editor ver0.30
アップロード。「レジストリ初期化スイッチ」ってのは「SHG_EDIT /I」だの「SHG_EDIT
-Init」だのやると使用しているレジストリをキレイに削除してくれるというもの(GT32.EXEにもあったけど)。
・SHG Editor ver0.40
アップロード。見た目も機能も前のバージョンと大差はない。...にもかかわらず、バージョンが上がったのは何故か?某所でいろいろやっているので、解るヒトには解るでしょう。解らないヒトもじきにわかります。で、変更点。
1.外部起動用のスイッチを追加(非公開)
2.履歴にショートカットを付けた。
アヤしいですねぇ、1番が(^^; 実はこのスイッチが有効だと...。
・SHG Editor ver0.50
アップロード。ありゃ、気がつきゃ毎日更新してるよ。
・Delphi4のParamCount,ParamStr
Delphi4で作ったプログラムをCreateProcessで実行するとParamCount,ParamStrが正しく返ってこない。これは「仕様」らしい。Win32APIのHelpを読むとCreateProcessの引数は「GetCommandLine」APIで取得しなければならないようだ。詳しくはこちら。
・GetCommandLine
引数が単一の文字列で返されるので引数をバラすのが大変。WhiteSpace区切りなのはいいとして、ダブルクォーテーションで括られた文字列中のWhiteSpaceの処理とか...("C:\PROGRAM
FILES\DUMMY.DAT"とか)。
・もひとつ補足(GetCommandLine)
OSから直接起動した場合には、
argv[0] | argv[1] | argv[2] | argv[3] | ・・・ |
自分のEXEファイル名 | パラメータ1 | パラメータ2 | パラメータ3 | パラメータn |
なのだが、CreateProcess等、他のプロセスから起動された場合には、
argv[0] | argv[1] | argv[2] | argv[3] | ・・・ |
パラメータ1 | パラメータ2 | パラメータ3 | パラメータ4 | パラメータn |
となる。実際には単一の文字列で渡されるので
「自分のEXEファイル名 パラメータ1 パラメータ2 パラメータ3 ・・・」
「パラメータ1 パラメータ2 パラメータ3 パラメータ4 ・・・」
となってしまう。私が作った関数「ParamStr2,ParamCount2」では、ここらへんの差違は吸収されるようになっている。
・復刻マンガ
何か最近ブームらしい。社内では前からだったが...。「長編ドラえもん」や「リンかけ」等...。
・復刻
そーいやCDもだよね。SONYの「STAR BOX」なんか。最近またTM(N)を聴いたりしてます。
コーラスが「渡辺美里」なアレとか...
Guitarが「松本孝弘」なアレとか...
シンセが「朝倉大介」なアレとか...
もひとつシンセが「久保こーじ」なアレとか...
笑い声(^^;が「伊集院光」なアレとか...
・SHG Editor ver0.60
アップロード。1日2回も...。
・SHG Editor ver0.70
アップロード。1日3回も...(^^;
・SHG Editor ver0.80
アップロード。1日4回も...(ToT)
・SHG Editor
さて、肝心のEncode/Decodeルーチンの改良に取っ掛かる。今度はWMF(Windows
Meta File)だ。Bitmap程の手間ではないようなので、あっさりできるかも知れない。現在使われているMetaFileはEMF(Enhanced
Meta File)なのだが、SHGファイルはWMFしか対応してないらしい。
・SHG Editor
ちょっと前までは対応していた「-」で始まるオプションスイッチを廃止した(「/」で始まるオプションのみ)。何故かと言うと、ファイル名に「-」が使われる事が多くなってきたからだ。誤作動する可能性がないわけではないので安全策として廃止することにした。
・MetaFile
耳慣れないかも知れないが、身近な所(?)では「Microsoft PowerPoint」なんかの挿し絵に使われていたりする。ハードディスクの中を「*.WMF」で検索すると一つや二つはあるんじゃないかな?
・サブセットとフルセット
「MetaFile」終わったら次は「マクロ」だが、これらを実装してもまだSHGのフルセットではない。厳密にはLZ77圧縮もサポートしなくてはならないし...。それと「絶対にSHGフルセットを作れない」理由がある。03/01にも書いたが、
「SHGファイルはMRB(マルチレゾリューションビットマップ)ファイルを拡張したフォーマットになっている。」
...MRBの意味を考えると解ると思うが、つまりMRBファイル(SHG含む)は、
「一つのファイル中に複数の画像イメージを格納する事が可能」
なのだ。SDIアプリであるSHG Editorではまず実現できない(MDIにする気がないので)。...と言うより、初めから「複数の画像イメージ」は想定していない。何故なら「SHED.EXE」がMRBを作成できないからだ。MRBファイルを作るには「MRBC(Multi Resolution Bitmap Compiler)」というプログラムが必要なのだが(SHG Editorいじればできるか^^;)、そんなん見掛けた事もない。そんな訳でSHG Editorは永遠に「フルセット」にはなり得ないと思っている。
・納車
やなちゃんの車が納車された。前に書いていなかったかも知れないが、先代の「Escude」は事故のために御亡くなりになったのだった。車は「WAGON
R/RR」である。DEKOの「ALTO WORKS RS/Z」も大きいと思っていたが、「WAGON
R/RR」は輪をかけて「デカイ」。リアシートのヘッドレストを外して、シートを倒せばフルフラットにもなる使い勝手のいい車だ。エンジンも「K6(K-6A)」を積んでいるのでよく走る。敢えて欠点を言うならば「車重がある」という事か?「JIMMNY」よりは100Kg強軽いが、「ALTO」より100Kg弱重い。
・こまちゃん
引っ越したらしい。いやHPが。
・SHG
Webで文献を探していたらヤバい奴に遭遇。Koji27氏ヤバいっス(^^;
アプリの性格上、直接競合する訳ではないですが...。
・「Windows
Undocumented ファイルフォーマット」
うーん、MetaFileでも苦労するとは...
[SHGMETAFILEHEADER(Placeable Metafile header)]
フィールド名 | タイプ | 注釈 | 備考 |
smXWidth | WORD | メタファイル単位でのイメージの幅 | 単位は0.01mm。2倍されない。 |
smYHeight | WORD | メタファイル単位でのイメージの高さ | 単位は0.01mm。2倍されない。 |
smUDataSize | WORD or DWORD |
メタファイルデータのサイズ×2 (圧縮せず) |
|
smCDataSize | WORD or DWORD |
メタファイルデータのサイズ×2 (圧縮済み) |
|
smSizeHS | WORD or DWORD |
HotSpotデータのサイズ×2 | (HOTSPOTHEADER + HOTSPOTRECORD + マクロ文字列 + コンテキストIDとコンテキスト文字列)×2 |
smUnk1 | DWORD | 未知 | (SHGIMAGEHEADER + SHGMETAFILEHEADER) ×2ではない事に注意。 |
smSizeImage | DWORD | smCDataSize(2倍する前の値) + smUnk1 | ×2ではない事に注意。 |
[METAFILEHEADER]
フィールド名 | タイプ | 注釈 | 備考 |
key | DWORD | 0x9AC6CDD7 | |
hmf | HANDLE | 未使用 | 通常は0 |
bbox | RECT | イメージの境界BOX矩形 | 単位はTwips。 |
inch | WORD | インチ当たりのメタファイル単位 | 通常576。 正確にはTwips/Inch(TPI)。 |
reserved | DWORD | 未使用 | 通常は0 |
checksum | WORD | 構造体の最初の10ワードをXORした合計 | $9AC6 xor $CDD7 xor MetaFileHeader.bbox.Top xor MetaFileHeader.bbox.Left xor MetaFileHeader.bbox.Bottom xor MetaFileHeader.bbox.Right xor MetaFileHeader.inch |
ここまではいいとしよう。しかし、
「bboxフィールドには、イメージの境界ボックス矩形が入っている。値はメタファイル単位である。」
と記述があるのだが、実際にはそうではないらしい。本当にそうであるならば、「bbox.Top=0,bbox.Left=0」の場合には「SHGMetaFileHeader.smXWidth=MetaFileHeader.bbox.Right」、「SHGMetaFileHeader.smYHeight=MetaFileHeader.bbox.Bottom」になるハズだからだ。SHGMetaFileHeader.smXWidthとSHGMetaFileHeader.smYHeightにはちゃんと(DelphiのTMetaFileで言う所の)mmWidthとmmHeightがセットされている。メタファイルの単位は0.01mmなので、どう考えても辻褄が合わない。
何故これが重要なのかというと、このMETAFILEHEADER構造体はSHGファイルには含まれないのである(SHGにした時点で失われる)。つまり、縦横のサイズはSHGMETAFILEHEADERのsmXWidthとsmYHeight(ともに0.01mm単位)から算出しなければならないのだ。
・単位
では、単位のお勉強をしてみよう。
1inch | = | 96 | Pixel | DPI。通常は96DPI。 |
1inch | = | 576 | twips | TPI。通常は1440twips。 |
1Pixel | = | 6 | twips | DPI=96,TPI=576の場合。 |
1inch | = | 25.4 | mm |
これから導かれる結果は、
SHGMetaFileHeader.smXWidth = (MetaFileHeader.bbox.Right - MetaFileHeader.bbox.Left)
/ MetaFileHeader.inch * 25.4 * 100
SHGMetaFileHeader.smYHeight = (MetaFileHeader.bbox.Bottom - MetaFileHeader.bbox.Top)
/ MetaFileHeader.inch * 25.4 * 100
と、いう事になる。つまり、MetaFileHeader.bboxのメンバーはTwips単位で表されている。こんな事をしなくても「GetDeviceCaps」をダマくらかして使えばよかったのかも知れないが...。
・HotSpot矩形(MetaFile)
なんかTwips単位のような気がする。
・Jリーガー
...に同姓同名の奴がいるなぁ。いや、DEKOって名前じゃないんだけどね(^^;
・駐車場
家に帰って駐車場を見たら「ゲロ」が...。
・サイキックフォース(DC)
うーん、美しい。
・マジックナンバー「26.5」
HotSpot矩形(MetaFile)は矩形RECT(Pixel座標)のそれぞれのメンバーに26.5を掛けたもので構成されている。この「26.5」って数字は一体どこから沸いてきたんだ?ひょっとして「ビルお兄さん」の靴のサイズか(^^;
なんてのは冗談で、「2540(=25.4*100)/DPI」のようだ。つまりこれはDPM(Dot
Per Meter)を表している(Meterと言っても0.01mm単位だけど)。やっぱりか、あーめんどくさ。WMFって左右の座標も反転してるし(原点が違う)。
・SHG Editor
とりあえずWMFを格納したSHGファイルを表示することはできるようになった。書き込みができるようになったらver0.90をアップします。
・SHG Editor
書き込みのロジック(WMF)がうまく動作しないので少々煮詰まってしまった。ちょっと気分転換に「選択ウィンドウ」をこさえる。Zオーダー実現の為の足掛かりだ。
・SHG Editor
書き込みのロジックをちょっと考えてみる...。
・SHG Editor
書き込みのロジック(WMF)がうまく動作しないので少々煮詰まってしまった(^^;。ちょっと気分転換に「環境設定ウインドウ」をこさえる。「Shed.exe」でいう所の「プレファレンス」にあたるが、オートナンバリングの有無、オートナンバーの0詰め/桁数、オフセット値、種類、属性の初期値を設定できる。
・開発予定(SHG Editor)
[ver0.90]
・WMF(Placeable Metafile)に対応。
・「選択ウィンドウ」の追加。
・「環境設定ウインドウ」の追加。
・不具合の修正。
[ver1.00]
・マクロに対応。
・Zオーダーに対応。
・SHG Editor ver0.90
朝っぱちからアップロード。あーバグだらけだったぁ〜。ひょっとしたらまだまだあるかも(^^;
辻褄を合わせるためにかなり無理なプログラムになってしまったので、次のバージョンで最適化する事にしよーっと。
・ダンゴ3兄弟
一番上は、一番最後に刺されるから「三男」なのではないだろうか...。なーんて邪推して「小さなお友達」の夢を壊すのはやめよう。
・DVD-ROM
こんどうくんが買ってきた。「攻殻機動隊」もついでに。「SB
Live!」もついでに...(^^;
・SHG Editor
Zオーダーはなんなく実装できた。プロパティで設定するのではなく、「前面に移動(F)/背面に移動(B)」で設定する。「タブオーダーを設定できるように」との要望もあったが、Hotspot矩形のコントロールはフォーカスを持たないので「TAB/BackTAB」では移動できない(KeyPreviewで捕まえられないから)。「前面に移動(F)/背面に移動(B)」を使えば、「SHED.EXE」のように「マウスで指定できないHotspot領域」は存在しないので、これでいいと思っている。
・Zオーダー
Hotspot矩形のZオーダーの逆順(背面->前面)でSHGファイルに書き込めばZオーダーは保持されるようだ。実装中、Hotspot矩形が画像の裏に入り込んでしまった(「背面に移動(B)で」)のには焦ったが...(^^;
・複数選択
これもよくある要望。しかしタブオーダー同様「Hotspot矩形のコントロールはフォーカスを持たない」事がネックとなり、実装は非常に難しい。
・SHG Editor
マクロも実装し、Version1.00をリリースしようとした矢先に、最低にして最悪のバグが発覚。
「Windows Undocumented ファイルフォーマット」のP.46に以下のような「HOTSPOTRECORD.hrMacOffset」に関する記載がある。
「(前略)これがマクロでなければ、この値は無視される。」
ところがどっこい、無視してくれないんだな。「SHED.EXE」で読み込めるので正常かに見えるが、いざHelpコンパイラを通すとちゃんと動作しない。試しにこの領域にデタラメな値を書き込んでみるとHelpコンパイラが止まってしまうので、ここはチェックされてると思ってまず間違いない。
「Rick Segal,Microsoft SHED.ZIP」によると、
「The binding data follows at the end of the MBHS structures. Certain hotspots will have binding data (ie. macro, sound). Others will simply contain a hashed context string in the lBinding field.」
とある。つまりここは一種のチェックサムなのだ。しかもそのロジックは全く見当も付かない(コンテキスト文字列から算出するという事以外は...)。
・つまり...
今現在では「SHED.EXE」に一旦通さないと正しく認識してくれない訳だ、とほほ...(ToT)
・普通ごく簡単な「Hash」と言ったら...
for i:=1 to Length(Src) do
begin
Value := Value + Ord(Src[i]);
end;
Value := Value mod $100;
この程度なんだけど。もちろんこんなんじゃない。
・調査の結果
「コンテキスト文字列ではジャンプ/ポップアップしない」事が判明した。実際には「HOTSPOTRECORD.hrMacOffset」でジャンプ/ポップアップしている。ここのロジックも解った(ちょっと意地悪だった)のでちゃんとしたVer1.00を近々アップする。
・SHG Editor ver1.00
Help書いてからアップしようとも思ったが、いつになるかわからないのでとりあえず本体をアップ。上で長々と書いている問題はクリアしているのでご安心を。
・T.M.Revolution「The Force」
CD-Extraになっている。なかなかいい、相変わらずの「朝倉大介テイスト」だ。「ダイスケ的にも'おーるおっけー'」(^o^)/
・SHG Editor
Help書いた。でもGeocitiesの容量が足りなくてアップできないでやんの(ToT)。まぁ、Help読まないと操作できないってアプリでもないしな。欲しいヒトはMailね。
・自身のHelp
なんか変な気分。でもこれでバグチェックができたのでよしとしよう。「HelpDesigner」と連携できるっていうのは非常に便利。使ってて身にしみた。
・CD
そーいえば、「宇多田ヒカル」の奴も買ったんだ。しかしウマいよねぇ、あのメロディに日本語がちゃんと乗ってるし(辛いトコもあるが...)。いかんせんDEKO好みのジャンルじゃないのが痛いケド。あと「UA」と「Misia」と交互に歌われたら誰が歌ってるのか判断できないかも知れない(^^;
・Segmented File Format
一通り解析したので、資料にまとめたいと思っている。
・SHG Editor
「HelpDesigner」と組み合わせて使うとあまりにも貧相なので(インタフェイスの見た目が)、こんなんしてみた。
Geocitiesの容量の問題が解決したらアップしたいと思う。若干のバグFixと最適化が行われている。
・エンバグ
しまくり。
・SHG Editor ver1.10
アップしてみた。ハッキリ言って見た目が変わっただけ。だからHelpもver1.00ベースのまま。
・SHG Editor ver1.11
アップしてみた。デバッグリリースなのでver1.10と殆ど変更はない。
・SHG Editor ver1.20
またまた機能追加。CTRL/SHIFT+カーソルキーでの移動/サイズ変更が可能になったり、色々。でも、もうだんだんやる事がなくなってきた。あとはエラーチェックや範囲チェック位しか残っていない。高速化はしんどそうだし、思っている方法でいい結果が得られる確証はないし。あぁ、なんか「HelpDesigner」のバージョン番号を追い越してしまいそうだ。リリースバージョン(小数点2桁目)はデバッグした時しか使ってないから(なにかしら機能が上がった時にはマイナーバージョンを上げている)。だってこんなに頻繁に更新するとは思わなかったんだもの...。あぁ、GT32の二の舞。
・何かに特化したアプリは、やる事もできる事もある程度決まっている。
・ウルトラマンガイア
ほぼ毎週観ている。設定が今までの「ウルトラマンシリーズ」とはちょっと違うのがいい。しかしOP/ED曲は頂けないなぁ(今週からED変わったけど)、「ウルトラマンが欲しい」はねぇだろ、いくらなんでも(日本語になってないぞ)。あとゴムガムくんは演技が...。ここ3作では「つるのくん」が一番よかったかな、アツくて。
・80
「ヤクルト」じゃない。まだ「ウルトラマン」の話ひっぱってるからね(^^;
あれも良かった。「光の巨人」って言葉が初めて出てきたのは「80」からだったと思う。ED/OPもタケカワユキヒデだったし。しかし、しょっちゅう居なくなる先生を担任に持ちたくはないなぁ(^^;
主人公の矢的猛(だったよね)を演じてたのは「長谷川初範」さんだった。
・...?...!!
「仮面ライダー(SKY RIDER)」は「村上弘明さん」だったな。
・...???...!!!!
「知念里奈」が誰かに似ているとずーっと思っていたが、やっと解った。「キンキンの奥さん(ろんぱーるーむ)」にそっくりなんだぁ。
・容量不足
結局SHG EditorだけはNiftyに置いてある。
・SHG Editor
やる事がないといいながら、まだ改良を続けている。
1.Jpegのサポート
あまり意味はない。一旦Bitmapに変換するのですごく大きなSHGファイルになってしまうし。「できるよ」って程度。
2.リロードボタン
コンテキストリストが更新された場合にこのボタンを押すと内容をリロードする。
3.コマンドラインオプション「/D」を追加。
LOAD/SAVEダイアログの初期ディレクトリを設定する。
「SHG_EDIT 画像ファイル /D:C:\TEST」は意味がない、画像ファイルのパスを初期ディレクトリとするから。
等々...。コマンドラインオプションの取得方法も変更した(参照)し、あっちもこっちも。高速化とRLE圧縮の見直しをやったらアップしようかな。
・会社のモニタ
TOTOKUのCV711R(DEKOのモニタと同じ)が2台きた。やなちゃんとTERA氏が使うことになった。やっぱ、いいね。
・AceessのJob
第一弾は終了。やっぱAccessでアプリは作るもんじゃない。実は昨日が締切りだった。
・SHG Editor
まだまだ。
1.Tabオーダー設定ウインドウを追加。
Tabオーダーと言っても「疑似」。先日実装したZオーダーと本質は変わらない。一番手前にあるホットスポットのTabオーダーは一番若い。
逆に言ってしまえばTabオーダーの一番若い一番手前にあるホットスポットは作れないという事。
2.高速化
シャレにならない位に高速。Load/Saveは一瞬で終了する。
3.RLE圧縮の見直し。
見直したが、同じ現象が出る。Decodeルーチンを逆に考えればこのEncodeルーチンは「完全に正しい」のだが、実はDecodeルーチンの逆をやればEncodeルーチンになる訳ではない事が判明。要は最適化なのだが、あーめんどくさい。
・SHG Editor ver1.30
RLE圧縮ルーチンを「殺した」バージョンをアップ。「高速化」の恩恵は(RLE圧縮と)相殺してもオツリがくるハズ。
・やなちゃん
Geocities.comにHPを確保した。
・SHG Editor ver1.31
結局「最適化」は無視しても構わなかった。原因は他の所にあった(^^;
お詫びもかねてアップロード。RLE圧縮しても高速なので、何が変わったか判らないかも...。
・SHG Editor
とりあえず、これにて打ち止め。
・我が母校
実家のある地元の4つの小学校が統廃合され、一つになることになった。過疎化&少児化によるものだ。でも田舎の小学校って結構離れているし、交通の便も悪いからたいへんだろうなぁ。
・RLE(Run Length Encoding)圧縮(SHGファイル)
とりあえず調べた事を書いてみる。
1.連続したデータは頭にその長さ(Length)を付けて1バイト格納する。
0x40 | 0x40 | 0x40 | 0x40 | 0x40 | 0x40 | 0x40 | 0x40 | 0x40 | 0x40 |
この場合には「0A 40」となる。
2.連続していないデータは頭に(長さ+0x80)を付けてそのまま格納する。
0x40 | 0x41 | 0x42 | 0x43 | 0x44 | 0x45 | 0x46 | 0x47 | 0x48 | 0x49 |
この場合には「8A 40 41 42 43 44 45 46 47 48 49」となる。
3.但し連続/非連続データの長さは最大0x7fとなる。
4.連続しているデータの長さが短い場合(圧縮されない場合)には非連続データとして扱う。
0x40 | 0x41 | 0x41 | 0x42 |
普通にやると「81 40 02 41 81 42」だが、「84 40 41 41 42」とするということ。但しこれはオプションなので実装しなくても実害はない。
※Lengthの最大長が0x7fなのは8bit目を連続/非連続フラグとして使っているためである。
「0x40」が200byte連続していた場合には「7f 40 49 40」となる。
・理屈は頭でわかってても、実装すると意外に難しかったりする。特にEncodeは。
・RLE(Run Length Encoding)圧縮(BMPファイル)
03/01でもちょっと触れているが、BitmapにもRLE圧縮が存在する。しかもSHGとは互換性がない。「SHG
Editor」でBitmapを扱う場合には基本的にDelphiのTImageを仲介しているのでこの圧縮部分は関係なかった(処理が複雑になるし、RLEを2回やった所で大した効果は得られないと踏んだ為)。まぁ、時間もできてBitmapのRLEも調べる事ができたので(Webから漁っただけ)、ちょっと説明。
1.8bit-RLE(BI_RLE8)
・連続したデータは頭にその長さ(Length)を付けて1バイト格納する。
・非連続データは頭に長さを付けてそのまま格納し、前後を0x00で括る。
・「00 00」はラインの終わりを示す。
・「00 01」はBitmapの終わりを示す。
・「00 02」に続く2Byteで現在位置を移動する(X,Y)。
なんか、ランレングス符号化とチェーン符号化をごっちゃにしたような感じだなぁ...。
2.4bit-RLE(BI_RLE4)
8bit-RLE(BI_RLE8)同様だが、これを4bit単位で行う。
これに境界の問題(偶数バイトで始めなきゃいけない...etc)も絡んでくるので、オーバーヘッドと圧縮によるメリットを天秤にかけるとやっぱりメリットは少ない。「Bitmap=非圧縮」のイメージもあるので(^^;Bitmapは素直に圧縮しないで使うのが一番では?
・とっくに誕生日過ぎてるし...
・岡田有希子
そういえばCDが発売されたようだが、新曲もあるらしいね。
・Webの情報
なんだか日本にはロクなのがないなぁ。どこもかしこも「触り」だけだったりする。公的機関でさえそうなのだからお話にならない。
・「HelpDesigner」
ver1.48がリリースされた。「SHG Editor」正式対応版だ。Koji27氏のHPで「SHG
Editor」が紹介されているが、誉めてばっかりで嬉しいやら、恥ずかしいやら(いや、本当は嬉しいのだけれども...)。「SHG
Editor」のHelpは「HelpDesigner」のベータ2で作成されている。
・SHG Editor ver1.32
ひっそりとアップデートしている。でもver1.31で正常に動作しているのなら無理してダウンロードする必要はないと思う。
・DOS/V USER
「GT32.EXE」が掲載されている。なんか場違いなような気もするんだが...。
・BIOS
MSIのMS-5169のBIOSをアップデートした。これで「K6-3 Ready」だ。でも何故か「RIVA
128ZX」がNT上で動作しなくなった。仕方ないので今はWin98をメインで使っている。
・ターボタイマー
やっとこさ設置。これで遠出も安心だ。
・ZX
Delphi4なんかでツールバー上のボタンが化けてしまう。TNT用のリファレンスドライバである「デトネイタ」の128/ZX版があったようだが、これだとこの不具合は解消されたらしい。しかしそのドライバ、今は影も形もない。仕方ないので「HelpDesigner」のHelpにもあるように、
>コントロールパネル-システムを起動、[パフォーマンス]のタブ内の[グラフィックス...]ボタンを
>押して[ハードウェア アクセラレータ]のスライダバーを1つ右(注:多分左の間違い)に設定して下さい。
>こうすることでも(応急処置にすぎないのですが... )不具合を解消できるようです。
...とやってみた。でも駄目だったのでさらに左にスライダバーを移動したらなんとか良くなった。Win98使うなんて思わないから、ZXのドライバなんて全然チェックしてなかったよ(ToT)。CanopusのZXカード(ZXR)だったら同社のドライバで解決できる問題なんだけど。
・デトネイタ(ZX)
お持ちの方で、配布可能なものでしたら、どなたか下さいm(_ _)m
・K6-3
うーん、どの雑誌もK6-3(III)特集やってるなぁ。ついこないだまでCeleronばっかやってたクセに。なーんか日和見だよねー、どこも。Socket370のCeleron出たら今度はそっちをベタ誉めするんだろうな、「コストパフォーマンスが最高にいい」とか言ってさ。
・IE5
正式版が03/18付けでリリースされていた。FTPもサポート(変な言い回しだが)されているので便利かも知れない。ただ、巷で言われているように「重い」んだろうなぁ。とりあえずダウンロードしてみる。
・IE5
ダウンロード中止。やっぱり雑誌の付録を待とう...。と、思ったらTERA氏がダウンロードしている。
・PEPSI MAN
マスコット第2弾。みんなでせっせと集めている。
・洗車
今日は天気がいいので久々に洗車する事にした。あーピカピカ。すっきりした。
・「ドキンちゃん」
うまく描けたと思います。「ドキンちゃん」の特徴をよく捉えていると思います。
・私の車は「土禁」でも「禁煙」でもない。
・四駆
ピカピカの四駆は「ナニカチガウ」と思う。傷が付くのが嫌なら街乗りの車を買えばいいと思う。山道を走ってナンボでしょ、四駆は。大概、四駆はデカいので駐車場も入れないトコ多いし(3ナンバーダメとか、車高でひっかかるとか)。ま、考え方は人それぞれか...。
・リンク
あちこち修正。
・やなちゃん
「WAGON R RR」にターボタイマーを付けた。
・MRBC(Multiple Resolution Bitmap Compiler)
ヘルプコンパイラセットの中にあったのね。ヘルプコンパイラはDelphi付属の物を、SHED.EXEはVB付属の日本語版を使っていたもので...。暇があったらちょっといじってみたいと思う。
・某所にて...
「Aはできますか?」って質問に対して「AもできるけどBの方がいいよ」ってコメントが付き、それ以後のレスは「Bならこうすれば...」とか「Bをするのにソフトは???使ってます」とか...
「何か違うだろ?」
まともなレスを付けてからだったら構わないと思うんだけど、「Aはできるとは思う」、「Aは面倒だと思う」とか、
「やった事ねーなら、推測で物を言うなよ」
某所で書きこみをした当事者が、この文面を読んでどう思おうが勝手だが。
・SHG Editor
まだバグがあるらしい。こば氏よりMailを頂く。
>1.属性を可視にしているが領域を囲む線が見えない。
>2.種類をポップアップにして、コンテキスト文字列を指定したけど、ポップアップしなかった。
>3.マウスカーソルは変わるようです。
>4.SHED.EXEでこのSHGファイルを読みこむと、TYPEの部分だけ空白になっている。
>5.コマンドプロンプトから起動すると、「ファイルが存在しません」ダイアログが出た後で、SHG
Editorが起動されます。
1と4に関しては同じ原因によるものです。2と5に関しては現象を確認できませんでした。
・調べてみたら...
最初は「可視/不可視」でハッシュの値が違うんではないかと思いましたが、バイナリダンプして確認してもハッシュの値は同じでした。ちょっと煮詰まってしまってさらにバイナリダンプを眺めると意外な事実が...。
・「Windows
Undocumented ファイルフォーマット」
[3.1 ホットスポット(P.45)]
有効なhrTypeの値は次の通りである。
0x0042 | 可視ポップアップ |
0x0043 | 可視ジャンプ |
0x00C8 | 可視マクロ |
0x04E6 | 不可視ポップアップ |
0x04E7 | 不可視ジャンプ |
0x04CC | 不可視マクロ |
そもそもこれが間違っているらしい。
0x00E2 | 可視ポップアップ |
0x00E3 | 可視ジャンプ |
実際のSHGファイルをバイナリダンプしたものは上のようになっていた。ただ、ここの値自体がちょっと腑に落ちない。ひょっとしてここも何かのハッシュとごちゃ混ぜになってるのではなかろうか?現実にはこれで正しく動作するのだが...。
・ごめんなさい。
...お詫びばっかりだな。SHG Editor ver1.33をアップロード。
・K6-2 333MHz
ちょっと仕入れた。350MHzで動作し、400MHzでも動作した。「シリコングリスを塗ってない」のがマズイのだろうとは思うが、熱暴走と思われる現象を引き起こす。
・Windows2000
そうか、10/26か。IE5のダウンロードの時に「Windows98またはWindows2000」と表示されていたのはこういう事だったんだろう。>参照
・SUPC
04/01付けでお引越しするようだ。しかも産業道路沿い(熊本ローカルですみません)なので、ちゃぷに氏の居る会社の周辺はすごい事になってしまう。
・ちゃぷに氏
そういえば、元気っスか?...ってココに書くことじゃないわな。
・Oh!X
復刊第2号は04/10前後らしい。
・松本孝弘
「The Changing」は明日発売。まぁ、今日店頭に並んでる所の方が多いだろうけれど。
・K6-2 333MHz
350MHzにしてしばらく様子を見ていたが、やっぱりダメな時はダメだった。仕方ないので電圧を0.1V上げてみたら(2.3V)、400MHzでも安定動作しているようだ。念の為にシリコングリスを今日のうちに買って塗っておこう。
・SHG Editor
昨日の件ですが、
>5.コマンドプロンプトから起動すると、「ファイルが存在しません」ダイアログが出た後で、SHG
Editorが起動されます。
確かに画像ファイルを指定した時はエラーダイアログが出るようです。...という事は
1.Explorer(or「ファイル名を指定して実行」)で起動された時
2.CreateProcessで他のアプリから起動された時
3.DOS窓から起動された時
この3つのケースでコマンドライン引数が異なるという事で、ちょっと面倒な事になりました。つまり状況に応じてParamStr/ParamCountと、先日作成した対CreateProcess用の関数であるParamStr2/ParamCount2を使い分けなければならないようです。「HelpDesigner」との連動機能を削る訳にはいかないので最悪の場合、このバグ(?)は無視する事になるかもしれません。
・SHG Editor
あ、Help呼び出しがエンバグしてる(^^; DOS窓の問題も解決したSHG
Editor ver1.34をアップロード。
・03/25,26,27
3連発でインスト(ールの方)のお仕事。ま、色々大変だった。
・3DAYS-1
日立のFLORAが不調との事で、OSから再インストール。後、FMVを二台ネットワークに接続。それと設置場所の変更。FLORAにWin95を入れると「不明なデバイス」を連発するのでどうしようもなくなって会社に持ち帰るハメになる。続きは27日という事にした。持ち帰ってAM03:00までWin98とOffice97をインストールしていた。
・3DAYS-2
会社で作ったアプリ(私の担当ではない)を別のパソコンにインストールする事に。それだけだったらよかったのだが、そのアプリがクリーンな環境で動作するようにDOS/V機に「複数のOSをインストール」しなければならなかった。なんでこんな事をしなきゃならなかったのかって?そりゃ、
「そのアプリがVB4で書かれていたからだよ」
複数のOSをブートさせる為に、PowerQuest社の「PartitionMagic(FDISKを使わずパーティションを切り直せるソフト)」を使う事になった。元々の話では、Win98がインストールされてるマシンのHDのパーティションを切り直して、そこへ別のOS(Win95)をインストールするって事になっていた。しかし...
ここもFLORAだったのだが、PentiumIIマシンでAGPバス搭載だった。
「OSR2.5なんてないっつーの」
仕方ないのでWindows98を用意してあった外付けHDDにインストールする事にした。「OSしか入っていない環境ならVB4で作ったアプリも動く」と判断したからだ。外付けHDDへのインストだったので「PartitionMagic」は使わず、付属の「BootMagic(ブートセレクタ)」だけ使用する事にした。散々苦労したがなんとか当初の目的は達成できた。
※VB4はWindows98での動作を保証されていません(本当だよ)。
・3DAYS-3
25日の続き。とりあえずネットワークが繋がらない。IPX/SPXを諦め、TCP/IPにしたらすんなり繋がった。色々やってたら大体なんとかなった。
そういえばココの「PC-9801 DA(下駄付きでWin95が走っている)」の5inchFDDが調子悪いとの事で、会社のジャンクのドライブを持っていったのだが、バラして確認したらヘッドのカバーが外れて引っかかっていただけだった(二基とも)。この頃のFDDはヘッドのカバーが両面スポンジテープで固定してあるのだが、スポンジが腐食してカバーが引っ掛かる(最悪FDが挿入できなくなる)という現象があることは知っていた。しかしまさか二基ともとは...。ヘッドカバーを取っ払ったら正常に動作した(当然だけれど)。
・事故
そういえば「3DAYS-1」に行く途中で事故を起こした。そこはT字路(正確にはイ字路なのだが)になっている下り坂で信号はない。前に車がおり、右折待ちで止まっていた。その後ろで足ブレーキのまま待っていた。前を横切る車が来なくなって、前の車のストップランプが消えたので踏んでいた右足を離した(この時目線は左にあり、左から車が来ないか見ていた)。すると、
「ガシャン」
...嫌な音が。一瞬何が起きたか判断できなかったが、状況を再度確認したら理由が解った。
「ちきしょ、フェィントかけやがったな」
が、ぶつけたのはこちらで、しかも前方不注意だったので怒る訳にもいかずひたすら謝った。向こうの方も「いいですよ」と言ってくれたのでとりあえずその場はおさまった。ちょっと車がヘコんだけど、言わなきゃわかんない程度なのでよしとするか。でもちょっとブルーだった。
・渋滞
今日はインストの為にお客さんトコへ向かったのだが、なぜか大渋滞。「この道こんなに混んだっけ?」と思いつつ先に進むと理由が判明。TKU(テレビ熊本)のイベントをやっていたのだ。
・遠回り
帰りは帰りで遠回りを余儀なくされた。お客さんトコから帰るには熊本城を通り抜けるのが一番近道(多分)なのだが、26日からしばらくの間、花見のため熊本城は夜間開園になり通行止めとなってしまうのだ(PM06:00〜)。この「熊本城突っ切りコース」が使えないと右折禁止(06:00〜23:00)のトコを通らなくてはならず(これを回避するのもさらに遠回り)、かなりの遠回りをしなくてはならなかった。あーあ。
・松本孝弘「THE CHANGING」
サビしか知らなかったが("BUZZ!!"
THE MOVIE)、全体で聴くと「あぁ、こんな曲だったんだぁ」って思った。サビの他はあまりインパクトないかな。
・TMN
久しぶりに新曲出すらしい。そーいや、一つ前の新曲は「NIGHTS OF THE KNIFE」でない事をどれだけのヒトが知っているだろうか?
・荒らし
よく行く(殆ど「みーてーるだーけー」)掲示板が荒らされている(個人攻撃なのだけれど)。暇人め。
・メニュー
Windowsアプリのメニューで「About...」とかなってますよね。この「...」は「選択すると別フォームを開きますよ」って意味だと思いますが、コレの正式名称って誰か知ってます?
・SHG Editor
立澤氏よりMailを頂く。
>ただ、画像が大きい物を編集する場合、下の方が編集できません。
>縦スクロールバー等が可能でしょうか?
すみません、そんなに大きな画像をHelpで使うとは思ってもみませんでしたのでチェックしていませんでした(言い訳)。
修正版のver1.35をアップロードしておきました。
・お引越し
Niftyへ引っ越しました。ほら、04/01から「.or」ドメインがこぞって「.ne」ドメインになるじゃないですか。DEKOもドサクサで引っ越そうと思って...(^^;
・これでうざったいCGI(あーんどJAVAアプレット)ともオサラバだ。
・祝30000Hit
これも兼ねるつもりのお引越しでした(ちょっとフライングでしたが)。ただ、NiftyのアクセスカウンタはGeoの「インチキカウンタ」と違ってページ間の移動ではカウントアップしませんからね。次の10000Hitは時間がかかるでしょうね。
・リンクが切れてるページや画像があったら(またはGeocities.comの方に行ってしまうモノ)教えて下さいね。
・松本孝弘「THE CHANGING」
散々「パクリだ!!」って言われたからかな、あんな歌詞にしたの。
変わりたい 変われない オリジナルじゃない
最新のテクニック 何もない
反省は時々する
ごめんなさい もうしないつもり
なんで なんで繰り返す またひとつ傷つく
変わらない これきっとオリジナルじゃない
ちょっと自虐的。
・Nifty
あのー、もう既に容量が1MBきってるんですけれど...。いよいよ危なくなったら考えるか。
・松本孝弘
あれ?CMでまた違う曲歌ってないか?
・RIVA 128/ZX「デトネイタ」
やっとみつけた。「RIVA RAVE」にまだあったのね。
RIVA 128/ZX(AGP) | 95/98 | 128agp.zip |
RIVA 128/ZX(PCI) | 95/98 | 128pci.zip |
RIVA 128/ZX | NT4.0 | 128nt40.zip |
使用したことによる不具合に関して、私は責任を持ちませんのであしからず。
・デトネイタ
とりあえずWindows98でDelphi4でのツールバー表示がおかしくなる現象は解消された。もちろんハードウェアアクセラレータは最大にしてある。ただこのドライバ、すぐに姿を消した事でも解るように少なからず問題を抱えていることは確かなようだ。
・MS-5169
先日BIOSをアップデートしたが、バージョン3.xのBIOSが近日出そうだ。なにやらver3.0はすぐに姿を消したとか...。
・DVD
こんどうくんとTERA氏のDVD-ROMドライブは同じ物だが(DVS
Korea)、二人ともファームウェアのバージョンを上げた。Win95/98のDOS窓で実行すると痛い目に遭うので注意。「Command
Prompt Only」か「DOS」でアップデートすべし。
・教訓
「ReadMeはちゃんと読め」
・DVS Korea
アクセスカウントがDEKOのHPより少ないのはどういう事だ(^^;
・今日はドライブ行くので会社休みます(代休なんだけどね)。今日のHP更新はこれまでかな。
・昨日のドライブ
いや、大変だった。熊本市内から57号線を波野村(聞いた事があるって?気のせい、気のせい)を通って犬飼方面に抜けようと思ったのだが、何故か
「雪」
あと二日で四月なんですけど...。とりあえずスリップ等は無かったが「路面凍結注意」が出ていた。その後大分、別府経由で湯布院へ。腹ごしらえ等して帰ろうと思った。ただ波野を通って帰るのはちょっと怖かったので、10号線を通る事にした。すると...
「チェーン規制」
が...。「まぁなんとかなるだろ」とタカをくくってそのまま帰ることにした。しばらく行くとみるみる地面が白くなっていく。「ヤバいかな」と思いつつもエンジンブレーキを多用しながら進んで行った。さらに行くと
「ガードレールにクラッシュした車が(ToT)」
「飛ばすからだよ」と思いつつさらに進む。なんか滑り出してる気が...。ふと対向車線を見ると二台がチェーンをつけているようだった。目を凝らしてよーく見ると、
「玉突き衝突だった(ToT)」
もう道路は雪まみれ。チェーン付けずに走行するのは無謀以外の何者でもなかった。また対向車線の路肩に止まっている車を発見。チェーンをつけていなかったので「持ってるヒトはいいなぁ(今付けているんだろうな)」等と思っていたら
「自爆(ToT)」
おいおいやめてくれよ。私の車にゃチェーンもスタッドレスタイヤも付いてないんだって。この道に入って出会った車の3割が事故を起こしている。さらに慎重に進むと進行方向左側の路肩を超えた林の中に
「自爆二号(ToT)」
ここまでくると背中には嫌ーな汗が...。「頼むぅ早く帰らしてくれぇ」と心の中で叫びながら進む。この頃になると車は滑って滑って仕方がなかった。ちょっと急な下り坂に差し掛かったら、なんか対向車線の車の挙動がおかしい。
「ズリズリ滑ってこっちに来るなぁ〜(ToT)」
タイヤがこっち向いてるんですけど(;_;)。この車はなんとかやり過ごした。が、その車のタイヤの跡をよーく見てみると...
「いっぺん対向車線でおもいっきり逆送してるじゃねーか(ToT)」
キミの重いクルマじゃ登れないのね...。
ま、なんとか無事にこの道を抜ける事ができた。せっかくなんで阿蘇の大観望に行ってみることに。途中にある店はことごとく閉まっていた。車もなくしばらく対向車もなかった。阿蘇の方は「野焼き」の後に雪が降ってるもんだから、チョコレートケーキに粉砂糖をかけたみたいになってキレイだった。
・教訓
「チェーンは付けろ」
・カメラ
買った。Canonの「IXY
310」。330もあったが、せっかくのAPS(ADVANCED
PHOTO SYSTEM)カメラなら小さいに越したことはないなと思い、310に決めた。