日記

9月 20日 (月)

1. ビビン

松屋のビビン丼はなかなか美味いです。うまトマハンバーグ定食以来のヒット作ですね、俺的に。豚めし *1 、デミたまハンバーグ定食 *2 、うまトマロールキャベツ定食 *3 と、いまいちな新商品が続き、食べるものが豚焼肉定食しかないという松屋暗黒時代にも、ようやく光明が見えてきました。がんばれ松屋。

  • *1: 豚めしがアレなのは、牛めし用のたれを使っているからではないかと踏んでいるのですが、どうでしょう。あのたれは豚肉には合いません。
  • *2: デミグラスソースが甘すぎるうえに味が強すぎ、主役であるハンバーグを殺してしまっています。これを食べて、うまトマハンバーグ定食は美味かったなあ、とひしひしと感じました。
  • *3: しょっぱかった、という印象しか残っていません。トマトのうまみも、キャベツのうまみも感じませんでした。

2. 吉里吉里 - Additive Alpha -

dfAddAlphaにちょびっとだけ対応してみた。まだ実験フェーズだが。こうやって、ちょっとずつ機能を追加していく予定。これぞ牛歩戦術(違)

9月 21日 (火)

1. ズバッと惨状

怪傑ズバットのDVDボックスを買ってきました。いろいろとキューが溜まっているので、観るのはだいぶ先になりそうです。

9月 22日 (水)

1. 吉里吉里

ジュリア集合描画プログラムを作ってみた。

複素数演算部(収束・発散判定)は高速化のためにC++で書いて、DLLプラグイン化。TJS配列オブジェクトとその他パラメータをプラグイン関数に渡してやると、配列オブジェクトに計算結果が格納される。格納された各値をカラーコード算出関数(TJS実装)に渡すとカラーコードが得られるので、これをレイヤの各点に対して setMainPixel() する。

レイヤサイズ640x480、複素座標領域 (-1,-1i) - (1,1i) の描画が約5秒。内訳は、収束発散判定が1秒未満、全点のカラーコード算出が約1秒、残り約3秒が setMainPixel() によるドット打ち。この結果は、だいたい予測の範疇かな、といったところ。

TJS実装の部分全てをC++実装にしてしまえば、確かに速くなる。しかし、カラーコード算出関数だけは、柔軟性を持たせるためにTJSで実装したい。色付けはフラクタル画像の大きなファクターなので、手軽に着色方法を変更できたほうが良い。

続きは明日。

9月 23日 (木)

1. 吉里吉里

1.1. FuncCall

TJSで定義した関数を、DLLプラグインから呼ぶ方法。

  ...
  iTJSDispatch2 * func = param[0]->AsObjectNoAddRef();
  static tjs_uint32 hint = 0;
  tTJSVariant res;
  func->FuncCall(0, NULL, &hint, &res, 0, NULL, func);
  ...

とりあえず、これでOKっぽい。TJS関数が引数を要求するときは適宜変更。

1.2. setMainPixel

setMainPixel() でドット打ちしていた部分を、C++で実装。オーバーヘッドがないので、速い速い。

1.3. cache

  • レイヤサイズが640x480の場合、ピクセル数は307200
  • 収束・発散判定のループ回数上限が255の場合、ループ回数は0〜255の整数値(255を越えた場合は収束とみなして0にする)
  • 今の仕様では、収束・発散判定のループ回数だけで、カラーコードが決まる

ということは。

全ピクセルについて、TJS実装であるカラーコード算出関数を毎回呼び出すと、呼び出しオーバーヘッドのために少々時間がかかる。そこで、「ループ回数」→「カラーコード」とマッピングした、要素数256の unsigned int 配列を作成しておき、全ピクセルについてこのマップを適用するようにすれば、カラーコード算出関数を呼び出す回数が少なくて済む。30万回呼び出すのと、256回呼び出すのとではずいぶん違う。

これで、この部分はかなり速くなる。が、元々大して時間のかかる処理ではないため、体感速度はあまり変わらなかったりする。

1.4. result

