Files
jak-project/goal_src/jak1/compiler-setup.gc
T
2024-05-18 15:08:39 -04:00

43 lines
970 B
Common Lisp

#|@file
Compiler Setup for Jak 1
|#
;; load kernel type definitions.
;; these types/functions are provided by Jak 1's runtime.
(asm-file "goal_src/jak1/kernel-defs.gc")
;; load jak 1 project
(load-project "goal_src/jak1/game.gp")
;; jak 1 - specific library stuff.
(defmacro __get_jak1_full_game ()
*jak1-full-game*)
(defconstant *jak1-full-game* (__get_jak1_full_game))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; TYPE STUFF
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defmacro basic? (obj)
;; todo, make this more efficient
`(= 4 (logand (the integer ,obj) #b111)))
(defmacro pair? (obj)
;; todo, make this more efficient
;`(= 2 (logand (the integer ,obj) #b111))
`(< (shl (the-as int ,obj) 62) 0))
(defmacro not-pair? (obj)
`(>= (shl (the-as int ,obj) 62) 0))
(defmacro binteger? (obj)
`(zero? (logand (the integer ,obj) #b111)))
(defmacro rtype-of (obj)
`(cond
((binteger? ,obj) binteger)
((pair? ,obj) pair)
(else (-> (the basic ,obj) type))))