From 760e11a087762710a49a666def9113e2eb730b86 Mon Sep 17 00:00:00 2001 From: Tyler Wilding Date: Sat, 29 Oct 2022 16:42:57 -0400 Subject: [PATCH] d/jak2: finish `scene-actor`, `scene-looper`, `race-part`, `rigid-body-plat`, `debug-part`, `voicebox` (#1987) Co-authored-by: water --- decompiler/config/jak2/all-types.gc | 233 ++- .../jak2/anonymous_function_types.jsonc | 3 +- decompiler/config/jak2/label_types.jsonc | 6 + decompiler/config/jak2/stack_structures.jsonc | 3 +- decompiler/config/jak2/type_casts.jsonc | 31 +- decompiler/config/jak2/var_names.jsonc | 25 + goal_src/jak2/engine/camera/camera-h.gc | 1 + .../jak2/engine/collide/collide-shape-h.gc | 2 +- .../engine/common_objs/rigid-body-plat.gc | 448 ++++++ goal_src/jak2/engine/common_objs/voicebox.gc | 575 ++++++++ goal_src/jak2/engine/common_objs/water.gc | 2 +- goal_src/jak2/engine/debug/debug-part.gc | 4 +- goal_src/jak2/engine/entity/entity-h.gc | 3 + goal_src/jak2/engine/game/task/task-arrow.gc | 5 + goal_src/jak2/engine/gfx/mood/weather-part.gc | 53 +- goal_src/jak2/engine/gfx/ocean/ocean-h.gc | 6 +- .../sprite/particles/sparticle-launcher.gc | 4 +- goal_src/jak2/engine/physics/rigid-body-h.gc | 2 +- goal_src/jak2/engine/physics/rigid-body.gc | 14 +- .../process-drawable/process-taskable-h.gc | 4 +- .../process-drawable/process-taskable.gc | 31 +- goal_src/jak2/engine/scene/scene-h.gc | 22 +- goal_src/jak2/engine/target/target-h.gc | 1 + .../jak2/levels/common/races/race-part.gc | 232 +++ goal_src/jak2/levels/common/scene-actor.gc | 1188 +++++++++++++++ goal_src/jak2/levels/common/scene-looper.gc | 1062 ++++++++++++++ .../jak2/engine/camera/camera-h_REF.gc | 35 +- .../engine/collide/collide-shape-h_REF.gc | 2 +- .../engine/common_objs/rigid-body-plat_REF.gc | 533 +++++++ .../jak2/engine/common_objs/voicebox_REF.gc | 628 ++++++++ .../jak2/engine/common_objs/water_REF.gc | 76 +- .../jak2/engine/debug/debug-part_REF.gc | 42 +- .../reference/jak2/engine/game/game-h_REF.gc | 12 - .../jak2/engine/gfx/mood/weather-part_REF.gc | 60 +- .../jak2/engine/gfx/ocean/ocean-h_REF.gc | 74 +- .../particles/sparticle-launcher_REF.gc | 156 +- .../jak2/engine/physics/rigid-body-h_REF.gc | 39 +- .../jak2/engine/physics/rigid-body_REF.gc | 137 +- .../process-taskable-h_REF.gc | 8 +- .../process-drawable/process-taskable_REF.gc | 29 +- .../jak2/engine/scene/scene-h_REF.gc | 35 +- .../reference/jak2/engine/scene/scene_REF.gc | 58 +- .../engine/target/board/board-states_REF.gc | 62 +- .../engine/target/board/target-board_REF.gc | 79 +- .../jak2/engine/target/logic-target_REF.gc | 108 +- .../jak2/engine/target/target-darkjak_REF.gc | 42 +- .../jak2/engine/target/target-gun_REF.gc | 47 +- .../jak2/engine/target/target-swim_REF.gc | 12 +- .../jak2/engine/target/target-util_REF.gc | 6 +- .../jak2/engine/target/target_REF.gc | 79 +- .../jak2/levels/common/races/race-part_REF.gc | 255 ++++ .../jak2/levels/common/scene-actor_REF.gc | 1274 +++++++++++++++++ .../jak2/levels/common/scene-looper_REF.gc | 1073 ++++++++++++++ test/offline/config/jak2/config.jsonc | 3 + 54 files changed, 7672 insertions(+), 1252 deletions(-) create mode 100644 test/decompiler/reference/jak2/engine/common_objs/rigid-body-plat_REF.gc create mode 100644 test/decompiler/reference/jak2/engine/common_objs/voicebox_REF.gc create mode 100644 test/decompiler/reference/jak2/levels/common/races/race-part_REF.gc create mode 100644 test/decompiler/reference/jak2/levels/common/scene-actor_REF.gc create mode 100644 test/decompiler/reference/jak2/levels/common/scene-looper_REF.gc diff --git a/decompiler/config/jak2/all-types.gc b/decompiler/config/jak2/all-types.gc index d4cb365b01..73aabd9ab9 100644 --- a/decompiler/config/jak2/all-types.gc +++ b/decompiler/config/jak2/all-types.gc @@ -10646,7 +10646,7 @@ :size-assert #x206c :flag-assert #x5c0000206c (:methods - (ocean-method-11 (_type_ (inline-array vector) symbol) float 11) + (ocean-method-11 (_type_ vector symbol) float 11) (draw! (_type_) none 12) (update-map (_type_) none 13) (ocean-method-14 () none 14) @@ -10656,7 +10656,7 @@ (ocean-method-18 () none 18) (ocean-method-19 () none 19) (ocean-method-20 () none 20) - (ocean-method-21 () none 21) + (ocean-method-21 (_type_ float float) float 21) (ocean-method-22 () none 22) (ocean-method-23 () none 23) (ocean-method-24 () none 24) @@ -15034,7 +15034,7 @@ (declare-type scene-player basic) (deftype scene-actor (basic) ((name string :offset-assert 4) - (level basic :offset-assert 8) + (level symbol :offset-assert 8) (art-group string :offset-assert 12) (prefix string :offset-assert 16) (draw-frames pair :offset-assert 20) ;; some form of pair? @@ -15065,24 +15065,28 @@ (art-group string :offset-assert 40) (anim string :offset-assert 44) (parts int32 :offset-assert 48) - (command-list basic :offset-assert 52) + (command-list pair :offset-assert 52) (cut-list pair :offset-assert 56) (wait-max-time time-frame :offset-assert 64) (wait-air-time time-frame :offset-assert 72) (wait-ground-time time-frame :offset-assert 80) (draw-target level-load-info :offset-assert 88) - (abort basic :offset-assert 92) + (abort symbol :offset-assert 92) (actor (array scene-actor) :offset-assert 96) - (load-point string :offset-assert 100) - (end-point string :offset-assert 104) - (borrow basic :offset-assert 108) + (load-point-obj object :offset-assert 100 :score 100) ;; TODO - unfortunate requirement + (load-point continue-point :offset 100) + (load-point-name string :offset 100) + (end-point-obj object :offset-assert 104 :score 100) ;; TODO - unfortunate requirement + (end-point continue-point :offset 104) + (end-point-name string :offset 104) + (borrow pair :offset-assert 108) ;; seen .empty-list (sfx-volume float :offset-assert 112) (ambient-volume float :offset-assert 116) - (music-volume float :offset-assert 120) - (blackout-end basic :offset-assert 124) - (peaceful basic :offset-assert 128) + (music-volume float :offset-assert 120) + (blackout-end symbol :offset-assert 124) + (peaceful symbol :offset-assert 128) (music-delay float :offset-assert 132) - (save basic :offset-assert 136) + (save symbol :offset-assert 136) (scene-task uint16 :offset-assert 140) ) :method-count-assert 17 @@ -15898,7 +15902,7 @@ ) (deftype collide-rider (structure) - ((rider-handle uint64 :offset-assert 0) + ((rider-handle handle :offset-assert 0) (sticky-prim basic :offset-assert 8) (prim-ry float :offset-assert 12) (rider-local-pos vector :inline :offset-assert 16) @@ -17204,9 +17208,14 @@ (play-game (game-task-event) _type_ :state 30) ;; (idle () _type_ :state 30) (process-taskable-method-31 (_type_) none 31) ;; (get-art-elem (_type_) art-element 31) (process-taskable-method-32 (_type_) none 32) ;; (play-anim! (_type_ symbol) basic 32) - (process-taskable-method-33 (_type_) none 33) ;; (dummy-33 (_type_) none 33) + (init-skeleton! + "@see [[initialize-skeleton]]" + (_type_) none 33) ;; (dummy-33 (_type_) none 33) (process-taskable-method-34 (_type_) symbol 34) ;; (get-accept-anim (_type_ symbol) spool-anim 34) - (process-taskable-method-35 (_type_) art-joint-anim 35) ;; (push-accept-anim (_type_) none 35) + (get-art-elem + "Checks various things such the current actor, task status, etc to determine the right art-group data to use + @returns the appropriate [[art-element]] for the given NPC" + (_type_) art-element 35) ;; TODO - is it always an art-joint-anim? (process-taskable-method-36 (_type_) none 36) ;; (get-reject-anim (_type_ symbol) spool-anim 36) (process-taskable-method-37 (_type_) none 37) ;; (push-reject-anim (_type_) none 37) ) @@ -17696,6 +17705,7 @@ (deftype target (process-focusable) ((control control-info :offset 128 :score 200) ;; guessed by decompiler + (fact-info-override fact-info-target :offset 160 :score 100) (skel2 joint-control :offset-assert 204) (shadow-backup shadow-geo :offset-assert 208) (target-flags uint32 :offset 188) @@ -20397,7 +20407,8 @@ cam-bike cam-robotboss ;; TODO - state docstrings "A holdout from jak 1?" cam-point-watch - cam-free-floating)) + cam-free-floating + cam-remote)) (deftype camera-master (process) ((master-options uint32 :offset-assert 128) @@ -28238,7 +28249,6 @@ ;; voicebox ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype camera-remote (camera-slave) () :method-count-assert 14 @@ -28247,17 +28257,16 @@ (:methods ) ) -|# -#| (deftype remote (process-drawable) - ((base-trans vector :inline :offset-assert 204) - (focus focus :inline :offset-assert 220) - (seeker cam-float-seeker :inline :offset-assert 232) - (start-time time-frame :offset-assert 260) - (blend float :offset-assert 268) - (twist float :offset-assert 272) - (speak-effect? basic :offset-assert 276) + ((parent-override (pointer camera-slave) :offset 16 :score 100) + (base-trans vector :inline :offset-assert 208) + (focus focus :inline :offset-assert 224) + (seeker cam-float-seeker :inline :offset-assert 236) + (start-time time-frame :offset-assert 264) + (blend float :offset-assert 272) + (twist float :offset-assert 276) + (speak-effect? basic :offset-assert 280) ) :method-count-assert 26 :size-assert #x11c @@ -28266,16 +28275,14 @@ (enter () _type_ :state 20) (idle () _type_ :state 21) (exit () _type_ :state 22) - (remote-method-23 () none 23) - (remote-method-24 () none 24) - (remote-method-25 () none 25) + (remote-method-23 (_type_) none 23) + (remote-method-24 (_type_ vector) float 24) + (remote-method-25 (_type_) none 25) ) ) -|# -#| (deftype voicebox (remote) - ((hint uint64 :offset-assert 284) ;; handle + ((hint handle :offset-assert 288) ;; handle ) :method-count-assert 26 :size-assert #x128 @@ -28283,31 +28290,27 @@ (:methods ) ) -|# -#| (deftype judge (remote) - ((total-time time-frame :offset-assert 284) - (beep-time time-frame :offset-assert 292) - (hud-timer uint64 :offset-assert 300) - (score uint8 :offset-assert 308) + ((total-time time-frame :offset-assert 288) + (beep-time time-frame :offset-assert 296) + (hud-timer handle :offset-assert 304) + (score uint8 :offset-assert 312) ) :method-count-assert 28 :size-assert #x139 :flag-assert #x1c00c00139 (:methods (wait () _type_ :state 26) - (judge-method-27 () none 27) + (judge-method-27 (_type_) none 27) ) ) -|# -;; (define-extern remote-track function) -;; (define-extern cam-remote state) -;; (define-extern voicebox-init-by-other function) ;; (function vector handle none :behavior voicebox) +(define-extern remote-track (function none :behavior remote)) +(define-extern voicebox-init-by-other (function vector handle none :behavior voicebox)) ;; (define-extern voicebox-spawn (function process-drawable vector (pointer process))) ;; (function process vector (pointer process)) -;; (define-extern judge-init-by-other function) -;; (define-extern judge-spawn function) +(define-extern judge-init-by-other (function vector uint none :behavior judge)) +(define-extern judge-spawn (function process-tree vector uint (pointer judge))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; collectables-part ;; @@ -28320,7 +28323,9 @@ ;; debug-part ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern sparticle-track-root-money function) ;; (function sparticle-system sparticle-cpuinfo vector none) +(define-extern sparticle-track-root-money + "Hopefully unused, it still uses a jak 1 symbol -- [[hud-money]] which no longer exists!" + (function sparticle-system sparticle-cpuinfo vector none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; find-nearest ;; @@ -32773,7 +32778,7 @@ (:methods (idle () _type_ :state 27) (active () _type_ :state 28) - (rigid-body-object-method-29 (_type_) none 29) + (rigid-body-object-method-29 (_type_ float) none 29) (rigid-body-object-method-30 (_type_) none 30) (rigid-body-object-method-31 (_type_ rigid-body-object-constants) none 31) (rigid-body-object-method-32 (_type_) none 32) @@ -33370,16 +33375,17 @@ ) (deftype rigid-body-control-point-inline-array (inline-array-class) - ((data rigid-body-control-point :dynamic :offset-assert 16) ;; guessed by decompiler + ((data rigid-body-control-point :inline :dynamic :offset-assert 16) ;; guessed by decompiler ) :method-count-assert 9 :size-assert #x10 :flag-assert #x900000010 ) -(declare-type water-anim process-drawable) ;; TODO - not decompiled yet +(declare-type water-anim process-drawable) (deftype rigid-body-platform (rigid-body-object) - ((control-point-array rigid-body-control-point-inline-array :offset-assert 272) ;; guessed by decompiler + ((info-override rigid-body-platform-constants :offset 204 :score 100) + (control-point-array rigid-body-control-point-inline-array :offset-assert 272) ;; guessed by decompiler (player-velocity vector :inline :offset-assert 288) (player-velocity-prev vector :inline :offset-assert 304) (unknown-pad uint32 8 :offset-assert 320) @@ -33391,10 +33397,10 @@ :size-assert #x174 :flag-assert #x3901000174 (:methods - (rigid-body-platform-method-53 (_type_) none 53) - (rigid-body-platform-method-54 () none 54) - (rigid-body-platform-method-55 () none 55) - (rigid-body-platform-method-56 () none 56) + (rigid-body-platform-method-53 (_type_ vector) float 53) + (rigid-body-platform-method-54 (_type_ rigid-body-control-point) none 54) + (rigid-body-platform-method-55 (_type_) none 55) + (rigid-body-platform-method-56 (_type_ vector) none 56) ) ) @@ -33568,13 +33574,16 @@ ;; process-taskable ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(define-extern process-taskable-anim-loop (function (function symbol) none :behavior process-taskable)) ;; +(define-extern process-taskable-anim-loop + "Takes in a function and loops as long as it's return value is truthy + Seen take in - `true-func` which takes no args TODO - seems fishy + - a `(process-taskable process) lambda" + (function (function process-taskable object) none :behavior process-taskable)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; scene-actor ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype kor-npc (process-taskable) () :method-count-assert 38 @@ -33583,9 +33592,7 @@ (:methods ) ) -|# -#| (deftype metalkor-highres (process-drawable) () :method-count-assert 21 @@ -33595,9 +33602,7 @@ (idle () _type_ :state 20) ) ) -|# -#| (deftype tess-npc (process-taskable) () :method-count-assert 38 @@ -33606,9 +33611,7 @@ (:methods ) ) -|# -#| (deftype keira-npc (process-taskable) () :method-count-assert 38 @@ -33617,9 +33620,7 @@ (:methods ) ) -|# -#| (deftype krew-npc (process-taskable) () :method-count-assert 38 @@ -33628,9 +33629,7 @@ (:methods ) ) -|# -#| (deftype kid-npc (process-taskable) () :method-count-assert 38 @@ -33639,9 +33638,7 @@ (:methods ) ) -|# -#| (deftype crocadog-npc (process-taskable) () :method-count-assert 38 @@ -33650,9 +33647,7 @@ (:methods ) ) -|# -#| (deftype torn-npc (process-taskable) () :method-count-assert 38 @@ -33661,9 +33656,7 @@ (:methods ) ) -|# -#| (deftype youngsamos-npc (process-taskable) () :method-count-assert 38 @@ -33672,9 +33665,7 @@ (:methods ) ) -|# -#| (deftype samos-npc (process-taskable) () :method-count-assert 38 @@ -33683,9 +33674,7 @@ (:methods ) ) -|# -#| (deftype onin-npc (process-taskable) () :method-count-assert 38 @@ -33694,9 +33683,7 @@ (:methods ) ) -|# -#| (deftype pecker-npc (process-taskable) () :method-count-assert 38 @@ -33705,9 +33692,7 @@ (:methods ) ) -|# -#| (deftype brutter-npc (process-taskable) () :method-count-assert 38 @@ -33716,9 +33701,7 @@ (:methods ) ) -|# -#| (deftype ashelin-npc (process-taskable) () :method-count-assert 38 @@ -33727,9 +33710,7 @@ (:methods ) ) -|# -#| (deftype daxter-npc (process-taskable) () :method-count-assert 38 @@ -33738,36 +33719,46 @@ (:methods ) ) -|# -;; (define-extern intro-play function) -;; (define-extern outro-play function) +(define-extern intro-play + "A dedicated function for playing the intro cutscenes in the correct order + ```opengoal + \"intro-samos-hut\" \"intro-vortex\" \"intro-city-square\" \"intro-prison\" + ```" + (function none)) +(define-extern outro-play + "A dedicated function for playing the intro cutscenes in the correct order + ```opengoal + \"outro-nest\" \"outro-palace\" \"outro-hiphog\" \"outro-port\" + ```" + (function none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; scene-looper ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype scene-looper (process) - ((scene-name basic :offset-assert 124) + ((scene-name symbol :offset-assert 128) ) :method-count-assert 15 :size-assert #x84 :flag-assert #xf00100084 (:methods - (scene-looper-method-9 () none 9) - (scene-looper-method-10 () none 10) - (scene-looper-method-11 () none 11) - (scene-looper-method-12 () none 12) - (scene-looper-method-13 () none 13) (idle () _type_ :state 14) ) ) -|# -;; (define-extern scene-looper-init-by-other function) -;; (define-extern stop-loop-scene function) -;; (define-extern loop-scene function) +(define-extern scene-looper-init-by-other + "Sets the `scene-name` with the given [[symbol]], the [[scene-looper]] will then idle" + (function symbol none :behavior scene-looper)) +(define-extern stop-loop-scene + "Kills the current [[scene-looper]] + @see [[kill-by-type]]" + (function symbol)) +(define-extern loop-scene + "Stops looping the current scene, then spawns a new [[scene-looper]] for the given scene + @see [[stop-loop-scene]" + (function symbol (pointer scene-looper))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; warp-gate ;; @@ -45404,29 +45395,28 @@ ) |# -#| (deftype onin-game (process-drawable) - ((wave int32 :offset-assert 196) - (event int32 :offset-assert 200) - (wave-time time-frame :offset-assert 204) - (wave-delay-time time-frame :offset-assert 212) - (wave-length uint64 :offset-assert 220) - (event-time time-frame :offset-assert 228) - (event-length uint64 :offset-assert 236) - (hud-score uint64 :offset-assert 244) - (hud-goal uint64 :offset-assert 252) - (hud-miss uint64 :offset-assert 260) - (score float :offset-assert 268) - (score-time time-frame :offset-assert 276) - (game uint32 :offset-assert 284) - (miss-max int32 :offset-assert 288) - (miss-count int32 :offset-assert 292) - (point-win float :offset-assert 296) - (game-start-time time-frame :offset-assert 300) - (last-type int32 :offset-assert 308) - (current-bonus float :offset-assert 312) - (last-angle float :offset-assert 316) - (wave-start-miss int32 :offset-assert 320) + ((wave int32 :offset-assert 200) + (event int32 :offset-assert 204) + (wave-time time-frame :offset-assert 208) + (wave-delay-time time-frame :offset-assert 216) + (wave-length uint64 :offset-assert 224) + (event-time time-frame :offset-assert 232) + (event-length uint64 :offset-assert 240) + (hud-score uint64 :offset-assert 248) + (hud-goal uint64 :offset-assert 256) + (hud-miss uint64 :offset-assert 264) + (score float :offset-assert 272) + (score-time time-frame :offset-assert 280) + (game uint32 :offset-assert 288) + (miss-max int32 :offset-assert 292) + (miss-count int32 :offset-assert 296) + (point-win float :offset-assert 300) + (game-start-time time-frame :offset-assert 304) + (last-type int32 :offset-assert 312) + (current-bonus float :offset-assert 316) + (last-angle float :offset-assert 320) + (wave-start-miss int32 :offset-assert 324) ) :method-count-assert 28 :size-assert #x148 @@ -45442,13 +45432,12 @@ (onin-game-method-27 () none 27) ) ) -|# ;; (define-extern *onin-game-data* array) ;; (define-extern birth-func-onin-bubble-pop function) ;; (define-extern birth-func-onin-bubble-birth-pop function) ;; (define-extern onin-game-bubble-init function) -;; (define-extern onin-game-init function) +(define-extern onin-game-init (function entity none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; stadiumb-texture ;; diff --git a/decompiler/config/jak2/anonymous_function_types.jsonc b/decompiler/config/jak2/anonymous_function_types.jsonc index 4c6339fdde..f5112d6cc1 100644 --- a/decompiler/config/jak2/anonymous_function_types.jsonc +++ b/decompiler/config/jak2/anonymous_function_types.jsonc @@ -432,5 +432,6 @@ [91, "(function object nav-control none)"], [92, "(function object nav-control none)"], [93, "(function object nav-control none)"] - ] + ], + "scene-actor": [[10, "(function process-taskable process)"]] } diff --git a/decompiler/config/jak2/label_types.jsonc b/decompiler/config/jak2/label_types.jsonc index 3c7f9ebb5d..c479c955db 100644 --- a/decompiler/config/jak2/label_types.jsonc +++ b/decompiler/config/jak2/label_types.jsonc @@ -460,5 +460,11 @@ ["L502", "uint64", true], ["L503", "uint64", true], ["L504", "uint64", true] + ], + "voicebox": [ + ["L133", "vector"], + ["L132", "vector"], + ["L131", "vector"], + ["L130", "vector"] ] } diff --git a/decompiler/config/jak2/stack_structures.jsonc b/decompiler/config/jak2/stack_structures.jsonc index 45bcc36f66..191ff10b51 100644 --- a/decompiler/config/jak2/stack_structures.jsonc +++ b/decompiler/config/jak2/stack_structures.jsonc @@ -1096,5 +1096,6 @@ "(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"]] + "(anon-function 93 nav-enemy)": [[16, "vector"]], + "(method 54 rigid-body-platform)": [[16, "vector"]] } diff --git a/decompiler/config/jak2/type_casts.jsonc b/decompiler/config/jak2/type_casts.jsonc index ed1d9f0a16..272d639373 100644 --- a/decompiler/config/jak2/type_casts.jsonc +++ b/decompiler/config/jak2/type_casts.jsonc @@ -3958,5 +3958,34 @@ "(method 160 nav-enemy)": [ [19, "a0", "process-focusable"], [35, "s5", "process-focusable"] - ] + ], + "(method 32 youngsamos-npc)": [ + [61, "t9", "(function process-taskable none)"] + ], + "(method 35 pecker-npc)": [ + [58, "v1", "art-joint-anim"], + [117, "v1", "art-joint-anim"] + ], + "(code idle scene-looper)": [[40, "gp", "handle"]], + "(method 7 rigid-body-platform)": [ + [14, "t9", "(function rigid-body-object int rigid-body-object)"] + ], + "(method 53 rigid-body-platform)": [[24, "f0", "float"]], + "(method 46 rigid-body-platform)": [ + [13, "v1", "rigid-body-control-point"], + [30, "v1", "collide-rider"], + [46, "s5", "process-focusable"], + [139, "v1", "float"] + ], + "(method 24 remote)": [ + [16, "s4", "process-focusable"], + [[26, 30], "s4", "process-focusable"] + ], + "remote-track": [[94, "gp", "process-drawable"]], + "(trans enter remote)": [[[25, 29], "a0", "process-focusable"]], + "(code enter remote)": [[11, "gp", "process-focusable"]], + "(method 25 remote)": [[[8, 12], "a0", "collide-shape"]], + "(method 25 judge)": [[[8, 12], "a0", "collide-shape"]], + "(event wait judge)": [[63, "gp", "process-focusable"]], + "(code idle judge)": [[39, "v0", "float"]] } diff --git a/decompiler/config/jak2/var_names.jsonc b/decompiler/config/jak2/var_names.jsonc index d2290e1566..82a8f484e8 100644 --- a/decompiler/config/jak2/var_names.jsonc +++ b/decompiler/config/jak2/var_names.jsonc @@ -2062,5 +2062,30 @@ }, "(method 44 nav-state)": { "args": ["obj", "velocity"] + }, + "scene-looper-init-by-other": { + "args": ["scene-name"] + }, + "(code idle scene-looper)": { + "vars": { + "gp-1": "player" + } + }, + "loop-scene": { + "args": ["scene-name"] + }, + "(method 7 rigid-body-platform)": { + "args": ["obj", "new-addr"] + }, + "(method 54 rigid-body-platform)": { + "args": ["obj", "ctrl-point"] + }, + "(method 50 rigid-body-platform)": { + "vars": { + "v1-8": "rigid-body", + "a1-2": "force-pos", + "a2-0": "force", + "f0-0": "force-dist" + } } } diff --git a/goal_src/jak2/engine/camera/camera-h.gc b/goal_src/jak2/engine/camera/camera-h.gc index 05bce6dbd2..4e1e6485f5 100644 --- a/goal_src/jak2/engine/camera/camera-h.gc +++ b/goal_src/jak2/engine/camera/camera-h.gc @@ -395,6 +395,7 @@ cam-pov-track cam-pov180 cam-really-fixed + cam-remote cam-robotboss cam-spline cam-standoff diff --git a/goal_src/jak2/engine/collide/collide-shape-h.gc b/goal_src/jak2/engine/collide/collide-shape-h.gc index ba4380c492..9a1e64c3cf 100644 --- a/goal_src/jak2/engine/collide/collide-shape-h.gc +++ b/goal_src/jak2/engine/collide/collide-shape-h.gc @@ -258,7 +258,7 @@ ;; DECOMP BEGINS (deftype collide-rider (structure) - ((rider-handle uint64 :offset-assert 0) + ((rider-handle handle :offset-assert 0) (sticky-prim basic :offset-assert 8) (prim-ry float :offset-assert 12) (rider-local-pos vector :inline :offset-assert 16) diff --git a/goal_src/jak2/engine/common_objs/rigid-body-plat.gc b/goal_src/jak2/engine/common_objs/rigid-body-plat.gc index 52fe291b5b..8f57a5cf2e 100644 --- a/goal_src/jak2/engine/common_objs/rigid-body-plat.gc +++ b/goal_src/jak2/engine/common_objs/rigid-body-plat.gc @@ -7,3 +7,451 @@ ;; DECOMP BEGINS +(deftype rigid-body-platform-constants (rigid-body-object-constants) + ((drag-factor float :offset-assert 208) + (buoyancy-factor float :offset-assert 212) + (max-buoyancy-depth meters :offset-assert 216) + (player-weight meters :offset-assert 220) + (player-bonk-factor float :offset-assert 224) + (player-dive-factor float :offset-assert 228) + (player-force-distance meters :offset-assert 232) + (player-force-clamp meters :offset-assert 236) + (player-force-timeout uint64 :offset-assert 240) + (explosion-force meters :offset-assert 248) + (control-point-count int32 :offset-assert 252) + (platform symbol :offset-assert 256) + (sound-name string :offset-assert 260) + ) + :method-count-assert 9 + :size-assert #x108 + :flag-assert #x900000108 + ) + + +(deftype rigid-body-control-point (structure) + ((local-pos vector :inline :offset-assert 0) + (world-pos vector :inline :offset-assert 16) + (velocity vector :inline :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) + + +(deftype rigid-body-control-point-inline-array (inline-array-class) + ((data rigid-body-control-point :inline :dynamic :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + + +(set! (-> rigid-body-control-point-inline-array heap-base) (the-as uint 48)) + +(deftype rigid-body-platform (rigid-body-object) + ((info-override rigid-body-platform-constants :offset 204) + (control-point-array rigid-body-control-point-inline-array :offset-assert 272) + (player-velocity vector :inline :offset-assert 288) + (player-velocity-prev vector :inline :offset-assert 304) + (unknown-pad uint32 8 :offset-assert 320) + (float-height-offset float :offset-assert 352) + (player-bonk-timeout uint64 :offset-assert 360) + (water-anim water-anim :offset-assert 368) + ) + :heap-base #x100 + :method-count-assert 57 + :size-assert #x174 + :flag-assert #x3901000174 + (:methods + (rigid-body-platform-method-53 (_type_ vector) float 53) + (rigid-body-platform-method-54 (_type_ rigid-body-control-point) none 54) + (rigid-body-platform-method-55 (_type_) none 55) + (rigid-body-platform-method-56 (_type_ vector) none 56) + ) + ) + + +;; WARN: Return type mismatch rigid-body-object vs rigid-body-platform. +(defmethod relocate rigid-body-platform ((obj rigid-body-platform) (new-addr int)) + (if (nonzero? (-> obj control-point-array)) + (&+! (-> obj control-point-array) new-addr) + ) + (the-as + rigid-body-platform + ((the-as (function rigid-body-object int rigid-body-object) (find-parent-method rigid-body-platform 7)) + obj + new-addr + ) + ) + ) + +(defmethod rigid-body-platform-method-53 rigid-body-platform ((obj rigid-body-platform) (arg0 vector)) + (local-vars (f0-1 object)) + (let ((v1-0 (-> obj water-anim))) + 0.0 + (set! f0-1 (cond + (v1-0 + (let ((a0-1 v1-0)) + (if (if a0-1 + (-> a0-1 child 3) + ) + (set! f0-1 (-> v1-0 child 9)) + (set! f0-1 (-> v1-0 child 9)) + ) + ) + f0-1 + ) + (else + (ocean-method-11 *ocean* arg0 #t) + ) + ) + ) + ) + (the-as float f0-1) + ) + +(defmethod rigid-body-platform-method-54 rigid-body-platform ((obj rigid-body-platform) (ctrl-point rigid-body-control-point)) + (set! (-> ctrl-point world-pos w) + (+ (rigid-body-platform-method-53 obj (-> ctrl-point world-pos)) (-> obj float-height-offset)) + ) + (let* ((s4-0 (new 'stack-no-clear 'vector)) + (f0-3 (- (-> ctrl-point world-pos w) (-> ctrl-point world-pos y))) + (f30-0 (/ f0-3 (-> obj info-override max-buoyancy-depth))) + ) + (when (< 0.0 f0-3) + (vector-float*! + s4-0 + *y-vector* + (* (-> obj rbody state info mass) + (fmin 1.0 f30-0) + (/ (-> obj info-override gravity) (the float (-> obj info-override control-point-count))) + (-> obj info-override buoyancy-factor) + ) + ) + (let ((v1-6 (-> obj rbody)) + (a1-9 (-> ctrl-point world-pos)) + (a2-0 s4-0) + ) + (rigid-body-method-18 (-> v1-6 state) a1-9 a2-0) + ) + (vector-float*! s4-0 (-> ctrl-point velocity) (* -1.0 (-> obj info-override drag-factor) (fmin 1.0 f30-0))) + (let ((v1-11 (-> obj rbody)) + (a1-13 (-> ctrl-point world-pos)) + ) + (rigid-body-method-18 (-> v1-11 state) a1-13 s4-0) + ) + ) + ) + 0 + 0 + (none) + ) + +(defmethod rigid-body-object-method-50 rigid-body-platform ((obj rigid-body-platform) (arg0 float)) + (when (logtest? (-> obj flags) (rigid-body-object-flag player-impulse-force player-contact-force)) + (if (logtest? (-> obj flags) (rigid-body-object-flag player-impulse-force)) + (logclear! (-> obj flags) (rigid-body-object-flag player-impulse-force)) + ) + (let ((rigid-body (-> obj rbody)) + (force-pos (-> obj player-force-position)) + (force (-> obj player-force)) + (force-dist (-> obj info-override player-force-distance)) + ) + (rigid-body-method-21 (-> rigid-body state) force-pos force force-dist) + ) + ) + 0 + (none) + ) + +(defmethod rigid-body-platform-method-55 rigid-body-platform ((obj rigid-body-platform)) + (let ((a1-0 (new 'stack-no-clear 'vector))) + (vector-float*! a1-0 *y-vector* (* -1.0 (-> obj info-override gravity) (-> obj rbody state info mass))) + (rigid-body-method-20 (-> obj rbody state) a1-0) + ) + 0 + (none) + ) + +(defmethod rigid-body-platform-method-56 rigid-body-platform ((obj rigid-body-platform) (arg0 vector)) + (let ((v1-0 (new 'stack-no-clear 'vector))) + (vector-! v1-0 arg0 (-> obj rbody state position)) + (set! (-> v1-0 y) 0.0) + (let* ((f0-1 (vector-length v1-0)) + (f1-1 (* 10.0 (fmax 0.0 (fmin 4096.0 (+ -4096.0 f0-1))))) + ) + (when (< 0.0 f1-1) + (vector-float*! v1-0 v1-0 (/ f1-1 f0-1)) + (rigid-body-method-20 (-> obj rbody state) v1-0) + ) + ) + ) + 0 + (none) + ) + +(defmethod rigid-body-object-method-29 rigid-body-platform ((obj rigid-body-platform) (arg0 float)) + (let ((s4-0 (-> obj rbody state matrix))) + (dotimes (s3-0 (-> obj info-override control-point-count)) + (let ((s2-0 (-> obj control-point-array data s3-0))) + (vector-matrix*! (-> s2-0 world-pos) (-> s2-0 local-pos) s4-0) + (let ((v1-4 (-> obj rbody)) + (a1-2 (-> s2-0 world-pos)) + (a2-1 (-> s2-0 velocity)) + ) + (rigid-body-method-22 (-> v1-4 state) a1-2 a2-1) + ) + (rigid-body-platform-method-54 obj s2-0) + ) + ) + ) + (rigid-body-platform-method-55 obj) + (rigid-body-object-method-50 obj arg0) + 0 + (none) + ) + +(defmethod rigid-body-object-method-30 rigid-body-platform ((obj rigid-body-platform)) + (if (-> obj info-override platform) + ((method-of-object (-> obj root-override-2) collide-shape-method-35)) + ) + (set! (-> obj player-velocity-prev quad) (-> obj player-velocity quad)) + (if *target* + (set! (-> obj player-velocity quad) (-> *target* control transv quad)) + (set! (-> obj player-velocity quad) (-> *null-vector* quad)) + ) + (let ((t9-1 (method-of-type rigid-body-object rigid-body-object-method-30))) + (t9-1 obj) + ) + (logclear! (-> obj flags) (rigid-body-object-flag player-contact-force)) + 0 + (none) + ) + +(defmethod rigid-body-object-method-47 rigid-body-platform ((obj rigid-body-platform) (arg0 process-drawable) (arg1 attack-info) (arg2 object) (arg3 penetrate)) + ((method-of-type rigid-body-object rigid-body-object-method-47) obj arg0 arg1 arg2 arg3) + #f + ) + +(defmethod rigid-body-object-method-46 rigid-body-platform ((obj rigid-body-platform) (arg0 process-drawable) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('edge-grabbed) + (let ((v1-1 (the-as object (-> arg3 param 0)))) + (when (not (logtest? (-> obj flags) (rigid-body-object-flag player-impulse-force))) + (logior! (-> obj flags) (rigid-body-object-flag player-contact-force)) + (set! (-> obj player-force-position quad) (-> (the-as rigid-body-control-point v1-1) velocity quad)) + (vector-reset! (-> obj player-force)) + (set! (-> obj player-force y) (* -1.0 (-> obj info-override player-weight))) + ) + ) + ) + (('ridden) + (let ((v1-7 (the-as object (-> arg3 param 0)))) + (when (the-as uint v1-7) + (let* ((s5-1 (handle->process (-> (the-as collide-rider v1-7) rider-handle))) + (v1-11 (if (type? s5-1 process-focusable) + (the-as process-focusable s5-1) + ) + ) + ) + (when (and v1-11 + (logtest? (-> v1-11 mask) (process-mask target)) + (zero? (logand (-> v1-11 focus-status) (focus-status on-water under-water))) + ) + (when (not (logtest? (-> obj flags) (rigid-body-object-flag player-impulse-force))) + (logior! (-> obj flags) (rigid-body-object-flag player-contact-force)) + (set! (-> obj player-force-position quad) (-> v1-11 root-override trans quad)) + (vector-reset! (-> obj player-force)) + (let* ((a1-5 (-> obj player-force-position)) + (f30-0 0.0) + (f28-0 1.0) + (f26-0 1.0) + (f0-4 (+ (- -4096.0 (-> a1-5 y)) (rigid-body-platform-method-53 obj a1-5))) + (f1-2 12288.0) + (f0-8 (fmax f30-0 (fmin f28-0 (- f26-0 (* f0-4 (/ 1.0 f1-2)))))) + ) + (set! (-> obj player-force y) (* -1.0 (-> obj info-override player-weight) f0-8)) + ) + ) + ) + ) + ) + ) + ) + (('bonk) + (when (>= (- (-> self clock frame-counter) (the-as int (-> obj player-bonk-timeout))) + (the-as time-frame (-> obj info-override player-force-timeout)) + ) + (set! (-> obj player-bonk-timeout) (the-as uint (-> self clock frame-counter))) + (let* ((s4-0 arg0) + (v1-31 (if (type? s4-0 process-drawable) + s4-0 + ) + ) + ) + (when v1-31 + (logior! (-> obj flags) (rigid-body-object-flag player-impulse-force)) + (set! (-> obj player-force-position quad) (-> v1-31 root trans quad)) + (let ((f0-14 (fmin + (* 0.00012207031 + (the-as float (-> arg3 param 1)) + (-> obj info-override player-bonk-factor) + (-> obj info-override player-weight) + ) + (-> obj info-override player-force-clamp) + ) + ) + ) + (vector-reset! (-> obj player-force)) + (set! (-> obj player-force y) (- f0-14)) + ) + ) + ) + ) + ) + (else + ((method-of-type rigid-body-object rigid-body-object-method-46) obj arg0 arg1 arg2 arg3) + ) + ) + (none) + ) + +(defmethod rigid-body-object-method-37 rigid-body-platform ((obj rigid-body-platform)) + (if (logtest? (-> obj flags) (rigid-body-object-flag player-impulse-force)) + (sound-play-by-name + (string->sound-name (-> obj info-override sound-name)) + (new-sound-id) + 1024 + 0 + 0 + (sound-group sfx) + #t + ) + ) + (rigid-body-object-method-30 obj) + (quaternion-copy! (-> obj root-override-2 quat) (-> obj rbody state rotation)) + (let ((v1-9 (-> obj rbody)) + (a1-2 (-> obj root-override-2 trans)) + ) + (rigid-body-method-23 (-> v1-9 state) a1-2) + ) + (rider-post) + (none) + ) + +(defmethod rigid-body-object-method-31 rigid-body-platform ((obj rigid-body-platform) (arg0 rigid-body-object-constants)) + (with-pp + (set! (-> obj info-override) (the-as rigid-body-platform-constants arg0)) + (set! (-> obj rbody) (new 'process 'rigid-body-control obj)) + (set! (-> obj control-point-array) + (new 'process 'rigid-body-control-point-inline-array (-> obj info-override control-point-count)) + ) + (collide-shape-method-46 (-> obj root-override-2)) + (let ((v1-5 (-> obj rbody)) + (a1-3 (&-> (-> obj info-override) mass)) + (a2-2 (-> obj root-override-2 trans)) + (a3-0 (-> obj root-override-2 quat)) + (t0-0 (method-of-object obj rigid-body-object-method-29)) + ) + (rigid-body-method-25 (-> v1-5 state) (the-as rigid-body-info a1-3) a2-2 a3-0 t0-0) + ) + (set! (-> obj player-bonk-timeout) (the-as uint (-> pp clock frame-counter))) + (set! (-> obj player-force quad) (-> *null-vector* quad)) + (set! (-> obj player-velocity quad) (-> *null-vector* quad)) + (set! (-> obj player-velocity-prev quad) (-> *null-vector* quad)) + (set! (-> obj root-override-2 max-iteration-count) (the-as uint 4)) + (set! (-> obj max-time-step) (-> arg0 max-time-step)) + (set! (-> obj water-anim) (the-as water-anim (entity-actor-lookup (-> obj entity) 'water-actor 0))) + 0 + (none) + ) + ) + +(defmethod rigid-body-object-method-32 rigid-body-platform ((obj rigid-body-platform)) + (let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)))) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) cshape-reaction-default) + (set! (-> s5-0 no-reaction) nothing) + (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s4-0 prim-core collide-as) (collide-spec pusher)) + (set! (-> s4-0 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> s4-0 prim-core action) (collide-action solid rideable)) + (set! (-> s4-0 transform-index) 0) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 20480.0) + (set! (-> s5-0 total-prims) (the-as uint 1)) + (set! (-> s5-0 root-prim) s4-0) + ) + (collide-shape-method-54 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (let ((v1-15 (-> s5-0 root-prim))) + (set! (-> s5-0 backup-collide-as) (-> v1-15 prim-core collide-as)) + (set! (-> s5-0 backup-collide-with) (-> v1-15 prim-core collide-with)) + ) + (set! (-> obj root-override-2) s5-0) + ) + 0 + (none) + ) + +(define *rigid-body-platform-constants* (new 'static 'rigid-body-platform-constants + :mass 2.0 + :inv-mass 0.5 + :cm-joint-w 1.0 + :linear-damping 1.0 + :angular-damping 1.0 + :bounce-factor 0.5 + :friction-factor 0.1 + :inertial-tensor-x (meters 4) + :inertial-tensor-y (meters 4) + :inertial-tensor-z (meters 4) + :max-time-step 0.033333335 + :gravity (meters 80) + :idle-distance (meters 50) + :attack-force-scale 1.0 + :name '*rigid-body-platform-constants* + :drag-factor 0.8 + :buoyancy-factor 1.5 + :max-buoyancy-depth (meters 1.5) + :player-weight (meters 6.6) + :player-bonk-factor 1.0 + :player-dive-factor 1.0 + :player-force-distance (meters 1000) + :player-force-clamp (meters 1000000) + :player-force-timeout #x1e + :explosion-force (meters 1000) + :control-point-count 1 + :platform #t + :sound-name #f + ) + ) + +(defmethod rigid-body-object-method-33 rigid-body-platform ((obj rigid-body-platform)) + (set! (-> obj float-height-offset) 0.0) + (rigid-body-object-method-31 obj *rigid-body-platform-constants*) + (let ((s5-0 (-> obj info-override control-point-count))) + (dotimes (s4-0 s5-0) + (let ((s3-0 (-> obj control-point-array data s4-0))) + (let ((f30-0 (* 65536.0 (/ (the float s4-0) (the float s5-0))))) + (set! (-> s3-0 local-pos x) (* 12288.0 (sin f30-0))) + (set! (-> s3-0 local-pos y) -10240.0) + (set! (-> s3-0 local-pos z) (* 12288.0 (cos f30-0))) + ) + (set! (-> s3-0 local-pos w) 1.0) + ) + ) + ) + 0 + (none) + ) + +(defmethod init-from-entity! rigid-body-platform ((obj rigid-body-platform) (arg0 entity-actor)) + (set! (-> obj mask) (logior (process-mask platform) (-> obj mask))) + (rigid-body-object-method-32 obj) + (process-drawable-from-entity! obj arg0) + (rigid-body-object-method-33 obj) + (rigid-body-object-method-34 obj) + 0 + (none) + ) diff --git a/goal_src/jak2/engine/common_objs/voicebox.gc b/goal_src/jak2/engine/common_objs/voicebox.gc index 7e43e16428..e008dcf065 100644 --- a/goal_src/jak2/engine/common_objs/voicebox.gc +++ b/goal_src/jak2/engine/common_objs/voicebox.gc @@ -7,3 +7,578 @@ ;; DECOMP BEGINS +(defpartgroup group-talkbox-speak + :id 77 + :flags (unk-4 unk-6) + :bounds (static-bspherem 0 0 0 2) + :rotate ((degrees 4) (degrees 0) (degrees 0)) + :parts ((sp-item 265 :flags (is-3d bit6 bit7) :period 130 :length 30) + (sp-item 265 :flags (is-3d bit6 bit7) :period 150 :length 35 :offset 5) + (sp-item 265 :flags (is-3d bit6 bit7) :period 330 :length 25 :offset 35) + (sp-item 265 :flags (is-3d bit6 bit7) :period 250 :length 60 :offset 15) + (sp-item 265 :flags (is-3d bit6 bit7) :period 465 :length 75 :offset 60) + ) + ) + +(defpart 265 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xcb :page #xc)) + (sp-func spt-birth-func 'birth-func-set-vel) + (sp-rnd-flt spt-num 0.0 0.3 1.0) + (sp-flt spt-y (meters 0.15)) + (sp-flt spt-z (meters 0.4)) + (sp-flt spt-scale-x (meters 0.1)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 16.0) + (sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.0033333334) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.006666667) (meters 0.0033333334) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.32) + (sp-int spt-timer 100) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat) + (sp-int spt-next-time 50) + (sp-launcher-by-id spt-next-launcher 266) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +(defpart 266 + :init-specs ((sp-flt spt-fade-a -0.64)) + ) + +(deftype camera-remote (camera-slave) + () + :heap-base #xa20 + :method-count-assert 14 + :size-assert #xa94 + :flag-assert #xe0a200a94 + ) + + +(deftype remote (process-drawable) + ((parent-override (pointer camera-slave) :offset 16) + (base-trans vector :inline :offset-assert 208) + (focus focus :inline :offset-assert 224) + (seeker cam-float-seeker :inline :offset-assert 236) + (start-time time-frame :offset-assert 264) + (blend float :offset-assert 272) + (twist float :offset-assert 276) + (speak-effect? basic :offset-assert 280) + ) + :heap-base #xa0 + :method-count-assert 26 + :size-assert #x11c + :flag-assert #x1a00a0011c + (:methods + (enter () _type_ :state 20) + (idle () _type_ :state 21) + (exit () _type_ :state 22) + (remote-method-23 (_type_) none 23) + (remote-method-24 (_type_ vector) float 24) + (remote-method-25 (_type_) none 25) + ) + ) + + +(defskelgroup skel-voicebox talk-box 0 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :texture-level 6 + :sort 1 + ) + +(defmethod remote-method-24 remote ((obj remote) (arg0 vector)) + (let ((s4-0 (handle->process (-> obj focus handle)))) + (when s4-0 + (set! (-> arg0 quad) (-> (get-trans (the-as process-focusable s4-0) 3) quad)) + (let ((a0-7 (vector-z-quaternion! (new 'stack-no-clear 'vector) (get-quat (the-as process-focusable s4-0) 0)))) + (vector+float*! arg0 arg0 a0-7 (* -16384.0 (- 1.0 (-> obj blend)))) + ) + ) + ) + (lerp-scale 1.0 0.0 (-> obj blend) 0.8 1.0) + ) + +(defmethod remote-method-25 remote ((obj remote)) + (with-pp + (rlet ((acc :class vf) + (vf0 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + (vf7 :class vf) + ) + (init-vf0-vector) + (ja-post) + (if (type? (-> obj root) collide-shape) + (collide-shape-method-46 (the-as collide-shape (-> obj root))) + ) + (when (and (nonzero? (-> obj part)) (and (or (and (-> obj next-state) (= (-> obj next-state name) 'idle)) + (and (-> obj next-state) (= (-> obj next-state name) 'enter)) + ) + (-> obj speak-effect?) + ) + ) + (let ((v1-15 (vector-float*! + (new 'stack-no-clear 'vector) + (-> obj parent-override 0 velocity) + (-> pp clock frames-per-second) + ) + ) + (a0-8 *particle-vel*) + ) + (let ((a1-4 (-> obj node-list data 3 bone transform vector 2))) + (let ((a2-1 20480.0)) + (.mov vf7 a2-1) + ) + (.lvf vf5 (&-> a1-4 quad)) + ) + (.lvf vf4 (&-> v1-15 quad)) + (.add.x.vf vf6 vf0 vf0 :mask #b1000) + (.mul.x.vf acc vf5 vf7 :mask #b111) + (.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111) + (.svf (&-> a0-8 quad) vf6) + ) + (let ((v1-16 *particle-vel*) + (a0-9 *particle-vel*) + (f0-2 300.0) + ) + (vector-float*! v1-16 a0-9 (/ 1.0 f0-2)) + ) + (spawn-with-cspace (-> obj part) (-> obj node-list data 3)) + ) + 0 + (none) + ) + ) + ) + +(defbehavior remote-track remote () + (let ((gp-0 (handle->process (-> self focus handle))) + (s5-0 (new 'stack-no-clear 'vector)) + ) + (set! (-> s5-0 quad) (-> self parent-override 0 trans quad)) + (let ((f30-0 (remote-method-24 self s5-0))) + (let ((a1-2 (new 'stack-no-clear 'vector))) + (set! (-> a1-2 quad) (-> self parent-override 0 trans quad)) + (vector-lerp! (-> self root trans) a1-2 s5-0 (-> self blend)) + ) + (+! (-> self root trans y) + (* 1638.4 (sin (* 54.613335 (the float (mod (-> self clock frame-counter) 1200))))) + ) + (let ((s5-1 (new 'stack-no-clear 'quaternion))) + (forward-up->quaternion + s5-1 + (vector-normalize! (vector-! (new 'stack-no-clear 'vector) (target-pos 8) (-> self root trans)) 1.0) + (new 'static 'vector :y 1.0 :w 1.0) + ) + (rotate-toward-orientation! + (-> self root) + s5-1 + 65536.0 + 5461.3335 + 150 + 0.00000000000000000000000000000000000000000021 + 0.0 + ) + ) + (when gp-0 + (let* ((gp-1 (-> (the-as process-drawable gp-0) root)) + (s4-1 (-> self root trans)) + (f0-6 + (deg-diff (y-angle gp-1) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s4-1 (-> gp-1 trans)))) + ) + ) + (if (< 0.0 f0-6) + (seek! (-> self twist) -0.4 (* 0.3 (-> self clock seconds-per-frame))) + (seek! (-> self twist) 0.4 (* 0.3 (-> self clock seconds-per-frame))) + ) + ) + (let ((a1-9 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-9 from) (process->ppointer self)) + (set! (-> a1-9 num-params) 0) + (set! (-> a1-9 message) 'blocked-side?) + (case (send-event-function (ppointer->process (-> self parent-override)) a1-9) + ((1) + (set! (-> self twist) 0.5) + ) + ((2) + (set! (-> self twist) -0.5) + ) + ((3) + (set! (-> self twist) 0.0) + ) + ) + ) + (send-event (ppointer->process (-> self parent-override)) 'joystick (-> self twist) -1082130432) + ) + (set! (-> self root scale x) f30-0) + (set! (-> self root scale y) f30-0) + (set! (-> self root scale z) f30-0) + ) + ) + 0 + (none) + ) + +(defstate enter (remote) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type + (('die) + (go-virtual exit) + ) + (('speak-effect) + (let ((v0-0 (the-as object (-> event param 0)))) + (set! (-> self speak-effect?) (the-as basic v0-0)) + v0-0 + ) + ) + ) + ) + :enter (behavior () + (set! (-> self start-time) (-> *display* game-clock frame-counter)) + (let* ((gp-0 (ppointer->process (-> self parent-override 0 parent))) + (a1-1 (if (type? gp-0 process-focusable) + gp-0 + ) + ) + ) + (if a1-1 + (try-update-focus (-> self focus) (the-as process-focusable a1-1)) + ) + ) + (none) + ) + :trans (behavior () + (remote-track) + (let ((a0-1 (handle->process (-> self focus handle)))) + (if (and a0-1 (< 0.1 (-> self blend))) + (point-toward-point-clear-roll-pitch! (-> self root) (get-trans (the-as process-focusable a0-1) 0)) + ) + ) + (none) + ) + :code (behavior () + (let* ((gp-0 (ppointer->process (-> self parent-override 0 parent))) + (a0-1 (if (type? gp-0 process-focusable) + (the-as process-focusable gp-0) + ) + ) + ) + (if (and a0-1 (logtest? (focus-status pilot) (-> a0-1 focus-status))) + (send-event + (ppointer->process (-> self parent-override)) + 'set-dist + (new 'static 'vector :z 8192.0 :w 1.0) + (new 'static 'vector :y 20480.0 :z 12288.0 :w 1.0) + ) + (send-event + (ppointer->process (-> self parent-override)) + 'set-dist + (new 'static 'vector :z 16384.0 :w 1.0) + (new 'static 'vector :y 20480.0 :z 40960.0 :w 1.0) + ) + ) + ) + (init (-> self seeker) 1.0 0.01 0.022222223 0.1) + (set! (-> self seeker target) 0.0) + (while (< 0.0001 (-> self blend)) + (update! (-> self seeker) 0.0) + (set! (-> self blend) (-> self seeker value)) + (suspend) + ) + (set! (-> self blend) 0.0) + (go-virtual idle) + (none) + ) + :post (behavior () + (remote-method-25 self) + (none) + ) + ) + +(defstate idle (remote) + :virtual #t + :event (-> (method-of-type remote enter) event) + :trans remote-track + :code (behavior () + (while (handle->process (-> self focus handle)) + (suspend) + (ja :num! (loop!)) + ) + (go-virtual exit) + (none) + ) + :post (-> (method-of-type remote enter) post) + ) + +(defstate exit (remote) + :virtual #t + :trans remote-track + :code (behavior () + (set! (-> self blend) 1.0) + (send-event (ppointer->process (-> self parent-override)) 'change-state empty-state) + (suspend) + 0 + (none) + ) + :post (-> (method-of-type remote enter) post) + ) + +;; WARN: Return type mismatch remote vs none. +(defmethod remote-method-23 remote ((obj remote)) + (reset-to-collide-spec (-> obj focus) (collide-spec jak player-list)) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-voicebox" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj blend) 1.0) + (set! (-> obj draw light-index) (the-as uint 30)) + (set! (-> obj speak-effect?) #f) + (set! (-> obj part) (create-launch-control (-> *part-group-id-table* 77) obj)) + (none) + ) + +(defstate cam-remote (camera-slave) + :event (-> cam-string event) + :enter (-> cam-string enter) + :trans (behavior () + (if (or (not *camera*) (not (logtest? (-> *camera* master-options) 1)) (not (-> self child))) + (deactivate self) + ) + (none) + ) + :code (-> cam-string code) + ) + +(deftype voicebox (remote) + ((hint handle :offset-assert 288) + ) + :heap-base #xb0 + :method-count-assert 26 + :size-assert #x128 + :flag-assert #x1a00b00128 + ) + + +(defstate exit (voicebox) + :virtual #t + :code (behavior () + (remove-setting! 'sound-flava) + (set! (-> self state-time) (-> self clock frame-counter)) + (set! (-> self seeker target) 1.0) + (while (and (< (-> self blend) 0.9999) + (not (and (not (handle->process (-> self hint))) + (>= (- (-> self clock frame-counter) (-> self state-time)) (seconds 0.05)) + (-> *setting-control* user-current hint) + ) + ) + ) + (update! (-> self seeker) 0.0) + (set! (-> self blend) (-> self seeker value)) + (suspend) + ) + (set! (-> self blend) 1.0) + (send-event (ppointer->process (-> self parent-override)) 'change-state empty-state) + (suspend) + (process-drawable-method-17 self) + (none) + ) + ) + +;; WARN: Return type mismatch object vs none. +(defbehavior voicebox-init-by-other voicebox ((arg0 vector) (arg1 handle)) + (set! (-> self hint) arg1) + (set! (-> self root) (new 'process 'trsqv)) + (set! (-> self root trans quad) (-> arg0 quad)) + (set! (-> self base-trans quad) (-> arg0 quad)) + (remote-method-23 self) + (set! (-> self event-hook) (-> (method-of-object self enter) event)) + (go-virtual enter) + (none) + ) + +(defun voicebox-spawn ((arg0 process-drawable) (arg1 vector)) + (with-pp + (when *camera* + (let ((s3-0 (process-spawn camera-remote :init cam-slave-init cam-remote #f :from *camera-dead-pool* :to arg0))) + (if s3-0 + (process-spawn voicebox arg1 (process->handle pp) :to (ppointer->process s3-0)) + ) + ) + ) + ) + ) + +(deftype judge (remote) + ((total-time time-frame :offset-assert 288) + (beep-time time-frame :offset-assert 296) + (hud-timer handle :offset-assert 304) + (score uint8 :offset-assert 312) + ) + :heap-base #xc0 + :method-count-assert 28 + :size-assert #x139 + :flag-assert #x1c00c00139 + (:methods + (wait () _type_ :state 26) + (judge-method-27 (_type_) none 27) + ) + ) + + +(defmethod remote-method-24 judge ((obj judge) (arg0 vector)) + (set! (-> arg0 quad) (-> obj base-trans quad)) + 1.0 + ) + +(defmethod remote-method-25 judge ((obj judge)) + (ja-post) + (if (type? (-> obj root) collide-shape) + (collide-shape-method-46 (the-as collide-shape (-> obj root))) + ) + (when (and (-> obj next-state) (let ((v1-6 (-> obj next-state name))) + (or (= v1-6 'idle) (= v1-6 'enter)) + ) + ) + (if *target* + (set! (-> *game-info* score) (-> *target* fact-info-override trick-point)) + ) + (let ((v1-15 (the-as int (- (-> obj total-time) (- (-> *display* game-clock frame-counter) (-> obj start-time)))))) + (if (< (the-as time-frame v1-15) 0) + (set! v1-15 0) + ) + (set! (-> *game-info* timer) (the-as time-frame v1-15)) + ) + ) + 0 + (none) + ) + +(defstate wait (judge) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type + (('die) + (sound-play "judge-stop") + (go-virtual exit) + ) + (('touch 'attack) + (let ((s4-0 (process-spawn camera-remote :init cam-slave-init cam-remote #f :from *camera-dead-pool* :to proc)) + (s5-2 (if (type? proc process-focusable) + (the-as process-focusable proc) + ) + ) + ) + (when (and s4-0 + (begin (send-event s5-2 'change-mode 'board #f) (logtest? (focus-status board) (-> s5-2 focus-status))) + ) + (change-parent self (ppointer->process s4-0)) + (try-update-focus (-> self focus) s5-2) + (go-virtual enter) + ) + ) + ) + (('waiting) + #t + ) + ) + ) + :code (behavior () + (transform-post) + (logior! (-> self mask) (process-mask sleep)) + (suspend) + 0 + (none) + ) + ) + +(defstate enter (judge) + :virtual #t + :enter (behavior () + (set! (-> self start-time) (-> *display* game-clock frame-counter)) + (send-event *target* 'get-pickup 20 (the float (-> self total-time))) + (sound-play "judge-start") + (set! (-> self hud-timer) (ppointer->handle (process-spawn hud-timer :init hud-init-by-other :to self))) + (none) + ) + ) + +(defstate idle (judge) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type + (('die) + (sound-play "judge-stop") + (go-virtual exit) + ) + ) + ) + :code (behavior () + (while (let ((a0-2 (handle->process (-> self focus handle)))) + (and a0-2 (!= (send-event a0-2 'test-pickup 20) 0.0)) + ) + (suspend) + (ja :num! (loop!)) + ) + (send-event (handle->process (-> self hud-timer)) 'hide-and-die) + (go-virtual exit) + (none) + ) + ) + +(defmethod judge-method-27 judge ((obj judge)) + (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let ((v1-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) + (set! (-> v1-2 prim-core collide-as) (collide-spec collectable)) + (set! (-> v1-2 prim-core collide-with) (collide-spec jak player-list tobot)) + (set-vector! (-> v1-2 local-sphere) 0.0 0.0 0.0 16384.0) + (set! (-> s5-0 total-prims) (the-as uint 1)) + (set! (-> s5-0 root-prim) v1-2) + ) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (let ((v1-5 (-> s5-0 root-prim))) + (set! (-> s5-0 backup-collide-as) (-> v1-5 prim-core collide-as)) + (set! (-> s5-0 backup-collide-with) (-> v1-5 prim-core collide-with)) + ) + (set! (-> obj root) s5-0) + ) + 0 + (none) + ) + +;; WARN: Return type mismatch object vs none. +(defmethod init-from-entity! judge ((obj judge) (arg0 entity-actor)) + (judge-method-27 obj) + (remote-method-23 obj) + (process-drawable-from-entity! obj arg0) + (set! (-> obj root trans y) (+ 4096.0 (-> obj root trans y))) + (set! (-> obj base-trans quad) (-> obj root trans quad)) + (set! (-> obj total-time) (seconds 90)) + (go (method-of-object obj wait)) + (none) + ) + +;; WARN: Return type mismatch object vs none. +(defbehavior judge-init-by-other judge ((arg0 vector) (arg1 uint)) + (process-entity-set! self (the-as entity-actor #f)) + (set! (-> self score) arg1) + (judge-method-27 self) + (remote-method-23 self) + (vector-identity! (-> self root scale)) + (quaternion-identity! (-> self root quat)) + (set! (-> self root trans quad) (-> arg0 quad)) + (set! (-> self base-trans quad) (-> self root trans quad)) + (set! (-> self total-time) (seconds 90)) + (go-virtual wait) + (none) + ) + +;; WARN: Return type mismatch (pointer process) vs (pointer judge). +(defun judge-spawn ((arg0 process-tree) (arg1 vector) (arg2 uint)) + (process-spawn judge arg1 arg2 :to arg0) + ) diff --git a/goal_src/jak2/engine/common_objs/water.gc b/goal_src/jak2/engine/common_objs/water.gc index 9e7e8bcbf3..5507c106ea 100644 --- a/goal_src/jak2/engine/common_objs/water.gc +++ b/goal_src/jak2/engine/common_objs/water.gc @@ -1514,7 +1514,7 @@ ) (('ocean) (set! (-> arg0 flags) (water-flags active use-ocean)) - (set! (-> arg0 trans y) (ocean-method-11 *ocean* (the-as (inline-array vector) (-> arg0 trans)) #f)) + (set! (-> arg0 trans y) (ocean-method-11 *ocean* (-> arg0 trans) #f)) (set! (-> arg0 base-height) (ocean-map-method-10 *ocean-map*)) (when (= (-> arg0 trans y) 4095996000.0) (set! (-> arg0 flags) (water-flags)) diff --git a/goal_src/jak2/engine/debug/debug-part.gc b/goal_src/jak2/engine/debug/debug-part.gc index 5c6b549917..c5f892bb37 100644 --- a/goal_src/jak2/engine/debug/debug-part.gc +++ b/goal_src/jak2/engine/debug/debug-part.gc @@ -5,6 +5,8 @@ ;; name in dgo: debug-part ;; dgos: ENGINE, GAME +;; og:ignore-form:sparticle-track-root-money + ;; DECOMP BEGINS ;; this file is debug only @@ -1660,7 +1662,7 @@ ) ) -;; ERROR: function has no type analysis. Cannot decompile. +;; ERROR: failed type prop at 2: Unknown symbol: hud-money (defpart 412 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x92 :page #xc)) diff --git a/goal_src/jak2/engine/entity/entity-h.gc b/goal_src/jak2/engine/entity/entity-h.gc index 6273ac1fed..ed6e6ee617 100644 --- a/goal_src/jak2/engine/entity/entity-h.gc +++ b/goal_src/jak2/engine/entity/entity-h.gc @@ -44,6 +44,9 @@ (define-extern process-by-ename (function string process)) (define-extern entity-birth-no-kill (function entity process)) +;; NOTE - for voicebox +(define-extern process-entity-set! (function process entity-actor entity-actor)) + ;; DECOMP BEGINS (define *generate-actor-vis* #f) diff --git a/goal_src/jak2/engine/game/task/task-arrow.gc b/goal_src/jak2/engine/game/task/task-arrow.gc index 01be98b6ec..eac836ffcf 100644 --- a/goal_src/jak2/engine/game/task/task-arrow.gc +++ b/goal_src/jak2/engine/game/task/task-arrow.gc @@ -16,6 +16,11 @@ ) ;; ---task-arrow-flags +(declare-type task-arrow-params structure) +(declare-type task-arrow process-drawable) +(define-extern task-arrow-init-by-other (function task-arrow-params task-arrow :behavior task-arrow)) +(define-extern task-arrow-spawn (function task-arrow-params task-arrow process)) + ;; DECOMP BEGINS (defskelgroup skel-task-arrow ctywide-arrow 0 2 diff --git a/goal_src/jak2/engine/gfx/mood/weather-part.gc b/goal_src/jak2/engine/gfx/mood/weather-part.gc index 259d499905..3e3db0ca37 100644 --- a/goal_src/jak2/engine/gfx/mood/weather-part.gc +++ b/goal_src/jak2/engine/gfx/mood/weather-part.gc @@ -122,7 +122,6 @@ ) ) -;; failed to figure out what this is: (defpart 47 :init-specs ((sp-flt spt-scalevel-x (meters 0.004166667)) (sp-copy-from-other spt-scalevel-y -4) @@ -130,7 +129,6 @@ ) ) -;; failed to figure out what this is: (defpart 44 :init-specs ((sp-flt spt-num 1.0) (sp-int spt-rot-x 12) @@ -148,12 +146,10 @@ ) ) -;; failed to figure out what this is: (defpart 48 :init-specs ((sp-flt spt-fade-g -5.1200004)) ) -;; failed to figure out what this is: (defpart 45 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x29 :page #xc)) (sp-flt spt-num 0.1) @@ -174,7 +170,6 @@ ) ) -;; failed to figure out what this is: (defpart 41 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) (sp-flt spt-num 1.0) @@ -195,7 +190,6 @@ ) ) -;; failed to figure out what this is: (defpart 49 :init-specs ((sp-flt spt-scalevel-x (meters 0.008333334)) (sp-copy-from-other spt-scalevel-y -4) @@ -203,7 +197,6 @@ ) ) -;; failed to figure out what this is: (defpart 42 :init-specs ((sp-flt spt-num 1.0) (sp-int spt-rot-x 24) @@ -221,12 +214,10 @@ ) ) -;; failed to figure out what this is: (defpart 50 :init-specs ((sp-flt spt-fade-g -10.240001)) ) -;; failed to figure out what this is: (defpartgroup group-stars :id 2 :flags (always-draw) @@ -234,7 +225,6 @@ :parts ((sp-item 51 :flags (bit6)) (sp-item 52 :flags (bit6)) (sp-item 53 :flags (bit6))) ) -;; failed to figure out what this is: (defpart 51 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc)) (sp-flt spt-num 1.0) @@ -256,17 +246,14 @@ ) ) -;; failed to figure out what this is: (defpart 54 :init-specs ((sp-flt spt-fade-a 0.0) (sp-int spt-next-time 29999700) (sp-launcher-by-id spt-next-launcher 55)) ) -;; failed to figure out what this is: (defpart 55 :init-specs ((sp-flt spt-fade-a -0.42666668)) ) -;; failed to figure out what this is: (defpart 52 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc)) (sp-flt spt-num 1.0) @@ -288,7 +275,6 @@ ) ) -;; failed to figure out what this is: (defpart 53 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc)) (sp-flt spt-num 1.0) @@ -310,7 +296,6 @@ ) ) -;; failed to figure out what this is: (defpart 56 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc)) (sp-flt spt-num 4.0) @@ -335,7 +320,6 @@ ) ) -;; failed to figure out what this is: (defpart 58 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc)) (sp-flt spt-num 0.0) @@ -360,19 +344,14 @@ ) ) -;; failed to figure out what this is: (defpart 57 :init-specs ((sp-flt spt-fade-a 0.0) (sp-int spt-next-time 1200) (sp-launcher-by-id spt-next-launcher 59)) ) -;; failed to figure out what this is: (defpart 59 :init-specs ((sp-flt spt-fade-a -0.85333335)) ) -;; definition for function update-snow -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defun update-snow ((arg0 float) (arg1 vector) (arg2 vector)) (let ((f0-0 (lerp-scale 0.0 1.0 (vector-length arg2) 2048.0 40960.0))) (set! (-> *part-id-table* 58 init-specs 1 initial-valuef) (- 1.0 f0-0)) @@ -399,7 +378,6 @@ (none) ) -;; failed to figure out what this is: (defpart 60 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) (sp-func spt-birth-func 'birth-func-rain) @@ -421,7 +399,6 @@ ) ) -;; failed to figure out what this is: (defpart 61 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) (sp-func spt-birth-func 'birth-func-rain) @@ -443,7 +420,6 @@ ) ) -;; failed to figure out what this is: (defpart 62 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) (sp-rnd-flt spt-num 1.0 3.0 1.0) @@ -472,7 +448,6 @@ ) ) -;; failed to figure out what this is: (defpart 64 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc)) (sp-func spt-birth-func 'birth-func-omega-normal-orient) @@ -499,7 +474,6 @@ ) ) -;; failed to figure out what this is: (defpart 65 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x92 :page #xc)) (sp-rnd-flt spt-num 2.0 4.0 1.0) @@ -524,7 +498,6 @@ ) ) -;; failed to figure out what this is: (defpart 66 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) (sp-flt spt-num 1.0) @@ -548,8 +521,6 @@ ) ) -;; definition for function birth-func-omega-normal-orient -;; WARN: Return type mismatch int vs none. (defun birth-func-omega-normal-orient ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sprite-vec-data-3d) @@ -592,9 +563,6 @@ ) ) -;; definition for function birth-func-rain -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defun birth-func-rain ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sprite-vec-data-3d) @@ -632,7 +600,7 @@ ) ) ) - (let ((f0-21 (ocean-method-11 *ocean* (the-as (inline-array vector) (-> arg2 x-y-z-sx)) #f))) + (let ((f0-21 (ocean-method-11 *ocean* (-> arg2 x-y-z-sx) #f))) (when (!= f0-21 4095996000.0) (when (< (-> arg1 user-float) f0-21) (set! (-> arg1 user-float) f0-21) @@ -648,8 +616,6 @@ (none) ) -;; definition for function check-drop-level-rain -;; INFO: Used lq/sq (defun check-drop-level-rain ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (when (< (-> arg2 y) (-> arg1 user-float)) (let ((s4-0 (new 'stack-no-clear 'vector)) @@ -719,7 +685,6 @@ (none) ) -;; definition for function check-drop-level-rain2 ;; WARN: Return type mismatch symbol vs none. (defun check-drop-level-rain2 ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (if (< (-> arg2 y) (-> arg1 user-float)) @@ -728,7 +693,6 @@ (none) ) -;; definition for function check-drop-level-splash ;; WARN: Return type mismatch symbol vs none. (defun check-drop-level-splash ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (sparticle-motion-blur arg0 arg1 arg2) @@ -738,9 +702,6 @@ (none) ) -;; definition for function update-rain -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defun update-rain ((arg0 float) (arg1 vector) (arg2 vector)) (let ((v1-0 (new 'stack-no-clear 'vector))) (set! (-> v1-0 x) (-> arg2 x)) @@ -796,8 +757,6 @@ (none) ) -;; definition for function cam-master-effect -;; WARN: Return type mismatch int vs none. (defbehavior cam-master-effect camera-master () (when (not (or (movie?) (>= (+ (-> self clock frame-counter) (seconds -10)) (-> self water-drip-time)))) (set! (-> *part-id-table* 46 init-specs 1 initial-valuef) (-> self water-drip-mult)) @@ -812,8 +771,6 @@ (none) ) -;; definition for function sparticle-track-sun -;; WARN: Return type mismatch int vs none. (defun sparticle-track-sun ((arg0 int) (arg1 sparticle-cpuinfo) (arg2 matrix)) (-> arg1 key) (let* ((s3-0 (the int (-> arg1 user-float))) @@ -840,7 +797,6 @@ (none) ) -;; failed to figure out what this is: (defpartgroup group-sun :id 3 :flags (always-draw) @@ -848,7 +804,6 @@ :parts ((sp-item 67 :flags (bit6)) (sp-item 68 :flags (bit6))) ) -;; failed to figure out what this is: (defpart 67 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) (sp-flt spt-num 1.0) @@ -868,7 +823,6 @@ ) ) -;; failed to figure out what this is: (defpart 68 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) (sp-flt spt-num 1.0) @@ -888,7 +842,6 @@ ) ) -;; failed to figure out what this is: (defpartgroup group-green-sun :id 4 :flags (always-draw) @@ -896,7 +849,6 @@ :parts ((sp-item 69 :flags (bit6)) (sp-item 70 :flags (bit6))) ) -;; failed to figure out what this is: (defpart 69 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) (sp-flt spt-num 1.0) @@ -916,7 +868,6 @@ ) ) -;; failed to figure out what this is: (defpart 70 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) (sp-flt spt-num 1.0) @@ -936,7 +887,6 @@ ) ) -;; failed to figure out what this is: (defpartgroup group-moon :id 5 :flags (always-draw) @@ -944,7 +894,6 @@ :parts ((sp-item 71 :flags (bit6))) ) -;; failed to figure out what this is: (defpart 71 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) (sp-flt spt-num 1.0) diff --git a/goal_src/jak2/engine/gfx/ocean/ocean-h.gc b/goal_src/jak2/engine/gfx/ocean/ocean-h.gc index 9e2abdc746..bdd074da9d 100644 --- a/goal_src/jak2/engine/gfx/ocean/ocean-h.gc +++ b/goal_src/jak2/engine/gfx/ocean/ocean-h.gc @@ -512,7 +512,7 @@ :size-assert #x206c :flag-assert #x5c0000206c (:methods - (ocean-method-11 (_type_ (inline-array vector) symbol) float 11) + (ocean-method-11 (_type_ vector symbol) float 11) (draw! (_type_) none 12) (update-map (_type_) none 13) (ocean-method-14 () none 14) @@ -522,7 +522,7 @@ (ocean-method-18 () none 18) (ocean-method-19 () none 19) (ocean-method-20 () none 20) - (ocean-method-21 () none 21) + (ocean-method-21 (_type_ float float) float 21) (ocean-method-22 () none 22) (ocean-method-23 () none 23) (ocean-method-24 () none 24) @@ -937,4 +937,4 @@ :mask-hi (new 'static 'vector4w :x -65536 :y -65536 :z -65536 :w -65536) :mask-lo (new 'static 'vector4w :x #xffff :y #xffff :z #xffff :w #xffff) ) - ) \ No newline at end of file + ) diff --git a/goal_src/jak2/engine/gfx/sprite/particles/sparticle-launcher.gc b/goal_src/jak2/engine/gfx/sprite/particles/sparticle-launcher.gc index 971b6ca654..14bc15016a 100644 --- a/goal_src/jak2/engine/gfx/sprite/particles/sparticle-launcher.gc +++ b/goal_src/jak2/engine/gfx/sprite/particles/sparticle-launcher.gc @@ -1828,7 +1828,9 @@ ) (defun birth-func-ocean-height ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) - (set! (-> arg2 vector 0 y) (+ (ocean-method-11 *ocean* (-> arg2 vector) #t) (-> arg1 user-float))) + (set! (-> arg2 vector 0 y) + (+ (ocean-method-11 *ocean* (the-as vector (-> arg2 vector)) #t) (-> arg1 user-float)) + ) 0 (none) ) diff --git a/goal_src/jak2/engine/physics/rigid-body-h.gc b/goal_src/jak2/engine/physics/rigid-body-h.gc index 673758db86..6c565b9340 100644 --- a/goal_src/jak2/engine/physics/rigid-body-h.gc +++ b/goal_src/jak2/engine/physics/rigid-body-h.gc @@ -352,7 +352,7 @@ (:methods (idle () _type_ :state 27) (active () _type_ :state 28) - (rigid-body-object-method-29 (_type_) none 29) + (rigid-body-object-method-29 (_type_ float) none 29) (rigid-body-object-method-30 (_type_) none 30) (rigid-body-object-method-31 (_type_ rigid-body-object-constants) none 31) (rigid-body-object-method-32 (_type_) none 32) diff --git a/goal_src/jak2/engine/physics/rigid-body.gc b/goal_src/jak2/engine/physics/rigid-body.gc index 91aa796262..a5ab97fa7c 100644 --- a/goal_src/jak2/engine/physics/rigid-body.gc +++ b/goal_src/jak2/engine/physics/rigid-body.gc @@ -505,9 +505,7 @@ ) ) ((method-of-type rigid-body-info rigid-body-info-method-9) (the-as rigid-body-info (&-> (-> obj info) mass))) - (set! (-> obj rbody state force-callback) - (the-as (function object float none) (method-of-object obj rigid-body-object-method-29)) - ) + (set! (-> obj rbody state force-callback) (method-of-object obj rigid-body-object-method-29)) 0 (none) ) @@ -529,11 +527,11 @@ (none) ) -(defmethod rigid-body-object-method-29 rigid-body-object ((obj rigid-body-object)) - (let ((a1-0 (new 'stack-no-clear 'vector))) - (vector-reset! a1-0) - (set! (-> a1-0 y) (* -1.0 (-> obj info gravity) (-> obj rbody state info mass))) - (rigid-body-method-20 (-> obj rbody state) a1-0) +(defmethod rigid-body-object-method-29 rigid-body-object ((obj rigid-body-object) (arg0 float)) + (let ((a1-1 (new 'stack-no-clear 'vector))) + (vector-reset! a1-1) + (set! (-> a1-1 y) (* -1.0 (-> obj info gravity) (-> obj rbody state info mass))) + (rigid-body-method-20 (-> obj rbody state) a1-1) ) 0 (none) diff --git a/goal_src/jak2/engine/process-drawable/process-taskable-h.gc b/goal_src/jak2/engine/process-drawable/process-taskable-h.gc index cae3985257..789d2a02d5 100644 --- a/goal_src/jak2/engine/process-drawable/process-taskable-h.gc +++ b/goal_src/jak2/engine/process-drawable/process-taskable-h.gc @@ -34,9 +34,9 @@ (play-game (game-task-event) _type_ :state 30) (process-taskable-method-31 (_type_) none 31) (process-taskable-method-32 (_type_) none 32) - (process-taskable-method-33 (_type_) none 33) + (init-skeleton! (_type_) none 33) (process-taskable-method-34 (_type_) symbol 34) - (process-taskable-method-35 (_type_) art-joint-anim 35) + (get-art-elem (_type_) art-element 35) (process-taskable-method-36 (_type_) none 36) (process-taskable-method-37 (_type_) none 37) ) diff --git a/goal_src/jak2/engine/process-drawable/process-taskable.gc b/goal_src/jak2/engine/process-drawable/process-taskable.gc index 965f575c74..b7a606fab5 100644 --- a/goal_src/jak2/engine/process-drawable/process-taskable.gc +++ b/goal_src/jak2/engine/process-drawable/process-taskable.gc @@ -15,12 +15,15 @@ (the-as process-taskable ((method-of-type process-focusable relocate) obj arg0)) ) -(defbehavior process-taskable-anim-loop process-taskable ((arg0 (function symbol))) - (while (begin self (arg0)) - (let ((s5-0 (process-taskable-method-35 self))) +(defbehavior process-taskable-anim-loop process-taskable ((arg0 (function process-taskable object))) + "Takes in a function and loops as long as it's return value is truthy + Seen take in - `true-func` which takes no args TODO - seems fishy + - a `(process-taskable process) lambda" + (while (arg0 self) + (let ((s5-0 (get-art-elem self))) (when (!= (ja-group) s5-0) (ja-channel-push! 1 0) - (set! (-> self skel root-channel 0 frame-group) s5-0) + (set! (-> self skel root-channel 0 frame-group) (the-as art-joint-anim s5-0)) ) ) (suspend) @@ -37,10 +40,14 @@ #t ) -(defmethod process-taskable-method-35 process-taskable ((obj process-taskable)) - (if (> (-> obj skel active-channels) 0) - (-> obj skel root-channel 0 frame-group) - ) +;; WARN: Return type mismatch art-joint-anim vs art-element. +(defmethod get-art-elem process-taskable ((obj process-taskable)) + "Checks various things such the current actor, task status, etc to determine the right art-group data to use + @returns the appropriate [[art-element]] for the given NPC" + (the-as art-element (if (> (-> obj skel active-channels) 0) + (-> obj skel root-channel 0 frame-group) + ) + ) ) (defmethod process-taskable-method-36 process-taskable ((obj process-taskable)) @@ -144,7 +151,6 @@ ((= v1-0 'touch) (collide-shape-method-50 (-> self root-override) proc (-> event param 0) 0.7 6144.0 16384.0) ) - ;; TODO - manually fixed! ((= v1-0 'say) (set! (-> self want-to-say) (-> self clock frame-counter)) ) @@ -288,7 +294,7 @@ (none) ) :code (behavior () - (process-taskable-anim-loop true-func) + (process-taskable-anim-loop (the-as (function process-taskable object) true-func)) (none) ) :post (behavior () @@ -438,7 +444,8 @@ (none) ) -(defmethod process-taskable-method-33 process-taskable ((obj process-taskable)) +(defmethod init-skeleton! process-taskable ((obj process-taskable)) + "@see [[initialize-skeleton]]" 0 (none) ) @@ -451,7 +458,7 @@ (set! (-> obj task) (new 'process 'game-task-control (res-lump-value arg0 'task-actor game-task-actor :time -1000000000.0)) ) - (process-taskable-method-33 obj) + (init-skeleton! obj) (process-taskable-method-32 obj) (when (logtest? #x1000000 (res-lump-value arg0 'options uint128 :time -1000000000.0)) (let* ((s5-1 *level*) diff --git a/goal_src/jak2/engine/scene/scene-h.gc b/goal_src/jak2/engine/scene/scene-h.gc index b76b2f3b51..49980641ef 100644 --- a/goal_src/jak2/engine/scene/scene-h.gc +++ b/goal_src/jak2/engine/scene/scene-h.gc @@ -13,7 +13,7 @@ (deftype scene-actor (basic) ((name string :offset-assert 4) - (level basic :offset-assert 8) + (level symbol :offset-assert 8) (art-group string :offset-assert 12) (prefix string :offset-assert 16) (draw-frames pair :offset-assert 20) @@ -45,24 +45,28 @@ (art-group string :offset-assert 40) (anim string :offset-assert 44) (parts int32 :offset-assert 48) - (command-list basic :offset-assert 52) + (command-list pair :offset-assert 52) (cut-list pair :offset-assert 56) (wait-max-time time-frame :offset-assert 64) (wait-air-time time-frame :offset-assert 72) (wait-ground-time time-frame :offset-assert 80) (draw-target level-load-info :offset-assert 88) - (abort basic :offset-assert 92) + (abort symbol :offset-assert 92) (actor (array scene-actor) :offset-assert 96) - (load-point string :offset-assert 100) - (end-point string :offset-assert 104) - (borrow basic :offset-assert 108) + (load-point-obj object :offset-assert 100) + (load-point continue-point :offset 100) + (load-point-name string :offset 100) + (end-point-obj object :offset-assert 104) + (end-point continue-point :offset 104) + (end-point-name string :offset 104) + (borrow pair :offset-assert 108) (sfx-volume float :offset-assert 112) (ambient-volume float :offset-assert 116) (music-volume float :offset-assert 120) - (blackout-end basic :offset-assert 124) - (peaceful basic :offset-assert 128) + (blackout-end symbol :offset-assert 124) + (peaceful symbol :offset-assert 128) (music-delay float :offset-assert 132) - (save basic :offset-assert 136) + (save symbol :offset-assert 136) (scene-task uint16 :offset-assert 140) ) :method-count-assert 17 diff --git a/goal_src/jak2/engine/target/target-h.gc b/goal_src/jak2/engine/target/target-h.gc index 83b70f9469..4f0a777090 100644 --- a/goal_src/jak2/engine/target/target-h.gc +++ b/goal_src/jak2/engine/target/target-h.gc @@ -143,6 +143,7 @@ (deftype target (process-focusable) ((control control-info :offset 128) + (fact-info-override fact-info-target :offset 160) (skel2 joint-control :offset-assert 204) (shadow-backup shadow-geo :offset-assert 208) (target-flags uint32 :offset 188) diff --git a/goal_src/jak2/levels/common/races/race-part.gc b/goal_src/jak2/levels/common/races/race-part.gc index 573b221112..1cddb01f57 100644 --- a/goal_src/jak2/levels/common/races/race-part.gc +++ b/goal_src/jak2/levels/common/races/race-part.gc @@ -7,3 +7,235 @@ ;; DECOMP BEGINS +(defpartgroup group-race-signal-red-light-3 + :id 194 + :bounds (static-bspherem 0 0 0 1) + :parts ((sp-item 905 :flags (bit6))) + ) + +(defpart 905 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbc :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 3) (meters 0.5) 1.0) + (sp-flt spt-rot-x 4096.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 0.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 64.0) + (sp-flt spt-omega 4097638.5) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 4096.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +(defpartgroup group-race-signal-red-light-2 + :id 195 + :bounds (static-bspherem 0 0 0 1) + :parts ((sp-item 906 :flags (bit6))) + ) + +(defpart 906 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbc :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 4) (meters 0.5) 1.0) + (sp-flt spt-rot-x 4096.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 0.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 64.0) + (sp-flt spt-omega 4097638.5) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 4096.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +(defpartgroup group-race-signal-red-light-1 + :id 196 + :bounds (static-bspherem 0 0 0 1) + :parts ((sp-item 907 :flags (bit6))) + ) + +(defpart 907 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbc :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 6) (meters 0.5) 1.0) + (sp-flt spt-rot-x 4096.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 0.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 64.0) + (sp-flt spt-omega 4097638.5) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 4096.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +(defpartgroup group-race-signal-green-light + :id 197 + :bounds (static-bspherem 0 0 0 1) + :parts ((sp-item 908 :flags (bit6))) + ) + +(defpart 908 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbc :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 8) (meters 1) 1.0) + (sp-flt spt-rot-x 4096.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 96.0) + (sp-flt spt-omega 4097638.5) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 4096.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +(defpartgroup group-turbo-pickup + :id 198 + :linger-duration (seconds 1) + :bounds (static-bspherem 0 0 0 8) + :parts ((sp-item 909 :fade-after (meters 90) :falloff-to (meters 90) :flags (is-3d)) + (sp-item 910 :flags (is-3d)) + (sp-item 911 :flags (bit6)) + (sp-item 912 :flags (is-3d bit6)) + (sp-item 913 :fade-after (meters 120) :falloff-to (meters 120)) + ) + ) + +(defpart 913 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc)) + (sp-rnd-flt spt-num 1.0 1.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.15) 1.0) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 96.0 32.0 1.0) + (sp-flt spt-omega 34.816) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.026666667) 1.0) + (sp-flt spt-scalevel-x (meters -0.00033333333)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -1.7066667) + (sp-flt spt-friction 0.97) + (sp-int spt-timer 75) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-func spt-func 'sparticle-motion-blur) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 3600.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 3600.0) 1.0) + (sp-rnd-flt spt-conerot-z (degrees 0.0) (degrees 3600.0) 1.0) + ) + ) + +(defpart 909 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x86 :page #xd2e)) + (sp-flt spt-num 0.05) + (sp-flt spt-scale-x (meters 0.5)) + (sp-rnd-flt spt-rot-x 0.0 655360.0 1.0) + (sp-rnd-flt spt-rot-y (degrees 0.0) (degrees 3600.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 3600.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 64.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 64.0) + (sp-flt spt-scalevel-x (meters 0.0055555557)) + (sp-flt spt-rotvel-x (degrees 0.8)) + (sp-flt spt-rotvel-y (degrees 0.8)) + (sp-flt spt-rotvel-z (degrees 0.8)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-int spt-timer 450) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat) + ) + ) + +(defpart 912 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc)) + (sp-func spt-birth-func 'birth-func-camera-orient) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 1.5) (meters 2.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +(defpart 910 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x86 :page #xd2e)) + (sp-func spt-birth-func 'birth-func-camera-orient) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 2.9) (meters 0.3) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 64.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 64.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +(defpart 911 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 8) (meters 0.2) 1.0) + (sp-flt spt-rot-x 4096.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 0.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 8.0 1.0) + (sp-flt spt-omega 4097638.5) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 0.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +(defpartgroup group-turbo-pickup-explode + :id 199 + :duration (seconds 0.017) + :linger-duration (seconds 1) + :bounds (static-bspherem 0 0 0 32) + :parts ((sp-item 914 :flags (bit6))) + ) + +(defpart 914 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 16)) + (sp-flt spt-rot-x 4096.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 64.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 128.0) + (sp-flt spt-omega 4097638.5) + (sp-flt spt-scalevel-x (meters -0.26666668)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -1.6) + (sp-flt spt-fade-a -3.2) + (sp-int spt-timer 40) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 0.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) diff --git a/goal_src/jak2/levels/common/scene-actor.gc b/goal_src/jak2/levels/common/scene-actor.gc index a43f89acdd..77cf05fd7f 100644 --- a/goal_src/jak2/levels/common/scene-actor.gc +++ b/goal_src/jak2/levels/common/scene-actor.gc @@ -5,5 +5,1193 @@ ;; name in dgo: scene-actor ;; dgos: GAME, COMMON +(declare-type onin-game process-drawable) +(define-extern onin-game-init (function entity none)) + ;; DECOMP BEGINS +(defskelgroup skel-scenecamera scenecamera 0 -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :texture-level 6 + ) + +(defskelgroup skel-particleman particleman 0 -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 10) + :origin-joint-index 3 + ) + +(defskelgroup skel-jakone-highres jakone-highres 0 -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3.2) + :longest-edge (meters 1) + :sort 1 + :origin-joint-index 3 + :shadow-joint-index 3 + ) + +(defskelgroup skel-darkjak-highres darkjak-highres 0 -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3.2) + :longest-edge (meters 1) + :sort 1 + :origin-joint-index 3 + :shadow-joint-index 3 + ) + +(defskelgroup skel-jak-highres-prison jak-highres-prison 0 -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3.2) + :longest-edge (meters 1) + :shadow 2 + :sort 1 + :origin-joint-index 3 + :shadow-joint-index 3 + ) + +(defskelgroup skel-youngsamos-highres youngsamos-highres 0 3 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3.2) + :shadow 2 + :origin-joint-index 3 + ) + +(defskelgroup skel-samos-highres samos-highres 0 3 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3.2) + :shadow 2 + :origin-joint-index 3 + ) + +(defskelgroup skel-kor-highres kor-highres 0 3 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3) + :shadow 2 + :origin-joint-index 3 + ) + +(defskelgroup skel-metalkor-highres metalkor-highres 0 3 + ((1 (meters 999999))) + :bounds (static-spherem 0 2 2 8) + :shadow 2 + :origin-joint-index 3 + ) + +(defskelgroup skel-metalkor-highres-lowtorso metalkor-highres 7 10 + ((8 (meters 999999))) + :bounds (static-spherem 0 -9 -12 22) + :shadow 9 + :origin-joint-index 3 + ) + +(defskelgroup skel-metalkor-highres-legs metalkor-highres 14 17 + ((15 (meters 999999))) + :bounds (static-spherem 0 -9 2 15) + :shadow 16 + :origin-joint-index 3 + ) + +(defskelgroup skel-metalkor-highres-wings metalkor-highres 21 24 + ((22 (meters 999999))) + :bounds (static-spherem 0 8 -5 20) + :shadow 23 + :origin-joint-index 3 + ) + +(defskelgroup skel-kor-transform kor-transform 0 3 + ((1 (meters 999999))) + :bounds (static-spherem 0 2 2 8) + :shadow 2 + :origin-joint-index 3 + ) + +(defskelgroup skel-kor-transform-monsterparts kor-transform 5 8 + ((6 (meters 999999))) + :bounds (static-spherem 0 -9 -12 22) + :shadow 7 + :origin-joint-index 3 + ) + +(defskelgroup skel-baron-highres baron-highres 0 3 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3) + :shadow 2 + :origin-joint-index 3 + ) + +(defskelgroup skel-errol-highres errol-highres 0 3 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3) + :shadow 2 + :origin-joint-index 3 + ) + +(defskelgroup skel-onin-highres onin-highres 0 3 + ((1 (meters 200))) + :bounds (static-spherem 0 0 0 5) + :shadow 2 + :origin-joint-index 3 + ) + +(defskelgroup skel-pecker-highres pecker-highres 0 3 + ((1 (meters 200))) + :bounds (static-spherem 0 0 0 5) + :shadow 2 + :origin-joint-index 3 + ) + +(defskelgroup skel-kid-highres kid-highres 0 3 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3) + :shadow 2 + :origin-joint-index 3 + :shadow-joint-index 3 + ) + +(defskelgroup skel-crocadog-highres crocadog-highres 0 3 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3) + :shadow 2 + :origin-joint-index 3 + ) + +(defskelgroup skel-crimson-guard-highres crimson-guard-highres 0 -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3) + :shadow 2 + :origin-joint-index 3 + ) + +(defskelgroup skel-crimson-guard-lowres crimson-guard-lowres 0 -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3) + :shadow 2 + :origin-joint-index 3 + ) + +(defskelgroup skel-crimson-guard-hover crimson-guard-hover 0 -1 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 0 0 7.5) + :shadow 3 + :origin-joint-index 3 + ) + +(defskelgroup skel-atoll-hellcat atoll-hellcat 0 4 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 8.5) + :origin-joint-index 3 + ) + +(defskelgroup skel-rift-rider rift-rider 0 4 + ((1 (meters 999999))) + :bounds (static-spherem 0 1.5 0 5) + :shadow 2 + :origin-joint-index 3 + :shadow-joint-index 3 + ) + +(defskelgroup skel-torn-highres torn-highres 0 3 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 2.5) + :shadow 2 + :origin-joint-index 3 + ) + +(defskelgroup skel-sig-highres sig-highres 0 3 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 5) + :shadow 2 + :origin-joint-index 30 + ) + +(defskelgroup skel-ashelin-highres ashelin-highres 0 3 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 5) + :shadow 2 + :origin-joint-index 3 + :shadow-joint-index 3 + ) + +(defskelgroup skel-brutter-highres brutter-highres 0 4 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 5) + :shadow 2 + :origin-joint-index 3 + :shadow-joint-index 3 + ) + +(defskelgroup skel-palmpilot palmpilot 0 -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 1.5) + :origin-joint-index 3 + ) + +(defskelgroup skel-krew-highres krew-highres 0 3 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3) + :shadow 2 + :origin-joint-index 3 + ) + +(defskelgroup skel-tess-highres tess-highres 0 3 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3) + :shadow 2 + :origin-joint-index 3 + ) + +(defskelgroup skel-keira-highres keira-highres 0 3 + ((1 (meters 200))) + :bounds (static-spherem 0 0 0 5) + :shadow 2 + :origin-joint-index 3 + :shadow-joint-index 3 + ) + +(defskelgroup skel-sew-gold-key sew-gold-key 0 2 + ((1 (meters 200))) + :bounds (static-spherem 0 0 0 1) + :origin-joint-index 3 + ) + +(defskelgroup skel-life-seed life-seed 0 2 + ((1 (meters 200))) + :bounds (static-spherem 0 0 0 1) + :origin-joint-index 3 + ) + +(defskelgroup skel-grunt-fma grunt-fma 0 -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 10) + :origin-joint-index 3 + ) + +(defskelgroup skel-baron baron 0 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3) + :origin-joint-index 3 + ) + +(deftype kor-npc (process-taskable) + () + :heap-base #xa0 + :method-count-assert 38 + :size-assert #x120 + :flag-assert #x2600a00120 + ) + + +(defmethod get-art-elem kor-npc ((obj kor-npc)) + "Checks various things such the current actor, task status, etc to determine the right art-group data to use + @returns the appropriate [[art-element]] for the given NPC" + (case (-> obj task actor) + (((game-task-actor kor-hideout)) + (-> obj draw art-group data 5) + ) + (else + (-> obj draw art-group data 4) + ) + ) + ) + +(defmethod init-skeleton! kor-npc ((obj kor-npc)) + "@see [[initialize-skeleton]]" + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-kor-highres" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj draw light-index) (the-as uint 30)) + 0 + (none) + ) + +(deftype metalkor-highres (process-drawable) + () + :heap-base #x50 + :method-count-assert 21 + :size-assert #xc8 + :flag-assert #x15005000c8 + (:methods + (idle () _type_ :state 20) + ) + ) + + +(defstate idle (metalkor-highres) + :virtual #t + :code (behavior () + (until #f + (ja-no-eval :group! (ja-group) + :num! (seek! (the float (+ (-> (ja-group) frames num-frames) -1))) + :frame-num 0.0 + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + ) + #f + (none) + ) + :post (the-as (function none :behavior metalkor-highres) ja-post) + ) + +;; WARN: Return type mismatch object vs none. +(defmethod init-from-entity! metalkor-highres ((obj metalkor-highres) (arg0 entity-actor)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-metalkor-highres" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj draw light-index) (the-as uint 10)) + (let* ((s5-2 (get-process *default-dead-pool* manipy #x4000)) + (s4-1 + (when s5-2 + (let ((t9-5 (method-of-type manipy activate))) + (t9-5 (the-as manipy s5-2) obj (symbol->string (-> manipy symbol)) (the-as pointer #x70004000)) + ) + (let ((s4-2 run-function-in-process) + (s3-0 s5-2) + (s2-0 manipy-init) + (s1-0 (-> obj root trans)) + (s0-0 (-> obj entity)) + (t0-0 (art-group-get-by-name *level* "skel-metalkor-highres-lowtorso" (the-as (pointer uint32) #f))) + (t1-0 #f) + ) + 0 + ((the-as (function object object object object object object none) s4-2) s3-0 s2-0 s1-0 s0-0 t0-0 t1-0) + ) + (-> s5-2 ppointer) + ) + ) + ) + (send-event (ppointer->process s4-1) 'anim-mode 'clone-anim) + (send-event (ppointer->process s4-1) 'prefix "lowtorso-") + ) + (let* ((s5-3 (get-process *default-dead-pool* manipy #x4000)) + (s4-3 + (when s5-3 + (let ((t9-11 (method-of-type manipy activate))) + (t9-11 (the-as manipy s5-3) obj (symbol->string (-> manipy symbol)) (the-as pointer #x70004000)) + ) + (let ((s4-4 run-function-in-process) + (s3-1 s5-3) + (s2-1 manipy-init) + (s1-1 (-> obj root trans)) + (s0-1 (-> obj entity)) + (t0-1 (art-group-get-by-name *level* "skel-metalkor-highres-legs" (the-as (pointer uint32) #f))) + (t1-1 #f) + ) + 0 + ((the-as (function object object object object object object none) s4-4) s3-1 s2-1 s1-1 s0-1 t0-1 t1-1) + ) + (-> s5-3 ppointer) + ) + ) + ) + (send-event (ppointer->process s4-3) 'anim-mode 'clone-anim) + (send-event (ppointer->process s4-3) 'prefix "legs-") + ) + (let* ((s5-4 (get-process *default-dead-pool* manipy #x4000)) + (s4-5 + (when s5-4 + (let ((t9-17 (method-of-type manipy activate))) + (t9-17 (the-as manipy s5-4) obj (symbol->string (-> manipy symbol)) (the-as pointer #x70004000)) + ) + (let ((s4-6 run-function-in-process) + (s3-2 s5-4) + (s2-2 manipy-init) + (s1-2 (-> obj root trans)) + (s0-2 (-> obj entity)) + (t0-2 (art-group-get-by-name *level* "skel-metalkor-highres-wings" (the-as (pointer uint32) #f))) + (t1-2 #f) + ) + 0 + ((the-as (function object object object object object object none) s4-6) s3-2 s2-2 s1-2 s0-2 t0-2 t1-2) + ) + (-> s5-4 ppointer) + ) + ) + ) + (send-event (ppointer->process s4-5) 'anim-mode 'clone-anim) + (send-event (ppointer->process s4-5) 'prefix "wings-") + ) + (go (method-of-object obj idle)) + (none) + ) + +(deftype tess-npc (process-taskable) + () + :heap-base #xa0 + :method-count-assert 38 + :size-assert #x120 + :flag-assert #x2600a00120 + ) + + +(defmethod get-art-elem tess-npc ((obj tess-npc)) + "Checks various things such the current actor, task status, etc to determine the right art-group data to use + @returns the appropriate [[art-element]] for the given NPC" + (case (-> obj task actor) + (((game-task-actor tess-alley)) + (if (task-node-closed? (game-task-node ruins-tower-resolution)) + (-> obj draw art-group data 3) + (-> obj draw art-group data 4) + ) + ) + (((game-task-actor tess-hiphog)) + (cond + ((or (task-node-open? (game-task-node city-krew-collection-introduction)) + (task-node-open? (game-task-node city-krew-collection-collection)) + (task-node-open? (game-task-node forest-hunt-introduction)) + (task-node-open? (game-task-node forest-hunt-resolution)) + (task-node-open? (game-task-node city-errol-challenge-introduction)) + (task-node-open? (game-task-node city-errol-challenge-race)) + ) + (-> obj draw art-group data 6) + ) + ((and (task-node-closed? (game-task-node city-whack-pre-intro)) + (not (task-node-closed? (game-task-node under-mech-resolution))) + ) + (-> obj draw art-group data 5) + ) + (else + (-> obj draw art-group data 3) + ) + ) + ) + (else + (-> obj draw art-group data 3) + ) + ) + ) + +(defmethod init-skeleton! tess-npc ((obj tess-npc)) + "@see [[initialize-skeleton]]" + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-tess-highres" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj draw light-index) (the-as uint 30)) + 0 + (none) + ) + +(deftype keira-npc (process-taskable) + () + :heap-base #xa0 + :method-count-assert 38 + :size-assert #x120 + :flag-assert #x2600a00120 + ) + + +(defmethod get-art-elem keira-npc ((obj keira-npc)) + "Checks various things such the current actor, task status, etc to determine the right art-group data to use + @returns the appropriate [[art-element]] for the given NPC" + (case (-> obj task actor) + (((game-task-actor keira-stadium)) + (-> obj draw art-group data 3) + ) + (else + (-> obj draw art-group data 3) + ) + ) + ) + +(defmethod init-skeleton! keira-npc ((obj keira-npc)) + "@see [[initialize-skeleton]]" + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-keira-highres" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj draw light-index) (the-as uint 30)) + 0 + (none) + ) + +(deftype krew-npc (process-taskable) + () + :heap-base #xa0 + :method-count-assert 38 + :size-assert #x120 + :flag-assert #x2600a00120 + ) + + +(defmethod get-art-elem krew-npc ((obj krew-npc)) + "Checks various things such the current actor, task status, etc to determine the right art-group data to use + @returns the appropriate [[art-element]] for the given NPC" + (-> obj draw art-group data 4) + ) + +(defmethod init-skeleton! krew-npc ((obj krew-npc)) + "@see [[initialize-skeleton]]" + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-krew-highres" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj draw light-index) (the-as uint 10)) + 0 + (none) + ) + +(deftype kid-npc (process-taskable) + () + :heap-base #xa0 + :method-count-assert 38 + :size-assert #x120 + :flag-assert #x2600a00120 + ) + + +(defmethod init-skeleton! kid-npc ((obj kid-npc)) + "@see [[initialize-skeleton]]" + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-kid-highres" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj draw light-index) (the-as uint 30)) + 0 + (none) + ) + +(defmethod get-art-elem kid-npc ((obj kid-npc)) + "Checks various things such the current actor, task status, etc to determine the right art-group data to use + @returns the appropriate [[art-element]] for the given NPC" + (case (-> obj task actor) + (((game-task-actor kid-alley)) + (-> obj draw art-group data 5) + ) + (((game-task-actor kid-tomb) (game-task-actor kid-vinroom)) + (-> obj draw art-group data 4) + ) + (((game-task-actor kid-hideout)) + (-> obj draw art-group data 6) + ) + (else + (-> obj draw art-group data 3) + ) + ) + ) + +(deftype crocadog-npc (process-taskable) + () + :heap-base #xa0 + :method-count-assert 38 + :size-assert #x120 + :flag-assert #x2600a00120 + ) + + +(defmethod get-art-elem crocadog-npc ((obj crocadog-npc)) + "Checks various things such the current actor, task status, etc to determine the right art-group data to use + @returns the appropriate [[art-element]] for the given NPC" + (case (-> obj task actor) + (((game-task-actor crocadog-vinroom)) + (-> obj draw art-group data 5) + ) + (((game-task-actor crocadog-alley)) + (-> obj draw art-group data 4) + ) + (else + (-> obj draw art-group data 4) + ) + ) + ) + +(defmethod init-skeleton! crocadog-npc ((obj crocadog-npc)) + "@see [[initialize-skeleton]]" + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-crocadog-highres" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj draw light-index) (the-as uint 30)) + 0 + (none) + ) + +(deftype torn-npc (process-taskable) + () + :heap-base #xa0 + :method-count-assert 38 + :size-assert #x120 + :flag-assert #x2600a00120 + ) + + +(defmethod init-skeleton! torn-npc ((obj torn-npc)) + "@see [[initialize-skeleton]]" + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-torn-highres" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj draw light-index) (the-as uint 30)) + 0 + (none) + ) + +(defmethod get-art-elem torn-npc ((obj torn-npc)) + "Checks various things such the current actor, task status, etc to determine the right art-group data to use + @returns the appropriate [[art-element]] for the given NPC" + (cond + ((task-node-open? (game-task-node ruins-tower-introduction)) + (-> obj draw art-group data 5) + ) + ((task-node-open? (game-task-node ruins-tower-resolution)) + (-> obj draw art-group data 5) + ) + (else + (-> obj draw art-group data 4) + ) + ) + ) + +(defmethod get-trans torn-npc ((obj torn-npc) (arg0 int)) + "@returns the `trans` [[vector]] from the process's `root` (typically either a [[trsqv]] or a [[collide-shape]]" + (let ((v1-0 (-> obj root-override))) + (if (= arg0 2) + (vector<-cspace! (new 'static 'vector) (-> obj node-list data 6)) + (-> v1-0 trans) + ) + ) + ) + +(deftype youngsamos-npc (process-taskable) + () + :heap-base #xa0 + :method-count-assert 38 + :size-assert #x120 + :flag-assert #x2600a00120 + ) + +(defmethod inspect youngsamos-npc ((obj youngsamos-npc)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-taskable inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +(defmethod init-skeleton! youngsamos-npc ((obj youngsamos-npc)) + "@see [[initialize-skeleton]]" + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-youngsamos-highres" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (if (zero? (-> obj draw light-index)) + (set! (-> obj draw light-index) (the-as uint 30)) + ) + 0 + (none) + ) + +(defmethod process-taskable-method-32 youngsamos-npc ((obj youngsamos-npc)) + (case (-> obj task actor) + (((game-task-actor youngsamos-forest)) + (when (not (task-node-closed? (game-task-node forest-protect-resolution))) + (let ((a0-3 (-> obj skel root-channel 0))) + (set! (-> a0-3 frame-group) (the-as art-joint-anim (-> obj draw art-group data 4))) + (set! (-> a0-3 frame-num) 0.0) + (joint-control-channel-group! a0-3 (the-as art-joint-anim (-> obj draw art-group data 4)) num-func-identity) + ) + (ja-post) + (let ((s5-0 (new 'stack-no-clear 'task-arrow-params))) + (set! (-> s5-0 pos quad) (-> (vector<-cspace! (new 'stack-no-clear 'vector) (-> obj node-list data 3)) quad)) + (quaternion-copy! + (-> s5-0 quat) + (eul->quat (new 'stack-no-clear 'quaternion) (new 'static 'euler-angles :x -16384.0 :y 16384.0)) + ) + (set! (-> s5-0 flags) (task-arrow-flags)) + (set! (-> s5-0 map-icon) (the-as uint 15)) + (task-arrow-spawn s5-0 (the-as task-arrow obj)) + ) + ) + ) + ) + ((the-as (function process-taskable none) (find-parent-method youngsamos-npc 32)) obj) + (none) + ) + +(defmethod get-art-elem youngsamos-npc ((obj youngsamos-npc)) + "Checks various things such the current actor, task status, etc to determine the right art-group data to use + @returns the appropriate [[art-element]] for the given NPC" + (case (-> obj task actor) + (((game-task-actor youngsamos-forest)) + (-> obj draw art-group data 4) + ) + (((game-task-actor youngsamos-alley)) + (-> obj draw art-group data 7) + ) + (((game-task-actor youngsamos-hideout)) + (if (= (-> obj level name) 'lysamsam) + (-> obj draw art-group data 5) + (-> obj draw art-group data 6) + ) + ) + (((game-task-actor youngsamos-tomb)) + (-> obj draw art-group data 8) + ) + (((game-task-actor youngsamos-onintent)) + (-> obj draw art-group data 9) + ) + (else + (-> obj draw art-group data 3) + ) + ) + ) + +(deftype samos-npc (process-taskable) + () + :heap-base #xa0 + :method-count-assert 38 + :size-assert #x120 + :flag-assert #x2600a00120 + ) + +(defmethod inspect samos-npc ((obj samos-npc)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-taskable inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +(defmethod init-skeleton! samos-npc ((obj samos-npc)) + "@see [[initialize-skeleton]]" + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-samos-highres" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj draw light-index) (the-as uint 30)) + 0 + (none) + ) + +(defmethod get-art-elem samos-npc ((obj samos-npc)) + "Checks various things such the current actor, task status, etc to determine the right art-group data to use + @returns the appropriate [[art-element]] for the given NPC" + (case (-> obj task actor) + (((game-task-actor samos-hideout)) + (-> obj draw art-group data 4) + ) + (((game-task-actor samos-garage)) + (-> obj draw art-group data 5) + ) + (else + (-> obj draw art-group data 3) + ) + ) + ) + +(deftype onin-npc (process-taskable) + () + :heap-base #xa0 + :method-count-assert 38 + :size-assert #x120 + :flag-assert #x2600a00120 + ) + +(defmethod inspect onin-npc ((obj onin-npc)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-taskable inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +(defmethod init-skeleton! onin-npc ((obj onin-npc)) + "@see [[initialize-skeleton]]" + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-onin-highres" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj draw light-index) (the-as uint 10)) + 0 + (none) + ) + +(defmethod get-art-elem onin-npc ((obj onin-npc)) + "Checks various things such the current actor, task status, etc to determine the right art-group data to use + @returns the appropriate [[art-element]] for the given NPC" + (let ((v1-1 (game-task-control-method-9 (-> obj task)))) + (case (-> v1-1 action) + (((game-task-action play)) + (set! (-> obj talk-message) (game-text-id text-x186)) + ) + (else + (set! (-> obj talk-message) (game-text-id text-x181)) + ) + ) + (if (and (= (-> v1-1 action) (game-task-action play)) + (or (and *target* (logtest? (-> *target* focus-status) (focus-status grabbed))) + (let ((v1-10 (-> *game-info* sub-task-list 151))) + (handle->process (if (-> v1-10 info) + (-> v1-10 info manager) + (the-as handle #f) + ) + ) + ) + ) + ) + (-> obj draw art-group data 6) + (-> obj draw art-group data 4) + ) + ) + ) + +(defstate play-game (onin-npc) + :virtual #t + :code (behavior ((arg0 game-task-event)) + (let ((gp-0 (get-process *default-dead-pool* onin-game #x4000))) + (set! (-> self slave) + (ppointer->handle (when gp-0 + (let ((t9-1 (method-of-type process activate))) + (t9-1 gp-0 self (symbol->string (-> onin-game symbol)) (the-as pointer #x70004000)) + ) + (run-now-in-process gp-0 onin-game-init (-> self entity)) + (-> gp-0 ppointer) + ) + ) + ) + ) + (process-taskable-anim-loop (lambda ((arg0 process-taskable)) (handle->process (-> arg0 slave)))) + (go-virtual idle) + (none) + ) + ) + +(deftype pecker-npc (process-taskable) + () + :heap-base #xa0 + :method-count-assert 38 + :size-assert #x120 + :flag-assert #x2600a00120 + ) + +(defmethod inspect pecker-npc ((obj pecker-npc)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-taskable inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +(defmethod init-skeleton! pecker-npc ((obj pecker-npc)) + "@see [[initialize-skeleton]]" + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-pecker-highres" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj draw light-index) (the-as uint 10)) + 0 + (none) + ) + +(defmethod get-art-elem pecker-npc ((obj pecker-npc)) + "Checks various things such the current actor, task status, etc to determine the right art-group data to use + @returns the appropriate [[art-element]] for the given NPC" + (local-vars (s5-0 art-joint-anim) (f30-0 float)) + (cond + ((logtest? (-> (game-task-control-method-9 (-> obj task)) flags) (game-task-flags gatflag-02)) + (-> obj draw art-group data 6) + ) + ((begin + (set! s5-0 (if (> (-> obj skel active-channels) 0) + (-> obj skel root-channel 0 frame-group) + ) + ) + (set! f30-0 (ja-aframe-num 0)) + (and (= s5-0 (-> obj draw art-group data 4)) (>= f30-0 0.0) (>= 118.999 f30-0)) + ) + (-> obj draw art-group data 4) + ) + ((and (= s5-0 (-> obj draw art-group data 4)) + (>= f30-0 119.0) + (>= (the float (+ (-> (the-as art-joint-anim (-> obj draw art-group data 4)) frames num-frames) -1)) + (ja-frame-num 0) + ) + ) + (if (rand-vu-percent? 0.9) + (-> obj draw art-group data 4) + (-> obj draw art-group data 5) + ) + ) + ((and (= s5-0 (-> obj draw art-group data 5)) (>= f30-0 0.0) (>= 258.999 f30-0)) + (-> obj draw art-group data 5) + ) + ((and (= s5-0 (-> obj draw art-group data 5)) + (>= f30-0 259.0) + (>= (the float (+ (-> (the-as art-joint-anim (-> obj draw art-group data 5)) frames num-frames) -1)) + (ja-frame-num 0) + ) + ) + (-> obj draw art-group data 4) + ) + (else + (-> obj draw art-group data 4) + ) + ) + ) + +(deftype brutter-npc (process-taskable) + () + :heap-base #xa0 + :method-count-assert 38 + :size-assert #x120 + :flag-assert #x2600a00120 + ) + +(defmethod inspect brutter-npc ((obj brutter-npc)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-taskable inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +(defmethod init-skeleton! brutter-npc ((obj brutter-npc)) + "@see [[initialize-skeleton]]" + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-brutter-highres" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj draw light-index) (the-as uint 10)) + 0 + (none) + ) + +(deftype ashelin-npc (process-taskable) + () + :heap-base #xa0 + :method-count-assert 38 + :size-assert #x120 + :flag-assert #x2600a00120 + ) + +(defmethod inspect ashelin-npc ((obj ashelin-npc)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-taskable inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +(defmethod init-skeleton! ashelin-npc ((obj ashelin-npc)) + "@see [[initialize-skeleton]]" + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-ashelin-highres" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj draw light-index) (the-as uint 30)) + 0 + (none) + ) + +(defmethod get-art-elem ashelin-npc ((obj ashelin-npc)) + "Checks various things such the current actor, task status, etc to determine the right art-group data to use + @returns the appropriate [[art-element]] for the given NPC" + (case (-> obj task actor) + (((game-task-actor ashelin-throne)) + (logior! (-> obj draw status) (draw-control-status no-draw-bounds)) + (let ((v1-7 (-> obj root-override root-prim))) + (set! (-> v1-7 prim-core collide-as) (collide-spec)) + (set! (-> v1-7 prim-core collide-with) (collide-spec)) + ) + 0 + ) + ) + (-> obj draw art-group data 3) + ) + +(deftype daxter-npc (process-taskable) + () + :heap-base #xa0 + :method-count-assert 38 + :size-assert #x120 + :flag-assert #x2600a00120 + ) + +(defmethod inspect daxter-npc ((obj daxter-npc)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-taskable inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +(defmethod init-skeleton! daxter-npc ((obj daxter-npc)) + "@see [[initialize-skeleton]]" + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-sidekick-highres" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj draw light-index) (the-as uint 30)) + 0 + (none) + ) + +(defmethod get-art-elem daxter-npc ((obj daxter-npc)) + "Checks various things such the current actor, task status, etc to determine the right art-group data to use + @returns the appropriate [[art-element]] for the given NPC" + (-> obj draw art-group data 3) + ) + +(defskelgroup skel-prsn-torture prsn-torture 0 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 20) + :origin-joint-index 3 + ) + +(defskelgroup skel-tomb-boss-bridge-a tomb-boss-bridge 0 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 17) + :origin-joint-index 30 + ) + +(defskelgroup skel-tomb-boss-bridge-b tomb-boss-bridge 6 8 + ((7 (meters 999999))) + :bounds (static-spherem 0 0 0 17) + :origin-joint-index 31 + ) + +(defskelgroup skel-time-map time-map 0 -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 2) + :origin-joint-index 20 + ) + +(defskelgroup skel-precursor-stone precursor-stone 0 -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 2) + :origin-joint-index 3 + ) + +(defskelgroup skel-seal-of-mar seal-of-mar 0 -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 10) + :origin-joint-index 3 + ) + +(defskelgroup skel-talk-box talk-box 0 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 2) + :origin-joint-index 3 + ) + +(defskelgroup skel-rift-ring rift-ring 0 -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 60) + :origin-joint-index 6 + ) + +(defskelgroup skel-mtn-shard mtn-shard 0 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 0.5) + :origin-joint-index 3 + ) + +(defskelgroup skel-mtn-lens mtn-lens 0 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 0.5) + :origin-joint-index 3 + ) + +(defskelgroup skel-mtn-gear-device-gear mtn-gear-device-gear 0 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 0.5) + :origin-joint-index 3 + ) + +(defskelgroup skel-heart-of-mar heart-of-mar 0 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 2) + :origin-joint-index 3 + ) + +(defskelgroup skel-gun-upgrade-a gun-upgrade-a 0 -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 1) + :origin-joint-index 3 + ) + +(defun intro-play () + "A dedicated function for playing the intro cutscenes in the correct order + ```opengoal + \"intro-samos-hut\" \"intro-vortex\" \"intro-city-square\" \"intro-prison\" + ```" + (set! (-> *setting-control* user-default border-mode) #t) + (set! (-> *level* play?) (-> *setting-control* user-default border-mode)) + (process-spawn + scene-player + :init scene-player-init + '("intro-samos-hut" "intro-vortex" "intro-city-square" "intro-prison") + #t + "village1-start" + ) + 0 + (none) + ) + +(defun outro-play () + "A dedicated function for playing the intro cutscenes in the correct order + ```opengoal + \"outro-nest\" \"outro-palace\" \"outro-hiphog\" \"outro-port\" + ```" + (set! (-> *setting-control* user-default border-mode) #t) + (set! (-> *level* play?) (-> *setting-control* user-default border-mode)) + (process-spawn + scene-player + :init scene-player-init + '("outro-nest" "outro-palace" "outro-hiphog" "outro-port") + #t + "nestb-outro" + ) + 0 + (none) + ) diff --git a/goal_src/jak2/levels/common/scene-looper.gc b/goal_src/jak2/levels/common/scene-looper.gc index 22f81f45e4..026c8f552e 100644 --- a/goal_src/jak2/levels/common/scene-looper.gc +++ b/goal_src/jak2/levels/common/scene-looper.gc @@ -7,3 +7,1065 @@ ;; DECOMP BEGINS +;; this file is debug only +(declare-file (debug)) +(when *debug-segment* +(deftype scene-looper (process) + ((scene-name symbol :offset-assert 128) + ) + :heap-base #x10 + :method-count-assert 15 + :size-assert #x84 + :flag-assert #xf00100084 + (:methods + (idle () _type_ :state 14) + ) + ) + + +(defstate idle (scene-looper) + :virtual #t + :exit (behavior () + (kill-by-type scene-player *active-pool*) + (none) + ) + :code (behavior () + (until #f + (let ((player (ppointer->handle + (process-spawn scene-player :init scene-player-init (symbol->string (-> self scene-name)) #t #f) + ) + ) + ) + (while (handle->process (the-as handle player)) + (suspend) + ) + ) + ) + #f + (none) + ) + ) + +;; WARN: Return type mismatch object vs none. +(defbehavior scene-looper-init-by-other scene-looper ((scene-name symbol)) + "Sets the `scene-name` with the given [[symbol]], the [[scene-looper]] will then idle" + (set! (-> self scene-name) scene-name) + (go-virtual idle) + (none) + ) + +(defun stop-loop-scene () + "Kills the current [[scene-looper]] + @see [[kill-by-type]]" + (kill-by-type scene-looper *active-pool*) + ) + +;; WARN: Return type mismatch (pointer process) vs (pointer scene-looper). +(defun loop-scene ((scene-name symbol)) + "Stops looping the current scene, then spawns a new [[scene-looper]] for the given scene + @see [[stop-loop-scene]" + (stop-loop-scene) + (process-spawn scene-looper scene-name) + ) + +(scene-method-16 (new 'static 'scene + :name "test-scene" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-10" + :art-group "scenecamera" + :anim "test-scene" + :parts -1 + :command-list '((0 (kill "flag-1")) + (0 (kill "ruins-precipice-2")) + (596 (part-tracker + "group-tower-test" + entity + "ruins-tower-rp" + joint + "a_explode" + track + #t + duration + (frame-range (new 'static 'bfloat :data 596.0) (new 'static 'bfloat :data 746.0)) + ) + ) + ) + :cut-list '(126 156 221 266 341 426 476 583 638 675 741 821) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'sagehut + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'sagehut + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "awning" + :level 'ruins + :art-group "skel-awning" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '((min max)) + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "movie-flag" + :level 'ruins + :art-group "skel-movie-flag" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "precipice-a" + :level 'ruins + :art-group "skel-precipice-a" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '((min max)) + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "precipice-b" + :level 'ruins + :art-group "skel-precipice-b" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '((min max)) + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "ruins-tower-a" + :level 'sagehut + :art-group "skel-ruins-tower-a" + :prefix "" + :draw-frames '((440 max)) + :scissor-frames '((min max)) + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "ruins-tower-b" + :level 'sagehut + :art-group "skel-ruins-tower-b" + :prefix "" + :draw-frames '((440 max)) + :scissor-frames '((min max)) + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "ruins-tower-c" + :level 'sagehut + :art-group "skel-ruins-tower-c" + :prefix "" + :draw-frames '((440 max)) + :scissor-frames '((min max)) + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "ruins-tower-d" + :level 'sagehut + :art-group "skel-ruins-tower-d" + :prefix "" + :draw-frames '((440 max)) + :scissor-frames '((min max)) + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "ruins-tower-e" + :level 'sagehut + :art-group "skel-ruins-tower-e" + :prefix "" + :draw-frames '((440 max)) + :scissor-frames '((min max)) + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "ruins-tower-f" + :level 'sagehut + :art-group "skel-ruins-tower-f" + :prefix "" + :draw-frames '((440 max)) + :scissor-frames '((min max)) + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "ruins-tower-rp" + :level 'sagehut + :art-group "skel-ruins-tower-rp" + :prefix "" + :draw-frames '((440 max)) + :scissor-frames '((min max)) + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "torn-highres" + :level 'sagehut + :art-group "skel-torn-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "zipline" + :level 'ruins + :art-group "skel-zipline" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '((min max)) + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "ruins-movie" + :end-point-obj "ruins-movie" + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +(scene-method-16 + (new 'static 'scene + :name "test-crane-victory" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-3" + :art-group "scenecamera" + :anim "test-crane-victory" + :parts 1 + :command-list '((0 (kill "grunt-egg-d-4")) + (0 (kill "grunt-egg-d-5")) + (0 (kill "crane-1")) + (212 (setting-set task-mask mode 'abs mask 65536)) + (240 (part-tracker + "group-strip-drop-splash" + entity + "dark-eco-pool-3" + duration + (frame-range (new 'static 'bfloat :data 240.0) (new 'static 'bfloat :data 298.0)) + ) + ) + (10000 (task-close! "strip-drop-resolution")) + ) + :cut-list '(60 136 185 216 291 346 379) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'vinroom + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :light-index #x1e + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'vinroom + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :light-index #x1e + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "board" + :level #f + :art-group "skel-board" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '((min max)) + :light-index #x1e + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "cable" + :level 'strip + :art-group "skel-cable" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '((min max)) + :light-index #x1e + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "cranecrate" + :level 'strip + :art-group "skel-cranecrate" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '((min max)) + :light-index #x1e + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "crane" + :level 'strip + :art-group "skel-crane" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '((min max)) + :light-index #x1e + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "strip-start" + :end-point-obj (new 'static 'continue-point + :name "strip" + :level #f + :trans (new 'static 'vector :x 10374168.0 :y 16420.045 :z -300916.75 :w 1.0) + :quat (new 'static 'vector :y 0.0218 :w -0.9997) + :camera-trans (new 'static 'vector :x 10385991.0 :y 37471.027 :z -350573.78 :w 1.0) + :camera-rot (new 'static 'inline-array vector3s 3 + (new 'static 'vector3s :data (new 'static 'array float 3 0.9726 0.0 0.2322)) + (new 'static 'vector3s :data (new 'static 'array float 3 -0.0281 0.9926 0.1179)) + (new 'static 'vector3s :data (new 'static 'array float 3 -0.2305 -0.1212 0.9654)) + ) + :on-goto #f + :vis-nick 'strip + :want (new 'static 'inline-array level-buffer-state 6 + (new 'static 'level-buffer-state :name 'strip :display? 'display :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name 'vinroom :display? 'special :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + ) + :want-sound (new 'static 'array symbol 3 'strip1 'strip2 'strip3) + ) + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +(scene-method-16 (new 'static 'scene + :name "test-mountain-finditems-intro" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-32" + :art-group "scenecamera" + :anim "test-mountain-finditems-intro" + :parts 1 + :command-list '((0 (kill "jak-highres-7")) + (0 (kill "daxter-highres-8")) + (673 (part-tracker + "group-onin-clap-effect" + entity + "onin-highres" + joint + "LmiddleC" + track + #t + duration + (frame-range 673 700) + ) + ) + (714 (part-tracker + "group-onin-finger-effect" + entity + "onin-highres" + joint + "LthumbC" + track + #t + duration + (frame-range 714 728) + ) + ) + (714 (part-tracker + "group-onin-finger-effect" + entity + "onin-highres" + joint + "LindexC" + track + #t + duration + (frame-range 714 730) + ) + ) + (714 (part-tracker + "group-onin-finger-effect" + entity + "onin-highres" + joint + "LmiddleC" + track + #t + duration + (frame-range 714 725) + ) + ) + (714 (part-tracker + "group-onin-finger-effect" + entity + "onin-highres" + joint + "LringC" + track + #t + duration + (frame-range 714 720) + ) + ) + (714 (part-tracker + "group-onin-finger-effect" + entity + "onin-highres" + joint + "LpinkyC" + track + #t + duration + (frame-range 714 715) + ) + ) + (714 (part-tracker + "group-onin-finger-effect" + entity + "onin-highres" + joint + "RthumbC" + track + #t + duration + (frame-range 714 727) + ) + ) + (714 (part-tracker + "group-onin-finger-effect" + entity + "onin-highres" + joint + "RindexC" + track + #t + duration + (frame-range 714 730) + ) + ) + (714 (part-tracker + "group-onin-finger-effect" + entity + "onin-highres" + joint + "RmiddleC" + track + #t + duration + (frame-range 714 725) + ) + ) + (714 (part-tracker + "group-onin-finger-effect" + entity + "onin-highres" + joint + "RringC" + track + #t + duration + (frame-range 714 720) + ) + ) + (714 (part-tracker + "group-onin-finger-effect" + entity + "onin-highres" + joint + "RpinkyC" + track + #t + duration + (frame-range 714 715) + ) + ) + ) + :cut-list '() + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'onintent + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'onintent + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "onin-highres" + :level 'onintent + :art-group "skel-onin-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "particleman" + :level 'onintent + :art-group "skel-particleman" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "pecker-highres" + :level 'onintent + :art-group "skel-pecker-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "son-of-particleman" + :level 'onintent + :art-group "skel-son-of-particleman" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "onintent-start" + :end-point-obj #f + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +(scene-method-16 (new 'static 'scene + :name "test-fortress-blow-up-ammo-res-b-a" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-45" + :art-group "scenecamera" + :anim "test-fortress-blow-up-ammo-res-b-a" + :parts 3 + :command-list '((0 + (send-event "fort-missile-2" 'halt) + (send-event "fort-entry-gate-18" 'open (seconds 20) #t) + (kill "fort-robotank-6") + (kill "fort-entry-gate-14") + (send-event "fort-missile-2" 'die) + ) + (267 (part-tracker + "group-fortress-big-explosion" + entity + "particleman" + joint + "particleA" + track + #t + duration + (frame-range 270 370) + ) + ) + ) + :cut-list '(356 381 431 457 511) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'fordumpc + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'fordumpc + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "particleman" + :level 'fordumpc + :art-group "skel-particleman" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "fordumpc-explode-movie" + :end-point-obj "ctysluma-fort-end" + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +(scene-method-16 (new 'static 'scene + :name "test-fortress-blast" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-45" + :art-group "scenecamera" + :anim "test-fortress-blast" + :parts 1 + :command-list '((0 + (send-event "fort-missile-2" 'halt) + (send-event "fort-entry-gate-14" 'open (seconds 20) #t) + (send-event "fort-entry-gate-18" 'open (seconds 20) #t) + (kill "fort-robotank-6") + ) + (365 (part-tracker + "group-fortress-side-explosion" + entity + "particleman" + joint + "particleA" + track + #t + duration + (frame-range 370 479) + ) + ) + ) + :cut-list '(356 381 431 457 511) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'fordumpc + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'fordumpc + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "particleman" + :level 'fordumpc + :art-group "skel-particleman" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "fordumpc-explode-movie" + :end-point-obj "ctysluma-fort-end" + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +(scene-method-16 (new 'static 'scene + :name "cover-test-1" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "ashelin-highres-4" + :art-group "scenecamera" + :anim "cover-test-1" + :parts 2 + :command-list '((0 (kill "ashelin-highres-4"))) + :cut-list '() + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'chartest + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'chartest + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "gun" + :level #f + :art-group "skel-gun" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "board" + :level #f + :art-group "skel-board" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "chartest-1" + :end-point-obj #f + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +(scene-method-16 (new 'static 'scene + :name "cover-test-2" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "ashelin-highres-4" + :art-group "scenecamera" + :anim "cover-test-2" + :parts 2 + :command-list '((0 (kill "ashelin-highres-4"))) + :cut-list '() + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'chartest + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'chartest + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "chartest-1" + :end-point-obj #f + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +(scene-method-16 (new 'static 'scene + :name "test-daxter-blend" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-24" + :art-group "scenecamera" + :anim "test-daxter-blend" + :parts 4 + :command-list '((0 (kill "krew-highres-1"))) + :cut-list '() + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'hiphog + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :light-index #xa + :flags #x3 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "tess-highres" + :level 'ltess + :art-group "skel-tess-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :light-index #xa + :flags #x3 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "hiphog-start" + :end-point-obj "hiphog-movie" + :borrow '((hiphog 0 ltess special)) + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +) diff --git a/test/decompiler/reference/jak2/engine/camera/camera-h_REF.gc b/test/decompiler/reference/jak2/engine/camera/camera-h_REF.gc index 1db1d4b71e..177a313d5c 100644 --- a/test/decompiler/reference/jak2/engine/camera/camera-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/camera/camera-h_REF.gc @@ -1,7 +1,5 @@ -;;-*-Lisp-*- (in-package goal) -;; definition of type cam-index (deftype cam-index (structure) ((flags cam-index-options :offset-assert 0) (vec vector 2 :inline :offset-assert 16) @@ -15,7 +13,6 @@ ) ) -;; definition for method 3 of type cam-index (defmethod inspect cam-index ((obj cam-index)) (when (not obj) (set! obj obj) @@ -28,7 +25,6 @@ obj ) -;; definition of type tracking-point (deftype tracking-point (structure) ((position vector :inline :offset-assert 0) (direction vector :inline :offset-assert 16) @@ -41,7 +37,6 @@ :flag-assert #x90000002c ) -;; definition for method 3 of type tracking-point (defmethod inspect tracking-point ((obj tracking-point)) (when (not obj) (set! obj obj) @@ -57,7 +52,6 @@ obj ) -;; definition of type tracking-spline-sampler (deftype tracking-spline-sampler (structure) ((cur-pt int32 :offset-assert 0) (partial-pt float :offset-assert 4) @@ -67,7 +61,6 @@ :flag-assert #x900000008 ) -;; definition for method 3 of type tracking-spline-sampler (defmethod inspect tracking-spline-sampler ((obj tracking-spline-sampler)) (when (not obj) (set! obj obj) @@ -80,7 +73,6 @@ obj ) -;; definition of type tracking-spline (deftype tracking-spline (structure) ((point tracking-point 32 :inline :offset-assert 0) (summed-len float :offset-assert 1536) @@ -119,7 +111,6 @@ ) ) -;; definition for method 3 of type tracking-spline (defmethod inspect tracking-spline ((obj tracking-spline)) (when (not obj) (set! obj obj) @@ -144,7 +135,6 @@ obj ) -;; definition of type cam-float-seeker (deftype cam-float-seeker (structure) ((target float :offset-assert 0) (value float :offset-assert 4) @@ -165,7 +155,6 @@ ) ) -;; definition for method 3 of type cam-float-seeker (defmethod inspect cam-float-seeker ((obj cam-float-seeker)) (when (not obj) (set! obj obj) @@ -182,8 +171,6 @@ obj ) -;; definition for method 9 of type cam-float-seeker -;; WARN: Return type mismatch int vs none. (defmethod init cam-float-seeker ((obj cam-float-seeker) (arg0 float) (arg1 float) (arg2 float) (arg3 float)) (set! (-> obj target) arg0) (set! (-> obj value) arg0) @@ -195,8 +182,6 @@ (none) ) -;; definition for method 10 of type cam-float-seeker -;; WARN: Return type mismatch int vs none. (defmethod copy-to cam-float-seeker ((obj cam-float-seeker) (arg0 cam-float-seeker)) (set! (-> obj target) (-> arg0 target)) (set! (-> obj value) (-> arg0 value)) @@ -208,8 +193,6 @@ (none) ) -;; definition for method 11 of type cam-float-seeker -;; WARN: Return type mismatch int vs none. (defmethod update! cam-float-seeker ((obj cam-float-seeker) (arg0 float)) (with-pp 0.0 @@ -236,14 +219,12 @@ ) ) -;; definition for method 12 of type cam-float-seeker (defmethod jump-to-target! cam-float-seeker ((obj cam-float-seeker) (arg0 float)) (set! (-> obj value) (+ (-> obj target) arg0)) (set! (-> obj vel) 0.0) 0.0 ) -;; definition of type cam-vector-seeker (deftype cam-vector-seeker (structure) ((target vector :inline :offset-assert 0) (value vector :inline :offset-assert 16) @@ -261,7 +242,6 @@ ) ) -;; definition for method 3 of type cam-vector-seeker (defmethod inspect cam-vector-seeker ((obj cam-vector-seeker)) (when (not obj) (set! obj obj) @@ -278,9 +258,6 @@ obj ) -;; definition for method 9 of type cam-vector-seeker -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defmethod init cam-vector-seeker ((obj cam-vector-seeker) (arg0 vector) (arg1 float) (arg2 float) (arg3 float)) (cond (arg0 @@ -300,8 +277,6 @@ (none) ) -;; definition for method 10 of type cam-vector-seeker -;; WARN: Return type mismatch int vs none. (defmethod update! cam-vector-seeker ((obj cam-vector-seeker) (arg0 vector)) (with-pp (let ((v1-0 (new 'stack-no-clear 'vector))) @@ -334,7 +309,6 @@ ) ) -;; definition of type cam-rotation-tracker (deftype cam-rotation-tracker (structure) ((inv-mat matrix :inline :offset-assert 0) (no-follow basic :offset-assert 64) @@ -354,7 +328,6 @@ :flag-assert #x900000108 ) -;; definition for method 3 of type cam-rotation-tracker (defmethod inspect cam-rotation-tracker ((obj cam-rotation-tracker)) (when (not obj) (set! obj obj) @@ -377,7 +350,6 @@ obj ) -;; definition of type camera-combiner (deftype camera-combiner (process) ((trans vector :inline :offset-assert 128) (inv-camera-rot matrix :inline :offset-assert 144) @@ -399,7 +371,6 @@ :flag-assert #xe01b0022c ) -;; definition for method 3 of type camera-combiner (defmethod inspect camera-combiner ((obj camera-combiner)) (when (not obj) (set! obj obj) @@ -425,7 +396,6 @@ obj ) -;; definition of type camera-slave (deftype camera-slave (process) ((trans vector :inline :offset-assert 128) (fov float :offset-assert 144) @@ -502,6 +472,7 @@ cam-pov-track cam-pov180 cam-really-fixed + cam-remote cam-robotboss cam-spline cam-standoff @@ -511,7 +482,6 @@ ) ) -;; definition for method 3 of type camera-slave (defmethod inspect camera-slave ((obj camera-slave)) (when (not obj) (set! obj obj) @@ -579,7 +549,6 @@ obj ) -;; definition of type camera-master (deftype camera-master (process) ((master-options uint32 :offset-assert 128) (settings cam-setting-data :offset-assert 132) @@ -632,7 +601,6 @@ ) ) -;; definition for method 3 of type camera-master (defmethod inspect camera-master ((obj camera-master)) (when (not obj) (set! obj obj) @@ -684,5 +652,4 @@ obj ) -;; failed to figure out what this is: 0 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 6ad32a617b..1d2133a300 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 @@ -1,7 +1,7 @@ (in-package goal) (deftype collide-rider (structure) - ((rider-handle uint64 :offset-assert 0) + ((rider-handle handle :offset-assert 0) (sticky-prim basic :offset-assert 8) (prim-ry float :offset-assert 12) (rider-local-pos vector :inline :offset-assert 16) diff --git a/test/decompiler/reference/jak2/engine/common_objs/rigid-body-plat_REF.gc b/test/decompiler/reference/jak2/engine/common_objs/rigid-body-plat_REF.gc new file mode 100644 index 0000000000..4c2373854d --- /dev/null +++ b/test/decompiler/reference/jak2/engine/common_objs/rigid-body-plat_REF.gc @@ -0,0 +1,533 @@ +(in-package goal) + +(deftype rigid-body-platform-constants (rigid-body-object-constants) + ((drag-factor float :offset-assert 208) + (buoyancy-factor float :offset-assert 212) + (max-buoyancy-depth meters :offset-assert 216) + (player-weight meters :offset-assert 220) + (player-bonk-factor float :offset-assert 224) + (player-dive-factor float :offset-assert 228) + (player-force-distance meters :offset-assert 232) + (player-force-clamp meters :offset-assert 236) + (player-force-timeout uint64 :offset-assert 240) + (explosion-force meters :offset-assert 248) + (control-point-count int32 :offset-assert 252) + (platform symbol :offset-assert 256) + (sound-name string :offset-assert 260) + ) + :method-count-assert 9 + :size-assert #x108 + :flag-assert #x900000108 + ) + +(defmethod inspect rigid-body-platform-constants ((obj rigid-body-platform-constants)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" obj 'rigid-body-platform-constants) + (format #t "~1Tinfo: #~%" (&-> obj mass)) + (format #t "~1Tmass: ~f~%" (-> obj mass)) + (format #t "~1Tinv-mass: ~f~%" (-> obj inv-mass)) + (format #t "~1Tcm-joint-x: (meters ~m)~%" (-> obj cm-joint-x)) + (format #t "~1Tcm-joint-y: (meters ~m)~%" (-> obj cm-joint-y)) + (format #t "~1Tcm-joint-z: (meters ~m)~%" (-> obj cm-joint-z)) + (format #t "~1Tlinear-damping: ~f~%" (-> obj linear-damping)) + (format #t "~1Tangular-damping: ~f~%" (-> obj angular-damping)) + (format #t "~1Tbounce-factor: ~f~%" (-> obj bounce-factor)) + (format #t "~1Tfriction-factor: ~f~%" (-> obj friction-factor)) + (format #t "~1Tinertial-tensor-x: (meters ~m)~%" (-> obj inertial-tensor-x)) + (format #t "~1Tinertial-tensor-y: (meters ~m)~%" (-> obj inertial-tensor-y)) + (format #t "~1Tinertial-tensor-z: (meters ~m)~%" (-> obj inertial-tensor-z)) + (format #t "~1Textra: #~%" (&-> obj max-time-step)) + (format #t "~1Tmax-time-step: ~f~%" (-> obj max-time-step)) + (format #t "~1Tgravity: (meters ~m)~%" (-> obj gravity)) + (format #t "~1Tidle-distance: (meters ~m)~%" (-> obj idle-distance)) + (format #t "~1Tattack-force-scale: ~f~%" (-> obj attack-force-scale)) + (format #t "~1Tname: ~A~%" (-> obj name)) + (format #t "~1Tdrag-factor: ~f~%" (-> obj drag-factor)) + (format #t "~1Tbuoyancy-factor: ~f~%" (-> obj buoyancy-factor)) + (format #t "~1Tmax-buoyancy-depth: (meters ~m)~%" (-> obj max-buoyancy-depth)) + (format #t "~1Tplayer-weight: (meters ~m)~%" (-> obj player-weight)) + (format #t "~1Tplayer-bonk-factor: ~f~%" (-> obj player-bonk-factor)) + (format #t "~1Tplayer-dive-factor: ~f~%" (-> obj player-dive-factor)) + (format #t "~1Tplayer-force-distance: (meters ~m)~%" (-> obj player-force-distance)) + (format #t "~1Tplayer-force-clamp: (meters ~m)~%" (-> obj player-force-clamp)) + (format #t "~1Tplayer-force-timeout: ~D~%" (-> obj player-force-timeout)) + (format #t "~1Texplosion-force: (meters ~m)~%" (-> obj explosion-force)) + (format #t "~1Tcontrol-point-count: ~D~%" (-> obj control-point-count)) + (format #t "~1Tplatform: ~A~%" (-> obj platform)) + (format #t "~1Tsound-name: ~A~%" (-> obj sound-name)) + (label cfg-4) + obj + ) + +(deftype rigid-body-control-point (structure) + ((local-pos vector :inline :offset-assert 0) + (world-pos vector :inline :offset-assert 16) + (velocity vector :inline :offset-assert 32) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) + +(defmethod inspect rigid-body-control-point ((obj rigid-body-control-point)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" obj 'rigid-body-control-point) + (format #t "~1Tlocal-pos: #~%" (-> obj local-pos)) + (format #t "~1Tworld-pos: #~%" (-> obj world-pos)) + (format #t "~1Tvelocity: #~%" (-> obj velocity)) + (label cfg-4) + obj + ) + +(deftype rigid-body-control-point-inline-array (inline-array-class) + ((data rigid-body-control-point :inline :dynamic :offset-assert 16) + ) + :method-count-assert 9 + :size-assert #x10 + :flag-assert #x900000010 + ) + +(defmethod inspect rigid-body-control-point-inline-array ((obj rigid-body-control-point-inline-array)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" obj (-> obj type)) + (format #t "~1Tlength: ~D~%" (-> obj length)) + (format #t "~1Tallocated-length: ~D~%" (-> obj allocated-length)) + (format #t "~1Tdata[0] @ #x~X~%" (-> obj data)) + (label cfg-4) + obj + ) + +(set! (-> rigid-body-control-point-inline-array heap-base) (the-as uint 48)) + +(deftype rigid-body-platform (rigid-body-object) + ((info-override rigid-body-platform-constants :offset 204) + (control-point-array rigid-body-control-point-inline-array :offset-assert 272) + (player-velocity vector :inline :offset-assert 288) + (player-velocity-prev vector :inline :offset-assert 304) + (unknown-pad uint32 8 :offset-assert 320) + (float-height-offset float :offset-assert 352) + (player-bonk-timeout uint64 :offset-assert 360) + (water-anim water-anim :offset-assert 368) + ) + :heap-base #x100 + :method-count-assert 57 + :size-assert #x174 + :flag-assert #x3901000174 + (:methods + (rigid-body-platform-method-53 (_type_ vector) float 53) + (rigid-body-platform-method-54 (_type_ rigid-body-control-point) none 54) + (rigid-body-platform-method-55 (_type_) none 55) + (rigid-body-platform-method-56 (_type_ vector) none 56) + ) + ) + +(defmethod inspect rigid-body-platform ((obj rigid-body-platform)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type rigid-body-object inspect))) + (t9-0 obj) + ) + (format #t "~2Tcontrol-point-array: ~A~%" (-> obj control-point-array)) + (format #t "~2Tplayer-velocity: #~%" (-> obj player-velocity)) + (format #t "~2Tplayer-velocity-prev: #~%" (-> obj player-velocity-prev)) + (format #t "~2Tplayer-force-position: #~%" (-> obj player-force-position)) + (format #t "~2Tplayer-force: #~%" (-> obj player-force)) + (format #t "~2Tfloat-height-offset: ~f~%" (-> obj float-height-offset)) + (format #t "~2Tplayer-bonk-timeout: ~D~%" (-> obj player-bonk-timeout)) + (format #t "~2Twater-anim: ~A~%" (-> obj water-anim)) + (label cfg-4) + obj + ) + +(defmethod relocate rigid-body-platform ((obj rigid-body-platform) (new-addr int)) + (if (nonzero? (-> obj control-point-array)) + (&+! (-> obj control-point-array) new-addr) + ) + (the-as + rigid-body-platform + ((the-as (function rigid-body-object int rigid-body-object) (find-parent-method rigid-body-platform 7)) + obj + new-addr + ) + ) + ) + +(defmethod rigid-body-platform-method-53 rigid-body-platform ((obj rigid-body-platform) (arg0 vector)) + (local-vars (f0-1 object)) + (let ((v1-0 (-> obj water-anim))) + 0.0 + (set! f0-1 (cond + (v1-0 + (let ((a0-1 v1-0)) + (if (if a0-1 + (-> a0-1 child 3) + ) + (set! f0-1 (-> v1-0 child 9)) + (set! f0-1 (-> v1-0 child 9)) + ) + ) + f0-1 + ) + (else + (ocean-method-11 *ocean* arg0 #t) + ) + ) + ) + ) + (the-as float f0-1) + ) + +(defmethod rigid-body-platform-method-54 rigid-body-platform ((obj rigid-body-platform) (ctrl-point rigid-body-control-point)) + (set! (-> ctrl-point world-pos w) + (+ (rigid-body-platform-method-53 obj (-> ctrl-point world-pos)) (-> obj float-height-offset)) + ) + (let* ((s4-0 (new 'stack-no-clear 'vector)) + (f0-3 (- (-> ctrl-point world-pos w) (-> ctrl-point world-pos y))) + (f30-0 (/ f0-3 (-> obj info-override max-buoyancy-depth))) + ) + (when (< 0.0 f0-3) + (vector-float*! + s4-0 + *y-vector* + (* (-> obj rbody state info mass) + (fmin 1.0 f30-0) + (/ (-> obj info-override gravity) (the float (-> obj info-override control-point-count))) + (-> obj info-override buoyancy-factor) + ) + ) + (let ((v1-6 (-> obj rbody)) + (a1-9 (-> ctrl-point world-pos)) + (a2-0 s4-0) + ) + (rigid-body-method-18 (-> v1-6 state) a1-9 a2-0) + ) + (vector-float*! s4-0 (-> ctrl-point velocity) (* -1.0 (-> obj info-override drag-factor) (fmin 1.0 f30-0))) + (let ((v1-11 (-> obj rbody)) + (a1-13 (-> ctrl-point world-pos)) + ) + (rigid-body-method-18 (-> v1-11 state) a1-13 s4-0) + ) + ) + ) + 0 + 0 + (none) + ) + +(defmethod rigid-body-object-method-50 rigid-body-platform ((obj rigid-body-platform) (arg0 float)) + (when (logtest? (-> obj flags) (rigid-body-object-flag player-impulse-force player-contact-force)) + (if (logtest? (-> obj flags) (rigid-body-object-flag player-impulse-force)) + (logclear! (-> obj flags) (rigid-body-object-flag player-impulse-force)) + ) + (let ((rigid-body (-> obj rbody)) + (force-pos (-> obj player-force-position)) + (force (-> obj player-force)) + (force-dist (-> obj info-override player-force-distance)) + ) + (rigid-body-method-21 (-> rigid-body state) force-pos force force-dist) + ) + ) + 0 + (none) + ) + +(defmethod rigid-body-platform-method-55 rigid-body-platform ((obj rigid-body-platform)) + (let ((a1-0 (new 'stack-no-clear 'vector))) + (vector-float*! a1-0 *y-vector* (* -1.0 (-> obj info-override gravity) (-> obj rbody state info mass))) + (rigid-body-method-20 (-> obj rbody state) a1-0) + ) + 0 + (none) + ) + +(defmethod rigid-body-platform-method-56 rigid-body-platform ((obj rigid-body-platform) (arg0 vector)) + (let ((v1-0 (new 'stack-no-clear 'vector))) + (vector-! v1-0 arg0 (-> obj rbody state position)) + (set! (-> v1-0 y) 0.0) + (let* ((f0-1 (vector-length v1-0)) + (f1-1 (* 10.0 (fmax 0.0 (fmin 4096.0 (+ -4096.0 f0-1))))) + ) + (when (< 0.0 f1-1) + (vector-float*! v1-0 v1-0 (/ f1-1 f0-1)) + (rigid-body-method-20 (-> obj rbody state) v1-0) + ) + ) + ) + 0 + (none) + ) + +(defmethod rigid-body-object-method-29 rigid-body-platform ((obj rigid-body-platform) (arg0 float)) + (let ((s4-0 (-> obj rbody state matrix))) + (dotimes (s3-0 (-> obj info-override control-point-count)) + (let ((s2-0 (-> obj control-point-array data s3-0))) + (vector-matrix*! (-> s2-0 world-pos) (-> s2-0 local-pos) s4-0) + (let ((v1-4 (-> obj rbody)) + (a1-2 (-> s2-0 world-pos)) + (a2-1 (-> s2-0 velocity)) + ) + (rigid-body-method-22 (-> v1-4 state) a1-2 a2-1) + ) + (rigid-body-platform-method-54 obj s2-0) + ) + ) + ) + (rigid-body-platform-method-55 obj) + (rigid-body-object-method-50 obj arg0) + 0 + (none) + ) + +(defmethod rigid-body-object-method-30 rigid-body-platform ((obj rigid-body-platform)) + (if (-> obj info-override platform) + ((method-of-object (-> obj root-override-2) collide-shape-method-35)) + ) + (set! (-> obj player-velocity-prev quad) (-> obj player-velocity quad)) + (if *target* + (set! (-> obj player-velocity quad) (-> *target* control transv quad)) + (set! (-> obj player-velocity quad) (-> *null-vector* quad)) + ) + (let ((t9-1 (method-of-type rigid-body-object rigid-body-object-method-30))) + (t9-1 obj) + ) + (logclear! (-> obj flags) (rigid-body-object-flag player-contact-force)) + 0 + (none) + ) + +(defmethod rigid-body-object-method-47 rigid-body-platform ((obj rigid-body-platform) (arg0 process-drawable) (arg1 attack-info) (arg2 object) (arg3 penetrate)) + ((method-of-type rigid-body-object rigid-body-object-method-47) obj arg0 arg1 arg2 arg3) + #f + ) + +(defmethod rigid-body-object-method-46 rigid-body-platform ((obj rigid-body-platform) (arg0 process-drawable) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('edge-grabbed) + (let ((v1-1 (the-as object (-> arg3 param 0)))) + (when (not (logtest? (-> obj flags) (rigid-body-object-flag player-impulse-force))) + (logior! (-> obj flags) (rigid-body-object-flag player-contact-force)) + (set! (-> obj player-force-position quad) (-> (the-as rigid-body-control-point v1-1) velocity quad)) + (vector-reset! (-> obj player-force)) + (set! (-> obj player-force y) (* -1.0 (-> obj info-override player-weight))) + ) + ) + ) + (('ridden) + (let ((v1-7 (the-as object (-> arg3 param 0)))) + (when (the-as uint v1-7) + (let* ((s5-1 (handle->process (-> (the-as collide-rider v1-7) rider-handle))) + (v1-11 (if (type? s5-1 process-focusable) + (the-as process-focusable s5-1) + ) + ) + ) + (when (and v1-11 + (logtest? (-> v1-11 mask) (process-mask target)) + (zero? (logand (-> v1-11 focus-status) (focus-status on-water under-water))) + ) + (when (not (logtest? (-> obj flags) (rigid-body-object-flag player-impulse-force))) + (logior! (-> obj flags) (rigid-body-object-flag player-contact-force)) + (set! (-> obj player-force-position quad) (-> v1-11 root-override trans quad)) + (vector-reset! (-> obj player-force)) + (let* ((a1-5 (-> obj player-force-position)) + (f30-0 0.0) + (f28-0 1.0) + (f26-0 1.0) + (f0-4 (+ (- -4096.0 (-> a1-5 y)) (rigid-body-platform-method-53 obj a1-5))) + (f1-2 12288.0) + (f0-8 (fmax f30-0 (fmin f28-0 (- f26-0 (* f0-4 (/ 1.0 f1-2)))))) + ) + (set! (-> obj player-force y) (* -1.0 (-> obj info-override player-weight) f0-8)) + ) + ) + ) + ) + ) + ) + ) + (('bonk) + (when (>= (- (-> self clock frame-counter) (the-as int (-> obj player-bonk-timeout))) + (the-as time-frame (-> obj info-override player-force-timeout)) + ) + (set! (-> obj player-bonk-timeout) (the-as uint (-> self clock frame-counter))) + (let* ((s4-0 arg0) + (v1-31 (if (type? s4-0 process-drawable) + s4-0 + ) + ) + ) + (when v1-31 + (logior! (-> obj flags) (rigid-body-object-flag player-impulse-force)) + (set! (-> obj player-force-position quad) (-> v1-31 root trans quad)) + (let ((f0-14 (fmin + (* 0.00012207031 + (the-as float (-> arg3 param 1)) + (-> obj info-override player-bonk-factor) + (-> obj info-override player-weight) + ) + (-> obj info-override player-force-clamp) + ) + ) + ) + (vector-reset! (-> obj player-force)) + (set! (-> obj player-force y) (- f0-14)) + ) + ) + ) + ) + ) + (else + ((method-of-type rigid-body-object rigid-body-object-method-46) obj arg0 arg1 arg2 arg3) + ) + ) + (none) + ) + +(defmethod rigid-body-object-method-37 rigid-body-platform ((obj rigid-body-platform)) + (if (logtest? (-> obj flags) (rigid-body-object-flag player-impulse-force)) + (sound-play-by-name + (string->sound-name (-> obj info-override sound-name)) + (new-sound-id) + 1024 + 0 + 0 + (sound-group sfx) + #t + ) + ) + (rigid-body-object-method-30 obj) + (quaternion-copy! (-> obj root-override-2 quat) (-> obj rbody state rotation)) + (let ((v1-9 (-> obj rbody)) + (a1-2 (-> obj root-override-2 trans)) + ) + (rigid-body-method-23 (-> v1-9 state) a1-2) + ) + (rider-post) + (none) + ) + +(defmethod rigid-body-object-method-31 rigid-body-platform ((obj rigid-body-platform) (arg0 rigid-body-object-constants)) + (with-pp + (set! (-> obj info-override) (the-as rigid-body-platform-constants arg0)) + (set! (-> obj rbody) (new 'process 'rigid-body-control obj)) + (set! (-> obj control-point-array) + (new 'process 'rigid-body-control-point-inline-array (-> obj info-override control-point-count)) + ) + (collide-shape-method-46 (-> obj root-override-2)) + (let ((v1-5 (-> obj rbody)) + (a1-3 (&-> (-> obj info-override) mass)) + (a2-2 (-> obj root-override-2 trans)) + (a3-0 (-> obj root-override-2 quat)) + (t0-0 (method-of-object obj rigid-body-object-method-29)) + ) + (rigid-body-method-25 (-> v1-5 state) (the-as rigid-body-info a1-3) a2-2 a3-0 t0-0) + ) + (set! (-> obj player-bonk-timeout) (the-as uint (-> pp clock frame-counter))) + (set! (-> obj player-force quad) (-> *null-vector* quad)) + (set! (-> obj player-velocity quad) (-> *null-vector* quad)) + (set! (-> obj player-velocity-prev quad) (-> *null-vector* quad)) + (set! (-> obj root-override-2 max-iteration-count) (the-as uint 4)) + (set! (-> obj max-time-step) (-> arg0 max-time-step)) + (set! (-> obj water-anim) (the-as water-anim (entity-actor-lookup (-> obj entity) 'water-actor 0))) + 0 + (none) + ) + ) + +(defmethod rigid-body-object-method-32 rigid-body-platform ((obj rigid-body-platform)) + (let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)))) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) cshape-reaction-default) + (set! (-> s5-0 no-reaction) nothing) + (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s4-0 prim-core collide-as) (collide-spec pusher)) + (set! (-> s4-0 prim-core collide-with) (collide-spec jak player-list)) + (set! (-> s4-0 prim-core action) (collide-action solid rideable)) + (set! (-> s4-0 transform-index) 0) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 20480.0) + (set! (-> s5-0 total-prims) (the-as uint 1)) + (set! (-> s5-0 root-prim) s4-0) + ) + (collide-shape-method-54 s5-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (let ((v1-15 (-> s5-0 root-prim))) + (set! (-> s5-0 backup-collide-as) (-> v1-15 prim-core collide-as)) + (set! (-> s5-0 backup-collide-with) (-> v1-15 prim-core collide-with)) + ) + (set! (-> obj root-override-2) s5-0) + ) + 0 + (none) + ) + +(define *rigid-body-platform-constants* (new 'static 'rigid-body-platform-constants + :mass 2.0 + :inv-mass 0.5 + :cm-joint-w 1.0 + :linear-damping 1.0 + :angular-damping 1.0 + :bounce-factor 0.5 + :friction-factor 0.1 + :inertial-tensor-x (meters 4) + :inertial-tensor-y (meters 4) + :inertial-tensor-z (meters 4) + :max-time-step 0.033333335 + :gravity (meters 80) + :idle-distance (meters 50) + :attack-force-scale 1.0 + :name '*rigid-body-platform-constants* + :drag-factor 0.8 + :buoyancy-factor 1.5 + :max-buoyancy-depth (meters 1.5) + :player-weight (meters 6.6) + :player-bonk-factor 1.0 + :player-dive-factor 1.0 + :player-force-distance (meters 1000) + :player-force-clamp (meters 1000000) + :player-force-timeout #x1e + :explosion-force (meters 1000) + :control-point-count 1 + :platform #t + :sound-name #f + ) + ) + +(defmethod rigid-body-object-method-33 rigid-body-platform ((obj rigid-body-platform)) + (set! (-> obj float-height-offset) 0.0) + (rigid-body-object-method-31 obj *rigid-body-platform-constants*) + (let ((s5-0 (-> obj info-override control-point-count))) + (dotimes (s4-0 s5-0) + (let ((s3-0 (-> obj control-point-array data s4-0))) + (let ((f30-0 (* 65536.0 (/ (the float s4-0) (the float s5-0))))) + (set! (-> s3-0 local-pos x) (* 12288.0 (sin f30-0))) + (set! (-> s3-0 local-pos y) -10240.0) + (set! (-> s3-0 local-pos z) (* 12288.0 (cos f30-0))) + ) + (set! (-> s3-0 local-pos w) 1.0) + ) + ) + ) + 0 + (none) + ) + +(defmethod init-from-entity! rigid-body-platform ((obj rigid-body-platform) (arg0 entity-actor)) + (set! (-> obj mask) (logior (process-mask platform) (-> obj mask))) + (rigid-body-object-method-32 obj) + (process-drawable-from-entity! obj arg0) + (rigid-body-object-method-33 obj) + (rigid-body-object-method-34 obj) + 0 + (none) + ) diff --git a/test/decompiler/reference/jak2/engine/common_objs/voicebox_REF.gc b/test/decompiler/reference/jak2/engine/common_objs/voicebox_REF.gc new file mode 100644 index 0000000000..b900205aae --- /dev/null +++ b/test/decompiler/reference/jak2/engine/common_objs/voicebox_REF.gc @@ -0,0 +1,628 @@ +(in-package goal) + +(defpartgroup group-talkbox-speak + :id 77 + :flags (unk-4 unk-6) + :bounds (static-bspherem 0 0 0 2) + :rotate ((degrees 4) (degrees 0) (degrees 0)) + :parts ((sp-item 265 :flags (is-3d bit6 bit7) :period 130 :length 30) + (sp-item 265 :flags (is-3d bit6 bit7) :period 150 :length 35 :offset 5) + (sp-item 265 :flags (is-3d bit6 bit7) :period 330 :length 25 :offset 35) + (sp-item 265 :flags (is-3d bit6 bit7) :period 250 :length 60 :offset 15) + (sp-item 265 :flags (is-3d bit6 bit7) :period 465 :length 75 :offset 60) + ) + ) + +(defpart 265 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xcb :page #xc)) + (sp-func spt-birth-func 'birth-func-set-vel) + (sp-rnd-flt spt-num 0.0 0.3 1.0) + (sp-flt spt-y (meters 0.15)) + (sp-flt spt-z (meters 0.4)) + (sp-flt spt-scale-x (meters 0.1)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 16.0) + (sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.0033333334) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.006666667) (meters 0.0033333334) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.32) + (sp-int spt-timer 100) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat) + (sp-int spt-next-time 50) + (sp-launcher-by-id spt-next-launcher 266) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +(defpart 266 + :init-specs ((sp-flt spt-fade-a -0.64)) + ) + +(deftype camera-remote (camera-slave) + () + :heap-base #xa20 + :method-count-assert 14 + :size-assert #xa94 + :flag-assert #xe0a200a94 + ) + +(defmethod inspect camera-remote ((obj camera-remote)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type camera-slave inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +(deftype remote (process-drawable) + ((parent-override (pointer camera-slave) :offset 16) + (base-trans vector :inline :offset-assert 208) + (focus focus :inline :offset-assert 224) + (seeker cam-float-seeker :inline :offset-assert 236) + (start-time time-frame :offset-assert 264) + (blend float :offset-assert 272) + (twist float :offset-assert 276) + (speak-effect? basic :offset-assert 280) + ) + :heap-base #xa0 + :method-count-assert 26 + :size-assert #x11c + :flag-assert #x1a00a0011c + (:methods + (enter () _type_ :state 20) + (idle () _type_ :state 21) + (exit () _type_ :state 22) + (remote-method-23 (_type_) none 23) + (remote-method-24 (_type_ vector) float 24) + (remote-method-25 (_type_) none 25) + ) + ) + +(defmethod inspect remote ((obj remote)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~2Tbase-trans: ~`vector`P~%" (-> obj base-trans)) + (format #t "~2Tfocus: #~%" (-> obj focus)) + (format #t "~2Tseeker: #~%" (-> obj seeker)) + (format #t "~2Tstart-time: ~D~%" (-> obj start-time)) + (format #t "~2Tblend: ~f~%" (-> obj blend)) + (format #t "~2Ttwist: ~f~%" (-> obj twist)) + (format #t "~2Tspeak-effect?: ~A~%" (-> obj speak-effect?)) + (label cfg-4) + obj + ) + +(defskelgroup skel-voicebox talk-box 0 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :texture-level 6 + :sort 1 + ) + +(defmethod remote-method-24 remote ((obj remote) (arg0 vector)) + (let ((s4-0 (handle->process (-> obj focus handle)))) + (when s4-0 + (set! (-> arg0 quad) (-> (get-trans (the-as process-focusable s4-0) 3) quad)) + (let ((a0-7 (vector-z-quaternion! (new 'stack-no-clear 'vector) (get-quat (the-as process-focusable s4-0) 0)))) + (vector+float*! arg0 arg0 a0-7 (* -16384.0 (- 1.0 (-> obj blend)))) + ) + ) + ) + (lerp-scale 1.0 0.0 (-> obj blend) 0.8 1.0) + ) + +(defmethod remote-method-25 remote ((obj remote)) + (with-pp + (rlet ((acc :class vf) + (vf0 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + (vf7 :class vf) + ) + (init-vf0-vector) + (ja-post) + (if (type? (-> obj root) collide-shape) + (collide-shape-method-46 (the-as collide-shape (-> obj root))) + ) + (when (and (nonzero? (-> obj part)) (and (or (and (-> obj next-state) (= (-> obj next-state name) 'idle)) + (and (-> obj next-state) (= (-> obj next-state name) 'enter)) + ) + (-> obj speak-effect?) + ) + ) + (let ((v1-15 (vector-float*! + (new 'stack-no-clear 'vector) + (-> obj parent-override 0 velocity) + (-> pp clock frames-per-second) + ) + ) + (a0-8 *particle-vel*) + ) + (let ((a1-4 (-> obj node-list data 3 bone transform vector 2))) + (let ((a2-1 20480.0)) + (.mov vf7 a2-1) + ) + (.lvf vf5 (&-> a1-4 quad)) + ) + (.lvf vf4 (&-> v1-15 quad)) + (.add.x.vf vf6 vf0 vf0 :mask #b1000) + (.mul.x.vf acc vf5 vf7 :mask #b111) + (.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111) + (.svf (&-> a0-8 quad) vf6) + ) + (let ((v1-16 *particle-vel*) + (a0-9 *particle-vel*) + (f0-2 300.0) + ) + (vector-float*! v1-16 a0-9 (/ 1.0 f0-2)) + ) + (spawn-with-cspace (-> obj part) (-> obj node-list data 3)) + ) + 0 + (none) + ) + ) + ) + +(defbehavior remote-track remote () + (let ((gp-0 (handle->process (-> self focus handle))) + (s5-0 (new 'stack-no-clear 'vector)) + ) + (set! (-> s5-0 quad) (-> self parent-override 0 trans quad)) + (let ((f30-0 (remote-method-24 self s5-0))) + (let ((a1-2 (new 'stack-no-clear 'vector))) + (set! (-> a1-2 quad) (-> self parent-override 0 trans quad)) + (vector-lerp! (-> self root trans) a1-2 s5-0 (-> self blend)) + ) + (+! (-> self root trans y) + (* 1638.4 (sin (* 54.613335 (the float (mod (-> self clock frame-counter) 1200))))) + ) + (let ((s5-1 (new 'stack-no-clear 'quaternion))) + (forward-up->quaternion + s5-1 + (vector-normalize! (vector-! (new 'stack-no-clear 'vector) (target-pos 8) (-> self root trans)) 1.0) + (new 'static 'vector :y 1.0 :w 1.0) + ) + (rotate-toward-orientation! + (-> self root) + s5-1 + 65536.0 + 5461.3335 + 150 + 0.00000000000000000000000000000000000000000021 + 0.0 + ) + ) + (when gp-0 + (let* ((gp-1 (-> (the-as process-drawable gp-0) root)) + (s4-1 (-> self root trans)) + (f0-6 + (deg-diff (y-angle gp-1) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s4-1 (-> gp-1 trans)))) + ) + ) + (if (< 0.0 f0-6) + (seek! (-> self twist) -0.4 (* 0.3 (-> self clock seconds-per-frame))) + (seek! (-> self twist) 0.4 (* 0.3 (-> self clock seconds-per-frame))) + ) + ) + (let ((a1-9 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-9 from) (process->ppointer self)) + (set! (-> a1-9 num-params) 0) + (set! (-> a1-9 message) 'blocked-side?) + (case (send-event-function (ppointer->process (-> self parent-override)) a1-9) + ((1) + (set! (-> self twist) 0.5) + ) + ((2) + (set! (-> self twist) -0.5) + ) + ((3) + (set! (-> self twist) 0.0) + ) + ) + ) + (send-event (ppointer->process (-> self parent-override)) 'joystick (-> self twist) -1082130432) + ) + (set! (-> self root scale x) f30-0) + (set! (-> self root scale y) f30-0) + (set! (-> self root scale z) f30-0) + ) + ) + 0 + (none) + ) + +(defstate enter (remote) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type + (('die) + (go-virtual exit) + ) + (('speak-effect) + (let ((v0-0 (the-as object (-> event param 0)))) + (set! (-> self speak-effect?) (the-as basic v0-0)) + v0-0 + ) + ) + ) + ) + :enter (behavior () + (set! (-> self start-time) (-> *display* game-clock frame-counter)) + (let* ((gp-0 (ppointer->process (-> self parent-override 0 parent))) + (a1-1 (if (type? gp-0 process-focusable) + gp-0 + ) + ) + ) + (if a1-1 + (try-update-focus (-> self focus) (the-as process-focusable a1-1)) + ) + ) + (none) + ) + :trans (behavior () + (remote-track) + (let ((a0-1 (handle->process (-> self focus handle)))) + (if (and a0-1 (< 0.1 (-> self blend))) + (point-toward-point-clear-roll-pitch! (-> self root) (get-trans (the-as process-focusable a0-1) 0)) + ) + ) + (none) + ) + :code (behavior () + (let* ((gp-0 (ppointer->process (-> self parent-override 0 parent))) + (a0-1 (if (type? gp-0 process-focusable) + (the-as process-focusable gp-0) + ) + ) + ) + (if (and a0-1 (logtest? (focus-status pilot) (-> a0-1 focus-status))) + (send-event + (ppointer->process (-> self parent-override)) + 'set-dist + (new 'static 'vector :z 8192.0 :w 1.0) + (new 'static 'vector :y 20480.0 :z 12288.0 :w 1.0) + ) + (send-event + (ppointer->process (-> self parent-override)) + 'set-dist + (new 'static 'vector :z 16384.0 :w 1.0) + (new 'static 'vector :y 20480.0 :z 40960.0 :w 1.0) + ) + ) + ) + (init (-> self seeker) 1.0 0.01 0.022222223 0.1) + (set! (-> self seeker target) 0.0) + (while (< 0.0001 (-> self blend)) + (update! (-> self seeker) 0.0) + (set! (-> self blend) (-> self seeker value)) + (suspend) + ) + (set! (-> self blend) 0.0) + (go-virtual idle) + (none) + ) + :post (behavior () + (remote-method-25 self) + (none) + ) + ) + +(defstate idle (remote) + :virtual #t + :event (-> (method-of-type remote enter) event) + :trans remote-track + :code (behavior () + (while (handle->process (-> self focus handle)) + (suspend) + (ja :num! (loop!)) + ) + (go-virtual exit) + (none) + ) + :post (-> (method-of-type remote enter) post) + ) + +(defstate exit (remote) + :virtual #t + :trans remote-track + :code (behavior () + (set! (-> self blend) 1.0) + (send-event (ppointer->process (-> self parent-override)) 'change-state empty-state) + (suspend) + 0 + (none) + ) + :post (-> (method-of-type remote enter) post) + ) + +(defmethod remote-method-23 remote ((obj remote)) + (reset-to-collide-spec (-> obj focus) (collide-spec jak player-list)) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-voicebox" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj blend) 1.0) + (set! (-> obj draw light-index) (the-as uint 30)) + (set! (-> obj speak-effect?) #f) + (set! (-> obj part) (create-launch-control (-> *part-group-id-table* 77) obj)) + (none) + ) + +(defstate cam-remote (camera-slave) + :event (-> cam-string event) + :enter (-> cam-string enter) + :trans (behavior () + (if (or (not *camera*) (not (logtest? (-> *camera* master-options) 1)) (not (-> self child))) + (deactivate self) + ) + (none) + ) + :code (-> cam-string code) + ) + +(deftype voicebox (remote) + ((hint handle :offset-assert 288) + ) + :heap-base #xb0 + :method-count-assert 26 + :size-assert #x128 + :flag-assert #x1a00b00128 + ) + +(defmethod inspect voicebox ((obj voicebox)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type remote inspect))) + (t9-0 obj) + ) + (format #t "~2Thint: ~D~%" (-> obj hint)) + (label cfg-4) + obj + ) + +(defstate exit (voicebox) + :virtual #t + :code (behavior () + (remove-setting! 'sound-flava) + (set! (-> self state-time) (-> self clock frame-counter)) + (set! (-> self seeker target) 1.0) + (while (and (< (-> self blend) 0.9999) + (not (and (not (handle->process (-> self hint))) + (>= (- (-> self clock frame-counter) (-> self state-time)) (seconds 0.05)) + (-> *setting-control* user-current hint) + ) + ) + ) + (update! (-> self seeker) 0.0) + (set! (-> self blend) (-> self seeker value)) + (suspend) + ) + (set! (-> self blend) 1.0) + (send-event (ppointer->process (-> self parent-override)) 'change-state empty-state) + (suspend) + (process-drawable-method-17 self) + (none) + ) + ) + +(defbehavior voicebox-init-by-other voicebox ((arg0 vector) (arg1 handle)) + (set! (-> self hint) arg1) + (set! (-> self root) (new 'process 'trsqv)) + (set! (-> self root trans quad) (-> arg0 quad)) + (set! (-> self base-trans quad) (-> arg0 quad)) + (remote-method-23 self) + (set! (-> self event-hook) (-> (method-of-object self enter) event)) + (go-virtual enter) + (none) + ) + +(defun voicebox-spawn ((arg0 process-drawable) (arg1 vector)) + (with-pp + (when *camera* + (let ((s3-0 (process-spawn camera-remote :init cam-slave-init cam-remote #f :from *camera-dead-pool* :to arg0))) + (if s3-0 + (process-spawn voicebox arg1 (process->handle pp) :to (ppointer->process s3-0)) + ) + ) + ) + ) + ) + +(deftype judge (remote) + ((total-time time-frame :offset-assert 288) + (beep-time time-frame :offset-assert 296) + (hud-timer handle :offset-assert 304) + (score uint8 :offset-assert 312) + ) + :heap-base #xc0 + :method-count-assert 28 + :size-assert #x139 + :flag-assert #x1c00c00139 + (:methods + (wait () _type_ :state 26) + (judge-method-27 (_type_) none 27) + ) + ) + +(defmethod inspect judge ((obj judge)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type remote inspect))) + (t9-0 obj) + ) + (format #t "~2Ttotal-time: ~D~%" (-> obj total-time)) + (format #t "~2Tbeep-time: ~D~%" (-> obj beep-time)) + (format #t "~2Thud-timer: ~D~%" (-> obj hud-timer)) + (format #t "~2Tscore: ~D~%" (-> obj score)) + (label cfg-4) + obj + ) + +(defmethod remote-method-24 judge ((obj judge) (arg0 vector)) + (set! (-> arg0 quad) (-> obj base-trans quad)) + 1.0 + ) + +(defmethod remote-method-25 judge ((obj judge)) + (ja-post) + (if (type? (-> obj root) collide-shape) + (collide-shape-method-46 (the-as collide-shape (-> obj root))) + ) + (when (and (-> obj next-state) (let ((v1-6 (-> obj next-state name))) + (or (= v1-6 'idle) (= v1-6 'enter)) + ) + ) + (if *target* + (set! (-> *game-info* score) (-> *target* fact-info-override trick-point)) + ) + (let ((v1-15 (the-as int (- (-> obj total-time) (- (-> *display* game-clock frame-counter) (-> obj start-time)))))) + (if (< (the-as time-frame v1-15) 0) + (set! v1-15 0) + ) + (set! (-> *game-info* timer) (the-as time-frame v1-15)) + ) + ) + 0 + (none) + ) + +(defstate wait (judge) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type + (('die) + (sound-play "judge-stop") + (go-virtual exit) + ) + (('touch 'attack) + (let ((s4-0 (process-spawn camera-remote :init cam-slave-init cam-remote #f :from *camera-dead-pool* :to proc)) + (s5-2 (if (type? proc process-focusable) + (the-as process-focusable proc) + ) + ) + ) + (when (and s4-0 + (begin (send-event s5-2 'change-mode 'board #f) (logtest? (focus-status board) (-> s5-2 focus-status))) + ) + (change-parent self (ppointer->process s4-0)) + (try-update-focus (-> self focus) s5-2) + (go-virtual enter) + ) + ) + ) + (('waiting) + #t + ) + ) + ) + :code (behavior () + (transform-post) + (logior! (-> self mask) (process-mask sleep)) + (suspend) + 0 + (none) + ) + ) + +(defstate enter (judge) + :virtual #t + :enter (behavior () + (set! (-> self start-time) (-> *display* game-clock frame-counter)) + (send-event *target* 'get-pickup 20 (the float (-> self total-time))) + (sound-play "judge-start") + (set! (-> self hud-timer) (ppointer->handle (process-spawn hud-timer :init hud-init-by-other :to self))) + (none) + ) + ) + +(defstate idle (judge) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type + (('die) + (sound-play "judge-stop") + (go-virtual exit) + ) + ) + ) + :code (behavior () + (while (let ((a0-2 (handle->process (-> self focus handle)))) + (and a0-2 (!= (send-event a0-2 'test-pickup 20) 0.0)) + ) + (suspend) + (ja :num! (loop!)) + ) + (send-event (handle->process (-> self hud-timer)) 'hide-and-die) + (go-virtual exit) + (none) + ) + ) + +(defmethod judge-method-27 judge ((obj judge)) + (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let ((v1-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) + (set! (-> v1-2 prim-core collide-as) (collide-spec collectable)) + (set! (-> v1-2 prim-core collide-with) (collide-spec jak player-list tobot)) + (set-vector! (-> v1-2 local-sphere) 0.0 0.0 0.0 16384.0) + (set! (-> s5-0 total-prims) (the-as uint 1)) + (set! (-> s5-0 root-prim) v1-2) + ) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (let ((v1-5 (-> s5-0 root-prim))) + (set! (-> s5-0 backup-collide-as) (-> v1-5 prim-core collide-as)) + (set! (-> s5-0 backup-collide-with) (-> v1-5 prim-core collide-with)) + ) + (set! (-> obj root) s5-0) + ) + 0 + (none) + ) + +(defmethod init-from-entity! judge ((obj judge) (arg0 entity-actor)) + (judge-method-27 obj) + (remote-method-23 obj) + (process-drawable-from-entity! obj arg0) + (set! (-> obj root trans y) (+ 4096.0 (-> obj root trans y))) + (set! (-> obj base-trans quad) (-> obj root trans quad)) + (set! (-> obj total-time) (seconds 90)) + (go (method-of-object obj wait)) + (none) + ) + +(defbehavior judge-init-by-other judge ((arg0 vector) (arg1 uint)) + (process-entity-set! self (the-as entity-actor #f)) + (set! (-> self score) arg1) + (judge-method-27 self) + (remote-method-23 self) + (vector-identity! (-> self root scale)) + (quaternion-identity! (-> self root quat)) + (set! (-> self root trans quad) (-> arg0 quad)) + (set! (-> self base-trans quad) (-> self root trans quad)) + (set! (-> self total-time) (seconds 90)) + (go-virtual wait) + (none) + ) + +(defun judge-spawn ((arg0 process-tree) (arg1 vector) (arg2 uint)) + (process-spawn judge arg1 arg2 :to arg0) + ) diff --git a/test/decompiler/reference/jak2/engine/common_objs/water_REF.gc b/test/decompiler/reference/jak2/engine/common_objs/water_REF.gc index 605bf2a0eb..142cd755fa 100644 --- a/test/decompiler/reference/jak2/engine/common_objs/water_REF.gc +++ b/test/decompiler/reference/jak2/engine/common_objs/water_REF.gc @@ -1,9 +1,5 @@ -;;-*-Lisp-*- (in-package goal) -;; definition for function check-water-level-drop -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defun check-water-level-drop ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (when (and (< (-> arg2 y) (-> arg1 user-float)) (< (-> arg1 vel-sxvel y) 0.0)) (let ((gp-0 (new 'stack-no-clear 'vector))) @@ -24,8 +20,6 @@ (none) ) -;; definition for function check-water-level-drop-and-die -;; WARN: Return type mismatch symbol vs none. (defun check-water-level-drop-and-die ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (if (and (< (-> arg2 y) (-> arg1 user-float)) (< (-> arg1 vel-sxvel y) 0.0)) (sp-kill-particle arg0 arg1) @@ -33,7 +27,6 @@ (none) ) -;; definition for function check-water-level-drop-and-die-motion (defun check-water-level-drop-and-die-motion ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (if (and (< (-> arg2 y) (-> arg1 user-float)) (< (-> arg1 vel-sxvel y) 0.0)) (sp-kill-particle arg0 arg1) @@ -42,8 +35,6 @@ (none) ) -;; definition for function check-water-level-above-and-die -;; WARN: Return type mismatch symbol vs none. (defun check-water-level-above-and-die ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (if (or (>= (-> arg2 y) (-> arg1 user-float)) (and *target* (>= (-> arg2 y) (-> *target* water height)))) (sp-kill-particle arg0 arg1) @@ -51,7 +42,6 @@ (none) ) -;; failed to figure out what this is: (defpart 502 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) (sp-flt spt-num 9.0) @@ -76,7 +66,6 @@ ) ) -;; failed to figure out what this is: (defpart 503 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) (sp-flt spt-num 0.1) @@ -101,7 +90,6 @@ ) ) -;; failed to figure out what this is: (defpart 504 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x2c :page #xc)) (sp-flt spt-num 0.05) @@ -121,7 +109,6 @@ ) ) -;; failed to figure out what this is: (defpart 506 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x2e :page #xc)) (sp-flt spt-num 0.06) @@ -146,17 +133,14 @@ ) ) -;; failed to figure out what this is: (defpart 507 :init-specs ((sp-flt spt-fade-a 0.0) (sp-int-plain-rnd spt-next-time 90 119 1) (sp-launcher-by-id spt-next-launcher 508)) ) -;; failed to figure out what this is: (defpart 508 :init-specs ((sp-flt spt-fade-a -0.21333334)) ) -;; failed to figure out what this is: (defpart 509 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x33 :page #xc)) (sp-rnd-flt spt-num 0.05 0.4 1.0) @@ -180,17 +164,14 @@ ) ) -;; failed to figure out what this is: (defpart 510 :init-specs ((sp-flt spt-fade-a 0.0) (sp-int spt-next-time 360) (sp-launcher-by-id spt-next-launcher 511)) ) -;; failed to figure out what this is: (defpart 511 :init-specs ((sp-flt spt-fade-a -0.7111111)) ) -;; failed to figure out what this is: (defpartgroup group-part-water-splash :id 121 :duration (seconds 3) @@ -232,7 +213,6 @@ ) ) -;; failed to figure out what this is: (defpartgroup group-part-water-splash-small :id 122 :duration (seconds 3) @@ -256,7 +236,6 @@ ) ) -;; failed to figure out what this is: (defpart 512 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) (sp-flt spt-num 0.2) @@ -278,7 +257,6 @@ ) ) -;; failed to figure out what this is: (defpart 513 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) (sp-flt spt-num 0.2) @@ -300,7 +278,6 @@ ) ) -;; failed to figure out what this is: (defpart 519 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x2c :page #xc)) (sp-flt spt-num 0.05) @@ -321,7 +298,6 @@ ) ) -;; failed to figure out what this is: (defpart 520 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) (sp-flt spt-num 3.2) @@ -348,7 +324,6 @@ ) ) -;; failed to figure out what this is: (defpart 518 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x2d :page #xc)) (sp-flt spt-num 1.0) @@ -369,7 +344,6 @@ ) ) -;; failed to figure out what this is: (defpart 525 :init-specs ((sp-flt spt-scalevel-y (meters 0.026666667)) (sp-int spt-next-time 20) @@ -377,7 +351,6 @@ ) ) -;; failed to figure out what this is: (defpart 526 :init-specs ((sp-flt spt-scalevel-y (meters 0)) (sp-flt spt-fade-a -0.64) @@ -386,7 +359,6 @@ ) ) -;; failed to figure out what this is: (defpart 527 :init-specs ((sp-flt spt-scalevel-x (meters 0.0016666667)) (sp-flt spt-scalevel-y (meters -0.026666667)) @@ -395,12 +367,10 @@ ) ) -;; failed to figure out what this is: (defpart 528 :init-specs ((sp-flt spt-scalevel-x (meters 0.0033333334)) (sp-flt spt-scalevel-y (meters -0.053333335))) ) -;; failed to figure out what this is: (defpart 516 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc)) (sp-func spt-birth-func 'birth-func-texture-group) @@ -426,12 +396,10 @@ ) ) -;; failed to figure out what this is: (defpart 505 :init-specs ((sp-flt spt-fade-a -0.21333334)) ) -;; failed to figure out what this is: (defpart 517 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) (sp-flt spt-num 3.2) @@ -457,12 +425,10 @@ ) ) -;; failed to figure out what this is: (defpart 524 :init-specs ((sp-flt spt-scalevel-x (meters 0)) (sp-copy-from-other spt-scalevel-y -4)) ) -;; failed to figure out what this is: (defpart 515 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) (sp-flt spt-num 8.0) @@ -486,7 +452,6 @@ ) ) -;; failed to figure out what this is: (defpart 514 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x2d :page #xc)) (sp-flt spt-num 1.5) @@ -512,7 +477,6 @@ ) ) -;; failed to figure out what this is: (defpart 529 :init-specs ((sp-flt spt-scalevel-x (meters 0)) (sp-flt spt-rotvel-x (degrees 0.16666667)) @@ -522,7 +486,6 @@ ) ) -;; failed to figure out what this is: (defpart 530 :init-specs ((sp-flt spt-rotvel-x (degrees 0.13333334)) (sp-flt spt-scalevel-y (meters 0)) @@ -532,7 +495,6 @@ ) ) -;; failed to figure out what this is: (defpart 531 :init-specs ((sp-flt spt-rotvel-x (degrees 0.1)) (sp-flt spt-scalevel-y (meters -0.016666668)) @@ -541,12 +503,10 @@ ) ) -;; failed to figure out what this is: (defpart 532 :init-specs ((sp-flt spt-rotvel-x (degrees 0.06666667)) (sp-flt spt-scalevel-y (meters -0.033333335))) ) -;; failed to figure out what this is: (defpart 522 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) (sp-flt spt-num 1.0) @@ -569,12 +529,10 @@ ) ) -;; failed to figure out what this is: (defpart 533 :init-specs ((sp-flt spt-fade-a -0.64)) ) -;; failed to figure out what this is: (defpart 521 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) (sp-flt spt-num 12.0) @@ -603,7 +561,6 @@ ) ) -;; failed to figure out what this is: (defpart 63 :init-specs ((sp-flt spt-r 255.0) (sp-flt spt-g 255.0) @@ -613,7 +570,6 @@ ) ) -;; failed to figure out what this is: (defpart 534 :init-specs ((sp-rnd-flt spt-r 32.0 32.0 1.0) (sp-rnd-flt spt-g 32.0 32.0 1.0) @@ -623,7 +579,6 @@ ) ) -;; failed to figure out what this is: (defpart 501 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc)) (sp-flt spt-num 0.3) @@ -649,7 +604,6 @@ ) ) -;; failed to figure out what this is: (defpart 536 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) (sp-rnd-flt spt-num 0.0 0.5 1.0) @@ -676,8 +630,6 @@ ) ) -;; definition for function check-water-level-drop-motion -;; INFO: Used lq/sq (defun check-water-level-drop-motion ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (when (and (< (-> arg2 y) (-> arg1 user-float)) (< (-> arg1 vel-sxvel y) 0.0)) (let ((s3-0 (new 'stack-no-clear 'vector))) @@ -707,7 +659,6 @@ (none) ) -;; failed to figure out what this is: (defpart 537 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) (sp-flt spt-num 1.0) @@ -734,16 +685,11 @@ ) ) -;; definition for method 9 of type water-control -;; WARN: Return type mismatch int vs none. (defmethod water-control-method-9 water-control ((obj water-control)) 0 (none) ) -;; definition for method 10 of type water-control -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defmethod water-control-method-10 water-control ((obj water-control)) (local-vars (sv-272 (function vector entity-actor skeleton-group vector none :behavior manipy)) @@ -1260,8 +1206,6 @@ ) ) -;; definition for method 11 of type water-control -;; WARN: Return type mismatch int vs none. (defmethod start-bobbing! water-control ((obj water-control) (arg0 float) (arg1 int) (arg2 int)) (with-pp (activate! (-> obj bob) (- arg0) arg1 arg2 0.9 1.0 (-> pp clock)) @@ -1270,8 +1214,6 @@ ) ) -;; definition for function part-water-splash-callback -;; WARN: Return type mismatch int vs none. (defun part-water-splash-callback ((arg0 part-tracker)) (let ((f1-0 (-> arg0 root trans y)) (f0-0 (the-as float (-> arg0 userdata))) @@ -1353,8 +1295,6 @@ (none) ) -;; definition for method 15 of type water-control -;; WARN: Return type mismatch int vs none. (defmethod enter-water water-control ((obj water-control)) (with-pp (set! (-> obj flags) (logior (water-flags touch-water) (-> obj flags))) @@ -1387,8 +1327,6 @@ ) ) -;; definition for method 16 of type water-control -;; WARN: Return type mismatch int vs none. (defmethod water-control-method-16 water-control ((obj water-control)) (logclear! (-> obj flags) (water-flags touch-water)) (set-zero! (-> obj bob)) @@ -1399,9 +1337,6 @@ (none) ) -;; definition for function splash-spawn -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defun splash-spawn ((arg0 float) (arg1 vector) (arg2 int)) (let ((s5-0 (get-process *default-dead-pool* part-tracker #x4000))) (when s5-0 @@ -1445,9 +1380,6 @@ (none) ) -;; definition for function rings-water-spawn -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defun rings-water-spawn ((arg0 float) (arg1 vector) (arg2 vector) (arg3 float) (arg4 float)) (let* ((v1-0 arg2) (f30-0 (sqrtf (+ (* (-> v1-0 x) (-> v1-0 x)) (* (-> v1-0 z) (-> v1-0 z))))) @@ -1493,8 +1425,6 @@ (none) ) -;; definition for method 13 of type water-control -;; WARN: Return type mismatch int vs none. (defmethod spawn-ripples water-control ((obj water-control) (arg0 float) (arg1 vector) (arg2 int) (arg3 vector) (arg4 symbol)) (with-pp (when (and (logtest? (water-flags part-splash) (-> obj flags)) (logtest? (water-flags part-water) (-> obj flags))) @@ -1541,8 +1471,6 @@ ) ) -;; definition for function water-info<-region -;; INFO: Used lq/sq (defun water-info<-region ((arg0 water-info) (arg1 drawable-region-prim) (arg2 collide-shape) (arg3 collide-action)) (with-pp (set! (-> arg0 flags) (water-flags)) @@ -1577,7 +1505,7 @@ ) (('ocean) (set! (-> arg0 flags) (water-flags active use-ocean)) - (set! (-> arg0 trans y) (ocean-method-11 *ocean* (the-as (inline-array vector) (-> arg0 trans)) #f)) + (set! (-> arg0 trans y) (ocean-method-11 *ocean* (-> arg0 trans) #f)) (set! (-> arg0 base-height) (ocean-map-method-10 *ocean-map*)) (when (= (-> arg0 trans y) 4095996000.0) (set! (-> arg0 flags) (water-flags)) @@ -1683,8 +1611,6 @@ ) ) -;; definition for method 52 of type collide-shape -;; INFO: Used lq/sq (defmethod water-info-init! collide-shape ((obj collide-shape) (arg0 water-info) (arg1 collide-action)) "Initialize a [[water-info]] with the currently loaded regions." (local-vars (sv-80 int)) diff --git a/test/decompiler/reference/jak2/engine/debug/debug-part_REF.gc b/test/decompiler/reference/jak2/engine/debug/debug-part_REF.gc index 2b39f9bf68..50a4e6a32f 100644 --- a/test/decompiler/reference/jak2/engine/debug/debug-part_REF.gc +++ b/test/decompiler/reference/jak2/engine/debug/debug-part_REF.gc @@ -1748,7 +1748,47 @@ ) ;; definition for function sparticle-track-root-money -;; ERROR: function has no type analysis. Cannot decompile. +;; ERROR: failed type prop at 2: Unknown symbol: hud-money +(defun sparticle-track-root-money ((a0-0 sparticle-system) (a1-0 sparticle-cpuinfo) (a2-0 vector)) + "Hopefully unused, it still uses a jak 1 symbol -- [[hud-money]] which no longer exists!" + (local-vars + (v0-0 none) + (v1-0 sparticle-launch-control) + (v1-1 process-drawable) + (v1-2 none) + (v1-3 none) + (a0-1 none) + (a0-3 none) + (a1-1 none) + (f0-0 none) + (f0-1 none) + (f0-2 none) + (f0-3 none) + (f1-0 none) + ) + (when (begin + (set! v1-0 (-> a1-0 key)) + (set! v1-1 (-> v1-0 proc)) + (set! a0-1 (the-as none hud-money)) + (set! a1-1 (the-as none (-> v1-1 type))) + (!= a1-1 a0-1) + ) + (set! v1-2 (the-as none (l.wu (+ v1-1 124)))) + (set! v1-3 (the-as none (+ v1-2 12))) + (set! f0-0 (the-as none (l.f v1-3))) + (s.f! a2-0 f0-0) + (set! a0-3 (the-as none #x45000000)) + (set! f0-1 (the-as none (gpr->fpr a0-3))) + (set! f1-0 (the-as none (l.f (+ v1-3 4)))) + (set! f0-2 (the-as none (+.s f0-1 f1-0))) + (s.f! (+ a2-0 4) f0-2) + (set! f0-3 (the-as none (l.f (+ v1-3 8)))) + (s.f! (+ a2-0 8) f0-3) + (set! v1-4 (the-as none (fpr->gpr f0-3))) + ) + (set! v0-0 (the-as none 0)) + (ret-none) + ) ;; failed to figure out what this is: (defpart 412 diff --git a/test/decompiler/reference/jak2/engine/game/game-h_REF.gc b/test/decompiler/reference/jak2/engine/game/game-h_REF.gc index 48ce51c8c8..8c8ddfb9ae 100644 --- a/test/decompiler/reference/jak2/engine/game/game-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/game/game-h_REF.gc @@ -1,7 +1,5 @@ -;;-*-Lisp-*- (in-package goal) -;; definition of type process-drawable (deftype process-drawable (process) ((root trsqv :offset-assert 128) (node-list cspace-array :offset-assert 132) @@ -35,7 +33,6 @@ ) ) -;; definition for method 3 of type process-drawable (defmethod inspect process-drawable ((obj process-drawable)) (when (not obj) (set! obj obj) @@ -65,7 +62,6 @@ obj ) -;; definition of type process-drawable-reserved (deftype process-drawable-reserved (process-drawable) () :heap-base #x50 @@ -234,7 +230,6 @@ ) ) -;; definition for method 3 of type process-drawable-reserved (defmethod inspect process-drawable-reserved ((obj process-drawable-reserved)) (when (not obj) (set! obj obj) @@ -247,7 +242,6 @@ obj ) -;; definition of type attack-dir-info (deftype attack-dir-info (structure) ((dir vector :inline :offset-assert 0) (xz-dir vector :inline :offset-assert 16) @@ -259,7 +253,6 @@ :flag-assert #x900000040 ) -;; definition for method 3 of type attack-dir-info (defmethod inspect attack-dir-info ((obj attack-dir-info)) (when (not obj) (set! obj obj) @@ -274,7 +267,6 @@ obj ) -;; definition of type attack-info (deftype attack-info (structure) ((trans vector :inline :offset-assert 0) (vector vector :inline :offset-assert 16) @@ -311,7 +303,6 @@ ) ) -;; definition for method 3 of type attack-info (defmethod inspect attack-info ((obj attack-info)) (when (not obj) (set! obj obj) @@ -418,7 +409,6 @@ obj ) -;; definition of type ground-tween-info (deftype ground-tween-info (structure) ((chan uint8 3 :offset-assert 0) (blend float 3 :offset-assert 4) @@ -430,7 +420,6 @@ :flag-assert #x900000024 ) -;; definition for method 3 of type ground-tween-info (defmethod inspect ground-tween-info ((obj ground-tween-info)) (when (not obj) (set! obj obj) @@ -444,5 +433,4 @@ obj ) -;; failed to figure out what this is: 0 diff --git a/test/decompiler/reference/jak2/engine/gfx/mood/weather-part_REF.gc b/test/decompiler/reference/jak2/engine/gfx/mood/weather-part_REF.gc index 7c78f44376..2cd14e7d1a 100644 --- a/test/decompiler/reference/jak2/engine/gfx/mood/weather-part_REF.gc +++ b/test/decompiler/reference/jak2/engine/gfx/mood/weather-part_REF.gc @@ -1,7 +1,5 @@ -;;-*-Lisp-*- (in-package goal) -;; failed to figure out what this is: (defpartgroup group-rain-screend-drop-real :id 1 :flags (screen-space) @@ -75,10 +73,8 @@ ) ) -;; definition for symbol group-rain-screend-drop, type sparticle-launch-group (define group-rain-screend-drop (-> *part-group-id-table* 1)) -;; failed to figure out what this is: (defpart 46 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x29 :page #xc)) (sp-flt spt-num 0.1) @@ -99,7 +95,6 @@ ) ) -;; failed to figure out what this is: (defpart 43 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) (sp-flt spt-num 1.0) @@ -120,7 +115,6 @@ ) ) -;; failed to figure out what this is: (defpart 47 :init-specs ((sp-flt spt-scalevel-x (meters 0.004166667)) (sp-copy-from-other spt-scalevel-y -4) @@ -128,7 +122,6 @@ ) ) -;; failed to figure out what this is: (defpart 44 :init-specs ((sp-flt spt-num 1.0) (sp-int spt-rot-x 12) @@ -146,12 +139,10 @@ ) ) -;; failed to figure out what this is: (defpart 48 :init-specs ((sp-flt spt-fade-g -5.1200004)) ) -;; failed to figure out what this is: (defpart 45 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x29 :page #xc)) (sp-flt spt-num 0.1) @@ -172,7 +163,6 @@ ) ) -;; failed to figure out what this is: (defpart 41 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) (sp-flt spt-num 1.0) @@ -193,7 +183,6 @@ ) ) -;; failed to figure out what this is: (defpart 49 :init-specs ((sp-flt spt-scalevel-x (meters 0.008333334)) (sp-copy-from-other spt-scalevel-y -4) @@ -201,7 +190,6 @@ ) ) -;; failed to figure out what this is: (defpart 42 :init-specs ((sp-flt spt-num 1.0) (sp-int spt-rot-x 24) @@ -219,12 +207,10 @@ ) ) -;; failed to figure out what this is: (defpart 50 :init-specs ((sp-flt spt-fade-g -10.240001)) ) -;; failed to figure out what this is: (defpartgroup group-stars :id 2 :flags (always-draw) @@ -232,7 +218,6 @@ :parts ((sp-item 51 :flags (bit6)) (sp-item 52 :flags (bit6)) (sp-item 53 :flags (bit6))) ) -;; failed to figure out what this is: (defpart 51 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc)) (sp-flt spt-num 1.0) @@ -254,17 +239,14 @@ ) ) -;; failed to figure out what this is: (defpart 54 :init-specs ((sp-flt spt-fade-a 0.0) (sp-int spt-next-time 29999700) (sp-launcher-by-id spt-next-launcher 55)) ) -;; failed to figure out what this is: (defpart 55 :init-specs ((sp-flt spt-fade-a -0.42666668)) ) -;; failed to figure out what this is: (defpart 52 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc)) (sp-flt spt-num 1.0) @@ -286,7 +268,6 @@ ) ) -;; failed to figure out what this is: (defpart 53 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc)) (sp-flt spt-num 1.0) @@ -308,7 +289,6 @@ ) ) -;; failed to figure out what this is: (defpart 56 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc)) (sp-flt spt-num 4.0) @@ -333,7 +313,6 @@ ) ) -;; failed to figure out what this is: (defpart 58 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc)) (sp-flt spt-num 0.0) @@ -358,19 +337,14 @@ ) ) -;; failed to figure out what this is: (defpart 57 :init-specs ((sp-flt spt-fade-a 0.0) (sp-int spt-next-time 1200) (sp-launcher-by-id spt-next-launcher 59)) ) -;; failed to figure out what this is: (defpart 59 :init-specs ((sp-flt spt-fade-a -0.85333335)) ) -;; definition for function update-snow -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defun update-snow ((arg0 float) (arg1 vector) (arg2 vector)) (let ((f0-0 (lerp-scale 0.0 1.0 (vector-length arg2) 2048.0 40960.0))) (set! (-> *part-id-table* 58 init-specs 1 initial-valuef) (- 1.0 f0-0)) @@ -397,7 +371,6 @@ (none) ) -;; failed to figure out what this is: (defpart 60 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) (sp-func spt-birth-func 'birth-func-rain) @@ -419,7 +392,6 @@ ) ) -;; failed to figure out what this is: (defpart 61 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) (sp-func spt-birth-func 'birth-func-rain) @@ -441,7 +413,6 @@ ) ) -;; failed to figure out what this is: (defpart 62 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x21 :page #xc)) (sp-rnd-flt spt-num 1.0 3.0 1.0) @@ -470,7 +441,6 @@ ) ) -;; failed to figure out what this is: (defpart 64 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc)) (sp-func spt-birth-func 'birth-func-omega-normal-orient) @@ -497,7 +467,6 @@ ) ) -;; failed to figure out what this is: (defpart 65 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x92 :page #xc)) (sp-rnd-flt spt-num 2.0 4.0 1.0) @@ -522,7 +491,6 @@ ) ) -;; failed to figure out what this is: (defpart 66 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) (sp-flt spt-num 1.0) @@ -546,8 +514,6 @@ ) ) -;; definition for function birth-func-omega-normal-orient -;; WARN: Return type mismatch int vs none. (defun birth-func-omega-normal-orient ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sprite-vec-data-3d) @@ -590,9 +556,6 @@ ) ) -;; definition for function birth-func-rain -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defun birth-func-rain ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sprite-vec-data-3d) @@ -630,7 +593,7 @@ ) ) ) - (let ((f0-21 (ocean-method-11 *ocean* (the-as (inline-array vector) (-> arg2 x-y-z-sx)) #f))) + (let ((f0-21 (ocean-method-11 *ocean* (-> arg2 x-y-z-sx) #f))) (when (!= f0-21 4095996000.0) (when (< (-> arg1 user-float) f0-21) (set! (-> arg1 user-float) f0-21) @@ -646,8 +609,6 @@ (none) ) -;; definition for function check-drop-level-rain -;; INFO: Used lq/sq (defun check-drop-level-rain ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (when (< (-> arg2 y) (-> arg1 user-float)) (let ((s4-0 (new 'stack-no-clear 'vector)) @@ -717,8 +678,6 @@ (none) ) -;; definition for function check-drop-level-rain2 -;; WARN: Return type mismatch symbol vs none. (defun check-drop-level-rain2 ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (if (< (-> arg2 y) (-> arg1 user-float)) (sp-kill-particle arg0 arg1) @@ -726,8 +685,6 @@ (none) ) -;; definition for function check-drop-level-splash -;; WARN: Return type mismatch symbol vs none. (defun check-drop-level-splash ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (sparticle-motion-blur arg0 arg1 arg2) (if (< (-> arg2 y) (-> arg1 user-float)) @@ -736,9 +693,6 @@ (none) ) -;; definition for function update-rain -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defun update-rain ((arg0 float) (arg1 vector) (arg2 vector)) (let ((v1-0 (new 'stack-no-clear 'vector))) (set! (-> v1-0 x) (-> arg2 x)) @@ -794,8 +748,6 @@ (none) ) -;; definition for function cam-master-effect -;; WARN: Return type mismatch int vs none. (defbehavior cam-master-effect camera-master () (when (not (or (movie?) (>= (+ (-> self clock frame-counter) (seconds -10)) (-> self water-drip-time)))) (set! (-> *part-id-table* 46 init-specs 1 initial-valuef) (-> self water-drip-mult)) @@ -810,8 +762,6 @@ (none) ) -;; definition for function sparticle-track-sun -;; WARN: Return type mismatch int vs none. (defun sparticle-track-sun ((arg0 int) (arg1 sparticle-cpuinfo) (arg2 matrix)) (-> arg1 key) (let* ((s3-0 (the int (-> arg1 user-float))) @@ -838,7 +788,6 @@ (none) ) -;; failed to figure out what this is: (defpartgroup group-sun :id 3 :flags (always-draw) @@ -846,7 +795,6 @@ :parts ((sp-item 67 :flags (bit6)) (sp-item 68 :flags (bit6))) ) -;; failed to figure out what this is: (defpart 67 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) (sp-flt spt-num 1.0) @@ -866,7 +814,6 @@ ) ) -;; failed to figure out what this is: (defpart 68 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) (sp-flt spt-num 1.0) @@ -886,7 +833,6 @@ ) ) -;; failed to figure out what this is: (defpartgroup group-green-sun :id 4 :flags (always-draw) @@ -894,7 +840,6 @@ :parts ((sp-item 69 :flags (bit6)) (sp-item 70 :flags (bit6))) ) -;; failed to figure out what this is: (defpart 69 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) (sp-flt spt-num 1.0) @@ -914,7 +859,6 @@ ) ) -;; failed to figure out what this is: (defpart 70 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) (sp-flt spt-num 1.0) @@ -934,7 +878,6 @@ ) ) -;; failed to figure out what this is: (defpartgroup group-moon :id 5 :flags (always-draw) @@ -942,7 +885,6 @@ :parts ((sp-item 71 :flags (bit6))) ) -;; failed to figure out what this is: (defpart 71 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) (sp-flt spt-num 1.0) diff --git a/test/decompiler/reference/jak2/engine/gfx/ocean/ocean-h_REF.gc b/test/decompiler/reference/jak2/engine/gfx/ocean/ocean-h_REF.gc index de32a8d397..c0f61fce48 100644 --- a/test/decompiler/reference/jak2/engine/gfx/ocean/ocean-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/gfx/ocean/ocean-h_REF.gc @@ -1,7 +1,5 @@ -;;-*-Lisp-*- (in-package goal) -;; definition of type ocean-corner (deftype ocean-corner (structure) ((bsphere sphere :inline :offset-assert 0) (start-corner vector :inline :offset-assert 16) @@ -14,7 +12,6 @@ :flag-assert #x900000050 ) -;; definition for method 3 of type ocean-corner (defmethod inspect ocean-corner ((obj ocean-corner)) (when (not obj) (set! obj obj) @@ -30,7 +27,6 @@ obj ) -;; definition of type ocean-wave-info (deftype ocean-wave-info (structure) ((frequency float :offset-assert 0) (amplitude float :offset-assert 4) @@ -46,7 +42,6 @@ :flag-assert #x900000020 ) -;; definition for method 3 of type ocean-wave-info (defmethod inspect ocean-wave-info ((obj ocean-wave-info)) (when (not obj) (set! obj obj) @@ -65,7 +60,6 @@ obj ) -;; definition of type ocean-vertex (deftype ocean-vertex (structure) ((pos vector :inline :offset-assert 0) (stq vector :inline :offset-assert 16) @@ -76,7 +70,6 @@ :flag-assert #x900000030 ) -;; definition for method 3 of type ocean-vertex (defmethod inspect ocean-vertex ((obj ocean-vertex)) (when (not obj) (set! obj obj) @@ -90,7 +83,6 @@ obj ) -;; definition of type ocean-spheres (deftype ocean-spheres (structure) ((spheres sphere 36 :inline :offset-assert 0) ) @@ -99,7 +91,6 @@ :flag-assert #x900000240 ) -;; definition for method 3 of type ocean-spheres (defmethod inspect ocean-spheres ((obj ocean-spheres)) (when (not obj) (set! obj obj) @@ -111,7 +102,6 @@ obj ) -;; definition of type ocean-colors (deftype ocean-colors (structure) ((colors rgba 2548 :offset-assert 0) ) @@ -120,7 +110,6 @@ :flag-assert #x9000027d0 ) -;; definition for method 3 of type ocean-colors (defmethod inspect ocean-colors ((obj ocean-colors)) (when (not obj) (set! obj obj) @@ -132,7 +121,6 @@ obj ) -;; definition of type ocean-colors-float (deftype ocean-colors-float (structure) ((colors vector 2548 :inline :offset-assert 0) ) @@ -141,7 +129,6 @@ :flag-assert #x900009f40 ) -;; definition for method 3 of type ocean-colors-float (defmethod inspect ocean-colors-float ((obj ocean-colors-float)) (when (not obj) (set! obj obj) @@ -153,7 +140,6 @@ obj ) -;; definition of type ocean-mid-mask (deftype ocean-mid-mask (structure) ((mask uint8 8 :offset-assert 0) (dword uint64 :offset 0) @@ -164,7 +150,6 @@ :flag-assert #x900000008 ) -;; definition for method 3 of type ocean-mid-mask (defmethod inspect ocean-mid-mask ((obj ocean-mid-mask)) (when (not obj) (set! obj obj) @@ -177,7 +162,6 @@ obj ) -;; definition of type ocean-mid-indices (deftype ocean-mid-indices (basic) ((data uint16 36 :offset-assert 4) ) @@ -186,7 +170,6 @@ :flag-assert #x90000004c ) -;; definition for method 3 of type ocean-mid-indices (defmethod inspect ocean-mid-indices ((obj ocean-mid-indices)) (when (not obj) (set! obj obj) @@ -198,7 +181,6 @@ obj ) -;; definition of type ocean-mid-masks (deftype ocean-mid-masks (basic) ((data (inline-array ocean-mid-mask) :offset-assert 4) ) @@ -207,7 +189,6 @@ :flag-assert #x900000008 ) -;; definition for method 3 of type ocean-mid-masks (defmethod inspect ocean-mid-masks ((obj ocean-mid-masks)) (when (not obj) (set! obj obj) @@ -219,7 +200,6 @@ obj ) -;; definition of type ocean-trans-mask (deftype ocean-trans-mask (structure) ((mask uint8 4 :offset-assert 0) (word int32 :offset 0) @@ -229,7 +209,6 @@ :flag-assert #x900000004 ) -;; definition for method 3 of type ocean-trans-mask (defmethod inspect ocean-trans-mask ((obj ocean-trans-mask)) (when (not obj) (set! obj obj) @@ -242,7 +221,6 @@ obj ) -;; definition of type ocean-trans-index (deftype ocean-trans-index (structure) ((parent int16 :offset-assert 0) (child int16 :offset-assert 2) @@ -253,7 +231,6 @@ :flag-assert #x900000004 ) -;; definition for method 3 of type ocean-trans-index (defmethod inspect ocean-trans-index ((obj ocean-trans-index)) (when (not obj) (set! obj obj) @@ -266,7 +243,6 @@ obj ) -;; definition of type ocean-trans-indices (deftype ocean-trans-indices (basic) ((data ocean-trans-index 2304 :inline :offset-assert 4) ) @@ -275,7 +251,6 @@ :flag-assert #x900002404 ) -;; definition for method 3 of type ocean-trans-indices (defmethod inspect ocean-trans-indices ((obj ocean-trans-indices)) (when (not obj) (set! obj obj) @@ -287,7 +262,6 @@ obj ) -;; definition of type ocean-near-index (deftype ocean-near-index (structure) ((data uint16 16 :offset-assert 0) ) @@ -296,7 +270,6 @@ :flag-assert #x900000020 ) -;; definition for method 3 of type ocean-near-index (defmethod inspect ocean-near-index ((obj ocean-near-index)) (when (not obj) (set! obj obj) @@ -308,7 +281,6 @@ obj ) -;; definition of type ocean-near-indices (deftype ocean-near-indices (basic) ((data (inline-array ocean-near-index) :offset-assert 4) ) @@ -317,7 +289,6 @@ :flag-assert #x900000008 ) -;; definition for method 3 of type ocean-near-indices (defmethod inspect ocean-near-indices ((obj ocean-near-indices)) (when (not obj) (set! obj obj) @@ -329,7 +300,6 @@ obj ) -;; definition of type ocean-near-colors (deftype ocean-near-colors (structure) ((color0 vector :inline :offset-assert 0) (color1 vector :inline :offset-assert 16) @@ -341,7 +311,6 @@ :flag-assert #x900000040 ) -;; definition for method 3 of type ocean-near-colors (defmethod inspect ocean-near-colors ((obj ocean-near-colors)) (when (not obj) (set! obj obj) @@ -356,7 +325,6 @@ obj ) -;; definition of type ocean-trans-strip (deftype ocean-trans-strip (structure) ((verts uint128 10 :offset-assert 0) ) @@ -365,7 +333,6 @@ :flag-assert #x9000000a0 ) -;; definition for method 3 of type ocean-trans-strip (defmethod inspect ocean-trans-strip ((obj ocean-trans-strip)) (when (not obj) (set! obj obj) @@ -377,7 +344,6 @@ obj ) -;; definition of type ocean-trans-strip-array (deftype ocean-trans-strip-array (structure) ((data ocean-trans-strip 4 :inline :offset-assert 0) ) @@ -386,7 +352,6 @@ :flag-assert #x900000280 ) -;; definition for method 3 of type ocean-trans-strip-array (defmethod inspect ocean-trans-strip-array ((obj ocean-trans-strip-array)) (when (not obj) (set! obj obj) @@ -398,7 +363,6 @@ obj ) -;; definition of type ocean-wave-data (deftype ocean-wave-data (structure) ((data uint8 1024 :offset-assert 0) ) @@ -407,7 +371,6 @@ :flag-assert #x900000400 ) -;; definition for method 3 of type ocean-wave-data (defmethod inspect ocean-wave-data ((obj ocean-wave-data)) (when (not obj) (set! obj obj) @@ -419,7 +382,6 @@ obj ) -;; definition of type ocean-wave-frames (deftype ocean-wave-frames (structure) ((frame ocean-wave-data 64 :inline :offset-assert 0) ) @@ -428,7 +390,6 @@ :flag-assert #x900000000 ) -;; definition for method 3 of type ocean-wave-frames (defmethod inspect ocean-wave-frames ((obj ocean-wave-frames)) (when (not obj) (set! obj obj) @@ -440,7 +401,6 @@ obj ) -;; definition of type ocean-texture-constants (deftype ocean-texture-constants (structure) ((giftag gs-gif-tag :inline :offset-assert 0) (buffers vector4w :inline :offset-assert 16) @@ -455,7 +415,6 @@ :flag-assert #x900000070 ) -;; definition for method 3 of type ocean-texture-constants (defmethod inspect ocean-texture-constants ((obj ocean-texture-constants)) (when (not obj) (set! obj obj) @@ -473,7 +432,6 @@ obj ) -;; definition of type ocean-mid-vertex (deftype ocean-mid-vertex (structure) ((stq vector :inline :offset-assert 0) (col vector :inline :offset-assert 16) @@ -484,7 +442,6 @@ :flag-assert #x900000030 ) -;; definition for method 3 of type ocean-mid-vertex (defmethod inspect ocean-mid-vertex ((obj ocean-mid-vertex)) (when (not obj) (set! obj obj) @@ -498,7 +455,6 @@ obj ) -;; definition of type ocean-mid-constants (deftype ocean-mid-constants (structure) ((hmge-scale vector :inline :offset-assert 0) (inv-hmge-scale vector :inline :offset-assert 16) @@ -527,7 +483,6 @@ :flag-assert #x900000240 ) -;; definition for method 3 of type ocean-mid-constants (defmethod inspect ocean-mid-constants ((obj ocean-mid-constants)) (when (not obj) (set! obj obj) @@ -559,7 +514,6 @@ obj ) -;; definition of type ocean-mid-upload (deftype ocean-mid-upload (structure) ((rot matrix :inline :offset-assert 0) (matrix matrix :inline :offset-assert 64) @@ -571,7 +525,6 @@ :flag-assert #x900000760 ) -;; definition for method 3 of type ocean-mid-upload (defmethod inspect ocean-mid-upload ((obj ocean-mid-upload)) (when (not obj) (set! obj obj) @@ -586,7 +539,6 @@ obj ) -;; definition of type ocean-mid-upload2 (deftype ocean-mid-upload2 (structure) ((rot matrix :inline :offset-assert 0) (matrix matrix :inline :offset-assert 64) @@ -606,7 +558,6 @@ :flag-assert #x900000230 ) -;; definition for method 3 of type ocean-mid-upload2 (defmethod inspect ocean-mid-upload2 ((obj ocean-mid-upload2)) (when (not obj) (set! obj obj) @@ -629,7 +580,6 @@ obj ) -;; definition of type ocean-mid-work (deftype ocean-mid-work (structure) ((env0 vector :inline :offset-assert 0) (env1 vector :inline :offset-assert 16) @@ -644,7 +594,6 @@ :flag-assert #x900000160 ) -;; definition for method 3 of type ocean-mid-work (defmethod inspect ocean-mid-work ((obj ocean-mid-work)) (when (not obj) (set! obj obj) @@ -662,7 +611,6 @@ obj ) -;; definition of type ocean-near-constants (deftype ocean-near-constants (structure) ((hmge-scale vector :inline :offset-assert 0) (inv-hmge-scale vector :inline :offset-assert 16) @@ -696,7 +644,6 @@ :flag-assert #x900000250 ) -;; definition for method 3 of type ocean-near-constants (defmethod inspect ocean-near-constants ((obj ocean-near-constants)) (when (not obj) (set! obj obj) @@ -733,7 +680,6 @@ obj ) -;; definition of type ocean-near-upload (deftype ocean-near-upload (structure) ((rot matrix :inline :offset-assert 0) (matrix matrix :inline :offset-assert 64) @@ -747,7 +693,6 @@ :flag-assert #x900000100 ) -;; definition for method 3 of type ocean-near-upload (defmethod inspect ocean-near-upload ((obj ocean-near-upload)) (when (not obj) (set! obj obj) @@ -764,7 +709,6 @@ obj ) -;; definition of type ocean-near-vertex (deftype ocean-near-vertex (structure) ((stq vector :inline :offset-assert 0) (clr vector :inline :offset-assert 16) @@ -775,7 +719,6 @@ :flag-assert #x900000030 ) -;; definition for method 3 of type ocean-near-vertex (defmethod inspect ocean-near-vertex ((obj ocean-near-vertex)) (when (not obj) (set! obj obj) @@ -789,7 +732,6 @@ obj ) -;; definition of type ocean-near-work (deftype ocean-near-work (structure) ((verts-ptr vector :inline :offset-assert 0) (indices uint128 16 :offset-assert 16) @@ -799,7 +741,6 @@ :flag-assert #x900000110 ) -;; definition for method 3 of type ocean-near-work (defmethod inspect ocean-near-work ((obj ocean-near-work)) (when (not obj) (set! obj obj) @@ -812,7 +753,6 @@ obj ) -;; definition of type ocean-height-array (deftype ocean-height-array (structure) ((data float 1024 :offset-assert 0) ) @@ -821,7 +761,6 @@ :flag-assert #x900001000 ) -;; definition for method 3 of type ocean-height-array (defmethod inspect ocean-height-array ((obj ocean-height-array)) (when (not obj) (set! obj obj) @@ -833,7 +772,6 @@ obj ) -;; definition of type ocean-vert-array (deftype ocean-vert-array (structure) ((data vector 2048 :inline :offset-assert 0) ) @@ -842,7 +780,6 @@ :flag-assert #x900008000 ) -;; definition for method 3 of type ocean-vert-array (defmethod inspect ocean-vert-array ((obj ocean-vert-array)) (when (not obj) (set! obj obj) @@ -854,7 +791,6 @@ obj ) -;; definition of type ocean-map (deftype ocean-map (structure) ((start-corner vector :inline :offset-assert 0) (far-color vector :inline :offset-assert 16) @@ -874,7 +810,6 @@ ) ) -;; definition for method 3 of type ocean-map (defmethod inspect ocean-map ((obj ocean-map)) (when (not obj) (set! obj obj) @@ -893,7 +828,6 @@ obj ) -;; definition of type ocean (deftype ocean (ocean-map) ((off basic :offset-assert 56) (near-off basic :offset-assert 60) @@ -994,7 +928,7 @@ :size-assert #x206c :flag-assert #x5c0000206c (:methods - (ocean-method-11 (_type_ (inline-array vector) symbol) float 11) + (ocean-method-11 (_type_ vector symbol) float 11) (draw! (_type_) none 12) (update-map (_type_) none 13) (ocean-method-14 () none 14) @@ -1004,7 +938,7 @@ (ocean-method-18 () none 18) (ocean-method-19 () none 19) (ocean-method-20 () none 20) - (ocean-method-21 () none 21) + (ocean-method-21 (_type_ float float) float 21) (ocean-method-22 () none 22) (ocean-method-23 () none 23) (ocean-method-24 () none 24) @@ -1078,7 +1012,6 @@ ) ) -;; definition for method 3 of type ocean (defmethod inspect ocean ((obj ocean)) (when (not obj) (set! obj obj) @@ -1191,10 +1124,8 @@ obj ) -;; definition for symbol *ocean-map*, type ocean-map (define *ocean-map* (the-as ocean-map #f)) -;; definition for symbol *ocean*, type ocean (define *ocean* (new 'static 'ocean :sprite-tmpl (new 'static 'dma-gif-packet @@ -1535,5 +1466,4 @@ ) ) -;; failed to figure out what this is: 0 diff --git a/test/decompiler/reference/jak2/engine/gfx/sprite/particles/sparticle-launcher_REF.gc b/test/decompiler/reference/jak2/engine/gfx/sprite/particles/sparticle-launcher_REF.gc index 44724a183a..21aefd3a07 100644 --- a/test/decompiler/reference/jak2/engine/gfx/sprite/particles/sparticle-launcher_REF.gc +++ b/test/decompiler/reference/jak2/engine/gfx/sprite/particles/sparticle-launcher_REF.gc @@ -1,9 +1,5 @@ -;;-*-Lisp-*- (in-package goal) -;; definition for method 3 of type sparticle-launcher -;; INFO: this function exists in multiple non-identical object files -;; WARN: Return type mismatch int vs sparticle-launcher. (defmethod inspect sparticle-launcher ((obj sparticle-launcher)) (format #t "~X: sparticle-launcher~%" obj) (let ((s5-0 0)) @@ -252,22 +248,16 @@ (the-as sparticle-launcher 0) ) -;; failed to figure out what this is: (kmemopen global "part-tables") -;; definition for symbol *part-id-table*, type (array sparticle-launcher) (define *part-id-table* (new 'global 'boxed-array sparticle-launcher 5760)) -;; definition for symbol *part-group-id-table*, type (array sparticle-launch-group) (define *part-group-id-table* (new 'global 'boxed-array sparticle-launch-group 1408)) -;; definition for symbol *sp-temp*, type int (define *sp-temp* 0) -;; failed to figure out what this is: (kmemclose) -;; definition for function lookup-part-group-by-name (defun lookup-part-group-by-name ((arg0 string)) "Iterate through the [[*part-group-id-table*]] and return the matching [[sparticle-launch-group]], or [[#f]] otherwise" (let* ((s5-0 *part-group-id-table*) @@ -284,8 +274,6 @@ (the-as sparticle-launch-group #f) ) -;; definition for function lookup-part-group-pointer-by-name -;; WARN: Return type mismatch (pointer sparticle-launch-group) vs (pointer object). (defun lookup-part-group-pointer-by-name ((arg0 string)) "Similar to [[lookup-part-group-by-name]] but returns a pointer instead" (let* ((s4-0 *part-group-id-table*) @@ -302,7 +290,6 @@ (the-as (pointer sparticle-launch-group) #f) ) -;; definition for function part-group-pointer? (defun part-group-pointer? ((arg0 pointer)) "Verifies if the given pointer, points to a [[sparticle-launch-group]]" (let ((v1-0 *part-group-id-table*)) @@ -310,7 +297,6 @@ ) ) -;; definition for function unlink-part-group-by-heap (defun unlink-part-group-by-heap ((arg0 kheap)) (let* ((v1-0 *part-group-id-table*) (a2-0 (-> v1-0 length)) @@ -330,10 +316,7 @@ 0 ) -;; definition for function sp-init-fields! -;; ERROR: function was not converted to expressions. Cannot decompile. -;; definition of type sp-queued-launch-particles (deftype sp-queued-launch-particles (structure) ((sp-system sparticle-system :offset-assert 0) (sp-launcher sparticle-launcher :offset-assert 4) @@ -344,7 +327,6 @@ :flag-assert #x900000020 ) -;; definition for method 3 of type sp-queued-launch-particles (defmethod inspect sp-queued-launch-particles ((obj sp-queued-launch-particles)) (when (not obj) (set! obj obj) @@ -358,7 +340,6 @@ obj ) -;; definition of type sp-launch-queue (deftype sp-launch-queue (basic) ((in-use int32 :offset-assert 4) (queue sp-queued-launch-particles 256 :inline :offset-assert 16) @@ -368,7 +349,6 @@ :flag-assert #x900002010 ) -;; definition for method 3 of type sp-launch-queue (defmethod inspect sp-launch-queue ((obj sp-launch-queue)) (when (not obj) (set! obj obj) @@ -381,23 +361,16 @@ obj ) -;; failed to figure out what this is: (kmemopen global "launcher-queue") -;; definition for symbol *sp-launcher-lock*, type symbol (define *sp-launcher-lock* #f) -;; definition for symbol *sp-launch-queue*, type sp-launch-queue (define *sp-launch-queue* (new 'global 'sp-launch-queue)) -;; definition for symbol *sp-launcher-enable*, type symbol (define *sp-launcher-enable* #t) -;; failed to figure out what this is: (kmemclose) -;; definition for function particle-setup-adgif -;; WARN: Return type mismatch int vs none. (defun particle-setup-adgif ((arg0 adgif-shader) (arg1 int)) (let ((a1-1 (lookup-texture-by-id-fast (the-as texture-id arg1))) (s5-0 #f) @@ -424,7 +397,6 @@ (none) ) -;; definition of type particle-adgif-cache (deftype particle-adgif-cache (basic) ((used int32 :offset-assert 4) (last uint16 :offset-assert 8) @@ -437,7 +409,6 @@ :flag-assert #x9000019b0 ) -;; definition for method 3 of type particle-adgif-cache (defmethod inspect particle-adgif-cache ((obj particle-adgif-cache)) (when (not obj) (set! obj obj) @@ -453,20 +424,14 @@ obj ) -;; failed to figure out what this is: (kmemopen global "part-adgif-cache") -;; definition for symbol *particle-adgif-cache*, type particle-adgif-cache (define *particle-adgif-cache* (new 'global 'particle-adgif-cache)) -;; failed to figure out what this is: (set! (-> *particle-adgif-cache* used) 0) -;; failed to figure out what this is: (kmemclose) -;; definition for function particle-adgif-cache-flush -;; WARN: Return type mismatch int vs none. (defun particle-adgif-cache-flush () "Clear [[*particle-adgif-cache*]]" (set! (-> *particle-adgif-cache* used) 0) @@ -475,16 +440,7 @@ (none) ) -;; definition for function particle-adgif -;; ERROR: function was not converted to expressions. Cannot decompile. -;; definition for function particle-adgif-callback -;; WARN: Return type mismatch int vs none. -;; ERROR: Bad vector register dependency: vf16 -;; ERROR: Bad vector register dependency: vf17 -;; ERROR: Bad vector register dependency: vf18 -;; ERROR: Bad vector register dependency: vf19 -;; ERROR: Bad vector register dependency: vf20 (defun particle-adgif-callback ((arg0 adgif-shader) (arg1 texture-id)) (local-vars (v1-0 float)) (rlet ((vf16 :class vf) @@ -518,8 +474,6 @@ ) ) -;; definition for function sp-queue-launch -;; INFO: Used lq/sq (defun sp-queue-launch ((arg0 sparticle-system) (arg1 sparticle-launcher) (arg2 matrix)) (let ((v1-0 *sp-launch-queue*)) (when (= (-> v1-0 in-use) 256) @@ -538,8 +492,6 @@ ) ) -;; definition for function sp-adjust-launch -;; WARN: Return type mismatch int vs none. (defun sp-adjust-launch ((arg0 sparticle-launchinfo) (arg1 sparticle-cpuinfo) (arg2 (inline-array sp-field-init-spec)) @@ -589,8 +541,6 @@ (none) ) -;; definition for function sp-euler-convert -;; WARN: Return type mismatch int vs none. (defun sp-euler-convert ((arg0 sparticle-launchinfo) (arg1 sparticle-cpuinfo)) (local-vars (v1-1 float) (v1-2 float)) (rlet ((vf0 :class vf) @@ -638,8 +588,6 @@ ) ) -;; definition for function sp-rotate-system -;; WARN: Return type mismatch int vs none. (defun sp-rotate-system ((arg0 sparticle-launchinfo) (arg1 sparticle-cpuinfo) (arg2 transformq)) (let ((s5-0 (new 'stack-no-clear 'matrix))) (let ((a1-1 (new 'stack-no-clear 'quaternion))) @@ -666,7 +614,6 @@ (none) ) -;; definition of type sp-launch-stack (deftype sp-launch-stack (structure) ((ra basic :offset-assert 0) (dummy0 basic :offset-assert 4) @@ -690,8 +637,6 @@ :flag-assert #x900000130 ) -;; definition for method 3 of type sp-launch-stack -;; INFO: Used lq/sq (defmethod inspect sp-launch-stack ((obj sp-launch-stack)) (when (not obj) (set! obj obj) @@ -718,16 +663,9 @@ obj ) -;; definition for function sp-launch-particles-var -;; ERROR: function was not converted to expressions. Cannot decompile. -;; definition for symbol *death-adgif*, type adgif-shader (define *death-adgif* (the-as adgif-shader #f)) -;; definition for function sp-launch-particles-death -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. -;; WARN: Function sp-launch-particles-death has a return type of none, but the expression builder found a return statement. (defun sp-launch-particles-death ((arg0 sparticle-system) (arg1 sparticle-launcher) (arg2 vector)) (local-vars (v1-26 float) (v1-28 float)) (rlet ((vf0 :class vf) @@ -827,9 +765,6 @@ ) ) -;; definition for function sp-clear-queue -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defun sp-clear-queue () (let ((gp-0 *sp-launch-queue*) (s5-0 *launch-matrix*) @@ -856,8 +791,6 @@ (none) ) -;; definition for function sp-relaunch-setup-fields -;; WARN: Return type mismatch int vs none. (defun sp-relaunch-setup-fields ((arg0 object) (arg1 sparticle-launcher) (arg2 sparticle-cpuinfo) (arg3 sprite-vec-data-3d)) (let ((a1-1 (-> arg1 init-specs 0)) (s4-0 (logand (-> arg2 flags) (sp-cpuinfo-flag sp-cpuinfo-flag-9 level0 level1))) @@ -955,8 +888,6 @@ (none) ) -;; definition for function sp-relaunch-particle-2d -;; WARN: Return type mismatch int vs none. (defun sp-relaunch-particle-2d ((arg0 object) (arg1 sparticle-launcher) (arg2 sparticle-cpuinfo) (arg3 sprite-vec-data-3d)) (sp-relaunch-setup-fields arg0 arg1 arg2 arg3) (when (logtest? (-> arg2 flags) (sp-cpuinfo-flag distort)) @@ -970,8 +901,6 @@ (none) ) -;; definition for function sp-relaunch-particle-3d -;; WARN: Return type mismatch int vs none. (defun sp-relaunch-particle-3d ((arg0 object) (arg1 sparticle-launcher) (arg2 sparticle-cpuinfo) (arg3 sprite-vec-data-3d)) (local-vars (v1-9 float) (v1-10 float)) (rlet ((vf0 :class vf) @@ -1049,8 +978,6 @@ ) ) -;; definition for method 9 of type sparticle-launch-control -;; WARN: Return type mismatch int vs none. (defmethod initialize sparticle-launch-control ((obj sparticle-launch-control) (arg0 sparticle-launch-group) (arg1 process)) (with-pp (let ((s5-0 0)) @@ -1135,8 +1062,6 @@ ) ) -;; definition for method 9 of type sparticle-launch-group -;; WARN: Return type mismatch object vs sparticle-launch-control. (defmethod create-launch-control sparticle-launch-group ((obj sparticle-launch-group) (arg0 process)) (let ((gp-0 (the-as object (new 'process 'sparticle-launch-control (-> obj length))))) (when (zero? (the-as sparticle-launch-control gp-0)) @@ -1150,8 +1075,6 @@ ) ) -;; definition for method 14 of type sparticle-launch-control -;; WARN: Return type mismatch int vs none. (defmethod kill-and-free-particles sparticle-launch-control ((obj sparticle-launch-control)) (countdown (v1-0 (-> obj length)) (let ((a0-4 (-> obj data v1-0))) @@ -1168,15 +1091,12 @@ (none) ) -;; definition for method 15 of type sparticle-launch-control -;; WARN: Return type mismatch int vs none. (defmethod kill-particles sparticle-launch-control ((obj sparticle-launch-control)) (kill-all-particles-with-key obj) 0 (none) ) -;; definition for method 10 of type sparticle-launch-control (defmethod is-visible? sparticle-launch-control ((obj sparticle-launch-control) (arg0 vector)) (let* ((v1-0 (-> obj group)) (f0-0 (-> v1-0 bounds r)) @@ -1208,8 +1128,6 @@ ) ) -;; definition for method 12 of type sparticle-launch-control -;; INFO: Used lq/sq (defmethod spawn-with-matrix sparticle-launch-control ((obj sparticle-launch-control) (arg0 matrix)) (let* ((a2-0 (-> obj origin)) (a3-0 arg0) @@ -1256,8 +1174,6 @@ (none) ) -;; definition for method 13 of type sparticle-launch-control -;; INFO: Used lq/sq (defmethod spawn-with-cspace sparticle-launch-control ((obj sparticle-launch-control) (arg0 cspace)) (let* ((v1-0 (-> obj origin)) (a3-0 (-> arg0 bone transform)) @@ -1304,10 +1220,6 @@ (none) ) -;; definition for method 11 of type sparticle-launch-control -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. -;; WARN: Function (method 11 sparticle-launch-control) has a return type of none, but the expression builder found a return statement. (defmethod spawn sparticle-launch-control ((obj sparticle-launch-control) (arg0 vector)) (with-pp (set! (-> obj origin trans quad) (-> arg0 quad)) @@ -1495,9 +1407,6 @@ ) ) -;; definition for function execute-part-engine -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defun execute-part-engine () (local-vars (sv-96 sparticle-launcher) (sv-104 int)) (let ((gp-0 *sp-particle-system-2d*)) @@ -1603,8 +1512,6 @@ (none) ) -;; definition for function sparticle-track-root -;; WARN: Return type mismatch int vs none. (defun sparticle-track-root ((arg0 object) (arg1 sparticle-cpuinfo) (arg2 vector)) (let ((v1-3 (-> arg1 key proc root trans))) (set! (-> arg2 x) (-> v1-3 x)) @@ -1615,8 +1522,6 @@ (none) ) -;; definition for function sparticle-track-root-prim -;; WARN: Return type mismatch int vs none. (defun sparticle-track-root-prim ((arg0 object) (arg1 sparticle-cpuinfo) (arg2 vector)) (let ((v1-4 (-> (the-as collide-shape (-> arg1 key proc root)) root-prim prim-core))) (set! (-> arg2 x) (-> v1-4 world-sphere x)) @@ -1627,8 +1532,6 @@ (none) ) -;; definition for function sparticle-track-joint -;; WARN: Return type mismatch int vs none. (defun sparticle-track-joint ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (let* ((v1-1 (-> arg1 key proc)) (a1-1 (the int (-> arg1 user-float))) @@ -1642,8 +1545,6 @@ (none) ) -;; definition for function sparticle-turn-to-vel -;; WARN: Return type mismatch int vs none. (defun sparticle-turn-to-vel ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sprite-vec-data-3d)) (local-vars (v1-1 float) (v1-2 float)) (rlet ((vf0 :class vf) @@ -1675,8 +1576,6 @@ ) ) -;; definition for function birth-func-copy-rot-color -;; WARN: Return type mismatch int vs none. (defun birth-func-copy-rot-color ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sprite-vec-data-3d) @@ -1730,12 +1629,8 @@ ) ) -;; definition for symbol *global-toggle*, type int (define *global-toggle* 0) -;; definition for function birth-func-copy2-rot-color -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defun birth-func-copy2-rot-color ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sprite-vec-data-3d) @@ -1798,8 +1693,6 @@ ) ) -;; definition for function birth-func-copy-omega-to-z -;; WARN: Return type mismatch int vs none. (defun birth-func-copy-omega-to-z ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sprite-vec-data-3d) @@ -1813,8 +1706,6 @@ (none) ) -;; definition for function birth-func-random-next-time -;; WARN: Return type mismatch int vs none. (defun birth-func-random-next-time ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sprite-vec-data-3d) @@ -1826,9 +1717,6 @@ (none) ) -;; definition for function sparticle-respawn-heights -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defun sparticle-respawn-heights ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (let ((gp-0 (the-as (array int32) (-> arg1 user-float)))) (when (and (nonzero? gp-0) @@ -1869,9 +1757,6 @@ (none) ) -;; definition for function sparticle-respawn-timer -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defun sparticle-respawn-timer ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (when (<= (-> arg1 timer) 0) (let ((gp-0 (the-as object (-> arg1 user-float)))) @@ -1910,8 +1795,6 @@ (none) ) -;; definition for function sparticle-texture-animate -;; WARN: Return type mismatch symbol vs none. (defun sparticle-texture-animate ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (let ((v1-0 (the-as (array int32) (-> arg1 user-float)))) (when (nonzero? v1-0) @@ -1949,11 +1832,6 @@ (none) ) -;; definition for function sparticle-texture-day-night -;; INFO: Used lq/sq -;; WARN: Return type mismatch symbol vs none. -;; ERROR: Bad vector register dependency: vf1 -;; ERROR: Bad vector register dependency: vf2 (defun sparticle-texture-day-night ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sprite-vec-data-2d)) (local-vars (v1-9 uint128) @@ -2073,8 +1951,6 @@ ) ) -;; definition for function sparticle-mode-animate -;; WARN: Return type mismatch int vs none. (defun sparticle-mode-animate ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sprite-vec-data-2d)) (let ((a0-1 (-> arg1 key)) (v1-0 (the-as object (-> arg1 user-float))) @@ -2122,11 +1998,7 @@ (none) ) -;; definition for function sparticle-motion-blur -;; ERROR: function was not converted to expressions. Cannot decompile. -;; definition (debug) for function sparticle-motion-blur-old -;; WARN: Return type mismatch int vs object. (defun-debug sparticle-motion-blur-old ((arg0 object) (arg1 sparticle-cpuinfo) (arg2 sprite-vec-data-3d)) "Unused" (let ((s2-0 (new 'stack-no-clear 'vector)) @@ -2172,8 +2044,6 @@ 0 ) -;; definition for function sparticle-set-conerot -;; WARN: Return type mismatch int vs none. (defun sparticle-set-conerot ((arg0 sparticle-launcher) (arg1 vector)) (let ((s5-0 (get-field-spec-by-id arg0 (sp-field-id spt-conerot-x))) (s4-0 (get-field-spec-by-id arg0 (sp-field-id spt-conerot-y))) @@ -2187,7 +2057,6 @@ (none) ) -;; definition for function sparticle-next-on-mode-1 (defun sparticle-next-on-mode-1 ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) (if (zero? (-> arg1 key state-mode 0)) (set! (-> arg1 next-time) @@ -2197,7 +2066,6 @@ 0.0 ) -;; definition for function check-ground-bounce (defun check-ground-bounce ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) (let ((f0-1 (+ (-> arg1 key origin trans y) (-> arg1 user-float)))) (when (and (< (-> arg2 launchrot y) f0-1) (< (-> arg1 vel-sxvel y) 0.0)) @@ -2207,8 +2075,6 @@ ) ) -;; definition for function check-drop-group-center -;; WARN: Return type mismatch symbol vs none. (defun check-drop-group-center ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) (let ((f0-0 (-> arg1 key origin trans y))) (if (< (-> arg2 launchrot y) f0-0) @@ -2218,24 +2084,20 @@ (none) ) -;; definition for function birth-func-y->userdata -;; WARN: Return type mismatch int vs none. (defun birth-func-y->userdata ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (+! (-> arg1 user-float) (-> arg2 vector 0 y)) 0 (none) ) -;; definition for function birth-func-ocean-height -;; WARN: Return type mismatch int vs none. (defun birth-func-ocean-height ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) - (set! (-> arg2 vector 0 y) (+ (ocean-method-11 *ocean* (-> arg2 vector) #t) (-> arg1 user-float))) + (set! (-> arg2 vector 0 y) + (+ (ocean-method-11 *ocean* (the-as vector (-> arg2 vector)) #t) (-> arg1 user-float)) + ) 0 (none) ) -;; definition for function birth-func-camera-orient -;; WARN: Return type mismatch int vs none. (defun birth-func-camera-orient ((arg0 int) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) (local-vars (v1-0 float) (v1-1 float)) (rlet ((vf0 :class vf) @@ -2273,11 +2135,8 @@ ) ) -;; definition for symbol *particle-quat*, type quaternion (define *particle-quat* (new 'static 'quaternion :w 1.0)) -;; definition for function birth-func-set-quat -;; WARN: Return type mismatch int vs none. (defun birth-func-set-quat ((arg0 int) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) (local-vars (a0-2 float) (a0-3 float)) (rlet ((vf0 :class vf) @@ -2310,11 +2169,8 @@ ) ) -;; definition for symbol *particle-vel*, type vector (define *particle-vel* (new 'static 'vector :w 1.0)) -;; definition for function birth-func-set-vel -;; WARN: Return type mismatch int vs none. (defun birth-func-set-vel ((arg0 object) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) (let ((v1-0 *particle-vel*)) (set! (-> arg1 vel-sxvel x) (-> v1-0 x)) @@ -2325,8 +2181,6 @@ (none) ) -;; definition for function birth-func-texture-group -;; WARN: Return type mismatch int vs none. (defun birth-func-texture-group ((arg0 int) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) (let ((s5-0 (the-as (array int32) (-> arg1 user-float)))) (when (nonzero? s5-0) @@ -2343,8 +2197,6 @@ (none) ) -;; definition for method 9 of type sparticle-launcher -;; WARN: new jak 2 until loop case, check carefully (defmethod get-field-spec-by-id sparticle-launcher ((obj sparticle-launcher) (arg0 sp-field-id)) "Returns the [[sp-field-init-spec]] that has the matching [[sp-field-id]]" (let ((v1-0 0)) @@ -2367,8 +2219,6 @@ (the-as sp-field-init-spec #f) ) -;; definition for method 10 of type sparticle-launcher -;; WARN: Return type mismatch int vs none. (defmethod setup-user-array sparticle-launcher ((obj sparticle-launcher) (arg0 string)) (let ((s5-0 (get-field-spec-by-id obj (sp-field-id spt-texture))) (v1-1 (lookup-texture-id-by-name arg0 (the-as string #f))) diff --git a/test/decompiler/reference/jak2/engine/physics/rigid-body-h_REF.gc b/test/decompiler/reference/jak2/engine/physics/rigid-body-h_REF.gc index cfb1446458..d6dbaa912e 100644 --- a/test/decompiler/reference/jak2/engine/physics/rigid-body-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/physics/rigid-body-h_REF.gc @@ -1,7 +1,5 @@ -;;-*-Lisp-*- (in-package goal) -;; definition of type rigid-body-info (deftype rigid-body-info (structure) ((mass float :offset-assert 0) (inv-mass float :offset-assert 4) @@ -23,7 +21,6 @@ ) ) -;; definition for method 3 of type rigid-body-info (defmethod inspect rigid-body-info ((obj rigid-body-info)) (when (not obj) (set! obj obj) @@ -45,7 +42,6 @@ obj ) -;; definition of type rigid-body-object-extra-info (deftype rigid-body-object-extra-info (structure) ((max-time-step float :offset-assert 0) (gravity meters :offset-assert 4) @@ -58,7 +54,6 @@ :flag-assert #x900000010 ) -;; definition for method 3 of type rigid-body-object-extra-info (defmethod inspect rigid-body-object-extra-info ((obj rigid-body-object-extra-info)) (when (not obj) (set! obj obj) @@ -73,7 +68,6 @@ obj ) -;; definition of type rigid-body-object-constants (deftype rigid-body-object-constants (structure) ((info rigid-body-info :inline :offset-assert 0) (mass float :offset 0) @@ -101,7 +95,6 @@ :flag-assert #x9000000d0 ) -;; definition for method 3 of type rigid-body-object-constants (defmethod inspect rigid-body-object-constants ((obj rigid-body-object-constants)) (when (not obj) (set! obj obj) @@ -131,7 +124,6 @@ obj ) -;; definition of type rigid-body-impact (deftype rigid-body-impact (structure) ((point vector :inline :offset-assert 0) (normal vector :inline :offset-assert 16) @@ -146,7 +138,6 @@ :flag-assert #x900000040 ) -;; definition for method 3 of type rigid-body-impact (defmethod inspect rigid-body-impact ((obj rigid-body-impact)) (when (not obj) (set! obj obj) @@ -164,7 +155,6 @@ obj ) -;; definition of type rigid-body (deftype rigid-body (structure) ((work rigid-body-work :offset-assert 0) (info rigid-body-info :offset-assert 4) @@ -215,7 +205,6 @@ ) ) -;; definition for method 3 of type rigid-body (defmethod inspect rigid-body ((obj rigid-body)) (when (not obj) (set! obj obj) @@ -265,7 +254,6 @@ obj ) -;; definition of type rigid-body-control (deftype rigid-body-control (basic) ((process process :offset-assert 4) (state rigid-body :inline :offset-assert 16) @@ -313,7 +301,6 @@ ) ) -;; definition for method 3 of type rigid-body-control (defmethod inspect rigid-body-control ((obj rigid-body-control)) (when (not obj) (set! obj obj) @@ -365,108 +352,88 @@ obj ) -;; definition for method 9 of type rigid-body-control (defmethod rigid-body-control-method-9 rigid-body-control ((obj rigid-body-control) (arg0 collide-shape-moving) (arg1 float)) (rigid-body-method-9 (-> obj state) arg0 arg1) (none) ) -;; definition for method 10 of type rigid-body-control -;; INFO: this function exists in multiple non-identical object files -;; WARN: Return type mismatch none vs object. (defmethod rigid-body-control-method-10 rigid-body-control ((obj rigid-body-control) (arg0 rigid-body-object) (arg1 float) (arg2 float)) (the-as object (rigid-body-method-10 (-> obj state))) ) -;; definition for method 11 of type rigid-body-control (defmethod rigid-body-control-method-11 rigid-body-control ((obj rigid-body-control) (arg0 collide-shape-moving)) (rigid-body-method-11 (-> obj state) arg0) (none) ) -;; definition for method 12 of type rigid-body-control (defmethod rigid-body-control-method-12 rigid-body-control ((obj rigid-body-control) (arg0 float)) (rigid-body-method-12 (-> obj state) arg0) (none) ) -;; definition for method 13 of type rigid-body-control (defmethod rigid-body-control-method-13 rigid-body-control ((obj rigid-body-control)) (rigid-body-method-13 (-> obj state)) (none) ) -;; definition for method 14 of type rigid-body-control (defmethod rigid-body-control-method-14 rigid-body-control ((obj rigid-body-control) (arg0 float)) (rigid-body-method-14 (-> obj state) arg0) (none) ) -;; definition for method 15 of type rigid-body-control (defmethod clear-force-torque! rigid-body-control ((obj rigid-body-control)) (clear-force-torque! (-> obj state)) (none) ) -;; definition for method 16 of type rigid-body-control (defmethod clear-momentum! rigid-body-control ((obj rigid-body-control)) (clear-momentum! (-> obj state)) (none) ) -;; definition for method 17 of type rigid-body-control (defmethod rigid-body-control-method-17 rigid-body-control ((obj rigid-body-control) (arg0 vector) (arg1 vector)) (rigid-body-method-18 (-> obj state) arg0 arg1) (none) ) -;; definition for method 18 of type rigid-body-control (defmethod rigid-body-control-method-18 rigid-body-control ((obj rigid-body-control) (arg0 vector) (arg1 vector)) (rigid-body-method-19 (-> obj state) arg0 arg1) (none) ) -;; definition for method 19 of type rigid-body-control (defmethod rigid-body-control-method-19 rigid-body-control ((obj rigid-body-control) (arg0 vector)) (rigid-body-method-20 (-> obj state) arg0) (none) ) -;; definition for method 20 of type rigid-body-control (defmethod rigid-body-control-method-20 rigid-body-control ((obj rigid-body-control) (arg0 vector) (arg1 vector) (arg2 float)) (rigid-body-method-21 (-> obj state) arg0 arg1 arg2) (none) ) -;; definition for method 21 of type rigid-body-control (defmethod rigid-body-control-method-21 rigid-body-control ((obj rigid-body-control) (arg0 vector) (arg1 vector)) (rigid-body-method-22 (-> obj state) arg0 arg1) ) -;; definition for method 22 of type rigid-body-control (defmethod rigid-body-control-method-22 rigid-body-control ((obj rigid-body-control) (arg0 vector)) (rigid-body-method-23 (-> obj state) arg0) ) -;; definition for method 23 of type rigid-body-control (defmethod rigid-body-control-method-23 rigid-body-control ((obj rigid-body-control)) (rigid-body-method-24 (-> obj state)) (none) ) -;; definition for method 24 of type rigid-body-control (defmethod rigid-body-control-method-24 rigid-body-control ((obj rigid-body-control) (arg0 rigid-body-info) (arg1 vector) (arg2 quaternion) (arg3 basic)) (rigid-body-method-25 (-> obj state) arg0 arg1 arg2 (the-as function arg3)) (none) ) -;; definition for method 25 of type rigid-body-control (defmethod rigid-body-control-method-25 rigid-body-control ((obj rigid-body-control) (arg0 vector) (arg1 quaternion)) (rigid-body-method-26 (-> obj state) arg0 arg1) (none) ) -;; definition of type rigid-body-object (deftype rigid-body-object (process-focusable) ((root-override-2 collide-shape-moving :offset 128) (info rigid-body-object-constants :offset-assert 204) @@ -485,7 +452,7 @@ (:methods (idle () _type_ :state 27) (active () _type_ :state 28) - (rigid-body-object-method-29 (_type_) none 29) + (rigid-body-object-method-29 (_type_ float) none 29) (rigid-body-object-method-30 (_type_) none 30) (rigid-body-object-method-31 (_type_ rigid-body-object-constants) none 31) (rigid-body-object-method-32 (_type_) none 32) @@ -512,7 +479,6 @@ ) ) -;; definition for method 3 of type rigid-body-object (defmethod inspect rigid-body-object ((obj rigid-body-object)) (when (not obj) (set! obj obj) @@ -563,7 +529,6 @@ obj ) -;; definition of type rigid-body-queue (deftype rigid-body-queue (structure) ((count int8 :offset-assert 0) (array uint64 128 :offset 8) @@ -583,7 +548,6 @@ ) ) -;; definition for method 3 of type rigid-body-queue (defmethod inspect rigid-body-queue ((obj rigid-body-queue)) (when (not obj) (set! obj obj) @@ -596,5 +560,4 @@ obj ) -;; failed to figure out what this is: 0 diff --git a/test/decompiler/reference/jak2/engine/physics/rigid-body_REF.gc b/test/decompiler/reference/jak2/engine/physics/rigid-body_REF.gc index d874a133e4..f2700b1d57 100644 --- a/test/decompiler/reference/jak2/engine/physics/rigid-body_REF.gc +++ b/test/decompiler/reference/jak2/engine/physics/rigid-body_REF.gc @@ -1,7 +1,5 @@ -;;-*-Lisp-*- (in-package goal) -;; definition of type rigid-body-work (deftype rigid-body-work (structure) ((max-ang-momentum float :offset-assert 0) (max-ang-velocity float :offset-assert 4) @@ -11,7 +9,6 @@ :flag-assert #x900000008 ) -;; definition for method 3 of type rigid-body-work (defmethod inspect rigid-body-work ((obj rigid-body-work)) (when (not obj) (set! obj obj) @@ -24,10 +21,8 @@ obj ) -;; definition for symbol *rigid-body-work*, type rigid-body-work (define *rigid-body-work* (new 'static 'rigid-body-work)) -;; definition for method 0 of type rigid-body-control (defmethod new rigid-body-control ((allocation symbol) (type-to-make type) (arg0 process)) (let ((v0-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) (set! (-> v0-0 process) arg0) @@ -35,14 +30,11 @@ ) ) -;; definition for method 7 of type rigid-body-control (defmethod relocate rigid-body-control ((obj rigid-body-control) (arg0 int)) (&+! (-> obj process) arg0) obj ) -;; definition for method 9 of type rigid-body-info -;; WARN: Return type mismatch int vs none. (defmethod rigid-body-info-method-9 rigid-body-info ((obj rigid-body-info)) (let ((f24-0 (-> obj mass)) (f28-0 (-> obj inertial-tensor-box 0)) @@ -80,9 +72,6 @@ (none) ) -;; definition for method 16 of type rigid-body -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defmethod clear-force-torque! rigid-body ((obj rigid-body)) (set! (-> obj force quad) (the-as uint128 0)) (set! (-> obj torque quad) (the-as uint128 0)) @@ -90,9 +79,6 @@ (none) ) -;; definition for method 17 of type rigid-body -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defmethod clear-momentum! rigid-body ((obj rigid-body)) (set! (-> obj lin-momentum quad) (the-as uint128 0)) (set! (-> obj ang-momentum quad) (the-as uint128 0)) @@ -100,8 +86,6 @@ (none) ) -;; definition for method 24 of type rigid-body -;; WARN: Return type mismatch int vs none. (defmethod rigid-body-method-24 rigid-body ((obj rigid-body)) (when #t (quaternion->matrix (-> obj matrix) (-> obj rotation)) @@ -114,8 +98,6 @@ (none) ) -;; definition for method 26 of type rigid-body -;; WARN: Return type mismatch int vs none. (defmethod rigid-body-method-26 rigid-body ((obj rigid-body) (arg0 vector) (arg1 quaternion)) (let ((s3-0 (new 'stack-no-clear 'inline-array 'vector 8))) (quaternion->matrix (the-as matrix (-> s3-0 1)) arg1) @@ -129,9 +111,6 @@ (none) ) -;; definition for method 25 of type rigid-body -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defmethod rigid-body-method-25 rigid-body ((obj rigid-body) (arg0 rigid-body-info) (arg1 vector) (arg2 quaternion) (arg3 function)) (set! (-> obj work) *rigid-body-work*) (set! (-> obj info) arg0) @@ -149,7 +128,6 @@ (none) ) -;; definition for method 22 of type rigid-body (defmethod rigid-body-method-22 rigid-body ((obj rigid-body) (arg0 vector) (arg1 vector)) (let ((v1-1 (vector-! (new 'stack-no-clear 'vector) arg0 (-> obj position)))) (vector-cross! arg1 (-> obj ang-velocity) v1-1) @@ -158,8 +136,6 @@ arg1 ) -;; definition for function matrix-3x3-triple-transpose-product -;; INFO: Used lq/sq (defun matrix-3x3-triple-transpose-product ((arg0 matrix) (arg1 matrix) (arg2 matrix)) (let ((s5-0 (new 'stack-no-clear 'inline-array 'matrix 3))) (let* ((v1-0 (-> s5-0 0)) @@ -182,9 +158,6 @@ arg0 ) -;; definition for method 12 of type rigid-body -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defmethod rigid-body-method-12 rigid-body ((obj rigid-body) (arg0 float)) (local-vars (v1-6 float)) (rlet ((acc :class vf) @@ -250,8 +223,6 @@ ) ) -;; definition for method 13 of type rigid-body -;; WARN: Return type mismatch int vs none. (defmethod rigid-body-method-13 rigid-body ((obj rigid-body)) (let ((v1-0 (-> obj info))) (vector-float*! (-> obj lin-velocity) (-> obj lin-momentum) (-> v1-0 inv-mass)) @@ -262,9 +233,6 @@ (none) ) -;; definition for method 14 of type rigid-body -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defmethod rigid-body-method-14 rigid-body ((obj rigid-body) (arg0 float)) (rlet ((acc :class vf) (vf0 :class vf) @@ -306,7 +274,6 @@ ) ) -;; definition for function damping-time-adjust (defun damping-time-adjust ((arg0 float) (arg1 float)) (let ((f0-0 0.0) (f1-0 1.0) @@ -317,8 +284,6 @@ ) ) -;; definition for method 9 of type rigid-body -;; WARN: Return type mismatch int vs none. (defmethod rigid-body-method-9 rigid-body ((obj rigid-body) (arg0 collide-shape-moving) (arg1 float)) (rigid-body-method-12 obj arg1) (let ((v1-2 (-> obj info))) @@ -354,10 +319,7 @@ (none) ) -;; definition for method 67 of type collide-shape-moving -;; ERROR: function was not converted to expressions. Cannot decompile. -;; definition for function transform-rigid-body-prims (defun transform-rigid-body-prims ((arg0 collide-shape-prim) (arg1 matrix)) (rlet ((acc :class vf) (vf0 :class vf) @@ -396,14 +358,8 @@ ) ) -;; definition for method 63 of type collide-shape-moving -;; ERROR: function was not converted to expressions. Cannot decompile. -;; definition for method 15 of type rigid-body -;; ERROR: function was not converted to expressions. Cannot decompile. -;; definition for method 18 of type rigid-body -;; WARN: Return type mismatch int vs none. (defmethod rigid-body-method-18 rigid-body ((obj rigid-body) (arg0 vector) (arg1 vector)) (vector+! (-> obj force) (-> obj force) arg1) (let ((a3-1 (new 'stack-no-clear 'vector)) @@ -417,8 +373,6 @@ (none) ) -;; definition for method 21 of type rigid-body -;; WARN: Return type mismatch int vs none. (defmethod rigid-body-method-21 rigid-body ((obj rigid-body) (arg0 vector) (arg1 vector) (arg2 float)) (vector+! (-> obj force) (-> obj force) arg1) (let* ((t0-2 (vector-! (new 'stack-no-clear 'vector) arg0 (-> obj position))) @@ -435,8 +389,6 @@ (none) ) -;; definition for method 19 of type rigid-body -;; WARN: Return type mismatch int vs none. (defmethod rigid-body-method-19 rigid-body ((obj rigid-body) (arg0 vector) (arg1 vector)) (let ((s5-0 (new 'stack-no-clear 'vector)) (s4-0 (new 'stack-no-clear 'vector)) @@ -451,15 +403,12 @@ (none) ) -;; definition for method 20 of type rigid-body -;; WARN: Return type mismatch int vs none. (defmethod rigid-body-method-20 rigid-body ((obj rigid-body) (arg0 vector)) (vector+! (-> obj force) (-> obj force) arg0) 0 (none) ) -;; definition for method 23 of type rigid-body (defmethod rigid-body-method-23 rigid-body ((obj rigid-body) (arg0 vector)) (let ((gp-0 (new 'stack-no-clear 'vector))) (vector-rotate*! gp-0 (-> obj info cm-offset-joint) (-> obj matrix)) @@ -468,8 +417,6 @@ arg0 ) -;; definition for method 28 of type rigid-body -;; WARN: Return type mismatch int vs none. (defmethod print-force-torque rigid-body ((obj rigid-body) (arg0 object)) (format arg0 " force ~M ~M ~M" (-> obj force x) (-> obj force y) (-> obj force z)) (format arg0 " torque ~M ~M ~M~%" (-> obj torque x) (-> obj torque y) (-> obj torque z)) @@ -477,8 +424,6 @@ (none) ) -;; definition for method 30 of type rigid-body -;; WARN: Return type mismatch int vs none. (defmethod print-momentum rigid-body ((obj rigid-body) (arg0 object)) (format arg0 " lin-mom ~M ~M ~M" (-> obj lin-momentum x) (-> obj lin-momentum y) (-> obj lin-momentum z)) (format arg0 " ang-mom ~M ~M ~M~%" (-> obj ang-momentum x) (-> obj ang-momentum y) (-> obj ang-momentum z)) @@ -486,8 +431,6 @@ (none) ) -;; definition for method 31 of type rigid-body -;; WARN: Return type mismatch int vs none. (defmethod print-velocity rigid-body ((obj rigid-body) (arg0 object)) (format arg0 " lin-vel ~M ~M ~M" (-> obj lin-velocity x) (-> obj lin-velocity y) (-> obj lin-velocity z)) (format arg0 " ang-vel ~f ~f ~f~%" (-> obj ang-velocity x) (-> obj ang-velocity y) (-> obj ang-velocity z)) @@ -495,8 +438,6 @@ (none) ) -;; definition for method 29 of type rigid-body -;; WARN: Return type mismatch int vs none. (defmethod print-position-rotation rigid-body ((obj rigid-body) (arg0 object)) (format arg0 " position ~M ~M ~M" (-> obj position x) (-> obj position y) (-> obj position z)) (format @@ -511,8 +452,6 @@ (none) ) -;; definition for method 27 of type rigid-body -;; WARN: Return type mismatch int vs none. (defmethod print-physics rigid-body ((obj rigid-body) (arg0 object)) (print-force-torque obj arg0) (print-position-rotation obj arg0) @@ -522,9 +461,6 @@ (none) ) -;; definition for method 10 of type rigid-body-control -;; INFO: this function exists in multiple non-identical object files -;; WARN: Return type mismatch int vs object. (defmethod rigid-body-control-method-10 rigid-body-control ((obj rigid-body-control) (arg0 rigid-body-object) (arg1 float) (arg2 float)) (let* ((s4-1 (max 1 (min 4 (+ (the int (* 0.9999 (/ arg1 arg2))) 1)))) (f30-0 (/ arg1 (the float s4-1))) @@ -544,9 +480,6 @@ (the-as object 0) ) -;; definition for method 11 of type rigid-body -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defmethod rigid-body-method-11 rigid-body ((obj rigid-body) (arg0 collide-shape-moving)) (quaternion-copy! (-> arg0 quat) (-> obj rotation)) (rigid-body-method-23 obj (-> arg0 trans)) @@ -555,13 +488,10 @@ (none) ) -;; definition for method 26 of type rigid-body-object (defmethod process-focusable-method-26 rigid-body-object ((obj rigid-body-object)) (-> obj info inv-mass) ) -;; definition for method 35 of type rigid-body-object -;; WARN: Return type mismatch int vs none. (defmethod rigid-body-object-method-35 rigid-body-object ((obj rigid-body-object)) (let ((a0-1 (-> obj info name))) (when (nonzero? a0-1) @@ -570,15 +500,11 @@ ) ) ((method-of-type rigid-body-info rigid-body-info-method-9) (the-as rigid-body-info (&-> (-> obj info) mass))) - (set! (-> obj rbody state force-callback) - (the-as (function object float none) (method-of-object obj rigid-body-object-method-29)) - ) + (set! (-> obj rbody state force-callback) (method-of-object obj rigid-body-object-method-29)) 0 (none) ) -;; definition for method 50 of type rigid-body-object -;; WARN: Return type mismatch int vs none. (defmethod rigid-body-object-method-50 rigid-body-object ((obj rigid-body-object) (arg0 float)) (when (logtest? (-> obj flags) (rigid-body-object-flag player-impulse-force player-contact-force)) (when (logtest? (-> obj flags) (rigid-body-object-flag player-impulse-force)) @@ -596,20 +522,16 @@ (none) ) -;; definition for method 29 of type rigid-body-object -;; WARN: Return type mismatch int vs none. -(defmethod rigid-body-object-method-29 rigid-body-object ((obj rigid-body-object)) - (let ((a1-0 (new 'stack-no-clear 'vector))) - (vector-reset! a1-0) - (set! (-> a1-0 y) (* -1.0 (-> obj info gravity) (-> obj rbody state info mass))) - (rigid-body-method-20 (-> obj rbody state) a1-0) +(defmethod rigid-body-object-method-29 rigid-body-object ((obj rigid-body-object) (arg0 float)) + (let ((a1-1 (new 'stack-no-clear 'vector))) + (vector-reset! a1-1) + (set! (-> a1-1 y) (* -1.0 (-> obj info gravity) (-> obj rbody state info mass))) + (rigid-body-method-20 (-> obj rbody state) a1-1) ) 0 (none) ) -;; definition for method 30 of type rigid-body-object -;; WARN: Return type mismatch int vs none. (defmethod rigid-body-object-method-30 rigid-body-object ((obj rigid-body-object)) (with-pp (rigid-body-control-method-10 (-> obj rbody) obj (-> pp clock seconds-per-frame) (-> obj max-time-step)) @@ -619,32 +541,24 @@ ) ) -;; definition for method 51 of type rigid-body-object -;; WARN: Return type mismatch int vs none. (defmethod rigid-body-object-method-51 rigid-body-object ((obj rigid-body-object)) (rigid-body-control-method-10 (-> obj rbody) obj (-> obj rbody state time-remaining) (-> obj max-time-step)) 0 (none) ) -;; definition for method 52 of type rigid-body-object -;; WARN: Return type mismatch int vs none. (defmethod rigid-body-object-method-52 rigid-body-object ((obj rigid-body-object)) (logclear! (-> obj flags) (rigid-body-object-flag player-impulse-force player-contact-force)) 0 (none) ) -;; definition for method 34 of type rigid-body-object -;; WARN: Return type mismatch int vs none. (defmethod rigid-body-object-method-34 rigid-body-object ((obj rigid-body-object)) (go (method-of-object obj idle)) 0 (none) ) -;; definition for method 31 of type rigid-body-object -;; WARN: Return type mismatch int vs none. (defmethod rigid-body-object-method-31 rigid-body-object ((obj rigid-body-object) (arg0 rigid-body-object-constants)) (set! (-> obj info) arg0) (set! (-> obj rbody) (new 'process 'rigid-body-control obj)) @@ -667,8 +581,6 @@ (none) ) -;; definition for method 32 of type rigid-body-object -;; WARN: Return type mismatch int vs none. (defmethod rigid-body-object-method-32 rigid-body-object ((obj rigid-body-object)) (let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)))) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) @@ -695,7 +607,6 @@ (none) ) -;; definition for symbol *rigid-body-object-constants*, type rigid-body-object-constants (define *rigid-body-object-constants* (new 'static 'rigid-body-object-constants :mass 2.0 :inv-mass 0.5 @@ -715,16 +626,12 @@ ) ) -;; definition for method 33 of type rigid-body-object -;; WARN: Return type mismatch int vs none. (defmethod rigid-body-object-method-33 rigid-body-object ((obj rigid-body-object)) (rigid-body-object-method-31 obj *rigid-body-object-constants*) 0 (none) ) -;; definition for method 11 of type rigid-body-object -;; WARN: Return type mismatch int vs none. (defmethod init-from-entity! rigid-body-object ((obj rigid-body-object) (arg0 entity-actor)) (rigid-body-object-method-32 obj) (process-drawable-from-entity! obj arg0) @@ -734,15 +641,11 @@ (none) ) -;; definition for method 36 of type rigid-body-object -;; WARN: Return type mismatch int vs none. (defmethod rigid-body-object-method-36 rigid-body-object () 0 (none) ) -;; definition for method 37 of type rigid-body-object -;; WARN: Return type mismatch int vs none. (defmethod rigid-body-object-method-37 rigid-body-object ((obj rigid-body-object)) (rigid-body-object-method-30 obj) ((method-of-object obj rigid-body-object-method-36)) @@ -756,8 +659,6 @@ (none) ) -;; definition for method 40 of type rigid-body-object -;; WARN: Return type mismatch int vs none. (defmethod rigid-body-object-method-40 rigid-body-object ((obj rigid-body-object)) (logior! (-> obj flags) (rigid-body-object-flag enable-collision)) (let ((v1-3 (-> obj root-override-2 root-prim))) @@ -768,8 +669,6 @@ (none) ) -;; definition for method 41 of type rigid-body-object -;; WARN: Return type mismatch int vs none. (defmethod rigid-body-object-method-41 rigid-body-object ((obj rigid-body-object)) (logclear! (-> obj flags) (rigid-body-object-flag enable-collision)) (let ((v1-3 (-> obj root-override-2 root-prim))) @@ -781,8 +680,6 @@ (none) ) -;; definition for method 38 of type rigid-body-object -;; WARN: Return type mismatch int vs none. (defmethod rigid-body-object-method-38 rigid-body-object ((obj rigid-body-object)) (when (not (logtest? (-> obj rbody state flags) (rigid-body-flag enable-physics))) (logior! (-> obj rbody state flags) (rigid-body-flag enable-physics)) @@ -794,16 +691,12 @@ (none) ) -;; definition for method 39 of type rigid-body-object -;; WARN: Return type mismatch int vs none. (defmethod rigid-body-object-method-39 rigid-body-object ((obj rigid-body-object)) (logclear! (-> obj rbody state flags) (rigid-body-flag enable-physics)) 0 (none) ) -;; definition for method 42 of type rigid-body-object -;; WARN: Return type mismatch int vs none. (defmethod rigid-body-object-method-42 rigid-body-object ((obj rigid-body-object)) (logior! (-> obj flags) (rigid-body-object-flag disturbed)) (set! (-> obj disturbed-time) (-> self clock frame-counter)) @@ -814,31 +707,22 @@ (none) ) -;; definition for method 43 of type rigid-body-object -;; WARN: Return type mismatch int vs none. (defmethod rigid-body-object-method-43 rigid-body-object ((obj rigid-body-object)) (go (method-of-object obj active)) 0 (none) ) -;; definition for method 44 of type rigid-body-object -;; WARN: Return type mismatch int vs none. (defmethod rigid-body-object-method-44 rigid-body-object ((obj rigid-body-object) (arg0 float)) 0 (none) ) -;; definition for method 45 of type rigid-body-object -;; WARN: Return type mismatch int vs none. (defmethod rigid-body-object-method-45 rigid-body-object () 0 (none) ) -;; definition for method 49 of type rigid-body-object -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defmethod rigid-body-object-method-49 rigid-body-object ((obj rigid-body-object) (arg0 matrix) (arg1 touching-shapes-entry)) (set! (-> arg0 trans z) (the-as float #f)) (set! (-> arg0 trans w) 0.0) @@ -869,8 +753,6 @@ (none) ) -;; definition for method 47 of type rigid-body-object -;; INFO: Used lq/sq (defmethod rigid-body-object-method-47 rigid-body-object ((obj rigid-body-object) (arg0 process-drawable) (arg1 attack-info) (arg2 object) (arg3 penetrate)) (local-vars (f0-2 float)) (when arg2 @@ -955,11 +837,7 @@ ) ) -;; definition for method 48 of type rigid-body-object -;; ERROR: function was not converted to expressions. Cannot decompile. -;; definition for method 46 of type rigid-body-object -;; INFO: Used lq/sq (defmethod rigid-body-object-method-46 rigid-body-object ((obj rigid-body-object) (arg0 process-drawable) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 (('impact-impulse) @@ -1081,13 +959,11 @@ (none) ) -;; definition for function rigid-body-object-event-handler (defbehavior rigid-body-object-event-handler rigid-body-object ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (rigid-body-object-method-46 self (the-as process-drawable arg0) arg1 arg2 arg3) (none) ) -;; failed to figure out what this is: (defstate idle (rigid-body-object) :virtual #t :trans (behavior () @@ -1105,7 +981,6 @@ :post (the-as (function none :behavior rigid-body-object) ja-post) ) -;; failed to figure out what this is: (defstate active (rigid-body-object) :virtual #t :event (the-as diff --git a/test/decompiler/reference/jak2/engine/process-drawable/process-taskable-h_REF.gc b/test/decompiler/reference/jak2/engine/process-drawable/process-taskable-h_REF.gc index 85730e0b7f..1327518e4a 100644 --- a/test/decompiler/reference/jak2/engine/process-drawable/process-taskable-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/process-drawable/process-taskable-h_REF.gc @@ -1,7 +1,5 @@ -;;-*-Lisp-*- (in-package goal) -;; definition of type process-taskable (deftype process-taskable (process-focusable) ((task game-task-control :offset-assert 204) (ambient ambient-control :inline :offset-assert 208) @@ -29,15 +27,14 @@ (play-game (game-task-event) _type_ :state 30) (process-taskable-method-31 (_type_) none 31) (process-taskable-method-32 (_type_) none 32) - (process-taskable-method-33 (_type_) none 33) + (init-skeleton! (_type_) none 33) (process-taskable-method-34 (_type_) symbol 34) - (process-taskable-method-35 (_type_) art-joint-anim 35) + (get-art-elem (_type_) art-element 35) (process-taskable-method-36 (_type_) none 36) (process-taskable-method-37 (_type_) none 37) ) ) -;; definition for method 3 of type process-taskable (defmethod inspect process-taskable ((obj process-taskable)) (when (not obj) (set! obj obj) @@ -64,5 +61,4 @@ obj ) -;; failed to figure out what this is: 0 diff --git a/test/decompiler/reference/jak2/engine/process-drawable/process-taskable_REF.gc b/test/decompiler/reference/jak2/engine/process-drawable/process-taskable_REF.gc index ad3bb17391..670866a5a5 100644 --- a/test/decompiler/reference/jak2/engine/process-drawable/process-taskable_REF.gc +++ b/test/decompiler/reference/jak2/engine/process-drawable/process-taskable_REF.gc @@ -7,12 +7,15 @@ (the-as process-taskable ((method-of-type process-focusable relocate) obj arg0)) ) -(defbehavior process-taskable-anim-loop process-taskable ((arg0 (function symbol))) - (while (begin self (arg0)) - (let ((s5-0 (process-taskable-method-35 self))) +(defbehavior process-taskable-anim-loop process-taskable ((arg0 (function process-taskable object))) + "Takes in a function and loops as long as it's return value is truthy + Seen take in - `true-func` which takes no args TODO - seems fishy + - a `(process-taskable process) lambda" + (while (arg0 self) + (let ((s5-0 (get-art-elem self))) (when (!= (ja-group) s5-0) (ja-channel-push! 1 0) - (set! (-> self skel root-channel 0 frame-group) s5-0) + (set! (-> self skel root-channel 0 frame-group) (the-as art-joint-anim s5-0)) ) ) (suspend) @@ -29,10 +32,13 @@ #t ) -(defmethod process-taskable-method-35 process-taskable ((obj process-taskable)) - (if (> (-> obj skel active-channels) 0) - (-> obj skel root-channel 0 frame-group) - ) +(defmethod get-art-elem process-taskable ((obj process-taskable)) + "Checks various things such the current actor, task status, etc to determine the right art-group data to use + @returns the appropriate [[art-element]] for the given NPC" + (the-as art-element (if (> (-> obj skel active-channels) 0) + (-> obj skel root-channel 0 frame-group) + ) + ) ) (defmethod process-taskable-method-36 process-taskable ((obj process-taskable)) @@ -242,7 +248,7 @@ (none) ) :code (behavior () - (process-taskable-anim-loop true-func) + (process-taskable-anim-loop (the-as (function process-taskable object) true-func)) (none) ) :post (behavior () @@ -392,7 +398,8 @@ (none) ) -(defmethod process-taskable-method-33 process-taskable ((obj process-taskable)) +(defmethod init-skeleton! process-taskable ((obj process-taskable)) + "@see [[initialize-skeleton]]" 0 (none) ) @@ -404,7 +411,7 @@ (set! (-> obj task) (new 'process 'game-task-control (res-lump-value arg0 'task-actor game-task-actor :time -1000000000.0)) ) - (process-taskable-method-33 obj) + (init-skeleton! obj) (process-taskable-method-32 obj) (when (logtest? #x1000000 (res-lump-value arg0 'options uint128 :time -1000000000.0)) (let* ((s5-1 *level*) diff --git a/test/decompiler/reference/jak2/engine/scene/scene-h_REF.gc b/test/decompiler/reference/jak2/engine/scene/scene-h_REF.gc index 195ce32097..37796840d6 100644 --- a/test/decompiler/reference/jak2/engine/scene/scene-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/scene/scene-h_REF.gc @@ -1,10 +1,8 @@ -;;-*-Lisp-*- (in-package goal) -;; definition of type scene-actor (deftype scene-actor (basic) ((name string :offset-assert 4) - (level basic :offset-assert 8) + (level symbol :offset-assert 8) (art-group string :offset-assert 12) (prefix string :offset-assert 16) (draw-frames pair :offset-assert 20) @@ -29,7 +27,6 @@ ) ) -;; definition for method 3 of type scene-actor (defmethod inspect scene-actor ((obj scene-actor)) (when (not obj) (set! obj obj) @@ -57,31 +54,34 @@ obj ) -;; definition of type scene (deftype scene (art-group) ((mask-to-clear uint32 :offset-assert 32) (entity string :offset-assert 36) (art-group string :offset-assert 40) (anim string :offset-assert 44) (parts int32 :offset-assert 48) - (command-list basic :offset-assert 52) + (command-list pair :offset-assert 52) (cut-list pair :offset-assert 56) (wait-max-time time-frame :offset-assert 64) (wait-air-time time-frame :offset-assert 72) (wait-ground-time time-frame :offset-assert 80) (draw-target level-load-info :offset-assert 88) - (abort basic :offset-assert 92) + (abort symbol :offset-assert 92) (actor (array scene-actor) :offset-assert 96) - (load-point string :offset-assert 100) - (end-point string :offset-assert 104) - (borrow basic :offset-assert 108) + (load-point-obj object :offset-assert 100) + (load-point continue-point :offset 100) + (load-point-name string :offset 100) + (end-point-obj object :offset-assert 104) + (end-point continue-point :offset 104) + (end-point-name string :offset 104) + (borrow pair :offset-assert 108) (sfx-volume float :offset-assert 112) (ambient-volume float :offset-assert 116) (music-volume float :offset-assert 120) - (blackout-end basic :offset-assert 124) - (peaceful basic :offset-assert 128) + (blackout-end symbol :offset-assert 124) + (peaceful symbol :offset-assert 128) (music-delay float :offset-assert 132) - (save basic :offset-assert 136) + (save symbol :offset-assert 136) (scene-task uint16 :offset-assert 140) ) :method-count-assert 17 @@ -93,7 +93,6 @@ ) ) -;; definition for method 3 of type scene (defmethod inspect scene ((obj scene)) (when (not obj) (set! obj obj) @@ -118,8 +117,8 @@ (format #t "~1Tdraw-target: ~A~%" (-> obj draw-target)) (format #t "~1Tabort: ~A~%" (-> obj abort)) (format #t "~1Tactor: ~A~%" (-> obj actor)) - (format #t "~1Tload-point: ~A~%" (-> obj load-point)) - (format #t "~1Tend-point: ~A~%" (-> obj end-point)) + (format #t "~1Tload-point: ~A~%" (-> obj load-point-obj)) + (format #t "~1Tend-point: ~A~%" (-> obj end-point-obj)) (format #t "~1Tborrow: ~A~%" (-> obj borrow)) (format #t "~1Tsfx-volume: ~f~%" (-> obj sfx-volume)) (format #t "~1Tambient-volume: ~f~%" (-> obj ambient-volume)) @@ -133,7 +132,6 @@ obj ) -;; definition of type scene-player (deftype scene-player (process-drawable) ((scene-list (array scene) :offset-assert 200) (scene scene :offset-assert 204) @@ -172,7 +170,6 @@ ) ) -;; definition for method 3 of type scene-player (defmethod inspect scene-player ((obj scene-player)) (when (not obj) (set! obj obj) @@ -207,8 +204,6 @@ obj ) -;; definition for symbol *scene-player*, type scene-player (define *scene-player* (the-as scene-player #f)) -;; failed to figure out what this is: 0 diff --git a/test/decompiler/reference/jak2/engine/scene/scene_REF.gc b/test/decompiler/reference/jak2/engine/scene/scene_REF.gc index e6e89570b9..4ec4470855 100644 --- a/test/decompiler/reference/jak2/engine/scene/scene_REF.gc +++ b/test/decompiler/reference/jak2/engine/scene/scene_REF.gc @@ -1,7 +1,5 @@ -;;-*-Lisp-*- (in-package goal) -;; definition of type scene-stage (deftype scene-stage (process-hidden) () :method-count-assert 15 @@ -9,7 +7,6 @@ :flag-assert #xf00000080 ) -;; definition for method 3 of type scene-stage (defmethod inspect scene-stage ((obj scene-stage)) (when (not obj) (set! obj obj) @@ -147,24 +144,19 @@ obj ) -;; definition for method 2 of type scene (defmethod print scene ((obj scene)) (format #t "#" (-> obj art-group) (-> obj anim) obj) obj ) -;; definition for method 15 of type scene -;; WARN: Return type mismatch spool-anim vs none. (defmethod scene-method-15 scene ((obj scene) (arg0 spool-anim)) (set! (-> arg0 name) (-> obj anim)) (set! (-> arg0 anim-name) (-> obj anim)) (set! (-> arg0 parts) (the-as int (-> obj parts))) - (set! (-> arg0 command-list) (the-as pair (-> obj command-list))) + (set! (-> arg0 command-list) (-> obj command-list)) (none) ) -;; definition for function scene-decode-continue -;; WARN: Return type mismatch basic vs continue-point. (defun scene-decode-continue ((arg0 basic)) (the-as continue-point (cond ((not arg0) @@ -183,12 +175,10 @@ ) ) -;; definition for method 9 of type scene-actor -;; INFO: Used lq/sq (defmethod scene-actor-method-9 scene-actor ((obj scene-actor) (arg0 scene-player)) (local-vars (s4-0 (pointer process)) (sv-96 process) (sv-112 process)) (let ((s1-0 (if (-> obj level) - (level-get *level* (the-as symbol (-> obj level))) + (level-get *level* (-> obj level)) (-> *level* default-level) ) ) @@ -385,7 +375,6 @@ s4-0 ) -;; definition for method 10 of type scene-player (defmethod deactivate scene-player ((obj scene-player)) (set! *scene-player* #f) (kill-persister *setting-control* (the-as engine-pers 'blackout) 'bg-a-force) @@ -393,8 +382,6 @@ (none) ) -;; definition for method 7 of type scene-player -;; WARN: Return type mismatch process-drawable vs scene-player. (defmethod relocate scene-player ((obj scene-player) (arg0 int)) (let ((v1-0 *kernel-context*)) (set! (-> v1-0 relocating-process) obj) @@ -414,8 +401,6 @@ (the-as scene-player ((method-of-type process-drawable relocate) obj arg0)) ) -;; definition for method 25 of type scene-player -;; WARN: Return type mismatch int vs none. (defmethod scene-player-method-25 scene-player ((obj scene-player) (arg0 float)) (local-vars (v1-11 symbol) (v1-40 symbol) (s0-0 object) (s0-1 object)) (dotimes (s4-0 (-> obj scene actor length)) @@ -484,8 +469,6 @@ (none) ) -;; definition for function scene-lookup -;; WARN: Return type mismatch basic vs scene. (defun scene-lookup ((arg0 basic)) "TODO - basic can be a string or a scene" (let ((v1-0 (-> arg0 type))) @@ -528,8 +511,6 @@ ) ) -;; definition for method 24 of type scene-player -;; WARN: Return type mismatch basic vs scene. (defmethod scene-player-method-24 scene-player ((obj scene-player) (arg0 basic) (arg1 symbol)) "TODO - arg1 can be string/scene" (when (= (-> arg0 type) string) @@ -553,8 +534,6 @@ (the-as scene arg0) ) -;; definition for method 23 of type scene-player -;; WARN: Return type mismatch int vs none. (defmethod scene-player-method-23 scene-player ((obj scene-player) (arg0 string) (arg1 symbol)) (let ((gp-0 (scene-player-method-24 obj arg0 #t))) (when (-> gp-0 peaceful) @@ -623,7 +602,7 @@ (let ((s2-0 (-> gp-0 actor s3-3))) (set! (-> s2-0 process) (the-as handle #f)) (let ((s1-0 (if (-> s2-0 level) - (level-get *level* (the-as symbol (-> s2-0 level))) + (level-get *level* (-> s2-0 level)) (-> *level* default-level) ) ) @@ -705,7 +684,6 @@ (none) ) -;; definition of type subtitle-work (deftype subtitle-work (structure) ((draw-tmpl dma-gif-packet :inline :offset-assert 0) (color0 vector4w :inline :offset-assert 32) @@ -716,7 +694,6 @@ :flag-assert #x900000040 ) -;; definition for method 3 of type subtitle-work (defmethod inspect subtitle-work ((obj subtitle-work)) (when (not obj) (set! obj obj) @@ -730,7 +707,6 @@ obj ) -;; definition for symbol *subtitle-work*, type subtitle-work (define *subtitle-work* (new 'static 'subtitle-work :draw-tmpl (new 'static 'dma-gif-packet @@ -758,8 +734,6 @@ ) ) -;; definition for function draw-subtitle-image -;; INFO: Used lq/sq (defun draw-subtitle-image ((arg0 subtitle-image) (arg1 font-context)) (local-vars (sv-16 pointer) (sv-32 int)) (let ((gp-0 (-> arg0 width)) @@ -948,8 +922,6 @@ ) ) -;; definition for function process-drawable-draw-subtitles -;; WARN: Return type mismatch int vs none. (defbehavior process-drawable-draw-subtitles process-drawable () (when (and (nonzero? (-> self skel)) (> (-> self skel active-channels) 0) @@ -1045,16 +1017,16 @@ (none) ) -;; failed to figure out what this is: (defstate wait (scene-player) :virtual #t :enter (behavior ((arg0 symbol)) (set! (-> self state-time) (-> self clock frame-counter)) (when (or (-> self scene) (-> self preload-continue)) - (let ((gp-0 (scene-decode-continue (if (-> self scene) - (-> self scene load-point) - (-> self preload-continue) - ) + (let ((gp-0 (scene-decode-continue (the-as basic (if (-> self scene) + (-> self scene load-point-obj) + (-> self preload-continue) + ) + ) ) ) ) @@ -1265,7 +1237,6 @@ ) ) -;; failed to figure out what this is: (defstate release (scene-player) :virtual #t :code (behavior () @@ -1347,8 +1318,8 @@ ) ) (cond - ((and *target* (-> self scene) (-> self scene end-point)) - (let ((gp-3 (scene-decode-continue (-> self scene end-point)))) + ((and *target* (-> self scene) (-> self scene end-point-obj)) + (let ((gp-3 (scene-decode-continue (the-as basic (-> self scene end-point-obj))))) (when gp-3 (set-continue! *game-info* gp-3 #f) (send-event *target* 'continue gp-3) @@ -1366,7 +1337,6 @@ ) ) -;; failed to figure out what this is: (defstate play-anim (scene-player) :virtual #t :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) @@ -1476,7 +1446,7 @@ (when (and (< (-> self scene-index) (-> self scene-list length)) (not (-> self aborted?))) (let ((v1-41 (scene-player-method-24 self (-> self scene-list (-> self scene-index)) #t))) (when v1-41 - (let ((a0-21 (scene-decode-continue (-> v1-41 load-point)))) + (let ((a0-21 (scene-decode-continue (the-as basic (-> v1-41 load-point-obj))))) (set! a0-24 (when (and a0-21 (logtest? (-> a0-21 flags) (continue-flags cf1))) (go-virtual wait a0-24) a0-24 @@ -1787,11 +1757,6 @@ ) ) -;; definition for function scene-player-init -;; WARN: Return type mismatch object vs none. -;; WARN: Using new Jak 2 rtype-of -;; WARN: Using new Jak 2 rtype-of -;; WARN: Using new Jak 2 rtype-of (defbehavior scene-player-init scene-player ((arg0 object) (arg1 symbol) (arg2 string)) "`object` arg can be an `(array scene)`, `pair of scene` or a `scene`" (process-entity-set! self (the-as entity-actor #f)) @@ -1881,7 +1846,6 @@ (none) ) -;; definition for method 16 of type scene (defmethod scene-method-16 scene ((obj scene)) (let ((v1-1 (-> *level* loading-level))) (if v1-1 diff --git a/test/decompiler/reference/jak2/engine/target/board/board-states_REF.gc b/test/decompiler/reference/jak2/engine/target/board/board-states_REF.gc index ea27cef4e3..9eceaa424f 100644 --- a/test/decompiler/reference/jak2/engine/target/board/board-states_REF.gc +++ b/test/decompiler/reference/jak2/engine/target/board/board-states_REF.gc @@ -1,7 +1,5 @@ -;;-*-Lisp-*- (in-package goal) -;; definition for function vector-vector-angle (defun vector-vector-angle ((arg0 vector) (arg1 vector)) (let ((s4-0 (new 'stack-no-clear 'matrix)) (gp-0 (new 'stack-no-clear 'matrix)) @@ -14,8 +12,6 @@ ) ) -;; definition for function target-board-anim-trans -;; WARN: Return type mismatch float vs none. (defbehavior target-board-anim-trans target () (let ((f26-0 (deg- (quaternion-vector-y-angle (-> self control dir-targ) (-> self control local-normal)) @@ -96,9 +92,6 @@ (none) ) -;; definition for function target-board-spin-check -;; INFO: Used lq/sq -;; WARN: Return type mismatch object vs none. (defbehavior target-board-spin-check target () (when (and (or (cpad-pressed? (-> self control unknown-cpad-info00 number) r1) (and (cpad-hold? (-> self control unknown-cpad-info00 number) r1) @@ -261,8 +254,6 @@ (none) ) -;; definition for function target-board-halfpipe-trans -;; WARN: Return type mismatch int vs none. (defbehavior target-board-halfpipe-trans target () (when (and (logtest? (focus-status halfpipe) (-> self focus-status)) *camera*) (let ((gp-0 (new 'stack-no-clear 'vector))) @@ -293,8 +284,6 @@ (none) ) -;; definition for function target-board-resolve-points -;; WARN: Return type mismatch int vs none. (defbehavior target-board-resolve-points target () (when (= (-> self board main mode) (joint-mod-mode rotate)) (let ((f0-1 (fabs (-> self board troty-cum)))) @@ -320,9 +309,6 @@ (none) ) -;; definition for function target-board-ground-check -;; INFO: Used lq/sq -;; WARN: Return type mismatch symbol vs none. (defbehavior target-board-ground-check target () (when (board-on-ground?) (when (!= (-> self board troty-cum) 0.0) @@ -433,8 +419,6 @@ (none) ) -;; definition for function target-board-halfpipe-check -;; INFO: Used lq/sq (defbehavior target-board-halfpipe-check target () (local-vars (v0-3 collide-action)) (let ((gp-0 (vector-flatten! @@ -474,7 +458,6 @@ ) ) -;; definition for function target-board-jump-trans (defbehavior target-board-jump-trans target () (when (and (!= (-> self state-time) (-> self clock frame-counter)) (jump-hit-ground-stuck?)) (set! (-> self board jump-land-time) (-> self clock frame-counter)) @@ -497,7 +480,6 @@ (none) ) -;; failed to figure out what this is: (defstate target-board-start (target) :event target-board-handler :exit target-board-exit @@ -510,7 +492,6 @@ :post target-post ) -;; failed to figure out what this is: (defstate target-board-stance (target) :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (case event-type @@ -763,7 +744,6 @@ :post target-board-post ) -;; failed to figure out what this is: (defstate target-board-duck-stance (target) :event (-> target-board-stance event) :enter (behavior () @@ -872,7 +852,6 @@ :post target-board-post ) -;; failed to figure out what this is: (defstate target-board-jump (target) :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (if (and (= event-type 'edge-grab) (< (- (-> self clock frame-counter) (-> self state-time)) (seconds 0.1))) @@ -1090,7 +1069,6 @@ :post target-board-post ) -;; failed to figure out what this is: (defstate target-board-halfpipe (target) :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (case event-type @@ -1355,7 +1333,6 @@ :post target-board-post ) -;; failed to figure out what this is: (defstate target-board-falling (target) :event target-board-handler :enter (behavior () @@ -1439,7 +1416,6 @@ :post target-board-post ) -;; failed to figure out what this is: (defstate target-board-jump-kick (target) :event target-board-handler :enter (behavior () @@ -1491,7 +1467,6 @@ :post target-board-post ) -;; failed to figure out what this is: (defstate target-board-wall-kick (target) :event target-board-handler :enter (behavior ((arg0 vector) (arg1 float)) @@ -1541,7 +1516,6 @@ :post target-board-post ) -;; failed to figure out what this is: (defstate target-board-flip (target) :event (-> target-board-jump event) :enter (behavior ((arg0 float) (arg1 float) (arg2 symbol)) @@ -1723,7 +1697,6 @@ :post target-board-post ) -;; failed to figure out what this is: (defstate target-board-hold (target) :event (-> target-board-jump event) :enter (behavior ((arg0 float) (arg1 float) (arg2 symbol)) @@ -1927,7 +1900,6 @@ :post target-board-post ) -;; failed to figure out what this is: (defstate target-board-trickx (target) :event (-> target-board-jump event) :enter (-> target-board-hold enter) @@ -2036,7 +2008,6 @@ :post target-board-post ) -;; failed to figure out what this is: (defstate target-board-hit-ground (target) :event target-board-handler :enter (behavior () @@ -2121,7 +2092,6 @@ :post target-board-post ) -;; failed to figure out what this is: (defstate target-board-turn-to (target) :event target-board-handler :enter (behavior ((arg0 vector) (arg1 time-frame)) @@ -2190,7 +2160,6 @@ :post target-board-post ) -;; failed to figure out what this is: (defstate target-board-ride-edge (target) :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (case event-type @@ -2464,7 +2433,6 @@ ) ) -;; failed to figure out what this is: (defstate target-board-grenade (target) :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (case event-type @@ -2575,7 +2543,6 @@ :post target-board-post ) -;; failed to figure out what this is: (defstate target-board-get-on (target) :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (case event-type @@ -2733,7 +2700,6 @@ :post target-board-post ) -;; failed to figure out what this is: (defstate target-board-pegasus (target) :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (case event-type @@ -2831,7 +2797,6 @@ ) ) -;; failed to figure out what this is: (defstate target-board-get-off (target) :event (-> target-board-get-on event) :enter (behavior ((arg0 object) (arg1 symbol)) @@ -3030,7 +2995,6 @@ ) ) -;; failed to figure out what this is: (defstate target-board-grab (target) :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (cond @@ -3093,7 +3057,6 @@ :post target-board-post ) -;; failed to figure out what this is: (defstate target-board-clone-anim (target) :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (if (and (= event-type 'trans) (= (-> event param 0) 'restore)) @@ -3122,7 +3085,6 @@ :post target-no-ja-move-post ) -;; failed to figure out what this is: (defstate target-board-hit (target) :event target-board-handler :exit (behavior () @@ -3148,7 +3110,7 @@ (when (= *cheat-mode* 'debug) (when (and (not *pause-lock*) (cpad-hold? (-> self control unknown-cpad-info00 number) r2)) (set! (-> self control unknown-time-frame30) (-> self clock frame-counter)) - (pickup-collectable! (-> self fact) (pickup-type health) 100.0 (the-as handle #f)) + (pickup-collectable! (-> self fact-info-override) (pickup-type health) 100.0 (the-as handle #f)) (go target-board-stance) ) ) @@ -3226,22 +3188,27 @@ (go target-stance) ) (else - (pickup-collectable! (-> self fact) (pickup-type health) -1000.0 (the-as handle #f)) + (pickup-collectable! (-> self fact-info-override) (pickup-type health) -1000.0 (the-as handle #f)) (go target-death (-> gp-0 mode)) ) ) ) (('drown-death 'sharkey 'lava 'dark-eco-pool 'melt 'instant-death 'crush 'death 'grenade 'big-explosion 'bot) - (pickup-collectable! (-> self fact) (pickup-type health) -1000.0 (the-as handle #f)) + (pickup-collectable! (-> self fact-info-override) (pickup-type health) -1000.0 (the-as handle #f)) (if (= (-> self game mode) 'play) (go target-death (-> gp-0 mode)) ) ) (('death) - (pickup-collectable! (-> self fact) (pickup-type health) -1000.0 (the-as handle #f)) + (pickup-collectable! (-> self fact-info-override) (pickup-type health) -1000.0 (the-as handle #f)) ) (else - (pickup-collectable! (-> self fact) (pickup-type health) (- (-> gp-0 damage)) (the-as handle #f)) + (pickup-collectable! + (-> self fact-info-override) + (pickup-type health) + (- (-> gp-0 damage)) + (the-as handle #f) + ) ) ) (target-hit-effect gp-0) @@ -3254,7 +3221,10 @@ ) ) ) - (when (not (and (= (-> self game mode) 'play) (>= 0.0 (-> (the-as fact-info-target (-> self fact)) health)))) + (when (not (and (= (-> self game mode) 'play) + (>= 0.0 (-> (the-as fact-info-target (-> self fact-info-override)) health)) + ) + ) (when (= (-> gp-0 knock) 8) (set-quaternion! (-> self control) (-> self control dir-targ)) (set-forward-vel (* -3.0 (-> gp-0 shove-back))) @@ -3281,7 +3251,9 @@ ) (target-hit-move gp-0 (target-hit-orient gp-0 s5-0) target-board-falling-anim-trans (-> gp-0 speed)) ) - (if (and (= (-> self game mode) 'play) (>= 0.0 (-> (the-as fact-info-target (-> self fact)) health))) + (if (and (= (-> self game mode) 'play) + (>= 0.0 (-> (the-as fact-info-target (-> self fact-info-override)) health)) + ) (go target-death (-> gp-0 mode)) ) ) diff --git a/test/decompiler/reference/jak2/engine/target/board/target-board_REF.gc b/test/decompiler/reference/jak2/engine/target/board/target-board_REF.gc index 256a4481f6..b5af106366 100644 --- a/test/decompiler/reference/jak2/engine/target/board/target-board_REF.gc +++ b/test/decompiler/reference/jak2/engine/target/board/target-board_REF.gc @@ -1,7 +1,5 @@ -;;-*-Lisp-*- (in-package goal) -;; definition for symbol *board-walk-mods*, type surface (define *board-walk-mods* (new 'static 'surface :name 'run @@ -93,7 +91,6 @@ ) ) -;; definition for symbol *board-duck-mods*, type surface (define *board-duck-mods* (new 'static 'surface :name 'duck :turnv 21845.334 @@ -127,10 +124,8 @@ ) ) -;; failed to figure out what this is: (set! (-> *board-duck-mods* mult-hook) (-> *board-walk-mods* mult-hook)) -;; definition for symbol *board-air-mods*, type surface (define *board-air-mods* (new 'static 'surface :name 'air :turnv 49152.0 @@ -165,7 +160,6 @@ ) ) -;; definition for symbol *board-jump-mods*, type surface (define *board-jump-mods* (new 'static 'surface :name 'jump :turnv 49152.0 @@ -194,7 +188,6 @@ ) ) -;; definition for symbol *board-ride-jump-mods*, type surface (define *board-ride-jump-mods* (new 'static 'surface :name 'jump @@ -238,13 +231,10 @@ ) ) -;; definition for symbol *board-duck-jump-mods*, type surface (define *board-duck-jump-mods* *board-jump-mods*) -;; definition for symbol *board-spin-mods*, type surface (define *board-spin-mods* (copy *board-jump-mods* 'global)) -;; failed to figure out what this is: (let ((v1-10 *board-spin-mods*)) (set! (-> v1-10 name) 'spin) (set! (-> v1-10 flags) (surface-flag no-turn-around check-edge air)) @@ -258,7 +248,6 @@ (set! (-> v1-10 tiltvf) 0.0) ) -;; failed to figure out what this is: (let ((v1-12 (copy *board-jump-mods* 'global))) (set! (-> v1-12 seek0) 0.0) (set! (-> v1-12 seek90) 0.0) @@ -267,7 +256,6 @@ (set! *board-spin-post-mods* v1-12) ) -;; failed to figure out what this is: (let ((v1-14 (copy *board-duck-jump-mods* 'global))) (set! (-> v1-14 flags) (surface-flag no-turn-around turn-to-vel air)) (set! (-> v1-14 seek0) 0.0) @@ -281,7 +269,6 @@ (set! *board-flip-mods* v1-14) ) -;; definition for symbol *board-wall-kick-mods*, type surface (define *board-wall-kick-mods* (new 'static 'surface :name 'jump @@ -320,7 +307,6 @@ ) ) -;; definition for symbol *board-halfpipe-mods*, type surface (define *board-halfpipe-mods* (new 'static 'surface :name 'jump :turnv 131072.0 @@ -348,7 +334,6 @@ ) ) -;; definition for symbol *board-turn-to-mods*, type surface (define *board-turn-to-mods* (new 'static 'surface :name 'run :turnv 524288.0 @@ -380,10 +365,8 @@ ) ) -;; failed to figure out what this is: (set! (-> *board-turn-to-mods* mult-hook) (-> *board-walk-mods* mult-hook)) -;; definition for symbol *board-ride-mods*, type surface (define *board-ride-mods* (new 'static 'surface :name 'run :turnv 218453.33 @@ -425,7 +408,6 @@ ) ) -;; definition for symbol *collide-edge-board-halfpipe-spec*, type collide-edge-spec (define *collide-edge-board-halfpipe-spec* (new 'static 'collide-edge-spec :split-dists (new 'static 'array float 2 1024.0 1433.6) :outward-offset (new 'static 'vector :x 708.608 :y 13312.0 :w 1.0) @@ -459,11 +441,7 @@ ) ) -;; definition for function target-board-handler -;; ERROR: function was not converted to expressions. Cannot decompile. -;; definition for function target-board-setup -;; WARN: Return type mismatch int vs none. (defbehavior target-board-setup target ((arg0 symbol)) (when (zero? (-> self board)) (set! (-> self board) (new 'process 'board-info)) @@ -499,7 +477,6 @@ (none) ) -;; definition for function target-board-init (defbehavior target-board-init target () (target-gun-end-mode #f) (target-exit) @@ -592,8 +569,6 @@ (none) ) -;; definition for function target-board-exit -;; INFO: Used lq/sq (defbehavior target-board-exit target () (when (not (and (-> self next-state) (let ((v1-3 (-> self next-state name))) @@ -662,8 +637,6 @@ (none) ) -;; definition for function target-board-falling-anim-trans -;; WARN: Return type mismatch int vs none. (defbehavior target-board-falling-anim-trans target () (let ((v1-2 (ja-group))) (cond @@ -682,13 +655,10 @@ (none) ) -;; definition for function board-on-ground? (defbehavior board-on-ground? target () (logtest? (-> self control status) (cshape-moving-flags on-surface)) ) -;; definition for function target-board-smack-surface? -;; INFO: Used lq/sq (defbehavior target-board-smack-surface? target () (when (and (logtest? (-> self control status) (cshape-moving-flags t-wall)) (< (+ (-> self clock frame-counter) (seconds -0.05)) (-> self control unknown-time-frame07)) @@ -705,9 +675,6 @@ ) ) -;; definition for function board-add-thrust -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defbehavior board-add-thrust target () (let ((gp-0 (-> self control unknown-vector00))) (let* ((v1-1 gp-0) @@ -840,7 +807,6 @@ (none) ) -;; definition for function segment-array-vector->index (defun segment-array-vector->index ((arg0 (inline-array vector)) (arg1 int) (arg2 float) (arg3 float)) (let ((gp-0 -1) (f30-0 0.0) @@ -858,7 +824,6 @@ ) ) -;; definition for function segment-array-index->vector (defun segment-array-index->vector ((arg0 (inline-array vector)) (arg1 int) (arg2 float) (arg3 vector)) (let ((v0-0 (the int arg2))) (let* ((f0-2 arg2) @@ -878,8 +843,6 @@ ) ) -;; definition for function target-board-exit-check -;; WARN: Return type mismatch int vs none. (defbehavior target-board-exit-check target () (if (and (or (and (cpad-pressed? (-> self control unknown-cpad-info00 number) r2) (or (!= *cheat-mode* 'debug) @@ -904,8 +867,6 @@ (none) ) -;; definition for function target-board-effect -;; WARN: Return type mismatch int vs none. (defbehavior target-board-effect target () (let ((gp-0 0)) (cond @@ -1068,9 +1029,6 @@ (none) ) -;; definition for function target-board-physics -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defbehavior target-board-physics target ((arg0 vector)) (let ((f30-0 0.5)) (if (>= (- (-> self clock frame-counter) (-> self board unknown-time-frame02)) (seconds 0.3)) @@ -1181,9 +1139,6 @@ (none) ) -;; definition for function target-board-collision -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defbehavior target-board-collision target () (let ((gp-0 (new 'stack-no-clear 'vector))) (set! (-> gp-0 quad) (-> self control transv quad)) @@ -1378,9 +1333,6 @@ (none) ) -;; definition for function target-board-joint-points -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defbehavior target-board-joint-points target () (when (-> self board board) (let ((a1-0 (-> self node-list data 25 bone transform))) @@ -1395,9 +1347,6 @@ (none) ) -;; definition for function target-board-pre-move -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defbehavior target-board-pre-move target () (cond ((and (and (logtest? (-> self control unknown-surface00 flags) (surface-flag air)) @@ -1624,9 +1573,6 @@ (none) ) -;; definition for function target-board-real-post -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defbehavior target-board-real-post target () (let ((f30-0 (-> self clock clock-ratio))) (let ((gp-1 (max 1 (the int (-> self clock time-adjust-ratio))))) @@ -1883,8 +1829,6 @@ (none) ) -;; definition for function probe-test -;; INFO: Used lq/sq (defun probe-test ((arg0 control-info) (arg1 vector) (arg2 pat-surface)) (dotimes (s3-0 3) (let ((s2-0 (new 'stack-no-clear 'collide-query))) @@ -1912,9 +1856,6 @@ #f ) -;; definition for function target-board-compute-edge -;; WARN: Found some very strange gotos. Check result carefully, this is not well tested. -;; INFO: Used lq/sq (defbehavior target-board-compute-edge target () (local-vars (sv-768 int)) (let ((s4-0 *edge-grab-info*) @@ -2289,8 +2230,6 @@ ) ) -;; definition for function board-ride-add-thrust -;; WARN: Return type mismatch int vs none. (defbehavior board-ride-add-thrust target ((arg0 vector) (arg1 float)) (let* ((f30-0 (-> self board ride-speed)) (f0-4 @@ -2338,9 +2277,6 @@ (none) ) -;; definition for function target-board-ride-post -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defbehavior target-board-ride-post target () (let ((f30-0 (-> self clock clock-ratio))) (let ((gp-1 (max 1 (the int (-> self clock time-adjust-ratio))))) @@ -2572,22 +2508,17 @@ (none) ) -;; definition for function target-board-post (defbehavior target-board-post target () (target-board-real-post) (none) ) -;; definition for function target-board-center-anim -;; WARN: Return type mismatch int vs none. (defbehavior target-board-center-anim target () (set! (-> self board turn-anim-frame) 0.0) 0 (none) ) -;; definition for function target-board-turn-anim -;; WARN: Return type mismatch int vs none. (defbehavior target-board-turn-anim target ((arg0 int)) (let ((f30-0 (-> self clock clock-ratio))) (let ((s5-1 (max 1 (the int (-> self clock time-adjust-ratio))))) @@ -2699,17 +2630,17 @@ (none) ) -;; definition for method 9 of type board-info -;; WARN: Return type mismatch int vs none. (defmethod add-to-trick-list board-info ((obj board-info) (arg0 board-tricks) (arg1 float)) "Add specified trick and point amount to trick list." (send-event (handle->process (-> obj process 0 notify)) 'notify 'trick-point arg0) (when (and (< (-> obj trick-count) 16) - (and (< 0.0 arg1) (nonzero? (-> (the-as fact-info-target (-> obj process 0 fact)) trick-point-duration))) + (and (< 0.0 arg1) + (nonzero? (-> (the-as fact-info-target (-> obj process 0 fact-info-override)) trick-point-duration)) + ) ) (let ((s4-0 0)) (when (>= (- (-> *display* game-clock frame-counter) - (-> (the-as fact-info-target (-> obj process 0 fact)) trick-point-pickup-time) + (-> (the-as fact-info-target (-> obj process 0 fact-info-override)) trick-point-pickup-time) ) (seconds 30) ) @@ -2819,8 +2750,6 @@ (none) ) -;; definition for method 10 of type board-info -;; WARN: Return type mismatch int vs none. (defmethod flush-trick-list board-info ((obj board-info)) "Flush trick list and give out points." (let ((f30-0 0.0)) diff --git a/test/decompiler/reference/jak2/engine/target/logic-target_REF.gc b/test/decompiler/reference/jak2/engine/target/logic-target_REF.gc index f52af174c9..bfc11dc543 100644 --- a/test/decompiler/reference/jak2/engine/target/logic-target_REF.gc +++ b/test/decompiler/reference/jak2/engine/target/logic-target_REF.gc @@ -1,16 +1,13 @@ -;;-*-Lisp-*- (in-package goal) -;; definition for function build-conversions -;; INFO: Used lq/sq (defbehavior build-conversions target ((arg0 vector)) (when (!= (-> self control unknown-surface02) (-> self control surf)) (set! (-> self control unknown-surface02) (-> self control surf)) (set! (-> self control unknown-time-frame02) (-> self clock frame-counter)) ) (surface-mult! (-> self control unknown-surface01) (-> self control unknown-surface00) (-> self control surf)) - (when (and (and (= (-> (the-as fact-info-target (-> self fact)) eco-type) 3) - (>= (-> (the-as fact-info-target (-> self fact)) eco-level) 1.0) + (when (and (and (= (-> (the-as fact-info-target (-> self fact-info-override)) eco-type) 3) + (>= (-> (the-as fact-info-target (-> self fact-info-override)) eco-level) 1.0) ) (or (= (-> self control unknown-surface00 name) 'run) (= (-> self control unknown-surface00 name) 'jump)) ) @@ -57,8 +54,6 @@ ) ) -;; definition for function vector-turn-to -;; INFO: Used lq/sq (defbehavior vector-turn-to target ((arg0 vector)) (forward-up-nopitch->quaternion (-> self control dir-targ) @@ -69,8 +64,6 @@ (build-conversions (-> self control transv)) ) -;; definition for function reverse-conversions -;; WARN: Return type mismatch cshape-moving-flags vs none. (defbehavior reverse-conversions target ((arg0 vector)) (let ((v1-1 (-> self control unknown-vector00))) (set! (-> self control unknown-float05) (sqrtf (+ (* (-> v1-1 x) (-> v1-1 x)) (* (-> v1-1 z) (-> v1-1 z))))) @@ -80,7 +73,6 @@ (none) ) -;; definition (debug) for function draw-history (defun-debug draw-history ((arg0 control-info)) (when (nonzero? *display-collide-history*) (when (cpad-pressed? 0 l3) @@ -119,11 +111,7 @@ (none) ) -;; definition (debug) for function target-history-print -;; ERROR: function was not converted to expressions. Cannot decompile. -;; definition (debug) for function target-print-stats -;; INFO: Used lq/sq (defun-debug target-print-stats ((arg0 target) (arg1 symbol)) (local-vars (sv-64 int) @@ -507,8 +495,6 @@ ) ) -;; definition for function read-pad -;; INFO: Used lq/sq (defbehavior read-pad target ((arg0 vector)) (when (!= (-> self control unknown-dword01) (-> *display* real-clock frame-counter)) (set! (-> self control unknown-vector13 quad) (-> self control unknown-vector12 quad)) @@ -542,7 +528,6 @@ (vector-matrix*! arg0 arg0 (-> self control unknown-matrix03)) ) -;; definition for function set-pad (defbehavior set-pad target ((arg0 vector)) (set! (-> self control unknown-float12) (vector-length arg0)) (let ((s5-0 vector-matrix*!) @@ -556,16 +541,12 @@ arg0 ) -;; definition for function warp-vector-into-surface! -;; INFO: Used lq/sq (defun warp-vector-into-surface! ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 matrix)) (let ((a2-1 (matrix-from-two-vectors! (new-stack-matrix0) (-> arg3 vector 1) arg2))) (vector-matrix*! arg0 arg1 a2-1) ) ) -;; definition for function vector<-pad-in-surface! -;; INFO: Used lq/sq (defbehavior vector<-pad-in-surface! target ((arg0 vector) (arg1 symbol)) (let ((a1-1 (read-pad (new-stack-vector0)))) (warp-vector-into-surface! arg0 a1-1 (-> self control local-normal) (-> self control unknown-matrix03)) @@ -576,8 +557,6 @@ arg0 ) -;; definition for function vector<-pad-in-matrix! -;; WARN: Return type mismatch vector vs none. (defun vector<-pad-in-matrix! ((arg0 vector) (arg1 cpad-info) (arg2 matrix)) (let ((gp-0 (new 'stack-no-clear 'vector)) (t9-0 matrix-local->world) @@ -599,8 +578,6 @@ (none) ) -;; definition for function local-pad-angle -;; INFO: Used lq/sq (defbehavior local-pad-angle target () (let ((a0-1 (vector<-pad-in-surface! (new-stack-vector0) #f))) (vector-dot @@ -610,8 +587,6 @@ ) ) -;; definition for function turn-around? -;; INFO: Used lq/sq (defbehavior turn-around? target () (let* ((a0-1 (vector<-pad-in-surface! (new-stack-vector0) #f)) (gp-0 (vector-normalize! a0-1 1.0)) @@ -660,8 +635,6 @@ ) ) -;; definition for function wall-hide? -;; INFO: Used lq/sq (defbehavior wall-hide? target () (when (and (< 0.7 (-> self control unknown-float12)) (< 0.7 (-> self control unknown-float27)) @@ -733,9 +706,6 @@ ) ) -;; definition for function target-log-trans -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defbehavior target-log-trans target () (let ((v1-1 (-> self control unknown-word00))) (set! (-> self control unknown-time-frame-array00 v1-1) (-> self clock frame-counter)) @@ -746,8 +716,6 @@ (none) ) -;; definition for function target-move-dist -;; INFO: Used lq/sq (defbehavior target-move-dist target ((arg0 time-frame)) (let ((s5-0 (new-stack-vector0)) (f30-0 0.0) @@ -778,8 +746,6 @@ ) ) -;; definition for function turn-to-vector -;; INFO: Used lq/sq (defbehavior turn-to-vector target ((arg0 vector) (arg1 float)) (let ((gp-0 (new-stack-vector0))) (warp-vector-into-surface! gp-0 arg0 (-> self control local-normal) (-> self control unknown-matrix03)) @@ -827,7 +793,6 @@ ) ) -;; definition for function target-bend-vel-turn (defbehavior target-bend-vel-turn target ((arg0 vector)) (cond ((= (-> self control unknown-surface01 vel-turn) 0.0) @@ -855,8 +820,6 @@ arg0 ) -;; definition for function target-add-slide-factor -;; INFO: Used lq/sq (defbehavior target-add-slide-factor target ((arg0 vector)) (let* ((a1-2 (vector-flatten! (new 'stack-no-clear 'vector) @@ -916,8 +879,6 @@ arg0 ) -;; definition for function add-thrust -;; INFO: Used lq/sq (defbehavior add-thrust target () (let ((s5-0 (-> self control unknown-vector01)) (gp-0 (-> self control unknown-vector00)) @@ -1077,8 +1038,6 @@ ) ) -;; definition for function add-gravity -;; INFO: Used lq/sq (defbehavior add-gravity target () (let ((s5-0 (new-stack-vector0)) (gp-0 (new-stack-vector0)) @@ -1116,7 +1075,6 @@ ) ) -;; definition for function target-compute-slopes (defbehavior target-compute-slopes target ((arg0 vector)) (let ((gp-0 (new 'stack-no-clear 'vector)) (s4-0 (vector-y-quaternion! (new 'stack-no-clear 'vector) (-> self control unknown-quaternion00))) @@ -1148,7 +1106,6 @@ 0 ) -;; definition for function do-rotations1 (defbehavior do-rotations1 target () (rotate-toward-orientation! (-> self control) @@ -1161,8 +1118,6 @@ ) ) -;; definition for function do-rotations2 -;; INFO: Used lq/sq (defbehavior do-rotations2 target () (let ((gp-0 (vector-z-quaternion! (new-stack-vector0) (-> self control dir-targ))) (s5-0 @@ -1277,8 +1232,6 @@ (target-compute-slopes (-> self control dynam gravity-normal)) ) -;; definition for function leg-ik-callback -;; INFO: Used lq/sq (defun leg-ik-callback ((arg0 joint-mod-ik) (arg1 object) (arg2 object) (arg3 vector)) (rlet ((acc :class vf) (vf0 :class vf) @@ -1377,9 +1330,6 @@ ) ) -;; definition for function target-update-ik -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defbehavior target-update-ik target () (rlet ((acc :class vf) (vf0 :class vf) @@ -1552,9 +1502,6 @@ ) ) -;; definition for function pre-collide-setup -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defbehavior pre-collide-setup target () (if (>= (-> self clock frame-counter) (-> self control unknown-time-frame04)) (vector-normalize! @@ -1589,8 +1536,6 @@ (none) ) -;; definition for function level-setup -;; WARN: Return type mismatch int vs none. (defbehavior level-setup target () (let ((gp-0 (-> self current-level))) (set! (-> self current-level) (level-get-target-inside *level*)) @@ -1607,9 +1552,6 @@ (none) ) -;; definition for function flag-setup -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defbehavior flag-setup target () (cond ((= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) @@ -1876,8 +1818,6 @@ (none) ) -;; definition for function post-flag-setup -;; WARN: Return type mismatch int vs none. (defbehavior post-flag-setup target () (if (logtest? (-> self control status) (cshape-moving-flags t-wall t-act)) (set! (-> self control unknown-time-frame07) (-> self clock frame-counter)) @@ -1966,8 +1906,6 @@ (none) ) -;; definition for function bend-gravity -;; INFO: Used lq/sq (defbehavior bend-gravity target () (if (and (logtest? (-> self control root-prim prim-core action) (collide-action no-normal-reset)) (zero? (logand (-> self control status) (cshape-moving-flags on-surface))) @@ -2071,8 +2009,6 @@ ) ) -;; definition for function target-compute-edge -;; INFO: Used lq/sq (defbehavior target-compute-edge target () (let ((s5-0 *edge-grab-info*)) (cond @@ -2223,8 +2159,6 @@ (none) ) -;; definition for function target-compute-edge-rider -;; INFO: Used lq/sq (defbehavior target-compute-edge-rider target () (let ((gp-0 *edge-grab-info*)) (cond @@ -2289,8 +2223,6 @@ (none) ) -;; definition for function target-compute-pole -;; INFO: Used lq/sq (defbehavior target-compute-pole target () (let* ((s2-0 (handle->process (-> self control unknown-handle01))) (gp-0 (-> (the-as swingpole s2-0) dir)) @@ -2378,9 +2310,6 @@ (none) ) -;; definition for function target-calc-camera-pos -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defbehavior target-calc-camera-pos target () (let ((s5-0 (new 'stack-no-clear 'vector)) (gp-0 (new 'stack-no-clear 'vector)) @@ -2471,9 +2400,6 @@ (none) ) -;; definition for function joint-points -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defbehavior joint-points target () (let ((f0-1 (* 0.00078125 (the float (-> self neck loock-at-count))))) (if (!= f0-1 0.0) @@ -2568,9 +2494,6 @@ (none) ) -;; definition for function do-target-gspot -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defbehavior do-target-gspot target () (cond ((and (logtest? (-> self control status) (cshape-moving-flags on-surface)) @@ -2602,8 +2525,6 @@ (none) ) -;; definition for function target-real-post -;; INFO: Used lq/sq (defbehavior target-real-post target () (let ((f30-0 (-> self clock clock-ratio))) (let ((gp-1 (max 1 (the int (-> self clock time-adjust-ratio))))) @@ -2770,14 +2691,11 @@ (none) ) -;; definition for function target-post (defbehavior target-post target () (target-real-post) (none) ) -;; definition for function target-swim-post -;; INFO: Used lq/sq (defbehavior target-swim-post target () (let ((f30-0 (-> self clock clock-ratio))) (let ((gp-1 (max 1 (the int (-> self clock time-adjust-ratio))))) @@ -2905,8 +2823,6 @@ (none) ) -;; definition for function target-no-stick-post -;; INFO: Used lq/sq (defbehavior target-no-stick-post target () (let ((f30-0 (-> self clock clock-ratio))) (let ((gp-1 (max 1 (the int (-> self clock time-adjust-ratio))))) @@ -3035,8 +2951,6 @@ (none) ) -;; definition for function target-no-move-post -;; INFO: Used lq/sq (defbehavior target-no-move-post target () (let ((f30-0 (-> self clock clock-ratio))) (let ((gp-1 (max 1 (the int (-> self clock time-adjust-ratio))))) @@ -3134,7 +3048,6 @@ (none) ) -;; definition for function target-no-ja-move-post (defbehavior target-no-ja-move-post target () (vector-! (-> self control unknown-vector05) @@ -3154,8 +3067,6 @@ (none) ) -;; definition for function reset-target-state -;; INFO: Used lq/sq (defbehavior reset-target-state target ((arg0 symbol)) (when arg0 (vector-identity! (-> self control scale)) @@ -3185,9 +3096,6 @@ self ) -;; definition for method 28 of type target -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defmethod init-target target ((obj target) (arg0 continue-point) (arg1 symbol)) (local-vars (s1-0 int) (s2-0 int) (s3-0 int) (s4-0 int) (sv-16 collide-shape-prim-group)) (set! (-> obj tobot?) arg1) @@ -3373,7 +3281,7 @@ (set! (-> obj leg-ik 1 elbow-rotation-axis) (the-as uint 0)) (set! (-> obj foot 0) (new 'process 'joint-mod (joint-mod-mode foot-rot) obj 29)) (set! (-> obj foot 1) (new 'process 'joint-mod (joint-mod-mode foot-rot) obj 36)) - (set! (-> obj fact) + (set! (-> obj fact-info-override) (new 'process 'fact-info-target obj (pickup-type eco-pill-random) (-> *FACT-bank* default-eco-pill-green-inc)) ) (target-gun-setup (logtest? (-> obj game features) (game-feature unk-game-feature-06))) @@ -3415,8 +3323,6 @@ (none) ) -;; definition for function target-init -;; WARN: Return type mismatch object vs none. (defbehavior target-init target ((arg0 continue-point)) (init-target self arg0 #f) (set! (-> self event-hook) (-> target-continue event)) @@ -3425,8 +3331,6 @@ (none) ) -;; definition for function tobot-init -;; WARN: Return type mismatch object vs none. (defbehavior tobot-init target ((arg0 symbol)) (init-target self (the-as continue-point #f) 'tobot) (set! (-> self name) "tobot") @@ -3436,7 +3340,6 @@ (none) ) -;; definition for method 10 of type target (defmethod deactivate target ((obj target)) (kill-persister *setting-control* (the-as engine-pers 'bg-a-speed) 'bg-a-speed) (if (nonzero? (-> obj darkjak)) @@ -3448,7 +3351,6 @@ (none) ) -;; definition for function stop (defun stop ((arg0 symbol)) (when *target* (kill-by-name "target" *active-pool*) @@ -3458,7 +3360,6 @@ 0 ) -;; definition for function start (defun start ((arg0 symbol) (arg1 continue-point)) (let ((v1-0 arg0)) (set! (-> *level* play?) (if (= v1-0 'play) @@ -3489,8 +3390,6 @@ *target* ) -;; definition for function tobot-start -;; WARN: Return type mismatch (pointer process) vs target. (defun tobot-start ((arg0 symbol)) (the-as target (process-spawn target @@ -3503,7 +3402,6 @@ ) ) -;; definition for function tobot-stop (defun tobot-stop () (kill-by-name "tobot" *active-pool*) 0 diff --git a/test/decompiler/reference/jak2/engine/target/target-darkjak_REF.gc b/test/decompiler/reference/jak2/engine/target/target-darkjak_REF.gc index 7ecefc2826..9f601a4ce9 100644 --- a/test/decompiler/reference/jak2/engine/target/target-darkjak_REF.gc +++ b/test/decompiler/reference/jak2/engine/target/target-darkjak_REF.gc @@ -1,8 +1,5 @@ -;;-*-Lisp-*- (in-package goal) -;; definition for function target-darkjak-setup -;; WARN: Return type mismatch int vs none. (defbehavior target-darkjak-setup target ((arg0 symbol)) (when (zero? (-> self darkjak)) (set! (-> self darkjak) (new 'process 'darkjak-info)) @@ -21,7 +18,6 @@ (none) ) -;; definition for function want-to-darkjak? (defbehavior want-to-darkjak? target () (and (cpad-pressed? (-> self control unknown-cpad-info00 number) l2) (not *pause-lock*) @@ -52,7 +48,9 @@ ) ) (or (and (not (and (logtest? (focus-status dark) (-> self focus-status)) (nonzero? (-> self darkjak)))) - (and (>= (- (-> self clock frame-counter) (-> (the-as fact-info-target (-> self fact)) darkjak-start-time)) + (and (>= (- (-> self clock frame-counter) + (-> (the-as fact-info-target (-> self fact-info-override)) darkjak-start-time) + ) (seconds 0.05) ) (>= (-> self game eco-pill-dark) (-> *FACT-bank* eco-pill-dark-max-default)) @@ -70,15 +68,12 @@ ) ) -;; failed to figure out what this is: (let ((v1-3 (copy *walk-mods* 'global))) (set! (-> v1-3 name) 'darkjak) (set! (-> v1-3 flags) (surface-flag gun-off)) (set! *darkjak-trans-mods* v1-3) ) -;; definition for function target-darkjak-end-mode -;; WARN: Return type mismatch int vs none. (defbehavior target-darkjak-end-mode target () (when (and (logtest? (focus-status dark) (-> self focus-status)) (nonzero? (-> self darkjak))) (logclear! (-> self focus-status) (focus-status dark)) @@ -97,9 +92,6 @@ (none) ) -;; definition for function target-darkjak-process -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defbehavior target-darkjak-process target ((arg0 object) (arg1 object) (arg2 object) (arg3 object) (arg4 object) (arg5 object) (arg6 float)) (local-vars (gp-0 vector)) (cond @@ -116,8 +108,10 @@ ) (target-danger-set! (-> self control unknown-symbol04) #f) (collide-shape-method-46 (-> self control)) - (if (and (or (>= (- (-> self clock frame-counter) (-> (the-as fact-info-target (-> self fact)) darkjak-start-time)) - (-> (the-as fact-info-target (-> self fact)) darkjak-effect-time) + (if (and (or (>= (- (-> self clock frame-counter) + (-> (the-as fact-info-target (-> self fact-info-override)) darkjak-start-time) + ) + (-> (the-as fact-info-target (-> self fact-info-override)) darkjak-effect-time) ) (not (-> *setting-control* user-current darkjak)) ) @@ -270,7 +264,6 @@ (none) ) -;; failed to figure out what this is: (defstate target-darkjak-get-on (target) :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (case event-type @@ -295,7 +288,7 @@ (persist-with-delay *setting-control* 'bg-a-speed (seconds 3) 'bg-a-speed 'abs 0.5 0) (if (not (and (-> self next-state) (= (-> self next-state name) 'target-darkjak-get-off))) (pickup-collectable! - (-> self fact) + (-> self fact-info-override) (pickup-type eco-pill-dark) (- (-> *FACT-bank* eco-pill-dark-max-default)) (the-as handle #f) @@ -326,8 +319,10 @@ (set! (-> self darkjak-giant-interp) 1.0) (set-setting! 'sound-flava #f #x41f00000 4) (set! (-> self focus-status) (logior (focus-status dark) (-> self focus-status))) - (set! (-> (the-as fact-info-target (-> self fact)) darkjak-start-time) (-> self clock frame-counter)) - (set! (-> (the-as fact-info-target (-> self fact)) darkjak-effect-time) (seconds 20)) + (set! (-> (the-as fact-info-target (-> self fact-info-override)) darkjak-start-time) + (-> self clock frame-counter) + ) + (set! (-> (the-as fact-info-target (-> self fact-info-override)) darkjak-effect-time) (seconds 20)) (if (logtest? (-> self darkjak stage) 16) (logior! (-> self state-flags) (state-flags sf4)) (logclear! (-> self state-flags) (state-flags sf4)) @@ -408,7 +403,6 @@ :post (-> target-grab post) ) -;; failed to figure out what this is: (defstate target-darkjak-get-off (target) :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (case event-type @@ -612,7 +606,6 @@ :post (-> target-grab post) ) -;; failed to figure out what this is: (defstate target-darkjak-running-attack (target) :event (-> target-running-attack event) :enter (-> target-running-attack enter) @@ -1008,8 +1001,6 @@ :post target-post ) -;; definition for method 9 of type darkjak-info -;; WARN: Return type mismatch int vs none. (defmethod update-clock! darkjak-info ((obj darkjak-info) (arg0 int)) (when (-> obj clock-on) (+! (-> obj clock-pos) (* (-> obj clock-vel) (-> self clock seconds-per-frame))) @@ -1043,8 +1034,6 @@ (none) ) -;; definition for function target-darkjak-bomb-collide -;; WARN: Return type mismatch int vs none. (defbehavior target-darkjak-bomb-collide target ((arg0 float) (arg1 float)) (seek! (-> (the-as (pointer float) arg0) 0) arg1 (* 4.0 (-> self clock seconds-per-frame))) (set! (-> self control unknown-float40) (-> (the-as (pointer float) arg0) 0)) @@ -1063,7 +1052,6 @@ (none) ) -;; failed to figure out what this is: (defstate target-darkjak-bomb0 (target) :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (case event-type @@ -1510,7 +1498,6 @@ :post target-no-stick-post ) -;; failed to figure out what this is: (set! (-> *lightning-spec-id-table* 10) (new 'static 'lightning-spec :name "lightning-darkjak-bomb1" :flags (lightning-spec-flags lsf0 size-from-adjust-dist) @@ -1532,9 +1519,6 @@ ) ) -;; definition for function target-bomb1-fire-shot -;; INFO: Used lq/sq -;; WARN: Return type mismatch object vs none. (defbehavior target-bomb1-fire-shot target ((arg0 (pointer handle)) (arg1 int) (arg2 int) (arg3 int)) (local-vars (sv-128 target) (sv-144 int) (sv-160 vector) (sv-176 vector) (sv-192 vector)) (rlet ((vf0 :class vf) @@ -1636,7 +1620,6 @@ ) ) -;; failed to figure out what this is: (defstate target-darkjak-bomb1 (target) :event (-> target-darkjak-bomb0 event) :enter (-> target-attack-uppercut-jump enter) @@ -1971,7 +1954,6 @@ :post target-post ) -;; failed to figure out what this is: (defstate target-darkjak-giant (target) :event target-standard-event-handler :exit (behavior () diff --git a/test/decompiler/reference/jak2/engine/target/target-gun_REF.gc b/test/decompiler/reference/jak2/engine/target/target-gun_REF.gc index 392dbbc84b..2dca952cec 100644 --- a/test/decompiler/reference/jak2/engine/target/target-gun_REF.gc +++ b/test/decompiler/reference/jak2/engine/target/target-gun_REF.gc @@ -1,12 +1,9 @@ -;;-*-Lisp-*- (in-package goal) -;; failed to figure out what this is: (if (not (nmember "gunp" *kernel-packages*)) (set! *kernel-packages* (cons "gunp" *kernel-packages*)) ) -;; definition for symbol *gun-walk-mods*, type surface (define *gun-walk-mods* (new 'static 'surface :name 'run @@ -104,7 +101,6 @@ ) ) -;; definition for function target-gun-event-handler (defbehavior target-gun-event-handler target ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (cond ((and (= arg2 'query) (= (-> arg3 param 0) 'mode)) @@ -151,8 +147,6 @@ ) ) -;; definition for function target-gun-setup -;; WARN: Return type mismatch int vs none. (defbehavior target-gun-setup target ((arg0 symbol)) (when (zero? (-> self gun)) (if (zero? (-> self game gun-type)) @@ -192,8 +186,6 @@ (none) ) -;; definition for function target-gun-init -;; WARN: Return type mismatch int vs none. (defbehavior target-gun-init target ((arg0 int)) (let ((gp-0 (-> self gun))) (if (zero? (-> gp-0 hips)) @@ -362,12 +354,10 @@ (none) ) -;; definition for function target-gun-exit (defun target-gun-exit () #f ) -;; definition for function target-gun-end-mode (defbehavior target-gun-end-mode target ((arg0 symbol)) (when (using-gun? self) (set! (-> self gun fire-pending) 0) @@ -531,12 +521,10 @@ ) ) -;; definition for function quat<-gun! (defun quat<-gun! ((arg0 quaternion) (arg1 quaternion)) (quaternion-copy! arg0 (the-as quaternion *null-vector*)) ) -;; definition for function target-gun-ammo-out-pick (defbehavior target-gun-ammo-out-pick target () (cond ((and (and (logtest? (-> self game features) (game-feature unk-game-feature-06)) @@ -585,8 +573,6 @@ ) ) -;; definition for function target-gun-type-set! -;; WARN: Return type mismatch int vs none. (defbehavior target-gun-type-set! target ((arg0 int)) (if (zero? arg0) (set! arg0 (-> self game gun-type)) @@ -1086,8 +1072,6 @@ (none) ) -;; definition for function target-gun-marking-menu -;; WARN: Return type mismatch int vs none. (defun target-gun-marking-menu ((arg0 target)) (when (and (not (paused?)) (not (and (logtest? (focus-status dark) (-> arg0 focus-status)) (nonzero? (-> arg0 darkjak)))) @@ -1148,9 +1132,6 @@ (none) ) -;; definition for function target-gun-build-track-list -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defbehavior target-gun-build-track-list target () (let ((gp-0 (new 'stack-no-clear 'vector))) (set! (-> gp-0 quad) (-> self control trans quad)) @@ -1191,9 +1172,6 @@ (none) ) -;; definition for function target-gun-find-track -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defbehavior target-gun-find-track target () (if (logtest? (-> self gun upper-body track-mode) (track-mode lock-on)) (logior! (-> self gun track?) 8) @@ -1420,8 +1398,6 @@ (none) ) -;; definition for function target-top-anim-base-mode -;; WARN: Return type mismatch int vs none. (defbehavior target-top-anim-base-mode target ((arg0 int)) (cond ((logtest? (-> self focus-status) (focus-status pilot-riding)) @@ -1537,8 +1513,6 @@ (none) ) -;; definition for function target-gun-combo-start -;; WARN: Return type mismatch int vs none. (defbehavior target-gun-combo-start target ((arg0 int) (arg1 time-frame)) (target-top-anim-base-mode arg0) (set! (-> self gun surpress-time) (+ (-> self clock frame-counter) arg0)) @@ -1547,9 +1521,6 @@ (none) ) -;; definition for function target-gun-joint-pre0 -;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. (defbehavior target-gun-joint-pre0 target () (if (!= (zero? (logand (-> self game features) (game-feature unk-game-feature-06))) (not (-> self gun gun))) (target-gun-setup (logtest? (-> self game features) (game-feature unk-game-feature-06))) @@ -1920,8 +1891,6 @@ (none) ) -;; definition for function target-gun-joint-pre -;; WARN: Return type mismatch int vs none. (defbehavior target-gun-joint-pre target () (local-vars (gp-0 art-element)) (target-gun-joint-pre0) @@ -2107,8 +2076,6 @@ (none) ) -;; definition for function target-gun-compute-pos -;; INFO: Used lq/sq (defbehavior target-gun-compute-pos target () (let ((a1-0 (-> self node-list data 24 bone transform)) (a2-0 (if (-> self sidekick) @@ -2152,8 +2119,6 @@ ) ) -;; definition for function target-gun-joint-points -;; WARN: Return type mismatch int vs none. (defbehavior target-gun-joint-points target () (when (-> self gun gun) (set! (-> self gun gun-daxter) @@ -2370,8 +2335,6 @@ (none) ) -;; definition for function target-gun-fire -;; WARN: Return type mismatch symbol vs none. (defbehavior target-gun-fire target ((arg0 pickup-type)) (when (using-gun? self) (let* ((gp-0 (-> self gun)) @@ -2383,7 +2346,7 @@ (logtest? (state-flags sf16) (-> self state-flags)) (logtest? (-> self game secrets) (game-secrets endless-ammo)) ) - (pickup-collectable! (-> self fact) (the-as pickup-type a1-0) -1.0 (the-as handle #f)) + (pickup-collectable! (-> self fact-info-override) (the-as pickup-type a1-0) -1.0 (the-as handle #f)) (case (-> gp-0 gun-type) (((pickup-type eco-blue)) (cond @@ -2639,8 +2602,6 @@ (none) ) -;; definition for function target-gun-check -;; WARN: Return type mismatch int vs none. (defbehavior target-gun-check target () (when (using-gun? self) (let ((gp-0 (-> self gun))) @@ -2845,9 +2806,6 @@ (none) ) -;; definition for function camera-rotate-to-vector -;; INFO: Used lq/sq -;; WARN: Return type mismatch object vs none. (defun camera-rotate-to-vector ((arg0 vector) (arg1 vector)) (let ((s5-0 (new 'stack-no-clear 'vector))) (set! (-> s5-0 quad) (-> arg0 quad)) @@ -2867,8 +2825,6 @@ (none) ) -;; definition for function target-gun-real-post -;; INFO: Used lq/sq (defbehavior target-gun-real-post target () (let ((f30-0 (-> self clock clock-ratio))) (let ((gp-1 (max 1 (the int (-> self clock time-adjust-ratio))))) @@ -3003,7 +2959,6 @@ (none) ) -;; definition for function target-gun-post (defbehavior target-gun-post target () (target-gun-real-post) (none) diff --git a/test/decompiler/reference/jak2/engine/target/target-swim_REF.gc b/test/decompiler/reference/jak2/engine/target/target-swim_REF.gc index 7deaf8491c..1495476115 100644 --- a/test/decompiler/reference/jak2/engine/target/target-swim_REF.gc +++ b/test/decompiler/reference/jak2/engine/target/target-swim_REF.gc @@ -1,7 +1,5 @@ -;;-*-Lisp-*- (in-package goal) -;; failed to figure out what this is: (defstate target-wade-stance (target) :event target-standard-event-handler :enter (behavior () @@ -66,7 +64,6 @@ :post target-post ) -;; failed to figure out what this is: (defstate target-wade-walk (target) :event target-standard-event-handler :enter (behavior () @@ -341,7 +338,6 @@ :post target-post ) -;; definition for function target-swim-tilt (defbehavior target-swim-tilt target ((arg0 float) (arg1 float) (arg2 float) (arg3 float)) (let ((gp-0 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control unknown-quaternion00)))) (let ((v1-2 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control dir-targ))) @@ -375,7 +371,6 @@ (set! (-> self control unknown-vector04 y) (-> self control unknown-float001)) ) -;; failed to figure out what this is: (defstate target-swim-stance (target) :event target-standard-event-handler :enter (behavior () @@ -530,7 +525,6 @@ :post target-swim-post ) -;; failed to figure out what this is: (defstate target-swim-walk (target) :event target-standard-event-handler :enter (behavior () @@ -653,7 +647,6 @@ :post target-swim-post ) -;; failed to figure out what this is: (defstate target-swim-down (target) :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (local-vars (t0-7 symbol)) @@ -684,7 +677,7 @@ (set! (-> v1-1 mode) 'damage) ) (if (and (= (-> self game mode) 'play) - (>= 0.0 (- (-> (the-as fact-info-target (-> self fact)) health) (-> v1-1 damage))) + (>= 0.0 (- (-> (the-as fact-info-target (-> self fact-info-override)) health) (-> v1-1 damage))) ) (set! (-> v1-1 mode) 'drown-death) ) @@ -882,7 +875,6 @@ :post target-swim-post ) -;; failed to figure out what this is: (defstate target-swim-up (target) :event (-> target-swim-down event) :enter (behavior () @@ -1026,7 +1018,6 @@ :post target-swim-post ) -;; failed to figure out what this is: (defstate target-swim-jump-jump (target) :event (-> target-jump event) :enter (-> target-jump enter) @@ -1048,7 +1039,6 @@ :post target-post ) -;; failed to figure out what this is: (defstate target-swim-jump (target) :event target-standard-event-handler :enter (-> target-swim-stance enter) diff --git a/test/decompiler/reference/jak2/engine/target/target-util_REF.gc b/test/decompiler/reference/jak2/engine/target/target-util_REF.gc index a5377dacbf..2b67b9cd92 100644 --- a/test/decompiler/reference/jak2/engine/target/target-util_REF.gc +++ b/test/decompiler/reference/jak2/engine/target/target-util_REF.gc @@ -731,7 +731,7 @@ ) ) ) - (case (-> (the-as fact-info-target (-> self fact)) eco-type) + (case (-> (the-as fact-info-target (-> self fact-info-override)) eco-type) ((1) (set! (-> self control penetrate-using) (logior (penetrate eco-yellow) (-> self control penetrate-using))) ) @@ -1433,8 +1433,8 @@ ) ) (>= (- (-> self clock frame-counter) (-> self control unknown-time-frame11)) - (the-as time-frame (if (and (= (-> (the-as fact-info-target (-> self fact)) eco-type) 1) - (>= (-> (the-as fact-info-target (-> self fact)) eco-level) 1.0) + (the-as time-frame (if (and (= (-> (the-as fact-info-target (-> self fact-info-override)) eco-type) 1) + (>= (-> (the-as fact-info-target (-> self fact-info-override)) eco-level) 1.0) ) (-> *TARGET-bank* yellow-attack-timeout) (-> *TARGET-bank* attack-timeout) diff --git a/test/decompiler/reference/jak2/engine/target/target_REF.gc b/test/decompiler/reference/jak2/engine/target/target_REF.gc index ee96d70d85..d9254b6f7c 100644 --- a/test/decompiler/reference/jak2/engine/target/target_REF.gc +++ b/test/decompiler/reference/jak2/engine/target/target_REF.gc @@ -1,8 +1,5 @@ -;;-*-Lisp-*- (in-package goal) -;; definition for function target-falling-trans -;; WARN: Return type mismatch int vs none. (defbehavior target-falling-trans target ((arg0 symbol) (arg1 time-frame)) (if (want-to-darkjak?) (go target-darkjak-get-on 2) @@ -30,7 +27,6 @@ (none) ) -;; failed to figure out what this is: (defstate target-startup (target) :event target-standard-event-handler :code (behavior () @@ -42,7 +38,6 @@ :post target-no-move-post ) -;; failed to figure out what this is: (defstate target-stance (target) :event target-standard-event-handler :enter (behavior () @@ -142,7 +137,6 @@ :post target-post ) -;; failed to figure out what this is: (defstate target-walk (target) :event target-walk-event-handler :enter (behavior () @@ -254,7 +248,6 @@ :post target-post ) -;; failed to figure out what this is: (defstate target-turn-around (target) :event target-standard-event-handler :enter (behavior () @@ -320,7 +313,6 @@ :post target-no-stick-post ) -;; failed to figure out what this is: (defstate target-slide-down (target) :event target-walk-event-handler :enter (behavior () @@ -367,7 +359,6 @@ :post target-post ) -;; definition for symbol *slide-down-mods*, type surface (define *slide-down-mods* (new 'static 'surface :name 'run :turnv 131072.0 @@ -400,7 +391,6 @@ ) ) -;; definition for symbol *slide-jump-mods*, type surface (define *slide-jump-mods* (new 'static 'surface :name 'jump :turnv 32768.0 @@ -434,7 +424,6 @@ ) ) -;; failed to figure out what this is: (defstate target-slide-down-to-ground (target) :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (case event-type @@ -572,8 +561,6 @@ ) ) -;; definition for function init-var-jump -;; INFO: Used lq/sq (defbehavior init-var-jump target ((arg0 float) (arg1 float) (arg2 symbol) (arg3 symbol) (arg4 vector) (arg5 float)) (when (and (logtest? (focus-status dark) (-> self focus-status)) (nonzero? (-> self darkjak)) @@ -652,8 +639,6 @@ ) ) -;; definition for function mod-var-jump -;; INFO: Used lq/sq (defbehavior mod-var-jump target ((arg0 symbol) (arg1 symbol) (arg2 symbol) (arg3 vector)) (local-vars (v0-1 vector)) (let ((f0-1 (* 0.033333335 (the float (- (-> self clock frame-counter) (-> self state-time)))))) @@ -730,7 +715,6 @@ ) ) -;; definition for symbol *duck-mods*, type surface (define *duck-mods* (new 'static 'surface :name 'duck @@ -784,7 +768,6 @@ ) ) -;; failed to figure out what this is: (defstate target-duck-stance (target) :event target-standard-event-handler :enter (behavior ((arg0 symbol)) @@ -955,7 +938,6 @@ :post target-post ) -;; failed to figure out what this is: (defstate target-duck-walk (target) :event target-standard-event-handler :enter (behavior ((arg0 symbol)) @@ -1075,8 +1057,6 @@ :post target-post ) -;; definition for function target-jump-top-anim -;; WARN: Return type mismatch int vs none. (defbehavior target-jump-top-anim target () (let ((gp-0 (top-anim-joint-control-method-11 (-> self skel top-anim) 0))) (when gp-0 @@ -1098,7 +1078,6 @@ (none) ) -;; failed to figure out what this is: (defstate target-jump (target) :event target-jump-event-handler :enter (behavior ((arg0 float) (arg1 float) (arg2 surface)) @@ -1328,7 +1307,6 @@ :post target-post ) -;; failed to figure out what this is: (defstate target-jump-forward (target) :event target-jump-event-handler :enter (behavior ((arg0 float) (arg1 float)) @@ -1390,7 +1368,6 @@ :post target-post ) -;; failed to figure out what this is: (defstate target-double-jump (target) :event target-jump-event-handler :enter (behavior ((arg0 float) (arg1 float)) @@ -1527,7 +1504,6 @@ :post target-post ) -;; failed to figure out what this is: (defstate target-high-jump (target) :event target-jump-event-handler :enter (behavior ((arg0 float) (arg1 float) (arg2 object)) @@ -1619,7 +1595,6 @@ :post target-post ) -;; failed to figure out what this is: (defstate target-duck-high-jump (target) :event target-standard-event-handler :enter (behavior ((arg0 float) (arg1 float) (arg2 symbol)) @@ -1671,7 +1646,6 @@ :post target-post ) -;; failed to figure out what this is: (defstate target-duck-high-jump-jump (target) :event target-jump-event-handler :enter (behavior ((arg0 float) (arg1 float) (arg2 symbol)) @@ -1819,7 +1793,6 @@ :post target-post ) -;; failed to figure out what this is: (defstate target-falling (target) :event target-jump-event-handler :enter (behavior ((arg0 symbol)) @@ -1877,7 +1850,6 @@ :post target-post ) -;; failed to figure out what this is: (defstate target-hit-ground (target) :event target-walk-event-handler :enter (behavior ((arg0 symbol)) @@ -2045,7 +2017,6 @@ :post target-post ) -;; definition for symbol *attack-mods*, type surface (define *attack-mods* (new 'static 'surface :name 'attack :tiltv 65536.0 @@ -2089,7 +2060,6 @@ ) ) -;; failed to figure out what this is: (let ((v1-25 (copy *attack-mods* 'global))) (set! (-> v1-25 flags) (surface-flag attack spin gun-turn-fast)) (set! (-> v1-25 mult-hook) (lambda :behavior target @@ -2108,7 +2078,6 @@ (set! *attack-end-mods* v1-25) ) -;; failed to figure out what this is: (defstate target-attack (target) :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (case event-type @@ -2266,8 +2235,8 @@ (until (ja-done? 0) (compute-alignment! (-> self align)) (align! (-> self align) (align-opts adjust-quat) 1.0 1.0 1.0) - (when (and (= (-> (the-as fact-info-target (-> self fact)) eco-type) 2) - (>= (-> (the-as fact-info-target (-> self fact)) eco-level) 1.0) + (when (and (= (-> (the-as fact-info-target (-> self fact-info-override)) eco-type) 2) + (>= (-> (the-as fact-info-target (-> self fact-info-override)) eco-level) 1.0) ) (let ((s5-1 (method-of-object (-> self skel effect) effect-control-method-10))) 'group-red-eco-spinkick @@ -2368,7 +2337,6 @@ :post target-post ) -;; definition for symbol *run-attack-mods*, type surface (define *run-attack-mods* (new 'static 'surface :name 'punch :tiltv 32768.0 @@ -2395,7 +2363,6 @@ ) ) -;; failed to figure out what this is: (defstate target-running-attack (target) :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (case event-type @@ -2601,8 +2568,8 @@ #f ) ) - (when (and (= (-> (the-as fact-info-target (-> self fact)) eco-type) 2) - (>= (-> (the-as fact-info-target (-> self fact)) eco-level) 1.0) + (when (and (= (-> (the-as fact-info-target (-> self fact-info-override)) eco-type) 2) + (>= (-> (the-as fact-info-target (-> self fact-info-override)) eco-level) 1.0) ) (let ((s5-1 (method-of-object (-> self skel effect) effect-control-method-10))) 'group-red-eco-spinkick @@ -2890,7 +2857,6 @@ :post target-post ) -;; definition for symbol *jump-attack-mods*, type surface (define *jump-attack-mods* (new 'static 'surface :name 'attack @@ -2941,7 +2907,6 @@ ) ) -;; failed to figure out what this is: (defstate target-attack-air (target) :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (let ((v0-0 (target-bonk-event-handler proc arg1 event-type event))) @@ -3058,8 +3023,8 @@ (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) ) - (when (and (= (-> (the-as fact-info-target (-> self fact)) eco-type) 2) - (>= (-> (the-as fact-info-target (-> self fact)) eco-level) 1.0) + (when (and (= (-> (the-as fact-info-target (-> self fact-info-override)) eco-type) 2) + (>= (-> (the-as fact-info-target (-> self fact-info-override)) eco-level) 1.0) ) (let ((s5-0 (method-of-object (-> self skel effect) effect-control-method-10))) 'group-red-eco-spinkick @@ -3094,13 +3059,11 @@ :post target-post ) -;; failed to figure out what this is: (let ((v1-32 (copy *turn-around-mods* 'global))) (set! (-> v1-32 flags) (surface-flag attack gun-inactive)) (set! *uppercut-mods* v1-32) ) -;; definition for symbol *uppercut-jump-mods*, type surface (define *uppercut-jump-mods* (new 'static 'surface :name 'uppercut :turnvv 18204.445 @@ -3142,7 +3105,6 @@ ) ) -;; failed to figure out what this is: (defstate target-attack-uppercut (target) :event target-dangerous-event-handler :enter (behavior ((arg0 float) (arg1 float)) @@ -3264,7 +3226,6 @@ :post target-post ) -;; failed to figure out what this is: (defstate target-attack-uppercut-jump (target) :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (case event-type @@ -3364,8 +3325,8 @@ (go target-attack-air 'uppercut) ) (mod-var-jump #t #t (cpad-hold? (-> self control unknown-cpad-info00 number) x) (-> self control transv)) - (when (and (= (-> (the-as fact-info-target (-> self fact)) eco-type) 2) - (>= (-> (the-as fact-info-target (-> self fact)) eco-level) 1.0) + (when (and (= (-> (the-as fact-info-target (-> self fact-info-override)) eco-type) 2) + (>= (-> (the-as fact-info-target (-> self fact-info-override)) eco-level) 1.0) ) (let ((s5-0 (method-of-object (-> self skel effect) effect-control-method-10))) 'group-red-eco-spinkick @@ -3457,7 +3418,6 @@ :post target-post ) -;; failed to figure out what this is: (defstate target-flop (target) :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (local-vars (v1-0 symbol)) @@ -3490,8 +3450,8 @@ ) :enter (behavior ((arg0 float) (arg1 float) (arg2 float)) (cond - ((and (= (-> (the-as fact-info-target (-> self fact)) eco-type) 1) - (>= (-> (the-as fact-info-target (-> self fact)) eco-level) 1.0) + ((and (= (-> (the-as fact-info-target (-> self fact-info-override)) eco-type) 1) + (>= (-> (the-as fact-info-target (-> self fact-info-override)) eco-level) 1.0) ) (go target-yellow-jump-blast) ) @@ -3568,8 +3528,8 @@ ) (when gp-1 (logior! (-> self control status) (cshape-moving-flags on-surface)) - (when (or (and (= (-> (the-as fact-info-target (-> self fact)) eco-type) 2) - (>= (-> (the-as fact-info-target (-> self fact)) eco-level) 1.0) + (when (or (and (= (-> (the-as fact-info-target (-> self fact-info-override)) eco-type) 2) + (>= (-> (the-as fact-info-target (-> self fact-info-override)) eco-level) 1.0) ) (and (logtest? (focus-status dark) (-> self focus-status)) (nonzero? (-> self darkjak)) @@ -3577,8 +3537,8 @@ ) ) (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.5)) - (when (and (= (-> (the-as fact-info-target (-> self fact)) eco-type) 2) - (>= (-> (the-as fact-info-target (-> self fact)) eco-level) 1.0) + (when (and (= (-> (the-as fact-info-target (-> self fact-info-override)) eco-type) 2) + (>= (-> (the-as fact-info-target (-> self fact-info-override)) eco-level) 1.0) ) (let ((s4-0 (method-of-object (-> self skel effect) effect-control-method-10))) 'group-red-eco-strike-ground @@ -3604,8 +3564,8 @@ (go target-flop-hit-ground gp-1) ) ) - (when (and (= (-> (the-as fact-info-target (-> self fact)) eco-type) 2) - (>= (-> (the-as fact-info-target (-> self fact)) eco-level) 1.0) + (when (and (= (-> (the-as fact-info-target (-> self fact-info-override)) eco-type) 2) + (>= (-> (the-as fact-info-target (-> self fact-info-override)) eco-level) 1.0) ) (let* ((gp-2 (-> self skel effect)) (s5-2 (method-of-object gp-2 effect-control-method-10)) @@ -3762,7 +3722,6 @@ :post target-post ) -;; failed to figure out what this is: (defstate target-flop-hit-ground (target) :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (cond @@ -3826,8 +3785,8 @@ (go target-attack-air 'flop) ) ) - (when (and (and (= (-> (the-as fact-info-target (-> self fact)) eco-type) 2) - (>= (-> (the-as fact-info-target (-> self fact)) eco-level) 1.0) + (when (and (and (= (-> (the-as fact-info-target (-> self fact-info-override)) eco-type) 2) + (>= (-> (the-as fact-info-target (-> self fact-info-override)) eco-level) 1.0) ) (< (- (-> self clock frame-counter) (-> self state-time)) (seconds 0.25)) ) @@ -3865,7 +3824,6 @@ :post target-post ) -;; failed to figure out what this is: (defstate target-roll (target) :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (if (= event-type 'touched) @@ -4042,7 +4000,6 @@ :post target-post ) -;; failed to figure out what this is: (defstate target-roll-flip (target) :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (case event-type diff --git a/test/decompiler/reference/jak2/levels/common/races/race-part_REF.gc b/test/decompiler/reference/jak2/levels/common/races/race-part_REF.gc new file mode 100644 index 0000000000..1abd92eb10 --- /dev/null +++ b/test/decompiler/reference/jak2/levels/common/races/race-part_REF.gc @@ -0,0 +1,255 @@ +;;-*-Lisp-*- +(in-package goal) + +;; failed to figure out what this is: +(defpartgroup group-race-signal-red-light-3 + :id 194 + :bounds (static-bspherem 0 0 0 1) + :parts ((sp-item 905 :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 905 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbc :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 3) (meters 0.5) 1.0) + (sp-flt spt-rot-x 4096.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 0.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 64.0) + (sp-flt spt-omega 4097638.5) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 4096.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-race-signal-red-light-2 + :id 195 + :bounds (static-bspherem 0 0 0 1) + :parts ((sp-item 906 :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 906 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbc :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 4) (meters 0.5) 1.0) + (sp-flt spt-rot-x 4096.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 0.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 64.0) + (sp-flt spt-omega 4097638.5) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 4096.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-race-signal-red-light-1 + :id 196 + :bounds (static-bspherem 0 0 0 1) + :parts ((sp-item 907 :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 907 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbc :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 6) (meters 0.5) 1.0) + (sp-flt spt-rot-x 4096.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 0.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 64.0) + (sp-flt spt-omega 4097638.5) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 4096.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-race-signal-green-light + :id 197 + :bounds (static-bspherem 0 0 0 1) + :parts ((sp-item 908 :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 908 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbc :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 8) (meters 1) 1.0) + (sp-flt spt-rot-x 4096.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 96.0) + (sp-flt spt-omega 4097638.5) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 4096.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-turbo-pickup + :id 198 + :linger-duration (seconds 1) + :bounds (static-bspherem 0 0 0 8) + :parts ((sp-item 909 :fade-after (meters 90) :falloff-to (meters 90) :flags (is-3d)) + (sp-item 910 :flags (is-3d)) + (sp-item 911 :flags (bit6)) + (sp-item 912 :flags (is-3d bit6)) + (sp-item 913 :fade-after (meters 120) :falloff-to (meters 120)) + ) + ) + +;; failed to figure out what this is: +(defpart 913 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc)) + (sp-rnd-flt spt-num 1.0 1.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.15) 1.0) + (sp-int spt-rot-x 4) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 96.0 32.0 1.0) + (sp-flt spt-omega 34.816) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.026666667) 1.0) + (sp-flt spt-scalevel-x (meters -0.00033333333)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -1.7066667) + (sp-flt spt-friction 0.97) + (sp-int spt-timer 75) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-func spt-func 'sparticle-motion-blur) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 3600.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 3600.0) 1.0) + (sp-rnd-flt spt-conerot-z (degrees 0.0) (degrees 3600.0) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 909 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x86 :page #xd2e)) + (sp-flt spt-num 0.05) + (sp-flt spt-scale-x (meters 0.5)) + (sp-rnd-flt spt-rot-x 0.0 655360.0 1.0) + (sp-rnd-flt spt-rot-y (degrees 0.0) (degrees 3600.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 3600.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 64.0 64.0 1.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 64.0) + (sp-flt spt-scalevel-x (meters 0.0055555557)) + (sp-flt spt-rotvel-x (degrees 0.8)) + (sp-flt spt-rotvel-y (degrees 0.8)) + (sp-flt spt-rotvel-z (degrees 0.8)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-int spt-timer 450) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat) + ) + ) + +;; failed to figure out what this is: +(defpart 912 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc)) + (sp-func spt-birth-func 'birth-func-camera-orient) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 1.5) (meters 2.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpart 910 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x86 :page #xd2e)) + (sp-func spt-birth-func 'birth-func-camera-orient) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 2.9) (meters 0.3) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 64.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 64.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + ) + ) + +;; failed to figure out what this is: +(defpart 911 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 8) (meters 0.2) 1.0) + (sp-flt spt-rot-x 4096.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 0.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 8.0 1.0) + (sp-flt spt-omega 4097638.5) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 0.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-turbo-pickup-explode + :id 199 + :duration (seconds 0.017) + :linger-duration (seconds 1) + :bounds (static-bspherem 0 0 0 32) + :parts ((sp-item 914 :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 914 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 16)) + (sp-flt spt-rot-x 4096.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 64.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 128.0) + (sp-flt spt-omega 4097638.5) + (sp-flt spt-scalevel-x (meters -0.26666668)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -1.6) + (sp-flt spt-fade-a -3.2) + (sp-int spt-timer 40) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 0.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + + + + diff --git a/test/decompiler/reference/jak2/levels/common/scene-actor_REF.gc b/test/decompiler/reference/jak2/levels/common/scene-actor_REF.gc new file mode 100644 index 0000000000..aa1cbb7f41 --- /dev/null +++ b/test/decompiler/reference/jak2/levels/common/scene-actor_REF.gc @@ -0,0 +1,1274 @@ +(in-package goal) + +(defskelgroup skel-scenecamera scenecamera 0 -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :texture-level 6 + ) + +(defskelgroup skel-particleman particleman 0 -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 10) + :origin-joint-index 3 + ) + +(defskelgroup skel-jakone-highres jakone-highres 0 -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3.2) + :longest-edge (meters 1) + :sort 1 + :origin-joint-index 3 + :shadow-joint-index 3 + ) + +(defskelgroup skel-darkjak-highres darkjak-highres 0 -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3.2) + :longest-edge (meters 1) + :sort 1 + :origin-joint-index 3 + :shadow-joint-index 3 + ) + +(defskelgroup skel-jak-highres-prison jak-highres-prison 0 -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3.2) + :longest-edge (meters 1) + :shadow 2 + :sort 1 + :origin-joint-index 3 + :shadow-joint-index 3 + ) + +(defskelgroup skel-youngsamos-highres youngsamos-highres 0 3 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3.2) + :shadow 2 + :origin-joint-index 3 + ) + +(defskelgroup skel-samos-highres samos-highres 0 3 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3.2) + :shadow 2 + :origin-joint-index 3 + ) + +(defskelgroup skel-kor-highres kor-highres 0 3 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3) + :shadow 2 + :origin-joint-index 3 + ) + +(defskelgroup skel-metalkor-highres metalkor-highres 0 3 + ((1 (meters 999999))) + :bounds (static-spherem 0 2 2 8) + :shadow 2 + :origin-joint-index 3 + ) + +(defskelgroup skel-metalkor-highres-lowtorso metalkor-highres 7 10 + ((8 (meters 999999))) + :bounds (static-spherem 0 -9 -12 22) + :shadow 9 + :origin-joint-index 3 + ) + +(defskelgroup skel-metalkor-highres-legs metalkor-highres 14 17 + ((15 (meters 999999))) + :bounds (static-spherem 0 -9 2 15) + :shadow 16 + :origin-joint-index 3 + ) + +(defskelgroup skel-metalkor-highres-wings metalkor-highres 21 24 + ((22 (meters 999999))) + :bounds (static-spherem 0 8 -5 20) + :shadow 23 + :origin-joint-index 3 + ) + +(defskelgroup skel-kor-transform kor-transform 0 3 + ((1 (meters 999999))) + :bounds (static-spherem 0 2 2 8) + :shadow 2 + :origin-joint-index 3 + ) + +(defskelgroup skel-kor-transform-monsterparts kor-transform 5 8 + ((6 (meters 999999))) + :bounds (static-spherem 0 -9 -12 22) + :shadow 7 + :origin-joint-index 3 + ) + +(defskelgroup skel-baron-highres baron-highres 0 3 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3) + :shadow 2 + :origin-joint-index 3 + ) + +(defskelgroup skel-errol-highres errol-highres 0 3 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3) + :shadow 2 + :origin-joint-index 3 + ) + +(defskelgroup skel-onin-highres onin-highres 0 3 + ((1 (meters 200))) + :bounds (static-spherem 0 0 0 5) + :shadow 2 + :origin-joint-index 3 + ) + +(defskelgroup skel-pecker-highres pecker-highres 0 3 + ((1 (meters 200))) + :bounds (static-spherem 0 0 0 5) + :shadow 2 + :origin-joint-index 3 + ) + +(defskelgroup skel-kid-highres kid-highres 0 3 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3) + :shadow 2 + :origin-joint-index 3 + :shadow-joint-index 3 + ) + +(defskelgroup skel-crocadog-highres crocadog-highres 0 3 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3) + :shadow 2 + :origin-joint-index 3 + ) + +(defskelgroup skel-crimson-guard-highres crimson-guard-highres 0 -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3) + :shadow 2 + :origin-joint-index 3 + ) + +(defskelgroup skel-crimson-guard-lowres crimson-guard-lowres 0 -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3) + :shadow 2 + :origin-joint-index 3 + ) + +(defskelgroup skel-crimson-guard-hover crimson-guard-hover 0 -1 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 0 0 7.5) + :shadow 3 + :origin-joint-index 3 + ) + +(defskelgroup skel-atoll-hellcat atoll-hellcat 0 4 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 8.5) + :origin-joint-index 3 + ) + +(defskelgroup skel-rift-rider rift-rider 0 4 + ((1 (meters 999999))) + :bounds (static-spherem 0 1.5 0 5) + :shadow 2 + :origin-joint-index 3 + :shadow-joint-index 3 + ) + +(defskelgroup skel-torn-highres torn-highres 0 3 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 2.5) + :shadow 2 + :origin-joint-index 3 + ) + +(defskelgroup skel-sig-highres sig-highres 0 3 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 5) + :shadow 2 + :origin-joint-index 30 + ) + +(defskelgroup skel-ashelin-highres ashelin-highres 0 3 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 5) + :shadow 2 + :origin-joint-index 3 + :shadow-joint-index 3 + ) + +(defskelgroup skel-brutter-highres brutter-highres 0 4 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 5) + :shadow 2 + :origin-joint-index 3 + :shadow-joint-index 3 + ) + +(defskelgroup skel-palmpilot palmpilot 0 -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 1.5) + :origin-joint-index 3 + ) + +(defskelgroup skel-krew-highres krew-highres 0 3 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3) + :shadow 2 + :origin-joint-index 3 + ) + +(defskelgroup skel-tess-highres tess-highres 0 3 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3) + :shadow 2 + :origin-joint-index 3 + ) + +(defskelgroup skel-keira-highres keira-highres 0 3 + ((1 (meters 200))) + :bounds (static-spherem 0 0 0 5) + :shadow 2 + :origin-joint-index 3 + :shadow-joint-index 3 + ) + +(defskelgroup skel-sew-gold-key sew-gold-key 0 2 + ((1 (meters 200))) + :bounds (static-spherem 0 0 0 1) + :origin-joint-index 3 + ) + +(defskelgroup skel-life-seed life-seed 0 2 + ((1 (meters 200))) + :bounds (static-spherem 0 0 0 1) + :origin-joint-index 3 + ) + +(defskelgroup skel-grunt-fma grunt-fma 0 -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 10) + :origin-joint-index 3 + ) + +(defskelgroup skel-baron baron 0 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 3) + :origin-joint-index 3 + ) + +(deftype kor-npc (process-taskable) + () + :heap-base #xa0 + :method-count-assert 38 + :size-assert #x120 + :flag-assert #x2600a00120 + ) + +(defmethod inspect kor-npc ((obj kor-npc)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-taskable inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +(defmethod get-art-elem kor-npc ((obj kor-npc)) + "Checks various things such the current actor, task status, etc to determine the right art-group data to use + @returns the appropriate [[art-element]] for the given NPC" + (case (-> obj task actor) + (((game-task-actor kor-hideout)) + (-> obj draw art-group data 5) + ) + (else + (-> obj draw art-group data 4) + ) + ) + ) + +(defmethod init-skeleton! kor-npc ((obj kor-npc)) + "@see [[initialize-skeleton]]" + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-kor-highres" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj draw light-index) (the-as uint 30)) + 0 + (none) + ) + +(deftype metalkor-highres (process-drawable) + () + :heap-base #x50 + :method-count-assert 21 + :size-assert #xc8 + :flag-assert #x15005000c8 + (:methods + (idle () _type_ :state 20) + ) + ) + +(defmethod inspect metalkor-highres ((obj metalkor-highres)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +(defstate idle (metalkor-highres) + :virtual #t + :code (behavior () + (until #f + (ja-no-eval :group! (ja-group) + :num! (seek! (the float (+ (-> (ja-group) frames num-frames) -1))) + :frame-num 0.0 + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + ) + #f + (none) + ) + :post (the-as (function none :behavior metalkor-highres) ja-post) + ) + +(defmethod init-from-entity! metalkor-highres ((obj metalkor-highres) (arg0 entity-actor)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-metalkor-highres" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj draw light-index) (the-as uint 10)) + (let* ((s5-2 (get-process *default-dead-pool* manipy #x4000)) + (s4-1 + (when s5-2 + (let ((t9-5 (method-of-type manipy activate))) + (t9-5 (the-as manipy s5-2) obj (symbol->string (-> manipy symbol)) (the-as pointer #x70004000)) + ) + (let ((s4-2 run-function-in-process) + (s3-0 s5-2) + (s2-0 manipy-init) + (s1-0 (-> obj root trans)) + (s0-0 (-> obj entity)) + (t0-0 (art-group-get-by-name *level* "skel-metalkor-highres-lowtorso" (the-as (pointer uint32) #f))) + (t1-0 #f) + ) + 0 + ((the-as (function object object object object object object none) s4-2) s3-0 s2-0 s1-0 s0-0 t0-0 t1-0) + ) + (-> s5-2 ppointer) + ) + ) + ) + (send-event (ppointer->process s4-1) 'anim-mode 'clone-anim) + (send-event (ppointer->process s4-1) 'prefix "lowtorso-") + ) + (let* ((s5-3 (get-process *default-dead-pool* manipy #x4000)) + (s4-3 + (when s5-3 + (let ((t9-11 (method-of-type manipy activate))) + (t9-11 (the-as manipy s5-3) obj (symbol->string (-> manipy symbol)) (the-as pointer #x70004000)) + ) + (let ((s4-4 run-function-in-process) + (s3-1 s5-3) + (s2-1 manipy-init) + (s1-1 (-> obj root trans)) + (s0-1 (-> obj entity)) + (t0-1 (art-group-get-by-name *level* "skel-metalkor-highres-legs" (the-as (pointer uint32) #f))) + (t1-1 #f) + ) + 0 + ((the-as (function object object object object object object none) s4-4) s3-1 s2-1 s1-1 s0-1 t0-1 t1-1) + ) + (-> s5-3 ppointer) + ) + ) + ) + (send-event (ppointer->process s4-3) 'anim-mode 'clone-anim) + (send-event (ppointer->process s4-3) 'prefix "legs-") + ) + (let* ((s5-4 (get-process *default-dead-pool* manipy #x4000)) + (s4-5 + (when s5-4 + (let ((t9-17 (method-of-type manipy activate))) + (t9-17 (the-as manipy s5-4) obj (symbol->string (-> manipy symbol)) (the-as pointer #x70004000)) + ) + (let ((s4-6 run-function-in-process) + (s3-2 s5-4) + (s2-2 manipy-init) + (s1-2 (-> obj root trans)) + (s0-2 (-> obj entity)) + (t0-2 (art-group-get-by-name *level* "skel-metalkor-highres-wings" (the-as (pointer uint32) #f))) + (t1-2 #f) + ) + 0 + ((the-as (function object object object object object object none) s4-6) s3-2 s2-2 s1-2 s0-2 t0-2 t1-2) + ) + (-> s5-4 ppointer) + ) + ) + ) + (send-event (ppointer->process s4-5) 'anim-mode 'clone-anim) + (send-event (ppointer->process s4-5) 'prefix "wings-") + ) + (go (method-of-object obj idle)) + (none) + ) + +(deftype tess-npc (process-taskable) + () + :heap-base #xa0 + :method-count-assert 38 + :size-assert #x120 + :flag-assert #x2600a00120 + ) + +(defmethod inspect tess-npc ((obj tess-npc)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-taskable inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +(defmethod get-art-elem tess-npc ((obj tess-npc)) + "Checks various things such the current actor, task status, etc to determine the right art-group data to use + @returns the appropriate [[art-element]] for the given NPC" + (case (-> obj task actor) + (((game-task-actor tess-alley)) + (if (task-node-closed? (game-task-node ruins-tower-resolution)) + (-> obj draw art-group data 3) + (-> obj draw art-group data 4) + ) + ) + (((game-task-actor tess-hiphog)) + (cond + ((or (task-node-open? (game-task-node city-krew-collection-introduction)) + (task-node-open? (game-task-node city-krew-collection-collection)) + (task-node-open? (game-task-node forest-hunt-introduction)) + (task-node-open? (game-task-node forest-hunt-resolution)) + (task-node-open? (game-task-node city-errol-challenge-introduction)) + (task-node-open? (game-task-node city-errol-challenge-race)) + ) + (-> obj draw art-group data 6) + ) + ((and (task-node-closed? (game-task-node city-whack-pre-intro)) + (not (task-node-closed? (game-task-node under-mech-resolution))) + ) + (-> obj draw art-group data 5) + ) + (else + (-> obj draw art-group data 3) + ) + ) + ) + (else + (-> obj draw art-group data 3) + ) + ) + ) + +(defmethod init-skeleton! tess-npc ((obj tess-npc)) + "@see [[initialize-skeleton]]" + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-tess-highres" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj draw light-index) (the-as uint 30)) + 0 + (none) + ) + +(deftype keira-npc (process-taskable) + () + :heap-base #xa0 + :method-count-assert 38 + :size-assert #x120 + :flag-assert #x2600a00120 + ) + +(defmethod inspect keira-npc ((obj keira-npc)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-taskable inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +(defmethod get-art-elem keira-npc ((obj keira-npc)) + "Checks various things such the current actor, task status, etc to determine the right art-group data to use + @returns the appropriate [[art-element]] for the given NPC" + (case (-> obj task actor) + (((game-task-actor keira-stadium)) + (-> obj draw art-group data 3) + ) + (else + (-> obj draw art-group data 3) + ) + ) + ) + +(defmethod init-skeleton! keira-npc ((obj keira-npc)) + "@see [[initialize-skeleton]]" + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-keira-highres" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj draw light-index) (the-as uint 30)) + 0 + (none) + ) + +(deftype krew-npc (process-taskable) + () + :heap-base #xa0 + :method-count-assert 38 + :size-assert #x120 + :flag-assert #x2600a00120 + ) + +(defmethod inspect krew-npc ((obj krew-npc)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-taskable inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +(defmethod get-art-elem krew-npc ((obj krew-npc)) + "Checks various things such the current actor, task status, etc to determine the right art-group data to use + @returns the appropriate [[art-element]] for the given NPC" + (-> obj draw art-group data 4) + ) + +(defmethod init-skeleton! krew-npc ((obj krew-npc)) + "@see [[initialize-skeleton]]" + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-krew-highres" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj draw light-index) (the-as uint 10)) + 0 + (none) + ) + +(deftype kid-npc (process-taskable) + () + :heap-base #xa0 + :method-count-assert 38 + :size-assert #x120 + :flag-assert #x2600a00120 + ) + +(defmethod inspect kid-npc ((obj kid-npc)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-taskable inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +(defmethod init-skeleton! kid-npc ((obj kid-npc)) + "@see [[initialize-skeleton]]" + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-kid-highres" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj draw light-index) (the-as uint 30)) + 0 + (none) + ) + +(defmethod get-art-elem kid-npc ((obj kid-npc)) + "Checks various things such the current actor, task status, etc to determine the right art-group data to use + @returns the appropriate [[art-element]] for the given NPC" + (case (-> obj task actor) + (((game-task-actor kid-alley)) + (-> obj draw art-group data 5) + ) + (((game-task-actor kid-tomb) (game-task-actor kid-vinroom)) + (-> obj draw art-group data 4) + ) + (((game-task-actor kid-hideout)) + (-> obj draw art-group data 6) + ) + (else + (-> obj draw art-group data 3) + ) + ) + ) + +(deftype crocadog-npc (process-taskable) + () + :heap-base #xa0 + :method-count-assert 38 + :size-assert #x120 + :flag-assert #x2600a00120 + ) + +(defmethod inspect crocadog-npc ((obj crocadog-npc)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-taskable inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +(defmethod get-art-elem crocadog-npc ((obj crocadog-npc)) + "Checks various things such the current actor, task status, etc to determine the right art-group data to use + @returns the appropriate [[art-element]] for the given NPC" + (case (-> obj task actor) + (((game-task-actor crocadog-vinroom)) + (-> obj draw art-group data 5) + ) + (((game-task-actor crocadog-alley)) + (-> obj draw art-group data 4) + ) + (else + (-> obj draw art-group data 4) + ) + ) + ) + +(defmethod init-skeleton! crocadog-npc ((obj crocadog-npc)) + "@see [[initialize-skeleton]]" + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-crocadog-highres" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj draw light-index) (the-as uint 30)) + 0 + (none) + ) + +(deftype torn-npc (process-taskable) + () + :heap-base #xa0 + :method-count-assert 38 + :size-assert #x120 + :flag-assert #x2600a00120 + ) + +(defmethod inspect torn-npc ((obj torn-npc)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-taskable inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +(defmethod init-skeleton! torn-npc ((obj torn-npc)) + "@see [[initialize-skeleton]]" + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-torn-highres" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj draw light-index) (the-as uint 30)) + 0 + (none) + ) + +(defmethod get-art-elem torn-npc ((obj torn-npc)) + "Checks various things such the current actor, task status, etc to determine the right art-group data to use + @returns the appropriate [[art-element]] for the given NPC" + (cond + ((task-node-open? (game-task-node ruins-tower-introduction)) + (-> obj draw art-group data 5) + ) + ((task-node-open? (game-task-node ruins-tower-resolution)) + (-> obj draw art-group data 5) + ) + (else + (-> obj draw art-group data 4) + ) + ) + ) + +(defmethod get-trans torn-npc ((obj torn-npc) (arg0 int)) + "@returns the `trans` [[vector]] from the process's `root` (typically either a [[trsqv]] or a [[collide-shape]])" + (let ((v1-0 (-> obj root-override))) + (if (= arg0 2) + (vector<-cspace! (new 'static 'vector) (-> obj node-list data 6)) + (-> v1-0 trans) + ) + ) + ) + +(deftype youngsamos-npc (process-taskable) + () + :heap-base #xa0 + :method-count-assert 38 + :size-assert #x120 + :flag-assert #x2600a00120 + ) + +(defmethod inspect youngsamos-npc ((obj youngsamos-npc)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-taskable inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +(defmethod init-skeleton! youngsamos-npc ((obj youngsamos-npc)) + "@see [[initialize-skeleton]]" + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-youngsamos-highres" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (if (zero? (-> obj draw light-index)) + (set! (-> obj draw light-index) (the-as uint 30)) + ) + 0 + (none) + ) + +(defmethod process-taskable-method-32 youngsamos-npc ((obj youngsamos-npc)) + (case (-> obj task actor) + (((game-task-actor youngsamos-forest)) + (when (not (task-node-closed? (game-task-node forest-protect-resolution))) + (let ((a0-3 (-> obj skel root-channel 0))) + (set! (-> a0-3 frame-group) (the-as art-joint-anim (-> obj draw art-group data 4))) + (set! (-> a0-3 frame-num) 0.0) + (joint-control-channel-group! a0-3 (the-as art-joint-anim (-> obj draw art-group data 4)) num-func-identity) + ) + (ja-post) + (let ((s5-0 (new 'stack-no-clear 'task-arrow-params))) + (set! (-> s5-0 pos quad) (-> (vector<-cspace! (new 'stack-no-clear 'vector) (-> obj node-list data 3)) quad)) + (quaternion-copy! + (-> s5-0 quat) + (eul->quat (new 'stack-no-clear 'quaternion) (new 'static 'euler-angles :x -16384.0 :y 16384.0)) + ) + (set! (-> s5-0 flags) (task-arrow-flags)) + (set! (-> s5-0 map-icon) (the-as uint 15)) + (task-arrow-spawn s5-0 (the-as task-arrow obj)) + ) + ) + ) + ) + ((the-as (function process-taskable none) (find-parent-method youngsamos-npc 32)) obj) + (none) + ) + +(defmethod get-art-elem youngsamos-npc ((obj youngsamos-npc)) + "Checks various things such the current actor, task status, etc to determine the right art-group data to use + @returns the appropriate [[art-element]] for the given NPC" + (case (-> obj task actor) + (((game-task-actor youngsamos-forest)) + (-> obj draw art-group data 4) + ) + (((game-task-actor youngsamos-alley)) + (-> obj draw art-group data 7) + ) + (((game-task-actor youngsamos-hideout)) + (if (= (-> obj level name) 'lysamsam) + (-> obj draw art-group data 5) + (-> obj draw art-group data 6) + ) + ) + (((game-task-actor youngsamos-tomb)) + (-> obj draw art-group data 8) + ) + (((game-task-actor youngsamos-onintent)) + (-> obj draw art-group data 9) + ) + (else + (-> obj draw art-group data 3) + ) + ) + ) + +(deftype samos-npc (process-taskable) + () + :heap-base #xa0 + :method-count-assert 38 + :size-assert #x120 + :flag-assert #x2600a00120 + ) + +(defmethod inspect samos-npc ((obj samos-npc)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-taskable inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +(defmethod init-skeleton! samos-npc ((obj samos-npc)) + "@see [[initialize-skeleton]]" + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-samos-highres" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj draw light-index) (the-as uint 30)) + 0 + (none) + ) + +(defmethod get-art-elem samos-npc ((obj samos-npc)) + "Checks various things such the current actor, task status, etc to determine the right art-group data to use + @returns the appropriate [[art-element]] for the given NPC" + (case (-> obj task actor) + (((game-task-actor samos-hideout)) + (-> obj draw art-group data 4) + ) + (((game-task-actor samos-garage)) + (-> obj draw art-group data 5) + ) + (else + (-> obj draw art-group data 3) + ) + ) + ) + +(deftype onin-npc (process-taskable) + () + :heap-base #xa0 + :method-count-assert 38 + :size-assert #x120 + :flag-assert #x2600a00120 + ) + +(defmethod inspect onin-npc ((obj onin-npc)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-taskable inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +(defmethod init-skeleton! onin-npc ((obj onin-npc)) + "@see [[initialize-skeleton]]" + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-onin-highres" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj draw light-index) (the-as uint 10)) + 0 + (none) + ) + +(defmethod get-art-elem onin-npc ((obj onin-npc)) + "Checks various things such the current actor, task status, etc to determine the right art-group data to use + @returns the appropriate [[art-element]] for the given NPC" + (let ((v1-1 (game-task-control-method-9 (-> obj task)))) + (case (-> v1-1 action) + (((game-task-action play)) + (set! (-> obj talk-message) (game-text-id text-x186)) + ) + (else + (set! (-> obj talk-message) (game-text-id text-x181)) + ) + ) + (if (and (= (-> v1-1 action) (game-task-action play)) + (or (and *target* (logtest? (-> *target* focus-status) (focus-status grabbed))) + (let ((v1-10 (-> *game-info* sub-task-list 151))) + (handle->process (if (-> v1-10 info) + (-> v1-10 info manager) + (the-as handle #f) + ) + ) + ) + ) + ) + (-> obj draw art-group data 6) + (-> obj draw art-group data 4) + ) + ) + ) + +(defstate play-game (onin-npc) + :virtual #t + :code (behavior ((arg0 game-task-event)) + (let ((gp-0 (get-process *default-dead-pool* onin-game #x4000))) + (set! (-> self slave) + (ppointer->handle (when gp-0 + (let ((t9-1 (method-of-type process activate))) + (t9-1 gp-0 self (symbol->string (-> onin-game symbol)) (the-as pointer #x70004000)) + ) + (run-now-in-process gp-0 onin-game-init (-> self entity)) + (-> gp-0 ppointer) + ) + ) + ) + ) + (process-taskable-anim-loop (lambda ((arg0 process-taskable)) (handle->process (-> arg0 slave)))) + (go-virtual idle) + (none) + ) + ) + +(deftype pecker-npc (process-taskable) + () + :heap-base #xa0 + :method-count-assert 38 + :size-assert #x120 + :flag-assert #x2600a00120 + ) + +(defmethod inspect pecker-npc ((obj pecker-npc)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-taskable inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +(defmethod init-skeleton! pecker-npc ((obj pecker-npc)) + "@see [[initialize-skeleton]]" + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-pecker-highres" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj draw light-index) (the-as uint 10)) + 0 + (none) + ) + +(defmethod get-art-elem pecker-npc ((obj pecker-npc)) + "Checks various things such the current actor, task status, etc to determine the right art-group data to use + @returns the appropriate [[art-element]] for the given NPC" + (local-vars (s5-0 art-joint-anim) (f30-0 float)) + (cond + ((logtest? (-> (game-task-control-method-9 (-> obj task)) flags) (game-task-flags gatflag-02)) + (-> obj draw art-group data 6) + ) + ((begin + (set! s5-0 (if (> (-> obj skel active-channels) 0) + (-> obj skel root-channel 0 frame-group) + ) + ) + (set! f30-0 (ja-aframe-num 0)) + (and (= s5-0 (-> obj draw art-group data 4)) (>= f30-0 0.0) (>= 118.999 f30-0)) + ) + (-> obj draw art-group data 4) + ) + ((and (= s5-0 (-> obj draw art-group data 4)) + (>= f30-0 119.0) + (>= (the float (+ (-> (the-as art-joint-anim (-> obj draw art-group data 4)) frames num-frames) -1)) + (ja-frame-num 0) + ) + ) + (if (rand-vu-percent? 0.9) + (-> obj draw art-group data 4) + (-> obj draw art-group data 5) + ) + ) + ((and (= s5-0 (-> obj draw art-group data 5)) (>= f30-0 0.0) (>= 258.999 f30-0)) + (-> obj draw art-group data 5) + ) + ((and (= s5-0 (-> obj draw art-group data 5)) + (>= f30-0 259.0) + (>= (the float (+ (-> (the-as art-joint-anim (-> obj draw art-group data 5)) frames num-frames) -1)) + (ja-frame-num 0) + ) + ) + (-> obj draw art-group data 4) + ) + (else + (-> obj draw art-group data 4) + ) + ) + ) + +(deftype brutter-npc (process-taskable) + () + :heap-base #xa0 + :method-count-assert 38 + :size-assert #x120 + :flag-assert #x2600a00120 + ) + +(defmethod inspect brutter-npc ((obj brutter-npc)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-taskable inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +(defmethod init-skeleton! brutter-npc ((obj brutter-npc)) + "@see [[initialize-skeleton]]" + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-brutter-highres" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj draw light-index) (the-as uint 10)) + 0 + (none) + ) + +(deftype ashelin-npc (process-taskable) + () + :heap-base #xa0 + :method-count-assert 38 + :size-assert #x120 + :flag-assert #x2600a00120 + ) + +(defmethod inspect ashelin-npc ((obj ashelin-npc)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-taskable inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +(defmethod init-skeleton! ashelin-npc ((obj ashelin-npc)) + "@see [[initialize-skeleton]]" + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-ashelin-highres" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj draw light-index) (the-as uint 30)) + 0 + (none) + ) + +(defmethod get-art-elem ashelin-npc ((obj ashelin-npc)) + "Checks various things such the current actor, task status, etc to determine the right art-group data to use + @returns the appropriate [[art-element]] for the given NPC" + (case (-> obj task actor) + (((game-task-actor ashelin-throne)) + (logior! (-> obj draw status) (draw-control-status no-draw-bounds)) + (let ((v1-7 (-> obj root-override root-prim))) + (set! (-> v1-7 prim-core collide-as) (collide-spec)) + (set! (-> v1-7 prim-core collide-with) (collide-spec)) + ) + 0 + ) + ) + (-> obj draw art-group data 3) + ) + +(deftype daxter-npc (process-taskable) + () + :heap-base #xa0 + :method-count-assert 38 + :size-assert #x120 + :flag-assert #x2600a00120 + ) + +(defmethod inspect daxter-npc ((obj daxter-npc)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-taskable inspect))) + (t9-0 obj) + ) + (label cfg-4) + obj + ) + +(defmethod init-skeleton! daxter-npc ((obj daxter-npc)) + "@see [[initialize-skeleton]]" + (initialize-skeleton + obj + (the-as skeleton-group (art-group-get-by-name *level* "skel-sidekick-highres" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (set! (-> obj draw light-index) (the-as uint 30)) + 0 + (none) + ) + +(defmethod get-art-elem daxter-npc ((obj daxter-npc)) + "Checks various things such the current actor, task status, etc to determine the right art-group data to use + @returns the appropriate [[art-element]] for the given NPC" + (-> obj draw art-group data 3) + ) + +(defskelgroup skel-prsn-torture prsn-torture 0 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 20) + :origin-joint-index 3 + ) + +(defskelgroup skel-tomb-boss-bridge-a tomb-boss-bridge 0 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 17) + :origin-joint-index 30 + ) + +(defskelgroup skel-tomb-boss-bridge-b tomb-boss-bridge 6 8 + ((7 (meters 999999))) + :bounds (static-spherem 0 0 0 17) + :origin-joint-index 31 + ) + +(defskelgroup skel-time-map time-map 0 -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 2) + :origin-joint-index 20 + ) + +(defskelgroup skel-precursor-stone precursor-stone 0 -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 2) + :origin-joint-index 3 + ) + +(defskelgroup skel-seal-of-mar seal-of-mar 0 -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 10) + :origin-joint-index 3 + ) + +(defskelgroup skel-talk-box talk-box 0 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 2) + :origin-joint-index 3 + ) + +(defskelgroup skel-rift-ring rift-ring 0 -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 60) + :origin-joint-index 6 + ) + +(defskelgroup skel-mtn-shard mtn-shard 0 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 0.5) + :origin-joint-index 3 + ) + +(defskelgroup skel-mtn-lens mtn-lens 0 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 0.5) + :origin-joint-index 3 + ) + +(defskelgroup skel-mtn-gear-device-gear mtn-gear-device-gear 0 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 0.5) + :origin-joint-index 3 + ) + +(defskelgroup skel-heart-of-mar heart-of-mar 0 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 2) + :origin-joint-index 3 + ) + +(defskelgroup skel-gun-upgrade-a gun-upgrade-a 0 -1 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 1) + :origin-joint-index 3 + ) + +(defun intro-play () + "A dedicated function for playing the intro cutscenes in the correct order + ```opengoal + \"intro-samos-hut\" \"intro-vortex\" \"intro-city-square\" \"intro-prison\" + ```" + (set! (-> *setting-control* user-default border-mode) #t) + (set! (-> *level* play?) (-> *setting-control* user-default border-mode)) + (process-spawn + scene-player + :init scene-player-init + '("intro-samos-hut" "intro-vortex" "intro-city-square" "intro-prison") + #t + "village1-start" + ) + 0 + (none) + ) + +(defun outro-play () + "A dedicated function for playing the intro cutscenes in the correct order + ```opengoal + \"outro-nest\" \"outro-palace\" \"outro-hiphog\" \"outro-port\" + ```" + (set! (-> *setting-control* user-default border-mode) #t) + (set! (-> *level* play?) (-> *setting-control* user-default border-mode)) + (process-spawn + scene-player + :init scene-player-init + '("outro-nest" "outro-palace" "outro-hiphog" "outro-port") + #t + "nestb-outro" + ) + 0 + (none) + ) diff --git a/test/decompiler/reference/jak2/levels/common/scene-looper_REF.gc b/test/decompiler/reference/jak2/levels/common/scene-looper_REF.gc new file mode 100644 index 0000000000..690ebee337 --- /dev/null +++ b/test/decompiler/reference/jak2/levels/common/scene-looper_REF.gc @@ -0,0 +1,1073 @@ +(in-package goal) + +(declare-file (debug)) +(when *debug-segment* +(deftype scene-looper (process) + ((scene-name symbol :offset-assert 128) + ) + :heap-base #x10 + :method-count-assert 15 + :size-assert #x84 + :flag-assert #xf00100084 + (:methods + (idle () _type_ :state 14) + ) + ) + +(defmethod inspect scene-looper ((obj scene-looper)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process inspect))) + (t9-0 obj) + ) + (format #t "~2Tscene-name: ~A~%" (-> obj scene-name)) + (label cfg-4) + obj + ) + +(defstate idle (scene-looper) + :virtual #t + :exit (behavior () + (kill-by-type scene-player *active-pool*) + (none) + ) + :code (behavior () + (until #f + (let ((player (ppointer->handle + (process-spawn scene-player :init scene-player-init (symbol->string (-> self scene-name)) #t #f) + ) + ) + ) + (while (handle->process (the-as handle player)) + (suspend) + ) + ) + ) + #f + (none) + ) + ) + +(defbehavior scene-looper-init-by-other scene-looper ((scene-name symbol)) + "Sets the `scene-name` with the given [[symbol]], the [[scene-looper]] will then idle" + (set! (-> self scene-name) scene-name) + (go-virtual idle) + (none) + ) + +(defun stop-loop-scene () + "Kills the current [[scene-looper]] + @see [[kill-by-type]]" + (kill-by-type scene-looper *active-pool*) + ) + +(defun loop-scene ((scene-name symbol)) + "Stops looping the current scene, then spawns a new [[scene-looper]] for the given scene + @see [[stop-loop-scene]" + (stop-loop-scene) + (process-spawn scene-looper scene-name) + ) + +(scene-method-16 (new 'static 'scene + :name "test-scene" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-10" + :art-group "scenecamera" + :anim "test-scene" + :parts -1 + :command-list '((0 (kill "flag-1")) + (0 (kill "ruins-precipice-2")) + (596 (part-tracker + "group-tower-test" + entity + "ruins-tower-rp" + joint + "a_explode" + track + #t + duration + (frame-range (new 'static 'bfloat :data 596.0) (new 'static 'bfloat :data 746.0)) + ) + ) + ) + :cut-list '(126 156 221 266 341 426 476 583 638 675 741 821) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'sagehut + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'sagehut + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "awning" + :level 'ruins + :art-group "skel-awning" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '((min max)) + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "movie-flag" + :level 'ruins + :art-group "skel-movie-flag" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "precipice-a" + :level 'ruins + :art-group "skel-precipice-a" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '((min max)) + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "precipice-b" + :level 'ruins + :art-group "skel-precipice-b" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '((min max)) + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "ruins-tower-a" + :level 'sagehut + :art-group "skel-ruins-tower-a" + :prefix "" + :draw-frames '((440 max)) + :scissor-frames '((min max)) + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "ruins-tower-b" + :level 'sagehut + :art-group "skel-ruins-tower-b" + :prefix "" + :draw-frames '((440 max)) + :scissor-frames '((min max)) + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "ruins-tower-c" + :level 'sagehut + :art-group "skel-ruins-tower-c" + :prefix "" + :draw-frames '((440 max)) + :scissor-frames '((min max)) + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "ruins-tower-d" + :level 'sagehut + :art-group "skel-ruins-tower-d" + :prefix "" + :draw-frames '((440 max)) + :scissor-frames '((min max)) + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "ruins-tower-e" + :level 'sagehut + :art-group "skel-ruins-tower-e" + :prefix "" + :draw-frames '((440 max)) + :scissor-frames '((min max)) + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "ruins-tower-f" + :level 'sagehut + :art-group "skel-ruins-tower-f" + :prefix "" + :draw-frames '((440 max)) + :scissor-frames '((min max)) + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "ruins-tower-rp" + :level 'sagehut + :art-group "skel-ruins-tower-rp" + :prefix "" + :draw-frames '((440 max)) + :scissor-frames '((min max)) + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "torn-highres" + :level 'sagehut + :art-group "skel-torn-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "zipline" + :level 'ruins + :art-group "skel-zipline" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '((min max)) + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "ruins-movie" + :end-point-obj "ruins-movie" + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +(scene-method-16 + (new 'static 'scene + :name "test-crane-victory" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-3" + :art-group "scenecamera" + :anim "test-crane-victory" + :parts 1 + :command-list '((0 (kill "grunt-egg-d-4")) + (0 (kill "grunt-egg-d-5")) + (0 (kill "crane-1")) + (212 (setting-set task-mask mode 'abs mask 65536)) + (240 (part-tracker + "group-strip-drop-splash" + entity + "dark-eco-pool-3" + duration + (frame-range (new 'static 'bfloat :data 240.0) (new 'static 'bfloat :data 298.0)) + ) + ) + (10000 (task-close! "strip-drop-resolution")) + ) + :cut-list '(60 136 185 216 291 346 379) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'vinroom + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :light-index #x1e + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'vinroom + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :light-index #x1e + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "board" + :level #f + :art-group "skel-board" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '((min max)) + :light-index #x1e + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "cable" + :level 'strip + :art-group "skel-cable" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '((min max)) + :light-index #x1e + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "cranecrate" + :level 'strip + :art-group "skel-cranecrate" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '((min max)) + :light-index #x1e + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "crane" + :level 'strip + :art-group "skel-crane" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '((min max)) + :light-index #x1e + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "strip-start" + :end-point-obj (new 'static 'continue-point + :name "strip" + :level #f + :trans (new 'static 'vector :x 10374168.0 :y 16420.045 :z -300916.75 :w 1.0) + :quat (new 'static 'vector :y 0.0218 :w -0.9997) + :camera-trans (new 'static 'vector :x 10385991.0 :y 37471.027 :z -350573.78 :w 1.0) + :camera-rot (new 'static 'inline-array vector3s 3 + (new 'static 'vector3s :data (new 'static 'array float 3 0.9726 0.0 0.2322)) + (new 'static 'vector3s :data (new 'static 'array float 3 -0.0281 0.9926 0.1179)) + (new 'static 'vector3s :data (new 'static 'array float 3 -0.2305 -0.1212 0.9654)) + ) + :on-goto #f + :vis-nick 'strip + :want (new 'static 'inline-array level-buffer-state 6 + (new 'static 'level-buffer-state :name 'strip :display? 'display :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name 'vinroom :display? 'special :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + ) + :want-sound (new 'static 'array symbol 3 'strip1 'strip2 'strip3) + ) + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +(scene-method-16 (new 'static 'scene + :name "test-mountain-finditems-intro" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-32" + :art-group "scenecamera" + :anim "test-mountain-finditems-intro" + :parts 1 + :command-list '((0 (kill "jak-highres-7")) + (0 (kill "daxter-highres-8")) + (673 (part-tracker + "group-onin-clap-effect" + entity + "onin-highres" + joint + "LmiddleC" + track + #t + duration + (frame-range 673 700) + ) + ) + (714 (part-tracker + "group-onin-finger-effect" + entity + "onin-highres" + joint + "LthumbC" + track + #t + duration + (frame-range 714 728) + ) + ) + (714 (part-tracker + "group-onin-finger-effect" + entity + "onin-highres" + joint + "LindexC" + track + #t + duration + (frame-range 714 730) + ) + ) + (714 (part-tracker + "group-onin-finger-effect" + entity + "onin-highres" + joint + "LmiddleC" + track + #t + duration + (frame-range 714 725) + ) + ) + (714 (part-tracker + "group-onin-finger-effect" + entity + "onin-highres" + joint + "LringC" + track + #t + duration + (frame-range 714 720) + ) + ) + (714 (part-tracker + "group-onin-finger-effect" + entity + "onin-highres" + joint + "LpinkyC" + track + #t + duration + (frame-range 714 715) + ) + ) + (714 (part-tracker + "group-onin-finger-effect" + entity + "onin-highres" + joint + "RthumbC" + track + #t + duration + (frame-range 714 727) + ) + ) + (714 (part-tracker + "group-onin-finger-effect" + entity + "onin-highres" + joint + "RindexC" + track + #t + duration + (frame-range 714 730) + ) + ) + (714 (part-tracker + "group-onin-finger-effect" + entity + "onin-highres" + joint + "RmiddleC" + track + #t + duration + (frame-range 714 725) + ) + ) + (714 (part-tracker + "group-onin-finger-effect" + entity + "onin-highres" + joint + "RringC" + track + #t + duration + (frame-range 714 720) + ) + ) + (714 (part-tracker + "group-onin-finger-effect" + entity + "onin-highres" + joint + "RpinkyC" + track + #t + duration + (frame-range 714 715) + ) + ) + ) + :cut-list '() + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'onintent + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'onintent + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "onin-highres" + :level 'onintent + :art-group "skel-onin-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "particleman" + :level 'onintent + :art-group "skel-particleman" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "pecker-highres" + :level 'onintent + :art-group "skel-pecker-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :light-index #xa + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "son-of-particleman" + :level 'onintent + :art-group "skel-son-of-particleman" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "onintent-start" + :end-point-obj #f + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +(scene-method-16 (new 'static 'scene + :name "test-fortress-blow-up-ammo-res-b-a" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-45" + :art-group "scenecamera" + :anim "test-fortress-blow-up-ammo-res-b-a" + :parts 3 + :command-list '((0 + (send-event "fort-missile-2" 'halt) + (send-event "fort-entry-gate-18" 'open (seconds 20) #t) + (kill "fort-robotank-6") + (kill "fort-entry-gate-14") + (send-event "fort-missile-2" 'die) + ) + (267 (part-tracker + "group-fortress-big-explosion" + entity + "particleman" + joint + "particleA" + track + #t + duration + (frame-range 270 370) + ) + ) + ) + :cut-list '(356 381 431 457 511) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'fordumpc + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'fordumpc + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "particleman" + :level 'fordumpc + :art-group "skel-particleman" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "fordumpc-explode-movie" + :end-point-obj "ctysluma-fort-end" + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +(scene-method-16 (new 'static 'scene + :name "test-fortress-blast" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-45" + :art-group "scenecamera" + :anim "test-fortress-blast" + :parts 1 + :command-list '((0 + (send-event "fort-missile-2" 'halt) + (send-event "fort-entry-gate-14" 'open (seconds 20) #t) + (send-event "fort-entry-gate-18" 'open (seconds 20) #t) + (kill "fort-robotank-6") + ) + (365 (part-tracker + "group-fortress-side-explosion" + entity + "particleman" + joint + "particleA" + track + #t + duration + (frame-range 370 479) + ) + ) + ) + :cut-list '(356 381 431 457 511) + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'fordumpc + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'fordumpc + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "particleman" + :level 'fordumpc + :art-group "skel-particleman" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "fordumpc-explode-movie" + :end-point-obj "ctysluma-fort-end" + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +(scene-method-16 (new 'static 'scene + :name "cover-test-1" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "ashelin-highres-4" + :art-group "scenecamera" + :anim "cover-test-1" + :parts 2 + :command-list '((0 (kill "ashelin-highres-4"))) + :cut-list '() + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'chartest + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'chartest + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "gun" + :level #f + :art-group "skel-gun" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "board" + :level #f + :art-group "skel-board" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "chartest-1" + :end-point-obj #f + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +(scene-method-16 (new 'static 'scene + :name "cover-test-2" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "ashelin-highres-4" + :art-group "scenecamera" + :anim "cover-test-2" + :parts 2 + :command-list '((0 (kill "ashelin-highres-4"))) + :cut-list '() + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'chartest + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "jak-highres" + :level 'chartest + :art-group "skel-jak-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :flags #x1 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "chartest-1" + :end-point-obj #f + :borrow '() + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +(scene-method-16 (new 'static 'scene + :name "test-daxter-blend" + :extra #f + :info #f + :mask-to-clear #x1282000 + :entity "scene-stage-24" + :art-group "scenecamera" + :anim "test-daxter-blend" + :parts 4 + :command-list '((0 (kill "krew-highres-1"))) + :cut-list '() + :wait-ground-time (seconds 1) + :draw-target #f + :abort #t + :actor (new 'static 'boxed-array :type scene-actor + (new 'static 'scene-actor + :name "scenecamera" + :level #f + :art-group "skel-scenecamera" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :camera 4 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "sidekick-highres" + :level 'hiphog + :art-group "skel-sidekick-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :light-index #xa + :flags #x3 + :shadow-flags -1 + :shadow-volume-joint #f + ) + (new 'static 'scene-actor + :name "tess-highres" + :level 'ltess + :art-group "skel-tess-highres" + :prefix "" + :draw-frames '((min max)) + :scissor-frames '() + :light-index #xa + :flags #x3 + :shadow-flags -1 + :shadow-volume-joint #f + ) + ) + :load-point-obj "hiphog-start" + :end-point-obj "hiphog-movie" + :borrow '((hiphog 0 ltess special)) + :sfx-volume -1.0 + :ambient-volume -1.0 + :music-volume -1.0 + :blackout-end #t + :peaceful #t + :music-delay 1500.0 + :save #t + ) + ) + +) diff --git a/test/offline/config/jak2/config.jsonc b/test/offline/config/jak2/config.jsonc index 976654a183..5e8460cb89 100644 --- a/test/offline/config/jak2/config.jsonc +++ b/test/offline/config/jak2/config.jsonc @@ -163,6 +163,9 @@ "(method 21 load-state)", + // debug-part + "sparticle-track-root-money", // references a non-existance jak1 symbol "hud-money" + "(method 16 level)", "unpack-comp-lzo", // asm mods "update-time-of-day", "close-sky-buffer", // asm