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

;; name: ocean-h.gc
;; name in dgo: ocean-h
;; dgos: GAME

;; DECOMP BEGINS

(deftype ocean-corner (structure)
  ((bsphere       sphere  :inline)
   (start-corner  vector  :inline)
   (y-scales      vector  :inline)
   (alphas        vector  :inline)
   (colors        uint32  4)
   )
  )


(deftype ocean-wave-info (structure)
  ((frequency   float)
   (amplitude   float)
   (wave-speed  float)
   (angle       float)
   (kx          float)
   (ky          float)
   (w           float)
   (flags       int32)
   )
  )


(deftype ocean-vertex (structure)
  ((pos  vector  :inline)
   (stq  vector  :inline)
   (col  vector  :inline)
   )
  )


(deftype ocean-spheres (structure)
  ((spheres  sphere  36 :inline)
   )
  )


(deftype ocean-colors (structure)
  ((colors  rgba  2548)
   )
  )


(deftype ocean-colors-float (structure)
  ((colors  vector  2548 :inline)
   )
  )


(deftype ocean-mid-mask (structure)
  ((mask   uint8   8)
   (dword  uint64  :overlay-at (-> mask 0))
   )
  :pack-me
  )


(deftype ocean-mid-indices (basic)
  ((data  uint16  36)
   )
  )


(deftype ocean-mid-masks (basic)
  ((data  (inline-array ocean-mid-mask))
   )
  )


(deftype ocean-trans-mask (structure)
  ((mask  uint8  4)
   (word  int32  :overlay-at (-> mask 0))
   )
  :pack-me
  )


(deftype ocean-trans-index (structure)
  ((parent  int16)
   (child   int16)
   )
  :pack-me
  )


(deftype ocean-trans-indices (basic)
  ((data  ocean-trans-index  2304 :inline)
   )
  )


(deftype ocean-near-index (structure)
  ((data  uint16  16)
   )
  )


(deftype ocean-near-indices (basic)
  ((data  (inline-array ocean-near-index))
   )
  )


(deftype ocean-near-colors (structure)
  ((color0  vector  :inline)
   (color1  vector  :inline)
   (color2  vector  :inline)
   (color3  vector  :inline)
   )
  )


(deftype ocean-trans-strip (structure)
  ((verts  uint128  10)
   )
  )


(deftype ocean-trans-strip-array (structure)
  ((data  ocean-trans-strip  4 :inline)
   )
  )


(deftype ocean-wave-data (structure)
  ((data  uint8  1024)
   )
  )


(deftype ocean-wave-frames (structure)
  ((frame  ocean-wave-data  64 :inline)
   )
  )


(deftype ocean-texture-constants (structure)
  ((giftag     gs-gif-tag  :inline)
   (buffers    vector4w    :inline)
   (dests      vector4w    :inline)
   (start      vector      :inline)
   (offsets    vector      :inline)
   (constants  vector      :inline)
   (cam-nrm    vector      :inline)
   )
  )


(deftype ocean-mid-vertex (structure)
  ((stq  vector  :inline)
   (col  vector  :inline)
   (pos  vector  :inline)
   )
  )


(deftype ocean-mid-constants (structure)
  ((hmge-scale      vector        :inline)
   (inv-hmge-scale  vector        :inline)
   (hvdf-offset     vector        :inline)
   (fog             vector        :inline)
   (constants       vector        :inline)
   (constants2      vector        :inline)
   (drw-fan         gs-gif-tag    :inline)
   (env-fan         gs-gif-tag    :inline)
   (drw-adgif       gs-gif-tag    :inline)
   (drw-texture     adgif-shader  :inline)
   (drw-strip-0     gs-gif-tag    :inline)
   (drw-strip-1     gs-gif-tag    :inline)
   (env-adgif       gs-gif-tag    :inline)
   (env-texture     adgif-shader  :inline)
   (env-strip       gs-gif-tag    :inline)
   (env-color       vector        :inline)
   (index-table     vector4w      8 :inline)
   (pos0            vector        :inline)
   (pos1            vector        :inline)
   (pos2            vector        :inline)
   (pos3            vector        :inline)
   )
  )


