From fc105e1f55da79ea41605a6c288cb0f346af1591 Mon Sep 17 00:00:00 2001 From: Tyler Wilding Date: Mon, 21 Jun 2021 20:18:27 -0400 Subject: [PATCH] decomp: `collide-frag` (#618) * decomp: Good portion of `collide-frag` * decomp: Remove redundant method declarations for drawable types * decomp: Finish `collide-frag` Co-authored-by: water111 <48171810+water111@users.noreply.github.com> --- decompiler/config/all-types.gc | 181 +------------- .../jak1_ntsc_black_label/type_casts.jsonc | 30 +-- goal_src/engine/collide/collide-frag-h.gc | 3 + goal_src/engine/collide/collide-frag.gc | 207 ++++++++++++++++ goal_src/engine/draw/drawable-actor-h.gc | 2 +- goal_src/engine/draw/drawable-ambient-h.gc | 2 +- goal_src/engine/draw/drawable-h.gc | 22 +- .../engine/collide/collide-frag_REF.gc | 220 ++++++++++++++++++ .../engine/draw/drawable-actor-h_REF.gc | 5 +- .../engine/draw/drawable-ambient-h_REF.gc | 5 +- .../reference/engine/draw/drawable-h_REF.gc | 8 +- 11 files changed, 472 insertions(+), 213 deletions(-) create mode 100644 test/decompiler/reference/engine/collide/collide-frag_REF.gc diff --git a/decompiler/config/all-types.gc b/decompiler/config/all-types.gc index 611746ffb0..762124dc6b 100644 --- a/decompiler/config/all-types.gc +++ b/decompiler/config/all-types.gc @@ -5473,10 +5473,10 @@ :flag-assert #x1200000020 (:methods (dummy-9 (_type_) _type_ 9) ;; probably login or init. - (dummy-10 (_type_) int 10) - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) + (dummy-10 (_type_ drawable display-frame) int 10) ;; display-frame is from the method inspect tool + (dummy-11 (_type_ int) none 11) ; int - length + (dummy-12 (_type_ int) none 12) ; int - length + (dummy-13 (_type_ int) none 13) ; int - length (dummy-14 () none 14) (dummy-15 () none 15) (dummy-16 (_type_ object object) object 16) @@ -5490,16 +5490,6 @@ :method-count-assert 18 :size-assert #x24 :flag-assert #x1200000024 - (:methods - (dummy-10 (_type_) int 10) - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) - (dummy-16 (_type_ object object) object 16) - (dummy-17 () none 17) - ) ) @@ -5537,16 +5527,6 @@ :method-count-assert 18 :size-assert #x20 :flag-assert #x1200000020 - (:methods - (dummy-10 (_type_) int 10) - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) - (dummy-16 (_type_ object object) object 16) - (dummy-17 () none 17) - ) ) @@ -5568,16 +5548,6 @@ :size-assert #x20 :flag-assert #x1200000020 ;; field distance is a float printed as hex? - (:methods - (dummy-10 (_type_) int 10) - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) - (dummy-16 (_type_ object object) object 16) - (dummy-17 () none 17) - ) ) ; (deftype drawable-inline-array-node (drawable-inline-array) @@ -5642,16 +5612,6 @@ :method-count-assert 18 :size-assert #x20 :flag-assert #x1200000020 - (:methods - (dummy-10 (_type_) int 10) - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) - (dummy-16 (_type_ object object) object 16) - (dummy-17 () none 17) - ) ) (deftype drawable-tree-actor (drawable-tree) @@ -5681,14 +5641,6 @@ :size-assert #x20 :flag-assert #x1300000020 (:methods - (dummy-10 (_type_) int 10) - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) - (dummy-16 (_type_ object object) object 16) - (dummy-17 () none 17) (dummy-18 () none 18) ) ) @@ -8730,16 +8682,6 @@ :method-count-assert 18 :size-assert #x40 :flag-assert #x1200000040 - (:methods - (dummy-10 (_type_) int 10) - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) - (dummy-16 (_type_ object object) object 16) - (dummy-17 () none 17) - ) ) @@ -11012,14 +10954,6 @@ :method-count-assert 18 :size-assert #x20 :flag-assert #x1200000020 - (:methods - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) - (dummy-17 () none 17) - ) ) (deftype drawable-inline-array-collide-fragment (drawable-inline-array) @@ -11029,14 +10963,6 @@ :method-count-assert 18 :size-assert #x44 :flag-assert #x1200000044 - (:methods - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) - (dummy-17 () none 17) - ) ) (deftype drawable-tree-collide-fragment (drawable-tree) @@ -11614,16 +11540,6 @@ :method-count-assert 18 :size-assert #x70 :flag-assert #x1200000070 - (:methods - (dummy-10 (_type_) int 10) - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) - (dummy-16 (_type_ object object) object 16) - (dummy-17 () none 17) - ) ) (deftype shrub-view-data (structure) @@ -11660,16 +11576,6 @@ :method-count-assert 18 :size-assert #x20 :flag-assert #x1200000020 - (:methods - (dummy-10 (_type_) int 10) - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) - (dummy-16 (_type_ object object) object 16) - (dummy-17 () none 17) - ) ) (deftype instance-shrubbery (instance) @@ -11680,16 +11586,6 @@ :method-count-assert 18 :size-assert #x50 :flag-assert #x1200000050 - (:methods - (dummy-10 (_type_) int 10) - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) - (dummy-16 (_type_ object object) object 16) - (dummy-17 () none 17) - ) ) (deftype drawable-inline-array-instance-shrub (drawable-inline-array) @@ -11723,17 +11619,6 @@ :method-count-assert 18 :size-assert #x20 :flag-assert #x1200000020 - (:methods - - (dummy-10 (_type_) int 10) - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) - (dummy-16 (_type_ object object) object 16) - (dummy-17 () none 17) - ) ) (deftype prototype-shrubbery (drawable-inline-array) @@ -11902,14 +11787,6 @@ :method-count-assert 18 :size-assert #x40 :flag-assert #x1200000040 - (:methods - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) - (dummy-17 () none 17) - ) ) (deftype instance-tie (instance) @@ -11921,14 +11798,6 @@ :method-count-assert 18 :size-assert #x40 :flag-assert #x1200000040 - (:methods - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) - (dummy-17 () none 17) - ) ) (deftype drawable-inline-array-instance-tie (drawable-inline-array) @@ -11938,14 +11807,6 @@ :method-count-assert 18 :size-assert #x64 :flag-assert #x1200000064 - (:methods - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) - (dummy-17 () none 17) - ) ) (deftype drawable-tree-instance-tie (drawable-tree) @@ -11954,14 +11815,6 @@ :method-count-assert 18 :size-assert #x24 :flag-assert #x1200000024 - (:methods - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) - (dummy-17 () none 17) - ) ) (deftype prototype-tie (drawable-inline-array) @@ -11971,14 +11824,6 @@ :method-count-assert 18 :size-assert #x64 :flag-assert #x1200000064 - (:methods - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) - (dummy-17 () none 17) - ) ) (deftype tie-matrix (structure) @@ -12161,14 +12006,6 @@ :method-count-assert 18 :size-assert #x40 :flag-assert #x1200000040 - (:methods - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) - (dummy-17 () none 17) - ) ) (deftype drawable-inline-array-tfrag (drawable-inline-array) @@ -12177,14 +12014,6 @@ :method-count-assert 18 :size-assert #x64 :flag-assert #x1200000064 - (:methods - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) - (dummy-17 () none 17) - ) ) (deftype drawable-inline-array-trans-tfrag (drawable-inline-array-tfrag) @@ -17173,7 +17002,7 @@ ;; - Functions -(define-extern sphere-cull function) +(define-extern sphere-cull (function vector symbol)) ;; ---------------------- diff --git a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc index 8656287ae4..013aed9be9 100644 --- a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc @@ -609,7 +609,7 @@ [22, "f0", "float"], [28, "f0", "float"] ], - + "joint-anim-inspect-elt": [ [9, "gp", "joint-anim-matrix"], [26, "gp", "joint-anim-transformq"] @@ -633,9 +633,7 @@ [77, "a0", "entity-links"] ], - "(method 0 nav-control)": [ - [17, "t9", "(function string none)"] - ], + "(method 0 nav-control)": [[17, "t9", "(function string none)"]], "add-debug-point": [ [125, "a3", "pointer"], @@ -675,17 +673,23 @@ [92, "a1", "pointer"], [[112, 117], "v1", "dma-packet"] ], - "debug-percent-bar": [ - [[32, 43], "v1", "dma-packet"] + "debug-percent-bar": [[[32, 43], "v1", "dma-packet"]], + "debug-pad-display": [[[70, 75], "v1", "dma-packet"]], + "internal-draw-debug-text-3d": [[[54, 59], "v1", "dma-packet"]], + "drawable-frag-count": [[[14, 20], "s5", "drawable-group"]], + "generic-init-buffers": [[[39, 44], "v1", "dma-packet"]], + + "(method 13 drawable-inline-array-collide-fragment)": [ + [[1, 5], "v1", "collide-fragment"] ], - "debug-pad-display": [ - [[70, 75], "v1", "dma-packet"] + + "(method 12 drawable-inline-array-collide-fragment)": [ + [[1, 5], "v1", "collide-fragment"] ], - "internal-draw-debug-text-3d": [ - [[54, 59], "v1", "dma-packet"] - ], - "drawable-frag-count": [ - [[14, 20], "s5", "drawable-group"] + + + "(method 11 drawable-inline-array-collide-fragment)": [ + [[1, 5], "v1", "collide-fragment"] ], "generic-init-buffers": [ diff --git a/goal_src/engine/collide/collide-frag-h.gc b/goal_src/engine/collide/collide-frag-h.gc index 03f70e68b1..9bb203e4ca 100644 --- a/goal_src/engine/collide/collide-frag-h.gc +++ b/goal_src/engine/collide/collide-frag-h.gc @@ -5,6 +5,9 @@ ;; name in dgo: collide-frag-h ;; dgos: GAME, ENGINE +; TODO - defined in drawable, but needed in collide-frag +(define-extern sphere-cull (function vector symbol)) + ;; definition of type collide-frag-vertex (deftype collide-frag-vertex (vector) () diff --git a/goal_src/engine/collide/collide-frag.gc b/goal_src/engine/collide/collide-frag.gc index e3974af415..c1ea009aa3 100644 --- a/goal_src/engine/collide/collide-frag.gc +++ b/goal_src/engine/collide/collide-frag.gc @@ -5,3 +5,210 @@ ;; name in dgo: collide-frag ;; dgos: GAME, ENGINE +;; definition for method 9 of type drawable-tree-collide-fragment +(defmethod + dummy-9 + drawable-tree-collide-fragment + ((obj drawable-tree-collide-fragment)) + obj + ) + +;; definition for method 10 of type drawable-tree-collide-fragment +(defmethod + dummy-10 + drawable-tree-collide-fragment + ((obj drawable-tree-collide-fragment) (arg0 drawable) (arg1 display-frame)) + (when *display-render-collision* + (dotimes (s4-0 (-> obj length)) + (dummy-10 (-> obj data s4-0) (-> obj data s4-0) arg1) + ) + ) + 0 + ) + +;; definition for method 16 of type drawable-tree-collide-fragment +(defmethod + dummy-16 + drawable-tree-collide-fragment + ((obj drawable-tree-collide-fragment) (arg0 object) (arg1 object)) + arg1 + ) + +;; definition for method 11 of type drawable-tree-collide-fragment +;; INFO: Return type mismatch int vs none. +(defmethod + dummy-11 + drawable-tree-collide-fragment + ((obj drawable-tree-collide-fragment) (arg0 int)) + (dummy-11 (-> obj data 0) (-> obj length)) + (let ((v0-1 0)) + ) + (none) + ) + +;; definition for method 12 of type drawable-tree-collide-fragment +;; INFO: Return type mismatch int vs none. +(defmethod + dummy-12 + drawable-tree-collide-fragment + ((obj drawable-tree-collide-fragment) (arg0 int)) + (dummy-12 (-> obj data 0) (-> obj length)) + (let ((v0-1 0)) + ) + (none) + ) + +;; definition for method 13 of type drawable-tree-collide-fragment +;; INFO: Return type mismatch int vs none. +(defmethod + dummy-13 + drawable-tree-collide-fragment + ((obj drawable-tree-collide-fragment) (arg0 int)) + (dummy-13 (-> obj data 0) (-> obj length)) + (let ((v0-1 0)) + ) + (none) + ) + +;; definition for method 8 of type collide-fragment +;; INFO: Return type mismatch int vs collide-fragment. +(defmethod + mem-usage + collide-fragment + ((obj collide-fragment) (arg0 memory-usage-block) (arg1 int)) + (let ((s5-0 (if (nonzero? (logand arg1 1)) + 53 + 50 + ) + ) + (s4-0 (-> obj mesh)) + ) + (set! (-> arg0 data s5-0 name) (symbol->string 'collide-fragment)) + (set! (-> arg0 data s5-0 count) (+ (-> arg0 data s5-0 count) 1)) + (let ((v1-11 (+ (asize-of obj) (asize-of s4-0)))) + (set! (-> arg0 data s5-0 used) (+ (-> arg0 data s5-0 used) v1-11)) + (set! + (-> arg0 data s5-0 total) + (+ (-> arg0 data s5-0 total) (logand -16 (+ v1-11 15))) + ) + ) + (set! (-> arg0 data (+ s5-0 1) name) "collision-poly") + (set! + (-> arg0 data (+ s5-0 1) count) + (+ (-> arg0 data (+ s5-0 1) count) (the-as int (-> s4-0 poly-count))) + ) + (let ((v1-22 (+ (-> s4-0 strip-data-len) (-> s4-0 poly-count)))) + (set! + (-> arg0 data (+ s5-0 1) used) + (+ (-> arg0 data (+ s5-0 1) used) (the-as int v1-22)) + ) + (set! + (-> arg0 data (+ s5-0 1) total) + (+ (-> arg0 data (+ s5-0 1) total) (the-as int v1-22)) + ) + ) + (set! (-> arg0 data (+ s5-0 2) name) "collision-vertex") + (set! + (-> arg0 data (+ s5-0 2) count) + (+ (-> arg0 data (+ s5-0 2) count) (the-as int (-> s4-0 vertex-count))) + ) + (let ((v1-31 (* (-> s4-0 vertex-data-qwc) 16))) + (set! + (-> arg0 data (+ s5-0 2) used) + (+ (-> arg0 data (+ s5-0 2) used) (the-as int v1-31)) + ) + (let ((v0-2 (+ (-> arg0 data (+ s5-0 2) total) (the-as int v1-31)))) + (set! (-> arg0 data (+ s5-0 2) total) v0-2) + (the-as collide-fragment v0-2) + ) + ) + ) + ) + +;; definition for method 9 of type drawable-inline-array-collide-fragment +(defmethod + dummy-9 + drawable-inline-array-collide-fragment + ((obj drawable-inline-array-collide-fragment)) + obj + ) + +;; definition for method 10 of type collide-fragment +(defmethod + dummy-10 + collide-fragment + ((obj collide-fragment) (arg0 drawable) (arg1 display-frame)) + 0 + ) + +;; definition for method 10 of type drawable-inline-array-collide-fragment +(defmethod + dummy-10 + drawable-inline-array-collide-fragment + ((obj drawable-inline-array-collide-fragment) + (arg0 drawable) + (arg1 display-frame) + ) + (dotimes (s4-0 (-> obj length)) + (let ((s3-0 (-> obj data s4-0))) + (if (sphere-cull (-> s3-0 bsphere)) + (dummy-10 s3-0 s3-0 arg1) + ) + ) + ) + 0 + ) + +;; definition for method 11 of type drawable-inline-array-collide-fragment +;; INFO: Return type mismatch int vs none. +(defmethod + dummy-11 + drawable-inline-array-collide-fragment + ((obj drawable-inline-array-collide-fragment) (arg0 int)) + (dummy-11 (the-as collide-fragment (-> obj data)) (-> obj length)) + (none) + ) + +;; definition for method 12 of type drawable-inline-array-collide-fragment +;; INFO: Return type mismatch int vs none. +(defmethod + dummy-12 + drawable-inline-array-collide-fragment + ((obj drawable-inline-array-collide-fragment) (arg0 int)) + (dummy-12 (the-as collide-fragment (-> obj data)) (-> obj length)) + (none) + ) + +;; definition for method 13 of type drawable-inline-array-collide-fragment +;; INFO: Return type mismatch int vs none. +(defmethod + dummy-13 + drawable-inline-array-collide-fragment + ((obj drawable-inline-array-collide-fragment) (arg0 int)) + (dummy-13 (the-as collide-fragment (-> obj data)) (-> obj length)) + (none) + ) + +;; definition for method 8 of type drawable-inline-array-collide-fragment +(defmethod + mem-usage + drawable-inline-array-collide-fragment + ((obj drawable-inline-array-collide-fragment) + (arg0 memory-usage-block) + (arg1 int) + ) + (set! (-> arg0 length) (max 1 (-> arg0 length))) + (set! (-> arg0 data 0 name) (symbol->string 'drawable-group)) + (set! (-> arg0 data 0 count) (+ (-> arg0 data 0 count) 1)) + (let ((v1-7 32)) + (set! (-> arg0 data 0 used) (+ (-> arg0 data 0 used) v1-7)) + (set! + (-> arg0 data 0 total) + (+ (-> arg0 data 0 total) (logand -16 (+ v1-7 15))) + ) + ) + (dotimes (s3-0 (-> obj length)) + (mem-usage (-> obj data s3-0) arg0 arg1) + ) + obj + ) diff --git a/goal_src/engine/draw/drawable-actor-h.gc b/goal_src/engine/draw/drawable-actor-h.gc index c3463ba01c..c0d41261b5 100644 --- a/goal_src/engine/draw/drawable-actor-h.gc +++ b/goal_src/engine/draw/drawable-actor-h.gc @@ -26,6 +26,6 @@ ) -(defmethod dummy-10 drawable-tree-actor ((obj _type_)) +(defmethod dummy-10 drawable-tree-actor ((obj _type_) (arg0 drawable) (arg1 display-frame)) 0 ) diff --git a/goal_src/engine/draw/drawable-ambient-h.gc b/goal_src/engine/draw/drawable-ambient-h.gc index bf84fcfce1..81da655330 100644 --- a/goal_src/engine/draw/drawable-ambient-h.gc +++ b/goal_src/engine/draw/drawable-ambient-h.gc @@ -45,7 +45,7 @@ ) ;; definition for method 10 of type drawable-tree-ambient -(defmethod dummy-10 drawable-tree-ambient ((obj drawable-tree-ambient)) +(defmethod dummy-10 drawable-tree-ambient ((obj _type_) (arg0 drawable) (arg1 display-frame)) 0 ) diff --git a/goal_src/engine/draw/drawable-h.gc b/goal_src/engine/draw/drawable-h.gc index dbd91c6a7d..f1f7718439 100644 --- a/goal_src/engine/draw/drawable-h.gc +++ b/goal_src/engine/draw/drawable-h.gc @@ -15,14 +15,14 @@ :size-assert #x20 :flag-assert #x1200000020 (:methods - (dummy-9 (_type_) _type_ 9) - (dummy-10 (_type_) int 10) - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) + (dummy-9 (_type_) _type_ 9) ;; probably login or init. + (dummy-10 (_type_ drawable display-frame) int 10) ;; display-frame is from the method inspect tool + (dummy-11 (_type_ int) none 11) ; int - length + (dummy-12 (_type_ int) none 12) ; int - length + (dummy-13 (_type_ int) none 13) ; int - length (dummy-14 () none 14) (dummy-15 () none 15) - (dummy-16 (_type_ object object) object 16) ;; takes at least 3 args, return type is same as the 3rd arg. + (dummy-16 (_type_ object object) object 16) (dummy-17 () none 17) ) ) @@ -33,16 +33,6 @@ :method-count-assert 18 :size-assert #x24 :flag-assert #x1200000024 - (:methods - (dummy-10 (_type_) int 10) - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) - (dummy-14 () none 14) - (dummy-15 () none 15) - (dummy-16 (_type_ object object) object 16) - (dummy-17 () none 17) - ) ) ;; NOTE - I'm guessing there was a define-extern earlier in the build process diff --git a/test/decompiler/reference/engine/collide/collide-frag_REF.gc b/test/decompiler/reference/engine/collide/collide-frag_REF.gc new file mode 100644 index 0000000000..6510371d00 --- /dev/null +++ b/test/decompiler/reference/engine/collide/collide-frag_REF.gc @@ -0,0 +1,220 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition for method 9 of type drawable-tree-collide-fragment +(defmethod + dummy-9 + drawable-tree-collide-fragment + ((obj drawable-tree-collide-fragment)) + obj + ) + +;; definition for method 10 of type drawable-tree-collide-fragment +(defmethod + dummy-10 + drawable-tree-collide-fragment + ((obj drawable-tree-collide-fragment) (arg0 drawable) (arg1 display-frame)) + (when *display-render-collision* + (dotimes (s4-0 (-> obj length)) + (dummy-10 (-> obj data s4-0) (-> obj data s4-0) arg1) + ) + ) + 0 + ) + +;; definition for method 16 of type drawable-tree-collide-fragment +(defmethod + dummy-16 + drawable-tree-collide-fragment + ((obj drawable-tree-collide-fragment) (arg0 object) (arg1 object)) + arg1 + ) + +;; definition for method 11 of type drawable-tree-collide-fragment +;; INFO: Return type mismatch int vs none. +(defmethod + dummy-11 + drawable-tree-collide-fragment + ((obj drawable-tree-collide-fragment) (arg0 int)) + (dummy-11 (-> obj data 0) (-> obj length)) + (let ((v0-1 0)) + ) + (none) + ) + +;; definition for method 12 of type drawable-tree-collide-fragment +;; INFO: Return type mismatch int vs none. +(defmethod + dummy-12 + drawable-tree-collide-fragment + ((obj drawable-tree-collide-fragment) (arg0 int)) + (dummy-12 (-> obj data 0) (-> obj length)) + (let ((v0-1 0)) + ) + (none) + ) + +;; definition for method 13 of type drawable-tree-collide-fragment +;; INFO: Return type mismatch int vs none. +(defmethod + dummy-13 + drawable-tree-collide-fragment + ((obj drawable-tree-collide-fragment) (arg0 int)) + (dummy-13 (-> obj data 0) (-> obj length)) + (let ((v0-1 0)) + ) + (none) + ) + +;; definition for method 8 of type collide-fragment +;; INFO: Return type mismatch int vs collide-fragment. +(defmethod + mem-usage + collide-fragment + ((obj collide-fragment) (arg0 memory-usage-block) (arg1 int)) + (let ((s5-0 (if (nonzero? (logand arg1 1)) + 53 + 50 + ) + ) + (s4-0 (-> obj mesh)) + ) + (set! (-> arg0 data s5-0 name) (symbol->string 'collide-fragment)) + (set! (-> arg0 data s5-0 count) (+ (-> arg0 data s5-0 count) 1)) + (let ((v1-11 (+ (asize-of obj) (asize-of s4-0)))) + (set! (-> arg0 data s5-0 used) (+ (-> arg0 data s5-0 used) v1-11)) + (set! + (-> arg0 data s5-0 total) + (+ (-> arg0 data s5-0 total) (logand -16 (+ v1-11 15))) + ) + ) + (set! (-> arg0 data (+ s5-0 1) name) "collision-poly") + (set! + (-> arg0 data (+ s5-0 1) count) + (+ (-> arg0 data (+ s5-0 1) count) (the-as int (-> s4-0 poly-count))) + ) + (let ((v1-22 (+ (-> s4-0 strip-data-len) (-> s4-0 poly-count)))) + (set! + (-> arg0 data (+ s5-0 1) used) + (+ (-> arg0 data (+ s5-0 1) used) (the-as int v1-22)) + ) + (set! + (-> arg0 data (+ s5-0 1) total) + (+ (-> arg0 data (+ s5-0 1) total) (the-as int v1-22)) + ) + ) + (set! (-> arg0 data (+ s5-0 2) name) "collision-vertex") + (set! + (-> arg0 data (+ s5-0 2) count) + (+ (-> arg0 data (+ s5-0 2) count) (the-as int (-> s4-0 vertex-count))) + ) + (let ((v1-31 (* (-> s4-0 vertex-data-qwc) 16))) + (set! + (-> arg0 data (+ s5-0 2) used) + (+ (-> arg0 data (+ s5-0 2) used) (the-as int v1-31)) + ) + (let ((v0-2 (+ (-> arg0 data (+ s5-0 2) total) (the-as int v1-31)))) + (set! (-> arg0 data (+ s5-0 2) total) v0-2) + (the-as collide-fragment v0-2) + ) + ) + ) + ) + +;; definition for method 9 of type drawable-inline-array-collide-fragment +(defmethod + dummy-9 + drawable-inline-array-collide-fragment + ((obj drawable-inline-array-collide-fragment)) + obj + ) + +;; definition for method 10 of type collide-fragment +(defmethod + dummy-10 + collide-fragment + ((obj collide-fragment) (arg0 drawable) (arg1 display-frame)) + 0 + ) + +;; definition for method 10 of type drawable-inline-array-collide-fragment +(defmethod + dummy-10 + drawable-inline-array-collide-fragment + ((obj drawable-inline-array-collide-fragment) + (arg0 drawable) + (arg1 display-frame) + ) + (dotimes (s4-0 (-> obj length)) + (let ((s3-0 (-> obj data s4-0))) + (if (sphere-cull (-> s3-0 bsphere)) + (dummy-10 s3-0 s3-0 arg1) + ) + ) + ) + 0 + ) + +;; definition for method 11 of type drawable-inline-array-collide-fragment +;; INFO: Return type mismatch int vs none. +(defmethod + dummy-11 + drawable-inline-array-collide-fragment + ((obj drawable-inline-array-collide-fragment) (arg0 int)) + (dummy-11 (the-as collide-fragment (-> obj data)) (-> obj length)) + (let ((v0-1 0)) + ) + (none) + ) + +;; definition for method 12 of type drawable-inline-array-collide-fragment +;; INFO: Return type mismatch int vs none. +(defmethod + dummy-12 + drawable-inline-array-collide-fragment + ((obj drawable-inline-array-collide-fragment) (arg0 int)) + (dummy-12 (the-as collide-fragment (-> obj data)) (-> obj length)) + (let ((v0-1 0)) + ) + (none) + ) + +;; definition for method 13 of type drawable-inline-array-collide-fragment +;; INFO: Return type mismatch int vs none. +(defmethod + dummy-13 + drawable-inline-array-collide-fragment + ((obj drawable-inline-array-collide-fragment) (arg0 int)) + (dummy-13 (the-as collide-fragment (-> obj data)) (-> obj length)) + (let ((v0-1 0)) + ) + (none) + ) + +;; definition for method 8 of type drawable-inline-array-collide-fragment +(defmethod + mem-usage + drawable-inline-array-collide-fragment + ((obj drawable-inline-array-collide-fragment) + (arg0 memory-usage-block) + (arg1 int) + ) + (set! (-> arg0 length) (max 1 (-> arg0 length))) + (set! (-> arg0 data 0 name) (symbol->string 'drawable-group)) + (set! (-> arg0 data 0 count) (+ (-> arg0 data 0 count) 1)) + (let ((v1-7 32)) + (set! (-> arg0 data 0 used) (+ (-> arg0 data 0 used) v1-7)) + (set! + (-> arg0 data 0 total) + (+ (-> arg0 data 0 total) (logand -16 (+ v1-7 15))) + ) + ) + (dotimes (s3-0 (-> obj length)) + (mem-usage (-> obj data s3-0) arg0 arg1) + ) + obj + ) + + + + diff --git a/test/decompiler/reference/engine/draw/drawable-actor-h_REF.gc b/test/decompiler/reference/engine/draw/drawable-actor-h_REF.gc index c497df66e8..88a35ab2b0 100644 --- a/test/decompiler/reference/engine/draw/drawable-actor-h_REF.gc +++ b/test/decompiler/reference/engine/draw/drawable-actor-h_REF.gc @@ -38,6 +38,9 @@ ) ;; definition for method 10 of type drawable-tree-actor -(defmethod dummy-10 drawable-tree-actor ((obj drawable-tree-actor)) +(defmethod + dummy-10 + drawable-tree-actor + ((obj drawable-tree-actor) (arg0 drawable) (arg1 display-frame)) 0 ) diff --git a/test/decompiler/reference/engine/draw/drawable-ambient-h_REF.gc b/test/decompiler/reference/engine/draw/drawable-ambient-h_REF.gc index 633095ee99..0a6265cd67 100644 --- a/test/decompiler/reference/engine/draw/drawable-ambient-h_REF.gc +++ b/test/decompiler/reference/engine/draw/drawable-ambient-h_REF.gc @@ -41,7 +41,10 @@ ) ;; definition for method 10 of type drawable-tree-ambient -(defmethod dummy-10 drawable-tree-ambient ((obj drawable-tree-ambient)) +(defmethod + dummy-10 + drawable-tree-ambient + ((obj drawable-tree-ambient) (arg0 drawable) (arg1 display-frame)) 0 ) diff --git a/test/decompiler/reference/engine/draw/drawable-h_REF.gc b/test/decompiler/reference/engine/draw/drawable-h_REF.gc index 25c8dd1537..d15ac7a8b8 100644 --- a/test/decompiler/reference/engine/draw/drawable-h_REF.gc +++ b/test/decompiler/reference/engine/draw/drawable-h_REF.gc @@ -11,10 +11,10 @@ :flag-assert #x1200000020 (:methods (dummy-9 (_type_) _type_ 9) - (dummy-10 (_type_) int 10) - (dummy-11 () none 11) - (dummy-12 () none 12) - (dummy-13 () none 13) + (dummy-10 (_type_ drawable display-frame) int 10) + (dummy-11 (_type_ int) none 11) + (dummy-12 (_type_ int) none 12) + (dummy-13 (_type_ int) none 13) (dummy-14 () none 14) (dummy-15 () none 15) (dummy-16 (_type_ object object) object 16)