From 889fdcd79c3247d776f360a4979e64f7075013b4 Mon Sep 17 00:00:00 2001 From: ManDude <7569514+ManDude@users.noreply.github.com> Date: Fri, 26 Apr 2024 16:22:26 +0100 Subject: [PATCH] jak3: fix some collide decomp + fix projectiles aiming at intangible objects (#3485) Say goodbye to half of the laser needle shots spinning around doing nothing. This is toggleable with `fix-projectile-focus` in the pc settings. --- decompiler/config/jak3/all-types.gc | 10 +- .../jak3/ntsc_v1/stack_structures.jsonc | 10 +- .../config/jak3/ntsc_v1/type_casts.jsonc | 2 +- .../jak3/engine/collide/collide-cache-h.gc | 4 +- goal_src/jak3/engine/collide/collide-cache.gc | 20 +-- .../engine/collide/collide-shape-rider.gc | 2 +- goal_src/jak3/engine/collide/collide-shape.gc | 58 +++---- goal_src/jak3/engine/collide/find-nearest.gc | 3 +- goal_src/jak3/engine/common-obs/water-flow.gc | 4 +- goal_src/jak3/engine/physics/trajectory.gc | 2 +- .../engine/spatial-hash/spatial-hash-h.gc | 2 +- .../jak3/engine/spatial-hash/spatial-hash.gc | 6 +- .../jak3/engine/target/board/target-board.gc | 22 +-- .../jak3/engine/target/flut/flut-racer.gc | 2 +- goal_src/jak3/engine/target/flut/flut.gc | 4 +- .../jak3/engine/target/gun/gun-blue-shot.gc | 68 +-------- .../jak3/engine/target/gun/gun-dark-shot.gc | 8 +- .../jak3/engine/target/gun/gun-red-shot.gc | 143 +++--------------- goal_src/jak3/engine/target/gun/gun-util.gc | 3 + .../jak3/engine/target/gun/gun-yellow-shot.gc | 53 +------ goal_src/jak3/engine/target/target-darkjak.gc | 8 +- goal_src/jak3/engine/target/target-gun.gc | 4 +- goal_src/jak3/levels/common/battle.gc | 2 +- .../common/enemy/darkprec/dp-bipedal.gc | 6 +- .../jak3/levels/desert/hover/des-beast.gc | 15 +- .../jak3/levels/desert/hover/scorpion-gun.gc | 2 +- .../desert/lizard/desert-lizard-task.gc | 4 +- .../levels/desert/wvehicle/wvehicle-util.gc | 2 +- goal_src/jak3/levels/mine/manta.gc | 2 +- goal_src/jak3/levels/tower/tower-obs.gc | 6 +- .../jak3/levels/wascity/wascity-turret.gc | 6 +- .../levels/wascity/wasstadium/wasstadc-obs.gc | 2 +- goal_src/jak3/pc/debug/default-menu-pc.gc | 1 + goal_src/jak3/pc/pckernel-impl.gc | 3 + goal_src/jak3/pc/pckernel.gc | 2 + .../engine/collide/collide-cache-h_REF.gc | 4 +- .../jak3/engine/collide/collide-cache_REF.gc | 24 ++- .../engine/collide/collide-shape-rider_REF.gc | 6 +- .../jak3/engine/collide/collide-shape_REF.gc | 58 +++---- .../jak3/engine/common-obs/water-flow_REF.gc | 8 +- .../jak3/engine/physics/trajectory_REF.gc | 2 +- .../engine/spatial-hash/spatial-hash-h_REF.gc | 6 +- .../engine/spatial-hash/spatial-hash_REF.gc | 6 +- .../engine/target/board/target-board_REF.gc | 22 +-- .../jak3/engine/target/flut/flut-racer_REF.gc | 2 +- .../jak3/engine/target/flut/flut_REF.gc | 4 +- .../engine/target/gun/gun-blue-shot_REF.gc | 9 +- .../engine/target/gun/gun-dark-shot_REF.gc | 8 +- .../engine/target/gun/gun-red-shot_REF.gc | 34 ++--- .../engine/target/gun/gun-yellow-shot_REF.gc | 4 +- .../jak3/engine/target/target-darkjak_REF.gc | 8 +- .../jak3/engine/target/target-gun_REF.gc | 4 +- .../jak3/levels/common/battle_REF.gc | 2 +- .../common/enemy/darkprec/dp-bipedal_REF.gc | 6 +- .../jak3/levels/desert/hover/des-beast_REF.gc | 15 +- .../levels/desert/hover/scorpion-gun_REF.gc | 2 +- .../desert/lizard/desert-lizard-task_REF.gc | 8 +- .../desert/wvehicle/wvehicle-util_REF.gc | 2 +- .../reference/jak3/levels/mine/manta_REF.gc | 6 +- .../jak3/levels/tower/tower-obs_REF.gc | 10 +- .../jak3/levels/wascity/wascity-turret_REF.gc | 6 +- .../wascity/wasstadium/wasstadc-obs_REF.gc | 2 +- 62 files changed, 246 insertions(+), 513 deletions(-) diff --git a/decompiler/config/jak3/all-types.gc b/decompiler/config/jak3/all-types.gc index caf1b19124..83fd6170ea 100644 --- a/decompiler/config/jak3/all-types.gc +++ b/decompiler/config/jak3/all-types.gc @@ -23598,8 +23598,8 @@ :size-assert #x30 :flag-assert #xb00000030 (:methods - (resolve-moving-sphere-tri (_type_ collide-tri-result collide-prim-core vector float collide-action) float) ;; 9 - (resolve-moving-sphere-sphere (_type_ collide-tri-result collide-prim-core vector float collide-action) float) ;; 10 + (resolve-moving-sphere-tri (_type_ collide-query sphere vector float collide-action) float) ;; 9 + (resolve-moving-sphere-sphere (_type_ collide-query sphere vector float collide-action) float) ;; 10 ) ) @@ -28704,7 +28704,7 @@ (new (symbol type int int) _type_) ;; 0 (spatial-hash-method-33 (_type_ vector hash-object-info) none) ;; 33 (add-an-object (_type_ bounding-box (pointer collide-shape) int) int) ;; 34 - (fill-actor-list-for-box (_type_ bounding-box (pointer collide-shape) int) int) ;; 35 + (fill-actor-list-for-box (_type_ vector (pointer collide-shape) int) int) ;; 35 (fill-actor-list-for-sphere (_type_ vector vector float (pointer collide-shape) int int) int) ;; 36 (fill-actor-list-for-line-sphere (_type_ vector vector float (pointer collide-shape) int int) int) ;; 37 (fill-actor-list-for-vec+r (_type_ vector (pointer collide-shape) int) int) ;; 38 @@ -36405,7 +36405,7 @@ (define-extern gun-blue-shot-3-move (function gun-blue-shot-3 none)) (define-extern *blue-shot-trail* light-trail-composition) (define-extern gun-fire-blue-3 (function object :behavior target)) -(define-extern draw-beam-segment (function none)) +(define-extern draw-beam-segment (function symbol)) (define-extern *found-objects* (pointer handle)) (define-extern *gun-blue-2-last-attack-id* uint) (define-extern *gun-blue-2-last-attack-id-time* timeframe-wrapper) @@ -60312,7 +60312,7 @@ (des-beast-method-164 (_type_) none) ;; 164 (des-beast-method-165 (_type_) none) ;; 165 (des-beast-method-166 (_type_) none) ;; 166 - (des-beast-method-167 (_type_ bounding-box) symbol) ;; 167 + (des-beast-method-167 (_type_ vector) symbol) ;; 167 ) ) diff --git a/decompiler/config/jak3/ntsc_v1/stack_structures.jsonc b/decompiler/config/jak3/ntsc_v1/stack_structures.jsonc index 3835f8b7b9..90efb50fcf 100644 --- a/decompiler/config/jak3/ntsc_v1/stack_structures.jsonc +++ b/decompiler/config/jak3/ntsc_v1/stack_structures.jsonc @@ -225,7 +225,7 @@ ], "board-turn-around?": [[48, "vector"]], "target-board-green-eco-attack": [ - [16, "bounding-box"], + [16, "vector"], [32, ["array", "collide-shape", 384]] ], "(enter target-board-jump)": [[48, "vector"]], @@ -502,7 +502,7 @@ [128, "vector"], [1696, "vector"] ], - "(method 26 gun-red-shot)": [[16, "bounding-box"]], + "(method 26 gun-red-shot)": [[16, "vector"]], "gun-dark-reaction": [[112, "vector"]], "gun-fire-red-1": [ [16, "vector"], @@ -613,7 +613,7 @@ "(method 50 collide-shape)": [[32, "vector"]], "(method 45 collide-shape)": [[16, "do-push-aways-work"]], "(method 18 collide-shape-prim-mesh)": [[16, "collide-tri-result"]], - "(method 15 collide-shape-prim-sphere)": [[16, "collide-tri-result"]], + "(method 15 collide-shape-prim-sphere)": [[16, "collide-query"]], "cshape-reaction-update-state": [ [16, "vector"], [32, "vector"] @@ -642,7 +642,7 @@ "(method 33 spatial-hash)": [[16, ["inline-array", "vector", 2]]], "(method 24 grid-hash)": [[16, "vector"]], "(method 14 collide-cache)": [[16, "bounding-box"]], - "(method 16 collide-cache)": [[16, "collide-cache-tri"]], + "(method 16 collide-cache)": [[16, "collide-puls-work"]], "(method 20 collide-cache)": [[16, "matrix"]], "col-rend-draw": [[16, "matrix"]], "(method 11 collide-mesh)": [[16, "spat-work"]], @@ -1579,7 +1579,7 @@ ], "(method 62 wascity-turret)": [ [16, "matrix"], - [80, "bounding-box"], + [80, "vector"], [752, "vector"], [624, "vector"], [656, "vector"], diff --git a/decompiler/config/jak3/ntsc_v1/type_casts.jsonc b/decompiler/config/jak3/ntsc_v1/type_casts.jsonc index 91e4fd92cb..d89669e171 100644 --- a/decompiler/config/jak3/ntsc_v1/type_casts.jsonc +++ b/decompiler/config/jak3/ntsc_v1/type_casts.jsonc @@ -3516,7 +3516,7 @@ [43, "s3", "process-focusable"], [93, "s3", "process-focusable"], [122, "s3", "process-focusable"], - ["_stack_", 32, "bounding-box"] + ["_stack_", 32, "vector"] ], "gun-fire-red-3": [ [216, "s1", "process-focusable"], diff --git a/goal_src/jak3/engine/collide/collide-cache-h.gc b/goal_src/jak3/engine/collide/collide-cache-h.gc index a6ac7ad902..90bb8a58c9 100644 --- a/goal_src/jak3/engine/collide/collide-cache-h.gc +++ b/goal_src/jak3/engine/collide/collide-cache-h.gc @@ -76,8 +76,8 @@ This can represent a sphere, a triangle mesh, or a group of other primitives wit (prim-type prim-type :overlay-at (-> prim-core prim-type)) ) (:methods - (resolve-moving-sphere-tri (_type_ collide-tri-result collide-prim-core vector float collide-action) float) - (resolve-moving-sphere-sphere (_type_ collide-tri-result collide-prim-core vector float collide-action) float) + (resolve-moving-sphere-tri (_type_ collide-query sphere vector float collide-action) float) + (resolve-moving-sphere-sphere (_type_ collide-query sphere vector float collide-action) float) ) ) diff --git a/goal_src/jak3/engine/collide/collide-cache.gc b/goal_src/jak3/engine/collide/collide-cache.gc index 17a82ecfed..f33bf26ef4 100644 --- a/goal_src/jak3/engine/collide/collide-cache.gc +++ b/goal_src/jak3/engine/collide/collide-cache.gc @@ -790,14 +790,14 @@ (vf4 :class vf) ) (init-vf0-vector) - (let ((s5-0 (new 'stack-no-clear 'collide-cache-tri))) + (let ((s5-0 (new 'stack-no-clear 'collide-puls-work))) (.lvf vf4 (&-> arg0 exit-planes 0 quad)) (.lvf vf3 (&-> arg0 start-pos quad)) (.lvf vf2 (&-> arg0 move-dist quad)) - (set! (-> s5-0 vertex 0 x) (the-as float (-> arg0 ignore-pat))) + (set! (-> s5-0 ignore-pat) (-> arg0 ignore-pat)) (.mul.w.vf vf3 vf0 vf4 :mask #b1000) - (.svf (&-> s5-0 vertex 2 quad) vf2) - (.svf (&-> s5-0 vertex 1 quad) vf3) + (.svf (&-> s5-0 move-dist quad) vf2) + (.svf (&-> s5-0 bsphere quad) vf3) (let ((s4-0 (the-as object (-> this prims))) (f30-0 -100000000.0) ) @@ -809,9 +809,9 @@ ((>= (-> (the-as collide-cache-prim s4-0) prim-core prim-type) 0) (let ((f0-0 ((method-of-type collide-cache-prim resolve-moving-sphere-tri) (the-as collide-cache-prim s4-0) - (the-as collide-tri-result arg0) - (the-as collide-prim-core (-> s5-0 vertex 1)) - (-> s5-0 vertex 2) + arg0 + (-> s5-0 bsphere) + (-> s5-0 move-dist) f30-0 (collide-action solid) ) @@ -829,9 +829,9 @@ ) (let ((f0-1 ((method-of-type collide-cache-prim resolve-moving-sphere-sphere) (the-as collide-cache-prim s4-0) - (the-as collide-tri-result arg0) - (the-as collide-prim-core (-> s5-0 vertex 1)) - (-> s5-0 vertex 2) + arg0 + (-> s5-0 bsphere) + (-> s5-0 move-dist) f30-0 (collide-action solid) ) diff --git a/goal_src/jak3/engine/collide/collide-shape-rider.gc b/goal_src/jak3/engine/collide/collide-shape-rider.gc index d41a66a21d..dd21bfcbe3 100644 --- a/goal_src/jak3/engine/collide/collide-shape-rider.gc +++ b/goal_src/jak3/engine/collide/collide-shape-rider.gc @@ -169,7 +169,7 @@ (set! *actor-list-length* 0) (if (logtest? s5-0 (collide-spec hit-by-others-list)) (set! *actor-list-length* - (fill-actor-list-for-box *actor-hash* (the-as bounding-box (-> s4-0 prim-core)) *actor-list* 256) + (fill-actor-list-for-box *actor-hash* (the-as vector (-> s4-0 prim-core)) *actor-list* 256) ) ) (when (logtest? s5-0 (collide-spec player-list)) diff --git a/goal_src/jak3/engine/collide/collide-shape.gc b/goal_src/jak3/engine/collide/collide-shape.gc index 0b39d5d785..b0a17b3c53 100644 --- a/goal_src/jak3/engine/collide/collide-shape.gc +++ b/goal_src/jak3/engine/collide/collide-shape.gc @@ -417,11 +417,11 @@ (vf4 :class vf) (vf5 :class vf) ) - (let* ((gp-0 (new 'stack-no-clear 'collide-tri-result)) + (let* ((gp-0 (new 'stack-no-clear 'collide-query)) (f0-1 (resolve-moving-sphere-tri arg1 gp-0 - (-> this prim-core) + (the-as sphere (-> this prim-core)) (-> arg0 move-dist) (-> arg0 best-dist) (-> this prim-core action) @@ -442,13 +442,13 @@ (b! (= v1-5 #f) cfg-5 :likely-delay (set! a2-2 (the-as collide-shape-prim #f))) (b! (logtest? (-> a0-3 penetrate-using) (-> v1-5 penetrated-by)) cfg-6 :delay (nop!)) (label cfg-5) - (.lvf vf3 (&-> gp-0 vertex 0 quad)) - (.lvf vf4 (&-> gp-0 vertex 1 quad)) - (.lvf vf5 (&-> gp-0 vertex 2 quad)) - (.lvf vf1 (&-> gp-0 intersect quad)) - (.lvf vf2 (&-> gp-0 normal quad)) - (let ((a0-6 (-> gp-0 pat)) - (a1-4 (-> gp-0 collide-ptr)) + (.lvf vf3 (&-> gp-0 best-other-tri vertex 0 quad)) + (.lvf vf4 (&-> gp-0 best-other-tri vertex 1 quad)) + (.lvf vf5 (&-> gp-0 best-other-tri vertex 2 quad)) + (.lvf vf1 (&-> gp-0 best-other-tri intersect quad)) + (.lvf vf2 (&-> gp-0 best-other-tri normal quad)) + (let ((a0-6 (-> gp-0 best-other-tri pat)) + (a1-4 (-> gp-0 best-other-tri collide-ptr)) ) (set! (-> arg0 best-dist) f0-1) (.svf (&-> arg0 best-other-tri vertex 0 quad) vf3) @@ -464,14 +464,7 @@ (label cfg-6) (b! (not v1-5) cfg-8 :delay (empty-form)) ) - (add-touching-prims - *touching-list* - this - a2-2 - f0-1 - (the-as collide-tri-result #f) - (the-as collide-tri-result (-> gp-0 vertex)) - ) + (add-touching-prims *touching-list* this a2-2 f0-1 (the-as collide-tri-result #f) (-> gp-0 best-other-tri)) ) ) ) @@ -515,11 +508,11 @@ (vf4 :class vf) (vf5 :class vf) ) - (let* ((gp-0 (new 'stack-no-clear 'collide-tri-result)) + (let* ((gp-0 (new 'stack-no-clear 'collide-query)) (f0-1 (resolve-moving-sphere-sphere arg1 gp-0 - (-> this prim-core) + (the-as sphere (-> this prim-core)) (-> arg0 move-dist) (-> arg0 best-dist) (-> arg1 prim-core action) @@ -539,13 +532,13 @@ (b! (zero? a1-2) cfg-4 :delay (nop!)) (b! (logtest? (-> v1-4 penetrate-using) (-> a0-4 penetrated-by)) cfg-4 :delay (nop!)) ) - (.lvf vf3 (&-> gp-0 vertex 0 quad)) - (.lvf vf4 (&-> gp-0 vertex 1 quad)) - (.lvf vf5 (&-> gp-0 vertex 2 quad)) - (.lvf vf1 (&-> gp-0 intersect quad)) - (.lvf vf2 (&-> gp-0 normal quad)) - (let ((v1-7 (-> gp-0 pat)) - (a0-6 (-> gp-0 collide-ptr)) + (.lvf vf3 (&-> gp-0 best-other-tri vertex 0 quad)) + (.lvf vf4 (&-> gp-0 best-other-tri vertex 1 quad)) + (.lvf vf5 (&-> gp-0 best-other-tri vertex 2 quad)) + (.lvf vf1 (&-> gp-0 best-other-tri intersect quad)) + (.lvf vf2 (&-> gp-0 best-other-tri normal quad)) + (let ((v1-7 (-> gp-0 best-other-tri pat)) + (a0-6 (-> gp-0 best-other-tri collide-ptr)) ) (set! (-> arg0 best-dist) f0-1) (.svf (&-> arg0 best-other-tri vertex 0 quad) vf3) @@ -559,14 +552,7 @@ (set! (-> arg0 best-other-prim) a2-2) (set! (-> arg0 best-my-prim) this) (label cfg-4) - (add-touching-prims - *touching-list* - this - a2-2 - f0-1 - (the-as collide-tri-result #f) - (the-as collide-tri-result (-> gp-0 vertex)) - ) + (add-touching-prims *touching-list* this a2-2 f0-1 (the-as collide-tri-result #f) (-> gp-0 best-other-tri)) ) ) (label cfg-5) @@ -2386,7 +2372,7 @@ (set! *actor-list-length* 0) (if (logtest? s4-0 (collide-spec hit-by-others-list)) (set! *actor-list-length* - (fill-actor-list-for-box *actor-hash* (the-as bounding-box (-> this root-prim prim-core)) *actor-list* 256) + (fill-actor-list-for-box *actor-hash* (the-as vector (-> this root-prim prim-core)) *actor-list* 256) ) ) (when (logtest? s4-0 (collide-spec player-list)) @@ -2567,7 +2553,7 @@ (set! *actor-list-length* 0) (b! (not (logtest? (the-as collide-spec s2-0) 512)) cfg-2 :delay (empty-form)) (set! *actor-list-length* - (fill-actor-list-for-box *actor-hash* (the-as bounding-box (-> s3-0 prim-core)) *actor-list* 256) + (fill-actor-list-for-box *actor-hash* (the-as vector (-> s3-0 prim-core)) *actor-list* 256) ) (label cfg-2) (b! (not (logtest? (the-as collide-spec s2-0) 1024)) cfg-11 :delay (empty-form)) diff --git a/goal_src/jak3/engine/collide/find-nearest.gc b/goal_src/jak3/engine/collide/find-nearest.gc index 20879bccff..c3272bf02b 100644 --- a/goal_src/jak3/engine/collide/find-nearest.gc +++ b/goal_src/jak3/engine/collide/find-nearest.gc @@ -106,7 +106,8 @@ (let* ((s2-1 (get-trans (the-as process-focusable s3-0) 3)) (f30-0 (- (vector-vector-distance (-> gp-0 point) s2-1) (-> s2-1 w))) ) - (when (nonzero? (-> s0-0 root-prim prim-core collide-as)) + (when (#if PC_PORT (and (nonzero? (-> s0-0 root-prim prim-core collide-as)) (or (not (-> *pc-settings* fix-projectile-focus)) (logtest? (collide-action solid) (-> s0-0 root-prim prim-core action)))) + (nonzero? (-> s0-0 root-prim prim-core collide-as))) (let ((s0-1 (search-info-flag))) 0.0 (set! sv-736 (vector-normalize! (vector-! (new 'stack-no-clear 'vector) s2-1 (-> gp-0 point)) 1.0)) diff --git a/goal_src/jak3/engine/common-obs/water-flow.gc b/goal_src/jak3/engine/common-obs/water-flow.gc index f4a813745b..8c3e5f91aa 100644 --- a/goal_src/jak3/engine/common-obs/water-flow.gc +++ b/goal_src/jak3/engine/common-obs/water-flow.gc @@ -309,9 +309,7 @@ (init-vf0-vector) (set! *actor-list-length* 0) (if #t - (set! *actor-list-length* - (fill-actor-list-for-box *actor-hash* (the-as bounding-box (-> this collide-bounds)) *actor-list* 256) - ) + (set! *actor-list-length* (fill-actor-list-for-box *actor-hash* (-> this collide-bounds) *actor-list* 256)) ) (when #t (let ((a0-2 (-> *collide-player-list* alive-list next0))) diff --git a/goal_src/jak3/engine/physics/trajectory.gc b/goal_src/jak3/engine/physics/trajectory.gc index 8d33df49c3..62734c904b 100644 --- a/goal_src/jak3/engine/physics/trajectory.gc +++ b/goal_src/jak3/engine/physics/trajectory.gc @@ -254,7 +254,7 @@ ) ) (else - (let ((s1-0 (new 'stack-no-clear 'bounding-box)) + (let ((s1-0 (new 'stack-no-clear 'vector)) (s2-1 (new 'stack 'boxed-array collide-shape 32)) ) (sphere<-vector+r! (the-as sphere s1-0) arg1 arg2) diff --git a/goal_src/jak3/engine/spatial-hash/spatial-hash-h.gc b/goal_src/jak3/engine/spatial-hash/spatial-hash-h.gc index 713e8ae4fa..9c5ab0df7c 100644 --- a/goal_src/jak3/engine/spatial-hash/spatial-hash-h.gc +++ b/goal_src/jak3/engine/spatial-hash/spatial-hash-h.gc @@ -133,7 +133,7 @@ O(n^2) 'check everybody against everybody' collision loop." (new (symbol type int int) _type_) (spatial-hash-method-33 (_type_ vector hash-object-info) none) (add-an-object (_type_ bounding-box (pointer collide-shape) int) int) - (fill-actor-list-for-box (_type_ bounding-box (pointer collide-shape) int) int) + (fill-actor-list-for-box (_type_ vector (pointer collide-shape) int) int) (fill-actor-list-for-sphere (_type_ vector vector float (pointer collide-shape) int int) int) (fill-actor-list-for-line-sphere (_type_ vector vector float (pointer collide-shape) int int) int) (fill-actor-list-for-vec+r (_type_ vector (pointer collide-shape) int) int) diff --git a/goal_src/jak3/engine/spatial-hash/spatial-hash.gc b/goal_src/jak3/engine/spatial-hash/spatial-hash.gc index d008573423..fac2a71362 100644 --- a/goal_src/jak3/engine/spatial-hash/spatial-hash.gc +++ b/goal_src/jak3/engine/spatial-hash/spatial-hash.gc @@ -884,9 +884,9 @@ (arg4 int) (arg5 int) ) - (let ((v1-0 (new 'stack-no-clear 'bounding-box))) - (set! (-> v1-0 min quad) (-> arg0 quad)) - (set! (-> v1-0 min w) 0.0) + (let ((v1-0 (new 'stack-no-clear 'vector))) + (set! (-> v1-0 quad) (-> arg0 quad)) + (set! (-> v1-0 w) 0.0) (fill-actor-list-for-box this v1-0 (the-as (pointer collide-shape) arg1) (the-as int arg2)) ) ) diff --git a/goal_src/jak3/engine/target/board/target-board.gc b/goal_src/jak3/engine/target/board/target-board.gc index 6ad82995d8..a636ac0d26 100644 --- a/goal_src/jak3/engine/target/board/target-board.gc +++ b/goal_src/jak3/engine/target/board/target-board.gc @@ -501,16 +501,16 @@ (vf2 :class vf) ) (init-vf0-vector) - (let ((gp-0 (new 'stack-no-clear 'bounding-box))) + (let ((gp-0 (new 'stack-no-clear 'vector))) (cond (arg0 - (set! (-> gp-0 min quad) (-> self control trans quad)) - (set! (-> gp-0 min w) 49152.0) + (set! (-> gp-0 quad) (-> self control trans quad)) + (set! (-> gp-0 w) 49152.0) ) (else - (vector-normalize! (vector-z-quaternion! (the-as vector gp-0) (-> self control quat)) -12288.0) - (vector+! (the-as vector gp-0) (the-as vector gp-0) (-> self control trans)) - (set! (-> gp-0 min w) 24576.0) + (vector-normalize! (vector-z-quaternion! gp-0 (-> self control quat)) -12288.0) + (vector+! gp-0 gp-0 (-> self control trans)) + (set! (-> gp-0 w) 24576.0) ) ) (let ((s5-1 (new 'stack-no-clear 'array 'collide-shape 384))) @@ -530,7 +530,7 @@ ) (when a0-11 (when (!= *target* a0-11) - (let ((v1-13 (vector-! (new 'stack-no-clear 'vector) (-> a0-11 root trans) (the-as vector gp-0)))) + (let ((v1-13 (vector-! (new 'stack-no-clear 'vector) (-> a0-11 root trans) gp-0))) 0.0 (.lvf vf1 (&-> v1-13 quad)) ) @@ -541,7 +541,7 @@ (.add.mul.z.vf vf1 vf2 vf1 acc :mask #b1) (.mov v1-14 vf1) (let ((f0-3 v1-14) - (f1-0 (-> gp-0 min w)) + (f1-0 (-> gp-0 w)) ) (if (>= (* f1-0 f1-0) f0-3) (send-event a0-11 'green-eco-attack) @@ -560,9 +560,9 @@ ) ) ) - (when (and s5-2 (< (vector-vector-distance (get-trans s5-2 0) (the-as vector gp-0)) (-> gp-0 min w))) + (when (and s5-2 (< (vector-vector-distance (get-trans s5-2 0) gp-0) (-> gp-0 w))) (when (!= *target* s5-2) - (let ((v1-24 (vector-! (new 'stack-no-clear 'vector) (-> s5-2 control trans) (the-as vector gp-0)))) + (let ((v1-24 (vector-! (new 'stack-no-clear 'vector) (-> s5-2 control trans) gp-0))) 0.0 (.lvf vf1 (&-> v1-24 quad)) ) @@ -573,7 +573,7 @@ (.add.mul.z.vf vf1 vf2 vf1 acc :mask #b1) (.mov v1-25 vf1) (let ((f0-6 v1-25) - (f1-4 (-> gp-0 min w)) + (f1-4 (-> gp-0 w)) ) (if (>= (* f1-4 f1-4) f0-6) (send-event s5-2 'green-eco-attack) diff --git a/goal_src/jak3/engine/target/flut/flut-racer.gc b/goal_src/jak3/engine/target/flut/flut-racer.gc index ed74068cf2..0fd807d148 100644 --- a/goal_src/jak3/engine/target/flut/flut-racer.gc +++ b/goal_src/jak3/engine/target/flut/flut-racer.gc @@ -523,7 +523,7 @@ (vector+! s5-1 s5-1 (-> this root trans)) (set! (-> s5-1 w) 16384.0) (let ((s4-1 (new 'stack-no-clear 'array 'collide-shape 384))) - (countdown (s3-0 (fill-actor-list-for-box *actor-hash* (the-as bounding-box s5-1) s4-1 384)) + (countdown (s3-0 (fill-actor-list-for-box *actor-hash* s5-1 s4-1 384)) (let* ((s2-0 (-> s4-1 s3-0)) (v1-21 (if (type? s2-0 collide-shape) s2-0 diff --git a/goal_src/jak3/engine/target/flut/flut.gc b/goal_src/jak3/engine/target/flut/flut.gc index 0c5a763420..c7ba8765ae 100644 --- a/goal_src/jak3/engine/target/flut/flut.gc +++ b/goal_src/jak3/engine/target/flut/flut.gc @@ -70,9 +70,7 @@ (let ((gp-0 (the-as (array collide-shape) (new 'stack 'boxed-array collide-shape 32)))) (let ((a1-2 (sphere<-vector+r! (new 'stack-no-clear 'sphere) (-> this root trans) 16384.0))) (+! (-> a1-2 y) 12288.0) - (set! (-> gp-0 length) - (fill-actor-list-for-box *actor-hash* (the-as bounding-box a1-2) (-> gp-0 data) (-> gp-0 allocated-length)) - ) + (set! (-> gp-0 length) (fill-actor-list-for-box *actor-hash* a1-2 (-> gp-0 data) (-> gp-0 allocated-length))) ) (let* ((s5-1 (-> gp-0 length)) (s4-0 0) diff --git a/goal_src/jak3/engine/target/gun/gun-blue-shot.gc b/goal_src/jak3/engine/target/gun/gun-blue-shot.gc index 4bf69f73de..12138ec3a7 100644 --- a/goal_src/jak3/engine/target/gun/gun-blue-shot.gc +++ b/goal_src/jak3/engine/target/gun/gun-blue-shot.gc @@ -478,7 +478,7 @@ (set! (-> sv-1280 quad) (-> sv-144 fire-point quad)) (set! (-> sv-1280 w) 163840.0) (let ((gp-0 (new 'stack-no-clear 'array 'collide-shape 384))) - (countdown (s5-0 (fill-actor-list-for-box *actor-hash* (the-as bounding-box sv-1280) gp-0 384)) + (countdown (s5-0 (fill-actor-list-for-box *actor-hash* sv-1280 gp-0 384)) (let* ((s4-0 (-> gp-0 s5-0)) (v1-16 (if (type? s4-0 collide-shape) s4-0 @@ -496,6 +496,7 @@ (when (and (!= *target* s4-1) (!= sv-1300 s4-1) (not (focus-test? (the-as process-focusable s4-1) disable dead inactive gun-no-target)) + (pc-check-focus-fix (the-as process-focusable s4-1)) ;; og:preserve-this (or (logtest? (process-mask crate enemy vehicle civilian) (-> s4-1 mask)) (and (logtest? (process-mask guard) (-> s4-1 mask)) (-> *setting-control* user-current gun-target-guards?)) ) @@ -552,63 +553,7 @@ ) ) ) - (let* ((s5-1 *target*) - (gp-1 (if (type? s5-1 process-focusable) - s5-1 - ) - ) - ) - (when (and gp-1 (< (vector-vector-distance (get-trans gp-1 0) sv-1280) (-> sv-1280 w))) - (when (and (!= *target* gp-1) - (!= sv-1300 gp-1) - (not (focus-test? gp-1 disable dead inactive gun-no-target)) - (or (logtest? (process-mask crate enemy vehicle civilian) (-> gp-1 mask)) - (and (logtest? (process-mask guard) (-> gp-1 mask)) (-> *setting-control* user-current gun-target-guards?)) - ) - ) - (let ((s5-3 (new 'stack-no-clear 'collide-query))) - (vector+float*! (-> s5-3 start-pos) (-> sv-144 fire-point) (-> sv-144 fire-dir-out) 40960.0) - (+! (-> s5-3 start-pos y) 24576.0) - (vector-! (-> s5-3 move-dist) (get-trans gp-1 3) (-> sv-144 fire-point)) - (let ((v1-91 s5-3)) - (set! (-> v1-91 radius) 40.96) - (set! (-> v1-91 collide-with) (collide-spec backgnd)) - (set! (-> v1-91 ignore-process0) #f) - (set! (-> v1-91 ignore-process1) #f) - (set! (-> v1-91 ignore-pat) - (new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noendlessfall #x1 :board #x1) - ) - (set! (-> v1-91 action-mask) (collide-action solid)) - ) - (when (< (fill-and-probe-using-line-sphere *collide-cache* s5-3) 0.0) - (let ((s5-5 (vector-! (new 'stack-no-clear 'vector) (get-trans gp-1 3) (-> self control trans)))) - (vector-normalize! s5-5 1.0) - (when (< (-> s5-5 y) 0.5) - (set! (-> sv-1284 sv-1288 targ) (process->handle gp-1)) - (let ((f30-1 1.0)) - (if (and (nonzero? (-> gp-1 draw)) (logtest? (-> gp-1 draw status) (draw-control-status on-screen))) - (set! f30-1 (+ 2.0 f30-1)) - ) - (if (< (vector-vector-xz-distance-squared (-> sv-144 fire-point) (get-trans gp-1 3)) 2415919000.0) - (set! f30-1 (+ 4.0 f30-1)) - ) - (if (logtest? (process-mask enemy guard) (-> gp-1 mask)) - (set! f30-1 (+ 28.0 f30-1)) - ) - (if (logtest? (process-mask vehicle civilian) (-> gp-1 mask)) - (set! f30-1 (* 0.25 f30-1)) - ) - (set! (-> sv-1284 sv-1288 value) f30-1) - (set! sv-1296 (+ sv-1296 f30-1)) - ) - (set! sv-1288 (+ sv-1288 1)) - ) - ) - ) - ) - ) - ) - ) + ;; og:preserve-this *snip* there was dead code here! (let* ((v1-132 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) (v1-133 (the-as number (logior #x3f800000 v1-132))) (f0-32 (* (+ -1.0 (the-as float v1-133)) sv-1296)) @@ -727,7 +672,7 @@ ;; WARN: Return type mismatch symbol vs none. (defun draw-beam-segment () - (none) + #f ) (define *found-objects* (the-as (pointer handle) (malloc 'global 112))) @@ -1654,6 +1599,7 @@ (set! (-> a1-1 message) 'get-vehicle) (and (!= (send-event-function *target* a1-1) arg0) (not (focus-test? arg0 disable dead inactive gun-no-target)) + (pc-check-focus-fix arg0) ;; og:preserve-this (or (logtest? (process-mask enemy vehicle civilian) (-> arg0 mask)) (and (logtest? (process-mask guard) (-> arg0 mask)) (-> *setting-control* user-current gun-target-guards?)) ) @@ -1684,7 +1630,7 @@ ) (set! (-> sv-40 w) 0.0) (let ((s4-0 (new 'stack-no-clear 'array 'collide-shape 384))) - (countdown (s3-0 (fill-actor-list-for-box *actor-hash* (the-as bounding-box arg0) s4-0 384)) + (countdown (s3-0 (fill-actor-list-for-box *actor-hash* arg0 s4-0 384)) (let* ((s2-0 (-> s4-0 s3-0)) (a0-5 (if (type? s2-0 collide-shape) s2-0 @@ -1748,7 +1694,7 @@ (set! (-> arg0 w) 16384.0) (set! (-> sv-40 w) 1.0) (let ((s3-0 (new 'stack-no-clear 'array 'collide-shape 384))) - (countdown (s2-0 (fill-actor-list-for-box *actor-hash* (the-as bounding-box arg0) s3-0 384)) + (countdown (s2-0 (fill-actor-list-for-box *actor-hash* arg0 s3-0 384)) (let* ((s1-0 (-> s3-0 s2-0)) (a0-5 (if (type? s1-0 collide-shape) s1-0 diff --git a/goal_src/jak3/engine/target/gun/gun-dark-shot.gc b/goal_src/jak3/engine/target/gun/gun-dark-shot.gc index 97bb1ab5cc..4d8364d0a0 100644 --- a/goal_src/jak3/engine/target/gun/gun-dark-shot.gc +++ b/goal_src/jak3/engine/target/gun/gun-dark-shot.gc @@ -755,7 +755,7 @@ (set! (-> s4-0 quad) (-> this root trans quad)) (set! (-> s4-0 w) 1228800.0) (let ((s3-0 (new 'stack-no-clear 'array 'collide-shape 384))) - (countdown (s2-0 (fill-actor-list-for-box *actor-hash* (the-as bounding-box s4-0) s3-0 384)) + (countdown (s2-0 (fill-actor-list-for-box *actor-hash* s4-0 s3-0 384)) (let* ((s1-0 (-> s3-0 s2-0)) (v1-5 (if (type? s1-0 collide-shape) s1-0 @@ -1984,7 +1984,7 @@ (let ((s5-1 (send-event-function *target* a1-13))) (set! (-> s4-0 w) (-> self blast-radius)) (let ((s3-0 (new 'stack-no-clear 'array 'collide-shape 384))) - (countdown (s2-0 (fill-actor-list-for-box *actor-hash* (the-as bounding-box s4-0) s3-0 384)) + (countdown (s2-0 (fill-actor-list-for-box *actor-hash* s4-0 s3-0 384)) (let* ((s1-0 (-> s3-0 s2-0)) (v1-66 (if (type? s1-0 collide-shape) s1-0 @@ -2580,7 +2580,7 @@ (set! (-> sv-144 quad) (-> (get-trans (the-as process-focusable s5-0) 3) quad)) (set! (-> sv-144 r) sv-160) (let ((s3-2 (new 'stack-no-clear 'array 'collide-shape 384))) - (countdown (s2-0 (fill-actor-list-for-box *actor-hash* (the-as bounding-box sv-144) s3-2 384)) + (countdown (s2-0 (fill-actor-list-for-box *actor-hash* sv-144 s3-2 384)) (let* ((s1-0 (-> s3-2 s2-0)) (a0-15 (if (type? s1-0 collide-shape) s1-0 @@ -3683,7 +3683,7 @@ ) (set! (-> s5-0 w) f28-0) (let ((s3-1 (new 'stack-no-clear 'array 'collide-shape 384))) - (countdown (s2-0 (fill-actor-list-for-box *actor-hash* (the-as bounding-box s5-0) s3-1 384)) + (countdown (s2-0 (fill-actor-list-for-box *actor-hash* s5-0 s3-1 384)) (let* ((s1-0 (-> s3-1 s2-0)) (v1-17 (if (type? s1-0 collide-shape) s1-0 diff --git a/goal_src/jak3/engine/target/gun/gun-red-shot.gc b/goal_src/jak3/engine/target/gun/gun-red-shot.gc index f681b1562b..574eb9787a 100644 --- a/goal_src/jak3/engine/target/gun/gun-red-shot.gc +++ b/goal_src/jak3/engine/target/gun/gun-red-shot.gc @@ -228,7 +228,7 @@ (set! (-> s5-0 quad) (-> this root trans quad)) (set! (-> s5-0 w) (-> this blast-radius)) (let ((s3-0 (new 'stack-no-clear 'array 'collide-shape 384))) - (countdown (s2-0 (fill-actor-list-for-box *actor-hash* (the-as bounding-box s5-0) s3-0 384)) + (countdown (s2-0 (fill-actor-list-for-box *actor-hash* s5-0 s3-0 384)) (let* ((s1-0 (-> s3-0 s2-0)) (a0-8 (if (type? s1-0 collide-shape) s1-0 @@ -245,6 +245,7 @@ (when s1-1 (when (and (!= s4-0 s1-1) (not (focus-test? (the-as process-focusable s1-1) disable dead inactive)) + (pc-check-focus-fix (the-as process-focusable s1-1)) ;; og:preserve-this (logtest? (process-mask crate enemy guard vehicle civilian) (-> s1-1 mask)) (nonzero? (-> (the-as process-focusable s1-1) root root-prim prim-core collide-with)) ) @@ -298,6 +299,7 @@ (when (and s3-1 (< (vector-vector-distance (get-trans s3-1 0) s5-0) (-> s5-0 w))) (when (and (!= s4-0 s3-1) (not (focus-test? s3-1 disable dead inactive)) + (pc-check-focus-fix (the-as process-focusable s3-1)) ;; og:preserve-this (logtest? (process-mask crate enemy guard vehicle civilian) (-> s3-1 mask)) (nonzero? (-> s3-1 control root-prim prim-core collide-with)) ) @@ -366,7 +368,7 @@ (set! (-> s4-0 quad) (-> this root trans quad)) (set! (-> s4-0 w) (* 0.6666667 (-> this blast-radius))) (let ((s2-0 (new 'stack-no-clear 'array 'collide-shape 384))) - (countdown (s1-0 (fill-actor-list-for-box *actor-hash* (the-as bounding-box s4-0) s2-0 384)) + (countdown (s1-0 (fill-actor-list-for-box *actor-hash* s4-0 s2-0 384)) (let* ((s0-0 (-> s2-0 s1-0)) (a0-8 (if (type? s0-0 collide-shape) s0-0 @@ -384,6 +386,7 @@ (when (and (!= s3-0 a0-10) (not (focus-test? (the-as process-focusable a0-10) disable dead inactive gun-no-target)) (nonzero? (-> (the-as process-focusable a0-10) root root-prim prim-core collide-with)) + (pc-check-focus-fix (the-as process-focusable a0-10)) ;; og:preserve-this (or (logtest? (process-mask crate enemy vehicle civilian) (-> a0-10 mask)) (and (logtest? (process-mask guard) (-> a0-10 mask)) (-> *setting-control* user-current gun-target-guards?)) ) @@ -430,6 +433,7 @@ (when (and (!= s3-0 s2-1) (not (focus-test? s2-1 disable dead inactive gun-no-target)) (nonzero? (-> s2-1 control root-prim prim-core collide-with)) + (pc-check-focus-fix s2-1) ;; og:preserve-this (or (logtest? (process-mask crate enemy vehicle civilian) (-> s2-1 mask)) (and (logtest? (process-mask guard) (-> s2-1 mask)) (-> *setting-control* user-current gun-target-guards?)) ) @@ -632,7 +636,7 @@ (defmethod find-targets-and-attack! ((this gun-red-2-shockwave)) (local-vars - (sv-32 bounding-box) + (sv-32 vector) (sv-2672 (function vector vector float)) (sv-2688 vector) (sv-2704 vector) @@ -644,9 +648,9 @@ (vf6 :class vf) ) (init-vf0-vector) - (set! sv-32 (the-as bounding-box (new 'stack-no-clear 'vector))) - (set! (-> sv-32 min quad) (-> this origin quad)) - (set! (-> sv-32 min w) (-> this current-radius)) + (set! sv-32 (new 'stack-no-clear 'vector)) + (set! (-> sv-32 quad) (-> this origin quad)) + (set! (-> sv-32 w) (-> this current-radius)) (let ((s5-0 (new 'stack-no-clear 'array 'collide-shape 384))) (countdown (s4-0 (fill-actor-list-for-box *actor-hash* sv-32 s5-0 384)) (let* ((s3-0 (-> s5-0 s4-0)) @@ -665,6 +669,7 @@ (when s3-1 (when (and (!= *target* s3-1) (not (focus-test? (the-as process-focusable s3-1) disable dead inactive)) + (pc-check-focus-fix (the-as process-focusable s3-1)) ;; og:preserve-this (or (logtest? (process-mask crate enemy vehicle civilian) (-> s3-1 mask)) (and (logtest? (process-mask guard) (-> s3-1 mask)) (-> *setting-control* user-current gun-target-guards?)) ) @@ -739,74 +744,7 @@ ) ) ) - (let* ((s4-1 *target*) - (s5-1 (if (type? s4-1 process-focusable) - s4-1 - ) - ) - ) - (when (and s5-1 (< (vector-vector-distance (get-trans s5-1 0) (the-as vector sv-32)) (-> sv-32 min w))) - (when (and (!= *target* s5-1) - (not (focus-test? s5-1 disable dead inactive)) - (or (logtest? (process-mask crate enemy vehicle civilian) (-> s5-1 mask)) - (and (logtest? (process-mask guard) (-> s5-1 mask)) (-> *setting-control* user-current gun-target-guards?)) - ) - ) - (let ((s4-3 #f)) - (let ((s3-2 (process->handle s5-1))) - (dotimes (v1-68 (-> this num-previously-attacked-targets)) - (when (= (-> this previously-attacked-targets v1-68) s3-2) - (set! s4-3 #t) - 0 - (goto cfg-71) - ) - ) - (label cfg-71) - (when (not s4-3) - (let ((s2-2 #f)) - (let ((f0-5 (vector-vector-xz-distance-squared (-> this origin) (get-trans s5-1 3))) - (f1-5 24576.0) - ) - (cond - ((< f0-5 (* f1-5 f1-5)) - (set! s2-2 #t) - ) - (else - (let ((s1-2 (new 'stack-no-clear 'collide-query))) - (set! (-> s1-2 start-pos quad) (-> this origin quad)) - (vector-! (-> s1-2 move-dist) (get-trans s5-1 3) (-> this origin)) - (let ((v1-80 s1-2)) - (set! (-> v1-80 radius) 40.96) - (set! (-> v1-80 collide-with) (collide-spec backgnd)) - (set! (-> v1-80 ignore-process0) #f) - (set! (-> v1-80 ignore-process1) #f) - (set! (-> v1-80 ignore-pat) - (new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noendlessfall #x1 :board #x1) - ) - (set! (-> v1-80 action-mask) (collide-action solid)) - ) - (if (= (fill-and-probe-using-line-sphere *collide-cache* s1-2) -100000000.0) - (set! s2-2 #t) - ) - ) - ) - ) - ) - (when s2-2 - (send-attack! this s5-1 #t) - (set! (-> this previously-attacked-targets (-> this num-previously-attacked-targets)) (the-as handle s3-2)) - (+! (-> this num-previously-attacked-targets) 1) - ) - ) - ) - ) - (if (and s4-3 (logtest? (process-mask vehicle) (-> s5-1 mask))) - (send-attack! this s5-1 #f) - ) - ) - ) - ) - ) + ;; og:preserve-this *snip* there was dead code here! (none) ) ) @@ -1768,7 +1706,7 @@ (set! (-> a1-11 message) 'get-vehicle) (let ((s4-0 (send-event-function *target* a1-11))) (let ((s3-0 (new 'stack-no-clear 'array 'collide-shape 384))) - (countdown (s2-0 (fill-actor-list-for-box *actor-hash* (the-as bounding-box sv-144) s3-0 384)) + (countdown (s2-0 (fill-actor-list-for-box *actor-hash* sv-144 s3-0 384)) (let* ((s1-0 (-> s3-0 s2-0)) (v1-54 (if (type? s1-0 collide-shape) s1-0 @@ -1785,6 +1723,7 @@ (when s1-1 (when (and (!= *target* s1-1) (not (focus-test? (the-as process-focusable s1-1) disable dead inactive gun-no-target)) + (pc-check-focus-fix (the-as process-focusable s1-1)) ;; og:preserve-this (or (logtest? (process-mask crate enemy vehicle civilian) (-> s1-1 mask)) (and (logtest? (process-mask guard) (-> s1-1 mask)) (-> *setting-control* user-current gun-target-guards?)) ) @@ -1836,41 +1775,7 @@ ) ) ) - (let* ((s2-1 *target*) - (s3-1 (if (type? s2-1 process-focusable) - s2-1 - ) - ) - ) - (when (and s3-1 (< (vector-vector-distance (get-trans s3-1 0) sv-144) (-> sv-144 w))) - (when (and (!= *target* s3-1) - (not (focus-test? s3-1 disable dead inactive gun-no-target)) - (or (logtest? (process-mask crate enemy vehicle civilian) (-> s3-1 mask)) - (and (logtest? (process-mask guard) (-> s3-1 mask)) (-> *setting-control* user-current gun-target-guards?)) - ) - (!= s4-0 s3-1) - ) - (when (or (not s5-0) (logtest? (process-mask enemy guard) (-> s3-1 mask))) - (let ((s1-2 (new 'stack-no-clear 'vector))) - (set! (-> s1-2 quad) (-> (get-trans s3-1 0) quad)) - (let ((s2-3 (vector-normalize-copy! (new 'stack-no-clear 'vector) sv-148 1.0)) - (s4-1 (new 'stack-no-clear 'vector)) - ) - (vector-! s4-1 s1-2 sv-24) - (let ((f0-9 (vector-normalize-ret-len! s4-1 1.0)) - (f1-8 (vector-dot s2-3 s4-1)) - (v1-101 (and (not s5-0) (logtest? (process-mask enemy guard) (-> s3-1 mask)))) - ) - (if (and (< 0.707 f1-8) (< (fabs (-> s4-1 y)) 28672.0) (or v1-101 (< f0-9 f0-9))) - (set! gp-2 s3-1) - ) - ) - ) - ) - ) - ) - ) - ) + ;; og:preserve-this *snip* there was dead code here! ) ) (when gp-2 @@ -2317,11 +2222,11 @@ (vf2 :class vf) (vf3 :class vf) ) - (let ((s5-0 (new 'stack-no-clear 'bounding-box))) - (set! (-> s5-0 min quad) (-> this start-dir quad)) - (vector-float*! (the-as vector s5-0) (the-as vector s5-0) 43417.6) - (vector+! (the-as vector s5-0) (the-as vector s5-0) (-> this start-pos)) - (set! (-> s5-0 min w) 43827.2) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (set! (-> s5-0 quad) (-> this start-dir quad)) + (vector-float*! s5-0 s5-0 43417.6) + (vector+! s5-0 s5-0 (-> this start-pos)) + (set! (-> s5-0 w) 43827.2) (let ((s4-0 (-> this root root-prim prim-core collide-with))) (set! *actor-list-length* 0) (if (logtest? s4-0 (collide-spec hit-by-others-list)) @@ -2341,7 +2246,7 @@ (a3-1 s5-0) ) (.lvf vf2 (&-> a2-4 world-sphere quad)) - (.lvf vf3 (&-> a3-1 min quad)) + (.lvf vf3 (&-> a3-1 quad)) ) (.sub.vf vf1 vf3 vf2) (.mul.vf vf1 vf1 vf1) @@ -2349,7 +2254,7 @@ (.add.z.vf vf1 vf1 vf1 :mask #b1) (.mov a2-5 vf1) (let ((f0-2 a2-5) - (f1-1 (+ (-> a1-5 world-sphere w) (-> s5-0 min w))) + (f1-1 (+ (-> a1-5 world-sphere w) (-> s5-0 w))) ) (when (< f0-2 (* f1-1 f1-1)) (when (< *actor-list-length* 256) @@ -2382,7 +2287,7 @@ (a3-2 s5-0) ) (.lvf vf2 (&-> a2-11 world-sphere quad)) - (.lvf vf3 (&-> a3-2 min quad)) + (.lvf vf3 (&-> a3-2 quad)) ) (.sub.vf vf1 vf3 vf2) (.mul.vf vf1 vf1 vf1) @@ -2390,7 +2295,7 @@ (.add.z.vf vf1 vf1 vf1 :mask #b1) (.mov a2-12 vf1) (let ((f0-3 a2-12) - (f1-5 (+ (-> a1-17 world-sphere w) (-> s5-0 min w))) + (f1-5 (+ (-> a1-17 world-sphere w) (-> s5-0 w))) ) (when (< f0-3 (* f1-5 f1-5)) (when (< *actor-list-length* 256) diff --git a/goal_src/jak3/engine/target/gun/gun-util.gc b/goal_src/jak3/engine/target/gun/gun-util.gc index a5b2ea53e0..94eaac71e9 100644 --- a/goal_src/jak3/engine/target/gun/gun-util.gc +++ b/goal_src/jak3/engine/target/gun/gun-util.gc @@ -5,6 +5,9 @@ ;; name in dgo: gun-util ;; dgos: GAME +(defmacro pc-check-focus-fix (focusable) + `(#if PC_PORT (or (not (-> *pc-settings* fix-projectile-focus)) (logtest? (collide-action solid) (-> ,focusable root root-prim prim-core action))) #t)) + ;; DECOMP BEGINS (deftype gun-eject (projectile-bounce) diff --git a/goal_src/jak3/engine/target/gun/gun-yellow-shot.gc b/goal_src/jak3/engine/target/gun/gun-yellow-shot.gc index e01d22a319..c6c8630097 100644 --- a/goal_src/jak3/engine/target/gun/gun-yellow-shot.gc +++ b/goal_src/jak3/engine/target/gun/gun-yellow-shot.gc @@ -202,7 +202,7 @@ (set! (-> sv-1072 quad) (-> this root trans quad)) (set! (-> sv-1072 w) 143360.0) (let ((s5-0 (new 'stack-no-clear 'array 'collide-shape 384))) - (countdown (s4-0 (fill-actor-list-for-box *actor-hash* (the-as bounding-box sv-1072) s5-0 384)) + (countdown (s4-0 (fill-actor-list-for-box *actor-hash* sv-1072 s5-0 384)) (let* ((s3-0 (-> s5-0 s4-0)) (v1-34 (if (type? s3-0 collide-shape) s3-0 @@ -219,6 +219,7 @@ (when s3-1 (when (and (!= *target* s3-1) (not (focus-test? (the-as process-focusable s3-1) disable dead inactive gun-no-target)) + (pc-check-focus-fix (the-as process-focusable s3-1)) ;; og:preserve-this (or (logtest? (process-mask enemy vehicle civilian) (-> s3-1 mask)) (and (logtest? (process-mask guard) (-> s3-1 mask)) (-> *setting-control* user-current gun-target-guards?)) ) @@ -261,53 +262,7 @@ ) ) ) - (let* ((s4-1 *target*) - (s5-1 (if (type? s4-1 process-focusable) - s4-1 - ) - ) - ) - (when (and s5-1 (< (vector-vector-distance (get-trans s5-1 0) sv-1072) (-> sv-1072 w))) - (when (and (!= *target* s5-1) - (not (focus-test? s5-1 disable dead inactive gun-no-target)) - (or (logtest? (process-mask enemy vehicle civilian) (-> s5-1 mask)) - (and (logtest? (process-mask guard) (-> s5-1 mask)) (-> *setting-control* user-current gun-target-guards?)) - ) - ) - (let ((s4-3 (new 'stack-no-clear 'collide-query))) - (set! (-> s4-3 start-pos quad) (-> this root trans quad)) - (vector-! (-> s4-3 move-dist) (get-trans s5-1 3) (-> this root trans)) - (let ((v1-94 s4-3)) - (set! (-> v1-94 radius) 40.96) - (set! (-> v1-94 collide-with) (collide-spec backgnd)) - (set! (-> v1-94 ignore-process0) #f) - (set! (-> v1-94 ignore-process1) #f) - (set! (-> v1-94 ignore-pat) - (new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noendlessfall #x1 :board #x1) - ) - (set! (-> v1-94 action-mask) (collide-action solid)) - ) - (when (< (fill-and-probe-using-line-sphere *collide-cache* s4-3) 0.0) - (set! (-> sv-1076 sv-1080 targ) (process->handle s5-1)) - (let ((f0-16 1.0)) - (if (and (nonzero? (-> s5-1 draw)) (logtest? (-> s5-1 draw status) (draw-control-status on-screen))) - (set! f0-16 (+ 2.0 f0-16)) - ) - (if (logtest? (process-mask enemy guard) (-> s5-1 mask)) - (set! f0-16 (+ 28.0 f0-16)) - ) - (if (logtest? (process-mask vehicle civilian) (-> s5-1 mask)) - (set! f0-16 (* 0.25 f0-16)) - ) - (set! (-> sv-1076 sv-1080 value) f0-16) - (set! sv-1088 (+ sv-1088 f0-16)) - ) - (set! sv-1080 (+ sv-1080 1)) - ) - ) - ) - ) - ) + ;; og:preserve-this *snip* there was dead code here! (set! sv-3792 (new 'stack-no-clear 'array 'int8 100)) (set! sv-3800 0) (set! sv-3808 (the-as float 0.0)) @@ -1408,7 +1363,7 @@ (set! sv-128 (the-as symbol #f)) (set! sv-136 (the-as handle #f)) (let ((s3-0 (new 'stack-no-clear 'array 'collide-shape 384))) - (countdown (s2-0 (fill-actor-list-for-box *actor-hash* (the-as bounding-box sv-84) s3-0 384)) + (countdown (s2-0 (fill-actor-list-for-box *actor-hash* sv-84 s3-0 384)) (let* ((s1-0 (-> s3-0 s2-0)) (v1-31 (if (type? s1-0 collide-shape) s1-0 diff --git a/goal_src/jak3/engine/target/target-darkjak.gc b/goal_src/jak3/engine/target/target-darkjak.gc index f0647c4716..f89b9ebe6c 100644 --- a/goal_src/jak3/engine/target/target-darkjak.gc +++ b/goal_src/jak3/engine/target/target-darkjak.gc @@ -2367,13 +2367,7 @@ (set! sv-132 (-> self handle-search)) (set! (-> sv-132 length) 0) (set! (-> sv-128 w) 327680.0) - (set! sv-120 (fill-actor-list-for-box - *actor-hash* - (the-as bounding-box sv-128) - (-> sv-112 data) - (-> sv-112 allocated-length) - ) - ) + (set! sv-120 (fill-actor-list-for-box *actor-hash* sv-128 (-> sv-112 data) (-> sv-112 allocated-length))) (set! (-> sv-112 length) sv-120) (countdown (s5-0 sv-120) (let* ((s4-0 (-> sv-112 s5-0 process)) diff --git a/goal_src/jak3/engine/target/target-gun.gc b/goal_src/jak3/engine/target/target-gun.gc index 05e9ddac49..2133207679 100644 --- a/goal_src/jak3/engine/target/target-gun.gc +++ b/goal_src/jak3/engine/target/target-gun.gc @@ -1590,9 +1590,7 @@ (s3-0 (vector-average! (new 'stack-no-clear 'vector) gp-0 s5-0)) ) (set! (-> s3-0 w) (* 0.5 (vector-vector-distance gp-0 s5-0))) - (set! (-> s4-1 length) - (fill-actor-list-for-box *actor-hash* (the-as bounding-box s3-0) (-> s4-1 data) (-> s4-1 allocated-length)) - ) + (set! (-> s4-1 length) (fill-actor-list-for-box *actor-hash* s3-0 (-> s4-1 data) (-> s4-1 allocated-length))) ) ) ) diff --git a/goal_src/jak3/levels/common/battle.gc b/goal_src/jak3/levels/common/battle.gc index 68dbbc0f68..5658c9056c 100644 --- a/goal_src/jak3/levels/common/battle.gc +++ b/goal_src/jak3/levels/common/battle.gc @@ -652,7 +652,7 @@ ) (set! *actor-list-length* 0) (if (logtest? s5-0 (collide-spec hit-by-others-list)) - (set! *actor-list-length* (fill-actor-list-for-box *actor-hash* (the-as bounding-box gp-0) *actor-list* 256)) + (set! *actor-list-length* (fill-actor-list-for-box *actor-hash* gp-0 *actor-list* 256)) ) (when (logtest? s5-0 (collide-spec player-list)) (let ((a0-2 (-> *collide-player-list* alive-list next0))) diff --git a/goal_src/jak3/levels/common/enemy/darkprec/dp-bipedal.gc b/goal_src/jak3/levels/common/enemy/darkprec/dp-bipedal.gc index 732cedf604..9f6d446b56 100644 --- a/goal_src/jak3/levels/common/enemy/darkprec/dp-bipedal.gc +++ b/goal_src/jak3/levels/common/enemy/darkprec/dp-bipedal.gc @@ -3161,10 +3161,10 @@ (when (and (not (-> *setting-control* user-current nuke-active?)) (time-elapsed? (-> self spawn-timer) (seconds 6)) (let ((a2-1 (new 'stack-no-clear 'array 'collide-shape 1)) - (a1-1 (new 'stack-no-clear 'bounding-box)) + (a1-1 (new 'stack-no-clear 'vector)) ) - (set! (-> a1-1 min quad) (-> self entity extra trans quad)) - (set! (-> a1-1 min w) 24576.0) + (set! (-> a1-1 quad) (-> self entity extra trans quad)) + (set! (-> a1-1 w) 24576.0) (zero? (fill-actor-list-for-box *actor-hash* a1-1 a2-1 1)) ) ) diff --git a/goal_src/jak3/levels/desert/hover/des-beast.gc b/goal_src/jak3/levels/desert/hover/des-beast.gc index 9914419cdb..221e8b2593 100644 --- a/goal_src/jak3/levels/desert/hover/des-beast.gc +++ b/goal_src/jak3/levels/desert/hover/des-beast.gc @@ -1399,7 +1399,7 @@ (des-beast-method-164 (_type_) none) (des-beast-method-165 (_type_) none) (des-beast-method-166 (_type_) none) - (des-beast-method-167 (_type_ bounding-box) symbol) + (des-beast-method-167 (_type_ vector) symbol) ) ) @@ -1579,12 +1579,11 @@ (let ((a1-6 (new 'stack-no-clear 'vector))) (set! (-> a1-6 quad) (-> self root trans quad)) (set! (-> a1-6 w) 409600.0) - (if (or (des-beast-method-167 self (the-as bounding-box a1-6)) - (and (-> self can-turn?) - (time-elapsed? (-> self state-time) (seconds 6)) - (>= (+ (current-time) (seconds -0.1)) (-> self behind-time)) - (< 15.0 (-> self hit-points)) - ) + (if (or (des-beast-method-167 self a1-6) (and (-> self can-turn?) + (time-elapsed? (-> self state-time) (seconds 6)) + (>= (+ (current-time) (seconds -0.1)) (-> self behind-time)) + (< 15.0 (-> self hit-points)) + ) ) (go-virtual turn-back) ) @@ -1841,7 +1840,7 @@ ) ) -(defmethod des-beast-method-167 ((this des-beast) (arg0 bounding-box)) +(defmethod des-beast-method-167 ((this des-beast) (arg0 vector)) ;; og:preserve-this ; (gpr->fpr #x7f800000) (let ((s5-0 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> this root quat)))) diff --git a/goal_src/jak3/levels/desert/hover/scorpion-gun.gc b/goal_src/jak3/levels/desert/hover/scorpion-gun.gc index 127520bac6..cff617d423 100644 --- a/goal_src/jak3/levels/desert/hover/scorpion-gun.gc +++ b/goal_src/jak3/levels/desert/hover/scorpion-gun.gc @@ -1032,7 +1032,7 @@ (vector-normalize-copy! sv-656 (-> gp-0 fvec) 1.0) (vector+float*! s4-0 (-> gp-0 trans) sv-656 512000.0) (set! (-> s4-0 w) 614400.0) - (let ((s3-0 (fill-actor-list-for-box *actor-hash* (the-as bounding-box s4-0) (-> s5-0 data) (-> s5-0 length)))) + (let ((s3-0 (fill-actor-list-for-box *actor-hash* s4-0 (-> s5-0 data) (-> s5-0 length)))) (set! (-> s5-0 length) s3-0) (let ((s4-1 (the-as process #f))) (let ((f30-0 0.0)) diff --git a/goal_src/jak3/levels/desert/lizard/desert-lizard-task.gc b/goal_src/jak3/levels/desert/lizard/desert-lizard-task.gc index 73b88b65cc..cd96d29606 100644 --- a/goal_src/jak3/levels/desert/lizard/desert-lizard-task.gc +++ b/goal_src/jak3/levels/desert/lizard/desert-lizard-task.gc @@ -745,7 +745,7 @@ (set! (-> this lizards-left) s5-1) ) (set! (-> *game-info* score) (the float (-> this lizards-left))) - (let ((s3-0 (new 'stack-no-clear 'bounding-box)) + (let ((s3-0 (new 'stack-no-clear 'vector)) (s4-3 (the-as (array collide-shape) ((method-of-type array new) (the-as symbol (new 'stack-no-clear 'array 'collide-shape 32)) array @@ -756,7 +756,7 @@ ) (s5-2 0) ) - (set! (-> s3-0 min quad) (-> this corral-pos quad)) + (set! (-> s3-0 quad) (-> this corral-pos quad)) (set! (-> s4-3 length) (fill-actor-list-for-box *actor-hash* s3-0 (-> s4-3 data) (-> s4-3 allocated-length))) (dotimes (s3-1 (-> s4-3 length)) (if (type? (-> s4-3 s3-1 process) flut) diff --git a/goal_src/jak3/levels/desert/wvehicle/wvehicle-util.gc b/goal_src/jak3/levels/desert/wvehicle/wvehicle-util.gc index 89d6e585bb..0a45e601a1 100644 --- a/goal_src/jak3/levels/desert/wvehicle/wvehicle-util.gc +++ b/goal_src/jak3/levels/desert/wvehicle/wvehicle-util.gc @@ -757,7 +757,7 @@ (let ((s4-1 (new 'stack 'boxed-array collide-shape 128))) (set! (-> gp-0 ground-normal-sum x) (the-as float (fill-actor-list-for-box *actor-hash* - (the-as bounding-box (-> gp-0 p-body)) + (-> gp-0 p-body) (the-as (pointer collide-shape) (-> s4-1 data)) (-> s4-1 allocated-length) ) diff --git a/goal_src/jak3/levels/mine/manta.gc b/goal_src/jak3/levels/mine/manta.gc index 43c6f30212..910922cf37 100644 --- a/goal_src/jak3/levels/mine/manta.gc +++ b/goal_src/jak3/levels/mine/manta.gc @@ -1309,7 +1309,7 @@ (let ((s4-0 544)) (set! *actor-list-length* 0) (if (logtest? s4-0 512) - (set! *actor-list-length* (fill-actor-list-for-box *actor-hash* (the-as bounding-box s3-0) *actor-list* 256)) + (set! *actor-list-length* (fill-actor-list-for-box *actor-hash* s3-0 *actor-list* 256)) ) (when (logtest? s4-0 1024) (let ((a0-4 (-> *collide-player-list* alive-list next0))) diff --git a/goal_src/jak3/levels/tower/tower-obs.gc b/goal_src/jak3/levels/tower/tower-obs.gc index 7a19f4a8e8..5e667b155e 100644 --- a/goal_src/jak3/levels/tower/tower-obs.gc +++ b/goal_src/jak3/levels/tower/tower-obs.gc @@ -777,11 +777,11 @@ (defmethod can-spawn-creature? ((this tow-spawner) (arg0 vector) (arg1 float)) (and (or (not *target*) (< 14336.0 (vector-vector-xz-distance (-> *target* control trans) (-> this root trans)))) - (let ((s3-0 (new 'stack-no-clear 'bounding-box)) + (let ((s3-0 (new 'stack-no-clear 'vector)) (s4-0 (the-as (array collide-shape) (new 'stack 'boxed-array collide-shape 8))) ) - (set! (-> s3-0 min quad) (-> arg0 quad)) - (set! (-> s3-0 min w) arg1) + (set! (-> s3-0 quad) (-> arg0 quad)) + (set! (-> s3-0 w) arg1) (let ((gp-1 (fill-actor-list-for-box *actor-hash* s3-0 (-> s4-0 data) (-> s4-0 length)))) (or (zero? gp-1) (begin (dotimes (s5-1 gp-1) diff --git a/goal_src/jak3/levels/wascity/wascity-turret.gc b/goal_src/jak3/levels/wascity/wascity-turret.gc index c43c44dc85..909de81199 100644 --- a/goal_src/jak3/levels/wascity/wascity-turret.gc +++ b/goal_src/jak3/levels/wascity/wascity-turret.gc @@ -1281,7 +1281,7 @@ ) (init-vf0-vector) (let ((s5-0 (new 'stack-no-clear 'matrix)) - (s3-0 (new 'stack-no-clear 'bounding-box)) + (s3-0 (new 'stack-no-clear 'vector)) (s4-0 (the-as (array collide-shape) (new 'stack 'boxed-array collide-shape 128))) (f26-0 0.0) (f28-0 0.0) @@ -1293,8 +1293,8 @@ (set! (-> this lerp2) 0.0) (vector-lerp! (-> this aim-dir) (-> s5-0 fvec) (-> this aim-dir) (-> this lerp)) (vector-lerp! (-> this reticle-dir) (-> s5-0 fvec) (-> this reticle-dir) (-> this lerp2)) - (vector+float*! (the-as vector s3-0) (-> s5-0 trans) (-> this aim-dir) 2457600.0) - (set! (-> s3-0 min w) 2457600.0) + (vector+float*! s3-0 (-> s5-0 trans) (-> this aim-dir) 2457600.0) + (set! (-> s3-0 w) 2457600.0) (set! (-> this target-handle) (the-as handle #f)) (let ((s2-1 (fill-actor-list-for-box *actor-hash* s3-0 (-> s4-0 data) (-> s4-0 length)))) (set! (-> s4-0 length) s2-1) diff --git a/goal_src/jak3/levels/wascity/wasstadium/wasstadc-obs.gc b/goal_src/jak3/levels/wascity/wasstadium/wasstadc-obs.gc index b98ae889f1..59d5799cf9 100644 --- a/goal_src/jak3/levels/wascity/wasstadium/wasstadc-obs.gc +++ b/goal_src/jak3/levels/wascity/wasstadium/wasstadc-obs.gc @@ -112,7 +112,7 @@ ) (set! (-> s4-0 w) 16384.0) (let ((s5-1 (new 'stack-no-clear 'array 'collide-shape 64))) - (countdown (s4-1 (fill-actor-list-for-box *actor-hash* (the-as bounding-box s4-0) s5-1 64)) + (countdown (s4-1 (fill-actor-list-for-box *actor-hash* s4-0 s5-1 64)) (let* ((s3-0 (-> s5-1 s4-1)) (v1-12 (if (type? s3-0 collide-shape) s3-0 diff --git a/goal_src/jak3/pc/debug/default-menu-pc.gc b/goal_src/jak3/pc/debug/default-menu-pc.gc index 8f8a45ad57..bd651d5adf 100644 --- a/goal_src/jak3/pc/debug/default-menu-pc.gc +++ b/goal_src/jak3/pc/debug/default-menu-pc.gc @@ -904,6 +904,7 @@ (flag "Faster airlocks" #f ,(dm-lambda-boolean-flag (-> *pc-settings* fast-airlock?))) (flag "Faster elevators" #f ,(dm-lambda-boolean-flag (-> *pc-settings* fast-elevator?))) (flag "Faster progress" #f ,(dm-lambda-boolean-flag (-> *pc-settings* fast-progress?))) + (flag "Fix projectile focus" #f ,(dm-lambda-boolean-flag (-> *pc-settings* fix-projectile-focus))) ) (menu "Level of detail" (flag "PS2 LOD " #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-lod-dist?))) diff --git a/goal_src/jak3/pc/pckernel-impl.gc b/goal_src/jak3/pc/pckernel-impl.gc index ca1e0c8845..4352e17ebc 100644 --- a/goal_src/jak3/pc/pckernel-impl.gc +++ b/goal_src/jak3/pc/pckernel-impl.gc @@ -90,6 +90,8 @@ (fast-progress? symbol) (minimap-force-north symbol) + (fix-projectile-focus symbol) + ;(stats statistics) ;; gfx @@ -140,6 +142,7 @@ (true! (-> obj fast-airlock?)) (true! (-> obj fast-elevator?)) (false! (-> obj fast-progress?)) + (true! (-> obj fix-projectile-focus)) (true! (-> obj smooth-minimap?)) (false! (-> obj minimap-force-north)) (false! (-> obj hires-clouds?)) diff --git a/goal_src/jak3/pc/pckernel.gc b/goal_src/jak3/pc/pckernel.gc index 3ad7ca8873..208d4295a7 100644 --- a/goal_src/jak3/pc/pckernel.gc +++ b/goal_src/jak3/pc/pckernel.gc @@ -606,6 +606,7 @@ (("fast-airlock?") (set! (-> obj fast-airlock?) (file-stream-read-symbol file))) (("fast-elevator?") (set! (-> obj fast-elevator?) (file-stream-read-symbol file))) (("fast-progress?") (set! (-> obj fast-progress?) (file-stream-read-symbol file))) + (("fix-projectile-focus") (set! (-> obj fix-projectile-focus) (file-stream-read-symbol file))) (("smooth-minimap?") (set! (-> obj smooth-minimap?) (file-stream-read-symbol file))) (("minimap-force-north") (set! (-> obj minimap-force-north) (file-stream-read-symbol file))) (("hires-clouds?") (set! (-> obj hires-clouds?) (file-stream-read-symbol file))) @@ -657,6 +658,7 @@ (format file " (fast-airlock? ~A)~%" (-> obj fast-airlock?)) (format file " (fast-elevator? ~A)~%" (-> obj fast-elevator?)) (format file " (fast-progress? ~A)~%" (-> obj fast-progress?)) + (format file " (fix-projectile-focus ~A)~%" (-> obj fix-projectile-focus)) (format file " (smooth-minimap? ~A)~%" (-> obj smooth-minimap?)) (format file " (minimap-force-north ~A)~%" (-> obj minimap-force-north)) (format file " (hires-clouds? ~A)~%" (-> obj hires-clouds?)) diff --git a/test/decompiler/reference/jak3/engine/collide/collide-cache-h_REF.gc b/test/decompiler/reference/jak3/engine/collide/collide-cache-h_REF.gc index 7e7c568c05..2b84f9b4fd 100644 --- a/test/decompiler/reference/jak3/engine/collide/collide-cache-h_REF.gc +++ b/test/decompiler/reference/jak3/engine/collide/collide-cache-h_REF.gc @@ -104,8 +104,8 @@ This can represent a sphere, a triangle mesh, or a group of other primitives wit (prim-type prim-type :overlay-at (-> prim-core prim-type)) ) (:methods - (resolve-moving-sphere-tri (_type_ collide-tri-result collide-prim-core vector float collide-action) float) - (resolve-moving-sphere-sphere (_type_ collide-tri-result collide-prim-core vector float collide-action) float) + (resolve-moving-sphere-tri (_type_ collide-query sphere vector float collide-action) float) + (resolve-moving-sphere-sphere (_type_ collide-query sphere vector float collide-action) float) ) ) diff --git a/test/decompiler/reference/jak3/engine/collide/collide-cache_REF.gc b/test/decompiler/reference/jak3/engine/collide/collide-cache_REF.gc index 8ace03c78f..ed3f8aa36f 100644 --- a/test/decompiler/reference/jak3/engine/collide/collide-cache_REF.gc +++ b/test/decompiler/reference/jak3/engine/collide/collide-cache_REF.gc @@ -830,14 +830,14 @@ (vf4 :class vf) ) (init-vf0-vector) - (let ((s5-0 (new 'stack-no-clear 'collide-cache-tri))) + (let ((s5-0 (new 'stack-no-clear 'collide-puls-work))) (.lvf vf4 (&-> arg0 exit-planes 0 quad)) (.lvf vf3 (&-> arg0 start-pos quad)) (.lvf vf2 (&-> arg0 move-dist quad)) - (set! (-> s5-0 vertex 0 x) (the-as float (-> arg0 ignore-pat))) + (set! (-> s5-0 ignore-pat) (-> arg0 ignore-pat)) (.mul.w.vf vf3 vf0 vf4 :mask #b1000) - (.svf (&-> s5-0 vertex 2 quad) vf2) - (.svf (&-> s5-0 vertex 1 quad) vf3) + (.svf (&-> s5-0 move-dist quad) vf2) + (.svf (&-> s5-0 bsphere quad) vf3) (let ((s4-0 (the-as object (-> this prims))) (f30-0 -100000000.0) ) @@ -849,9 +849,9 @@ ((>= (-> (the-as collide-cache-prim s4-0) prim-core prim-type) 0) (let ((f0-0 ((method-of-type collide-cache-prim resolve-moving-sphere-tri) (the-as collide-cache-prim s4-0) - (the-as collide-tri-result arg0) - (the-as collide-prim-core (-> s5-0 vertex 1)) - (-> s5-0 vertex 2) + arg0 + (-> s5-0 bsphere) + (-> s5-0 move-dist) f30-0 (collide-action solid) ) @@ -869,9 +869,9 @@ ) (let ((f0-1 ((method-of-type collide-cache-prim resolve-moving-sphere-sphere) (the-as collide-cache-prim s4-0) - (the-as collide-tri-result arg0) - (the-as collide-prim-core (-> s5-0 vertex 1)) - (-> s5-0 vertex 2) + arg0 + (-> s5-0 bsphere) + (-> s5-0 move-dist) f30-0 (collide-action solid) ) @@ -1058,7 +1058,3 @@ (set! v0-4 #f) (ret-value v0-4) ) - - - - diff --git a/test/decompiler/reference/jak3/engine/collide/collide-shape-rider_REF.gc b/test/decompiler/reference/jak3/engine/collide/collide-shape-rider_REF.gc index ff6a3cb678..419cca69ea 100644 --- a/test/decompiler/reference/jak3/engine/collide/collide-shape-rider_REF.gc +++ b/test/decompiler/reference/jak3/engine/collide/collide-shape-rider_REF.gc @@ -171,7 +171,7 @@ (set! *actor-list-length* 0) (if (logtest? s5-0 (collide-spec hit-by-others-list)) (set! *actor-list-length* - (fill-actor-list-for-box *actor-hash* (the-as bounding-box (-> s4-0 prim-core)) *actor-list* 256) + (fill-actor-list-for-box *actor-hash* (the-as vector (-> s4-0 prim-core)) *actor-list* 256) ) ) (when (logtest? s5-0 (collide-spec player-list)) @@ -438,7 +438,3 @@ ) ) ) - - - - diff --git a/test/decompiler/reference/jak3/engine/collide/collide-shape_REF.gc b/test/decompiler/reference/jak3/engine/collide/collide-shape_REF.gc index 88f3ca97c3..1444517a9a 100644 --- a/test/decompiler/reference/jak3/engine/collide/collide-shape_REF.gc +++ b/test/decompiler/reference/jak3/engine/collide/collide-shape_REF.gc @@ -416,11 +416,11 @@ (vf4 :class vf) (vf5 :class vf) ) - (let* ((gp-0 (new 'stack-no-clear 'collide-tri-result)) + (let* ((gp-0 (new 'stack-no-clear 'collide-query)) (f0-1 (resolve-moving-sphere-tri arg1 gp-0 - (-> this prim-core) + (the-as sphere (-> this prim-core)) (-> arg0 move-dist) (-> arg0 best-dist) (-> this prim-core action) @@ -441,13 +441,13 @@ (b! (= v1-5 #f) cfg-5 :likely-delay (set! a2-2 (the-as collide-shape-prim #f))) (b! (logtest? (-> a0-3 penetrate-using) (-> v1-5 penetrated-by)) cfg-6 :delay (nop!)) (label cfg-5) - (.lvf vf3 (&-> gp-0 vertex 0 quad)) - (.lvf vf4 (&-> gp-0 vertex 1 quad)) - (.lvf vf5 (&-> gp-0 vertex 2 quad)) - (.lvf vf1 (&-> gp-0 intersect quad)) - (.lvf vf2 (&-> gp-0 normal quad)) - (let ((a0-6 (-> gp-0 pat)) - (a1-4 (-> gp-0 collide-ptr)) + (.lvf vf3 (&-> gp-0 best-other-tri vertex 0 quad)) + (.lvf vf4 (&-> gp-0 best-other-tri vertex 1 quad)) + (.lvf vf5 (&-> gp-0 best-other-tri vertex 2 quad)) + (.lvf vf1 (&-> gp-0 best-other-tri intersect quad)) + (.lvf vf2 (&-> gp-0 best-other-tri normal quad)) + (let ((a0-6 (-> gp-0 best-other-tri pat)) + (a1-4 (-> gp-0 best-other-tri collide-ptr)) ) (set! (-> arg0 best-dist) f0-1) (.svf (&-> arg0 best-other-tri vertex 0 quad) vf3) @@ -463,14 +463,7 @@ (label cfg-6) (b! (not v1-5) cfg-8 :delay (empty-form)) ) - (add-touching-prims - *touching-list* - this - a2-2 - f0-1 - (the-as collide-tri-result #f) - (the-as collide-tri-result (-> gp-0 vertex)) - ) + (add-touching-prims *touching-list* this a2-2 f0-1 (the-as collide-tri-result #f) (-> gp-0 best-other-tri)) ) ) ) @@ -520,11 +513,11 @@ (vf4 :class vf) (vf5 :class vf) ) - (let* ((gp-0 (new 'stack-no-clear 'collide-tri-result)) + (let* ((gp-0 (new 'stack-no-clear 'collide-query)) (f0-1 (resolve-moving-sphere-sphere arg1 gp-0 - (-> this prim-core) + (the-as sphere (-> this prim-core)) (-> arg0 move-dist) (-> arg0 best-dist) (-> arg1 prim-core action) @@ -544,13 +537,13 @@ (b! (zero? a1-2) cfg-4 :delay (nop!)) (b! (logtest? (-> v1-4 penetrate-using) (-> a0-4 penetrated-by)) cfg-4 :delay (nop!)) ) - (.lvf vf3 (&-> gp-0 vertex 0 quad)) - (.lvf vf4 (&-> gp-0 vertex 1 quad)) - (.lvf vf5 (&-> gp-0 vertex 2 quad)) - (.lvf vf1 (&-> gp-0 intersect quad)) - (.lvf vf2 (&-> gp-0 normal quad)) - (let ((v1-7 (-> gp-0 pat)) - (a0-6 (-> gp-0 collide-ptr)) + (.lvf vf3 (&-> gp-0 best-other-tri vertex 0 quad)) + (.lvf vf4 (&-> gp-0 best-other-tri vertex 1 quad)) + (.lvf vf5 (&-> gp-0 best-other-tri vertex 2 quad)) + (.lvf vf1 (&-> gp-0 best-other-tri intersect quad)) + (.lvf vf2 (&-> gp-0 best-other-tri normal quad)) + (let ((v1-7 (-> gp-0 best-other-tri pat)) + (a0-6 (-> gp-0 best-other-tri collide-ptr)) ) (set! (-> arg0 best-dist) f0-1) (.svf (&-> arg0 best-other-tri vertex 0 quad) vf3) @@ -564,14 +557,7 @@ (set! (-> arg0 best-other-prim) a2-2) (set! (-> arg0 best-my-prim) this) (label cfg-4) - (add-touching-prims - *touching-list* - this - a2-2 - f0-1 - (the-as collide-tri-result #f) - (the-as collide-tri-result (-> gp-0 vertex)) - ) + (add-touching-prims *touching-list* this a2-2 f0-1 (the-as collide-tri-result #f) (-> gp-0 best-other-tri)) ) ) (label cfg-5) @@ -2476,7 +2462,7 @@ (set! *actor-list-length* 0) (if (logtest? s4-0 (collide-spec hit-by-others-list)) (set! *actor-list-length* - (fill-actor-list-for-box *actor-hash* (the-as bounding-box (-> this root-prim prim-core)) *actor-list* 256) + (fill-actor-list-for-box *actor-hash* (the-as vector (-> this root-prim prim-core)) *actor-list* 256) ) ) (when (logtest? s4-0 (collide-spec player-list)) @@ -2658,7 +2644,7 @@ (set! *actor-list-length* 0) (b! (not (logtest? (the-as collide-spec s2-0) 512)) cfg-2 :delay (empty-form)) (set! *actor-list-length* - (fill-actor-list-for-box *actor-hash* (the-as bounding-box (-> s3-0 prim-core)) *actor-list* 256) + (fill-actor-list-for-box *actor-hash* (the-as vector (-> s3-0 prim-core)) *actor-list* 256) ) (label cfg-2) (b! (not (logtest? (the-as collide-spec s2-0) 1024)) cfg-11 :delay (empty-form)) diff --git a/test/decompiler/reference/jak3/engine/common-obs/water-flow_REF.gc b/test/decompiler/reference/jak3/engine/common-obs/water-flow_REF.gc index 20758dc3c8..0ed8ee65fa 100644 --- a/test/decompiler/reference/jak3/engine/common-obs/water-flow_REF.gc +++ b/test/decompiler/reference/jak3/engine/common-obs/water-flow_REF.gc @@ -362,9 +362,7 @@ (init-vf0-vector) (set! *actor-list-length* 0) (if #t - (set! *actor-list-length* - (fill-actor-list-for-box *actor-hash* (the-as bounding-box (-> this collide-bounds)) *actor-list* 256) - ) + (set! *actor-list-length* (fill-actor-list-for-box *actor-hash* (-> this collide-bounds) *actor-list* 256)) ) (when #t (let ((a0-2 (-> *collide-player-list* alive-list next0))) @@ -695,7 +693,3 @@ (set! (-> this flow) (new 'process 'flow-control (the-as process-drawable this) (the-as res-lump #f))) (go (method-of-object this idle)) ) - - - - diff --git a/test/decompiler/reference/jak3/engine/physics/trajectory_REF.gc b/test/decompiler/reference/jak3/engine/physics/trajectory_REF.gc index fca2e2eb7a..654457273c 100644 --- a/test/decompiler/reference/jak3/engine/physics/trajectory_REF.gc +++ b/test/decompiler/reference/jak3/engine/physics/trajectory_REF.gc @@ -277,7 +277,7 @@ ) ) (else - (let ((s1-0 (new 'stack-no-clear 'bounding-box)) + (let ((s1-0 (new 'stack-no-clear 'vector)) (s2-1 (new 'stack 'boxed-array collide-shape 32)) ) (sphere<-vector+r! (the-as sphere s1-0) arg1 arg2) diff --git a/test/decompiler/reference/jak3/engine/spatial-hash/spatial-hash-h_REF.gc b/test/decompiler/reference/jak3/engine/spatial-hash/spatial-hash-h_REF.gc index 0db4e4e9eb..af84e34855 100644 --- a/test/decompiler/reference/jak3/engine/spatial-hash/spatial-hash-h_REF.gc +++ b/test/decompiler/reference/jak3/engine/spatial-hash/spatial-hash-h_REF.gc @@ -212,7 +212,7 @@ O(n^2) 'check everybody against everybody' collision loop." (new (symbol type int int) _type_) (spatial-hash-method-33 (_type_ vector hash-object-info) none) (add-an-object (_type_ bounding-box (pointer collide-shape) int) int) - (fill-actor-list-for-box (_type_ bounding-box (pointer collide-shape) int) int) + (fill-actor-list-for-box (_type_ vector (pointer collide-shape) int) int) (fill-actor-list-for-sphere (_type_ vector vector float (pointer collide-shape) int int) int) (fill-actor-list-for-line-sphere (_type_ vector vector float (pointer collide-shape) int int) int) (fill-actor-list-for-vec+r (_type_ vector (pointer collide-shape) int) int) @@ -258,7 +258,3 @@ O(n^2) 'check everybody against everybody' collision loop." ;; failed to figure out what this is: 0 - - - - diff --git a/test/decompiler/reference/jak3/engine/spatial-hash/spatial-hash_REF.gc b/test/decompiler/reference/jak3/engine/spatial-hash/spatial-hash_REF.gc index 44e937d769..a6644b1714 100644 --- a/test/decompiler/reference/jak3/engine/spatial-hash/spatial-hash_REF.gc +++ b/test/decompiler/reference/jak3/engine/spatial-hash/spatial-hash_REF.gc @@ -976,9 +976,9 @@ (arg4 int) (arg5 int) ) - (let ((v1-0 (new 'stack-no-clear 'bounding-box))) - (set! (-> v1-0 min quad) (-> arg0 quad)) - (set! (-> v1-0 min w) 0.0) + (let ((v1-0 (new 'stack-no-clear 'vector))) + (set! (-> v1-0 quad) (-> arg0 quad)) + (set! (-> v1-0 w) 0.0) (fill-actor-list-for-box this v1-0 (the-as (pointer collide-shape) arg1) (the-as int arg2)) ) ) diff --git a/test/decompiler/reference/jak3/engine/target/board/target-board_REF.gc b/test/decompiler/reference/jak3/engine/target/board/target-board_REF.gc index a4a93acfd5..dac7c95e4f 100644 --- a/test/decompiler/reference/jak3/engine/target/board/target-board_REF.gc +++ b/test/decompiler/reference/jak3/engine/target/board/target-board_REF.gc @@ -510,16 +510,16 @@ (vf2 :class vf) ) (init-vf0-vector) - (let ((gp-0 (new 'stack-no-clear 'bounding-box))) + (let ((gp-0 (new 'stack-no-clear 'vector))) (cond (arg0 - (set! (-> gp-0 min quad) (-> self control trans quad)) - (set! (-> gp-0 min w) 49152.0) + (set! (-> gp-0 quad) (-> self control trans quad)) + (set! (-> gp-0 w) 49152.0) ) (else - (vector-normalize! (vector-z-quaternion! (the-as vector gp-0) (-> self control quat)) -12288.0) - (vector+! (the-as vector gp-0) (the-as vector gp-0) (-> self control trans)) - (set! (-> gp-0 min w) 24576.0) + (vector-normalize! (vector-z-quaternion! gp-0 (-> self control quat)) -12288.0) + (vector+! gp-0 gp-0 (-> self control trans)) + (set! (-> gp-0 w) 24576.0) ) ) (let ((s5-1 (new 'stack-no-clear 'array 'collide-shape 384))) @@ -539,7 +539,7 @@ ) (when a0-11 (when (!= *target* a0-11) - (let ((v1-13 (vector-! (new 'stack-no-clear 'vector) (-> a0-11 root trans) (the-as vector gp-0)))) + (let ((v1-13 (vector-! (new 'stack-no-clear 'vector) (-> a0-11 root trans) gp-0))) 0.0 (.lvf vf1 (&-> v1-13 quad)) ) @@ -550,7 +550,7 @@ (.add.mul.z.vf vf1 vf2 vf1 acc :mask #b1) (.mov v1-14 vf1) (let ((f0-3 v1-14) - (f1-0 (-> gp-0 min w)) + (f1-0 (-> gp-0 w)) ) (if (>= (* f1-0 f1-0) f0-3) (send-event a0-11 'green-eco-attack) @@ -569,9 +569,9 @@ ) ) ) - (when (and s5-2 (< (vector-vector-distance (get-trans s5-2 0) (the-as vector gp-0)) (-> gp-0 min w))) + (when (and s5-2 (< (vector-vector-distance (get-trans s5-2 0) gp-0) (-> gp-0 w))) (when (!= *target* s5-2) - (let ((v1-24 (vector-! (new 'stack-no-clear 'vector) (-> s5-2 control trans) (the-as vector gp-0)))) + (let ((v1-24 (vector-! (new 'stack-no-clear 'vector) (-> s5-2 control trans) gp-0))) 0.0 (.lvf vf1 (&-> v1-24 quad)) ) @@ -582,7 +582,7 @@ (.add.mul.z.vf vf1 vf2 vf1 acc :mask #b1) (.mov v1-25 vf1) (let ((f0-6 v1-25) - (f1-4 (-> gp-0 min w)) + (f1-4 (-> gp-0 w)) ) (if (>= (* f1-4 f1-4) f0-6) (send-event s5-2 'green-eco-attack) diff --git a/test/decompiler/reference/jak3/engine/target/flut/flut-racer_REF.gc b/test/decompiler/reference/jak3/engine/target/flut/flut-racer_REF.gc index f5c95672d5..f11146d1fd 100644 --- a/test/decompiler/reference/jak3/engine/target/flut/flut-racer_REF.gc +++ b/test/decompiler/reference/jak3/engine/target/flut/flut-racer_REF.gc @@ -550,7 +550,7 @@ (vector+! s5-1 s5-1 (-> this root trans)) (set! (-> s5-1 w) 16384.0) (let ((s4-1 (new 'stack-no-clear 'array 'collide-shape 384))) - (countdown (s3-0 (fill-actor-list-for-box *actor-hash* (the-as bounding-box s5-1) s4-1 384)) + (countdown (s3-0 (fill-actor-list-for-box *actor-hash* s5-1 s4-1 384)) (let* ((s2-0 (-> s4-1 s3-0)) (v1-21 (if (type? s2-0 collide-shape) s2-0 diff --git a/test/decompiler/reference/jak3/engine/target/flut/flut_REF.gc b/test/decompiler/reference/jak3/engine/target/flut/flut_REF.gc index e3a196231d..95d4e32942 100644 --- a/test/decompiler/reference/jak3/engine/target/flut/flut_REF.gc +++ b/test/decompiler/reference/jak3/engine/target/flut/flut_REF.gc @@ -74,9 +74,7 @@ (let ((gp-0 (the-as (array collide-shape) (new 'stack 'boxed-array collide-shape 32)))) (let ((a1-2 (sphere<-vector+r! (new 'stack-no-clear 'sphere) (-> this root trans) 16384.0))) (+! (-> a1-2 y) 12288.0) - (set! (-> gp-0 length) - (fill-actor-list-for-box *actor-hash* (the-as bounding-box a1-2) (-> gp-0 data) (-> gp-0 allocated-length)) - ) + (set! (-> gp-0 length) (fill-actor-list-for-box *actor-hash* a1-2 (-> gp-0 data) (-> gp-0 allocated-length))) ) (let* ((s5-1 (-> gp-0 length)) (s4-0 0) diff --git a/test/decompiler/reference/jak3/engine/target/gun/gun-blue-shot_REF.gc b/test/decompiler/reference/jak3/engine/target/gun/gun-blue-shot_REF.gc index 45e55b737e..f0aa25f643 100644 --- a/test/decompiler/reference/jak3/engine/target/gun/gun-blue-shot_REF.gc +++ b/test/decompiler/reference/jak3/engine/target/gun/gun-blue-shot_REF.gc @@ -565,7 +565,7 @@ (set! (-> sv-1280 quad) (-> sv-144 fire-point quad)) (set! (-> sv-1280 w) 163840.0) (let ((gp-0 (new 'stack-no-clear 'array 'collide-shape 384))) - (countdown (s5-0 (fill-actor-list-for-box *actor-hash* (the-as bounding-box sv-1280) gp-0 384)) + (countdown (s5-0 (fill-actor-list-for-box *actor-hash* sv-1280 gp-0 384)) (let* ((s4-0 (-> gp-0 s5-0)) (v1-16 (if (type? s4-0 collide-shape) s4-0 @@ -813,9 +813,8 @@ ) ;; definition for function draw-beam-segment -;; WARN: Return type mismatch symbol vs none. (defun draw-beam-segment () - (none) + #f ) ;; definition for symbol *found-objects*, type (pointer handle) @@ -2037,7 +2036,7 @@ ) (set! (-> sv-40 w) 0.0) (let ((s4-0 (new 'stack-no-clear 'array 'collide-shape 384))) - (countdown (s3-0 (fill-actor-list-for-box *actor-hash* (the-as bounding-box arg0) s4-0 384)) + (countdown (s3-0 (fill-actor-list-for-box *actor-hash* arg0 s4-0 384)) (let* ((s2-0 (-> s4-0 s3-0)) (a0-5 (if (type? s2-0 collide-shape) s2-0 @@ -2103,7 +2102,7 @@ (set! (-> arg0 w) 16384.0) (set! (-> sv-40 w) 1.0) (let ((s3-0 (new 'stack-no-clear 'array 'collide-shape 384))) - (countdown (s2-0 (fill-actor-list-for-box *actor-hash* (the-as bounding-box arg0) s3-0 384)) + (countdown (s2-0 (fill-actor-list-for-box *actor-hash* arg0 s3-0 384)) (let* ((s1-0 (-> s3-0 s2-0)) (a0-5 (if (type? s1-0 collide-shape) s1-0 diff --git a/test/decompiler/reference/jak3/engine/target/gun/gun-dark-shot_REF.gc b/test/decompiler/reference/jak3/engine/target/gun/gun-dark-shot_REF.gc index d2d4ff9c71..61f9c19544 100644 --- a/test/decompiler/reference/jak3/engine/target/gun/gun-dark-shot_REF.gc +++ b/test/decompiler/reference/jak3/engine/target/gun/gun-dark-shot_REF.gc @@ -902,7 +902,7 @@ (set! (-> s4-0 quad) (-> this root trans quad)) (set! (-> s4-0 w) 1228800.0) (let ((s3-0 (new 'stack-no-clear 'array 'collide-shape 384))) - (countdown (s2-0 (fill-actor-list-for-box *actor-hash* (the-as bounding-box s4-0) s3-0 384)) + (countdown (s2-0 (fill-actor-list-for-box *actor-hash* s4-0 s3-0 384)) (let* ((s1-0 (-> s3-0 s2-0)) (v1-5 (if (type? s1-0 collide-shape) s1-0 @@ -2164,7 +2164,7 @@ (let ((s5-1 (send-event-function *target* a1-13))) (set! (-> s4-0 w) (-> self blast-radius)) (let ((s3-0 (new 'stack-no-clear 'array 'collide-shape 384))) - (countdown (s2-0 (fill-actor-list-for-box *actor-hash* (the-as bounding-box s4-0) s3-0 384)) + (countdown (s2-0 (fill-actor-list-for-box *actor-hash* s4-0 s3-0 384)) (let* ((s1-0 (-> s3-0 s2-0)) (v1-66 (if (type? s1-0 collide-shape) s1-0 @@ -2807,7 +2807,7 @@ (set! (-> sv-144 quad) (-> (get-trans (the-as process-focusable s5-0) 3) quad)) (set! (-> sv-144 r) sv-160) (let ((s3-2 (new 'stack-no-clear 'array 'collide-shape 384))) - (countdown (s2-0 (fill-actor-list-for-box *actor-hash* (the-as bounding-box sv-144) s3-2 384)) + (countdown (s2-0 (fill-actor-list-for-box *actor-hash* sv-144 s3-2 384)) (let* ((s1-0 (-> s3-2 s2-0)) (a0-15 (if (type? s1-0 collide-shape) s1-0 @@ -3977,7 +3977,7 @@ ) (set! (-> s5-0 w) f28-0) (let ((s3-1 (new 'stack-no-clear 'array 'collide-shape 384))) - (countdown (s2-0 (fill-actor-list-for-box *actor-hash* (the-as bounding-box s5-0) s3-1 384)) + (countdown (s2-0 (fill-actor-list-for-box *actor-hash* s5-0 s3-1 384)) (let* ((s1-0 (-> s3-1 s2-0)) (v1-17 (if (type? s1-0 collide-shape) s1-0 diff --git a/test/decompiler/reference/jak3/engine/target/gun/gun-red-shot_REF.gc b/test/decompiler/reference/jak3/engine/target/gun/gun-red-shot_REF.gc index 512bd7b968..4a07ecf1f2 100644 --- a/test/decompiler/reference/jak3/engine/target/gun/gun-red-shot_REF.gc +++ b/test/decompiler/reference/jak3/engine/target/gun/gun-red-shot_REF.gc @@ -270,7 +270,7 @@ (set! (-> s5-0 quad) (-> this root trans quad)) (set! (-> s5-0 w) (-> this blast-radius)) (let ((s3-0 (new 'stack-no-clear 'array 'collide-shape 384))) - (countdown (s2-0 (fill-actor-list-for-box *actor-hash* (the-as bounding-box s5-0) s3-0 384)) + (countdown (s2-0 (fill-actor-list-for-box *actor-hash* s5-0 s3-0 384)) (let* ((s1-0 (-> s3-0 s2-0)) (a0-8 (if (type? s1-0 collide-shape) s1-0 @@ -410,7 +410,7 @@ (set! (-> s4-0 quad) (-> this root trans quad)) (set! (-> s4-0 w) (* 0.6666667 (-> this blast-radius))) (let ((s2-0 (new 'stack-no-clear 'array 'collide-shape 384))) - (countdown (s1-0 (fill-actor-list-for-box *actor-hash* (the-as bounding-box s4-0) s2-0 384)) + (countdown (s1-0 (fill-actor-list-for-box *actor-hash* s4-0 s2-0 384)) (let* ((s0-0 (-> s2-0 s1-0)) (a0-8 (if (type? s0-0 collide-shape) s0-0 @@ -765,7 +765,7 @@ ;; INFO: Used lq/sq (defmethod find-targets-and-attack! ((this gun-red-2-shockwave)) (local-vars - (sv-32 bounding-box) + (sv-32 vector) (sv-2672 (function vector vector float)) (sv-2688 vector) (sv-2704 vector) @@ -777,9 +777,9 @@ (vf6 :class vf) ) (init-vf0-vector) - (set! sv-32 (the-as bounding-box (new 'stack-no-clear 'vector))) - (set! (-> sv-32 min quad) (-> this origin quad)) - (set! (-> sv-32 min w) (-> this current-radius)) + (set! sv-32 (new 'stack-no-clear 'vector)) + (set! (-> sv-32 quad) (-> this origin quad)) + (set! (-> sv-32 w) (-> this current-radius)) (let ((s5-0 (new 'stack-no-clear 'array 'collide-shape 384))) (countdown (s4-0 (fill-actor-list-for-box *actor-hash* sv-32 s5-0 384)) (let* ((s3-0 (-> s5-0 s4-0)) @@ -878,7 +878,7 @@ ) ) ) - (when (and s5-1 (< (vector-vector-distance (get-trans s5-1 0) (the-as vector sv-32)) (-> sv-32 min w))) + (when (and s5-1 (< (vector-vector-distance (get-trans s5-1 0) sv-32) (-> sv-32 w))) (when (and (!= *target* s5-1) (not (focus-test? s5-1 disable dead inactive)) (or (logtest? (process-mask crate enemy vehicle civilian) (-> s5-1 mask)) @@ -2025,7 +2025,7 @@ (set! (-> a1-11 message) 'get-vehicle) (let ((s4-0 (send-event-function *target* a1-11))) (let ((s3-0 (new 'stack-no-clear 'array 'collide-shape 384))) - (countdown (s2-0 (fill-actor-list-for-box *actor-hash* (the-as bounding-box sv-144) s3-0 384)) + (countdown (s2-0 (fill-actor-list-for-box *actor-hash* sv-144 s3-0 384)) (let* ((s1-0 (-> s3-0 s2-0)) (v1-54 (if (type? s1-0 collide-shape) s1-0 @@ -2593,11 +2593,11 @@ (vf2 :class vf) (vf3 :class vf) ) - (let ((s5-0 (new 'stack-no-clear 'bounding-box))) - (set! (-> s5-0 min quad) (-> this start-dir quad)) - (vector-float*! (the-as vector s5-0) (the-as vector s5-0) 43417.6) - (vector+! (the-as vector s5-0) (the-as vector s5-0) (-> this start-pos)) - (set! (-> s5-0 min w) 43827.2) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (set! (-> s5-0 quad) (-> this start-dir quad)) + (vector-float*! s5-0 s5-0 43417.6) + (vector+! s5-0 s5-0 (-> this start-pos)) + (set! (-> s5-0 w) 43827.2) (let ((s4-0 (-> this root root-prim prim-core collide-with))) (set! *actor-list-length* 0) (if (logtest? s4-0 (collide-spec hit-by-others-list)) @@ -2617,7 +2617,7 @@ (a3-1 s5-0) ) (.lvf vf2 (&-> a2-4 world-sphere quad)) - (.lvf vf3 (&-> a3-1 min quad)) + (.lvf vf3 (&-> a3-1 quad)) ) (.sub.vf vf1 vf3 vf2) (.mul.vf vf1 vf1 vf1) @@ -2625,7 +2625,7 @@ (.add.z.vf vf1 vf1 vf1 :mask #b1) (.mov a2-5 vf1) (let ((f0-2 a2-5) - (f1-1 (+ (-> a1-5 world-sphere w) (-> s5-0 min w))) + (f1-1 (+ (-> a1-5 world-sphere w) (-> s5-0 w))) ) (when (< f0-2 (* f1-1 f1-1)) (when (< *actor-list-length* 256) @@ -2658,7 +2658,7 @@ (a3-2 s5-0) ) (.lvf vf2 (&-> a2-11 world-sphere quad)) - (.lvf vf3 (&-> a3-2 min quad)) + (.lvf vf3 (&-> a3-2 quad)) ) (.sub.vf vf1 vf3 vf2) (.mul.vf vf1 vf1 vf1) @@ -2666,7 +2666,7 @@ (.add.z.vf vf1 vf1 vf1 :mask #b1) (.mov a2-12 vf1) (let ((f0-3 a2-12) - (f1-5 (+ (-> a1-17 world-sphere w) (-> s5-0 min w))) + (f1-5 (+ (-> a1-17 world-sphere w) (-> s5-0 w))) ) (when (< f0-3 (* f1-5 f1-5)) (when (< *actor-list-length* 256) diff --git a/test/decompiler/reference/jak3/engine/target/gun/gun-yellow-shot_REF.gc b/test/decompiler/reference/jak3/engine/target/gun/gun-yellow-shot_REF.gc index 5638c123f4..8dfbbdf7c5 100644 --- a/test/decompiler/reference/jak3/engine/target/gun/gun-yellow-shot_REF.gc +++ b/test/decompiler/reference/jak3/engine/target/gun/gun-yellow-shot_REF.gc @@ -321,7 +321,7 @@ (set! (-> sv-1072 quad) (-> this root trans quad)) (set! (-> sv-1072 w) 143360.0) (let ((s5-0 (new 'stack-no-clear 'array 'collide-shape 384))) - (countdown (s4-0 (fill-actor-list-for-box *actor-hash* (the-as bounding-box sv-1072) s5-0 384)) + (countdown (s4-0 (fill-actor-list-for-box *actor-hash* sv-1072 s5-0 384)) (let* ((s3-0 (-> s5-0 s4-0)) (v1-34 (if (type? s3-0 collide-shape) s3-0 @@ -1592,7 +1592,7 @@ (set! sv-128 (the-as symbol #f)) (set! sv-136 (the-as handle #f)) (let ((s3-0 (new 'stack-no-clear 'array 'collide-shape 384))) - (countdown (s2-0 (fill-actor-list-for-box *actor-hash* (the-as bounding-box sv-84) s3-0 384)) + (countdown (s2-0 (fill-actor-list-for-box *actor-hash* sv-84 s3-0 384)) (let* ((s1-0 (-> s3-0 s2-0)) (v1-31 (if (type? s1-0 collide-shape) s1-0 diff --git a/test/decompiler/reference/jak3/engine/target/target-darkjak_REF.gc b/test/decompiler/reference/jak3/engine/target/target-darkjak_REF.gc index cb6917893a..22b7cd3644 100644 --- a/test/decompiler/reference/jak3/engine/target/target-darkjak_REF.gc +++ b/test/decompiler/reference/jak3/engine/target/target-darkjak_REF.gc @@ -2457,13 +2457,7 @@ (set! sv-132 (-> self handle-search)) (set! (-> sv-132 length) 0) (set! (-> sv-128 w) 327680.0) - (set! sv-120 (fill-actor-list-for-box - *actor-hash* - (the-as bounding-box sv-128) - (-> sv-112 data) - (-> sv-112 allocated-length) - ) - ) + (set! sv-120 (fill-actor-list-for-box *actor-hash* sv-128 (-> sv-112 data) (-> sv-112 allocated-length))) (set! (-> sv-112 length) sv-120) (countdown (s5-0 sv-120) (let* ((s4-0 (-> sv-112 s5-0 process)) diff --git a/test/decompiler/reference/jak3/engine/target/target-gun_REF.gc b/test/decompiler/reference/jak3/engine/target/target-gun_REF.gc index 95f841c0e3..dcfa545a46 100644 --- a/test/decompiler/reference/jak3/engine/target/target-gun_REF.gc +++ b/test/decompiler/reference/jak3/engine/target/target-gun_REF.gc @@ -1602,9 +1602,7 @@ (s3-0 (vector-average! (new 'stack-no-clear 'vector) gp-0 s5-0)) ) (set! (-> s3-0 w) (* 0.5 (vector-vector-distance gp-0 s5-0))) - (set! (-> s4-1 length) - (fill-actor-list-for-box *actor-hash* (the-as bounding-box s3-0) (-> s4-1 data) (-> s4-1 allocated-length)) - ) + (set! (-> s4-1 length) (fill-actor-list-for-box *actor-hash* s3-0 (-> s4-1 data) (-> s4-1 allocated-length))) ) ) ) diff --git a/test/decompiler/reference/jak3/levels/common/battle_REF.gc b/test/decompiler/reference/jak3/levels/common/battle_REF.gc index 36dbe4de6e..4f35812a34 100644 --- a/test/decompiler/reference/jak3/levels/common/battle_REF.gc +++ b/test/decompiler/reference/jak3/levels/common/battle_REF.gc @@ -780,7 +780,7 @@ ) (set! *actor-list-length* 0) (if (logtest? s5-0 (collide-spec hit-by-others-list)) - (set! *actor-list-length* (fill-actor-list-for-box *actor-hash* (the-as bounding-box gp-0) *actor-list* 256)) + (set! *actor-list-length* (fill-actor-list-for-box *actor-hash* gp-0 *actor-list* 256)) ) (when (logtest? s5-0 (collide-spec player-list)) (let ((a0-2 (-> *collide-player-list* alive-list next0))) diff --git a/test/decompiler/reference/jak3/levels/common/enemy/darkprec/dp-bipedal_REF.gc b/test/decompiler/reference/jak3/levels/common/enemy/darkprec/dp-bipedal_REF.gc index 90c901fcf6..fe433bc3af 100644 --- a/test/decompiler/reference/jak3/levels/common/enemy/darkprec/dp-bipedal_REF.gc +++ b/test/decompiler/reference/jak3/levels/common/enemy/darkprec/dp-bipedal_REF.gc @@ -3326,10 +3326,10 @@ (when (and (not (-> *setting-control* user-current nuke-active?)) (time-elapsed? (-> self spawn-timer) (seconds 6)) (let ((a2-1 (new 'stack-no-clear 'array 'collide-shape 1)) - (a1-1 (new 'stack-no-clear 'bounding-box)) + (a1-1 (new 'stack-no-clear 'vector)) ) - (set! (-> a1-1 min quad) (-> self entity extra trans quad)) - (set! (-> a1-1 min w) 24576.0) + (set! (-> a1-1 quad) (-> self entity extra trans quad)) + (set! (-> a1-1 w) 24576.0) (zero? (fill-actor-list-for-box *actor-hash* a1-1 a2-1 1)) ) ) diff --git a/test/decompiler/reference/jak3/levels/desert/hover/des-beast_REF.gc b/test/decompiler/reference/jak3/levels/desert/hover/des-beast_REF.gc index e8b6f16b0d..c3d67716d5 100644 --- a/test/decompiler/reference/jak3/levels/desert/hover/des-beast_REF.gc +++ b/test/decompiler/reference/jak3/levels/desert/hover/des-beast_REF.gc @@ -1522,7 +1522,7 @@ (des-beast-method-164 (_type_) none) (des-beast-method-165 (_type_) none) (des-beast-method-166 (_type_) none) - (des-beast-method-167 (_type_ bounding-box) symbol) + (des-beast-method-167 (_type_ vector) symbol) ) ) @@ -1745,12 +1745,11 @@ (let ((a1-6 (new 'stack-no-clear 'vector))) (set! (-> a1-6 quad) (-> self root trans quad)) (set! (-> a1-6 w) 409600.0) - (if (or (des-beast-method-167 self (the-as bounding-box a1-6)) - (and (-> self can-turn?) - (time-elapsed? (-> self state-time) (seconds 6)) - (>= (+ (current-time) (seconds -0.1)) (-> self behind-time)) - (< 15.0 (-> self hit-points)) - ) + (if (or (des-beast-method-167 self a1-6) (and (-> self can-turn?) + (time-elapsed? (-> self state-time) (seconds 6)) + (>= (+ (current-time) (seconds -0.1)) (-> self behind-time)) + (< 15.0 (-> self hit-points)) + ) ) (go-virtual turn-back) ) @@ -2015,7 +2014,7 @@ ) ;; definition for method 167 of type des-beast -(defmethod des-beast-method-167 ((this des-beast) (arg0 bounding-box)) +(defmethod des-beast-method-167 ((this des-beast) (arg0 vector)) (gpr->fpr #x7f800000) (let ((s5-0 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> this root quat)))) (set! (-> s5-0 y) 0.0) diff --git a/test/decompiler/reference/jak3/levels/desert/hover/scorpion-gun_REF.gc b/test/decompiler/reference/jak3/levels/desert/hover/scorpion-gun_REF.gc index 71a5bf0729..892621ce5c 100644 --- a/test/decompiler/reference/jak3/levels/desert/hover/scorpion-gun_REF.gc +++ b/test/decompiler/reference/jak3/levels/desert/hover/scorpion-gun_REF.gc @@ -1150,7 +1150,7 @@ (vector-normalize-copy! sv-656 (-> gp-0 fvec) 1.0) (vector+float*! s4-0 (-> gp-0 trans) sv-656 512000.0) (set! (-> s4-0 w) 614400.0) - (let ((s3-0 (fill-actor-list-for-box *actor-hash* (the-as bounding-box s4-0) (-> s5-0 data) (-> s5-0 length)))) + (let ((s3-0 (fill-actor-list-for-box *actor-hash* s4-0 (-> s5-0 data) (-> s5-0 length)))) (set! (-> s5-0 length) s3-0) (let ((s4-1 (the-as process #f))) (let ((f30-0 0.0)) diff --git a/test/decompiler/reference/jak3/levels/desert/lizard/desert-lizard-task_REF.gc b/test/decompiler/reference/jak3/levels/desert/lizard/desert-lizard-task_REF.gc index c5e4f30253..899b613b3d 100644 --- a/test/decompiler/reference/jak3/levels/desert/lizard/desert-lizard-task_REF.gc +++ b/test/decompiler/reference/jak3/levels/desert/lizard/desert-lizard-task_REF.gc @@ -813,7 +813,7 @@ (set! (-> this lizards-left) s5-1) ) (set! (-> *game-info* score) (the float (-> this lizards-left))) - (let ((s3-0 (new 'stack-no-clear 'bounding-box)) + (let ((s3-0 (new 'stack-no-clear 'vector)) (s4-3 (the-as (array collide-shape) ((method-of-type array new) (the-as symbol (new 'stack-no-clear 'array 'collide-shape 32)) array @@ -824,7 +824,7 @@ ) (s5-2 0) ) - (set! (-> s3-0 min quad) (-> this corral-pos quad)) + (set! (-> s3-0 quad) (-> this corral-pos quad)) (set! (-> s4-3 length) (fill-actor-list-for-box *actor-hash* s3-0 (-> s4-3 data) (-> s4-3 allocated-length))) (dotimes (s3-1 (-> s4-3 length)) (if (type? (-> s4-3 s3-1 process) flut) @@ -1058,7 +1058,3 @@ ;; failed to figure out what this is: 0 - - - - diff --git a/test/decompiler/reference/jak3/levels/desert/wvehicle/wvehicle-util_REF.gc b/test/decompiler/reference/jak3/levels/desert/wvehicle/wvehicle-util_REF.gc index 1936749785..2f72a2bb8b 100644 --- a/test/decompiler/reference/jak3/levels/desert/wvehicle/wvehicle-util_REF.gc +++ b/test/decompiler/reference/jak3/levels/desert/wvehicle/wvehicle-util_REF.gc @@ -810,7 +810,7 @@ (let ((s4-1 (new 'stack 'boxed-array collide-shape 128))) (set! (-> gp-0 ground-normal-sum x) (the-as float (fill-actor-list-for-box *actor-hash* - (the-as bounding-box (-> gp-0 p-body)) + (-> gp-0 p-body) (the-as (pointer collide-shape) (-> s4-1 data)) (-> s4-1 allocated-length) ) diff --git a/test/decompiler/reference/jak3/levels/mine/manta_REF.gc b/test/decompiler/reference/jak3/levels/mine/manta_REF.gc index b9b33940c6..72aadefcc2 100644 --- a/test/decompiler/reference/jak3/levels/mine/manta_REF.gc +++ b/test/decompiler/reference/jak3/levels/mine/manta_REF.gc @@ -1383,7 +1383,7 @@ (let ((s4-0 544)) (set! *actor-list-length* 0) (if (logtest? s4-0 512) - (set! *actor-list-length* (fill-actor-list-for-box *actor-hash* (the-as bounding-box s3-0) *actor-list* 256)) + (set! *actor-list-length* (fill-actor-list-for-box *actor-hash* s3-0 *actor-list* 256)) ) (when (logtest? s4-0 1024) (let ((a0-4 (-> *collide-player-list* alive-list next0))) @@ -2071,7 +2071,3 @@ 0 (none) ) - - - - diff --git a/test/decompiler/reference/jak3/levels/tower/tower-obs_REF.gc b/test/decompiler/reference/jak3/levels/tower/tower-obs_REF.gc index 8c23f7c108..bd21b9476b 100644 --- a/test/decompiler/reference/jak3/levels/tower/tower-obs_REF.gc +++ b/test/decompiler/reference/jak3/levels/tower/tower-obs_REF.gc @@ -873,11 +873,11 @@ ;; INFO: Used lq/sq (defmethod can-spawn-creature? ((this tow-spawner) (arg0 vector) (arg1 float)) (and (or (not *target*) (< 14336.0 (vector-vector-xz-distance (-> *target* control trans) (-> this root trans)))) - (let ((s3-0 (new 'stack-no-clear 'bounding-box)) + (let ((s3-0 (new 'stack-no-clear 'vector)) (s4-0 (the-as (array collide-shape) (new 'stack 'boxed-array collide-shape 8))) ) - (set! (-> s3-0 min quad) (-> arg0 quad)) - (set! (-> s3-0 min w) arg1) + (set! (-> s3-0 quad) (-> arg0 quad)) + (set! (-> s3-0 w) arg1) (let ((gp-1 (fill-actor-list-for-box *actor-hash* s3-0 (-> s4-0 data) (-> s4-0 length)))) (or (zero? gp-1) (begin (dotimes (s5-1 gp-1) @@ -1162,7 +1162,3 @@ 0 (none) ) - - - - diff --git a/test/decompiler/reference/jak3/levels/wascity/wascity-turret_REF.gc b/test/decompiler/reference/jak3/levels/wascity/wascity-turret_REF.gc index d3e539c31e..9f68318c27 100644 --- a/test/decompiler/reference/jak3/levels/wascity/wascity-turret_REF.gc +++ b/test/decompiler/reference/jak3/levels/wascity/wascity-turret_REF.gc @@ -1257,7 +1257,7 @@ ) (init-vf0-vector) (let ((s5-0 (new 'stack-no-clear 'matrix)) - (s3-0 (new 'stack-no-clear 'bounding-box)) + (s3-0 (new 'stack-no-clear 'vector)) (s4-0 (the-as (array collide-shape) (new 'stack 'boxed-array collide-shape 128))) (f26-0 0.0) (f28-0 0.0) @@ -1269,8 +1269,8 @@ (set! (-> this lerp2) 0.0) (vector-lerp! (-> this aim-dir) (-> s5-0 fvec) (-> this aim-dir) (-> this lerp)) (vector-lerp! (-> this reticle-dir) (-> s5-0 fvec) (-> this reticle-dir) (-> this lerp2)) - (vector+float*! (the-as vector s3-0) (-> s5-0 trans) (-> this aim-dir) 2457600.0) - (set! (-> s3-0 min w) 2457600.0) + (vector+float*! s3-0 (-> s5-0 trans) (-> this aim-dir) 2457600.0) + (set! (-> s3-0 w) 2457600.0) (set! (-> this target-handle) (the-as handle #f)) (let ((s2-1 (fill-actor-list-for-box *actor-hash* s3-0 (-> s4-0 data) (-> s4-0 length)))) (set! (-> s4-0 length) s2-1) diff --git a/test/decompiler/reference/jak3/levels/wascity/wasstadium/wasstadc-obs_REF.gc b/test/decompiler/reference/jak3/levels/wascity/wasstadium/wasstadc-obs_REF.gc index f3fe20db0a..63d408f5f6 100644 --- a/test/decompiler/reference/jak3/levels/wascity/wasstadium/wasstadc-obs_REF.gc +++ b/test/decompiler/reference/jak3/levels/wascity/wasstadium/wasstadc-obs_REF.gc @@ -124,7 +124,7 @@ ) (set! (-> s4-0 w) 16384.0) (let ((s5-1 (new 'stack-no-clear 'array 'collide-shape 64))) - (countdown (s4-1 (fill-actor-list-for-box *actor-hash* (the-as bounding-box s4-0) s5-1 64)) + (countdown (s4-1 (fill-actor-list-for-box *actor-hash* s4-0 s5-1 64)) (let* ((s3-0 (-> s5-1 s4-1)) (v1-12 (if (type? s3-0 collide-shape) s3-0