(deftype ocean-mid-upload (structure)
  ((rot     matrix   :inline)
   (matrix  matrix   :inline)
   (colors  uint128  108)
   (masks   uint128  2)
   )
  )


(deftype ocean-mid-upload2 (structure)
  ((rot     matrix    :inline)
   (matrix  matrix    :inline)
   (count   vector4w  :inline)
   (tex0    vector    :inline)
   (tex1    vector    :inline)
   (tex2    vector    :inline)
   (tex3    vector    :inline)
   (clr0    vector    :inline)
   (clr1    vector    :inline)
   (clr2    vector    :inline)
   (clr3    vector    :inline)
   (verts   uint128   18)
   )
  )


(deftype ocean-mid-work (structure)
  ((env0     vector   :inline)
   (env1     vector   :inline)
   (env2     vector   :inline)
   (hmg0     vector   :inline)
   (hmg1     vector   :inline)
   (hmg2     vector   :inline)
   (indices  uint128  16)
   )
  )


(deftype ocean-near-constants (structure)
  ((hmge-scale      vector        :inline)
   (inv-hmge-scale  vector        :inline)
   (hvdf-offset     vector        :inline)
   (fog             vector        :inline)
   (constants       vector        :inline)
   (constants2      vector        :inline)
   (constants3      vector        :inline)
   (constants4      vector        :inline)
   (constants5      vector        :inline)
   (drw-fan         gs-gif-tag    :inline)
   (drw2-fan        gs-gif-tag    :inline)
   (env-fan         gs-gif-tag    :inline)
   (drw-adgif       gs-gif-tag    :inline)
   (drw-texture     adgif-shader  :inline)
   (drw-strip       gs-gif-tag    :inline)
   (env-adgif       gs-gif-tag    :inline)
   (env-texture     adgif-shader  :inline)
   (env-strip       gs-gif-tag    :inline)
   (env-color       vector        :inline)
   (drw2-adgif      gs-gif-tag    :inline)
   (drw2-tex0       qword         :inline)
   (drw2-frame      qword         :inline)
   (drw2-strip      gs-gif-tag    :inline)
   (drw3-adgif      gs-gif-tag    :inline)
   (drw3-frame      gs-adcmd      :inline)
   (index-table     vector4w      4 :inline)
   )
  )


(deftype ocean-near-upload (structure)
  ((rot           matrix             :inline)
   (matrix        matrix             :inline)
   (masks         uint128            2)
   (start-height  vector4w           :inline)
   (start-st      vector             :inline)
   (near-colors   ocean-near-colors  :inline)
   )
  )


(deftype ocean-near-vertex (structure)
  ((stq  vector  :inline)
   (clr  vector  :inline)
   (pos  vector  :inline)
   )
  )


(deftype ocean-near-work (structure)
  ((verts-ptr  vector   :inline)
   (indices    uint128  16)
   )
  )


(deftype ocean-height-array (structure)
  ((data  float  1024)
   )
  )


(deftype ocean-vert-array (structure)
  ((data  vector  2048 :inline)
   )
  )


(deftype ocean-map (structure)
  ((start-corner         vector  :inline)
   (far-color            vector  :inline)
   (ocean-colors         ocean-colors)
   (ocean-mid-indices    ocean-mid-indices)
   (ocean-trans-indices  ocean-trans-indices)
   (ocean-near-indices   ocean-near-indices)
   (ocean-mid-masks      ocean-mid-masks)
   )
  (:methods
    (set-height! (_type_ float) none)
    (get-base-height (_type_) float)
    )
  )


