mirror of
https://github.com/open-goal/jak-project
synced 2026-07-11 15:28:58 -04:00
67d4eda169
Manual patches: - `drill-turret`: The static data for `*turret-13-path*`, `*turret-14-path*` and `*turret-15-path*` was decompiled by hand and the integers in the `set-speed-mult` events have been replaced with boxed integer arrays that contain only that integer in order to make the compiler happy. To that effect, the event handler in `target-turret` was changed to access that array instead of just accessing the int. - `hover-nav-control`: In `hover-nav-control::10`, `arg2` is usually a `vector`, but there are some places where it is called with `#t` as `arg2` and, subsequently, crashes the game because it tries to access the `quad` of `arg2` if `arg2` is truthy. To mitigate this, the condition `arg2` has been replaced with `(and (!= arg2 #t) arg2)` (in this case, it would jump to the `else` that just resets the `dest-vel` and `transv` `quad`s) - `drill-baron`: The static data for `*drill-ship-turret-speed-event*` has been decompiled by hand. TODOs: - Jellyfish crash the game - Destroying the metalhead eggs that are on the breakable wall crashes the game (already happened with the Peacemaker before) - Figure out why static data of type `turret-path-event` doesn't decompile The docs for all the hover-nav and nav-network code could use some love in the future, I'm not smart enough to figure out what any of that code actually means, but it seems to work... Also threw in the fix for the ▲ that was accidentally left commented out.
114 lines
4.5 KiB
Common Lisp
Vendored
Generated
114 lines
4.5 KiB
Common Lisp
Vendored
Generated
;;-*-Lisp-*-
|
|
(in-package goal)
|
|
|
|
;; definition of type chain-physics-setup
|
|
(deftype chain-physics-setup (structure)
|
|
((joint-index int32 :offset-assert 0)
|
|
)
|
|
:method-count-assert 9
|
|
:size-assert #x4
|
|
:flag-assert #x900000004
|
|
)
|
|
|
|
;; definition for method 3 of type chain-physics-setup
|
|
(defmethod inspect chain-physics-setup ((obj chain-physics-setup))
|
|
(when (not obj)
|
|
(set! obj obj)
|
|
(goto cfg-4)
|
|
)
|
|
(format #t "[~8x] ~A~%" obj 'chain-physics-setup)
|
|
(format #t "~1Tjoint-index: ~D~%" (-> obj joint-index))
|
|
(label cfg-4)
|
|
obj
|
|
)
|
|
|
|
;; definition of type chain-physics-joint
|
|
(deftype chain-physics-joint (structure)
|
|
((position vector :inline :offset-assert 0)
|
|
(velocity vector :inline :offset-assert 16)
|
|
(old-x vector :inline :offset-assert 32)
|
|
(joint-mod joint-mod :offset-assert 48)
|
|
)
|
|
:method-count-assert 9
|
|
:size-assert #x34
|
|
:flag-assert #x900000034
|
|
)
|
|
|
|
;; definition for method 3 of type chain-physics-joint
|
|
(defmethod inspect chain-physics-joint ((obj chain-physics-joint))
|
|
(when (not obj)
|
|
(set! obj obj)
|
|
(goto cfg-4)
|
|
)
|
|
(format #t "[~8x] ~A~%" obj 'chain-physics-joint)
|
|
(format #t "~1Tposition: #<vector @ #x~X>~%" (-> obj position))
|
|
(format #t "~1Tvelocity: #<vector @ #x~X>~%" (-> obj velocity))
|
|
(format #t "~1Told-x: #<vector @ #x~X>~%" (-> obj old-x))
|
|
(format #t "~1Tjoint-mod: ~A~%" (-> obj joint-mod))
|
|
(label cfg-4)
|
|
obj
|
|
)
|
|
|
|
;; definition of type chain-physics
|
|
(deftype chain-physics (basic)
|
|
((chain-joints chain-physics-joint 20 :inline :offset-assert 16)
|
|
(num-joints uint8 :offset-assert 1296)
|
|
(root-joint-index uint8 :offset-assert 1297)
|
|
(joint-length float :offset-assert 1300)
|
|
(gravity vector :inline :offset-assert 1312)
|
|
(gravity-target vector :inline :offset-assert 1328)
|
|
(stretch-vel float :offset-assert 1344)
|
|
(stretch-vel-parallel float :offset-assert 1348)
|
|
(compress-vel float :offset-assert 1352)
|
|
(compress-vel-parallel float :offset-assert 1356)
|
|
(negate-y symbol :offset-assert 1360)
|
|
(axial-slop float :offset-assert 1364)
|
|
(maximum-stretch float :offset-assert 1368)
|
|
(turn-off-start time-frame :offset-assert 1376)
|
|
(turn-off-duration time-frame :offset-assert 1384)
|
|
)
|
|
:method-count-assert 18
|
|
:size-assert #x570
|
|
:flag-assert #x1200000570
|
|
(:methods
|
|
(initialize-chain-joints (_type_) symbol 9)
|
|
(turn-off (_type_ time-frame) none :behavior process 10)
|
|
(update (_type_ process-drawable) none :behavior process 11)
|
|
(gravity-update (_type_ process-drawable) none 12)
|
|
(apply-gravity (_type_ vector int process-drawable) none :behavior process 13)
|
|
(chain-physics-method-14 (_type_ vector int) none 14)
|
|
(clamp-length (_type_ vector vector object process-drawable) vector 15)
|
|
(chain-physics-method-16 (_type_ int) float 16)
|
|
(chain-physics-method-17 (_type_ vector int) none 17)
|
|
)
|
|
)
|
|
|
|
;; definition for method 3 of type chain-physics
|
|
(defmethod inspect chain-physics ((obj chain-physics))
|
|
(when (not obj)
|
|
(set! obj obj)
|
|
(goto cfg-4)
|
|
)
|
|
(format #t "[~8x] ~A~%" obj (-> obj type))
|
|
(format #t "~1Tchain-joints[20] @ #x~X~%" (-> obj chain-joints))
|
|
(format #t "~1Tnum-joints: ~D~%" (-> obj num-joints))
|
|
(format #t "~1Troot-joint-index: ~D~%" (-> obj root-joint-index))
|
|
(format #t "~1Tjoint-length: ~f~%" (-> obj joint-length))
|
|
(format #t "~1Tgravity: #<vector @ #x~X>~%" (-> obj gravity))
|
|
(format #t "~1Tgravity-target: #<vector @ #x~X>~%" (-> obj gravity-target))
|
|
(format #t "~1Tstretch-vel: ~f~%" (-> obj stretch-vel))
|
|
(format #t "~1Tstretch-vel-parallel: ~f~%" (-> obj stretch-vel-parallel))
|
|
(format #t "~1Tcompress-vel: ~f~%" (-> obj compress-vel))
|
|
(format #t "~1Tcompress-vel-parallel: ~f~%" (-> obj compress-vel-parallel))
|
|
(format #t "~1Tnegate-y: ~A~%" (-> obj negate-y))
|
|
(format #t "~1Taxial-slop: ~f~%" (-> obj axial-slop))
|
|
(format #t "~1Tmaximum-stretch: ~f~%" (-> obj maximum-stretch))
|
|
(format #t "~1Tturn-off-start: ~D~%" (-> obj turn-off-start))
|
|
(format #t "~1Tturn-off-duration: ~D~%" (-> obj turn-off-duration))
|
|
(label cfg-4)
|
|
obj
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
0
|