日記 (2006年8月)。
$Id: 200608.php,v 1.48 2006/09/03 09:46:45 isaki Exp $
≪ 2006年7月 | 2006年9月 ≫

2006/08/01 (火)
画面とフロッピーディスクとキーボードが繋がって timer.x や si.r が 動かせるようになったので、ようやくお手製のいんちきスケジューラを 見直してみることにする。 Windows版の XM6 と比べて、もっさりしてるなーという印象はあったが 実際計ってみるとホスト環境によって実時間の 3〜8割くらいの速度で 動いてた。どうりでもっさりしてるわ。 UNIX なので、Windows のようにきっちり 1msec ごとに処理が回ってくる わけではなくて、いつ処理が回ってきて、そして次に自分に処理が回って くるのがいつになるのかはたぶん分からないので、 適当に実行してみて仮想時間が実時間より一定間隔以上進みすぎたら (今は 5msec) 少し休んでみるようにしてみたところ、 割といい感じで動いてるっぽい。 描画のフレームレートについてはまだあまり考えてなくて、 時々 (今は仮想時間での 50msec に1回) 描画してるだけ。
ヤクルト戦。
この3日間は WBC のトロフィーが巡回で市民球場にやって来てて、 世界一の補欠野郎新井さんのユニフォームと一緒に展示されている。 でも、半年近くも経ってるせいか 前回 (2006/04/25 の日記) と違って 足を止めて見る人もまばら。
負け試合で暇だったので、6月に買ったパナの FX09 で遊んでみる。 通常撮影よりシーン撮影の夜景モードのほうが暗いところ(空とか)と 明るいところ(照明灯)の差がはっきり出るのかしら、とか。 試合は 8-3 で負け。

2006/08/02 (水)
XM6 のような親切でかっちょいいオプション設定画面は作れないので、 とりあえずハードコーディングして HD のディスクイメージを SxSI で接続してみる。あっさり動いた。 これでおうちの X68000 がまずは UNIX で復活。 ディスクイメージのパスとか全部ハードコーディングだけど。
ヤクルト戦。 5回くらいから遠くのほうで雷が鳴ったりしてるうちに、 6回表に同点に追いつかれる。 7回表が始まる直前に落雷で停電。
停電直後の様子。 一昨年もそうだったけど 停電で一旦水銀灯 (白っぽいほうの照明) が消えると 復旧に15〜20分かかるのよね。
5分ほどして雨が降り始めてきた。 自分がいる右中間はまだ傘もささずに新品のカメラを構えていられる くらいほとんど降ってなかったのに、 内野席のほう (写真奥) は ドリフのコントのようにそこだけ結構な雨が降り始めていて ちょっと面白かった。 けど、雨の写真が撮れるほどの力量は持ち合わせてないです。

この後すぐに球場全体がバケツをひっくりかえしたような 豪雨になって、外野はほどよく埋まってたので、 蜂の巣をつついたような軽いパニックになってた。

こっちも雨が降る前にカメラとか荷物が濡れないように荷造りする 必要があるので、雨の最中の写真は撮れないね。 すごかったんだけどこれじゃ伝わらないな。 そこで滝沢くんが CM してたオリンパスの生活防水仕様のデジカメか、 なるほど。

結局そのまま降雨コールドで引き分け。 停電の 10分前まで勝ってたのに、もったいないなあ。

写真は中止が決まって引き上げる前に携帯で撮ったもの。 傘を持ってても全く意味がないくらいの雨だったので そもそも傘を持ってなかったらもうどっちみちなので 写真中央あたりにいる若いお兄ちゃんたちはビールかけをしてた。

この写真じゃ雨が降ってるのは分かるけど、出口に人が殺到してた 様子が伝わらんね orz。 まあこっちも、この時点ですでに靴がちゃぷちゃぷいってたので それどころじゃなかったけど。


2006/08/03 (木)
ヤクルト戦。黒田が完投し、2-1 で快勝。 球場に着いたのは 3回裏、2-0 になってた後で、 そっから8回までヒットもほとんど出てないし、 実質見たのは岩村のソロホームラン1本の 0-1 の試合だけど、 黒田のピッチングは見てて危なげがないし、 9回に梵と前田のダブルスチールも見れたし、 いい試合だった。

2006/08/04 (金)
久しぶりの3連戦はさすがにこたえた。だるい。 前半戦は仕事が忙しかったので 3連戦見たのは今季初。
捕捉され中。