(deftype ocean (ocean-map)
  ((off                      symbol)
   (near-off                 symbol)
   (mid-off                  symbol)
   (far-on                   symbol)
   (all-on                   symbol)
   (ocean-facing             uint32)
   (heights                  ocean-height-array)
   (heights2                 ocean-height-array)
   (verts                    ocean-vert-array)
   (ocean-near-translucent?  symbol)
   (deltas                   vector            :inline)
   (map-min                  vector            :inline)
   (map-max                  vector            :inline)
   (interp                   vector            :inline)
   (corner-array             ocean-corner      25 :inline)
   (corner-count             int32)
   (temp-vecs                vector            4 :inline)
   (mid-mask-ptrs            pointer           36)
   (mid-camera-masks         uint64            36)
   (trans-mask-ptrs          pointer           64)
   (trans-camera-masks       ocean-trans-mask  16)
   (trans-temp-masks         uint32            16)
   (sprite-tmpl              dma-gif-packet    :inline)
   (sprite-tmpl2             dma-gif-packet    :inline)
   (sprite-tmpl3             dma-gif-packet    :inline)
   (adgif-tmpl               dma-gif-packet    :inline)
   (line-tmpl                dma-gif-packet    :inline)
   (sun-tmpl                 dma-gif-packet    :inline)
   (erase-tmpl               dma-gif-packet    :inline)
   (haze-tmpl                dma-gif-packet    :inline)
   (cloud-tmpl               dma-gif-packet    :inline)
   (clut-tmpl                dma-gif-packet    :inline)
   (cloud-lights             cloud-lights      :inline)
   (haze-lights              haze-lights       :inline)
   (constant                 vector            :inline)
   (sky-color                vector            :inline)
   (haze-verts               vector4w          32 :inline)
   (cloud-verts              vector4w          36 :inline)
   (cloud-nrms               vector            36 :inline)
   (cloud-col0               vector            36 :inline)
   (cloud-col1               vector            36 :inline)
   (cloud-st0                vector            36 :inline)
   (cloud-st1                vector            36 :inline)
   (color80808080            vector4w          :inline)
   (color80808040            vector4w          :inline)
   (color80808000            vector4w          :inline)
   (st0000                   vector            :inline)
   (st0505                   vector            :inline)
   (st1010                   vector            :inline)
   (uv00                     vector4w          :inline)
   (uv44                     vector4w          :inline)
   (uv88                     vector4w          :inline)
   (uv1010                   vector4w          :inline)
   (uv2020                   vector4w          :inline)
   (uv4040                   vector4w          :inline)
   (uv8080                   vector4w          :inline)
   (xy00                     vector4w          :inline)
   (xy88                     vector4w          :inline)
   (xy1010                   vector4w          :inline)
   (xy2020                   vector4w          :inline)
   (xy4040                   vector4w          :inline)
   (xy8080                   vector4w          :inline)
   (cloud-alpha              uint8             36)
   (near-mask-indices        uint16            16)
   (mid-minx                 uint8)
   (mid-maxx                 uint8)
   (mid-minz                 uint8)
   (mid-maxz                 uint8)
   (near-minx                uint8)
   (near-maxx                uint8)
   (near-minz                uint8)
   (near-maxz                uint8)
   (temp-minx                uint8)
   (temp-maxx                uint8)
   (temp-minz                uint8)
   (temp-maxz                uint8)
   (tex1                     gs-tex1)
   (tex1-near                gs-tex1)
   (corner00                 float)
   (corner01                 float)
   (corner10                 float)
   (corner11                 float)
   (frame-num                float)
   (frame-speed              float)
   (frame-num2               float)
   (frame-speed2             float)
   (cloud-interp             float             :overlay-at (-> constant data 3))
   (scales                   vector            :inline)
   (mask-hi                  vector4w          :inline)
   (mask-lo                  vector4w          :inline)
   (lights                   vu-lights         :inline)
   (uv-scroll-0              vector4w          :inline)
   (uv-scroll-1              vector4w          :inline)
   (st-scroll                vector2           :inline)
   (wait-to-vu0              uint32)
   )
  (:methods
    (get-height (_type_ vector symbol) float)
    (draw! (_type_) none)
    (update-map (_type_) none)
    (interp-wave (_type_ ocean-wave-info uint float) none)
    (ocean-method-15 (_type_ matrix matrix) none)
    (generate-verts (_type_ ocean-vert-array ocean-height-array) none)
    (add-colors! (_type_ vector ocean-vertex) none)
    (ocean-method-18 (_type_ (pointer ocean-colors) (pointer ocean-colors)) none)
    (init-buffer! (_type_ dma-buffer) none)
    (end-buffer! (_type_ dma-buffer) none)
    (set-corners! (_type_ float float) float)
    (ocean-near-add-call (_type_ dma-buffer int) none)
    (ocean-near-add-call-flush (_type_ dma-buffer int) none)
    (ocean-near-setup-constants (_type_ ocean-near-constants) none)
    (ocean-near-add-constants (_type_ dma-buffer) none)
    (ocean-near-add-heights (_type_ dma-buffer) none)
    (ocean-near-add-matrices (_type_ dma-buffer vector) none)
    (ocean-near-add-upload (_type_ dma-buffer uint uint) none)
    (draw-ocean-near (_type_ dma-buffer) none)
    (ocean-trans-camera-masks-bit? (_type_ uint uint) symbol)
    (ocean-trans-mask-ptrs-bit? (_type_ int int) symbol)
    (ocean-trans-mask-ptrs-set! (_type_ uint uint) symbol)
    (ocean-trans-add-upload-table (_type_ dma-buffer uint uint int int symbol) none)
    (ocean-trans-add-upload-strip (_type_ dma-buffer uint uint int int int) none)
    (ocean-transition-check (_type_ ocean-trans-mask int int vector) none)
    (ocean-make-trans-camera-masks (_type_ uint uint uint uint) none)
    (ocean-trans-add-upload (_type_ dma-buffer uint uint) none)
    (draw-ocean-transition-seams (_type_ dma-buffer) none)
    (ocean-trans-add-constants (_type_ dma-buffer) none)
    (draw-ocean-transition (_type_ dma-buffer) none)
    (ocean-mid-add-call (_type_ dma-buffer int) none)
    (ocean-mid-add-call-flush (_type_ dma-buffer uint) none)
    (ocean-matrix*! (_type_ matrix matrix matrix) matrix)
    (ocean-vector-matrix*! (_type_ vector vector matrix) vector)
    (ocean-mid-add-matrices (_type_ dma-buffer vector) none)
    (ocean-mid-check (_type_ pointer int int vector) symbol)
    (ocean-mid-setup-constants (_type_ ocean-mid-constants) none)
    (ocean-mid-add-constants (_type_ dma-buffer) none)
    (ocean-mid-camera-masks-bit? (_type_ uint uint) symbol)
    (ocean-mid-mask-ptrs-bit? (_type_ uint uint) symbol)
    (ocean-mid-camera-masks-set! (_type_ uint uint) symbol)
    (ocean-mid-add-upload (_type_ dma-buffer int int int int float) none)
    (ocean-mid-add-upload-table (_type_ dma-buffer uint uint (pointer float) int symbol) none)
    (ocean-mid-add-upload-top (_type_ dma-buffer uint uint) none)
    (ocean-mid-add-upload-middle (_type_ dma-buffer uint uint) none)
    (ocean-mid-add-upload-bottom (_type_ dma-buffer uint uint) none)
    (ocean-seams-add-constants (_type_ dma-buffer) none)
    (draw-ocean-mid-seams (_type_ dma-buffer) none)
    (draw-ocean-mid (_type_ dma-buffer) none)
    (ocean-method-60 (_type_ dma-buffer) none)
    (ocean-method-61 (_type_ dma-buffer) none)
    (ocean-method-62 (_type_ dma-buffer) none)
    (ocean-method-63 (_type_ dma-buffer) none)
    (ocean-method-64 (_type_ dma-buffer) none)
    (ocean-method-65 (_type_ dma-buffer) none)
    (ocean-method-66 (_type_ dma-buffer) none)
    (ocean-method-67 (_type_ dma-buffer) none)
    (render-ocean-far (_type_ dma-buffer int) none)
    (draw-ocean-far (_type_ dma-buffer) none)
    (ocean-texture-setup-constants (_type_ ocean-texture-constants) none)
    (ocean-texture-add-constants (_type_ dma-buffer) none)
    (ocean-texture-add-envmap (_type_ dma-buffer) none)
    (ocean-texture-add-verts (_type_ dma-buffer int) none)
    (ocean-texture-add-verts-last (_type_ dma-buffer int int) none)
    (ocean-texture-add-call-start (_type_ dma-buffer) none)
    (ocean-texture-add-call-rest (_type_ dma-buffer) none)
    (ocean-texture-add-call-done (_type_ dma-buffer) none)
    (draw-ocean-texture (_type_ dma-buffer int) none)
    (ocean-method-79 (_type_ (pointer rgba)) none)
    (ocean-method-80 (_type_ dma-buffer) none)
    (draw-envmap-debug (_type_ dma-buffer) none)
    (ocean-method-82 (_type_ dma-buffer float) int)
    (ocean-method-83 (_type_ dma-buffer sky-upload-data vector4w float) none)
    (ocean-method-84 (_type_ dma-buffer) none)
    (ocean-method-85 (_type_ vector vector vector vector) none)
    (ocean-method-86 (_type_ vector vector vector) none)
    (ocean-method-87 (_type_ dma-buffer) none)
    (ocean-method-88 (_type_ dma-buffer) none)
    (ocean-method-89 (_type_ dma-buffer) none)
    (rgba-to-vector! (_type_ vector (pointer int32)) none)
    (do-tex-scroll! (_type_) none)
    )
  )


