# HG changeset patch # User Steve Losh # Date 1482463121 18000 # Node ID 2b9d7edf91822f29f729eef75386da1dbda305e9 # Parent 4a305535df61f8828ff4f650bfac7e8be69dc8dc Add build instructions and clean up a bit diff -r 4a305535df61 -r 2b9d7edf9182 .hgignore --- a/.hgignore Wed Dec 21 15:29:11 2016 -0500 +++ b/.hgignore Thu Dec 22 22:18:41 2016 -0500 @@ -3,4 +3,4 @@ scratch.lisp roms lisp.prof -plot.png +*.png diff -r 4a305535df61 -r 2b9d7edf9182 README.markdown --- a/README.markdown Wed Dec 21 15:29:11 2016 -0500 +++ b/README.markdown Thu Dec 22 22:18:41 2016 -0500 @@ -2,6 +2,29 @@ * **License:** MIT/X11 +Building +-------- + +To build this project you'll need to do a few things. + +First, install [SBCL][]. You can use your package manager (homebrew, apt, +whatever), or use [Roswell][], or just get some binaries. This project uses +a few SBCL-specific things, so it won't work with other implementations. + +Next, install [Quicklisp][]. + +Finally you'll need to clone down this repo and [my utility library][losh] and +symlink them into Quicklisp's [local-projects][] directory. + +Once you've done all that you should be able to run `sbcl` and use +`(ql:quickload :cl-chip8)` to load the project and all of its dependencies. +Then use `(chip8::run "path/to/a/chip8.rom")` to start it up. + +[SBCL]: http://www.sbcl.org/ +[Roswell]: https://github.com/roswell/roswell +[Quicklisp]: https://www.quicklisp.org/beta/ +[losh]: https://github.com/sjl/cl-losh +[local-projects]: https://www.quicklisp.org/beta/faq.html#local-project References ---------- diff -r 4a305535df61 -r 2b9d7edf9182 src/emulator.lisp --- a/src/emulator.lisp Wed Dec 21 15:29:11 2016 -0500 +++ b/src/emulator.lisp Thu Dec 22 22:18:41 2016 -0500 @@ -329,9 +329,9 @@ ;;;; Sound -------------------------------------------------------------------- (defconstant +pi+ (coerce pi 'single-float)) (defconstant +tau+ (* 2 +pi+)) -(defconstant +1/4tau+ (* 1/4 tau)) -(defconstant +1/2tau+ (* 1/2 tau)) -(defconstant +3/4tau+ (* 3/4 tau)) +(defconstant +1/4tau+ (* 1/4 +tau+)) +(defconstant +1/2tau+ (* 1/2 +tau+)) +(defconstant +3/4tau+ (* 3/4 +tau+)) (defconstant +sample-rate+ 44100d0) @@ -359,15 +359,14 @@ (defun tri (angle) (let ((a (mod angle +tau+))) - (cond ((< a +1/4tau+) (map-range 0 +1/4tau+ - 0.0 1.0 - a)) - ((< a 3/4tau) (map-range +1/4tau+ +3/4tau+ - 1.0 -1.0 - a)) - (t (map-range +3/4tau+ +tau+ - -1.0 0.0 - a))))) + (if (< a +1/2tau+) + (map-range 0 +1/2tau+ + -1.0 1.0 + a) + (map-range +1/2tau+ +tau+ + 1.0 -1.0 + a)))) + (defun make-audio-buffer () diff -r 4a305535df61 -r 2b9d7edf9182 src/gui/screen.lisp --- a/src/gui/screen.lisp Wed Dec 21 15:29:11 2016 -0500 +++ b/src/gui/screen.lisp Thu Dec 22 22:18:41 2016 -0500 @@ -10,10 +10,6 @@ (defparameter *fps* 60) -;;;; Data --------------------------------------------------------------------- -(defstruct gui chip screen) - - ;;;; OpenGL ------------------------------------------------------------------- (defun initialize-texture (size) (let ((handle (gl:gen-texture)))