mirror of
https://github.com/open-goal/jak-project
synced 2026-08-06 18:03:30 -04:00
[decompiler] as-type and font method support (#3855)
Add support for `as-type` macro, and detecting inline font methods. This works in all three games but I've only updated jak 3's goal_src for now. Eventually I will go back and work through the others, but I want to get more decompiler features in first.  --------- Co-authored-by: water111 <awaterford1111445@gmail.com>
This commit is contained in:
+10
-42
@@ -498,13 +498,9 @@
|
||||
(sound-play-by-spec (static-sound-spec "beep" :fo-curve 1) (new-sound-id) (the-as vector #t))
|
||||
(cond
|
||||
((-> arg0 target)
|
||||
(let ((s5-11 (-> arg0 target)))
|
||||
(set! (-> arg0 edit-plane) (the-as editable-plane (if (type? s5-11 editable-plane)
|
||||
s5-11
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> arg0 edit-plane)
|
||||
(the-as editable-plane (the-as editable (as-type (-> arg0 target) editable-plane)))
|
||||
)
|
||||
(editable-array-method-16 arg0)
|
||||
)
|
||||
(else
|
||||
@@ -1709,11 +1705,7 @@
|
||||
)
|
||||
(while (< s4-2 s5-2)
|
||||
(when (and s3-0 (logtest? (-> s3-0 flags) (editable-flag selected)))
|
||||
(let ((v1-60 (if (type? s3-0 editable)
|
||||
s3-0
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((v1-60 (as-type s3-0 editable)))
|
||||
(when v1-60
|
||||
(set! (-> v1-60 name) (the-as string (-> block param 0)))
|
||||
(logior! (-> v1-60 flags) (editable-flag changed))
|
||||
@@ -1740,11 +1732,7 @@
|
||||
)
|
||||
(while (< s4-3 s5-3)
|
||||
(when (and s3-1 (logtest? (-> s3-1 flags) (editable-flag selected)))
|
||||
(let ((v1-73 (if (type? s3-1 editable)
|
||||
s3-1
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((v1-73 (as-type s3-1 editable)))
|
||||
(when (and v1-73 (-> v1-73 region))
|
||||
(set! (-> v1-73 region level) (the-as string (-> gp-3 dbname)))
|
||||
(set! (-> v1-73 region changed) #t)
|
||||
@@ -1777,11 +1765,7 @@
|
||||
)
|
||||
(while (< s5-4 gp-4)
|
||||
(when (and s4-4 (logtest? (-> s4-4 flags) (editable-flag selected)))
|
||||
(let ((s3-2 (if (type? s4-4 editable-light)
|
||||
(the-as editable-light s4-4)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((s3-2 (as-type s4-4 editable-light)))
|
||||
(when s3-2
|
||||
(set-vector! (-> s3-2 direction) f30-0 f28-0 f26-0 f24-0)
|
||||
(vector-normalize! (-> s3-2 direction) 1.0)
|
||||
@@ -1811,11 +1795,7 @@
|
||||
)
|
||||
(while (< s5-5 gp-5)
|
||||
(when (and s4-5 (logtest? (-> s4-5 flags) (editable-flag selected)))
|
||||
(let ((v1-114 (if (type? s4-5 editable-light)
|
||||
(the-as editable-light s4-5)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((v1-114 (as-type s4-5 editable-light)))
|
||||
(when v1-114
|
||||
(set-vector! (-> v1-114 color) f30-1 f28-1 f26-1 f24-1)
|
||||
(logior! (-> v1-114 flags) (editable-flag changed))
|
||||
@@ -1844,11 +1824,7 @@
|
||||
)
|
||||
(while (< s4-6 gp-6)
|
||||
(when (and s3-3 (logtest? (-> s3-3 flags) (editable-flag selected)))
|
||||
(let ((v1-129 (if (type? s3-3 editable-light)
|
||||
s3-3
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((v1-129 (the-as editable (as-type s3-3 editable-light))))
|
||||
(when v1-129
|
||||
(set! (-> (the-as editable-light (+ (* s5-6 4) (the-as uint v1-129))) decay-start) f30-2)
|
||||
(logior! (-> v1-129 flags) (editable-flag changed))
|
||||
@@ -2253,11 +2229,7 @@
|
||||
)
|
||||
(while (< s3-0 s4-0)
|
||||
(when (and s2-0 (logtest? (-> s2-0 flags) (editable-flag selected)))
|
||||
(let ((a0-7 (if (type? s2-0 editable-light)
|
||||
s2-0
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((a0-7 (the-as object (as-type s2-0 editable-light))))
|
||||
(when (the-as editable a0-7)
|
||||
(set! (-> (&+ (the-as (pointer float) a0-7) (/ arg0 8)) 0) arg2)
|
||||
(logior! (-> (the-as editable a0-7) flags) (editable-flag changed))
|
||||
@@ -2284,11 +2256,7 @@
|
||||
)
|
||||
(while (< s4-1 s5-1)
|
||||
(when (and s3-1 (logtest? (-> s3-1 flags) (editable-flag selected)))
|
||||
(let ((v1-29 (if (type? s3-1 editable-light)
|
||||
s3-1
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((v1-29 (the-as object (as-type s3-1 editable-light))))
|
||||
(if (the-as editable v1-29)
|
||||
(set! f30-0 (-> (&+ (the-as (pointer float) v1-29) (/ arg0 8)) 0))
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user