ラベル 雑記 の投稿を表示しています。 すべての投稿を表示
ラベル 雑記 の投稿を表示しています。 すべての投稿を表示

2015年7月19日日曜日

ヘッドフォンを買う

えーと……なんでだっけ。なんで買おうと思ったんだっけ。
そうだ、思い出した。蛍光灯が壊れたからだ。
リビングが真っ暗になっちゃいましてね。
なくてもいいかなと思ったのですが暗いと以外と何もやる気出ない。条件反射のようにもう寝るしかねーかな見たいな気分になってしまって。
これはいかんなと思って照明を買いに行ったわけですが、11-2 畳くらいで使えるシーリングライトとなると、これが結構バカにならない値段がしてた記憶があるわけです。7万か8万か……安くてもそれくらい。
それまで使ってたシーリングライトも、あんまり高いので 10 畳くらいのやつを 5 万くらいで買って使っていたので微妙に暗かった。

あーもう急な出費がーと覚悟をキメてヨドバシ行ったらですね、ないんですよ。蛍光灯が。
全部 LED だけになってまして。
LED かー、あんまりいい印象ないなーとしぶしぶながら見てみると、これが安い。 3 万もしない。
12 畳用でさえ 2 万しないくらいからある。

パナの二色を調光できるタイプのやつを二万三千円くらいで買いました。

予想よりだいぶ安上がりについたな〜と帰ろうとしたとき、ふと足が止まったわけですよ。そこがヘッドフォン売り場でした。
怖いですね。
金色の四角の真ん中に HI-RES とか書いてあるんですよ。黒い文字で。
怖いめう。

買ってました。
そういやプレイヤーがハイレゾ対応になっていたのに対応のヘッドフォンもイヤフォンも持ってないから放置してたのですよ。

二万六千円くらい。
シーリングライトより高くついたじゃん。

MDR-1A というやつを買いました。
……これは! MDR-EX90 を越える自然さじゃないか!大人し過ぎてもっとドンシャリじゃないと物足りない感じもあります。イコライザーでカバーしましょう。
MDR-10R 系も試聴したのですけど、ドンシャリの派手さは好きだけど籠もりがひどくって 1A の魅力にはかないませんでした。安いけど、籠り方だけ聞くと 9000 円くらいのやつとあんまりかわらない感じするし、むしろ割高かも。

せっかくなのでハイレゾ用の音源も買いました。
mora であっという間にダウンロードできたので、「でかいと思ってたけど大したことねーな」と四曲くらい買ったところデータ転送しすぎ警告が来ました。
転送量見てみたら mora だけで 800MB 以上使ってました。一曲あたり 200MB 以上。
うわーでけぇ! 怖い!!

同じ曲のハイレゾ版と AAC 版を聞き比べてみるとまるで別の音源なのですけど、冷静に考えるとこれはそもそも別の音源であって、比較のしようがない。

もちろん AAC だって、いいんですよ。
ハイレゾ版はなんていうか、アレだ、スタジオで聞いてる音だ。ヘッドフォンから鳴ってる音じゃない。

ああ、これはいい買い物した。
ハイレゾ音源でなくとも、 MDR-EX90 くらいの仕事は余裕でこなしてくれます。
なんだかんだ文句いいつつ XBA-40 を気に入って使っていたわけですが、これが XBA-40と同じくらいの値段ですよ。
家用にもうひとつ欲しい。

2013年9月17日火曜日

夏の思い出

大型台風が今年初めて本州上陸した三連休、散々な思いをした人も多いと思います。お察し致します。
台風が去って東京には涼しい風が吹いており、ああ、秋が来るなぁと思って夏らしいことを何にも書いてないことに気付きました。

Joysound のキャンペーンで VAMPS のライブチケットが当たったので8月11日の VAMP Party13 に行って来ました。
ところが当選メールがきたのが 8/7 でして、既に直通バスの受付を締め切られ、帰省シーズンであるため直通バスも満員——車がない私はやむなく電車とバスを乗り継いで、遥々山中湖まで行って来ました。

余裕たっぷりに出たはずが中央線は踏切故障で2時間遅れ。
不案内な山中湖周辺のバスに憤慨しながらも、どうにか到着しました。
VAMPS PARTY 13 in 山中湖

