;; ;; 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)) ) )