mirror of
https://github.com/open-goal/jak-project
synced 2026-09-06 11:20:54 -04:00
[decompiler] new features + fixes, + other jak2 fixes (#2796)
Fixes empty boxed arrays of strings breaking some decomp (`ctywide-speech` and `race-info`). Adds `decomp-as` tag to decompiler types so that the static data decompiler can use macros like `meters` and `seconds` on fields that aren't of type `meters` or `time-frame`. Adds `override` tag to decompiler types which overrides the type of field with that name. The type must be a child type of the original field's type (or the same type, but why would you do this?). Fixes the camera being offset for `drillmtn` after loading `palout` once. This is a huge refactor sadly.
This commit is contained in:
+12
-13
@@ -92,7 +92,7 @@ Seen take in - `true-func` which takes no args TODO - seems fishy
|
||||
:enter (behavior ()
|
||||
(set! (-> self state-time) (current-time))
|
||||
(logior! (-> self draw status) (draw-control-status no-draw-bounds))
|
||||
(let ((v1-6 (-> self root-override root-prim)))
|
||||
(let ((v1-6 (-> self root root-prim)))
|
||||
(set! (-> v1-6 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-6 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
@@ -101,9 +101,9 @@ Seen take in - `true-func` which takes no args TODO - seems fishy
|
||||
)
|
||||
:exit (behavior ()
|
||||
(logclear! (-> self draw status) (draw-control-status no-draw-bounds))
|
||||
(let ((v1-3 (-> self root-override root-prim)))
|
||||
(set! (-> v1-3 prim-core collide-as) (-> self root-override backup-collide-as))
|
||||
(set! (-> v1-3 prim-core collide-with) (-> self root-override backup-collide-with))
|
||||
(let ((v1-3 (-> self root root-prim)))
|
||||
(set! (-> v1-3 prim-core collide-as) (-> self root backup-collide-as))
|
||||
(set! (-> v1-3 prim-core collide-with) (-> self root backup-collide-with))
|
||||
)
|
||||
(none)
|
||||
)
|
||||
@@ -170,7 +170,7 @@ Seen take in - `true-func` which takes no args TODO - seems fishy
|
||||
)
|
||||
)
|
||||
(and (not (logtest? (focus-status dead in-air in-head pole flut tube pilot mech dark) (-> *target* focus-status)))
|
||||
(and (or (and (< (-> (target-pos 0) y) (+ (-> self root-override root-prim prim-core world-sphere y) (-> self talk-height)))
|
||||
(and (or (and (< (-> (target-pos 0) y) (+ (-> self root root-prim prim-core world-sphere y) (-> self talk-height)))
|
||||
(let ((s5-0 (get-trans self 2))
|
||||
(f30-0 (if (= (-> gp-0 distance) 0.0)
|
||||
(-> self talk-distance)
|
||||
@@ -288,9 +288,9 @@ Seen take in - `true-func` which takes no args TODO - seems fishy
|
||||
(process-entity-status! self (entity-perm-status no-kill) #f)
|
||||
(logior! (-> self mask) (process-mask actor-pause))
|
||||
(logclear! (-> self draw status) (draw-control-status no-draw))
|
||||
(let ((v1-13 (-> self root-override root-prim)))
|
||||
(set! (-> v1-13 prim-core collide-as) (-> self root-override backup-collide-as))
|
||||
(set! (-> v1-13 prim-core collide-with) (-> self root-override backup-collide-with))
|
||||
(let ((v1-13 (-> self root root-prim)))
|
||||
(set! (-> v1-13 prim-core collide-as) (-> self root backup-collide-as))
|
||||
(set! (-> v1-13 prim-core collide-with) (-> self root backup-collide-with))
|
||||
)
|
||||
(none)
|
||||
)
|
||||
@@ -301,7 +301,7 @@ Seen take in - `true-func` which takes no args TODO - seems fishy
|
||||
(suspend)
|
||||
)
|
||||
(logior! (-> self draw status) (draw-control-status no-draw))
|
||||
(let ((v1-17 (-> self root-override root-prim)))
|
||||
(let ((v1-17 (-> self root root-prim)))
|
||||
(set! (-> v1-17 prim-core collide-as) (collide-spec))
|
||||
(set! (-> v1-17 prim-core collide-with) (collide-spec))
|
||||
)
|
||||
@@ -368,7 +368,7 @@ Seen take in - `true-func` which takes no args TODO - seems fishy
|
||||
(set! (-> s5-0 backup-collide-as) (-> v1-14 prim-core collide-as))
|
||||
(set! (-> s5-0 backup-collide-with) (-> v1-14 prim-core collide-with))
|
||||
)
|
||||
(set! (-> obj root-override) s5-0)
|
||||
(set! (-> obj root) s5-0)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
@@ -396,7 +396,7 @@ Seen take in - `true-func` which takes no args TODO - seems fishy
|
||||
(set! s5-0 (+ (-> v1-15 number) 1))
|
||||
)
|
||||
)
|
||||
(let ((v1-19 (the-as collide-shape-prim-group (-> obj root-override root-prim))))
|
||||
(let ((v1-19 (the-as collide-shape-prim-group (-> obj root root-prim))))
|
||||
(set! (-> v1-19 transform-index) s5-0)
|
||||
(dotimes (a0-7 (the-as int (-> v1-19 num-children)))
|
||||
(set! (-> v1-19 child a0-7 transform-index) s5-0)
|
||||
@@ -439,8 +439,7 @@ This commonly includes things such as:
|
||||
(format (clear *temp-string*) "skel-~S" (-> obj draw art-group name))
|
||||
(let ((s4-3 (s4-2 s5-1 *temp-string* (the-as (pointer uint32) #f))))
|
||||
(when s4-3
|
||||
(let ((s5-2 (process-spawn manipy :init manipy-init (-> obj root-override trans) (-> obj entity) s4-3 #f 0 :to obj))
|
||||
)
|
||||
(let ((s5-2 (process-spawn manipy :init manipy-init (-> obj root trans) (-> obj entity) s4-3 #f 0 :to obj)))
|
||||
(send-event (ppointer->process s5-2) 'anim-mode 'mirror)
|
||||
(send-event (ppointer->process s5-2) 'mirror #t)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user