写真は別に狙ったのではなくゲートを撮ろうとしてたら目の前でいきなり脱ぎ出しただけですよ?
ゲートの右側では記念撮影している人達がいたので外したのです。
奥に見えるのは物販やらクロークやらで、写真の右手より更に行ったところに特設ステージがありました。
開演ギリギリになったためとっくに皆入場済みでした。物販なんか観てる余裕もなく……。
他に写真撮ってる余裕もありませんでした。

抽選で当たった席なので一番遠いブロックでしたが全景やステージの背後までよく見えるという意味じゃ特等席。HELLO とか hyde ソロ曲を含まれてましたよ。
夕暮れの富士山と湖を背景に井上陽水の少年時代を歌ったところは、他にはない非常に贅沢な時間でした。
陽が落ちてからがライブ本番で、火もレーザーも使った演出、特に REPLAY の演出が超かっこよく曲の印象がガラリと変わりました。
AHEAD は最初だし、もうちょい音源通り歌ってほしかったw
激しく真っ赤な KYUKETSU, 暗いブルーの My First Last……。

それにしても hyde は VAMPS だとすげー喋りますね。
MC が多いのなんの。
日が暮れるまでの時間稼ぎだったんでしょうけど「もうちょい喋らせて」「お盆ってイベント?最近好きになったんだよ」と MC を続ける hyde なんか見た事ないよ。

LOVE ADDICT, ラストは盛大な花火。
隅田川花火大会はたいへん残念な結末になりましたからねw
このへんで、帰りの足が激しく心配な私たちは早めに撤収してステージの外から見てました。
いや、もう路線バスはなくなってたんですが……。
臨時バスが出るということで21時を過ぎていたのにも関わらず、無事富士山駅まで戻り、そこから東京まで戻れたのでした。
DSC00312 DSC00314
まぁーお世辞にもアクセス良くはなかったですねw
富士急行は今すぐバスのページを旅行者にも親切に書き換え、代表的な停留所だけじゃなくて全ての停留所が見られるようにしなさい!

コミケには今年も参加できず。
……というか、無理ですよ。死んじゃいます。

話は飛んで 9 月。
弟夫婦と姪っ子、妹夫婦とともにちょっと実家に帰る用事がありまして帰省しました。
台風が来る予定で新幹線とか心配していたのですが、電話してみたら何やらバーベキューやるんだとか。
その電話をしてる間にもう遠くの平原にゲリラ豪雨、更に生まれたての竜巻が……。
家に近づくとヒョウが振って来て突風が吹き付け雷鳴が轟いてまして「今すぐバーベキューセットを片付けて避難するんだ!」「大丈夫だよ〜晴れてるよ〜」「晴れてねえよ!」というようなやり取りをしていました。
この直後、竜巻ができかけて境界付近に真っ黒な土煙が
豪雨
「そぅれ!バーベキューだ!」の筈が「汚物は消毒だー!」コースに
まぁ、夜には雨も上がって雷も去り、少々風が強いものの花火ができるくらいには回復しました。

DSC00345 DSC00339
夏らしいでしょう?
でもこの花火の陰で、一匹の蛾がこの世を去りました。子供って怖い

そして残暑の厳しい 9/13。10年半お世話になった某ゲーム機の会社を退職致しましたことお知らせいたします。
関係者の皆様には大変お世話になりました。
お陰さまでよい仕事ができました。この場を借りてお礼申し上げます。
今後ともどうぞよろしく。

2013年6月30日日曜日

Xperia A

Xperia GX から A に替えました。

ぶっちゃけあんま変わってません。
画面サイズも同じだと替えたっていう満足度はかなり小さいですね。

GX との差分は

  • 電源ボタンが右脇腹に
  • CPUが Quad Core に
  • メモリ(RAM/NAND共に)が二倍に
  • OS が Android 4.1 に
  • Flash Plaeyr 11 がサポート対象外に
  • バッテリが 2300mAh に
  • 背面の反りがなくなってもっこりに
  • 内側カメラが 30万画素(謎のグレードダウン)に
  • NFC/IrDA対応に
  • 防水対応に
  • ワンセグ/nottv 対応に

