[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.


![image](https://github.com/user-attachments/assets/5c31bf85-97b4-437c-bc4b-dc054e60551e)

---------

Co-authored-by: water111 <awaterford1111445@gmail.com>
This commit is contained in:
water111
2025-02-01 21:23:11 -05:00
committed by GitHub
parent d5590ab638
commit 48cb9bb787
645 changed files with 5391 additions and 16694 deletions
+10 -42
View File
@@ -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))
)