smellman's Broken Diary

クソみたいなもんです

macOSでDuke Nukem 3Dを動かしてみる

前回のQuakeに続いてDuke Nukem 3Dを動かしてみます。

まずは公式ドキュメントに沿ってDuke Nukem 3Dのファイルを '~/.eduke32' 以下に作成します。音楽のリッパーとしては cdparanoia を、 wav から ogg への変換を ffmpeg で行います。

mkdir ~/.eduke32
cp /Volumes/ATOMIC15/ATOMINST/DUKE3D.GRP ~/.eduke32
cp /Volumes/ATOMIC15/ATOMINST/DUKE.RTS ~/.eduke32
mkdir ~/.eduke32/music
cd 
cdparanoia -B -- "2-"
for i in `ls *.wav`; do; ffmpeg -i $i -vn -ac 2 -ar 44100 -ab 128k -acodec libvorbis -f ogg `basename $i .cdda.wav`.ogg; done
rm *.wav

ちなみに、ATOMIC EDITIONなのが原因なのかCDDAは一つしか無いのでforを使う必要はないかも。


まず、アプリのビルドをしますが、現在のアプリではEXC_BAD_ACCESSが発生するのでパッチを当てます*1

brew install sdl sdl2 libogg libvorbis flac libvpx luajit
git clone https://voidpoint.io/terminx/eduke32.git
cd eduke32
wget https://gist.githubusercontent.com/smellman/16ea32d274e3da998bebeacf6b52332c/raw/8c3639c7de44572a8579f39247d2fb99bca68a46/eduke32_error_position.diff
patch -p1 < eduke32_error_position.diff
cd platform
./osxbuild.sh --buildppc=0 --build86=0 --build64=1 --debug=0

これで "eduke32/package" に Eduke32.app が完成します。

次に起動についてですが、どうも '~/.eduke32' フォルダを参照してくれないのでとりあえずコマンドラインから起動します。

cd ~/.eduke32
/PATH_TO/eduke32/package/EDuke32.app/Contents/MacOS/eduke32

f:id:smellman:20200906152238p:plain

f:id:smellman:20200906152257p:plain

ところで、SwitchバージョンのDuke Nukem 3D買っていたんですよね...(忘れてた

*1:debugビルドをしてもstripが動いてしまうので、debugの際はGNUMakefileでstripしてるところを削除して、Common.makで無理やり-gオプションをつけてからlldbを実行するとデバッグできます