diff --git a/decompiler/IR2/FormExpressionAnalysis.cpp b/decompiler/IR2/FormExpressionAnalysis.cpp index a200ff2a9..608b2edbd 100644 --- a/decompiler/IR2/FormExpressionAnalysis.cpp +++ b/decompiler/IR2/FormExpressionAnalysis.cpp @@ -3345,6 +3345,9 @@ void CondNoElseElement::push_to_stack(const Env& env, FormPool& pool, FormStack& stack.push_value_to_reg(write_as_value, as_ppointer_to_process, true, env.get_variable_type(final_destination, false)); } else { + // fmt::print("func {} final destination {} type {}\n", env.func->name(), + // final_destination.to_string(env), + // env.get_variable_type(final_destination, false).print()); stack.push_value_to_reg(write_as_value, pool.alloc_single_form(nullptr, this), true, env.get_variable_type(final_destination, false)); } @@ -3437,7 +3440,9 @@ void CondWithElseElement::push_to_stack(const Env& env, FormPool& pool, FormStac rewrite_as_set = false; break; } - source_types.push_back(last_in_body->src_type()); + // note: we use the dest type here because the rewrite will leave behind a cast to this. + auto type = env.get_variable_type(last_in_body->dst(), true); + source_types.push_back(type); } last_var = last_in_body->dst(); } @@ -3507,10 +3512,12 @@ void CondWithElseElement::push_to_stack(const Env& env, FormPool& pool, FormStac // (set! x (if y z (expr))) and z requires a cast, but the move from z to x is // eliminated by GOAL's register allocator. - // fmt::print("checking:\n"); - // for (auto& t : source_types) { - // fmt::print(" {}\n", t.print()); - // } + // fmt::print("func: {}\n", env.func->name()); + + // fmt::print("checking:\n"); + // for (auto& t : source_types) { + // fmt::print(" {}\n", t.print()); + // } auto expected_type = env.get_variable_type(*last_var, true); // fmt::print("The expected type is {}\n", expected_type.print()); diff --git a/goal_src/engine/camera/cam-combiner.gc b/goal_src/engine/camera/cam-combiner.gc index 3c6c1b65d..cc68664c1 100644 --- a/goal_src/engine/camera/cam-combiner.gc +++ b/goal_src/engine/camera/cam-combiner.gc @@ -12,54 +12,31 @@ (let ((v1-0 arg2)) (the-as object (cond ((= v1-0 'point-of-interest) - (the-as none (cond - ((-> arg3 param 0) - (set! - (-> - (the-as camera-slave self) - unknown-symbol - ) - #t - ) - (set! - (-> - (the-as camera-slave self) - view-off - quad - ) - (-> (the-as vector (-> arg3 param 0)) quad) - ) - (let ((f0-0 1.0)) - (set! - (-> - (the-as camera-slave self) - min-z-override - ) - f0-0 - ) - f0-0 - ) - ) - (else - (set! - (-> - (the-as camera-slave self) - unknown-symbol - ) - #f - ) - (let ((f0-1 0.0)) - (set! - (-> - (the-as camera-slave self) - min-z-override - ) - f0-1 - ) - f0-1 - ) - ) - ) + (cond + ((-> arg3 param 0) + (set! (-> (the-as camera-slave self) unknown-symbol) #t) + (set! + (-> (the-as camera-slave self) view-off quad) + (-> (the-as vector (-> arg3 param 0)) quad) + ) + (let ((f0-0 1.0)) + (set! + (-> (the-as camera-slave self) min-z-override) + f0-0 + ) + f0-0 + ) + ) + (else + (set! (-> (the-as camera-slave self) unknown-symbol) #f) + (let ((f0-1 0.0)) + (set! + (-> (the-as camera-slave self) min-z-override) + f0-1 + ) + f0-1 + ) + ) ) ) ((= v1-0 'set-interpolation) diff --git a/goal_src/engine/camera/camera.gc b/goal_src/engine/camera/camera.gc index 068708aab..33086d64b 100644 --- a/goal_src/engine/camera/camera.gc +++ b/goal_src/engine/camera/camera.gc @@ -1319,48 +1319,31 @@ ) ) ((= v1-0 'point-of-interest) - (the-as none (cond - ((-> arg3 param 0) - (set! - (-> self tracking use-point-of-interest) - #t - ) - (set! - (-> self tracking point-of-interest quad) - (-> (the-as vector (-> arg3 param 0)) quad) - ) - (let ((f0-0 1.0)) - (set! - (-> - self - tracking - point-of-interest-blend - target - ) - f0-0 - ) - f0-0 - ) - ) - (else - (set! - (-> self tracking use-point-of-interest) - #f - ) - (let ((f0-1 0.0)) - (set! - (-> - self - tracking - point-of-interest-blend - target - ) - f0-1 - ) - f0-1 - ) - ) - ) + (cond + ((-> arg3 param 0) + (set! (-> self tracking use-point-of-interest) #t) + (set! + (-> self tracking point-of-interest quad) + (-> (the-as vector (-> arg3 param 0)) quad) + ) + (let ((f0-0 1.0)) + (set! + (-> self tracking point-of-interest-blend target) + f0-0 + ) + f0-0 + ) + ) + (else + (set! (-> self tracking use-point-of-interest) #f) + (let ((f0-1 0.0)) + (set! + (-> self tracking point-of-interest-blend target) + f0-1 + ) + f0-1 + ) + ) ) ) ((= v1-0 'teleport) diff --git a/goal_src/engine/debug/anim-tester.gc b/goal_src/engine/debug/anim-tester.gc index 77da30356..72452a5ce 100644 --- a/goal_src/engine/debug/anim-tester.gc +++ b/goal_src/engine/debug/anim-tester.gc @@ -468,6 +468,7 @@ :flag-assert #x1401300198 ) + (defun anim-tester-num-print ((arg0 basic) (arg1 float)) (cond ((= arg1 (-> (new 'static 'array float 1 -2.0) 0)) @@ -3146,78 +3147,78 @@ (s3-0 "saving object ~s to ~s~%") (s2-0 (-> arg0 privname)) ) - (format (clear *temp-string*) "data/~s.obinf" (-> arg0 privname)) - (gp-0 s4-0 s3-0 s2-0 *temp-string*) - ) - ;; TODO - manually fixed + (format (clear *temp-string*) "data/~s.obinf" (-> arg0 privname)) + (gp-0 s4-0 s3-0 s2-0 *temp-string*) + ) (format (clear *temp-string*) "data/~s.obinf" (-> arg0 privname)) - (let ((gp-2 (new 'stack 'file-stream *temp-string* 'write))) + ;; TODO: manually fixed + (let ((gp-2 (new 'stack 'file-stream *temp-string* 'write))) (format gp-2 "major-version 0~%") (format gp-2 "minor-version 0~%") (format gp-2 "Object \"~S\" ~d~%" (-> arg0 privname) 0) (let ((v1-5 (-> arg0 seq-list))) - "return the start of the list" - (let ((s5-1 (-> v1-5 head))) - (while (let ((v1-30 (the-as anim-test-sequence s5-1))) - "is this node the end of the list. #t = end" - (not (not (-> v1-30 next))) - ) - (set! - (-> (the-as anim-test-sequence s5-1) flags) - (logand -5 (-> (the-as anim-test-sequence s5-1) flags)) - ) - (format - gp-2 - " ~S \"~S\" ~d~%" - (if (logtest? (-> (the-as anim-test-sequence s5-1) flags) 1) - "Sequence" - "Anim" - ) - (-> (the-as anim-test-sequence s5-1) privname) - 0 - ) - (let ((v1-11 (-> (the-as anim-test-sequence s5-1) item-list))) - "return the start of the list" - (let ((s4-2 (the-as anim-test-seq-item (-> v1-11 head)))) - (while (let ((v1-21 s4-2)) + "return the start of the list" + (let ((s5-1 (-> v1-5 head))) + (while (let ((v1-30 (the-as anim-test-sequence s5-1))) "is this node the end of the list. #t = end" - (not (not (-> v1-21 next))) + (not (not (-> v1-30 next))) ) - (when (zero? (logand (-> s4-2 flags) 5)) - (format + (set! + (-> (the-as anim-test-sequence s5-1) flags) + (logand -5 (-> (the-as anim-test-sequence s5-1) flags)) + ) + (format gp-2 - " Item \"~S\" ~d ~d " - (-> s4-2 privname) - (-> s4-2 speed) - (-> s4-2 blend) + " ~S \"~S\" ~d~%" + (if (logtest? (-> (the-as anim-test-sequence s5-1) flags) 1) + "Sequence" + "Anim" + ) + (-> (the-as anim-test-sequence s5-1) privname) + 0 ) - (anim-tester-num-print gp-2 (-> s4-2 first-frame)) - (format gp-2 " ") - (anim-tester-num-print gp-2 (-> s4-2 last-frame)) - (format gp-2 " ~S~%" (if (logtest? (-> s4-2 flags) 2) - "B" - "-" - ) + (let ((v1-11 (-> (the-as anim-test-sequence s5-1) item-list))) + "return the start of the list" + (let ((s4-2 (the-as anim-test-seq-item (-> v1-11 head)))) + (while (let ((v1-21 s4-2)) + "is this node the end of the list. #t = end" + (not (not (-> v1-21 next))) + ) + (when (zero? (logand (-> s4-2 flags) 5)) + (format + gp-2 + " Item \"~S\" ~d ~d " + (-> s4-2 privname) + (-> s4-2 speed) + (-> s4-2 blend) + ) + (anim-tester-num-print gp-2 (-> s4-2 first-frame)) + (format gp-2 " ") + (anim-tester-num-print gp-2 (-> s4-2 last-frame)) + (format gp-2 " ~S~%" (if (logtest? (-> s4-2 flags) 2) + "B" + "-" + ) + ) + ) + "return the next node in the list" + (set! s4-2 (the-as anim-test-seq-item (-> s4-2 next))) + ) + ) + ) + (format + gp-2 + " ~S~%" + (if (logtest? (-> (the-as anim-test-sequence s5-1) flags) 1) + "EndSequence" + "EndAnim" + ) ) - ) "return the next node in the list" - (set! s4-2 (the-as anim-test-seq-item (-> s4-2 next))) + (set! s5-1 (-> (the-as anim-test-sequence s5-1) next)) ) - ) ) - (format - gp-2 - " ~S~%" - (if (logtest? (-> (the-as anim-test-sequence s5-1) flags) 1) - "EndSequence" - "EndAnim" - ) - ) - "return the next node in the list" - (set! s5-1 (-> (the-as anim-test-sequence s5-1) next)) - ) ) - ) (format gp-2 "EndObject~%") (file-stream-close gp-2) ) @@ -3652,6 +3653,8 @@ ) + + (defmethod inspect anim-tester ((obj anim-tester)) (format #t "--anim-tester--~%") (let ((v1-0 (-> obj obj-list))) diff --git a/goal_src/engine/game/effect-control.gc b/goal_src/engine/game/effect-control.gc index 87ce3de4c..ffbe5d0e8 100644 --- a/goal_src/engine/game/effect-control.gc +++ b/goal_src/engine/game/effect-control.gc @@ -129,14 +129,10 @@ (defmethod TODO-RENAME-9 effect-control ((obj effect-control)) (let* ((a0-1 (-> obj process skel)) - (v1-3 - (the-as - joint-control-channel - (if (< (-> obj channel-offset) (-> a0-1 active-channels)) - (-> a0-1 root-channel (-> obj channel-offset)) - (the-as joint-control-channel #f) - ) - ) + (v1-3 (if (< (-> obj channel-offset) (-> a0-1 active-channels)) + (-> a0-1 root-channel (-> obj channel-offset)) + (the-as joint-control-channel #f) + ) ) ) (cond @@ -166,13 +162,10 @@ ) ) ) - (set! - (-> obj name) - (the-as (pointer res-tag) (if (>= (the-as int v1-6) 0) - (&-> (-> s5-0 extra tag) v1-6) - (the-as (pointer res-tag) #f) - ) - ) + (set! (-> obj name) (if (>= (the-as int v1-6) 0) + (&-> (-> s5-0 extra tag) v1-6) + (the-as (pointer res-tag) #f) + ) ) ) (if (and (-> obj name) (= (-> obj name 0 key-frame) -1000000000.0)) @@ -335,10 +328,9 @@ ) ) ) - (the-as int (if (zero? v0-0) - 0 - (the-as int (+ v0-0 1)) - ) + (if (zero? v0-0) + 0 + (the-as int (+ v0-0 1)) ) ) ) @@ -469,7 +461,10 @@ ) ) ) - (s2-1 + ((the-as + (function object object object object object object object object none) + s2-1 + ) s1-0 s0-0 (the-as sparticle-launch-group s3-0) @@ -570,7 +565,19 @@ ) ) ) - (s2-3 s1-2 s0-2 s3-0 sv-224 sv-240 sv-256 sv-272 t3-1) + ((the-as + (function object object object object object object object object none) + s2-3 + ) + s1-2 + s0-2 + s3-0 + sv-224 + sv-240 + sv-256 + sv-272 + t3-1 + ) ) ) (-> s4-3 ppointer) diff --git a/goal_src/engine/gfx/merc/merc.gc b/goal_src/engine/gfx/merc/merc.gc index d4b2591b5..f9978fcb6 100644 --- a/goal_src/engine/gfx/merc/merc.gc +++ b/goal_src/engine/gfx/merc/merc.gc @@ -25,12 +25,10 @@ (defmethod login-adgifs merc-fragment ((obj merc-fragment)) "Set up a merc-fragment. Does adgifs and eye stuff" (let* ((fp-data (merc-fragment-fp-data obj)) - (eye-ctrl - (the-as merc-eye-ctrl (if (nonzero? (-> *merc-ctrl-header* eye-ctrl)) - (-> *merc-ctrl-header* eye-ctrl) - (the-as merc-eye-ctrl #f) - ) - ) + (eye-ctrl (if (nonzero? (-> *merc-ctrl-header* eye-ctrl)) + (-> *merc-ctrl-header* eye-ctrl) + (the-as merc-eye-ctrl #f) + ) ) (shader (the-as adgif-shader (&+ fp-data 16))) ) diff --git a/goal_src/levels/beach/lurkercrab.gc b/goal_src/levels/beach/lurkercrab.gc index 6730e243b..11ba934ce 100644 --- a/goal_src/levels/beach/lurkercrab.gc +++ b/goal_src/levels/beach/lurkercrab.gc @@ -9,7 +9,8 @@ (declare-type lurkercrab nav-enemy) (define-extern lurkercrab-pushed (state lurkercrab)) -;; failed to figure out what this is: +;; DECOMP BEGINS + (set! (-> *part-group-id-table* 159) (new 'static 'sparticle-launch-group @@ -27,7 +28,6 @@ ) ) -;; failed to figure out what this is: (set! (-> *part-id-table* 663) (new 'static 'sparticle-launcher @@ -53,7 +53,6 @@ ) ) -;; failed to figure out what this is: (set! (-> *part-id-table* 664) (new 'static 'sparticle-launcher @@ -81,7 +80,6 @@ ) ) -;; definition of type lurkercrab (deftype lurkercrab (nav-enemy) ((orient basic :offset-assert 400) ) @@ -91,16 +89,7 @@ :flag-assert #x4c01300194 ) -;; definition for method 3 of type lurkercrab -(defmethod inspect lurkercrab ((obj lurkercrab)) - (let ((t9-0 (method-of-type nav-enemy inspect))) - (t9-0 obj) - ) - (format #t "~T~Torient: ~A~%" (-> obj orient)) - obj - ) -;; failed to figure out what this is: (let ((v1-4 (new 'static 'skeleton-group @@ -122,8 +111,6 @@ (set! *lurkercrab-sg* v1-4) ) -;; definition for method 44 of type lurkercrab -;; INFO: Return type mismatch none vs object. (defmethod dummy-44 lurkercrab @@ -150,13 +137,10 @@ ) ) -;; definition for method 43 of type lurkercrab -;; INFO: Return type mismatch none vs object. ;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? ;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? ;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? ;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? -;; Used lq/sq (defmethod dummy-43 lurkercrab @@ -170,87 +154,57 @@ (go (method-of-object obj nav-enemy-die)) ) ((= v1-1 'punch) - (the-as none (cond - ((logtest? (-> obj nav-enemy-flags) 32) - (logclear! - (-> obj mask) - (process-mask actor-pause) - ) - (go (method-of-object obj nav-enemy-die)) - ) - ((begin - (let ((s4-0 (new 'stack-no-clear 'vector))) - (let - ((f30-0 - (quaternion-xz-angle (target-rot)) - ) - ) - (set-vector! - s4-0 - (* 24576.0 (sin f30-0)) - 0.0 - (* 24576.0 (cos f30-0)) - 1.0 - ) - ) - (vector+! - s4-0 - (-> obj collide-info trans) - s4-0 - ) - (set! - (-> obj nav target-pos quad) - (-> s4-0 quad) - ) - ) - (go lurkercrab-pushed) - (= s5-0 (-> obj incomming-attack-id)) - ) - 'push - ) - (else - #t - ) - ) + (cond + ((logtest? (-> obj nav-enemy-flags) 32) + (logclear! (-> obj mask) (process-mask actor-pause)) + (go (method-of-object obj nav-enemy-die)) + ) + ((begin + (let ((s4-0 (new 'stack-no-clear 'vector))) + (let ((f30-0 (quaternion-xz-angle (target-rot)))) + (set-vector! + s4-0 + (* 24576.0 (sin f30-0)) + 0.0 + (* 24576.0 (cos f30-0)) + 1.0 + ) + ) + (vector+! s4-0 (-> obj collide-info trans) s4-0) + (set! (-> obj nav target-pos quad) (-> s4-0 quad)) + ) + (go lurkercrab-pushed) + (= s5-0 (-> obj incomming-attack-id)) + ) + 'push + ) + (else + #t + ) ) ) - (else - (the-as none (cond - ((logtest? (-> obj nav-enemy-flags) 32) - (logclear! - (-> obj mask) - (process-mask actor-pause) - ) - (go (method-of-object obj nav-enemy-die)) - ) - ((begin - (let ((s4-1 (new 'stack-no-clear 'vector))) - (vector-! - s4-1 - (-> obj collide-info trans) - (target-pos 0) - ) - (vector-normalize! s4-1 24576.0) - (vector+! - s4-1 - (-> obj collide-info trans) - s4-1 - ) - (set! - (-> obj nav target-pos quad) - (-> s4-1 quad) - ) - ) - (go lurkercrab-pushed) - (= s5-0 (-> obj incomming-attack-id)) - ) - 'push - ) - (else - #t - ) - ) + ((logtest? (-> obj nav-enemy-flags) 32) + (logclear! (-> obj mask) (process-mask actor-pause)) + (go (method-of-object obj nav-enemy-die)) + ) + ((begin + (let ((s4-1 (new 'stack-no-clear 'vector))) + (vector-! + s4-1 + (-> obj collide-info trans) + (target-pos 0) + ) + (vector-normalize! s4-1 24576.0) + (vector+! s4-1 (-> obj collide-info trans) s4-1) + (set! (-> obj nav target-pos quad) (-> s4-1 quad)) + ) + (go lurkercrab-pushed) + (= s5-0 (-> obj incomming-attack-id)) ) + 'push + ) + (else + #t ) ) ) @@ -258,11 +212,8 @@ ) ) -;; failed to figure out what this is: nav-enemy-default-event-handler -;; definition for method 37 of type lurkercrab -;; INFO: Return type mismatch int vs none. (defmethod TODO-RENAME-37 lurkercrab ((obj lurkercrab)) (when (-> obj orient) (if (logtest? (nav-control-flags bit19) (-> obj nav flags)) @@ -291,8 +242,6 @@ nav-enemy-default-event-handler (none) ) -;; definition for method 38 of type lurkercrab -;; INFO: Return type mismatch int vs none. (defmethod TODO-RENAME-38 lurkercrab ((obj lurkercrab)) (dummy-59 (-> obj collide-info) @@ -307,7 +256,6 @@ nav-enemy-default-event-handler (none) ) -;; failed to figure out what this is: (defstate nav-enemy-idle (lurkercrab) :virtual #t :event @@ -405,7 +353,6 @@ nav-enemy-default-event-handler ) ) -;; definition for function lurkercrab-invulnerable (defbehavior lurkercrab-invulnerable lurkercrab () (set! (-> self nav-enemy-flags) (logand -33 (-> self nav-enemy-flags))) (let ((v1-3 (dummy-34 (-> self collide-info) (the-as uint 2)))) @@ -418,7 +365,6 @@ nav-enemy-default-event-handler ) ) -;; definition for function lurkercrab-vulnerable (defbehavior lurkercrab-vulnerable lurkercrab () (logior! (-> self nav-enemy-flags) 32) (let ((v1-3 (dummy-34 (-> self collide-info) (the-as uint 2)))) @@ -431,7 +377,6 @@ nav-enemy-default-event-handler ) ) -;; failed to figure out what this is: (defstate nav-enemy-patrol (lurkercrab) :virtual #t :event @@ -705,7 +650,6 @@ nav-enemy-default-event-handler ) ) -;; failed to figure out what this is: (defstate nav-enemy-notice (lurkercrab) :virtual #t :event @@ -720,7 +664,6 @@ nav-enemy-default-event-handler ) ) -;; failed to figure out what this is: (defstate nav-enemy-chase (lurkercrab) :virtual #t :event @@ -1017,7 +960,6 @@ nav-enemy-default-event-handler ) ) -;; failed to figure out what this is: (defstate nav-enemy-stop-chase (lurkercrab) :virtual #t :event @@ -1032,7 +974,6 @@ nav-enemy-default-event-handler ) ) -;; failed to figure out what this is: (defstate nav-enemy-stare (lurkercrab) :virtual #t :event @@ -1047,7 +988,6 @@ nav-enemy-default-event-handler ) ) -;; failed to figure out what this is: (defstate nav-enemy-victory (lurkercrab) :virtual #t :event @@ -1057,10 +997,7 @@ nav-enemy-default-event-handler ) :code (behavior () - (set! - (-> self state-time) - (the-as seconds (-> *display* base-frame-counter)) - ) + (set! (-> self state-time) (-> *display* base-frame-counter)) (ja-channel-push! 1 22) (let ((v1-4 (-> self skel root-channel 0))) (set! @@ -1087,7 +1024,6 @@ nav-enemy-default-event-handler ) ) -;; failed to figure out what this is: (defstate lurkercrab-pushed (lurkercrab) :event (the-as @@ -1155,7 +1091,6 @@ nav-enemy-default-event-handler ) ) -;; definition for symbol *lurkercrab-nav-enemy-info*, type nav-enemy-info (define *lurkercrab-nav-enemy-info* (new 'static 'nav-enemy-info @@ -1211,7 +1146,6 @@ nav-enemy-default-event-handler ) ) -;; definition for method 11 of type lurkercrab (defmethod copy-defaults! lurkercrab ((obj lurkercrab) (arg0 res-lump)) (let ((s4-0 diff --git a/goal_src/levels/common/battlecontroller.gc b/goal_src/levels/common/battlecontroller.gc index 3c733c267..f393474bb 100644 --- a/goal_src/levels/common/battlecontroller.gc +++ b/goal_src/levels/common/battlecontroller.gc @@ -100,26 +100,20 @@ (-> self final-pickup-spawn-point quad) (-> v1-4 root trans quad) ) - (let ((a0-2 (-> self final-pickup-type))) - (the-as none (cond - ((= a0-2 (pickup-type fuel-cell)) - #f - ) - (else - (set! - (-> v1-4 fact pickup-type) - (-> self final-pickup-type) - ) - (set! (-> v1-4 fact pickup-amount) 1.0) - (let ((f0-1 0.0)) - (set! - (-> v1-4 fact pickup-spawn-amount) - f0-1 - ) - f0-1 - ) - ) - ) + (case (-> self final-pickup-type) + (((pickup-type fuel-cell)) + #f + ) + (else + (set! + (-> v1-4 fact pickup-type) + (-> self final-pickup-type) + ) + (set! (-> v1-4 fact pickup-amount) 1.0) + (let ((f0-1 0.0)) + (set! (-> v1-4 fact pickup-spawn-amount) f0-1) + f0-1 + ) ) ) ) @@ -512,10 +506,7 @@ battlecontroller-default-event-handler ) :code (behavior () - (set! - (-> self state-time) - (the-as seconds (-> *display* base-frame-counter)) - ) + (set! (-> self state-time) (-> *display* base-frame-counter)) (if (-> self prespawn) (battlecontroller-fill-all-spawners) ) @@ -525,10 +516,7 @@ battlecontroller-default-event-handler (- (-> *display* base-frame-counter) (the-as int (-> self state-time))) 30 ) - (set! - (-> self state-time) - (the-as seconds (-> *display* base-frame-counter)) - ) + (set! (-> self state-time) (-> *display* base-frame-counter)) (when (and *target* @@ -615,10 +603,7 @@ battlecontroller-default-event-handler ) :code (behavior () - (set! - (-> self state-time) - (the-as seconds (-> *display* base-frame-counter)) - ) + (set! (-> self state-time) (-> *display* base-frame-counter)) (battlecontroller-camera-on) (while #t (when @@ -626,10 +611,7 @@ battlecontroller-default-event-handler (- (-> *display* base-frame-counter) (the-as int (-> self state-time))) 30 ) - (set! - (-> self state-time) - (the-as seconds (-> *display* base-frame-counter)) - ) + (set! (-> self state-time) (-> *display* base-frame-counter)) (let ((gp-0 0)) (let ((v1-8 (-> self child))) (while v1-8 diff --git a/goal_src/levels/common/rigid-body.gc b/goal_src/levels/common/rigid-body.gc index 6aee07786..f85e0d2b0 100644 --- a/goal_src/levels/common/rigid-body.gc +++ b/goal_src/levels/common/rigid-body.gc @@ -349,42 +349,6 @@ :flag-assert #x900000068 ) -(defmethod - inspect - rigid-body-platform-constants - ((obj rigid-body-platform-constants)) - (format #t "[~8x] ~A~%" obj 'rigid-body-platform-constants) - (format #t "~Tdrag-factor: ~f~%" (-> obj drag-factor)) - (format #t "~Tbuoyancy-factor: ~f~%" (-> obj buoyancy-factor)) - (format #t "~Tmax-buoyancy-depth: (meters ~m)~%" (-> obj max-buoyancy-depth)) - (format #t "~Tgravity-factor: ~f~%" (-> obj gravity-factor)) - (format #t "~Tgravity: (meters ~m)~%" (-> obj gravity)) - (format #t "~Tplayer-weight: (meters ~m)~%" (-> obj player-weight)) - (format #t "~Tplayer-bonk-factor: ~f~%" (-> obj player-bonk-factor)) - (format #t "~Tplayer-dive-factor: ~f~%" (-> obj player-dive-factor)) - (format - #t - "~Tplayer-force-distance: (meters ~m)~%" - (-> obj player-force-distance) - ) - (format #t "~Tplayer-force-clamp: (meters ~m)~%" (-> obj player-force-clamp)) - (format #t "~Tplayer-force-timeout: ~D~%" (-> obj player-force-timeout)) - (format #t "~Texplosion-force: (meters ~m)~%" (-> obj explosion-force)) - (format #t "~Tlinear-damping: ~f~%" (-> obj linear-damping)) - (format #t "~Tangular-damping: ~f~%" (-> obj angular-damping)) - (format #t "~Tcontrol-point-count: ~D~%" (-> obj control-point-count)) - (format #t "~Tmass: ~f~%" (-> obj mass)) - (format #t "~Tinertial-tensor-x: (meters ~m)~%" (-> obj inertial-tensor-x)) - (format #t "~Tinertial-tensor-y: (meters ~m)~%" (-> obj inertial-tensor-y)) - (format #t "~Tinertial-tensor-z: (meters ~m)~%" (-> obj inertial-tensor-z)) - (format #t "~Tcm-joint-x: (meters ~m)~%" (-> obj cm-joint-x)) - (format #t "~Tcm-joint-y: (meters ~m)~%" (-> obj cm-joint-y)) - (format #t "~Tcm-joint-z: (meters ~m)~%" (-> obj cm-joint-z)) - (format #t "~Tidle-distance: (meters ~m)~%" (-> obj idle-distance)) - (format #t "~Tplatform: ~A~%" (-> obj platform)) - (format #t "~Tsound-name: ~A~%" (-> obj sound-name)) - obj - ) (deftype rigid-body-control-point-inline-array (inline-array-class) ((data rigid-body-control-point :inline :dynamic :offset 16) @@ -394,16 +358,6 @@ :flag-assert #x900000010 ) -(defmethod - inspect - rigid-body-control-point-inline-array - ((obj rigid-body-control-point-inline-array)) - (format #t "[~8x] ~A~%" obj (-> obj type)) - (format #t "~Tlength: ~D~%" (-> obj length)) - (format #t "~Tallocated-length: ~D~%" (-> obj allocated-length)) - (format #t "~Tdata[0] @ #x~X~%" (-> obj data)) - obj - ) (set! (-> rigid-body-control-point-inline-array heap-base) (the-as uint 48)) @@ -696,99 +650,82 @@ (let ((v1-16 (-> arg3 param 2))) (when (!= v1-16 (-> self player-attack-id)) (set! (-> self player-attack-id) (the-as int v1-16)) - (the-as vector (cond - ((= (-> arg3 param 1) 'flop) - (when - (>= - (- - (-> *display* base-frame-counter) - (-> self player-bonk-timeout) - ) - (the-as int (-> self info player-force-timeout)) - ) - (set! - (-> self player-bonk-timeout) - (-> *display* base-frame-counter) - ) - (let* ((gp-1 arg0) - (v1-24 - (if - (and - (nonzero? gp-1) - (type-type? (-> gp-1 type) process-drawable) - ) - gp-1 - ) - ) - ) - (when v1-24 - (set! - (-> self player-impulse) - (the-as collide-shape-prim-mesh #t) - ) - (set! - (-> self player-force-position quad) - (-> (the-as process-drawable v1-24) root trans quad) - ) - (let - ((f0-9 - (fmin - (* - 16.0 - (-> self info player-weight) - (-> self info player-dive-factor) - ) - (-> self info player-force-clamp) - ) - ) - ) - (vector-float*! - (-> self player-force) - *y-vector* - (- f0-9) - ) - ) - ) - ) - ) - ) - ((= (-> arg3 param 1) 'explode) - (let* ((gp-2 arg0) - (v1-34 - (if - (and - (nonzero? gp-2) - (type-type? (-> gp-2 type) process-drawable) - ) - gp-2 - ) - ) - ) - (when v1-34 - (set! - (-> self player-impulse) - (the-as collide-shape-prim-mesh #t) - ) - (set! - (-> self player-force-position quad) - (-> (the-as process-drawable v1-34) root trans quad) - ) - (vector-! - (-> self player-force) - (-> self rbody position) - (-> (the-as process-drawable v1-34) root trans) - ) - (vector-normalize! - (-> self player-force) - (-> self info explosion-force) - ) - ) - ) - ) - (else - (the-as vector #f) - ) - ) + (cond + ((= (-> arg3 param 1) 'flop) + (when + (>= + (- (-> *display* base-frame-counter) (-> self player-bonk-timeout)) + (the-as int (-> self info player-force-timeout)) + ) + (set! (-> self player-bonk-timeout) (-> *display* base-frame-counter)) + (let* ((gp-1 arg0) + (v1-24 + (if + (and + (nonzero? gp-1) + (type-type? (-> gp-1 type) process-drawable) + ) + gp-1 + ) + ) + ) + (when v1-24 + (set! (-> self player-impulse) (the-as collide-shape-prim-mesh #t)) + (set! + (-> self player-force-position quad) + (-> (the-as process-drawable v1-24) root trans quad) + ) + (let + ((f0-9 + (fmin + (* + 16.0 + (-> self info player-weight) + (-> self info player-dive-factor) + ) + (-> self info player-force-clamp) + ) + ) + ) + (vector-float*! (-> self player-force) *y-vector* (- f0-9)) + ) + ) + ) + ) + ) + ((= (-> arg3 param 1) 'explode) + (let* ((gp-2 arg0) + (v1-34 + (if + (and + (nonzero? gp-2) + (type-type? (-> gp-2 type) process-drawable) + ) + gp-2 + ) + ) + ) + (when v1-34 + (set! (-> self player-impulse) (the-as collide-shape-prim-mesh #t)) + (set! + (-> self player-force-position quad) + (-> (the-as process-drawable v1-34) root trans quad) + ) + (vector-! + (-> self player-force) + (-> self rbody position) + (-> (the-as process-drawable v1-34) root trans) + ) + (vector-normalize! + (-> self player-force) + (-> self info explosion-force) + ) + ) + ) + ) + (else + (the-as vector #f) + ) ) ) ) diff --git a/goal_src/levels/village1/yakow.gc b/goal_src/levels/village1/yakow.gc index 1cabc87fe..e65f837ca 100644 --- a/goal_src/levels/village1/yakow.gc +++ b/goal_src/levels/village1/yakow.gc @@ -226,20 +226,16 @@ ) ((= v1-0 'attack) (let ((v1-9 (-> arg3 param 2))) - (the-as none (cond - ((!= v1-9 (-> self player-attack-id)) - (set! - (-> self player-attack-id) - (the-as int v1-9) - ) - (if (-> self vulnerable) - (go yakow-kicked) - ) - ) - (else - 'push - ) - ) + (cond + ((!= v1-9 (-> self player-attack-id)) + (set! (-> self player-attack-id) (the-as int v1-9)) + (if (-> self vulnerable) + (go yakow-kicked) + ) + ) + (else + 'push + ) ) ) ) @@ -701,10 +697,7 @@ yakow-default-event-handler yakow-default-event-handler :enter (behavior () - (set! - (-> self state-time) - (the-as seconds (-> *display* base-frame-counter)) - ) + (set! (-> self state-time) (-> *display* base-frame-counter)) (set! (-> self travel-speed) 0.0) (none) ) @@ -848,10 +841,7 @@ yakow-default-event-handler yakow-default-event-handler :enter (behavior () - (set! - (-> self state-time) - (the-as seconds (-> *display* base-frame-counter)) - ) + (set! (-> self state-time) (-> *display* base-frame-counter)) (set! (-> self travel-speed) 0.0) (none) ) @@ -869,10 +859,7 @@ yakow-default-event-handler yakow-default-event-handler :enter (behavior ((arg0 vector)) - (set! - (-> self state-time) - (the-as seconds (-> *display* base-frame-counter)) - ) + (set! (-> self state-time) (-> *display* base-frame-counter)) (logior! (-> self nav flags) (nav-control-flags bit10)) (set! (-> self nav destination-pos quad) (-> arg0 quad)) (set! (-> self rotate-speed) (-> *YAKOW-bank* walk-rotate-speed)) @@ -958,10 +945,7 @@ yakow-default-event-handler yakow-default-event-handler :enter (behavior () - (set! - (-> self state-time) - (the-as seconds (-> *display* base-frame-counter)) - ) + (set! (-> self state-time) (-> *display* base-frame-counter)) (set! (-> self travel-speed) 0.0) (set! (-> self grazing) #t) (let ((v1-3 (entity-actor-lookup (-> self entity) 'alt-actor 0)) @@ -1175,10 +1159,7 @@ yakow-default-event-handler yakow-default-event-handler :enter (behavior () - (set! - (-> self state-time) - (the-as seconds (-> *display* base-frame-counter)) - ) + (set! (-> self state-time) (-> *display* base-frame-counter)) (logior! (-> self nav flags) (nav-control-flags bit10)) (set! (-> self rotate-speed) (-> *YAKOW-bank* run-rotate-speed)) (set! (-> self turn-time) (-> *YAKOW-bank* run-turn-time)) @@ -1251,10 +1232,7 @@ yakow-default-event-handler ) :enter (behavior () - (set! - (-> self state-time) - (the-as seconds (-> *display* base-frame-counter)) - ) + (set! (-> self state-time) (-> *display* base-frame-counter)) (if (-> self grazing) (go yakow-graze-kicked) ) diff --git a/test/decompiler/reference/engine/camera/cam-combiner_REF.gc b/test/decompiler/reference/engine/camera/cam-combiner_REF.gc index 578ecb88a..1677a98cb 100644 --- a/test/decompiler/reference/engine/camera/cam-combiner_REF.gc +++ b/test/decompiler/reference/engine/camera/cam-combiner_REF.gc @@ -8,54 +8,31 @@ (let ((v1-0 arg2)) (the-as object (cond ((= v1-0 'point-of-interest) - (the-as none (cond - ((-> arg3 param 0) - (set! - (-> - (the-as camera-slave self) - unknown-symbol - ) - #t - ) - (set! - (-> - (the-as camera-slave self) - view-off - quad - ) - (-> (the-as vector (-> arg3 param 0)) quad) - ) - (let ((f0-0 1.0)) - (set! - (-> - (the-as camera-slave self) - min-z-override - ) - f0-0 - ) - f0-0 - ) - ) - (else - (set! - (-> - (the-as camera-slave self) - unknown-symbol - ) - #f - ) - (let ((f0-1 0.0)) - (set! - (-> - (the-as camera-slave self) - min-z-override - ) - f0-1 - ) - f0-1 - ) - ) - ) + (cond + ((-> arg3 param 0) + (set! (-> (the-as camera-slave self) unknown-symbol) #t) + (set! + (-> (the-as camera-slave self) view-off quad) + (-> (the-as vector (-> arg3 param 0)) quad) + ) + (let ((f0-0 1.0)) + (set! + (-> (the-as camera-slave self) min-z-override) + f0-0 + ) + f0-0 + ) + ) + (else + (set! (-> (the-as camera-slave self) unknown-symbol) #f) + (let ((f0-1 0.0)) + (set! + (-> (the-as camera-slave self) min-z-override) + f0-1 + ) + f0-1 + ) + ) ) ) ((= v1-0 'set-interpolation) diff --git a/test/decompiler/reference/engine/camera/camera_REF.gc b/test/decompiler/reference/engine/camera/camera_REF.gc index a28d0c2ff..0d9967e7f 100644 --- a/test/decompiler/reference/engine/camera/camera_REF.gc +++ b/test/decompiler/reference/engine/camera/camera_REF.gc @@ -1314,48 +1314,31 @@ ) ) ((= v1-0 'point-of-interest) - (the-as none (cond - ((-> arg3 param 0) - (set! - (-> self tracking use-point-of-interest) - #t - ) - (set! - (-> self tracking point-of-interest quad) - (-> (the-as vector (-> arg3 param 0)) quad) - ) - (let ((f0-0 1.0)) - (set! - (-> - self - tracking - point-of-interest-blend - target - ) - f0-0 - ) - f0-0 - ) - ) - (else - (set! - (-> self tracking use-point-of-interest) - #f - ) - (let ((f0-1 0.0)) - (set! - (-> - self - tracking - point-of-interest-blend - target - ) - f0-1 - ) - f0-1 - ) - ) - ) + (cond + ((-> arg3 param 0) + (set! (-> self tracking use-point-of-interest) #t) + (set! + (-> self tracking point-of-interest quad) + (-> (the-as vector (-> arg3 param 0)) quad) + ) + (let ((f0-0 1.0)) + (set! + (-> self tracking point-of-interest-blend target) + f0-0 + ) + f0-0 + ) + ) + (else + (set! (-> self tracking use-point-of-interest) #f) + (let ((f0-1 0.0)) + (set! + (-> self tracking point-of-interest-blend target) + f0-1 + ) + f0-1 + ) + ) ) ) ((= v1-0 'teleport) diff --git a/test/decompiler/reference/engine/debug/anim-tester_REF.gc b/test/decompiler/reference/engine/debug/anim-tester_REF.gc index 5188af209..72254bd43 100644 --- a/test/decompiler/reference/engine/debug/anim-tester_REF.gc +++ b/test/decompiler/reference/engine/debug/anim-tester_REF.gc @@ -2641,46 +2641,37 @@ (else (when (zero? (logand (-> (the-as anim-test-seq-item gp-0) flags) 4)) - (let ((v1-334 (-> *anim-tester* 0 item-field))) - (the-as int (cond - ((= v1-334 5) - (anim-test-seq-mark-as-edited - (the-as anim-test-sequence s4-0) - ) - (let - ((v1-331 - (logxor - (-> (the-as anim-test-seq-item gp-0) flags) - 2 - ) - ) - ) - (set! - (-> (the-as anim-test-seq-item gp-0) flags) - v1-331 - ) - v1-331 - ) - ) - ((= v1-334 6) - (the-as int #f) - ) - ((= v1-334 7) - (the-as int #f) - ) - ((= v1-334 8) - (the-as int #f) - ) - (else - (logior! (-> *anim-tester* 0 flags) 8) - (set! - (-> *anim-tester* 0 inc-delay) - (-> *DISP_LIST-bank* INC_DELAY) - ) - (set! (-> *anim-tester* 0 inc-timer) 0) - 0 - ) - ) + (case (-> *anim-tester* 0 item-field) + ((5) + (anim-test-seq-mark-as-edited + (the-as anim-test-sequence s4-0) + ) + (let + ((v1-331 + (logxor (-> (the-as anim-test-seq-item gp-0) flags) 2) + ) + ) + (set! (-> (the-as anim-test-seq-item gp-0) flags) v1-331) + v1-331 + ) + ) + ((6) + (the-as int #f) + ) + ((7) + (the-as int #f) + ) + ((8) + (the-as int #f) + ) + (else + (logior! (-> *anim-tester* 0 flags) 8) + (set! + (-> *anim-tester* 0 inc-delay) + (-> *DISP_LIST-bank* INC_DELAY) + ) + (set! (-> *anim-tester* 0 inc-timer) 0) + 0 ) ) ) @@ -2735,69 +2726,48 @@ ) ) ) - (the-as none (cond - (s2-0 - (display-list-control (-> *anim-tester* 0 pick-con)) - ) - (else - (let* - ((s4-2 - (-> - *display* - frames - (-> *display* on-screen) - frame - debug-buf - ) - ) - (gp-3 (-> s4-2 base)) - ) - (draw-string-xy - "-spd-blnd-1st-lst-flgs-mov-" - s4-2 - (+ - (-> arg1 xpos) - (* - (-> *ANIM_TESTER-bank* EDIT_STATS_X) - (-> *DISP_LIST-bank* CHAR_WIDTH) - ) - ) - (-> arg1 ypos) - (font-color dim-white) - (font-flags shadow kerning) - ) - (let ((a3-21 (-> s4-2 base))) - (let ((v1-367 (the-as object (-> s4-2 base)))) - (set! - (-> (the-as dma-packet v1-367) dma) - (new 'static 'dma-tag :id (dma-tag-id next)) - ) - (set! - (-> (the-as dma-packet v1-367) vif0) - (new 'static 'vif-tag) - ) - (set! - (-> (the-as dma-packet v1-367) vif1) - (new 'static 'vif-tag) - ) - (set! (-> s4-2 base) (&+ (the-as pointer v1-367) 16)) - ) - (dma-bucket-insert-tag - (-> - *display* - frames - (-> *display* on-screen) - frame - bucket-group - ) - (bucket-id debug-draw0) - gp-3 - (the-as (pointer dma-tag) a3-21) - ) - ) - ) - ) - ) + (cond + (s2-0 + (display-list-control (-> *anim-tester* 0 pick-con)) + ) + (else + (let* + ((s4-2 (-> *display* frames (-> *display* on-screen) frame debug-buf)) + (gp-3 (-> s4-2 base)) + ) + (draw-string-xy + "-spd-blnd-1st-lst-flgs-mov-" + s4-2 + (+ + (-> arg1 xpos) + (* + (-> *ANIM_TESTER-bank* EDIT_STATS_X) + (-> *DISP_LIST-bank* CHAR_WIDTH) + ) + ) + (-> arg1 ypos) + (font-color dim-white) + (font-flags shadow kerning) + ) + (let ((a3-21 (-> s4-2 base))) + (let ((v1-367 (the-as object (-> s4-2 base)))) + (set! + (-> (the-as dma-packet v1-367) dma) + (new 'static 'dma-tag :id (dma-tag-id next)) + ) + (set! (-> (the-as dma-packet v1-367) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet v1-367) vif1) (new 'static 'vif-tag)) + (set! (-> s4-2 base) (&+ (the-as pointer v1-367) 16)) + ) + (dma-bucket-insert-tag + (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id debug-draw0) + gp-3 + (the-as (pointer dma-tag) a3-21) + ) + ) + ) + ) ) ) ) @@ -3950,6 +3920,3 @@ ) ) - - - diff --git a/test/decompiler/reference/engine/debug/debug_REF.gc b/test/decompiler/reference/engine/debug/debug_REF.gc index 7d4c298cd..4b6a12146 100644 --- a/test/decompiler/reference/engine/debug/debug_REF.gc +++ b/test/decompiler/reference/engine/debug/debug_REF.gc @@ -743,38 +743,30 @@ ) ;; definition (debug) for function get-debug-line (defun-debug get-debug-line () - (the-as debug-line (cond - ((< - (-> *debug-lines-trk* length) - (-> *debug-lines-trk* allocated-length) - ) - (+! (-> *debug-lines-trk* length) 1) - (-> *debug-lines* (+ (-> *debug-lines-trk* length) -1)) - ) - (else - (the-as debug-line #f) - ) - ) + (cond + ((< (-> *debug-lines-trk* length) (-> *debug-lines-trk* allocated-length)) + (+! (-> *debug-lines-trk* length) 1) + (-> *debug-lines* (+ (-> *debug-lines-trk* length) -1)) + ) + (else + (the-as debug-line #f) + ) ) ) ;; definition (debug) for function get-debug-text-3d (defun-debug get-debug-text-3d () - (the-as debug-text-3d (cond - ((< - (-> *debug-text-3d-trk* length) - (-> *debug-text-3d-trk* allocated-length) - ) - (+! (-> *debug-text-3d-trk* length) 1) - (-> - *debug-text-3ds* - (+ (-> *debug-text-3d-trk* length) -1) - ) - ) - (else - (the-as debug-text-3d #f) - ) - ) + (cond + ((< + (-> *debug-text-3d-trk* length) + (-> *debug-text-3d-trk* allocated-length) + ) + (+! (-> *debug-text-3d-trk* length) 1) + (-> *debug-text-3ds* (+ (-> *debug-text-3d-trk* length) -1)) + ) + (else + (the-as debug-text-3d #f) + ) ) ) diff --git a/test/decompiler/reference/engine/game/effect-control_REF.gc b/test/decompiler/reference/engine/game/effect-control_REF.gc index 168fd7e23..af21783ff 100644 --- a/test/decompiler/reference/engine/game/effect-control_REF.gc +++ b/test/decompiler/reference/engine/game/effect-control_REF.gc @@ -130,14 +130,10 @@ ;; Used lq/sq (defmethod TODO-RENAME-9 effect-control ((obj effect-control)) (let* ((a0-1 (-> obj process skel)) - (v1-3 - (the-as - joint-control-channel - (if (< (-> obj channel-offset) (-> a0-1 active-channels)) - (-> a0-1 root-channel (-> obj channel-offset)) - (the-as joint-control-channel #f) - ) - ) + (v1-3 (if (< (-> obj channel-offset) (-> a0-1 active-channels)) + (-> a0-1 root-channel (-> obj channel-offset)) + (the-as joint-control-channel #f) + ) ) ) (cond @@ -167,13 +163,10 @@ ) ) ) - (set! - (-> obj name) - (the-as (pointer res-tag) (if (>= (the-as int v1-6) 0) - (&-> (-> s5-0 extra tag) v1-6) - (the-as (pointer res-tag) #f) - ) - ) + (set! (-> obj name) (if (>= (the-as int v1-6) 0) + (&-> (-> s5-0 extra tag) v1-6) + (the-as (pointer res-tag) #f) + ) ) ) (if (and (-> obj name) (= (-> obj name 0 key-frame) -1000000000.0)) @@ -342,10 +335,9 @@ ) ) ) - (the-as int (if (zero? v0-0) - 0 - (the-as int (+ v0-0 1)) - ) + (if (zero? v0-0) + 0 + (the-as int (+ v0-0 1)) ) ) ) diff --git a/test/decompiler/reference/engine/game/task/task-control_REF.gc b/test/decompiler/reference/engine/game/task/task-control_REF.gc index 9fcc7680d..93e95b325 100644 --- a/test/decompiler/reference/engine/game/task/task-control_REF.gc +++ b/test/decompiler/reference/engine/game/task/task-control_REF.gc @@ -117,41 +117,36 @@ ;; definition for method 9 of type task-control (defmethod current-task task-control ((obj task-control)) - (the-as int (cond - ((= obj *null-task-control*) - (format - 0 - "ERROR: current-task received *null-task-control*~%" - ) - 0 - ) - ((= (-> obj current-stage) -1) - 0 - ) - (else - (the-as int (-> obj stage (-> obj current-stage) game-task)) - ) - ) + (cond + ((= obj *null-task-control*) + (format 0 "ERROR: current-task received *null-task-control*~%") + 0 + ) + ((= (-> obj current-stage) -1) + 0 + ) + (else + (the-as int (-> obj stage (-> obj current-stage) game-task)) + ) ) ) ;; definition for method 10 of type task-control (defmethod current-status task-control ((obj task-control)) - (the-as int (cond - ((= obj *null-task-control*) - (format - 0 - "ERROR: current-status received self of *null-task-control*~%~%" - ) - 0 - ) - ((= (-> obj current-stage) -1) - 0 - ) - (else - (the-as int (-> obj stage (-> obj current-stage) status)) - ) - ) + (cond + ((= obj *null-task-control*) + (format + 0 + "ERROR: current-status received self of *null-task-control*~%~%" + ) + 0 + ) + ((= (-> obj current-stage) -1) + 0 + ) + (else + (the-as int (-> obj stage (-> obj current-stage) status)) + ) ) ) diff --git a/test/decompiler/reference/engine/gfx/merc/merc_REF.gc b/test/decompiler/reference/engine/gfx/merc/merc_REF.gc index a910383f2..e432fd621 100644 --- a/test/decompiler/reference/engine/gfx/merc/merc_REF.gc +++ b/test/decompiler/reference/engine/gfx/merc/merc_REF.gc @@ -14,12 +14,10 @@ ;; INFO: Return type mismatch merc-fragment vs none. (defmethod login-adgifs merc-fragment ((obj merc-fragment)) (let* ((fp-data (merc-fragment-fp-data obj)) - (eye-ctrl - (the-as merc-eye-ctrl (if (nonzero? (-> *merc-ctrl-header* eye-ctrl)) - (-> *merc-ctrl-header* eye-ctrl) - (the-as merc-eye-ctrl #f) - ) - ) + (eye-ctrl (if (nonzero? (-> *merc-ctrl-header* eye-ctrl)) + (-> *merc-ctrl-header* eye-ctrl) + (the-as merc-eye-ctrl #f) + ) ) (shader (the-as adgif-shader (&+ fp-data 16))) ) diff --git a/test/decompiler/reference/engine/gfx/texture_REF.gc b/test/decompiler/reference/engine/gfx/texture_REF.gc index 90c3658a0..f56f12f53 100644 --- a/test/decompiler/reference/engine/gfx/texture_REF.gc +++ b/test/decompiler/reference/engine/gfx/texture_REF.gc @@ -2231,26 +2231,22 @@ ((obj texture-page) (dma-buff dma-buffer) (mode int)) (local-vars (total-size int)) (let ((v1-0 mode)) - (set! total-size (the-as int (cond - ((= v1-0 -3) - 0 - ) - ((= v1-0 -2) - (the-as - int - (+ - (-> obj segment 0 size) - (-> obj segment 1 size) - ) - ) - ) - ((= v1-0 -1) - (the-as int (-> obj size)) - ) - (else - (the-as int (-> obj segment mode size)) - ) - ) + (set! total-size (cond + ((= v1-0 -3) + 0 + ) + ((= v1-0 -2) + (the-as + int + (+ (-> obj segment 0 size) (-> obj segment 1 size)) + ) + ) + ((= v1-0 -1) + (the-as int (-> obj size)) + ) + (else + (the-as int (-> obj segment mode size)) + ) ) ) ) diff --git a/test/decompiler/reference/engine/load/loader_REF.gc b/test/decompiler/reference/engine/load/loader_REF.gc index e1f43f1de..e80ef03f2 100644 --- a/test/decompiler/reference/engine/load/loader_REF.gc +++ b/test/decompiler/reference/engine/load/loader_REF.gc @@ -144,10 +144,9 @@ (&+ *kernel-sp* -1024) ) (let ((s5-0 (loado arg0 arg1))) - (the-as art (if (type-type? (-> (the-as art s5-0) type) art) - (login (the-as art s5-0)) - (the-as art #f) - ) + (if (type-type? (-> (the-as art s5-0) type) art) + (login (the-as art s5-0)) + (the-as art #f) ) ) ) @@ -168,36 +167,23 @@ ) ) ) - (the-as art-group (cond - ((not s3-1) - (format - 0 - "ERROR: art-group ~A is not a valid file.~%" - arg0 - ) - (the-as art-group #f) - ) - ((not (type-type? (-> s3-1 type) art-group)) - (format - 0 - "ERROR: art-group ~A is not a art-group.~%" - arg0 - ) - (the-as art-group #f) - ) - ((not - (file-info-correct-version? - (-> s3-1 info) - (file-kind art-group) - arg2 - ) - ) - (the-as art-group #f) - ) - (else - (login s3-1) - ) - ) + (cond + ((not s3-1) + (format 0 "ERROR: art-group ~A is not a valid file.~%" arg0) + (the-as art-group #f) + ) + ((not (type-type? (-> s3-1 type) art-group)) + (format 0 "ERROR: art-group ~A is not a art-group.~%" arg0) + (the-as art-group #f) + ) + ((not + (file-info-correct-version? (-> s3-1 info) (file-kind art-group) arg2) + ) + (the-as art-group #f) + ) + (else + (login s3-1) + ) ) ) ) diff --git a/test/decompiler/reference/kernel/gkernel_REF.gc b/test/decompiler/reference/kernel/gkernel_REF.gc index dda88472f..84a4fa383 100644 --- a/test/decompiler/reference/kernel/gkernel_REF.gc +++ b/test/decompiler/reference/kernel/gkernel_REF.gc @@ -523,22 +523,21 @@ ) ) ) - (the-as process (cond - (s4-0 - (set! (-> (the-as (pointer process) s4-0) 0 type) arg0) - (-> (the-as (pointer process) s4-0) 0) - ) - (else - (format - 0 - "WARNING: ~A ~A could not be allocated, because ~A was empty.~%" - arg0 - (ppointer->process (the-as (pointer process) s4-0)) - (-> obj name) - ) - (the-as process #f) - ) - ) + (cond + (s4-0 + (set! (-> (the-as (pointer process) s4-0) 0 type) arg0) + (-> (the-as (pointer process) s4-0) 0) + ) + (else + (format + 0 + "WARNING: ~A ~A could not be allocated, because ~A was empty.~%" + arg0 + (ppointer->process (the-as (pointer process) s4-0)) + (-> obj name) + ) + (the-as process #f) + ) ) ) ) diff --git a/test/decompiler/reference/levels/beach/lurkercrab_REF.gc b/test/decompiler/reference/levels/beach/lurkercrab_REF.gc index f79ea4ee2..a2ed89ae9 100644 --- a/test/decompiler/reference/levels/beach/lurkercrab_REF.gc +++ b/test/decompiler/reference/levels/beach/lurkercrab_REF.gc @@ -162,87 +162,57 @@ (go (method-of-object obj nav-enemy-die)) ) ((= v1-1 'punch) - (the-as none (cond - ((logtest? (-> obj nav-enemy-flags) 32) - (logclear! - (-> obj mask) - (process-mask actor-pause) - ) - (go (method-of-object obj nav-enemy-die)) - ) - ((begin - (let ((s4-0 (new 'stack-no-clear 'vector))) - (let - ((f30-0 - (quaternion-xz-angle (target-rot)) - ) - ) - (set-vector! - s4-0 - (* 24576.0 (sin f30-0)) - 0.0 - (* 24576.0 (cos f30-0)) - 1.0 - ) - ) - (vector+! - s4-0 - (-> obj collide-info trans) - s4-0 - ) - (set! - (-> obj nav target-pos quad) - (-> s4-0 quad) - ) - ) - (go lurkercrab-pushed) - (= s5-0 (-> obj incomming-attack-id)) - ) - 'push - ) - (else - #t - ) - ) + (cond + ((logtest? (-> obj nav-enemy-flags) 32) + (logclear! (-> obj mask) (process-mask actor-pause)) + (go (method-of-object obj nav-enemy-die)) + ) + ((begin + (let ((s4-0 (new 'stack-no-clear 'vector))) + (let ((f30-0 (quaternion-xz-angle (target-rot)))) + (set-vector! + s4-0 + (* 24576.0 (sin f30-0)) + 0.0 + (* 24576.0 (cos f30-0)) + 1.0 + ) + ) + (vector+! s4-0 (-> obj collide-info trans) s4-0) + (set! (-> obj nav target-pos quad) (-> s4-0 quad)) + ) + (go lurkercrab-pushed) + (= s5-0 (-> obj incomming-attack-id)) + ) + 'push + ) + (else + #t + ) ) ) - (else - (the-as none (cond - ((logtest? (-> obj nav-enemy-flags) 32) - (logclear! - (-> obj mask) - (process-mask actor-pause) - ) - (go (method-of-object obj nav-enemy-die)) - ) - ((begin - (let ((s4-1 (new 'stack-no-clear 'vector))) - (vector-! - s4-1 - (-> obj collide-info trans) - (target-pos 0) - ) - (vector-normalize! s4-1 24576.0) - (vector+! - s4-1 - (-> obj collide-info trans) - s4-1 - ) - (set! - (-> obj nav target-pos quad) - (-> s4-1 quad) - ) - ) - (go lurkercrab-pushed) - (= s5-0 (-> obj incomming-attack-id)) - ) - 'push - ) - (else - #t - ) - ) + ((logtest? (-> obj nav-enemy-flags) 32) + (logclear! (-> obj mask) (process-mask actor-pause)) + (go (method-of-object obj nav-enemy-die)) + ) + ((begin + (let ((s4-1 (new 'stack-no-clear 'vector))) + (vector-! + s4-1 + (-> obj collide-info trans) + (target-pos 0) + ) + (vector-normalize! s4-1 24576.0) + (vector+! s4-1 (-> obj collide-info trans) s4-1) + (set! (-> obj nav target-pos quad) (-> s4-1 quad)) + ) + (go lurkercrab-pushed) + (= s5-0 (-> obj incomming-attack-id)) ) + 'push + ) + (else + #t ) ) ) diff --git a/test/decompiler/reference/levels/common/battlecontroller_REF.gc b/test/decompiler/reference/levels/common/battlecontroller_REF.gc index 02706d6fb..5a67d4603 100644 --- a/test/decompiler/reference/levels/common/battlecontroller_REF.gc +++ b/test/decompiler/reference/levels/common/battlecontroller_REF.gc @@ -161,26 +161,20 @@ (-> self final-pickup-spawn-point quad) (-> v1-4 root trans quad) ) - (let ((a0-2 (-> self final-pickup-type))) - (the-as none (cond - ((= a0-2 (pickup-type fuel-cell)) - #f - ) - (else - (set! - (-> v1-4 fact pickup-type) - (-> self final-pickup-type) - ) - (set! (-> v1-4 fact pickup-amount) 1.0) - (let ((f0-1 0.0)) - (set! - (-> v1-4 fact pickup-spawn-amount) - f0-1 - ) - f0-1 - ) - ) - ) + (case (-> self final-pickup-type) + (((pickup-type fuel-cell)) + #f + ) + (else + (set! + (-> v1-4 fact pickup-type) + (-> self final-pickup-type) + ) + (set! (-> v1-4 fact pickup-amount) 1.0) + (let ((f0-1 0.0)) + (set! (-> v1-4 fact pickup-spawn-amount) f0-1) + f0-1 + ) ) ) ) diff --git a/test/decompiler/reference/levels/common/rigid-body_REF.gc b/test/decompiler/reference/levels/common/rigid-body_REF.gc index d49f1ee3a..ce76f6372 100644 --- a/test/decompiler/reference/levels/common/rigid-body_REF.gc +++ b/test/decompiler/reference/levels/common/rigid-body_REF.gc @@ -778,99 +778,82 @@ (let ((v1-16 (-> arg3 param 2))) (when (!= v1-16 (-> self player-attack-id)) (set! (-> self player-attack-id) (the-as int v1-16)) - (the-as vector (cond - ((= (-> arg3 param 1) 'flop) - (when - (>= - (- - (-> *display* base-frame-counter) - (-> self player-bonk-timeout) - ) - (the-as int (-> self info player-force-timeout)) - ) - (set! - (-> self player-bonk-timeout) - (-> *display* base-frame-counter) - ) - (let* ((gp-1 arg0) - (v1-24 - (if - (and - (nonzero? gp-1) - (type-type? (-> gp-1 type) process-drawable) - ) - gp-1 - ) - ) - ) - (when v1-24 - (set! - (-> self player-impulse) - (the-as collide-shape-prim-mesh #t) - ) - (set! - (-> self player-force-position quad) - (-> (the-as process-drawable v1-24) root trans quad) - ) - (let - ((f0-9 - (fmin - (* - 16.0 - (-> self info player-weight) - (-> self info player-dive-factor) - ) - (-> self info player-force-clamp) - ) - ) - ) - (vector-float*! - (-> self player-force) - *y-vector* - (- f0-9) - ) - ) - ) - ) - ) - ) - ((= (-> arg3 param 1) 'explode) - (let* ((gp-2 arg0) - (v1-34 - (if - (and - (nonzero? gp-2) - (type-type? (-> gp-2 type) process-drawable) - ) - gp-2 - ) - ) - ) - (when v1-34 - (set! - (-> self player-impulse) - (the-as collide-shape-prim-mesh #t) - ) - (set! - (-> self player-force-position quad) - (-> (the-as process-drawable v1-34) root trans quad) - ) - (vector-! - (-> self player-force) - (-> self rbody position) - (-> (the-as process-drawable v1-34) root trans) - ) - (vector-normalize! - (-> self player-force) - (-> self info explosion-force) - ) - ) - ) - ) - (else - (the-as vector #f) - ) - ) + (cond + ((= (-> arg3 param 1) 'flop) + (when + (>= + (- (-> *display* base-frame-counter) (-> self player-bonk-timeout)) + (the-as int (-> self info player-force-timeout)) + ) + (set! (-> self player-bonk-timeout) (-> *display* base-frame-counter)) + (let* ((gp-1 arg0) + (v1-24 + (if + (and + (nonzero? gp-1) + (type-type? (-> gp-1 type) process-drawable) + ) + gp-1 + ) + ) + ) + (when v1-24 + (set! (-> self player-impulse) (the-as collide-shape-prim-mesh #t)) + (set! + (-> self player-force-position quad) + (-> (the-as process-drawable v1-24) root trans quad) + ) + (let + ((f0-9 + (fmin + (* + 16.0 + (-> self info player-weight) + (-> self info player-dive-factor) + ) + (-> self info player-force-clamp) + ) + ) + ) + (vector-float*! (-> self player-force) *y-vector* (- f0-9)) + ) + ) + ) + ) + ) + ((= (-> arg3 param 1) 'explode) + (let* ((gp-2 arg0) + (v1-34 + (if + (and + (nonzero? gp-2) + (type-type? (-> gp-2 type) process-drawable) + ) + gp-2 + ) + ) + ) + (when v1-34 + (set! (-> self player-impulse) (the-as collide-shape-prim-mesh #t)) + (set! + (-> self player-force-position quad) + (-> (the-as process-drawable v1-34) root trans quad) + ) + (vector-! + (-> self player-force) + (-> self rbody position) + (-> (the-as process-drawable v1-34) root trans) + ) + (vector-normalize! + (-> self player-force) + (-> self info explosion-force) + ) + ) + ) + ) + (else + (the-as vector #f) + ) ) ) ) diff --git a/test/decompiler/reference/levels/village1/yakow_REF.gc b/test/decompiler/reference/levels/village1/yakow_REF.gc index 56f868371..508f13367 100644 --- a/test/decompiler/reference/levels/village1/yakow_REF.gc +++ b/test/decompiler/reference/levels/village1/yakow_REF.gc @@ -278,20 +278,16 @@ ) ((= v1-0 'attack) (let ((v1-9 (-> arg3 param 2))) - (the-as none (cond - ((!= v1-9 (-> self player-attack-id)) - (set! - (-> self player-attack-id) - (the-as int v1-9) - ) - (if (-> self vulnerable) - (go yakow-kicked) - ) - ) - (else - 'push - ) - ) + (cond + ((!= v1-9 (-> self player-attack-id)) + (set! (-> self player-attack-id) (the-as int v1-9)) + (if (-> self vulnerable) + (go yakow-kicked) + ) + ) + (else + 'push + ) ) ) ) diff --git a/test/decompiler/test_gkernel_decomp.cpp b/test/decompiler/test_gkernel_decomp.cpp index 9f8cd8624..daabad593 100644 --- a/test/decompiler/test_gkernel_decomp.cpp +++ b/test/decompiler/test_gkernel_decomp.cpp @@ -1064,22 +1064,21 @@ TEST_F(FormRegressionTest, ExprMethod14DeadPool) { " )\n" " )\n" " )\n" - " (the-as process (cond\n" - " (s4-0\n" - " (set! (-> (the-as (pointer process) s4-0) 0 type) arg1)\n" - " (-> (the-as (pointer process) s4-0) 0)\n" - " )\n" - " (else\n" - " (format\n" - " 0\n" - " \"WARNING: ~A ~A could not be allocated, because ~A was empty.~%\"\n" - " arg1\n" - " (ppointer->process (the-as (pointer process) s4-0))\n" - " (-> arg0 name)\n" - " )\n" - " (the-as process #f)\n" - " )\n" - " )\n" + " (cond\n" + " (s4-0\n" + " (set! (-> (the-as (pointer process) s4-0) 0 type) arg1)\n" + " (-> (the-as (pointer process) s4-0) 0)\n" + " )\n" + " (else\n" + " (format\n" + " 0\n" + " \"WARNING: ~A ~A could not be allocated, because ~A was empty.~%\"\n" + " arg1\n" + " (ppointer->process (the-as (pointer process) s4-0))\n" + " (-> arg0 name)\n" + " )\n" + " (the-as process #f)\n" + " )\n" " )\n" " )";