mirror of
https://github.com/open-goal/jak-project
synced 2026-08-16 21:28:00 -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:
+34
-70
@@ -204,26 +204,24 @@
|
||||
(goto cfg-260)
|
||||
)
|
||||
)
|
||||
(let* ((s4-1 (art-group-get-by-name *level* (-> this art-group) (the-as (pointer level) #f)))
|
||||
(s3-0 (if (type? s4-1 skeleton-group)
|
||||
s4-1
|
||||
)
|
||||
)
|
||||
(s0-0 (-> arg0 level))
|
||||
(s1-0
|
||||
(cond
|
||||
((or (string= (-> this name) "jak-highres")
|
||||
(string= (-> this name) "jak-highres-prison")
|
||||
(string= (-> this name) "darkjak-highres")
|
||||
)
|
||||
'jakb
|
||||
)
|
||||
((string= (-> this name) "jakc-highres")
|
||||
'jakc
|
||||
)
|
||||
(let ((s3-0
|
||||
(as-type (art-group-get-by-name *level* (-> this art-group) (the-as (pointer level) #f)) skeleton-group)
|
||||
)
|
||||
(s0-0 (-> arg0 level))
|
||||
(s1-0
|
||||
(cond
|
||||
((or (string= (-> this name) "jak-highres")
|
||||
(string= (-> this name) "jak-highres-prison")
|
||||
(string= (-> this name) "darkjak-highres")
|
||||
)
|
||||
'jakb
|
||||
)
|
||||
)
|
||||
)
|
||||
((string= (-> this name) "jakc-highres")
|
||||
'jakc
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> arg0 level) #f)
|
||||
(set! s4-0
|
||||
(when s3-0
|
||||
@@ -766,14 +764,11 @@
|
||||
(-> *level* level-default)
|
||||
)
|
||||
)
|
||||
(v1-53 (when level
|
||||
(let ((s0-0 (art-group-get-by-name *level* (-> s2-0 art-group) (the-as (pointer level) #f))))
|
||||
(if (type? s0-0 skeleton-group)
|
||||
s0-0
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(v1-53
|
||||
(if level
|
||||
(as-type (art-group-get-by-name *level* (-> s2-0 art-group) (the-as (pointer level) #f)) skeleton-group)
|
||||
)
|
||||
)
|
||||
)
|
||||
(cond
|
||||
((or (not s1-0) (not (or (= (-> s1-0 status) 'active) (= (-> s1-0 status) 'reserved))))
|
||||
@@ -1001,29 +996,19 @@
|
||||
(new 'stack 'font-context *font-default-matrix* 20 290 0.0 (font-color default) (font-flags shadow kerning))
|
||||
)
|
||||
)
|
||||
(let ((v1-20 s2-0))
|
||||
(set! (-> v1-20 width) (the float 465))
|
||||
)
|
||||
(let ((v1-21 s2-0))
|
||||
(set! (-> v1-21 height) (the float 70))
|
||||
)
|
||||
(let ((v1-22 s2-0))
|
||||
(set! (-> v1-22 scale) 0.5)
|
||||
)
|
||||
(set-width! s2-0 465)
|
||||
(set-height! s2-0 70)
|
||||
(set-scale! s2-0 0.5)
|
||||
(set! (-> s2-0 flags) (font-flags shadow kerning middle large))
|
||||
(case (-> s3-0 type)
|
||||
((string)
|
||||
(when (= (-> *setting-control* user-default subtitle-language) (language-enum korean))
|
||||
(set! s3-0 (convert-korean-text (the-as string s3-0)))
|
||||
(let ((v1-27 s2-0))
|
||||
(set! (-> v1-27 scale) 0.6)
|
||||
)
|
||||
(set-scale! s2-0 0.6)
|
||||
)
|
||||
(when (= (-> *setting-control* user-default subtitle-language) (language-enum russian))
|
||||
(let ((v1-30 s2-0))
|
||||
(set! (-> v1-30 scale) 0.75)
|
||||
(if (= (-> *setting-control* user-default subtitle-language) (language-enum russian))
|
||||
(set-scale! s2-0 0.75)
|
||||
)
|
||||
)
|
||||
(set! (-> s2-0 flags) (font-flags kerning middle middle-vert large))
|
||||
(+! (-> s2-0 origin x) -1.0)
|
||||
(+! (-> s2-0 origin y) -1.0)
|
||||
@@ -1807,12 +1792,7 @@
|
||||
)
|
||||
(when (logtest? gp-4 (scene-controls special-fma-spheres))
|
||||
(dotimes (s5-3 (-> self scene actor length))
|
||||
(let* ((s4-1 (handle->process (-> self scene actor s5-3 process)))
|
||||
(v1-66 (if (type? s4-1 process-drawable)
|
||||
(the-as process-drawable s4-1)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((v1-66 (as-type (handle->process (-> self scene actor s5-3 process)) process-drawable)))
|
||||
(if (and v1-66 (nonzero? (-> v1-66 draw)))
|
||||
(add-debug-sphere
|
||||
#t
|
||||
@@ -1827,12 +1807,7 @@
|
||||
)
|
||||
(when (logtest? gp-4 (scene-controls scene-controls-7))
|
||||
(dotimes (s5-4 (-> self scene actor length))
|
||||
(let* ((s4-2 (handle->process (-> self scene actor s5-4 process)))
|
||||
(v1-82 (if (type? s4-2 process-drawable)
|
||||
(the-as process-drawable s4-2)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((v1-82 (as-type (handle->process (-> self scene actor s5-4 process)) process-drawable)))
|
||||
(if (and v1-82 (nonzero? (-> v1-82 draw)))
|
||||
(format
|
||||
*stdcon*
|
||||
@@ -1851,12 +1826,7 @@
|
||||
)
|
||||
(when (logtest? gp-4 (scene-controls scene-controls-8))
|
||||
(dotimes (gp-5 (-> self scene actor length))
|
||||
(let* ((s5-5 (handle->process (-> self scene actor gp-5 process)))
|
||||
(v1-97 (if (type? s5-5 process-drawable)
|
||||
(the-as process-drawable s5-5)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((v1-97 (as-type (handle->process (-> self scene actor gp-5 process)) process-drawable)))
|
||||
(if (and v1-97 (nonzero? (-> v1-97 draw)))
|
||||
(add-debug-text-3d
|
||||
#t
|
||||
@@ -1884,15 +1854,9 @@
|
||||
(new 'stack 'font-context *font-default-matrix* 36 60 0.0 (font-color default) (font-flags shadow kerning))
|
||||
)
|
||||
)
|
||||
(let ((v1-124 gp-6))
|
||||
(set! (-> v1-124 width) (the float 440))
|
||||
)
|
||||
(let ((v1-125 gp-6))
|
||||
(set! (-> v1-125 height) (the float 48))
|
||||
)
|
||||
(let ((v1-126 gp-6))
|
||||
(set! (-> v1-126 scale) 0.5)
|
||||
)
|
||||
(set-width! gp-6 440)
|
||||
(set-height! gp-6 48)
|
||||
(set-scale! gp-6 0.5)
|
||||
(set! (-> gp-6 flags) (font-flags shadow kerning middle large))
|
||||
(print-game-text
|
||||
(lookup-text!
|
||||
|
||||
Reference in New Issue
Block a user