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

2018年9月19日水曜日

DOSBox-X 0.82.9 (2018-09-01 14:00) が OS X (Mountain Lion) でビルドできた話

以前に DOSBox-X 0.82.7 でビルドできたという記事を書いたが、今回の 0.82.9 版についても、SDL版とSDL2版の両方について事情はまったく変わらないようだ。ソースコードとバイナリのリリースはこのページで行わていれる。動作については今後見て行く予定。そもそも CHANGELOG のほとんどは読んでも意味がわからないのであるが、PC-98 エミュレーションについての改善は今回少しある様である。

まあしかしここで日本語が母語のプログラマが協力できたらいいですのにね。現在のところPCjrについてのエミュレーションが進んでいる様子らしいので、PCjrに日本語化を行ったIBM PC/JXについても何がしかできるのかもしれん。まあ俺は一切のドキュメンテーションを持ってないので無理ですが。

馬鹿にするわけではないが日本語の母語の人でSDL2版がビルドできませんなどとIssueを出している人がいてな。こういうのは聞くのがえらいのかもしれんけど、さすがに自分でなんとかできる(べき)範囲だろとちょっと思ったりもした(すいません器が小さい人間なもので)。まあしかし俺も同じところで詰まったときに恥ずかしがらずIssue を投げたらよかったのかもしれん。

質問に答えることで製造物責任をしっかり果たす開発者の人はえらいです。俺もかくありたい。以下のスクリーンショットは動作したところの図ですが、あのフリーソフトの名作であるFD(出射厚氏作)はまだ十全には動かない様子。

2018年6月4日月曜日

DOSBox-X 0.82.7 (2018-06-01 13:05) が OS X (Mountain Lion) でビルドできた話

今回こそが正式版の 0.82.7 だそうで、リリースはこちら。やったことは以前のエントリと完全に同じだけどもそれをまとめておく。

渡さないといけない環境変数は自分の場合これだけなので、これをあらかじめ build-macosxbuild-macosx-sdl2 に書いておく(必要があるかはともかく):
export CC=clang-mp-3.7
export CXX=clang++-mp-3.7
export CPPFLAGS='-I/opt/local/include -stdlib=libc++'
export LIBS='-stdlib=libc++' # SDL1.x の場合
export LIBS='-stdlib=libc++ -framework CoreFoundation -framework CoreServices' # SDL2.x の場合
./configureに渡すオプションも同様に書き足しておく。XQuartzのインストールされた場所なので(当然)人によって違う。要らんかも:
--x-includes=/opt/X11/include --x-libraries=/opt/X11/lib
以下の内容のパッチdrive_local-OSXMountainLion.patchを、解凍したソースコードのルートに置く:
--- src/dos/drive_local.cpp 2018-05-03 23:47:07.000000000 +0900
+++ src/dos/drive_local.cpp 2018-05-09 01:18:51.000000000 +0900
@@ -31,6 +31,9 @@
 #include"inout.h"
 #ifndef WIN32
 #include<utime.h>
+# if defined(__APPLE__) && defined(__MACH__)
+# include<sys/syslimits.h>
+# endif
 #else
 #include<sys/utime.h>
 #include<sys/locking.h>
パッチを当てる:
$ patch -b -p0 < drive_local-OSXMountainLion.patch
最後にビルドする:
  1. SDL 1.x: $ ./build-macosx
  2. SDL 2.x: $ ./build-macosx-sdl2
で終わり。

2018年5月21日月曜日

DOSBox-X BETA (2018-5-18, 0.82.7) 版 は OS X 上で SDL2 に対してもビルドできた話

リリースはこちら。バージョンの命名規則がよくわからんのですが、内部的には v0.82.7 と表示されるもののリリースにはただの BETA 版としか書いてない。そして最新版は依然として v0.82.6 (2018-05-03) のままなので、この次の正式版はまだ出てなくて今回ビルドするのはあくまでプレリリースという位置付けらしい。

OS X Mountain Lion までの Xcode そなえつけの gcc すなわち clang (./configureCCCXX の指定なし) では libc++ を明示的に選択してもだめでした (もしかしたらできるのかもしれんが)。すくなくとも clang-mp-3.7clang++-mp-3.7 より新しいものを MacPorts 等で整備する必要があるのは前回までと同様で、SDL1 版のビルドについても当てるパッチや ./configureこれまでと同様

このベータ版から SDL2 でメニューが整備されたので SDL2 でのビルドがだいぶ意味あるようになったのが特筆すべき点、俺も SDL2 でビルドするのはこれが初回でした。当てるパッチは SDL1 の時と同じだけども、 SDL2 を用いてのビルドに限り、本体側で deprecated な関数を使用しているためか CoreServices と CoreFoundation の framework が指定されないために、リンク時に参照先のシンボルがないとして止まるのでこれを手動で指定してやる必要がある。これは SDL2 でビルドするときだけの話。

SDL 1.x:
$ CC=clang-mp-3.7 CXX=clang++-mp-3.7 CPPFLAGS='-I/opt/local/include -stdlib=libc++' LIBS='-stdlib=libc++' ./configure --x-includes=/opt/X11/include --x-libraries=/opt/X11/lib --prefix=$HOME --with-sdl-prefix=/usr/local/src/dosbox-x-dosbox-x-beta-201805181700/vs2015/sdl/linux-host/lib
SDL 2.x:
$ CC=clang-mp-5.0 CXX=clang++-mp-5.0 CPPFLAGS='-I/opt/local/include -stdlib=libc++' LIBS='-stdlib=libc++ -framework CoreFoundation -framework CoreServices' ./configure --x-includes=/opt/X11/include --x-libraries=/opt/X11/lib --prefix=$HOME --enable-sdl2
ただし SDL2 で利用できるメニューは Mountain Lion 上では挙動が不安定なので今後充実されるだろうと期待する。また、SDL2のメニューはOpenGLでは利用できず OS X では 'output=surface' の一択になる。CHANGELOG にある、 SDL2 のメニューが 'output=opengl' でも Linux 上で利用できるようになったというのはこれはほんとにLinux だけの話らしい。なのでドットのギザギザが見えるフルスクリーンを愛する俺としては SDL2 版は現状選択肢たりえない。



Fig. 1 - SDL2 版のメニュー (v0.82.7 BETA)


あと、 Eve Burst Error 等のシーズウェア作品(筆者が確認したのはほかに, 悦楽の学園, エイミーと呼ばないでっ, 禁断の血族, XENON, DESIRE)でゲームが始まってもファンクションキーの列が画面下に表示されたままになってるところが、ファンクションキー列の表示OFFコールについてのエミュレーションが整備されたようだ。したがって Compatibility の表を整備しなければならなくなった。ただし依然としてどれも全角文字だけがまったく表示されない様子なので playable には至らないだろう。




Fig. 2a - 画面下に現れるファンクションキー列 (v0.82.6)
Fig. 2b - v0.82.7 BETA版では解消された
ちなみに、xnp2, np2sdl2の最新版がこの画面 (Fig. 2b) に至ることはない。なんとかうまくいってほしいのですが。