鎌田さん。あ、まだ XM6 を移植してるだけで CPU も starscream のままです。 musashi を 68030 対応にしようとして遊んでて、それとは別に 以前からちまちまやってみてた XM6 のコンパイルが先になんとかなったので そっちにハマってるという次第です。 いずれ2つを足して XM6 改悪移植なんちゃって X68030 エミュ(妄想。

永井さん。ご無沙汰です。 わたくし、*BSD で bpf なら使ったことありますので、 XM6 が UNIX てことはもしかしてネレ(妄想。

コマネチ大並み?。 夏の高校野球の初戦 24試合 (初戦が2回戦である試合も含み、 初戦が 1回戦の勝者とあたる1試合を除くと 24試合になる) について、それぞれ勝利チームを予想し誰が一番当たったかを競う。 だけなら簡単だったんだけど、 「俺は勝敗だけじゃなく両チームの得点まで予想できる」という 野球好きが一人現れて、結局 勝敗だけ予想する人と勝敗と得点まで予想する人が混在するゲームになる。 勝敗だけ予想する人が1試合当てると 1 ポイント、 勝敗と得点まで予想する人が1試合当てると x ポイント獲得として、 24試合の合計獲得ポイント数を競う。 どちらの方式で参加するかは参加者ごとに事前に決定し 試合毎に両方式を併用することは出来ないとする場合、 どちらの方式を選んでも有利不利のないゲームにするには x は何ポイントに設定すればよいか、とかいう。

なんか思った以上に激難しかったけど、隣の数学好きな人と1時間半くらい かけて、いろんな簡略化のための仮定をおいた結果、 x = 12 (ピー) くらいが妥当なんではないかという 結論になった。ほんまかいな。 あ、いえ、純粋に数学の問題です(汗。

XM6 (ver 2.01) にバグハケン。 そうか ASSERT で落ちたってことはリリース版では (ASSERT は抜いてあるから) 何も起きんわな。
男弾が動くようになったので、ちょっと遊んでみる。 うーん、本家(Windows版) と比べてカクカク感たっぷり orz。 実行粒度が荒すぎるから仕方ないわな。

2006/08/05 (土)
UNIX の usleep(10000) は 20msec かかるらしいという、 いまさら FAQ 並みのべたな実験。

#include <stdio.h>
#include <time.h>
int
main(int ac, char *av[])
{
    struct timeval tv1, tv2, tv;
    int i;
    int w, cnt;
    uint64_t sum;
    double avg;

    w = atoi(av[1]);

    cnt = 100;
    sum = 0;
    for (i = 0; i < cnt; i++) {
        gettimeofday(&tv1, NULL);
        usleep(w);
        gettimeofday(&tv2, NULL);
        timersub(&tv2, &tv1, &tv);
        sum += tv.tv_sec * 1000*1000 + tv.tv_usec;
    }
    avg = ((double)sum) / cnt;
    printf("usleep(%5d) = %8.4f msec\n", w, avg / 1000);
}
適当な引数を与えて実行した結果。
usleep(    0) =   9.9557 msec
usleep(    1) =  19.9004 msec
usleep( 1000) =  19.9156 msec
usleep(10000) =  19.9139 msec
usleep(10001) =  29.9716 msec
usleep(20000) =  29.8997 msec
usleep(30000) =  39.9340 msec
ちなみに usleep() の行をコメントにしてから測定すると 0.0012 msec とか 出るので、たぶんこの gettimeofday() による測定は使っても大丈夫と いうことかと。

usleep() にかかる時間は、usleep() に指定した値を 10msec 単位に切り上げてもう 10msec 足したくらい。 カーネル内のイベントタイマーがデフォルトでは 10msec 単位なので そこまで切り上げて最低それだけは待つから、 10msec 以下の値は全部 10msec に丸められる。 で、そのイベントが完了した次のタイミングで戻ってくるらしいので、 10msec を指定すると 20msec かかるということらしくて、 その通りになった。

ちなみに options HZ=1000 にしたカーネルで起動した場合。

usleep(    0) =   0.9986 msec
usleep(    1) =   1.9889 msec
usleep( 1000) =   1.9903 msec
usleep( 1001) =   2.9904 msec
usleep( 2000) =   2.9958 msec
usleep( 3000) =   3.9978 msec
usleep(10000) =  10.9884 msec
うむ、きっちり 1/10 になってる。 こっちも usleep() の行を外して測定すると 0.0012 msec くらいになる。
なんだ? 長谷川の代打に広池って。

2006/08/06 (日)
朝6時、友人からの電話で起きる。 やっぱり5時半(広島)市内集合は無理。
8:15。結局おうちで黙祷。
fu を実行してみたら右端が切れてて、そういや fu って横幅 96桁のところを 100桁とかに増やしてたんだっけと思って 本家 XM6 で fu を動かしてみるとちゃんと 100桁表示できてる。 あー、上下左右の余白って見栄えのためにあるのかと思ったら、 そういうのに対応するためだったのね。 てことで、元ソース見ながらその辺も対応。 たくさんあった変数の関係がようやっと理解できたので、 縦か横を2倍以上に拡大するモードの時の計算を 間違えてて画面に変なスジが出てたりしたのも直った。 うむ、バカ>>1は何も考えずにエロい人が書いたコードを 丸写ししてなさいってこったな。orz
しかしすごいなー、自分は何もしてないのにちゃんと PANIC とか動くなあ (改めて感動中)。 音出してみてぇ。
移植中にどうなってるのか分からなかったので無効にしておいた CMOV 判定を改めて行うようにしてみる。 ホストは PentiumIII なので CMOV を使うようになって、 男弾の画面描画がちょっと速くなった気がしないでもない。
X68000 の電源切った時に画面が段々暗くなっていくのが本家の XM6 でも 再現されねーと思って、ちょいとデバッグログを吐かせてみたら 段々暗くしてるんじゃなくてコントラスト 0 を書き込んでるだけなのね。 てっきりコントラストを1つずつ下げて書き込んでるんだと思ってたよ。 段々暗くなってたのはディスプレイの特性ってことかしらん。
夏の高校野球、1回戦でいきなり大阪桐蔭 vs 横浜という決勝戦みたいな カード。さすがにええ試合するわぁ。 カープが前田、緒方、黒田抜きで対戦したら絶対負ける。

2006/08/07 (月)
京都出張。帰りの京都駅新幹線ホームでドクターイエローってやつを 見掛けたので。
それよりも、京阪電車 東福寺駅のホームから七条方面を見た画が いい感じだったので、写真に撮っておきたかった。

2006/08/08 (火)
X680x0 のコントラストについて 鎌田さん から的確なツッコミ。 なるほど、本体内のアナログ回路てことですね。
で、render.cpp あたりでコントラストを現在値から設定値に向かって直線的に 近づけるようにしてみたところ、割といい感じに見える。 実機が近くにないのでどのくらいの早さで変化するのかは分からないけど、 電源切った時の X680x0 特有のフェードアウト感が再現出来てちょっと幸せ。
スケジューラでのレンダリングと描画の関係を間違えてたことに気付く。 男弾のスクロールがカクカクしてたのは、実行粒度が荒いからだと 思い込んでいたけど、VM へのレンダリングの指示を間違えていて 描画レートが思ったより低かったから (10fps 以下くらい) みたい。 試しに CPU 100% 消費を承知でむりやりレンダリングと描画だけに 注力させてみたところ、ゲーム出来るくらいの滑らかスクロールになった。 てことで、やっぱりスケジューラをプロファイル中。

2006/08/09 (水)
あれ、 768x512 の GDK バッファを描画するだけで 40msec 近くかかってる希ガス…。
そうか、そこで DirectX ですよ、なのか。orz
mfc_draw.cpp の CalcRect() (描画する必要がある最小の矩形領域を求める) を まだ実装してなかったので、実装してみた。 まだそこで求めた矩形を描画する部分は出来てなくて全描画のままなんだけど、 描画の必要がまったくない時には何もしないという処理が出来ただけで、 桁違いに軽くなった。 CPU 負荷は描画する時にちろっと上がるだけで、ざっと 25fps 近く出てるっぽい。 今まで必要ないのに毎回毎回描画しようとしてただけだったのな。スマンカッタ。 ええ、これから mfc_draw.cpp 丸写ししますとも。

2006/08/10 (木)
部分描画も実装してみた。 これで XM6 の画面描画周りはほぼ実装^H^H真似できたんじゃないかしら。 痛くもかゆくもないくらい軽い。 部分描画じゃなく CalcRect によるところだと思うけど、 これまで DSHELL のマウスカーソルをキーボードで動かすと カクカクしてたのがスムーズに動くようになったし、 男弾のスクロールもカクカクしなくなったので普通に遊べる。
うむ、だいたい常時 30fps 弱で回ってるみたいなので、全く違和感ない。 PANIC で横スクロールとかしてる時に 15fps 近くまで落ち込んで カクカクしてしまうくらいなので、十分実用的かな。

2006/08/11 (金)
電車の窓枠 と言えば中高生の落書き(?)ということで、 朝の電車でちょっと珍しいハングルの落書き。
ハングルといえば、日ハムの森本稀哲選手の名前 「稀哲」は自分も読めなくて、でもああいう人名は大抵 当て字というか読めない読み方をすることが多いので気にしてなくて、 さらに「ひちょり」という読み仮名振ってあるのを見ても 最近は変わった名前も多いから別に驚かなくて 「また変わった読み方するなー」くらいにしか思ってなかった。

ちょっと前に日曜朝の番組で関口宏が 「この名前からするとこの人は在日ですかね」 と言ってたので、思いっきりひいた。 こういうことを平気で言う奴がテレビに出てることを 問題視しないテレビ局のほうが問題。ちなみに TBS。

午後から夕立ち。会社でも蛍光灯が一瞬消えたりするくらいの雷雨で、 遠くのほうではずいぶん頻繁に稲光がしてたと思ったら、 おうちは雷の影響で停電してパソコンが使えなくなったらしい。 部屋のサーバが停電から自動復旧しない設定になってるので (なんでそうなってるのかは忘れた)、 雷というよりも停電後は電源入れ直すまで使えないってだけなんだけどね。
家で飼ってた猫が死んだらしい。むう。
巨人戦。2-1 で勝ってる 7回くらいに黒田が打球を手でとめて降板。 今日の黒田はほんとに安心して見ていられたので、急に降板なんかした日には 残りの 2回はもう生きた心地がしない。でも結局 2-1 のまま勝利。

2006/08/12 (土)
昨日の雷でハブがシボン。 うちは屋内用の普通の LAN ケーブル 100m を屋外空中配線するという 素人もびっくりの素敵な荒技を使っているので、時々雷を拾って両端の HUB の 該当ポートが壊れる。 これまでは運良く屋外行きケーブルのささったポートだけが壊れていた ので、その都度残ったポートに繋ぎ替えて使っていたが、今回は 両端が本体ごとお亡くなりになった。

ついでにお部屋用の GbE ハブも死んでたのでおうちのハブ全滅。 去年の雷で屋外連絡用の片側の 5ポートハブの 4ポート目が壊れたため (つまり1ポートハブ...意味ねー)、 部屋で使ってた 10/100 の 8ポートのハブを屋外用に回して、お部屋用に 先行投資で買ってきたもの。 当時まだ GbE NIC を積んだマシンは1台も持ってなくて、先月初めて Core Duo マシンが 1台 GbE でリンクアップしたところだったので、ついに GbE としての実力を発揮しないままだった。 屋外連絡用のはまあ覚悟してやってるから仕方ないけど、屋内のも やられるとは。

巨人戦に向かう途中の西条駅でまた夕立ちで雷雨。 えっと連日夕立ちってここは熱帯地方かしら。
ちなみに写真に写ってるのは切り離しを終えた直後の補助機関車。 瀬野-八本松間の急勾配を登るための補助機関車は西条駅で 切り離される。こっちは毎日見てるからなんとも思わないけど、 鉄道好きにはきっとこういうのはたまらんのでしょう。 休日には時々三脚構えて写真を撮るオタク風の人を見掛ける。
市民球場は夕立ちの影響で開門が 40分遅れてたので、 開門後すぐにデオデオ行ってハブを買ってこようと思ってたのに 行けなかった。
試合前のマスコット交流パフォーマンス。
スライリーが読売のマスコットから読売法被をプレゼントされ、着させられる。 当然観客席からはブーイング。 でも変な体型が災いしてなかなか着せることができずちょっとぐずぐずになる。
読売法被を脱ぎ捨て、ハンマーで叩こうとするスライリーと、 その法被を守ろうとダッシュする読売のマスコットと、 うろたえるジャイ子。

つーか、こんな敵対心むきだしで 生々しくて笑えない交流はしないほうがいいんじゃないかと。

5回裏終了時にも3人が出てきて、なにやらカードを使って西部劇風の パフォーマンスをやってたようだが、何をしているのか全く伝わらず、 いつ終わったのかも分からずこちらもぐずぐずに終わった。 あれは反省会が長くなるだろうな。
試合は4回、バントしようとした二岡が自打球を喉に当てて救急車で 運ばれる。この投球を危険球と判断されてしまい大竹は退場。 これがちょうど7時前で、ほどなくテレビ中継が始まったので、 隣の人の TV付き携帯でリプレイを見るけど、どう見てもバットに当たってる。 二岡がバントが下手なだけじゃねーか。 しかし便利な世の中になったねえ。
なんだ? 一死一塁でバッター上原を迎えたところで ピッチャー長谷川に代わり (先発要員の) 広池って。
結局 2-2 で同点の 9回、石原のピッチャー強襲安打でサヨナラ勝ち。

2006/08/13 (日)
今日はある意味ダブルヘッダー。 ソレイユで 13:30 頃からぱふゅーむのリハを見る。 14:00 からステージ。「ジェニーはご機嫌ななめ」が聞けたのでよかったかも。 ぱひの曲じゃなくてカバー曲だけど。 3000円の DVD を買うと握手券。ぼったくり商売だなー。 でも、かしゆか(;´Д`)ハァハァ
15:10 イベント終了。電車と市電で市民球場まで移動。 炎天下を歩いて汗をかいちゃあ冷房がんがんの建物に入ったり電車に乗ったりを 繰り返すので、風邪引きそう。
15:45 市民球場着。さすがにこの時間なので 6番ゲートのほぼ最後尾。
17:30 一旦球場を抜けて HMV へ。18:00 からぱふゅーむのトークイベント。 前回ここであったトークイベント (2006/01/20の日記参照) は MC がぐだぐだでひどかったが さすがに本人たちも分かってたようで、 「前回はひどかったので今回は私たちだけでやることにしました」みたいな ことを言ってた。 トークはいつも通りあーちゃんが仕切ったり、 ぱひのサイン入りクリアファイルが当たるジャンケン大会とか。 まあでも 30分持ったからよかったよかった。

これだけ集中力を費してジャンケンするのも初めてだけど、 瞬間に相手が何を出すか自分が何を出したらいいか分かった時は だいたい勝てるけど、 分からなかった時は確実に負けたような気がする。

さっきのソレイユでは新曲シングル (1000円) が売り切れてたので、 ここで買おうと思ったらシングルでは握手券は付かず、 握手券が付くのは 3000円の DVD のほうってことで、 やっぱりぼったくり商売。 その DVD もせめてメイキングとかオフショットが入ってるってんならいいけど、 ただ CG 合成しただけのプロモが入ってるだけだからなあ。 さすがに2麻衣目を買う気にはなれず。

19:00 球場に戻る。 6回に、新井のソロホームランに始まり連打連打で 4-4 の同点に 追い付いてなお二死満塁で嶋はクソボールを振って三振。 その裏 (正確には次の回の表ね)、中継ぎ陣が打ち込まれる。 11-4 の9回裏、嶋が2ランを打って 11-6。 こんなしょうもないところでホームラン打てるんならさっき打て。 見に来たファンをバカにしとるのか、ふざけるな。
8回表、セカンドを守る木村拓也。 写真下手なんで撮影場所が低すぎてセカンドかどうかが分かりづらい。 で、場所を移動しようと思ったらもうスリーアウトになっちゃったのよね。
家に帰ると居間のエアコンが動かなくなってて 「このくそ暑いのに...」と思ってたら、 近くの電柱に雷が落ちてエアコンが壊れたそうな...orz。 朝から市内に出てて、市内は終始蒸し暑いだけだったけど、 こっちは夕立ちがすごかったらしい。
で、部屋に戻ってテレビをつけようとしたら、つかなくなってた。はぅん...orz。 テレビっつってもただのテレビじゃなくて CZ-602D。 オークションで X68030 買った時にセットでついてきた中古だけど。

2006/08/14 (月)
今日は夏休み。まさか落雷の後処理するための休みになるとは思わんかったけど。 聞いたところ、昨日のはほんとに家のすぐ裏の電柱に落雷して電線が切れたらしい。 うちの家は電柱の系統的には末端なので被害は1軒だろうけど、 電線が切れて地面に落ちてるってのを連絡したもんだからかどうかは知らんけど さすがに中電工がすっ飛んで来て、停電は数時間で復旧したらしい。 うーむ、そんな世紀の瞬間に立ち会えてないってのも、ついてないな。
結局、昨日の落雷でディスプレイテレビの CZ-602D、 NTT レンタルの ADSL モデム、 ルータとして使ってた OpenBlockSS が壊れた。 あとはボイラーとエアコン3台、ノートPC も壊れたらしい。 夏だからまだいいけどボイラーが直るまで湯が出ないお orz (風呂は太陽熱湯沸機の湯も出せるからいいんだけど シャワーとか洗面台とかの湯はボイラーのみで供給してるので)。 あと電話も不通。NTT が来るのは木曜日になるそうな。 この土日は電器屋に行く暇がなくてハブが買えなかったけど、買ってたら もう一回壊れてたかもと思うと、それはそれでよかったのかも。
壊れた CZ-602D の画面に変な模様が出てる。 いかにも雷くらったって感じ。
CZ-602D の代わりにすべく、物置から CZ-611D と CZ-613D を 取り出してくる。何年か前の冬に水道パイプが凍結破損して これらを置いてあるあたりが水浸しになった後一度も火を入れて なかったので、動くかどうか分からなかったけど、結局 CZ-611D は電源は入るけど異音がするし、 何かは映ってるんだけど全然同期がとれないような感じだった。 CZ-611D は高3の時に最初に買った X68000 PRO-II に付属してたディスプレイ。 合掌。
CZ-613D は無事動作したんだけど、1年以上物置に置いてたため 中に虫が卵でもしてたら嫌なのでとりあえず事務所に置き去りにしといて、 部屋には家の中で使ってなかった 14型テレビを据えることにする。 でも、X68000 ディスプレイのシャープでクリアな画質に慣れてたため 安物テレビの画質の悪さにびっくりする。ちときつい。
で、月曜だけどお盆なので変則日程で、中日戦。
友人が会社で内野のいい席のチケットをもらったそうなので 内野で観戦。いやまじでいい席。

試合開始直前に球場に着いたので、席を見付けて座って カメラを取り出した頃には先頭打者の荒木を迎えていた。

三塁側を見た図。
一塁側を見た図。
と思ってたら、降雨中断で選手が引き上げていく様子。 先頭の荒木をショートゴロ。2番の井端に2球投げただけのところ。
30分後。どうせいつもの夕立ちですぐやむだろうと思ってたけど、 なかなかやまない。
変なの (スライリー) が裸で走り回る。 着ぐるみだから裸も何もないような気もするけど、 なんか卑猥な感じがする。
結局このあとすぐに降雨ノーゲーム。 時間がなくて弁当を買わずに行ったのが幸いかな。 しかし、いい席だったのにな。

2006/08/15 (火)
中日戦。今日は仕事だったので 7時頃球場に着いたら外野は満員。 世間はお盆なのね。で、今日はミッキー君の日。
試合は 4-5 でなんとか逃げ切り。

2006/08/16 (水)
今日も仕事の後で中日戦。朝倉がよすぎて手も足も出ず 1-6 で完敗。 近くで酔っ払ったおっさんが立ち見してたがそのうち勝手にうちらの 近くに入り込んで座ってタバコを吸い始めたので、もみあいになる。 争い事は久しぶりだな。
てことで 市民球場で休みなしの6連戦を制覇。 6連戦に備えて夏休みとりつつだけどね。

2006/08/17 (木)
今日と明日は夏休み。 しかしちょうど落雷の後処理のためにとったような休みだな。
昼から NTT が回線の復旧工事に来る。 落雷の後電源が入らなかったから壊れたと思ってた ADSL モデムも 今日は電源が入った。壊れてなかった様子。
てことで、ハブを買ってきて、 古いブロードバンドルータを引っ張り出してきて、 1週間ぶりにネット環境復活。
あ、クライアントマシンの NIC (fxp0) が雷で死んでるわ...。

2006/08/18 (金)
昨日から2日かかって1週間分の日記を更新。さすがに疲れるわー。

2006/08/19 (土)
そういえば、インフィールドフライ。 先日の12日の巨人戦、無死満塁でイスンヨプが打ち上げたショートへの フライを梵が見失って落球し、三塁走者が生還したことがある。 梵がボールを拾い直して送球するがオールセーフ。 ここで内野陣はボールを回しベースを踏んでアピールするが認められず 審判が中央に集まって少しばかり話をしてた。 すぐに審判から場内アナウンスがあり 「インフィールドフライでスンヨプはアウト」という のは聞こえたが、そこで歓声がわきおこったため、その後に何か言った のは聞こえなかった。で 1点入って一死二三塁で試合再開。

外野で見てたうちらは場内アナウンスの後半が聞こえなかったので、 なぜ 1点入って一死二三塁で試合再開なのかが分からなかったが、 こういうことらしい。 インフィールドフライを宣告されると、その時点で打者はアウトになるが ボールデッドとはならない。 打球がフェアゾーンに落ちたため走者は進塁が可能になり (ちなみに打者走者が先にアウトになっているため進塁の義務はなく フォースプレーではなくタッチプレーになる)、 三塁走者の生還は認められ、一二塁走者の二三塁への進塁も認められる。 で、インフィールドフライの宣告は打者のみがアウトになるのであって その時点でフライを捕球した時と同様の効果がある (走者は帰塁の義務が生じる) のではないため、 カープ内野陣がベースを踏んでアウトを主張したのは認められない ということらしい。

分かんねーよ。 てことで、 インフィールドフライ - Wikipedia

そういえば、惑星の定義を変えて (正確には決めて) 今の 9個から 12個に増えるかもって話。 個人的には納得いかんのだけどね。 まず冥王星は一つだけ他と公転面がずれすぎてる。 冥王星は40度近くずれてたっけ、 その次に大きいのが水星の 4度くらいだったっけ? あと軌道も一人だけおかしいし、 とにかく冥王星については子供の頃から違和感があったので、 冥王星を小惑星に格下げするだけっていう解が自分の中では ベストなんだけどな。 アメリカ人は現実を受けとめて黙っとけよ。
そういえば、XM6 はどこまで作ってたんだっけか(ぉ。
全然違った。 地球の軌道面に対して、水星は 7.0度、冥王星は 15.1度 (理科年表平成11年版より)。 冥王星が一つだけ離れててその次に大きいのが水星ってことしか 合ってないや。orz

2006/08/20 (日)
Core Duo マシン (M/B は GA-8I945GMMFY-RH) に載っている NIC 82573L は NetBSD 3.0 では認識できず device not configured になる。 -current ではサポートしてるようだったので、-current にしてみることにする。 といっても NetBSD で起動するとネットワーク的に unreach なので、 遅いサーバマシンで -current のフルソースセットを tar.gz に固めておいて それを WindowsXP 上にコピーしておいて、NetBSD で立ち上げ直して WindowsXP の領域をマウントして tar.gz を取り出すという方法をとる。

で、やっとカーネルのビルドが出来たので -current のカーネルで 起動してみたら wm0 は見えててインタフェースもアップするけど パケットが出ていかない。うーみゅ。

wm0 が使えないので、ここ (N4L-VM DH を NetBSD 3.0 で使う - はぐれオタク高踏派) を 真似して em0 を使うことにする。 デバイスリストは適当に編集。 if_link_state_change() が見付からないというコンパイルエラーが出るけど どうやら不要そうなので削除するだけで使えた。 ここまで長かったわりには意外とあっさり。

2006/08/21 (月)
夏の高校野球。昨日の決勝戦、 駒大苫小牧 - 早稲田実が延長15回 1-1 の引き分けだったため、 今日再試合。 今日は仕事だけど事務所は人が少なかったので インターネット中継で見てた。 3回くらいに音が出なくなったので一旦切断して繋ぎ直そうと思ったのが 考え方が甘かった。一度切ったらもう二度と繋がらんわね。 最近は AM ラジオも持ち歩いてなかったので、結局観戦できず。 結果は早実が 4-3 で優勝。 (見たのは昨日だけだけど) いい試合を見させてもらった。

2006/08/23 (水)
そろそろ Core Duo マシンの NetBSD 3.0 側で生活を試みる。 firefox 1.5 は、何かをダウンロードしようとするたびに落ちるので使いものに ならねー。あとキーバインドが変なのもどうやって直すんだろう。
続いて gmplayer。 NetBSD 2.0 の頃の pkgsrc の gmplayer はコンパイル出来なかった (依存している glu がどうやってもコンパイル出来なかった) が、 今回はコンパイルできた。1年以上かかって初めて gmplayer を 起動したことになるな。でもまだ絵が出ない。orz
続いて音。大抵は初期状態では入力も出力もレベルが半分くらいに なっているので、これを上げてやる必要がある。 このマザボだとオーディオデバイスは azalia0 なんだけど、 これのどこ (1箇所とは限らない) を変えたら音が出るかは 音が出るまで試してみろってことか?
% mixerctl -a 
outputs.adc07.source=pink18
record.adc07.pink18.mu=off
record.adc07.pink19.mu=off
record.adc07.blue1a.mu=off
record.adc07.green1b.m=off
record.adc07.unknown1c=off
record.adc07.green14.m=off
record.adc07.orange15.=off
record.adc07.pink18=123,123
record.adc07.pink19=123,123
record.adc07.blue1a=123,123
record.adc07.green1b=123,123
record.adc07.unknown1c=123,123
record.adc07.green14=123,123
record.adc07.orange15=123,123
outputs.adc08.source=blue1a
record.adc08.pink18.mu=off
record.adc08.pink19.mu=off
record.adc08.blue1a.mu=off
record.adc08.green1b.m=off
record.adc08.unknown1c=off
record.adc08.green14.m=off
record.adc08.orange15.=off
record.adc08.pink18=123,123
record.adc08.pink19=123,123
record.adc08.blue1a=123,123
record.adc08.green1b=123,123
record.adc08.unknown1c=123,123
record.adc08.green14=123,123
record.adc08.orange15=123,123
outputs.adc09.source=unknown1c
record.adc09.pink18.mu=off
record.adc09.pink19.mu=off
record.adc09.blue1a.mu=off
record.adc09.green1b.m=off
record.adc09.unknown1c=off
record.adc09.mix0b.mut=off
record.adc09.green14.m=off
record.adc09.orange15.=off
record.adc09.black16.m=off
record.adc09.gray17.mu=off
record.adc09.pink18=123,123
record.adc09.pink19=123,123
record.adc09.blue1a=123,123
record.adc09.green1b=123,123
record.adc09.unknown1c=123,123
record.adc09.mix0b=123,123
record.adc09.green14=123,123
record.adc09.orange15=123,123
record.adc09.black16=123,123
record.adc09.gray17=123,123
inputs.mix0b.pink18.mu=off
inputs.mix0b.pink19.mu=off
inputs.mix0b.blue1a.mu=off
inputs.mix0b.green1b.m=off
inputs.mix0b.unknown1c=off
inputs.mix0b.black1d.m=off
inputs.mix0b.green14.m=off
inputs.mix0b.orange15.=off
inputs.mix0b.pink18=125,125
inputs.mix0b.pink19=125,125
inputs.mix0b.blue1a=125,125
inputs.mix0b.green1b=125,125
inputs.mix0b.unknown1c=125,125
inputs.mix0b.black1d=125,125
inputs.mix0b.green14=125,125
inputs.mix0b.orange15=125,125
outputs.mix0c=123,123
inputs.mix0c.dac02.mut=off
inputs.mix0c.mix0b.mut=off
outputs.mix0d=123,123
inputs.mix0d.dac03.mut=off
inputs.mix0d.mix0b.mut=off
outputs.mix0e=123,123
inputs.mix0e.dac04.mut=off
inputs.mix0e.mix0b.mut=off
outputs.mix0f=123,123
inputs.mix0f.dac05.mut=off
inputs.mix0f.mix0b.mut=off
inputs.sel10.source=mix0c
inputs.sel11.source=mix0c
inputs.sel12.source=mix0c
inputs.sel13.source=mix0c
outputs.green14.mute=off
outputs.green14.dir=output
outputs.green14.boost=off
outputs.orange15.mute=off
outputs.orange15.dir=output
outputs.orange15.boost=off
outputs.black16.mute=off
outputs.black16.dir=output
outputs.black16.boost=off
outputs.gray17.mute=off
outputs.gray17.dir=output
outputs.gray17.boost=off
outputs.pink18.mute=off
outputs.pink18.dir=input
outputs.pink18.boost=off
outputs.pink19.mute=off
outputs.pink19.dir=input
outputs.pink19.boost=off
outputs.blue1a.mute=off
outputs.blue1a.dir=input
outputs.blue1a.boost=off
outputs.green1b.mute=off
outputs.green1b.dir=output
outputs.green1b.boost=off
inputs.usingdac=02040305
record.usingadc=adc07
どうやら マスターボリュームっぽいのは outputs.mix0c みたいだったけど、 そんなの分かんねーよ。
今日は客先から直帰したので、阪神戦は見に行けなかったら、 またブラウン監督が退場。うーん退場した3回とも見に行ってないよ。 でも今日のはパフォーマンス的ではなくてマジギレっぽかったけど。

2006/08/24 (木)
阪神戦。森笠の打席でたぶんファールをフェアと判定されたっぽいことに 森笠が抗議してて、ブラウン登場。 抗議の場面でブラウンが出てくると外野は拍手喝采気味なのがちょっと面白い。 でも今日は何事もなく引っ込んだ。 それはいいけど、審判は場内へ説明しろよ。 野球はテレビで解説者が喋ってくれるものじゃなくて その場でライブで見てるものなんだよ。
あとその時に、「Go! マーティ Go! マーティ、俺たちのブラウン♪」と ロッテのパクりをしてたのはうちらです。スマソ。 うちのベースを投げる Manager は Marty Brown ていうからね。
試合は、前田の逆転2ランと黒田の完投で 3-2 で快勝。 阪神戦3タテだけど1試合しか見てないや。orz
8月は市民球場12試合中10試合見て、5勝3敗 1分(降雨コールド) 1ノーゲーム。 今季通算は15勝7敗1分1ノーゲーム。

2006/08/25 (金)
家に帰ってテレビをつけたら映画版のタッチをやってたので 途中からだけどつい見てみた。しょぼかった。 広島ではうちらが中学の頃に夕方再放送されてて、 毎日給食の時間は昨日のタッチの話題でもちきり (?) なくらい ハマってたので、そういうアニメで見てた世代からすると、 あれはなんかむりやり似せて2時間に収めてみましたって感じで無理がありすぎ。 後半の1時間を見た中で一番テンション上がったのは MEISEI って胸に書いてあるユニフォームを見た時だったし。 「おーすげーアニメと一緒だ」って感じで。

2006/08/26 (土)
NetBSD 3.0 の (正確には pkgsrc-2006Q1 のね) firefox-bin 1.5 が使いものにならなくてまともに調べ物も出来ないので、 mozilla-bin 1.7 のほうをインストールしてみる。 firefox ほどひどくはないけど、NetBSD 2.0 当時の firefox-bin 0.8 のほうがよかったな。
あー、sawfish は GTK1 でビルドしてあるからタイトルバーに 日本語が出ないのねー。しょぼっ。 結局、馴染みの qvwm を使うことにする...。
こないだの落雷でルータにしてた OpenBlockSS が壊れたので、 昔使ってた I/O DATA のブロードバンドルータを取り出してきて使ってるけど、 これがしょっちゅう不通になる。 ひどい時は1時間に1回とかいう勢い。 で、気が向くまで直らない。 なぜ高い OpenBlockSS を買ってきたか思い出さされたよ。orz
XM6 で今度は音を出してみようと思ったのは雷事件の前だったんだけど、 今日になってようやく 訳も分からずとりあえずリングバッファを回してみたところ、数回ほど 回ったところで VM の中 (fmgen あたり) で NULL 触って死んだ。 ふみゅー。
あと NetBSD (というか昔ながらの UNIX ?) は Windows とは 違って同時に一人のプロセスしかオーディオデバイスを開けないので、 普段 PC で MP3 鳴らして 生活してる人がオーディオデバイスを使う開発を始めると MP3 が聞けなくなるのでかなり悲しい。 kent さんの in-kernel audio mixer マダー☆チンチン。

2006/08/27 (日)
お、ノイズ混じりだけど、ちゃんと喋った。 やっぱ X68000 の場合「音が出た」じゃなくて「喋った」だよね。 昨日の VM の中で死んでたように見えたのは、 リングバッファのポインタの計算を間違えてて VM のワークを踏みつぶしてたためみたい。
DirectSound の中身がどうなってるか知らないんだけど、 まず最初に Play() を呼んでおくっていう構造なので 裏で再生専用スレッドかなんかが勝手に回ってるんかしら。 で、DirectSound のリングバッファに何か書き込むとよしなに 再生してくれるらしい。 書き込み時には Lock() 関数を使って、リングバッファの どこから何バイト分書き込むからロックしてくれって言う。 そこにデータを書き込んで Unlock() する。 これでたぶん書き込みポインタが更新されるっていう構造に なってるんかしら。 XM6 のソースから想像してるだけだけど。

で、毎回の VM からの取り込み量はバッファサイズと同じなのに、 元ソースに似せてリングバッファをむりやり回すために 書き込みポインタをずらすとかいう小細工をしてたため、 毎回必ず2回に分けて読み書きを行うようになってしまい、 それがぷちぷちノイズになってたみたい。

なので、毎回バッファの先頭からバッファサイズ分を取り込んで、 Unlock() のところでそれをそのままオーディオデバイスに 書き込むようにしてみた。つまりリングバッファでもないし同期書き込みってことね。 なんかきれいな音が出たー。

うーん、すごいなー。ちゃんと mmdsp で曲も聞けるし、PANIC も見れる。 やっぱこれでこそ X68000 だねー。

2006/08/30 (水)
060turboX プロジェクト の 060turboX と 68060RC50 を仮予約しといた。 さすがに高いけど、Nereid なんかを見てると きっと初回に購入しとかないと 次回以降は対数的に入手困難になっていくので、今のうち。

でも、うちにあって動いてたのは X68030 (68030換装済み) と PRO-II + Xellent30 (68030換装済み) の2台。 物置に放置してて動くかどうか分からないのが PRO + Xellent30 と SUPER の2台。 この 2台が動かなくなってたら、その時は額に入れて飾るということで。


≪ 2006年7月 | 2006年9月 ≫
井崎のホームページへ戻る
isaki@NetBSD.org