なったことでしょうか。
内側カメラなんか使わないからどうでもいいですが、最後のなんかデグレですよね。
一番腹立つのは毎回電源ボタンが変わることですが……。
ずっと避けてきたワンセグ/nottv に対応してしまったことも個人的には汚点扱いです。
おかげさまで醜悪なアンテナが付きました。
このアンテナだけで失笑もんのバカバカしさなのに、屋内だと感度不足で使えないらしく、 nottv を即解約しようとしたら以下のような案内が出ました。

屋内で受信できないから解約するなら、こんなアンテナもありますよ!ってことらしい。
ええ、そうですか、そいつは素晴らしいアイデアですね。
こんなアイデア、思いつきませんでしたよ。ええ。
さ、解約解約。

CPU が Quad Coreになったって webkit なんてほぼシングルスレッドだし……と思ったけど結構パフォーマンス良くなってます。ベンチ取ってないけど気のせいじゃないと思います。
でもこの辺はソフトウェアの improvement が進んだ結果のような気がしますのう。
標準ブラウザは相変わらず片手で操作していると gracefully にタブを閉じてしまううんこゼスチャー対応ぶりで苛々しますね。

USB の充電が左側になったせいで、右から充電するように最適化されている僕の周辺は見直しが必要になりました。
防水のせいで穴という穴が塞がれており、充電もヘッドフォンの挿抜もとにかくやりにくいです。最悪。
付属のスタンドからも充電が可能で、これは端子が露出しているのでカバーを外す必要がありますが、スタンドは横向き専用です。
電源ボタンが右脇腹になったお陰で横向きでも電源くらいは入れられますが、こいつのホームは横向きで使えるようにはできてません。
でも心配ご無用!  USBの隣のまるだし端子に印加すると卓上ホルダーモードになるらしく、ホーム画面も横向きで使えるようになります。
……でもえらい使い難い。なんか横向きだとえらい狭く感じる。タブレット見慣れてるせいかなぁ。

大体今更赤外線ねぇ……。
スマホ出始めくらいの頃ならともかく、今日日赤外線ポートついてる携帯のほうが珍しくないですか?
もっとも、赤外線でコントロールできる機器は色々あるので、用途を決めなければ楽しい機能かも知れませんね。

まぁ、悪い事ばっかりじゃありません。
パフォーマンスはいいですし、バッテリの持ちも随分良くなりました。

それから Android 4.1 から Flash Player 11 のサポートが外れました。
Adobe の Archives から apk を拾ってきてインストールしたところ、ちゃんと動作しているように見えます。


ところで、今回の機種変更に伴ってデータの移行を Sony Bridge for Mac を使って行いました。
以前にも紹介した iTunes を意識したような Windows/Mac のデータ管理ソフトです。

前回は iTune Music Store で買った曲を移すくらいの目的でしたが、今回は大量のデータを扱います。
結論からいうと、他にまともな方法がなく、しょうがないから使うけど、大概の人はキレるだろうという感じです。

使う前にまず深呼吸し、以下の覚悟するポイントを押さえておきましょう。

  1. Android のギャラリーの仕組みは任意の画像ファイルを DB に登録している。従って、内蔵ストレージのあちこちに分散している可能性がある
  2. 端末のカメラで保存した写真だけは DCIM の規定に従う
  3. アプリの内蔵ディレクトリもアプリに見えている
  4. Sony Bridge for Mac ではフォトデータのインポートにあたり、 DCIM の規定か、それ以外の画像ファイルかを選ぶ 
  5. インポートした写真は一つのディレクトリにまとめられる。メタデータは付属しない
上記の条件から導かれる結論はなんでしょうか?

DCIM の写真か、Android 端末中の、それこそアプリの asset のようなバックアップ不要のゴミファイルまで全ての画像ファイルのどちらかしか選べないということであります。
最小セットと最大セットのどちらか選べという究極の選択……。

ちなみに僕の場合は写真だけを選ぶと 66 毎。それ以外の全てを選ぶとアプリのアセットがほとんどで、合計 10047 毎。
1万を超えると一覧を得るだけでとんでもない時間がかかります。
でもそれも仕方がないことです。 上記の条件1と3がある限りは……。

さらにインポートしてから新しい端末へ同期しても、ただコピーされるだけでその他のメタデータは全て失われます。
PC 側で管理することは諦めることになります。
Sony Bridge for Mac からは iPhoto のイベントやアルバムを扱うことができますが、同期するとただの画像ファイルが全部同じディレクトリにコピーされるだけで、何のメタデータも付属しません。
困ったもんだ。

