From 494e64e9c2fe423f2e53b185e21babc7a0bb5ab8 Mon Sep 17 00:00:00 2001 From: Hat Kid <6624576+Hat-Kid@users.noreply.github.com> Date: Wed, 15 Apr 2026 02:52:03 +0200 Subject: [PATCH] regressions and casts --- .../config/jak2/ntsc_v1/type_casts.jsonc | 8 ++++--- .../jak2/levels/common/enemy/metalmonk.gc | 24 ++++++++++++------- goal_src/jak2/levels/common/race/race-hud.gc | 13 ++++++---- 3 files changed, 28 insertions(+), 17 deletions(-) diff --git a/decompiler/config/jak2/ntsc_v1/type_casts.jsonc b/decompiler/config/jak2/ntsc_v1/type_casts.jsonc index b1bde5edc2..3f5e709f32 100644 --- a/decompiler/config/jak2/ntsc_v1/type_casts.jsonc +++ b/decompiler/config/jak2/ntsc_v1/type_casts.jsonc @@ -2778,7 +2778,7 @@ [[1, 7], "v1", "drawable-region-prim"] ], "(method 18 drawable-region-face)": [ - [[33, 84], "v1", "(inline-array vector)"] + ["_stack_", 56, "(inline-array vector)"] ], "(method 18 drawable-tree-region-prim)": [ [[22, 49], "s2", "drawable-region-prim"] @@ -4051,7 +4051,9 @@ [64, "a0", "process-drawable"] ], "process-drawable2-shock-effect": [[59, "v0", "lightning-tracker"]], - "process-drawable-shock-effect": [[156, "v0", "lightning-tracker"]], + "process-drawable-shock-effect": [ + ["_stack_", 624, "(pointer lightning-tracker)"] + ], "(method 12 top-anim-joint-control)": [ [8, "a1", "art-joint-anim"], [40, "a1", "art-joint-anim"] @@ -5967,7 +5969,7 @@ "(post idle drill-plat)": [[4, "t9", "(function none)"]], "(post idle grenade-point)": [[122, "v1", "lightning-tracker"]], "(anon-function 12 strip-obs)": [ - [103, "a0", "(pointer entity-actor)"], + ["_stack_", 16, "(pointer entity-actor)"], [287, "v1", "int"] ], "(method 11 strip-hazard)": [ diff --git a/goal_src/jak2/levels/common/enemy/metalmonk.gc b/goal_src/jak2/levels/common/enemy/metalmonk.gc index 981d33e37b..ebad9380a1 100644 --- a/goal_src/jak2/levels/common/enemy/metalmonk.gc +++ b/goal_src/jak2/levels/common/enemy/metalmonk.gc @@ -545,13 +545,17 @@ (t9-0) ) ) - (let ((v1-4 (-> self nav))) - (set! (-> v1-4 max-rotation-rate) (-> self enemy-info maximum-rotation-rate)) - ) + ;; og:preserve-this fix potential use-after-free bug + (if (-> self nav) + (let ((v1-4 (-> self nav))) + (set! (-> v1-4 max-rotation-rate) (-> self enemy-info maximum-rotation-rate)) + )) 0 - (let ((v1-6 (-> self nav))) - (set! (-> v1-6 turning-acceleration) (-> self enemy-info run-turning-acceleration)) - ) + ;; og:preserve-this fix potential use-after-free bug + (if (-> self nav) + (let ((v1-6 (-> self nav))) + (set! (-> v1-6 turning-acceleration) (-> self enemy-info run-turning-acceleration)) + )) 0 ) :code (behavior () @@ -717,9 +721,11 @@ (logclear! (-> self enemy-flags) (enemy-flag lock-focus)) (metalmonk-method-180 self #f) (nav-enemy-method-168 self) - (let ((v1-6 (-> self nav))) - (set! (-> v1-6 target-speed) (-> self enemy-info run-travel-speed)) - ) + ;; og:preserve-this fix potential use-after-free bug + (if (-> self nav) + (let ((v1-6 (-> self nav))) + (set! (-> v1-6 target-speed) (-> self enemy-info run-travel-speed)) + )) 0 (if (logtest? (-> self enemy-flags) (enemy-flag dangerous-backup)) (logior! (-> self focus-status) (focus-status dangerous)) diff --git a/goal_src/jak2/levels/common/race/race-hud.gc b/goal_src/jak2/levels/common/race/race-hud.gc index cfa1f742ad..2ca8f83b82 100644 --- a/goal_src/jak2/levels/common/race/race-hud.gc +++ b/goal_src/jak2/levels/common/race/race-hud.gc @@ -32,9 +32,11 @@ ) (defmethod update-values ((this hud-race-timer)) - (set! (-> this values 0 target) (/ (the-as int (-> *game-info* race-timer)) #x4650)) - (set! (-> this values 1 target) (/ (mod (the-as int (-> *game-info* race-timer)) #x4650) 300)) - (set! (-> this values 2 target) (/ (mod (mod (the-as int (-> *game-info* race-timer)) #x4650) 300) 5)) + (set! (-> this values 0 target) (/ (the-as int (-> *game-info* race-timer)) (seconds 60))) + (set! (-> this values 1 target) (/ (mod (the-as int (-> *game-info* race-timer)) (seconds 60)) (seconds 1))) + ;(set! (-> this values 2 target) (/ (mod (mod (the-as int (-> *game-info* race-timer)) (seconds 60)) (seconds 1)) (/ (seconds 1) 60))) + ;; og:preserve-this fix wrong hundredths counter... + (set! (-> this values 2 target) (/ (mod (mod (the-as int (-> *game-info* race-timer)) (seconds 60)) (seconds 1)) (seconds 0.01))) (logclear! (-> this flags) (hud-flags disable)) ((method-of-type hud update-values) this) 0 @@ -300,7 +302,8 @@ ((zero? (-> s5-0 finish-count)) (set! s0-0 80) (set-scale! s1-0 1.6) - (if (= (-> *setting-control* user-default language) (language-enum german)) + ;; og:preserve-this text-language patch + (when (text-language? german) (set-scale! s1-0 1.0) ) (print-game-text (lookup-text! *common-text* (text-id race-you-win) #f) s1-0 #f 44 (bucket-id progress)) @@ -308,7 +311,7 @@ (else (set! s0-0 80) (set-scale! s1-0 1.6) - ;; og:preserve-this + ;; og:preserve-this text-language patch (if (text-language? german) (set-scale! s1-0 1.0) )