diff --git a/decompiler/analysis/variable_naming.cpp b/decompiler/analysis/variable_naming.cpp index 0bd042aa0a..095db98e5d 100644 --- a/decompiler/analysis/variable_naming.cpp +++ b/decompiler/analysis/variable_naming.cpp @@ -743,7 +743,8 @@ void SSA::make_vars(const Function& function, const DecompilerTypeSystem& dts) { function.guessed_name.to_string() == "(method 74 hal)" || function.guessed_name.to_string() == "water-anim-event-handler" || function.guessed_name.to_string() == "(method 74 civilian)" || - function.guessed_name.to_string() == "(method 74 crimson-guard)"; + function.guessed_name.to_string() == "(method 74 crimson-guard)" || + function.guessed_name.to_string() == "metalkor-handler"; } if (function.ir2.env.version == GameVersion::Jak1) { diff --git a/goal_src/jak2/levels/nest/boss/metalkor-states.gc b/goal_src/jak2/levels/nest/boss/metalkor-states.gc index 08353cfec6..e80b3b67b9 100644 --- a/goal_src/jak2/levels/nest/boss/metalkor-states.gc +++ b/goal_src/jak2/levels/nest/boss/metalkor-states.gc @@ -539,19 +539,8 @@ ) ;; WARN: Return type mismatch none vs object. -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 72] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 107] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 143] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 173] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 254] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 266] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 291] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 489] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 571] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 580] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 666] (defbehavior metalkor-handler metalkor ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (local-vars (v0-2 none)) + (local-vars (v0-2 object)) (the-as object (case arg2 @@ -570,7 +559,7 @@ ) ) ) - (metalkor-go-next-stage) + (the-as object (metalkor-go-next-stage)) ) (('track) (-> self trackable) @@ -621,11 +610,11 @@ (let ((gp-3 (-> self entity extra))) (cond ((send-event (handle->process (-> self flitter-gem-tracker)) 'spawn-with-gem?) - (set! v0-2 (the-as none (logclear (-> gp-3 perm status) (entity-perm-status save)))) + (set! v0-2 (logclear (-> gp-3 perm status) (entity-perm-status save))) (set! (-> gp-3 perm status) (the-as entity-perm-status v0-2)) ) (else - (set! v0-2 (the-as none (logior (-> gp-3 perm status) (entity-perm-status save)))) + (set! v0-2 (logior (-> gp-3 perm status) (entity-perm-status save))) (set! (-> gp-3 perm status) (the-as entity-perm-status v0-2)) ) ) @@ -655,7 +644,7 @@ (metalkor-all-spinners-on) ) (else - (set! v0-2 (the-as none (+ (-> self countdown-to-roar) -1))) + (set! v0-2 (+ (-> self countdown-to-roar) -1)) (set! (-> self countdown-to-roar) (the-as int v0-2)) v0-2 ) @@ -717,7 +706,8 @@ (if (logtest? (-> *game-info* secrets) (game-secrets hero-mode)) (set! f0-4 (* 0.6666667 f0-4)) ) - (if (not (and (-> self next-state) (let ((v1-109 (-> self next-state name))) + ;; og:preserve-this if -> when + (when (not (and (-> self next-state) (let ((v1-109 (-> self next-state name))) (or (= v1-109 'fall-down) (= v1-109 'overload-recover) (= v1-109 'tail-attack) @@ -727,6 +717,7 @@ ) ) ) + ;; og:preserve-this damage number cheat (#when PC_PORT (let* ((old-hp (-> self stage-hit-points)) (dmg-to-use (if (= (-> self stage) 3) @@ -749,12 +740,12 @@ (logtest? (penetrate dark-bomb) (-> (the-as attack-info s5-2) penetrate-using)) (= (-> self stage-hit-points) 0.0) ) - (set! v0-2 (the-as none (+ (current-time) (seconds 1)))) + (set! v0-2 (+ (current-time) (seconds 1))) (set! (-> self next-stage-timer) (the-as time-frame v0-2)) v0-2 ) ((= (-> self stage-hit-points) 0.0) - (metalkor-go-next-stage) + (the-as object (metalkor-go-next-stage)) ) ((and (-> self next-state) (= (-> self next-state name) 'hang-shoot-n-launch)) (metalkor-setup-hit-anim @@ -771,13 +762,14 @@ (or (not (and v1-139 (= v1-139 (-> self draw art-group data 7)))) (>= (ja-aframe-num 0) 10.0)) ) ) - (metalkor-setup-hit-anim - (the-as attack-info s5-2) - (the-as process-drawable arg0) - (-> self draw art-group data 25) - (-> self draw art-group data 27) - (the-as float (-> self draw art-group data 26)) - ) + (the-as object (metalkor-setup-hit-anim + (the-as attack-info s5-2) + (the-as process-drawable arg0) + (-> self draw art-group data 25) + (-> self draw art-group data 27) + (the-as float (-> self draw art-group data 26)) + ) + ) ) ((and (-> self next-state) (let ((v1-153 (-> self next-state name))) (or (= v1-153 'chase-target) diff --git a/test/decompiler/reference/jak2/levels/nest/boss/metalkor-states_REF.gc b/test/decompiler/reference/jak2/levels/nest/boss/metalkor-states_REF.gc index 6f2c40dc70..0f55470758 100644 --- a/test/decompiler/reference/jak2/levels/nest/boss/metalkor-states_REF.gc +++ b/test/decompiler/reference/jak2/levels/nest/boss/metalkor-states_REF.gc @@ -562,19 +562,8 @@ ;; definition for function metalkor-handler ;; INFO: Used lq/sq ;; WARN: Return type mismatch none vs object. -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 72] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 107] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 143] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 173] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 254] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 266] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 291] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 489] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 571] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 580] -;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 666] (defbehavior metalkor-handler metalkor ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (local-vars (v0-2 none)) + (local-vars (v0-2 object)) (the-as object (case arg2 @@ -593,7 +582,7 @@ ) ) ) - (metalkor-go-next-stage) + (the-as object (metalkor-go-next-stage)) ) (('track) (-> self trackable) @@ -644,11 +633,11 @@ (let ((gp-3 (-> self entity extra))) (cond ((send-event (handle->process (-> self flitter-gem-tracker)) 'spawn-with-gem?) - (set! v0-2 (the-as none (logclear (-> gp-3 perm status) (entity-perm-status save)))) + (set! v0-2 (logclear (-> gp-3 perm status) (entity-perm-status save))) (set! (-> gp-3 perm status) (the-as entity-perm-status v0-2)) ) (else - (set! v0-2 (the-as none (logior (-> gp-3 perm status) (entity-perm-status save)))) + (set! v0-2 (logior (-> gp-3 perm status) (entity-perm-status save))) (set! (-> gp-3 perm status) (the-as entity-perm-status v0-2)) ) ) @@ -678,7 +667,7 @@ (metalkor-all-spinners-on) ) (else - (set! v0-2 (the-as none (+ (-> self countdown-to-roar) -1))) + (set! v0-2 (+ (-> self countdown-to-roar) -1)) (set! (-> self countdown-to-roar) (the-as int v0-2)) v0-2 ) @@ -759,12 +748,12 @@ (logtest? (penetrate dark-bomb) (-> (the-as attack-info s5-2) penetrate-using)) (= (-> self stage-hit-points) 0.0) ) - (set! v0-2 (the-as none (+ (current-time) (seconds 1)))) + (set! v0-2 (+ (current-time) (seconds 1))) (set! (-> self next-stage-timer) (the-as time-frame v0-2)) v0-2 ) ((= (-> self stage-hit-points) 0.0) - (metalkor-go-next-stage) + (the-as object (metalkor-go-next-stage)) ) ((and (-> self next-state) (= (-> self next-state name) 'hang-shoot-n-launch)) (metalkor-setup-hit-anim @@ -781,13 +770,14 @@ (or (not (and v1-139 (= v1-139 (-> self draw art-group data 7)))) (>= (ja-aframe-num 0) 10.0)) ) ) - (metalkor-setup-hit-anim - (the-as attack-info s5-2) - (the-as process-drawable arg0) - (-> self draw art-group data 25) - (-> self draw art-group data 27) - (the-as float (-> self draw art-group data 26)) - ) + (the-as object (metalkor-setup-hit-anim + (the-as attack-info s5-2) + (the-as process-drawable arg0) + (-> self draw art-group data 25) + (-> self draw art-group data 27) + (the-as float (-> self draw art-group data 26)) + ) + ) ) ((and (-> self next-state) (let ((v1-153 (-> self next-state name))) (or (= v1-153 'chase-target)