jak3: fix potential wascity-defend softlock, stick sens setting, fix freeze-screen regression (#4182)

There was some bad manual decomp in `wasdef-manager` that caused the
mission to sometimes softlock, preventing Jak from exiting the turret
after destroying all Makers.

Also adds stick sensitivity setting from Jak 2 and fixes a regression
with the Light Jak freeze screen overlay on PC aspect ratios.

Closes #4179 
Closes #4154
This commit is contained in:
Hat Kid
2026-04-05 16:58:19 +02:00
committed by GitHub
parent c3cc91c9ba
commit dc203502fc
8 changed files with 61 additions and 61 deletions
+1
View File
@@ -10309,6 +10309,7 @@
(progress-controller-options-enable-trigger-effects #x134c)
(progress-misc-fix-projectile-focus #x134d)
(progress-controller-options-pacman-dpad #x134e)
(progress-controller-options-analog-sensitivity #x134f)
)
;; ---text-h:text-id
@@ -8686,12 +8686,9 @@
"(anon-function 8 mined-scenes)": [[31, "a0", "process"]],
"(code flying maker)": [[10, "v1", "art-joint-anim"]],
"(method 30 task-manager-wascity-defend)": [
[28, "v1", "handle"],
[55, "v1", "handle"],
[82, "v1", "handle"],
[25, "v1", "handle"],
[52, "v1", "handle"],
[79, "v1", "handle"]
[[25, 32], "v1", "handle"],
[[52, 59], "v1", "handle"],
[[79, 86], "v1", "handle"]
],
"(code walking maker)": [[[123, 126], "v1", "task-manager-wascity-defend"]],
"(post flying maker)": [[[260, 275], "v1", "task-manager-wascity-defend"]],
@@ -248,5 +248,6 @@
"134b": "Swap R1 and R2",
"134c": "Trigger Effects",
"134d": "Fix Projectile Focus",
"134e": "Eco Grid (Pac-Man) D-Pad Controls"
"134e": "Eco Grid (Pac-Man) D-Pad Controls",
"134f": "Analog Sensitivity"
}
@@ -2276,8 +2276,9 @@
(gp-0 (new 'stack-no-clear 'vector))
(f30-0 4096.0)
)
(let ((f0-4 (* 0.00013563369 (tan (/ (-> *math-camera* fov) 2)) f30-0)))
(set-vector! (-> this root scale) f0-4 f0-4 f0-4 1.0)
;; og:preserve-this resize effect based on aspect ratio
(let ((f0-4 (* 0.00013563369 (tan (* 0.5 (-> *math-camera* fov))) f30-0)))
(set-vector! (-> this root scale) (* f0-4 (if (-> *pc-settings* use-vis?) 1.0 (-> *pc-settings* aspect-ratio-scale))) f0-4 f0-4 1.0)
)
(vector-copy! gp-0 (camera-pos))
(vector-normalize-copy! s5-0 (-> s3-0 fvec) 1.0)
+1
View File
@@ -1600,6 +1600,7 @@
(progress-controller-options-enable-trigger-effects #x134c)
(progress-misc-fix-projectile-focus #x134d)
(progress-controller-options-pacman-dpad #x134e)
(progress-controller-options-analog-sensitivity #x134f)
)
;; ---text-id
+19 -12
View File
@@ -2342,18 +2342,25 @@
)
)
(('event-over)
;; og:preserve-this handle->process nonsense
(let ((makers (search-process-tree *active-pool* (lambda ((arg0 process-tree)) (type? arg0 maker))))
(flyer-shots (search-process-tree *active-pool* (lambda ((arg0 process-tree)) (type? arg0 dm-flyer-shot))))
(grenades (search-process-tree *active-pool* (lambda ((arg0 process-tree)) (type? arg0 maker-grenade))))
)
(and
(not (process->handle makers))
(not (process->handle flyer-shots))
(not (process->handle grenades))
(-> this completed)
)
)
(and (not (handle->process
(process->handle (search-process-tree *active-pool* (lambda ((arg0 process-tree)) (type? arg0 maker))))
)
)
(not (handle->process
(process->handle
(search-process-tree *active-pool* (lambda ((arg0 process-tree)) (type? arg0 dm-flyer-shot)))
)
)
)
(and (not (handle->process
(process->handle
(search-process-tree *active-pool* (lambda ((arg0 process-tree)) (type? arg0 maker-grenade)))
)
)
)
(-> this completed)
)
)
)
(('fail)
((method-of-type task-manager taskman-event-handler) this arg0 arg1 arg2 arg3)
@@ -274,6 +274,17 @@ This gives us more freedom to write code how we want.
:on-confirm (lambda ((val float))
(set! (-> *pc-settings* stick-deadzone) val)
(pc-settings-save)))
(new 'static 'menu-generic-slider-option
:name (text-id progress-controller-options-analog-sensitivity)
:min-value 50.0
:max-value 200.0
:step 1.0
:show-decimal? #t
:get-value-fn (lambda () (-> *pc-settings* stick-sensitivity))
:on-confirm (lambda ((val float))
(pc-set-axis-scale! (/ val 100.0))
(set! (-> *pc-settings* stick-sensitivity) val)
(pc-settings-save)))
(new 'static 'menu-generic-boolean-option
:name (text-id progress-controller-options-ignore-if-unfocused)
:truthy-text (text-id progress-on)
+21 -40
View File
@@ -2549,48 +2549,25 @@
)
)
(('event-over)
(let ((v1-4 (process->handle (search-process-tree *active-pool* (lambda ((arg0 process-tree)) (type? arg0 maker)))))
)
(and (not (and (nonzero? (l32-false-check (the-as handle v1-4)))
(let ((a0-10 (-> (.asm.sllv.r0 (the-as handle v1-4)) 0)))
(if (= (sar v1-4 32) (-> a0-10 pid))
a0-10
)
(and (not (handle->process
(process->handle (search-process-tree *active-pool* (lambda ((arg0 process-tree)) (type? arg0 maker))))
)
)
(not (handle->process
(process->handle
(search-process-tree *active-pool* (lambda ((arg0 process-tree)) (type? arg0 dm-flyer-shot)))
)
)
)
(and (not (handle->process
(process->handle
(search-process-tree *active-pool* (lambda ((arg0 process-tree)) (type? arg0 maker-grenade)))
)
)
)
(let ((v1-9 (process->handle
(search-process-tree *active-pool* (lambda ((arg0 process-tree)) (type? arg0 dm-flyer-shot)))
)
)
)
(not (and (nonzero? (l32-false-check (the-as handle v1-9)))
(let ((a0-19 (-> (.asm.sllv.r0 (the-as handle v1-9)) 0)))
(if (= (sar v1-9 32) (-> a0-19 pid))
a0-19
)
)
)
)
)
(let ((v1-14 (process->handle
(search-process-tree *active-pool* (lambda ((arg0 process-tree)) (type? arg0 maker-grenade)))
)
)
)
(and (not (and (nonzero? (l32-false-check (the-as handle v1-14)))
(let ((a0-28 (-> (.asm.sllv.r0 (the-as handle v1-14)) 0)))
(if (= (sar v1-14 32) (-> a0-28 pid))
a0-28
)
)
)
)
(-> this completed)
)
)
)
)
)
(-> this completed)
)
)
)
(('fail)
((method-of-type task-manager taskman-event-handler) this arg0 arg1 arg2 arg3)
@@ -2819,3 +2796,7 @@
0
(none)
)