PowerMacとNanosaur2
Hackintoshの野望のおかげで、いろいろなことが勉強できている。Intel-macが消滅した今の状況と、その昔power-macが消滅したときとを比較していて思い出したのが、とある古いゲームである。これについて、新たな動きがあったことが今回わかったのだ。
PowerMacが全盛の頃、無料のゲームがOSX(今のmacOS)にいくつか付属していた。ヘリコプターをつかった「Chopper」というゲーム、そして恐竜の3Dゲーム「Nanosaur2」である。どちらも最終面をクリアして遊び尽くしたが、Intel-macにはどちらもバンドルされなかった。続編を期待していたので非常にがっかりした記憶がある。「Nanosaur2」というタイトルから明らかなように、このゲームには前編があるのは確実である。当時、期待して調べてみたら、それはもっともっと古いMac OS 9のゲームであったことがわかった。
そもそもOS 9の失敗こそが、一度は追い出した創業者のSteve JobsをAppleへ連れ戻すきっかけとなったわけであり、OS9といえば「失敗作」の代表のようなものである、また当時の私にはとても高価だったので手も足も出なかった。そんな事情があって、OS9のmacintoshはもっていなかった(いまでももってない)。だから、Nanosaurで遊ぶのは夢のまた夢という状況が続いていた。
ところが、今回Intel-macの消滅とPower-macの消滅を比較するために、いろいろ調べていたら、あのNanosaurがフリーウェアとなって復活しているという情報が入ってきたのである。しかも、作者本人がgithubでソースコードを公開し、コンパイルすればIntel-macで遊べるように改良されているという!
Nanosaur2もPowerPCからIntel CPUに改良されたソースコードが公開されているという。これはやってみない手はない。ということで、手始めにNanosaurのコンパイルに挑戦してみることにした。
Nanosaur for macOS
このゲームはPangea softwareのリリースであり、そのHPからNanosaurについての情報を得ることができる。 https://www.pangeasoft.net/nano/index.html
バイナリファイルもダウンロードできるが、今回はソースコードからのビルドが目的である。まず、Nanosaurの作者であるJorio氏のgithubページからソースコードをダウンドーロドする。githubの使い方もようやく慣れてきたこともあり、httpを介してzipを持ってくるのではなく、gitでファイル転送してみた。githubにあるbuildme.mdを読むと、
git clone --recurse-submodules https://github.com/jorio/Nanosaur cd Nanosaur python3 build.py
で全てやってくれるはずである。コンパイルの作業は「途中まで」順調であった。しかし、最後にエラーが出て止まってしまった。Xcode12+が必要だというのだ。
現在のXcodeの最新バージョンは15である。しかし、私が持っているマシンはYosemite->Mojaveなので、Xcode 11までしか動かない。一応、私もApple Developerに登録してあるので、古いバージョンをダウンロードすることは可能である。ところが、サイト内をうろついてみてもなかなかそれらしきダウンロードページを見つけることができなかい。仕方ないので、Xcode15をダウンロードしている最中に「中断ボタン」を押し、URLに含まれる15を12に変更してリロードしてみた。するとまんまとXcode12.xipがダウンロードできた。
具体的には、Apple developerのアカウントにログインした後に、最新のXcodeは
https://developer.apple.com/services-account/download?path=/Developer_Tools/Xcode_15.2/Xcode_15.2.xip
からダウンロードできるが、これを
https://developer.apple.com/services-account/download?path=/Developer_Tools/Xcode_12/Xcode_12.xip
とやるのである!
クリックすると展開が始まるが、Mojaveで開くと件の「進入禁止マーク」が出て動かせない。Catalinaマシンにコピーして展開しようと思ったが、よくよく確認するとCatalinaにはすでにXcode12がインストールしてあった(笑)。xipは展開にも時間がかかるので、上書きはやめて素直にプレインストールされているXcode12を利用することにした。
Nanosaurをソースコードからビルドする際には、SDL2というライブラリも必要になる。これはNanosaurのbuild.mdに説明があるので、その指示通りにダウンロードし、ソースコードの中にあるexternというフォルダーにコピーすれば良い。
Mojaveではコンパイルの部分に関しては成功していたので、Catalinaでも簡単にコンパイルは終わると思っていた。ところが思いもしないエラーがでた。cmakeがC/C++コンパイラーを見つけられない、というのである。
Mojaveではcmakeはキチンと動き、コンパイルは最終段階まで進んだ。最後のところでXcodeのバージョンが合わないから、という理由で失敗した。ところがCatalinaではそこに至る前にエラーが出てしまっている。一体全体なにが起きているのであろうか?
cmake?
cmakeというコマンドは初めて見た。調べてみるとC++のソースコードを扱う際の「便利ツール」といったところのようである。コードの開発者には必須のツールらしく、とくにmacOSのアプリを開発するときにはよく利用されるようだ。とはいえ、使ったことのない私にとっては、CとC++のコンパイラーが設定されてない、という状況はどうやって改善するのか、まったくの五里霧中である。
たとえば、Nanosaurのコンパイルで必要な次のコマンドを叩くとエラーが出てしまう。
$ cmake -G Xcode -S . -B build -- The C compiler identification is unknown -- The CXX compiler identification is unknown CMake Error at CmakeLists.txt:24 (project): No CMAKE_C_COMPILER could be found. CMake Error at CmakeLists.txt:24 (project): No CMAKE_CXX_COMPILER could be found. -- Configureing incomplete, errors occurred!
こんな感じである。
ググってみると、どうやらXcodeの設定が未完成なのが原因らしい。確かに、CatalinaではあまりXcodeはいじってない(MojaveではChromiumをソースコンパイルしたことがある)。この問題は、次のコマンドで解決できた。
$ sudo xcode-select --reset
詳しい意味はわからないが、私の今の目的はNanosaurのコンパイルである。アプリができればそれでいいのである。
こうして、Nanosaurを含むdmgファイルが生成され、見事にNanosaurがCatalinaで動くようになったのである。出来上がったバイナリはMojaveにコピーしてもちゃんと動く!
古いゲームが動いて楽しい、というのもあるが、このソースコードを分析すれば、macOSでゲームをどのようにプログラムすればよいかを学ぶための、良いお手本になる!少しずつ勉強していこう。cmakeの意味もいずれはわかるようになるだろう。
Nanosaur2のコンパイル
こちらも同じようにやればコンパイルできるはずであるが、現在gitのところでエラーが出てしまって止まっている。たぶん、ソースの提供部分にあるバグではないかと思うのだが、まだはっきりはわからない。git cloneでソースをダウンロードしているのだが、最後に「RPCが失敗した」といって死んでいる。
error: RPC failed; curl 92 HTTP/2 stream 0 was not closed cleanly: CANCEL (err 8) fatal: the remote end hung up unexpectedly fatal: early EOF ....
こんな具合である。通信エラーだろうか?