[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
@@ -102,15 +102,9 @@
(new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning))
)
)
(let ((v1-26 gp-0))
(set! (-> v1-26 width) (the float 448))
)
(let ((v1-27 gp-0))
(set! (-> v1-27 height) (the float 80))
)
(let ((v1-28 gp-0))
(set! (-> v1-28 scale) 0.8)
)
(set-width! gp-0 448)
(set-height! gp-0 80)
(set-scale! gp-0 0.8)
(set! (-> gp-0 flags) (font-flags shadow kerning middle large))
(print-game-text (lookup-text! *common-text* (text-id firecanyon-need-cells-text) #f) gp-0 #f 128 22)
)
+2 -6
View File
@@ -215,12 +215,8 @@
(new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning))
)
)
(let ((v1-34 gp-0))
(set! (-> v1-34 width) (the float 440))
)
(let ((v1-35 gp-0))
(set! (-> v1-35 height) (the float 80))
)
(set-width! gp-0 440)
(set-height! gp-0 80)
(set! (-> gp-0 flags) (font-flags shadow kerning large))
(print-game-text (lookup-text! *common-text* (text-id press-to-use) #f) gp-0 #f 128 22)
)
+3 -9
View File
@@ -1136,15 +1136,9 @@
(new 'stack 'font-context *font-default-matrix* 435 10 0.0 (font-color red) (font-flags shadow kerning))
)
)
(let ((v1-1 s5-0))
(set! (-> v1-1 width) (the float 200))
)
(let ((v1-2 s5-0))
(set! (-> v1-2 height) (the float 30))
)
(let ((v1-3 s5-0))
(set! (-> v1-3 scale) 0.7)
)
(set-width! s5-0 200)
(set-height! s5-0 30)
(set-scale! s5-0 0.7)
(set! (-> s5-0 flags) (font-flags shadow kerning right large))
(print-game-text (lookup-text! *common-text* (text-id caught) #f) s5-0 #f 128 22)
(set! (-> s5-0 origin x) 488.0)
+2 -6
View File
@@ -1444,12 +1444,8 @@
(new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning))
)
)
(let ((v1-43 s2-2))
(set! (-> v1-43 width) (the float 440))
)
(let ((v1-44 s2-2))
(set! (-> v1-44 height) (the float 80))
)
(set-width! s2-2 440)
(set-height! s2-2 80)
(set! (-> s2-2 flags) (font-flags shadow kerning large))
(print-game-text (lookup-text! *common-text* (text-id press-to-use) #f) s2-2 #f 128 22)
)
+3 -9
View File
@@ -86,15 +86,9 @@
(new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning))
)
)
(let ((v1-26 gp-0))
(set! (-> v1-26 width) (the float 448))
)
(let ((v1-27 gp-0))
(set! (-> v1-27 height) (the float 80))
)
(let ((v1-28 gp-0))
(set! (-> v1-28 scale) 0.8)
)
(set-width! gp-0 448)
(set-height! gp-0 80)
(set-scale! gp-0 0.8)
(set! (-> gp-0 flags) (font-flags shadow kerning middle large))
(print-game-text (lookup-text! *common-text* (text-id assistant-lavatube-need-cells-text) #f) gp-0 #f 128 22)
)
+2 -6
View File
@@ -1592,12 +1592,8 @@
(new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning))
)
)
(let ((v1-15 gp-0))
(set! (-> v1-15 width) (the float 440))
)
(let ((v1-16 gp-0))
(set! (-> v1-16 height) (the float 80))
)
(set-width! gp-0 440)
(set-height! gp-0 80)
(set! (-> gp-0 flags) (font-flags shadow kerning large))
(print-game-text (lookup-text! *common-text* (text-id press-to-use) #f) gp-0 #f 128 22)
)
+2 -6
View File
@@ -247,12 +247,8 @@
(new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning))
)
)
(let ((v1-24 gp-0))
(set! (-> v1-24 width) (the float 440))
)
(let ((v1-25 gp-0))
(set! (-> v1-25 height) (the float 80))
)
(set-width! gp-0 440)
(set-height! gp-0 80)
(set! (-> gp-0 flags) (font-flags shadow kerning large))
(print-game-text (lookup-text! *common-text* (text-id press-to-use) #f) gp-0 #f 128 22)
)
+7 -21
View File
@@ -1190,15 +1190,9 @@
)
)
)
(let ((v1-1 gp-0))
(set! (-> v1-1 width) (the float 200))
)
(let ((v1-2 gp-0))
(set! (-> v1-2 height) (the float 50))
)
(let ((v1-3 gp-0))
(set! (-> v1-3 scale) 0.7)
)
(set-width! gp-0 200)
(set-height! gp-0 50)
(set-scale! gp-0 0.7)
(set! (-> gp-0 origin x) (the float (+ (-> self timer-pos-offset) 392)))
(set! (-> gp-0 origin y) (the float (- 10 (-> self timer-pos-offset))))
(set! (-> gp-0 flags) (font-flags shadow kerning right large))
@@ -1218,9 +1212,7 @@
)
((race-time-less-than (-> self this-time) (-> self record-time))
(when (< (mod (-> *display* real-frame-counter) 90) 60)
(let ((v1-18 gp-0))
(set! (-> v1-18 scale) 1.0)
)
(set-scale! gp-0 1.0)
(set! (-> gp-0 origin x) 156.0)
(set! (-> gp-0 origin y) 80.0)
(set! (-> gp-0 flags) (font-flags shadow kerning middle middle-vert large))
@@ -1252,9 +1244,7 @@
(ambient-hint-spawn "st-lose" (the-as vector #f) *entity-pool* 'stinger)
)
(when (< (mod (-> *display* real-frame-counter) 90) 60)
(let ((v1-30 gp-0))
(set! (-> v1-30 scale) 1.0)
)
(set-scale! gp-0 1.0)
(set! (-> gp-0 origin x) 156.0)
(set! (-> gp-0 origin y) 80.0)
(set! (-> gp-0 flags) (font-flags shadow kerning middle middle-vert large))
@@ -1330,12 +1320,8 @@
(new 'stack 'font-context *font-default-matrix* 156 80 0.0 (font-color red) (font-flags shadow kerning))
)
)
(let ((v1-20 gp-0))
(set! (-> v1-20 width) (the float 200))
)
(let ((v1-21 gp-0))
(set! (-> v1-21 height) (the float 50))
)
(set-width! gp-0 200)
(set-height! gp-0 50)
(set! (-> gp-0 flags) (font-flags shadow kerning middle middle-vert large))
(print-game-text (lookup-text! *common-text* (text-id race-aborted) #f) gp-0 #f 128 22)
)
+2 -6
View File
@@ -832,12 +832,8 @@
(new 'stack 'font-context *font-default-matrix* 80 170 0.0 (font-color default) (font-flags shadow kerning))
)
)
(let ((v1-12 gp-0))
(set! (-> v1-12 width) (the float 352))
)
(let ((v1-13 gp-0))
(set! (-> v1-13 height) (the float 40))
)
(set-width! gp-0 352)
(set-height! gp-0 40)
(set! (-> gp-0 flags) (font-flags shadow kerning middle middle-vert large))
(print-game-text (lookup-text! *common-text* (text-id press-start) #f) gp-0 #f 128 22)
)
+2 -6
View File
@@ -946,12 +946,8 @@
(new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning))
)
)
(let ((v1-17 s5-1))
(set! (-> v1-17 width) (the float 440))
)
(let ((v1-18 s5-1))
(set! (-> v1-18 height) (the float 80))
)
(set-width! s5-1 440)
(set-height! s5-1 80)
(set! (-> s5-1 flags) (font-flags shadow kerning large))
(print-game-text (lookup-text! *common-text* (text-id press-to-use) #f) s5-1 #f 128 22)
)
+3 -9
View File
@@ -1395,15 +1395,9 @@
(new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning))
)
)
(let ((v1-28 gp-0))
(set! (-> v1-28 width) (the float 448))
)
(let ((v1-29 gp-0))
(set! (-> v1-29 height) (the float 80))
)
(let ((v1-30 gp-0))
(set! (-> v1-30 scale) 0.8)
)
(set-width! gp-0 448)
(set-height! gp-0 80)
(set-scale! gp-0 0.8)
(set! (-> gp-0 flags) (font-flags shadow kerning middle large))
(print-game-text (lookup-text! *common-text* (text-id village2-levitator-need-cells-text) #f) gp-0 #f 128 22)
)
+2 -6
View File
@@ -222,12 +222,8 @@
(new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning))
)
)
(let ((v1-59 s5-2))
(set! (-> v1-59 width) (the float 440))
)
(let ((v1-60 s5-2))
(set! (-> v1-60 height) (the float 80))
)
(set-width! s5-2 440)
(set-height! s5-2 80)
(set! (-> s5-2 flags) (font-flags shadow kerning large))
(print-game-text (lookup-text! *common-text* (text-id press-to-use) #f) s5-2 #f 128 22)
)
+7 -21
View File
@@ -161,15 +161,9 @@
(new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning))
)
)
(let ((v1-53 gp-0))
(set! (-> v1-53 width) (the float 440))
)
(let ((v1-54 gp-0))
(set! (-> v1-54 height) (the float 80))
)
(let ((v1-55 gp-0))
(set! (-> v1-55 scale) 0.9)
)
(set-width! gp-0 440)
(set-height! gp-0 80)
(set-scale! gp-0 0.9)
(set! (-> gp-0 flags) (font-flags shadow kerning large))
(print-game-text (lookup-text! *common-text* (text-id press-to-use) #f) gp-0 #f 128 22)
)
@@ -321,21 +315,13 @@
(new 'stack 'font-context *font-default-matrix* 6 110 0.0 (font-color default) (font-flags shadow kerning))
)
)
(let ((v1-38 s1-3))
(set! (-> v1-38 scale) 0.7)
)
(let ((v1-39 s1-3))
(set! (-> v1-39 width) (the float 500))
)
(let ((v1-40 s1-3))
(set! (-> v1-40 height) (the float 55))
)
(set-scale! s1-3 0.7)
(set-width! s1-3 500)
(set-height! s1-3 55)
(set! (-> s1-3 flags) (font-flags shadow kerning middle middle-vert large))
(print-game-text (lookup-text! *common-text* (text-id warp-gate-use-dpad) #f) s1-3 #f 128 22)
(+! (-> s1-3 origin y) 35.0)
(let ((v1-43 s1-3))
(set! (-> v1-43 height) (the float 40))
)
(set-height! s1-3 40)
(let ((a0-34 s1-3))
(set! (-> a0-34 color) (font-color progress-blue))
)