https://github.com/resttime/cl-liballegro.git
git clone 'https://github.com/resttime/cl-liballegro.git'
(ql:quickload :cl-liballegro)
Interface and bindings to the Allegro 5 game programming library
I hope for it to be as clean and neat as cl-opengl.
Check out how the bindings' source code is organized and compare it to the API reference.
libffi
al_*
becomes al:*
(al:rest secs)
is (al:rest-time secs)
because of symbol interference with #'cl:rest.Feel free to raise an issue to request a feature or for me to work on something
Currently missing haptic, shader, and the video streaming addon.
I won't work on the following sections because Common Lisp has more suitable implementations. (Might eventually do it for completeness though) Feel free to explain otherwise and I'll listen.
Why can't my program find the DLL in Windows?
There are path problems in Windows because the DLL files (which contain all the functions the CFFI calls upon)
doesn't have a default location unlike in Unix environments. When the library loads in Windows, it will look for
the DLL in the current folder of the FILE.LISP that evaluates (ql:quickload "cl-liballegro")
This means you must
have a copy of the DLL file in the directory of FILE.LISP, not in the cl-liballegro directory unless the FILE.LISP is
in there. SLIME however, likes to change the default search folder to the one Emacs is in when it starts.
SBCL Only - Open command prompt in the folder that contains both the DLL and game.lisp
> sbcl
> (load "game.lisp") ; File contains (ql:quickload "cl-liballegro")
Emacs + SLIME
C-x C-f /path/to/Desktop/file9.lisp
M-x slime
C-x C-f /path/to/Desktop/game/game.lisp ; File contains (ql:quickload "cl-liballegro")
C-c C-l ; Looks for the DLL at /path/to/Desktop/allegro.dll
C-x C-f /path/to/Desktop/file9.lisp
C-x C-f /path/to/Desktop/game/game.lisp ; File contains (ql:quickload "cl-liballegro")
M-x slime
C-c C-l ; Looks for the DLL at /path/to/Desktop/game/allegro.dll
M-x slime
C-x C-f /path/to/Desktop/game/game.lisp ; File contains (ql:quickload "cl-liballegro")
C-c C-l ; Looks for the DLL at /whatever/default/emacs/directory/allegro.dll