まぁこれは Sony Bridge for Mac のせいじゃありません。
しかし、DB にクエリすればギャラリーに見えている画像はリスティングできるはずなのですが、誰でも DB をマウントできるわけではないし、 MTP という括りではできないだけなのかも知れません。

データ、特に画像の移行に関しては第三の方法を自分で探すほかありません。
思うにそういうことができるアプリがあるでしょうからアプリからギャラリーにアクセスして SD にでもエクスポートするのが一番いいと思います。


2013年6月29日土曜日

SONY サイバーショット RX-1R 発表

先週発表されていましたね。
RX-1R。

基本的にはコンデジサイズのボディにフルサイズセンサーと超解像のカールツァイスゾナー T* レンズを搭載した RX-1 と同様な仕様で、価格帯も同じ。ですので RX-1 はディスコンにならず並売されるそうです。
バッテリの持ちも同じように悪いみたいですね。
何が変わったのかというとローパスフィルタがなくなっただけです。

ローパスというのは別名ハイカットのほうが解りやすいかもしれませんが——入力信号の中からある閾値に対し高周波成分をカットし、低周波成分のみを通すようなフィルターのことです。カメラの場合は撮像素子の前に光学的なローパスフィルターが存在します。
ここでいう高周波とは急激な色の変化のことと思ってください。
ローパスフィルターといえばお解りのように、これは何らかの積分器です——信号処理においては。
光学的なローパスフィルターの構造は全く異なり、たとえば透明なフィルムに日焼け止めを塗ったようなもので、その利得や特性を計算することは同じようにいきませんが、大雑把には似たような働きをします。

なぜこのようなものが必要なのかというと、不快なエイリアッシングを抑えるためです。
デジタル画像では一般的に入力のアナログ信号をサンプリング周波数に従って量子化することでデジタル信号へ変換しますが、サンプリングの間隔を無限に小さくできない限りは急激な値の変化を正確に補足できません。
だからこれは、センサーの苦手な非常に高い周波数をカットすることで、モアレや偽色を抑えて見た目に奇麗な映像を得るためのものです。

(さっぱりわからん、という人にたとえで言うと、一日一回毎朝アサガオの観察日記を付けて成長度をグラフ化していたところ、前日つぼみだったのに今日はもう花が満開だった場合、これは昨日の何時につぼみが開き始めて何時に満開になったのか解らない状態であります。けれど、グラフに書いて線で繋げてしまうと、そのグラフだけを見た人にはまるで昨日の午前11時につぼみが開いて午後3時に満開になったとか、そういう誤解を与えてしまいます。ゆっくり変化する(=低周波)の場合はそれで大体問題ありませんが急激な変化(=高周波)の場合には、まったくアテになりません。
こうした不正確な値を繰り返し受け入れていると、各信号を総合したときにありもしない幻の値が出現することがあります。
同じアサガオを、微妙にずれた時刻で複数名が観測していたとしたら、それらのグラフをみた人にとってはアサガオの満開時刻がやけにたくさんあるという不可解な事態が起きてしまいます。
これをエイリアッシングと呼んでいます。写真でいうとモアレやエッジ付近での不可解な色の変化などの不快なノイズのことです。人間なら変なグラフを見ても丸める動機も知識もあるのですが、機械は値に特定の意味を見いだして推測を立てたりはしないので、これ以降は信号処理プログラムの出番となります)

しかしながら、高解像度センサーや高い分解能を誇るレンズを使ったデジタルイメージングにおいては、そのような急激な信号の変化こそが興味の対象です。
そこでローパスフィルターを取っちゃおうぜ、という人は結構いるわけです。
実際に取っちゃいましたみたいな玄人向け製品も Nikon D7100 や Sigma DP など去年くらいから結構出てきています。
センサーの解像度が高いということはそれだけサンプリングが正確に近づくので、技術的観点からすると正しい行動だと思います。

いわば、アサガオの成長が早過ぎて日記に書きづらいから日陰に置いて育たなくしようぜ、みたいな対策は科学的にはとんでもないことです。
でもカメラを使うのはアーティストですから、別にそれでいいんだとも言えます。

