;;-*-Lisp-*-
(in-package goal)

;; definition of type draw-node
(deftype draw-node (drawable)
  ((child-count uint8     :offset   6)
   (flags       uint8     :offset   7)
   (child       drawable  :offset   8)
   (distance    float     :offset  12)
   )
  :method-count-assert 18
  :size-assert         #x20
  :flag-assert         #x1200000020
  )

;; definition for method 3 of type draw-node
(defmethod inspect draw-node ((obj draw-node))
  (format #t "[~8x] ~A~%" obj (-> obj type))
  (format #t "~Tid: ~D~%" (-> obj id))
  (format #t "~Tbsphere: ~`vector`P~%" (-> obj bsphere))
  (format #t "~Tchild-count: ~D~%" (-> obj child-count))
  (format #t "~Tflags: ~D~%" (-> obj flags))
  (format #t "~Tchild: #x~X~%" (-> obj child))
  (format #t "~Tdistance: #x~X~%" (-> obj distance))
  obj
  )

;; definition of type drawable-inline-array-node
(deftype drawable-inline-array-node (drawable-inline-array)
  ((data draw-node 1 :inline :offset-assert  32)
   (pad  uint32              :offset-assert  64)
   )
  :method-count-assert 18
  :size-assert         #x44
  :flag-assert         #x1200000044
  )

;; definition of type draw-node-dma
(deftype draw-node-dma (structure)
  ((banka draw-node 32 :inline :offset-assert   0)
   (bankb draw-node 32 :inline :offset-assert 1024)
   )
  :method-count-assert 9
  :size-assert         #x800
  :flag-assert         #x900000800
  )

;; definition for method 3 of type draw-node-dma
(defmethod inspect draw-node-dma ((obj draw-node-dma))
  (format #t "[~8x] ~A~%" obj 'draw-node-dma)
  (format #t "~Tbanka[32] @ #x~X~%" (-> obj banka))
  (format #t "~Tbankb[32] @ #x~X~%" (-> obj bankb))
  obj
  )

;; failed to figure out what this is:
0