演算〜描画まで約5秒かかっていたものが、カラーコード算出関数以外をC++で実装し直した結果、だいたい1秒前後に収まるようになった *1 。おおむね満足。

  • *1: 640x480 pixels, 65536 colors, CPU:Athlon XP 1900+ / 1470MHz

2. Our favourite kung-fu maid

まとめてキュー消化中。

「起こし方その3」の謎を残したまま逝ってしまったエリノアさん。

エリノア… エリノアのいないMADLAX… エリノアのいないMADLAXなんて…

9月 24日 (金)

1. 吉里吉里 - Julia set -

カラーコード算出関数を辞書配列にして、着色方法を簡単に切り替えられるようにした。お手軽。

対象の複素座標領域をマウスで指定できればいいなーとか、セーブ機能が欲しいなーとか、マンデルブロ集合も描けるといいなーとか、いろいろ欲しい機能はあるが、実装が面倒。ユーザインターフェースはKAGで作ろうか。

9月 25日 (土)

1. アキバ

Mini-ITXマシン、BeSilentを修理に出してきました。メインボード交換になるでしょう、とのこと。もちろん、保証期間内なので無料です。

その足で覚醒plusをゲット。東方永夜抄が委託販売されているはずなんですが、入手できませんでした。まだ店に並んでないのか、売り切れていたのか、探し方が甘いのか。

9月 26日 (日)

1. アキバ

今日もアキバ。アクメツ(9)と東方永夜抄ゲット。ちゃんと探せばあるじゃないか。

9月 27日 (月)

1. Cold

急に寒くなったせいか、風邪気味です。困った困った。

2. 覚醒plus

音楽は良い。CD-Rメディアの質は悪い。音楽用ソフトに、何故こんなメディアを…

CDプレイヤーで再生すると、音を取りこぼしてプツプツ途切れます。スピーカーで聞いているとわかりにくいのですが、ヘッドフォンで聞くと顕著に表れます。LD/DVDプレイヤーで再生するとそういったことは起こらないので、CDプレイヤーを疑ってもみましたが、他のCD-Rメディアでは起こりません。CD-ROMドライブに突っ込んでも認識しにくかったし、それ以前に見た目からして明らかに安物だし。

焼きなおさないとダメですね、これは。

9月 28日 (火)

1. LCD

交換を依頼していたディスプレイ、到着。MADLAX最終回で動作(?)確認。ああ、ドット抜けがないって素晴らしい。

2. 東方永夜抄

イージー霧雨魔理沙でさっくりクリア。

嘘です。「どうにか」クリアです。イージーごときで4ミスもしているようでは(略)

3. 覚醒plus

例のCD-Rと格闘。アレンジ自体は良いものなので、何とか焼き直して「普通に」再生したいところ。そのためには、正常に取り込むところから始めないと。

まず、YAMAHAのCD-Rドライブで読んでみましたが、読み込みエラー出まくりです。もともとこのドライブは変なメディアには弱かったので、ある程度は仕方がないとしても、1曲分読んだだけでエラー数50ってのはちょっと…

次、松下製DVD-Rドライブ。CD読み込み機能はあまり充実してませんが、読み込みエラーはほとんどありませんでした。これはいけたか、と思いましたが、いざ聞いてみると所々に「ザッ」「ザッ」というノイズが乗ってました。だめです。

CD-R/ROMドライブは他にも数台ありますが、ダンボールの中にしまってあるので引っ張り出してくるのも面倒です。そんなわけで、早くも最終手段、DVDプレイヤー。今のところ、このメディアをまともに再生できるのは、こいつしかいません。光ケーブルで繋いで、STSRECで録音を仕掛けて就寝。焼くのは明日です。

…なんでこんな面倒くさいことをやってるんでしょう。

9月 29日 (水)

1. 覚醒plus

例のCD-Rです。

昨晩の仕掛けが終了していたので、出来上がったWAVEファイルを編集し、等倍速でじっくり焼き上げました。CDプレイヤーで試聴してみたところ、特に目立った欠点はないようです。これでやっと安心して聞くことができそうです。