Last active
August 29, 2015 14:01
-
-
Save PuercoPop/7c84753bf1dec2a5f8b5 to your computer and use it in GitHub Desktop.
Fuck lispbuilder's event-loop
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(in-package :famiclom) | |
(require 'sb-sprof) | |
(defun check-for-input () | |
(let ((event (sdl:new-event))) | |
(loop | |
;; Pops the event-queue and binds it to event, return 0 if no pending | |
;; events. | |
:for event-poll = (sdl-cffi::SDL-Poll-event event) | |
:for event-type = (sdl:event-type event) | |
:until (or (= 0 event-poll) | |
(eq :no-event event-type) | |
(eq :quit-event event-type)) | |
:do | |
(when (and (eq :key-down-event event-type) (eq :sdl-key-z (sdl::key-key event))) | |
(format t "You Pressed Z!~%"))) | |
(sdl:free-event event))) | |
(defun profile! (&optional (mode :time)) | |
(reset *nes*) | |
(load-rom "/home/puercopop/quicklisp/local-projects/famiclom/roms/smb.nes") | |
(sb-sprof:with-profiling (:sample-interval 0.001 | |
:alloc-interval 2 | |
:max-samples 1000 | |
:show-progress t | |
:report :graph | |
:mode :time | |
:reset t) | |
(sdl:with-init (sdl:sdl-init-video sdl:sdl-init-audio) | |
(sdl:window 256 240 :bpp 24 :sw t) | |
(sdl:enable-key-repeat 10 10) | |
(with-accessors ((cpu nes-cpu) | |
(ppu nes-ppu)) *nes* | |
(loop until (> (6502:cpu-cc cpu) (* 2 (expt 2 20))) | |
do (let ((c-step (step-cpu cpu (get-byte (6502:cpu-pc cpu)))) | |
(p-step (ppu-step ppu (6502:cpu-cc cpu)))) | |
(when (ppu-result-vblank p-step) | |
(6502:nmi cpu)) | |
(when (ppu-result-new-frame p-step) | |
(sdl:update-display))) | |
(check-for-input)))))) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(sdl:with-init (sdl:sdl-init-video) | |
(sdl:window 256 240 :bpp 24 :sw t) | |
(sdl:enable-key-repeat 10 10) | |
(loop | |
with start-time = (get-decoded-time) | |
for current-time = (get-decoded-time) | |
for event = (lispbuilder-sdl:new-event) | |
for event-poll = (sdl-cffi::SDL-Poll-Event event) | |
for event-type = (lispbuilder-sdl:event-type event) | |
until (< 5 (- current-time start-time)) | |
do | |
(unless (eq :NO-EVENT event-type) | |
(format t "~A~%" event-type )) | |
)) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(sdl:with-init (sdl:sdl-init-video) | |
(sdl:window 256 240 :bpp 24 :sw t) | |
(sdl:enable-key-repeat 10 10) | |
(let ((event (lispbuilder-sdl:new-event))) | |
(loop | |
with start-time = (get-decoded-time) | |
for current-time = (get-decoded-time) | |
for event-poll = (sdl-cffi::SDL-Poll-Event event) | |
for event-type = (lispbuilder-sdl:event-type event) | |
until (< 5 (- current-time start-time)) | |
do | |
(cond | |
((eq :key-down-event event-type) | |
(format t "Down: ~A~%" (lispbuilder-sdl::key-state event))) | |
((eq :key-up-event event-type) | |
(format t "UP: ~A~%" (lispbuilder-sdl::key-state event))))) | |
(lispbuilder-sdl:free-event event))) | |
;; UP: 0 | |
;; Down: 1 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(sdl:with-init (sdl:sdl-init-video) | |
(sdl:window 256 240 :bpp 24 :sw t) | |
(sdl:enable-key-repeat 10 10) | |
(let ((event (sdl:new-event))) | |
(loop | |
with start-time = (get-decoded-time) | |
for current-time = (get-decoded-time) | |
for event-poll = (sdl-cffi::SDL-Poll-Event event) | |
for event-type = (sdl:event-type event) | |
until (< 5 (- current-time start-time)) | |
do | |
(cond | |
((and (eq :key-down-event event-type) (eq :sdl-key-z (sdl::key-key event))) | |
(format t "Z: ~A~%" (sdl::key-state event))) | |
((eq :key-down-event event-type) | |
(format t "Down: ~A~%" (sdl::key-state event))) | |
((eq :key-up-event event-type) | |
(format t "UP: ~A~%" (sdl::key-state event))))) | |
(sdl:free-event event))) | |
;; Z: 1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment