_ すごい。
_ いろんなツールの使い方があるんですね。
_ 昨日の分からなかった件について argrath さんから返信が。
>> uhitm.c の 2177 行目 これは飲み込み攻撃のある怪物(紫ワームとか)に変化して黙示録の騎士を 飲み込もうとしたときですね。 >> teleport.c の 731,859 行目 こちらはレベルテレポートで "0" を指定したときです。 どちらもやっぱり不完全になりますね。
_ なるほどー。そういうことができるのか。
_ つくづくマニアックなゲームだなぁ。感心。
_ CVS 版の Wizard モードにて天界でテストプレイ。
_ いきなりセグメンテーションエラーで死亡。
_ 原因を特定できるかどうかは分からないけれども(無理) core ファイルでデバッグするのに挑戦できるかもと一瞬思う。
_ うげ、core が出力されていない!!
_ 昨日のセグメンテーションエラーの原因判明。
_ 同じように Wizard モードで遊んでいると天界で落ちた。
_ core 吐かず。
_ 二度も起きるということは再現性がありそうなので gdb で attach してみる。
_ また落ちたので早速 backtrace をしてみると以下のように表示された。
Program received signal SIGSEGV, Segmentation fault. 0x40068b3e in vfprintf () from /lib/libc.so.6 (gdb) backtrace #0 0x40068b3e in vfprintf () from /lib/libc.so.6 #1 0x4007f3f3 in vsprintf () from /lib/libc.so.6 #2 0x0810047c in vpline (line=0x81987ad "%s%sが蘇った!", the_args=0xbffff138) at pline.c:62 #3 0x08100432 in pline (line=0x81987ad "%s%sが蘇った!") at pline.c:37 #4 0x08074677 in revive_corpse (corpse=0x821fb80) at do.c:1945 #5 0x08074e2b in revive_mon (arg=0x821fb80, timeout=935) at do.c:2026 #6 0x0813e5bf in run_timers () at timeout.c:1733 #7 0x0813c825 in nh_timeout () at timeout.c:462 #8 0x08049ec3 in moveloop () at allmain.c:156 #9 0x0816eb47 in main (argc=2, argv=0xbffff794) at ../sys/unix/unixmain.c:314 #10 0x4003616f in __libc_start_main () from /lib/libc.so.6 (gdb)
_ 正直、何が何だか分からないけど #0,#1 の vprintf は標準ライブラリ関連っぽいのでこれにバグがあったらお手上げ。
_ とりあえず #2,#3,#4 を参考にモンスターの復活関連が怪しい。
_ ということでまずは #2,#3,#4 辺りのメッセージの日本語化部分見てみることに。
_ すぐに原因判明。
_ do.c の 1946 行目の pline 関数の %s は一つでいいのに二つになっているのでメモリの変な部分を表示しようとして最悪の場合に落ちるみたいだ。
_ オリジナルの英語版でも %s は一つだし。
_ ためしに %s を一つにしてトロルやペスティレンスをいじめると落ちなくなった。
_ 簡単なバグでよかった。
_ 解決した後で #4 にしっかり do.c:1945 と書いてあるのに気づく。
_ gdb すげー。
_ ヘッダファイルの役割について読み読み。
_ RAM 32MB、HDD 1GB の 98Note。
_ 前に Plamo(98) 3.0 を入れていたけど対応が微妙なので押し入れ行きでした。
_ Windows は重いし期限切れ、DOS マシンにするには強すぎ。
_ 対応がしっかりしている FreeBSD(98) を入れるには HDD の容量が微妙。
_ とりあえず DOS 6.2 を放り込む。
_ bash に慣れた身にはコマンドライン(command.com)がとてつもなく使いづらい。
_ DOS なので性能をフル活用できないのでディスクアクセスが死ぬほど遅い。
_ 再び押し入れ行き。ごめんね。
_ The NetHack Home Page BBS ログの検索インデックスの作りなおし。
_ 10 レスごとにインデックス化している関係上、最新の投稿はヒットしません。
_ また、NetHackPortal 表紙ページからは BBS の過去ログは検索できません。
_ 理由は歴史が長い BBS なので量も多く結果がいつも上位に来てしまい、他のスポイラーを探しにくいからです。
_ The NetHack Home Page BBS を検索したい場合は [詳細] をクリックして検索ページに移動してチェックを入れてください。
_ スポイラ検索は自分が JNetHack をやるときにすぐにダウンロードしてきたスポイラーから記述を探せるように Namazu でインデックスを作ったのがはじまりです。
_ けっこう便利だったので Web で公開することにしたんですが使ってくださる方がいるというのはうれしいものですね。
_ So-Miya さんの XML スポイラーも検索にいれたいんですが XML ってどうやれば Namazu でインデックス化できるんだろう?
_ Turn Turn は名曲です。
_ 僕は福本さんが注目されて徹子の部屋に出演するきっかけとなった探偵ナイトスクープの「あの人を徹子の部屋に出してほしい」という回を見て以来ずっと注目していました。*1
*1: 桂小枝のモノマネ徹子は笑った。そして本物の徹子さんの鋭い突っ込み。この回以来黒柳徹子さんはナイトスクープファンになってビデオに録画して見ているそうです。
_ ハリウッド映画に出演とは。一途で真面目な人柄が愛されたからなんでしょうね。
_ 映画ラスト・サムライも評判がいいみたいです。還暦おめでとうございます。
_ 凍らされた背後に大はやぶさ。
_ 恐怖の迷宮への招待を更新。それに伴い検索インデックスも更新。
_ Mozilla/Netscape7 用のスポイラー検索プラグインのチェック。
_ あ、追加した Slash'EM アイテムスポイラーが検索できない。
_ 慌てて更新。
_ イラク派兵の反対デモが行われたので付近で渋滞が発生した模様。
_ まあ、個人の主義主張だしデモだらけになるのは問題だけどデモが行われなくなるのも問題だと思うので程々にやってください。
_ ちなみに私は派兵に賛成です。ただし自衛隊の問題を解決してからにしてほしい。
_ 今派兵しなくちゃいけないから無理やり OK という主張は納得できない。今ちゃんと憲法とか自衛隊関連の法律を議論しなくてどうするの。*1
_ 憲法なし崩しのグレーゾーン路線を進むのは自衛隊の人にとってとても不幸なことだと思うのです。
_ せっかく海外で命懸けて頑張っているのにまともな大義名分(?)とか法律とか何もないなんて辛いよね。
_ 今の自衛隊は外にでるためのものじゃないです。
_ いざというときに法律上変な問題が持ち上がったりとかしたら現場の人はたまらないし。
_ 親戚が自衛隊関連の仕事をしていたこともありそう思います。
*1: 「憲法を議論」というキーワードだけで私を「あ、コイツは左なのか」とか思う人もいるんだろうなぁ。右左どっちでもねーよ。
_ GNU による GPL とかの解説ページです。
_ Windows 9x 系での動作が相変わらず怪しいようです。
_ argrath さんは 9x 系を持っていないので対処不能だそうです。
_ 私、Me 持ってるんですがプラットフォーム別のコードなんて難しくて読めません。
_ でも何かできることがあるかもしれないのでとりあえず VC++6 を入れて動かしてみようかな。
_ あー、でも容量無いんだよな。
_ 先日 core を吐かなかった理由が判明しました。
_ ulimit で -c 0 になっていました。(おいおい)
_ 世の中いろいろなものがあるんですね。
_ 今回はやられました。
_ Visual C++ 6.0 SP5*1 をぶち込んで Windows Me 上で jnethack-3.4.2-0.2 の tty 版をコンパイルして動かしてみました。
_ 激重!!
_ 何だコレは。昔友だちの家で PC-88 のゲームをやっていたのを思い出すぐらい重い。
_ アイテム一覧を出すだけでも微妙。
_ So-Miya さんの日記通り終了時にエラーがでます。
_ 正直、VC++ は持ってるけど使い方がわからないし*2 tty 版のデバッグ方法もわからない。
_ 分からないことだらけ。
ギモン | ツッコミ |
---|---|
gcc ではデバッグ用のバイナリは -g で作れるけど VC++ ではどうすんだぁ | /Yd でいいのかな |
dsw とかワークスペースを使わない tty 版はどうすれば統合環境のデバッガをつかえるんだぁ | プロセスにアタッチすればいいのかな |
そもそも環境依存の sys/ とか win/ の部分のコードなんて読めないのだぁ | 勉強しろ |
『JNetHack デバッグ入門』とかいう本はないのかぁ | 人頼みもいい加減にしろ |
_ 話は変わりますが、先日 ML に報告したバグはすべて argrath さんによって修正されました。:-)
*1: 使わないくせに何故か持っているのです。
*2: 近所の前途有望な青少年にプレゼントしてあげたいぐらい(?)知らないのです。
_ 結構ためになります。
_ 柴わんこの餌を買いにホームセンターに行くと出現。
_ 赤い箱を無理やり渡そうと出入り口を占拠していました。
_ こんな田舎にも来るのかぁ。
_ 缶コーヒーの箱と犬の餌で両手が塞がっていたのでスルー。
_ 今日はかなり甘えてくる。
_ 床に座ってたら膝に体をスリスリしだしたと思ったら自分から仰向けになって寝転ぶ。
_ 首とかをモニュモニュしてあげると笑い顔になってクネクネクネクネ。
_ とてつもなく情けない顔。
_ ありがとう長野県。
_ スッキリー。
_ 江原さんの JNetHack on Cygwin の最新版が公開されていたことに気づく。
_ 慌てて NetHackPortal を更新。
_ 帰宅すると散歩中の模様。
_ 帰ってくると私がいるのに気づいて大喜び。
_ 飛びかかったりスリスリしたり。
_ 食事中、テーブルの下に来て靴下にスリスリ。
_ くすぐったいので食事のじゃまするなっつーの。
*1: 一緒の時に直そうとすると遊ぼうとして毛布をくわえて逃げるのだ。
_ Windows 関連の対処は私にはお手上げなので Linux 上でプレイしたり。
_ Windows で tty 版が終了時に死ぬ問題の続報。
sf.jpのCSV版を確認したところ、win/tty/wintty.cのversion 1.16を 摘要したら問題なく動くようになりました。
msmsg('\n');
_ の部分を
msmsg("\n");
_ に修正すると解決するとのことです。原因がわかってよかったよかった。:-D
_ でも良くわからないのが二つの違いです。
_ \n て一文字だから '' でもいいんじゃないのかなぁなどと思ったりしたんですが。
_ msmsg 関数見ないとわからないので何とも言えないか。
_ この世に生まれてはじめての雪。
_ 大喜び。大喜び。
_ 帰宅後も外を眺めて遊びたそうな顔。
_ 仕方がない。つきあってやるか。
_ リードを見せてやると喜んで尻尾をフリフリ。
_ 首輪につけてやると庭に飛び出していった。
_ 愛用のデジカメです。
_ コンパクトで 400 万画素。
_ 最近の機械があんまりよく分からないうちの祖母でも撮影可能な手軽さ。
_ 型落ちしたときに安く買ったんですが 400 万画素は今でも結構いいレベル。
_ Murasaki とかを使えば Linux でも画像ファイルに mount 可能なので便利。*1
_ ただ一つ不便なのは Amazon のレビューにもある通り遊び回る犬をちょっと撮りにくいという点でしょうか。
*1: DCF と Exif いう規格に準拠していると可能だそうです。