mirror of
https://github.com/open-goal/jak-project
synced 2026-06-30 11:51:55 -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))
|
||||
)
|
||||
|
||||
+2
-14
@@ -1027,13 +1027,7 @@
|
||||
(draw-string "..." s1-0 s5-0)
|
||||
(set! arg4 (and (zero? arg3) arg4))
|
||||
(when arg4
|
||||
(let ((v1-14 s5-0)
|
||||
(a1-5 20)
|
||||
(a0-8 379)
|
||||
)
|
||||
(set! (-> v1-14 origin x) (the float a1-5))
|
||||
(set! (-> v1-14 origin y) (the float a0-8))
|
||||
)
|
||||
(set-origin! s5-0 20 379)
|
||||
(draw-string-adv (-> arg0 name) s1-0 s5-0)
|
||||
(draw-string-adv ":" s1-0 s5-0)
|
||||
(draw-string (-> arg0 display-str) s1-0 s5-0)
|
||||
@@ -1113,13 +1107,7 @@
|
||||
(font-color menu)
|
||||
)
|
||||
)
|
||||
(let ((v1-20 (-> arg0 context font))
|
||||
(a1-5 s3-1)
|
||||
(a0-15 s2-1)
|
||||
)
|
||||
(set! (-> v1-20 origin x) (the float a1-5))
|
||||
(set! (-> v1-20 origin y) (the float a0-15))
|
||||
)
|
||||
(set-origin! (-> arg0 context font) s3-1 s2-1)
|
||||
(set! sv-16 (-> *display* frames (-> *display* on-screen) debug-buf))
|
||||
(set! sv-32 (-> sv-16 base))
|
||||
(draw-string ">" sv-16 (-> arg0 context font))
|
||||
|
||||
+2
-10
@@ -257,12 +257,7 @@
|
||||
(dotimes (s2-0 (-> s3-0 length))
|
||||
(let ((s1-0 (-> s3-0 s2-0)))
|
||||
(-> s1-0 aid)
|
||||
(let* ((s0-0 s1-0)
|
||||
(v1-14 (if (type? s0-0 entity-nav-mesh)
|
||||
s0-0
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((v1-14 (as-type s1-0 entity-nav-mesh)))
|
||||
(when v1-14
|
||||
(let ((a0-7 (-> v1-14 nav-mesh))
|
||||
(a1-2 (new 'stack-no-clear 'nav-find-poly-parms))
|
||||
@@ -753,10 +748,7 @@
|
||||
(dotimes (s2-1 (-> s3-3 length))
|
||||
(let* ((s0-1 (-> s3-3 s2-1))
|
||||
(s1-1 (-> s0-1 aid))
|
||||
(v1-28 (if (type? s0-1 entity-nav-mesh)
|
||||
s0-1
|
||||
)
|
||||
)
|
||||
(v1-28 (as-type s0-1 entity-nav-mesh))
|
||||
)
|
||||
(when v1-28
|
||||
(let ((a0-24 (-> v1-28 nav-mesh))
|
||||
|
||||
Reference in New Issue
Block a user