From 2f2ad69a0cc0dd50c99c0f77891587ee947b705a Mon Sep 17 00:00:00 2001 From: Tyler Wilding Date: Wed, 11 Aug 2021 19:53:13 -0400 Subject: [PATCH] remove unneeded casts, switch to `:allow-misaligned` --- decompiler/config/all-types.gc | 2 +- .../jak1_ntsc_black_label/type_casts.jsonc | 13 ------ goal_src/levels/beach/twister.gc | 45 +++++++------------ .../reference/engine/gfx/shadow/shadow_REF.gc | 8 +--- .../reference/levels/beach/twister_REF.gc | 45 +++++++------------ 5 files changed, 35 insertions(+), 78 deletions(-) diff --git a/decompiler/config/all-types.gc b/decompiler/config/all-types.gc index 851bb3400..1c60952f5 100644 --- a/decompiler/config/all-types.gc +++ b/decompiler/config/all-types.gc @@ -23311,7 +23311,7 @@ ((ry float :offset-assert 0) (max-dry float :offset-assert 4) ) - :pack-me + :allow-misaligned :method-count-assert 9 :size-assert #x8 :flag-assert #x900000008 diff --git a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc index 5c34b6db2..b9939630f 100644 --- a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc @@ -1791,15 +1791,6 @@ [[0, 999], "s6", "target"], [46, "v1", "collide-shape-prim"] // `event-other` from collide-shape ], - - "(method 0 twister)": [ - [37, "a0", "twister"], - [41, "a0", "twister"] - ], - - "(method 9 twister)": [ - [8, "a2", "twister"] - ], "(method 11 twister)": [ [7, "s4", "twist-joint"], @@ -1814,9 +1805,5 @@ [82, "s4", "twist-joint"] ], - "(method 12 twister)": [ - [17, "v1", "twister"] - ], - "placeholder-do-not-add-below": [] } diff --git a/goal_src/levels/beach/twister.gc b/goal_src/levels/beach/twister.gc index 69fb2c289..6e34a02d4 100644 --- a/goal_src/levels/beach/twister.gc +++ b/goal_src/levels/beach/twister.gc @@ -10,8 +10,7 @@ ((ry float :offset-assert 0) (max-dry float :offset-assert 4) ) - :pack-me - :method-count-assert 9 + :allow-misaligned :method-count-assert 9 :size-assert #x8 :flag-assert #x900000008 ) @@ -74,14 +73,8 @@ (set! (-> v0-0 ry) 0.0) (set! (-> v0-0 max-speed-ry) arg3) (dotimes (v1-4 gp-0) - (set! - (-> (the-as twister (+ (the-as uint v0-0) (* v1-4 16))) data 0 ry) - 0.0 - ) - (set! - (-> (the-as twister (+ (the-as uint v0-0) (* v1-4 16))) data 0 max-dry) - 0.0 - ) + (set! (-> v0-0 data v1-4 ry) 0.0) + (set! (-> v0-0 data v1-4 max-dry) 0.0) ) v0-0 ) @@ -102,10 +95,7 @@ (a1-2 (- arg1 (-> obj first-joint))) ) (while (>= a1-2 v1-1) - (set! - (-> (the-as twister (+ (the-as uint obj) (* v1-1 16))) data 0 max-dry) - arg2 - ) + (set! (-> obj data v1-1 max-dry) arg2) (+! v1-1 1) ) ) @@ -125,11 +115,11 @@ ;; INFO: Return type mismatch int vs none. (defmethod TODO-RENAME-11 twister ((obj twister)) (let* ((s5-0 (+ (-> obj num-joints) -1)) - (s4-0 (the-as object (+ (+ (* s5-0 16) 36) (the-as int obj)))) + (s4-0 (-> obj data s5-0)) ) - (let ((f0-2 (deg-diff (-> (the-as twist-joint s4-0) ry) (-> obj target)))) + (let ((f0-2 (deg-diff (-> s4-0 ry) (-> obj target)))) (+! - (-> (the-as twist-joint s4-0) ry) + (-> s4-0 ry) (seek-with-smooth 0.0 f0-2 @@ -139,23 +129,23 @@ ) ) ) - (let ((f30-1 (-> (the-as twist-joint s4-0) ry))) + (let ((f30-1 (-> s4-0 ry))) (while (> s5-0 0) (+! s5-0 -1) - (let ((s4-1 (the-as object (+ (+ (* s5-0 16) 36) (the-as int obj))))) - (let ((f0-9 (deg-diff f30-1 (-> (the-as twist-joint s4-1) ry)))) + (let ((s4-1 (-> obj data s5-0))) + (let ((f0-9 (deg-diff f30-1 (-> s4-1 ry)))) (cond - ((= (-> (the-as twist-joint s4-1) max-dry) 0.0) + ((= (-> s4-1 max-dry) 0.0) (set! f0-9 0.0) ) - ((< (fabs f0-9) (-> (the-as twist-joint s4-1) max-dry)) + ((< (fabs f0-9) (-> s4-1 max-dry)) ) ((< f0-9 0.0) (set! f0-9 (seek-with-smooth f0-9 - (- (-> (the-as twist-joint s4-1) max-dry)) + (- (-> s4-1 max-dry)) (-> obj max-speed) (-> obj smoothing) (-> obj min-dist) @@ -167,7 +157,7 @@ f0-9 (seek-with-smooth f0-9 - (-> (the-as twist-joint s4-1) max-dry) + (-> s4-1 max-dry) (-> obj max-speed) (-> obj smoothing) (-> obj min-dist) @@ -177,7 +167,7 @@ ) (+! f30-1 f0-9) ) - (set! (-> (the-as twist-joint s4-1) ry) f30-1) + (set! (-> s4-1 ry) f30-1) ) ) ) @@ -196,10 +186,7 @@ (-> arg0 node-list data (+ (-> obj first-joint) s3-0) bone transform) ) ) - (matrix-rotate-y! - s4-0 - (-> (the-as twister (+ (the-as uint obj) (* s3-0 16))) data 0 ry) - ) + (matrix-rotate-y! s4-0 (-> obj data s3-0 ry)) (vector-! (-> s2-0 vector 3) (-> s2-0 vector 3) (-> arg0 root trans)) (matrix*! s2-0 s2-0 s4-0) (vector+! (-> s2-0 vector 3) (-> s2-0 vector 3) (-> arg0 root trans)) diff --git a/test/decompiler/reference/engine/gfx/shadow/shadow_REF.gc b/test/decompiler/reference/engine/gfx/shadow/shadow_REF.gc index b9b012c9f..fa08a40be 100644 --- a/test/decompiler/reference/engine/gfx/shadow/shadow_REF.gc +++ b/test/decompiler/reference/engine/gfx/shadow/shadow_REF.gc @@ -161,7 +161,7 @@ (if (!= arg2 0.0) (compute-and-draw-shadow s2-0 - (-> s4-0 position) + (-> s4-0 transform vector 3) (-> s4-0 scale) (the-as vector arg2) arg6 @@ -169,7 +169,7 @@ ) ) (if (and arg1 (!= (shr (shl (-> s4-0 cache bone-matrix) 52) 58) 3)) - (set! (-> arg1 quad) (-> s4-0 position quad)) + (set! (-> arg1 quad) (-> s4-0 transform vector 3 quad)) ) ) (else @@ -337,7 +337,3 @@ ) ) ) - - - - diff --git a/test/decompiler/reference/levels/beach/twister_REF.gc b/test/decompiler/reference/levels/beach/twister_REF.gc index e17024861..da30f6a2b 100644 --- a/test/decompiler/reference/levels/beach/twister_REF.gc +++ b/test/decompiler/reference/levels/beach/twister_REF.gc @@ -6,8 +6,7 @@ ((ry float :offset-assert 0) (max-dry float :offset-assert 4) ) - :pack-me - :method-count-assert 9 + :allow-misaligned :method-count-assert 9 :size-assert #x8 :flag-assert #x900000008 ) @@ -94,14 +93,8 @@ (set! (-> v0-0 ry) 0.0) (set! (-> v0-0 max-speed-ry) arg3) (dotimes (v1-4 gp-0) - (set! - (-> (the-as twister (+ (the-as uint v0-0) (* v1-4 16))) data 0 ry) - 0.0 - ) - (set! - (-> (the-as twister (+ (the-as uint v0-0) (* v1-4 16))) data 0 max-dry) - 0.0 - ) + (set! (-> v0-0 data v1-4 ry) 0.0) + (set! (-> v0-0 data v1-4 max-dry) 0.0) ) v0-0 ) @@ -122,10 +115,7 @@ (a1-2 (- arg1 (-> obj first-joint))) ) (while (>= a1-2 v1-1) - (set! - (-> (the-as twister (+ (the-as uint obj) (* v1-1 16))) data 0 max-dry) - arg2 - ) + (set! (-> obj data v1-1 max-dry) arg2) (+! v1-1 1) ) ) @@ -145,11 +135,11 @@ ;; INFO: Return type mismatch int vs none. (defmethod TODO-RENAME-11 twister ((obj twister)) (let* ((s5-0 (+ (-> obj num-joints) -1)) - (s4-0 (the-as object (+ (+ (* s5-0 16) 36) (the-as int obj)))) + (s4-0 (-> obj data s5-0)) ) - (let ((f0-2 (deg-diff (-> (the-as twist-joint s4-0) ry) (-> obj target)))) + (let ((f0-2 (deg-diff (-> s4-0 ry) (-> obj target)))) (+! - (-> (the-as twist-joint s4-0) ry) + (-> s4-0 ry) (seek-with-smooth 0.0 f0-2 @@ -159,23 +149,23 @@ ) ) ) - (let ((f30-1 (-> (the-as twist-joint s4-0) ry))) + (let ((f30-1 (-> s4-0 ry))) (while (> s5-0 0) (+! s5-0 -1) - (let ((s4-1 (the-as object (+ (+ (* s5-0 16) 36) (the-as int obj))))) - (let ((f0-9 (deg-diff f30-1 (-> (the-as twist-joint s4-1) ry)))) + (let ((s4-1 (-> obj data s5-0))) + (let ((f0-9 (deg-diff f30-1 (-> s4-1 ry)))) (cond - ((= (-> (the-as twist-joint s4-1) max-dry) 0.0) + ((= (-> s4-1 max-dry) 0.0) (set! f0-9 0.0) ) - ((< (fabs f0-9) (-> (the-as twist-joint s4-1) max-dry)) + ((< (fabs f0-9) (-> s4-1 max-dry)) ) ((< f0-9 0.0) (set! f0-9 (seek-with-smooth f0-9 - (- (-> (the-as twist-joint s4-1) max-dry)) + (- (-> s4-1 max-dry)) (-> obj max-speed) (-> obj smoothing) (-> obj min-dist) @@ -187,7 +177,7 @@ f0-9 (seek-with-smooth f0-9 - (-> (the-as twist-joint s4-1) max-dry) + (-> s4-1 max-dry) (-> obj max-speed) (-> obj smoothing) (-> obj min-dist) @@ -197,7 +187,7 @@ ) (+! f30-1 f0-9) ) - (set! (-> (the-as twist-joint s4-1) ry) f30-1) + (set! (-> s4-1 ry) f30-1) ) ) ) @@ -216,10 +206,7 @@ (-> arg0 node-list data (+ (-> obj first-joint) s3-0) bone transform) ) ) - (matrix-rotate-y! - s4-0 - (-> (the-as twister (+ (the-as uint obj) (* s3-0 16))) data 0 ry) - ) + (matrix-rotate-y! s4-0 (-> obj data s3-0 ry)) (vector-! (-> s2-0 vector 3) (-> s2-0 vector 3) (-> arg0 root trans)) (matrix*! s2-0 s2-0 s4-0) (vector+! (-> s2-0 vector 3) (-> s2-0 vector 3) (-> arg0 root trans))