[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:
ManDude
2023-07-04 22:23:24 +01:00
committed by GitHub
parent 71b4ab5122
commit b50b9eadb2
589 changed files with 25554 additions and 22804 deletions
@@ -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)
)