(define *ocean-map* (the-as ocean-map #f))

(define *ocean* (new 'static 'ocean
                  :sprite-tmpl (new 'static 'dma-gif-packet
                    :dma-vif (new 'static 'dma-packet
                      :dma (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt))
                      :vif1 (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1)
                      )
                    :gif (new 'static 'array uint64 2 #x508b400000008001 #x53531)
                    )
                  :sprite-tmpl2 (new 'static 'dma-gif-packet
                    :dma-vif (new 'static 'dma-packet
                      :dma (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))
                      :vif1 (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)
                      )
                    :gif (new 'static 'array uint64 2 #x3023400000008001 #x551)
                    )
                  :sprite-tmpl3 (new 'static 'dma-gif-packet
                    :dma-vif (new 'static 'dma-packet
                      :dma (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt))
                      :vif1 (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1)
                      )
                    :gif (new 'static 'array uint64 2 #x50ab400000008001 #x53531)
                    )
                  :adgif-tmpl (new 'static 'dma-gif-packet
                    :dma-vif (new 'static 'dma-packet
                      :dma (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt))
                      :vif1 (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1)
                      )
                    :gif (new 'static 'array uint64 2 #x1000000000008005 #xe)
                    )
                  :line-tmpl (new 'static 'dma-gif-packet
                    :dma-vif (new 'static 'dma-packet
                      :dma (new 'static 'dma-tag :qwc #x141 :id (dma-tag-id cnt))
                      :vif1 (new 'static 'vif-tag :imm #x141 :cmd (vif-cmd direct) :msk #x1)
                      )
                    :gif (new 'static 'array uint64 2 #x5008c00000008040 #x52521)
                    )
                  :sun-tmpl (new 'static 'dma-gif-packet
                    :dma-vif (new 'static 'dma-packet
                      :dma (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt))
                      :vif1 (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1)
                      )
                    :gif (new 'static 'array uint64 2 #x502b400000008001 #x52521)
                    )
                  :erase-tmpl (new 'static 'dma-gif-packet
                    :dma-vif (new 'static 'dma-packet
                      :dma (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))
                      :vif1 (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)
                      )
                    :gif (new 'static 'array uint64 2 #x3003400000008001 #x551)
                    )
                  :haze-tmpl (new 'static 'dma-gif-packet
                    :dma-vif (new 'static 'dma-packet
                      :dma (new 'static 'dma-tag :qwc #x45 :id (dma-tag-id cnt))
                      :vif1 (new 'static 'vif-tag :imm #x45 :cmd (vif-cmd direct) :msk #x1)
                      )
                    :gif (new 'static 'array uint64 2 #x4026400000008011 #x4141)
                    )
                  :cloud-tmpl (new 'static 'dma-gif-packet
                    :dma-vif (new 'static 'dma-packet
                      :dma (new 'static 'dma-tag :qwc #x25 :id (dma-tag-id cnt))
                      :vif1 (new 'static 'vif-tag :imm #x25 :cmd (vif-cmd direct) :msk #x1)
                      )
                    :gif (new 'static 'array uint64 2 #x602e400000008006 #x421421)
                    )
                  :clut-tmpl (new 'static 'dma-gif-packet
                    :dma-vif (new 'static 'dma-packet
                      :dma (new 'static 'dma-tag :qwc #x41 :id (dma-tag-id cnt))
                      :vif1 (new 'static 'vif-tag :imm #x41 :cmd (vif-cmd direct) :msk #x1)
                      )
                    :gif (new 'static 'array uint64 2 #x800000000008040 #x0)
                    )
                  :constant (new 'static 'vector :x 1.0 :y 1.0 :z 1.0)
                  :haze-verts (new 'static 'inline-array vector4w 32
                    (new 'static 'vector4w :x #x400 :y #x5c0 :z #xffffff)
                    (new 'static 'vector4w :x #x400 :y #x600 :z #xffffff)
                    (new 'static 'vector4w :x #x4a0 :y #x590 :z #xffffff)
                    (new 'static 'vector4w :x #x4c0 :y #x5e0 :z #xffffff)
                    (new 'static 'vector4w :x #x530 :y #x530 :z #xffffff)
                    (new 'static 'vector4w :x #x560 :y #x560 :z #xffffff)
                    (new 'static 'vector4w :x #x590 :y #x4a0 :z #xffffff)
                    (new 'static 'vector4w :x #x5e0 :y #x4c0 :z #xffffff)
                    (new 'static 'vector4w :x #x5c0 :y #x3f0 :z #xffffff)
                    (new 'static 'vector4w :x #x600 :y #x3f0 :z #xffffff)
                    (new 'static 'vector4w :x #x590 :y #x350 :z #xffffff)
                    (new 'static 'vector4w :x #x5e0 :y #x330 :z #xffffff)
                    (new 'static 'vector4w :x #x530 :y #x2c0 :z #xffffff)
                    (new 'static 'vector4w :x #x560 :y #x290 :z #xffffff)
                    (new 'static 'vector4w :x #x4a0 :y #x260 :z #xffffff)
                    (new 'static 'vector4w :x #x4c0 :y #x210 :z #xffffff)
                    (new 'static 'vector4w :x #x3f0 :y #x240 :z #xffffff)
                    (new 'static 'vector4w :x #x3f0 :y #x1f0 :z #xffffff)
                    (new 'static 'vector4w :x #x350 :y #x260 :z #xffffff)
                    (new 'static 'vector4w :x #x330 :y #x210 :z #xffffff)
                    (new 'static 'vector4w :x #x2c0 :y #x2c0 :z #xffffff)
                    (new 'static 'vector4w :x #x290 :y #x290 :z #xffffff)
                    (new 'static 'vector4w :x #x260 :y #x350 :z #xffffff)
                    (new 'static 'vector4w :x #x210 :y #x330 :z #xffffff)
                    (new 'static 'vector4w :x #x240 :y #x400 :z #xffffff)
                    (new 'static 'vector4w :x #x1f0 :y #x400 :z #xffffff)
                    (new 'static 'vector4w :x #x260 :y #x4a0 :z #xffffff)
                    (new 'static 'vector4w :x #x210 :y #x4c0 :z #xffffff)
                    (new 'static 'vector4w :x #x2c0 :y #x530 :z #xffffff)
                    (new 'static 'vector4w :x #x290 :y #x560 :z #xffffff)
                    (new 'static 'vector4w :x #x350 :y #x590 :z #xffffff)
                    (new 'static 'vector4w :x #x330 :y #x5e0 :z #xffffff)
                    )
                  :cloud-verts (new 'static 'inline-array vector4w 36
                    (new 'static 'vector4w :x #x290 :y #x290 :z #xffffff)
                    (new 'static 'vector4w :x #x310 :y #x230 :z #xffffff)
                    (new 'static 'vector4w :x #x3a0 :y #x200 :z #xffffff)
                    (new 'static 'vector4w :x #x450 :y #x200 :z #xffffff)
                    (new 'static 'vector4w :x #x4e0 :y #x230 :z #xffffff)
                    (new 'static 'vector4w :x #x560 :y #x290 :z #xffffff)
                    (new 'static 'vector4w :x #x230 :y #x310 :z #xffffff)
                    (new 'static 'vector4w :x #x300 :y #x300 :z #xffffff)
                    (new 'static 'vector4w :x #x3a0 :y #x2b0 :z #xffffff)
                    (new 'static 'vector4w :x #x450 :y #x2b0 :z #xffffff)
                    (new 'static 'vector4w :x #x4f0 :y #x300 :z #xffffff)
                    (new 'static 'vector4w :x #x5c0 :y #x310 :z #xffffff)
                    (new 'static 'vector4w :x #x200 :y #x3a0 :z #xffffff)
                    (new 'static 'vector4w :x #x2b0 :y #x3a0 :z #xffffff)
                    (new 'static 'vector4w :x #x380 :y #x380 :z #xffffff)
                    (new 'static 'vector4w :x #x470 :y #x380 :z #xffffff)
                    (new 'static 'vector4w :x #x540 :y #x3a0 :z #xffffff)
                    (new 'static 'vector4w :x #x5f0 :y #x3a0 :z #xffffff)
                    (new 'static 'vector4w :x #x200 :y #x450 :z #xffffff)
                    (new 'static 'vector4w :x #x2b0 :y #x450 :z #xffffff)
                    (new 'static 'vector4w :x #x380 :y #x470 :z #xffffff)
                    (new 'static 'vector4w :x #x470 :y #x470 :z #xffffff)
                    (new 'static 'vector4w :x #x540 :y #x450 :z #xffffff)
                    (new 'static 'vector4w :x #x5f0 :y #x450 :z #xffffff)
                    (new 'static 'vector4w :x #x230 :y #x4e0 :z #xffffff)
                    (new 'static 'vector4w :x #x300 :y #x4f0 :z #xffffff)
                    (new 'static 'vector4w :x #x3a0 :y #x540 :z #xffffff)
                    (new 'static 'vector4w :x #x450 :y #x540 :z #xffffff)
                    (new 'static 'vector4w :x #x4f0 :y #x4f0 :z #xffffff)
                    (new 'static 'vector4w :x #x5c0 :y #x4e0 :z #xffffff)
                    (new 'static 'vector4w :x #x290 :y #x560 :z #xffffff)
                    (new 'static 'vector4w :x #x310 :y #x5c0 :z #xffffff)
                    (new 'static 'vector4w :x #x3a0 :y #x5f0 :z #xffffff)
                    (new 'static 'vector4w :x #x450 :y #x5f0 :z #xffffff)
                    (new 'static 'vector4w :x #x4e0 :y #x5c0 :z #xffffff)
                    (new 'static 'vector4w :x #x560 :y #x560 :z #xffffff)
                    )
                  :cloud-nrms (new 'static 'inline-array vector 36
                    (new 'static 'vector :x -0.4999 :y 0.7071 :z -0.5)
                    (new 'static 'vector :x -0.3209 :y 0.7071 :z -0.63)
                    (new 'static 'vector :x -0.1105 :y 0.7071 :z -0.6984)
                    (new 'static 'vector :x 0.1105 :y 0.7071 :z -0.6983)
                    (new 'static 'vector :x 0.321 :y 0.7071 :z -0.63)
                    (new 'static 'vector :x 0.5 :y 0.7071 :z -0.4999)
                    (new 'static 'vector :x -0.63 :y 0.7071 :z -0.321)
                    (new 'static 'vector :x -0.3921 :y 0.832 :z -0.3922)
                    (new 'static 'vector :x -0.1434 :y 0.832 :z -0.5358)
                    (new 'static 'vector :x 0.1435 :y 0.832 :z -0.5357)
                    (new 'static 'vector :x 0.3922 :y 0.832 :z -0.3921)
                    (new 'static 'vector :x 0.63 :y 0.7071 :z -0.3209)
                    (new 'static 'vector :x -0.6983 :y 0.7071 :z -0.1106)
                    (new 'static 'vector :x -0.5357 :y 0.832 :z -0.1435)
                    (new 'static 'vector :x -0.334 :y 0.8814 :z -0.334)
                    (new 'static 'vector :x 0.334 :y 0.8814 :z -0.334)
                    (new 'static 'vector :x 0.5358 :y 0.832 :z -0.1434)
                    (new 'static 'vector :x 0.6984 :y 0.7071 :z -0.1105)
                    (new 'static 'vector :x -0.6984 :y 0.7071 :z 0.1105)
                    (new 'static 'vector :x -0.5358 :y 0.832 :z 0.1435)
                    (new 'static 'vector :x -0.334 :y 0.8814 :z 0.334)
                    (new 'static 'vector :x 0.334 :y 0.8814 :z 0.334)
                    (new 'static 'vector :x 0.5357 :y 0.832 :z 0.1435)
                    (new 'static 'vector :x 0.6983 :y 0.7071 :z 0.1105)
                    (new 'static 'vector :x -0.63 :y 0.7071 :z 0.321)
                    (new 'static 'vector :x -0.3922 :y 0.832 :z 0.3921)
                    (new 'static 'vector :x -0.1435 :y 0.832 :z 0.5357)
                    (new 'static 'vector :x 0.1435 :y 0.832 :z 0.5358)
                    (new 'static 'vector :x 0.3922 :y 0.832 :z 0.3922)
                    (new 'static 'vector :x 0.63 :y 0.7071 :z 0.321)
                    (new 'static 'vector :x -0.5 :y 0.7071 :z 0.4999)
                    (new 'static 'vector :x -0.321 :y 0.7071 :z 0.63)
                    (new 'static 'vector :x -0.1106 :y 0.7071 :z 0.6983)
                    (new 'static 'vector :x 0.1105 :y 0.7071 :z 0.6984)
                    (new 'static 'vector :x 0.321 :y 0.7071 :z 0.63)
                    (new 'static 'vector :x 0.4999 :y 0.7071 :z 0.5)
                    )
                  :color80808080 (new 'static 'vector4w :x #x80 :y #x80 :z #x80 :w #x80)
                  :color80808040 (new 'static 'vector4w :x #x80 :y #x80 :z #x80 :w 64)
                  :color80808000 (new 'static 'vector4w :x #x80 :y #x80 :z #x80)
                  :st0000 (new 'static 'vector :z 1.0)
                  :st0505 (new 'static 'vector :x 0.5 :y 0.5 :z 1.0)
                  :st1010 (new 'static 'vector :x 1.0 :y 1.0 :z 1.0)
                  :uv44 (new 'static 'vector4w :x 64 :y 64)
                  :uv88 (new 'static 'vector4w :x #x80 :y #x80)
                  :uv1010 (new 'static 'vector4w :x #x100 :y #x100)
                  :uv2020 (new 'static 'vector4w :x #x200 :y #x200)
                  :uv4040 (new 'static 'vector4w :x #x400 :y #x400)
                  :uv8080 (new 'static 'vector4w :x #x800 :y #x800)
                  :xy00 (new 'static 'vector4w :z #xffffff)
                  :xy88 (new 'static 'vector4w :x #x80 :y #x80 :z #xffffff)
                  :xy1010 (new 'static 'vector4w :x #x100 :y #x100 :z #xffffff)
                  :xy2020 (new 'static 'vector4w :x #x200 :y #x200 :z #xffffff)
                  :xy4040 (new 'static 'vector4w :x #x400 :y #x400 :z #xffffff)
                  :xy8080 (new 'static 'vector4w :x #x800 :y #x800 :z #xffffff)
                  :cloud-alpha (new 'static 'array uint8 36
                    #x80
                    #x80
                    #x80
                    #x80
                    #x80
                    #x80
                    #x80
                    #x80
                    #x80
                    #x80
                    #x80
                    #x80
                    #x80
                    #x80
                    #x80
                    #x80
                    #x80
                    #x80
                    #x80
                    #x80
                    #x80
                    #x80
                    #x80
                    #x80
                    #x80
                    #x80
                    #x80
                    #x80
                    #x80
                    #x80
                    #x80
                    #x80
                    #x80
                    #x80
                    #x80
                    #x80
                    )
                  :tex1 (new 'static 'gs-tex1 :mxl #x6 :mmag #x1 :mmin #x5 :l #x1 :k #xeed)
                  :tex1-near (new 'static 'gs-tex1 :mxl #x3 :mmag #x1 :mmin #x5 :l #x1 :k #xeed)
                  :scales (new 'static 'vector :x -0.00012207031 :y 255.0 :z -0.00012207031 :w 128.0)
                  :mask-hi (new 'static 'vector4w :x -65536 :y -65536 :z -65536 :w -65536)
                  :mask-lo (new 'static 'vector4w :x #xffff :y #xffff :z #xffff :w #xffff)
                  )
        )
