トップ 最新 追記

じじぃの日記、ツッコミ可

Twitter: @jijixi_org
Xbox Live: jijixi

初心者が書いた OCaml 入門
Spotlight tips サイト内リンク集
1970|01|02|
2003|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|11|
2011|05|
2012|01|

2010-05-01 [長年日記]

% [game] ケツイ日記、縦穴降りた

縦穴降りきった時点で残 1 ボム 3 という状況。 直前の 1UP を取り損ねてなければクリア圏内だったのに…… と思いつつ、いや今の状態でもボム使わずにボスまで行けばもしかしたら…… って色気出したらドッペルにやられて抱え落ち。

この時点でほぼ精神的には終了。 あとは、このままボムってもボスまで行くかボム残してクリアに賭けるか悩みながら進めてたら凡ミスでズガーン。 集中力が無くなったらあっという間に終わるわな〜

まあともあれ、とりあえず 1 周クリアは見えてきたのかなあ、という状況ではある。 エヴァッカニアは残 2 ボム 3 あればボムゲーでごり押しできるので、5 面まで 1 ミス以内で来れば十分圏内だろう。 ヴィノグラドフでボム 2 使ったとしても、3 ボス 4 ボスは一個ずつでほぼ安定してるので、道中の凡ミスさえ無くせば大丈夫。 いやまあ、それこそが難しいんだけども。


2010-05-02 [長年日記]

% [game] SplinterCell Conviction

おもしろい。あとマーク&アクションがカッコ良すぎる。

過去の話の面まで一気にやったが、そのあたりで酔ってリタイアした。 まあいつものようにチマチマ進めよう。

あとなぜかこれやってるとダークセクターを思い出すので久しぶりにやってみたり。 カバーポジションで完全に隠れてても速攻で見つかるという隠密行動的にはヒドいゲームだが、これもおもしろいのでわりとオススメ。 操作系がギアーズにそっくりだからついそのつもりでやっちゃうけど、それだと死にまくるんだよな。 カバー役に立たねー。

…… 本題より別のゲームの話題の方が長いってどうなの。


2010-05-03 [長年日記]