——というわけで——。

  • 解像度が充分上がったからローパスフィルターはもう要らないよ派
  • サンプリング間隔を無限に小さくできない以上、ローパスフィルターは必要だ/あったほうがいいよ派

という二つの意見があって、血で血を洗う抗争になることも特になく、まぁ両方あればいいんじゃねというのが主流な気がします。
単に好みの問題ってわけでないにしても結局、被写体によるんですよね。

ローパスフィルターのある RX-1 と、ない RX-1R が同時に市場に存在できるわけです。
いずれにせよ玄人向けのプロダクトだと思いますし、玄人向けと更にマニアックな玄人向けということになってしまっていやこれはアツいんじゃないでしょうか
いや、たぶん売れないと思うけど。ほんと、こんな冒険ができるなら DI ってやけに健全な市場だなぁって書いててそれはないって自分で思うけど。
レンズの供給能力はかなり小さいし、作りきりでいいやということなのかも。そうなら逃すと手に入らない系ですかね。
どうぞ好きなほうを選んでください。



アサガオの観察日記かー懐かしいなぁ、と思った人にはこちらも。

2013年6月3日月曜日

テラリア

フィラリア、マラリア……。カフェテリア、インテリア、エクステリア……テラリア。

そう、テラリア。
最近 PS3 版が出たようで、ストアランキングで常時上位にいたのでずっと気になってはいたのです。
 
マインクラフトみたいなゲームと言われていますが、僕は生憎とマインクラフトの知識を持ち合わせてないので比較できません。
マインクラフトっていうと……土や鉱物を採集して家を作って火事で喪失するゲームとか10進デコーダを備えた16ビット半加算器を作ったりするゲームという認識です。

それの2D版ですかね。
16ビット半加算器を作れるかどうかはわかりませんが、家は作れます。

起動すると3300円のゲームとは思えないカジュアルなメニューが表示され、オートセーブが走ってる間音が切れまくるという金取ってるゲームとは思えないカジュアルなプログラミングスキルで大きな不安を感じます。
クソがぁ〜。これ書いた奴出てこい!

まぁゲームが始まったらなかなかイイですよ。
素材集めて家を作るのは楽しい。夜になると強力な敵が襲ってくるので、セーフハウスは必要です。

それにしても……PS3版なのはまぁいいんですが、スクリーンショットも撮れずリモートプレイでは起動せず……画面イメージもなしでレビューなんてモチベーション上がらねえ!
公式フォームを見てもみんなカメラでテレビ画面を撮ってます。

そんなこんなでふらふらしていたらトレイラーがありました。
多くを語るよりまずトレイラー観た方がずっと伝わるでしょう。
どうぞご覧ください。


——え?なにこれ?
ジェットパックみたいなの背負って飛んでるし、ミサイルみたいなの撃ってるし、ドラゴンみたいな敵出て来るし……俺こんなゲーム知らない……。
俺の知ってるテラリアと違う……。

俺の知ってるテラリアってもっとこう——

そうそう、こういう牧歌的なやつ。だいたい合ってる。
ウサギとかスライムをちくちく攻撃したりして……


「帰れるかなぁ?」なんて思いながら穴掘って地底をおっかなびっくり探検してね——。
知らねええええ!こんな魔界村知らねえええ!
何をどうやったらアレがこんな激しいアクションゲームになるんだよ!
はいはい、こうですよ。

ちょっと偉そうな武器持ってますが、基本はこうですよ。マリオですよ。自由なマリオですよ。
夜になるとちょっと強い敵が出て来たりするわけですが——
だからアレがどうしてこうなるんだよ!
これ絶対使っちゃいけない技術とかだろ!


ということでレビューはやめておきましょう。
僕も始めたばっかりなんで TIPS も特になく……そうそう、いきなりゲームを始めちゃったせっかちな諸君の為に、チュートリアルで教えてくれる「これは気付かないだろ」というようなところを書いておきましょう。

フリーカーソルモード

通常、何かを設置する際に右アナコンでカーソルを出しますが、思うようにコントロールするのは非常に難しいです。
というのもデフォルトのカーソルは自キャラをピボットとした、アナコンのダイレクトマッピング方式です。つまりカーソルは自キャラと繋がれたように移動し、アナコンを離すとセンターに戻ってしまいます。
精密(?)な作業には向かず、木の足場の設置、家の壁、屋根……、ああ煩わしい。

