Zephyr Cradle Diary


2008.01.23 (Wed)

もうすぐ、さくらっせ。

[Game] ルーンファクトリー2(3)

昨日は寒かったので一日ルーンファクトリーしてました。

漸く春の月4週目。長い。全部のダンジョンに種を蒔きまくっていたら、水やりだけでゲーム内時間で言うところの6、7時間使ってしまうことが判明。やたらめったら蒔きゃいいってもんでもねーですね、これ。バド山脈で捕まえた狼に乗って回れば午前中には終わる感じではあるようですが、どうにもお使いゲーになってしまうので、やり方を少々変える必要はあるのかも。

しかしいざ雨の日になると、やることがない*1っすねこれ。

あとそれだけやっているとお金が余ってくるわけで。そろそろ何か高額の種でも買ってみようかなあとは思うのですが、カノンとユエのために苺と大根の種を買い漁っている始末。なかなか踏ん切りが付かない。

それにしても、料理だの鍛冶だのはいつ出来るようになるんですかね。

*1 雨天だと当然だけど全部の畑で水やりの必要がなくなる。

[PG] 16bit の型で 32bit の計算をする。

ここの日記にしては珍しい、プログラミング(C言語)なお話。

64bit*1 である long long 型が使えない環境下で、 32bit*2 以上( Max が 64bit とは限らず、 33bit や 50bit なんていうケースも含む。)の値の算術をすると考えた時、どう足掻いてもオーバーフローやなんやらの考慮が果てしなく難しいし、その上加減乗除なんてどうやるんだと途方に暮れておりました。 long 型の変数をなんとか駆使して計算できないものかと悶々としていたけれど、どうにもならないので、ちょいと google 兄さんに聞いてみた。そこで発見。

http://7ujm.net/play/pCalc/pCalc.html

ここに記載されているのは short 型で int 型の計算を行う方法。

加算をざっくり説明すれば、要はバイト単位で区切った値を、それぞれの桁で計算して、繰り上がりを次のバイトに足すというもの。やってることは10進数で筆算するのと同じで、バイトを加算する時は敢えて一つ大きな型に入れるので、繰り上がりをしてもオーバーフローしない。それを 0xFF でマスクして……とやる。

確かに自分もビットに分解してなんとか計算できないものかと悩んでいたけれど、まさかこう使う方法があったとは思わなかった。これを応用すれば勿論、 long 型で long long 型の計算を行うことも容易いどころか、それ以上の大きさも計算が可能。

有名な話なのかもしれないけれど、いや、本当に凄い。こういう考えはアセンブラでもやってれば出てくるのかなあ。2008年始まって以来、一番の感動でした。

*1 最大値は約1800京。

*2 最大値は約42億。

[Game] PSP への Skype 延期

http://www.watch.impress.co.jp/game/docs/20080123/mic.htm

規格外って、アンタ。