(import scheme (chicken format) (chicken process-context) (chicken condition) (prefix sdl2 "sdl2:") (prefix sdl2-ttf "ttf:") (prefix sdl2-image "img:")) (define +color-depth+ 32) (define +screen-width+ 600) (define +screen-height+ 400) (define *fullscreen?* #f) (define +background-color+ (sdl2:make-color 0 0 0)) (define +software-mode?+ (member "-software" (command-line-arguments))) (define +vsync?+ (member "-vsync" (command-line-arguments))) (sdl2:set-main-ready!) (sdl2:init! '(video)) (ttf:init!) (img:init! '(png)) (on-exit sdl2:quit!) ;; Install a custom exception handler that will call quit! and then ;; call the original exception handler. This ensures that quit! will ;; be called even if an unhandled exception reaches the top level. (current-exception-handler (let ((original-handler (current-exception-handler))) (lambda (exception) (sdl2:quit!) (original-handler exception)))) (if (and +vsync?+ (not +software-mode?+)) ; vsync doesn't work with software rendering (sdl2:set-hint! 'render-vsync "1")) (define *window* (sdl2:create-window! "Magnetic Trek" 'centered 'centered +screen-width+ +screen-height+ (if *fullscreen?* '(fullscreen) '()))) (define *renderer* (sdl2:create-renderer! *window* -1 (if +software-mode?+ '(software) '(accelerated)))) (define *font* (ttf:open-font "DejaVuSans.ttf" 12)) (define *text-color* (sdl2:make-color 255 255 255)) (set! (sdl2:render-draw-color *renderer*) +background-color+) (sdl2:render-clear! *renderer*) (format #t "chicken env: ~a" (get-environment-variable "CHICKEN_ENV")) (format #t "hello world")