aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGene Pasquet <dev@etenil.net>2025-06-20 21:09:37 +0100
committerGene Pasquet <dev@etenil.net>2025-06-20 21:09:37 +0100
commit4e88ef4a3fcf641afe7580d7810302e4ba44e740 (patch)
treea8fb478a6c869c4e7721e5a2597adabf2b68dc23
parent7cd219920f1bee8fb7ba24e83dd6a0c6a73e1512 (diff)
Started game conversion to Chicken Scheme
-rw-r--r--DejaVuSans.ttfbin0 -> 741536 bytes
-rw-r--r--src/game.scm51
2 files changed, 51 insertions, 0 deletions
diff --git a/DejaVuSans.ttf b/DejaVuSans.ttf
new file mode 100644
index 0000000..9d40c32
--- /dev/null
+++ b/DejaVuSans.ttf
Binary files differ
diff --git a/src/game.scm b/src/game.scm
new file mode 100644
index 0000000..ad4f800
--- /dev/null
+++ b/src/game.scm
@@ -0,0 +1,51 @@
+(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")
+