From 61abe9807503cab9d61652900cc9dba9f0a57efa Mon Sep 17 00:00:00 2001 From: water111 Date: Thu, 30 Dec 2021 21:35:32 -0500 Subject: [PATCH] fake target --- decompiler/config/all-types.gc | 6 +- game/fake_iso.txt | 5 + .../opengl_renderer/OpenGLRenderer.cpp | 2 +- game/overlord/srpc.cpp | 6 + goal_src/engine/collide/collide-shape-h.gc | 6 +- goal_src/engine/collide/collide-shape.gc | 55 +- goal_src/engine/collide/collide-target-h.gc | 6 + goal_src/engine/draw/drawable.gc | 13 + goal_src/engine/game/collectables.gc | 16 +- goal_src/engine/game/generic-obs.gc | 10 +- goal_src/engine/game/main-h.gc | 2 + goal_src/engine/game/main.gc | 2 +- goal_src/engine/game/projectiles.gc | 4 +- goal_src/engine/load/load-dgo.gc | 1 + goal_src/engine/target/logic-target.gc | 70 +- goal_src/engine/target/sidekick.gc | 24 +- goal_src/engine/target/target-death.gc | 9 +- goal_src/engine/target/target-h.gc | 20 + goal_src/engine/target/target-handler.gc | 1140 +++++++++++++++++ goal_src/engine/target/target-util.gc | 2 + goal_src/engine/target/target2.gc | 10 +- goal_src/game.gp | 11 +- goal_src/kernel/gkernel-h.gc | 29 +- goal_src/kernel/gkernel.gc | 1 + goal_src/levels/beach/beach-obs.gc | 6 +- goal_src/levels/beach/pelican.gc | 6 +- goal_src/levels/beach/seagull.gc | 4 +- goal_src/levels/citadel/citb-plat.gc | 2 +- goal_src/levels/common/baseplat.gc | 4 +- goal_src/levels/common/mistycannon.gc | 2 +- goal_src/levels/common/plat-button.gc | 6 +- goal_src/levels/finalboss/final-door.gc | 2 +- goal_src/levels/flut_common/target-flut.gc | 8 +- goal_src/levels/jungle/jungle-elevator.gc | 2 +- goal_src/levels/jungle/jungle-obs.gc | 2 +- goal_src/levels/jungle/junglesnake.gc | 4 +- goal_src/levels/jungleb/plat-flip.gc | 2 +- .../racer_common/collide-reaction-racer.gc | 4 +- .../racer-states-FIC-LAV-MIS-OGR-ROL.gc | 6 +- goal_src/levels/snow/snow-obs.gc | 4 +- goal_src/levels/snow/target-snowball.gc | 2 +- goal_src/levels/sunken/helix-water.gc | 6 +- goal_src/levels/sunken/steam-cap.gc | 2 +- goal_src/levels/sunken/sun-exit-chamber.gc | 2 +- goal_src/levels/sunken/sun-iris-door.gc | 8 +- goal_src/levels/sunken/wall-plat.gc | 10 +- goal_src/levels/swamp/billy.gc | 2 +- goal_src/levels/village2/sunken-elevator.gc | 2 +- .../levels/village_common/villagep-obs.gc | 2 +- 49 files changed, 1410 insertions(+), 140 deletions(-) diff --git a/decompiler/config/all-types.gc b/decompiler/config/all-types.gc index 7c6d6b6f11..f425c39439 100644 --- a/decompiler/config/all-types.gc +++ b/decompiler/config/all-types.gc @@ -11235,7 +11235,7 @@ :flag-assert #x1c00000048 (:methods (new (symbol type collide-shape uint int) _type_ 0) - (dummy-9 (_type_ vector) object 9) ;; ret - symbol | float + (move-by-vector! (_type_ vector) none 9) ;; ret - symbol | float (dummy-10 (_type_ uint) collide-shape-prim 10) (debug-draw-world-sphere (_type_) symbol 11) (add-fg-prim-using-box (_type_ process-drawable) none 12) @@ -11320,9 +11320,9 @@ :flag-assert #x38000000b8 (:methods (new (symbol type process-drawable collide-list-enum) _type_) - (TODO-RENAME-28 (_type_ vector) object 28) ;; ret - symbol | float (CSPG::9) + (move-by-vector! (_type_ vector) none 28) (dummy-29 (_type_ int) none 29) - (TODO-RENAME-30 (_type_ vector) object 30) ;; ret - symbol | float (CSPG::9) + (move-to-point! (_type_ vector) none 30) (dummy-31 (_type_) none 31) (dummy-32 (_type_ object uint) none 32) (dummy-33 (_type_ vector uint) none 33) diff --git a/game/fake_iso.txt b/game/fake_iso.txt index ad706bb464..b1cac5043e 100644 --- a/game/fake_iso.txt +++ b/game/fake_iso.txt @@ -74,3 +74,8 @@ FUCV7.STR out/iso/FUCV7.STR FUCV8.STR out/iso/FUCV8.STR FUCFV1.STR out/iso/FUCFV1.STR FUCRV1.STR out/iso/FUCRV1.STR + +EIA1.STR out/iso/EIA1.STR +EIA2.STR out/iso/EIA2.STR +EIA3.STR out/iso/EIA3.STR +EIA4.STR out/iso/EIA4.STR diff --git a/game/graphics/opengl_renderer/OpenGLRenderer.cpp b/game/graphics/opengl_renderer/OpenGLRenderer.cpp index 839acf7c54..0c7707cee6 100644 --- a/game/graphics/opengl_renderer/OpenGLRenderer.cpp +++ b/game/graphics/opengl_renderer/OpenGLRenderer.cpp @@ -100,7 +100,7 @@ void OpenGLRenderer::init_bucket_renderers() { init_bucket_renderer("water-tex-1", BucketId::WATER_TEX_LEVEL1); init_bucket_renderer("pre-sprite-tex", BucketId::PRE_SPRITE_TEX); init_bucket_renderer("sprite", BucketId::SPRITE); - init_bucket_renderer("debug-draw-0", BucketId::DEBUG_DRAW_0, 1024, + init_bucket_renderer("debug-draw-0", BucketId::DEBUG_DRAW_0, 4096, DirectRenderer::Mode::NORMAL); init_bucket_renderer("debug-draw-1", BucketId::DEBUG_DRAW_1, 4096, DirectRenderer::Mode::NORMAL); diff --git a/game/overlord/srpc.cpp b/game/overlord/srpc.cpp index 18e22ccefd..5b3a804625 100644 --- a/game/overlord/srpc.cpp +++ b/game/overlord/srpc.cpp @@ -74,6 +74,12 @@ void* RPC_Loader(unsigned int /*fno*/, void* data, int size) { case SoundCommand::UNLOAD_BANK: printf("ignoring unload bank command!\n"); break; + case SoundCommand::LOAD_MUSIC: + printf("ignoring load music command!\n"); + break; + case SoundCommand::UNLOAD_MUSIC: + printf("ignoring unload music command!\n"); + break; case SoundCommand::GET_IRX_VERSION: { cmd->irx_version.major = IRX_VERSION_MAJOR; cmd->irx_version.minor = IRX_VERSION_MINOR; diff --git a/goal_src/engine/collide/collide-shape-h.gc b/goal_src/engine/collide/collide-shape-h.gc index b72a75abe5..48ce460733 100644 --- a/goal_src/engine/collide/collide-shape-h.gc +++ b/goal_src/engine/collide/collide-shape-h.gc @@ -155,7 +155,7 @@ :flag-assert #x1c00000048 (:methods (new (symbol type collide-shape uint int) _type_ 0) - (dummy-9 (_type_ vector) object 9) ;; ret - symbol | float + (move-by-vector! (_type_ vector) none 9) (dummy-10 (_type_ uint) collide-shape-prim 10) (debug-draw-world-sphere (_type_) symbol 11) (add-fg-prim-using-box (_type_ process-drawable) none 12) @@ -253,9 +253,9 @@ :flag-assert #x38000000b8 (:methods (new (symbol type process-drawable collide-list-enum) _type_) - (TODO-RENAME-28 (_type_ vector) object 28) ;; ret - symbol | float (CSPG::9) + (move-by-vector! (_type_ vector) none 28) (dummy-29 (_type_ int) none 29) - (TODO-RENAME-30 (_type_ vector) object 30) ;; ret - symbol | float (CSPG::9) + (move-to-point! (_type_ vector) none 30) (dummy-31 (_type_) none 31) (dummy-32 (_type_ object uint) none 32) (dummy-33 (_type_ vector uint) none 33) diff --git a/goal_src/engine/collide/collide-shape.gc b/goal_src/engine/collide/collide-shape.gc index cde68b230f..cea1e882b9 100644 --- a/goal_src/engine/collide/collide-shape.gc +++ b/goal_src/engine/collide/collide-shape.gc @@ -403,7 +403,7 @@ (set! (-> sv-72 quad) (-> arg3 quad)) (let ((a1-1 (new 'stack-no-clear 'vector))) (vector-float*! a1-1 (-> arg1 move-vec) (-> arg1 best-u)) - (TODO-RENAME-28 arg0 a1-1) + (move-by-vector! arg0 a1-1) ) (dummy-56 arg0 (-> arg1 best-tri pat)) (vector-! sv-64 (the-as vector (-> arg1 best-from-prim prim-core)) (-> arg1 best-tri intersect)) @@ -414,7 +414,7 @@ (set! (-> sv-68 quad) v1-16) ) (if (= (-> arg1 best-u) 0.0) - (TODO-RENAME-28 arg0 sv-68) + (move-by-vector! arg0 sv-68) ) (set! (-> arg0 surface-normal quad) (-> sv-68 quad)) (set! (-> arg0 poly-normal quad) (-> arg1 best-tri normal quad)) @@ -486,7 +486,7 @@ (let ((s5-0 0)) (let ((a1-1 (new 'stack-no-clear 'vector))) (vector-float*! a1-1 (-> arg1 move-vec) (-> arg1 best-u)) - (TODO-RENAME-28 arg0 a1-1) + (move-by-vector! arg0 a1-1) ) (let ((f0-2 (vector-dot (-> arg0 transv) (-> arg1 best-tri normal))) (v1-6 (new 'stack-no-clear 'vector)) @@ -577,7 +577,7 @@ (set! (-> obj reaction-flag) (the-as uint 0)) ((-> obj no-reaction) obj s5-0 arg0 arg1) (set! (-> obj prev-status) (the-as uint 0)) - (TODO-RENAME-28 obj s2-0) + (move-by-vector! obj s2-0) (set! (-> arg0 quad) (-> arg1 quad)) (return 1.0) ) @@ -588,6 +588,7 @@ (the-as float 1.0) ) + (defmethod dummy-37 collide-shape ((obj collide-shape) (arg0 vector)) (local-vars (at-0 int)) (rlet ((vf0 :class vf) @@ -595,7 +596,7 @@ (vf2 :class vf) ) (init-vf0-vector) - (let ((t9-0 (method-of-object obj TODO-RENAME-28)) + (let ((t9-0 (method-of-object obj move-by-vector!)) (v1-1 (new 'stack-no-clear 'vector)) ) (.lvf vf1 (&-> arg0 quad)) @@ -612,6 +613,7 @@ ) ) + (defmethod dummy-37 collide-shape-moving ((obj collide-shape-moving) (arg0 vector)) (dummy-47 obj) (set! (-> obj trans-old 2 quad) (-> obj trans-old 1 quad)) @@ -753,7 +755,7 @@ ) (defmethod TODO-RENAME-61 collide-shape-moving ((obj collide-shape-moving) (arg0 vector) (arg1 vector) (arg2 vector)) - (TODO-RENAME-30 obj arg0) + (move-to-point! obj arg0) (set! (-> arg1 y) 0.0) (logior! (-> obj status) 7) (set! (-> obj poly-normal quad) (-> arg2 quad)) @@ -785,7 +787,7 @@ (set! (-> obj coverage) 0.0) (set! (-> obj touch-angle) 0.0) (let* ((a0-12 obj) - (t9-1 (method-of-object a0-12 TODO-RENAME-28)) + (t9-1 (method-of-object a0-12 move-by-vector!)) (a1-1 (new 'stack-no-clear 'vector)) ) (.lvf vf1 (&-> arg0 quad)) @@ -804,13 +806,14 @@ ) ) + (defmethod dummy-58 collide-shape-moving ((obj collide-shape-moving) (arg0 vector)) (dummy-57 obj arg0) (let ((a1-1 (new 'stack-no-clear 'touching-shapes-entry))) (set! (-> a1-1 cshape1) (the-as collide-shape 1)) (set! (-> a1-1 cshape2) (the-as collide-shape *touching-list*)) (when (dummy-40 obj a1-1) - (TODO-RENAME-30 obj (the-as vector (-> obj trans-old))) + (move-to-point! obj (the-as vector (-> obj trans-old))) (return #t) ) ) @@ -818,7 +821,7 @@ ) (defmethod dummy-64 collide-shape-moving ((obj collide-shape-moving) (arg0 collide-tri-result) (arg1 vector)) - (TODO-RENAME-30 obj arg1) + (move-to-point! obj arg1) (logior! (-> obj status) 7) (let ((v1-4 (-> arg0 normal))) (set! (-> obj poly-normal quad) (-> v1-4 quad)) @@ -894,7 +897,7 @@ (set! (-> a1-7 cshape2) (the-as collide-shape *touching-list*)) (when (dummy-40 obj a1-7) (if s5-0 - (TODO-RENAME-30 obj (the-as vector (-> obj trans-old))) + (move-to-point! obj (the-as vector (-> obj trans-old))) ) ) ) @@ -1384,27 +1387,31 @@ ) ) -(defmethod TODO-RENAME-28 collide-shape ((obj collide-shape) (arg0 vector)) +(defmethod move-by-vector! collide-shape ((obj collide-shape) (arg0 vector)) + "Add arg0 to our current translation." + ;; move the trsqv (vector+! (-> obj trans) (-> obj trans) arg0) - (dummy-9 (-> obj root-prim) arg0) + ;; and move the primitive + (move-by-vector! (-> obj root-prim) arg0) + (none) ) -(defmethod dummy-9 collide-shape-prim ((obj collide-shape-prim) (arg0 vector)) +(defmethod move-by-vector! collide-shape-prim ((obj collide-shape-prim) (arg0 vector)) + "Add arg0 to our current position" (vector+! (the-as vector (-> obj prim-core)) (the-as vector (-> obj prim-core)) arg0) - (let ((f0-0 (-> obj local-sphere w))) - (set! (-> obj prim-core world-sphere w) f0-0) - (the-as object f0-0) - ) + ;; we just overwrote our radius, restore it. + (set! (-> obj prim-core world-sphere w) (-> obj local-sphere w)) + (none) ) -(defmethod dummy-9 collide-shape-prim-group ((obj collide-shape-prim-group) (arg0 vector)) +(defmethod move-by-vector! collide-shape-prim-group ((obj collide-shape-prim-group) (arg0 vector)) (vector+! (the-as vector (-> obj prim-core)) (the-as vector (-> obj prim-core)) arg0) (set! (-> obj prim-core world-sphere w) (-> obj local-sphere w)) (countdown (s4-0 (-> obj num-prims)) (let ((a0-2 (-> obj prims s4-0))) (cond ((= (-> a0-2 type) collide-shape-prim-group) - (dummy-9 a0-2 arg0) + (move-by-vector! a0-2 arg0) ) (else (vector+! (the-as vector (-> a0-2 prim-core)) (the-as vector (-> a0-2 prim-core)) arg0) @@ -1413,14 +1420,18 @@ ) ) ) - (the-as object #f) + (none) ) -(defmethod TODO-RENAME-30 collide-shape ((obj collide-shape) (arg0 vector)) +(defmethod move-to-point! collide-shape ((obj collide-shape) (arg0 vector)) + "Move our translation to the given point." (let ((v1-0 (new 'stack-no-clear 'vector))) + ;; how far to move (vector-! v1-0 arg0 (-> obj trans)) - (TODO-RENAME-28 obj v1-0) + ;; do the move. + (move-by-vector! obj v1-0) ) + (none) ) (defmethod set-root-prim! collide-shape ((obj collide-shape) (arg0 collide-shape-prim)) diff --git a/goal_src/engine/collide/collide-target-h.gc b/goal_src/engine/collide/collide-target-h.gc index 3fac85f688..945df075b9 100644 --- a/goal_src/engine/collide/collide-target-h.gc +++ b/goal_src/engine/collide/collide-target-h.gc @@ -33,6 +33,8 @@ (deftype control-info (collide-shape-moving) ( (unknown-vector00 vector :inline :offset 448) ;; from - logic-target::build-conversions + ;; some translation of the target. initialized to the checkpoint location on checkpoint spawn. + (unknown-vector01 vector :inline :offset 464) ;; from - logic-target::turn-to-vector (unknown-vector02 vector :inline :offset 480) ;; from - logic-target::do-rotations2 (unknown-quaternion00 quaternion :inline :offset 496) ;; from - target-util::(method 27 control-info) @@ -50,7 +52,11 @@ (unknown-dynamics00 dynamics :offset 656) ;; from - logic-target::bend-gravity (unknown-surface00 surface :offset 660) (unknown-surface01 surface :offset 664) ;; not a symbol - target-util::target-align-vel-z-adjust + ;; probably the "current" surface - a target-owned copy. + (unknown-cpad-info00 cpad-info :offset 668) ;; not a symbol - target-util::move-legs? + ;; probably the controller used to control target. + (unknown-float10 float :offset 672) ;; from - logic-target::turn-to-vector (unknown-float11 float :offset 676) ;; from - logic-target::turn-to-vector (unknown-float12 float :offset 680) ;; from - logic-target::turn-to-vector diff --git a/goal_src/engine/draw/drawable.gc b/goal_src/engine/draw/drawable.gc index 9481a594b2..ab1ee62878 100644 --- a/goal_src/engine/draw/drawable.gc +++ b/goal_src/engine/draw/drawable.gc @@ -828,6 +828,19 @@ (none) ) +;; foreground-engine-execute + +(defun-debug main-debug-hook () + (when (not (or (= *master-mode* 'menu) (= *master-mode* 'progress))) + (execute-connections *debug-engine* #f) + ;; (draw-instance-info *stdcon*) TODO + ) + (none) + ) + + +(define *debug-hook* main-debug-hook) + (defun dma-add-process-drawable ((arg0 process-drawable) (arg1 draw-control) (arg2 symbol) (arg3 dma-buffer)) (local-vars (v1-37 float) (sv-16 process-drawable)) (rlet ((acc :class vf) diff --git a/goal_src/engine/game/collectables.gc b/goal_src/engine/game/collectables.gc index fb2a6be726..cf8da18af3 100644 --- a/goal_src/engine/game/collectables.gc +++ b/goal_src/engine/game/collectables.gc @@ -526,7 +526,7 @@ ((= arg2 'pickup) (when (!= (-> self next-state name) 'pickup) (if (and (> arg1 0) (-> arg3 param 0)) - (TODO-RENAME-30 (-> self root-override) (the-as vector (-> arg3 param 0))) + (move-to-point! (-> self root-override) (the-as vector (-> arg3 param 0))) ) (logclear! (-> self mask) (process-mask actor-pause)) (go-virtual pickup #f (the-as handle #f)) @@ -1538,7 +1538,7 @@ ((= arg2 'pickup) (when (!= (-> self next-state name) 'pickup) (if (and (> arg1 0) (-> arg3 param 0)) - (TODO-RENAME-30 (-> self root-override) (the-as vector (-> arg3 param 0))) + (move-to-point! (-> self root-override) (the-as vector (-> arg3 param 0))) ) (logclear! (-> self mask) (process-mask actor-pause)) (go-virtual pickup #f (process->handle *target*)) @@ -1728,17 +1728,17 @@ ) (cond ((and *debug-segment* (< (-> *fuel-cell-tune-pos* w) 1000000000.0)) - (TODO-RENAME-30 (-> self root-override) *fuel-cell-tune-pos*) + (move-to-point! (-> self root-override) *fuel-cell-tune-pos*) (set-yaw-angle-clear-roll-pitch! (-> self root-override) (-> *fuel-cell-tune-pos* w)) ) ((= (-> self movie-pos-index) -1) ) (gp-1 - (TODO-RENAME-30 (-> self root-override) gp-1) + (move-to-point! (-> self root-override) gp-1) (set-yaw-angle-clear-roll-pitch! (-> self root-override) (-> gp-1 w)) ) (else - (TODO-RENAME-30 (-> self root-override) (-> *target* control trans)) + (move-to-point! (-> self root-override) (-> *target* control trans)) (set-yaw-angle-clear-roll-pitch! (-> self root-override) (y-angle (-> *target* control))) (dummy-60 (-> self root-override) (the-as float 40960.0) (the-as float 40960.0) #f (the-as uint 1)) ) @@ -2186,7 +2186,7 @@ (('pickup) (when (!= (-> self next-state name) 'pickup) (if (and (> arg1 0) (-> arg3 param 0)) - (TODO-RENAME-30 (-> self root-override) (the-as vector (-> arg3 param 0))) + (move-to-point! (-> self root-override) (the-as vector (-> arg3 param 0))) ) (logclear! (-> self mask) (process-mask actor-pause)) (go-virtual pickup #f (the-as handle #f)) @@ -2865,7 +2865,7 @@ ) (when (!= (-> self offset-target y) (-> self offset y)) (vector-seek! (-> self offset) (-> self offset-target) (* 4096.0 (-> *display* seconds-per-frame))) - (TODO-RENAME-30 (-> self root-override) (vector+! + (move-to-point! (-> self root-override) (vector+! (new 'stack-no-clear 'vector) (-> (the-as process-drawable (-> self parent 0)) root trans) (-> self offset) @@ -2911,7 +2911,7 @@ ) (set! (-> self offset quad) (-> self offset-target quad)) (initialize-skeleton self *ecovalve-sg* '()) - (TODO-RENAME-30 (-> self root-override) (vector+! + (move-to-point! (-> self root-override) (vector+! (new 'stack-no-clear 'vector) (-> (the-as process-drawable (-> self parent 0)) root trans) (-> self offset) diff --git a/goal_src/engine/game/generic-obs.gc b/goal_src/engine/game/generic-obs.gc index aaf1c9036a..e9d05e901a 100644 --- a/goal_src/engine/game/generic-obs.gc +++ b/goal_src/engine/game/generic-obs.gc @@ -57,7 +57,7 @@ ) ) (if a0-7 - (TODO-RENAME-30 a0-7 (-> (the-as process-drawable s5-0) root trans)) + (move-to-point! a0-7 (-> (the-as process-drawable s5-0) root trans)) (set! (-> self root trans quad) (-> (the-as process-drawable s5-0) root trans quad)) ) ) @@ -321,7 +321,7 @@ ((= v1-0 'trans) (cond ((type-type? (-> self root type) collide-shape) - (TODO-RENAME-30 (the-as collide-shape (-> self root)) (the-as vector (-> arg3 param 0))) + (move-to-point! (the-as collide-shape (-> self root)) (the-as vector (-> arg3 param 0))) ) (else (set! v0-0 (the-as none (-> self root trans))) @@ -447,7 +447,7 @@ (when v1-20 (let ((gp-1 (-> (the-as process-drawable v1-20) root trans))) (if (type-type? (-> self root type) collide-shape) - (TODO-RENAME-28 + (move-by-vector! (the-as collide-shape (-> self root)) (vector-! (new 'stack-no-clear 'vector) gp-1 (-> self old-grab-pos)) ) @@ -2034,7 +2034,7 @@ (go launcher-deactivated) ) (('trans) - (TODO-RENAME-30 (-> self root-override) (the-as vector (-> arg3 param 0))) + (move-to-point! (-> self root-override) (the-as vector (-> arg3 param 0))) (dummy-47 (-> self root-override)) ) ) @@ -2108,7 +2108,7 @@ (go launcher-deactivated) ) ((= arg2 'trans) - (TODO-RENAME-30 (-> self root-override) (the-as vector (-> arg3 param 0))) + (move-to-point! (-> self root-override) (the-as vector (-> arg3 param 0))) (dummy-47 (-> self root-override)) ) ) diff --git a/goal_src/engine/game/main-h.gc b/goal_src/engine/game/main-h.gc index 21c37ba4d2..6b44370227 100644 --- a/goal_src/engine/game/main-h.gc +++ b/goal_src/engine/game/main-h.gc @@ -6,6 +6,8 @@ ;; dgos: GAME, ENGINE ;; Global engine settings: +(defglobalconstant FAKE_TARGET #t) + (define *stats-poly* #f) (define *stats-memory* #f) (define *stats-memory-short* #f) diff --git a/goal_src/engine/game/main.gc b/goal_src/engine/game/main.gc index 53d4354761..913b4dbcb8 100644 --- a/goal_src/engine/game/main.gc +++ b/goal_src/engine/game/main.gc @@ -559,7 +559,7 @@ ;; DEBUG PROF (add-ee-profile-frame 'draw :r #x80) (add-ee-profile-frame 'draw :r #x40 :b #x40) - ;; debug hook + (*debug-hook*) (main-cheats) (add-ee-profile-frame 'draw :r #x20 :g #x20) (update-camera) diff --git a/goal_src/engine/game/projectiles.gc b/goal_src/engine/game/projectiles.gc index fbbdaf4b28..ea9ad2b745 100644 --- a/goal_src/engine/game/projectiles.gc +++ b/goal_src/engine/game/projectiles.gc @@ -217,7 +217,7 @@ (set! (-> sv-72 vector 0 quad) (-> arg3 quad)) (let ((a1-1 (new 'stack-no-clear 'vector))) (vector-float*! a1-1 (-> arg1 move-vec) (-> arg1 best-u)) - (TODO-RENAME-28 arg0 a1-1) + (move-by-vector! arg0 a1-1) ) (dummy-56 arg0 (-> arg1 best-tri pat)) (case (-> arg1 best-tri pat material) @@ -238,7 +238,7 @@ ) (when (= (-> arg1 best-u) 0.0) (let ((a1-7 (vector-float*! (new 'stack-no-clear 'vector) sv-68 32.0))) - (TODO-RENAME-28 arg0 a1-7) + (move-by-vector! arg0 a1-7) ) ) (set! (-> arg0 surface-normal quad) (-> sv-68 quad)) diff --git a/goal_src/engine/load/load-dgo.gc b/goal_src/engine/load/load-dgo.gc index 8b700e0f11..ab84818fee 100644 --- a/goal_src/engine/load/load-dgo.gc +++ b/goal_src/engine/load/load-dgo.gc @@ -353,6 +353,7 @@ struct DgoHeader { dgo-load-get-next and before dgo-load-continue" (sync *load-dgo-rpc* #t) (let ((cmd (add-element *load-dgo-rpc*))) + (format 0 "calling cancel: ~X~%" cmd) (call *load-dgo-rpc* (the-as uint 2) cmd (the-as uint 32)) ) (none) diff --git a/goal_src/engine/target/logic-target.gc b/goal_src/engine/target/logic-target.gc index c4a4869785..1200d8cc73 100644 --- a/goal_src/engine/target/logic-target.gc +++ b/goal_src/engine/target/logic-target.gc @@ -7,6 +7,8 @@ ;; DECOMP BEGINS +(define-extern hud-init-by-other (function int none :behavior hud)) + (defbehavior build-conversions target ((arg0 vector)) (surface-mult! (-> self control unknown-surface01) (-> self control unknown-surface00) (-> self control surf)) (when (and @@ -1094,7 +1096,7 @@ ) ) ) - (TODO-RENAME-30 (-> self control) gp-1) + (move-to-point! (-> self control) gp-1) ) (send-event *camera* 'reset-follow) (set! (-> self control surf) *standard-ground-surface*) @@ -1284,7 +1286,7 @@ (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword40)) 60) ) (vector-normalize! s4-1 1228.8) - (TODO-RENAME-28 (-> self control) s4-1) + (move-by-vector! (-> self control) s4-1) (vector-float*! (-> self control rider-last-move) s4-1 (-> *display* frames-per-second)) (set! (-> self control rider-time) (the-as uint (-> *display* base-frame-counter))) (if (and @@ -1299,7 +1301,7 @@ (vector-! a1-6 (-> s5-0 center-hold) (-> self control unknown-vector91)) (vector-float*! (-> self control rider-last-move) s4-1 (-> *display* frames-per-second)) (set! (-> self control rider-time) (the-as uint (-> *display* base-frame-counter))) - (TODO-RENAME-30 (-> self control) a1-6) + (move-to-point! (-> self control) a1-6) ) (set! (-> self control unknown-float110) 0.0) (set! (-> self control unknown-vector52 quad) (-> self control trans quad)) @@ -1335,7 +1337,7 @@ (let ((a1-7 (vector-! (new-stack-vector0) (-> gp-0 center-hold) (-> gp-0 center-hold-old)))) (vector-float*! (-> self control rider-last-move) a1-7 (-> *display* frames-per-second)) (set! (-> self control rider-time) (the-as uint (-> *display* base-frame-counter))) - (TODO-RENAME-28 (-> self control) a1-7) + (move-by-vector! (-> self control) a1-7) ) ) (set! (-> self control unknown-float110) 0.0) @@ -1402,11 +1404,11 @@ (let ((s4-2 (vector-! (new-stack-vector0) s5-0 (-> self control unknown-vector90)))) (cond ((and (< 2457.6 (vector-length s4-2)) (not (-> self control unknown-int21))) - (TODO-RENAME-28 (-> self control) (vector-normalize! s4-2 2457.6)) + (move-by-vector! (-> self control) (vector-normalize! s4-2 2457.6)) ) (else (set! (-> self control unknown-int21) (the-as int #t)) - (TODO-RENAME-30 + (move-to-point! (-> self control) (vector-! (new 'stack-no-clear 'vector) s5-0 (-> self control unknown-vector91)) ) @@ -1610,10 +1612,12 @@ ) ) (set! (-> self control reaction) target-collision-reaction) - (dummy-33 (-> self control) (-> self control transv) (-> self control root-prim collide-with)) - (if (logtest? (-> self control root-prim prim-core action) 64) - (dummy-20 *target* *collide-cache*) - ) + (#unless FAKE_TARGET + (dummy-33 (-> self control) (-> self control transv) (-> self control root-prim collide-with)) + (if (logtest? (-> self control root-prim prim-core action) 64) + (dummy-20 *target* *collide-cache*) + ) + ) (if *debug-segment* (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) @@ -1642,7 +1646,9 @@ ) ) (joint-points) - (do-target-shadow) + (#unless FAKE_TARGET + (do-target-shadow) + ) (target-powerup-process) (none) ) @@ -1789,7 +1795,9 @@ (let ((a1-3 (new 'stack-no-clear 'overlaps-others-params))) (set! (-> a1-3 options) (the-as uint 1)) (set! (-> a1-3 tlist) *touching-list*) - (dummy-40 (-> self control) a1-3) + (#unless FAKE_TARGET + (dummy-40 (-> self control) a1-3) + ) ) (post-flag-setup) ) @@ -1811,7 +1819,9 @@ ) ) (joint-points) - (do-target-shadow) + (#unless FAKE_TARGET + (do-target-shadow) + ) (target-powerup-process) (none) ) @@ -1935,16 +1945,24 @@ ) (defbehavior init-target target ((arg0 continue-point)) + (format 0 "init-target: starting up!~%") (set-setting! *setting-control* self 'allow-pause #f 0.0 0) (set-setting! *setting-control* self 'allow-progress #f 0.0 0) (copy-settings-from-target! *setting-control*) (if (not arg0) (set! arg0 (get-or-create-continue! *game-info*)) ) + (format 0 "init-target: picked continue point:~%~I~%" arg0) + (format 0 "init-target: setting continue...~%") (set-continue! *game-info* arg0) - (stack-size-set! (-> self main-thread) 1024) + (#if PC_PORT + (stack-size-set! (-> self main-thread) 3072) + (stack-size-set! (-> self main-thread) 1024) + ) + (logior! (-> self mask) (process-mask target)) (set! (-> self state-hook) (the-as (function none :behavior target) nothing)) + (format 0 "init-target: initializing collision geometry...~%") (let ((s5-0 (new 'process 'control-info self (collide-list-enum player)))) (set! (-> self control) s5-0) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) @@ -1996,17 +2014,21 @@ ) ) ) + ;;(format 0 "target-init: after initializing collision, process is ~%~I~%" self) (target-collide-set! 'normal 0.0) (backup-collide-with-as (-> self control)) (set! (-> self game) *game-info*) - (TODO-RENAME-30 (-> self control) (-> arg0 trans)) + (format 0 "moving target to continue point~%") + (move-to-point! (-> self control) (-> arg0 trans)) (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> arg0 trans quad)) (set! (-> self control unknown-cpad-info00) (-> *cpad-list* cpads 0)) (set! (-> self control unknown-surface01) (new 'process 'surface)) (set! (-> self control unknown-surface01 name) 'current) (set! (-> self control unknown-surface01 active-hook) nothing) (set! (-> self control unknown-surface01 touch-hook) nothing) + (format 0 "about to init skel~%") (initialize-skeleton self *jchar-sg* '()) + (format 0 "done with init-skel~%") (set! (-> self draw origin-joint-index) (the-as uint 33)) (set! (-> self draw shadow-joint-index) (the-as uint 33)) (let ((v1-79 (-> self node-list data))) @@ -2021,23 +2043,31 @@ (set! (-> self control unknown-cspace00 joint) (the-as joint (-> self node-list data 54))) (set! (-> self control unknown-cspace00 joint) (the-as joint (-> self node-list data 54))) (set! (-> self control unknown-cspace10 parent) (-> self node-list data 64)) + (format 0 "about to alloc process stuff...~%") (set! (-> self neck) (new 'process 'joint-mod (joint-mod-handler-mode look-at) self 7)) (set! (-> self fact-info-target) (new 'process 'fact-info-target self (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) ) (set! (-> self sound) (new 'process 'ambient-sound 'none (-> self control trans))) (set! (-> self control unknown-soundid00) (new-sound-id)) + (format 0 "about to set up debug engine...~%") (if *debug-segment* (add-connection *debug-engine* self target-print-stats self *stdcon0* #f) ) - (activate-hud self) + (format 0 "about to activate hud~%") + (when (nonzero? hud-init-by-other) + (activate-hud self) + ) (set! (-> self fp-hud) (the-as handle #f)) (set! (-> self water) (new 'process 'water-control self 9 0.0 8192.0 2048.0)) (set! (-> self water flags) (the-as uint #x4000f0)) + (format 0 "about to reset-target-state~%") (reset-target-state #t) (set! (-> self control unknown-vector52 quad) (-> self control trans quad)) (set! (-> self control unknown-vector52 y) (+ -819200.0 (-> self control unknown-vector52 y))) + (format 0 "about to alloc align-control...~%") (set! (-> self align) (new 'process 'align-control self)) + (format 0 "about to init sidekick...~%") (let ((s5-1 (get-process *16k-dead-pool* sidekick #x4000))) (set! (-> self sidekick) (the-as (pointer sidekick) (when s5-1 @@ -2053,7 +2083,9 @@ (set! (-> self manipy) (the-as (pointer manipy) #f)) (set! (-> self event-hook) target-generic-event-handler) (set! (-> self current-level) #f) + (format 0 "about to level-setup...~%") (level-setup) + (format 0 "about to go target-continue..~%") (go target-continue arg0) (none) ) @@ -2075,12 +2107,12 @@ ;; TODO temp hack (defun start ((arg0 symbol) (arg1 continue-point)) - (set! *target* #f) - (return *target*) - + (format 0 "target: call to start...~%") (set! (-> *level* border?) #f) (set! (-> *setting-control* default border-mode) #f) + (format 0 "target start: killing old target~%") (stop arg0) + (format 0 "target start: starting process for init-target~%") (let* ((s5-0 (get-process *target-dead-pool* target #x4000)) (v1-3 (when s5-0 (let ((t9-2 (method-of-type target activate))) diff --git a/goal_src/engine/target/sidekick.gc b/goal_src/engine/target/sidekick.gc index f6879c6839..0f943ad068 100644 --- a/goal_src/engine/target/sidekick.gc +++ b/goal_src/engine/target/sidekick.gc @@ -278,17 +278,19 @@ ) ) ) - (let ((a0-26 (-> self skel effect))) - (if a0-26 - (TODO-RENAME-9 a0-26) - ) - ) - (if (logtest? (-> self skel status) 72) - (merc-blend-shape self) - ) - (if (logtest? (-> self skel status) 384) - (merc-eye-anim self) - ) + (#unless FAKE_TARGET + (let ((a0-26 (-> self skel effect))) + (if a0-26 + (TODO-RENAME-9 a0-26) + ) + ) + (if (logtest? (-> self skel status) 72) + (merc-blend-shape self) + ) + (if (logtest? (-> self skel status) 384) + (merc-eye-anim self) + ) + ) (none) ) ) diff --git a/goal_src/engine/target/target-death.gc b/goal_src/engine/target/target-death.gc index dcf3d4301c..1e394ced35 100644 --- a/goal_src/engine/target/target-death.gc +++ b/goal_src/engine/target/target-death.gc @@ -64,6 +64,7 @@ ) :code (behavior ((arg0 continue-point)) + (format 0 "in code of target-continue~%") (set! (-> self state-time) (-> *display* base-frame-counter)) (if (-> *art-control* reserve-buffer) (reserve-free *art-control* (-> *art-control* reserve-buffer heap)) @@ -84,7 +85,7 @@ (target-exit) (ja-channel-set! 0) (quaternion-copy! (-> self control unknown-quaternion00) (-> arg0 quat)) - (TODO-RENAME-30 (-> self control) (-> arg0 trans)) + (move-to-point! (-> self control) (-> arg0 trans)) (rot->dir-targ! (-> self control)) (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> self control trans quad)) (cond @@ -168,7 +169,9 @@ (send-event *camera* 'clear-entity) (send-event *camera* 'force-blend 0) (send-event *camera* 'change-state cam-fixed 0) - (send-event *camera* 'change-state cam-string 0) + (#unless FAKE_TARGET + (send-event *camera* 'change-state cam-string 0) + ) ) (else (send-event *camera* 'change-target self) @@ -1036,7 +1039,7 @@ (suspend) ) ) - (TODO-RENAME-30 (-> self control) s4-1) + (move-to-point! (-> self control) s4-1) ) (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> self control trans quad)) (send-event *camera* 'teleport) diff --git a/goal_src/engine/target/target-h.gc b/goal_src/engine/target/target-h.gc index 3fe95866aa..49f97a872d 100644 --- a/goal_src/engine/target/target-h.gc +++ b/goal_src/engine/target/target-h.gc @@ -35,7 +35,27 @@ (define-extern racer-collision-reaction (function control-info collide-shape-intersect vector vector none)) ;; TODO -for target2 (define-extern target-falling-anim-trans (function none :behavior target)) ;; unconfirmed +(define-extern target-jump (state float float surface target)) ;; unknown type +(define-extern target-powerup-effect (function symbol none :behavior target)) +(define-extern target-hit (state symbol attack-info target)) ;; unknown type +(define-extern target-eco-powerup (state object float target)) ;; unknown type +(define-extern target-load-wait (state target)) ;; unknown type +(define-extern target-grab (state target)) ;; unknown type +(define-extern target-look-around (state target)) ;; unknown type +(define-extern target-billy-game (state target)) ;; unknown type +(define-extern target-racing-start (state handle target)) ;; unknown type +(define-extern target-flut-start (state handle target)) ;; unknown type +(define-extern target-snowball-start (state handle target)) ;; unknown type +(define-extern target-tube-start (state handle target)) ;; unknown type +(define-extern target-periscope (state handle target)) ;; unknown type +(define-extern target-fishing (state handle target)) ;; unknown type +(define-extern target-final-door (state basic handle target)) ;; unknown type +(define-extern target-play-anim (state string handle target)) ;; unknown type +(define-extern target-edge-grab (state target)) ;; unknown type +(define-extern target-pole-cycle (state handle target)) ;; unknown type +(define-extern target-swim-stance (state target)) ;; unknown type +(define-extern target-wade-stance (state target)) ;; unknown type (declare-type collide-cache basic) (declare-type snowball-info basic) (declare-type tube-info basic) diff --git a/goal_src/engine/target/target-handler.gc b/goal_src/engine/target/target-handler.gc index 9df85949f3..b0e6e3f352 100644 --- a/goal_src/engine/target/target-handler.gc +++ b/goal_src/engine/target/target-handler.gc @@ -5,3 +5,1143 @@ ;; name in dgo: target-handler ;; dgos: GAME, ENGINE +(define-extern target-tube-start (state handle target)) + +;; definition for function target-generic-event-handler +;; INFO: Return type mismatch none vs object. +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 37] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 39] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 60] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 69] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 73] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 151] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 168] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 185] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 196] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 201] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 222] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 292] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 351] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 366] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 408] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 420] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 427] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 451] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 465] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 472] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 482] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 524] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 552] +;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 563] +;; Used lq/sq +(defbehavior target-generic-event-handler target ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (local-vars (v0-0 object)) + (let ((v1-0 arg2)) + (the-as + object + (cond + ((= v1-0 'get-pickup) + (when (zero? (logand (-> self state-flags) #x8000)) + (let ((s4-0 (-> arg3 param 0)) + (f28-0 (the-as float (-> arg3 param 1))) + ) + (if (!= (pickup-collectable! + (-> self fact-info-target) + (the-as pickup-type s4-0) + (-> (new 'static 'array float 1 0.0) 0) + (the-as handle #f) + ) + (pickup-collectable! (-> self fact-info-target) (the-as pickup-type s4-0) f28-0 (process->handle arg0)) + ) + #t + 'full + ) + ) + ) + ) + ((= v1-0 'reset-pickup) + (reset! (-> self fact-info-target) (the-as symbol (-> arg3 param 0))) + ) + ((= v1-0 'reset-collide) + (cond + ((-> self control unknown-symbol00) + (target-collide-set! (-> self control unknown-symbol00) (-> self control unknown-float90)) + ) + ((-> self control unknown-symbol30) + (target-danger-set! (-> self control unknown-symbol30) #f) + ) + ) + ) + ((= v1-0 'level-deactivate) + #f + ) + ((= v1-0 'level-enter) + (let ((v1-21 (level-get *level* (the-as symbol (-> arg3 param 0))))) + (when v1-21 + (let ((s5-1 (-> v1-21 info))) + (let ((v1-22 (-> s5-1 buzzer))) + (if (zero? v1-22) + (set! (-> self fact-info-target buzzer) 0.0) + (set! (-> self fact-info-target buzzer) (pickup-collectable! + (-> self fact-info-target) + (pickup-type buzzer) + (the float (logior -65536 v1-22)) + (the-as handle #f) + ) + ) + ) + ) + (if (and + (zero? (-> *game-info* enter-level-time (-> s5-1 index))) + (>= (-> *level-task-data-remap* length) (-> s5-1 index)) + ) + (set! (-> *game-info* enter-level-time (-> *level-task-data-remap* (+ (-> s5-1 index) -1))) + (-> *display* base-frame-counter) + ) + ) + ) + (send-event (ppointer->process (-> *hud-parts* buzzers)) 'sync) + (format #t "GAMEPLAY: enter ~A~%" (-> arg3 param 0)) + ) + ) + ) + ((= v1-0 'get-attack-count) + (set! v0-0 (the-as object (+ (-> self control unknown-dword51) (-> arg3 param 0)))) + (set! (-> self control unknown-dword51) (the-as int v0-0)) + v0-0 + ) + ((= v1-0 'continue) + (go target-continue (the-as continue-point (-> arg3 param 0))) + ) + ((= v1-0 'query) + (case (-> arg3 param 0) + (('powerup) + (and (= (-> self fact-info-target eco-type) (-> arg3 param 1)) (< 0.0 (-> self fact-info-target eco-level))) + ) + (('pickup) + (pickup-collectable! + (-> self fact-info-target) + (the-as pickup-type (-> arg3 param 1)) + (-> (new 'static 'array float 1 0.0) 0) + (the-as handle #f) + ) + ) + (('ground-height) + (target-height-above-ground) + ) + ) + ) + ((= v1-0 'trans) + (case (-> arg3 param 0) + (('save) + (set! (-> self alt-cam-pos quad) (-> self control trans quad)) + (set! (-> self state-flags) (logior #x20000 (-> self state-flags))) + (mem-copy! (the-as pointer (-> arg3 param 1)) (the-as pointer (-> self control trans)) 48) + ) + (('restore) + (set! (-> self state-flags) (logand -131073 (-> self state-flags))) + (let ((gp-1 (-> arg3 param 1))) + (move-to-point! (-> self control) (the-as vector (+ gp-1 0))) + (quaternion-copy! (-> self control quat) (the-as quaternion (+ gp-1 16))) + ) + (rot->dir-targ! (-> self control)) + (logior! (-> self control status) 7) + (set! v0-0 (the-as object (-> *display* base-frame-counter))) + (set! (-> self control unknown-dword11) (the-as int v0-0)) + v0-0 + ) + (('reset) + (set! v0-0 (the-as object (logand -131073 (-> self state-flags)))) + (set! (-> self state-flags) (the-as uint v0-0)) + v0-0 + ) + ) + ) + ((= v1-0 'effect) + (target-powerup-effect (the-as symbol (-> arg3 param 0))) + ) + ((= v1-0 'do-effect) + (dummy-10 (-> self skel effect) (the-as symbol (-> arg3 param 0)) (the-as float (-> arg3 param 1)) -1) + (if (-> self sidekick) + (dummy-10 + (-> self sidekick 0 skel effect) + (the-as symbol (-> arg3 param 0)) + (the-as float (-> arg3 param 1)) + -1 + ) + ) + ) + ((= v1-0 'neck) + (set! (-> self neck flex-blend) (the-as float (-> arg3 param 0))) + (cond + ((-> arg3 param 1) + (set! (-> self state-flags) (logior #x40000 (-> self state-flags))) + (set! (-> self alt-neck-pos quad) (-> (the-as vector (-> arg3 param 1)) quad)) + (look-at-enemy! (-> self neck) (-> self alt-neck-pos) 'force arg0) + ) + (else + (set! v0-0 (the-as object (logand -262145 (-> self state-flags)))) + (set! (-> self state-flags) (the-as uint v0-0)) + v0-0 + ) + ) + ) + ((= v1-0 'sidekick) + (cond + ((and (-> arg3 param 0) (not (-> self sidekick))) + (let ((gp-2 (get-process *default-dead-pool* sidekick #x4000))) + (set! v0-0 (when gp-2 + (let ((t9-21 (method-of-type sidekick activate))) + (t9-21 (the-as sidekick gp-2) self 'sidekick (the-as pointer #x70004000)) + ) + (run-now-in-process gp-2 init-sidekick) + (-> gp-2 ppointer) + ) + ) + ) + (set! (-> self sidekick) (the-as (pointer sidekick) v0-0)) + v0-0 + ) + ((and (not (-> arg3 param 0)) (-> self sidekick)) + (deactivate (-> self sidekick 0)) + (set! (-> self sidekick) (the-as (pointer sidekick) #f)) + #f + ) + ) + ) + ((= v1-0 'blend-shape) + (if (-> arg3 param 0) + (logior! (-> self skel status) 8) + (set! (-> self skel status) (logand -9 (-> self skel status))) + ) + (let ((v1-105 (new 'stack-no-clear 'event-message-block))) + (set! (-> v1-105 from) arg0) + (set! (-> v1-105 num-params) arg1) + (set! (-> v1-105 message) arg2) + (set! (-> v1-105 param 0) (-> arg3 param 0)) + (set! (-> v1-105 param 1) (-> arg3 param 1)) + (set! (-> v1-105 param 2) (-> arg3 param 2)) + (set! (-> v1-105 param 3) (-> arg3 param 3)) + (set! (-> v1-105 param 4) (-> arg3 param 4)) + (set! (-> v1-105 param 5) (-> arg3 param 5)) + (set! (-> v1-105 param 6) (-> arg3 param 6)) + (send-event-function (ppointer->process (-> self sidekick)) v1-105) + ) + ) + ((= v1-0 'shadow) + (cond + ((-> arg3 param 0) + (let ((v1-108 (-> self draw shadow-ctrl))) + (set! (-> v1-108 settings flags) (logand -33 (-> v1-108 settings flags))) + ) + 0 + ) + (else + (let ((v1-110 (-> self draw shadow-ctrl))) + (logior! (-> v1-110 settings flags) 32) + ) + 0 + ) + ) + ) + ((= v1-0 'rotate-y-angle) + (quaternion-rotate-y! + (-> self control unknown-quaternion00) + (-> self control unknown-quaternion00) + (the-as float (-> arg3 param 0)) + ) + (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) + (rot->dir-targ! (-> self control)) + ) + ) + ((= v1-0 'touched) + (send-event arg0 'touch (-> arg3 param 0)) + ) + ((= v1-0 'dry) + (let ((f0-9 0.0)) + (set! (-> self water drip-wetness) f0-9) + f0-9 + ) + ) + ((= v1-0 'reset-height) + (set! (-> self control unknown-vector52 quad) (-> self control trans quad)) + #f + ) + ((= v1-0 'draw) + (if (-> arg3 param 0) + (logclear! (-> self draw status) (draw-status drwf05)) + (logior! (-> self draw status) (draw-status drwf05)) + ) + (let ((v1-132 (new 'stack-no-clear 'event-message-block))) + (set! (-> v1-132 from) arg0) + (set! (-> v1-132 num-params) arg1) + (set! (-> v1-132 message) arg2) + (set! (-> v1-132 param 0) (-> arg3 param 0)) + (set! (-> v1-132 param 1) (-> arg3 param 1)) + (set! (-> v1-132 param 2) (-> arg3 param 2)) + (set! (-> v1-132 param 3) (-> arg3 param 3)) + (set! (-> v1-132 param 4) (-> arg3 param 4)) + (set! (-> v1-132 param 5) (-> arg3 param 5)) + (set! (-> v1-132 param 6) (-> arg3 param 6)) + (send-event-function (ppointer->process (-> self manipy)) v1-132) + ) + ) + ((= v1-0 'no-load-wait) + (set! v0-0 (the-as object (+ (-> *display* base-frame-counter) (-> arg3 param 0)))) + (set! (-> self no-load-wait) (the-as uint v0-0)) + v0-0 + ) + ((= v1-0 'no-look-around) + (set! (-> self no-look-around-wait) (the-as uint (+ (-> *display* base-frame-counter) (-> arg3 param 0)))) + (if (= (-> self next-state name) 'target-look-around) + (send-event self 'end-mode) + ) + ) + ((= v1-0 'change-state) + enter-state + (-> arg3 param 1) + (-> arg3 param 2) + (-> arg3 param 3) + (-> arg3 param 4) + (go (the-as (state target) (-> arg3 param 0))) + ) + ) + ) + ) + ) + +;; definition for function target-shoved +(defbehavior target-shoved target ((arg0 meters) (arg1 meters) (arg2 process) (arg3 (state target))) + (let ((s5-0 (new 'static 'attack-info))) + (set! (-> s5-0 attacker) (process->handle arg2)) + (set! (-> s5-0 shove-back) arg0) + (set! (-> s5-0 shove-up) arg1) + (set! (-> s5-0 angle) (if (zero? (logand (logior (-> self control status) (-> self control old-status)) 1)) + 'air + 'shove + ) + ) + (set! (-> s5-0 mask) (the-as uint 2248)) + ) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 30) + enter-state + 'shove + (go arg3) + ) + +;; definition for function get-intersect-point +;; Used lq/sq +(defun get-intersect-point ((arg0 vector) (arg1 touching-prims-entry) (arg2 control-info) (arg3 process)) + (let ((a0-2 (get-touched-tri arg1 (the-as touching-prims-entry arg2) (the-as touching-prims-entry arg3)))) + (if a0-2 + (set! (-> arg0 quad) (-> a0-2 intersect quad)) + (dummy-11 arg1 arg0) + ) + ) + arg0 + ) + +;; definition for function target-attacked +(defbehavior target-attacked target ((arg0 symbol) (arg1 attack-info) (arg2 process) (arg3 process) (arg4 (state handle attack-info target))) + (when (zero? (logand (-> self state-flags) 8)) + (cond + ((or + (logtest? (-> self state-flags) 112) + (and + (logtest? (-> arg1 mask) 32) + (= (-> arg1 mode) 'darkeco) + (and + (and (= (-> self fact-info-target eco-type) 2) (>= (-> self fact-info-target eco-level) 1.0)) + (logtest? #x100002 (-> self state-flags)) + ) + ) + ) + (case arg0 + (('attack-or-shove) + ) + (('attack-invinc) + (set! arg0 'attack) + ) + (else + (return #f) + ) + ) + ) + (else + (case arg0 + (('attack-or-shove 'attack-invinc) + (set! arg0 'attack) + ) + ) + ) + ) + (mem-copy! (the-as pointer (-> self attack-info-rec)) (the-as pointer arg1) 104) + (when arg3 + (let ((a1-2 ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry arg3) + (-> self control) + (the-as uint -1) + ) + ) + ) + (when a1-2 + (get-intersect-point (-> self attack-info-rec intersection) a1-2 (-> self control) arg3) + (logior! (-> self attack-info-rec mask) 4) + ) + ) + ) + (set! (-> self attack-info-rec prev-state) (-> self state)) + (logior! (-> self attack-info-rec mask) 8192) + (when (zero? (logand (-> self attack-info-rec mask) 8)) + (set! (-> self attack-info-rec attacker) (process->handle arg2)) + (logior! (-> self attack-info-rec mask) 8) + ) + (cond + ((and + (logtest? (-> self attack-info-rec mask) 32) + (and + (= (-> self attack-info-rec mode) 'damage) + (not (and (= (-> self game mode) 'play) (>= 1.0 (-> self fact-info-target health)))) + ) + ) + (pickup-collectable! + (-> self fact-info-target) + (pickup-type eco-green) + (- (-> *FACT-bank* health-single-inc)) + (the-as handle #f) + ) + (let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when gp-1 + (let ((t9-5 (method-of-type part-tracker activate))) + (t9-5 (the-as part-tracker gp-1) self 'part-tracker (the-as pointer #x70004000)) + ) + (run-now-in-process + gp-1 + part-tracker-init + (-> *part-group-id-table* 1) + -1 + #f + #f + #f + (if (logtest? (-> self attack-info-rec mask) 4) + (-> self attack-info-rec intersection) + (-> self control root-prim prim-core) + ) + ) + (-> gp-1 ppointer) + ) + ) + (target-timed-invulnerable + (if (logtest? (-> self attack-info-rec mask) 16) + (-> self attack-info-rec invinc-time) + (-> *TARGET-bank* hit-invulnerable-timeout) + ) + self + ) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 0 255 150) + (sound-play-by-name (static-sound-name "oof") (new-sound-id) 1024 0 0 1 #t) + #t + ) + (else + (logior! (-> self state-flags) 8) + (if (and (= (-> self game mode) 'play) (and (>= 1.0 (-> self fact-info-target health)) (= arg0 'attack))) + (logior! (-> self state-flags) #x8000) + ) + (go arg4 (the-as handle arg0) (-> self attack-info-rec)) + ) + ) + ) + ) + +;; definition for function target-send-attack +;; INFO: Return type mismatch object vs symbol. +;; Used lq/sq +(defbehavior target-send-attack target ((arg0 process) (arg1 uint) (arg2 uint) (arg3 int) (arg4 int)) + (local-vars + (sv-96 touching-prims-entry) + (sv-128 touching-prims-entry) + (sv-176 touching-prims-entry) + (sv-224 int) + (sv-240 symbol) + (sv-256 symbol) + (sv-272 symbol) + (sv-288 int) + (sv-304 symbol) + (sv-320 symbol) + (sv-336 symbol) + (sv-352 int) + (sv-368 symbol) + (sv-384 symbol) + (sv-400 symbol) + (sv-416 int) + (sv-432 symbol) + (sv-448 symbol) + (sv-464 symbol) + (sv-480 int) + (sv-496 symbol) + (sv-512 symbol) + (sv-528 symbol) + ) + (let ((v1-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> v1-0 from) self) + (set! (-> v1-0 num-params) 4) + (set! (-> v1-0 message) 'attack) + (set! (-> v1-0 param 0) arg2) + (set! (-> v1-0 param 1) arg1) + (set! (-> v1-0 param 2) (the-as uint arg3)) + (set! (-> v1-0 param 3) (the-as uint arg4)) + (let ((gp-0 (send-event-function arg0 v1-0))) + (when (and gp-0 (!= gp-0 'push)) + (let ((v1-5 (-> self control unknown-symbol30))) + (cond + ((or (= v1-5 'spin) (= v1-5 'spin-air)) + (set! sv-96 + ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry arg2) + (-> self control) + (the-as uint 64) + ) + ) + (cond + (sv-96 + (let ((s4-0 (get-process *default-dead-pool* part-tracker #x4000))) + (when s4-0 + (let ((t9-3 (method-of-type part-tracker activate))) + (t9-3 (the-as part-tracker s4-0) self 'part-tracker (the-as pointer #x70004000)) + ) + (let ((s3-0 run-function-in-process) + (s2-0 s4-0) + (s1-0 part-tracker-init) + (s0-0 (-> *part-group-id-table* 4)) + ) + (set! sv-224 -1) + (set! sv-240 (the-as symbol #f)) + (set! sv-256 (the-as symbol #f)) + (set! sv-272 (the-as symbol #f)) + (let ((t3-0 (get-intersect-point (new 'stack-no-clear 'vector) sv-96 (-> self control) (the-as process arg2)))) + ((the-as (function object object object object object object object object none) s3-0) + s2-0 + s1-0 + s0-0 + sv-224 + sv-240 + sv-256 + sv-272 + t3-0 + ) + ) + ) + (-> s4-0 ppointer) + ) + ) + ) + (else + (dummy-10 (-> self skel effect) 'group-spin-hit (the-as float -1.0) 74) + ) + ) + (dummy-12 + (-> self skel effect) + (-> self control unknown-symbol30) + (the-as basic -1.0) + 74 + #f + (static-sound-name "spin-hit") + ) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 127 60) + ) + ((= v1-5 'punch) + (set! sv-128 + ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry arg2) + (-> self control) + (the-as uint 64) + ) + ) + (cond + (sv-128 + (let ((s4-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when s4-1 + (let ((t9-11 (method-of-type part-tracker activate))) + (t9-11 (the-as part-tracker s4-1) self 'part-tracker (the-as pointer #x70004000)) + ) + (let ((s3-1 run-function-in-process) + (s2-1 s4-1) + (s1-1 part-tracker-init) + (s0-1 (-> *part-group-id-table* 5)) + ) + (set! sv-288 -1) + (set! sv-304 (the-as symbol #f)) + (set! sv-320 (the-as symbol #f)) + (set! sv-336 (the-as symbol #f)) + (let ((t3-1 (get-intersect-point (new 'stack-no-clear 'vector) sv-128 (-> self control) (the-as process arg2)))) + ((the-as (function object object object object object object object object none) s3-1) + s2-1 + s1-1 + s0-1 + sv-288 + sv-304 + sv-320 + sv-336 + t3-1 + ) + ) + ) + (-> s4-1 ppointer) + ) + ) + ) + ((let ((v0-14 + ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry arg2) + (-> self control) + (the-as uint 32) + ) + ) + ) + (set! sv-128 v0-14) + v0-14 + ) + (let ((s4-2 (get-process *default-dead-pool* part-tracker #x4000))) + (when s4-2 + (let ((t9-16 (method-of-type part-tracker activate))) + (t9-16 (the-as part-tracker s4-2) self 'part-tracker (the-as pointer #x70004000)) + ) + (let ((s3-2 run-function-in-process) + (s2-2 s4-2) + (s1-2 part-tracker-init) + (s0-2 (-> *part-group-id-table* 5)) + ) + (set! sv-352 -1) + (set! sv-368 (the-as symbol #f)) + (set! sv-384 (the-as symbol #f)) + (set! sv-400 (the-as symbol #f)) + (let ((t3-2 (get-intersect-point (new 'stack-no-clear 'vector) sv-128 (-> self control) (the-as process arg2)))) + ((the-as (function object object object object object object object object none) s3-2) + s2-2 + s1-2 + s0-2 + sv-352 + sv-368 + sv-384 + sv-400 + t3-2 + ) + ) + ) + (-> s4-2 ppointer) + ) + ) + ) + ) + (dummy-12 + (-> self skel effect) + (-> self control unknown-symbol30) + (the-as basic -1.0) + 23 + #f + (static-sound-name "punch-hit") + ) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 178 30) + ) + ((= v1-5 'flip) + (dummy-12 + (-> self skel effect) + (-> self control unknown-symbol30) + (the-as basic -1.0) + 74 + #f + (static-sound-name "punch-hit") + ) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 127 30) + ) + ((= v1-5 'uppercut) + (set! sv-176 + ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry arg2) + (-> self control) + (the-as uint 64) + ) + ) + (cond + (sv-176 + (let ((s4-3 (get-process *default-dead-pool* part-tracker #x4000))) + (when s4-3 + (let ((t9-25 (method-of-type part-tracker activate))) + (t9-25 (the-as part-tracker s4-3) self 'part-tracker (the-as pointer #x70004000)) + ) + (let ((s3-3 run-function-in-process) + (s2-3 s4-3) + (s1-3 part-tracker-init) + (s0-3 (-> *part-group-id-table* 5)) + ) + (set! sv-416 -1) + (set! sv-432 (the-as symbol #f)) + (set! sv-448 (the-as symbol #f)) + (set! sv-464 (the-as symbol #f)) + (let ((t3-3 (get-intersect-point (new 'stack-no-clear 'vector) sv-176 (-> self control) (the-as process arg2)))) + ((the-as (function object object object object object object object object none) s3-3) + s2-3 + s1-3 + s0-3 + sv-416 + sv-432 + sv-448 + sv-464 + t3-3 + ) + ) + ) + (-> s4-3 ppointer) + ) + ) + ) + ((let ((v0-26 + ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry arg2) + (-> self control) + (the-as uint 32) + ) + ) + ) + (set! sv-176 v0-26) + v0-26 + ) + (let ((s4-4 (get-process *default-dead-pool* part-tracker #x4000))) + (when s4-4 + (let ((t9-30 (method-of-type part-tracker activate))) + (t9-30 (the-as part-tracker s4-4) self 'part-tracker (the-as pointer #x70004000)) + ) + (let ((s3-4 run-function-in-process) + (s2-4 s4-4) + (s1-4 part-tracker-init) + (s0-4 (-> *part-group-id-table* 5)) + ) + (set! sv-480 -1) + (set! sv-496 (the-as symbol #f)) + (set! sv-512 (the-as symbol #f)) + (set! sv-528 (the-as symbol #f)) + (let ((t3-4 (get-intersect-point (new 'stack-no-clear 'vector) sv-176 (-> self control) (the-as process arg2)))) + ((the-as (function object object object object object object object object none) s3-4) + s2-4 + s1-4 + s0-4 + sv-480 + sv-496 + sv-512 + sv-528 + t3-4 + ) + ) + ) + (-> s4-4 ppointer) + ) + ) + ) + ) + (dummy-10 (-> self skel effect) 'group-uppercut-hit (the-as float -1.0) 23) + (dummy-12 + (-> self skel effect) + (-> self control unknown-symbol30) + (the-as basic -1.0) + 23 + #f + (static-sound-name "uppercut-hit") + ) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 178 30) + ) + ((or (= v1-5 'flop) (= v1-5 'flop-down)) + (dummy-10 (-> self skel effect) 'group-flop-hit (the-as float -1.0) 23) + (dummy-10 (-> self skel effect) 'group-flop-hit (the-as float -1.0) 17) + (dummy-12 + (-> self skel effect) + (-> self control unknown-symbol30) + (the-as basic -1.0) + 23 + #f + (static-sound-name "flop-hit") + ) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 178 30) + ) + ((= v1-5 'flut-attack) + (dummy-12 + (-> self skel effect) + (-> self control unknown-symbol30) + (the-as basic -1.0) + 23 + #f + (static-sound-name "punch-hit") + ) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 60) + ) + ) + ) + ) + (the-as symbol gp-0) + ) + ) + ) + +;; definition for function target-apply-tongue +(defbehavior target-apply-tongue target ((arg0 vector)) + (when (zero? (logand (-> self state-flags) 8)) + (logior! (-> self state-flags) #x7000) + (let ((gp-1 (vector-! (new 'stack-no-clear 'vector) arg0 (-> self control trans)))) + (set! (-> self control unknown-float41) (lerp-scale + (-> *TARGET-bank* tongue-pull-speed-min) + (-> *TARGET-bank* tongue-pull-speed-max) + (vector-length gp-1) + (the-as float 20480.0) + (the-as float 61440.0) + ) + ) + (if (zero? (-> self control unknown-int00)) + (vector-reset! (-> self control unknown-vector40)) + ) + (vector-flatten! gp-1 gp-1 (-> self control local-normal)) + (vector-normalize! gp-1 (the-as float 1.0)) + (vector+! (-> self control unknown-vector40) (-> self control unknown-vector40) gp-1) + ) + (set! (-> self control unknown-float50) 1.0) + (+! (-> self control unknown-int00) 1) + #t + ) + ) + +;; definition for function target-standard-event-handler +(defbehavior target-standard-event-handler target ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('attack 'attack-or-shove 'attack-invinc) + (target-attacked + arg2 + (the-as attack-info (-> arg3 param 1)) + arg0 + (the-as process (-> arg3 param 0)) + (the-as (state handle attack-info target) target-hit) + ) + ) + (('shove) + (when (!= (-> self next-state name) 'target-hit) + (mem-copy! (the-as pointer (-> self attack-info-rec)) (the-as pointer (-> arg3 param 1)) 104) + (when (zero? (logand (-> self attack-info-rec mask) 8)) + (set! (-> self attack-info-rec attacker) (process->handle arg0)) + (logior! (-> self attack-info-rec mask) 8) + ) + (go target-hit 'shove (-> self attack-info-rec)) + ) + ) + (('launch) + (mem-copy! (&-> (-> self control) unknown-pointer00) (the-as pointer arg3) 72) + #t + ) + (('powerup) + (if (or + (= (-> self next-state name) 'target-stance) + (= (-> self next-state name) 'target-walk) + (= (-> self next-state name) 'target-stance-look-around) + ) + (go target-eco-powerup (-> arg3 param 0) (the-as float (-> arg3 param 1))) + ) + ) + (('loading) + (if (not + (or + (and (logtest? (-> self control unknown-surface00 flags) 2048) (zero? (logand (-> self control status) 1))) + (or + (logtest? (-> self water flags) 512) + (logtest? (-> self state-flags) #x830e) + (logtest? (-> self control root-prim prim-core action) #x7380) + (>= (the-as int (-> self no-load-wait)) (-> *display* base-frame-counter)) + ) + ) + ) + (go target-load-wait) + ) + ) + (('change-mode) + (case (-> arg3 param 0) + (('grab) + (go target-grab) + ) + (('look-around) + (go target-look-around) + ) + (('billy) + (go target-billy-game) + ) + (('falling) + (go target-falling #f) + ) + (('racing) + (go target-racing-start (process->handle (the-as process (-> arg3 param 1)))) + ) + (('flut) + (go target-flut-start (process->handle (the-as process (-> arg3 param 1)))) + ) + (('snowball) + (go target-snowball-start (process->handle (the-as process (-> arg3 param 1)))) + ) + (('tube) + (if (and (logtest? (-> self control status) 1) (zero? (logand (-> self water flags) 512))) + (go target-tube-start (process->handle (the-as process (-> arg3 param 1)))) + ) + ) + (('periscope) + (if (logtest? (-> self control status) 1) + (go target-periscope (process->handle (the-as process (-> arg3 param 1)))) + ) + ) + (('fishing) + (go target-fishing (process->handle (the-as process (-> arg3 param 1)))) + ) + (('final-door) + (go + target-final-door + (the-as basic (process->handle (the-as process (-> arg3 param 1)))) + (process->handle (the-as process (-> arg3 param 2))) + ) + ) + ) + ) + (('play-anim) + (go target-play-anim (the-as string (-> arg3 param 0)) (the-as handle arg1)) + ) + (('clone-anim) + (go target-clone-anim (process->handle (the-as process (-> arg3 param 0)))) + ) + (('edge-grab) + (go target-edge-grab) + ) + (('pole-grab) + (if (zero? (logand (-> self control root-prim prim-core action) 256)) + (go target-pole-cycle (process->handle (the-as process (-> arg3 param 0)))) + ) + ) + (('swim) + (if (not (or + (= (-> self control unknown-surface00 mode) 'swim) + (= (-> self control unknown-surface00 mode) 'dive) + (= (-> self next-state name) 'target-hit) + (logtest? (-> self state-flags) 8) + ) + ) + (go target-swim-stance) + ) + ) + (('wade) + (if (and + (!= (-> self control unknown-surface00 mode) 'wade) + (or + (= (-> self next-state name) 'target-stance) + (= (-> self next-state name) 'target-walk) + (= (-> self next-state name) 'target-stance-look-around) + ) + ) + (go target-wade-stance) + ) + ) + (('tongue) + (target-apply-tongue (the-as vector (-> arg3 param 0))) + ) + (else + (target-generic-event-handler arg0 arg1 arg2 arg3) + ) + ) + ) + +;; definition for function target-dangerous-event-handler +(defbehavior target-dangerous-event-handler target ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('touched) + (if ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg3 param 0)) + (-> self control) + (the-as uint 224) + ) + (target-send-attack + arg0 + (the-as uint (-> self control unknown-symbol30)) + (-> arg3 param 0) + (-> self control unknown-dword50) + (-> self control unknown-dword51) + ) + (target-standard-event-handler arg0 arg1 arg2 arg3) + ) + ) + (('attack 'attack-or-shove 'attack-invinc) + (target-attacked + arg2 + (the-as attack-info (-> arg3 param 1)) + arg0 + (the-as process (-> arg3 param 0)) + (the-as (state handle attack-info target) target-hit) + ) + ) + (else + (target-standard-event-handler arg0 arg1 arg2 arg3) + ) + ) + ) + +;; definition for function target-bonk-event-handler +;; Used lq/sq +(defbehavior target-bonk-event-handler target ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((s4-0 (new 'stack-no-clear 'vector))) + (cond + ((and + (= arg2 'touched) + ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg3 param 0)) + (-> self control) + (the-as uint 6) + ) + (< (* 16384.0 (-> *display* time-adjust-ratio)) + (vector-dot + (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control transv) (-> self control unknown-vector10)) + ) + ) + (begin + (vector-normalize! + (vector-! + s4-0 + (the-as vector (-> self control unknown-sphere-array00 0 prim-core)) + (-> self control unknown-vector72) + ) + (the-as float 1.0) + ) + (< 0.01 (-> s4-0 y)) + ) + ) + (if (< 0.75 (-> s4-0 y)) + (send-event + arg0 + 'bonk + (-> arg3 param 0) + (fmax + (-> self control ground-impact-vel) + (- (vector-dot (-> self control transv) (-> self control dynam gravity-normal))) + ) + ) + ) + (let ((f0-7 (vector-dot + (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control unknown-vector111) (-> self control trans)) + ) + ) + ) + (when (< (-> *TARGET-bank* fall-far) f0-7) + (when (and + (target-send-attack + arg0 + (the-as uint 'bonk) + (-> arg3 param 0) + (-> self control unknown-dword50) + (-> self control unknown-dword51) + ) + (zero? (logand (-> self state-flags) #x8008)) + ) + (set! (-> self control unknown-vector52 quad) (-> self control trans quad)) + (target-timed-invulnerable 30 self) + (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) + ) + ) + ) + #f + ) + ((= arg2 'jump) + (sound-play-by-name (static-sound-name "jump-long") (new-sound-id) 1024 0 0 1 #t) + (go + target-jump + (the-as float (-> arg3 param 0)) + (the-as float (-> arg3 param 1)) + (the-as surface (-> arg3 param 2)) + ) + ) + ) + ) + ) + +;; definition for function target-jump-event-handler +(defbehavior target-jump-event-handler target ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (if (and (= arg2 'swim) (< 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + (return #f) + ) + (let ((v0-0 (target-bonk-event-handler arg0 arg1 arg2 arg3))) + (cond + (v0-0 + (empty) + v0-0 + ) + (else + (target-standard-event-handler arg0 arg1 arg2 arg3) + ) + ) + ) + ) + +;; definition for function target-walk-event-handler +(defbehavior target-walk-event-handler target ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (let ((v0-0 (target-bonk-event-handler arg0 arg1 arg2 arg3))) + (cond + (v0-0 + (empty) + v0-0 + ) + (else + (target-standard-event-handler arg0 arg1 arg2 arg3) + ) + ) + ) + ) + +;; failed to figure out what this is: +target-post + +;; failed to figure out what this is: +target-standard-event-handler + +;; definition for function target-exit +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defbehavior target-exit target () + (set! (-> self control unknown-surface00) *walk-mods*) + (set! (-> self control unknown-vector13 quad) (the-as uint128 0)) + (set! (-> self control unknown-vector14 quad) (the-as uint128 0)) + (set! (-> self control unknown-vector15 quad) (the-as uint128 0)) + (set! (-> self control unknown-vector11 quad) (the-as uint128 0)) + (set! (-> self control unknown-float41) 0.0) + (set! (-> self control unknown-float81) 0.0) + (set! (-> self state-flags) (logand -1835917 (-> self state-flags))) + (target-danger-set! 'harmless #f) + (logior! (-> self water flags) 16) + (set! (-> self water flags) (logand -65537 (-> self water flags))) + (set! (-> self water drip-mult) 1.0) + (set! (-> self neck flex-blend) 1.0) + (set! (-> self control unknown-float91) 0.0) + (logclear! (-> self draw status) (draw-status drwf01)) + (set! (-> self skel status) (logand -33 (-> self skel status))) + (set! (-> self control status) (logand -16385 (-> self control status))) + 0 + (none) + ) + +;; definition for function target-state-hook-exit +;; INFO: Return type mismatch (function none) vs none. +(defbehavior target-state-hook-exit target () + (set! (-> self state-hook) (the-as (function none :behavior target) nothing)) + (none) + ) + +;; definition for function target-effect-exit +;; INFO: Return type mismatch int vs none. +(defbehavior target-effect-exit target () + (let ((v1-1 (-> self skel effect))) + (set! (-> v1-1 channel-offset) 0) + ) + 0 + (none) + ) + + + + diff --git a/goal_src/engine/target/target-util.gc b/goal_src/engine/target/target-util.gc index dba99801e2..e434e9cbc1 100644 --- a/goal_src/engine/target/target-util.gc +++ b/goal_src/engine/target/target-util.gc @@ -820,6 +820,8 @@ ) (defbehavior can-exit-duck? target () + (#when FAKE_TARGET + (return #t)) (let ((gp-0 (new 'stack-no-clear 'collide-using-spheres-params))) (let ((s5-0 (new 'stack-no-clear 'inline-array 'sphere 2))) (dotimes (s4-0 2) diff --git a/goal_src/engine/target/target2.gc b/goal_src/engine/target/target2.gc index 26b9cd86d4..3ea7a3f386 100644 --- a/goal_src/engine/target/target2.gc +++ b/goal_src/engine/target/target2.gc @@ -2605,7 +2605,7 @@ (the-as vector (-> self align delta)) (-> self control unknown-matrix01) ) - (TODO-RENAME-28 (-> self control) s4-0) + (move-by-vector! (-> self control) s4-0) ) (suspend) (let ((a0-12 (-> self skel root-channel 0))) @@ -2666,7 +2666,7 @@ (the-as vector (-> self align delta)) (-> self control unknown-matrix01) ) - (TODO-RENAME-28 (-> self control) gp-0) + (move-by-vector! (-> self control) gp-0) ) (suspend) (let ((s5-1 (-> self skel root-channel 0))) @@ -5886,7 +5886,7 @@ ((not (-> self control unknown-spoolanim00)) ) ((zero? (logand (-> self draw status) 2)) - (TODO-RENAME-30 (-> self control) (the-as vector a1-2)) + (move-to-point! (-> self control) (the-as vector a1-2)) (matrix->quaternion (-> self control unknown-quaternion00) (-> gp-0 bone transform) @@ -5908,13 +5908,13 @@ (set! (-> a1-6 y) (-> self water height)) (set! (-> a1-6 z) (-> self control trans z)) (set! (-> a1-6 w) 1.0) - (TODO-RENAME-30 (-> self control) a1-6) + (move-to-point! (-> self control) a1-6) ) ) ) (else (format 0 "ERROR: : camera used backup position~%") - (TODO-RENAME-30 (-> self control) (-> self control unknown-vector102)) + (move-to-point! (-> self control) (-> self control unknown-vector102)) (quaternion-copy! (-> self control quat) (the-as quaternion (-> self control unknown-vector103)) diff --git a/goal_src/game.gp b/goal_src/game.gp index 58ce5a721d..e70e6faea6 100644 --- a/goal_src/game.gp +++ b/goal_src/game.gp @@ -196,7 +196,7 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;; (copy-strs - "FUCVICTO" + "FUCVICTO" ;; power cell victor anims "FUCV2" "FUCV3" "FUCV4" @@ -204,6 +204,10 @@ "FUCV6" "FUCV7" "FUCV8" + "EIA1" + "EIA2" + "EIA3" ;; ambient jak anim + "EIA4" ) @@ -296,6 +300,11 @@ "out/iso/FUCV6.STR" "out/iso/FUCV7.STR" "out/iso/FUCV8.STR" + + "out/iso/EIA1.STR" + "out/iso/EIA2.STR" + "out/iso/EIA3.STR" + "out/iso/EIA4.STR" ) diff --git a/goal_src/kernel/gkernel-h.gc b/goal_src/kernel/gkernel-h.gc index 0ffb179a23..4b39f68565 100644 --- a/goal_src/kernel/gkernel-h.gc +++ b/goal_src/kernel/gkernel-h.gc @@ -547,16 +547,33 @@ `(set! ,mask (logand ,mask (lognot (process-mask ,@enum-value)))) ) +(defglobalconstant DEBUG_PRINT_SUSPEND_FAIL #t) + (defmacro suspend () ;; suspend the current process. + `(rlet ((pp :reg r13 :reset-here #t)) - ;; set to the current thread - (set! pp (-> (the process pp) top-thread)) - ;; call the suspend hook (put nothing as the argument) - ((-> (the cpu-thread pp) suspend-hook) (the cpu-thread 0)) - ;; the kernel will set pp (possibly to a new value) on resume. + (#when DEBUG_PRINT_SUSPEND_FAIL + (rlet ((sp :reg rsp :reset-here #t :type int) + (off :reg r15 :type uint)) + (let* ((sp-goal (- sp off)) + (stack-top-goal (-> (the process pp) top-thread stack-top)) + (stack-used (&- stack-top-goal sp-goal)) + (stack-size (-> (the process pp) top-thread stack-size)) + ) + (when (> stack-used stack-size) + (format 0 "ERROR: suspend called without enough stack in proc:~%~A~%Stack: ~D/~D~%" pp stack-used stack-size) + ) + ) + ) + ) + ;; set to the current thread + (set! pp (-> (the process pp) top-thread)) + ;; call the suspend hook (put nothing as the argument) + ((-> (the cpu-thread pp) suspend-hook) (the cpu-thread 0)) + ;; the kernel will set pp (possibly to a new value) on resume. + ) ) - ) (defmacro process-deactivate () ;; deactivate the current process diff --git a/goal_src/kernel/gkernel.gc b/goal_src/kernel/gkernel.gc index 6fca7f5eb7..2bf1be40ec 100644 --- a/goal_src/kernel/gkernel.gc +++ b/goal_src/kernel/gkernel.gc @@ -686,6 +686,7 @@ (let ((proc (-> obj process))) (when (> (process-stack-used proc) (-> obj stack-size)) (break) ;; too much stack has been used and we can't suspend! + ;; if you get here, enable DEBUG_PRINT_SUSPEND_FAIL and try again. ) ;; mark the process as suspended and copy the stack diff --git a/goal_src/levels/beach/beach-obs.gc b/goal_src/levels/beach/beach-obs.gc index 4d0e4fc3f5..64f804f186 100644 --- a/goal_src/levels/beach/beach-obs.gc +++ b/goal_src/levels/beach/beach-obs.gc @@ -333,7 +333,7 @@ (set! s2-0 #t) ) (set! (-> s4-0 y) (* f28-0 arg1)) - (TODO-RENAME-28 (-> arg0 root-override) s4-0) + (move-by-vector! (-> arg0 root-override) s4-0) (+! f30-0 f28-0) ) (set! (-> s3-0 quad) (-> arg0 entity extra trans quad)) @@ -350,7 +350,7 @@ (defun move-grottopole-to-position ((arg0 grottopole)) (let ((a1-0 (new 'stack-no-clear 'vector))) (set-vector! a1-0 0.0 (* (-> arg0 distance) (the float (-> arg0 position))) 0.0 1.0) - (TODO-RENAME-28 (-> arg0 root-override) a1-0) + (move-by-vector! (-> arg0 root-override) a1-0) ) 0 (none) @@ -1287,7 +1287,7 @@ (let ((a1-0 (new 'stack-no-clear 'vector))) (vector-float*! a1-0 (-> self dir) (-> self pos)) (vector+! a1-0 a1-0 (-> self start)) - (TODO-RENAME-30 (-> self root-override) a1-0) + (move-to-point! (-> self root-override) a1-0) ) (TODO-RENAME-12 (-> self wobbler) (-> self root-override quat)) (let ((a2-3 (quaternion-axis-angle! (new 'stack-no-clear 'quaternion) 0.0 1.0 0.0 -18204.445))) diff --git a/goal_src/levels/beach/pelican.gc b/goal_src/levels/beach/pelican.gc index 2d742be632..57df57f4fb 100644 --- a/goal_src/levels/beach/pelican.gc +++ b/goal_src/levels/beach/pelican.gc @@ -119,7 +119,7 @@ ) (eval-path-curve-div! (-> self path) s3-0 f30-0 'interp) (+! (-> s3-0 y) (-> self align align trans y)) - (TODO-RENAME-30 (-> self root-override) s3-0) + (move-to-point! (-> self root-override) s3-0) (TODO-RENAME-12 (-> self path) s3-0 f30-0) ) (if arg4 @@ -613,7 +613,7 @@ ) (TODO-RENAME-12 (-> self path) (-> self path-vector) (-> self path-pos)) (when arg0 - (TODO-RENAME-30 (-> self root-override) (-> self state-vector)) + (move-to-point! (-> self root-override) (-> self state-vector)) (set-heading-vec! (-> self root-override) (-> self path-vector)) (let ((a0-7 (handle->process (-> self fuel-cell)))) (if a0-7 @@ -645,7 +645,7 @@ ) (set! (-> gp-0 quad) (-> self root-override trans quad)) (vector-seek! gp-0 a1-0 (* (-> self state-float 0) (-> *display* seconds-per-frame))) - (TODO-RENAME-30 (-> self root-override) gp-0) + (move-to-point! (-> self root-override) gp-0) ) (dummy-45 (-> self root-override)) (seek-toward-heading-vec! (-> self root-override) (-> self path-vector) 131072.0 300) diff --git a/goal_src/levels/beach/seagull.gc b/goal_src/levels/beach/seagull.gc index 31edc5c981..d3b0f2065c 100644 --- a/goal_src/levels/beach/seagull.gc +++ b/goal_src/levels/beach/seagull.gc @@ -591,7 +591,7 @@ ) (vector-! s5-0 s5-0 (-> obj root-override trans)) (vector-float*! s5-0 s5-0 0.9) - (TODO-RENAME-28 (-> obj root-override) s5-0) + (move-by-vector! (-> obj root-override) s5-0) ) (set! (-> obj teleport) #f) #f @@ -1272,7 +1272,7 @@ (let ((a1-1 (new 'stack-no-clear 'vector))) (vector-float*! a1-1 (-> arg1 move-vec) (-> arg1 best-u)) (set! (-> a1-1 y) (-> arg1 move-vec y)) - (TODO-RENAME-28 arg0 a1-1) + (move-by-vector! arg0 a1-1) ) (let ((f0-3 (vector-dot (-> arg0 transv) (-> arg1 best-tri normal))) (v1-6 (new 'stack-no-clear 'vector)) diff --git a/goal_src/levels/citadel/citb-plat.gc b/goal_src/levels/citadel/citb-plat.gc index 493a35dcd3..d9a16b78f5 100644 --- a/goal_src/levels/citadel/citb-plat.gc +++ b/goal_src/levels/citadel/citb-plat.gc @@ -1244,7 +1244,7 @@ ) ) ) - (TODO-RENAME-28 (-> *target* control) gp-0) + (move-by-vector! (-> *target* control) gp-0) ) (send-event *target* 'reset-height) 0 diff --git a/goal_src/levels/common/baseplat.gc b/goal_src/levels/common/baseplat.gc index b902af4c3b..002d1d2148 100644 --- a/goal_src/levels/common/baseplat.gc +++ b/goal_src/levels/common/baseplat.gc @@ -71,14 +71,14 @@ (let ((gp-0 (new 'stack-no-clear 'vector))) (set! (-> gp-0 quad) (-> self basetrans quad)) (+! (-> gp-0 y) (* 819.2 (update! (-> self smush)))) - (TODO-RENAME-30 (-> self root-override) gp-0) + (move-to-point! (-> self root-override) gp-0) ) (if (not (!= (-> self smush amp) 0.0)) (set! (-> self bouncing) #f) ) ) (else - (TODO-RENAME-30 (-> self root-override) (-> self basetrans)) + (move-to-point! (-> self root-override) (-> self basetrans)) ) ) (none) diff --git a/goal_src/levels/common/mistycannon.gc b/goal_src/levels/common/mistycannon.gc index 49f8b07050..633887f5fc 100644 --- a/goal_src/levels/common/mistycannon.gc +++ b/goal_src/levels/common/mistycannon.gc @@ -1104,7 +1104,7 @@ (let ((s5-0 0)) (let ((a1-1 (new 'stack-no-clear 'vector))) (vector-float*! a1-1 (-> arg1 move-vec) (-> arg1 best-u)) - (TODO-RENAME-28 arg0 a1-1) + (move-by-vector! arg0 a1-1) ) (let ((f0-2 (vector-dot (-> arg0 transv) (-> arg1 best-tri normal))) (v1-6 (new 'stack-no-clear 'vector)) diff --git a/goal_src/levels/common/plat-button.gc b/goal_src/levels/common/plat-button.gc index 70a07177c0..d1795243f4 100644 --- a/goal_src/levels/common/plat-button.gc +++ b/goal_src/levels/common/plat-button.gc @@ -204,7 +204,7 @@ (let ((gp-0 (new 'stack-no-clear 'vector))) (eval-path-curve! (-> self path) gp-0 f0-0 'interp) (vector+! gp-0 gp-0 (-> self trans-off)) - (TODO-RENAME-30 (-> self root-override) gp-0) + (move-to-point! (-> self root-override) gp-0) ) ) (ja-post) @@ -341,7 +341,7 @@ (let ((gp-0 (new 'stack-no-clear 'vector))) (eval-path-curve! (-> self path) gp-0 f0-4 'interp) (vector+! gp-0 gp-0 (-> self trans-off)) - (TODO-RENAME-30 (-> self root-override) gp-0) + (move-to-point! (-> self root-override) gp-0) ) ) (sound-play-by-name @@ -453,7 +453,7 @@ (let ((gp-0 (new 'stack-no-clear 'vector))) (eval-path-curve! (-> self path) gp-0 f0-4 'interp) (vector+! gp-0 gp-0 (-> self trans-off)) - (TODO-RENAME-30 (-> self root-override) gp-0) + (move-to-point! (-> self root-override) gp-0) ) ) (sound-play-by-name diff --git a/goal_src/levels/finalboss/final-door.gc b/goal_src/levels/finalboss/final-door.gc index f9aeac1f7c..075af91b8e 100644 --- a/goal_src/levels/finalboss/final-door.gc +++ b/goal_src/levels/finalboss/final-door.gc @@ -545,7 +545,7 @@ (let ((a0-2 (get-task-control (game-task finalboss-movies)))) (save-reminder a0-2 (logior (get-reminder a0-2 0) 2) 0) ) - (TODO-RENAME-30 + (move-to-point! (-> self control) (new 'static 'vector :x 11368946.0 :y 2215900.2 :z -19405602.0 :w 1.0) ) diff --git a/goal_src/levels/flut_common/target-flut.gc b/goal_src/levels/flut_common/target-flut.gc index 3ee1b01f2f..f280a3e5d5 100644 --- a/goal_src/levels/flut_common/target-flut.gc +++ b/goal_src/levels/flut_common/target-flut.gc @@ -2244,7 +2244,7 @@ (suspend) ) ) - (TODO-RENAME-30 (-> self control) s4-1) + (move-to-point! (-> self control) s4-1) ) (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> self control trans quad)) (send-event *camera* 'teleport) @@ -2557,7 +2557,7 @@ ) ) ) - (TODO-RENAME-30 (-> self control) gp-0) + (move-to-point! (-> self control) gp-0) (quaternion-slerp! (-> self control unknown-quaternion00) (-> self control unknown-quaternion02) @@ -2658,7 +2658,7 @@ (ja-post) (vector<-cspace! gp-0 (-> self node-list data 3)) (set! (-> gp-0 y) (+ -5896.192 (-> gp-0 y))) - (TODO-RENAME-30 (-> self control) gp-0) + (move-to-point! (-> self control) gp-0) ) (send-event *camera* 'ease-in) (ja-channel-set! 0) @@ -2684,7 +2684,7 @@ ) ) ) - (TODO-RENAME-30 (-> self control) gp-0) + (move-to-point! (-> self control) gp-0) (quaternion-slerp! (-> self control unknown-quaternion00) (-> self control unknown-quaternion02) diff --git a/goal_src/levels/jungle/jungle-elevator.gc b/goal_src/levels/jungle/jungle-elevator.gc index f4b996fefa..cede78e3ff 100644 --- a/goal_src/levels/jungle/jungle-elevator.gc +++ b/goal_src/levels/jungle/jungle-elevator.gc @@ -73,7 +73,7 @@ ) (vector-! gp-0 (-> self root-override trans) s5-0) (when (< (-> self path-pos) 0.9) - (TODO-RENAME-28 (-> *target* control) gp-0) + (move-by-vector! (-> *target* control) gp-0) (send-event *target* 'reset-height) ) ) diff --git a/goal_src/levels/jungle/jungle-obs.gc b/goal_src/levels/jungle/jungle-obs.gc index c64ad673ca..0cc600e398 100644 --- a/goal_src/levels/jungle/jungle-obs.gc +++ b/goal_src/levels/jungle/jungle-obs.gc @@ -507,7 +507,7 @@ (let ((gp-0 (new-stack-vector0))) (set! (-> gp-0 quad) (-> self base quad)) (+! (-> gp-0 y) (* (get-current-value-with-mirror (-> self sync) (-> self height y)) (-> self speed))) - (TODO-RENAME-30 (-> self root-override) gp-0) + (move-to-point! (-> self root-override) gp-0) ) (suspend) (let ((a0-3 (-> self skel root-channel 0))) diff --git a/goal_src/levels/jungle/junglesnake.gc b/goal_src/levels/jungle/junglesnake.gc index fd5fc0a2b2..489388cd2a 100644 --- a/goal_src/levels/jungle/junglesnake.gc +++ b/goal_src/levels/jungle/junglesnake.gc @@ -648,7 +648,7 @@ junglesnake-default-event-handler ) (set-vector! (-> self root-override scale) 1.0 (- 1.0 f0-7) 1.0 1.0) (vector-lerp! s4-0 gp-0 s5-0 f0-7) - (TODO-RENAME-30 (-> self root-override) s4-0) + (move-to-point! (-> self root-override) s4-0) ) (suspend) (let ((a0-10 (-> self skel root-channel 0))) @@ -658,7 +658,7 @@ junglesnake-default-event-handler ) ) ) - (TODO-RENAME-30 (-> self root-override) gp-0) + (move-to-point! (-> self root-override) gp-0) ) (set-vector! (-> self root-override scale) 1.0 1.0 1.0 1.0) (go junglesnake-sleeping) diff --git a/goal_src/levels/jungleb/plat-flip.gc b/goal_src/levels/jungleb/plat-flip.gc index eb484e04a5..bb74ed35b9 100644 --- a/goal_src/levels/jungleb/plat-flip.gc +++ b/goal_src/levels/jungleb/plat-flip.gc @@ -192,7 +192,7 @@ (let ((s5-5 (new 'stack-no-clear 'vector))) (set! (-> s5-5 quad) (-> self base-pos quad)) (+! (-> s5-5 y) (* 1638.4 (update! (-> self smush)))) - (TODO-RENAME-30 (-> self root-override) s5-5) + (move-to-point! (-> self root-override) s5-5) ) (suspend) ) diff --git a/goal_src/levels/racer_common/collide-reaction-racer.gc b/goal_src/levels/racer_common/collide-reaction-racer.gc index 68a44c6d34..ded414c79f 100644 --- a/goal_src/levels/racer_common/collide-reaction-racer.gc +++ b/goal_src/levels/racer_common/collide-reaction-racer.gc @@ -35,7 +35,7 @@ (set! (-> sv-88 1 quad) (-> arg3 quad)) (let ((a1-3 (new 'stack-no-clear 'vector))) (vector-float*! a1-3 (-> arg1 move-vec) (-> arg1 best-u)) - (TODO-RENAME-28 arg0 a1-3) + (move-by-vector! arg0 a1-3) ) (dummy-56 arg0 (-> arg1 best-tri pat)) (if (= (-> arg0 poly-pat mode) (pat-mode wall)) @@ -62,7 +62,7 @@ (set! (-> sv-84 quad) v1-31) ) (if (= (-> arg1 best-u) 0.0) - (TODO-RENAME-28 arg0 (vector-normalize-copy! (new-stack-vector0) sv-84 3.0)) + (move-by-vector! arg0 (vector-normalize-copy! (new-stack-vector0) sv-84 3.0)) ) (set! (-> arg0 poly-normal quad) (-> arg1 best-tri normal quad)) (collide-shape-moving-angle-set! arg0 sv-84 (-> sv-88 0)) diff --git a/goal_src/levels/racer_common/racer-states-FIC-LAV-MIS-OGR-ROL.gc b/goal_src/levels/racer_common/racer-states-FIC-LAV-MIS-OGR-ROL.gc index 8bc7d8977b..a65052d7a8 100644 --- a/goal_src/levels/racer_common/racer-states-FIC-LAV-MIS-OGR-ROL.gc +++ b/goal_src/levels/racer_common/racer-states-FIC-LAV-MIS-OGR-ROL.gc @@ -2498,7 +2498,7 @@ ) ) ) - (TODO-RENAME-30 (-> self control) gp-0) + (move-to-point! (-> self control) gp-0) (quaternion-slerp! (-> self control unknown-quaternion00) (-> self control unknown-quaternion02) @@ -2762,7 +2762,7 @@ (ja-post) (vector<-cspace! gp-1 (-> self node-list data 3)) (set! (-> gp-1 y) (+ -5896.192 (-> gp-1 y))) - (TODO-RENAME-30 (-> self control) gp-1) + (move-to-point! (-> self control) gp-1) ) (send-event *camera* 'ease-in) (ja-channel-set! 0) @@ -2900,7 +2900,7 @@ ) ) ) - (TODO-RENAME-30 (-> self control) gp-0) + (move-to-point! (-> self control) gp-0) (quaternion-slerp! (-> self control unknown-quaternion00) (-> self control unknown-quaternion02) diff --git a/goal_src/levels/snow/snow-obs.gc b/goal_src/levels/snow/snow-obs.gc index 8c22d5c0cd..91dd54bcbf 100644 --- a/goal_src/levels/snow/snow-obs.gc +++ b/goal_src/levels/snow/snow-obs.gc @@ -1247,7 +1247,7 @@ ) ) (vector-seek-3d-smooth! s5-0 (-> self open-trans) (* 16384.0 (-> *display* seconds-per-frame)) 0.9) - (TODO-RENAME-30 (-> self root-override) s5-0) + (move-to-point! (-> self root-override) s5-0) ) (let ((a1-7 (new 'stack-no-clear 'vector))) (set! (-> a1-7 quad) (-> self root-override trans quad)) @@ -1802,7 +1802,7 @@ (set! (-> s5-1 y) (seek-with-smooth (-> self root-override trans y) f0-1 (* 6144.0 (-> *display* seconds-per-frame)) 0.2 204.8) ) - (TODO-RENAME-30 (-> self root-override) s5-1) + (move-to-point! (-> self root-override) s5-1) ) ) ) diff --git a/goal_src/levels/snow/target-snowball.gc b/goal_src/levels/snow/target-snowball.gc index 0479f606e2..47151b3b23 100644 --- a/goal_src/levels/snow/target-snowball.gc +++ b/goal_src/levels/snow/target-snowball.gc @@ -116,7 +116,7 @@ (reset-target-state #t) (set! (-> self control transv quad) (the-as uint128 0)) (set! (-> self control unknown-float01) 0.0) - (TODO-RENAME-28 (-> self control) (new 'static 'vector :y 4096.0 :w 1.0)) + (move-by-vector! (-> self control) (new 'static 'vector :y 4096.0 :w 1.0)) (logior! (-> self control root-prim prim-core action) 4096) (ja-channel-set! 1) (let ((gp-1 (-> self skel root-channel 0))) diff --git a/goal_src/levels/sunken/helix-water.gc b/goal_src/levels/sunken/helix-water.gc index 3b3615f315..7daa5a88bd 100644 --- a/goal_src/levels/sunken/helix-water.gc +++ b/goal_src/levels/sunken/helix-water.gc @@ -361,7 +361,7 @@ (when (< 12288.0 (vector-xz-length gp-1)) (set! (-> gp-1 y) 0.0) (vector-normalize! gp-1 4096.0) - (TODO-RENAME-28 (-> *target* control) gp-1) + (move-by-vector! (-> *target* control) gp-1) (dummy-45 (-> self root-override)) (dummy-35 (-> self root-override)) ) @@ -398,7 +398,7 @@ (set! (-> a1-11 quad) (-> self root-override trans quad)) (set! (-> a1-11 y) f0-3) ) - (TODO-RENAME-30 (-> self root-override) a1-11) + (move-to-point! (-> self root-override) a1-11) ) (suspend) ) @@ -537,7 +537,7 @@ (set! (-> a1-5 quad) (-> self root-override trans quad)) (set! (-> a1-5 y) f0-1) ) - (TODO-RENAME-30 (-> self root-override) a1-5) + (move-to-point! (-> self root-override) a1-5) ) (suspend) ) diff --git a/goal_src/levels/sunken/steam-cap.gc b/goal_src/levels/sunken/steam-cap.gc index d345caa0a1..fe653612d1 100644 --- a/goal_src/levels/sunken/steam-cap.gc +++ b/goal_src/levels/sunken/steam-cap.gc @@ -800,7 +800,7 @@ ) (set! (-> a1-16 quad) (-> obj root-override trans quad)) (set! (-> a1-16 y) f0-32) - (TODO-RENAME-30 (-> obj root-override) a1-16) + (move-to-point! (-> obj root-override) a1-16) ) ) (let ((v1-77 (new 'stack-no-clear 'vector)) diff --git a/goal_src/levels/sunken/sun-exit-chamber.gc b/goal_src/levels/sunken/sun-exit-chamber.gc index da1d453ba8..e1c2f7d4bd 100644 --- a/goal_src/levels/sunken/sun-exit-chamber.gc +++ b/goal_src/levels/sunken/sun-exit-chamber.gc @@ -733,7 +733,7 @@ (let ((a1-6 (new 'stack-no-clear 'vector))) (set! (-> a1-6 quad) (-> s5-1 button-pos quad)) (set! (-> a1-6 y) (+ 2662.4 (-> a1-6 y))) - (TODO-RENAME-30 (-> *target* control) a1-6) + (move-to-point! (-> *target* control) a1-6) ) (vector-reset! (-> *target* control transv)) ) diff --git a/goal_src/levels/sunken/sun-iris-door.gc b/goal_src/levels/sunken/sun-iris-door.gc index a7f4d2f4ac..f78e1d43a1 100644 --- a/goal_src/levels/sunken/sun-iris-door.gc +++ b/goal_src/levels/sunken/sun-iris-door.gc @@ -115,7 +115,7 @@ (behavior () (when (-> self move-to?) (set! (-> self move-to?) #f) - (TODO-RENAME-30 (-> self root-override) (-> self move-to-pos)) + (move-to-point! (-> self root-override) (-> self move-to-pos)) (quaternion-copy! (-> self root-override quat) (-> self move-to-quat)) (ja-post) ) @@ -162,7 +162,7 @@ (cond ((-> self move-to?) (set! (-> self move-to?) #f) - (TODO-RENAME-30 (-> self root-override) (-> self move-to-pos)) + (move-to-point! (-> self root-override) (-> self move-to-pos)) (quaternion-copy! (-> self root-override quat) (-> self move-to-quat)) (ja-post) ) @@ -286,7 +286,7 @@ (behavior () (when (-> self move-to?) (set! (-> self move-to?) #f) - (TODO-RENAME-30 (-> self root-override) (-> self move-to-pos)) + (move-to-point! (-> self root-override) (-> self move-to-pos)) (quaternion-copy! (-> self root-override quat) (-> self move-to-quat)) (ja-post) ) @@ -333,7 +333,7 @@ (cond ((-> self move-to?) (set! (-> self move-to?) #f) - (TODO-RENAME-30 (-> self root-override) (-> self move-to-pos)) + (move-to-point! (-> self root-override) (-> self move-to-pos)) (quaternion-copy! (-> self root-override quat) (-> self move-to-quat)) (ja-post) ) diff --git a/goal_src/levels/sunken/wall-plat.gc b/goal_src/levels/sunken/wall-plat.gc index b13764ad9c..41cb98c09e 100644 --- a/goal_src/levels/sunken/wall-plat.gc +++ b/goal_src/levels/sunken/wall-plat.gc @@ -49,7 +49,7 @@ :code (behavior () (set! (-> self extended-amount) 0.0) - (TODO-RENAME-30 (-> self root-override) (-> self in-trans)) + (move-to-point! (-> self root-override) (-> self in-trans)) (transform-post) (clear-collide-with-as (-> self root-override)) (while #t @@ -106,7 +106,7 @@ (-> self out-trans) (-> self extended-amount) ) - (TODO-RENAME-30 (-> self root-override) gp-0) + (move-to-point! (-> self root-override) gp-0) ) (suspend) (if (= (-> self extended-amount) 1.0) @@ -131,7 +131,7 @@ :code (behavior () (set! (-> self extended-amount) 1.0) - (TODO-RENAME-30 (-> self root-override) (-> self out-trans)) + (move-to-point! (-> self root-override) (-> self out-trans)) (transform-post) (while #t (logior! (-> self mask) (process-mask sleep-code)) @@ -186,7 +186,7 @@ (-> self out-trans) (-> self extended-amount) ) - (TODO-RENAME-30 (-> self root-override) gp-0) + (move-to-point! (-> self root-override) gp-0) ) (suspend) (if (= (-> self extended-amount) 0.0) @@ -229,7 +229,7 @@ (let ((f30-0 (get-current-phase-with-mirror (-> self sync)))) (let ((s5-0 (new 'stack-no-clear 'vector))) (vector-lerp! s5-0 (-> self in-trans) (-> self out-trans) f30-0) - (TODO-RENAME-30 (-> self root-override) s5-0) + (move-to-point! (-> self root-override) s5-0) ) (cond ((= f30-0 0.0) diff --git a/goal_src/levels/swamp/billy.gc b/goal_src/levels/swamp/billy.gc index fa3b113a2e..80d7b7befa 100644 --- a/goal_src/levels/swamp/billy.gc +++ b/goal_src/levels/swamp/billy.gc @@ -1765,7 +1765,7 @@ (let ((v1-8 (entity-actor-lookup (-> self entity) 'alt-actor 0))) (cond (v1-8 - (TODO-RENAME-30 (-> *target* control) (-> v1-8 extra trans)) + (move-to-point! (-> *target* control) (-> v1-8 extra trans)) (go billy-playing) ) (else diff --git a/goal_src/levels/village2/sunken-elevator.gc b/goal_src/levels/village2/sunken-elevator.gc index d69baf7ebf..f9feebeef5 100644 --- a/goal_src/levels/village2/sunken-elevator.gc +++ b/goal_src/levels/village2/sunken-elevator.gc @@ -207,7 +207,7 @@ ) (vector-! gp-0 (-> self root-override trans) s5-0) (when (< (-> self path-pos) 0.9) - (TODO-RENAME-28 (-> *target* control) gp-0) + (move-by-vector! (-> *target* control) gp-0) (send-event *target* 'reset-height) ) ) diff --git a/goal_src/levels/village_common/villagep-obs.gc b/goal_src/levels/village_common/villagep-obs.gc index 57742df897..a2f613fe6a 100644 --- a/goal_src/levels/village_common/villagep-obs.gc +++ b/goal_src/levels/village_common/villagep-obs.gc @@ -41,7 +41,7 @@ (clear-collide-with-as (-> self control)) (ja-channel-set! 0) (vector-reset! (-> self control transv)) - (TODO-RENAME-30 (-> self control) (-> self control unknown-vector102)) + (move-to-point! (-> self control) (-> self control unknown-vector102)) (let ((gp-0 (-> *display* base-frame-counter))) (until (>= (- (-> *display* base-frame-counter) gp-0) 300) (suspend)