そんなときは R3 (右アナコン押し込み)でフリーカーソルモードにしましょう。
足場の設置やら家の建設やらがやり易くなります。

家は木材や石ブロックを積み上げて作ります。
壁が縦に6ブロック、屋根が横に11ブロックぶんの大きさがないと家として認識されません。
さらに家の奥に壁が必要です。
おおっと、これは2Dアクションゲームでしたよね。奥というのは背景(にあたるレイヤー)の壁面のことです。
壁と屋根は枠ですので、塗り絵的に背景に壁を設置しましょう。フリーカーソルモード必須です。

さらに、家には木の扉とたいまつなどの照明、椅子が必要です。
扉は縦に3ブロックぶんの高さだけ家の壁に穴を開けて設置します。
扉を作るには後述のワークベンチが必要ですので

家はあなたのセーフハウスとしてだけでなく、ワールドを訪れる NPC をつなぎ止めておくのに必要です。
たくさんの NPC を住まわせるのに、たくさんの家が必要になるでしょう。

ワークベンチ

ワークベンチを作るとその他のアイテムが作れるようになります。
扉、椅子、テーブル、弓矢など……。
ワークベンチの近くでないと意味がないので、家の中に設置しましょう。

木の足場

このゲームは木の足場がなきゃ話になりません。
敵から逃げるのにも穴から抜けるのにも、自分の家を超えるのでさえ……。
いつも多めに持っておきましょう。

足場を降りるにはLアナコンで下を入れます。
不要になった足場を壊すにはハンマーが必要です。

斧で木を伐り、足場を設置、回収——。
それが一人前の型枠職人への道ってものです。

穴掘り

R1 連打してませんか?
僕はしてました。
恥ずかしい。

穴を掘るときは R1 押しっぱなしで OK です。
でも攻撃するときは普通に連打しましょう。死にます。


というわけでトレイラーと意識との乖離が凄まじいですが、面白いですよ、これ。

2013年6月2日日曜日

シュタインズゲート劇場版観てきた

ゲームを買ったら前売り券貰えたので観て来ました。
折り悪く映画の日だったらしくて1000円で鑑賞できるということでしたが前売り券は1500円相当。500円の損。
……まぁ仕方がないよね。
それはともかくパンフレット1200円は高くない?

劇場は新宿の角川シネプレックスでした。
初めて行ったところでして渋谷の会議室みたいな劇場よかいいかなーと思ったのですが、まぁ色々酷い映画館で、正直家で BD 観た方が奇麗だなぁと。

音響環境の歪みが酷い。始まる前のチャイムの音ですらまともに聞こえない。
スクリーンに陽炎や光点が映り込んでいらいらする。
映画泥棒のスーツが高級そうになっててむかついた。
ポップコーンまずい。
椅子はよかった。

内容はまぁ、細かいところは色々モニョるけど、王道的で面白い仕上げになっていたんじゃないですかね。
ちなみにアニメ版の最終回とはだいぶ違うところから始まります。OVA か何かの続きなのでしょうが——観に行く人は混乱しないように注意しましょう。シュタインズゲート世界線ではあるっぽいのですが、 やっぱり岡部と助手には浅からぬ縁があったっつうことなんでしょうかね。
アメリカで何があったのか全然知りませんけども、入国審査で "Not your Business"はダメだろ。よく渡米できたな。

ともあれ、紅莉栖も現れてラボにいつものダメ人間どもが揃います。
まゆりは生存、橋田至には彼女が出来、フェイリスは相変わらずニャンニャン、るか君はもう完全に男なことを忘れてるっぽい。Dメールなんか要らなかったんや。
そして岡部は他世界線の記憶の混乱に悩まされている。
その美しい日常のなか、岡部がこつ然と消えてしまう。詳しい状況は伏せますが、いいシーンであります。

以上までが事前に公開されているあらすじかな。

オカ******の居ない、でも居たような世界は大きな見所でしょう。
他は観ないでください。特に、紅莉栖のTシャツの中とかは必要以上にリアリティがあって驚きます。だらしない腹をこんなに表現する必要があったのか!?ねえ!?ねえってば!
あれを見た瞬間、
ハナガサイタヨ
って言われても全然違和感がない。

