[decomp] Partial implementation of tie (#1916)

Some stuff isn't working fully yet:
- fog color
- time of day
- draw order for multiple passes (currently all draws in the default tie
bucket)
- possibly settings for transparent stuff (untested, but might work)
- the "vanish" effect (we might not want this anyway?)
- environment mapping/etie completely not implemented.


![image](https://user-images.githubusercontent.com/48171810/192154314-2cc8ac51-9dad-474f-a84b-3a1d98973215.png)

![image](https://user-images.githubusercontent.com/48171810/192154316-457a7ee0-b5a4-4a40-b48e-8863114da735.png)
This commit is contained in:
water111
2022-09-25 12:50:51 -04:00
committed by GitHub
parent a53c06fe2b
commit b5705bde96
26 changed files with 7998 additions and 397 deletions
+9 -9
View File
@@ -387,15 +387,15 @@
;; definition of type gs-adcmd
(deftype gs-adcmd (structure)
((word uint32 4 :offset-assert 0)
(quad uint128 :offset 0)
(data uint64 :offset 0)
(cmds uint64 :offset 8)
(cmd uint8 :offset 8)
(x uint32 :offset 0)
(y uint32 :offset 4)
(z uint32 :offset 8)
(w uint32 :offset 12)
((word uint32 4 :offset-assert 0)
(quad uint128 :offset 0)
(data uint64 :offset 0)
(cmds gs-reg64 :offset 8)
(cmd uint8 :offset 8)
(x uint32 :offset 0)
(y uint32 :offset 4)
(z uint32 :offset 8)
(w uint32 :offset 12)
)
:method-count-assert 9
:size-assert #x10
+943
View File
@@ -0,0 +1,943 @@
;;-*-Lisp-*-
(in-package goal)
;; definition for function edge-debug-lines
;; WARN: Return type mismatch symbol vs none.
(defun edge-debug-lines ((arg0 (array vector-array)))
(when (nonzero? arg0)
(dotimes (s5-0 (-> arg0 length))
(when (logtest? *display-strip-lines* (ash 1 s5-0))
(let ((s4-0 (-> arg0 s5-0)))
(dotimes (s3-0 (/ (-> s4-0 length) 2))
(add-debug-line
#t
(bucket-id debug-no-zbuf1)
(-> s4-0 data (* s3-0 2))
(-> s4-0 data (+ (* s3-0 2) 1))
(new 'static 'rgba :r #xff :g #xff :b #xff :a #x80)
#f
(the-as rgba -1)
)
)
)
)
)
)
(none)
)
;; definition for function draw-drawable-tree-tfrag
;; WARN: Return type mismatch drawable-tree-tfrag vs none.
(defun draw-drawable-tree-tfrag ((arg0 drawable-tree-tfrag))
(local-vars (sv-16 int))
(when (logtest? (-> *display* vu1-enable-user) (vu1-renderer-mask tfrag))
(let ((s5-0 (+ (-> arg0 length) -1)))
(when (nonzero? s5-0)
(dotimes (s4-0 s5-0)
(let* ((v1-8 (-> arg0 arrays s4-0))
(a0-4 (-> arg0 arrays (+ s4-0 1)))
(a1-1 (/ (-> (the-as drawable-inline-array-node v1-8) data 0 id) 8))
(a0-6 (/ (-> (the-as drawable-inline-array-node a0-4) data 0 id) 8))
(a1-3 (+ a1-1 #x38a0 #x70000000))
(a0-8 (+ a0-6 #x38a0 #x70000000))
)
(draw-node-cull
(the-as pointer a0-8)
(the-as pointer a1-3)
(the-as (inline-array draw-node) (&+ v1-8 32))
(-> v1-8 length)
)
)
)
)
(let* ((v1-14 (-> arg0 arrays s5-0))
(s4-1 (&+ v1-14 32))
(s3-0 (-> v1-14 length))
)
(set! sv-16 (+ (/ (-> s4-1 id) 8) #x38a0 #x70000000))
(let ((s5-1 (-> *display* frames (-> *display* on-screen) global-buf base)))
(let* ((s1-0 (-> *display* frames (-> *display* on-screen) global-buf))
(s2-0 (-> s1-0 base))
)
(set! (-> *tfrag-work* wait-to-spr) (the-as uint 0))
(set! (-> *tfrag-work* wait-from-spr) (the-as uint 0))
(set! (-> *tfrag-work* texture-dists) (the-as uint (-> *level* draw-level *draw-index* bsp tfrag-closest)))
(set! (-> *tfrag-work* last-call) (the-as uint 0))
(draw-inline-array-tfrag (the-as pointer sv-16) s4-1 s3-0 s1-0)
(set! (-> *level* draw-level *draw-index* tfrag-last-calls 0) (the-as int (-> *tfrag-work* last-call)))
(update-wait-stats
(-> *perf-stats* data 42)
(the-as uint 0)
(-> *tfrag-work* wait-to-spr)
(-> *tfrag-work* wait-from-spr)
)
(let ((a3-3 (-> s1-0 base)))
(let ((v1-46 (the-as dma-packet (-> s1-0 base))))
(set! (-> v1-46 dma) (new 'static 'dma-tag :id (dma-tag-id next)))
(set! (-> v1-46 vif0) (new 'static 'vif-tag))
(set! (-> v1-46 vif1) (new 'static 'vif-tag))
(set! (-> s1-0 base) (the-as pointer (&+ v1-46 16)))
)
(let ((t9-3 dma-bucket-insert-tag)
(a0-22 (-> *display* frames (-> *display* on-screen) bucket-group))
(v1-53 *draw-index*)
)
(t9-3
a0-22
(cond
((zero? v1-53)
(bucket-id tfrag-l0-tfrag)
)
((= v1-53 1)
(bucket-id tfrag-l1-tfrag)
)
((= v1-53 2)
(bucket-id tfrag-l2-tfrag)
)
((= v1-53 3)
(bucket-id tfrag-l3-tfrag)
)
((= v1-53 4)
(bucket-id tfrag-l4-tfrag)
)
(else
(bucket-id tfrag-l5-tfrag)
)
)
s2-0
(the-as (pointer dma-tag) a3-3)
)
)
)
)
(let* ((s1-1 (-> *display* frames (-> *display* on-screen) global-buf))
(s2-1 (-> s1-1 base))
)
(set! (-> *tfrag-work* near-wait-to-spr) (the-as uint 0))
(set! (-> *tfrag-work* near-wait-from-spr) (the-as uint 0))
(set! (-> *tfrag-work* last-call) (the-as uint 0))
(draw-inline-array-tfrag-scissor (the-as pointer sv-16) s4-1 s3-0 s1-1)
(set! (-> *level* draw-level *draw-index* tfrag-last-calls 1) (the-as int (-> *tfrag-work* last-call)))
(update-wait-stats
(-> *perf-stats* data 43)
(the-as uint 0)
(-> *tfrag-work* near-wait-to-spr)
(-> *tfrag-work* near-wait-from-spr)
)
(let ((a3-6 (-> s1-1 base)))
(let ((v1-70 (the-as dma-packet (-> s1-1 base))))
(set! (-> v1-70 dma) (new 'static 'dma-tag :id (dma-tag-id next)))
(set! (-> v1-70 vif0) (new 'static 'vif-tag))
(set! (-> v1-70 vif1) (new 'static 'vif-tag))
(set! (-> s1-1 base) (the-as pointer (&+ v1-70 16)))
)
(let ((t9-6 dma-bucket-insert-tag)
(a0-32 (-> *display* frames (-> *display* on-screen) bucket-group))
(v1-77 *draw-index*)
)
(t9-6
a0-32
(cond
((zero? v1-77)
(bucket-id tfrag-s-l0-tfrag)
)
((= v1-77 1)
(bucket-id tfrag-s-l1-tfrag)
)
((= v1-77 2)
(bucket-id tfrag-s-l2-tfrag)
)
((= v1-77 3)
(bucket-id tfrag-s-l3-tfrag)
)
((= v1-77 4)
(bucket-id tfrag-s-l4-tfrag)
)
(else
(bucket-id tfrag-s-l5-tfrag)
)
)
s2-1
(the-as (pointer dma-tag) a3-6)
)
)
)
)
(let ((v1-78 *dma-mem-usage*))
(when (nonzero? v1-78)
(set! (-> v1-78 length) (max 2 (-> v1-78 length)))
(set! (-> v1-78 data 1 name) "tfragment")
(+! (-> v1-78 data 1 count) 1)
(+! (-> v1-78 data 1 used)
(&- (-> *display* frames (-> *display* on-screen) global-buf base) (the-as uint s5-1))
)
(set! (-> v1-78 data 1 total) (-> v1-78 data 1 used))
)
)
)
)
)
)
(none)
)
;; definition for function draw-drawable-tree-tfrag-trans
;; WARN: Return type mismatch drawable-tree-tfrag vs none.
(defun draw-drawable-tree-tfrag-trans ((arg0 drawable-tree-tfrag))
(local-vars (sv-16 int))
(when (logtest? (vu1-renderer-mask tfrag-trans) (-> *display* vu1-enable-user))
(let ((s5-0 (+ (-> arg0 length) -1)))
(when (nonzero? s5-0)
(dotimes (s4-0 s5-0)
(let* ((v1-7 (-> arg0 arrays s4-0))
(a0-6 (-> arg0 arrays (+ s4-0 1)))
(a1-1 (/ (-> (the-as drawable-inline-array-node v1-7) data 0 id) 8))
(a0-8 (/ (-> (the-as drawable-inline-array-node a0-6) data 0 id) 8))
(a1-3 (+ a1-1 #x38a0 #x70000000))
(a0-10 (+ a0-8 #x38a0 #x70000000))
)
(draw-node-cull
(the-as pointer a0-10)
(the-as pointer a1-3)
(the-as (inline-array draw-node) (&+ v1-7 32))
(-> v1-7 length)
)
)
)
)
(let* ((v1-13 (-> arg0 arrays s5-0))
(s5-1 (&+ v1-13 32))
(s4-1 (-> v1-13 length))
)
(set! sv-16 (+ (/ (-> s5-1 id) 8) #x38a0 #x70000000))
(let* ((s2-0 (-> *display* frames (-> *display* on-screen) global-buf))
(s3-0 (-> s2-0 base))
)
(set! (-> *tfrag-work* wait-to-spr) (the-as uint 0))
(set! (-> *tfrag-work* wait-from-spr) (the-as uint 0))
(set! (-> *tfrag-work* texture-dists) (the-as uint (-> *level* draw-level *draw-index* bsp alpha-closest)))
(set! (-> *tfrag-work* last-call) (the-as uint 0))
(draw-inline-array-tfrag (the-as pointer sv-16) s5-1 s4-1 s2-0)
(set! (-> *level* draw-level *draw-index* tfrag-last-calls 2) (the-as int (-> *tfrag-work* last-call)))
(update-wait-stats
(-> *perf-stats* data 42)
(the-as uint 0)
(-> *tfrag-work* wait-to-spr)
(-> *tfrag-work* wait-from-spr)
)
(let ((a3-3 (-> s2-0 base)))
(let ((v1-39 (the-as dma-packet (-> s2-0 base))))
(set! (-> v1-39 dma) (new 'static 'dma-tag :id (dma-tag-id next)))
(set! (-> v1-39 vif0) (new 'static 'vif-tag))
(set! (-> v1-39 vif1) (new 'static 'vif-tag))
(set! (-> s2-0 base) (the-as pointer (&+ v1-39 16)))
)
(let ((t9-3 dma-bucket-insert-tag)
(a0-23 (-> *display* frames (-> *display* on-screen) bucket-group))
(v1-46 *draw-index*)
)
(t9-3
a0-23
(cond
((zero? v1-46)
(bucket-id tfrag-t-l0-alpha)
)
((= v1-46 1)
(bucket-id tfrag-t-l1-alpha)
)
((= v1-46 2)
(bucket-id tfrag-t-l2-alpha)
)
((= v1-46 3)
(bucket-id tfrag-t-l3-alpha)
)
((= v1-46 4)
(bucket-id tfrag-t-l4-alpha)
)
(else
(bucket-id tfrag-t-l5-alpha)
)
)
s3-0
(the-as (pointer dma-tag) a3-3)
)
)
)
)
(let* ((s2-1 (-> *display* frames (-> *display* on-screen) global-buf))
(s3-1 (-> s2-1 base))
)
(set! (-> *tfrag-work* near-wait-to-spr) (the-as uint 0))
(set! (-> *tfrag-work* near-wait-from-spr) (the-as uint 0))
(set! (-> *tfrag-work* last-call) (the-as uint 0))
(draw-inline-array-tfrag-scissor (the-as pointer sv-16) s5-1 s4-1 s2-1)
(set! (-> *level* draw-level *draw-index* tfrag-last-calls 3) (the-as int (-> *tfrag-work* last-call)))
(update-wait-stats
(-> *perf-stats* data 43)
(the-as uint 0)
(-> *tfrag-work* near-wait-to-spr)
(-> *tfrag-work* near-wait-from-spr)
)
(let ((a3-6 (-> s2-1 base)))
(let ((v1-63 (the-as dma-packet (-> s2-1 base))))
(set! (-> v1-63 dma) (new 'static 'dma-tag :id (dma-tag-id next)))
(set! (-> v1-63 vif0) (new 'static 'vif-tag))
(set! (-> v1-63 vif1) (new 'static 'vif-tag))
(set! (-> s2-1 base) (the-as pointer (&+ v1-63 16)))
)
(let ((t9-6 dma-bucket-insert-tag)
(a0-33 (-> *display* frames (-> *display* on-screen) bucket-group))
(v1-70 *draw-index*)
)
(t9-6
a0-33
(cond
((zero? v1-70)
(bucket-id tfrag-st-l0-alpha)
)
((= v1-70 1)
(bucket-id tfrag-st-l1-alpha)
)
((= v1-70 2)
(bucket-id tfrag-st-l2-alpha)
)
((= v1-70 3)
(bucket-id tfrag-st-l3-alpha)
)
((= v1-70 4)
(bucket-id tfrag-st-l4-alpha)
)
(else
(bucket-id tfrag-st-l5-alpha)
)
)
s3-1
(the-as (pointer dma-tag) a3-6)
)
)
)
)
)
)
)
(none)
)
;; definition for function draw-drawable-tree-tfrag-water
;; WARN: Return type mismatch drawable-tree-tfrag vs none.
(defun draw-drawable-tree-tfrag-water ((arg0 drawable-tree-tfrag))
(local-vars (sv-16 int))
(when (logtest? (vu1-renderer-mask tfrag-water) (-> *display* vu1-enable-user))
(let ((s5-0 (+ (-> arg0 length) -1)))
(when (nonzero? s5-0)
(dotimes (s4-0 s5-0)
(let* ((v1-7 (-> arg0 arrays s4-0))
(a0-6 (-> arg0 arrays (+ s4-0 1)))
(a1-1 (/ (-> (the-as drawable-inline-array-node v1-7) data 0 id) 8))
(a0-8 (/ (-> (the-as drawable-inline-array-node a0-6) data 0 id) 8))
(a1-3 (+ a1-1 #x38a0 #x70000000))
(a0-10 (+ a0-8 #x38a0 #x70000000))
)
(draw-node-cull
(the-as pointer a0-10)
(the-as pointer a1-3)
(the-as (inline-array draw-node) (&+ v1-7 32))
(-> v1-7 length)
)
)
)
)
(let* ((v1-13 (-> arg0 arrays s5-0))
(s5-1 (&+ v1-13 32))
(s4-1 (-> v1-13 length))
)
(set! sv-16 (+ (/ (-> s5-1 id) 8) #x38a0 #x70000000))
(let* ((s2-0 (-> *display* frames (-> *display* on-screen) global-buf))
(s3-0 (-> s2-0 base))
)
(set! (-> *tfrag-work* wait-to-spr) (the-as uint 0))
(set! (-> *tfrag-work* wait-from-spr) (the-as uint 0))
(set! (-> *tfrag-work* texture-dists) (the-as uint (-> *level* draw-level *draw-index* bsp water-closest)))
(set! (-> *tfrag-work* last-call) (the-as uint 0))
(draw-inline-array-tfrag (the-as pointer sv-16) s5-1 s4-1 s2-0)
(set! (-> *level* draw-level *draw-index* tfrag-last-calls 4) (the-as int (-> *tfrag-work* last-call)))
(update-wait-stats
(-> *perf-stats* data 42)
(the-as uint 0)
(-> *tfrag-work* wait-to-spr)
(-> *tfrag-work* wait-from-spr)
)
(let ((a3-3 (-> s2-0 base)))
(let ((v1-39 (the-as dma-packet (-> s2-0 base))))
(set! (-> v1-39 dma) (new 'static 'dma-tag :id (dma-tag-id next)))
(set! (-> v1-39 vif0) (new 'static 'vif-tag))
(set! (-> v1-39 vif1) (new 'static 'vif-tag))
(set! (-> s2-0 base) (the-as pointer (&+ v1-39 16)))
)
(let ((t9-3 dma-bucket-insert-tag)
(a0-23 (-> *display* frames (-> *display* on-screen) bucket-group))
(v1-46 *draw-index*)
)
(t9-3
a0-23
(cond
((zero? v1-46)
(bucket-id tfrag-w-l0-water)
)
((= v1-46 1)
(bucket-id tfrag-w-l1-water)
)
((= v1-46 2)
(bucket-id tfrag-w-l2-water)
)
((= v1-46 3)
(bucket-id tfrag-w-l3-water)
)
((= v1-46 4)
(bucket-id tfrag-w-l4-water)
)
(else
(bucket-id tfrag-w-l5-water)
)
)
s3-0
(the-as (pointer dma-tag) a3-3)
)
)
)
)
(let* ((s2-1 (-> *display* frames (-> *display* on-screen) global-buf))
(s3-1 (-> s2-1 base))
)
(set! (-> *tfrag-work* near-wait-to-spr) (the-as uint 0))
(set! (-> *tfrag-work* near-wait-from-spr) (the-as uint 0))
(set! (-> *tfrag-work* last-call) (the-as uint 0))
(draw-inline-array-tfrag-scissor (the-as pointer sv-16) s5-1 s4-1 s2-1)
(set! (-> *level* draw-level *draw-index* tfrag-last-calls 5) (the-as int (-> *tfrag-work* last-call)))
(update-wait-stats
(-> *perf-stats* data 43)
(the-as uint 0)
(-> *tfrag-work* near-wait-to-spr)
(-> *tfrag-work* near-wait-from-spr)
)
(let ((a3-6 (-> s2-1 base)))
(let ((v1-63 (the-as dma-packet (-> s2-1 base))))
(set! (-> v1-63 dma) (new 'static 'dma-tag :id (dma-tag-id next)))
(set! (-> v1-63 vif0) (new 'static 'vif-tag))
(set! (-> v1-63 vif1) (new 'static 'vif-tag))
(set! (-> s2-1 base) (the-as pointer (&+ v1-63 16)))
)
(let ((t9-6 dma-bucket-insert-tag)
(a0-33 (-> *display* frames (-> *display* on-screen) bucket-group))
(v1-70 *draw-index*)
)
(t9-6
a0-33
(cond
((zero? v1-70)
(bucket-id tfrag-ws-l0-water)
)
((= v1-70 1)
(bucket-id tfrag-ws-l1-water)
)
((= v1-70 2)
(bucket-id tfrag-ws-l2-water)
)
((= v1-70 3)
(bucket-id tfrag-ws-l3-water)
)
((= v1-70 4)
(bucket-id tfrag-ws-l4-water)
)
(else
(bucket-id tfrag-ws-l5-water)
)
)
s3-1
(the-as (pointer dma-tag) a3-6)
)
)
)
)
)
)
)
(none)
)
;; definition for function tfrag-vu1-init-buf
;; WARN: Return type mismatch pointer vs none.
(defun tfrag-vu1-init-buf ((arg0 bucket-id) (arg1 gs-test) (arg2 int) (arg3 uint) (arg4 symbol))
(let ((s4-0 (-> *display* frames (-> *display* on-screen) bucket-group arg0)))
(when (!= s4-0 (-> s4-0 last))
(let* ((s3-0 (-> *display* frames (-> *display* on-screen) global-buf))
(s2-1 (-> s3-0 base))
)
(tfrag-init-buffer s3-0 arg1 arg2 arg4)
(let ((v1-12 (the-as object (-> s3-0 base))))
(set! (-> (the-as dma-packet v1-12) dma) (new 'static 'dma-tag :id (dma-tag-id next) :addr (-> s4-0 next)))
(set! (-> (the-as dma-packet v1-12) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet v1-12) vif1) (new 'static 'vif-tag))
(set! (-> s3-0 base) (the-as pointer (&+ (the-as dma-packet v1-12) 16)))
)
(set! (-> s4-0 next) (the-as uint s2-1))
)
)
)
(let ((s5-1 (-> *display* frames (-> *display* on-screen) bucket-group arg0)))
(when (!= s5-1 (-> s5-1 last))
(let* ((s3-1 (-> *display* frames (-> *display* on-screen) global-buf))
(s4-1 (-> s3-1 base))
)
(tfrag-end-buffer s3-1 (the-as int arg3))
(let ((v0-3 (-> s3-1 base)))
(let ((v1-26 (the-as object (-> s3-1 base))))
(set! (-> (the-as dma-packet v1-26) dma) (new 'static 'dma-tag :id (dma-tag-id next)))
(set! (-> (the-as dma-packet v1-26) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet v1-26) vif1) (new 'static 'vif-tag))
(set! (-> s3-1 base) (&+ (the-as pointer v1-26) 16))
)
(set! (-> (the-as (pointer int32) (-> s5-1 last)) 1) (the-as int s4-1))
(set! (-> s5-1 last) (the-as (pointer dma-tag) v0-3))
)
)
)
)
(none)
)
;; definition for function tfrag-scissor-vu1-init-buf
;; WARN: Return type mismatch pointer vs none.
(defun tfrag-scissor-vu1-init-buf ((arg0 bucket-id) (arg1 gs-test) (arg2 int) (arg3 uint) (arg4 symbol))
(let ((s4-0 (-> *display* frames (-> *display* on-screen) bucket-group arg0)))
(when (!= s4-0 (-> s4-0 last))
(let* ((s3-0 (-> *display* frames (-> *display* on-screen) global-buf))
(s2-1 (-> s3-0 base))
)
(tfrag-scissor-init-buffer s3-0 arg1 arg2 arg4)
(let ((v1-12 (the-as object (-> s3-0 base))))
(set! (-> (the-as dma-packet v1-12) dma) (new 'static 'dma-tag :id (dma-tag-id next) :addr (-> s4-0 next)))
(set! (-> (the-as dma-packet v1-12) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet v1-12) vif1) (new 'static 'vif-tag))
(set! (-> s3-0 base) (&+ (the-as pointer v1-12) 16))
)
(set! (-> s4-0 next) (the-as uint s2-1))
)
)
)
(let ((s5-1 (-> *display* frames (-> *display* on-screen) bucket-group arg0)))
(when (!= s5-1 (-> s5-1 last))
(let* ((s3-1 (-> *display* frames (-> *display* on-screen) global-buf))
(s4-1 (-> s3-1 base))
)
(tfrag-scissor-end-buffer s3-1 arg3)
(let ((v0-3 (-> s3-1 base)))
(let ((v1-26 (the-as object (-> s3-1 base))))
(set! (-> (the-as dma-packet v1-26) dma) (new 'static 'dma-tag :id (dma-tag-id next)))
(set! (-> (the-as dma-packet v1-26) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet v1-26) vif1) (new 'static 'vif-tag))
(set! (-> s3-1 base) (&+ (the-as pointer v1-26) 16))
)
(set! (-> (the-as (pointer uint32) (-> s5-1 last)) 1) (the-as uint s4-1))
(set! (-> s5-1 last) (the-as (pointer dma-tag) v0-3))
)
)
)
)
(none)
)
;; definition of type tfrag-init-data
(deftype tfrag-init-data (structure)
((tfrag-bucket bucket-id :offset-assert 0)
(tfrag-scissor-bucket bucket-id :offset-assert 4)
(tfrag-trans-bucket bucket-id :offset-assert 8)
(tfrag-scissor-trans-bucket bucket-id :offset-assert 12)
(tfrag-water-bucket bucket-id :offset-assert 16)
(tfrag-water-scissor-bucket bucket-id :offset-assert 20)
)
:method-count-assert 9
:size-assert #x18
:flag-assert #x900000018
)
;; definition for method 3 of type tfrag-init-data
(defmethod inspect tfrag-init-data ((obj tfrag-init-data))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(format #t "[~8x] ~A~%" obj 'tfrag-init-data)
(format #t "~1Ttfrag-bucket: ~D~%" (-> obj tfrag-bucket))
(format #t "~1Ttfrag-scissor-bucket: ~D~%" (-> obj tfrag-scissor-bucket))
(format #t "~1Ttfrag-trans-bucket: ~D~%" (-> obj tfrag-trans-bucket))
(format #t "~1Ttfrag-scissor-trans-bucket: ~D~%" (-> obj tfrag-scissor-trans-bucket))
(format #t "~1Ttfrag-water-bucket: ~D~%" (-> obj tfrag-water-bucket))
(format #t "~1Ttfrag-water-scissor-bucket: ~D~%" (-> obj tfrag-water-scissor-bucket))
(label cfg-4)
obj
)
;; definition for symbol *tfrag-init-table*, type (inline-array tfrag-init-data)
(define *tfrag-init-table* (new 'static 'inline-array tfrag-init-data 6
(new 'static 'tfrag-init-data
:tfrag-bucket (bucket-id tfrag-l0-tfrag)
:tfrag-scissor-bucket (bucket-id tfrag-s-l0-tfrag)
:tfrag-trans-bucket (bucket-id tfrag-t-l0-alpha)
:tfrag-scissor-trans-bucket (bucket-id tfrag-st-l0-alpha)
:tfrag-water-bucket (bucket-id tfrag-w-l0-water)
:tfrag-water-scissor-bucket (bucket-id tfrag-ws-l0-water)
)
(new 'static 'tfrag-init-data
:tfrag-bucket (bucket-id tfrag-l1-tfrag)
:tfrag-scissor-bucket (bucket-id tfrag-s-l1-tfrag)
:tfrag-trans-bucket (bucket-id tfrag-t-l1-alpha)
:tfrag-scissor-trans-bucket (bucket-id tfrag-st-l1-alpha)
:tfrag-water-bucket (bucket-id tfrag-w-l1-water)
:tfrag-water-scissor-bucket (bucket-id tfrag-ws-l1-water)
)
(new 'static 'tfrag-init-data
:tfrag-bucket (bucket-id tfrag-l2-tfrag)
:tfrag-scissor-bucket (bucket-id tfrag-s-l2-tfrag)
:tfrag-trans-bucket (bucket-id tfrag-t-l2-alpha)
:tfrag-scissor-trans-bucket (bucket-id tfrag-st-l2-alpha)
:tfrag-water-bucket (bucket-id tfrag-w-l2-water)
:tfrag-water-scissor-bucket (bucket-id tfrag-ws-l2-water)
)
(new 'static 'tfrag-init-data
:tfrag-bucket (bucket-id tfrag-l3-tfrag)
:tfrag-scissor-bucket (bucket-id tfrag-s-l3-tfrag)
:tfrag-trans-bucket (bucket-id tfrag-t-l3-alpha)
:tfrag-scissor-trans-bucket (bucket-id tfrag-st-l3-alpha)
:tfrag-water-bucket (bucket-id tfrag-w-l3-water)
:tfrag-water-scissor-bucket (bucket-id tfrag-ws-l3-water)
)
(new 'static 'tfrag-init-data
:tfrag-bucket (bucket-id tfrag-l4-tfrag)
:tfrag-scissor-bucket (bucket-id tfrag-s-l4-tfrag)
:tfrag-trans-bucket (bucket-id tfrag-t-l4-alpha)
:tfrag-scissor-trans-bucket (bucket-id tfrag-st-l4-alpha)
:tfrag-water-bucket (bucket-id tfrag-w-l4-water)
:tfrag-water-scissor-bucket (bucket-id tfrag-ws-l4-water)
)
(new 'static 'tfrag-init-data
:tfrag-bucket (bucket-id tfrag-l5-tfrag)
:tfrag-scissor-bucket (bucket-id tfrag-s-l5-tfrag)
:tfrag-trans-bucket (bucket-id tfrag-t-l5-alpha)
:tfrag-scissor-trans-bucket (bucket-id tfrag-st-l5-alpha)
:tfrag-water-bucket (bucket-id tfrag-w-l5-water)
:tfrag-water-scissor-bucket (bucket-id tfrag-ws-l5-water)
)
)
)
;; definition for function tfrag-vu1-init-buffers
;; WARN: Return type mismatch symbol vs none.
(defun tfrag-vu1-init-buffers ()
(dotimes (gp-0 6)
(let ((s5-0 (-> *level* draw-level gp-0))
(s4-0 (-> *tfrag-init-table* gp-0))
)
(when s5-0
(let ((s3-0 (-> s5-0 tfrag-gs-test)))
(tfrag-vu1-init-buf
(-> s4-0 tfrag-bucket)
s3-0
0
(-> s5-0 tfrag-last-calls-u32 0)
(-> s5-0 info use-camera-other)
)
(tfrag-scissor-vu1-init-buf
(-> s4-0 tfrag-scissor-bucket)
s3-0
0
(-> s5-0 tfrag-last-calls-u32 1)
(-> s5-0 info use-camera-other)
)
)
(tfrag-vu1-init-buf
(-> s4-0 tfrag-trans-bucket)
(new 'static 'gs-test
:ate #x1
:atst (gs-atest greater-equal)
:aref #x26
:afail #x1
:zte #x1
:ztst (gs-ztest greater-equal)
)
1
(-> s5-0 tfrag-last-calls-u32 2)
(-> s5-0 info use-camera-other)
)
(tfrag-scissor-vu1-init-buf
(-> s4-0 tfrag-scissor-trans-bucket)
(new 'static 'gs-test
:ate #x1
:atst (gs-atest greater-equal)
:aref #x26
:afail #x1
:zte #x1
:ztst (gs-ztest greater-equal)
)
1
(-> s5-0 tfrag-last-calls-u32 3)
(-> s5-0 info use-camera-other)
)
(tfrag-vu1-init-buf
(-> s4-0 tfrag-water-bucket)
(new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest greater-equal))
1
(-> s5-0 tfrag-last-calls-u32 4)
(-> s5-0 info use-camera-other)
)
(tfrag-scissor-vu1-init-buf
(-> s4-0 tfrag-water-scissor-bucket)
(new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest greater-equal))
1
(-> s5-0 tfrag-last-calls-u32 5)
(-> s5-0 info use-camera-other)
)
)
)
)
(none)
)
;; definition for method 10 of type drawable-tree-tfrag
;; WARN: Return type mismatch int vs none.
(defmethod draw drawable-tree-tfrag ((obj drawable-tree-tfrag) (arg0 drawable-tree-tfrag) (arg1 display-frame))
(let ((v1-1 (-> *background-work* tfrag-tree-count))
(a1-4 (-> *level* draw-level *draw-index*))
)
(set! (-> *background-work* tfrag-trees v1-1) obj)
(set! (-> *background-work* tfrag-levels v1-1) a1-4)
)
(+! (-> *background-work* tfrag-tree-count) 1)
0
(none)
)
;; definition for method 10 of type drawable-tree-tfrag-trans
;; WARN: Return type mismatch int vs none.
(defmethod draw drawable-tree-tfrag-trans ((obj drawable-tree-tfrag-trans) (arg0 drawable-tree-tfrag-trans) (arg1 display-frame))
(let ((v1-1 (-> *background-work* tfrag-trans-tree-count))
(a1-4 (-> *level* draw-level *draw-index*))
)
(set! (-> *background-work* tfrag-trans-trees v1-1) obj)
(set! (-> *background-work* tfrag-trans-levels v1-1) a1-4)
)
(+! (-> *background-work* tfrag-trans-tree-count) 1)
0
(none)
)
;; definition for method 10 of type drawable-tree-tfrag-water
;; WARN: Return type mismatch int vs none.
(defmethod draw drawable-tree-tfrag-water ((obj drawable-tree-tfrag-water) (arg0 drawable-tree-tfrag-water) (arg1 display-frame))
(let ((v1-1 (-> *background-work* tfrag-water-tree-count))
(a1-4 (-> *level* draw-level *draw-index*))
)
(set! (-> *background-work* tfrag-water-trees v1-1) obj)
(set! (-> *background-work* tfrag-water-levels v1-1) a1-4)
)
(+! (-> *background-work* tfrag-water-tree-count) 1)
0
(none)
)
;; definition for method 13 of type tfragment
;; WARN: Return type mismatch int vs none.
(defmethod collect-stats tfragment ((obj tfragment))
(stats-tfrag-asm obj)
0
(none)
)
;; definition for method 13 of type drawable-tree-tfrag
;; INFO: Used lq/sq
;; WARN: Return type mismatch int vs none.
(defmethod collect-stats drawable-tree-tfrag ((obj drawable-tree-tfrag))
(when (logtest? (-> *display* vu1-enable-user) (vu1-renderer-mask tfrag))
(set! (-> *tfrag-work* vu1-enable-tfrag)
(the-as int (logand (-> *display* vu1-enable-user) (vu1-renderer-mask tfrag)))
)
(set! (-> *tfrag-work* vu1-enable-tfrag-scissor)
(the-as int (logand (-> *display* vu1-enable-user) (vu1-renderer-mask tfrag)))
)
(set! (-> *tfrag-work* tr-stat-tfrag) (-> *terrain-stats* tfrag))
(set! (-> *tfrag-work* tr-stat-tfrag-scissor) (-> *terrain-stats* tfrag-scissor))
(let ((v1-15 (-> *tfrag-work* frag-dists quad)))
(set! (-> *tfrag-work* frag-dists quad) v1-15)
)
(dotimes (s5-0 (-> obj length))
(collect-stats (-> obj arrays s5-0))
)
)
0
(none)
)
;; definition for method 13 of type drawable-tree-tfrag-trans
;; INFO: Used lq/sq
;; WARN: Return type mismatch int vs none.
(defmethod collect-stats drawable-tree-tfrag-trans ((obj drawable-tree-tfrag-trans))
(when (logtest? (vu1-renderer-mask tfrag-trans) (-> *display* vu1-enable-user))
(set! (-> *tfrag-work* vu1-enable-tfrag)
(the-as int (logand (vu1-renderer-mask tfrag-trans) (-> *display* vu1-enable-user)))
)
(set! (-> *tfrag-work* vu1-enable-tfrag-scissor)
(the-as int (logand (vu1-renderer-mask tfrag-trans) (-> *display* vu1-enable-user)))
)
(set! (-> *tfrag-work* tr-stat-tfrag) (-> *terrain-stats* tfrag-trans))
(set! (-> *tfrag-work* tr-stat-tfrag-scissor) (-> *terrain-stats* tfrag-scissor-trans))
(let ((v1-12 (-> *tfrag-work* frag-dists quad)))
(set! (-> *tfrag-work* frag-dists quad) v1-12)
)
(dotimes (s5-0 (-> obj length))
(collect-stats (-> obj arrays s5-0))
)
)
0
(none)
)
;; definition for method 13 of type drawable-tree-tfrag-water
;; INFO: Used lq/sq
;; WARN: Return type mismatch int vs none.
(defmethod collect-stats drawable-tree-tfrag-water ((obj drawable-tree-tfrag-water))
(when (logtest? (vu1-renderer-mask tfrag-water) (-> *display* vu1-enable-user))
(set! (-> *tfrag-work* vu1-enable-tfrag)
(the-as int (logand (vu1-renderer-mask tfrag-water) (-> *display* vu1-enable-user)))
)
(set! (-> *tfrag-work* vu1-enable-tfrag-scissor)
(the-as int (logand (vu1-renderer-mask tfrag-water) (-> *display* vu1-enable-user)))
)
(set! (-> *tfrag-work* tr-stat-tfrag) (-> *terrain-stats* tfrag-water))
(set! (-> *tfrag-work* tr-stat-tfrag-scissor) (-> *terrain-stats* tfrag-scissor-water))
(let ((v1-12 (-> *tfrag-work* frag-dists quad)))
(set! (-> *tfrag-work* frag-dists quad) v1-12)
)
(dotimes (s5-0 (-> obj length))
(collect-stats (-> obj arrays s5-0))
)
)
0
(none)
)
;; definition for method 13 of type drawable-inline-array-tfrag
;; WARN: Return type mismatch int vs none.
(defmethod collect-stats drawable-inline-array-tfrag ((obj drawable-inline-array-tfrag))
(when (logtest? (-> *display* vu1-enable-user) (vu1-renderer-mask tfrag))
(dotimes (s5-0 (-> obj length))
(let ((s4-0 (-> obj data s5-0)))
(if (vis-cull (-> s4-0 id))
(collect-stats s4-0)
)
)
)
)
0
(none)
)
;; definition for method 13 of type drawable-inline-array-tfrag-trans
;; WARN: Return type mismatch int vs none.
(defmethod collect-stats drawable-inline-array-tfrag-trans ((obj drawable-inline-array-tfrag-trans))
(when (logtest? (vu1-renderer-mask tfrag-trans) (-> *display* vu1-enable-user))
(dotimes (s5-0 (-> obj length))
(let ((s4-0 (-> obj data s5-0)))
(if (vis-cull (-> s4-0 id))
(collect-stats s4-0)
)
)
)
)
0
(none)
)
;; definition for method 13 of type drawable-inline-array-tfrag-water
;; WARN: Return type mismatch int vs none.
(defmethod collect-stats drawable-inline-array-tfrag-water ((obj drawable-inline-array-tfrag-water))
(when (logtest? (vu1-renderer-mask tfrag-water) (-> *display* vu1-enable-user))
(dotimes (s5-0 (-> obj length))
(let ((s4-0 (-> obj data s5-0)))
(if (vis-cull (-> s4-0 id))
(collect-stats s4-0)
)
)
)
)
0
(none)
)
;; definition for method 14 of type drawable-tree-tfrag
;; WARN: Return type mismatch int vs none.
(defmethod debug-draw drawable-tree-tfrag ((obj drawable-tree-tfrag) (arg0 drawable) (arg1 display-frame))
(when (logtest? (-> *display* vu1-enable-user) (vu1-renderer-mask tfrag))
(dotimes (s4-0 (-> obj length))
(let ((a1-1 (-> obj arrays s4-0)))
(debug-draw a1-1 a1-1 arg1)
)
)
)
0
(none)
)
;; definition for method 14 of type drawable-tree-tfrag-trans
;; WARN: Return type mismatch int vs none.
(defmethod debug-draw drawable-tree-tfrag-trans ((obj drawable-tree-tfrag-trans) (arg0 drawable) (arg1 display-frame))
(when (logtest? (vu1-renderer-mask tfrag-trans) (-> *display* vu1-enable-user))
(dotimes (s4-0 (-> obj length))
(let ((a1-1 (-> obj arrays s4-0)))
(debug-draw a1-1 a1-1 arg1)
)
)
)
0
(none)
)
;; definition for method 14 of type drawable-tree-tfrag-water
;; WARN: Return type mismatch int vs none.
(defmethod debug-draw drawable-tree-tfrag-water ((obj drawable-tree-tfrag-water) (arg0 drawable) (arg1 display-frame))
(when (logtest? (vu1-renderer-mask tfrag-water) (-> *display* vu1-enable-user))
(dotimes (s4-0 (-> obj length))
(let ((a1-1 (-> obj arrays s4-0)))
(debug-draw a1-1 a1-1 arg1)
)
)
)
0
(none)
)
;; definition for method 14 of type drawable-inline-array-tfrag
;; WARN: Return type mismatch int vs none.
(defmethod debug-draw drawable-inline-array-tfrag ((obj drawable-inline-array-tfrag) (arg0 drawable) (arg1 display-frame))
(dotimes (s4-0 (-> obj length))
(let ((s3-0 (-> obj data s4-0)))
(if (vis-cull (-> s3-0 id))
(debug-draw s3-0 s3-0 arg1)
)
)
)
0
(none)
)
;; definition for method 14 of type tfragment
;; WARN: Return type mismatch int vs none.
(defmethod debug-draw tfragment ((obj tfragment) (arg0 drawable) (arg1 display-frame))
(-> arg1 global-buf)
(edge-debug-lines (-> obj debug-data debug-lines))
0
(none)
)
+709
View File
@@ -0,0 +1,709 @@
;;-*-Lisp-*-
(in-package goal)
;; definition for method 9 of type tie-fragment
(defmethod login tie-fragment ((obj tie-fragment))
(let ((s5-0 (the-as adgif-shader (-> obj gif-ref)))
(s4-0 (/ (-> obj tex-count) (the-as uint 5)))
)
(dotimes (s3-0 (the-as int s4-0))
(let ((v1-1 (adgif-shader-login-no-remap s5-0)))
(when v1-1
(dotimes (a0-4 3)
(dotimes (a1-0 3)
(set! (-> (the-as (pointer int32) (+ (+ (* a0-4 16) (* a1-0 4)) (the-as int *texture-masks*))))
(logior (-> (the-as (pointer int32) (+ (* a1-0 4) (the-as int *texture-masks*) (* a0-4 16))) 0)
(-> (the-as (pointer int32) (+ (* a1-0 4) (the-as int v1-1) (* a0-4 16))) 15)
)
)
)
(set! (-> *texture-masks* data a0-4 dist)
(fmax (-> *texture-masks* data a0-4 dist) (-> v1-1 masks data a0-4 dist))
)
)
)
)
(when (= (-> s5-0 reg-4) 66)
(set! (-> s5-0 reg-4) (the-as uint 127))
(set! (-> s5-0 alpha) (new 'static 'gs-alpha))
0
)
(&+! s5-0 80)
)
)
obj
)
;; definition for method 3 of type drawable-inline-array-instance-tie
(defmethod inspect drawable-inline-array-instance-tie ((obj drawable-inline-array-instance-tie))
(format #t "[~8x] ~A~%" obj (-> obj type))
(format #t "~Tlength: ~D~%" (-> obj length))
(format #t "~Tdata[~D]: @ #x~X~%" (-> obj length) (-> obj data))
(dotimes (s5-0 (-> obj length))
(format #t "~T [~D] ~A~%" s5-0 (-> obj data s5-0))
)
obj
)
;; definition for method 5 of type drawable-inline-array-instance-tie
;; WARN: Return type mismatch uint vs int.
(defmethod asize-of drawable-inline-array-instance-tie ((obj drawable-inline-array-instance-tie))
(the-as int (+ (-> drawable-inline-array-instance-tie size) (* (+ (-> obj length) -1) 64)))
)
;; definition for method 9 of type drawable-tree-instance-tie
;; INFO: this function exists in multiple non-identical object files
(defmethod login drawable-tree-instance-tie ((obj drawable-tree-instance-tie))
obj
)
;; definition for method 9 of type drawable-tree-instance-tie
;; INFO: this function exists in multiple non-identical object files
(defmethod login drawable-tree-instance-tie ((obj drawable-tree-instance-tie))
(dotimes (s5-0 (-> obj length))
(login (-> obj data s5-0))
)
obj
)
;; definition for method 3 of type prototype-tie
(defmethod inspect prototype-tie ((obj prototype-tie))
(format #t "[~8x] ~A~%" obj (-> obj type))
(format #t "~Tlength: ~D~%" (-> obj length))
(format #t "~Tdata[~D]: @ #x~X~%" (-> obj length) (-> obj data))
(dotimes (s5-0 (-> obj length))
(format #t "~T [~D] ~A~%" s5-0 (-> obj data s5-0))
)
obj
)
;; definition for method 9 of type prototype-tie
(defmethod login prototype-tie ((obj prototype-tie))
(dotimes (s5-0 (-> obj length))
(login (-> obj data s5-0))
)
obj
)
;; definition for method 8 of type drawable-tree-instance-tie
(defmethod mem-usage drawable-tree-instance-tie ((obj drawable-tree-instance-tie) (arg0 memory-usage-block) (arg1 int))
(set! (-> arg0 length) (max 1 (-> arg0 length)))
(set! (-> arg0 data 0 name) (symbol->string 'drawable-group))
(+! (-> arg0 data 0 count) 1)
(let ((v1-7 32))
(+! (-> arg0 data 0 used) v1-7)
(+! (-> arg0 data 0 total) (logand -16 (+ v1-7 15)))
)
(dotimes (s3-0 (-> obj length))
(mem-usage (-> obj data s3-0) arg0 arg1)
)
(mem-usage (-> obj prototypes prototype-array-tie) arg0 (logior arg1 1))
obj
)
;; definition for method 8 of type tie-fragment
(defmethod mem-usage tie-fragment ((obj tie-fragment) (arg0 memory-usage-block) (arg1 int))
(when (logtest? arg1 2)
(let ((v1-3 (* (-> obj color-count) 4))
(a0-2 (cond
((logtest? arg1 4)
20
)
((logtest? arg1 8)
21
)
(else
22
)
)
)
)
(+! (-> arg0 data a0-2 count) 1)
(+! (-> arg0 data a0-2 used) v1-3)
(+! (-> arg0 data a0-2 total) (logand -4 (+ v1-3 3)))
)
(set! (-> arg0 length) (max 23 (-> arg0 length)))
(set! obj obj)
(goto cfg-13)
)
(set! (-> arg0 length) (max 18 (-> arg0 length)))
(set! (-> arg0 data 9 name) "tie-fragment")
(set! (-> arg0 data 10 name) "tie-gif")
(set! (-> arg0 data 11 name) "tie-points")
(set! (-> arg0 data 12 name) "tie-colors")
(set! (-> arg0 data 14 name) "tie-debug")
(set! (-> arg0 data 13 name) "tie-draw-points")
(set! (-> arg0 data 17 name) "tie-generic")
(+! (-> arg0 data 9 count) 1)
(let ((v1-21 (asize-of obj)))
(+! (-> arg0 data 9 used) v1-21)
(+! (-> arg0 data 9 total) (logand -16 (+ v1-21 15)))
)
(let ((v1-26 (* (-> obj gif-count) 16)))
(+! (-> arg0 data 10 count) (-> obj tex-count))
(+! (-> arg0 data 10 used) v1-26)
(+! (-> arg0 data 10 total) (logand -16 (+ v1-26 15)))
)
(let ((v1-31 (* (-> obj vertex-count) 16)))
(+! (-> arg0 data 11 count) (-> obj vertex-count))
(+! (-> arg0 data 11 used) v1-31)
(+! (-> arg0 data 11 total) (logand -16 (+ v1-31 15)))
)
(let ((v1-36 (* (-> obj dp-qwc) 16)))
(+! (-> arg0 data 13 count) (* (-> obj dp-qwc) 16))
(+! (-> arg0 data 13 used) v1-36)
(+! (-> arg0 data 13 total) (logand -16 (+ v1-36 15)))
)
(let ((v1-41 (* (-> obj generic-count) 16)))
(+! (-> arg0 data 17 count) 1)
(+! (-> arg0 data 17 used) v1-41)
(+! (-> arg0 data 17 total) (logand -16 (+ v1-41 15)))
)
(let ((s4-0 (-> obj debug debug-lines)))
(when (nonzero? s4-0)
(dotimes (s3-0 (-> s4-0 length))
(+! (-> arg0 data 14 count) (-> s4-0 s3-0 length))
(let ((v1-52 (asize-of (-> s4-0 s3-0))))
(+! (-> arg0 data 12 used) v1-52)
(+! (-> arg0 data 12 total) (logand -16 (+ v1-52 15)))
)
)
)
)
(label cfg-13)
obj
)
;; definition for method 8 of type instance-tie
(defmethod mem-usage instance-tie ((obj instance-tie) (arg0 memory-usage-block) (arg1 int))
(set! (-> arg0 length) (max 19 (-> arg0 length)))
(set! (-> arg0 data 18 name) "instance-tie")
(+! (-> arg0 data 18 count) 1)
(let ((v1-6 (asize-of obj)))
(+! (-> arg0 data 18 used) v1-6)
(+! (-> arg0 data 18 total) (logand -16 (+ v1-6 15)))
)
(when (nonzero? (-> obj color-indices))
(set! (-> arg0 length) (max 24 (-> arg0 length)))
(set! (-> arg0 data 23 name) "instance-tie-colors*")
(set! (-> arg0 data 19 name) "instance-tie-colors0")
(set! (-> arg0 data 20 name) "instance-tie-colors1")
(set! (-> arg0 data 21 name) "instance-tie-colors2")
(set! (-> arg0 data 22 name) "instance-tie-colors3")
(+! (-> arg0 data 23 count) 1)
(let ((s3-0 (-> obj bucket-ptr)))
(+ (-> arg0 data 19 used) (-> arg0 data 20 used) (-> arg0 data 21 used) (-> arg0 data 22 used))
(dotimes (s2-0 4)
(let ((a0-10 (-> s3-0 tie-geom s2-0)))
(when (nonzero? a0-10)
(let ((t9-1 (method-of-object a0-10 mem-usage))
(a1-2 arg0)
(v1-29 s2-0)
)
(t9-1 a0-10 a1-2 (logior (logior (cond
((= v1-29 1)
4
)
((= v1-29 2)
8
)
((= v1-29 3)
16
)
(else
0
)
)
2
)
arg1
)
)
)
)
)
)
)
)
obj
)
;; definition for method 8 of type drawable-inline-array-instance-tie
(defmethod mem-usage drawable-inline-array-instance-tie ((obj drawable-inline-array-instance-tie) (arg0 memory-usage-block) (arg1 int))
(set! (-> arg0 length) (max 1 (-> arg0 length)))
(set! (-> arg0 data 0 name) (symbol->string 'drawable-group))
(+! (-> arg0 data 0 count) 1)
(let ((v1-7 32))
(+! (-> arg0 data 0 used) v1-7)
(+! (-> arg0 data 0 total) (logand -16 (+ v1-7 15)))
)
(dotimes (s3-0 (-> obj length))
(mem-usage (-> obj data s3-0) arg0 arg1)
)
obj
)
;; definition for method 8 of type prototype-tie
(defmethod mem-usage prototype-tie ((obj prototype-tie) (arg0 memory-usage-block) (arg1 int))
(set! (-> arg0 length) (max 1 (-> arg0 length)))
(set! (-> arg0 data 0 name) (symbol->string 'drawable-group))
(+! (-> arg0 data 0 count) 1)
(let ((v1-7 32))
(+! (-> arg0 data 0 used) v1-7)
(+! (-> arg0 data 0 total) (logand -16 (+ v1-7 15)))
)
(dotimes (s3-0 (-> obj length))
(mem-usage (-> obj data s3-0) arg0 arg1)
)
obj
)
;; definition for method 5 of type prototype-tie
;; WARN: Return type mismatch uint vs int.
(defmethod asize-of prototype-tie ((obj prototype-tie))
(the-as int (+ (-> prototype-tie size) (* (+ (-> obj length) -1) 64)))
)
;; definition of type tie-consts
(deftype tie-consts (structure)
((data uint32 40 :offset 0)
(vector vector 10 :offset 0)
(quads uint128 10 :offset 0)
(adgif gs-gif-tag :inline :offset 0)
(strgif gs-gif-tag :inline :offset 16)
(extra vector :inline :offset 32)
(gifbufs vector :inline :offset 48)
(clrbufs qword :inline :offset 64)
(misc qword :inline :offset 80)
(atestgif gs-gif-tag :inline :offset 96)
(alpha gs-adcmd :inline :offset 112)
(atest gs-adcmd 2 :inline :offset 128)
(atest-tra gs-adcmd :inline :offset 128)
(atest-def gs-adcmd :inline :offset 144)
)
:method-count-assert 9
:size-assert #xa0
:flag-assert #x9000000a0
)
;; definition for method 3 of type tie-consts
(defmethod inspect tie-consts ((obj tie-consts))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(format #t "[~8x] ~A~%" obj 'tie-consts)
(format #t "~1Tdata[40] @ #x~X~%" (-> obj adgif))
(format #t "~1Tvector[10] @ #x~X~%" (-> obj adgif))
(format #t "~1Tquads[10] @ #x~X~%" (-> obj adgif))
(format #t "~1Tadgif: #<qword @ #x~X>~%" (-> obj adgif))
(format #t "~1Tstrgif: #<qword @ #x~X>~%" (-> obj strgif))
(format #t "~1Textra: #<qword @ #x~X>~%" (-> obj extra))
(format #t "~1Tgifbufs: #<qword @ #x~X>~%" (-> obj gifbufs))
(format #t "~1Tclrbufs: #<qword @ #x~X>~%" (-> obj clrbufs))
(format #t "~1Tmisc: #<qword @ #x~X>~%" (-> obj misc))
(format #t "~1Tatestgif: #<qword @ #x~X>~%" (-> obj atestgif))
(format #t "~1Talpha: #<qword @ #x~X>~%" (-> obj alpha))
(format #t "~1Tatest[2] @ #x~X~%" (-> obj atest-tra))
(format #t "~1Tatest-tra: #<gs-adcmd @ #x~X>~%" (-> obj atest-tra))
(format #t "~1Tatest-def: #<gs-adcmd @ #x~X>~%" (-> obj atest-def))
(label cfg-4)
obj
)
;; definition for symbol tie-vu1-block, type vu-function
(define tie-vu1-block (new 'static 'vu-function :length #x3e7 :qlength #x1f4))
;; definition for function tie-init-consts
;; WARN: Return type mismatch int vs none.
(defun tie-init-consts ((arg0 tie-consts) (arg1 gs-alpha) (arg2 gs-test) (arg3 gs-test))
(set! (-> arg0 adgif tag) (new 'static 'gif-tag64 :nloop #x5 :nreg #x1))
(set! (-> arg0 adgif regs) (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d)))
(case *subdivide-draw-mode*
(((subdivide-setting textured))
(set! (-> arg0 strgif tag)
(new 'static 'gif-tag64
:pre #x1
:prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :fge #x1 :abe #x1)
:nreg #x3
)
)
)
(((subdivide-setting outline))
(set! (-> arg0 strgif tag)
(new 'static 'gif-tag64
:pre #x1
:prim (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #x1 :fge #x1 :abe #x1)
:nreg #x3
)
)
)
(((subdivide-setting gouraud))
(set! (-> arg0 strgif tag)
(new 'static 'gif-tag64
:pre #x1
:prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :fge #x1 :abe #x1)
:nreg #x3
)
)
)
(((subdivide-setting hack))
(set! (-> arg0 strgif tag)
(new 'static 'gif-tag64
:pre #x1
:prim (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #x1 :fge #x1 :abe #x1)
:nreg #x3
)
)
)
)
(set! (-> arg0 strgif regs)
(new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2))
)
(let ((f0-0 8388894.0)
(f1-0 8389078.0)
(f2-0 8389262.0)
)
(set! (-> arg0 gifbufs x) f2-0)
(set! (-> arg0 gifbufs y) f1-0)
(set! (-> arg0 gifbufs z) f2-0)
(set! (-> arg0 gifbufs w) f1-0)
(set! (-> arg0 extra x) (+ f0-0 f1-0 f2-0))
(set! (-> arg0 extra y) 0.0)
(set! (-> arg0 extra z) (+ f0-0 f1-0 f2-0))
)
(set! (-> arg0 clrbufs vector4w x) 198)
(set! (-> arg0 clrbufs vector4w y) 242)
(set! (-> arg0 clrbufs vector4w z) 198)
(set! (-> arg0 clrbufs vector4w w) 242)
(set! (-> arg0 atestgif tag) (new 'static 'gif-tag64 :nloop #x2 :eop #x1 :nreg #x1))
(set! (-> arg0 atestgif regs) (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d)))
(set! (-> arg0 alpha data) (the-as uint arg1))
(set! (-> arg0 alpha cmds) (gs-reg64 alpha-1))
(set! (-> arg0 atest-tra cmds) (gs-reg64 test-1))
(set! (-> arg0 atest-tra data) (the-as uint arg2))
(set! (-> arg0 atest-def cmds) (gs-reg64 test-1))
(set! (-> arg0 atest-def data) (the-as uint arg3))
(set! (-> arg0 misc vector4w x) 0)
(set! (-> arg0 misc vector4w y) -1)
(none)
)
;; definition for function tie-init-engine
;; WARN: Return type mismatch int vs none.
(defun tie-init-engine ((arg0 dma-buffer) (arg1 gs-alpha) (arg2 gs-test) (arg3 gs-test))
(dma-buffer-add-vu-function arg0 tie-vu1-block 1)
(let ((s5-0 10))
(let* ((v1-0 arg0)
(a0-2 (the-as dma-packet (-> v1-0 base)))
)
(set! (-> a0-2 dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc s5-0))
(set! (-> a0-2 vif0) (new 'static 'vif-tag :cmd (vif-cmd stmod)))
(set! (-> a0-2 vif1) (new 'static 'vif-tag :imm #x3c6 :cmd (vif-cmd unpack-v4-32) :num s5-0))
(set! (-> v1-0 base) (the-as pointer (&+ a0-2 16)))
)
(tie-init-consts (the-as tie-consts (-> arg0 base)) arg1 arg2 arg3)
(&+! (-> arg0 base) (* s5-0 16))
)
(let* ((v1-3 arg0)
(a0-6 (the-as dma-packet (-> v1-3 base)))
)
(set! (-> a0-6 dma) (new 'static 'dma-tag :id (dma-tag-id cnt)))
(set! (-> a0-6 vif0) (new 'static 'vif-tag :imm #x8 :cmd (vif-cmd mscalf) :msk #x1))
(set! (-> a0-6 vif1) (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1))
(set! (-> v1-3 base) (the-as pointer (&+ a0-6 16)))
)
(let* ((v1-4 arg0)
(a0-8 (the-as dma-packet (-> v1-4 base)))
)
(set! (-> a0-8 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt)))
(set! (-> a0-8 vif0) (new 'static 'vif-tag))
(set! (-> a0-8 vif1) (new 'static 'vif-tag :cmd (vif-cmd strow) :msk #x1))
(set! (-> v1-4 base) (the-as pointer (&+ a0-8 16)))
)
(let ((v1-5 (the-as object (-> arg0 base))))
(set! (-> (the-as vector v1-5) x) 8388608.0)
(set! (-> (the-as vector v1-5) y) 8388608.0)
(set! (-> (the-as vector v1-5) z) 8388608.0)
(set! (-> (the-as vector v1-5) w) 8388608.0)
(set! (-> (the-as (pointer vif-tag) v1-5) 4) (new 'static 'vif-tag :cmd (vif-cmd base)))
(set! (-> (the-as (pointer vif-tag) v1-5) 5) (new 'static 'vif-tag :imm #x2c :cmd (vif-cmd offset)))
(set! (-> (the-as (pointer vif-tag) v1-5) 6) (new 'static 'vif-tag :cmd (vif-cmd stmod)))
(set! (-> (the-as (pointer vif-tag) v1-5) 7) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)))
(set! (-> arg0 base) (&+ (the-as pointer v1-5) 32))
)
0
(none)
)
;; definition for function tie-end-buffer
;; WARN: Return type mismatch int vs none.
(defun tie-end-buffer ((arg0 dma-buffer))
(let* ((v1-0 arg0)
(a1-0 (the-as dma-packet (-> v1-0 base)))
)
(set! (-> a1-0 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt)))
(set! (-> a1-0 vif0) (new 'static 'vif-tag))
(set! (-> a1-0 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-0 base) (the-as pointer (&+ a1-0 16)))
)
(let* ((v1-1 arg0)
(a1-2 (the-as gs-gif-tag (-> v1-1 base)))
)
(set! (-> a1-2 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1))
(set! (-> a1-2 regs) GIF_REGS_ALL_AD)
(set! (-> v1-1 base) (the-as pointer (&+ a1-2 16)))
)
(let* ((v1-2 arg0)
(a1-4 (-> v1-2 base))
)
(set! (-> (the-as (pointer gs-test) a1-4) 0) (new 'static 'gs-test :zte #x1 :ztst (gs-ztest greater-equal)))
(set! (-> (the-as (pointer gs-reg64) a1-4) 1) (gs-reg64 test-1))
(set! (-> v1-2 base) (&+ a1-4 16))
)
(let* ((v1-3 arg0)
(a1-6 (the-as dma-packet (-> v1-3 base)))
)
(set! (-> a1-6 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt)))
(set! (-> a1-6 vif0) (new 'static 'vif-tag :cmd (vif-cmd stmask)))
(set! (-> a1-6 vif1) (new 'static 'vif-tag))
(set! (-> v1-3 base) (the-as pointer (&+ a1-6 16)))
)
(let* ((v1-4 arg0)
(a0-1 (-> v1-4 base))
)
(set! (-> (the-as (pointer vif-tag) a0-1) 0) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd mscalf) :msk #x1))
(set! (-> (the-as (pointer vif-tag) a0-1) 1) (new 'static 'vif-tag :cmd (vif-cmd stmod)))
(set! (-> (the-as (pointer vif-tag) a0-1) 2) (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1))
(set! (-> (the-as (pointer vif-tag) a0-1) 3) (new 'static 'vif-tag :cmd (vif-cmd strow) :msk #x1))
(set! (-> (the-as (pointer int32) a0-1) 4) 0)
(set! (-> (the-as (pointer int32) a0-1) 5) 0)
(set! (-> (the-as (pointer int32) a0-1) 6) 0)
(set! (-> (the-as (pointer int32) a0-1) 7) 0)
(set! (-> v1-4 base) (&+ a0-1 32))
)
0
(none)
)
;; definition (debug) for function tie-int-reg
(defun-debug tie-int-reg ((arg0 int))
(let ((v1-0 arg0))
(cond
((zero? v1-0)
"zero"
)
((= v1-0 1)
"itemp"
)
((= v1-0 2)
"point-ptr"
)
((= v1-0 3)
"clr-ptr"
)
((= v1-0 4)
"target-bp1-ptr"
)
((= v1-0 5)
"skip-bp2"
)
((= v1-0 6)
"target-bp2-ptr"
)
((= v1-0 7)
"target-ip1-ptr"
)
((= v1-0 8)
"target-ip2-ptr"
)
((= v1-0 9)
"ind/ind0"
)
((= v1-0 10)
" ind1"
)
((= v1-0 11)
" ind2"
)
((= v1-0 12)
"dest-ptr"
)
((= v1-0 13)
"dest2-ptr"
)
((= v1-0 14)
"skip-ips"
)
((= v1-0 15)
"kick-addr"
)
)
)
)
;; definition (debug) for function tie-float-reg
(defun-debug tie-float-reg ((arg0 int))
(let ((v1-0 arg0))
(cond
((zero? v1-0)
"zero"
)
((= v1-0 1)
"t-mtx0"
)
((= v1-0 2)
"t-mtx1"
)
((= v1-0 3)
"t-mtx2"
)
((= v1-0 4)
"t-mtx3"
)
((= v1-0 5)
"vtx-0"
)
((= v1-0 6)
"vtx-1"
)
((= v1-0 7)
"vtx-2"
)
((= v1-0 8)
"vtx-3"
)
((= v1-0 9)
"pos-0/2"
)
((= v1-0 10)
"pos-1/3"
)
((= v1-0 11)
"clr-0"
)
((= v1-0 12)
"clr-1"
)
((= v1-0 13)
"clr-2"
)
((= v1-0 14)
"clr-3"
)
((= v1-0 15)
"tex-0"
)
((= v1-0 16)
"tex-1"
)
((= v1-0 17)
"tex-2"
)
((= v1-0 18)
"tex-3"
)
((= v1-0 19)
"res-0/2"
)
((= v1-0 20)
"res-1/3"
)
((= v1-0 21)
"gifbuf"
)
((= v1-0 22)
"clrbuf"
)
((= v1-0 23)
"extra"
)
((= v1-0 24)
"inds"
)
((= v1-0 25)
"--"
)
((= v1-0 26)
"--"
)
((= v1-0 27)
"morph"
)
((= v1-0 28)
"xyzofs"
)
((= v1-0 29)
"clr1"
)
((= v1-0 30)
"clr2"
)
((= v1-0 31)
"--"
)
)
)
)
;; definition (debug) for function tie-ints
;; INFO: Used lq/sq
;; WARN: Return type mismatch symbol vs none.
(defun-debug tie-ints ()
(local-vars (sv-16 uint))
(let ((gp-0 (+ #x3da0 #x1100c000)))
(dotimes (s5-0 16)
(if (< s5-0 10)
(format 0 " ")
)
(let ((s4-0 format)
(s3-0 0)
(s2-0 "vi~d: ~6d #x~4,'0X ~s~%")
(s1-0 s5-0)
(s0-0 (-> (the-as (pointer uint32) (+ gp-0 (* (* s5-0 4) 4))) 0))
)
(set! sv-16 (-> (the-as (pointer uint32) (+ gp-0 (* (* s5-0 4) 4))) 0))
(let ((t1-0 (tie-int-reg s5-0)))
(s4-0 s3-0 s2-0 s1-0 s0-0 sv-16 t1-0)
)
)
)
)
(none)
)
;; definition (debug) for function tie-floats
;; INFO: Used lq/sq
;; WARN: Return type mismatch symbol vs none.
(defun-debug tie-floats ()
(local-vars (sv-16 uint) (sv-32 uint))
(let ((gp-0 (the-as (pointer uint32) (+ #x3da0 #x1100c000))))
(dotimes (s5-0 32)
(if (< s5-0 10)
(format 0 " ")
)
(format
0
"vf~d: #x~8,'0X #x~8,'0X #x~8,'0X #x~8,'0X "
s5-0
(-> gp-0 (* s5-0 4))
(-> gp-0 (+ (* s5-0 4) 1))
(-> gp-0 (+ (* s5-0 4) 2))
(-> gp-0 (+ (* s5-0 4) 3))
)
(let ((s4-0 format)
(s3-0 0)
(s2-0 "~F ~F ~F ~F ~s~%")
(s1-0 (-> gp-0 (* s5-0 4)))
(s0-0 (-> gp-0 (+ (* s5-0 4) 1)))
)
(set! sv-16 (-> gp-0 (+ (* s5-0 4) 2)))
(set! sv-32 (-> gp-0 (+ (* s5-0 4) 3)))
(let ((t2-1 (tie-float-reg s5-0)))
(s4-0 s3-0 s2-0 s1-0 s0-0 sv-16 sv-32 t2-1)
)
)
)
)
(none)
)
+54 -54
View File
@@ -196,60 +196,60 @@
;; definition for function profile-tie-test
(defun profile-tie-test ((arg0 bucket-id))
(or (= arg0 (bucket-id bucket-9))
(= arg0 (bucket-id bucket-20))
(= arg0 (bucket-id bucket-31))
(= arg0 (bucket-id bucket-42))
(= arg0 (bucket-id bucket-53))
(= arg0 (bucket-id bucket-64))
(= arg0 (bucket-id bucket-10))
(= arg0 (bucket-id bucket-21))
(= arg0 (bucket-id bucket-32))
(= arg0 (bucket-id bucket-43))
(= arg0 (bucket-id bucket-54))
(= arg0 (bucket-id bucket-65))
(= arg0 (bucket-id bucket-12))
(= arg0 (bucket-id bucket-23))
(= arg0 (bucket-id bucket-34))
(= arg0 (bucket-id bucket-45))
(= arg0 (bucket-id bucket-56))
(= arg0 (bucket-id bucket-67))
(= arg0 (bucket-id bucket-13))
(= arg0 (bucket-id bucket-24))
(= arg0 (bucket-id bucket-35))
(= arg0 (bucket-id bucket-46))
(= arg0 (bucket-id bucket-57))
(= arg0 (bucket-id bucket-68))
(= arg0 (bucket-id bucket-17))
(= arg0 (bucket-id bucket-28))
(= arg0 (bucket-id bucket-39))
(= arg0 (bucket-id bucket-50))
(= arg0 (bucket-id bucket-61))
(= arg0 (bucket-id bucket-72))
(= arg0 (bucket-id bucket-129))
(= arg0 (bucket-id bucket-139))
(= arg0 (bucket-id bucket-149))
(= arg0 (bucket-id bucket-159))
(= arg0 (bucket-id bucket-169))
(= arg0 (bucket-id bucket-179))
(= arg0 (bucket-id bucket-130))
(= arg0 (bucket-id bucket-140))
(= arg0 (bucket-id bucket-150))
(= arg0 (bucket-id bucket-160))
(= arg0 (bucket-id bucket-170))
(= arg0 (bucket-id bucket-180))
(= arg0 (bucket-id bucket-135))
(= arg0 (bucket-id bucket-145))
(= arg0 (bucket-id bucket-155))
(= arg0 (bucket-id bucket-165))
(= arg0 (bucket-id bucket-175))
(= arg0 (bucket-id bucket-185))
(= arg0 (bucket-id bucket-136))
(= arg0 (bucket-id bucket-146))
(= arg0 (bucket-id bucket-156))
(= arg0 (bucket-id bucket-166))
(= arg0 (bucket-id bucket-176))
(= arg0 (bucket-id bucket-186))
(or (= arg0 (bucket-id tie-l0-tfrag))
(= arg0 (bucket-id tie-l1-tfrag))
(= arg0 (bucket-id tie-l2-tfrag))
(= arg0 (bucket-id tie-l3-tfrag))
(= arg0 (bucket-id tie-l4-tfrag))
(= arg0 (bucket-id tie-l5-tfrag))
(= arg0 (bucket-id etie-l0-tfrag))
(= arg0 (bucket-id etie-l1-tfrag))
(= arg0 (bucket-id etie-l2-tfrag))
(= arg0 (bucket-id etie-l3-tfrag))
(= arg0 (bucket-id etie-l4-tfrag))
(= arg0 (bucket-id etie-l5-tfrag))
(= arg0 (bucket-id tie-s-l0-tfrag))
(= arg0 (bucket-id tie-s-l1-tfrag))
(= arg0 (bucket-id tie-s-l2-tfrag))
(= arg0 (bucket-id tie-s-l3-tfrag))
(= arg0 (bucket-id tie-s-l4-tfrag))
(= arg0 (bucket-id tie-s-l5-tfrag))
(= arg0 (bucket-id etie-s-l0-tfrag))
(= arg0 (bucket-id etie-s-l1-tfrag))
(= arg0 (bucket-id etie-s-l2-tfrag))
(= arg0 (bucket-id etie-s-l3-tfrag))
(= arg0 (bucket-id etie-s-l4-tfrag))
(= arg0 (bucket-id etie-s-l5-tfrag))
(= arg0 (bucket-id tie-v-l0-tfrag))
(= arg0 (bucket-id tie-v-l1-tfrag))
(= arg0 (bucket-id tie-v-l2-tfrag))
(= arg0 (bucket-id tie-v-l3-tfrag))
(= arg0 (bucket-id tie-v-l4-tfrag))
(= arg0 (bucket-id tie-v-l5-tfrag))
(= arg0 (bucket-id tie-t-l0-alpha))
(= arg0 (bucket-id tie-t-l1-alpha))
(= arg0 (bucket-id tie-t-l2-alpha))
(= arg0 (bucket-id tie-t-l3-alpha))
(= arg0 (bucket-id tie-t-l4-alpha))
(= arg0 (bucket-id tie-t-l5-alpha))
(= arg0 (bucket-id etie-t-l0-alpha))
(= arg0 (bucket-id etie-t-l1-alpha))
(= arg0 (bucket-id etie-t-l2-alpha))
(= arg0 (bucket-id etie-t-l3-alpha))
(= arg0 (bucket-id etie-t-l4-alpha))
(= arg0 (bucket-id etie-t-l5-alpha))
(= arg0 (bucket-id tie-st-l0-alpha))
(= arg0 (bucket-id tie-st-l1-alpha))
(= arg0 (bucket-id tie-st-l2-alpha))
(= arg0 (bucket-id tie-st-l3-alpha))
(= arg0 (bucket-id tie-st-l4-alpha))
(= arg0 (bucket-id tie-st-l5-alpha))
(= arg0 (bucket-id etie-st-l0-alpha))
(= arg0 (bucket-id etie-st-l1-alpha))
(= arg0 (bucket-id etie-st-l2-alpha))
(= arg0 (bucket-id etie-st-l3-alpha))
(= arg0 (bucket-id etie-st-l4-alpha))
(= arg0 (bucket-id etie-st-l5-alpha))
)
)
+7
View File
@@ -72,6 +72,13 @@ TEST(VuDisasm, SpriteGlow_Jak2) {
EXPECT_EQ(disasm.to_string(prog), get_expected("jak2/sprite-glow"));
}
TEST(VuDisasm, Tie_Jak2) {
auto data = get_test_data("jak2/tie");
VuDisassembler disasm(VuDisassembler::VuKind::VU1);
auto prog = disasm.disassemble(data.data(), data.size() * 4, false);
EXPECT_EQ(disasm.to_string(prog), get_expected("jak2/tie"));
}
TEST(VuDisasm, SpriteDistort) {
auto data = get_test_data("sprite-distort");
VuDisassembler disasm(VuDisassembler::VuKind::VU1);
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+2
View File
@@ -155,6 +155,8 @@
"draw-prototype-inline-array-shrub",
"(method 9 drawable-tree-instance-tie)", // duplicate
"i-hopefully-will-never-exist-dont-add-anything-after-me-please"
],