結局、製作者のYui氏のページで配布されているMac版のNeko Project IIでは(Windows版はサポートされているのに)Mac版ではサポートされていない機能や、Wineを通して起動した場合に損われる機能が同時に欲しければ、自分で
xnp2
をビルドするしかないという話になりそうなわけです。結論から言うと, Xnp2 (Version 0.86) は Moutain Lion (Mac OS X Version 10.8.5) でたぶんビルドできました。しかも難しくなかったのがよかった。その証拠がこちら:
ウィンドウの枠を見るとわかる話ですがXQuartzの上で動いています。また、このスクリーンショットからは見えないですが、マウスも占有モードON/OFFの切り替えができます。もちろんFM音源も遅れなく動きますし86音源にしてリズム音源のwavを置いておくとちゃんと鳴ります。フルスクリーンにもなります(これに関してはやや問題あり)。D88やHDIのディスクイメージも新規作成できるようです(こちらはまだ試してない)。やったね。おそらく問題はほとんど解決したのでは。
このビルドにあたっては、
xnp2
それ自体のビルドに必要だと書かれている gcc
, GTK+2とその他オプションで音を鳴らすためのSDLとSDL_mixerはぜんぶMacPortsで入れることですぐにできました。MacPortsすごいね。なお、コンパイルは簡単でしたが、できた実行ファイルが動かない問題はおそらくXQuartzの方にあったことがあとでわかります。現状だとMacPortsで提供されている SDL2_mixer (
libsdl2_mixer
)の最新版が 2.0.2 で、これは不具合があって音が鳴らないことがわかっているようです(「既知のバグ」参照)。SDL2とSDL1.2が両方ある環境では後者を選択することで簡単に回避できます(MacPortsを使って(1.2より新しくて)2.0.2より前の旧版を入れることも可能なはずですが、それよりはたぶんこちらが簡単)。 ./configure
の時点でSDL1.2を用いることを明示することでSDL_mixerもSDL1.2に応じた libsdl_mixer
が使われるようです。このために、オプション--enable-sdl2
はデフォルトでyesなので、これをdisableにします。ついでに80386以降のPC-9801用エミュレータ xnp21
もビルドするようにオプションを追加しました。これらは全部 ./configure --help
に書かれています。また, gccはXcodeについてきた方(?)のgccではだめだったので
MacPortsでいつか以前に入れたgcc5を用い、それを環境変数で指名しました。まとめると、やったことは以下のリストの通り:$ CC=gcc-mp-5 CXX=g++-mp-5 ./configure --build-all --disable-sdl2
$ make -j4
$ make install
-j4
で渡す整数については、CPUが4コアの場合は4コアプラス1として-j5
がコンパイル速度がもっともいいという話があるようですが、コア数と同数かプラス1のどちらがいいかはよくわかっていません。いずれにせよ、MacPorts (等)で環境の整備さえできれば簡単にビルドできるのでこれはこれでとてもうれしいことです。これで実行形式のファイル xnp2
と xnp21
が手に入ったわけですが、XQuartz(最新版は2.7.11)の色深度を256色に設定しておくと、起動するときに$ xnp2
No support depth.
$ defaults write org.macosforge.xquartz.X11 depth -int -1
$ defaults delete org.macosforge.xquartz.X11 depth
$ defaults write org.macosforge.xquartz.X11 depth -int 4
最後に、フルスクリーンにやや問題があるという話をしておきます。俺のMacBook Proは画面解像度が1280x800となぜかPC-98のたてよこ2倍で面積4倍という同じアスペクト比になっています(Retinaモデルでも同じ16:10ですが)。この画面がフルスクリーンで使えるとよかったのですが、実際にはXQuartzを名乗るメニューバーが邪魔をします。XQuartzのPreferencesでも「フルスクリーンモード」をONに、かつフルスクリーンモード時メニューバーの自動出現をONにするとXQuartzのメニューバーだけは自動で隠すようにはできますが、フルスクリーンモード時のxnp2のフルスクリーンは640x400をそのまま画面中央に置くだけでその周囲を黒で埋めるだけで、1280x800を隅まで使うわけではありません。XQuartzが非フルスクリーンモード時のxnp2のフルスクリーンはほぼ隅々まで引きのばされるのでやや満足なのですが、あと一息のところで。これはなんとかならんのでしょうか。この証拠を提示してこのエントリを終えます。
- XQuartzがフルスクリーンモード, かつ, xnp2がフルスクリーン。XQuartzのメニューバーは自動で隠す設定にしたら、このスクリーンショットでは実際xnp2のメニューバーだけが残った。PC-98正味のスクリーンぶんにはMac側全体で1280x800あるスクリーンのうちの640x400しか使われてない。残りの黒い部分にはPC-98のスクリーンをあと3枚並べることができます(理屈の上で)。
- XQuartzが非フルスクリーンモード, かつ, xnp2がフルスクリーン。XQuartzのメニューバーが邪魔。非フルスクリーンモードなのでメニューバーを自動で隠す設定にはできない。正味のPC-98スクリーンの上にメニューバーを重ねて描いているのではなくて、タテが"800 - メニューバーの高さ"までしか拡大していない様子。あとひといきというところだが、現時点で「フルスクリーン」と実質的に呼びうる選択肢はこれしかない。
0 件のコメント:
コメントを投稿