ということで誰得サービスシーンやらお話の続きは(もっとマシな)劇場などでご覧ください。
シリーズファンとしたらショッキングなシーンが一杯ありますよ。

2013年5月30日木曜日

Wine 64bit 版は mac で動かないのか

Wine 1.5 系の開発が進んでいます。
僕はそんなに wine 詳しくないんですけど、そういえば 64bit 版って mac 向けにビルドできるのかな?と思い立ちやってみました。

結論からいうと結構あちこち直す必要があります。
大変です。カジュアルにはとてもいきません。

まずもって Xcode に付属の gcc-4.2 では wine のビルドがとおりません。
どうも可変長引数のスタックレイアウトが Win64 と互換性がないみたいで、これをサポートしてくれる gcc-4.4.4 が必要です。 mac ports で入れる分には簡単でいいですが。

そのあとはインラインasmでやたらエラーが出るのでこれを直して回ります。
movq で GP レジスタから XMM レジスタへロードするところが軒並み通らないので、メモリからのロードに変更しました。
GP レジスタへのロードはそのまま残さねばなりません。ABI の都合上、必要そうだからです。
インラインアセンブリはどこでエラーになったのかパッと見解り難いのが難ですよねぇ。
temp が残っててくれればいいのですけども。

あとは signal ハンドラのレジスタロードです。
mac 版は 32bit レジスタ用の実装しかないので、 64bit レジスタを取るように修正して回ります。

これで大体通るのですが、大きな悩みどころが残ってしまいました。
スレッドエントリの初期化で fs.base を退避/取得するところがあります。
BSD/Linux は syscall やコールゲートを使ってユーザーランドから fs.base にアクセスできるのですが、mac にはこの syscall がありません。
fs.base には rdmsr/wrmsr 命令を使ってアクセスする必要がありますが、これは特権命令なので特権モードである必要があります。

まぁ、無理に特権レジスタにアクセスすることもないか……。
ネイティブスレッドの TLS にでも入れときゃいいじゃん、ということでそういう風に書き換えたのですが、 Wow 側が fs.base に特定の値を期待してたらまずいことになります。
Win32 の頃はカーネルが FS にスレッドコンテキストのディスクリプタを入れていることも期待しており、これなら i386_set_ldt API を使って mac でも実装が可能です。
でもまぁ、プロセッサが命令レベルで特権命令だっていってるんだから、 Wow でもユーザープログラムが勝手に何かを期待することもないだろう……と祈ることにします。

(ちなみに、ユーザーランドから fs.base をリードできる新しい命令があるのですが、まだ Sandybridge では実装されてないようです。それにしても AVX はあるけど積和演算(FMA3)は実装されてないとか、色々新しい命令に取り残されている気がする。案外使えないな Sandybridge)

というわけで色々禍根を残したのですが、問題はそれだけに留まらない。
危なそうな警告を眺めていると int とポインタのキャストが結構たくさんある。
Wine の各種 driver (デバイスドライバじゃなくてプラットフォームごとのモジュールを driver と呼んでるみたい)は、例えばクリップボードの列挙を行うときに 32bit 版であれば、 Mac のネイティブ API が返すポインタを識別子としてそのまま int へキャストして返しています。

Win64 API でもそうした列挙に使う識別子はぜんぶ int のまま。一方で Mac のプロセス(Mac に限らず大抵の OS はそうだと思うが)プロセスイメージの仮想アドレスマッピングを 32bit 以上のアドレスで使います。
 仮想アドレスの割当からコントロールして 32bit に収まるアドレス空間を使うことも不可能ではないでしょうが、 OS レベルのメモリ割当を細かく使うと非常に高くつくし手間がかかる。
かといってキャストでは死んでしまいます。
下位ビット払って上位は固定……なんてのじゃダメかな。 Mac の API がどんなアドレス返すのか期待するのはかなり無理があるかな。

なのであちこちに map を作って、自分で払い出した識別子とアドレスを変換するようにしなければならない……ですね。
ああ、面倒くさい。
仕事ならやるよやりますよ。
でもこんな時間に疲れて帰って来て、寝る前にやることとしてはちょっと気が重い。

というわけで時間あるときにまたリトライしようと思います。