% [SML#][Mac] SML# 0.40 をビルド……できない

環境は Mac OS X 10.6.3。 こんなエラーが。

../../../../src/runtime/runtime-core/main/SystemDef.hh:40:2: error:
#error ---- SML# requires sizeof(void*) == sizeof(int or long) ----

えぇ〜? コンパイラフラグとかで回避できるかなあ……

% [SML#][Mac] なんか変だな……

飯食って一息ついて、ふと…… っていうかそんなことってあるのかよ?と思って config.log 見てみたけど、

configure:8907: checking size of long
configure:9212: gcc -o conftest -g -O -I/opt/local/include -L/opt/local/lib conftest.c -ldl -lgmp -l
m  >&5
configure:9216: $? = 0
configure:9222: ./conftest
configure:9226: $? = 0
configure:9252: result: 8
configure:9266: checking size of void*
configure:9571: gcc -o conftest -g -O -I/opt/local/include -L/opt/local/lib conftest.c -ldl -lgmp -l
m  >&5
configure:9575: $? = 0
configure:9581: ./conftest
configure:9585: $? = 0
configure:9611: result: 8

おい。 とってもきっちりイコールじゃねーか。 どうなってんの? と思って件のファイル (src/runtime/runtime-core/main/SystemDef.hh) を見る。

33 #if SIZEOF_VOIDP == SIZEOF_INT && SIZEOF_INT == 4
34 typedef signed int SInt32Value;
35 typedef unsigned int UInt32Value;
36 #elif SIZEOF_VOIDP == SIZEOF_LONG && SIZEOF_LONG == 4
37 typedef signed long SInt32Value;
38 typedef unsigned long UInt32Value;
39 #else
40 #error ---- SML# requires sizeof(void*) == sizeof(int or long) ----
41 #endif

…… これはつまり 64bit 環境は非対応ですってことか? 32bit でコンパイルすればうまくいくってことかねえ。

続く…… かも。

% [SML#][Mac] とりあえず詰んだ

試しに、

% CFLAGS='-m32' CPPFLAGS='-I/opt/local/include' LDFLAGS='-L/opt/local/lib' ./configure

こんな感じにしてみたら、

checking for __gmpz_init in -lgmp... no
configure: error: GMP library is not found.

こうなる。 まあ想定内。 MacPorts で何も考えずに入れたら 64bit になってるだろう。

/opt/local/lib/libgmp.dylib: Mach-O 64-bit dynamically linked shared library x86_64

じゃあ GMP を 32bit で作るか、と思って、gmp-5.0.1 のアーカイブを展開しビルドを試みる。

% CFLAGS='-m32' ./configure
(snip)
checking size of mp_limb_t... 4
configure: error: Oops, mp_limb_t is 32 bits, but the assembler code
in this configuration expects 64 bits.
You appear to have set $CFLAGS, perhaps you also need to tell GMP the
intended ABI, see "ABI and ISA" in the manual.

え〜 orz

CFLAGS を工夫すれば行けるのか、gmp の古いのを拾ってくれば行けるのか、わからんけどそろそろめんどくさくなってきたので一旦終了。 誰か偉い人が噛んで含むような Workaround をまとめてくれんものかな(疲


2010-05-04 [長年日記]

% [game] スプセル日記、ストーリーモードクリア

した。 最低難易度だけど。 最後のオチは良かったね。

敵からこっちが見えてるよ、もう少しで気付くよっていうのが視覚的にわかるのって重要だなと思った。 そういうシステムが無いと、いくらレベルデザインをがんばったってプレイヤーは理不尽さを感じると思うんだよね。 なんで見付かってるのかわかんねーって。

あと、敵が最後にこっちを視認した場所に残像が残るのがすごく良い。 要するにそれが出てるということは、敵はこっちがそこからどこに移動したか把握できてないってことだから、それを利用して裏をかくことができる。

スコープを手に入れてからは壁ごしに敵の位置を把握してマークすることができるようになるのも楽しい。 部屋の中に数人かたまってるときなんか、あらかじめマークしておいてショックグレネード投げ込んで突入、一人格闘で倒したら即アクション発動で一掃とかものすごく気持ち良い。

マーク&アクションはほんとかっこいいわ。そして役に立つ。 というか、最終面とかこれ無かったら無理ゲーでしょ。 拳銃の射程内なら確実に 4 人同時に葬れるってのは大きい。 特に最後の方はみんなマスクとジャケット装備だから普通に撃ってもなかなか倒せないし。

まあ、何はともあれおもしろかった。 まだ Optional Operation や COOP も残ってるし、P.E.C.チャレンジやら武器のアップグレードやらのやり込み要素もあるからしばらくはプレイするだろう。


2010-05-05 [長年日記]

% [SML#][Mac] 再挑戦

この前の続き。

GMP を 32bit でビルドする方法については、めんどくさいけどしかたないので configure を読んだ。 結局 CFLAGS の他に ABI という環境変数を設定しておけば良いらしい。

% ABI='32' CFLAGS='-m32' ./configure

こんな感じ。 要するにこうしないと C コンパイラ絡みとは別口の自動認識で 64bit に最適化されたアセンブリソースが選択されてしまうのでバッティングが起こるということらしい。 ともあれこれで make も通ってめでたしめでたし。

実際には /usr/local を汚すのもしのびないので適当なところに専用の場所を用意してインストールすることに。

% ABI='32' CFLAGS='-m32' ./configure --prefix=/opt/SMLSharp
% make
% make check
% make install

make check も問題なく終了したのでたぶんちゃんとビルドできてるんだと思う。

さて、それでは本題の SML# 側を……

% CFLAGS='-m32' CPPFLAGS='-I/opt/SMLSharp/include' LDFLAGS='-L/opt/SMLSharp/lib' ./configure --prefix=/opt/SMLSharp
% make
(snip)
["/opt/local/share/smlnj/bin/ml-ulex"  "ml.lex"]
[ml-ulex: parsing]
12.0: illegal character '\n'
12.1: illegal character ' '
(snip)
153.10: unknown escape sequence '\h'
unclosed string
(snip)
[ml.lex:6.20] Syntax error: try deleting =
(snip)
[ml.lex:22.25] Error: {ref} is undefined.
sources.cm:24.2-24.8 Error: tool "MLULex" failed: "/opt/local/share/smlnj/bin/ml-ulex"  "ml.lex"
(snip)

こんなエラーが大量に orz

実は前回やったときも同じの出てたんだけど、ランタイム作成のエラーが無くなれば直るんじゃないかと淡い期待を持ってたんだよね。 うーん、MacPorts で入れた SMLNJ が腐ってるのかなあ。 まあ、この辺に関してはとりあえず make が止まるわけではないし、処理しようとしているファイルは直接的な影響が少なそうなので (上記の ml.lex なんかは benchmark/benchmarks/lexgen/DATA/ml.lex だったりする) とりあえず気にしない。

問題は次のエラー。(適当に改行挿入済み)

g++ -g -O -DHAVE_CONFIG_H -DFLOAT_UNBOXING -DNDEBUG -DUSE_NAMESPACE
-I../../../.. -I/opt/SMLSharp/include -I../../../../src/configuration/.
-I../../../../src/runtime/runtime-core/main -I../../../../src/runtime/runtime-impl/main
-I../../../../src/primitives/runtime/main -I../../../../src/instructions/runtime/main -I.
-c -o CharPrimitives.o CharPrimitives.cc
In file included from ../../../../src/runtime/runtime-impl/main/PrimitiveSupport.hh:13,
                 from CharPrimitives.cc:2:
../../../../src/runtime/runtime-impl/main/Heap.hh:
In static member function
‘static bool jp_ac_jaist_iml_runtime::Heap::isAlignedBlockAddress(jp_ac_jaist_iml_runtime::Cell*)’:
../../../../src/runtime/runtime-impl/main/Heap.hh:640:
error: cast from ‘jp_ac_jaist_iml_runtime::Cell*’ to ‘jp_ac_jaist_iml::UInt32Value’ loses precision

精度落ちキャストでエラーっておかしいじゃないか。 "requires sizeof(void*) == sizeof(int or long)" の条件はクリアしたんじゃないのか? …… ってあれ?

g++ -g -O -DHAVE_CONFIG_H -DFLOAT_UNBOXING -DNDEBUG -DUSE_NAMESPACE
^^^^^^^^^

付いてるはずの '-m32' が無いな。 CFLAGS がどっか行っちゃってるのか。 また configure 読まないといけないの? めんどくせー orz

というところで、続く…… のかな、もうめんどくさくなってるんだけど。

% [SML#][Mac] 再挑戦続き

そうか、C++ のためには CFLAGS じゃなく CXXFLAGS か。そういやそうだな。

CFLAGS='-m32' CXXFLAGS='-m32' CPPFLAGS='-I/opt/SMLSharp/include' LDFLAGS='-L/opt/SMLSharp/lib' ./configure --prefix=/opt/SMLSharp
make

ようし今度こそ……

../../../../SMLFormat/smlformat Primitives.ppg
/opt/local/share/smlnj/bin/sml:
Fatal error -- unable to open heap image "/Users/jijixi/tmp/build/smlsharp-0.40/SMLSharp/./../SMLFormat/generator/main/smlformat"

やられた orz

まさか SML/NJ も 32bit 版作らなきゃなんないのか?

/opt/local/var/macports/software/smlnj/110.71_1+i386/opt/local/share/smlnj/bin/.run/run.x86-darwin: Mach-O executable i386

…… なんかすでに普通に 32bit 版っぽいんだけど。 64bit だったら Mach-O 64-bit executable x86_64 になるはずだし。 これはいよいよ MacPorts で入れた SML/NJ が腐ってる説濃厚。

しかたないから SML/NJ の公式ページ見てみると、バイナリ版があるじゃないか。 じゃあこれをインストールして試してみよう。

CFLAGS='-m32' CXXFLAGS='-m32' CPPFLAGS='-I/opt/SMLSharp/include' LDFLAGS='-L/opt/SMLSharp/lib' ./configure --prefix=/opt/SMLSharp --with-smlnj=/usr/local/smlnj
make

なんかさっきまでの ml-ulex のエラーが出なくなったぞ。 これは行ける!!

g++ -L/opt/SMLSharp/lib -o smlsharprun main.o ../../runtime-impl/main/libimlruntimeimpl.a
../../runtime-core/main/libimlruntimecore.a ../../../instructions/runtime/main/libimlinstructions.a
../../../primitives/runtime/main/libimlprimitives.a  \
        -lstdc++ -ldl -lgmp -lm  
ld: warning: in main.o,
file was built for i386 which is not the architecture being linked (x86_64)
ld: warning: in ../../runtime-impl/main/libimlruntimeimpl.a,
file was built for unsupported file format which is not the architecture being linked (x86_64)
ld: warning: in ../../runtime-core/main/libimlruntimecore.a,
file was built for unsupported file format which is not the architecture being linked (x86_64)
ld: warning: in ../../../instructions/runtime/main/libimlinstructions.a,
file was built for unsupported file format which is not the architecture being linked (x86_64)
ld: warning: in ../../../primitives/runtime/main/libimlprimitives.a,
file was built for unsupported file format which is not the architecture being linked (x86_64)
ld: warning: in /opt/SMLSharp/lib/libgmp.dylib,
file was built for i386 which is not the architecture being linked (x86_64)
Undefined symbols:
  "_main", referenced from:
      start in crt1.10.6.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

ぐへ〜 orz

(おそらく) 完結編に続く。

% [SML#][Mac] SML# 0.40 on Mac OS X 10.6 完結 (してない) 編

あ〜(弱

% make distclean
% CFLAGS='-m32' CXXFLAGS='-m32 -O' CPPFLAGS='-I/opt/SMLSharp/include' LDFLAGS='-m32 -L/opt/SMLSharp/lib' \
  ./configure --prefix=/opt/SMLSharp --with-smlnj=/usr/local/smlnj
% make
(snip)
echo ';' | ../../src/compiler/smlsharp_build --prelude=./yaprelude.sml
--xtarget=x86-darwin --make-compiled-prelude --output=ntprelude.o --stdin
--xswitchTrace=yes --xtracePrelude=yes --xtraceFileLoad=yes
set control option: target = x86-darwin
set control option: switchTrace = yes
set control option: tracePrelude = yes
set control option: traceFileLoad = yes
libpath: /opt/SMLSharp/lib/smlsharp
libpath: .
source: /Users/jijixi/tmp/build/smlsharp-0.40/SMLSharp/src/lib/yaprelude.sml
source: /Users/jijixi/tmp/build/smlsharp-0.40/SMLSharp/src/lib/yaruntime.sml
gcc  -c /var/tmp/tmp.0.N5wFKy.s -o /var/tmp/tmp.0.N5wFKy.o
/var/tmp/tmp.0.N5wFKy.s:5:suffix or operands invalid for `push'
/var/tmp/tmp.0.N5wFKy.s:6:suffix or operands invalid for `push'
/var/tmp/tmp.0.N5wFKy.s:7:suffix or operands invalid for `push'
(以下同様のエラーが大量に)

おーい、CFLAGS はどこいったよ orz

というわけで、もう疲れました。 ここの gcc コマンドはどこで何に仕込まれてるのか調べたりとかもうしんどい。 今日はこれで終了。 また気が向いたらやる。 ほんと疲れた。精神的に。

% [SML#][Mac] 泣きのもう一回 (真完結編)

なんかよく見たら How to build SML# なんつーページがあるじゃない。 最初に気付いてれば GMP の件で悩むこともなかった orz

ともあれ、このページを参考にもう一度チャレンジ。

% ./configure CC='gcc -m32' CXX='g++ -m32' LD='ld -arch i386' \
  CPPFLAGS='-I/opt/SMLSharp/include' LDFLAGS='-L/opt/SMLSharp/lib' \
  --enable-native=x86-darwin --with-smlnj=/usr/local/smlnj --prefix=/opt/SMLSharp
% make
(snip)
gcc -m32  -c /var/tmp/tmp.347.3uFigB.s -o /var/tmp/tmp.347.3uFigB.o
(snip)

おー、ちゃんとうまくいってる。そうか CFLAGS じゃなく CC に -m32 付ければ良かったのか。 わからんてw

ともあれ make install してパス通して起動してみる。

% smlsharp
SML# 0.40 (2010-04-30 22:11:29 --)
# 

ようやくここまで辿り着いた。めでたい。 しかしもう色々試す気力が無い。 ということでいじるのはまた今度。


2010-05-15 [長年日記]

% [game] ケツイ日記、スランプ中

スランプというか、あんまりプレイできてないから上達もしないというか、むしろ下手になる一方というか。 ゲーム自体はそれなりにやってるんだけど、シューティングは集中力が必要なのでこのところの余暇まで集中力を持ち越せてない状況だとほとんどプレイできないし、しても大した結果が出ない。 で、結局だらだらやれるゲームだけやってすごしてしまい、どんどん下手になる。

週末に一気にやって終わらせるってタイプのゲームじゃないからツライねえ。


2010-05-29 [長年日記]

% [game] Alan Wake

サイレントヒルのまともな次回作はほぼ望めない状況の中、その系譜を継いでくれるんじゃないかとちょっと思ってる作品。 冒頭でスティーブンキングの言葉を引用してる辺り、ホラーのあるべき姿を理解して作ってくれてるのを期待せざるを得ない。 謎は謎のままであるからこそ恐ろしい。

まだ始めたばかりだが、最初のエピソードが悪夢というのはまあホラー的にはお約束か。 ストーリーが進むにつれて悪夢と現実の境界がわからなくなっていくっていうタイプなんだろう。

光と闇の対比がテーマとしてあるらしく、映像のコントラストが強すぎて目に痛いのがちょっとツライ。 それはともかく、いきなり結構怖かったし楽しめそうな気がする。

% [game] Alan Wake 日記、EP2 途中

やばい、予想以上におもしろい。 すでにもう何が現実で何が虚構なのか区別がつかない。

主人公の設定のせいかダークハーフが連想されるなあ。 他にもキング作品へのオマージュが端々に感じられる気がするが、わしがその辺読んだのって 10 年以上前だから記憶が定かじゃなくて具体的なところは何とも言えない。

なんかこのまま一気に最後までやりたくなる勢いだけど、そろそろ酔ってきたので EP2 終わらせたらやめよう。


トップ 最新 追記

日記ってのは本来、自分で読み返すためにあるもんだよなあ……
もしくは有名人になったら死後に本になったりとかか?

RSS はこちら

jijixi at azito.com