Repo

kjana00@gmail.com

older <-

2008-12-05

今朝は何とも不穏なくもり、と思いつつパンとソーセージとゆでたまごとサラダっていつも通りの朝ごはんを食べてたら激しく雷雨。二度寝してる間にだいぶ弱くなってくれてて助かった。ピークに外にいた人達は大変ね。

C プログラム上での二チャンネル化はこんなものかと書き上げて、動かしてみると何か変。両方のチャンネルに同じものを入れたら一チャンネルの場合と同じ出力になるロジックなんだけど合わない。何でかって追いかけたら途中から片方のチャンネルの入力が 0 になってる。同じファイルを同じプロセスで開くと何かまずかったんだっけとちょっと動揺して確認してみたりしたけどやっぱりそんなことはないわけで、それじゃ何だとしばらく悩む。サーキュラーバッファの読み出しポインタがちゃんと動いてないような、っていうのを見ててふと気付く。このポインタ調整関数ってポインタを返すんだよね。ポインタ受け取って書き換えるんじゃなくて。……返り値受け取ってないけどさ、ここでは。

ということであっさりまともに動くようになって一安心。ちゃんとした二チャンネルのデータも二、三突っ込んでみて真っ当なのを確認出来た。これなら一応こんなものか、ぐらいは言えるねということでアセンブラプログラムをいじり始める。まあこれもちまちま、ちまちまという感じになるわけで……鬱陶しい。インライン関数どころか引数付きのマクロもありませんというアセンブラが相手だから複製コードが増えるのが気持ち悪い。でもさすがに二命令相手に行きと帰りの分のパイプラインハザードで 12 cycles のオーバーヘッドとかやってられないしね……

とりあえず一通り書き終わったところで動かしてみる……前に動かす環境をどうにかしようという気になる。シミュレータ用の TCL スクリプトをいじってコマンドラインで一チャンネル版も二チャンネル版も同じスクリプトで動かせるようにしておこうと。それで余分に $ を付けとくと regexp でマッチを拾おうとした変数に値が入らないんですよとかで引っ掛かったりしつついじって何とか。で、シミュレータで走らせてみると見事にちゃんと動かないという。オプション外して一チャンネル版にするとこれは動くから、二チャンネル化で余計に壊したところは無いっていうのが救い。

何かはまってる風だからと適当に止めて眺めてたらバッファの末尾アドレスが入ってないといけない変数が未初期化だったとか、変に止まるところでポインタ見てみたら妙な場所を差してて、まあ足したコードがおかしいんだよねと diff を見てたらコピーした後ラベルを直すの忘れてたのを発見とか。でもまだ全然ちゃんと動いてないなというところで今日はおしまい。何だか昼ぐらいからやたらと肩が凝るっていうか痛むんで気分が悪くなってきたことだし。

帰って晩ごはんにきゅうりとなすの塩もみととり汁のそば。着替えたのが良かったんだか晩ごはんが良かったんだか動いたのが良かったんだか、とりあえず少しは楽になったかな。

ramaze --damonize=start で動かそうとするとモニタープロセスは生きてても本体は死んじゃってるっぽいっていうのでしばらく悩んだ挙句に真っ当に動かすより自分でデーモンになった方が簡単という気になったり、Reloader を止めるにはどうするんだというのでソースを眺めてみたり。便利になったから差し替えちゃおうかという誘惑が出て来たけどこいつってば今動かしてるこのスクリプトよりも多分重いわけでどれぐらい負荷が上がるんだろうと思うと微妙?

……なんて思いつつサーバ借りるんだったらどうしようと WWW 見てたりゲームしてちょっと調子良くハイスコアを更新してみたり。一番簡単なのでも 18,000,000 点ぐらいからあっという間に残機が減るようになるんだよな……

older <-

goto

hint can be:

Tags

old

2007-05 -- 2006-12

ゲーム関係の古い記録

before 2005-12