jak-project/goal_src/jak3/engine/gfx/foreground/merc/merc.gc
Hat Kid a4e629ebf9
decompiler: defskelgroup macro detection for jak 3, fix art group dumping for jak 3 and some more decomp work (#3370)
- `transformq`
- `wind-work`
- `progress-static`
- `merc-vu1`
- `emerc-vu1`
- `merc`
- `emerc`
- `cloth-h`
- Most of `cloth`, not added to gsrc yet

Art group dumps were incorrect for Jak 3 because the master art group
fields were at different offsets.
2024-02-11 09:32:06 -05:00

634 lines
24 KiB
Common Lisp

;;-*-Lisp-*-
(in-package goal)
;; name: merc.gc
;; name in dgo: merc
;; dgos: GAME
;; DECOMP BEGINS
(define *texture-login-data* (new 'static 'texture-login-data))
(defmethod login ((this art-joint-geo))
(let ((s5-0 *texture-login-data*))
(set! (-> s5-0 default-texture-index)
(res-lump-value (-> this extra) 'texture-bucket int :default (the-as uint128 1) :time -1000000000.0)
)
)
this
)
(defun texture-usage-init ((arg0 merc-ctrl))
(let ((gp-0 *texture-login-data*))
(if (zero? (-> arg0 header texture-usage-group))
(set! (-> arg0 header texture-usage-group) (new 'loading-level 'texture-usage-group))
)
(set! (-> gp-0 texture-usage-group) (-> arg0 header texture-usage-group))
(set! (-> gp-0 merc-ctrl-header) (-> arg0 header))
(set! (-> gp-0 name) (-> arg0 name))
(dotimes (v1-7 7)
(dotimes (a0-2 3)
(set! (-> (the-as vector (+ (the-as uint (-> gp-0 texture-usage-group)) (* 48 v1-7) (* a0-2 16))) quad)
(the-as uint128 0)
)
)
)
)
#f
)
(defun texture-usage-update ((arg0 texture))
(local-vars (a3-3 uint128))
(let* ((v1-0 *texture-login-data*)
(a1-0 (-> v1-0 current-texture-index))
(v1-2 (-> v1-0 texture-usage-group data a1-0))
)
(dotimes (a1-3 3)
(let* ((a2-3 (-> v1-2 data a1-3))
(t1-0 (-> arg0 masks data a1-3))
(a3-2 (-> a2-3 mask quad))
(t0-0 (-> t1-0 mask quad))
(f0-0 (-> a2-3 dist))
(f1-0 (-> t1-0 dist))
)
(.por a3-3 a3-2 t0-0)
(let ((f0-1 (fmax f0-0 f1-0)))
(set! (-> a2-3 mask quad) a3-3)
(set! (-> a2-3 dist) f0-1)
)
)
)
)
#f
)
;; WARN: Return type mismatch uint vs int.
(defmethod asize-of ((this merc-fragment))
(the-as int (* (-> this header mm-quadword-size) 16))
)
(defmethod login-adgifs ((this merc-fragment))
(local-vars (v0-5 symbol) (sv-16 uint) (sv-32 int))
(let* ((s5-0 (merc-fragment-fp-data this))
(v1-1 (-> *texture-login-data* merc-ctrl-header))
(s4-0 (if (nonzero? (-> v1-1 eye-ctrl))
(-> v1-1 eye-ctrl)
(the-as merc-eye-ctrl #f)
)
)
(s3-0 #x300200)
(s2-0 #x300300)
(s1-0 (the-as adgif-shader (&+ s5-0 16)))
)
(dotimes (s0-0 (the-as int (-> s5-0 shader-cnt)))
(let ((v1-2 (-> s4-0 eye-ctrl-index))
(a0-4 (logand (the-as texture-id -256) (-> s1-0 texture-id)))
)
(set! v0-5
(cond
((and s4-0 (!= v1-2 -1) (or (= a0-4 s3-0) (= a0-4 s2-0)))
(let ((v1-5 (-> *eye-control-array* data v1-2)))
(set! sv-16 (-> v1-5 eye-slot))
(if (= a0-4 s2-0)
(set! sv-32 1)
(set! sv-32 0)
)
(let ((a0-10 (-> v1-5 eyes sv-32)))
(set! (-> a0-10 shader (-> a0-10 shader-count)) s1-0)
(+! (-> a0-10 shader-count) 1)
)
(cond
((-> v1-5 high-res?)
(adgif-shader-login s1-0)
(let ((v1-9 (+ (-> *eyes-texture-base* vram-block) (* (+ (* sv-16 4) sv-32) 32))))
(set! (-> s1-0 tex0 tbp0) v1-9)
)
(set! (-> s1-0 tex0 tw) 6)
(set! (-> s1-0 tex0 th) 6)
(set! (-> s1-0 tex0 tbw) 2)
(set! (-> s1-0 clamp)
(new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp) :maxu #x3f :maxv #x3f)
)
)
(else
(adgif-shader-login s1-0)
(let ((v0-3 (get-eye-block (the-as int sv-16) sv-32)))
(set! (-> s1-0 tex0 tbp0) v0-3)
)
(set! (-> s1-0 tex0 tw) 5)
(set! (-> s1-0 tex0 th) 5)
(set! (-> s1-0 tex0 tbw) 1)
(set! (-> s1-0 clamp)
(new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp) :maxu #x1f :maxv #x1f)
)
)
)
)
(set! (-> s1-0 tex0 tcc) 1)
(set! (-> s1-0 tex0 psm) 0)
(set! (-> s1-0 tex1 mxl) 0)
v0-5
)
(else
(let ((a0-39 (adgif-shader-login s1-0)))
(if a0-39
(texture-usage-update a0-39)
)
)
)
)
)
)
(&+! s1-0 80)
)
)
this
)
;; WARN: Return type mismatch uint vs int.
(defmethod asize-of ((this merc-fragment-control))
(the-as int (+ (* (-> this mat-xfer-count) 2) 4))
)
;; WARN: Return type mismatch merc-effect vs none.
(defmethod login-adgifs ((this merc-effect))
(let* ((tex-login *texture-login-data*)
(tex-idx (-> tex-login default-texture-index))
)
(when (= (-> this merc-effect-version) 1)
(if (!= (-> this texture-index) 255)
(set! tex-idx (the-as int (-> this texture-index)))
)
)
(set! (-> tex-login current-texture-index) tex-idx)
(set! (-> this texture-index) (the-as uint tex-idx))
(let ((extra (-> this extra-info)))
(when (nonzero? extra)
(when (nonzero? (-> extra shader-offset))
(let ((shader (adgif-shader-login (the-as adgif-shader (+ (the-as uint extra) (* (-> extra shader-offset) 16))))))
(if shader
(texture-usage-update shader)
)
)
)
)
)
(let* ((v1-3 (the-as structure (-> *kernel-context* login-object)))
(ctrl-header (-> *texture-login-data* merc-ctrl-header))
(eye-ctrl (if (nonzero? (-> ctrl-header eye-ctrl))
(-> ctrl-header eye-ctrl)
(the-as merc-eye-ctrl #f)
)
)
)
(if eye-ctrl
(set! (-> eye-ctrl eye-ctrl-index)
(find-free-eye-index
tex-idx
(the-as string (-> (the-as merc-eye-ctrl v1-3) left-iris-shader quad 0 data 0))
(-> eye-ctrl eye-slot)
)
)
)
)
)
(let ((fragment (the-as object (-> this frag-ctrl)))
(geo (the-as object (-> this frag-geo)))
)
(dotimes (frag-idx (the-as int (-> this frag-count)))
(let ((sizeof-frag ((method-of-type merc-fragment-control asize-of) (the-as merc-fragment-control fragment))))
(let ((sizeof-geo ((method-of-type merc-fragment asize-of) (the-as merc-fragment geo))))
((method-of-type merc-fragment login-adgifs) (the-as merc-fragment geo))
(set! geo (&+ (the-as pointer geo) sizeof-geo))
)
(set! fragment (&+ (the-as pointer fragment) sizeof-frag))
)
)
)
(none)
)
(defmethod mem-usage ((this merc-ctrl) (usage memory-usage-block) (flags int))
(if (-> this extra)
(mem-usage (-> this extra) usage flags)
)
(let ((s4-0 (+ 48 128 (* (-> this header effect-count) 32))))
(dotimes (s3-0 (the-as int (-> this header effect-count)))
(let ((s2-0 (the-as object (-> this effect s3-0 frag-ctrl))))
(dotimes (s1-0 (the-as int (-> this effect s3-0 frag-count)))
(set! s4-0 (+ s4-0
(* (shr (+ (-> (the-as merc-fragment-control s2-0) unsigned-four-count) 3) 2) 16)
(* (shr (+ (-> (the-as merc-fragment-control s2-0) lump-four-count) 3) 2) 16)
(* (-> (the-as merc-fragment-control s2-0) fp-qwc) 16)
(asize-of (the-as merc-fragment-control s2-0))
)
)
(set! s2-0 (&+ (the-as pointer s2-0) (asize-of (the-as merc-fragment-control s2-0))))
)
)
)
(set! (-> usage length) (max 80 (-> usage length)))
(set! (-> usage data 79 name) "merc-ctrl")
(+! (-> usage data 79 count) 1)
(+! (-> usage data 79 used) s4-0)
(+! (-> usage data 79 total) (logand -16 (+ s4-0 15)))
)
(let ((v1-35 0))
(dotimes (a0-15 (the-as int (-> this header effect-count)))
(when (nonzero? (-> this effect a0-15 blend-frag-count))
(let ((a1-9 (the-as object (-> this effect a0-15 blend-ctrl))))
(dotimes (a2-1 (the-as int (-> this effect a0-15 blend-frag-count)))
(let ((v1-36
(+ v1-35
(* (+ (-> (the-as merc-blend-ctrl a1-9) nonzero-index-count) 1)
(the-as uint (logand (+ (* (the-as uint 6) (-> (the-as merc-blend-ctrl a1-9) blend-vtx-count)) 15) #xfff0))
)
)
)
)
(set! v1-35 (the-as int (+ (-> this header blend-target-count) 2 v1-36)))
)
(set! a1-9 (&+ (the-as pointer a1-9) (+ (-> this header blend-target-count) 2)))
)
)
)
)
(when (nonzero? v1-35)
(set! (-> usage length) (max 82 (-> usage length)))
(set! (-> usage data 81 name) "blend-shape")
(+! (-> usage data 81 count) 1)
(+! (-> usage data 81 used) v1-35)
(+! (-> usage data 81 total) (logand -16 (+ v1-35 15)))
)
)
(when (and (-> this header eye-ctrl) (nonzero? (-> this header eye-ctrl)))
(let ((a0-29 (-> this header eye-ctrl)))
(set! (-> usage length) (max 113 (-> usage length)))
(set! (-> usage data 112 name) "eye-anim")
(+! (-> usage data 112 count) 1)
(let ((v1-49 (asize-of a0-29)))
(+! (-> usage data 112 used) v1-49)
(+! (-> usage data 112 total) (logand -16 (+ v1-49 15)))
)
)
)
this
)
(defmethod login ((this merc-ctrl))
(set! (-> *kernel-context* login-object) this)
(texture-usage-init this)
(dotimes (s5-0 (the-as int (-> this header effect-count)))
(login-adgifs (-> this effect s5-0))
)
(when (and (-> this header eye-ctrl) (nonzero? (-> this header eye-ctrl)))
(let ((s5-1 (-> this header eye-ctrl)))
(dotimes (s4-0 (-> s5-1 shader-count))
(let ((a0-5 (adgif-shader-login (-> s5-1 shader s4-0))))
(if a0-5
(texture-usage-update a0-5)
)
)
)
)
)
(set! (-> *kernel-context* login-object) #f)
this
)
(defmethod art-method-10 ((this merc-ctrl))
(let* ((v1-0 (-> this header))
(v1-1 (if (nonzero? (-> v1-0 eye-ctrl))
(-> v1-0 eye-ctrl)
(the-as merc-eye-ctrl #f)
)
)
)
(if v1-1
(free-eye-index (-> v1-1 eye-ctrl-index))
)
)
this
)
;; WARN: Return type mismatch symbol vs none.
(defun-debug merc-stats-display ((arg0 merc-ctrl))
(format #t "~30s:" (-> arg0 name))
(let ((s5-0 (-> arg0 header st-int-scale))
(s4-0 (ash 1 (- 12 (the-as int (-> arg0 header st-int-scale)))))
)
(format #t " ST ~3D, " s4-0)
(cond
((>= s5-0 (the-as uint 5))
(format #t "RANGE ~D+," (/ 128 s4-0))
)
((= s5-0 4)
(format #t "RANGE 0.5+,")
)
)
)
(dotimes (s5-1 (the-as int (-> arg0 header effect-count)))
(let ((s3-0 (-> arg0 effect s5-1)))
(if (nonzero? s5-1)
(format #t "~48s " " ")
)
(let ((a2-4 (-> s3-0 frag-count))
(s4-1 (-> s3-0 tri-count))
(f30-0 (the float (-> s3-0 frag-count)))
(f28-0 (the float (-> s3-0 dvert-count)))
(f26-0 (the float (-> s3-0 tri-count)))
)
(if (>= (/ (+ 50.0 f28-0) f30-0) 50.0)
(format #t "~3D frags, ~2,,1f dverts/frag " a2-4 (/ f28-0 f30-0))
(format #t "~3D frags, ~2,,1f ******/**** " a2-4 (/ f28-0 f30-0))
)
(format
#t
"(~4D tris, striplen ~2,,2f, ~2,,1f tris/frag)~%"
s4-1
(/ (* 2.0 f26-0) (- f28-0 f26-0))
(/ f26-0 f30-0)
)
)
)
)
(none)
)
(defun-debug merc-stats ()
(dotimes (gp-0 11)
(let ((s5-0 (-> *level* level gp-0 art-group)))
(when (nonzero? s5-0)
(dotimes (s4-0 (-> s5-0 art-group-array length))
(let ((s3-0 (-> s5-0 art-group-array s4-0)))
(dotimes (s2-0 (-> s3-0 length))
(let* ((s1-0 (-> s3-0 data s2-0))
(a0-3 (if (type? s1-0 merc-ctrl)
s1-0
)
)
)
(if a0-3
(merc-stats-display (the-as merc-ctrl a0-3))
)
)
)
)
)
)
)
)
0
(none)
)
(defun-debug merc-edge-stats ()
(dotimes (gp-0 11)
(let ((s5-0 (-> *level* level gp-0 art-group)))
(when (nonzero? s5-0)
(dotimes (s4-0 (-> s5-0 art-group-array length))
(let ((s3-0 (-> s5-0 art-group-array s4-0)))
(dotimes (s2-0 (-> s3-0 length))
(let* ((s1-0 (-> s3-0 data s2-0))
(v1-9 (if (type? s1-0 merc-ctrl)
s1-0
)
)
)
(if v1-9
(format #t "~30s: ~f~%" (-> v1-9 name) (-> (the-as merc-ctrl v1-9) header longest-edge))
)
)
)
)
)
)
)
)
0
(none)
)
;; WARN: Return type mismatch dma-packet vs dma-gif-packet.
(defun merc-vu1-add-vu-function ((arg0 dma-packet) (arg1 vu-function) (arg2 int))
(let ((v1-0 (the-as object (+ (the-as uint arg1) 16)))
(a3-0 (-> arg1 qlength))
(a1-1 (-> arg1 origin))
)
(while (> a3-0 0)
(let ((t0-1 (min 127 a3-0)))
(set! (-> arg0 dma) (new 'static 'dma-tag :id (dma-tag-id ref) :qwc t0-1 :addr (the-as int v1-0)))
(set! (-> arg0 vif0) (new 'static 'vif-tag :cmd (if (zero? arg2) 16 19)))
(set! (-> arg0 vif1) (new 'static 'vif-tag :cmd (vif-cmd mpg) :num (* t0-1 2) :imm a1-1))
(&+! arg0 16)
(set! v1-0 (+ (the-as uint v1-0) (* t0-1 16)))
(set! a3-0 (- a3-0 t0-1))
(+! a1-1 (* t0-1 2))
)
)
)
(the-as dma-gif-packet arg0)
)
(defun merc-vu1-initialize-chain ((arg0 dma-gif-packet) (arg1 int))
(let ((gp-0 (the-as object (merc-vu1-add-vu-function (the-as dma-packet arg0) merc-vu1-block 1))))
(set! (-> (the-as dma-gif-packet gp-0) dma-vif dma) (new 'static 'dma-tag :qwc #xa :id (dma-tag-id cnt)))
(set! (-> (the-as dma-gif-packet gp-0) dma-vif vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)))
(set! (-> (the-as dma-gif-packet gp-0) dma-vif vif1) (new 'static 'vif-tag :cmd (vif-cmd stmod)))
(set! (-> (the-as (pointer vif-tag) gp-0) 4) (new 'static 'vif-tag :imm #x1ba :cmd (vif-cmd base)))
(set! (-> (the-as (pointer vif-tag) gp-0) 5) (new 'static 'vif-tag :imm #xfe46 :cmd (vif-cmd offset)))
(set! (-> (the-as (pointer vif-tag) gp-0) 6) (new 'static 'vif-tag))
(set! (-> (the-as (pointer vif-tag) gp-0) 7) (new 'static 'vif-tag :num #x8 :cmd (vif-cmd unpack-v4-32)))
(let ((s5-0 (the-as merc-vu1-low-mem (&+ (the-as dma-gif-packet gp-0) 32))))
(case *subdivide-foreground-draw-mode*
(((subdivide-setting textured))
(set! (-> s5-0 tri-strip-gif tag)
(new 'static 'gif-tag64
:pre #x1
:nreg #x3
:prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :fge #x1 :abe arg1)
)
)
(set! (-> s5-0 tri-strip-gif regs)
(new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2))
)
(set! (-> s5-0 tri-strip-gif word 3) (shr (make-u128 0 (shl #x303e4000 32)) 32))
)
(((subdivide-setting outline))
(set! (-> s5-0 tri-strip-gif tag)
(new 'static 'gif-tag64
:pre #x1
:nreg #x3
:prim (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #x1 :fge #x1 :abe arg1)
)
)
(set! (-> s5-0 tri-strip-gif regs)
(new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2))
)
(set! (-> s5-0 tri-strip-gif word 3) (shr (make-u128 0 (shl #x303d4000 32)) 32))
)
(((subdivide-setting gouraud))
(set! (-> s5-0 tri-strip-gif tag)
(new 'static 'gif-tag64
:pre #x1
:nreg #x3
:prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :fge #x1 :abe arg1)
)
)
(set! (-> s5-0 tri-strip-gif regs)
(new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2))
)
(set! (-> s5-0 tri-strip-gif word 3) (shr (make-u128 0 (shl #x30364000 32)) 32))
)
(((subdivide-setting hack))
(set! (-> s5-0 tri-strip-gif tag)
(new 'static 'gif-tag64
:pre #x1
:nreg #x3
:prim (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #x1 :fge #x1 :abe arg1)
)
)
(set! (-> s5-0 tri-strip-gif regs)
(new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2))
)
(set! (-> s5-0 tri-strip-gif word 3) (shr (make-u128 0 (shl #x303d4000 32)) 32))
)
)
(set! (-> s5-0 ad-gif tag) (new 'static 'gif-tag64 :nloop #x5 :nreg #x1))
(set! (-> s5-0 ad-gif regs) (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d)))
(set! (-> s5-0 hvdf-offset quad) (-> *math-camera* hvdf-off quad))
(quad-copy! (-> s5-0 perspective) (the-as pointer (-> *math-camera* perspective)) 4)
(set-vector! (-> s5-0 fog) (-> *math-camera* pfog0) (-> *math-camera* fog-min) (-> *math-camera* fog-max) 0.0)
)
(let ((v1-50 (-> (the-as (inline-array dma-packet) gp-0) 10)))
(set! (-> v1-50 dma) (new 'static 'dma-tag :id (dma-tag-id cnt)))
(set! (-> v1-50 vif0) (new 'static 'vif-tag))
(set! (-> v1-50 vif1) (new 'static 'vif-tag :cmd (vif-cmd mscal) :msk #x1 :imm #x0))
(&+ v1-50 16)
)
)
)
(defun merc-vu1-init-buffer ((arg0 bucket-id) (arg1 int) (arg2 symbol))
(let ((v1-0 *display*)
(a2-6 (+ (* (+ (/ (-> merc-vu1-block qlength) 127) 1) 16) 224))
)
(+! (-> v1-0 mem-reserve-size) a2-6)
(when (not (-> v1-0 dma-buffer-overflow))
(let ((t0-0 (-> v1-0 frames (-> v1-0 on-screen) global-buf)))
(if (< (-> t0-0 real-buffer-end) (the-as int (&+ (-> t0-0 base) a2-6)))
(set! (-> v1-0 dma-buffer-overflow) #t)
)
)
(when (not (-> v1-0 dma-buffer-overflow))
(let ((s5-0 (-> *display* frames (-> *display* on-screen) bucket-group arg0)))
(when (!= s5-0 (-> s5-0 last))
(let* ((s3-0 (-> *display* frames (-> *display* on-screen) global-buf))
(s4-3 (-> s3-0 base))
)
(set! (-> s3-0 base) (the-as pointer (merc-vu1-initialize-chain (the-as dma-gif-packet (-> s3-0 base)) arg1)))
(dma-buffer-add-gs-set s3-0
(test-1 (new 'static 'gs-test
:ate #x1
:atst (gs-atest greater-equal)
:aref #x26
:zte #x1
:ztst (gs-ztest greater-equal)
)
)
(zbuf-1 (if arg2
#x1000130
(the-as int (the-as uint #x101000130))
)
)
)
(let ((v1-17 (the-as object (-> s3-0 base))))
(set! (-> (the-as (pointer uint64) v1-17)) (logior #x20000000 (shr (shl (-> s5-0 next) 33) 1)))
(set! (-> (the-as dma-packet v1-17) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet v1-17) vif1) (new 'static 'vif-tag))
(set! (-> s3-0 base) (&+ (the-as pointer v1-17) 16))
)
(set! (-> s5-0 next) (the-as uint s4-3))
)
)
)
)
)
)
0
)
(defun merc-vu1-init-buffers ()
(when (logtest? (-> *display* vu1-enable-user) (vu1-renderer-mask merc))
(merc-vu1-init-buffer (bucket-id bucket17) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket29) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket41) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket53) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket65) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket77) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket89) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket101) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket113) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket125) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket341) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket352) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket357) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket362) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket367) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket372) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket377) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket382) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket387) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket392) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket397) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket402) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket136) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket146) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket156) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket166) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket176) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket186) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket196) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket206) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket216) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket226) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket346) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket234) 1 #t)
(merc-vu1-init-buffer (bucket-id bucket245) 1 #t)
(merc-vu1-init-buffer (bucket-id bucket256) 1 #t)
(merc-vu1-init-buffer (bucket-id bucket267) 1 #t)
(merc-vu1-init-buffer (bucket-id bucket278) 1 #t)
(merc-vu1-init-buffer (bucket-id bucket289) 1 #t)
(merc-vu1-init-buffer (bucket-id bucket300) 1 #t)
(merc-vu1-init-buffer (bucket-id bucket311) 1 #t)
(merc-vu1-init-buffer (bucket-id bucket322) 1 #t)
(merc-vu1-init-buffer (bucket-id bucket333) 1 #t)
(merc-vu1-init-buffer (bucket-id bucket407) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket412) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket417) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket422) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket427) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket432) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket437) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket442) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket447) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket452) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket457) 0 #t)
(merc-vu1-init-buffer (bucket-id bucket464) 1 #f)
(merc-vu1-init-buffer (bucket-id bucket474) 1 #f)
(merc-vu1-init-buffer (bucket-id bucket484) 1 #f)
(merc-vu1-init-buffer (bucket-id bucket494) 1 #f)
(merc-vu1-init-buffer (bucket-id bucket504) 1 #f)
(merc-vu1-init-buffer (bucket-id bucket514) 1 #f)
(merc-vu1-init-buffer (bucket-id bucket524) 1 #f)
(merc-vu1-init-buffer (bucket-id bucket534) 1 #f)
(merc-vu1-init-buffer (bucket-id bucket544) 1 #f)
(merc-vu1-init-buffer (bucket-id bucket554) 1 #f)
(merc-vu1-init-buffer (bucket-id bucket564) 1 #f)
)
0
(none)
)