diff --git a/.vs/launch.vs.json b/.vs/launch.vs.json index 09e9a82504..5d7e140dbd 100644 --- a/.vs/launch.vs.json +++ b/.vs/launch.vs.json @@ -79,7 +79,7 @@ "--game", "jak2", "--file", - "progress" + "nav-enemy" ] }, { @@ -233,7 +233,7 @@ "project" : "CMakeLists.txt", "projectTarget" : "type_searcher.exe (bin\\type_searcher.exe)", "name" : "Tools - Type Searcher", - "args" : ["--game", "jak2", "--output-path", "./search-results.json", "--size", "544"] + "args" : ["--game", "jak2", "--output-path", "./search-results.json", "--fields", "[{\\\"type\\\":\\\"int16\\\",\\\"offset\\\":2},{\\\"type\\\":\\\"int16\\\",\\\"offset\\\":4}]"] } ] } diff --git a/Taskfile.yml b/Taskfile.yml index 94696380c4..cc4c46c78d 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -106,6 +106,7 @@ tasks: - python ./scripts/tasks/extract-zip.py --file "{{.FILE}}" --out ./savestate_out/ - '{{.MEMDUMP_BIN_RELEASE_DIR}}/memory_dump_tool ./savestate_out/eeMemory.bin --output-path ./ --game {{.GAME}} > ee-analysis.log' watch-pcsx2: + # python -m pip install -U "watchdog[watchmedo]" cmds: - watchmedo shell-command --drop --patterns="*.p2s" --recursive --command='task analyze-ee-memory FILE="${watch_src_path}"' "{{.SAVESTATE_DIR}}" vars: @@ -120,21 +121,21 @@ tasks: - '{{.OFFLINETEST_BIN_RELEASE_DIR}}/offline-test --iso_data_path "./iso_data/{{.GAME}}" --game {{.GAME}}' offline-tests-fast: cmds: - - '{{.OFFLINETEST_BIN_RELEASE_DIR}}/offline-test --iso_data_path "./iso_data/{{.GAME}}" --game {{.GAME}} --num_threads 32' + - '{{.OFFLINETEST_BIN_RELEASE_DIR}}/offline-test --iso_data_path "./iso_data/{{.GAME}}" --game {{.GAME}} --num_threads 32 --dump_current_output --fail-on-cmp' offline-test-file: cmds: - '{{.OFFLINETEST_BIN_RELEASE_DIR}}/offline-test --iso_data_path "./iso_data/{{.GAME}}" --game {{.GAME}} --file {{.FILE}}' update-ref-tests: cmds: - cmd: python ./scripts/tasks/default-file-or-folder.py --path failures - - task: offline-tests-fast + - cmd: '{{.OFFLINETEST_BIN_RELEASE_DIR}}/offline-test --iso_data_path "./iso_data/{{.GAME}}" --game {{.GAME}} --num_threads 32 --dump_current_output --fail-on-cmp' ignore_error: true - python ./scripts/update_decomp_reference.py ./failures ./test/decompiler/reference/ --game {{.GAME}} - task: offline-tests-fast update-ref-file: cmds: - cmd: python ./scripts/tasks/default-file-or-folder.py --path failures - - cmd: '{{.OFFLINETEST_BIN_RELEASE_DIR}}/offline-test --iso_data_path "./iso_data/{{.GAME}}" --file {{.FILE}} --game {{.GAME}} --dump_current_output' + - cmd: '{{.OFFLINETEST_BIN_RELEASE_DIR}}/offline-test --iso_data_path "./iso_data/{{.GAME}}" --file {{.FILE}} --game {{.GAME}} --dump_current_output --fail-on-cmp' ignore_error: true - python ./scripts/update_decomp_reference.py ./failures ./test/decompiler/reference/ --game {{.GAME}} - task: offline-test-file diff --git a/decompiler/config/jak2/all-types.gc b/decompiler/config/jak2/all-types.gc index bb5461fe9f..0c3b8972dd 100644 --- a/decompiler/config/jak2/all-types.gc +++ b/decompiler/config/jak2/all-types.gc @@ -15953,15 +15953,15 @@ (deftype move-above-ground-params (structure) ((gnd-collide-with collide-spec :offset-assert 0) (popup float :offset-assert 4) - (dont-move-if-overlaps? basic :offset-assert 8) - (hover-if-no-ground? basic :offset-assert 12) + (dont-move-if-overlaps? symbol :offset-assert 8) + (hover-if-no-ground? symbol :offset-assert 12) (overlaps-params overlaps-others-params :inline :offset-assert 16) (new-pos vector :inline :offset-assert 48) (old-gspot-pos vector :inline :offset-assert 64) (old-gspot-normal vector :inline :offset-assert 80) (pat pat-surface :offset-assert 96) ;; was u32 - (on-ground? basic :offset-assert 100) - (do-move? basic :offset-assert 104) + (on-ground? symbol :offset-assert 100) + (do-move? symbol :offset-assert 104) ) :method-count-assert 9 :size-assert #x6c @@ -16221,43 +16221,44 @@ (declare-type collide-query structure) (declare-type control-info basic) (deftype collide-shape-moving (collide-shape) - ((rider-time time-frame :offset-assert 200) - (rider-last-move vector :inline) - (trans-old vector :inline) - (poly-pat pat-surface :offset 272) - (cur-pat pat-surface) - (ground-pat pat-surface) - (status cshape-moving-flags) - (old-status cshape-moving-flags) - (prev-status cshape-moving-flags :offset-assert 304) - (reaction-flag cshape-reaction-flags) - (reaction (function control-info collide-query vector vector cshape-moving-flags)) ;; function types... - (no-reaction function) - (local-normal vector :inline) - (surface-normal vector :inline) - (poly-normal vector :inline) - (ground-poly-normal vector :inline) - (gspot-pos vector :inline) - (gspot-normal vector :inline) - (grount-touch-point vector :inline) - (ground-impact-vel meters) - (surface-angle float) - (poly-angle float) - (touch-angle float) - (coverage float) - (dynam dynamics) - (surf surface) + ((rider-time time-frame :offset-assert 200) + (rider-last-move vector :inline :offset-assert 208) + (trans-old vector :inline :offset-assert 224) + (csm-unk-vec-981i2u312 vector :inline :offset 240) + (csm-unk-vec-klj1n23 vector :inline :offset 256) + (poly-pat pat-surface :offset 272) + (cur-pat pat-surface :offset-assert 276) + (ground-pat pat-surface :offset-assert 280) + (status cshape-moving-flags :offset-assert 288) + (old-status cshape-moving-flags :offset-assert 296) + (prev-status cshape-moving-flags :offset-assert 304) + (reaction-flag cshape-reaction-flags :offset-assert 312) + (reaction (function control-info collide-query vector vector cshape-moving-flags) :offset-assert 316) + (no-reaction function :offset-assert 320) + (local-normal vector :inline :offset-assert 336) + (surface-normal vector :inline :offset-assert 352) + (poly-normal vector :inline :offset-assert 368) + (ground-poly-normal vector :inline :offset-assert 384) + (gspot-pos vector :inline :offset-assert 400) + (gspot-normal vector :inline :offset-assert 416) + (grount-touch-point vector :inline :offset-assert 432) + (ground-impact-vel meters :offset-assert 448) + (surface-angle float :offset-assert 452) + (poly-angle float :offset-assert 456) + (touch-angle float :offset-assert 460) + (coverage float :offset-assert 464) + (dynam dynamics :offset-assert 468) + (surf surface :offset-assert 472) ) :method-count-assert 68 :size-assert #x1dc :flag-assert #x44000001dc - ;; Failed to read fields. (:methods (new (symbol type process-drawable collide-list-enum) _type_ 0) (collide-shape-moving-method-55 (_type_ collide-query collide-spec float float float) symbol 55) (collide-shape-moving-method-56 (_type_ pat-surface) none 56) ;; (set-and-handle-pat! (_type_ pat-surface) none 56) (collide-shape-moving-method-57 () none 57) ;; (integrate-no-collide! (_type_ vector) none 57) - (collide-shape-moving-method-58 () none 58) ;; (dummy-58 (_type_ vector) symbol 58) + (collide-shape-moving-method-58 (_type_ vector overlaps-others-params) symbol 58) ;; (dummy-58 (_type_ vector) symbol 58) (collide-shape-moving-method-59 () none 59) ;; (integrate-for-enemy-with-move-to-ground! (_type_ vector collide-kind float symbol symbol symbol) none 59) (collide-shape-moving-method-60 () none 60) ;; (move-to-ground (_type_ float float symbol collide-kind) symbol 60) (collide-shape-moving-method-61 () none 61) ;; (move-to-ground-point! (_type_ vector vector vector) none 61) @@ -21851,7 +21852,7 @@ (src-switch-poly-id uint8 :offset-assert 9) (dest-link-poly-id uint8 :offset-assert 10) (dest-switch-poly-id uint8 :offset-assert 11) - (dest-mesh basic :offset-assert 12) + (dest-mesh nav-mesh :offset-assert 12) ) :method-count-assert 9 :size-assert #x10 @@ -22023,7 +22024,7 @@ (nav-mesh-method-28 (_type_ object) none 28) ;; (find-poly (_type_ vector meters (pointer nav-control-flags)) nav-poly 28) (nav-mesh-method-29 (_type_ process-drawable symbol) nav-control 29) ;; (is-in-mesh? (_type_ vector float meters) symbol 29) (nav-mesh-method-30 (_type_ process-drawable) none 30) - (change-to (_type_ process-drawable int) none 31) + (change-to (_type_ process-drawable) none 31) (nav-mesh-method-32 "arg1 is a [[nav-mesh-link]] `id`" (_type_ uint32) none 32) (nav-mesh-method-33 "arg1 is a [[nav-mesh-link]] `id`" (_type_ uint32) symbol 33) (nav-mesh-method-34 (_type_ object vector float) none 34) @@ -22092,7 +22093,7 @@ (deftype nav-callback-info (structure) ((callback-count int32 :offset-assert 0) - (callback-array function 10 :offset-assert 4) + (callback-array (function object nav-control none) 10 :offset-assert 4) ) :method-count-assert 9 :size-assert #x2c @@ -32189,7 +32190,7 @@ (incoming enemy-attack-info :inline :offset-assert 416) (actor-group actor-group :offset-assert 480) (actor-group-count int32 :offset-assert 484) - (neck basic :offset-assert 488) + (neck joint-mod :offset-assert 488) (on-notice symbol :offset-assert 492) (on-active symbol :offset-assert 496) (on-hostile symbol :offset-assert 500) @@ -32233,13 +32234,13 @@ (enemy-method-54 (_type_) enemy-flag 54) (enemy-method-55 (_type_) none 55) (enemy-method-56 (_type_ object enemy-attack-info) none 56) - (enemy-method-57 (_type_) none 57) + (enemy-method-57 (_type_ process-focusable enemy-attack-info) none 57) (enemy-method-58 (_type_) symbol 58) (enemy-method-59 (_type_) penetrate 59) (coin-flip? "@returns The result of a 50/50 RNG roll" (_type_) symbol 60) - (enemy-method-61 (_type_ int) none 61) + (enemy-method-61 (_type_ int) int :behavior enemy 61) (enemy-method-62 (_type_) none 62) (enemy-method-63 (_type_ process-focusable symbol) none 63) (enemy-method-64 (_type_) none 64) @@ -32279,7 +32280,7 @@ (enemy-method-95 (_type_ vector float) symbol 95) (enemy-method-96 (_type_ float symbol) symbol 96) (enemy-method-97 (_type_) none 97) - (enemy-method-98 (_type_) symbol 98) + (enemy-method-98 (_type_ process-focusable vector) symbol 98) (enemy-method-99 (_type_) symbol 99) (enemy-method-100 (_type_) symbol 100) (enemy-method-101 (_type_) none 101) @@ -32325,9 +32326,9 @@ (enemy-method-123 "TODO" (_type_ float) symbol 123) (enemy-method-124 "TODO" (_type_) collide-spec 124) (enemy-method-125 (_type_) none 125) - (enemy-method-126 (_type_ collide-query vector collide-spec float float float) none 126) + (enemy-method-126 (_type_ collide-query vector collide-spec float float float) symbol 126) (enemy-method-127 (_type_) none 127) - (enemy-method-128 (_type_ vector) none 128) + (enemy-method-128 (_type_ vector move-above-ground-params) none 128) (enemy-method-129 (_type_) none 129) (enemy-method-130 (_type_) none 130) (enemy-method-131 (_type_) none 131) @@ -32403,6 +32404,7 @@ :size-assert #x25c :flag-assert #xb201e0025c (:methods + (enemy-method-113 (_type_ nav-enemy-info) none :replace 113) (taunt () _type_ :state 137) (pacing () _type_ :state 138) (circling () _type_ :state 139) @@ -32423,10 +32425,10 @@ (nav-enemy-method-154 (_type_ nav-control) none 154) (nav-enemy-method-155 (_type_) none 155) (nav-enemy-method-156 (_type_) none 156) - (nav-enemy-method-157 () none 157) - (nav-enemy-method-158 () none 158) - (nav-enemy-method-159 () none 159) - (nav-enemy-method-160 () none 160) + (nav-enemy-method-157 (_type_ vector) nav-poly 157) + (nav-enemy-method-158 (_type_ vector) object 158) + (nav-enemy-method-159 (_type_ vector) symbol 159) + (nav-enemy-method-160 (_type_) none 160) (nav-enemy-method-161 (_type_) none 161) (nav-enemy-method-162 (_type_) none 162) (nav-enemy-method-163 (_type_) none 163) @@ -32440,8 +32442,8 @@ (nav-enemy-method-171 (_type_) none 171) (nav-enemy-method-172 (_type_) none 172) (nav-enemy-method-173 (_type_) none 173) - (nav-enemy-method-174 (_type_) none 174) - (nav-enemy-method-175 (_type_) none 175) + (nav-enemy-method-174 (_type_) symbol 174) + (nav-enemy-method-175 (_type_) symbol 175) (nav-enemy-method-176 (_type_) none :behavior nav-enemy 176) (nav-enemy-method-177 (_type_) none 177) ) @@ -36383,21 +36385,20 @@ ) |# -#| (deftype predator (nav-enemy) - ((los los-control :inline :offset-assert 604) - (want-stop basic :offset-assert 752) - (target-pos vector :inline :offset-assert 764) - (curr-node int32 :offset-assert 780) - (hide-pos vector :inline :offset-assert 796) - (next-change uint64 :offset-assert 812) - (shoot-angle float :offset-assert 820) - (miss-amount float :offset-assert 824) - (ambient-sound-id uint32 :offset-assert 828) - (shock-effect-time time-frame :offset-assert 836) - (shock-effect-end uint64 :offset-assert 844) - (fade float :offset-assert 852) - (dest-fade float :offset-assert 856) + ((los los-control :inline :offset-assert 608) + (want-stop basic :offset-assert 756) + (target-pos vector :inline :offset-assert 768) + (curr-node int32 :offset-assert 784) + (hide-pos vector :inline :offset-assert 800) + (next-change uint64 :offset-assert 816) + (shoot-angle float :offset-assert 824) + (miss-amount float :offset-assert 828) + (ambient-sound-id uint32 :offset-assert 832) + (shock-effect-time time-frame :offset-assert 840) + (shock-effect-end uint64 :offset-assert 848) + (fade float :offset-assert 856) + (dest-fade float :offset-assert 860) ) :method-count-assert 189 :size-assert #x360 @@ -36416,7 +36417,6 @@ (predator-method-188 () none 188) ) ) -|# #| (deftype predator-manager (process) @@ -37027,7 +37027,6 @@ ;; grenadier ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype bank-info (structure) ((circle sphere :inline :offset-assert 0) (tangent-pos vector :inline :offset-assert 16) @@ -37038,19 +37037,17 @@ :size-assert #x40 :flag-assert #x900000040 ) -|# -#| (deftype grenadier (nav-enemy) - ((shot-trajectory trajectory :inline :offset-assert 604) - (hostile-path basic :offset-assert 644) - (bank bank-info :inline :offset-assert 652) - (joint basic :offset-assert 716) - (heading basic :offset-assert 720) - (move-pos vector :inline :offset-assert 732) - (move-angle float :offset-assert 748) - (status-flags uint64 :offset-assert 756) - (suppress-knockaside-timer uint64 :offset-assert 764) + ((shot-trajectory trajectory :inline :offset-assert 608) + (hostile-path path-control :offset-assert 648) + (bank bank-info :inline :offset-assert 656) + (joint joint-mod-blend-world :offset-assert 720) + (heading basic :offset-assert 724) + (move-pos vector :inline :offset-assert 736) + (move-angle float :offset-assert 752) + (status-flags uint64 :offset-assert 760) + (suppress-knockaside-timer uint64 :offset-assert 768) ) :method-count-assert 184 :size-assert #x308 @@ -37064,7 +37061,6 @@ (grenadier-method-183 () none 183) ) ) -|# ;; (define-extern *grenadier-nav-enemy-info* nav-enemy-info) ;; (define-extern pos-rotate-y<-vector+vector function) diff --git a/decompiler/config/jak2/anonymous_function_types.jsonc b/decompiler/config/jak2/anonymous_function_types.jsonc index aa3ba62cc1..4c6339fdde 100644 --- a/decompiler/config/jak2/anonymous_function_types.jsonc +++ b/decompiler/config/jak2/anonymous_function_types.jsonc @@ -420,5 +420,17 @@ ], "scene": [[4, "(function symbol :behavior scene-player)"]], "enemy": [[37, "(function enemy-jump-info none :behavior enemy)"]], - "nav-enemy": [[7, "(function enemy-jump-info none :behavior nav-enemy)"]] + "nav-enemy": [ + [7, "(function enemy-jump-info none :behavior nav-enemy)"], + [84, "(function object nav-control none)"], + [85, "(function object nav-control none)"], + [86, "(function object nav-control none)"], + [87, "(function object nav-control none)"], + [88, "(function object nav-control none)"], + [89, "(function object nav-control none)"], + [90, "(function object nav-control none)"], + [91, "(function object nav-control none)"], + [92, "(function object nav-control none)"], + [93, "(function object nav-control none)"] + ] } diff --git a/decompiler/config/jak2/label_types.jsonc b/decompiler/config/jak2/label_types.jsonc index 109dc01e90..39b551d838 100644 --- a/decompiler/config/jak2/label_types.jsonc +++ b/decompiler/config/jak2/label_types.jsonc @@ -455,6 +455,7 @@ ["L498", "uint64", true], ["L499", "uint64", true], ["L500", "uint64", true], + ["L501", "uint64", true], ["L502", "uint64", true], ["L503", "uint64", true], ["L504", "uint64", true] diff --git a/decompiler/config/jak2/stack_structures.jsonc b/decompiler/config/jak2/stack_structures.jsonc index fdbd45f1a0..b55dd4d67d 100644 --- a/decompiler/config/jak2/stack_structures.jsonc +++ b/decompiler/config/jak2/stack_structures.jsonc @@ -3712,5 +3712,29 @@ 16, "enemy-jump-info" ] + ], + "(method 145 nav-enemy)": [ + [ + 16, + "vector" + ] + ], + "(method 150 nav-enemy)": [ + [ + 16, + "vector" + ] + ], + "(anon-function 88 nav-enemy)": [ + [ + 16, + "vector" + ] + ], + "(anon-function 93 nav-enemy)": [ + [ + 16, + "vector" + ] ] -} \ No newline at end of file +} diff --git a/decompiler/config/jak2/type_casts.jsonc b/decompiler/config/jak2/type_casts.jsonc index 43c23d19d6..cc55649728 100644 --- a/decompiler/config/jak2/type_casts.jsonc +++ b/decompiler/config/jak2/type_casts.jsonc @@ -18609,5 +18609,31 @@ "v1", "art-joint-anim" ] + ], + "(method 55 nav-enemy)": [ + [ + [74,78], + "a0", + "process-focusable" + ] + ], + "(method 161 nav-enemy)": [ + [ + 22, + "v1", + "process-focusable" + ] + ], + "(method 160 nav-enemy)": [ + [ + 19, + "a0", + "process-focusable" + ], + [ + 35, + "s5", + "process-focusable" + ] ] -} \ No newline at end of file +} diff --git a/test/decompiler/reference/jak2/engine/collide/collide-shape-h_REF.gc b/test/decompiler/reference/jak2/engine/collide/collide-shape-h_REF.gc index e86edcfc9e..70accf5727 100644 --- a/test/decompiler/reference/jak2/engine/collide/collide-shape-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/collide/collide-shape-h_REF.gc @@ -124,15 +124,15 @@ (deftype move-above-ground-params (structure) ((gnd-collide-with collide-spec :offset-assert 0) (popup float :offset-assert 4) - (dont-move-if-overlaps? basic :offset-assert 8) - (hover-if-no-ground? basic :offset-assert 12) + (dont-move-if-overlaps? symbol :offset-assert 8) + (hover-if-no-ground? symbol :offset-assert 12) (overlaps-params overlaps-others-params :inline :offset-assert 16) (new-pos vector :inline :offset-assert 48) (old-gspot-pos vector :inline :offset-assert 64) (old-gspot-normal vector :inline :offset-assert 80) (pat pat-surface :offset-assert 96) - (on-ground? basic :offset-assert 100) - (do-move? basic :offset-assert 104) + (on-ground? symbol :offset-assert 100) + (do-move? symbol :offset-assert 104) ) :method-count-assert 9 :size-assert #x6c @@ -1551,32 +1551,34 @@ ) (deftype collide-shape-moving (collide-shape) - ((rider-time time-frame :offset-assert 200) - (rider-last-move vector :inline :offset-assert 208) - (trans-old vector :inline :offset-assert 224) - (poly-pat pat-surface :offset 272) - (cur-pat pat-surface :offset-assert 276) - (ground-pat pat-surface :offset-assert 280) - (status cshape-moving-flags :offset-assert 288) - (old-status cshape-moving-flags :offset-assert 296) - (prev-status cshape-moving-flags :offset-assert 304) - (reaction-flag cshape-reaction-flags :offset-assert 312) - (reaction (function control-info collide-query vector vector cshape-moving-flags) :offset-assert 316) - (no-reaction function :offset-assert 320) - (local-normal vector :inline :offset-assert 336) - (surface-normal vector :inline :offset-assert 352) - (poly-normal vector :inline :offset-assert 368) - (ground-poly-normal vector :inline :offset-assert 384) - (gspot-pos vector :inline :offset-assert 400) - (gspot-normal vector :inline :offset-assert 416) - (grount-touch-point vector :inline :offset-assert 432) - (ground-impact-vel meters :offset-assert 448) - (surface-angle float :offset-assert 452) - (poly-angle float :offset-assert 456) - (touch-angle float :offset-assert 460) - (coverage float :offset-assert 464) - (dynam dynamics :offset-assert 468) - (surf surface :offset-assert 472) + ((rider-time time-frame :offset-assert 200) + (rider-last-move vector :inline :offset-assert 208) + (trans-old vector :inline :offset-assert 224) + (csm-unk-vec-981i2u312 vector :inline :offset 240) + (csm-unk-vec-klj1n23 vector :inline :offset 256) + (poly-pat pat-surface :offset 272) + (cur-pat pat-surface :offset-assert 276) + (ground-pat pat-surface :offset-assert 280) + (status cshape-moving-flags :offset-assert 288) + (old-status cshape-moving-flags :offset-assert 296) + (prev-status cshape-moving-flags :offset-assert 304) + (reaction-flag cshape-reaction-flags :offset-assert 312) + (reaction (function control-info collide-query vector vector cshape-moving-flags) :offset-assert 316) + (no-reaction function :offset-assert 320) + (local-normal vector :inline :offset-assert 336) + (surface-normal vector :inline :offset-assert 352) + (poly-normal vector :inline :offset-assert 368) + (ground-poly-normal vector :inline :offset-assert 384) + (gspot-pos vector :inline :offset-assert 400) + (gspot-normal vector :inline :offset-assert 416) + (grount-touch-point vector :inline :offset-assert 432) + (ground-impact-vel meters :offset-assert 448) + (surface-angle float :offset-assert 452) + (poly-angle float :offset-assert 456) + (touch-angle float :offset-assert 460) + (coverage float :offset-assert 464) + (dynam dynamics :offset-assert 468) + (surf surface :offset-assert 472) ) :method-count-assert 68 :size-assert #x1dc @@ -1586,7 +1588,7 @@ (collide-shape-moving-method-55 (_type_ collide-query collide-spec float float float) symbol 55) (collide-shape-moving-method-56 (_type_ pat-surface) none 56) (collide-shape-moving-method-57 () none 57) - (collide-shape-moving-method-58 () none 58) + (collide-shape-moving-method-58 (_type_ vector overlaps-others-params) symbol 58) (collide-shape-moving-method-59 () none 59) (collide-shape-moving-method-60 () none 60) (collide-shape-moving-method-61 () none 61) diff --git a/test/decompiler/reference/jak2/engine/debug/stats-h_REF.gc b/test/decompiler/reference/jak2/engine/debug/stats-h_REF.gc index 55e4c281d1..db032193ea 100644 --- a/test/decompiler/reference/jak2/engine/debug/stats-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/debug/stats-h_REF.gc @@ -291,11 +291,11 @@ (let ((v1-0 (-> obj ctrl))) (+! (-> obj count) 1) (b! (zero? v1-0) cfg-2 :delay (nop!)) - (.mtc0 Perf 0) + (.mtc0 Perf r0) (.sync.l) (.sync.p) - (.mtpc pcr0 0) - (.mtpc pcr1 0) + (.mtpc pcr0 r0) + (.mtpc pcr1 r0) (.sync.l) (.sync.p) (.mtc0 Perf v1-0) @@ -310,7 +310,7 @@ (defmethod read! perf-stat ((obj perf-stat)) (local-vars (v1-1 int) (v1-3 int)) (b! (zero? (-> obj ctrl)) cfg-2 :delay (nop!)) - (.mtc0 Perf 0) + (.mtc0 Perf r0) (.sync.l) (.sync.p) (.mfpc v1-1 pcr0) diff --git a/test/decompiler/reference/jak2/engine/entity/entity_REF.gc b/test/decompiler/reference/jak2/engine/entity/entity_REF.gc index 72799828b0..e14b7b1c51 100644 --- a/test/decompiler/reference/jak2/engine/entity/entity_REF.gc +++ b/test/decompiler/reference/jak2/engine/entity/entity_REF.gc @@ -2469,7 +2469,7 @@ (reset-actors 'debug) 0 (disable-irq) - (.mtc0 Count 0) + (.mtc0 Count r0) (.sync.p) (birth! gp-0) (.mfc0 s4-0 Count) diff --git a/test/decompiler/reference/jak2/engine/gfx/shrub/shrubbery_REF.gc b/test/decompiler/reference/jak2/engine/gfx/shrub/shrubbery_REF.gc index 7c79a04d28..ef287041b7 100644 --- a/test/decompiler/reference/jak2/engine/gfx/shrub/shrubbery_REF.gc +++ b/test/decompiler/reference/jak2/engine/gfx/shrub/shrubbery_REF.gc @@ -998,11 +998,11 @@ ) (+! (-> a1-16 count) 1) (b! (zero? a2-6) cfg-7 :delay (nop!)) - (.mtc0 Perf 0) + (.mtc0 Perf r0) (.sync.l) (.sync.p) - (.mtpc pcr0 0) - (.mtpc pcr1 0) + (.mtpc pcr0 r0) + (.mtpc pcr1 r0) (.sync.l) (.sync.p) (.mtc0 Perf a2-6) @@ -1019,7 +1019,7 @@ ) (let ((v1-26 (-> *perf-stats* data 44))) (b! (zero? (-> v1-26 ctrl)) cfg-9 :delay (nop!)) - (.mtc0 Perf 0) + (.mtc0 Perf r0) (.sync.l) (.sync.p) (.mfpc a0-4 pcr0) @@ -1034,11 +1034,11 @@ ) (+! (-> v1-29 count) 1) (b! (zero? a0-8) cfg-11 :delay (nop!)) - (.mtc0 Perf 0) + (.mtc0 Perf r0) (.sync.l) (.sync.p) - (.mtpc pcr0 0) - (.mtpc pcr1 0) + (.mtpc pcr0 r0) + (.mtpc pcr1 r0) (.sync.l) (.sync.p) (.mtc0 Perf a0-8) @@ -1050,7 +1050,7 @@ (draw-prototype-inline-array-shrub proto-array-len proto-array-data) (let ((v1-32 (-> *perf-stats* data 45))) (b! (zero? (-> v1-32 ctrl)) cfg-13 :delay (nop!)) - (.mtc0 Perf 0) + (.mtc0 Perf r0) (.sync.l) (.sync.p) (.mfpc a0-11 pcr0) diff --git a/test/decompiler/reference/jak2/engine/nav/nav-control-h_REF.gc b/test/decompiler/reference/jak2/engine/nav/nav-control-h_REF.gc index 370b9b6a56..cb05304e17 100644 --- a/test/decompiler/reference/jak2/engine/nav/nav-control-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/nav/nav-control-h_REF.gc @@ -1,7 +1,5 @@ -;;-*-Lisp-*- (in-package goal) -;; definition of type check-vector-collision-with-nav-spheres-info (deftype check-vector-collision-with-nav-spheres-info (structure) ((u float :offset-assert 0) (intersect vector :inline :offset-assert 16) @@ -12,7 +10,6 @@ :flag-assert #x900000030 ) -;; definition for method 3 of type check-vector-collision-with-nav-spheres-info (defmethod inspect check-vector-collision-with-nav-spheres-info ((obj check-vector-collision-with-nav-spheres-info)) (when (not obj) (set! obj obj) @@ -26,7 +23,6 @@ obj ) -;; definition of type nav-gap-info (deftype nav-gap-info (structure) ((dest vector :inline :offset-assert 0) (poly nav-poly :offset-assert 16) @@ -36,7 +32,6 @@ :flag-assert #x900000014 ) -;; definition for method 3 of type nav-gap-info (defmethod inspect nav-gap-info ((obj nav-gap-info)) (when (not obj) (set! obj obj) @@ -49,21 +44,19 @@ obj ) -;; definition of type nav-avoid-spheres-params (deftype nav-avoid-spheres-params (structure) ((current-pos vector :inline :offset-assert 0) (travel vector :inline :offset-assert 16) (pref-dir vector :inline :offset-assert 32) (out-travel vector 2 :inline :offset-assert 48) (closest-sphere-dist2 float :offset-assert 80) - (avoiding-sphere? basic :offset-assert 84) + (avoiding-sphere? symbol :offset-assert 84) ) :method-count-assert 9 :size-assert #x58 :flag-assert #x900000058 ) -;; definition for method 3 of type nav-avoid-spheres-params (defmethod inspect nav-avoid-spheres-params ((obj nav-avoid-spheres-params)) (when (not obj) (set! obj obj) @@ -80,17 +73,15 @@ obj ) -;; definition of type nav-callback-info (deftype nav-callback-info (structure) - ((callback-count int32 :offset-assert 0) - (callback-array uint32 10 :offset-assert 4) + ((callback-count int32 :offset-assert 0) + (callback-array (function object nav-control none) 10 :offset-assert 4) ) :method-count-assert 9 :size-assert #x2c :flag-assert #x90000002c ) -;; definition for method 3 of type nav-callback-info (defmethod inspect nav-callback-info ((obj nav-callback-info)) (when (not obj) (set! obj obj) @@ -103,10 +94,9 @@ obj ) -;; definition of type nav-state (deftype nav-state (structure) ((flags nav-state-flag :offset-assert 0) - (nav basic :offset-assert 4) + (nav nav-control :offset-assert 4) (user-poly nav-poly :offset-assert 8) (mesh nav-mesh :offset-assert 12) (current-poly nav-poly :offset-assert 16) @@ -131,56 +121,55 @@ :size-assert #xb0 :flag-assert #x37000000b0 (:methods - (nav-state-method-9 () none 9) - (nav-state-method-10 () none 10) - (nav-state-method-11 () none 11) - (nav-state-method-12 () none 12) - (nav-state-method-13 () none 13) - (nav-state-method-14 () none 14) - (nav-state-method-15 () none 15) - (nav-state-method-16 () none 16) - (nav-state-method-17 () none 17) - (nav-state-method-18 () none 18) - (nav-state-method-19 () none 19) - (nav-state-method-20 () none 20) + (debug-draw (_type_) none 9) + (nav-state-method-10 (_type_) none 10) + (nav-state-method-11 (_type_ nav-gap-info) symbol 11) + (nav-state-method-12 (_type_ vector) vector 12) + (nav-state-method-13 (_type_ vector) vector 13) + (nav-state-method-14 (_type_ vector) vector 14) + (nav-state-method-15 (_type_ vector) vector 15) + (get-speed (_type_) meters 16) + (get-rotation-rate (_type_) float 17) + (nav-state-method-18 (_type_ vector object vector) none 18) + (get-current-poly (_type_) nav-poly 19) + (copy-nav-state! (_type_ (pointer nav-state)) none 20) (nav-state-method-21 () none 21) (nav-state-method-22 () none 22) (nav-state-method-23 () none 23) - (nav-state-method-24 () none 24) - (nav-state-method-25 () none 25) - (nav-state-method-26 () none 26) - (nav-state-method-27 () none 27) - (nav-state-method-28 () none 28) - (nav-state-method-29 () none 29) - (nav-state-method-30 () none 30) - (nav-state-method-31 () none 31) - (nav-state-method-32 () none 32) - (nav-state-method-33 () none 33) - (nav-state-method-34 () none 34) - (nav-state-method-35 () none 35) - (nav-state-method-36 () none 36) - (nav-state-method-37 () none 37) - (nav-state-method-38 () none 38) + (nav-state-method-24 (_type_) none 24) + (nav-state-method-25 (_type_) none 25) + (nav-state-method-26 (_type_) none 26) + (nav-state-method-27 (_type_) none 27) + (nav-state-method-28 (_type_) none 28) + (nav-state-method-29 (_type_) none 29) + (nav-state-method-30 (_type_) none 30) + (nav-state-method-31 (_type_) none 31) + (nav-state-method-32 (_type_) none 32) + (nav-state-method-33 (_type_) none 33) + (nav-state-method-34 (_type_) none 34) + (nav-state-method-35 (_type_) none 35) + (nav-state-method-36 (_type_ vector) none 36) + (nav-state-method-37 (_type_) none 37) + (set-current-poly! (_type_ nav-poly) none 38) (nav-state-method-39 () none 39) - (nav-state-method-40 () none 40) - (nav-state-method-41 () none 41) - (nav-state-method-42 () none 42) - (nav-state-method-43 () none 43) - (nav-state-method-44 () none 44) - (nav-state-method-45 () none 45) - (nav-state-method-46 () none 46) - (nav-state-method-47 () none 47) + (nav-state-method-40 (_type_) none 40) + (nav-state-method-41 (_type_ vector) symbol 41) + (nav-state-method-42 (_type_ vector) none 42) + (nav-state-method-43 (_type_ vector) none 43) + (set-velocity! (_type_ vector) none 44) + (set-heading! (_type_ vector) none 45) + (set-speed! (_type_ meters) none 46) + (nav-state-method-47 (_type_ nav-control) none 47) (nav-state-method-48 () none 48) - (nav-state-method-49 () none 49) - (nav-state-method-50 () none 50) + (nav-state-method-49 (_type_ clamp-travel-vector-to-mesh-return-info) none 49) + (nav-state-method-50 (_type_) none 50) (nav-state-method-51 () none 51) - (nav-state-method-52 () none 52) - (nav-state-method-53 () none 53) - (nav-state-method-54 () none 54) + (nav-state-method-52 (_type_) none 52) + (nav-state-method-53 (_type_) none 53) + (nav-state-method-54 (_type_) none 54) ) ) -;; definition for method 3 of type nav-state (defmethod inspect nav-state ((obj nav-state)) (when (not obj) (set! obj obj) @@ -260,7 +249,6 @@ obj ) -;; definition of type nav-control (deftype nav-control (structure) ((flags nav-control-flag :offset-assert 0) (callback-info nav-callback-info :offset-assert 4) @@ -281,8 +269,8 @@ (sphere-mask uint8 :offset-assert 61) (pad1 uint8 2 :offset-assert 62) (sphere-id-array uint8 16 :offset-assert 64) - (extra-nav-sphere sphere :inline :offset-assert 80) - (root-nav-sphere sphere :inline :offset-assert 96) + (extra-nav-sphere vector :inline :offset-assert 80) + (root-nav-sphere vector :inline :offset-assert 96) (state nav-state :inline :offset-assert 112) ) :method-count-assert 47 @@ -292,7 +280,7 @@ (debug-draw (_type_) none 9) (point-in-bounds? (_type_ vector) symbol 10) (nav-control-method-11 (_type_ vector) vector 11) - (nav-control-method-12 () none 12) + (nav-control-method-12 (_type_ vector vector nav-poly) nav-poly 12) (find-poly (_type_ vector) nav-poly 13) (nav-control-method-14 (_type_ nav-poly vector object vector) none 14) (nav-control-method-15 (_type_ vector) none 15) @@ -300,11 +288,11 @@ (is-in-mesh? (_type_ vector float) symbol 17) (nav-control-method-18 () none 18) (nav-control-method-19 () none 19) - (nav-control-method-20 (_type_ vector vector vector int symbol symbol) none 20) - (nav-control-method-21 () none 21) - (nav-control-method-22 () none 22) + (nav-control-method-20 (_type_ vector nav-poly vector float symbol symbol) none 20) + (nav-control-method-21 (_type_) none 21) + (nav-control-method-22 (_type_ vector nav-avoid-spheres-params) float 22) (nav-control-method-23 (_type_) none 23) - (nav-control-method-24 () none 24) + (nav-control-method-24 (_type_ vector int) none 24) (get-max-rotation-rate (_type_) float 25) (get-sphere-mask (_type_) none 26) (get-target-speed (_type_) meters 27) @@ -326,11 +314,10 @@ (display-marks? (_type_) symbol 43) (nav-control-method-44 () none 44) (nav-control-method-45 (_type_ vector vector vector) sphere 45) - (find-sphere (_type_) none 46) + (find-sphere (_type_ symbol) none 46) ) ) -;; definition for method 3 of type nav-control (defmethod inspect nav-control ((obj nav-control)) (when (not obj) (set! obj obj) @@ -397,5 +384,4 @@ obj ) -;; failed to figure out what this is: 0 diff --git a/test/decompiler/reference/jak2/engine/nav/nav-enemy-h_REF.gc b/test/decompiler/reference/jak2/engine/nav/nav-enemy-h_REF.gc index c1d9f19252..188577c19b 100644 --- a/test/decompiler/reference/jak2/engine/nav/nav-enemy-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/nav/nav-enemy-h_REF.gc @@ -1,7 +1,5 @@ -;;-*-Lisp-*- (in-package goal) -;; definition of type nav-enemy-info (deftype nav-enemy-info (enemy-info) ((callback-info nav-callback-info :offset-assert 384) (use-momentum symbol :offset-assert 388) @@ -32,12 +30,10 @@ :size-assert #x1ec :flag-assert #xb000001ec (:methods - (nav-enemy-info-method-10 () none 10) + (copy-nav-enemy-info! (_type_ nav-enemy-info) none 10) ) ) -;; definition for method 3 of type nav-enemy-info -;; INFO: Used lq/sq (defmethod inspect nav-enemy-info ((obj nav-enemy-info)) (when (not obj) (set! obj obj) @@ -153,66 +149,66 @@ obj ) -;; definition of type nav-enemy (deftype nav-enemy (enemy) - ((frustration-point vector :inline :offset-assert 544) - (move-dest vector :inline :offset-assert 560) - (frustration-time time-frame :offset-assert 576) - (blocked-start-time time-frame :offset-assert 584) - (restore-nav-radius-time time-frame :offset-assert 592) - (nav-radius-backup float :offset-assert 600) - (circle-radial-dist float :offset 244) + ((enemy-info-override nav-enemy-info :offset 216) + (frustration-point vector :inline :offset-assert 544) + (move-dest vector :inline :offset-assert 560) + (frustration-time time-frame :offset-assert 576) + (blocked-start-time time-frame :offset-assert 584) + (restore-nav-radius-time time-frame :offset-assert 592) + (nav-radius-backup float :offset-assert 600) + (circle-radial-dist float :offset 244) ) :heap-base #x1e0 :method-count-assert 178 :size-assert #x25c :flag-assert #xb201e0025c (:methods - (nav-enemy-method-137 () none 137) - (nav-enemy-method-138 () none 138) - (nav-enemy-method-139 () none 139) - (nav-enemy-method-140 () none 140) - (nav-enemy-method-141 () none 141) - (nav-enemy-method-142 () none 142) - (nav-enemy-method-143 () none 143) - (nav-enemy-method-144 () none 144) - (nav-enemy-method-145 () none 145) - (nav-enemy-method-146 () none 146) - (nav-enemy-method-147 () none 147) - (nav-enemy-method-148 () none 148) - (nav-enemy-method-149 () none 149) - (nav-enemy-method-150 () none 150) - (nav-enemy-method-151 () none 151) - (nav-enemy-method-152 () none 152) - (nav-enemy-method-153 () none 153) - (nav-enemy-method-154 () none 154) - (nav-enemy-method-155 () none 155) - (nav-enemy-method-156 () none 156) - (nav-enemy-method-157 () none 157) - (nav-enemy-method-158 () none 158) - (nav-enemy-method-159 () none 159) - (nav-enemy-method-160 () none 160) - (nav-enemy-method-161 () none 161) - (nav-enemy-method-162 () none 162) - (nav-enemy-method-163 () none 163) - (nav-enemy-method-164 () none 164) - (nav-enemy-method-165 () none 165) - (nav-enemy-method-166 () none 166) - (nav-enemy-method-167 () none 167) - (nav-enemy-method-168 () none 168) - (nav-enemy-method-169 () none 169) - (nav-enemy-method-170 () none 170) - (nav-enemy-method-171 () none 171) - (nav-enemy-method-172 () none 172) - (nav-enemy-method-173 () none 173) - (nav-enemy-method-174 () none 174) - (nav-enemy-method-175 () none 175) - (nav-enemy-method-176 () none 176) - (nav-enemy-method-177 () none 177) + (enemy-method-113 (_type_ nav-enemy-info) none :replace 113) + (taunt () _type_ :state 137) + (pacing () _type_ :state 138) + (circling () _type_ :state 139) + (stop-chase () _type_ :state 140) + (debug-control () _type_ :state 141) + (nav-enemy-method-142 (_type_ nav-control) none 142) + (nav-enemy-method-143 (_type_ nav-control) none 143) + (nav-enemy-method-144 (_type_) time-frame :behavior nav-enemy 144) + (nav-enemy-method-145 (_type_ nav-control) none 145) + (nav-enemy-method-146 (_type_ nav-control) none 146) + (nav-enemy-method-147 (_type_ nav-control) none 147) + (nav-enemy-method-148 (_type_ nav-control) none 148) + (nav-enemy-method-149 (_type_ nav-control) none 149) + (nav-enemy-method-150 (_type_ nav-control) none 150) + (nav-enemy-method-151 (_type_ nav-control) none 151) + (nav-enemy-method-152 (_type_ nav-control) none 152) + (nav-enemy-method-153 (_type_ nav-control) none 153) + (nav-enemy-method-154 (_type_ nav-control) none 154) + (nav-enemy-method-155 (_type_) none 155) + (nav-enemy-method-156 (_type_) none 156) + (nav-enemy-method-157 (_type_ vector) nav-poly 157) + (nav-enemy-method-158 (_type_ vector) object 158) + (nav-enemy-method-159 (_type_ vector) symbol 159) + (nav-enemy-method-160 (_type_) none 160) + (nav-enemy-method-161 (_type_) none 161) + (nav-enemy-method-162 (_type_) none 162) + (nav-enemy-method-163 (_type_) none 163) + (nav-enemy-method-164 (_type_) none 164) + (nav-enemy-method-165 (_type_) none 165) + (nav-enemy-method-166 (_type_) none 166) + (nav-enemy-method-167 (_type_) none 167) + (nav-enemy-method-168 (_type_) float 168) + (nav-enemy-method-169 (_type_ float symbol) float 169) + (nav-enemy-method-170 (_type_) none 170) + (nav-enemy-method-171 (_type_) none 171) + (nav-enemy-method-172 (_type_) none 172) + (nav-enemy-method-173 (_type_) none 173) + (nav-enemy-method-174 (_type_) symbol 174) + (nav-enemy-method-175 (_type_) symbol 175) + (nav-enemy-method-176 (_type_) none :behavior nav-enemy 176) + (nav-enemy-method-177 (_type_) none 177) ) ) -;; definition for method 3 of type nav-enemy (defmethod inspect nav-enemy ((obj nav-enemy)) (when (not obj) (set! obj obj) @@ -232,7 +228,6 @@ obj ) -;; definition of type nav-enemy-debug-control-info (deftype nav-enemy-debug-control-info (basic) ((enable basic :offset-assert 4) (steering float :offset-assert 8) @@ -243,7 +238,6 @@ :flag-assert #x900000010 ) -;; definition for method 3 of type nav-enemy-debug-control-info (defmethod inspect nav-enemy-debug-control-info ((obj nav-enemy-debug-control-info)) (when (not obj) (set! obj obj) @@ -257,9 +251,4 @@ obj ) -;; failed to figure out what this is: 0 - - - - diff --git a/test/decompiler/reference/jak2/engine/nav/nav-mesh-h_REF.gc b/test/decompiler/reference/jak2/engine/nav/nav-mesh-h_REF.gc index b02fd9ead4..374e9f4216 100644 --- a/test/decompiler/reference/jak2/engine/nav/nav-mesh-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/nav/nav-mesh-h_REF.gc @@ -1,7 +1,5 @@ -;;-*-Lisp-*- (in-package goal) -;; definition of type nav-mesh-work-debug (deftype nav-mesh-work-debug (structure) ((debug-vec1 vector :inline :offset-assert 0) (debug-vec2 vector :inline :offset-assert 16) @@ -22,7 +20,6 @@ :flag-assert #x9000001c0 ) -;; definition for method 3 of type nav-mesh-work-debug (defmethod inspect nav-mesh-work-debug ((obj nav-mesh-work-debug)) (when (not obj) (set! obj obj) @@ -46,7 +43,6 @@ obj ) -;; definition of type nav-mesh-work (deftype nav-mesh-work (structure) ((vert0-table int8 4 :offset-assert 0) (vert1-table int8 4 :offset-assert 4) @@ -72,7 +68,6 @@ :flag-assert #x90000013c ) -;; definition for method 3 of type nav-mesh-work (defmethod inspect nav-mesh-work ((obj nav-mesh-work)) (when (not obj) (set! obj obj) @@ -101,22 +96,20 @@ obj ) -;; definition of type nav-mesh-link (deftype nav-mesh-link (structure) - ((id uint32 :offset-assert 0) - (dest-mesh-id uint32 :offset-assert 4) - (src-link-poly-id uint8 :offset-assert 8) - (src-switch-poly-id uint8 :offset-assert 9) - (dest-link-poly-id uint8 :offset-assert 10) - (dest-switch-poly-id uint8 :offset-assert 11) - (dest-mesh basic :offset-assert 12) + ((id uint32 :offset-assert 0) + (dest-mesh-id uint32 :offset-assert 4) + (src-link-poly-id uint8 :offset-assert 8) + (src-switch-poly-id uint8 :offset-assert 9) + (dest-link-poly-id uint8 :offset-assert 10) + (dest-switch-poly-id uint8 :offset-assert 11) + (dest-mesh nav-mesh :offset-assert 12) ) :method-count-assert 9 :size-assert #x10 :flag-assert #x900000010 ) -;; definition for method 3 of type nav-mesh-link (defmethod inspect nav-mesh-link ((obj nav-mesh-link)) (when (not obj) (set! obj obj) @@ -134,7 +127,6 @@ obj ) -;; definition of type nav-poly (deftype nav-poly (structure) ((data uint8 64 :offset-assert 0) (vertex vector 4 :inline :offset 0) @@ -159,16 +151,15 @@ :flag-assert #x900000040 ) -;; definition for method 3 of type nav-poly (defmethod inspect nav-poly ((obj nav-poly)) (when (not obj) (set! obj obj) (goto cfg-4) ) (format #t "[~8x] ~A~%" obj 'nav-poly) - (format #t "~1Tdata[64] @ #x~X~%" (-> obj vertex0)) - (format #t "~1Tvertex[4] @ #x~X~%" (-> obj vertex0)) - (format #t "~1Tvertex0: ~`vector`P~%" (-> obj vertex0)) + (format #t "~1Tdata[64] @ #x~X~%" (-> obj vertex)) + (format #t "~1Tvertex[4] @ #x~X~%" (-> obj vertex)) + (format #t "~1Tvertex0: ~`vector`P~%" (-> obj vertex)) (format #t "~1Tvertex1: ~`vector`P~%" (-> obj vertex1)) (format #t "~1Tvertex2: ~`vector`P~%" (-> obj vertex2)) (format #t "~1Tvertex3: ~`vector`P~%" (-> obj vertex3)) @@ -187,7 +178,6 @@ obj ) -;; definition of type nav-vertex (deftype nav-vertex (vector) "A typedef for `vector`, not used because our code looks nicer if everything is `vector`s anyway and declared out of order (cannot use forward declared structures in inline arrays)" @@ -197,8 +187,6 @@ :flag-assert #x900000010 ) -;; definition for method 3 of type nav-vertex -;; INFO: Used lq/sq (defmethod inspect nav-vertex ((obj nav-vertex)) (when (not obj) (set! obj obj) @@ -215,7 +203,6 @@ obj ) -;; definition of type nav-sphere (deftype nav-sphere (structure) ((trans sphere :inline :offset-assert 0) ) @@ -224,7 +211,6 @@ :flag-assert #x900000010 ) -;; definition for method 3 of type nav-sphere (defmethod inspect nav-sphere ((obj nav-sphere)) (when (not obj) (set! obj obj) @@ -236,7 +222,6 @@ obj ) -;; definition of type nav-ray (deftype nav-ray (structure) ((current-pos vector :inline :offset-assert 0) (dir vector :inline :offset-assert 16) @@ -256,7 +241,6 @@ :flag-assert #x900000050 ) -;; definition for method 3 of type nav-ray (defmethod inspect nav-ray ((obj nav-ray)) (when (not obj) (set! obj obj) @@ -279,7 +263,6 @@ obj ) -;; definition of type nav-route-portal (deftype nav-route-portal (structure) ((vertex nav-vertex 2 :inline :offset-assert 0) (next-poly nav-poly :offset-assert 32) @@ -290,7 +273,6 @@ :flag-assert #x900000025 ) -;; definition for method 3 of type nav-route-portal (defmethod inspect nav-route-portal ((obj nav-route-portal)) (when (not obj) (set! obj obj) @@ -304,7 +286,6 @@ obj ) -;; definition of type nav-find-poly-parms (deftype nav-find-poly-parms (structure) ((point vector :inline :offset-assert 0) (y-threshold float :offset-assert 16) @@ -318,7 +299,6 @@ :flag-assert #x900000024 ) -;; definition for method 3 of type nav-find-poly-parms (defmethod inspect nav-find-poly-parms ((obj nav-find-poly-parms)) (when (not obj) (set! obj obj) @@ -335,7 +315,6 @@ obj ) -;; definition of type clamp-travel-vector-to-mesh-return-info (deftype clamp-travel-vector-to-mesh-return-info (structure) ((found-boundary basic :offset-assert 0) (intersection vector :inline :offset-assert 16) @@ -356,7 +335,6 @@ :flag-assert #x9000000a0 ) -;; definition for method 3 of type clamp-travel-vector-to-mesh-return-info (defmethod inspect clamp-travel-vector-to-mesh-return-info ((obj clamp-travel-vector-to-mesh-return-info)) (when (not obj) (set! obj obj) @@ -380,32 +358,31 @@ obj ) -;; definition of type nav-mesh (deftype nav-mesh (basic) - ((work nav-mesh-work :offset-assert 4) - (poly-array (inline-array nav-poly) :offset-assert 8) - (static-sphere-count uint8 :offset-assert 12) - (poly-count uint8 :offset-assert 13) - (nav-control-count uint8 :offset-assert 14) - (max-nav-control-count uint8 :offset-assert 15) - (route uint32 :offset-assert 16) - (poly-hash grid-hash :offset-assert 20) - (nav-control-array (inline-array nav-control) :offset-assert 24) - (sphere-hash sphere-hash :offset-assert 28) - (static-sphere (inline-array sphere) :offset-assert 32) - (user-list engine :offset-assert 36) - (next-nav-mesh surface :offset-assert 40) - (prev-nav-mesh surface :offset-assert 44) - (bounds vector :inline :offset-assert 48) - (origin vector :inline :offset 48) - (entity entity :offset-assert 64) - (link-array (array nav-mesh-link) :offset-assert 68) - (link-count uint8 :offset-assert 72) - (flags nav-mesh-flag :offset-assert 73) - (pad1 uint8 2 :offset-assert 74) - (nearest-y-threshold meters :offset-assert 76) - (water-max-height meters :offset-assert 80) - (pad2 uint32 7 :offset-assert 84) + ((work nav-mesh-work :offset-assert 4) + (poly-array (inline-array nav-poly) :offset-assert 8) + (static-sphere-count uint8 :offset-assert 12) + (poly-count uint8 :offset-assert 13) + (nav-control-count uint8 :offset-assert 14) + (max-nav-control-count uint8 :offset-assert 15) + (route (pointer nav-poly) :offset-assert 16) + (poly-hash grid-hash :offset-assert 20) + (nav-control-array (inline-array nav-control) :offset-assert 24) + (sphere-hash sphere-hash :offset-assert 28) + (static-sphere (inline-array sphere) :offset-assert 32) + (user-list engine :offset-assert 36) + (next-nav-mesh surface :offset-assert 40) + (prev-nav-mesh surface :offset-assert 44) + (bounds vector :inline :offset-assert 48) + (origin vector :inline :offset 48) + (entity entity :offset-assert 64) + (link-array (inline-array nav-mesh-link) :offset-assert 68) + (link-count uint8 :offset-assert 72) + (flags nav-mesh-flag :offset-assert 73) + (pad1 uint8 2 :offset-assert 74) + (nearest-y-threshold meters :offset-assert 76) + (water-max-height meters :offset-assert 80) + (pad2 uint32 7 :offset-assert 84) ) :method-count-assert 47 :size-assert #x70 @@ -415,23 +392,23 @@ (nav-mesh-method-10 (_type_ vector vector nav-poly) nav-poly 10) (nav-mesh-method-11 (_type_ nav-poly vector) vector 11) (nav-mesh-method-12 (_type_ nav-poly vector) none 12) - (nav-mesh-method-13 (_type_ symbol symbol) none 13) - (get-route-portal (_type_ object object nav-find-poly-parms) none 14) + (nav-mesh-method-13 (_type_ nav-poly nav-poly) nav-poly 13) + (get-route-portal (_type_ nav-poly nav-poly nav-route-portal) (inline-array nav-vertex) 14) (initialize-mesh! (_type_) none 15) (move-along-nav-ray! (_type_ nav-ray) none 16) (try-move-along-ray (_type_ nav-poly vector vector float) meters 17) - (nav-mesh-method-18 () none 18) - (nav-mesh-method-19 () none 19) - (nav-mesh-method-20 () none 20) - (nav-mesh-method-21 () none 21) + (nav-mesh-method-18 (_type_ vector nav-poly vector float symbol clamp-travel-vector-to-mesh-return-info) none 18) + (nav-mesh-method-19 (_type_) none 19) + (nav-mesh-method-20 (_type_ clamp-travel-vector-to-mesh-return-info) none 20) + (find-adjacent-bounds-one (_type_ vector nav-poly int int) none 21) (nav-mesh-method-22 (_type_ vector vector) none 22) (nav-mesh-method-23 (_type_ entity-nav-mesh) none 23) (nav-mesh-method-24 (_type_) none 24) (nav-mesh-method-25 (_type_) none 25) (nav-mesh-method-26 (_type_) none 26) - (new-nav-control (_type_ vector int) nav-control 27) + (new-nav-control (_type_ process-drawable int) nav-control 27) (nav-mesh-method-28 (_type_ object) none 28) - (nav-mesh-method-29 (_type_ object symbol) nav-control 29) + (nav-mesh-method-29 (_type_ process-drawable symbol) nav-control 29) (nav-mesh-method-30 (_type_ process-drawable) none 30) (change-to (_type_ process-drawable) none 31) (nav-mesh-method-32 (_type_ uint32) none 32) @@ -444,7 +421,7 @@ (closest-point-on-boundary (_type_ nav-poly vector vector) none 39) (nav-mesh-method-40 (_type_ nav-poly vector object vector) none 40) (project-point-into-poly-2d (_type_ nav-poly vector vector) none 41) - (nav-mesh-method-42 (_type_ nav-find-poly-parms) symbol 42) + (nav-mesh-method-42 (_type_ nav-find-poly-parms) nav-poly 42) (nav-mesh-method-43 (_type_ nav-find-poly-parms) none 43) (nav-mesh-method-44 (_type_ vector float float) symbol 44) (nav-mesh-method-45 (_type_ entity-perm) none 45) @@ -452,7 +429,6 @@ ) ) -;; definition for method 3 of type nav-mesh (defmethod inspect nav-mesh ((obj nav-mesh)) (when (not obj) (set! obj obj) @@ -493,7 +469,6 @@ obj ) -;; definition for function vector-normalize-unity! (defun vector-normalize-unity! ((arg0 vector)) (rlet ((acc :class vf) (Q :class vf) @@ -526,8 +501,6 @@ ) ) -;; definition for function vector-normalize-unity-copy! -;; INFO: Used lq/sq (defun vector-normalize-unity-copy! ((arg0 vector) (arg1 vector)) (rlet ((acc :class vf) (Q :class vf) @@ -561,13 +534,10 @@ ) ) -;; definition (debug) for function debug-validate-current-poly (defun-debug debug-validate-current-poly () #f ) -;; definition for function init-ray -;; WARN: Return type mismatch int vs none. (defun init-ray ((arg0 nav-ray)) (rlet ((acc :class vf) (Q :class vf) @@ -611,7 +581,6 @@ ) ) -;; definition for function point-poly-intersection? (defun point-poly-intersection? ((arg0 nav-mesh) (arg1 vector) (arg2 int) (arg3 (inline-array vector))) (let ((v1-1 (-> arg0 work vert0-table)) (a0-2 (-> arg0 work vert1-table)) @@ -634,12 +603,11 @@ #t ) -;; definition for method 37 of type nav-mesh (defmethod point-in-poly? nav-mesh ((obj nav-mesh) (arg0 nav-poly) (arg1 vector)) (let* ((a3-0 obj) (v1-0 arg1) (a0-1 (-> arg0 vertex-count)) - (a1-1 (the-as (inline-array vector) (-> arg0 vertex0))) + (a1-1 (-> arg0 vertex)) (a2-2 (-> a3-0 work vert0-table)) (a3-2 (-> a3-0 work vert1-table)) ) @@ -661,13 +629,6 @@ #t ) -;; definition for method 39 of type nav-mesh -;; INFO: Used lq/sq -;; WARN: Stack slot offset 56 signed mismatch -;; WARN: Stack slot offset 56 signed mismatch -;; WARN: Stack slot offset 56 signed mismatch -;; WARN: Stack slot offset 56 signed mismatch -;; WARN: Return type mismatch vector vs none. (defmethod closest-point-on-boundary nav-mesh ((obj nav-mesh) (arg0 nav-poly) (arg1 vector) (arg2 vector)) (local-vars (sv-48 vector) (sv-52 vector) (sv-56 float)) (set! sv-48 (new 'stack-no-clear 'vector)) @@ -690,13 +651,6 @@ (none) ) -;; definition for method 41 of type nav-mesh -;; INFO: Used lq/sq -;; WARN: Stack slot offset 56 signed mismatch -;; WARN: Stack slot offset 56 signed mismatch -;; WARN: Stack slot offset 56 signed mismatch -;; WARN: Stack slot offset 56 signed mismatch -;; WARN: Return type mismatch vector vs none. (defmethod project-point-into-poly-2d nav-mesh ((obj nav-mesh) (arg0 nav-poly) (arg1 vector) (arg2 vector)) (local-vars (sv-48 vector) (sv-52 vector) (sv-56 float)) (cond @@ -728,57 +682,6 @@ (none) ) -;; definition for method 16 of type nav-mesh -;; INFO: Used lq/sq -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 60 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 64 signed mismatch -;; WARN: Stack slot offset 60 signed mismatch -;; WARN: Stack slot offset 64 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 60 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 64 signed mismatch -;; WARN: Stack slot offset 60 signed mismatch -;; WARN: Stack slot offset 64 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 60 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 64 signed mismatch -;; WARN: Stack slot offset 60 signed mismatch -;; WARN: Stack slot offset 64 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 60 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Stack slot offset 64 signed mismatch -;; WARN: Stack slot offset 60 signed mismatch -;; WARN: Stack slot offset 64 signed mismatch -;; WARN: Stack slot offset 44 signed mismatch -;; WARN: Stack slot offset 48 signed mismatch -;; WARN: Return type mismatch int vs none. (defmethod move-along-nav-ray! nav-mesh ((obj nav-mesh) (ray nav-ray)) (local-vars (next-poly-idx int) @@ -842,7 +745,7 @@ (+! (-> ray current-pos z) delta-z) (set! sv-68 (-> current-poly adj-poly next-poly-idx)) (if (!= sv-68 255) - (set! (-> ray next-poly) (the-as nav-poly (-> obj poly-array sv-68 vertex0))) + (set! (-> ray next-poly) (-> obj poly-array sv-68)) ) (cond ((and (-> ray next-poly) (zero? (logand (-> ray next-poly pat) (-> ray ignore)))) @@ -863,8 +766,6 @@ (none) ) -;; definition (debug) for function nav-sphere-from-cam -;; WARN: Return type mismatch int vs none. (defun-debug nav-sphere-from-cam () (let ((v1-0 (camera-pos))) (format #t "SPHEREM(~4,,1M, ~4,,1M, ~4,,1M, 1.0)~%" (-> v1-0 x) (-> v1-0 y) (-> v1-0 z)) diff --git a/test/decompiler/reference/jak2/engine/physics/trajectory_REF.gc b/test/decompiler/reference/jak2/engine/physics/trajectory_REF.gc index e2bd9309d6..cc0121ef7b 100644 --- a/test/decompiler/reference/jak2/engine/physics/trajectory_REF.gc +++ b/test/decompiler/reference/jak2/engine/physics/trajectory_REF.gc @@ -1,29 +1,21 @@ -;;-*-Lisp-*- (in-package goal) -;; definition for method 9 of type trajectory (defmethod compute-trans-at-time trajectory ((obj trajectory) (arg0 float) (arg1 vector)) (vector+float*! arg1 (-> obj initial-position) (-> obj initial-velocity) arg0) (+! (-> arg1 y) (* 0.5 arg0 arg0 (-> obj gravity))) arg1 ) -;; definition for method 10 of type trajectory -;; INFO: Used lq/sq (defmethod compute-transv-at-time trajectory ((obj trajectory) (arg0 float) (arg1 vector)) (set! (-> arg1 quad) (-> obj initial-velocity quad)) (+! (-> arg1 y) (* arg0 (-> obj gravity))) arg1 ) -;; definition for method 11 of type trajectory (defmethod compute-time-until-apex trajectory ((obj trajectory)) (/ (- (-> obj initial-velocity y)) (-> obj gravity)) ) -;; definition for method 12 of type trajectory -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defmethod setup-from-to-duration! trajectory ((obj trajectory) (arg0 vector) (arg1 vector) (arg2 float) (arg3 float)) (set! (-> obj initial-position quad) (-> arg0 quad)) (set! (-> obj gravity) arg3) @@ -37,8 +29,6 @@ (none) ) -;; definition for method 13 of type trajectory -;; WARN: Return type mismatch int vs none. (defmethod setup-from-to-xz-vel! trajectory ((obj trajectory) (arg0 vector) (arg1 vector) (arg2 float) (arg3 float)) (let ((f0-1 (/ (vector-vector-xz-distance arg1 arg0) arg2))) (setup-from-to-duration! obj arg0 arg1 f0-1 arg3) @@ -47,8 +37,6 @@ (none) ) -;; definition for method 14 of type trajectory -;; WARN: Return type mismatch int vs none. (defmethod setup-from-to-y-vel! trajectory ((obj trajectory) (arg0 vector) (arg1 vector) (arg2 float) (arg3 float)) (let* ((f0-0 arg2) (f1-3 (- (* f0-0 f0-0) (* 2.0 (- (-> arg0 y) (-> arg1 y)) arg3))) @@ -65,8 +53,6 @@ (none) ) -;; definition for method 15 of type trajectory -;; WARN: Return type mismatch int vs none. (defmethod setup-from-to-height! trajectory ((obj trajectory) (arg0 vector) (arg1 vector) (arg2 float) (arg3 float)) (let* ((f0-1 (+ arg2 (fmax (-> arg0 y) (-> arg1 y)))) (f1-4 (* 2.0 (- (-> arg0 y) f0-1) arg3)) @@ -81,9 +67,6 @@ (none) ) -;; definition for method 16 of type trajectory -;; WARN: Return type mismatch int vs none. -;; WARN: Function (method 16 trajectory) has a return type of none, but the expression builder found a return statement. (defmethod setup-from-to-duration-and-height! trajectory ((obj trajectory) (arg0 vector) (arg1 vector) (arg2 float) (arg3 float)) (let ((f0-1 (- (-> arg1 y) (-> arg0 y)))) (cond @@ -116,9 +99,6 @@ (none) ) -;; definition for method 17 of type trajectory -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defmethod debug-draw trajectory ((obj trajectory)) (let ((s5-0 (new 'stack-no-clear 'vector)) (s4-0 (new 'stack-no-clear 'vector)) @@ -145,8 +125,6 @@ (none) ) -;; definition for method 9 of type impact-control -;; INFO: Used lq/sq (defmethod initialize impact-control ((obj impact-control) (arg0 process-drawable) (arg1 int) (arg2 float) (arg3 collide-spec)) (set! (-> obj start-time) (-> self clock frame-counter)) (set! (-> obj process) (the-as (pointer process-drawable) (process->ppointer arg0))) @@ -158,9 +136,6 @@ obj ) -;; definition for method 10 of type impact-control -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defmethod update-from-cspace impact-control ((obj impact-control)) (when (>= (-> obj joint) 0) (set! (-> obj trans 1 quad) (-> obj trans 0 quad)) @@ -171,8 +146,6 @@ (none) ) -;; definition for method 11 of type impact-control -;; INFO: Used lq/sq (defmethod impact-control-method-11 impact-control ((obj impact-control) (arg0 collide-query) (arg1 process) (arg2 pat-surface)) (set! (-> arg0 start-pos quad) (-> obj trans 1 quad)) (set! (-> arg0 move-dist quad) (-> obj dir quad)) @@ -220,16 +193,12 @@ ) ) -;; definition for method 9 of type point-tracker -;; INFO: Used lq/sq (defmethod initialize point-tracker ((obj point-tracker) (arg0 vector) (arg1 vector)) (set! (-> obj trans 0 quad) (-> arg0 quad)) (set! (-> obj trans 1 quad) (-> arg1 quad)) obj ) -;; definition for method 10 of type point-tracker -;; INFO: Used lq/sq (defmethod point-tracker-method-10 point-tracker ((obj point-tracker) (arg0 vector) (arg1 vector) (arg2 vector) (arg3 float)) (cond ((>= 0.0 arg3) @@ -247,7 +216,6 @@ arg0 ) -;; definition for method 11 of type point-tracker (defmethod point-tracker-method-11 point-tracker ((obj point-tracker) (arg0 vector) (arg1 vector) (arg2 vector) (arg3 float)) (with-pp (let ((v1-1 (point-tracker-method-10 obj (new 'stack-no-clear 'vector) arg1 arg2 arg3))) @@ -258,7 +226,6 @@ ) ) -;; definition for method 13 of type combo-tracker (defmethod combo-tracker-method-13 combo-tracker ((obj combo-tracker) (arg0 handle) (arg1 vector) (arg2 float) (arg3 vector) (arg4 float)) (cond ((send-event (handle->process arg0) 'combo) @@ -310,7 +277,6 @@ ) ) -;; definition for method 12 of type combo-tracker (defmethod combo-tracker-method-12 combo-tracker ((obj combo-tracker) (arg0 vector) (arg1 vector) (arg2 process) (arg3 time-frame)) (initialize obj arg0 arg1) (set! (-> obj target) (process->handle arg2)) @@ -318,8 +284,6 @@ obj ) -;; definition for method 11 of type combo-tracker -;; INFO: Used lq/sq (defmethod point-tracker-method-11 combo-tracker ((obj combo-tracker) (arg0 vector) (arg1 vector) (arg2 vector) (arg3 float)) (local-vars (at-0 int)) (with-pp @@ -344,7 +308,15 @@ (when s4-1 (let ((a2-3 ((method-of-type nav-control nav-control-method-11) (the-as nav-control s4-1) arg1))) (if a2-3 - ((method-of-type nav-control nav-control-method-20) (the-as nav-control s4-1) arg1 a2-3 arg0 #x45000000 #f #f) + ((method-of-type nav-control nav-control-method-20) + (the-as nav-control s4-1) + arg1 + (the-as nav-poly a2-3) + arg0 + 2048.0 + #f + #f + ) (set! (-> arg0 quad) (the-as uint128 0)) ) ) @@ -366,7 +338,6 @@ ) ) -;; definition for function traj2d-calc-initial-speed-using-tilt (defun traj2d-calc-initial-speed-using-tilt ((arg0 traj2d-params)) (let ((f0-4 (* (- (* (-> arg0 x) (tan (-> arg0 initial-tilt))) (-> arg0 y)) (/ 2.0 (-> arg0 gravity))))) (cond @@ -384,7 +355,6 @@ ) ) -;; definition for function traj3d-calc-initial-velocity-using-tilt (defun traj3d-calc-initial-velocity-using-tilt ((arg0 traj3d-params)) (vector-! (-> arg0 diff) (-> arg0 dest) (-> arg0 src)) (let ((s5-0 (new 'stack-no-clear 'traj2d-params))) @@ -420,9 +390,6 @@ ) ) -;; definition for method 9 of type cubic-curve -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defmethod cubic-curve-method-9 cubic-curve ((obj cubic-curve) (arg0 vector) (arg1 vector) (arg2 vector) (arg3 vector)) (rlet ((acc :class vf) (vf0 :class vf) @@ -467,7 +434,6 @@ ) ) -;; definition for method 10 of type cubic-curve (defmethod cubic-curve-method-10 cubic-curve ((obj cubic-curve) (arg0 vector) (arg1 float)) (let ((v1-0 (new 'stack-no-clear 'trajectory))) (let ((f0-1 (* arg1 arg1))) @@ -479,7 +445,6 @@ arg0 ) -;; definition for method 11 of type cubic-curve (defmethod cubic-curve-method-11 cubic-curve ((obj cubic-curve) (arg0 vector) (arg1 float)) (let ((v1-0 (new 'stack-no-clear 'trajectory))) (set-vector! (-> v1-0 initial-position) 0.0 1.0 (* 2.0 arg1) (* 3.0 arg1 arg1)) @@ -489,7 +454,6 @@ arg0 ) -;; definition for method 12 of type cubic-curve (defmethod cubic-curve-method-12 cubic-curve ((obj cubic-curve) (arg0 vector) (arg1 float)) (let ((v1-0 (new 'stack-no-clear 'trajectory))) (set-vector! (-> v1-0 initial-position) 0.0 0.0 2.0 (* 6.0 arg1)) @@ -499,9 +463,6 @@ arg0 ) -;; definition for method 13 of type cubic-curve -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defmethod debug-draw-curve cubic-curve ((obj cubic-curve)) (let ((s5-0 (new 'stack-no-clear 'trajectory)) (s4-0 10) diff --git a/test/decompiler/reference/jak2/engine/spatial-hash/spatial-hash-h_REF.gc b/test/decompiler/reference/jak2/engine/spatial-hash/spatial-hash-h_REF.gc index 6ad801527b..71ec79373b 100644 --- a/test/decompiler/reference/jak2/engine/spatial-hash/spatial-hash-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/spatial-hash/spatial-hash-h_REF.gc @@ -1,7 +1,5 @@ -;;-*-Lisp-*- (in-package goal) -;; definition of type grid-hash-word (deftype grid-hash-word (uint8) () :method-count-assert 9 @@ -9,7 +7,6 @@ :flag-assert #x900000001 ) -;; definition of type grid-hash-box (deftype grid-hash-box (structure) ((min uint8 3 :offset-assert 0) (max uint8 3 :offset-assert 3) @@ -20,7 +17,6 @@ :flag-assert #x900000006 ) -;; definition for method 3 of type grid-hash-box (defmethod inspect grid-hash-box ((obj grid-hash-box)) (when (not obj) (set! obj obj) @@ -33,7 +29,6 @@ obj ) -;; definition of type grid-hash (deftype grid-hash (basic) ((work basic :offset-assert 4) (search-box grid-hash-box :inline :offset-assert 8) @@ -60,8 +55,8 @@ (grid-hash-method-9 () none 9) (grid-hash-method-10 () none 10) (grid-hash-method-11 () none 11) - (grid-hash-method-12 () none 12) - (grid-hash-method-13 () none 13) + (grid-hash-method-12 (_type_ vector) grid-hash-box 12) + (grid-hash-method-13 (_type_ vector float) grid-hash-box 13) (grid-hash-method-14 () none 14) (grid-hash-method-15 () none 15) (grid-hash-method-16 () none 16) @@ -76,7 +71,6 @@ ) ) -;; definition for method 3 of type grid-hash (defmethod inspect grid-hash ((obj grid-hash)) (when (not obj) (set! obj obj) @@ -104,7 +98,6 @@ obj ) -;; definition of type find-nav-sphere-ids-params (deftype find-nav-sphere-ids-params (structure) ((bsphere sphere :inline :offset-assert 0) (y-threshold float :offset-assert 16) @@ -118,7 +111,6 @@ :flag-assert #x900000020 ) -;; definition for method 3 of type find-nav-sphere-ids-params (defmethod inspect find-nav-sphere-ids-params ((obj find-nav-sphere-ids-params)) (when (not obj) (set! obj obj) @@ -135,7 +127,6 @@ obj ) -;; definition of type sphere-hash (deftype sphere-hash (grid-hash) ((sphere-array (inline-array sphere) :offset-assert 88) (max-object-count int16 :offset-assert 92) @@ -159,7 +150,6 @@ ) ) -;; definition for method 3 of type sphere-hash (defmethod inspect sphere-hash ((obj sphere-hash)) (when (not obj) (set! obj obj) @@ -192,7 +182,6 @@ obj ) -;; definition of type hash-object-info (deftype hash-object-info (structure) ((object basic :offset-assert 0) ) @@ -201,7 +190,6 @@ :flag-assert #x900000004 ) -;; definition for method 3 of type hash-object-info (defmethod inspect hash-object-info ((obj hash-object-info)) (when (not obj) (set! obj obj) @@ -213,7 +201,6 @@ obj ) -;; definition of type spatial-hash (deftype spatial-hash (sphere-hash) ((object-array uint32 :offset-assert 104) (mem-object-array uint32 :offset-assert 108) @@ -233,7 +220,6 @@ ) ) -;; definition for method 3 of type spatial-hash (defmethod inspect spatial-hash ((obj spatial-hash)) (when (not obj) (set! obj obj) @@ -269,5 +255,4 @@ obj ) -;; failed to figure out what this is: 0 diff --git a/test/offline/offline_test_main.cpp b/test/offline/offline_test_main.cpp index 5b8aa5a7ac..cb17a632c5 100644 --- a/test/offline/offline_test_main.cpp +++ b/test/offline/offline_test_main.cpp @@ -471,6 +471,7 @@ int main(int argc, char* argv[]) { int max_files = -1; std::string single_file = ""; uint32_t num_threads = 1; + bool fail_on_cmp = false; CLI::App app{"OpenGOAL - Offline Reference Test Runner"}; app.add_option("--iso_data_path", iso_data_path, "The path to the folder with the ISO data files") @@ -487,6 +488,8 @@ int main(int argc, char* argv[]) { app.add_option("-f,--file", single_file, "Limit the offline test routine to a single file to decompile/compile -- useful " "when you are just iterating on a single file"); + app.add_flag("--fail-on-cmp", fail_on_cmp, + "Fail the tests immediately if the comparison fails"); app.validate_positionals(); CLI11_PARSE(app, argc, argv); @@ -550,8 +553,13 @@ int main(int argc, char* argv[]) { result.compare = compare(decompiler, work_group, dump_current_output); if (!result.compare.total_pass) { result.exit_code = 1; + if (fail_on_cmp) { + return result; + } } + // TODO - if anything has failed, skip compiling + Timer compile_timer; result.compile = compile(decompiler, work_group, config.value(), game_name); result.time_spent_compiling = compile_timer.getSeconds();