Repo

kjana00@gmail.com

older <-

2013-02-09 01:12:50

今朝は晴れ。朝ごはんはパンとサラダとソーセージ。またえらく冷え込んできたなと思ったら、新大阪では雪がぱらついたりして。空は晴れてるのに。どこか遠くから飛んできた雪。

ちまちま作業を始めようとしたら呼ばれて、何かと思ったら別件の方がまた遅れ気味なんで助けてもらえないかなとかいう。何だかなという感じだけど、席に戻って資料見直したら前に思ったよりもはるかに簡単だっていうのに気付いたんで、そのまま手を付けたら出来てしまった、とかな。ちょっと実装甘いかも、だけど。

それから元に戻る。64bits 演算を自動生成されるコードに任せると、掛け算は完全にマクロになるけど割り算は関数呼び出しちゃうし、ヘッダファイルにしろ関数定義してるソースにしろ、全然作成に携わってないファイルの保証をしなきゃならなくなるのが嫌ということで、やっぱり 64bits 演算を外の既存の関数を使うなり、そもそも無くなるようにするなりが必要っていうことになったんで作業。最初はユーティリティ関数をまとめてるところで用意してるものをテーブル引きと同じような感じで外部関数呼び出しのふりしたマクロ使用に置き換えようかと思ってたんだけど、実はそのマクロが二つの数値の片方を最後に割る数で割った商と余りを与える形で三引数になってるということで頓挫。使えるようにしようとすると、そのマクロの分を絵に描くのと同じぐらい手間がかかりそうだから。

ということで、そのマクロと同じロジックを絵に描いて置き換える作業を開始。こんな感じと簡単に描いてみたけど結果が合わなくてしばらく悩んだりして。A × B / 1000 とかを、(A × (B / 1000)) + (A × (B % 1000)) / 1000 に置き換えるようなロジックで、後半の余りの方は整数で出るけど前半の商の方が実数になって余り分まで含んでしまってるという問題でした……ここの部分は本当に整除してくれないと困るから、割り算の後に整数への型変換ブロックを挟んで対処してみた。とりあえずこれでいいらしい。

で、作ったサブシステムを使って元の掛けて割ってる部分を置き換える。1,000,000 で割ってるのをそのまま使うと余りの掛け算の方で結局オーバーフローするから 1000 で割って最後に更に 1000 で割るようにしたつもりで、最後に 1000 を掛けてて変な結果が、なんていう間抜けな間違いをしたりしつつもどうやら何とかなって、無事、余分なファイルを含まないコードが生成出来るようになった。

またベースが更新されてたんでマージとか、質問表の返答に更に回答とかしつつ終わる。仕様が曖昧だとか、わからないだとかはそのままの意味なんですよ? 絵的には二回計算するかどうかの判定をしてて、どちらでも計算しない場合は INVALID を返すようになってるけど仕様書にはそう書いてないとか、同じ計算をするって参照してるサブシステムでは違う出力になるように書いてあるとか、しかもそっちでは二つの判定の一方で計算しないことになった場合にこの出力がどんな値になるか規定してないとか。思わず馬鹿丁寧に全部書いてしまった。いらつくといけないね……

冷え切ってるなと思ったら気温は 0℃ だそうな、という中帰って、晩ごはんは胡麻豆腐とおでん。煮込む時は鍋のふたを開けておいた方がいいらしいなというのを今更ながら確認したりして。火力と熱放散のバランスが悪くてふたを閉めてるとえらく沸騰してから火が止まるっていう感じになるん。弱火が苦手なのよね、この IH ヒーター。単純なオン・オフ制御しかやってないっぽい。

後は WWW 見たりゲームしたり。城に入って 30 階まで降りてみたんで、返す刀でダークエルフの王のクエストも片付けてみたっていう。城でグレンデルを割と楽に倒せたからまあ大丈夫だろうという判断。大丈夫過ぎな感じ。これで……ああ、ログルス使いが残ってたな、25 階レベルクエスト。

older <-

goto

hint can be:

Tags

old

2007-05 -- 2006-12

ゲーム関係の古い記録

before 2005-12