sbcl で asteroidsを動かしてみるメモ on mac

asteroidsというlispbuilder-sdlを使ったゲームがある。手元でうまく動いていなかったのだが今日試したら動いたのでメモ程度に。

環境

  • sbcl 1.2.5
  • quicklispはインストール済
  • macportsで libsdl_*-framework をインストール済
ライブラリの場所の指定

~/.sbclrc に

(ql:quickload :cffi)
#+darwin(pushnew #P"/opt/local/lib/" cffi:*foreign-library-directories* :test #'equal)
#+darwin(pushnew #P"/opt/local/Library/Frameworks/" cffi:*darwin-framework-directories* :test #'equal)

パスの最後の/は重要らしい

浮動小数点例外

どうもinvalidやらdivide-by-zero例外を投げるようなのでtrapしないようにしてしまう

(sb-ext::set-floating-point-modes :traps nil)

起動

(ql:quickload :asteroids) ;; なぜかこの時点で起動するけど
(asteroids:main) ;; こうしてももう一度起動出来る