I have been experimenting with ways to do this on and off, but I finally got CL-SDL loaded into CLISP and without the UFFI patches that are on sourceforge.

It is the kind of thing that should not have been hard and, in the end, it really wasn't. It was just a matter of doing the research. I have learned more about Common Lisp packages, implementations, and FFIs than I would have expected on this little project.

The main thrust is that UFFI does not support CLISP, though CFFI does. Fortunately, CFFI includes a compatibility layer that allows it to use UFFI bindings. While I had read this on cliki.net, it took a great deal more googling to figure out how to use the darn thing. On the lispwannabe blog, the writer shows an asdf package for uffi that loads cffi's compatibility layer into asdf as uffi. This is important, because a great many other things expect to find uffi there. At this point, using cl-sdl's example1.lisp works when I used the following code:

(require 'asdf)
(asdf:operate 'asdf:load-op :uffi)
(asdf:operate 'asdf:load-op :sdl)

(load "example1")

This, however, does not solve the whole problem in interactive mode. Within cl-sdl, there are a number of places where slightly different code is written for slightly different implementations. This causes a problem as CLISP doesn't offer any of them in its *features* variable. One answer is to add clisp's feature to the lists in the bindings, but that takes a good deal of work. Instead, what I found is that if you just push :cmucl onto features, it works.

Where to go from here: get started on the rewrite of Latrunculi's graphics system, for one. Another would be to try and use this information to use CL-SDL from within ECL which seems, so far as I can tell, to be the CL implementation with the best Windows support.